8-Bit Software Online Conversion

BBC PD Catalogue - Listing

10REMBBCPDCatalogueDatabase 20REMbyStevenFlintham 30REMandAndrewPepperell 40REM 50REMVersion1.76-PublicDomain 60: 70IFFNmode=0THENMODE128ELSEMODE132 80IFHIMEM=&3000THENMODE4 90PROCdisable 100PROCinit 110IFFNmode=0THENPROCmode0`instruction sELSEPROCmode4`instructions 120CHAIN"CATDISP" 130END 140DEFPROCdisable 150*FX229,1 160*FX4,2 170ENDPROC 180DEFPROCenable 190*FX229 200*FX4 210ENDPROC 220DEFPROCinit 230ONERRORMODE7:PROCerror:END 240VDU23,128,24,60,126,255,24,24,24,0 250VDU23,129,24,24,24,255,126,60,24,0 260VDU23,130,16,48,112,255,112,48,16,0 270VDU23,131,8,12,14,255,14,12,8,0 280chan%=OPENIN("CATALOG") 290date$=FNread`line(chan%) 300CLOSE#chan% 310PROCdraw`screen(FNmode=0) 320ENDPROC 330DEFPROCerror 340REPORT 350PRINT" at line ";ERL 360PROCenable 370ENDPROC 380DEFFNmode 390LOCALA%,return$ 400IFM%=0ORM%=80THEN=0 410A%=135 420return$=STR$√∑USR(&FFF4) 430=VAL(MID$(return$,3,2)) 440DEFPROCdraw`screen(mode0%) 450MOVE0,799+64 460DRAW0,1023 470DRAW1279,1023 480DRAW1279,831+64 490DRAW1263,831+64 500DRAW1263,799+64 510MOVE31,991+16 520DRAW511,991+16 530DRAW511,831+48 540DRAW31,831+48 550DRAW31,991+16 560PRINTTAB(3,1)"------" 570PRINTTAB(3,2)"BBC PD" 580PRINTTAB(3,3)"------" 590IFmode0%PRINTTAB(14,1)"Public Doma in":PRINTTAB(17,3)"Software" 600IFmode0%THENPRINTTAB(43,1)"Catalogu e edition dated ";date$ELSEPRINTTAB(18,1 )"Catalogue ";date$ 610COLOUR0 620COLOUR129 630IFmode0%VDU28,0,31,79,5:CLS:VDU28,2 ,30,77,8 640IFNOTmode0%VDU28,0,31,39,5:CLS:VDU2 8,1,30,39,6 650VDU23,1,0;0;0;0; 660ENDPROC 670DEFPROCmode0`instructions 680VDU28,42,30,78,6 690PROCinstructions 700VDU28,2,30,40,6 710ENDPROC 720DEFPROCmode4`instructions 730PROCinstructions 740PRINT''"Press SPACE to continue..." ; 750*FX21 760REPEATUNTILGET=32 770ENDPROC 780DEFPROCinstructions 790IFFNmode=0THENPRINT 800PRINT"Database control keys:" 810PRINT 820PRINTCHR$128;" - go to the first it em" 830PRINTCHR$129;" - go to the last ite m" 840PRINTCHR$130;" - go to the previous item" 850PRINTCHR$131;" - go to the next ite m" 860PRINT 870PRINT"@ - go to a selected item" 880PRINT"P - print record(s)" 890PRINT"S - search records" 900PRINT 910PRINT"ESCAPE - return to the main m enu" 920PRINT 930PRINT"Disc formats:" 940PRINT 950PRINT"A - DFS 40T, single sided, 1 00K" 960PRINT"B - DFS 40T, double sided, 2 00K" 970PRINT"C - DFS 80T, single sided, 2 00K" 980PRINT"D - DFS 80T, double sided, 4 00K" 990PRINT"E - ADFS 40T, single sided, 1 60K (S)" 1000PRINT"F - ADFS 80T, single sided, 3 20K (M)" 1010PRINT"G - ADFS 80T, double sided, 6 40K (L)" 1020ENDPROC 1030DEFFNread`line(chan%) 1040LOCALline$,byte% 1050REPEAT 1060byte%=BGET#chan% 1070IFbyte%<>13THENline$=line$+CHR$(byt e%) 1080UNTILbyte%=13OREOF#chan% 1090=line$