745 lines
44 KiB
Text
745 lines
44 KiB
Text
1 .title AC-E664G-MC_CXCPAG0-Processor-test_Sep78
|
|
2 ;
|
|
3 ; original code OCRed from
|
|
4 ; http://www.bitsavers.org/pdf/dec/pdp11/xxdp/listings/AC-E664G-MC_CXCPAG0-Processor-test_Sep78.pdf
|
|
5 ;
|
|
6 ; Changed to run standalone without monitor
|
|
7 ; JH
|
|
8
|
|
9 .LIST BIN
|
|
10 .ENABLE AMA ; relocatable addresses as absolute
|
|
11
|
|
12 ;**********************************************************************
|
|
13 .asect
|
|
14
|
|
15 000040 SPSIZ=040 ; stack size
|
|
16
|
|
17 ; is called on every error
|
|
18 .MACRO HRDER$
|
|
19 HALT ; just halt on error
|
|
20 HALT ; force3 word size, like in original
|
|
21 HALT
|
|
22 .ENDM
|
|
23
|
|
24 ;MODNAM: .ASCII /CPAG / ;MODULE NAME
|
|
25 ;**********************************************************************
|
|
26 000000 000220 INIT: START ;MODULE START ADDRE.
|
|
27 000002 001760 SPOINT: MODSP ;MODULE STACK POINTER.
|
|
28 000004 000000 PASCNT: 0 ;PASS COUNTER.
|
|
29
|
|
30
|
|
31 000220 .=220 ; generate same addresses as in original
|
|
32
|
|
33
|
|
34
|
|
35 START:
|
|
36 000220 013706 000002 MOV SPOINT,SP ; load stack pointer
|
|
37
|
|
38
|
|
39 ;**********************************************************************
|
|
40 ;CHECK BRANCH INSTRUCTIONS
|
|
41 000224 000257 RESTRT: CCC
|
|
42 000226 103407 BCS CC0
|
|
43 000230 102406 BVS CC0
|
|
44 000232 001405 BEQ CC0
|
|
45 000234 100404 BMI CC0
|
|
46 000236 002403 BLT CC0
|
|
47 000240 003402 BLE CC0
|
|
48 000242 101401 BLOS CC0
|
|
49 000244 101003 BHI CON1
|
|
50 CC0:
|
|
51 ;**************************************************************
|
|
52 HRDER$,BEGIN,NULL ;
|
|
1 000246 000000 HALT ; just halt on error
|
|
2 000250 000000 HALT ; force3 word size, like in original
|
|
3 000252 000000 HALT
|
|
53 ;**************************************************************
|
|
54
|
|
55 ;CONTINUE
|
|
56 000254 000262 CON1: SEV ;CC'S=1010
|
|
57 000256 000270 SEN
|
|
58 000260 102003 BVC CC2
|
|
59 000262 002402 BLT CC2
|
|
60 000264 003401 BLE CC2
|
|
61 000266 002003 BGE CON3
|
|
62 CC2:
|
|
63 ;**************************************************************
|
|
64 HRDER$,BEGIN,NULL ;
|
|
1 000270 000000 HALT ; just halt on error
|
|
2 000272 000000 HALT ; force3 word size, like in original
|
|
3 000274 000000 HALT
|
|
65 ;**************************************************************
|
|
66 ;CONTINUE
|
|
67 000276 000264 CON3: SEZ ;CC'S=1111
|
|
68 000300 000261 SEC
|
|
69 000302 001003 BNE CC4
|
|
70 000304 003002 BGT CC4
|
|
71 000306 101001 BHI CC4
|
|
72 000310 003403 BLE YT15:
|
|
73 CC4:
|
|
74 ;**************************************************************
|
|
75 HRDER$,BEGIN,NULL ;
|
|
1 000312 000000 HALT ; just halt on error
|
|
2 000314 000000 HALT ; force3 word size, like in original
|
|
3 000316 000000 HALT
|
|
76 ;**************************************************************
|
|
77
|
|
78
|
|
79
|
|
80
|
|
81 ;CHECK UNARY WORD OPS USING ADDRESS MODES 3 AND 5
|
|
82 000320 000402 YT15: BR 1$
|
|
83 000322 000000 .WORD 0
|
|
84 000324 000000 .WORD 0
|
|
85 000326 010703 1$: MOV PC,R3
|
|
86 000330 162703 000004 SUB #4,R3
|
|
87 000334 005013 CLR (R3)
|
|
88 000336 010300 MOV R3,R0
|
|
89 000340 005743 TST -(R3)
|
|
90 000342 010013 MOV R0,(R3)
|
|
91 000344 010304 MOV R3,R4
|
|
92 000346 000257 CCC
|
|
93 000350 005733 TST @(R3)+ ;(R0)=000000,CC=0100
|
|
94 000352 001403 BEQ 2$
|
|
95 ;**************************************************************
|
|
96 HRDER$,BEGIN,NULL ;
|
|
1 000354 000000 HALT ; just halt on error
|
|
2 000356 000000 HALT ; force3 word size, like in original
|
|
3 000360 000000 HALT
|
|
97 ;**************************************************************
|
|
98
|
|
99 000362 000261 2$: SEC
|
|
100 000364 006053 ROR @-(R3) ;(R0)=100000,CC=0101
|
|
101 000366 103402 BCS ROR5
|
|
102 000370 102001 BVC ROR5
|
|
103 000372 100403 BMI RD
|
|
104 ROR5:
|
|
105 ;**************************************************************
|
|
106 HRDER$,BEGIN,NULL ;
|
|
1 000374 000000 HALT ; just halt on error
|
|
2 000376 000000 HALT ; force3 word size, like in original
|
|
3 000400 000000 HALT
|
|
107 ;**************************************************************
|
|
108
|
|
109 000402 000257 RD: CCC
|
|
110 000404 006234 ASR @(R4)+ ;(R0)=140000,CC=1010
|
|
111 000406 102001 BVC ASR3
|
|
112 000410 100403 BMI RD1
|
|
113 ASR3:
|
|
114 ;**************************************************************
|
|
115 HRDER$,BEGIN,NULL ;
|
|
1 000412 000000 HALT ; just halt on error
|
|
2 000414 000000 HALT ; force3 word size, like in original
|
|
3 000416 000000 HALT
|
|
116 ;**************************************************************
|
|
117
|
|
118 000420 000250 RD1: CLN
|
|
119 000422 006333 ASL @(R3)+ ;(R0)=100000,CC=1001
|
|
120 000424 103002 BCC ASL3
|
|
121 000426 102401 BVS ASL3
|
|
122 000430 100403 BMI RD2
|
|
123 ASL3:
|
|
124 ;**************************************************************
|
|
125 HRDER$,BEGIN,NULL ;
|
|
1 000432 000000 HALT ; just halt on error
|
|
2 000434 000000 HALT ; force3 word size, like in original
|
|
3 000436 000000 HALT
|
|
126 ;**************************************************************
|
|
127
|
|
128 000440 000277 RD2: SCC
|
|
129 000442 005354 DEC @-(R4) ;(R0)=077777,CC=0010
|
|
130 000444 103003 BCC DEC5
|
|
131 000446 102002 BVC DEC5
|
|
132 000450 001401 BEQ DEC5
|
|
133 000452 100003 BPL RD3
|
|
134 DEC5:
|
|
135 ;**************************************************************
|
|
136 HRDER$,BEGIN,NULL ;
|
|
1 000454 000000 HALT ; just halt on error
|
|
2 000456 000000 HALT ; force3 word size, like in original
|
|
3 000460 000000 HALT
|
|
137 ;**************************************************************
|
|
138
|
|
139 000462 005453 RD3: NEG @-(R3) ;(R0)=100001, C=1001
|
|
140 000464 103002 BCC NEG5
|
|
141 000466 102401 BVS NEG5
|
|
142 000470 100403 BMI RD4
|
|
143 NEG5:
|
|
144 ;**************************************************************
|
|
145 HRDER$,BEGIN,NULL ;
|
|
1 000472 000000 HALT ; just halt on error
|
|
2 000474 000000 HALT ; force3 word size, like in original
|
|
3 000476 000000 HALT
|
|
146 ;**************************************************************
|
|
147
|
|
148 000500 000262 RD4: SEV
|
|
149 000502 005134 COM @(R4)+ ;(R0)=077776, C=0001
|
|
150 000504 103001 BCC COM3
|
|
151 000506 102003 BVC RD5
|
|
152 COM3:
|
|
153 ;**************************************************************
|
|
154 HRDER$,BEGIN,NULL ;
|
|
1 000510 000000 HALT ; just halt on error
|
|
2 000512 000000 HALT ; force3 word size, like in original
|
|
3 000514 000000 HALT
|
|
155 ;**************************************************************
|
|
156
|
|
157 000516 005233 RD5: INC @(R3)+ ;(R0)=077777, C=0001
|
|
158 000520 103001 BCC INC3
|
|
159 000522 100003 BPL RD6
|
|
160 INC3:
|
|
161 ;**************************************************************
|
|
162 HRDER$,BEGIN,NULL ;
|
|
1 000524 000000 HALT ; just halt on error
|
|
2 000526 000000 HALT ; force3 word size, like in original
|
|
3 000530 000000 HALT
|
|
163 ;**************************************************************
|
|
164
|
|
165 000532 005554 RD6: ADC @-(R4) ;(R0)=100000, C=1010
|
|
166 000534 103402 BCS ADC5
|
|
167 000536 102001 BVC ADC5
|
|
168 000540 100403 BMI RD7
|
|
169 ADC5:
|
|
170 ;**************************************************************
|
|
171 HRDER$,BEGIN,NULL ;
|
|
1 000542 000000 HALT ; just halt on error
|
|
2 000544 000000 HALT ; force3 word size, like in original
|
|
3 000546 000000 HALT
|
|
172 ;**************************************************************
|
|
173
|
|
174 000550 000257 RD7: CCC
|
|
175 000552 006134 ROL @(R4)+ ;(R0)=000000, C=0111
|
|
176 000554 103002 BCC ROL3
|
|
177 000556 102001 BVC ROL3
|
|
178 000560 001403 BEQ RD8
|
|
179 ROL3:
|
|
180 ;**************************************************************
|
|
181 HRDER$,BEGIN,NULL ;
|
|
1 000562 000000 HALT ; just halt on error
|
|
2 000564 000000 HALT ; force3 word size, like in original
|
|
3 000566 000000 HALT
|
|
182 ;**************************************************************
|
|
183
|
|
184 000570 005253 RD8: INC @-(R3) ;(R0)=000001, C=0001
|
|
185 000572 005654 SBC @-(R4) ;(R0)=000000, C=0100
|
|
186 000574 103401 BCS SBC5
|
|
187 000576 001403 BEQ RD9
|
|
188 SBC5:
|
|
189 ;**************************************************************
|
|
190 HRDER$,BEGIN,NULL ;
|
|
1 000600 000000 HALT ; just halt on error
|
|
2 000602 000000 HALT ; force3 word size, like in original
|
|
3 000604 000000 HALT
|
|
191 ;**************************************************************
|
|
192
|
|
193 ;CHECK UNARY BYTE OPS USING ADDRESS MODES 3 AND 4
|
|
194 000606 000403 RD9: BR 1$ ; RESERVE 3 WORDS
|
|
195 000610 000000 .WORD 0 ;1 FOR EVEN BYTE ADDRESS
|
|
196 000612 000000 .WORD 0 ;1 FOR ODD BYTE ADDRESS
|
|
197 000614 000000 .WORD 0 ;AND 1 FOR DATA
|
|
198 000616 010702 1$: MOV PC,R2
|
|
199 000620 005742 TST -(R2) ;BACK R2 UP TO
|
|
200 000622 005742 TST -(R2) ;DATA WORD
|
|
201 000624 010200 MOV R2,R0 ;R0 POINTS TO THE DATA WORD
|
|
202 000626 005010 CLR (R0) ;PRESET DATA
|
|
203 000630 005742 TST -(R2) ;BACK R2 UP TO
|
|
204 000632 005742 TST -(R2) ;EVEN BYTE ADDRESS WORD
|
|
205 000634 010022 MOV R0,(R2)+ ;LOAD ADDRESS
|
|
206 000636 005200 INC R0 ;ODD BYTE ADDRESS
|
|
207 000640 010022 MOV R0,(R2)+ ;LOAD ODD BYTE ADDRESS
|
|
208 000642 010200 MOV R2,R0 ;RESET R0
|
|
209 000644 010205 MOV R2,R5
|
|
210
|
|
211 000646 105152 COMB @-(R2) ;(R0)=177400, CC=1001
|
|
212 000650 103001 BCC COMB5
|
|
213 000652 100403 BMI TE
|
|
214 COMB5:
|
|
215 ;**************************************************************
|
|
216 HRDER$,BEGIN,NULL ;
|
|
1 000654 000000 HALT ; just halt on error
|
|
2 000656 000000 HALT ; force3 word size, like in original
|
|
3 000660 000000 HALT
|
|
217 ;**************************************************************
|
|
218
|
|
219 000662 105752 TE: TSTB @-(R2) ;(R0)=177400, CC=0100
|
|
220 000664 001403 BEQ 1$
|
|
221 ;**************************************************************
|
|
222 HRDER$,BEGIN,NULL ;
|
|
1 000666 000000 HALT ; just halt on error
|
|
2 000670 000000 HALT ; force3 word size, like in original
|
|
3 000672 000000 HALT
|
|
223 ;**************************************************************
|
|
224
|
|
225 000674 000262 1$: SEV
|
|
226 000676 106255 ASRB @-(R5) ;(R0)=177400, CC=1001
|
|
227 000700 103002 BCC ASRB5
|
|
228 000702 102401 BVS ASRB5
|
|
229 000704 100403 BMI TE1
|
|
230 ASRB5:
|
|
231 ;**************************************************************
|
|
232 HRDER$,BEGIN,NULL ;
|
|
1 000706 000000 HALT ; just halt on error
|
|
2 000710 000000 HALT ; force3 word size, like in original
|
|
3 000712 000000 HALT
|
|
233 ;**************************************************************
|
|
234
|
|
235 000714 105232 TE1: INCB @(R2)+ ;(R0)=177401, CC=000
|
|
236 000716 103001 BCC INCB3
|
|
237 000720 100003 BPL TE2
|
|
238 INCB3:
|
|
239 ;**************************************************************
|
|
240 HRDER$,BEGIN,NULL ;
|
|
1 000722 000000 HALT ; just halt on error
|
|
2 000724 000000 HALT ; force3 word size, like in original
|
|
3 000726 000000 HALT
|
|
241 ;**************************************************************
|
|
242
|
|
243 000730 000241 TE2: CLC
|
|
244 000732 106055 RORB @-(R5) ;(R0)=177400, CC=0111
|
|
245 000734 103003 BCC RORB5
|
|
246 000736 102002 BVC RORB5
|
|
247 000740 001001 BNE RORB5
|
|
248 000742 100003 BPL TE3
|
|
249 RORB5:
|
|
250 ;**************************************************************
|
|
251 HRDER$,BEGIN,NULL ;
|
|
1 000744 000000 HALT ; just halt on error
|
|
2 000746 000000 HALT ; force3 word size, like in original
|
|
3 000750 000000 HALT
|
|
252 ;**************************************************************
|
|
253
|
|
254 000752 106332 TE3: ASLB @(R2)+ ;(R0)=177000, CC=1001
|
|
255 000754 103002 BCC ASLB3
|
|
256 000756 102401 BVS ASLB3
|
|
257 000760 100403 BMI TE4
|
|
258 ASLB3:
|
|
259 ;**************************************************************
|
|
260 HRDER$,BEGIN,NULL ;
|
|
1 000762 000000 HALT ; just halt on error
|
|
2 000764 000000 HALT ; force3 word size, like in original
|
|
3 000766 000000 HALT
|
|
261 ;**************************************************************
|
|
262
|
|
263 000770 105552 TE4: ADCB @-(R2) ;(R0)=177400, CC=1000
|
|
264 000772 103401 BCS ADCB5
|
|
265 000774 100403 BMI TE5:
|
|
266 ADCB5:
|
|
267 ;**************************************************************
|
|
268 HRDER$,BEGIN,NULL ;
|
|
1 000776 000000 HALT ; just halt on error
|
|
2 001000 000000 HALT ; force3 word size, like in original
|
|
3 001002 000000 HALT
|
|
269 ;**************************************************************
|
|
270
|
|
271 001004 000277 TE5: SCC
|
|
272 001006 106135 ROLB @(R5)+ ;(R0)=177401, CC=0000
|
|
273 001010 101402 BLOS ROLB3 ;BRANCH IF C OR Z IS SET
|
|
274 001012 102401 BVS ROLB3
|
|
275 001014 100003 BPL TE6
|
|
276 ROLB3:
|
|
277 ;**************************************************************
|
|
278 HRDER$,BEGIN,NULL ;
|
|
1 001016 000000 HALT ; just halt on error
|
|
2 001020 000000 HALT ; force3 word size, like in original
|
|
3 001022 000000 HALT
|
|
279 ;**************************************************************
|
|
280
|
|
281 001024 000352 TE6: SWAB @-(R2) ;(R0)=000777, C=1000
|
|
282 001026 100403 BMI 1$
|
|
283 ;**************************************************************
|
|
284 HRDER$,BEGIN,NULL ;
|
|
1 001030 000000 HALT ; just halt on error
|
|
2 001032 000000 HALT ; force3 word size, like in original
|
|
3 001034 000000 HALT
|
|
285 ;**************************************************************
|
|
286
|
|
287 001036 000261 1$: SEC
|
|
288 001040 105635 SBCB @(R5)+ ;(R0)=000377, CC=0100
|
|
289 001042 103401 BCS SBCB3
|
|
290 001044 001403 BEQ TE7
|
|
291 SBCB3:
|
|
292 ;**************************************************************
|
|
293 HRDER$,BEGIN,NULL ;
|
|
1 001046 000000 HALT ; just halt on error
|
|
2 001050 000000 HALT ; force3 word size, like in original
|
|
3 001052 000000 HALT
|
|
294 ;**************************************************************
|
|
295
|
|
296 001054 105432 TE7: NEGB @(R2)+ ;(R0)=000001
|
|
297 001056 105352 DECB @-(R2) ;(R0)=000000, CC=0101
|
|
298 001060 103001 BCC DECB5
|
|
299 001062 001403 BEQ B1
|
|
300 DECB5:
|
|
301 ;**************************************************************
|
|
302 HRDER$,BEGIN,NULL ;
|
|
1 001064 000000 HALT ; just halt on error
|
|
2 001066 000000 HALT ; force3 word size, like in original
|
|
3 001070 000000 HALT
|
|
303 ;**************************************************************
|
|
304
|
|
305 ;CHECK BINARY WORD OPS USING ADDRESS MODES 3 & b5.
|
|
306 001072 000404 B1: BR 1$ ; RESERVE SPACE FOR DATA AND ADDRESSES
|
|
307 001074 000000 .WORD 0 ;CONTAINS ADDRESS OF SOURCE DATA
|
|
308 001076 000000 .WORD 0 ;CONTAINS ADDRESS OF DEST DATA
|
|
309 001100 000000 .WORD 0 ;CONTAINS SOURCE DATA
|
|
310 001102 000000 .WORD 0 ;CONTAINS DEST DATA
|
|
311 001104 010701 1$: MOV PC,R1
|
|
312 001106 010100 MOV R1,R0 ;SET SCOPE PTR
|
|
313 001110 024040 CMP -(R0),-(R0) ;ADJUST R0
|
|
314 001112 010005 MOV R0,R5 ;R5 POINTS TO DEST DATA
|
|
315 001114 024545 CMP -(R5),-(R5) ;SUB 4 FROM R5
|
|
316 001116 010015 MOV R0,(R5) ;R5 POINTS TO ADDRESS OF DEST DATA
|
|
317 001120 010502 MOV R5,R2
|
|
318 001122 010004 MOV R0,R4 ;R4 POINTS TO DEST DATA
|
|
319 001124 005740 TST -(R0)
|
|
320 001126 010003 MOV R0,R3 ;R3 POINTS TO SOURCE DATA
|
|
321 001130 010042 MOV R0,-(R2) ;R2 POINTS TO ADDRESS OF SOURCE DATA
|
|
322 001132 005013 CLR (R3) ;PRESET SOURCE DATA
|
|
323 001134 005014 CLR (R4) ;PRESET DEST DATA
|
|
324
|
|
325 001136 000277 SCC
|
|
326 001140 000244 CLZ
|
|
327 001142 163235 SUB @(R2)+,@(R5)+ ;(R3)=000000,(R4)=000000, CC=0100
|
|
328 001144 103402 BCS SUB3
|
|
329 001146 102401 BVS SUB3
|
|
330 001150 001403 BEQ H3
|
|
331 SUB3:
|
|
332 ;**************************************************************
|
|
333 HRDER$,BEGIN,NULL ;
|
|
1 001152 000000 HALT ; just halt on error
|
|
2 001154 000000 HALT ; force3 word size, like in original
|
|
3 001156 000000 HALT
|
|
334 ;**************************************************************
|
|
335
|
|
336 001160 052752 100000 H3: BIS #100000,@-(R2) ;(R3)=100000
|
|
337 001164 062755 000001 ADD #1,@-(R5) ;(R4)=000001
|
|
338 001170 163235 SUB @(R2)+,@(R5)+ ;(R3)=100000,(R4)=10001, CC=1011
|
|
339 001172 103002 BCC SUB3A
|
|
340 001174 102001 BVC SUB3A
|
|
341 001176 100403 BMI H4
|
|
342 SUB3A:
|
|
343 ;**************************************************************
|
|
344 HRDER$,BEGIN,NULL ;
|
|
1 001200 000000 HALT ; just halt on error
|
|
2 001202 000000 HALT ; force3 word size, like in original
|
|
3 001204 000000 HALT
|
|
345 ;**************************************************************
|
|
346
|
|
347 001206 005414 H4: NEG (R4) ;(R4)=077777
|
|
348 001210 035255 BIT @-(R2),@-(R5) ;(R3)=100000,(R4)=077777
|
|
349 001212 001403 BEQ 1$
|
|
350 ;**************************************************************
|
|
351 HRDER$,BEGIN,NULL ;
|
|
1 001214 000000 HALT ; just halt on error
|
|
2 001216 000000 HALT ; force3 word size, like in original
|
|
3 001220 000000 HALT
|
|
352 ;**************************************************************
|
|
353
|
|
354 001222 023235 1$: CMP @(R2)+,@(R5)+
|
|
355 001224 102403 BVS 2$
|
|
356 ;**************************************************************
|
|
357 HRDER$,BEGIN,NULL ;
|
|
1 001226 000000 HALT ; just halt on error
|
|
2 001230 000000 HALT ; force3 word size, like in original
|
|
3 001232 000000 HALT
|
|
358 ;**************************************************************
|
|
359
|
|
360 001234 005152 2$: COM @-(R2)
|
|
361 001236 000257 CCC
|
|
362 001240 063255 ADD @(R2)+,@-(R5)
|
|
363 001242 102001 BVC ADD3
|
|
364 001244 100403 BMI H41
|
|
365 ADD3:
|
|
366 ;**************************************************************
|
|
367 HRDER$,BEGIN,NULL ;
|
|
1 001246 000000 HALT ; just halt on error
|
|
2 001250 000000 HALT ; force3 word size, like in original
|
|
3 001252 000000 HALT
|
|
368 ;**************************************************************
|
|
369
|
|
370 001254 000261 H41: SEC
|
|
371 001256 045235 BIC @-(R2),@(R5)+ ;(R3)=077777,(R4)=100000
|
|
372 001260 103001 BCC BIC3
|
|
373 001262 100403 BMI H5
|
|
374 BIC3:
|
|
375 ;**************************************************************
|
|
376 HRDER$,BEGIN,NULL ;
|
|
1 001264 000000 HALT ; just halt on error
|
|
2 001266 000000 HALT ; force3 word size, like in original
|
|
3 001270 000000 HALT
|
|
377 ;**************************************************************
|
|
378
|
|
379 001272 005155 H5: COM @-(R5) ;(R4)=077777
|
|
380 001274 023235 CMP @(R2)+,@(R5)+ ;(R3)=077777,(R4)=077777
|
|
381 001276 001403 BEQ H6
|
|
382 ;**************************************************************
|
|
383 HRDER$,BEGIN,NULL ;
|
|
1 001300 000000 HALT ; just halt on error
|
|
2 001302 000000 HALT ; force3 word size, like in original
|
|
3 001304 000000 HALT
|
|
384 ;**************************************************************
|
|
385
|
|
386 ;CHECK BINARY BYTE OPS USING ADDRESS MODES 3 & 5
|
|
387 001306 000406 H6: BR 1$ ;RESERVE SPACE FOR ADDRESSES & DATA
|
|
388 001310 000000 .WORD 0 ;CONTAINS ADDRESS OF SOURCE DATA (EVEN BYTE)
|
|
389 001312 000000 .WORD 0 ;CONTAINS ADDRESS OF SOURCE DATA (ODD BYTE)
|
|
390 001314 000000 .WORD 0 ;CONTAINS ADDRESS OF DEST DATA (EVEN BYTE)
|
|
391 001316 000000 .WORD 0 ;CONTAINS ADDRESS OF DEST DATA (ODD BYTE)
|
|
392 001320 000000 .WORD 0 ;CONTAINS SOURCE DATA
|
|
393 001322 000000 .WORD 0 ;CONTAINS DEST DATA
|
|
394 001324 010700 1$: MOV PC,R0
|
|
395 001326 024040 CMP -(R0),-(R0) ;R0=ADDRESS OF DEST DATA
|
|
396 001330 010003 MOV R0,R3 ;R3 " "
|
|
397 001332 010305 MOV R3,R5 ;R3 " "
|
|
398 001334 005743 TST -(R3) ; SUB2 FROm R3
|
|
399 001336 010043 MOV R0,-(R3) ;R3 POINTS TO ADDRESS OF DEST DATA
|
|
400 001340 005213 INC (R3) ;ODD BYTE
|
|
401 001342 010043 MOV R0,-(R3) ;EVEN BYTE
|
|
402 001344 010304 MOV R3,R4
|
|
403 001346 005740 TST -(R0) ;R0=ADDRESS OF SOURCE DATA
|
|
404 001350 010044 MOV R0,-(R4) ;R4 POINTS TO ADDRESS OF SOURCE DATA
|
|
405 001352 005214 INC (R4) ;ODD BYTE
|
|
406 001354 010044 MOV R0,-(R4) ;EVEN BYTE
|
|
407
|
|
408 001356 000261 SEC ;SET CARRY
|
|
409 001360 012734 177001 MOV #177001,@(R4)+
|
|
410 001364 112734 000200 MOVB #200,@(R4)+ ;SOURCE DATA=100001
|
|
411 001370 115433 MOVB @-(R4),@(R3)+ ;
|
|
412 001372 115433 MOVB @-(R4),@(R3)+ ;DEST DATA=000600
|
|
413 001374 103403 BCS 2$
|
|
414 ;**************************************************************
|
|
415 HRDER$,BEGIN,NULL ;
|
|
1 001376 000000 HALT ; just halt on error
|
|
2 001400 000000 HALT ; force3 word size, like in original
|
|
3 001402 000000 HALT
|
|
416 ;**************************************************************
|
|
417
|
|
418 001404 022715 000600 2$: CMP #600,(R5) ;CHECK DEST DATA
|
|
419 001410 001403 BEQ 3$
|
|
420 ;**************************************************************
|
|
421 HRDER$,BEGIN,NULL ;
|
|
1 001412 000000 HALT ; just halt on error
|
|
2 001414 000000 HALT ; force3 word size, like in original
|
|
3 001416 000000 HALT
|
|
422 ;**************************************************************
|
|
423
|
|
424 001420 024343 3$: CMP -(R3),-(R3) ;POINT R4 BACK TO EVEN BYTE
|
|
425 001422 153433 BISB @(R4)+,@(R3)+
|
|
426 001424 153433 BISB @(R4)+,@(R3)+ ;DEST DATA=100601
|
|
427 001426 022715 100601 CMP #100601,(R5) ;CHECK RESULT
|
|
428 001432 001403 BEQ 4$
|
|
429 ;**************************************************************
|
|
430 HRDER$,BEGIN,NULL ;
|
|
1 001434 000000 HALT ; just halt on error
|
|
2 001436 000000 HALT ; force3 word size, like in original
|
|
3 001440 000000 HALT
|
|
431 ;**************************************************************
|
|
432
|
|
433 001442 145453 4$: BICB @-(R4),@-(R3)
|
|
434 001444 145453 BICB @-(R4),@-(R3)
|
|
435 001446 133433 BITB @(R4)+,@(R3)+
|
|
436 001450 001002 BNE BITB3
|
|
437 001452 135433 BITB @-(R4),@(R3)+
|
|
438 001454 001003 BNE H7
|
|
439 BITB3:
|
|
440 ;**************************************************************
|
|
441 HRDER$,BEGIN,NULL ;
|
|
1 001456 000000 HALT ; just halt on error
|
|
2 001460 000000 HALT ; force3 word size, like in original
|
|
3 001462 000000 HALT
|
|
442 ;**************************************************************
|
|
443
|
|
444 001464 123453 H7: CMPB @(R4)+,@-(R3)
|
|
445 001466 001002 BNE CMPB3
|
|
446 001470 123453 CMPB @(R4)+,@-(R3)
|
|
447 001472 001403 BEQ JP1
|
|
448 CMPB3:
|
|
449 ;**************************************************************
|
|
450 HRDER$,BEGIN,NULL ;
|
|
1 001474 000000 HALT ; just halt on error
|
|
2 001476 000000 HALT ; force3 word size, like in original
|
|
3 001500 000000 HALT
|
|
451 ;**************************************************************
|
|
452
|
|
453 ;CHECK JUMP INSTRUCTIONS
|
|
454 001502 010700 JP1: MOV PC,R0
|
|
455 001504 062700 000012 ADD #12,R0 ;SET ADDRESS FOR JUMP INST
|
|
456 001510 000277 SCC
|
|
XCPA.mac:457: ***ERROR JMP Rn is illegal
|
|
457 001512 000110 JMP (R0)
|
|
458 001514 000402 2$: BR 3$
|
|
459 001516 000250 CLN ;JMP INST JUMPS HERE
|
|
460 001520 000775 BR 2$
|
|
461
|
|
462 001522 103003 3$: BCC JMP1
|
|
463 001524 102002 BVC JMP1
|
|
464 001526 001001 BNE JMP1
|
|
465 001530 100003 BPL K2
|
|
466 JMP1:
|
|
467 ;**************************************************************
|
|
468 HRDER$,BEGIN,NULL ;
|
|
1 001532 000000 HALT ; just halt on error
|
|
2 001534 000000 HALT ; force3 word size, like in original
|
|
3 001536 000000 HALT
|
|
469 ;**************************************************************
|
|
470
|
|
471 001540 005002 K2: CLR R2 ;SET INDICATOR
|
|
472 001542 010704 MOV PC,R4 ;SET UP JUMP REGISTER
|
|
473 001544 010400 MOV R4,R0 ;SET UP CHECK REGISTER
|
|
474 001546 000402 BR 1$
|
|
475 001550 005102 COM R2 ;COMPLEMENT INDICATOR
|
|
476 001552 000403 BR 2$
|
|
477 001554 022424 1$: CMP (R4)+,(R4)+
|
|
478 001556 005724 TST (R4)+ ;R4=JMP ADDRESS
|
|
479 001560 000144 JMP -(R4) ;USE R4 AS ADDRESS
|
|
480 001562 005202 2$: INC R2 ;CHECK INDICATOR
|
|
481 001564 001003 BNE JMP4
|
|
482 001566 022020 CMP (R0)+,(R0)+
|
|
483 001570 020004 CMP R0,R4 ;CHECK AUTO-DEC R4
|
|
484 001572 001403 BEQ JSRTST
|
|
485 JMP4:
|
|
486 ;**************************************************************
|
|
487 HRDER$,BEGIN,NULL ;
|
|
1 001574 000000 HALT ; just halt on error
|
|
2 001576 000000 HALT ; force3 word size, like in original
|
|
3 001600 000000 HALT
|
|
488 ;**************************************************************
|
|
489
|
|
490 ;CHECK JSR INSTRUCTIONS
|
|
491 001602 012702 001624 JSRTST: MOV #3$,R2 ;FORM DEST ADRS
|
|
492 001606 000277 SCC ;PRESET CC'S
|
|
493 001610 000242 CLV
|
|
494 001612 004512 JSR R5,(R2) ;GO TO 3$ VIA R2
|
|
495 001614 005702 1$: TST R2 ;CHECK INDICATOR
|
|
496 001616 001012 BNE JSR1 ;R2 SHOULD=0
|
|
497 001620 000414 BR EX
|
|
498 001622 000205 2$: RTS R5 ;RETURN FROM SUB ROUTINE
|
|
499 001624 103007 3$: BCC JSR1 ;CHECK THAT JSR DID NOT
|
|
500 001626 102406 BVS JSR1
|
|
501 001630 001005 BNE JSR1 ;AFFECT CC'S
|
|
502 001632 100004 BPL JSR1
|
|
503 001634 005002 CLR R2 ;CLEAR INDICATOR
|
|
504 001636 012704 001614 MOV #1$,R4 ;GET RETURN ADDRESS
|
|
505 001642 000767 BR 2$
|
|
506 JSR1:
|
|
507 ;**************************************************************
|
|
508 HRDER$,BEGIN,NULL ;
|
|
1 001644 000000 HALT ; just halt on error
|
|
2 001646 000000 HALT ; force3 word size, like in original
|
|
3 001650 000000 HALT
|
|
509 ;**************************************************************
|
|
510
|
|
511 EX:
|
|
512 ; ENDIT$,BEGIN ;SIGNAL END OF ITERATION
|
|
513 ;MONITOR SHALL TEst END OF PASS
|
|
514 001652 000000 HALT
|
|
515 001654 000137 000224 ST: JMP RESTRT
|
|
516
|
|
517
|
|
518 ; stack area has to be beyond 000400
|
|
519 .REPT SPSIZ ;MODULE STACK STARTS HERE
|
|
520 .NLIST
|
|
521 .WORD 0
|
|
522 .LIST
|
|
523 .ENDR
|
|
1 .NLIST
|
|
2 001660 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001662 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001664 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001666 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001670 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001672 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001674 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001676 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001700 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001702 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001704 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001706 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001710 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001712 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001714 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001716 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001720 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001722 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001724 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001726 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001730 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001732 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001734 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001736 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001740 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001742 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001744 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001746 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001750 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001752 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001754 000000 .WORD 0
|
|
3 .LIST
|
|
1 .NLIST
|
|
2 001756 000000 .WORD 0
|
|
3 .LIST
|
|
524 MODSP: ; module stack base
|
|
525
|
|
526
|
|
527 .END
|
|
527
|