100 110 VTLINT, IFNZRO VT8LPT < 120 130 PRSFIOT /DORMANT LPT: FLAG UP? 140 JMP INTXIT /NO, FORGET IT 150 PRCFIOT /YES, CLEAR THE FLAG 160 TAD INTFLGS /GET INTERRUPT FLAGS 170 TAD [40] /SET EXTRA FLAG BIT 180 DCA INTFLGS /STORE BACK 190 200 > 210 220 INTXIT, TAD INTFLGS /GET INTERRUPT FLAGS 230 JMP INTRET /FINISH IT THERE 240 EJECT 250 / CONSOLE TURNOFF ROUTINE. 260 270 OFFCON, IOF /PREVENT PROBLEMS 280 DPSMIOT /STOP THE DISPLAY 290 NL0002 /SET CIF BIT 300 RDF /GET CALLING FIELD 310 TAD [CDF] /TURN INTO CIF CDF CALLING FIELD 320 DCA OFFRET /STORE IN-LINE 330 JMP OFFRET /FINISH IT THERE 340 350 / KEYBOARD MONITOR REPLACEMENT ADDRESSES. 360 370 MONADR, P7TSF /WAS TSFIOT 380 P7JMP /WAS JMP I P7OUT 390 P7TLS /WAS TLSIOT 400 CCHECK+2 /WAS KSFIOT 410 CCHECK+3 /WAS JMP I CCHECK 420 CCHECK+4 /WAS KRBIOT 430 0 /THIS ENDS THE LIST 440 450 / KEYBOARD MONITOR REPLACEMENT VALUES. 460 470 MONZAP, CIF 10 /WILL BECOME CIF OUR FIELD 480 JMS OUTCON /CALL OUTPUT ROUTINE 490 P7OUT&177+JMPIC /JMP I P7OUT 500 CIF 10 /WILL BECOME CIF OUR FIELD 510 JMS INCON /CALL INPUT ROUTINE 520 CCHECK&177+JMPIC /JMP I CCHECK 530 540 / ERROR BLURBS. 550 560 REDBLB, "R+BOLD /READ BLURB 570 "E+NORMAL 580 "A+NORMAL 590 "D+NORMAL 600 610 WRIBLB, "W+BOLD /WRITE BLURB 620 "R+NORMAL 630 "I+NORMAL 640 "T+NORMAL 650 660 FRMBLB, "F+NORMAL /FROM BLURB 670 "R+NORMAL 680 "O+NORMAL 690 "M+NORMAL 700 710 TOBLB, "I+NORMAL /TO BLURB 720 "N+NORMAL 730 "T+NORMAL 740 "O+NORMAL 750 EJECT 760 PAGE 770 EJECT 780 / INTERRUPT DEVICE LIST. 790 800 / FLAG SKIP INSTRUCTIONS FOR ALL DEVICES HANDLED BY THE OVERLAY. 810 820 / POSITIONAL DESCRIPTION. 830 840 / ENTRY 0: KEYBOARD SKIP 850 / ENTRY 1: CONSOLE OUTPUT SKIP 860 / ENTRY 2: LPT: INPUT SKIP 870 / ENTRY 3: LPT: OUTPUT SKIP 880 / ENTRY 4-N: EXTRA DEVICE SKIPS (VT-8/E, ETC.) 890 / 0000 END OF LIST 900 910 / ENTRIES 0-3 MUST BE PRESENT; 7777 MEANS DEVICE DOES NOT INTERRUPT FOR 920 / THIS FUNCTION. ENTRIES 4-N ARE OPTIONAL. 930 940 INTDEV, DKSFIOT /KEYBOARD SKIP 950 7777 /NO OUTPUT SKIP 960 -ONEWAY!LISFIOT /LPT: INPUT SKIP 970 LSFIOT /LPT: OUTPUT SKIP 980 DPCLIOT /VIDEO RETRACE SKIP 990 1000 IFNZRO VT8LPT < 1010 1020 PRSFIOT /DORMANT LPT: SKIP 1030 1040 > 1050 1060 0000 /THIS ENDS THE LIST 1070 EJECT 1080 / CURSOR ADDRESSING INITIALLY COMES HERE. 1090 1100 VTCAD, TAD (CADY) /GET NEXT ADDRESS 1110 DCA CADDRESS /SET IT UP 1120 JMP COMMON /CONTINUE THERE 1130 1140 / COMES HERE UPON FIRST CHARACTER AFTER <^N>. 1150 1160 CADY, TAD OUTCHR /GET LATEST CHARACTER 1170 SNA CLA /SKIP IF NOT 1180 JMP COMMON /IGNORE IN <^N> SEQUENCE 1190 TAD (CADX) /GET NEXT ADDRESS 1200 DCA CADDRESS /SET IT UP 1210 JMS I [PUTBACK] /RESTORE THE CHARACTER 1220 TAD OUTCHR /GET THE CHARACTER 1230 TAD (-40-24) /ADD ON UPPER LIMIT 1240 CLL /CLEAR LINK FOR TEST 1250 TAD (24) /ADD ON RANGE 1260 SNL /SKIP IF IN RANGE 1270 CLA /ELSE USE 0000 1280 TAD (VTBUFFER%100) /ADD ON SHIFTED BUFFER BASE 1290 BSW /MOVE UP 1300 DCA VTPTR /SAVE AS NEW POINTER 1310 TAD OUTCHR /GET THE CHARACTER AGAIN 1320 TAD (-16) /COMPARE TO <^N> 1330 SNA /SKIP IF OTHER 1340 JMP COMMON /DON'T DO IT AGAIN IN MIDDLE! 1350 TAD (-40+16) /COMPARE TO OTHER CONTROL CHARACTERS 1360 SMA /SKIP IF CONTROL CHARACTER 1370 JMP COMMON /ELSE NO FURTHER ACTION 1380 CONTROL,TAD (CTABLE+40) /POINT AT TABLE ELEMENT 1390 DCA VTEMP1 /STASH THE POINTER 1400 JMS I [PUTBACK] /PUT THE CHARACTER BACK NOW 1410 TAD I VTEMP1 /GET THE ADDRESS 1420 DCA VTEMP1 /STASH IT 1430 JMP I VTEMP1 /GO TO ROUTINE ADDRESS 1440 EJECT