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