|
|
1.1 root 1: ; Bus error tester - byte access
2: ; (assemble with TurboAss)
3:
4: startaddr EQU $FF8000
5: endaddr EQU $FFFFFF
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
1.1.1.2 ! root 30: move.l D0,old_ssp
1.1 root 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.b (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 #1,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_B.TXT",0
189:
190: welcometxt:
191: DC.B "Bus Error testing results (byte 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.