10 DEFFNS="CatRd3" 20 MODE7 30 Z$="" 40 V%=0 50 H%=0 60 X%=9 70 CLOSE#0 80 VDU23;8202;0;0;0; 90 PRINT'" 8-Bit Software Catalogue" 100 PRINT" 8-Bit Software Catalogue" 110 PRINT''"This utility will print/view the 8BS"'"catalogue to either single sheets or"'"fanfold paper, on one or both sides." 120 PRINT'"Place the top of printer head at the"'"top of the sheet." 130 PRINT'TAB(11);"Enter 1 or 2" 140 PRINT'" 1. Single sided printout. " 150 PRINT'" 2. Double sided printout. " 160 REPEAT 170 C$=GET$ 180 UNTILINSTR("12",C$) 190 PRINT'"How Many Catalogues? "' 200 INPUT"";Q% 210 PRINT'"Printer? Y/N " 220 IF INSTR("Yy",GET$) P%=2 ELSE P%=3 230 MODE0 240 IFP%=3 PRINT''"Press SHIFT to scroll the text"'':VDU14 250 VDUP% 260 F%=OPENIN"Cat" 270 A%=EXT#F%/&41A 280 B%=A%/3+A%MOD3:REM PAGES IN THIS CATALOGUE 290 FORR%=1TOQ% 300 PROCpage1 310 C%=VAL C$ 320 REPEAT 330 PROCprtpage 340 C%=C%+1 350 IF C$="2" C%=C%+1 360 UNTILC%>=B% 370 NEXT 380 IF C$="2":VDU3:PRINT'"Turn sheet around and press a key.":VDUP%:REPEATUNTILGET:FORR%=1TOQ%:C%=1:REPEATPROCprtpage:C%=C%+2:UNTILC%>=B%:NEXT 390 VDU3 400 CLOSE#F% 410 END:REM the rest requires the front page on disc 420 IFP%=3 END 430 FORL%=1TOQ% 440 MODE7 450 VDU28,0,19,39,0 460 *LO.SCREEN 7C00 470 *GDUMP 480 VDU2,1,27,1,126,1,49,1,5:REM DOUBLE 490 PRINT'TAB(4)"The BBC and Master P.D. Library" 500 PRINTTAB(9)"and Postal User Group." 510 VDU1,27,1,126,1,49,1,6:REM QUAD 520 PRINT''TAB(5)"Catalogue." 530 VDU1,27,1,126,1,49,1,5:REM DOUBLE 540 PRINTTAB(12)LEFT$(TIME$,15) 550 PRINT'TAB(10)"" 560 PRINTTAB(10)"" 570 PRINTTAB(10)"" 580 PRINTTAB(10)"" 590 PRINTTAB(10)"" 600 IF P%=2 VDU12,3 610 NEXT 620 END 630 DEFPROCprtpage 640 H%=0 650 IF P%=3 PRINT' 660 IF C%<>0PRINTSPC(X%);"Page ";C%+1;SPC(X%); 670 PTR#F%=C%*(&41A*3):REM GET NEXT PAGE START 680 E%=0 690 REPEAT 700 E%=E%+1 710 INPUT#F%,A$ 720 IF C%=0 PRINTA$ ELSE IF A$<>STRING$(33," ")PROCprt 730 UNTILE%=90 OR EOF#F%:IF P%=2 VDU12 740 IFC$="1" PROCcont 750 ENDPROC 760 DEFPROCprt 770 IF E%=1 PROCpas:PRINT:PRINTSPC(X%);:Z$=A$:ENDPROC 780 IF E%=31 OR E%=61:IF INSTR(A$,Z$)=0:Z$=A$:PRINT''SPC(X%+8);:PROCpas:ENDPROC ELSE IF E%=31 OR E%=61 ENDPROC 790 IF LEFT$(A$,1)=" ":REPEAT:A$=RIGHT$(A$,LENA$-1):UNTILLEFT$(A$,1)<>" " 800 IF RIGHT$(A$,1)=" ":REPEAT:A$=LEFT$(A$,LENA$-1):UNTILRIGHT$(A$,1)<>" " 810 IF V%=1 V%=2 820 IF INSTR(MID$(A$,3,2),"-")<>0 V%=1:PRINT'SPC(X%-2);:I%=H%:H%=0:IFI%=1 PRINT'SPC(X%-2); 830 IF V%=1 VDU1,27,1,45,1,1 840 IF V%=2 PRINTSPC(6);:V%=0 850 PRINTA$; 860 VDU1,27,1,45,1,0 870 H%=H%+1 880 IF H%=1PRINT" "; ELSE H%=0:PRINT'SPC(X%); 890 ENDPROC 900 DEFPROCpage1 910 PTR#F%=0 920 FORL%=1TO30 930 INPUT#F%,I$ 940 PRINTSPC(X%);I$;": "; 950 PTR#F%=PTR#F%+&41A-35 960 INPUT#F%,I$ 970 PRINT;I$ 980 PTR#F%=PTR#F%-&41A 990 NEXT 1000 PTR#F%=PTR#F%+&41A 1010 FOR L%=1 TO 30 1020 INPUT#F%,A$ 1030 PRINTTAB(25);A$ 1040 NEXT 1050 IF P%=2 VDU12 1060 IFC$="1" PROCcont 1070 ENDPROC 1080 DEFPROCpas 1090 IF LEFT$(A$,1)=" ":REPEAT:A$=RIGHT$(A$,LENA$-1):UNTILLEFT$(A$,1)<>" " 1100 IF RIGHT$(A$,1)=" ":REPEAT:A$=LEFT$(A$,LENA$-1):UNTILRIGHT$(A$,1)<>" " 1110 IF E%<>1PRINTSPC(X%); 1120 VDU1,27,1,45,1,1 1130 PRINTA$' 1140 VDU1,27,1,45,1,0 1150 ENDPROC 1160 DEFPROCcont 1170 IF P%=3 ENDPROC 1180 VDU3 1190 *FX21 1200 PRINT''"Press a key to continue" 1210 REPEATUNTILGET 1220 VDUP% 1230 ENDPROC