10 ONERROR:IFERR=222:F%=OPENOUT"Data":BPUT#F%,0:BPUT#F%,1:BPUT#F%,0:PRINT#F%,STRING$(39," "),STRING$(30," "):CLOSE#F% 20 DEFFNS="Castore" 30 F%=OPENUP"Data" 40 A%=BGET#F% 50 P%=0 60 *FX4 1 70 MODE7 80 F$=STRING$(40," "):F$="" 90 G$=STRING$(40," "):G$="" 100 H$=STRING$(40," "):H$="" 110 I$=STRING$(40," "):I$="" 120 J$=STRING$(40," "):J$="" 130 K$=STRING$(40," "):K$="" 140 VDU23;8202;0;0;0; 150 ONERROR:REM 160 H%=1 170 I%=1 180 J%=1 190 K%=1 200 L%=1 210 B%=3 220 U%=0 230 REPEAT 240 PROCtit 250 PRINTTAB(5,16)"(Z) Back one record. " 260 PRINTTAB(5)"(X) Forward one record. " 270 PRINTTAB(5)"(E)dit this record. " 280 PRINTTAB(5)"(S)earch facilities. " 290 PRINTTAB(5)"(A)dd a record. (Q)uit. " 300 REPEAT 310 PROCGetRecord 320 PROCPrintRecord 330 REPEAT 340 *FX21 350 A$=GET$ 360 UNTILINSTR("ZzXxEeSsAaQq",A$) 370 IF INSTR("Qq",A$) CLOSE#F%:END 380 IF INSTR("Zz",A$) P%=P%-&4C 390 IF INSTR("Xx",A$) P%=P%+&4C 400 IF INSTR("Ee",A$) PROCedit 410 IF INSTR("Aa",A$):PTR#F%=EXT#F%:BPUT#F%,0:BPUT#F%,1:BPUT#F%,0:PRINT#F%,"Free"+STRING$(35," "),STRING$(30," ") 420 UNTIL INSTR("Ss",A$) 430 PROCsearch 440 UNTILFALSE 450 DEFPROCGetRecord 460 *FX200,1 470 IF P%>(EXT#F%-&4C) P%=0 480 IF P%<0 P%=(EXT#F%-&4C) 490 PTR#F%=P% 500 T%=BGET#F% 510 S%=BGET#F% 520 N%=BGET#F% 530 INPUT #F%,Tit$,Name$ 540 IF S%=1 S$="A" ELSE S$="B" 550 *FX200 560 ENDPROC 570 DEFPROCtit 580 CLS 590 PRINT'TAB(7)"Cassette Database " 600 PRINTTAB(7)"Cassette Database " 610 ENDPROC 620 DEFPROCsearch 630 REPEAT 640 PROCtit 650 PRINT''"A.View all information" 660 PRINT"B.View all A sides" 670 PRINT"C.View all B sides" 680 PRINT"D.View all artists on tape (n)" 690 PRINT"E.View all songs on tape (n)" 700 PRINT"F.View all artists" 710 PRINT"G.View all songs" 720 PRINT"H.Search by song" 730 PRINT"I.Search by artist" 740 PRINT"J.View all on tape (n)" 750 PRINT"K.Printer on/off:";:IF B%=2 PRINT"ON" ELSE PRINT"OFF" 760 PRINT"L.Go to a particular record" 770 PRINT"M.Quit to main menu" 780 REPEAT:A$=GET$:UNTIL INSTR("AaBbCcDdEeFfGgHhIiJjKkLlMm",A$) 790 PRINT'"Selected - ";A$ 800 FORD%=1TO4000:NEXT 810 IF INSTR("Aa",A$) PROCView(1) 820 IF INSTR("Bb",A$) PROCView(2) 830 IF INSTR("Cc",A$) PROCView(3) 840 IF INSTR("Dd",A$) H%=0:I%=0:J%=0:K%=0:PROCView(4) 850 IF INSTR("Ee",A$) H%=0:I%=0:J%=0:L%=0:PROCView(5) 860 IF INSTR("Ff",A$) H%=0:I%=0:J%=0:K%=0:PROCView(6) 870 IF INSTR("Gg",A$) H%=0:I%=0:J%=0:L%=0:PROCView(7) 880 IF INSTR("Hh",A$) PROCView(8) 890 IF INSTR("Ii",A$) PROCView(9) 900 IF INSTR("Jj",A$) PROCView(10) 910 IF INSTR("Kk",A$):IF B%=3 B%=2 ELSE IF INSTR("Kk",A$) B%=3 920 IF INSTR("Ll",A$):PRINT"Which Record 1 - ";STR$(EXT#F%/&4C);" ?":REPEAT:INPUT P%:UNTILP%>0 AND P%<=EXT#F%/&4C:P%=P%*&4C-&4C:A$="M" 930 UNTIL INSTR("Mm",A$) 940 IF U%<>0 P%=P%-&4C 950 ENDPROC 960 DEFPROCedit 970 PRINTTAB(0,22)"Use Cursors to select Field." 980 PRINT"COPY to change. RETURN to finish" 990 X%=7 1000 Y%=9 1010 PRINTTAB(X%,Y%+1);"^" 1020 REPEAT 1030 A%=GET 1040 PRINTTAB(X%,Y%+1);" " 1050 IF A%=138 IF Y%<13 Y%=Y%+2:X%=1:A%=0:IFY%=13 X%=6 1060 IF A%=139 IF Y%>9 Y%=Y%-2:X%=1:A%=0:IF Y%=9 X%=7 1070 IF A%=137:IF Y%=9 IF X%<27 X%=X%+10:A%=0 1080 IF A%=136:IF Y%=9:IF X%>7 X%=X%-10:A%=0 1090 IF A%<>13 PRINTTAB(X%,Y%+1);"^"TAB(X%,Y%); 1100 IF A%=135 PROCchange 1110 UNTILA%=13 1120 *FX200,1 1130 PTR#F%=P% 1140 BPUT#F%,T% 1150 BPUT#F%,S% 1160 BPUT#F%,N% 1170 PRINT#F%,Tit$,Name$ 1180 *FX200 1190 PRINTTAB(0,22)SPC(74) 1200 ENDPROC 1210 DEFPROCchange 1220 *FX4 1230 PRINTTAB(X%,Y%+1);" ";TAB(X%-1,Y%+1); 1240 IF Y%=9 IF X%=7 INPUT T% 1250 IF Y%=9 IF X%=17 INPUT S$:IF S$="A" S%=1 ELSE IF Y%=9 IF X%=17 S%=2 1260 IF Y%=9 IF X%=27 INPUT N% 1270 IF Y%=11 INPUT LINE Tit$:Tit$=Tit$+STRING$(40," "):Tit$=LEFT$(Tit$,39) 1280 IF Y%=13 INPUT LINE Name$:Name$=Name$+STRING$(30," "):Name$=LEFT$(Name$,30) 1290 PROCPrintRecord 1300 PRINTTAB(X%,Y%+1);"^"; 1310 *FX4 1 1320 ENDPROC 1330 DEFPROCPrintRecord 1340 VDUB% 1350 IF B%=3 PRINTTAB(0,7);"Record ";STR$(((PTR#F%+&4C)/&4C)-1);" of ";STR$(EXT#F%/&4C);" " 1360 IF H% PRINTTAB(0,9);"Tape: ";STR$(T%);" "; 1370 IF I% PRINTTAB(10);"Side: ";:IF S%=1 PRINT"A"; ELSE IF I% PRINT "B"; 1380 IF J% PRINTTAB(20);"Song: ";STR$(N%);" " 1390 IF B%=3 PRINTSPC40; 1400 IF K% PRINT"";Tit$; 1410 IF B%=3 PRINTSPC40; 1420 IF L% PRINT"By :";Name$; 1430 IF B%=3 PRINTSPC(80) ELSE PRINT 1440 VDU3 1450 ENDPROC 1460 DEFPROCView(Q%) 1470 PROCtit 1480 P%=0 1490 IF Q%=4 OR Q%=5 OR Q%=10:INPUT''"Which Tape? "R% 1500 IF Q%=8 PRINT'"Song title to search for?":INPUTF$:F$=FNUpperCase(F$) 1510 IF Q%=9 PRINT'"Artist to search for?":INPUTG$:G$=FNUpperCase(G$) 1520 REPEAT 1530 *FX21 1540 U%=0 1550 PROCGetRecord 1560 IF Q%=1 OR Q%=10 AND T%=R% PROCPrintRecord:U%=1 1570 IF Q%=2 IF S%=1 PROCPrintRecord:U%=1 1580 IF Q%=3 IF S%=2 PROCPrintRecord:U%=1 1590 IF Q%=4 AND T%=R% OR Q%=6 VDUB%:PRINT"Tape ";STR$(T%);" ";Name$:U%=1:VDU3 1600 IF Q%=5 AND T%=R% OR Q%=7 VDUB%:PRINT Tit$;:U%=1:IF B%=2 PRINT"Tape ";STR$(T%);:VDU3 1610 IF Q%=5 AND T%=R% OR Q%=7:VDUB%:PRINT:VDU3 1620 IF Q%=8 PROCCompare(Tit$,F$) 1630 IF Q%=9 PROCCompare(Name$,G$) 1640 IF Q%<4 OR Q%>7:IF B%=3:IF U%=1 PRINT"Press a key to continue orQto quit":IF INSTR("Qq",GET$) U%=2 1650 IF Q%<4 OR Q%>7:IF U%<>2 PRINTTAB(0,16)"Searching....";SPC(23) 1660 P%=P%+&4C 1670 UNTILP%=EXT#F% OR U%=2 1680 PRINT''"FINISHED. PLEASE PRESS A KEY" 1690 REPEATUNTILGET 1700 H%=1:I%=1:J%=1:K%=1:L%=1 1710 ENDPROC 1720 DEFFNUpperCase(H$) 1730 I$="" 1740 FORM%=1TOLEN H$ 1750 O%=ASC MID$(H$,M%,1) 1760 IF O%>90 O%=O%-32 1770 I$=I$+CHR$(O%) 1780 NEXT 1790 =I$ 1800 DEFPROCCompare(J$,K$) 1810 J$=FNUpperCase(J$) 1820 IF INSTR(J$,K$) PROCPrintRecord:U%=1 1830 ENDPROC