|
|
1.1 ! root 1: ; Bus error tester - with word access ! 2: ; (assemble with TurboAss) ! 3: ! 4: startaddr EQU $FF8000 ! 5: endaddr EQU $FFFFFE ! 6: ! 7: ! 8: movea.l 4(SP),A5 ! 9: move.l $0C(A5),D0 ! 10: add.l $14(SP),D0 ! 11: add.l $1C(SP),D0 ! 12: add.l #$0800,D0 ! 13: ! 14: move.l D0,D1 ! 15: add.l A5,D1 ! 16: and.l #-2,D1 ! 17: ! 18: movea.l D1,SP ! 19: move.l D0,-(SP) ! 20: move.l A5,-(SP) ! 21: clr.w -(SP) ! 22: move.w #$4A,-(SP) ! 23: trap #1 ; Mshrink ! 24: lea 12(SP),SP ! 25: ! 26: clr.l -(SP) ! 27: move.w #$20,-(SP) ! 28: trap #1 ; Super ! 29: addq.l #6,SP ! 30: move.w D0,old_ssp ! 31: ! 32: clr.w -(SP) ! 33: pea filename ! 34: move.w #$3C,-(SP) ! 35: trap #1 ; Fcreate ! 36: addq.l #8,SP ! 37: move.w D0,fhndl ! 38: ! 39: pea welcometxt ! 40: move.l #welcometxtend-welcometxt-1,-(SP) ! 41: move.w D0,-(SP) ! 42: move.w #$40,-(SP) ! 43: trap #1 ; Fwrite(welcometxt) ! 44: lea 12(SP),SP ! 45: ! 46: move.l $08,oldbushandler ! 47: move.l #buserrcatch,$08 ! 48: ! 49: movea.l #startaddr,A5 ! 50: ! 51: loop: ! 52: movea.l SP,A6 ! 53: ! 54: move.w (A5),D0 ; *** Try to generate a bus error *** ! 55: ! 56: tst.w be_region ! 57: beq.s cont ! 58: lea hex_buf+10,A0 ! 59: bsr write_hex ! 60: clr.w be_region ! 61: ! 62: pea hex_buf ! 63: move.l #19,-(SP) ! 64: move.w fhndl,-(SP) ! 65: move.w #$40,-(SP) ! 66: trap #1 ; Fwrite ! 67: lea 12(SP),SP ! 68: ! 69: cont: ! 70: addq.l #2,A5 ! 71: cmpa.l #endaddr,A5 ! 72: bne.s loop ! 73: ! 74: tst.w be_region ! 75: beq.s nofinalwrite ! 76: lea hex_buf+10,A0 ! 77: bsr write_hex ! 78: pea hex_buf ! 79: move.l #19,-(SP) ! 80: move.w fhndl,-(SP) ! 81: move.w #$40,-(SP) ! 82: trap #1 ; Fwrite ! 83: lea 12(SP),SP ! 84: ! 85: nofinalwrite: ! 86: move.l oldbushandler,$08 ! 87: ! 88: pea eoftxt ! 89: move.l #8,-(SP) ! 90: move.w fhndl,-(SP) ! 91: move.w #$40,-(SP) ! 92: trap #1 ; Fwrite(eoftxt) ! 93: lea 12(SP),SP ! 94: ! 95: ! 96: move.w fhndl,-(SP) ! 97: move.w #$3E,-(SP) ! 98: trap #1 ; Fclose ! 99: addq.l #4,SP ! 100: ! 101: move.l old_ssp,-(SP) ! 102: move.w #$20,-(SP) ! 103: trap #1 ; Super ! 104: addq.l #6,SP ! 105: ! 106: clr.w -(SP) ! 107: trap #1 ; Pterm0 ! 108: ! 109: ! 110: buserrcatch: ! 111: movea.l A6,SP ! 112: tst.w be_region ! 113: bne cont ! 114: move.w #-1,be_region ! 115: lea hex_buf,A0 ! 116: bsr.s write_hex ! 117: bra cont ! 118: ! 119: write_hex: ! 120: move.l A5,D1 ! 121: and.b #$0F,D1 ! 122: cmp.b #10,D1 ! 123: bge.s b6_10 ! 124: add.b #'0',D1 ! 125: bra.s b6_ok ! 126: b6_10: add.b #'A'-10,D1 ! 127: b6_ok: move.b D1,6(A0) ! 128: ! 129: move.l A5,D1 ! 130: lsr.b #4,D1 ! 131: and.b #$0F,D1 ! 132: cmp.b #10,D1 ! 133: bge.s b5_10 ! 134: add.b #'0',D1 ! 135: bra.s b5_ok ! 136: b5_10: add.b #'A'-10,D1 ! 137: b5_ok: move.b D1,5(A0) ! 138: ! 139: move.l A5,D1 ! 140: lsr.w #8,D1 ! 141: and.b #$0F,D1 ! 142: cmp.b #10,D1 ! 143: bge.s b4_10 ! 144: add.b #'0',D1 ! 145: bra.s b4_ok ! 146: b4_10: add.b #'A'-10,D1 ! 147: b4_ok: move.b D1,4(A0) ! 148: ! 149: move.l A5,D1 ! 150: move.w #12,D2 ! 151: lsr.w D2,D1 ! 152: and.b #$0F,D1 ! 153: cmp.b #10,D1 ! 154: bge.s b3_10 ! 155: add.b #'0',D1 ! 156: bra.s b3_ok ! 157: b3_10: add.b #'A'-10,D1 ! 158: b3_ok: move.b D1,3(A0) ! 159: ! 160: move.l A5,D1 ! 161: move.w #16,D2 ! 162: lsr.l D2,D1 ! 163: and.b #$0F,D1 ! 164: cmp.b #10,D1 ! 165: bge.s b2_10 ! 166: add.b #'0',D1 ! 167: bra.s b2_ok ! 168: b2_10: add.b #'A'-10,D1 ! 169: b2_ok: move.b D1,2(A0) ! 170: ! 171: move.l A5,D1 ! 172: move.w #20,D2 ! 173: lsr.l D2,D1 ! 174: and.b #$0F,D1 ! 175: cmp.b #10,D1 ! 176: bge.s b1_10 ! 177: add.b #'0',D1 ! 178: bra.s b1_ok ! 179: b1_10: add.b #'A'-10,D1 ! 180: b1_ok: move.b D1,1(A0) ! 181: ! 182: rts ! 183: ! 184: ! 185: ! 186: DATA ! 187: filename: ! 188: DC.B "BUSERR_W.TXT",0 ! 189: ! 190: welcometxt: ! 191: DC.B "Bus Error testing results (word access):",13,10,13,10,0 ! 192: welcometxtend: ! 193: ! 194: eoftxt: ! 195: DC.B 13,10,"EOF!",13,10,0 ! 196: ! 197: hex_buf: DC.B "$000000 - $000000",13,10,0 ! 198: EVEN ! 199: ! 200: be_region: DC.W 0 ! 201: ! 202: ! 203: BSS ! 204: old_ssp: ! 205: DS.L 1 ! 206: ! 207: oldbushandler: ! 208: DS.L 1 ! 209: ! 210: fhndl: ! 211: DS.W 1 ! 212: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.