100 JMP BUFULENTRY /DID, SO DOWNGRADE THE BUFFER TO ACTIVE AND KEEP GOING 110 EJECT 120 BUFOFF, TAD LPTCHAR /GET LATEST CHARACTER 130 JMS I (LPOUT) /TRY TO OUTPUT IT 140 JMP LPFXIT /FORGET IT 150 TAD LPMODE /GET LATEST MODE 160 SPA /SKIP IF BUFFERING NOT ALLOWED 170 IAC /ELSE TRY TO END TEMPORARY PAUSE 180 DCA LPMODE /STORE BACK 190 JMP LPEXIT /TAKE SKIP RETURN FOR NOW 200 210 LPINIT, TAD [LPTBUFFER] /SETUP THE 220 DCA FILLPTR /FILL POINTER 230 TAD [LPTBUFFER] /SETUP THE 240 DCA EMPTPTR /EMPTYING POINTER 250 TAD LPMODE /GET BUFFERING MODE 260 SPA SNA CLA /SKIP IF BUFFERING NOT ALLOWED 270 TAD [7600] /ELSE SETUP TEMPORARY PAUSE VALUE 280 IAC /RESET NON-BUFFERING VALUE AT LEAST 290 DCA LPMODE /STORE NEW MODE 300 NL7777 /SET THE 310 DCA LPTFLAG /OUTPUT FLAG 320 NL7777 /GET A 330 JMS I (LPOUT) /TRY TO OUTPUT IT 340 SKP /SKIP IF UNSUCCESSFUL 350 LPEXIT, ISZ OUTLPT /BUMP TO SKIP RETURN 360 LPFXIT, TAD LPTAC /RESTORE ORIGINAL AC 370 JMP LPTRET /FINISH IT THERE 380 390 PAGE 400 EJECT 410 / INTERRUPT HANDLER. 420 430 INTCON, NL0002 /SET CIF BIT 440 RDF /GET CALLING FIELD 450 TAD [CDF] /TURN INTO CIF CDF CALLING FIELD 460 DCA INTRET /STORE IN-LINE FOR EXIT LATER 470 DCA INTFLGS /CLEAR INTERRUPT FLAGS 480 KSFIOT /INPUT FLAG UP? 490 JMP LPRINT /NO, TRY OUTPUT 500 TAD INFLAG /GET CURRENT FLAG 510 SZA CLA /SKIP IF CLEAR 520 TAD (4400) /ELSE SET ERROR, OVERRUN ERROR BITS 530 DCA INFLAG /STORE FOR NOW 540 KRBIOT /GET THE CHARACTER, CLEARING THE FLAG 550 DCA KEYTMP /SAVE IT 560 TAD INFLAG /GET THE FLAG 570 CMA /INVERT IT 580 AND KEYTMP /AND OFF NON-CONFLICTING BITS 590 TAD INFLAG /OR IN THE FLAG 600 SNA /SKIP IF SOMETHING SET 610 TAD (5000) /ELSE SET ERROR, FRAMING ERROR BITS 620 DCA INFLAG /STORE FINAL CHARACTER FLAG VALUE 630 ISZ INTFLGS /SET KEYBOARD INTERRUPT FLAG BIT 640 LPRINT, LISFIOT /INPUT FLAG UP? 650 JMP OUTINT /NO, FORGET IT 660 LIRBIOT /YES, READ IT IN 670 SNA /SKIP IF SOMETHING THERE 680 TAD (5000) /ELSE SET ERROR, FRAMING ERROR BITS 690 DCA LINFLAG /STORE THE INPUT FLAG 700 TAD INTFLGS /GET INTERRUPT FLAGS 710 TAD (4) /SET LPT: INPUT INTERRUPT BIT 720 DCA INTFLGS /STORE BACK 730 OUTINT, TSFIOT /OUTPUT FLAG UP? 740 JMP LPTINT /NO, TRY LPT: 750 TCFIOT /YES, CLEAR IT 760 NL7777 /SET FLAG VALUE 770 DCA OUTFLAG /STORE IT 780 ISZ INTFLGS /SET ON THE 790 ISZ INTFLGS /OUTPUT INTERRUPT BIT 800 LPTINT, LSFIOT /LPT: FLAG UP? 810 JMP VTINT /NO, TRY VT-8/E KEYBOARD 820 LCFIOT /CLEAR THE FLAG 830 NL7777 /SET THE 840 DCA LPTFLAG /EVENT FLAG 850 TAD INTFLGS /GET INTERRUPT FLAGS 860 TAD (10) /SET LPT: INTERRUPT BIT 870 DCA INTFLGS /STORE BACK 880 EJECT 890 VTINT, DKSFIOT /VT-8/E KEYBOARD? 900 JMP INTXIT /NO, FORGET IT 910 DKCFIOT /YES, CLEAR THE FLAG 920 TAD INTFLGS /GET INTERRUPT FLAGS 930 TAD (20) /SET EXTRA BIT 940 DCA INTFLGS /STORE BACK 950 INTXIT, TAD INTFLGS /GET INTERRUPT FLAGS 960 JMP INTRET /FINISH IT THERE 970 980 / INTERRUPT DEVICE LIST. 990 1000 / FLAG SKIP INSTRUCTIONS FOR ALL DEVICES HANDLED BY THE OVERLAY. 1010 1020 / POSITIONAL DESCRIPTION. 1030 1040 / ENTRY 0: KEYBOARD SKIP 1050 / ENTRY 1: CONSOLE OUTPUT SKIP 1060 / ENTRY 2: LPT: INPUT SKIP 1070 / ENTRY 3: LPT: OUTPUT SKIP 1080 / ENTRY 4-N: EXTRA DEVICE SKIPS (VT-8/E, ETC.) 1090 / 0000 END OF LIST 1100 1110 / ENTRIES 0-3 MUST BE PRESENT; 7777 MEANS DEVICE DOES NOT INTERRUPT FOR 1120 / THIS FUNCTION. ENTRIES 4-N ARE OPTIONAL. 1130 1140 INTDEV, KSFIOT /KEYBOARD SKIP 1150 TSFIOT /CONSOLE OUTPUT SKIP 1160 -ONEWAY!LISFIOT /LPT: INPUT SKIP 1170 LSFIOT /LPT: OUTPUT SKIP 1180 -VT8LPT&DKSFIOT /VT-8/E KEYBOARD SKIP