10REM¶*Basic
20REM¶CHAIN"$.!Boot"
30*Exec
40REM ***
50REM First three lines MUST NOT be e
dited
60REM 8BS Menu, S.Flintham.
70REM Modified by J.Ripley, C.J.Richa
rdson, J.G.Harston, V2.10
80MODE&87:VDU23;8202;0;0;0;
90PROCa:PROCb
100ONERRORVDU3:MODE7:REPORT:PRINT" at
line ";ERL:PROCc("FX21"):PROCc("KEY0 LIS
T "+STR$(ERL)+"|M"):PROCc("FX138,0,128")
:PROCd:END
110REPEATe$=FNf:IFASCe$<>27:PROCg(e$)
120UNTILASCe$=27:MODE7:PROCd:END
130:
140DEFPROCa:*FX4,1
150*FX225,128
160*FX229,1
170ENDPROC
180DEFPROCd:*FX4
190*FX225,1
200*FX229
210ENDPROC
220:
230DEFFNS:IFTOP-PAGE>&2200:PRINT"Too l
ong"
240="$.!Boot"
250DEFPROCb:*FX12
260v$="MODE3TEXT MODE7TTXT ARCHIARCHIC
HAINBASICLOAD LOAD LIST LIST "
270d%=2:REM Description
280i%=2:REM ID
290p%=4:REM Menu outline
300q%=5:REM "8-Bit Software"
310r%=6:REM Date + issue
320s%=6:REM Menu heading
330t%=2:REM Letters
340u%=3:REM Menu items
350v%=3:REM Help prompt
360w%=4:REM Selection bar
370x%=3:REM Help screen title
380y%=5:REM Help screen text
390z%=7:REM Help screen prompt
400aa%=7:REM Scroll screen text
410ba%=7:REM Unused
420:
430DIMh%256,l%(14):i$=FNj
440PROCfs("$"):RESTORE:READ n$,m$
450IFLEFT$(STR$(V%),5)="986"+n$:f%=VAL
(MID$(STR$(V%),6,2)):e%=VAL(MID$(STR$(V%
),8,2)) ELSE f%=1:e%=1
460VDU26:CLS:PRINTCHR$(128+i%);" I.D.
";i$;" ";CHR$(144+p%);"¶///////%¶///////
//////////¶";
470PRINTCHR$(144+p%);"¶///////////*///
/////";CHR$(128+r%);" Issue ";LEFT$(n
$,2);"-2 ";CHR$(144+p%);"¶";
480PRINTCHR$(144+p%);"¶";CHR$(144+q%);
"6£4 7i(h0 6) 0`$t` ` 0 0` ";CH
R$(144+p%);"¶";
490PRINTCHR$(144+p%);"¶";CHR$(144+q%);
"6£4!7ijj 2ijjj!5jhj`nj =!";CHR$(128+r%
);LEFT$(m$,8);CHR$(144+p%);"¶";
500PRINTCHR$(144+p%);"""£ £!" ! "! !" " !! £" "! ";CH
R$(145);" ";
510FORn%=1TO18:PRINTCHR$(144+p%);"¶";S
PC(36);CHR$(144+p%);"¶";:NEXT
520PRINTCHR$(144+p%);"¶|||||||||||||||
||||||||||||||||||||||¶";
530VDU28,2,22,37,5
540ENDPROC
550DEFPROCfs(A$):LOCALA%,Y%,E%,n%:fs%=
(USR&FFDA)AND&FF:l$=A$:IFA$="":l$="$.Lib
rary":IFfs%=4 ORfs%=65:l$=":0.%"
560PROCc("LIB "+l$):IFA$="":IFfs%>4:n%
=OPENIN("%"):IFn%:CLOSE#n%:l$="%"
570t3$=l$+".7to3":t7$=l$+".3to7":sc$=l
$+".Scroll":ar$=l$+".Archive":ENDPROC
580:
590DEFPROCc($h%):LOCALX%,Y%
600X%=h%:Y%=X%DIV256:CALL&FFF7
610ENDPROC
620DEFPROCos(c$):IFLEFT$(c$,1)="*":PRO
Cc(c$):ENDPROC
630I%=INSTR(c$," "):IFI%:PROCc("KEY0 |
@"+MID$(c$,I%+1)+"|M"):*FX138,0,192
640CHAINc$:ENDPROC
650DEFFNj=$(PAGE+&2F)
660DEFFNf:LOCALt$,n%,m$,s$,g%,m%
670CLS:PROCla(f%):READt$,n%
680IFn%>14:n%=14
690PRINTTAB(0,0);CHR$(128+s%);TAB(1+(1
7.5-(LEN(t$)/2)),0);t$
700FORm%=1TOn%:READm$,s$,s$,s$
710o%=VALs$:IFo%=0:o%=-1-INSTR(v$,LEFT
$(s$,5))DIV10
720l%(m%)=o%:PRINTTAB(1,1+m%);" ";CHR
$(128+t%);CHR$(64+m%);CHR$(128+u%);m$;TA
B(35,1+m%);CHR$156;:NEXT
730PRINTTAB(1,1+e%);CHR$(128+w%);CHR$1
57;
740PRINTTAB(0,17);CHR$(128+v%);"Press"
;CHR$129;"f0";CHR$(128+v%);"for help.";C
HR$(128+d%);
750REPEAT:REPEAT*FX21
760PRINTTAB(20,17);:IFl%(e%)>0:PRINT"A
nother menu ";ELSE PRINTMID$("Runs Code
80 Column Text40 Column TextArchive
Basic Program Loads Basic Lists
Basic -7 -8 -9
",-14*l%(e%)+1,14);
770g%=GET:IF(g%AND&E0)=&60:g%=g%-32
780UNTILINSTR(CHR$128+CHR$138+CHR$139+
CHR$13+"48OPRSX",CHR$g%)OR(g%>64 ANDg%<=
64+n%)OR(g%=27ANDINKEY-1)
790PRINTTAB(1,1+e%);" ";
800IFg%=138:e%=e%MODn%+1
810IFg%=139:e%=e%-1:IFe%=0:e%=n%
820IFg%>64ANDg%<=64+n%:e%=g%-64
830PRINTTAB(1,1+e%);CHR$(128+w%);CHR$1
57;
840V%=986000000+VALn$*10000+f%*100+e%
850UNTILINSTR("48OPRSX"+CHR$128+CHR$27
+CHR$13,CHR$g%):IFg%=128:PROCma
860PRINTTAB(5,1+e%);">";
870=CHR$(g%)+STR$(e%)
880:
890DEFPROCma:LOCALg%:CLS
900PRINTTAB(5,0);CHR$(128+x%);"Using t
he 8BS menu system"
910PRINTTAB(0,2);CHR$(128+y%);"Use the
up and down cursor keys to"'CHR$(128+y%
);"move the bar or press the letter"'CHR
$(128+y%);"next to the required menu opt
ion to";CHR$(128+y%);"position it immedi
ately."
920PRINT'CHR$(128+y%);"Press RETURN to
load or view the"'CHR$(128+y%);"highlig
hted program/article. If it"'CHR$(128+y%
);"is an article, pressing 8 will"'CHR$(
128+y%);"display it in 80 columns. Press
ing"
930PRINTCHR$(128+y%);"4 will display i
t in 40 columns,"
940PRINTCHR$(128+y%);"P will print it
out and pressing"'CHR$(128+y%);"O will a
llow you to view it in"'CHR$(128+y%);"te
letext mode with your own choice"'CHR$(1
28+y%);"of scrolling keys."
950PRINTTAB(0,16);CHR$(128+z%);"Press"
;CHR$(129);"f0";CHR$(128+z%);"for more h
elp or ESCAPE"'CHR$(128+z%);"to return t
o the menu...";
960REPEAT:*FX21
970g%=GET:UNTILg%=27ORg%=128
980IFg%=27:ENDPROC
990CLS:PRINTTAB(5,0);CHR$(128+x%);"Usi
ng the 8BS menu system"
1000PRINTTAB(0,2)CHR$(128+y%)"If it is
a Basic program, pressing"'CHR$(128+y%)"
R will run it, S will load it, and"'CHR$
(128+y%)"X will load and list it. Pressi
ng"
1010PRINTCHR$(128+y%)"Return will run/l
oad/list the"'CHR$(128+y%)"program with
the default option."
1020PRINT'CHR$(128+y%);"Pressing SHIFT
and ESCAPE together"'CHR$(128+y%);"at th
e menu will return you to"'CHR$(128+y%);
"BASIC."
1030PRINTTAB(0,16);CHR$(128+z%);"Press
ESCAPE to return to the"'CHR$(128+z%);"m
enu...";
1040REPEAT:*FX21
1050UNTILGET=27:ENDPROC
1060:
1070DEFPROCg(e$):IFASCe$=128:ENDPROC
1080LOCALn%,x$,d$,f$,s$
1090PROCla(f%):READd$,n%
1100FORn%=1TOVAL(MID$(e$,2))
1110READx$,d$,f$,s$:NEXT:VDU30,10,152
1120IFVALs$>99:IFVALs$DIV100=fs%:s$=RIG
HT$(s$,2) ELSE IFVALs$>99:s$="0"
1130o%=VALs$:IFo%>0:f%=o%:e%=1:ENDPROC
1140IFo%=0 ANDs$="0":ENDPROC
1150e$=CHR$ASCe$:PROCd:IFd$="%":d$=l$
1160REM IFfs%=4 AND MID$(f$,2,1)="/":f$
=LEFT$(f$,1)+"."+MID$(f$,3)
1170REM IFfs%=4 AND x$<>"":d$=x$
1180IFfs%=4:f$=LEFT$(f$,7-2*(MID$(f$,2,
1)="."))
1190IFo%=0:o%=-1-INSTR(v$,LEFT$(s$,5))D
IV10
1200IFo%=-1:PROCu:ENDPROC
1210IFo%=-2:PROCv:ENDPROC
1220IFd$<>"":PROCc("DIR "+d$)
1230IFo%=-3:PROCos(ar$+" -quit $.!Boot|
M -e "+f$):ENDPROC
1240IFo%>-7 ANDo%<-2 ANDe$<>CHR$13:o%=I
NSTR("XSR",e$)-7
1250IFo%=-4:CHAINf$
1260IFo%=-5:PROCc("KEY0 LOAD"""+f$+"""|
F|M"):PROCc("FX21"):PROCc("FX138,0,128")
:VDU22,7:END
1270IFo%=-6:PROCc("KEY0 LOAD"""+f$+"""|
MLIST|F|N|M|O"):PROCc("FX21"):PROCc("FX1
38,0,128"):VDU22,7:END
1280PROCos(s$+" "+f$):END
1290ENDPROC
1300:
1310DEFPROCu
1320IFd$<>"":f$=d$+"."+f$
1330IFe$="4":PROCos(t7$+" "+f$)
1340PROCos(sc$+" -lp *lp -4 "+t7$+" "+f
$+" -quit $.!Boot")
1350ENDPROC
1360DEFPROCv
1370IFd$<>"":f$=d$+"."+f$
1380IFe$="8":Z%=0:PROCos(t3$+" "+f$)
1390IFe$="P":Z%=1:PROCos(t3$+" "+f$)
1400IFe$<>"O":PROCd:PROCc("KEY0 *Load "
+f$+"|MCALL &1904|M"):PROCc("FX138,0,128
"):END
1410CLS:PRINTCHR$(128+aa%);"Please pres
s the key to use to"'CHR$(128+aa%);"scro
ll up...":?&80=0:?&80=FNya
1420PRINT'CHR$(128+aa%);"Please press t
he key to use to"'CHR$(128+aa%);"scroll
down...":*FX21
1430?&81=FNya:PROCd:PROCc("KEY0 *LOAD "
+f$+"|M?&1974=?&80:?&1981=?&81:CALL&1904
|F|M"):*FX138,0,128
1440VDU21:END
1450ENDPROC
1460DEFFNya:LOCALA%,B%:A%=&7A
1470REPEAT:B%=255-((USR&FFF4)AND&FF00)D
IV256:UNTILB% ANDB%<>182ANDB%<>?&80
1480=B%
1490DEFPROCla(f%):LOCALm$,n%:RESTORE:RE
ADm$,m$:IFf%<2:ENDPROC
1500REPEATREADm$,n%:REPEAT
1510READm$,m$,m$,m$:n%=n%-1:UNTILn%<1:f
%=f%-1:UNTILf%<2:ENDPROC
1520:
1530DATA 50,27.06.96
1540:
1550DATA Software Disc Menu,3
1560DATA Utilities Menu 1,,,2
1570DATA Utilities Menu 2,,,3
1580DATA Games And Demos Menu,,,4
1590:
1600DATA Utilities Menu 1,9
1610DATA 8BS Messaging System,:0,SendMe
s,-4
1620DATA When to Ring 8BS,:0,WorkRot,-4
1630DATA List Prime Numbers,:2,Prime,-4
1640DATA Banners Text Printing,:2,Banne
r,-4
1650DATA Maps of Sheffield,:2,ReadMap,-
4
1660DATA Large Text Printing,:2,LfontEd
,-4
1670DATA Interword>ASCII,:0,IW>ASC,-4
1680DATA Utilities Menu 2,,,3
1690DATA Return To Main Menu,,,1
1700:
1710DATA Utilities Menu 2,8
1720DATA Compression,:0,LZSSC,-4
1730DATA Decompression,:0,lZSSD,-4
1740DATA Double Height W/P,:0,MiniWP,-4
1750DATA Arch/De Archiver,:0,Arch`De,-4
1760DATA Lottery Data Editor,:0,UltAlt,
-4
1770DATA 8BS Menu Reader,:0,MenRead,-4
1780DATA Games And Demos Menu,,,4
1790DATA Return To Main Menu,,,1
1800:
1810DATA Games And Demos,7
1820DATA Secret Maze 2,:2,SctMze2,-4
1830DATA Liner,:0,Liner,-4
1840DATA Madness Picture,:2,LoadMad,-4
1850DATA Short Graphics Doodle,:2,Graph
2,-4
1860DATA Music From Poland,:0,MusPol,-4
1870DATA Geordie Brown's Dream PRINTER,
:0,GBDream,-4
1880DATA Return To Main Menu,,,1
1890: