100 DCA I (PDP12ZAP) /ALLOW PDP-12 INTERRUPT ENABLE TEST 110 JMP DMTEST /CONTINUE THERE 120 130 TIMOUT, ISZ OUTLPT /WASTE 140 JMP TIMTST /SOME TIME 150 ISZ INCON /WAITED TOO LONG? 160 JMP TIMTST /NO, TRY AGAIN 170 EJECT 180 / THE FLAG MAY NEVER COME UP, SO LET'S ATTEMPT TO SET IT. 190 200 TLSIOT /THIS SHOULD SET THE FLAG EVENTUALLY 210 ISZ OUTCON /TRIED TO SET IT TOO MANY TIMES? 220 JMP TSTAGN /NO, KEEP GOING 230 240 / SINCE THE CONSOLE HARDWARE (PRESUMABLY SPECIFIC) IS NOT AVAILABLE, WE 250 / RESTORE THE ORIGINAL KEYBOARD MONITOR AND LET IT FEND FOR ITSELF. 260 270 NL7776 /SETUP THE 280 DCA INCON /ZAP COUNT 290 TAD (ADRLST&177+TRPAGE-1) /POINT AT 300 DCA CXR1 /ADDRESS LIST 310 TAD (CNTLST&177+TRPAGE-1) /POINT AT 320 DCA CXR2 /NORMAL CONTENTS LIST 330 PTBKLP, TAD I CXR1 /GET AN ADDRESS 340 SNA /END OF LIST? 350 JMP PTBKDONE /YES 360 DCA OUTCON /NO, STASH IT 370 TAD I CXR2 /GET A VALUE 380 CDF 00 /GOTO MONITOR'S FIELD 390 DCA I OUTCON /ZAP IT BACK 400 JMS I [SETFLD] /BACK TO OUR FIELD 410 JMP PTBKLP /KEEP GOING 420 430 PTBKDON,TAD (MONADR-1) /POINT AT MONITOR'S 440 DCA CXR1 /ADDRESS LIST 450 TAD (MONCON-1) /POINT AT MONITOR'S 460 DCA CXR2 /CONTENTS LIST 470 ISZ INCON /DONE WITH BOTH YET? 480 JMP PTBKLP /NO, KEEP GOING 490 JMP I (PTBMORE) /CONTINUE THERE 500 510 / MONITOR LOCATIONS' NORMAL CONTENTS LIST. 520 530 MONCON, MONTSF /FOR P7TSF 540 P7OUT&177+JMPIC /FOR P7JMP 550 MONTLS /FOR P7TLS 560 MONKSF /FOR CCHECK+2 570 CCHECK&177+JMPIC /FOR CCHECK+3 580 MONKRB /FOR CCHECK+4 590 EJECT 600 PAGE 610 EJECT 620 / NOW DETERMINE HOW WE SHOULD READ THE MONITOR'S KEYBOARD FOR <^S>/<^Q> 630 / ETC. PURPOSES. 640 650 PTBMORE,CDF 00 /GOTO MONITOR'S FIELD 660 TAD I (SBOOT) /GET THE BOOTSTRAP INSTRUCTION 670 TAD (-SYSINST) /COMPARE TO POSSIBLE VALUE 680 SZA CLA /SKIP IF IT MATCHES 690 JMP EROK /JUMP IF OTHER 700 ISZ CTZAP1 /CHANGE "MONKRS" 710 ISZ CTZAP1 /TO "MONKRB" 720 DCA CTZAP2 /ELIMINATE "MONKCC" 730 EROK, JMS I [SETFLD] /RESTORE OUR FIELD 740 MONTLS /SET THE OUTPUT FLAG NOW 750 TAD (ERBLURB-1) /POINT TO 760 DCA CXR1 /ERROR MESSAGE 770 ERBLUP, TAD I CXR1 /GET A CHARACTER 780 DCA CXR2 /SAVE IT 790 PAGN, JMS CTLCTST /CHECK FOR INPUT 800 TAD (-"S!300) /IS IT <^S>? 810 SZA CLA /SKIP IF SO 820 JMP PTRY /JUMP IF NOT 830 JMS CTLCTST /CHECK AGAIN 840 TAD (-"Q!300) /IS IT <^Q>? 850 SZA CLA /SKIP IF SO 860 JMP .-3 /ELSE WAIT FOR IT 870 PTRY, TAD CXR2 /GET THE CHARACTER 880 MONTSF /FLAG UP? 890 JMP PAGN /NO, TRY INPUT WHILE WAITING 900 MONTLS /YES, SEND IT NOW 910 SMA CLA /END OF LIST? 920 JMP ERBLUP /NO, KEEP GOING 930 CIF CDF 00 /GOING TO FIELD 0 940 NL7775 /SETUP MASK 950 AND I (SCRSIZE) /GET OTHER BITS 960 DCA I (SCRSIZE) /STORE CORE WORD WITHOUT "C" BIT 970 JMP I (TTYTST) /CONTINUE THERE 980 990 CTLCTST,.-. /CONTROL CHARACTER INPUT ROUTINE 1000 CLA /CLEAN UP 1010 MONKSF /FLAG UP? 1020 JMP I CTLCTST /NO, FORGET IT 1030 CTZAP1, MONKRS/OR MONKRB /GET THE CHARACTER 1040 AND (177) /JUST SEVEN-BIT 1050 DCA INCHAR /SAVE IT 1060 CTZAP2, MONKCC/OR 0000 /CLEAR THE FLAG 1070 TAD INCHAR /GET THE CHARACTER 1080 JMP I CTLCTST /RETURN 1090 EJECT