8-Bit Software Online Conversion
8BS Catalogue - Listing
10DEFFNS="ViewOne"
20ONERROR VDU3:CLOSE#0:IF ERR=17 ELSE
MODE128:REPORT:PRINTERL:END
30MODE7
40VDU23;8202;0;0;0;
50B$="TEMP"
70T%=0
80B%=&900
90PROCmenu
100IFINSTR("2",A$):MODE0:PROCprint:RUN
110PROCld(T%)
120REPEAT
130*FX21
140A$=GET$
150IF INSTR("BbZz",A$) IF T%>&3E7 T%=T
%-&3E8:IF INSTR("Bb",A$)SOUND 1,-10,20,1
160IF INSTR("FfXx",A$) IF T%+&3E8<EXT#
F% T%=T%+&3E8:IF INSTR("Ff",A$)SOUND 1,-
10,40,1
170IF INSTR("ZzXx",A$) PROCld(T%)
180IF INSTR("Pp",A$) PROCprtScreen
190UNTILFALSE
200END
210DEFPROCld(T%)
220PTR#F%=T%
230K%=&400
240IF T%+K%>EXT#F% K%=EXT#F%-T%:CLS
250A%=4
260X%=B% MOD 256
270Y%=B% DIV 256
280B%?0=F%
290B%!1=&7C00
300B%!5=K%
310CALL&FFD1
320ENDPROC
330DEFPROCmenu
340PRINTTAB(5)"
350PRINTTAB(5)"
355PRINT'TAB(8)" By C.J.Richardson."
360PRINT'TAB(8)" Choose 1-4 Now: "
''
370PRINTTAB(5)" 1. View Catalogue."
390PRINTTAB(5)" 2. Print Catalogue."
410PRINTTAB(5)" 3. Search."
420PRINTTAB(5)" 4. End."
430PRINT''" Or Whilst Catalogue Is S
howing: "
440PRINT'TAB(1)" X Forward a Page."
450PRINTTAB(1)" Z Backwards a Page."
460PRINTTAB(1)" B Jump Backwards (NO S
CREEN UPDATE)."
470PRINTTAB(1)" F Jump Forwards (NO SC
REEN UPDATE)."
480PRINTTAB(1)" P Print Screen."
490PRINTTAB(1)" ESCAPE Menu."
500REPEAT
510A$=GET$
520UNTILINSTR("1234",A$)
530IF A$="1":T%=0:F%=OPENIN B$
550IF A$="3" PROCSr
560IF A$="4" CLOSE#0:OSCLI"EX.!BOOT":E
ND
570ENDPROC
580DEFPROCprint
590A$=B$
600PRINT"To Printer Y/N?"
610*FX21
620IFINSTR("Yy",GET$) S%=2 ELSE S%=14
630IF S%=2 PRINT"Prepare Printer And P
ress (P)ause between pages OR (C)ontinuo
us":REPEAT:W%=GET:UNTIL INSTR("PpCc",CHR
$(W%)):IF INSTR("Pp",CHR$(W%)) W%=1 ELSE
W%=0
640IF S%=14 PRINT'"SHIFT To Scroll Tex
t...Press A Key.":OSCLI"*FX21":REPEATUNT
ILGET
650VDUS%
660F%=OPENIN(A$)
670V%=0
680PROCfirstbit
690Q%=0
700R%=0
710REPEAT
720M%=BGET#F%
730R%=R%+1
740IF M%>126 PROCch
750IF M%=32:Q%=Q%+1 ELSE Q%=0
760IF Q%<2 VDUM%
770IF R%=80 PROCch1
780UNTILEOF #F%
785 IF S%=2 VDU12
790VDU3
800PRINT''"Press A Key"
810*FX21
820REPEATUNTILGET
830ENDPROC
840DEFPROCch1
850R%=0
860IF S%=2 PRINT:PROCnewpage:ENDPROC
870IF POS<>79 PRINT:PROCnewpage
880ENDPROC
890DEFPROCfirstbit
900U%=0
910REPEAT
920PRINTSTRING$(20," ");
930FORL%=1 TO 40
940M%=BGET#F%
950IF M%=135 U%=1
960IF M%=141:FORP%=1TO40:M%=BGET#F%:NE
XT
970IF M%>126 M%=32
980VDUM%
990NEXT
1000PRINT:PROCnewpage
1010UNTILU%=1
1020ENDPROC
1030DEFPROCtitle
1040PRINT:PROCnewpage
1050IF S%=2:VDU1,&1B,1,&2D,1,1:REM UNDE
RLINE ON
1060FORL%=1TO80
1070M%=BGET#F%
1080IF M%>126 M%=32
1090VDUM%
1100IF L%=40:IFS%=2:VDU1,&1B,1,&2D,1,0:
REM UNDERLINE OFF
1110NEXT
1120R%=1
1130IF S%=2 PRINT:PROCnewpage
1140ENDPROC
1150DEFPROCch
1160IF M%=130 PROCtitle
1170IF M%=132 PRINT:PROCnewpage:PROChea
d:REM SECTION TITLE
1180IF M%=141:FORP%=1TO40:M%=BGET#F%:NE
XT
1190M%=32:IF POS=0 Q%=Q%+1
1200ENDPROC
1210DEFPROChead
1220FORL%=1TO20
1230VDU32
1240NEXT
1250IF S%=2:VDU1,&1B,1,&2D,1,1:REM UNDE
RLINE ON
1260FORL%=1TO40
1270M%=BGET#F%
1280IFM%<126 VDUM%
1290NEXT
1300IFS%=2:VDU1,&1B,1,&2D,1,0:REM UNDER
LINE OFF
1310PRINT
1320PROCnewpage
1330ENDPROC
1340DEFPROCnewpage
1350IFW%=0 ENDPROC
1360V%=V%+1
1370IF V%<60 ENDPROC
1380VDU12,3
1390PRINT"Insert New Page And Press A K
ey"
1400*FX21
1410REPEATUNTILGET
1420V%=0
1430VDUS%
1440ENDPROC
1450DEFPROCprtScreen
1460VDU2
1470FORL%=1TO20
1480VDU1,32
1490NEXT
1500FORL%=&7C00 TO &7FE8
1510M%=?L%
1520IF M%<127 VDU1,M%
1530IF (L%-&7C00) MOD 40=0 VDU1,13:FORA
%=1 TO 20:VDU1,32:NEXT
1540NEXT
1550VDU1,13,3
1560ENDPROC
1570DEFPROCSr
1580CLS
1590FORL%=0TO2 STEP2
1600P%=&900
1610[
1620OPT L%
1630LDY#&FF
1640.loop
1650INY
1660LDA store%,Y
1670CMP#13
1680BEQout
1690ORA #32
1700STA store%,Y
1710JMP loop
1720.out
1730RTS
1740.store%
1750]
1760NEXT
1770R%=0
1780S%=0
1790A$=STRING$(40,"1")
1800A$=""
1810ONERROR:CLOSE#0:VDU3:IFERR<>17:PRIN
TERL:REPORT:END ELSE PRINT''" Press a Ke
y.":REPEATUNTILGET
1820REPEAT
1830PROCscr
1840PROCsel
1850PROCdo
1860UNTILFALSE
1870DEFPROCscr
1880CLS
1890IF S%=0 VDU14 ELSE VDU15
1900PRINT"
1910PRINT"
1920PRINT'TAB(10)" By C.J.Richardson."
1930PRINT''
1940PRINT" 1. Printout ";:IF R%=0 PRINT
"off." ELSE PRINT" on."
1950PRINT" 2. Scrolling ";:IF S%=0 PRIN
T"off." ELSE PRINT" on."
1960PRINT" 3. View/Search."
1980PRINT" 4. Leave Search."
1990PRINT''TAB(8)" Enter 1 to 4 or *
"
2000ENDPROC
2010DEFPROCsel
2020*FX21
2030REPEAT
2040A$=GET$
2050UNTILINSTR("1234*",A$)
2060CLS
2070ENDPROC
2080DEFPROCdo
2090IF A$="1" R%=R%EOR 1
2100IF A$="2" S%=S%EOR 1
2110IF A$="3":PROCview(B$)
2130IF A$="4":RUN
2140IF A$="*" PROCoscli
2150ENDPROC
2160DEFPROCview(A$)
2170F%=OPENIN A$
2180C%=EXT#F%/100
2190PRINT''TAB(2)" (V)iew All. "
2200PRINT'TAB(2)" (S)earch. View all
after match. "
2210PRINT'TAB(2)" S(e)arch. + Search
after match. "
2220REPEAT
2230A$=CHR$(GET OR 32)
2240UNTILINSTR("sve",A$)
2250IFINSTR("se",A$) PROCsearch:VDU3:EN
DPROC
2260CLS
2270IF S%=0 PRINT''" Press SHIFT to s
croll the text. "''
2280IF R%=1 VDU2
2290REPEAT
2300PRINTFNin;
2310IF R%=1 PRINT
2320UNTILEOF#F%
2330CLOSE#F%
2340VDU3
2350PRINT''TAB(8)" Press a Key. "
2360REPEATUNTILGET
2370ENDPROC
2380DEFPROCsearch
2390D$=""
2400IF A$="e" E%=1: PRINT''" Search.
+ Search after match. " ELSE E%=0:PRIN
T''" Search. View all after match. "
2410PRINT''TAB(8)" Enter search string.
"
2420PRINTTAB(8)" NOT case sensitive."''
2430REPEAT:INPUTLINE A$:UNTILA$<>""
2440Target$=FNlower
2450CLS
2460IF S%=0 PRINT''" Searching. SHIFT
to scroll text. "'' ELSE PRINT''" S
earching. "''
2470IF R%=1 VDU2
2480REPEAT
2490A$=FNin
2500IF E%<> 2 PROCmatch ELSE PRINTA$;:I
F R%=1 PRINT
2510IF R%=0:VDU133:PRINTSTR$INT(PTR#F%/
C%);"%":VDU11,13
2520UNTILEOF#F%
2530CLOSE#F%
2540VDU3
2550PRINT''TAB(3)" Finished. Press a
Key "''
2560*FX21
2570REPEATUNTILGET
2580ENDPROC
2590DEFFNlower
2600$store%=A$
2610CALL &900
2620=$store%
2630DEFFNin
2640A$=""
2650FORL%=1TO40
2660A%=BGET#F%
2670REM
2680A$=A$+CHR$A%
2690IF LEFT$(A$,1)=" " D$=A$
2700NEXT
2710=A$
2720DEFPROCmatch
2730C$=A$
2740Found$=FNlower
2750IF C$=D$ C$=""
2760IF INSTR(Found$,Target$):PRINT D$;C
$;:IF E%=0 E%=2
2770IF INSTR(Found$,Target$):IF R%=1:PR
INT
2780ENDPROC
2790DEFPROCoscli
2800PRINT"*";
2810INPUT""D$
2820OSCLI D$
2830PRINT'" Press a Key"
2840REPEATUNTILGET
2850ENDPROC