10 *|" 20 *|"Formatted Program Lister 30 *|" 40 *|"A program to display a 50 *|"BASIC file neatly on 60 *|"screen or to printer 70 *|" 80 *|"Written by Alex Savvides 90 *|"For 8-Bit Public Domain 100 *|" | 110 : 120 IFPAGE<>&1900THENPRINT'"Set PAGE to &1900 and re-load":END 130 : 140 MODE7:VDU23;8202;0;0;0; 150 *FX4 2 160 *FX11 170 CLOSE#0 180 DIMfile$(31) 190 FORK=1TO2 200 PRINTTAB(0,K);"";CHR$157;CHR$141" Formatted Program Lister" 210 NEXT 220 PRINT'SPC(7);"Written by Alex Savvides" 230 PRINTTAB(0,24);"";CHR$157;" An 8-Bit Public Domain Utility"; 240 VDU28,1,22,39,6 250 ONERRORPROCerror 260 CLS 270 PROCask 280 PROCconfigure 290 CLS 300 IFprinterTHENVDU2 310 inv=0 320 nl=FALSE 330 X=OPENIN(file$) 340 IFX=0THENVDU7:PRINT"Not there!"':CLOSE#0:GOTO480 350 REPEAT 360 A=BGET#(X) 370 IFnl=TRUEANDA=32THENnl=FALSE:GOTO440 380 IFA>&80THENPROCcode(A):PRINT;str$;:GOTO430 390 IFA=&0DTHENPROCline:GOTO430ELSEIFA<32ORA>128THENGOTO430 400 IFA=ASC(":")THENPRINT'TAB(6);": ";:GOTO430 410 IFA=34THENinv=invEOR1 420 VDUA 430 IFA=&E5THENPROCgoto 440 UNTILEOF#X 450 CLOSE#X 460 *FX202 32 470 PRINT''"End of file" 480 PRINT"Another program?"; 490 REPEAT:A$=GET$:UNTILINSTR("YyNn",A$) 500 IFA$="Y"ORA$="y"THENGOTO260 510 CALL!-4 520 : 530 DEFPROCcode(C) 540 IFinv=1THENstr$=CHR$(C):ENDPROC 550 pointer=&8071 560 found=FALSE 570 str$="" 580 end=FALSE 590 A%=C 600 CALLptoken 610 ENDPROC 620 : 630 DEFPROCline 640 A=BGET#(X) 650 IFEOF#XTHENENDPROC 660 line=A*256 670 A=BGET#(X) 680 IFEOF#XTHENENDPROC 690 line=line+A 700 A=BGET#(X) 710 PRINT'line;" "; 720 nl=TRUE 730 ENDPROC 740 : 750 DEFPROCconfigure 760 @%=&00000005 770 bs$=LEFT$($&8009,5) 780 IFbs$<>"BASIC"THENPRINT'"Basic Rom not paged in.":END 790 IF?&8015=ASC("2")THENbasic=2:ptoken=&B50EELSEbasic=1:ptoken=&B53A 800 ENDPROC 810 : 820 DEFPROCask 830 PRINTTAB(0,0); 840 *CAT 850 PRINT'"Enter Filename :"; 860 INPUT""file$ 870 PRINT"Does the printer want a copy?"; 880 REPEAT 890 G$=GET$ 900 UNTILINSTR("YN",G$) 910 IFG$="Y"THENprinter=TRUEELSEprinter=FALSE 920 ENDPROC 930 : 940 DEFPROCerror 950 CLOSE#0 960 VDU3,7,12 970 IFERR=17THENENDPROC 980 PRINT"An error has occured:" 990 REPORT:PRINT" at line ";ERL' 1000 PRINT"Press a key...":*FX21 1010 key=GET 1020 ENDPROC 1030 : 1040 DEFPROCgoto 1050 A=BGET#(X) 1060 IFA=32THENVDU32:GOTO1050 1070 C1=A 1080 A=BGET#(X) 1090 C2=A 1100 A=BGET#(X) 1110 C3=A 1120 A=BGET#(X) 1130 C4=A 1140 goto=(C4AND&3F)*&100+(C3AND&3F) 1150 IF(C2AND4)=0THENgoto=goto+&4000 1160 IF(C2AND16)=0THENgoto=goto+&40 1170 IF(C2AND32)=32THENgoto=goto+&80 1180 PRINT;goto; 1190 ENDPROC