100 JMS I [PRTCHR] /INSERT IT 110 TAD OUTCHR /GET THE CHARACTER 120 TAD (BOLD+300+4000) /MAKE IT BOLD 130 JMS I [PRTCHR] /INSERT IT 140 JMP I (COMMON) /CONTINUE THERE 150 EJECT 160 / SPECIAL HANDLING CHARACTER COMES HERE. 170 180 VTRUB, TAD VTPTR /GET CURRENT POINTER 190 TAD (-VTBUFFER) /COMPARE TO LOWER LIMIT 200 SPA SNA CLA /SKIP IF NOT AT BEGINNING 210 JMP VTHOME /ELSE FORGET IT 220 NL7777 /\ 230 TAD VTPTR / >BACKUP THE POINTER 240 DCA VTPTR // 250 TAD I VTPTR /GET THE PREVIOUS CHARACTER 260 RAL /EXPENDABLE BIT TO LINK 270 CLA /CLEAN UP 280 TAD [" &177+4000] /GET A 290 DCA I VTPTR /PUT IT IN BUFFER 300 SZL /SKIP IF IT WAS A REGULAR CHARACTER 310 JMP VTRUB /ELSE RUBOUT PREVIOUS ALSO 320 330 / COMES HERE. 340 350 VTEOS, TAD VTPTR /GET CURRENT POINTER 360 TAD (-VTBFEND) /ESTABLISH CLEAR COUNT 370 JMP EOSENTRY /CONTINUE THERE 380 390 / COMES HERE. 400 410 VTEOL, TAD VTPTR /GET THE POINTER 420 AND [77] /JUST ON-LINE BITS 430 TAD [-100] /FORM ON-LINE CLEAR COUNT 440 EOSENTR,DCA VTEMP1 /STORE CLEAR COUNT 450 NL7777 /BACKUP 460 TAD VTPTR /GET THE POINTER 470 DCA CXR1 /STORE FOR CLEARING 480 TAD [" &177+4000] /GET A 490 DCA I CXR1 /CLEAR THE CHARACTER 500 ISZ VTEMP1 /DONE YET? 510 JMP .-3 /NO, KEEP GOING 520 JMP I (COMMON) /CONTINUE THERE 530 540 / COMES HERE. 550 560 VTFF, JMS I [CLEAR] /CLEAR THE BUFFER 570 EJECT 580 / COMES HERE. 590 600 VTHOME, TAD [VTBUFFER] /POINT TO BEGINNING OF BUFFER 610 JMP CUPIN /CONTINUE THERE 620 630 / HANDLING COMES HERE. 640 650 ESCAPE, TAD (ESCAP2) /SETUP NEXT ADDRESS POINTER 660 DCA SCAPADDRESS /STASH THE NEW POINTER 670 JMP I (COMMON) /CONTINUE THERE 680 690 / HANDLING CONTINUES HERE. 700 710 ESCAP2, TAD [SCAPNORMAL] /RESET THE 720 DCA SCAPADDRESS / ADDRESS 730 JMS I [PUTBACK] /RESTORE THE PREVIOUS CHARACTER 740 TAD OUTAC /GET THE VALUE 750 760 / DO SOMETHING HERE. 770 780 CLA /CLEAN UP 790 JMP I (COMMON) /CONTINUE THERE 800 810 / I/O TRAPS COME HERE BEFORE GOING TO TRAP BLOCKS. 820 830 OURTRAP,CLA /CLEAN UP 840 TAD IOERSW /RECOVERY IN PROGRESS? 850 SNA CLA /SKIP IF SO 860 JMP I (TRAPIO&177+TRPAGE) /JUMP IF NOT 870 TAD (-30) /SETUP THE 880 DCA IOERSW /TIME-OUT COUNTER 890 ISZ CALADR /WASTE 900 JMP .-1 /SOME TIME 910 ISZ IOERSW /WASTED ENOUGH TIME? 920 JMP .-3 /NO, KEEP GOING 930 TAD [VTBUFFER] /YES, POINT TO DISPLAY BUFFER 940 DPLAIOT /RELOAD DISPLAY ADDRESS 950 NL0001 /SET INTERRUPT ENABLE BIT 960 RIF /GET OUR FIELD 970 DPGOIOT /START UP THE DISPLAY 980 JMP I (TRAPIO&177+TRPAGE) /CONTINUE IN NORMAL TRAP CODE 990 1000 PAGE 1010 1020 ENDROM= . /END OF "ROM" AREA 1030 EJECT 1040 OCTMOVE,.-. /FOUR DIGIT MOVE ROUTINE 1050 DCA BLBCHAR /SAVE PASSED VALUE 1060 TAD [-4] /SETUP THE 1070 DCA I MOVBLB /MOVE COUNT 1080 TAD I OCTMOVE /GET THE MESSAGE ADDRESS 1090 DCA CXR1 /SET IT UP 1100 ISZ OCTMOVE /BUMP PAST ARGUMENT 1110 OCTLUP, TAD BLBCHAR /GET THE VALUE 1120 CLL RTL;RAL /MOVE UP 1130 DCA BLBCHAR /STORE BACK 1140 TAD BLBCHAR /GET IT AGAIN 1150 RAL /MOVE UP 1160 AND [7] /JUST LATEST DIGIT 1170 TAD ["0+BOLD] /MAKE IT ASCII 1180 DCA I CXR1 /STORE IN MESSAGE 1190 ISZ I MOVBLB /DONE YET? 1200 JMP OCTLUP /NO, KEEP GOING 1210 JMP I OCTMOVE /YES, RETURN 1220 1230 BLBCHAR,.-. /BLURB CHARACTER FILLING ROUTINE 1240 AND [77] /JUST SIX-BIT 1250 SNA /? 1260 TAD [" &77] /MAKE IT A 1270 TAD [40] /INVERT QUADRANT BIT 1280 AND [77] /REMOVE EXCESS 1290 TAD [40] /INVERT AGAIN 1300 DCA OCTMOVE /SAVE IT FOR NOW 1310 TAD OCTMOVE /GET IT BACK