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$