100 / COMES HERE UPON SECOND CHARACTER AFTER <^N>. 110 120 CADX, TAD OUTCHR /GET LATEST CHARACTER 130 SNA CLA /SKIP IF NOT 140 JMP COMMON /IGNORE IN <^N> SEQUENCE 150 TAD [CADNORMAL] /RESET THE 160 DCA CADDRESS /NORMAL ADDRESS 170 JMS I [PUTBACK] /PUT THE CHARACTER BACK NOW 180 TAD OUTCHR /GET THE CHARACTER 190 TAD (-40-110) /ADD ON UPPER LIMIT 200 CLL /CLEAR LINK FOR TEST 210 TAD (110) /ADD ON RANGE 220 SNL /SKIP IF LEGAL 230 CLA /ELSE USE 0000 240 TAD [-100] /COMPARE TO OUR LIMIT 250 SMA /SKIP IF OK 260 NL7777 /ELSE TRUNCATE ON RIGHT 270 TAD (100) /RESTORE THE VALUE 280 TAD VTPTR /ADD ON CURRENT POINTER 290 DCA VTPTR /STORE NEW VALUE 300 TAD OUTCHR /GET THE CHARACTER AGAIN 310 TAD (-16) /COMPARE TO <^N> 320 SNA /SKIP IF OTHER 330 JMP COMMON /JUMP IF <^N> 340 TAD (-40+16) /COMPARE TO CONTROL CHARACTER 350 SPA /SKIP IF NOT CONTROL CHARACTER 360 JMP CONTROL /ELSE ALSO DO ITS FUNCTION 370 COMMON, SKP CLA /CLEAN UP AND DON'T RING THE 380 VTBELL, DPBLIOT /BANG A GONG AND GET IT ON 390 TAD VTPTR /GET THE POINTER 400 AND [7700] /JUST LINE BITS 410 DCA VTLNPTR /STORE BEGINNING POINTER 420 JMP I (VTEXIT) /CONTINUE THERE 430 EJECT 440 / COMES HERE. 450 460 VTTAB, NL3777 /SETUP MASK 470 AND I VTPTR /GET THE WORD 480 JMS I [PRTCHR] /PUT IT BACK WITHOUT WASTE BIT 490 TAD VTPTR /GET THE POINTER 500 AND [7] /JUST BITS 510 SNA /SKIP IF NOT AT A STOP 520 JMP COMMON /JUMP IF IT IS 530 TAD (7770) /FORM CHARACTER COUNT 540 DCA VTEMP2 /STASH THE COUNTER 550 TAD I VTPTR /GET THE CHARACTER 560 JMS I [PRTCHR] /PUT IT RIGHT BACK 570 ISZ VTEMP2 /DONE YET? 580 JMP .-3 /NO, KEEP GOING 590 JMP COMMON /YES, FINISH IT THERE 600 610 / COMES HERE. 620 630 CLEFT, TAD VTPTR /GET THE CURRENT POINTER 640 AND [77] /JUST ON-LINE BITS 650 SZA CLA /SKIP IF AT BEGINNING 660 NL7777 /ELSE GENERATE BACKUP FACTOR 670 CRITENT,TAD VTPTR /UPDATE POINTER 680 DCA VTPTR /STORE BACK 690 JMP COMMON /CONTINUE THERE 700 710 / COMES HERE. 720 730 CRIGHT, TAD VTPTR /GET THE POINTER 740 IAC /ADD ONE 750 AND [77] /WILL BE AT BEGINNING OF LINE? 760 SZA CLA /SKIP IF SO 770 NL0001 /ELSE ALLOW UPDATE 780 JMP CRITENTRY /CONTINUE THERE 790 800 / COMES HERE. 810 820 CUP, TAD VTPTR /GET THE POINTER 830 TAD [-VTBUFFER-100] /COMPARE TO BEGINNING LIMIT 840 SMA CLA /SKIP IF AT TOP ALREADY 850 TAD [-100] /ELSE ALLOW BACKUP FACTOR 860 JMP CRITENTRY /CONTINUE THERE 870 880 / COMES HERE. 890 900 CDOWN, TAD VTPTR /GET THE POINTER 910 TAD (100-VTBFEND) /COMPARE TO UPPER LIMIT 920 SPA CLA /SKIP IF TOO FAR 930 VTLF, NL0100 /ELSE ALLOW UPDATE 940 JMP CRITENTRY /CONTINUE THERE 950 EJECT 960 PAGE 970 EJECT 980 / COMES HERE. 990 1000 VTCR, TAD VTLNPTR /GET LINE POINTER 1010 CIA /INVERT 1020 TAD VTPTR /ADD ON CURRENT POINTER 1030 TAD TABCNT /NOW HAVE LINE DIFFERENCE 1040 SNA /SKIP IF NOT ON FIRST LINE 1050 JMP BACKIN /JUMP IF JUST THE TRIVIAL CASE 1060 AND [77] /CHECK FOR JUST-CONTINUED LINE 1070 SNA CLA /SKIP IF OTHER 1080 JMP BACKUP /JUST BACKUP A WHOLE LINE 1090 BACKIN, TAD VTPTR /GET CURRENT POINTER 1100 AND [7700] /JUST LINE BITS 1110 CUPIN, DCA VTPTR /NOW AT BEGINNING OF LINE 1120 JMP I (COMMON) /CONTINUE THERE 1130 1140 BACKUP, TAD VTPTR /GET THE POINTER 1150 AND [7700] /JUST LINE BITS 1160 DCA VTPTR /STORE BACK 1170 TAD [" &177+4000] /GET A 1180 DCA I VTPTR /PUT IT IN BUFFER 1190 TAD [-100] /GET BACKUP FACTOR 1200 JMP BACKIN /CONTINUE THERE 1210 1220 / ARROW MODE (^) CONTROL CHARACTERS COME HERE. 1230 1240 PRCONT, TAD ("^+BOLD) /GET AN "^"