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