1 /HIGH SPEED READER/PUNCH TESTS 2 /DHPCA VER A MARCH 1977 3 /1.0 ABSTRACT 4 / THE PC8-E HIGH-SPEED READER AND PUNCH TESTS ARE A TEST PACKAGE 5 / USED TO TEST THE TYPE PC02 AND PC03 HIGH-SPEED READER-PUNCH WHEN 6 / ATTACHED TO A PDP8/E SYSTEM. THE TESTS PERFORM BASIC INPUT AND 7 / OUTPUT CONTROL LOGIC TESTS, READER AND PUNCH TESTS, READER AND 8 / PUNCH SPEED PRINTOUTS, AND PROVIDE MAINTENANCE LOOPS USEFUL IN 9 / ADJUSTING THE READER AND PUNCH 10 / 11 / THE AVAILABLE TEST PROGRAMS ARE: 12 / 13 / PRG0 - BASIC READER AND READER CONTROL LOGIC TESTS 14 / PRG1 - BASIC PUNCH AND PUNCH CONTROL LOGIC TEST 15 / PRG2 - READER TEST. SPECIAL BINARY COUNT PATTERN 16 / PRG3 - PUNCH TEST. SPECIAL BINARY COUNT PATTERN 17 / PRG4 - PUNCH VERIFY. SPECIAL BINARY COUNT PATTERN 18 / PRG5 - PUNCH TEST. RANDOM CHARACTERS 19 / PRG6 - PUNCH VERIFY. RANDOM CHARACTERS 20 / PRG7 - COMBINED READER-PUNCH TEST. SPECIAL BINARY 21 / COUNT PATTERN 22 / PRG10 - READ AMPLIFIER ADJUSTMENT LOOP. 1'S AND 0'S TAPE 23 / PRG11 - PUNCH ANY CHARACTER IN SR LOOP 24 / PRG12 - 1'S AND 0'S PUNCH LOOP 25 / PRG13 - READER SPEED PRINT LOOP 26 / PRG14 - PUNCH SPEED PRINT LOOP 27 / PRG15 - READ X CHARACTERS. STALL Y MS LOOP 28 / 29 /2.0 REQUIREMENTS 30 /2.1 EQUIPMENT 31 / 32 / PDP8/E WITH ASR33/35 TELETYPE, PR8-E READER, OR PR8-E PUNCH, OR 33 / PC8-E READER/PUNCH. THE FOLLOWING TAPED ARE REQUIRED IN CON- 34 / JUNCTION WITH THIS TEST: 35 / 36 / MAINDEC-08-D2G1-PT 37 / MAINDEC-08-D2G2-PT 38 / MAINDEC-08-D2G4-PT 39 / 40 /2.2 STORAGE 41 / 42 / LOCATIONS 0000 THROUGH 4377 ARE USED. 43 / 44 /2.3 PRELIMINARY PROGRAMS 45 / 46 / ALL BASIC CPU AND TELETYPE MAINDEC MUST HAVE BEEN RUN SUCCESS- 47 / FULLY. 48 / 49 /3.0 LOADING PROCEDURE 50 / 51 / THE BINARY LOADER IS USED TO LOAD THE PROGRAM 52 / 53 /4.0 USE PROCEDURES 54 / 55 / THE FOLLOWING PAGES EXPLAIN IN DETAIL THE STEPS NECESSARY TO 56 / RUN EACH PROGRAM 57 / 58 59 /4.1 PRG0 USE PROCEDURE 60 / 61 / A. INSURE THAT THE TELETYPE IS ONLINE. 62 / B. LOAD READER WITH ALL 0'S TEST TAPE. PREFERABLY THE TAPE 63 / SHOULD BE SPLICED INTO A LOOP. 64 / C. LOAD ADDRSS 0200. 65 / D. SET SR TO 0000. PRESS START. 66 / E. PROGRAM HALTS AT LOC 0242 TO PERMIT SETTING OF SR OPTIONS 67 / SET DESIRED OPTIONS AND PRESS CONTINUE. 68 / 69 / PRG0 SR OPTIONS 70 / SR0 HALT AT ROUTINE END. ROUTINE NUMBER IN AC 71 / SR1 SELECT ROUTINE WHOSE NUMBER IS SET IN SR8-SR11. 72 / SR2 LOOP PROGRAM. 73 / SR3 0=HALT ON ERROR. 1=DO NOT HALT ON ERROR. 74 / SR4 SKIP TEST AFTER ERROR. 75 / SR5 ENTER SCOPE LOOP AFTER ERROR 76 / SR8 77 / THROUGH ROUTINE NUMBER TO BE SELECTED 78 / SR11 79 / 80 / F. THE PROGRAM RUNS AND HALTS AT PROGRAM END HALT, AT LOC 0305 81 / UNLESS PREVENTED FROM ENDING BY ERRORS, OR SR OPTIONS. 82 / 83 /4.2 PRG1 USE PROCEDURE 84 / 85 / A. INSURE THAT THE TELETYPE IS ONLINE. 86 / B. MAKE PUNCH READY, INSURING THAT THERE ARE SEVERAL INCHES OF 87 / BLANK LEADER. 88 / C. LOAD ADDRSS 0200. 89 / D. SET SR TO 0001. PRESS START. 90 / E. PROGRAM HALTS AT LOC 0242 TO PERMIT SETTING OF SR OPTIONS 91 / SET DESIRED OPTIONS AND PRESS CONTINUE. 92 / 93 / PRG1 SR OPTIONS 94 / SR0 HALT AT ROUTINE END. ROUTINE NUMBER IN AC 95 / SR1 SELECT ROUTINE WHOSE NUMBER IS SET IN SR8-SR11. 96 / SR2 LOOP PROGRAM. 97 / SR3 0=HALT ON ERROR. 1=DO NOT HALT ON ERROR. 98 / SR4 SKIP TEST AFTER ERROR. 99 / SR5 ENTER SCOPE LOOP AFTER ERROR 100 / SR8 101 / THROUGH ROUTINE NUMBER TO BE SELECTED 102 / SR11 103 / 104 / F. THE PROGRAM RUNS AND HALTS AT PROGRAM END HALT, AT LOC 0305 105 / UNLESS PREVENTED FROM ENDING BY ERRORS, OR SR OPTIONS. 106 / 107 / NOTE 108 / 109 / THE RESULTING PUNCHED TAPE MUST BE INSPECTED VISUALLY. 110 / EXCEPT FOR TWO 500 CHARACTER BLOCKS CONTAINING PUNCHES 111 / IN ALTERNATE CHANNELS, THE REMAINDER OF THE TAPE SHOULD 112 / BE BLANK. 113 / 114 /4.3 PRG2 USE PROCEDURE 115 / 116 / A. INSURE THAT THE TELETYPE IS ONLINE. 117 / B. LOAD READER WITH SPECIAL BINARY COUNT PATTERN TEST LOOP. 118 / C. LOAD ADDRSS 0200. 119 / D. SET SR TO 0002. PRESS START. 120 / E. PROGRAM RUNS CONTINUOUSLY UNLESS ERRORS OCCUR. 121 / 122 / PRG2 SR OPTIONS 123 / 124 / SR3 =0-HALT ON ERROR. SR3=1-NO HALT ON ERROR. 125 / SR6 =0-STALL (RANDOM), SR6=1-RUN FULL SPEED 126 / SR7 LOCK IN CURRENT STALL (SR6 MUST BE 0) 127 / 128 /4.4 PRG3 USE PROCEDURE 129 / 130 / A. INSURE THAT THE TELETYPE IS ONLINE. 131 / B. MAKE PUNCH READY. 132 / C. LOAD ADDRSS 0200. 133 / D. SET SR TO 0003. PRESS START. 134 / E. THE PROGRAM PUNCHES SPECIAL BINARY COUNT PATTERN CONTIN- 135 / UOUSLY UNTIL STOPPED BY USER. 136 / 137 / PRG3 SR OPTIONS 138 / 139 / SR6 =0-STALL (RANDOM), SR6=1-RUN FULL SPEED 140 / SR7 LOCK IN CURRENT STALL (SR6 MUST BE 0) 141 / 142 /4.5 PRG4 USE PROCEDURE 143 / 144 / A. INSURE THAT THE TELETYPE IS ONLINE. 145 / B. LOAD READER WITH TAPE PUNCHED BY PRG3, BLANK LEADER SHOULD 146 / BE UNDER READ STATION. WITH "UP" MARKER TO THE LEFT. 147 / C. LOAD ADDRSS 0200. 148 / D. SET SR TO 0004. PRESS START. 149 / E. PROGRAM RUNS CONTINUOUSLY UNLESS ERRORS OCCUR, OR UNTIL 150 / THE READER RUNS OUT OF TAPE. 151 / 152 / PRG4 SR OPTIONS 153 / 154 / SR3 =0-HALT ON ERROR. SR3=1-NO HALT ON ERROR. 155 / 156 / NOTE 157 / 158 / DISREGARD ERRORS TAHT OCCUR WHEN THE END OF SPECIAL 159 / BINARY COUNT PATTERN IS REACHED. 160 / 161 /4.6 PRG5 USE PROCEDURE 162 / 163 / A. INSURE THAT THE TELETYPE IS ONLINE. 164 / B. MAKE PUNCH READY. 165 / C. LOAD ADDRSS 0200. 166 / D. SET SR TO 0005. PRESS START. 167 / E. THE PROGRAM PUNCHES RANDOM CHARACTERS CONTINUOUSLY 168 / UNTIL STOPPED BY USER. 169 / 170 / PRG5 SR OPTIONS 171 / 172 / SR6 =0-STALL (RANDOM), SR6=1-RUN FULL SPEED 173 / SR7 LOCK IN CURRENT STALL (SR6 MUST BE 0) 174 / 175 /4.7 PRG6 USE PROCEDURE 176 / 177 / A. INSURE THAT THE TELETYPE IS ONLINE. 178 / B. LOAD READER WITH TAPE PUNCHED BY PRG5, BLANK LEADER SHOULD 179 / BE UNDER READ STATION. WITH "UP" MARKER TO THE LEFT. 180 / C. LOAD ADDRSS 0200. 181 / D. SET SR TO 0006. PRESS START. 182 / E. PROGRAM RUNS CONTINUOUSLY UNLESS ERRORS OCCUR, OR UNTIL 183 / THE READER RUNS OUT OF TAPE. 184 / 185 / PRG4 SR OPTIONS 186 / 187 / SR3 =0-HALT ON ERROR. SR3=1-NO HALT ON ERROR. 188 / 189 / NOTE 190 / 191 / DISREGARD ERRORS TAHT OCCUR WHEN THE END OF SPECIAL 192 / BINARY COUNT PATTERN IS REACHED. 193 / 194 /4.8 PRG7 USE PROCEDURE 195 / 196 / A. INSURE THAT THE TELETYPE IS ONLINE. 197 / B. MAKE PUNCH READY, PUNCH ABOUT 20 INCHES (MAXIMUM) OF BLANK 198 / LEADER, AND LOAD READER WITH THE BLANK LEADER. THE PUNCH 199 / TO READER SLACK SHOULD NOT BE EXCESSIVE. 200 / C. LOAD ADDRSS 0200. 201 / D. SET SR TO 0007. PRESS START. 202 / E. THE PROGRAM PUNCHES AND READ CHECKS SPECIAL BINARY COUNT 203 / PATTERN CONTINUOUSLY UNTIL ERROR OCCURS, OR SUPPLY OF TAPE 204 / IS EXHAUSTED. 205 / 206 / PRG7 SR OPTIONS 207 / 208 / SR3 =0-HALT ON ERROR. SR3=1-NO HALT ON ERROR. 209 / SR6 =0-STALL (RANDOM), SR6=1-RUN FULL SPEED 210 / SR7 LOCK IN CURRENT STALL (SR6 MUST BE 0) 211 / 212 /4.9 PRG10 USE PROCEDURE 213 / 214 / A. INSURE THAT THE TELETYPE IS ONLINE. 215 / B. LOAD READER WITH 1'S AND 0'S TEST TAPE LOOP. 216 / C. LOAD ADDRSS 0200. 217 / D. SET SR TO 0010. PRESS START. 218 / E. PROGRAM RUNS CONTINUOUSLY UNTIL STOPPED BY USER. WITH 219 / THE PROGRAM RUNNING, THE USER CAN ADJUST THE READ 220 / AMPLIFIERS. 221 / 222 /4.10 PRG11 USE PROCEDURE 223 / 224 / A. INSURE THAT THE TELETYPE IS ONLINE. 225 / B. MAKE PUNCH READY. 226 / C. LOAD ADDRSS 0200. 227 / D. SET SR TO 0011. PRESS START. 228 / E. THE PROGRAM PUNCHES CONTINUOUSLY THE CODE SET IN SWITCHES 229 / 4 TO 11. THE SWITCHES MAY BE CHANGED AT ANY TIME. 230 / 231 /4.11 PRG12 USE PROCEDURE 232 / 233 / A. INSURE THAT THE TELETYPE IS ONLINE. 234 / B. MAKE PUNCH READY. 235 / C. LOAD ADDRSS 0200. 236 / D. SET SR TO 0012. PRESS START. 237 / E. THE PROGRAM PUNCHES 1'S AND 0'S TAPE CONTINUOUSLY. 238 / 239 / PRG12 SR OPTIONS 240 / 241 / SR6 =0-STALL (RANDOM), SR6=1-RUN FULL SPEED 242 / SR7 LOCK IN CURRENT STALL (SR6 MUST BE 0) 243 / 244 /4.12 PRG13 USE PROCEDURE 245 / 246 / PRG13 IS USED TO TIME THE HIGH SPEED READER WITH THE AID OF A 247 / WATCH WITH SWEEP SECOND HAND. THE READER CAN BE TIMED IN 2 248 / WAYS: 249 / 250 / A. 30 SECOND TIMING. USED FOR APPROXIMATE SPEED SETTINGS. 251 / B. 300 SECOND TIMING (5 MINUTES) FOR ACCURATE AND FINAL 252 / VERIFICATION OF READER SPEED 253 / 254 / TO TIME THE READER PROCEED AS FOLLOWS: 255 / 256 / A. INSURE TELETYPE IS ON-LINE 257 / B. LOAD ANY TAPE IN READER 258 / C. LOAD ADDRESS 0200 259 / D. SET SR TO 0013 260 / E. FOR 30 SECOND TIMING, LEAVE SR1=0, FOR 300 SECOND TIMING 261 / SET SR1 TO A 1 262 / F. PRESS START, READER WILL RUN CONTINUOUSLY 263 / G. WHEN THE 30 OR 300 SECOND TIME IS UP, TURN ON SR0, AND THEN 264 / TURN IT OFF. THE PROGRAM WILL TYPE OUT THE READER 265 / SPEED IN CHARACTERS PER SECOND (CPS) 266 / H. PROGRAM HALTS AT LOC 4230 AFTER PRINTOUT 267 / I. TO RETIME THE READER, PRESS CONTINUE AFTER MAKING SURE THAT 268 / SR0 IS OFF, AND THAT SR1 IS SET TO THE CORRECT TIME BASE 269 / 270 / NOTE 271 / 272 / ACCURATE READER SPEED MEASUREMENT DEPENDS ON THE USER'S 273 / ATTENTION TO THE STARTING AND STOPPING TIMES 274 / 275 /4.13 PRG14 USE PROCEDURE 276 / 277 / PRG14 IS USED TO TIME THE HIGH SPEED PUNCH WITH THE AID OF A 278 / WATCH WITH SWEEP SECOND HANDD. THE PUNCH IS TIMES OVER A PERIOD 279 / OF 60 SECONDS. TO TIME THE PUNCH, PROCEED AS FOLLOWS: 280 / 281 / A. INSURE TELETYPE IS ONLINE 282 / B. MAKE PUNCH READY 283 / C. LOAD ADDRSS 0200 284 / D. SET SR TO 0014 285 / E. PRESS START. PUNCH RUNS CONTINUOUSLY. 286 / F. AFTER 60 SECONDS TURN ON SR0, AND THEN TURN IT OFF. 287 / THE PROGRAM WILL TYPE OUT THE PUNCH SPEED IN CHARACTERS 288 / PER SECOND (CPS). 289 / G. PROGRAM HALTS AT LOC 4255 AFTER PRINTOUT. 290 / H. TO REIME THE PUNCH, PRESS CONTINUE AFTER MAKING SURE THAT 291 / SR0 IS OFF 292 / 293 / NOTE 294 / 295 / ACCURATE READER SPEED MEASUREMENT DEPENDS ON THE USER'S 296 / ATTENTION TO THE STARTING AND STOPPING TIMES 297 / 298 /4.14 PRG15 USE PROCEDURE 299 / 300 / A. LOAD ANY TAPE IN READER 301 / B. LOAD ADDRESS 0200 302 / C. SET SR TO 0015. PRESS START 303 / D. PROGRAM HALTS AT LOC 4332 304 / E. SET SR SWITCHES 0 THROUGH 4 TO NUMBER OF CHARACTERS TO 305 / READ (1 TO 37 OCTAL) 306 / F. SET SR SWITCHES 5 THROUGH 11 TO NUMBER OF MILLISECONDS TO 307 / STALL AFTER READING CHARACTERS (1 TO 177 OCTAL) 308 / G. PRESS CONTINUE 309 / H. PROGRAM RUNS CONTINUOUSLY, READING THE SPECIFIED NUMBER OF 310 / CHARACTERS, AND STALLING FOR THE SPECIFIED NUMBER OF 311 / MILLISECONDS 312 / 313 / NOTE 314 / 315 / THE NUMBER OF CHARACTERS READ AND/OR THE STALL COUNT CAN 316 / BE CHANGED AT ANY TIME. THIS PROGRAM DOES NOT CHECK FOR 317 / CORRECT DATA, IT IS INTENDED PRIMARILY AS AN AID IN 318 / ADJUSTING READER TIMINGS. 319 / 320 321 /5. OPERATING PROCEDURES 322 / 323 /5.1 PROGRAM AND/OR OPERATOR ACTION 324 / 325 /5.1.1 NORMAL HALTS 326 / 327 / LOC 0242 SR OPTIONS HALT. THIS HALT OCCURS DURING EXECU- 328 / TION OF PRG0 AND PRG1 TO PERMIT SETTING OF DE- 329 / SIRED OPTIONS. PRESS CONTINUE TO PROCEED. 330 / LOC 0305 PROGRAM END HALT. OCCURS AT END OF PRG0 AND 331 / PRG1. IF "LOOP PROGRAM" OPTION IS NOT SET 332 / SET DESIRED OPTIONS, AND PRESS CONTINUE. IF NO 333 / OPTIONS ARE SET, THIS HALT REOCCURS. 334 / LOC 0340 ROUTINE END HALT. OCCURS DURING EXECUTION OF 335 / PRG0 AND PRG1 IF SR0 IS 1. 336 / LOC 4230 THIS HALT OCCURS IN PRG13 AFTER PROGRAM TYPES 337 / THE READER SPEED IN CHARACTERS PER SECOND. TO 338 / RETIME THE READER, PRESS CONTINUE AFTER MAKING 339 / SURE THAT SR0 IS OFF, AND THAT SR1 IS SET TO 340 / THE CORRECT TIME BASE. 341 / LOC 4255 THIS HALT OCCURS IN PRG14 AFTER PROGRAM TYPE 342 / THE PUNCH SPEED IN CHARACTERS PER SECOND. TO 343 / RETIME THE PUNCH, PRESS CONTINUE AFTER MAKING 344 / SURE THAT SR0 IS OFF. 345 / LOC 4332 PRG15 SR SET HALT. OCCURS TO PERMIT SETTING OF 346 / DESIRED CHARACTER AND STALL COUNT. SET SR0-4 TO 347 / NUMBER OF CHARACTERS TO BE READ. SET SR5-11 TO 348 / NUMBER OF MILLISECONDS TO STALL AFTER READING 349 / CHARACTERS, PRESS CONTINUE 350 / 351 /6.0 ERRORS 352 / 353 /6.1 ERROR PRINTOUTS ARE IDENTIFIED BY AN ASTERISK (*) PRECEDING THE 354 / PRINTOUT. MOST ERROR PRINTOUTS TAKE THE FORM: 355 / 356 / *P00XX R00XXY ZZZZZ 357 / WHERE 358 / P00XX=PROGRAM NUMBER 359 / R00XX=ROUTINE NUMBER IN PROGRAM 360 / Y=A LETTER. INDICATES WHICH ERROR OCCURRED WITHIN A 361 / ROUTINE. IF NO LETTER IS PRINTED, ONLY ONE ERROR 362 / IS POSSIBLE IN THE ROUTINE. 363 / ZZZZZ=ADDITIONAL INFORMATION PRINTOUT 364 / 365 / FOLLOWING AN ERROR PRINTOUT THE PROGRAM HALTS IF SR3 (HALT-ON- 366 / ERROR OPTION) IS OFF, AND THE OPTION APPLIES TO THE PROGRAM. 367 / 368 / *P0000 R0001 369 / 370 / WITH READ FLAG = 1, RSF (IOT011) COMMAND FAILED TO SKIP. 371 / 372 / *P0000 R0002 373 / 374 / RRB(IOT012) FAILED TO CLEAR FLAG, OR RSF(IOT011) SKIPPED 375 / WITH FLAG=0. 376 / 377 / *P0000 R0003 378 / 379 / SKIP NOT GENERATED WITH INTERRUPT OFF, OR 6010 (RPE) 380 / MALFUNCTION. 381 / 382 / *P0000 R0004 383 / 384 / PCE (6020) MALFUNCTION. INTERRUPT ENABLE NOT CLEARED 385 / 386 / *P0000 R0005 387 / 388 / RRB (IOT012) COMMAND FAILED TO CLEAR FLAG 389 / 390 / *P0000 R0006 391 / 392 / RFC (IOT014) FAILED TO CLEAR FLAG 393 / 394 / *P0000 R0007 395 / 396 / RRB (IOT012) COMMAND RESULTED IN NON-ZERO CHARACTER SET INTO AC. 397 / SHOULD BE ALL 0'S. AN ALL 0'S TEST TAPE SHOULD BE IN THE READER 398 / 399 / *P0000 R0010A 400 / 401 / UNEXPECTED INTERRUPT AFTER CLEARING REDER PUNCH, TTY PUNCH, 402 / AND TTY READER. TURN OFF INTERRUPTING DEVICE 403 / 404 / *P0000 R0010B 405 / 406 / WITH READER FLAG SET, READER FAILED TO INTERRUPT. 407 / 408 / *P0000 R0011A 409 / 410 / "STOP DELAY" NOT FIRING OR SET FOIR TOO SHORT A DURATION, REFER 411 / TO SECTION 9 FOR TEST DESCRIPTION 412 / 413 / *P0000 R0011B 414 / 415 / "STOP DELAY" TIME OUT IS TOO LONG. REFER TO SECTION 9 FOR TEST 416 / DESCRIPTION 417 / 418 / *P0001 R0000 419 / 420 / PSF (IOT021) COMMAND SKIPPED WITH FLAG = 0, OR, LESS LIKELY 421 / PCF(IOT022) FAILED TO CLEAR FLAG. 422 / 423 / *P0001 R0001 424 / 425 / PSF(IOT021) FAILED TO SKIP WITH FLAG = 1, OR FLAG IS NOT SET. 426 / 427 / *P0001 R0002 428 / 429 / PCF(IOT022) FAILED TO CLEAR FLAG 430 / 431 / *P0001 R0003 432 / 433 / DID NOT SKIP WITH INTERRUPT DISABLED 434 / 435 / *P0001 R0004 436 / 437 / COULD NOT CLEAR INTERRUPT ENABLE FOR PUNCH 438 / 439 / *P0001 R0010A 440 / 441 / UNEXPECTED INTERRUPT AFTER CLEARING PUNCH, READER, TTY PUNCH 442 / AND TTY READER. TURN OFF INTERRUPTING DEVICE. 443 / 444 / *P0001 R0010B 445 / 446 / WITH PUNCH FLAG SET, PUNCH FAILED TO INTERRUPT 447 / 448 / *P0002 R0000 S/B XXXX WAS YYYY 449 / *P0004 R0000 S/B XXXX WAS YYYY 450 / *P0006 R0000 S/B XXXX WAS YYYY 451 / *P0007 R0000 S/B XXXX WAS YYYY 452 / *P0010 R0000 S/B XXXX WAS YYYY 453 / 454 / ONE OF THE ABOVE PRINTOUTS OCCURS DURING ITS RESPECTIVE PROGRAM 455 / WHEN THE DATA READ FROM PAPER TAPE AND THE EXPECTED DATA DID NOT 456 / MATCH. "S/B" (SHOUD/BE) XXXX REPRESENTS THE EXPECTED CHARACTER. 457 / "WAS" REPRESENTS THE CHARACTER READ. 458 / 459 / INCORRECT RTN SELECTED 460 / 461 / THIS PRINTOUT OCCURS DURING EXECUTION OF PRG0 AND PRG1 IF A 462 / NONEXISTENT ROUTINE IS SELECTED. THE PROGRAM HALTS, SET CORRECT 463 / ROUTINE NUMBER IN SR AND PRESS CONTINUE 464 / 465 / UNEXPECTED INTERRUPT 466 / 467 / THIS PRINTOUT OCCURS DURING PRG7 EXECUTION. PRGRAM HALTS. 468 / TURN OFF INTERRUPTING DEVICE. PRESS CONTINUE 469 / 470 /6.2 ERROR HALTS 471 / 472 / LOC 0201 INCORRECT PRGRAM NUMBER SELECTED. SET SR 473 / TO CORRECT NUMBER AND PRESS CONTINUE. 474 / 475 / LOC 0266 INCORRECT ROUTINE NUMBER SELECTED. PRECEDED 476 / PRINTOUT. SET CORRECT ROUTINE NUMBER IN SR 477 / AND PRESS CONTINUE. 478 / 479 / LOC 0732 UNEXPECTED INTERRUPT. PRECEDED BY PRINTOUT. 480 / OCCURS DURING PRG7 EXECUTION. TURN OFF INTER- 481 / RUPTING DEVICE. PRESS CONTINUE. 482 / 483 / LOC 1347 SYNC ERROR. OCCURS DURING PRG2 AND PRG7, IF 484 / PROGRAM IS UNABLE TO SYNC. PRESS CONTINUE TO 485 / RETRY. 486 / 487 / LOC 1075 COMMON ERROR HALT. OCCURS AFTER ERROR PRINTOUT 488 / IF SR3=0 AND OPTION APPLIES TO PROGRAM BEING 489 / RUN. PRESS CONTINUE 490 / 491 / LOC 3631 PRG7. PUNCH COUNT HAS EXCEEDED 100. READER 492 / IS PROBABLY NOT RUNNING. RESTART PROGRAM. 493 / 494 495 /7.0 RESTRICTIONS 496 / 497 /7.1 STARTING RESTRICTIONS 498 / 499 / THIS PROGRAM MUST BE STARTED AT LOC 0200. 500 / 501 /8.0 MISCELLANEOUS 502 / 503 /8.1 EXECUTION TIME 504 / 505 / PRG0 1 MINUTE 50 SECONDS 506 / PRG1 45 SECONDS 507 / PRG2 THROUGH PRG15 ARE CONTINUOUS RUNNING PROGRAMS 508 / 509 /8.2 TEST TAPES 510 / 511 / MAINDEC-00D2G4-PT SPECIAL BINARY COUNT PATTERN TEST TAPE IS 512 / PROVIDED WITH THIS PROGRAM. FOR EASE OF USE, THE TAPE SHOULD BE 513 / SPLICED INTO A LOOP INSURING THAT THE PATTERN IS MATCHED AT THE 514 / SPLICE POINT. THE END OF A PATTERN IS INDICATED BY THE 515 / CHARACTERS: RUBOUT, ALL 0'S CHARACTER, ALL 0'S CHARACTER, AND 516 / THEN ANOTHER RUBOUT. 517 / 518 / IT IS DESIRABLE TO SPLICE INTO LOOPS, MAINDEC-00-D2G1-PT AND 519 / MAINDEC-00-D2G2-PT TO FACILITATE TESTING. 520 / 521 522 /9.0 PROGRAM DESCRIPTION 523 / 524 / THIS PROGRAM CONSISTS OF 14 INDIVIDUAL PROGRAMS NUMBERED FROM 525 / 00 TO 15 (OCTAL). PROGRAMS ARE SELECTED BY MEANS OF THE SWITCH 526 / REGISTER (SR). 527 / 528 /9.1 PRG0 - BASIC READER AND READER CONTROL LOGIC TEST 529 / 530 / THIS PROGRAM CONTAINS TEN ROUTINES NUMBERED FOR 0 TO 11 (OCTAL) 531 / 532 / RTN0 CHECKS THAT FLAG IS SET 250 MS AFTER ISSUING RFC COMMAND 533 / (IOT014). FAILURE TO SKIP ON FLAG COULD BE CAUSED BY 534 / FLAG NOT SET, OR RSF FAILURE TO SKIP. TEST IS DONE 535 / 200 TIMES. 536 / 537 / RTN1 CHECKS THAT RSF COMMAND (IOT011) SKIPS WITH FLAG=1. 538 / TEST IS DONE 4095 TIMES. 539 / 540 / RTN2 CHECK THAT RSF COMMAND (IOT011) DOES NOT SKIP WITH FLAG 541 / = 0. DONE 4095 TIMES. 542 / 543 / RTN3 CHECKS FOR SKIP WITH INTERRUPT OFF. DONE 2047 TIMES. 544 / 545 / RTN4 CHECKS THAT INTERRUPT ENABLE CAN BE CLEARED FOR READER. 546 / (DONE 4095 TIMES) 547 / 548 / RTN5 CHECKS THAT RRB COMMAND (IOT012) CLEARS THE FLAG. DONE 549 / 500 TIMES. 550 / 551 / RTN6 CHECKS THAT RFC COMMAND (IOT014) CLEARS THE FLAG. DONE 552 / 500 TIMES. 553 / 554 / RTN7 CHECKS THE ABILITY TO READ ALL 0'S CHARACTER. DONE 500 555 / TIMES. 556 / 557 / RTN10 CHECKS FOR UNEXPECTED INTERRUPTS, AND THEN CHECKS THAT 558 / READER IS ABLE TO INTERRUPT. 559 / 560 / RTN11 THIS ROUTINE CHECKS THAT THE "STOP DELAY" IS NOT LESS 561 / THAN 10 MS. OR MORE THAN 250 MS. THE TEST SEQUENCE IS: 562 / 563 / A. RFC (FETCH CHARACTER) 564 / B. WAIT FOR FLAG 1 (SHOULD SET IMMEDIATELY) 565 / C. DELAY 19 MS. (STOP DELAY SHOULD FIRE 6 MS AFTER STEP 566 / A) 567 / D. RFC (FETCH CHARACTER, CLEAR FLAG) 568 / E. DELAY 19 MS. 569 / F. SKIP ON FLAG. IF SKIP OCCURS, THE "STOP DELAY" 570 / DID NOT FIRE, OR IS TOO SHORT. 571 / G. DELAY ADDITIONAL 212 MILLISECONDS 572 / H. SKIP ON FLAG. IF NO SKIP OCCURS, THE "STOP DELAY" 573 / IS TOO LONG. TEST IS DONE 200 TIMES. 574 / 575 /9.2 PRG1 - BASIC PUNCH AND PUNCH CONTROL LOGIC TEST 576 / 577 / THIS PROGRAM CONTAINS NINE ROUTINES NUMBERED FROM 0 TO 10 578 / (OCTAL). 579 / 580 / RTN0 CHECKS THAT PSF COMMAND (IOT021) DOES NOT SKIP 581 / WITH FLAG = 0. 582 / 583 / RTN1 CHECKS THAT PSF COMMAND (IOT021) SKIPS WITH FLAG = 1. 584 / DONE 4095 TIMES. 585 / 586 / RTN2 CHECKS THAT PCF COMMAND (IOT022) IS ABLE TO CLEAR THE 587 / FLAG. DONE 500 TIMES. 588 / 589 / RTN3 CHECKS FOR SKIP WITH INTERRUPT OFF. DONE 2047 TIMES. 590 / 591 / RTN4 CHECKS THAT INTERRUPT ENABLE CAN BE CLEARED FOR PUNCH. 592 / DONE 4095 TIMES. 593 / 594 / RTN5 TEST DONE 500 TIMES. VISUAL CHECK OF TAPE REQUIRED. 595 / CHECKS THAT PCF COMMAND (IOT022) IS ABLE TO CLEAR THE 596 / PUNCH BUFFER. THE TEST SEQUENCE IS: 597 / 598 / A. ALL 1'S TO PUNCH BUFFER AND PUNCH (PLS). 599 / B. IMMEDIATELY CLEAR THE PUNCH BUFFER BY ISSUING 600 / PCF COMMAND. NO HOLES SHOULD BE PUNCHED EXCEPT 601 / FOR FEED HOLE. 602 / 603 / RTN6 TEST IS DONE 500 TIMES, VISUAL CHECK OF TAPE REQUIRED. 604 / ROUTINE LOADS PUNCH BUFFER WITH 125 (8) AND PUNCHES. 605 / ALTERNATE HOLES SHOULD BE PUNCHED. 606 / 607 / RTN7 TEST IS DONE 500 TIMES, VISUAL CHECK OF TAPE REQUIRED. 608 / ROUTINE LOADS PUNCH BUFFER WITH 252 (8) AND PUNCHES. 609 / ALTERNATE HOLES SHOULD BE PUNCHED. 610 / 611 / RTN10 CHECKS FOR UNEXPECTED INTERRUPTS, AND THEN CHECKS THAT 612 / PUNCH IS ABLE TO INTERRUPT. 613 / 614 /9.3 PRG2 - READER TEST 615 / 616 / THE READER IS TESTED USING A SPECIAL BINARY COUNT PATTERN TEST 617 / TAPE. THE PROGRAM IS CONTINUOUS RUNNING. ERRORS ARE INDICATED 618 / BY PRINTOUTS. NORMAL TEST MODE IS WITH RANDOM STALLS AFTER 619 / EVERY CHARACTER GROUP READ. SR6=1 GIVES FULL SPEED TESTING. 620 / SR7 = 1 LOCKS PROGRAM ON CURRENT STALL. (SR6 MUST BE 0). 621 / PROGRAM RESYNCS AFTER 5 ERRORS. THE LENGTH OF A CHARACTER GROUP 622 / IS RANDOM, BUT DOES NOT EXCEE 15 CHARACTERS. 623 / 624 /9.4 PRG3 - PUNCH TEST, SPECIAL BINARY COUNT PATTERN 625 / 626 / THIS CONTINUOUS RUNNING PROGEAM PUNCHES SPECIAL BINARY COUNT 627 / PATTERN. NORMAL TEST MODE IS WITH RANDOM STALLS AFTER EVERY 628 / CHARACTER PUNCHED. SR6=1 GIVES FULL SPEED PUNCHING. 629 / SR7 = 1 LOCKS PROGRAM ON CURRENT STALL. (SR6 MUST BE 0). 630 / 631 /9.5 PRG4 - PUNCH VERIFY, BINARY COUNT PATTERN 632 / 633 / THIS PROGRAM READS AND CHECKS THE TAPE PUNCHED DURING EXECUTION 634 / OF PRG3. ERRORS ARE INDICATED BY ERROR PRINTOUTS. 635 / 636 /9.6 PRG5 - PUNCH TEST, RANDOM CHARACTERS 637 / 638 / THIS CONTINUOUS RUNNING PROGRAM PUNCHES RANDOM CHARACTERS. 639 / NORMAL TEST MODE IS WITH RANDOM STALLS AFTER EVERY 640 / CHARACTER PUNCHED. SR6=1 GIVES FULL SPEED PUNCHING. 641 / SR7 = 1 LOCKS PROGRAM ON CURRENT STALL. (SR6 MUST BE 0). 642 / 643 /9.7 PRG6 - PUNCH VERIFY, RANDOM CHARACTERS 644 / 645 / THIS PROGRAM READS AND CHECKS THE TAPE PUNCHED DURING EXECUTION 646 / OF PRG5. ERRORS ARE INDICATED BY ERROR PRINTOUTS. 647 / 648 /9.8 PRG7 - COMBINED READER - PUNCH TEST 649 / 650 / THIS CONTINUOUS RUNNING PROGRAM PUNCHES AND READ - CHECKS 651 / SPECIAL BINARY COUNT PATTERN. THE READER AND PUNCH WORK IN THE 652 / INTERRUPT MODE. NORMAL TEST MODE IS WITH RANDOM STALLS AFTER 653 / EVERY CHARACTER PUNCHED. SR6=1 GIVES FULL SPEED PUNCHING AND 654 / READING. SR7 = 1 LOCKS PROGRAM ON CURRENT STALL. (SR6 MUST 655 / BE 0). THE READER RESYNCS ITSELF AUTOMATICALLY AFTER 5 ERRORS. 656 / 657 /9.9 PRG10 - READ AMPLIFIER ADJUSTMENT LOOP 658 / 659 / THIS CONTINUOUS RUNNING PROGRAM USES A 1'S AND 0'S TEST TAPE 660 / LOOP, AND PROVIDES A MEANS OF DETERMINING THE UPPER AND LOWER 661 / LIMITS OF CORRECT OPERATION OF THE READ AMPLIFIER OF THE PAPER 662 / TAPE READER. AFTER OBTAINING THE LIMITS THE POT CAN BE SET TO 663 / THE MIDDLE POSITION. READ ERRORS ARE INDICATED BY ERROR PRINT- 664 / OUTS. DROPPING OF THE READER FLAG BY OVERDRIVING OF THE FEED- 665 / HOLE AMPLIFIER IS INDICATED BY 3 BELLS FROM THE TELETYPE. THE 666 / READER IS THEN RESTARTED. 667 / 668 /9.10 PRG11 - PUNCH ANY CHARACTER IN SR LOOP 669 / 670 / THIS PROGRAM LOOP CONTINUOUSLY PUNCHES THE CODE SET IN SR4 671 / THROUGH SR11. SWITCHES MAY BE CHANGED WHILE RUNNING. 672 / 673 /9.11 PRG12 - ONES AND ZEROS PUNCH LOOP 674 / 675 / THIS PROGRAM PUNCHES 1'S AND 0'S CONTINUOUSLY. NORMAL MODE IS 676 / WITH RANDOM STALLS AFTER EVERY CHARACTER PUNCHED. SR6=1 GIVES 677 / FULL SPEED PUNCHING. SR7 = 1 LOCKS PROGRAM ON CURRENT STALL. 678 / (SR6 MUST BE 0). 679 / 680 /9.12 PRG13 - READ SPEED PRINT LOOP 681 / 682 / THIS PROGRAM TYPES THE READER SPEED MEASURED OVER A 30 OR 300 683 / SECOND PERIOD. THE USER CONTROLS THE MEASURING TIME WITH THE 684 / AID OF A WATCH WITH SWEEP SECOND HAND. 685 / 686 /9.13 PRG14 - PUNCH SPEED LOOP 687 / 688 / THIS PROGRAM TYPES THE PUNCH SPEED MEASURED OVER A 60 SECOND 689 / PERIOD. THE USER CONTROLS THE MEASURING TIME WITH THE AID OF A 690 / WATCH WITH SWEEP SECOND HAND. 691 / 692 /9.14 PRG15 - READ X, STALL Y MS LOOP 693 / 694 / THIS PROGRAM LOOP IS INTENDED AS AN AID IN ADJUSTING THE PAPER 695 / TAPE READER. THE USER SETS IN SR0 THROUGH SR4 THE NUMBER OF 696 / CHARACTERS TO BE READ (RANGE: 1 TO 37 OCTAL) AND IN SR5 THROUGH 697 / SR11 THE NUMBER OF MS TO STALL AFTER READING THE CHARACTERS 698 / (RANGE: 1 TO 177 OCTAL). THIS LOOP IS USEFUL IN ADJUSTING 699 / CLOCK TIMING, STROBE, ETC. 700 / 701 702 /10.0 LISTING 703 / 704 /PC8-E HIGH SPEED READER AND PUNCH TESTS. 705 /MAINDEC-08-DHPCA-A-D 706 /DATE: MARCH 1977 707 /COPYRIGHT 1977 DIGITAL EQUIPMENT CORP. MAYNARD, MASS. 01754 708 /AUTHORS: BOB KOLLER/MAIT TAFFEL/MARK SANDLER/STEVE JENSEN 709 /WILLEM VAN DER MARK RETYPED PROGRAM IN 2009 710 711 /PRG0-BASIC READER AND READER CONTROL LOGIC TEST. ALL 0'S TAPE 712 /PRG1-BASIC PUNCH AND PUNCH CONTROL LOGIC TEST 713 /PRG2-READER TEST, BINARY COUNT PATTERN 714 /PRG3-PUNCH TEST, BINARY COUNT PATTERN 715 /PRG4-PUNCH VERIFY, BINARY COUNT PATTERN 716 /PRG5-PUNCH TEST, RANDOM CHARACTERS 717 /PRG6-PUNCH VERIFY, RANDOM CHARACTERS 718 /PRG7-COMBINED READER-PUNCH TEST, BINARY PATTERN 719 /PRG10-READ AMPLIFIER ADJUSTMENT LOOP, ONES AND ZEROES TAPE 720 /PRG11-PUNCH ANY CHARACTER OR SR LOOP 721 /PRG12-ONES AND ZEROES PUNCH LOOP 722 /PRG13-READER SPEED PRINT LOOP 723 /PRG14-PUNCH SPEED PRINT LOOP 724 /PRG15-READ X,STALL Y MSEC LOOP 725 726 SKON=6000 727 SRQ=6003 728 CAF=6007 729 RPE=6010 730 PCE=6020 731 RCF=6014 732 PPC=6024 733 734 *0 735 00000 0000 0000 736 00001 5001 JMP 1 737 00002 0002 2 738 00003 0003 3 739 *5 740 00005 5402 JMP I 2 741 00006 0000 0 742 *20 743 00020 0000 KSTART, 0 744 00021 0000 DELAYM, 0 745 00022 0000 COUNT, 0000 746 00023 0000 AC, 0 747 00024 0000 LINK, 0 748 00025 0270 CHAIN, CHAINN 749 00026 0333 SHLT, SHALT 750 00027 0447 RANDNO, RANGEN 751 00030 0000 PRGNUM, 0 752 00031 2000 PRGTAB, PRG0 753 00032 3000 PRG1 754 00033 3462 PRG2 755 00034 3506 PRG3 756 00035 3517 PRG4 757 00036 3537 PRG5 758 00037 3553 PRG6 759 00040 3600 PRG7 760 00041 4000 PRG10 761 00042 4102 PRG11 762 00043 4110 PRG12 763 00044 4200 PRG13 764 00045 4233 PRG14 765 00046 4332 PRG15 766 767 00047 0616 XTYPST, TYPSTG 768 00050 0600 UCRLF, CRLF 769 00051 1050 UERROR, ERROR 770 00052 1000 UASCCN, ASCCN 771 00053 1255 ULPRGN, LPRGN 772 00054 1273 ULRRGN, LRRGN 773 00055 1200 UTREAD, TREAD 774 00056 1207 UTPCH, TPCH 775 00057 1214 UPLDR, PLDR 776 00060 1230 UMARK, MARK 777 00061 1143 UTCHK, TCHK 778 00062 1145 UTSB, TSB 779 00063 0324 CRCNT, CHRCNT 780 00064 1311 SYNC, SYNK 781 00065 1324 SYNCA, SYNKA 782 00066 1400 INPATT, INITPT 783 00067 1412 GETPT, GETPTT 784 00070 1435 GETPTR, GTPTRP 785 00071 0521 CHECK, CHCK 786 00072 0513 DLYCNT, DLCNT 787 00073 0426 UPUNCH, PUNCH 788 00074 0536 UMOVE, MOVE 789 00075 0400 USTCTR, STCTR 790 00076 0443 URDSR, RDSR 791 00077 1111 USTCTA, STCTA 792 00100 1117 USTCTB, STCTB 793 00101 1042 USTDLM, STDLYM 794 00102 0411 UDLYMS, DLYMS 795 00103 0733 UIOUT, IOUT 796 00104 0000 DLYMSK, 0 797 00105 0000 SRMSK, 0 798 00106 7354 MIL1, 7354 /CONSTANT FOR MILLISECONDS 799 00107 0000 CPIC, 0 800 00110 0000 CHR1, 0 801 00111 0000 CHR2, 0 802 00112 0000 CHR3, 0 803 00113 0000 TEMP, 0 804 00114 0000 TEMP1, 0 805 00115 0000 CURTST, 0 806 00116 0000 RTNNO, 0 807 00117 0000 NXTST, 0 808 00120 0000 MSCTR, 0 /STORED NUMBER OF MILLISECONDS TO BE COUNTED 809 00121 0000 MILCTR, 0 /MILLISECOND TALLY 810 00122 0000 CTRA, 0 811 00123 0000 CTRB, 0 812 00124 0000 CTRC, 0 813 00125 0000 CTRD, 0 814 00126 0000 PFLAG, 0 815 00127 0000 RBUSY, 0 816 00130 0000 RCHKW, 0 /?? 817 00131 0000 TCHKW, 0 818 00132 0000 PCHCNT, 0 819 00133 0000 ACTIND, 0 820 00134 0000 DELTIM, 0 821 00135 0000 MILLI, 0 822 00136 0000 CTR, 0 823 824 SR0MSK=4000 825 SR1MSK=2000 826 SR2MSK=1000 827 SR3MSK=0400 828 SR4MSK=0200 829 SR5MSK=0100 830 SR6MSK=0040 831 SR7MSK=0020 832 TSTMSK=0017 833 PTMSK=0377 834 835 SETLOC=JMS I USTCTR 836 READSR=JMS I URDSR 837 SETA=JMS I USTCTA 838 SETB=JMS I USTCTB 839 DELAY=JMS I UDLYMS 840 OUT=JMP I UIOUT 841 A=0140 842 B=0240 843 NONE=0000 844 NOSUF=4040 845 SETDLM=JMS I USTDLM 846 DELAY=JMS I UDLYMS 847 OUT=JMP I UIOUT 848 OPEN=0000 849 850 /SET INT ENABLE FOR READER AND PUNCH 851 /SKIP IF RDR FLAG = 1 852 /READ READER BUFFER AND CLEAR FLAG 853 /RRB,RCC 854 /CLEAR INTERRUPT EANBLE FOR READER AND PUNCH 855 /SKIP IF PUNCH FLAG = 1 856 /CLEAR FLAG AND BUFFER 857 /LOAD BUFFER AND PUNCH CHARACTER 858 /PCF,PPC 859 860 861 /SKIP IF INTERRUPT ON AND TURN INTERRUPT OFF 862 /TURN INTERRUPT ON 863 /TURN INTERRUPT OFF 864 /SKIP ON INTERRUPT REQUEST 865 /GET FLAGS 866 /RESTORE FLAGS 867 /SKIP ON GREATER THAN FLAGS 868 /CLEAR ALL FLAGS 869 870 *200 871 872 00200 7410 STRT, SKP 873 00201 7602 HLT CLA /INCORRECT PRGNUM 874 00202 7604 LAS /READ SR 875 00203 0177 AND [17 /MASK ALL BUT LAST 4 BITS 876 00204 1176 TAD [-15 877 00205 7540 SMA SZA /VALID PROGRAM? 878 00206 5201 JMP STRT+1 /NO, GO TO ERROR HALT 879 00207 7604 LAS /YES, REREAD SR 880 00210 0177 AND [17 881 00211 3030 DCA PRGNUM 882 00212 1030 TAD PRGNUM /DEVELOP PROGRAM ADDRESS 883 00213 1175 TAD [PRGTAB 884 00214 3113 DCA TEMP 885 00215 1513 TAD I TEMP 886 00216 3240 DCA PRGADR /STORE DEVELOPED ADDRESS 887 00217 4474 INIT, JMS I UMOVE /INITIALIZE INTERRUPT 888 00220 0005 5 /AREAD 889 00221 0001 1 890 00222 7776 -2 891 00223 3113 DCA TEMP /0 TO TEMP 892 00224 4474 JMS I UMOVE /CLEAR WORK AREA 893 00225 0113 TEMP 894 00226 0114 TEMP1 895 00227 7760 -20 896 00230 4475 SETLOC 897 00231 1075 ERRORA 898 00232 7402 7402 899 00233 1174 TAD [177 900 00234 3104 DCA DLYMSK 901 00235 1173 TAD [7640 902 00236 3572 DCA I [STALL+3 903 00237 5640 JMP I .+1 /JMP TO SELECTED 904 00240 0000 PRGADR, 0 /PROGRAM 905 906 00241 7602 SRSET, HLT CLA 907 908 00242 7200 GETRDY, CLA 909 00243 1020 TAD KSTART /SET ADDRESS OF 1ST ROUTINE 910 00244 3117 DCA NXTST /STORE AT NXTST 911 00245 4307 JMS FORWD 912 00246 4476 READSR /READ SR 913 00247 7006 RTL 914 00250 7420 SNL /ROUTINE SELECT? SR1 915 00251 5515 JMP I CURTST /NO, START WITH 1ST RTN 916 00252 4476 READSR /YES 917 00253 0177 AND [TSTMSK 918 00254 7041 CIA 919 00255 1116 TAD RTNNO 920 00256 7650 SNA CLA /IS IT THIS RTN? 921 00257 5515 JMP I CURTST /YES, GO DO IT 922 00260 1117 TAD NXTST /NO 923 00261 7001 IAC /IS THIS LAST RTN? 924 00262 7640 SZA CLA /NO 925 00263 5245 JMP GETRDY+3 926 00264 4447 JMS I XTYPST 927 00265 1560 WRTN 928 00266 7602 INCRTN, HLT CLA /YES, INCORRECT ROUTINE NO 929 00267 5242 JMP GETRDY 930 931 00270 4426 CHAINN, JMS I SHLT 932 00271 4476 READSR /READ SR 933 00272 7006 RTL 934 00273 7630 SZL CLA /ROUTINE SELECT? SR1 935 00274 5242 JMP GETRDY /YES 936 00275 1117 TAD NXTST 937 00276 7001 IAC 938 00277 7640 SZA CLA /LAST ROUTINE? 939 00300 5245 JMP GETRDY+3 /NO 940 00301 4476 READSR 941 00302 7006 RTL 942 00303 7710 SPA CLA /LOOP PROGRAM? SR2 943 00304 5242 JMP GETRDY /YES 944 00305 7402 PRGEND, HLT /END OF PROGRAM HALT 945 00306 5270 JMP CHAINN 946 00307 0000 FORWD, 0 947 00310 7300 CLA CLL 948 00311 1517 TAD I NXTST /GET NEXT RTN NO 949 00312 3116 DCA RTNNO /STORE AT RTNNO 950 00313 2117 ISZ NXTST 951 00314 1117 TAD NXTST /SET CURRENT 952 00315 3113 DCA TEMP /RTN NUMBER 953 00316 2117 ISZ NXTST 954 00317 1117 TAD NXTST /SET CURRENT 955 00320 3115 DCA CURTST /RTN ADDR. 956 00321 1513 TAD I TEMP /SET NEXT 957 00322 3117 DCA NXTST /RTN ADDR. 958 00323 5707 JMP I FORWD 959 00324 0000 CHRCNT, 0 960 00325 4427 JMS I RANDNO /SET RANDOM NUMBER 961 00326 0177 AND [17 /REMOVE EXCESS BITS 962 00327 7450 SNA /0? 963 00330 5325 JMP CHRCNT+1 /YES, REPEAT 964 00331 7041 CIA /COMPLEMENT 965 00332 5724 JMP I CHRCNT /EXIT. 966 00333 0000 SHALT, 0 967 00334 4476 READSR /READ SR 968 00335 7700 SMA CLA /HALT? (SR0) 969 00336 5733 JMP I SHALT 970 00337 1116 TAD RTNNO 971 00340 7402 HLT /UNCONDITIONAL HALT 972 00341 5733 JMP I SHALT /EXIT.S/-10L 973 PAGE 974 00400 0000 STCTR, 0 975 00401 7200 CLA 976 00402 1600 TAD I STCTR /GET CTR ADDR 977 00403 3113 DCA TEMP /AND SAVE AT TEMP 978 00404 2200 ISZ STCTR 979 00405 1600 TAD I STCTR /GET COUNT AND 980 00406 3513 DCA I TEMP /STORE PER C(TEMP) 981 00407 2200 ISZ STCTR 982 00410 5600 JMP I STCTR /EXIT 983 00411 0000 DLYMS, 0 984 00412 7300 CLA CLL 985 00413 1021 TAD DELAYM /GET MS COUNT 986 00414 3120 DCA MSCTR /STORE IN MSCTR 987 00415 5616 JMP I .+1 988 00416 0417 .+1 989 00417 1106 TAD MIL1 /GET 1 MS CONSTANT 990 00420 3121 DCA MILCTR /STORE IN MILCTR 991 00421 2121 ISZ MILCTR /DELAYED 1 MSEC? 992 00422 5221 JMP .-1 993 00423 2120 ISZ MSCTR /DONE DELAYING? 994 00424 5217 JMP .-5 995 00425 5611 JMP I DLYMS /EXIT 996 997 /PUNCH/PRINT ONE CHARACTER SUBROUTINE (CHAR IN AC) 998 00426 0000 PUNCH, 0 999 00427 2126 ISZ PFLAG /SET PFLAG 1000 00430 6046 TLS /PUNCH PRINT 1001 00431 7200 CLA 1002 00432 1126 TAD PFLAG 1003 00433 7640 SZA CLA /FLAG RESET? 1004 00434 7410 SKP 1005 00435 5240 JMP .+3 /YES 1006 00436 6041 TSF /DONE PRINTING? 1007 00437 5232 JMP .-5 /NO 1008 00440 6042 TCF /YES, RESET PRINTER FLAG 1009 00441 3126 DCA PFLAG /RESET FLAG 1010 00442 5626 JMP I PUNCH 1011 00443 0000 RDSR, 0 1012 00444 7604 LAS 1013 00445 0105 AND SRMSK 1014 00446 5643 JMP I RDSR 1015 / 1016 /RANDOM NUMBER GENERATOR SUBROUTINE 1017 00447 0000 RANGEN, 0 1018 00450 7200 CLA 1019 00451 1311 TAD RANTND 1020 00452 1276 TAD RANDEX 1021 00453 7640 SZA CLA 1022 00454 5264 JMP RANTAD 1023 00455 1300 TAD RANTBL 1024 00456 3276 DCA RANDEX 1025 00457 1277 TAD RANCON 1026 00460 7104 CLL RAL 1027 00461 7430 SZL 1028 00462 7001 IAC 1029 00463 3277 DCA RANCON 1030 00464 1277 RANTAD, TAD RANCON 1031 00465 1676 TAD I RANDEX 1032 00466 3676 DCA I RANDEX 1033 00467 1312 TAD RANSAV 1034 00470 7010 RAR 1035 00471 1676 TAD I RANDEX 1036 00472 2276 ISZ RANDEX 1037 00473 3312 DCA RANSAV 1038 00474 1312 TAD RANSAV 1039 00475 5647 JMP I RANGEN 1040 00476 0511 RANDEX, RANTND 1041 00477 6543 RANCON, 6543 1042 00500 0501 RANTBL, .+1 1043 00501 6543 6543 1044 00502 3210 3210 1045 00503 0765 0765 1046 00504 5432 5432 1047 00505 2107 2107 1048 00506 7654 7654 1049 00507 4321 4321 1050 00510 1076 1076 1051 00511 7267 RANTND, -. 1052 00512 0000 RANSAV, 0 1053 / 1054 /SUBROUTINE TO GENERATE RANDOM DELAY COUNT 1055 / 1056 00513 0000 DLCNT, 0 1057 00514 4427 JMS I RANDNO /GO GENERATE RANDOM NUMBER 1058 00515 0174 AND [177 /MASK OUT UNDESIRED BITS 1059 00516 7041 CIA /2'S COMPLEMENT IT 1060 00517 3021 DCA DELAYM 1061 00520 5713 JMP I DLCNT /EXIT 1062 / 1063 /SUBROUTINE TO COMPARE C(AC) TO CONTENTS STORED AT CALL+1 1064 / 1065 00521 0000 CHCK, 0 1066 00522 3335 DCA WCHK /STORE AC AT WCHK 1067 00523 1721 TAD I CHCK /GET COMPARE DATE 1068 00524 7041 CIA /2'S COMPLEMENT IT 1069 00525 1335 TAD WCHK /ADD C(WCHK) 1070 00526 2321 ISZ CHCK /SET UP FOR UNEQUAL 1071 00527 7640 SZA CLA /EQUAL (AC=0) 1072 00530 5333 JMP .+3 /NO 1073 00531 2321 ISZ CHCK /YES, SET UP FOR EQUAL 1074 00532 5721 JMP I CHCK /EQUAL EXIT 1075 00533 1335 TAD WCHK /RESTORE AC 1076 00534 5721 JMP I CHCK /UNEQUAL EXIT 1077 00535 0000 WCHK, 0 1078 1079 / 1080 /SUBROUTINE TO MOVE VARIABLE LENGTH DATA FIELDS 1081 / 1082 00536 0000 MOVE, 0 1083 00537 7200 CLA 1084 00540 1736 TAD I MOVE /GET "FROM ADDR" AND 1085 00541 3361 DCA FADDR /STORE AT FADDR 1086 00542 2336 ISZ MOVE 1087 00543 1736 TAD I MOVE /GET "TO ADDR" AND 1088 00544 3362 DCA TADDR /STORE AT TADDR 1089 00545 2336 ISZ MOVE 1090 00546 1736 TAD I MOVE /GET "MOVE COUNT" AND 1091 00547 3363 DCA MCTR /STORE AT MCTR 1092 00550 2336 ISZ MOVE /SET UP FOR EXIT 1093 00551 7200 MOVEA, CLA 1094 00552 1761 TAD I FADDR /GET "FROM" WORD 1095 00553 3762 DCA I TADDR /STORE AT "TO" LOCATION 1096 00554 2361 ISZ FADDR /+1 TO "FROM" ADDR 1097 00555 2362 ISZ TADDR /+1 TO "TO" LOCATION 1098 00556 2363 ISZ MCTR /ALL WORDS MOVED? 1099 00557 5351 JMP MOVEA /NO, GO MOVE AGAIN 1100 00560 5736 JMP I MOVE /YES, EXIT 1101 00561 0000 FADDR, 0 1102 00562 0000 TADDR, 0 1103 00563 0000 MCTR, 0 1104 1105 PAGE 1106 1107 00600 0000 CRLF, 0 1108 00601 7200 CLA /CRLF SUBROUTINE 1109 00602 1600 TAD I CRLF /GET NUMBER OF CRLF'S 1110 00603 3215 DCA CRCTR /AND SAVE 1111 00604 2200 ISZ CRLF 1112 00605 4447 JMS I XTYPST /GO CRLF 1113 00606 0612 .+4 1114 00607 2215 ISZ CRCTR /ALL DONE? 1115 00610 5205 JMP .-3 /NO 1116 00611 5600 JMP I CRLF /YES, EXIT 1117 00612 0015 0015 /CR 1118 00613 0012 0012 /LF 1119 00614 0001 0001 /END CODE 1120 00615 0000 CRCTR, 0 1121 00616 0000 TYPSTG, 0 1122 00617 7200 CLA 1123 00620 1616 TAD I TYPSTG /GET AND STORE 1124 00621 3300 DCA TEMQ /INITIAL ADDRESS 1125 00622 3302 DCA FLAG /CLEAR FLAG 1126 00623 2216 ISZ TYPSTG 1127 00624 1700 TSC1, TAD I TEMQ /SET DATA 1128 00625 7012 RTR /ROTATE RIGHT 6 1129 00626 7012 RTR 1130 00627 7012 RTR 1131 00630 4235 JMS TSC2 /GO TYPE CHARACTER 1132 00631 1700 TAD I TEMQ /GET DATA 1133 00632 4235 JMS TSC2 /GO TYPE CHARACTER 1134 00633 2300 ISZ TEMQ /INCR STRING ADDR 1135 00634 5224 JMP TSC1 /GO BACK FOR MORE 1136 00635 0000 TSC2, 0 1137 00636 0171 AND [77 /MASK OFF 6 BITS 1138 00637 3301 DCA TEMR /SAVE CHARACTER 1139 00640 1302 TAD FLAG 1140 00641 7640 SZA CLA /TEST FLAG 1141 00642 5252 JMP TYPSP /SET 1142 00643 1301 TAD TEMR /NOT SET 1143 00644 7450 SNA /ZERO? 1144 00645 5250 JMP .+3 /YES, SET FLAG 1145 00646 4271 TYPAT, JMS PRINT /NO, PRINT IT 1146 00647 5635 JMP I TSC2 /RETURN 1147 00650 2302 ISZ FLAG /SET FLAG 1148 00651 5635 JMP I TSC2 /EXIT 1149 00652 3302 TYPSP, DCA FLAG /CLEAR FLAG 1150 00653 1301 TAD TEMR 1151 00654 7041 CIA 1152 00655 7450 SNA /ZERO? 1153 00656 5246 JMP TYPAT /YES, TYPE "@" 1154 00657 7001 IAC 1155 00660 7650 SNA CLA /IS IT 01? 1156 00661 5616 JMP I TYPSTG /YES, EXIT 1157 00662 1170 TAD [SMA /SMA TO SWITCH 1158 00663 3273 DCA SWITCH 1159 00664 1301 TAD TEMR /GET CHARACTER 1160 00665 4271 JMS PRINT /PRINT IT 1161 00666 1167 TAD [SPA /SPA TO SWITCH 1162 00667 3273 DCA SWITCH 1163 00670 5635 JMP I TSC2 1164 00671 0000 PRINT, 0 1165 00672 1166 TAD [-40 1166 00673 7510 SWITCH, SPA 1167 00674 1165 TAD [100 1168 00675 1164 TAD [240 1169 00676 4473 JMS I UPUNCH 1170 00677 5671 JMP I PRINT 1171 00700 0000 TEMQ, 0 1172 00701 0000 TEMR, 0 1173 00702 0000 FLAG, 0 1174 1175 / 1176 00703 3023 INTSVC, DCA AC /SAVE AC 1177 00704 7010 RAR 1178 00705 3024 DCA LINK /SAVE LINK 1179 00706 6011 RSF /READER? 1180 00707 5312 JMP .+3 /NO 1181 00710 5711 JMP I .+1 1182 00711 0000 RVCTR, 0 1183 00712 6021 PSF /PUNCH? 1184 00713 5317 JMP .+4 /NO 1185 00714 4563 JMS I [STALL /STALL IF DESIRED 1186 00715 5716 JMP I .+1 1187 00716 0000 PVCTR, 0 1188 00717 6031 KSF /TTY READER/KYBD? 1189 00720 5323 JMP .+3 1190 00721 6032 KCC /YES 1191 00722 5503 OUT /TO MAINLINE 1192 00723 6041 TSF /TTY PRINTER/PUNCH? 1193 00724 5330 JMP .+4 /NO 1194 00725 6042 TCF /YES 1195 00726 3126 DCA PFLAG 1196 00727 5503 OUT /TO MAINLINE 1197 00730 4447 UNEXIT, JMS I XTYPST /PRINT ERROR MESSAGE 1198 00731 1501 UNINT 1199 00732 7602 HLT CLA /HALT, UNEXPECTED INTERRUPT 1200 00733 7300 IOUT, CLA CLL 1201 00734 1024 TAD LINK 1202 00735 7004 RAL /RESTORE LINK 1203 00736 1023 TAD AC /RESTORE AC 1204 00737 6001 ION 1205 00740 5400 JMP I 0 /EXIT INTERRUPT 1206 / 1207 00741 6022 PCHCLR, PCF 1208 00742 5503 OUT 1209 00743 6012 RDRCLR, RRB 1210 00744 5503 OUT 1211 PAGE 1212 1213 01000 0000 ASCCN, 0 /SUBROUTINE TO CONVERT 1214 01001 7200 CLA /A WORD TO PRINTABLE ASCII 1215 01002 1600 TAD I ASCCN 1216 01003 3237 DCA WASC 1217 01004 2200 ISZ ASCCN 1218 01005 1600 TAD I ASCCN 1219 01006 3240 DCA SASC 1220 01007 2200 ISZ ASCCN 1221 01010 1162 TAD [7700 1222 01011 0637 AND I WASC 1223 01012 7112 RTR CLL 1224 01013 7012 RTR 1225 01014 7012 RTR 1226 01015 4224 JMS CNV 1227 01016 2240 ISZ SASC 1228 01017 1162 TAD [7700 1229 01020 7040 CMA 1230 01021 0637 AND I WASC 1231 01022 4224 JMS CNV 1232 01023 5600 JMP I ASCCN 1233 01024 0000 CNV, 0 1234 01025 3241 DCA ASCT 1235 01026 1241 TAD ASCT 1236 01027 7006 RTL 1237 01030 7004 RAL 1238 01031 0161 AND [707 1239 01032 1241 TAD ASCT 1240 01033 0161 AND [707 1241 01034 1160 TAD [6060 1242 01035 3640 DCA I SASC 1243 01036 5624 JMP I CNV 1244 01037 0000 WASC, 0 1245 01040 0000 SASC, 0 1246 01041 0000 ASCT, 0 1247 / 1248 01042 0000 STDLYM, 0 /SET DELAYM SUB 1249 01043 7200 CLA 1250 01044 1642 TAD I STDLYM /SET DELAYM TO 1251 01045 3021 DCA DELAYM /NUMBER SPECIFIED 1252 01046 2242 ISZ STDLYM /AT CALL +1 1253 01047 5642 JMP I STDLYM /EXIT 1254 01050 0000 ERROR, 0 1255 01051 4452 JMS I UASCCN /CONVERT PROGRAM 1256 01052 0030 PRGNUM /NUMBER TO PRINTABLE 1257 01053 1471 PNUMB /OCTAL 1258 01054 4452 JMS I UASCCN /CONVERT ROUTINE 1259 01055 0116 RTNNO /NUMBER TO PRINTABLE 1260 01056 1474 ENUMB /OCTAL 1261 01057 1650 TAD I ERROR /GET ERROR SUFFIX AND 1262 01060 3710 DCA I SFADR /STORE AT SUFX 1263 01061 4447 JMS I XTYPST /PRINT ERROR NUMBER 1264 01062 1466 ERNUMB 1265 01063 2250 ISZ ERROR 1266 01064 1650 TAD I ERROR /GET ADDRESS OF ADDITIONAL 1267 01065 7450 SNA /PRINTOUT. ZERO? 1268 01066 5272 JMP .+4 /YES 1269 01067 3271 DCA .+2 1270 01070 4447 JMS I XTYPST /NO, PRINT IT 1271 01071 0000 0 1272 01072 4476 READSR 1273 01073 0157 AND [SR3MSK 1274 01074 7650 SNA CLA /HALT ON ERROR? (SR3) 1275 01075 7402 ERRORA, HLT /YES 1276 01076 4476 READSR 1277 01077 0156 AND [SR4MSK 1278 01100 7640 SZA CLA /SKIP TEST? (SR4) 1279 01101 5425 JMP I CHAIN /YES 1280 01102 4476 READSR 1281 01103 0165 AND [SR5MSK 1282 01104 7640 SZA CLA /ENTER SCOPE LOOP? (SR5) 1283 01105 2250 ISZ ERROR /YES 1284 01106 2250 ISZ ERROR 1285 01107 5650 JMP I ERROR 1286 01110 1476 SFADR, SUFX 1287 01111 0000 STCTA, 0 /SET CTRA TO 1288 01112 7200 CLA /NUMBER SPECIFIED 1289 01113 1711 TAD I STCTA /AT CALL+1 1290 01114 3122 DCA CTRA 1291 01115 2311 ISZ STCTA 1292 01116 5711 JMP I STCTA /EXIT 1293 01117 0000 STCTB, 0 /SET CTRB TO 1294 01120 7200 CLA /NUMBER SPECIFIED 1295 01121 1717 TAD I STCTB /AT CALL+1 1296 01122 3123 DCA CTRB 1297 01123 2317 ISZ STCTB 1298 01124 5717 JMP I STCTB /EXIT 1299 01125 0000 STALL, 0 /RANDOM STALL SUBROUTINE 1300 01126 4476 READSR 1301 01127 0155 AND [SR6MSK 1302 01130 7640 SZA CLA /STALL? (SR6) 1303 01131 5725 JMP I STALL /NO, EXIT 1304 01132 4476 READSR 1305 01133 0154 AND [SR7MSK 1306 01134 7640 SZA CLA /LOCK ON STALL? (SR7) 1307 01135 7410 SKP /YES 1308 01136 4472 JMS I DLYCNT /NO, RANDOM STALL 1309 01137 1021 TAD DELAYM 1310 01140 7440 SZA 1311 01141 4502 DELAY /STALL 1312 01142 5725 JMP I STALL /EXIT 1313 01143 0000 TCHK, 0 1314 01144 4471 JMS I CHECK /CHECK THAT C(AC) AND C(TSB) ARE 1315 01145 0000 TSB, 0 1316 01146 5351 JMP .+3 /ERROR, NOT EQUAL 1317 01147 2343 ISZ TCHK /EQUAL 1318 01150 5743 JMP I TCHK /OK 1319 01151 3131 DCA TCHKW /STORE BAD CHARACTER 1320 01152 4452 JMS I UASCCN 1321 01153 1145 TSB 1322 01154 1604 SB 1323 01155 4452 JMS I UASCCN 1324 01156 0131 TCHKW 1325 01157 1611 WAS 1326 01160 4451 JMS I UERROR 1327 01161 4040 NOSUF 1328 01162 1601 SBWAS 1329 01163 5743 JMP I TCHK /RETURN 1330 01164 5743 JMP I TCHK /RETURN 1331 PAGE 1332 1333 01200 0000 TREAD, 0 1334 01201 6014 RFC 1335 01202 6011 RSF 1336 01203 5202 JMP .-1 1337 01204 7200 CLA 1338 01205 6012 RRB 1339 01206 5600 JMP I TREAD 1340 01207 0000 TPCH, 0 1341 01210 6026 PLS 1342 01211 6021 PSF 1343 01212 5211 JMP .-1 1344 01213 5607 JMP I TPCH 1345 01214 0000 PLDR, 0 1346 01215 4475 SETLOC /-100 TO PLDRW 1347 01216 1227 PLDRW 1348 01217 7634 -144 1349 01220 7200 CLA 1350 01221 6026 PLS 1351 01222 6021 PSF 1352 01223 5222 JMP .-1 1353 01224 2227 ISZ PLDRW /DONE? 1354 01225 5220 JMP .-5 /NO 1355 01226 5614 JMP I PLDR /YES, EXIT 1356 01227 0000 PLDRW, 0 1357 / 1358 01230 0000 MARK, 0 1359 01231 4214 JMS PLDR 1360 01232 4500 SETB 1361 01233 7767 -11 1362 01234 4475 SETLOC /MARKER ADDRESS 1363 01235 1246 MARKAD /TO MARKAD 1364 01236 1521 MARKER 1365 01237 7200 CLA 1366 01240 1646 TAD I MARKAD /GET MARK 1367 01241 4207 JMS TPCH /PUNCH IT 1368 01242 2246 ISZ MARKAD /UPDATE 1369 01243 2123 ISZ CTRB /DONE? 1370 01244 5237 JMP .-5 /NO 1371 01245 5630 JMP I MARK /YES, EXIT 1372 01246 0000 MARKAD, 0 1373 01247 1233 SEED1, 1233 1374 01250 7622 7622 1375 01251 0000 RANP1, 0 1376 01252 0000 RANP2, 0 1377 01253 0000 RANR1, 0 1378 01254 0000 RANR2, 0 1379 01255 0000 LPRGN, 0 1380 01256 7300 CLL CLA 1381 01257 1251 TAD RANP1 1382 01260 7006 RTL 1383 01261 1252 TAD RANP2 1384 01262 3251 DCA RANP1 1385 01263 1251 TAD RANP1 1386 01264 7006 RTL 1387 01265 1252 TAD RANP2 1388 01266 7006 RTL 1389 01267 3252 DCA RANP2 1390 01270 1251 TAD RANP1 1391 01271 0153 AND [PTMSK 1392 01272 5655 JMP I LPRGN 1393 01273 0000 LRRGN, 0 1394 01274 7300 CLL CLA 1395 01275 1253 TAD RANR1 1396 01276 7006 RTL 1397 01277 1254 TAD RANR2 1398 01300 3253 DCA RANR1 1399 01301 1253 TAD RANR1 1400 01302 7006 RTL 1401 01303 1254 TAD RANR2 1402 01304 7006 RTL 1403 01305 3254 DCA RANR2 1404 01306 1253 TAD RANR1 1405 01307 0153 AND [PTMSK 1406 01310 5673 JMP I LRRGN 1407 01311 0000 SYNK, 0 1408 01312 4466 JMS I INPATT 1409 01313 4455 JMS I UTREAD /READ CHARACTER 1410 01314 3110 DCA CHR1 /STORE AT CHR1 1411 01315 4455 JMS I UTREAD /READ CHARACTER 1412 01316 3111 DCA CHR2 /STORE AT CHR2 1413 01317 4455 JMS I UTREAD /READ CHAR 1414 01320 3112 DCA CHR3 /STORE 1415 01321 4465 JMS I SYNCA /GO SYNC 1416 01322 5312 JMP SYNK+1 /NO SYNC, TRY AGAIN 1417 01323 5711 JMP I SYNK /SYNCED, EXIT 1418 01324 0000 SYNKA, 0 1419 01325 4475 SETLOC /-512 TO CTSK 1420 01326 1363 CTSK 1421 01327 7000 -1000 1422 01330 4475 SETLOC /SET CTSK1 1423 01331 1364 CTSK1 /TO -10 1424 01332 7766 -12 1425 01333 4467 JMS I GETPT /GET BIN CHARACTER 1426 01334 7040 CMA 1427 01335 0110 AND CHR1 /SAME AS CHR1? 1428 01336 7440 SZA 1429 01337 5333 JMP .-4 /NO 1430 01340 4467 JMS I GETPT /YES, GET ANOTHER BIN CHAR 1431 01341 7040 CMA 1432 01342 0111 AND CHR2 1433 01343 7450 SNA /SAME AS CHR2? 1434 01344 5351 JMP SYNKC /YES 1435 01345 2363 ISZ CTSK /NO, 512 TIMES? 1436 01346 5330 JMP SYNKA+4 /NO 1437 01347 7602 SYNKB, HLT CLA /YES, SYNC ERROR 1438 01350 5724 JMP I SYNKA /TRY AGAIN 1439 01351 4467 SYNKC, JMS I GETPT /GET LINE CHARACTER 1440 01352 7040 CMA 1441 01353 0112 AND CHR3 /SAME AS CHR3? 1442 01354 7440 SZA 1443 01355 5360 JMP .+3 /NO 1444 01356 2324 ISZ SYNKA /YES 1445 01357 5724 JMP I SYNKA /EXIT 1446 01360 2364 ISZ CTSK1 /DONE 10 TIMES? 1447 01361 5330 JMP SYNKA+4 /NO 1448 01362 5347 JMP SYNKB /YES, SYNC ERROR 1449 01363 0000 CTSK, 0 1450 01364 0000 CTSK1, 0 1451 PAGE 1452 1453 01400 0000 INITPT, 0 /INITIALIZE BINARY 1454 01401 7201 CLA IAC /PATTERN ROUTINES 1455 01402 3260 DCA PT0 1456 01403 4474 JMS I UMOVE 1457 01404 1460 PT0 1458 01405 1461 PT1 1459 01406 7775 -3 1460 01407 3264 DCA RIND 1461 01410 3265 DCA PIND 1462 01411 5600 JMP I INITPT 1463 01412 0000 GETPTT, 0 /BINARY COUNT PATTERN 1464 01413 7200 CLA /ROUTINE SPECIAL 1465 01414 1260 TAD PT0 1466 01415 3261 DCA PT1 1467 01416 1264 TAD RIND 1468 01417 7040 CMA 1469 01420 3264 DCA RIND 1470 01421 1264 TAD RIND 1471 01422 7650 SNA CLA 1472 01423 5227 JMP .+4 1473 01424 1261 TAD PT1 1474 01425 7040 CMA 1475 01426 5231 JMP .+3 1476 01427 1261 TAD PT1 1477 01430 7041 CIA 1478 01431 0153 AND [PTMSK 1479 01432 3260 DCA PT0 1480 01433 1261 TAD PT1 1481 01434 5612 JMP I GETPTT 1482 01435 0000 GTPTRP, 0 /BINARY COUNT PATTERN 1483 01436 7200 CLA /ROUTINE 1484 01437 1262 TAD PT2 1485 01440 3263 DCA PT3 1486 01441 1265 TAD PIND 1487 01442 7040 CMA 1488 01443 3265 DCA PIND 1489 01444 1265 TAD PIND 1490 01445 7650 SNA CLA 1491 01446 5252 JMP .+4 1492 01447 1263 TAD PT3 1493 01450 7040 CMA 1494 01451 5254 JMP .+3 1495 01452 1263 TAD PT3 1496 01453 7041 CIA 1497 01454 0153 AND [PTMSK 1498 01455 3262 DCA PT2 1499 01456 1263 TAD PT3 1500 01457 5635 JMP I GTPTRP 1501 01460 0000 PT0, 0 1502 01461 0000 PT1, 0 1503 01462 0000 PT2, 0 1504 01463 0000 PT3, 0 1505 01464 0000 RIND, 0 1506 01465 0000 PIND, 0 1507 01466 0015 ERNUMB, 0015 /CR 1508 01467 0012 0012 /LF 1509 01470 5220 5220 /*,P 1510 01471 4040 PNUMB, 4040 1511 01472 4040 4040 1512 01473 4022 4022 /SP,R 1513 01474 4040 ENUMB, 4040 1514 01475 4040 4040 1515 01476 4040 SUFX, 4040 1516 01477 4040 4040 /SP,SP 1517 01500 0001 0001 /END CODE 1518 01501 0015 UNINT, 0015 /CR 1519 01502 0012 0012 /LF 1520 01503 0007 0007 /BELL 1521 01504 4025 4025 /SP,U 1522 01505 1605 1605 /N,E 1523 01506 3020 3020 /X,P 1524 01507 0503 0503 /E,C 1525 01510 2405 2405 /T,E 1526 01511 0440 0440 /D,SP 1527 01512 1116 1116 /I,N 1528 01513 2405 2405 /T,E 1529 01514 2222 2222 /R,R 1530 01515 2520 2520 /U,P 1531 01516 2456 2456 /T,. 1532 01517 0015 0015 /CR 1533 01520 0001 0001 /END CODE 1534 01521 0037 MARKER, 0037 1535 01522 0040 0040 1536 01523 0040 0040 1537 01524 0037 0037 1538 01525 0000 0000 1539 01526 0077 0077 1540 01527 0011 0011 1541 01530 0011 0011 1542 01531 0006 0006 1543 01532 0015 RSPD, 0015 /CR 1544 01533 0012 0012 /LF 1545 01534 4022 4022 /SP,R 1546 01535 0422 0422 /D,R 1547 01536 4023 4023 /SP,S 1548 01537 2005 2005 /P,E 1549 01540 0504 0504 /E,D 1550 01541 4000 4000 /SP 1551 01542 0100 0100 /END CODE 1552 01543 0015 PSPD, 0015 /CR 1553 01544 0012 0012 /LF 1554 01545 4020 4020 /SP,P 1555 01546 0310 0310 /C,H 1556 01547 4023 4023 /SP,S 1557 01550 2005 2005 /P,E 1558 01551 0504 0504 /E,D 1559 01552 4000 4000 /SP 1560 01553 0100 0100 /END CODE 1561 01554 4003 CPS, 4003 /SP,C 1562 01555 2023 2023 /P,S 1563 01556 0015 0015 /CR 1564 01557 0001 0001 /END CODE 1565 01560 0015 WRTN, 0015 /CR 1566 01561 0012 0012 /LF 1567 01562 4000 4000 /SP 1568 01563 0711 0711 /BELL,I 1569 01564 1603 1603 /N,C 1570 01565 1722 1722 /O,R 1571 01566 2205 2205 /R,E 1572 01567 0324 0324 /C,T 1573 01570 4022 4022 /SP,R 1574 01571 2416 2416 /T,N 1575 01572 4023 4023 /SP,S 1576 01573 0514 0514 /E,L 1577 01574 0503 0503 /E,C 1578 01575 2405 2405 /T,E 1579 01576 0456 0456 /D,. 1580 01577 0015 0015 /CR 1581 01600 0001 0001 /END CODE 1582 01601 4023 SBWAS, 4023 /SP,S 1583 01602 5702 5702 /"/",B 1584 01603 4040 4040 /SP,SP 1585 01604 4040 SB, 4040 /SP,SP 1586 01605 4040 4040 /SP,SP 1587 01606 4040 4040 /SP,SP 1588 01607 2701 2701 /W,A 1589 01610 2340 2340 /S,SP 1590 01611 4040 WAS, 4040 /SP,SP 1591 01612 4040 4040 /SP,SP 1592 01613 0015 0015 /CR 1593 01614 0001 0001 /END CODE 1594 01615 0015 TDOMSG, 0015 /CR 1595 01616 0012 0012 /LF 1596 01617 7005 7005 /8,E 1597 01620 4040 4040 /SP,SP 1598 01621 2331 2331 /SY 1599 01622 2324 2324 /ST 1600 01623 0515 0515 /EM 1601 01624 5640 5640 /.,SP 1602 01625 2305 2305 /SE 1603 01626 2440 2440 /T,SP 1604 01627 2411 2411 /TI 1605 01630 1505 1505 /ME 1606 01631 4004 4004 /SP,D 1607 01632 0514 0514 /EL 1608 01633 0131 0131 /AY 1609 01634 4003 4003 /SP,C 1610 01635 1716 1716 /ON 1611 01636 2324 2324 /ST 1612 01637 0116 0116 /AN 1613 01640 2440 2440 /T,SP 1614 01641 1116 1116 /IN 1615 01642 4023 4023 /SP,S 1616 01643 2256 2256 /R,. 1617 01644 0015 0015 /CR 1618 01645 0012 0012 /LF 1619 01646 2205 2205 /RE 1620 01647 0605 0605 /FE 1621 01650 2240 2240 /R,SP 1622 01651 2417 2417 /TO 1623 01652 4020 4020 /SP,P 1624 01653 0107 0107 /AG 1625 01654 0523 0523 /ES 1626 01655 4062 4062 /SP,2 1627 01656 4001 4001 /SP,A 1628 01657 1604 1604 /ND 1629 01660 4063 4063 /SP,3 1630 01661 4017 4017 /SP,O 1631 01662 0640 0640 /F,SP 1632 01663 2022 2022 /PR 1633 01664 0740 0740 /G,SP 1634 01665 1411 1411 /LI 1635 01666 2324 2324 /ST 1636 01667 1116 1116 /IN 1637 01670 0756 0756 /G. 1638 01671 0001 0001 /END 1639 PAGE 1640 1641 /PRGRAM 0, BASIC READER AND READER LOGIC CONTROL TEST 1642 / 1643 02000 4475 PRG0, SETLOC /SET KSTART TO 1644 02001 0020 KSTART /INITIAL ROUTINE 1645 02002 2010 P0T0 /ADDRESS 1646 02003 4475 SETLOC /SET SR MSAK 1647 02004 0105 SRMSK 1648 02005 7717 7717 1649 02006 5607 JMP I .+1 /SET STARTED 1650 02007 0241 SRSET 1651 02010 0000 P0T0, 0 1652 02011 2036 P0T1 1653 /CHECKS THAT FLAG=1 250MS AFTER RFC (IOT014), INDICATING THAT 1654 /READER IS ADVANCING 1655 02012 4477 SETA /-200 TO CTRA 1656 02013 7470 -310 1657 02014 4501 SETDLM /-250 TO DELAY 1658 02015 7406 -372 1659 02016 6014 P0T0A, RFC /CLEAR FLAG, FETCH CHAR (IOT014) 1660 02017 4502 DELAY /DELAY 75MS 1661 02020 6011 RSF /SKIP IF FLAG=1 (IOT011) 1662 02021 5225 JMP P0E0 1663 02022 2122 ISZ CTRA /DONE? 1664 02023 5216 JMP P0T0A /NO, REPEAT 1665 02024 5425 JMP I CHAIN /YES, CHAIN 1666 02025 4451 P0E0, JMS I UERROR /GO TO ERROR SUBROUTINE 1667 02026 4040 NOSUF /NO PRINTOUT SUFFIX 1668 02027 0000 NONE /NO PRINTOUT 1669 02030 5222 JMP P0T0A+4 /CONTINUE TEST 1670 02031 4501 P0T0S, SETDLM /SCOPE LOOP 1671 02032 7764 -14 1672 02033 6014 RFC /FETCH CHAR (IOT014) 1673 02034 4502 DELAY /DELAY 12 MS 1674 02035 5233 JMP .-2 1675 02036 0001 P0T1, 1 1676 02037 2064 P0T2 1677 /WITH FLAG=1, SKIP ON FLAG 4095 TIMES TO CHECK FOR RELIABLE SKIPPING 1678 02040 4477 SETA /-4095 TO CTRA 1679 02041 0001 -7777 1680 02042 6014 RFC /FETCH CHAR (IOT014) 1681 02043 6011 RSF /SKIP ON FLAG (IOT011) 1682 02044 5243 JMP .-1 /REPEAT 1683 02045 6011 P0T1A, RSF /SKIP ON FLAG (IOT011) 1684 02046 5252 JMP P0E1 /ERROR 1685 02047 2122 ISZ CTRA /DONE 4095 TIMES? 1686 02050 5245 JMP P0T1A /NO, REPEAT TEST 1687 02051 5425 JMP I CHAIN /YES, CHAIN 1688 02052 4451 P0E1, JMS I UERROR /GO TO ERROR SUBROUTINE 1689 02053 4040 NOSUF /NO PRINTOUT SUFFIX 1690 02054 0000 NONE /NO PRINTOUT 1691 02055 5247 JMP P0T1A+2 /CONTINUE TEST 1692 02056 6014 P0T1S, RFC /START SCOPE LOOP. FETCH CHAR (IOT014) 1693 02057 6011 RSF /SKIP ON FLAG (IOT011) 1694 02060 5257 JMP .-1 /REPEAT 1695 02061 6011 RSF /SKIP ON FLAG (IOT011) 1696 02062 5261 JMP .-1 /REPEAT 1697 02063 5261 JMP .-2 /REPEAT 1698 02064 0002 P0T2, 2 1699 02065 2105 P0T3 1700 /CHECKS THAT IOT011 DOES NOT SKIP WITH FLAG=0 1701 02066 4477 SETA /-4095 TO CTRA 1702 02067 0001 -7777 1703 02070 6012 RRB /CLEAR FLAG 1704 02071 6011 P0T2A, RSF /SKIP ON FLAG=1 (IOT011) 1705 02072 5302 JMP P0T2OK /OK 1706 02073 4451 P0E2, JMS I UERROR /ERROR, GO TO ERROR SUB 1707 02074 4040 NOSUF /NO PRINTOUT SUFFIX 1708 02075 0000 NONE /NO PRINTOUT 1709 02076 5302 JMP P0T2OK /CONTINUE TEST 1710 02077 6011 P0T2S, RSF /START SCOPE LOOP, SKIP ON FLAG 1711 02100 5277 JMP .-1 /REPEAT 1712 02101 5277 JMP .-2 /REPEAT 1713 02102 2122 P0T2OK, ISZ CTRA /DONE 4095 TIMES? 1714 02103 5271 JMP P0T2A /NO, REPEAT 1715 02104 5425 JMP I CHAIN /YES, CHAIN 1716 / 1717 /ROUTINE TO CHECK FOR SKIP WITH INTERRUPT DISABLED 1718 02105 0003 P0T3, 3 1719 02106 2200 P0T4 1720 02107 1377 TAD (4000 1721 02110 3022 DCA COUNT 1722 02111 1376 TAD (7773 1723 02112 3136 DCA CTR 1724 02113 6002 IOF 1725 02114 7200 CLA 1726 02115 3135 DCA MILLI 1727 02116 2135 ISZ MILLI 1728 02117 5316 JMP .-1 1729 02120 2136 ISZ CTR 1730 02121 5316 JMP .-3 1731 02122 1375 TAD (2260 /4.56 MS CONSTANT 1732 02123 3134 DCA DELTIM 1733 02124 6007 CAF 1734 02125 6014 RCF /READ 1735 02126 4351 JMS TIM 1736 02127 6011 P0T3A, RSF /SKIP IF READER FLAG SET 1737 02130 5337 JMP P0E3 /FLAG DID NOT SET 1738 02131 6010 RPE /ENABLE INTERRUPT 1739 02132 6003 SRQ /SHOULD SKIP HERE IF INT REQ 1740 02133 5337 JMP P0E3 /REPORT ERROR 1741 02134 2022 ISZ COUNT 1742 02135 5311 JMP P0T3+4 1743 02136 5425 JMP I CHAIN 1744 02137 4451 P0E3, JMS I UERROR 1745 02140 4040 NOSUF 1746 02141 0000 NONE 1747 02142 5311 JMP P0T3+4 1748 02143 6002 P0T3S, IOF 1749 02144 6011 RSF 1750 02145 5344 JMP .-1 1751 02146 6011 RSF 1752 02147 5346 JMP .-1 1753 02150 5346 JMP .-2 1754 02151 0000 TIM, 0 1755 02152 2134 ISZ DELTIM 1756 02153 5352 JMP .-1 1757 02154 5751 JMP I TIM 1758 02175 2260 PAGE 02176 7773 02177 4000 1759 1760 / 1761 /ROUTINE TO CHECK THAT INTERRUPT ENABLE CAN BE CLEARED FOR READER 1762 02200 0004 P0T4, 4 1763 02201 2400 P0T5 1764 02202 6002 IOF 1765 02203 1234 TAD R7770 1766 02204 3235 DCA RCNT2 /INIT # OF ITERATIONS 1767 02205 6007 RLOOP, CAF 1768 02206 6010 RPE /ENABLE INTERRUPT 1769 02207 6020 PCE /DISABLE INTERRUPT 1770 02210 6001 ION 1771 02211 6014 RCF /READ 1772 02212 6000 SKON 1773 02213 5224 JMP P0E4 /INTERRUPT NOT ON 1774 02214 6003 SRQ /SKIP IF INT REQ GENERATED 1775 02215 7410 SKP /NO INT REQ 1776 02216 5224 JMP P0E4 /INT REQ GENERATED 1777 02217 2022 ISZ COUNT /RELIABILITY SETUP 1778 02220 5205 P0T4A, JMP RLOOP /CONTINUE 1779 02221 2235 ISZ RCNT2 1780 02222 5205 JMP RLOOP 1781 02223 5425 JMP I CHAIN 1782 02224 4451 P0E4, JMS I UERROR 1783 02225 4040 NOSUF 1784 02226 0000 NONE 1785 02227 5425 JMP I CHAIN 1786 02230 6010 P0T4S, RPE 1787 02231 4502 DELAY 1788 02232 6020 PCE 1789 02233 5230 JMP .-3 1790 02234 7770 R7770, 7770 1791 02235 7770 RCNT2, 7770 1792 PAGE 1793 1794 02400 0005 P0T5, 5 1795 02401 2430 P0T6 1796 /CHECKS IOT012 (RRB) FOR ABILITY TO CLEAR FLAG 1797 02402 4477 SETA /-500 TO CTRA 1798 02403 7014 -764 1799 02404 6014 P0T5A, RFC /FETCH CHAR (IOT014) 1800 02405 6011 RSF /WAIT FOR FLAG=1 1801 02406 5205 JMP .-1 1802 02407 6012 RRB /CLEAR FLAG (IOT012) 1803 02410 6011 RSF /SKIP ON FLAG=1 1804 02411 5225 JMP P0T5B /OK 1805 02412 4451 P0E5, JMS I UERROR /ERROR, GO TO ERROR SUB 1806 02413 4040 NOSUF 1807 02414 0000 NONE 1808 02415 5225 JMP P0T5B /CONTINUE TEST 1809 02416 6014 P0T5S, RFC /START SCOPE LOOP, FETCH CHAR 1810 02417 6011 RSF /WAIT FOR FLAG=1 1811 02420 5217 JMP .-1 1812 02421 6012 RRB /CLEAR FLAG (IOT012) 1813 02422 6011 RSF /SKIP IF FLAG=1 1814 02423 5216 JMP .-5 /NO, IOT012 CLEARED IT, READ AGAIN 1815 02424 5221 JMP .-3 /IOT012 FAILED, REPEAT 1816 02425 2122 P0T5B, ISZ CTRA /DONE? 1817 02426 5204 JMP P0T5A /NO, REPEAT 1818 02427 5425 JMP I CHAIN /YES, CHAIN 1819 1820 02430 0006 P0T6, 6 1821 02431 2600 P0T7 1822 /CHECKS THAT IOT014 CLEARS FLAG 1823 02432 4477 SETA /-500 TO CTRA 1824 02433 7014 -764 1825 02434 6014 RFC /FETCH CLEAR (IOT014) 1826 02435 6011 P0T6A, RSF /WAIT FOR FLAG=1 1827 02436 5235 JMP .-1 1828 02437 6014 RFC /CLEAR FLAG WITH IOT014 1829 02440 6011 RSF /SKIP ON FLAG=1 1830 02441 5253 JMP P0T6B /OK, FLAG IS OFF 1831 02442 4451 P0E6, JMS I UERROR /ERROR, FLAG=1, GO TO ERROR SUB 1832 02443 4040 NOSUF 1833 02444 0000 NONE 1834 02445 5253 JMP P0T6B 1835 02446 4502 P0T6S, DELAY /START SCOPE LOOP, DELAY 20 MS 1836 02447 6014 RFC /FETCH CHAR (IOT014) 1837 02450 6011 RSF /WAIT FOR FLAG=1 1838 02451 5250 JMP .-1 1839 02452 5247 JMP .-3 /GO CLEAR FLAG AND FETCH CHAR 1840 02453 2122 P0T6B, ISZ CTRA /DONE? 1841 02454 5235 JMP P0T6A /NO, REPEAT 1842 02455 5425 JMP I CHAIN /YES, CHAIN 1843 PAGE 1844 1845 1846 02600 0007 P0T7, 7 1847 02601 2637 P0T10 1848 /CHECKS ABILITY TO READ ALL 0'S CHARACTERS 1849 02602 4477 SETA /-500 TO CTRA 1850 02603 7014 -764 1851 02604 6014 P0T7A, RFC /FETCH CHAR (IOT014) 1852 02605 6011 RSF /WAIT FOR FLAG=1 1853 02606 5205 JMP .-1 1854 02607 7200 CLA 1855 02610 6012 RRB /READ BUFFER 1856 02611 3236 DCA P0T7WB /SAVE 1857 02612 1236 TAD P0T7WB 1858 02613 7640 SZA CLA /RESULT 0? 1859 02614 5220 JMP P0E7 /ERROR, DID NOT READ 0'2 CHAR 1860 02615 2122 P0T7B, ISZ CTRA /DONE? 1861 02616 5204 JMP P0T7A /NO, REPEAT 1862 02617 5425 JMP I CHAIN /YES, CHAIN 1863 02620 4452 P0E7, JMS I UASCCN 1864 02621 2635 P0T7WA 1865 02622 1604 SB 1866 02623 4452 JMS I UASCCN 1867 02624 2636 P0T7WB 1868 02625 1611 WAS 1869 02626 4451 JMS I UERROR 1870 02627 4040 NOSUF 1871 02630 1601 SBWAS 1872 02631 5215 JMP P0T7B 1873 02632 7200 P0T7S, CLA 1874 02633 6012 RRB 1875 02634 5232 JMP .-2 1876 02635 0000 P0T7WA, 0000 1877 02636 0000 P0T7WB, 0000 1878 1879 02637 0010 P0T10, 10 1880 02640 2717 P0T11 1881 /CHECKS ABILITY OF READER FLAG TO CAUSE AN INTERRUPT 1882 02641 4475 SETLOC /SET INTERRUPT TO RETURN TO 1883 02642 0002 2 /P0E10A 1884 02643 2654 P0E10A 1885 02644 6032 P0T10A, KCC /CLEAR TTY READER FLAG 1886 02645 6042 TCF /CLEAR TTY PRINTER FLAG 1887 02646 6022 PCF /CLEAR PUNCH FLAG 1888 02647 6012 RRB /CLEAR READER FLAG 1889 02650 6001 ION /ENABLE INTERRUPT 1890 02651 7000 NOP /NO OP 1891 02652 6002 IOF /TURN OFF INTERRUPT 1892 02653 5261 JMP P0T10B 1893 02654 4451 P0E10A, JMS I UERROR /GO TO ERROR SUB 1894 02655 0140 A /SUFFIX A 1895 02656 0000 NONE /NO PRINTOUT 1896 02657 5244 JMP P0T10A /REPEAT TEST 1897 02660 5244 JMP P0T10A /REPEAT TEST 1898 02661 4477 P0T10B, SETA /-4095 TO CTRA 1899 02662 0001 -7777 1900 02663 4475 SETLOC /SET INTERRUPT RETURN TO 1901 02664 0002 2 /P0T10E 1902 02665 2713 P0T10E 1903 02666 6010 RPE /SET INTERRUPT ENABLE 1904 02667 6014 RFC /FETCH CHAR (IOT014) 1905 02670 6011 RSF /WAIT FOR FLAG=1 1906 02671 5270 JMP .-1 1907 02672 6001 P0T10C, ION /ENABLE INTERRUPT 1908 02673 7000 NOP 1909 02674 6002 IOF /TURN OFF INTERRUPT 1910 02675 4451 JMS I UERROR /GO TO ERROR SUB 1911 02676 0240 B /SUFFIX B 1912 02677 0000 NONE 1913 02700 5313 JMP P0T10E /CONTINUE TEST 1914 02701 4475 P0T10S, SETLOC /SET INTERRUPT RETURN TO 1915 02702 0002 2 /P0T10D 1916 02703 2712 P0T10D 1917 02704 6014 RFC /FETCH CLEAR 1918 02705 6011 RSF /WAIT FOR FLAG=1 1919 02706 5305 JMP .-1 1920 02707 6001 ION /ENABLE INTERRUPT 1921 02710 7000 NOP 1922 02711 5307 JMP .-2 1923 02712 5307 P0T10D, JMP .-3 1924 02713 2122 P0T10E, ISZ CTRA /DONE? 1925 02714 5272 JMP P0T10C /NO, REPEAT 1926 02715 6020 PCE /CLEAR INTERRUPT ENABLE 1927 02716 5425 JMP I CHAIN /YES, CHAIN 1928 /STOP DELAY TEST 1929 02717 0011 P0T11, 11 1930 02720 7777 7777 /LAST TEST 1931 02721 4477 SETA /-200 TO CTRA 1932 02722 7470 -310 1933 02723 4373 P0T11A, JMS DLY250 /INITIAL DELAY 1934 02724 4501 SETDLM /-19 TO DELAYM 1935 02725 7755 -23 1936 02726 6014 RFC /FETCH CHAR 1937 02727 6011 RSF /WAIT FOR FLAG 1938 02730 5327 JMP .-1 1939 02731 4502 DELAY /DELAY 19 MS TO CAUSE 1940 02732 6014 RFC /"STOP DELAY" TO FIRE, FETCH CHAR 1941 02733 4502 DELAY /DELAY 19 MORE MS 1942 02734 6011 RSF /CHECK FLAG 1943 02735 5343 JMP P0T11B /FLAG NOT UP, OK 1944 02736 4451 JMS I UERROR /ERROR, FLAG SHOULD NOT BE UP 1945 02737 0140 A /38 MS AFTER "STOP DELAY" 1946 02740 0000 NONE /FIRES 1947 02741 5323 JMP P0T11A /CONTINUE TEST 1948 02742 5355 JMP P0T11S /GO TO SCOPE LOOP 1949 02743 4366 P0T11B, JMS DLY212 /DELAY ADDITIONAL 212 MS 1950 02744 6011 RSF /FLAG UP? 1951 02745 5351 JMP .+4 /NO, ERROR 1952 02746 2122 P0T11C, ISZ CTRA /DONE 500 TIMES? 1953 02747 5323 JMP P0T11A /NO, REPEAT 1954 02750 5425 JMP I CHAIN /YES, CHAIN 1955 02751 4451 JMS I UERROR /ERROR, FLAG NOT UP 250 MS 1956 02752 0240 B /AFTER "STOP DELAY" FIRED 1957 02753 0000 NONE 1958 02754 5346 JMP P0T11C 1959 02755 4501 P0T11S, SETDLM /SET DELAYM FOR 15 MS 1960 02756 7761 -17 1961 02757 6014 RFC /FETCH CHAR 1962 02760 5357 JMP .-1 /FLAG 1? 1963 02761 4502 DELAY /YES DELAY 15 MS 1964 02762 6014 RFC /FETCH CHAR 1965 02763 6011 RSF /WAIT FOR FLAG 1966 02764 5363 JMP .-1 1967 02765 5361 JMP .-4 /REPEAT 1968 02766 0000 DLY212, 0 1969 02767 4501 SETDLM /-212 TO DELAYM 1970 02770 7454 -324 1971 02771 4502 DELAY 1972 02772 5766 JMP I DLY212 1973 02773 0000 DLY250, 0 1974 02774 4501 SETDLM /DELAY 250 MS 1975 02775 7406 -372 1976 02776 4502 DELAY 1977 02777 5773 JMP I DLY250 1978 1979 PAGE 1980 1981 /PROGRAM 1, BASIC PUNCH AND CONTROL LOGIC TEST 1982 / 1983 03000 4475 PRG1, SETLOC /SET KSTART TO 1984 03001 0020 KSTART /INITIAL ROUTINE 1985 03002 3010 P1T0 /ADDRESS 1986 03003 4475 SETLOC 1987 03004 0105 SRMSK 1988 03005 7717 7717 1989 03006 5607 JMP I .+1 /GET STARTED 1990 03007 0241 SRSET 1991 03010 0000 P1T0, 0 1992 03011 3032 P1T1 1993 /CHECKS THAT PSF (IOT021) DOES NOT SKIP WITH FLAG=0 1994 03012 4477 SETA /-4095 TO CTRA 1995 03013 0001 -7777 1996 03014 6022 P1T0A, PCF /CLEAR FLAG 1997 03015 6021 PSF /SKIP IF FLAG=1 1998 03016 5227 JMP P1T0B /NO SKIP, OK 1999 03017 4451 P1E0, JMS I UERROR /SKIP ERROR, GO TO ERROR SUB 2000 03020 4040 NOSUF /NO SUFFIX 2001 03021 0000 NONE /NO PRINTOUT 2002 03022 5227 JMP P1T0B /CONTINUE TEST 2003 03023 6022 P1T0S, PCF /CLEAR FLAG 2004 03024 6021 PSF /SKIP IF FLAG=1 2005 03025 5224 JMP .-1 2006 03026 5224 JMP .-2 2007 03027 2122 P1T0B, ISZ CTRA /DONE? 2008 03030 5214 JMP P1T0A /NO, REPEAT 2009 03031 5425 JMP I CHAIN /YES, CHAIN 2010 03032 0001 P1T1, 1 2011 03033 3063 P1T2 2012 /CHECKS THAT PSF (IOT021) SKIPS WITH FLAG=1 2013 03034 4477 SETA /-4095 TO CTRA 2014 03035 0001 -7777 2015 03036 4501 SETDLM /-4095 TO DELAYM 2016 03037 0001 -7777 2017 03040 7300 CLA CLL 2018 03041 6022 PCF /CLEAR PUNCH FLAG, LOAD BUFFER 2019 03042 6024 PPC /LOAD BUFFER AND PUNCH 2020 03043 4502 DELAY 2021 03044 6021 P1T1A, PSF /SKIP IF FLAG=1, SHOULD BE 1 2022 03045 5251 JMP P1E1 /NO SKIP, ERROR 2023 03046 2122 P1T1B, ISZ CTRA /DONE? 2024 03047 5244 JMP P1T1A /NO, REPEAT 2025 03050 5425 JMP I CHAIN /YES, CHAIN 2026 03051 4451 P1E1, JMS I UERROR /GO TO ERROR SUB 2027 03052 4040 NOSUF 2028 03053 0000 NONE 2029 03054 5246 JMP P1T1B /CONTINUE TEST 2030 03055 7200 P1T1S, CLA 2031 03056 6022 PCF /CLEAR FLAG AND BUFFER 2032 03057 6024 PPC /LOAD AND PUNCH 2033 03060 6021 PSF /SKIP IF FLAG 2034 03061 5260 JMP .-1 2035 03062 5260 JMP .-2 2036 03063 0002 P1T2, 2 2037 03064 3115 P1T3 2038 /CHECKS THAT PCF (IOT022) IS ABLE TO CLEAR FLAG 2039 03065 4477 SETA /-500 TO CTRA 2040 03066 7014 -764 2041 03067 7200 P1T2A, CLA 2042 03070 6026 PLS /CLEAR, LOAD AND PUNCH 2043 03071 6021 PSF /WAIT FOR FLAG 2044 03072 5271 JMP .-1 2045 03073 6022 PCF /CLEAR FLAG (IOT022) 2046 03074 6021 PSF /SKIP IF FLAG=1 2047 03075 5312 JMP P1T2B /NO SKIP OK 2048 03076 4451 P1E2, JMS I UERROR /SKIP ERROR, GO TO ERROR SUB 2049 03077 4040 NOSUF 2050 03100 0000 NONE 2051 03101 5312 JMP P1T2B /CONTINUE TEST 2052 03102 7200 P1T2S, CLA 2053 03103 6026 PLS /CLEAR LOAD AND PUNCH 2054 03104 6021 PSF /WAIT FOR FLAG 2055 03105 5304 JMP .-1 2056 03106 6022 PCF /CLEAR FLAG 2057 03107 6021 PSF /SKIP IF FLAG 2058 03110 5302 JMP .-6 /CLEARED 2059 03111 5306 JMP .-3 /NOT CLEARED 2060 03112 2122 P1T2B, ISZ CTRA /DONE? 2061 03113 5267 JMP P1T2A /NO, REPEAT 2062 03114 5425 JMP I CHAIN /YES, CHAIN 2063 /ROUTINE TO CHECK FOR SKIP WITH INTERRUPT DISABLED 2064 03115 0003 P1T3, 3 2065 03116 3200 P1T4 2066 03117 1377 TAD (4000 2067 03120 3022 DCA COUNT 2068 03121 1376 TAD (7773 2069 03122 3136 DCA CTR 2070 03123 6002 IOF 2071 03124 7200 CLA 2072 03125 3135 DCA MILLI 2073 03126 2135 ISZ MILLI 2074 03127 5326 JMP .-1 2075 03130 2136 ISZ CTR 2076 03131 5326 JMP .-3 2077 03132 1375 TAD (0001 2078 03133 3134 DCA DELTIM 2079 03134 6007 CAF 2080 03135 6024 PPC /PUNCH 2081 03136 4361 JMS TIM1 2082 03137 6021 P1T3A, PSF /SKIP IF PUNCH FLAG 2083 03140 5347 JMP P1E3 2084 03141 6010 RPE /R/P INTERRUPT ON 2085 03142 6003 SRQ /SHOULD SKIP HERE FOR INT REQ 2086 03143 5347 JMP P1E3 /REPORT ERROR 2087 03144 2022 ISZ COUNT 2088 03145 5321 JMP P1T3+4 2089 03146 5425 JMP I CHAIN 2090 03147 4451 P1E3, JMS I UERROR 2091 03150 4040 NOSUF 2092 03151 0000 NONE 2093 03152 5321 JMP P1T3+4 2094 03153 6002 P1T3S, IOF 2095 03154 6021 PSF 2096 03155 5354 JMP .-1 2097 03156 6011 RSF 2098 03157 5356 JMP .-1 2099 03160 5356 JMP .-2 2100 03161 0000 TIM1, 0 /44 MS TIME OUT 2101 03162 2134 ISZ DELTIM 2102 03163 5362 JMP .-1 2103 03164 1374 TAD (0500 2104 03165 3134 DCA DELTIM 2105 03166 2134 ISZ DELTIM 2106 03167 5366 JMP .-1 2107 03170 2134 ISZ DELTIM 2108 03171 5370 JMP .-1 2109 03172 5761 JMP I TIM1 2110 03174 0500 PAGE 03175 0001 03176 7773 03177 4000 2111 2112 /ROUTINE TO CHECK THAT INTERRUPT ENABLE CAN BE CLEARED FOR PUNCH 2113 03200 0004 P1T4, 4 2114 03201 3234 P1T5 2115 03202 6002 IOF 2116 03203 1302 TAD P7770 2117 03204 3301 DCA PCNT2 /INT COUNTER 2118 03205 6007 PLOOP, CAF 2119 03206 6010 RPE /ENABLE INTERRUPT 2120 03207 6020 PCE /CLEAR INTERRUPT 2121 03210 6001 ION 2122 03211 6024 PPC /PUNCH 2123 03212 6000 SKON 2124 03213 5224 JMP P1E4 /ERROR , NO ION 2125 03214 6003 SRQ /SKIP IF INT REQ GENERATED 2126 03215 7410 SKP /NO INT REQ 2127 03216 5224 JMP P1E4 /ERROR, INT REQ GENERATED 2128 03217 2022 ISZ COUNT /RELIABILITY SETUP 2129 03220 5205 P1T4A, JMP PLOOP 2130 03221 2301 ISZ PCNT2 2131 03222 5205 JMP PLOOP 2132 03223 5425 JMP I CHAIN 2133 03224 4451 P1E4, JMS I UERROR 2134 03225 4040 NOSUF 2135 03226 0000 NONE 2136 03227 5425 JMP I CHAIN 2137 03230 6010 P1T4S, RPE 2138 03231 4502 DELAY 2139 03232 6020 PCE 2140 03233 5230 JMP .-3 2141 03234 0005 P1T5, 5 2142 03235 3251 P1T6 2143 /USED TO CHECK ABILITY OF IOT022 TO CLEAR BUFFER. VISUAL CHECK 2144 03236 4477 SETA /-500 TO CTRA 2145 03237 7014 -764 2146 03240 7240 P1T5A, CLA CMA /7777 TO AC 2147 03241 6026 PLS /CLEAR, LOAD AND PUNCH 2148 03242 7200 CLA 2149 03243 6026 PLS /CLEAR BUFFER CONTENTS PRIOR TO PUNCHING 2150 03244 6021 PSF 2151 03245 5244 JMP .-1 2152 03246 2122 ISZ CTRA /DONE? 2153 03247 5240 JMP P1T5A /NO, REPEAT 2154 03250 5425 JMP I CHAIN /YES, CHAIN 2155 03251 0006 P1T6, 6 2156 03252 3265 P1T7 2157 /CHECKS ABILITY OF IOT024 TO SET BUFFER TO 125 AND PUNCH IT 2158 03253 4477 SETA /-500 TO CTRA 2159 03254 7014 -764 2160 03255 7200 P1T6A, CLA 2161 03256 1152 TAD [125 2162 03257 6026 PLS /CLEAR, LOAD AND PUNCH 2163 03260 6021 PSF /WAIT FOR FLAG 2164 03261 5260 JMP .-1 2165 03262 2122 ISZ CTRA /DONE? 2166 03263 5255 JMP P1T6A /NO, REPEAT 2167 03264 5425 JMP I CHAIN /YES, CHAIN 2168 03265 0007 P1T7, 7 2169 03266 3400 P1T10 2170 /CHECKS ABILITY OF IOT024 TO SET BUFFER TO 252 AND PUNCH IT 2171 03267 4477 SETA /-500 TO CTRA 2172 03270 7014 -764 2173 03271 7200 P1T7A, CLA 2174 03272 1151 TAD [252 2175 03273 6026 PLS /CLEAR, LOAD AND PUNCH 2176 03274 6021 PSF /WAIT FOR FLAG 2177 03275 5274 JMP .-1 2178 03276 2122 ISZ CTRA /DONE? 2179 03277 5271 JMP P1T7A /NO, REPEAT 2180 03300 5425 JMP I CHAIN /YES, CHAIN 2181 03301 7770 PCNT2, 7770 2182 03302 7770 P7770, 7770 2183 PAGE 2184 2185 03400 0010 P1T10, 10 2186 03401 7777 7777 /END OF TESTS 2187 /CHECKS ABILITY OF PUNCH FLAG TO CAUSE AN INTERRUPT 2188 03402 4475 SETLOC /SET INTERRUPT RETURN 2189 03403 0002 2 /TO P1E10A 2190 03404 3415 P1E10A 2191 03405 6032 P1T10A, KCC /CLEAR TTY READER 2192 03406 6042 TCF /CLEAR TTY PUNCH 2193 03407 6012 RRB /CLEAR READER 2194 03410 6022 PCF /CLEAR PUNCH 2195 03411 6001 ION /ENABLE INTERRUPT 2196 03412 7000 NOP 2197 03413 6002 IOF /TURN OFF INTERRUPT 2198 03414 5222 JMP P1T10B 2199 03415 4451 P1E10A, JMS I UERROR 2200 03416 0140 A 2201 03417 0000 NONE 2202 03420 5205 JMP P1T10A 2203 03421 5205 JMP P1T10A 2204 03422 4477 P1T10B, SETA /-4095 TO CTRA 2205 03423 0001 -7777 2206 03424 4475 SETLOC /SET INTERRUPT RETURN 2207 03425 0002 2 /TO P1T10E 2208 03426 3456 P1T10E 2209 03427 7200 CLA 2210 03430 6010 RPE /SET INTERRUPT ENABLE 2211 03431 6026 PLS /CLEAR, LOAD AND PUNCH 2212 03432 6021 PSF /WAIT FOR FLAG 2213 03433 5232 JMP .-1 2214 03434 6001 P1T10C, ION 2215 03435 7000 NOP 2216 03436 6002 IOF 2217 03437 4451 P1E10B, JMS I UERROR 2218 03440 0240 B 2219 03441 0000 NONE 2220 03442 5256 JMP P1T10E 2221 03443 4475 P1T10S, SETLOC /SET INTERRUPT RETURN 2222 03444 0002 2 /TO P1T10D 2223 03445 3455 P1T10D 2224 03446 7200 CLA 2225 03447 6026 PLS /CLEAR, LOAD AND PUNCH 2226 03450 6021 PSF /WAIT FOR FLAG 2227 03451 5250 JMP .-1 2228 03452 6001 ION /ENABLE INTERRUPT 2229 03453 7000 NOP 2230 03454 5252 JMP .-2 2231 03455 5252 P1T10D, JMP .-3 2232 03456 2122 P1T10E, ISZ CTRA /DONE? 2233 03457 5234 JMP P1T10C /NO, REPEAT 2234 03460 6020 PCE /CLEAR INTERRUPT ENABLE 2235 03461 5425 JMP I CHAIN /YES, CHAIN 2236 /PROGRAM 2, READER TEST, SPECIAL BINARY COUNT PATTERN 2237 03462 4475 PRG2, SETLOC /SET SR 2238 03463 0105 SRMSK /MASK TO 2239 03464 0460 0460 /0460 2240 03465 4464 P2A, JMS I SYNC /SYNC READER 2241 03466 4477 SETA 2242 03467 7773 -5 2243 03470 4463 P2B, JMS I CRCNT /GET RANDOM CHAR 2244 03471 3123 DCA CTRB /COUNT IN CTRB 2245 03472 4467 P2C, JMS I GETPT /GET BINARY CHAR 2246 03473 3462 DCA I UTSB /STORE IT 2247 03474 4455 JMS I UTREAD /GO READ CHAR 2248 03475 4461 JMS I UTCHK /GO CHECK IT 2249 03476 5303 JMP P2E /ERROR 2250 03477 2123 P2D, ISZ CTRB /GROUP DONE? 2251 03500 5272 JMP P2C /NO 2252 03501 4563 JMS I [STALL /YES, STALL 2253 03502 5270 JMP P2B /REPEAT 2254 03503 2122 P2E, ISZ CTRA /5 ERRORS? 2255 03504 5277 JMP P2D /NO, CONTINUE 2256 03505 5265 JMP P2A /RESYNC 2257 / 2258 /PROGRAM 3, PUNCH TEST, SPECIAL BINARY COUNT PATTERN 2259 03506 4460 PRG3, JMS I UMARK /MARK TAPE 2260 03507 4457 JMS I UPLDR /PUNCH LEADER 2261 03510 4466 JMS I INPATT /INITIALIZE BINARY PATTERN 2262 03511 1150 TAD [60 2263 03512 3105 DCA SRMSK 2264 03513 4467 P3A, JMS I GETPT /GET BINARY CHAR 2265 03514 4456 JMS I UTPCH /PUNCH IT 2266 03515 4563 JMS I [STALL 2267 03516 5313 JMP P3A 2268 /PROGRAM 4, PUNCH VERIFY, SPECIAL BINARY COUNT PATTERN 2269 03517 4466 PRG4, JMS I INPATT /INITIALIZE BINARY PATTERN 2270 03520 4475 SETLOC /400 TO 2271 03521 0105 SRMSK /TO SR MASK 2272 03522 0400 0400 2273 03523 4467 JMS I GETPT /GET BINARY CHAR 2274 03524 3462 DCA I UTSB /STORE IT 2275 03525 4455 JMS I UTREAD /READ CHARACTER 2276 03526 7440 SZA /ZERO? 2277 03527 5334 JMP P4B /NO 2278 03530 5325 JMP .-3 /YES, REPEAT READ 2279 03531 4467 P4A, JMS I GETPT /GET BINARY CHAR 2280 03532 3462 DCA I UTSB /STORE IT 2281 03533 4455 JMS I UTREAD /READ CHAR 2282 03534 4461 P4B, JMS I UTCHK /GO CHECK IT 2283 03535 7000 NOP 2284 03536 5331 JMP P4A /REPEAT 2285 /PROGRAM 5, PUNCH TEST, RANDOM CHARACTER PATTERN 2286 03537 4460 PRG5, JMS I UMARK /MARK TAPE 2287 03540 4457 JMS I UPLDR /PUNCH LEADER 2288 03541 4474 JMS I UMOVE /INITIALIZE RANDOM 2289 03542 1247 SEED1 /CHARACTER ROUTINE 2290 03543 1251 RANP1 2291 03544 7774 -4 2292 03545 1150 TAD [60 2293 03546 3105 DCA SRMSK 2294 03547 4453 P5A, JMS I ULPRGN /GET RANDOM CHAR 2295 03550 4456 JMS I UTPCH /PUNCH IT 2296 03551 4563 JMS I [STALL 2297 03552 5347 JMP P5A /REPEAT 2298 /PROGRAM 6, PUNCH VERIFY, RANDOM CHARACTER PATTERN 2299 03553 4474 PRG6, JMS I UMOVE /INITIALIZE RANDOM 2300 03554 1247 SEED1 /CHARACTER ROUTINE 2301 03555 1251 RANP1 2302 03556 7774 -4 2303 03557 4475 SETLOC /400 TO 2304 03560 0105 SRMSK /SR MASK 2305 03561 0400 0400 2306 03562 4454 JMS I ULRRGN /GET RANDOM CHAR 2307 03563 3462 DCA I UTSB /STORE IT 2308 03564 4455 JMS I UTREAD /READ CHAR 2309 03565 7440 SZA /ZERO? 2310 03566 5373 JMP P6B /NO 2311 03567 5364 JMP .-3 2312 03570 4454 P6A, JMS I ULRRGN /GET RANDOM CHAR 2313 03571 3462 DCA I UTSB /STORE IT 2314 03572 4455 JMS I UTREAD /READ CHAR 2315 03573 4461 P6B, JMS I UTCHK /GO CHECK IT 2316 03574 7000 NOP /ERROR 2317 03575 5370 JMP P6A 2318 PAGE 2319 2320 /PROGRAM 7, COMBINES READER-PUNCH TEST, SPECIAL BINARY COUNT PATTERN 2321 03600 4475 PRG7, SETLOC /SET SR MASK TO 0460 2322 03601 0105 SRMSK 2323 03602 0460 0460 2324 03603 4475 SETLOC 2325 03604 0104 DLYMSK 2326 03605 0077 77 2327 03606 4466 JMS I INPATT /INITIALIZE BINARY PATTERN 2328 03607 2133 ISZ ACTIND /SET ACTIVE INDICATOR 2329 03610 4475 SETLOC /SET INTERRUPT 2330 03611 0002 2 /SERVIE ADDRESS 2331 03612 0703 INTSVC 2332 03613 4475 SETLOC /SET PUNCH SERVICE ADDRESS 2333 03614 0716 PVCTR 2334 03615 3624 PBIN 2335 03616 4475 SETLOC /SET READER SERVICE ADDRESS 2336 03617 0711 RVCTR 2337 03620 3671 WNZERO 2338 03621 4246 JMS CPCH /PUNCH CHAR 2339 03622 6001 ION /ENABLE INTERRUPT 2340 03623 5223 JMP . /IDLE 2341 03624 2132 PBIN, ISZ PCHCNT /INCREMENT PUNCH COUNT 2342 03625 1132 TAD PCHCNT /COMPARE PUNCH COUNT 2343 03626 1147 TAD [-144 /TO 100 2344 03627 7710 SPA CLA /GREATER THAN 100? 2345 03630 5233 JMP .+3 /NO, OK 2346 03631 7402 HLT /YES, ERROR HALT 2347 03632 5231 JMP .-1 2348 03633 4246 JMS CPCH /PUNCH BIN CHAR 2349 03634 1127 TAD RBUSY 2350 03635 7640 SZA CLA /READER BUSY? 2351 03636 5503 OUT /YES, EXIT 2352 03637 1132 TAD PCHCNT /GET PUNCH COUNT 2353 03640 1146 TAD [-12 /SUBTRACT SLACK COUNT 2354 03641 7710 SPA CLA /POSITIVE? 2355 03642 5503 OUT /NO, EXIT 2356 03643 6014 RFC /YES, START READER 2357 03644 2127 ISZ RBUSY /SET READER BUSY 2358 03645 5503 OUT /EXIT 2359 03646 0000 CPCH, 0 2360 03647 4470 JMS I GETPTR /GET BIN CHAR 2361 03650 6026 PLS /ENABLE PUNCH 2362 03651 7200 CLA /CLEAR AC 2363 03652 5646 JMP I CPCH /EXIT 2364 03653 0000 CREAD, 0 2365 03654 7200 CLA 2366 03655 6012 RRB /READ CHAR 2367 03656 3131 DCA TCHKW /STORE IT 2368 03657 1132 TAD PCHCNT /GET PUNCH COUNT 2369 03660 1145 TAD [-1 /MINUS 1 2370 03661 3132 DCA PCHCNT /STORE IT 2371 03662 1132 TAD PCHCNT 2372 03663 7640 SZA CLA /0? 2373 03664 5267 JMP .+3 /NO 2374 03665 3127 DCA RBUSY /YES, CLEAR READER BUSY 2375 03666 5653 JMP I CREAD /EXIT 2376 03667 6014 RFC /FETCH NEXT CHAR 2377 03670 5653 JMP I CREAD /EXIT 2378 03671 4253 WNZERO, JMS CREAD /READ CHAR 2379 03672 1131 TAD TCHKW 2380 03673 7650 SNA CLA /IS IT 0? 2381 03674 5503 OUT /YES 2382 03675 4475 SETLOC /SET INTERRUPT SERVICE 2383 03676 0711 RVCTR /TO RBIN 2384 03677 3703 RBIN 2385 03700 4477 SETA /-5 TO CTRA 2386 03701 7773 -5 2387 03702 7410 SKP 2388 03703 4253 RBIN, JMS CREAD /READ CHAR 2389 03704 4467 JMS I GETPT /GET BINARY CHAR 2390 03705 3462 DCA I UTSB 2391 03706 1131 TAD TCHKW /GET CHAR READ 2392 03707 4461 JMS I UTCHK /GO CHECK IT 2393 03710 7410 SKP /ERROR 2394 03711 5503 OUT /NO 2395 03712 2122 ISZ CTRA /5 ERRORS? 2396 03713 5503 OUT /NO, TO MAINLINE 2397 03714 4475 RBINA, SETLOC /YES, SET READER SERVICE 2398 03715 0711 RVCTR /TO RESYNC TAPE 2399 03716 3720 .+2 2400 03717 5503 OUT 2401 03720 4253 JMS CREAD /READ CHAR 2402 03721 1131 TAD TCHKW 2403 03722 3110 DCA CHR1 /STORE 2404 03723 4475 SETLOC /SET READER SERVICE 2405 03724 0711 RVCTR 2406 03725 3727 .+2 2407 03726 5503 OUT 2408 03727 4253 JMS CREAD /READ CHAR 2409 03730 1131 TAD TCHKW 2410 03731 3111 DCA CHR2 2411 03732 4475 SETLOC /SET READER SERVICE 2412 03733 0711 RVCTR 2413 03734 3736 .+2 2414 03735 5503 OUT 2415 03736 4253 JMS CREAD /READ CHAR 2416 03737 1131 TAD TCHKW 2417 03740 3112 DCA CHR3 2418 03741 4465 JMS I SYNCA /GO SYNC 2419 03742 5314 JMP RBINA /SYNC ERROR, TRY AGAIN 2420 03743 4477 SETA /YES, -5 TO CTRA 2421 03744 7773 -5 2422 03745 4475 SETLOC /RESTORE READER SERVICE TO 2423 03746 0711 RVCTR /TO RBIN 2424 03747 3703 RBIN 2425 03750 5503 OUT 2426 PAGE 2427 2428 /PROGRAM 10, READ AMPLIFIER ADJUSTMENT LOOP 2429 04000 4475 PRG10, SETLOC /SET INTERRUPT SERVICE 2430 04001 0002 2 /TO INTSVC 2431 04002 0703 INTSVC 2432 04003 4475 SETLOC /SET PUNCH SERVICE ADDRESS 2433 04004 0716 PVCTR /TO PCHCLR 2434 04005 0741 PCHCLR 2435 04006 4475 SETLOC /SET READER SERVICE ADDRESS 2436 04007 0711 RVCTR /TO AMPRDA 2437 04010 4070 AMPRDA 2438 04011 4475 SETLOC 2439 04012 1075 ERRORA 2440 04013 7000 7000 2441 04014 1144 TAD [NOP 2442 04015 3572 DCA I [STALL+3 2443 04016 3105 DCA SRMSK /0 TO SR MASK 2444 04017 4253 RAMPA, JMS AMPRD /GO READ CHAR 2445 04020 7440 SZA /ZERO? 2446 04021 7410 SKP /NO 2447 04022 4253 RAMPB, JMS AMPRD /GO READ CHAR 2448 04023 7041 CIA 2449 04024 1153 TAD [PTMSK 2450 04025 7640 SZA CLA /ALL 1'S? 2451 04026 5233 JMP RAMPC /NO, ERROR 2452 04027 4253 JMS AMPRD /YES, GO READ 2453 04030 7640 SZA CLA /ZERO? 2454 04031 5242 JMP RAMPD /NO, ERROR 2455 04032 5222 JMP RAMPB /YES, REPEAT 2456 04033 4452 RAMPC, JMS I UASCCN /CONVERT EXPECTED CHAR 2457 04034 4052 RAMPF /TO PRINTABLE ASCII 2458 04035 1604 SB 2459 04036 4452 JMS I UASCCN /CONVERT BAD CHAR TO 2460 04037 4074 RAMPWA /TO PRINTABLE ASCII 2461 04040 1611 WAS 2462 04041 5246 JMP RAMPE 2463 04042 4452 RAMPD, JMS I UASCCN /CONVERT EXPECTED CHAR 2464 04043 4075 RAMPWB /TO PRINTABLE ASCII 2465 04044 1604 SB 2466 04045 5236 JMP RAMPD-4 2467 04046 4451 RAMPE, JMS I UERROR /GO PRINT ERROR 2468 04047 4040 NOSUF 2469 04050 1601 SBWAS 2470 04051 5217 JMP RAMPA /TRY AGAIN 2471 04052 0377 RAMPF, 377 2472 04053 0000 AMPRD, 0 2473 04054 4501 SETDLM /-75 TO DELAYM 2474 04055 7665 -113 2475 04056 6014 RFC /FETCH CHAR 2476 04057 6001 ION /ENABLE INTERRUPT 2477 04060 4502 DELAY /DELAY 75 MS 2478 04061 6002 IOF 2479 04062 6011 RSF /FLAG 1? 2480 04063 7410 SKP /NO, FLAG DROPPED 2481 04064 5270 JMP AMPRDA /YES 2482 04065 4447 JMS I XTYPST /RING BELL 3 TIMES 2483 04066 4076 BELL3 2484 04067 5217 JMP RAMPA /TRY AGAIN 2485 04070 6012 AMPRDA, RRB 2486 04071 3274 DCA RAMPWA 2487 04072 1274 TAD RAMPWA 2488 04073 5653 JMP I AMPRD 2489 04074 0000 RAMPWA, 0 2490 04075 0000 RAMPWB, 0 2491 04076 0007 BELL3, 0007 /BELL 2492 04077 0007 0007 /BELL 2493 04100 0007 0007 /BELL 2494 04101 0001 0001 /END CODE 2495 / 2496 /PROGRAM 11, PUNCH ANY CHAR IN SR CONTIUOUSLY 2497 04102 7604 PRG11, LAS /READ SR 2498 04103 0153 AND [PTMSK 2499 04104 6026 PLS /PUNCH CHAR 2500 04105 6021 PSF /FLAG 1? 2501 04106 5305 JMP .-1 2502 04107 5301 JMP .-6 /YES, REPEAT 2503 / 2504 /PROGRAM 12, PUNCH 1'S AND 0'S LOOP 2505 04110 4475 PRG12, SETLOC 2506 04111 0105 SRMSK 2507 04112 0075 0075 2508 04113 7240 PRG12A, CLA CMA 2509 04114 0153 AND [PTMSK 2510 04115 4456 JMS I UTPCH /PUNCH ALL 1'S 2511 04116 4563 JMS I [STALL 2512 04117 7200 CLA 2513 04120 4456 JMS I UTPCH /PUNCH ALL 0'S 2514 04121 4563 JMS I [STALL 2515 04122 5313 JMP PRG12A /REPEAT 2516 PAGE 2517 2518 /PROGRAM 13, READER SPEED PRINT LOOP 2519 04200 7200 PRG13, CLA 2520 04201 3123 DCA CTRB /CLEAR CTRB 2521 04202 7604 LAS /READ SR 2522 04203 7104 CLL RAL 2523 04204 7710 SPA CLA /LONG OR SHORT? 2524 04205 1143 TAD [-416 /LONG 2525 04206 1142 TAD [-36 /SHORT 2526 04207 3232 DCA TKN /STORE AT TKN 2527 04210 5220 JMP TSTRL 2528 04211 6014 TSTRD, RFC /START READER 2529 04212 6011 RSF /WAIT FOR 2530 04213 5212 JMP .-1 /FLAG 2531 04214 2122 ISZ CTRA /INCREMENT CTRA 2532 04215 5222 JMP TSTRC 2533 04216 2123 ISZ CTRB /INCREMENT CTRB 2534 04217 7000 NOP 2535 04220 1232 TSTRL, TAD TKN /LOAD CTRA 2536 04221 3122 DCA CTRA 2537 04222 7604 TSTRC, LAS /READ SR 2538 04223 7700 SMA CLA /PRINT SPEED? 2539 04224 5211 JMP TSTRD /NO, CONTINUE 2540 04225 4447 JMS I XTYPST /YES 2541 04226 1532 RSPD 2542 04227 4257 JMS TSTRPC 2543 04230 7402 HLT 2544 04231 5200 JMP PRG13 2545 04232 0000 TKN, OPEN 2546 /PROGRAM 14, PUNCH SPEED PRINT LOOP 2547 04233 7200 PRG14, CLA 2548 04234 3123 DCA CTRB /CLEAR CTRB 2549 04235 5245 JMP TSTPL 2550 04236 6026 TSTPP, PLS 2551 04237 6021 PSF 2552 04240 5237 JMP .-1 2553 04241 2122 ISZ CTRA /60? 2554 04242 5247 JMP TSTPC /NO 2555 04243 2123 ISZ CTRB /YES, INCREMENT CTRB 2556 04244 7000 NOP 2557 04245 1141 TSTPL, TAD [-74 2558 04246 3122 DCA CTRA /LOAD -60 IN CTRA 2559 04247 7604 TSTPC, LAS /READ SR 2560 04250 7700 SMA CLA /PRINT SPEED (AFTER 60 SECONDS) 2561 04251 5236 JMP TSTPP /NO, CONTINUE 2562 04252 4447 JMS I XTYPST /YES 2563 04253 1543 PSPD 2564 04254 4257 JMS TSTRPC 2565 04255 7402 HLT 2566 04256 5233 JMP PRG14 2567 04257 0000 TSTRPC, 0 2568 04260 4265 JMS BDCNV /TYPE C(CTRB) IN DECIMAL 2569 04261 0123 CTRB 2570 04262 4447 JMS I XTYPST /TYPE "CPS" 2571 04263 1554 CPS 2572 04264 5657 JMP I TSTRPC /EXIT 2573 04265 0000 BDCNV, 0 /BINARY TO DECIMAL CONVERT 2574 04266 4475 SETLOC /AND PRINT SUBROUTINE 2575 04267 4331 CNVCTR 2576 04270 7774 -4 2577 04271 1322 TAD ADDRZA /INITIALIZE ARROW 2578 04272 3303 DCA ARROW 2579 04273 1665 TAD I BDCNV /GET AND STORE BINARY 2580 04274 2265 ISZ BDCNV /NUMBER, SORE IT AT VALUE 2581 04275 3330 DCA DIGIT 2582 04276 1730 TAD I DIGIT 2583 04277 3327 DCA VALUE 2584 04300 3330 DCA DIGIT /O TO DIGIT 2585 04301 7100 CLL 2586 04302 1327 TAD VALUE 2587 04303 1323 ARROW, TAD TENPWR 2588 04304 7420 SNL 2589 04305 5311 JMP .+4 2590 04306 2330 ISZ DIGIT 2591 04307 3327 DCA VALUE 2592 04310 5301 JMP ARROW-2 2593 04311 7200 CLA 2594 04312 1330 TAD DIGIT 2595 04313 1140 TAD [260 2596 04314 4473 JMS I UPUNCH 2597 04315 7300 CLA CLL 2598 04316 2303 ISZ ARROW 2599 04317 2331 ISZ CNVCTR 2600 04320 5300 JMP ARROW-3 2601 04321 5665 JMP I BDCNV 2602 04322 1323 ADDRZA, TAD TENPWR 2603 04323 6030 TENPWR, -1750 2604 04324 7634 -144 2605 04325 7766 -12 2606 04326 7777 -1 2607 04327 0000 VALUE, 0 2608 04330 0000 DIGIT, 0 2609 04331 0000 CNVCTR, 0 2610 / 2611 /PROGRAM 15, READ X CHARACTERS, STALL Y MS, LOOP TO ADJUST TIMINGS 2612 04332 7602 PRG15, HLT CLA /HALT TO SET SR 2613 04333 7604 LAS /READ SR 2614 04334 0174 AND [177 /MASK OFF EXCESS BITS 2615 04335 7041 CIA 2616 04336 3021 DCA DELAYM /STORE STALL COUNT 2617 04337 7604 LAS /READ SR 2618 04340 0137 AND [7600 /MASK OFF EXCESS BITS 2619 04341 7106 CLL RTL 2620 04342 7006 RTL 2621 04343 7006 RTL 2622 04344 7041 CIA 2623 04345 3347 DCA .+2 2624 04346 4477 P15A, SETA /-X TO CTRA 2625 04347 0000 0 2626 04350 6014 P15B, RFC /FETCH CHAR 2627 04351 6011 RSF /FLAG 1? 2628 04352 5351 JMP .-1 2629 04353 2122 ISZ CTRA /READ X CHARS? 2630 04354 5350 JMP P15B /NO 2631 04355 4502 DELAY /YES, DELAY Y MS 2632 04356 5333 JMP PRG15+1 /REPEAT 2633 /WOW! I MADE IT... 2634 00137 7600 $ 00140 0260 00141 7704 00142 7742 00143 7362 00144 7000 00145 7777 00146 7766 00147 7634 00150 0060 00151 0252 00152 0125 00153 0377 00154 0020 00155 0040 00156 0200 00157 0400 00160 6060 00161 0707 00162 7700 00163 1125 00164 0240 00165 0100 00166 7740 00167 7510 00170 7500 00171 0077 00172 1130 00173 7640 00174 0177 00175 0031 00176 7763 00177 0017