100 SNA CLA /SKIP IF NOT <^C> 110 NL7777 /ELSE SET <^C> INDICATOR 120 CIF CDF 00 /GOING TO FIELD 0 130 JMP I (OVRCOMMON) /RETURN TO THE MONITOR ONCE-ONLY CODE 140 150 / KEYBOARD MONITOR REPLACEMENT ADDRESSES. 160 170 MONADR, P7TSF /WAS TSFIOT 180 P7JMP /WAS JMP I P7OUT 190 P7TLS /WAS TLSIOT 200 CCHECK+2 /WAS KSFIOT 210 CCHECK+3 /WAS JMP I CCHECK 220 CCHECK+4 /WAS KRBIOT 230 0 /THIS ENDS THE LIST 240 250 / KEYBOARD MONITOR REPLACEMENT VALUES. 260 270 MONZAP, CIF 10 /WILL BECOME CIF OUR FIELD 280 JMS OUTCON /CALL OUTPUT ROUTINE 290 P7OUT&177+JMPIC /JMP I P7OUT 300 CIF 10 /WILL BECOME CIF OUR FIELD 310 JMS INCON /CALL INPUT ROUTINE 320 CCHECK&177+JMPIC /JMP I CCHECK 330 EJECT 340 PAGE 350 EJECT 360 / CONSOLE INPUT ROUTINE. 370 380 CONIN, NL0002 /SET CIF BIT 390 RDF /GET CALLING FIELD 400 TAD [CDF] /TURN INTO CIF CDF CALLING FIELD 410 DCA INRET /STORE IN-LINE FOR EXIT LATER 420 JMS I (INTEST) /TEST FOR KEYBOARD INPUT 430 JMP INRET /WASN'T ANY, TAKE IMMEDIATE RETURN 440 ISZ INCON /BUMP RETURN ADDRESS BECAUSE THERE WAS INPUT 450 TAD INCHAR /GET THE CHARACTER 460 JMP INRET /FINISH IT THERE 470 480 / CONSOLE OUTPUT ROUTINE. 490 500 CONOUT, DCA OUTAC /SAVE PASSED VALUE 510 TAD OUTAC /GET IT AGAIN 520 AND [177] /JUST SEVEN-BIT 530 DCA OUTCHR /STASH THE CHARACTER 540 NL0002 /SET CIF BIT 550 RDF /GET CALLING FIELD 560 TAD [CDF] /MAKE IT CIF CDF RETURN FIELD 570 DCA OUTRET /STORE FOR EXIT LATER 580 JMS I (OUTEST) /TEST (AND OUTPUT) THE CHARACTER 590 SKP /SKIP IF FLAG WASN'T UP 600 ISZ OUTCON /BUMP TO SKIP RETURN 610 TAD OUTAC /GET ORIGINAL AC 620 JMP OUTRET /FINISH IT THERE 630 EJECT 640 / LOGICAL LPT: HANDLER. 650 660 / SETTING LPMODE TO 0000 ALLOWS BUFFERING TO A CHARACTER. 670 680 / SETTING LPMODE TO 0001 DISABLES ALL BUFFERING. 690 700 / DURING BUFFERING OPERATIONS, LPMODE WILL CHANGE FROM 0000 TO A 710 / NEGATIVE COUNT FOR INITIALIZATION PURPOSES. 720 730 LPTOUT, DCA LPTAC /SAVE PASSED AC 740 NL0002 /SET CIF BIT 750 RDF /GET CALLING FIELD 760 TAD [CDF] /TURN INTO CIF CDF RETURN FIELD 770 DCA LPTRET /STORE FOR EXIT LATER 780 TAD LPTAC /GET PASSED AC VALUE 790 CMA /INVERT FOR TEST 800 SNA CLA /SKIP IF 7777 WAS NOT PASSED 810 JMP LPINIT /JUMP IF 7777 WAS PASSED 820 TAD LPTAC /GET ORIGINAL VALUE 830 AND [177] /JUST SEVEN-BIT 840 DCA LPTCHAR /SAVE THE CHARACTER TO BE OUTPUT 850 TAD LPMODE /GET BUFFERING MODE 860 SZA CLA /SKIP IF BUFFERING CURRENTLY ALLOWED 870 JMP BUFOFF /JUMP IF NOT 880 JMS I (BUFCHK) /CHECK CURRENT BUFFER STATUS 890 JMP BUFULL /BUFFER CURRENTLY FULL 900 JMP BUFACTIVE /BUFFER CURRENTLY PARTIALLY FULL 910 BUFEMPT,TAD LPTCHAR /GET THE CHARACTER 920 JMS I (LPOUT) /TRY TO OUTPUT IT 930 SKP /SKIP IF UNSUCCESSFUL 940 JMP LPEXIT /JUMP IF IT WORKED 950 LPFFTST,TAD LPTCHAR /GET THE CHARACTER 960 TAD (-14) /COMPARE TO 970 SNA CLA /SKIP IF DIFFERENT 980 JMP LPFXIT /ELSE TAKE NON-SKIP RETURN 990 JMS I (LPFILL) /BUFFER THE CHARACTER 1000 JMP LPEXIT /TAKE SKIP RETURN 1010 1020 BUFACTI,JMS I (LPEMPTY) /GET A CHARACTER FROM BUFFER 1030 JMS I (LPOUT) /TRY TO OUTPUT IT 1040 JMP LPFFTST /COULDN'T, TRY TO BUFFER LATEST CHARACTER 1050 BUFULEN,TAD EMPTR /GET TEMPORARY POINTER 1060 DCA EMPTPTR /PERMANENTLY EMPTY THE BUFFER POSITION 1070 JMS I (BUFCHK) /CHECK THE BUFFER AGAIN 1080 HLT /**** IMPOSSIBLE TO BE FULL WHEN JUST EMPTIED ONE **** 1090 JMP BUFACTIVE /BUFFER STILL ACTIVE, TRY AGAIN TO EMPTY IT 1100 JMP BUFEMPTY /BUFFER NOW EMPTY, GO DEAL WITH LATEST CHARACTER 1110 1120 BUFULL, JMS I (LPEMPTY) /GET A CHARACTER FROM BUFFER 1130 JMS I (LPOUT) /TRY TO OUTPUT IT 1140 JMP LPFXIT /COULDN'T, FORGET IT