10 REM*Basic 20 REMCHAIN"$.!Boot" 30 *Exec 40 REM *** 50 REM First three lines MUST NOT be edited 60 REM 8BS Menu, S.Flintham. 70 REM Modified by J.Ripley, C.J.Richardson, J.G.Harston, V2.10 80 MODE&87:VDU23;8202;0;0;0; 90 PROCa:PROCb 100 ONERRORVDU3:MODE7:REPORT:PRINT" at line ";ERL:PROCc("FX21"):PROCc("KEY0 LIST "+STR$(ERL)+"|M"):PROCc("FX138,0,128"):PROCd:END 110 REPEATe$=FNf:IFASCe$<>27:PROCg(e$) 120 UNTILASCe$=27:MODE7:PROCd:END 130 : 140 DEFPROCa:*FX4,1 150 *FX225,128 160 *FX229,1 170 ENDPROC 180 DEFPROCd:*FX4 190 *FX225,1 200 *FX229 210 ENDPROC 220 : 230 DEFFNS:IFTOP-PAGE>&2200:PRINT"Too long" 240 ="$.!Boot" 250 DEFPROCb:*FX12 260 v$="MODE3TEXT MODE7TTXT ARCHIARCHICHAINBASICLOAD LOAD LIST LIST " 270 d%=2:REM Description 280 i%=4:REM ID 290 p%=6:REM Menu outline 300 q%=5:REM "8-Bit Software" 310 r%=4:REM Date + issue 320 s%=3:REM Menu heading 330 t%=2:REM Letters 340 u%=6:REM Menu items 350 v%=4:REM Help prompt 360 w%=4:REM Selection bar 370 x%=5:REM Help screen title 380 y%=6:REM Help screen text 390 z%=7:REM Help screen prompt 400 aa%=7:REM Scroll screen text 410 ba%=7:REM Unused 420 : 430 DIMh%256,l%(14):i$=FNj 440 PROCfs("$"):RESTORE:READ n$,m$ 450 IFLEFT$(STR$(V%),5)="985"+n$:f%=VAL(MID$(STR$(V%),6,2)):e%=VAL(MID$(STR$(V%),8,2)) ELSE f%=1:e%=1 460 VDU26:CLS:PRINTCHR$(128+i%);" I.D. ";i$;" ";CHR$(144+p%);"ÿ¯¯¯¯¯¯¯¥ÿ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ÿ"; 470 PRINTCHR$(144+p%);"ÿ¯¯¯¯¯¯¯¯¯¯¯ª¯¯¯¯¯¯¯¯";CHR$(128+r%);" Issue ";LEFT$(n$,2);"-1 ";CHR$(144+p%);"ÿ"; 480 PRINTCHR$(144+p%);"ÿ";CHR$(144+q%);"¶£Ž ·éšè° ¶© °à€ôà à ° °à    ";CHR$(144+p%);"ÿ"; 490 PRINTCHR$(144+p%);"ÿ";CHR$(144+q%);"¶£Ž¡·éêê  ²éêê꡵êèêàîê œ¡";CHR$(128+r%);LEFT$(m$,8);CHR$(144+p%);"ÿ"; 500 PRINTCHR$(144+p%);"";CHR$(144+q%);"¢£ £¡¢ ¡ ¢¡ ¡¢ ¢ ¡¡ £¢ ¢¡   ";CHR$(145);" "; 510 FORn%=1TO18:PRINTCHR$(144+p%);"ÿ";SPC(36);CHR$(144+p%);"ÿ";:NEXT 520 PRINTCHR$(144+p%);"ÿüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÿ"; 530 VDU28,2,22,37,5 540 ENDPROC 550 DEFPROCfs(A$):LOCALA%,Y%,E%,n%:fs%=(USR&FFDA)AND&FF:l$=A$:IFA$="":l$="$.Library":IFfs%=4 ORfs%=65:l$=":0.%" 560 PROCc("LIB "+l$):IFA$="":IFfs%>4:n%=OPENIN("%"):IFn%:CLOSE#n%:l$="%" 570 t3$=l$+".7to3":t7$=l$+".3to7":sc$=l$+".Scroll":ar$=l$+".Archive":ENDPROC 580 : 590 DEFPROCc($h%):LOCALX%,Y% 600 X%=h%:Y%=X%DIV256:CALL&FFF7 610 ENDPROC 620 DEFPROCos(c$):IFLEFT$(c$,1)="*":PROCc(c$):ENDPROC 630 I%=INSTR(c$," "):IFI%:PROCc("KEY0 |@"+MID$(c$,I%+1)+"|M"):*FX138,0,192 640 CHAINc$:ENDPROC 650 DEFFNj=$(PAGE+&2F) 660 DEFFNf:LOCALt$,n%,m$,s$,g%,m% 670 CLS:PROCla(f%):READt$,n% 680 IFn%>14:n%=14 690 PRINTTAB(0,0);CHR$(128+s%);TAB(1+(17.5-(LEN(t$)/2)),0);t$ 700 FORm%=1TOn%:READm$,s$,s$,s$ 710 o%=VALs$:IFo%=0:o%=-1-INSTR(v$,LEFT$(s$,5))DIV10 720 l%(m%)=o%:PRINTTAB(1,1+m%);" ";CHR$(128+t%);CHR$(64+m%);CHR$(128+u%);m$;TAB(35,1+m%);CHR$156;:NEXT 730 PRINTTAB(1,1+e%);CHR$(128+w%);CHR$157; 740 PRINTTAB(0,17);CHR$(128+v%);"Press";CHR$129;"f0";CHR$(128+v%);"for help.";CHR$(128+d%); 750 REPEAT:REPEAT*FX21 760 PRINTTAB(20,17);:IFl%(e%)>0:PRINT"Another menu ";ELSE PRINTMID$("Runs Code 80 Column Text40 Column TextArchive Basic Program Loads Basic Lists Basic -7 -8 -9 ",-14*l%(e%)+1,14); 770 g%=GET:IF(g%AND&E0)=&60:g%=g%-32 780 UNTILINSTR(CHR$128+CHR$138+CHR$139+CHR$13+"48OPRSX",CHR$g%)OR(g%>64 ANDg%<=64+n%)OR(g%=27ANDINKEY-1) 790 PRINTTAB(1,1+e%);" "; 800 IFg%=138:e%=e%MODn%+1 810 IFg%=139:e%=e%-1:IFe%=0:e%=n% 820 IFg%>64ANDg%<=64+n%:e%=g%-64 830 PRINTTAB(1,1+e%);CHR$(128+w%);CHR$157; 840 V%=985000000+VALn$*10000+f%*100+e% 850 UNTILINSTR("48OPRSX"+CHR$128+CHR$27+CHR$13,CHR$g%):IFg%=128:PROCma 860 PRINTTAB(5,1+e%);">"; 870 =CHR$(g%)+STR$(e%) 880 : 890 DEFPROCma:LOCALg%:CLS 900 PRINTTAB(5,0);CHR$(128+x%);"Using the 8BS menu system" 910 PRINTTAB(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 option to";CHR$(128+y%);"position it immediately." 920 PRINT'CHR$(128+y%);"Press RETURN to load or view the"'CHR$(128+y%);"highlighted program/article. If it"'CHR$(128+y%);"is an article, pressing 8 will"'CHR$(128+y%);"display it in 80 columns. Pressing" 930 PRINTCHR$(128+y%);"4 will display it in 40 columns," 940 PRINTCHR$(128+y%);"P will print it out and pressing"'CHR$(128+y%);"O will allow you to view it in"'CHR$(128+y%);"teletext mode with your own choice"'CHR$(128+y%);"of scrolling keys." 950 PRINTTAB(0,16);CHR$(128+z%);"Press";CHR$(129);"f0";CHR$(128+z%);"for more help or ESCAPE"'CHR$(128+z%);"to return to the menu..."; 960 REPEAT:*FX21 970 g%=GET:UNTILg%=27ORg%=128 980 IFg%=27:ENDPROC 990 CLS:PRINTTAB(5,0);CHR$(128+x%);"Using the 8BS menu system" 1000 PRINTTAB(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. Pressing" 1010 PRINTCHR$(128+y%)"Return will run/load/list the"'CHR$(128+y%)"program with the default option." 1020 PRINT'CHR$(128+y%);"Pressing SHIFT and ESCAPE together"'CHR$(128+y%);"at the menu will return you to"'CHR$(128+y%);"BASIC." 1030 PRINTTAB(0,16);CHR$(128+z%);"Press ESCAPE to return to the"'CHR$(128+z%);"menu..."; 1040 REPEAT:*FX21 1050 UNTILGET=27:ENDPROC 1060 : 1070 DEFPROCg(e$):IFASCe$=128:ENDPROC 1080 LOCALn%,x$,d$,f$,s$ 1090 PROCla(f%):READd$,n% 1100 FORn%=1TOVAL(MID$(e$,2)) 1110 READx$,d$,f$,s$:NEXT:VDU30,10,152 1120 IFVALs$>99:IFVALs$DIV100=fs%:s$=RIGHT$(s$,2) ELSE IFVALs$>99:s$="0" 1130 o%=VALs$:IFo%>0:f%=o%:e%=1:ENDPROC 1140 IFo%=0 ANDs$="0":ENDPROC 1150 e$=CHR$ASCe$:PROCd:IFd$="%":d$=l$ 1160 REM IFfs%=4 AND MID$(f$,2,1)="/":f$=LEFT$(f$,1)+"."+MID$(f$,3) 1170 REM IFfs%=4 AND x$<>"":d$=x$ 1180 IFfs%=4:f$=LEFT$(f$,7-2*(MID$(f$,2,1)=".")) 1190 IFo%=0:o%=-1-INSTR(v$,LEFT$(s$,5))DIV10 1200 IFo%=-1:PROCu:ENDPROC 1210 IFo%=-2:PROCv:ENDPROC 1220 IFd$<>"":PROCc("DIR "+d$) 1230 IFo%=-3:PROCos(ar$+" -quit $.!Boot|M -e "+f$):ENDPROC 1240 IFo%>-7 ANDo%<-2 ANDe$<>CHR$13:o%=INSTR("XSR",e$)-7 1250 IFo%=-4:CHAINf$ 1260 IFo%=-5:PROCc("KEY0 LOAD"""+f$+"""|F|M"):PROCc("FX21"):PROCc("FX138,0,128"):VDU22,7:END 1270 IFo%=-6:PROCc("KEY0 LOAD"""+f$+"""|MLIST|F|N|M|O"):PROCc("FX21"):PROCc("FX138,0,128"):VDU22,7:END 1280 PROCos(s$+" "+f$):END 1290 ENDPROC 1300 : 1310 DEFPROCu 1320 IFd$<>"":f$=d$+"."+f$ 1330 IFe$="4":PROCos(t7$+" "+f$) 1340 PROCos(sc$+" -lp *lp -4 "+t7$+" "+f$+" -quit $.!Boot") 1350 ENDPROC 1360 DEFPROCv 1370 IFd$<>"":f$=d$+"."+f$ 1380 IFe$="8":Z%=0:PROCos(t3$+" "+f$) 1390 IFe$="P":Z%=1:PROCos(t3$+" "+f$) 1400 IFe$<>"O":PROCd:PROCc("KEY0 *Load "+f$+"|MCALL &1904|M"):PROCc("FX138,0,128"):END 1410 CLS:PRINTCHR$(128+aa%);"Please press the key to use to"'CHR$(128+aa%);"scroll up...":?&80=0:?&80=FNya 1420 PRINT'CHR$(128+aa%);"Please press the 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 1440 VDU21:END 1450 ENDPROC 1460 DEFFNya:LOCALA%,B%:A%=&7A 1470 REPEAT:B%=255-((USR&FFF4)AND&FF00)DIV256:UNTILB% ANDB%<>182ANDB%<>?&80 1480 =B% 1490 DEFPROCla(f%):LOCALm$,n%:RESTORE:READm$,m$:IFf%<2:ENDPROC 1500 REPEATREADm$,n%:REPEAT 1510 READm$,m$,m$,m$:n%=n%-1:UNTILn%<1:f%=f%-1:UNTILf%<2:ENDPROC 1520 : 1530 REM Issue num, Issue Date 1540 DATA 55,20/03/97 1550 : 1560 DATA Magazine Disc Menu,7 1570 DATA About This Disc,:0,Thi1,-2 1580 DATA Editorial,:0,Editori,-1 1590 DATA Program Info Menu,,,2 1600 DATA Messages Menu,,,3 1610 DATA Articles Menu,,,4 1620 DATA Adverts Menu,,,5 1630 DATA 8BS Messaging System,:0,SendMes,-4 1640 : 1650 DATA Program Info,10 1660 DATA Program Info Collection,:0,Doc1,-2 1670 DATA Messaging System Info 1,:2,MesInf,-2 1680 DATA Messaging System Info 2,:2,MesInfT,-2 1690 DATA Colour Dump,:2,CTINFO,-1 1700 DATA Primes,:2,Primes,-1 1710 DATA Countdown,:2,CD/Info,-2 1720 DATA ASCII>Message,:2,ASC2Doc,-2 1730 DATA Check Message,:2,ChkInf,-2 1750 DATA Messages Menu,,,3 1760 DATA Return To Main Menu,,,1 1770 : 1780 DATA Messages,8 1790 DATA To You,:0,uu,-2 1800 DATA Comments on Programs,:0,Comment,-2 1810 DATA Help Offered,:0,HelpYou,-2 1820 DATA Help Wanted,:0,HelpMe,-2 1830 DATA General Messages,:0,Gen1,-2 1840 DATA Last Messages,:2,Last,-2 1850 DATA Articles Menu,,,4 1860 DATA Return To Main Menu,,,1 1870 : 1880 DATA Articles,9 1890 DATA Regular Contacts,:0,Contact,-2 1900 DATA Test File For Witz,:2,TestFil,-1 1910 DATA Games Reviewers Wanted,:2,GrevS,-1 1920 DATA A Tale of Woe,:2,OhWoe,-2 1930 DATA Viewstore Benchmarks,:2,VBench,-1 1940 DATA Humour,:2,JokePun,-1 1950 DATA Pun Tests,:2,Tests,-1 1960 DATA Adverts Menu,,,5 1970 DATA Return To Main Menu,,,1 1980 : 1990 DATA Adverts Menu,10 2000 DATA 8BS Advert,:2,8BSAD,-1 2010 DATA For Sale,:0,ForSale,-2 2020 DATA Wanted,:0,Wanted,-2 2030 DATA Superior Software Offer,:0,SupSoft,-1 2040 DATA ProAction Advert,:2,ProAct,-1 2050 DATA D6G Advert,:2,D6Gad,-1 2060 DATA 6EE Advert,:2,6EEad,-1 2070 DATA BUG Advert,:2,BUGADS,-2 2080 DATA BUG User Group,:2,BUGInfo,-2 2090 DATA Return To Main Menu,,,1 2100 :