100 INITNOR,DCA INITSW /CLEAR THE SWITCH 110 NL0002 /SET 2000 BIT 120 RIF /GET OUR FIELD BITS 130 DCA VTMODE /SAVE FOR NOW 140 TAD VTMODE /GET IT BACK 150 BSW /SET OTHER HALF 160 TAD VTMODE /NOW HAVE BOTH HALVES 170 DCA VTMODE /STORE BACK 180 DCA CURSW /ENABLE CURSOR 190 JMS I (INTSET) /ENABLE DEVICE INTERRUPTS 200 DCA XIOMON /RESET "ROM" LOCATION 210 NL7775 /-3 220 TAD INCHAR /COMPARE TO LATEST INPUT 230 AND [177] /JUST SEVEN BITS 240 SNA CLA /SKIP IF NOT <^C> 250 NL7777 /ELSE SET <^C> INDICATOR 260 CIF CDF 00 /GOING TO FIELD 0 270 JMP I (OVRCOMMON) /RETURN TO THE MONITOR ONCE-ONLY CODE 280 290 / CONSOLE OUTPUT ROUTINE. 300 310 CONOUT, DCA OUTAC /SAVE PASSED VALUE 320 TAD VTMODE /GET MODE WORD 330 BSW /REVERSE HALVES 340 CIA /INVERT FOR TESTING 350 TAD VTMODE /COMPARE TO ORIGINAL 360 SNA CLA /SKIP IF THE HALVES DON'T MATCH 370 NL7777 /ELSE ALLOW HARDWARE SETUP LATER 380 DCA GOFLAG /SAVE FLAG EITHER WAY 390 TAD OUTAC /GET IT AGAIN 400 AND [177] /JUST SEVEN-BIT 410 DCA OUTCHR /STASH THE CHARACTER 420 NL0002 /SET CIF BIT 430 RDF /GET CALLING FIELD 440 TAD [CDF] /MAKE IT CIF CDF RETURN FIELD 450 JMS I (OUTEXC) /GOTO OUR FIELD 460 DCA OUTRET /STORE FOR EXIT LATER 470 JMP I SCAPADDRESS /GO TO HANDLING ROUTINE 480 490 / WHEN HANDLING IS DISABLED, IT COMES HERE. 500 510 SCAPNOR,JMP I CADDRESS /GO TO CURSOR ADDRESSING ROUTINE 520 EJECT 530 / WHEN CURSOR ADDRESSING IS DISABLED, IT COMES HERE. 540 550 CADNORM,TAD OUTCHR /GET THE LATEST CHARACTER 560 TAD [-" !200] /COMPARE TO 570 SPA /SKIP IF NOT CONTROL CHARACTER 580 JMP I (CONTROL) /JUMP IF CONTROL CHARACTER 590 TAD [-100] /COMPARE TO LOWER-CASE 600 SPA /SKIP IF LOWER-CASE 610 TAD (BOLD+200+" -200) /MAKE IT UPPER-CASE 620 TAD [NORMAL+200+100] /ADD ON RESTORATION BITS 630 TAD VMODE /ADD ON AUGMENTATION BITS 640 DCA VTEMP1 /SAVE FOR NOW 650 JMS I [PUTBACK] /RESTORE OLD CURSOR POSITION 660 TAD VTEMP1 /GET THE CHARACTER 670 JMS I [PRTCHR] /OUTPUT IT 680 VTEXIT, JMS I (ROLCHK) /CHECK IF IT FITS 690 TAD VTPTR /GET CURRENT POINTER 700 DCA OLDPTR /SAVE IT 710 TAD I OLDPTR /GET CURRENT CHARACTER 720 DCA OLDCHR /SAVE IT 730 TAD CURSW /GET CURSOR SWITCH 740 SZA CLA /SKIP IF CLEAR 750 JMP I (VSNSTST) /JUMP IF SET 760 TAD OLDCHR /GET CURRENT CHARACTER 770 AND (7177) /REMOVE MODE BITS 780 TAD [CURSOR+200] /MAKE IT CURSOR INSTEAD 790 DCA I OLDPTR /STORE IT BACK 800 JMP I (VSNSTST) /CONTINUE THERE 810 820 PAGE 830 EJECT 840 VSNSTST,DPMSIOT /GET THE SENSE SWITCH 850 SPA CLA /SKIP IF NOT SET 860 JMP VEXIT /EXIT NOW IF SET 870 LAS /GET SWITCH REGISTER 880 DCA I (WASTE) /SETUP WASTE COUNTER 890 TAD [-4] /GET INNER WASTE VALUE 900 DCA VTEMP1 /SETUP COUNTER 910 ISZ VTEMP1 /WASTE 920 JMP .-1 /SOME TIME 930 ISZ I (WASTE) /WASTED ENOUGH TIME? 940 JMP .-5 /NO, KEEP WASTING AWAY 950 VEXIT, DCA OUTFLAG /CLEAR EVENT FLAG 960 ISZ GOFLAG /ARE INTERRUPTS HANDLING THE HARDWARE? 970 JMP VEXIT2 /YES, SO DON'T CHANGE ANYTHING 980 TAD [VTBUFFER] /GET DISPLAY ADDRESS 990 DPLAIOT /LOAD IT 1000 NL0001 /SET INTERRUPT ENABLE BIT 1010 RIF /GET CURRENT FIELD BITS 1020 DPGOIOT /START IT UP 1030 VEXIT2, ISZ OUTCON /BUMP TO GOOD RETURN 1040 TAD OUTAC /GET ORIGINAL AC VALUE 1050 JMP OUTRET /FINISH IT THERE 1060 EJECT