1 /// 2 / 3 / PDP-8/X PANEL CODE 4 / ======= ===== ==== 5 / 6 / THIS CODE SERVES AS THE FRONT PANEL FOR 7 / THE PDP-8/X SYSTEM. ON RESET THE PROCESSOR COPIES THE 8 / PANEL PROGRAM FROM ROM INTO THE PANEL FIELD OF 9 / MEMORY, AND JMP'S TO THE PANEL PROGRAM AT 0. ON HALTS THE 10 / PROCESSOR JMS'S TO THE PANEL PROGRAM AT 0 (WRITING 11 / OVER THE JMP TO THE INITIALIZATION CODE). 12 / 13 / 01 DGC 03-DEC-1999 14 / 02 DGC 08-APR-2000 15 / 03 DGC 11-MAY-2000 16 / 04 DGC 04-JUN-2000 17 / 05 DGC 20-JUL-2000 18 / 19 /// 20 21 LF=0212 22 CR=0215 23 SP=0240 24 25 PWS=6000 26 PSI=6003 27 PAI=6004 28 PAS=6005 29 PDX=6006 30 PEX=6007 31 32 HRR=6704 33 HWR=6705 34 HRS=6766 35 HWC=6767 36 37 SRST=4 38 NIEN=2 39 40 BSY=200 41 DRDY=100 42 DRQ=10 43 ERR=1 44 LDEV=100 45 RDSEC=40 46 47 *0000 48 49 00000 5402 PC, JMP I XRES 50 00001 5403 JMP I XENT 51 52 00002 0200 XRES, RES 53 00003 0222 XENT, ENT 54 55 *0010 56 57 00010 0000 X0, 0 58 00011 0000 X1, 0 59 00012 0000 X2, 0 60 00013 0000 X3, 0 61 00014 0000 X4, 0 62 00015 0000 X5, 0 63 00016 0000 X6, 0 64 00017 0000 X7, 0 65 66 *0020 67 68 00020 0000 T0, 0 69 00021 0000 T1, 0 70 00022 0000 T2, 0 71 00023 0000 T3, 0 72 00024 0000 T4, 0 73 00025 0000 T5, 0 74 00026 0000 T6, 0 75 00027 0000 T7, 0 76 77 00030 0000 AC, 0 78 00031 0000 L, 0 79 00032 0000 DF, 0 80 00033 0000 CH, 0 81 00034 0000 VAL, 0 82 00035 0000 0 83 00036 0000 ADR, 0 84 00037 0000 0 85 86 PAGE 87 88 / RESET ENTRY POINT 89 / SAVE THE STATE OF THE WHOLE MACHINE, ARRANGE THAT KBD FLAG = 0 AND 90 / TTY FLAG = 1, AND JUMP INTO THE COMMAND PROCESSOR 91 92 00200 7200 RES, CLA 93 00201 3000 DCA PC 94 00202 3030 DCA AC 95 00203 3031 DCA L 96 00204 3032 DCA DF 97 98 00205 6202 CIF 00 / 000 -> IB, 1 -> II 99 00206 6004 PAI / 000 -> IF, 0 -> II 100 00207 6002 IOF 101 102 00210 6032 KCC / CLEAR THE INPUT FLAG 103 00211 7200 CLA / SET THE OUTPUT FLAG BY SENDING 104 00212 6046 TLS / OUT A NUL CHARACTER 105 106 00213 1377 TAD (NIEN) / SET NIEN=1 IN ANY ATTACHED DISK 107 00214 6767 HWC / DISABLING IT'S INTERRUPT 108 109 00215 7200 CLA 110 00216 1376 TAD (MSG1-1) 111 00217 4775 JMS I (PMSG) 112 00220 4774 JMS I (PCR) 113 114 00221 5237 JMP CMD 115 116 / HALT ENTRY POINT 117 / SAVE THE STATE OF THE WHOLE MACHINE, ARRANGE THAT KBD FLAG = 0 AND 118 / TTY FLAG = 1, AND JUMP INTO THE COMMAND PROCESSOR 119 / ARRANGING THAT THE TTY FLAG = 1 IS VERY IMPORTANT, BECAUSE SOMETIMES TTY FLAG = 0 120 / AND NOTHING IS HAPPENING WHICH WILL EVER MAKE TTY FLAG = 1 (THE MAIN LOOP 121 / OF FOCAL IS LIKE THIS; WHEN IT HAS NO OUTPUT IT SETS TTY FLAG = 0 WITH A TCF, AND 122 / NOTES THE FACT THAT TTY OUTPUT CAN BE STARTED IN A MEMORY FLAG), WHICH 123 / WILL HANG THE PANEL AS SOON AS IT TRIES TO TYPE ANYTHING 124 / THIS CODE SIMPLY FORCES KBD FLAG = 0 (WITH A KCC) AND TTY FLAG = 1 (WITH A 125 / TLS OF A NUL), WHICH CAN SMASH OUTPUT IN PROGRESS 126 / IT WOULD BE BETTER TO WAIT FOR A CHARACTER TIME FOR TTY FLAG = 1, AND DO THE 127 / TLS OF THE NUL ONLY IF THE FLAG DOESN'T SET, ASSUMING THAT IT'S NEVER 128 / GOING TO SET IN THIS SITUATION 129 130 00222 3030 ENT, DCA AC 131 00223 7010 RAR 132 00224 3031 DCA L 133 00225 6214 RDF 134 00226 3032 DCA DF 135 136 00227 6032 KCC / CLEAR THE INPUT FLAG 137 00230 7200 CLA / SET THE OUTPUT FLAG BY SENDING 138 00231 6046 TLS / OUT A NUL CHARACTER 139 140 00232 1373 TAD (MSG2-1) 141 00233 4775 JMS I (PMSG) 142 00234 1000 TAD PC 143 00235 4772 JMS I (POCT) 144 00236 4774 JMS I (PCR) 145 146 / PRINT THE PROMPT, GET A CHARACTER, AND SEE IF IT'S A GOOD COMMAND 147 / IF SO, CALL THE COMMAND PROCESSING ROUTINE 148 / COMMAND PROCESSING ROUTINES RETURN JMS+1 ON ERRORS, AND JMS+2 IF EVERYTHING 149 / SEEMS TO OK (IT'S THE JOB OF THE COMMAND PROCESSOR TO CHECK FOR 150 / A CR AT THE END OF THE LINE AND ECHO IT) 151 152 00237 1371 CMD, TAD (MSG4-1) 153 00240 4775 JMS I (PMSG) 154 155 00241 4770 JMS I (GCH) 156 00242 1033 TAD CH / BLANK LINES ARE 157 00243 1367 TAD (-CR) / SPECIAL BECAUSE WE DON'T 158 00244 7650 SNA CLA / WANT TO ECHO AND 159 00245 5272 JMP CMD4 / READ PAST THE CARRIAGE RETURN 160 161 00246 1366 TAD (CMDT-1) 162 00247 3010 DCA X0 163 164 00250 1410 CMD1, TAD I X0 165 00251 7450 SNA 166 00252 5270 JMP CMD3 167 00253 1033 TAD CH 168 00254 7650 SNA CLA 169 00255 5260 JMP CMD2 170 00256 2010 ISZ X0 171 00257 5250 JMP CMD1 172 173 00260 1033 CMD2, TAD CH 174 00261 4765 JMS I (PCH) 175 00262 4770 JMS I (GCH) 176 177 00263 1410 TAD I X0 178 00264 3020 DCA T0 179 00265 4420 JMS I T0 180 00266 5270 JMP CMD3 181 00267 5237 JMP CMD 182 183 00270 1364 CMD3, TAD (MSG5-1) 184 00271 4775 JMS I (PMSG) 185 186 00272 4774 CMD4, JMS I (PCR) 187 00273 5237 JMP CMD 188 189 00274 7477 CMDT, -"A; ACMD 00275 0400 190 00276 7474 -"D; DCMD 00277 0417 191 00300 7473 -"E; ECMD 00301 0445 192 00302 7472 -"F; FCMD 00303 0600 193 00304 7471 -"G; GCMD 00305 0675 194 00306 7467 -"I; ICMD 00307 1000 195 00310 7464 -"L; LCMD 00311 1024 196 00312 7460 -"P; PCMD 00313 1047 197 00314 7456 -"R; RCMD 00315 1200 198 00316 7455 -"S; SCMD 00317 1066 199 00320 7453 -"U; UCMD 00321 1400 200 00322 7450 -"X; XCMD 00323 1423 201 00324 7447 -"Y; YCMD 00325 1600 202 00326 0000 0 203 204 00364 2661 PAGE 00365 2271 00366 0273 00367 7563 00370 2454 00371 2656 00372 2234 00373 2632 00374 2263 00375 2254 00376 2577 00377 0002 205 206 / A [VAL] 207 208 00400 0000 ACMD, 0 209 00401 4777 JMS I (GVAL) 210 00402 5210 JMP ACMD1 211 00403 4776 JMS I (ISCR) 212 00404 5600 JMP I ACMD 213 00405 1034 TAD VAL 214 00406 3030 DCA AC 215 00407 5215 JMP ACMD2 216 00410 4776 ACMD1, JMS I (ISCR) 217 00411 5600 JMP I ACMD 218 00412 1030 TAD AC 219 00413 4775 JMS I (POCT) 220 00414 4774 JMS I (PCR) 221 00415 2200 ACMD2, ISZ ACMD 222 00416 5600 JMP I ACMD 223 224 / D ADR [VAL ...] 225 226 00417 0000 DCMD, 0 227 00420 4777 JMS I (GVAL) 228 00421 5617 JMP I DCMD 229 00422 4773 JMS I (SADR) 230 00423 4777 DCMD1, JMS I (GVAL) 231 00424 5241 JMP DCMD2 232 00425 1037 TAD ADR+1 233 00426 0372 AND (7) 234 00427 7106 CLL RTL 235 00430 7004 RAL 236 00431 1371 TAD (CDF) 237 00432 3233 DCA .+1 238 00433 0000 0 239 00434 1034 TAD VAL 240 00435 6006 PDX 241 00436 3436 DCA I ADR 242 00437 4770 JMS I (IADR) 243 00440 5223 JMP DCMD1 244 00441 4776 DCMD2, JMS I (ISCR) 245 00442 5617 JMP I DCMD 246 00443 2217 ISZ DCMD 247 00444 5617 JMP I DCMD 248 249 / E ADR [LEN] 250 251 00445 0000 ECMD, 0 252 00446 4777 JMS I (GVAL) 253 00447 5645 JMP I ECMD 254 00450 4773 JMS I (SADR) 255 00451 7240 CLA CMA 256 00452 3027 DCA T7 257 00453 4777 JMS I (GVAL) 258 00454 5260 JMP ECMD1 259 00455 1034 TAD VAL 260 00456 7041 CMA IAC 261 00457 3027 DCA T7 262 00460 4776 ECMD1, JMS I (ISCR) 263 00461 5645 JMP I ECMD 264 00462 3026 DCA T6 265 00463 1026 ECMD2, TAD T6 266 00464 1367 TAD (-10) 267 00465 7640 SZA CLA 268 00466 5271 JMP ECMD3 269 00467 4774 JMS I (PCR) 270 00470 3026 DCA T6 271 00471 1026 ECMD3, TAD T6 272 00472 7650 SNA CLA 273 00473 4766 JMS I (PADR) 274 00474 1365 TAD (SP) 275 00475 4764 JMS I (PCH) 276 00476 1037 TAD ADR+1 277 00477 0372 AND (7) 278 00500 7106 CLL RTL 279 00501 7004 RAL 280 00502 1371 TAD (CDF) 281 00503 3304 DCA .+1 282 00504 0000 0 283 00505 6006 PDX 284 00506 1436 TAD I ADR 285 00507 4775 JMS I (POCT) 286 00510 4770 JMS I (IADR) 287 00511 2026 ISZ T6 288 00512 2027 ISZ T7 289 00513 5263 JMP ECMD2 290 00514 4774 JMS I (PCR) 291 00515 2245 ISZ ECMD 292 00516 5645 JMP I ECMD 293 294 00564 2271 PAGE 00565 0240 00566 2224 00567 7770 00570 2210 00571 6201 00572 0007 00573 2216 00574 2263 00575 2234 00576 2200 00577 2400 295 296 / F [IDSS] 297 298 00600 0000 FCMD, 0 299 00601 4777 JMS I (GVAL) 300 00602 5244 JMP FCMD5 301 00603 4776 JMS I (ISCR) 302 00604 5600 JMP I FCMD 303 00605 1034 TAD VAL 304 00606 0375 AND (70) 305 00607 1374 TAD (CIF) 306 00610 3211 DCA FCMD1 307 00611 0000 FCMD1, 0 308 00612 6004 PAI 309 00613 1034 TAD VAL 310 00614 7006 RTL 311 00615 7004 RAL 312 00616 0375 AND (70) 313 00617 1373 TAD (CDF) 314 00620 3221 DCA FCMD2 315 00621 0000 FCMD2, 0 316 00622 6005 PAS 317 00623 1034 TAD VAL 318 00624 7012 RTR 319 00625 7012 RTR 320 00626 7012 RTR 321 00627 0375 AND (70) 322 00630 1374 TAD (CIF) 323 00631 3232 DCA FCMD3 324 00632 0000 FCMD3, 0 325 00633 6004 PAI 326 00634 1034 TAD VAL 327 00635 7012 RTR 328 00636 7010 RAR 329 00637 0375 AND (70) 330 00640 1373 TAD (CDF) 331 00641 3242 DCA FCMD4 332 00642 0000 FCMD4, 0 333 00643 5273 JMP FCMD6 334 00644 4776 FCMD5, JMS I (ISCR) 335 00645 5600 JMP I FCMD 336 00646 6224 RIF 337 00647 7112 CLL RTR 338 00650 7010 RAR 339 00651 1372 TAD ("0) 340 00652 4771 JMS I (PCH) 341 00653 6214 RDF 342 00654 7112 CLL RTR 343 00655 7010 RAR 344 00656 1372 TAD ("0) 345 00657 4771 JMS I (PCH) 346 00660 6234 RIB 347 00661 7112 CLL RTR 348 00662 7010 RAR 349 00663 0370 AND (7) 350 00664 1372 TAD ("0) 351 00665 4771 JMS I (PCH) 352 00666 6234 RIB 353 00667 0370 AND (7) 354 00670 1372 TAD ("0) 355 00671 4771 JMS I (PCH) 356 00672 4767 JMS I (PCR) 357 00673 2200 FCMD6, ISZ FCMD 358 00674 5600 JMP I FCMD 359 360 / G [ADR] 361 362 00675 0000 GCMD, 0 363 00676 4777 JMS I (GVAL) 364 00677 5317 JMP GCMD2 365 00700 1035 TAD VAL+1 366 00701 0370 AND (7) 367 00702 7106 CLL RTL 368 00703 7004 RAL 369 00704 3032 DCA DF 370 00705 1032 TAD DF 371 00706 1374 TAD (CIF) 372 00707 3310 DCA GCMD1 373 00710 0000 GCMD1, 0 374 00711 6004 PAI 375 00712 1034 TAD VAL 376 00713 3000 DCA PC 377 00714 3030 DCA AC 378 00715 3031 DCA L 379 00716 6002 IOF 380 00717 4776 GCMD2, JMS I (ISCR) 381 00720 5675 JMP I GCMD 382 00721 1032 TAD DF 383 00722 1373 TAD (CDF) 384 00723 3324 DCA GCMD3 385 00724 0000 GCMD3, 0 386 00725 1031 TAD L 387 00726 7104 CLL RAL 388 00727 1030 TAD AC 389 00730 6007 PEX 390 00731 5400 JMP I PC 391 392 00767 2263 PAGE 00770 0007 00771 2271 00772 0260 00773 6201 00774 6202 00775 0070 00776 2200 00777 2400 393 394 / I [VAL] 395 396 01000 0000 ICMD, 0 397 01001 4777 JMS I (GVAL) 398 01002 5213 JMP ICMD1 399 01003 4776 JMS I (ISCR) 400 01004 5600 JMP I ICMD 401 01005 6002 IOF / ASSUME VAL[0] = 0 402 01006 1034 TAD VAL 403 01007 7010 RAR 404 01010 7630 SZL CLA 405 01011 6001 ION / VAL[0] = 1 406 01012 5222 JMP ICMD2 407 01013 4776 ICMD1, JMS I (ISCR) 408 01014 5600 JMP I ICMD 409 01015 1375 TAD ("1) 410 01016 6003 PSI 411 01017 1374 TAD ("0-"1) 412 01020 4773 JMS I (PCH) 413 01021 4772 JMS I (PCR) 414 01022 2200 ICMD2, ISZ ICMD 415 01023 5600 JMP I ICMD 416 417 / L [DATA] 418 419 01024 0000 LCMD, 0 420 01025 4777 JMS I (GVAL) 421 01026 5236 JMP LCMD1 422 01027 4776 JMS I (ISCR) 423 01030 5624 JMP I LCMD 424 01031 1034 TAD VAL 425 01032 7010 RAR / VAL[0] TO LINK 426 01033 7210 CLA RAR / VAL[0] TO AC[11], AC[10..00] ZERO 427 01034 3031 DCA L 428 01035 5245 JMP LCMD2 429 01036 4776 LCMD1, JMS I (ISCR) 430 01037 5624 JMP I LCMD 431 01040 1031 TAD L 432 01041 7106 CLL RTL 433 01042 1371 TAD ("0 434 01043 4773 JMS I (PCH) 435 01044 4772 JMS I (PCR) 436 01045 2224 LCMD2, ISZ LCMD 437 01046 5624 JMP I LCMD 438 439 / P [DATA] 440 441 01047 0000 PCMD, 0 442 01050 4777 JMS I (GVAL) 443 01051 5257 JMP PCMD1 444 01052 4776 JMS I (ISCR) 445 01053 5647 JMP I PCMD 446 01054 1034 TAD VAL 447 01055 3000 DCA PC 448 01056 5264 JMP PCMD2 449 01057 4776 PCMD1, JMS I (ISCR) 450 01060 5647 JMP I PCMD 451 01061 1000 TAD PC 452 01062 4770 JMS I (POCT) 453 01063 4772 JMS I (PCR) 454 01064 2247 PCMD2, ISZ PCMD 455 01065 5647 JMP I PCMD 456 457 / S [DATA] 458 459 01066 0000 SCMD, 0 460 01067 4777 JMS I (GVAL) 461 01070 5277 JMP SCMD1 462 01071 4776 JMS I (ISCR) 463 01072 5666 JMP I SCMD 464 01073 1034 TAD VAL 465 01074 6000 PWS 466 01075 7200 CLA 467 01076 5304 JMP SCMD2 468 01077 4776 SCMD1, JMS I (ISCR) 469 01100 5666 JMP I SCMD 470 01101 7404 OSR 471 01102 4770 JMS I (POCT) 472 01103 4772 JMS I (PCR) 473 01104 2266 SCMD2, ISZ SCMD 474 01105 5666 JMP I SCMD 475 476 01170 2234 PAGE 01171 0260 01172 2263 01173 2271 01174 7777 01175 0261 01176 2200 01177 2400 477 478 / R 479 480 / T7 IS WORD 0 481 / T6 IS WORD 1 482 / T5 IS CSUM 483 / T4 IS ADDR 484 485 01200 0000 RCMD, 0 486 01201 4777 JMS I (ISCR) 487 01202 5600 JMP I RCMD 488 489 01203 1376 TAD (CDF) / BY DEFAULT WE LOAD 490 01204 3211 DCA RCMD3 / INTO FIELD 0 491 01205 3024 DCA T4 / AND AT ADDRESS 0000 492 493 01206 4256 RCMD1, JMS RREAD / SKIP LEADER 494 01207 5206 JMP RCMD1 495 496 01210 3025 RCMD2, DCA T5 / INIT OR UPDATE CHECKSUM 497 498 01211 0000 RCMD3, 0 / CDF TO TARGET FIELD 499 500 01212 1033 TAD CH / READ IN 12 BITS 501 01213 3027 DCA T7 / WORTH OF RAW TAPE FRAMES 502 01214 4775 JMS I (GCH) 503 01215 1033 TAD CH 504 01216 3026 DCA T6 505 506 01217 4256 JMS RREAD 507 01220 5236 JMP RCMD6 / DONE IF LEADER 508 509 01221 4247 JMS RPACK / ASSEMBLE 6-BIT HALFWORDS 510 01222 7420 SNL / PACK PUTS 7TH BIT OF FIRST 511 01223 5226 JMP RCMD4 / HALFWORD IN LINK 512 513 01224 3024 DCA T4 / ADDRESS 514 01225 5232 JMP RCMD5 515 516 01226 6006 RCMD4, PDX / DATA 517 01227 3424 DCA I T4 518 01230 2024 ISZ T4 519 01231 7000 NOP 520 521 01232 1025 RCMD5, TAD T5 / ADD THE TWO 522 01233 1027 TAD T7 / HALFWORDS INTO 523 01234 1026 TAD T6 / THE RUNNING CHECKSUM 524 01235 5210 JMP RCMD2 525 526 01236 4247 RCMD6, JMS RPACK / WHEN THE CHECKSUM WORD 527 01237 7041 CIA / IS ADDED TO THE 528 01240 1025 TAD T5 / RUNNING TOTAL THE RESULT SHOULD 529 01241 7450 SNA / BE 0000 530 01242 5245 JMP RCMD7 531 532 01243 4774 JMS I (POCT) / DISPLAY RESIDUE 533 01244 4773 JMS I (PCR) / ON A CHECKSUM ERROR 534 535 01245 2200 RCMD7, ISZ RCMD 536 01246 5600 JMP I RCMD 537 538 01247 0000 RPACK, 0 / ASSEMBLE A 12-BIT WORD 539 01250 1027 TAD T7 540 01251 7106 CLL RTL 541 01252 7006 RTL 542 01253 7006 RTL 543 01254 1026 TAD T6 544 01255 5647 JMP I RPACK 545 546 01256 0000 RREAD, 0 / READ TAPE, CHECKING 547 01257 4775 RREAD1, JMS I (GCH) / FOR LEADER AND FIELD SETTINGS 548 549 01260 1033 TAD CH 550 01261 0372 AND (300) 551 01262 1371 TAD (-200) 552 01263 7510 SPA / GE 200, LEADER OR FIELD 553 01264 2256 ISZ RREAD 554 01265 7750 SPA SNA CLA / GT 200, FIELD 555 01266 5656 JMP I RREAD / R+1 IF LEADER, R+2 IF ORDINARY 556 557 01267 1033 TAD CH / PATCH A CDF INTO THE 558 01270 0370 AND (70) / MAIN LOOP, SO IT WILL BE EXECUTED 559 01271 1376 TAD (CDF) / AT THE RIGHT TIME 560 01272 3211 DCA RCMD3 561 562 01273 5257 JMP RREAD1 563 564 01370 0070 PAGE 01371 7600 01372 0300 01373 2263 01374 2234 01375 2454 01376 6201 01377 2200 565 566 / U ADDR [LEN] 567 568 01400 0000 UCMD, 0 569 01401 4777 JMS I (GVAL) 570 01402 5600 JMP I UCMD 571 01403 4776 JMS I (SADR) 572 01404 7240 CLA CMA 573 01405 3027 DCA T7 574 01406 4777 JMS I (GVAL) 575 01407 5213 JMP UCMD1 576 01410 1034 TAD VAL 577 01411 7041 CMA IAC 578 01412 3027 DCA T7 579 01413 4775 UCMD1, JMS I (ISCR) 580 01414 5600 JMP I UCMD 581 01415 4774 UCMD2, JMS I (PINS) 582 01416 4773 JMS I (IADR) 583 01417 2027 ISZ T7 584 01420 5215 JMP UCMD2 585 01421 2200 ISZ UCMD 586 01422 5600 JMP I UCMD 587 588 / X INST [DATA] 589 590 01423 0000 XCMD, 0 591 01424 4777 JMS I (GVAL) 592 01425 5623 JMP I XCMD 593 01426 1034 TAD VAL 594 01427 3235 DCA XCMD1 595 01430 4777 JMS I (GVAL) 596 01431 3034 DCA VAL 597 01432 4775 JMS I (ISCR) 598 01433 5623 JMP I XCMD 599 01434 1034 TAD VAL 600 01435 0000 XCMD1, 0 601 01436 5243 JMP XCMD2 602 01437 4772 JMS I (POCT) 603 01440 1371 TAD (MSG3-1) 604 01441 4770 JMS I (PMSG) 605 01442 5244 JMP XCMD3 606 01443 4772 XCMD2, JMS I (POCT) 607 01444 4767 XCMD3, JMS I (PCR) 608 01445 2223 ISZ XCMD 609 01446 5623 JMP I XCMD 610 611 01567 2263 PAGE 01570 2254 01571 2646 01572 2234 01573 2210 01574 2000 01575 2200 01576 2216 01577 2400 612 613 / Y 614 615 01600 0000 YCMD, 0 616 01601 4777 JMS I (ISCR) 617 01602 5600 JMP I YCMD 618 619 01603 1376 TAD (SRST) / ASSERT SOFT RESET 620 01604 6767 HWC 621 01605 1375 TAD (-24) / ISZ+JMP IS 3*4*125NS = 1.5US 622 01606 3020 DCA T0 / 20*1.5US = 25US 623 01607 2020 YCMD6, ISZ T0 624 01610 5207 JMP YCMD6 625 01611 6767 HWC / NEGATE SOFT RESET 626 627 01612 6766 YCMD0, HRS / WAIT FOR BSY=0 628 01613 0374 AND (BSY) / WHICH INDICATES THAT THE DISK 629 01614 7440 SZA / HAS FINISHED RESETTING 630 01615 5212 JMP YCMD0 631 632 01616 1373 TAD (NIEN) / DISABLE INTERRUPT 633 01617 6767 HWC / WHICH WAS RE-ENABLED BY RESET 634 635 01620 1372 TAD (LDEV) / DISK 0 636 01621 6765 HWR 60 637 638 01622 6766 YCMD1, HRS / WAIT FOR BSY=0, DRDY=1 639 01623 0374 AND (BSY) 640 01624 7440 SZA 641 01625 5222 JMP YCMD1 642 01626 6766 HRS 643 01627 0372 AND (DRDY) 644 01630 7650 SNA CLA 645 01631 5222 JMP YCMD1 646 647 01632 6755 HWR 50 / READ 1 SEC AT LBA 0 648 01633 6745 HWR 40 / ALREADY L=1 AND A[27..24]=0 649 01634 6735 HWR 30 650 01635 7001 IAC 651 01636 6725 HWR 20 652 01637 1371 TAD (RDSEC) 653 01640 6775 HWR 70 654 655 01641 6766 YCMD2, HRS / WAIT FOR BSY=0 656 01642 0374 AND (BSY) 657 01643 7440 SZA 658 01644 5241 JMP YCMD2 659 660 01645 6774 HRR 70 / READ AND SAVE STATUS 661 01646 3020 DCA T0 662 663 01647 1020 TAD T0 / BAD IF ERR=1 664 01650 0370 AND (ERR) 665 01651 7640 SZA CLA 666 01652 5257 JMP YCMD3 667 668 01653 1020 TAD T0 / BAD IF DRQ=0 669 01654 0367 AND (DRQ) 670 01655 7640 SZA CLA 671 01656 5271 JMP YCMD4 672 673 01657 1020 YCMD3, TAD T0 / ON ERRORS, PRINT THE 674 01660 0366 AND (377) / CONTENTS OF THE STATUS REGISTER 675 01661 4765 JMS I (POCT) / AND THE ERROR REGISTER 676 01662 1364 TAD (SP) 677 01663 4763 JMS I (PCH) 678 01664 6714 HRR 10 679 01665 0366 AND (377) 680 01666 4765 JMS I (POCT) 681 01667 4762 JMS I (PCR) 682 01670 5600 JMP I YCMD 683 684 01671 3020 YCMD4, DCA T0 685 01672 1361 TAD (-400) 686 01673 3021 DCA T1 687 01674 6201 CDF 00 688 689 01675 6704 YCMD5, HRR 00 / COPY 256 WORDS 690 01676 6006 PDX / FROM THE DISK INTO LOCATIONS 691 01677 3420 DCA I T0 / STARTING AT 0.0000 692 01700 2020 ISZ T0 693 01701 2021 ISZ T1 694 01702 5275 JMP YCMD5 695 696 01703 2200 ISZ YCMD / THE BOOT CAN BE 697 01704 5600 JMP I YCMD / STARTED WITH A "G 0" COMMAND 698 699 01761 7400 PAGE 01762 2263 01763 2271 01764 0240 01765 2234 01766 0377 01767 0010 01770 0001 01771 0040 01772 0100 01773 0002 01774 0200 01775 7754 01776 0004 01777 2200 700 701 / PRINT INSTRUCTION 702 / CALLED WITH 0 IN AC, AND THE ADDRESS OF THE INSTRUCTION 703 / WHICH SHOULD BE PRINTED IN ADR+1/ADR+0 704 / RETURN WITH 0 IN AC 705 / USES X0, X1, X2, X3 (AND DEALS WITH THE FACT THAT 706 / POCT SMASHES X0 AND X1) 707 708 02000 0000 PINS, 0 709 710 02001 1037 TAD ADR+1 711 02002 0377 AND (7) 712 02003 7106 CLL RTL 713 02004 7004 RAL 714 02005 1376 TAD (CDF) 715 02006 3207 DCA PINS1 716 02007 0000 PINS1, 0 717 02010 6006 PDX 718 02011 1436 TAD I ADR 719 02012 3013 DCA X3 720 721 02013 4775 JMS I (PADR) 722 02014 1374 TAD (SP) 723 02015 4773 JMS I (PCH) 724 02016 1013 TAD X3 725 02017 4772 JMS I (POCT) 726 727 / THE BULK OF THE WORK IS TABLE DRIVEN 728 / THE INSTRUCTION WORD IS ANDED WITH A MASK, AND THEN 729 / COMPARED WITH A VALUE; IF IT MATCHES THEN 3 ASCII CHARACTERS 730 / ARE OUTPUT, PRECEEDED BY A SPACE 731 732 02020 1371 TAD (PTAB-1) 733 02021 3011 DCA X1 734 02022 1370 TAD (-NPTAB) 735 02023 3012 DCA X2 736 737 02024 1013 PINS2, TAD X3 738 02025 0411 AND I X1 739 02026 1411 TAD I X1 740 02027 7640 SZA CLA 741 02030 5242 JMP PINS3 742 02031 1374 TAD (SP) 743 02032 4773 JMS I (PCH) 744 02033 1411 TAD I X1 745 02034 4773 JMS I (PCH) 746 02035 1411 TAD I X1 747 02036 4773 JMS I (PCH) 748 02037 1411 TAD I X1 749 02040 4773 JMS I (PCH) 750 02041 5245 JMP PINS4 751 752 02042 2011 PINS3, ISZ X1 753 02043 2011 ISZ X1 754 02044 2011 ISZ X1 755 756 02045 2012 PINS4, ISZ X2 757 02046 5224 JMP PINS2 758 759 / IF THE INSTRUCTION IS A MEMORY REFERENCE 760 / INSTRUCTION THE EFFECTIVE ADDRESS NEEDS TO BE PRINTED, PERHAPS 761 / PRECEEDED BY THE INDIRECT ADDRESSING FLAG 762 763 02047 1013 TAD X3 764 02050 0367 AND (6000) 765 02051 1366 TAD (-6000) 766 02052 7650 SNA CLA 767 02053 5304 JMP PINS7 768 769 02054 1013 TAD X3 770 02055 0365 AND (0400) 771 02056 7650 SNA CLA 772 02057 5264 JMP PINS5 773 02060 1374 TAD (SP) 774 02061 4773 JMS I (PCH) 775 02062 1364 TAD ("I) 776 02063 4773 JMS I (PCH) 777 778 02064 1013 PINS5, TAD X3 779 02065 0363 AND (0177) 780 02066 3011 DCA X1 781 02067 1013 TAD X3 782 02070 0362 AND (0200) 783 02071 7650 SNA CLA 784 02072 5277 JMP PINS6 785 02073 1036 TAD ADR 786 02074 0361 AND (7600) 787 02075 1011 TAD X1 788 02076 3011 DCA X1 789 790 02077 1374 PINS6, TAD (SP) 791 02100 4773 JMS I (PCH) 792 02101 1011 TAD X1 793 02102 4772 JMS I (POCT) 794 02103 5327 JMP PINS8 795 796 / IF THE INSTRUCTION IS A FIELD SETTING INSTRUCTION 797 / THEN THE FIELD NUMBER NEEDS TO BE PRINTED; THIS IS PRINTED WITH 798 / A TRAILING ZERO SO IT LOOKS LIKE PAL8 INPUT 799 800 02104 1013 PINS7, TAD X3 801 02105 0360 AND (7700) 802 02106 1357 TAD (-6200) 803 02107 7640 SZA CLA 804 02110 5327 JMP PINS8 805 02111 1013 TAD X3 806 02112 0356 AND (0003) 807 02113 7650 SNA CLA 808 02114 5327 JMP PINS8 809 810 02115 1374 TAD (SP) 811 02116 4773 JMS I (PCH) 812 02117 1013 TAD X3 813 02120 7012 RTR 814 02121 7010 RAR 815 02122 0377 AND (7) 816 02123 1355 TAD ("0) 817 02124 4773 JMS I (PCH) 818 02125 1355 TAD ("0) 819 02126 4773 JMS I (PCH) 820 821 02127 4754 PINS8, JMS I (PCR) 822 823 02130 5600 JMP I PINS 824 825 02154 2263 PAGE 02155 0260 02156 0003 02157 1600 02160 7700 02161 7600 02162 0200 02163 0177 02164 0311 02165 0400 02166 2000 02167 6000 02170 7725 02171 2666 02172 2234 02173 2271 02174 0240 02175 2224 02176 6201 02177 0007 826 827 / THIS ROUTINE GETS CALLED AT THE END OF 828 / EVERY COMMAND TO CHECK FOR A CARRIAGE RETURN 829 / IF CH ISN'T A CR, RETURN JMS+1 830 / IF CH IS A CR, PRINT A CRLF, RETURN JMS+2 831 832 02200 0000 ISCR, 0 833 02201 1033 TAD CH 834 02202 1377 TAD (-CR) 835 02203 7640 SZA CLA 836 02204 5600 JMP I ISCR 837 02205 4776 JMS I (PCR) 838 02206 2200 ISZ ISCR 839 02207 5600 JMP I ISCR 840 841 / INCREMENT ADR+1 AND ADR+0 842 843 02210 0000 IADR, 0 844 02211 2036 ISZ ADR / LO PART 845 02212 5215 JMP IADR1 / NON ZERO, NO CARRY 846 02213 2037 ISZ ADR+1 / HI PART 847 02214 7000 NOP 848 02215 5610 IADR1, JMP I IADR 849 850 / COPY VAL+1 TO ADR+1, VAL+0 TO ADR+0 851 852 02216 0000 SADR, 0 853 02217 1034 TAD VAL 854 02220 3036 DCA ADR 855 02221 1035 TAD VAL+1 856 02222 3037 DCA ADR+1 857 02223 5616 JMP I SADR 858 859 / PRINT ADDRESS 860 / ADDRESS IS IN ADR+1 AND ADR+0 861 / USES T0, T1 862 863 02224 0000 PADR, 0 864 02225 1037 TAD ADR+1 865 02226 0375 AND (7) 866 02227 1374 TAD ("0) 867 02230 4271 JMS PCH 868 02231 1036 TAD ADR 869 02232 4234 JMS POCT 870 02233 5624 JMP I PADR 871 872 / PRINT OCTAL WORD 873 / ENTER WITH WORD IN AC 874 / USES T0, T1 875 876 02234 0000 POCT, 0 877 02235 7004 RAL 878 02236 3020 DCA T0 879 02237 1373 TAD (-4) 880 02240 3021 DCA T1 881 02241 1020 POCT1, TAD T0 882 02242 7006 RTL 883 02243 7004 RAL 884 02244 3020 DCA T0 885 02245 1020 TAD T0 886 02246 0375 AND (7) 887 02247 1374 TAD ("0) 888 02250 4271 JMS PCH 889 02251 2021 ISZ T1 890 02252 5241 JMP POCT1 891 02253 5634 JMP I POCT 892 893 / PRINT MESSAGE 894 / TEXT IS IN ASCII, END MARK IS 0000 895 / ENTER WITH MSG-1 IN AC 896 / USES X0 897 898 02254 0000 PMSG, 0 899 02255 3010 DCA X0 900 02256 1410 PMSG1, TAD I X0 901 02257 7450 SNA 902 02260 5654 JMP I PMSG 903 02261 4271 JMS PCH 904 02262 5256 JMP PMSG1 905 906 / PRINT CR/LF 907 908 02263 0000 PCR, 0 909 02264 1372 TAD (CR 910 02265 4271 JMS PCH 911 02266 1371 TAD (LF 912 02267 4271 JMS PCH 913 02270 5663 JMP I PCR 914 915 / PRINT CHARACTER 916 / ENTER WITH CHARACTER IN AC 917 918 02271 0000 PCH, 0 919 02272 6041 PCH1, TSF 920 02273 5272 JMP PCH1 921 02274 6046 TLS 922 02275 7200 CLA 923 02276 5671 JMP I PCH 924 925 02371 0212 PAGE 02372 0215 02373 7774 02374 0260 02375 0007 02376 2263 02377 7563 926 927 / GET (24-BIT) OCTAL NUMBER 928 / ENTER WITH 0 IN AC AND FIRST CHARACTER IN CH 929 / EXIT WITH 0 IN AC AND NUMBER IN VAL+1 (HI) AND VAL+0 (LO) 930 / NORMAL RETURN IS FAILURE, SKIP RETURN IS SUCCESS 931 / SKIPS LEADING BLANKS 932 / USES T0 933 934 02400 0000 GVAL, 0 935 02401 1033 GVAL1, TAD CH 936 02402 1377 TAD (-SP) 937 02403 7640 SZA CLA 938 02404 5211 JMP GVAL2 939 02405 1033 TAD CH 940 02406 4776 JMS I (PCH 941 02407 4775 JMS I (GCH 942 02410 5201 JMP GVAL1 943 02411 4242 GVAL2, JMS GVAL5 944 02412 5600 JMP I GVAL 945 02413 2200 ISZ GVAL 946 02414 3034 DCA VAL 947 02415 3035 DCA VAL+1 948 02416 1033 GVAL3, TAD CH 949 02417 4776 JMS I (PCH 950 02420 1374 TAD (-3) 951 02421 3020 DCA T0 952 02422 1034 GVAL4, TAD VAL 953 02423 7104 CLL RAL 954 02424 3034 DCA VAL 955 02425 1035 TAD VAL+1 956 02426 7004 RAL 957 02427 3035 DCA VAL+1 958 02430 2020 ISZ T0 959 02431 5222 JMP GVAL4 960 02432 1033 TAD CH 961 02433 1373 TAD (-"0) 962 02434 1034 TAD VAL 963 02435 3034 DCA VAL 964 02436 4775 JMS I (GCH) 965 02437 4242 JMS GVAL5 966 02440 5600 JMP I GVAL 967 02441 5216 JMP GVAL3 968 969 02442 0000 GVAL5, 0 970 02443 1033 TAD CH 971 02444 1373 TAD (-"0) 972 02445 7710 SPA CLA 973 02446 5642 JMP I GVAL5 974 02447 1033 TAD CH 975 02450 1372 TAD (-"8) 976 02451 7710 SPA CLA 977 02452 2242 ISZ GVAL5 978 02453 5642 JMP I GVAL5 979 980 / GET CHARACTER 981 / ENTER WITH 0 IN AC 982 / EXIT WITH 0 IN AC, CHARACTER IN CH 983 984 02454 0000 GCH, 0 985 02455 6031 GCH1, KSF 986 02456 5255 JMP GCH1 987 02457 6036 KRB 988 02460 0371 AND (0377 989 02461 3033 DCA CH 990 02462 5654 JMP I GCH 991 992 02571 0377 PAGE 02572 7510 02573 7520 02574 7775 02575 2454 02576 2271 02577 7540 993 994 / TEXT MESSAGES 995 / AS USED BY PMSG (ASCII, 0 ON THE END) 996 997 02600 0320 MSG1, "P 998 02601 0304 "D 999 02602 0320 "P 1000 02603 0255 "- 1001 02604 0270 "8 1002 02605 0257 "/ 1003 02606 0330 "X 1004 02607 0240 SP 1005 02610 0260 "0 1006 02611 0265 "5 1007 02612 0240 SP 1008 02613 0304 "D 1009 02614 0307 "G 1010 02615 0303 "C 1011 02616 0240 SP 1012 02617 0262 "2 1013 02620 0260 "0 1014 02621 0255 "- 1015 02622 0312 "J 1016 02623 0325 "U 1017 02624 0314 "L 1018 02625 0255 "- 1019 02626 0262 "2 1020 02627 0260 "0 1021 02630 0260 "0 1022 02631 0260 "0 1023 02632 0000 0 1024 1025 02633 0310 MSG2, "H 1026 02634 0301 "A 1027 02635 0314 "L 1028 02636 0324 "T 1029 02637 0240 SP 1030 02640 0301 "A 1031 02641 0324 "T 1032 02642 0240 SP 1033 02643 0320 "P 1034 02644 0303 "C 1035 02645 0240 SP 1036 02646 0000 0 1037 1038 02647 0240 MSG3, SP 1039 02650 0250 "( 1040 02651 0323 "S 1041 02652 0313 "K 1042 02653 0311 "I 1043 02654 0320 "P 1044 02655 0251 ") 1045 02656 0000 0 1046 1047 02657 0277 MSG4, "? 1048 02660 0240 SP 1049 02661 0000 0 1050 1051 02662 0240 MSG5, SP 1052 02663 0330 "X 1053 02664 0330 "X 1054 02665 0330 "X 1055 02666 0000 0 1056 1057 / INSTRUCTION DISASSEMBLY TABLE 1058 1059 02667 7000 PTAB, 7000; -0000; "A; "N; "D / MRI 02670 0000 02671 0301 02672 0316 02673 0304 1060 02674 7000 7000; -1000; "T; "A; "D 02675 7000 02676 0324 02677 0301 02700 0304 1061 02701 7000 7000; -2000; "I; "S; "Z 02702 6000 02703 0311 02704 0323 02705 0332 1062 02706 7000 7000; -3000; "D; "C; "A 02707 5000 02710 0304 02711 0303 02712 0301 1063 02713 7000 7000; -4000; "J; "M; "S 02714 4000 02715 0312 02716 0315 02717 0323 1064 02720 7000 7000; -5000; "J; "M; "P 02721 3000 02722 0312 02723 0315 02724 0320 1065 02725 7777 7777; -7000; "N; "O; "P / OPR GROUP 1 02726 1000 02727 0316 02730 0317 02731 0320 1066 02732 7600 7600; -7200; "C; "L; "A 02733 0600 02734 0303 02735 0314 02736 0301 1067 02737 7500 7500; -7100; "C; "L; "L 02740 0700 02741 0303 02742 0314 02743 0314 1068 02744 7440 7440; -7040; "C; "M; "A 02745 0740 02746 0303 02747 0315 02750 0301 1069 02751 7420 7420; -7020; "C; "M; "L 02752 0760 02753 0303 02754 0315 02755 0314 1070 02756 7401 7401; -7001; "I; "A; "C 02757 0777 02760 0311 02761 0301 02762 0303 1071 02763 7412 7412; -7010; "R; "A; "R 02764 0770 02765 0322 02766 0301 02767 0322 1072 02770 7406 7406; -7004; "R; "A; "L 02771 0774 02772 0322 02773 0301 02774 0314 1073 02775 7412 7412; -7012; "R; "T; "R 02776 0766 02777 0322 03000 0324 03001 0322 1074 03002 7406 7406; -7006; "R; "T; "L 03003 0772 03004 0322 03005 0324 03006 0314 1075 03007 7777 7777; -7400; "N; "O; "P / OPR GROUP 2 03010 0400 03011 0316 03012 0317 03013 0320 1076 03014 7571 7571; -7410; "S; "K; "P 03015 0370 03016 0323 03017 0313 03020 0320 1077 03021 7511 7511; -7500; "S; "M; "A 03022 0300 03023 0323 03024 0315 03025 0301 1078 03026 7511 7511; -7510; "S; "P; "A 03027 0270 03030 0323 03031 0320 03032 0301 1079 03033 7451 7451; -7440; "S; "Z; "A 03034 0340 03035 0323 03036 0332 03037 0301 1080 03040 7451 7451; -7450; "S; "N; "A 03041 0330 03042 0323 03043 0316 03044 0301 1081 03045 7431 7431; -7420; "S; "N; "L 03046 0360 03047 0323 03050 0316 03051 0314 1082 03052 7431 7431; -7430; "S; "Z; "L 03053 0350 03054 0323 03055 0332 03056 0314 1083 03057 7601 7601; -7600; "C; "L; "A 03060 0200 03061 0303 03062 0314 03063 0301 1084 03064 7405 7405; -7404; "O; "S; "R 03065 0374 03066 0317 03067 0323 03070 0322 1085 03071 7406 7406; -7402; "H; "L; "T 03072 0376 03073 0310 03074 0314 03075 0324 1086 03076 7777 7777; -6001; "I; "O; "N / IOT 03077 1777 03100 0311 03101 0317 03102 0316 1087 03103 7777 7777; -6002; "I; "O; "F 03104 1776 03105 0311 03106 0317 03107 0306 1088 03110 7777 7777; -6031; "K; "S; "F 03111 1747 03112 0313 03113 0323 03114 0306 1089 03115 7777 7777; -6032; "K; "C; "C 03116 1746 03117 0313 03120 0303 03121 0303 1090 03122 7777 7777; -6034; "K; "R; "S 03123 1744 03124 0313 03125 0322 03126 0323 1091 03127 7777 7777; -6036; "K; "R; "B 03130 1742 03131 0313 03132 0322 03133 0302 1092 03134 7777 7777; -6041; "T; "S; "F 03135 1737 03136 0324 03137 0323 03140 0306 1093 03141 7777 7777; -6042; "T; "C; "F 03142 1736 03143 0324 03144 0303 03145 0306 1094 03146 7777 7777; -6044; "T; "P; "C 03147 1734 03150 0324 03151 0320 03152 0303 1095 03153 7777 7777; -6046; "T; "L; "S 03154 1732 03155 0324 03156 0314 03157 0323 1096 03160 7701 7701; -6201; "C; "D; "F 03161 1577 03162 0303 03163 0304 03164 0306 1097 03165 7702 7702; -6202; "C; "I; "F 03166 1576 03167 0303 03170 0311 03171 0306 1098 03172 7774 7774; -6244; "R; "M; "F 03173 1534 03174 0322 03175 0315 03176 0306 1099 03177 7774 7774; -6234; "R; "I; "B 03200 1544 03201 0322 03202 0311 03203 0302 1100 03204 7774 7774; -6224; "R; "I; "F 03205 1554 03206 0322 03207 0311 03210 0306 1101 03211 7774 7774; -6214; "R; "D; "F 03212 1564 03213 0322 03214 0304 03215 0306 1102 1103 NPTAB=53 1104 1105 $