pcjs/apps/pdp11/diags/cpu/XCPA.lst
2016-10-22 21:57:45 -07:00

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