100 BELL= . /RING THE BELL HERE 110 120 BADCHR, DPBL /RING THE BELL 130 IGNORE, CLA CLL /CLEAN UP 140 IOF /PREVENT PROBLEMS 150 JMS I (DOMODE) /ENSURE OUTPUT MODE 160 CIF CDF 00 /BACK TO FIELD 0 170 JMP I (XOUTL+25) /RETURN TO THERE 180 EJECT 190 INSERT, .-. /INSERT A CHARACTER ROUTINE 200 SMA /DON'T IF NEGATIVE 210 TAD VMODE /ADD ON OUTPUT MODE 220 DCA I VTPTR /STORE IT 230 ISZ VTPTR /BUMP TO NEXT 240 JMP I INSERT /RETURN 250 260 VTTEMP, .-. /TEMPORARY 270 VTPTR, 4000+1 /OUTPUT POINTER 280 VTABCT, .-. /TAB COUNTER 290 VTSTPTR,.-. /TEST POINTER 300 VCOUNT, -7 /TABOUT VALUE 310 VMODE, 0400 /OUTPUT MODE 320 330 PAGE 340 EJECT 350 TAB, CDF CHRFLD /GOTO BUFFER FIELD 360 TAD (" &177) /GET A 370 JMS I (INSERT) /OUTPUT IT 380 CDF CODFLD /BACK TO CODE FIELD 390 TAD I (VTPTR) /GET POINTER 400 CDF CHRFLD /BACK TO BUFFER FIELD 410 AND (7) /JUST TAB BITS 420 SNA CLA /SKIP IF TABOUT NEEDED 430 JMP I (VTABIN) /JUMP IF NOT 440 TAD (7770) /GET ONE TAB'S WORTH 450 JMS VTABBY /OUTPUT THAT AMOUNT 460 JMP I (VTABIN) /CONTINUE THERE 470 480 VTROLL, NL4000 /SETUP TO OUTPUT 490 DCA VROLL1 /TO TOP OF BUFFER 500 TAD (4100) /SETUP SOURCE 510 DCA VROLL2 /ADDRESS 520 CDF CHRFLD /MAKE SURE OF BUFFER FIELD 530 TAD (5400) /SETUP 540 DCA VROLCT /ROLL COUNT 550 TAD I VROLL2 /\ 560 DCA I VROLL1 / \ 570 ISZ VROLL1 / \MOVE ENTIRE BUFFER 580 ISZ VROLL2 / /UP A COMPLETE LINE 590 ISZ VROLCT / / 600 JMP .-5 // 610 TAD VTLNPTR /GET LINE POINTER 620 TAD (7700) /BACK IT UP 630 DCA VTLNPTR /SAVE IT 640 CDF CODFLD /BACK TO OUR FIELD 650 TAD I (VTPTR) /GET CURRENT POINTER 660 TAD (7700) /BACK IT UP 670 LFIN, DCA I (VTPTR) /SAVE IT 680 JMP I (VTCHEK) /FINISH UP THERE 690 700 LF, TAD VTLNPTR /\ 710 CIA / >GET LINE DIFFERENCE 720 TAD I (VTPTR) // 730 TAD I (VCOUNT) /IS IT AT CRITICAL POINT? 740 SNA /SKIP IF NOT 750 JMP .+4 /JUMP IF SO 760 AND (77) /IS IT AN EMPTY LINE? 770 SNA CLA /SKIP IF NOT 780 JMP .+3 /JUMP IF SO 790 TAD (7700) /GET WHOLE LINE AMOUNT 800 JMS VTABBY /GOTO NEXT LINE 810 CDF CODFLD /MAKE SURE OF OUR FIELD 820 TAD I (VTPTR) /GET CURRENT POINTER 830 AND (7700) /BACK TO BEGINNING 840 DCA VTLNPTR /SAVE FOR COMPARISONS 850 TAD VTLNPTR /GET IT BACK 860 JMP LFIN /CONTINUE THERE 870 EJECT 880 VTABBY, .-. /TABOUT ROUTINE 890 DCA TABTMP /SAVE ARGUMENT 900 TAD TABTMP /GET IT BACK 910 CMA /GET MODULUS COUNTER 920 CDF CODFLD /MAKE SURE OF FIELD 930 AND I (VTPTR) /GET REMAINDER 940 TAD TABTMP /MAKE IT A COUNT 950 DCA TABTMP /SAVE IT 960 CDF CHRFLD /GOTO BUFFER FIELD 970 TAD (" &177+4000) /GET A 980 JMS I (INSERT) /PUT IT IN 990 ISZ TABTMP /DONE YET? 1000 JMP .-3 /NO, KEEP GOING 1010 JMP I VTABBY /RETURN 1020 1030 HOME, NL4000 /SETUP NEW 1040 DCA I (VTPTR) /OUTPUT POINTER 1050 NL4000 /SETUP NEW 1060 DCA VTLNPTR /REFERENCE POINTER 1070 JMP I (VTEXIT) /FINISH UP 1080 1090 CNTLU, TAD VTLNPTR /GET REFERENCE POINTER 1100 DCA I (VTPTR) /SAVE AS POINTER 1110 JMP I (VTEXIT) /FINISH UP 1120 1130 RUBOUT, TAD (-"\&77+3600) /IS IT THE ? 1140 SNA /SKIP IF NOT 1150 JMP DORUB /JUMP IF SO 1160 TAD ("\&177+4000) /RESTORE CHARACTER 1170 JMP I (VTOUT2) /KEEP GOING 1180 1190 DORUB, NL7777 /BACKUP 1200 TAD I (VTPTR) /GET CURRENT 1210 DCA I (VTPTR) /SAVE IT 1220 TAD I (VTPTR) /GET IT BACK 1230 DCA TABTMP /SAVE IT 1240 CDF CHRFLD /GOTO BUFFER FIELD 1250 TAD I TABTMP /GET LAST CHARACTER 1260 SMA CLA /SKIP IF SPECIAL 1270 JMP I (VTEXIT) /DONE IF NOT 1280 CDF CODFLD /BACK TO OUR FIELD 1290 JMP DORUB /DO IT AGAIN 1300 1310 TABTMP, .-. /TEMPORARY