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.15 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:REM IFDir$="$":END ELSE CHAIN"$.!Boot" 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 CALL CALL LDPICLDPICSCRLOSCRLO" 270 d%=3:REM Description 280 i%=6:REM ID 290 p%=5:REM Menu outline 300 q%=6:REM "8-Bit Software" 310 r%=7:REM Date + issue 320 s%=6:REM Menu heading 330 t%=2:REM Letters 340 u%=6:REM Menu items 350 v%=3:REM Help prompt 360 w%=4:REM Selection bar 370 x%=5:REM Help screen title 380 y%=2: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):X%=h%:Y%=X%DIV256:i$=FNj:REM *DIR$ 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);" ";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$):LOCALn%:fs%=FNfs:Dn$=FNgbpbN(5):drv%=(X%?(22+X%?20))AND&FD 560 l$=A$:IFA$="":l$="$.Library":IFfs%=4 ORfs%=&105:l$=":"+STR$drv%+".%" 570 REM Dir$=FNgbpbN(6):IFDir$<>"$":l$="$."+Dir$+MID$(l$,2) 580 Dir$="$":REM PATCH 590 PROCc("LIB "+l$):IFA$="":IFfs%>4:n%=OPENIN("%"):IFn%:CLOSE#n%:l$="%" 600 t3$=l$+".7to3":t7$=l$+".3to7":sc$=l$+".Scroll":ar$=l$+".Archive":ENDPROC 610 DEFFNfs:LOCALA%,Y%,E%:=(USR&FFDA)AND&FF 620 DEFFNgbpbN(A%):X%!1=X%+20:CALL&FFD1:A%=X%+20+((1+X%?20)AND(A%>5)):A%?(1+?A%)=13:=LEFT$($(A%+1),INSTR($(A%+1)+" "," ")-1) 630 : 640 DEFPROCc($h%):LOCALX%,Y% 650 X%=h%:Y%=X%DIV256:CALL&FFF7 660 ENDPROC 670 DEFPROCos(c$):IFASCc$=42 ORc$="":OSCLIc$:ENDPROC ELSE CHAINc$:ENDPROC 680 DEFFNj=$(PAGE+&2F) 690 DEFFNf:LOCALt$,n%,m$,s$,g%,m% 700 CLS:PROCla(f%):READt$,n0% 710 IFn0%>14:n0%=14 720 PRINTTAB(0,0);CHR$(128+s%);TAB(1+(17.5-(LEN(t$)/2)),0);t$ 730 n%=0:m%=n0%:REPEATREADm$,s$,s$,s$ 740 IFVALs$>99:IFVALs$DIV100=fs%:s$=RIGHT$(s$,2) ELSE IFVALs$>99:s$="0":m$="" 750 o%=VALs$:IFo%=0ANDASCs$<>42:o%=-1-INSTR(v$,LEFT$(s$,5))DIV10 760 IFs$<>"0":n%=n%+1:l%(n%)=o%:PRINTTAB(1,1+n%)" "CHR$(128+t%)CHR$(64+n%)CHR$(128+u%)LEFT$(m$,32);TAB(35,1+m%)CHR$156; 770 m%=m%-1:UNTILm%<1:PRINTTAB(0,1+e%);CHR$(128+w%);CHR$157; 780 PRINTTAB(0,17);CHR$(128+v%);"Press";CHR$129;"f0";CHR$(128+v%);"for help.";CHR$(128+d%); 790 REPEAT:REPEAT*FX21 800 PRINTTAB(20,17);:IFl%(e%)>0:PRINT"Another menu ";ELSE PRINTMID$("Runs Code 80 Column Text40 Column TextArchive Basic Program Loads Basic Lists Basic Calls Basic LDPIC Picture ScrLoad Pictr ",-14*l%(e%)+1,14); 810 g%=GET:IF(g%AND&E0)=&60:g%=g%-32 820 UNTILINSTR(CHR$128+CHR$138+CHR$139+CHR$13+"48OPRSX",CHR$g%)OR(g%>64 ANDg%<=64+n%)OR(g%=27ANDINKEY-1) 830 PRINTTAB(1,1+e%);" "; 840 IFg%=138:e%=e%MODn%+1 850 IFg%=139:e%=e%-1:IFe%=0:e%=n% 860 IFg%>64ANDg%<=64+n%:e%=g%-64 870 PRINTTAB(1,1+e%);CHR$(128+w%);CHR$157; 880 V%=985000000+VALn$*10000+f%*100+e% 890 UNTILINSTR("48OPRSX"+CHR$128+CHR$27+CHR$13,CHR$g%):IFg%=128:PROCma 900 PRINTTAB(5,1+e%);">"; 910 =CHR$(g%)+STR$(e%) 920 : 930 DEFPROCma:LOCALg%:CLS 940 PRINTTAB(5,0);CHR$(128+x%);"Using the 8BS menu system" 950 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." 960 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" 970 PRINTCHR$(128+y%);"4 will display it in 40 columns," 980 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." 990 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..."; 1000 REPEAT:*FX21 1010 g%=GET:UNTILg%=27ORg%=128 1020 IFg%=27:ENDPROC 1030 CLS:PRINTTAB(5,0);CHR$(128+x%);"Using the 8BS menu system" 1040 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" 1050 PRINTCHR$(128+y%)"Return will run/load/list the"'CHR$(128+y%)"program with the default option." 1060 PRINT'CHR$(128+y%);"Pressing SHIFT and ESCAPE together"'CHR$(128+y%);"at the menu will return you to"'CHR$(128+y%);"BASIC." 1070 PRINTTAB(0,16);CHR$(128+z%);"Press ESCAPE to return to the"'CHR$(128+z%);"menu..."; 1080 REPEAT:*FX21 1090 UNTILGET=27:ENDPROC 1100 : 1110 DEFPROCg(e$):IFASCe$=128:ENDPROC 1120 LOCALn%,x$,d$,f$,s$ 1130 PROCla(f%):READd$,n% 1140 FORn%=1TOVAL(MID$(e$,2)) 1150 READx$,d$,f$,s$:IFVALs$>99:IFVALs$DIV100=fs%:s$=RIGHT$(s$,2) ELSE IFVALs$>99:s$="0":n%=n%-1 1160 NEXT:o%=VALs$:IFo%>0:f%=o%:e%=1:ENDPROC 1170 IFo%=0 ANDs$="0":ENDPROC 1180 VDU26,31,0,21:e$=CHR$ASCe$:PROCd:IFd$="%":d$=l$:REM ...152 1190 I%=INSTR(d$,"//"):IFI%:d$=MID$(d$,1+((I%+1)AND(fs%<>4)),I%-1-128*(fs%<>4)) 1200 IFfs%=4 AND MID$(f$,2,1)="/":f$=LEFT$(f$,1)+"."+MID$(f$,3) 1210 IFfs%=4:f$=LEFT$(f$,7-2*(MID$(f$,2,1)=".")) 1220 IFfs%=4:IFLEFT$(d$,1)=":":d$=":"+STR$(drv%ORVALMID$(d$,2))+MID$(d$,3) 1230 IFLEFT$(d$,1)="$":IFDir$<>"$":d$="$."+Dir$+MID$(d$,2) 1240 IFo%=0:o%=INSTR(v$,LEFT$(s$,5)):o%=(-1-o%DIV10)AND(o%>0) 1250 IFo%=-1:PROCu:ENDPROC 1260 IFo%=-2:PROCv:ENDPROC 1270 IFd$<>"":PROCc("Dir "+d$) 1280 IFo%=-3:PROCos(ar$+" -quit $.!Boot|M -e "+f$):ENDPROC 1290 IFo%>-7 ANDo%<-2 ANDe$<>CHR$13:o%=INSTR("XSR",e$)-7 1300 IFo%=-4:CHAINf$ 1310 IFo%=-5:PROCKey("*Load "+f$+"|F|M") 1320 IFo%=-6:PROCKey("LOAD """+f$+"""|MLIST|F|N|M|O") 1330 IFo%=-7:PROCos(f$+" -quit $.!Boot"):END 1340 IFo%=-8:PROCKey("*LdPic "+f$+"|F|M") 1350 IFo%=-9:PROCKey("*ScrLoad "+f$+"|F|M") 1360 I%=INSTR(s$,"//"):IFI%:REPEATOSCLILEFT$(s$,I%-1):s$=MID$(s$,I%+2):I%=INSTR(s$,"//"):UNTILI%=0:IFs$="RUN":RUN 1370 PROCos(s$+" "+f$):END 1380 ENDPROC 1390 : 1400 DEFPROCu 1410 IFd$<>"":f$=d$+"."+f$ 1420 IFe$="4":PROCos(t7$+" "+f$) 1430 PROCos(sc$+" -lp *lp -4 "+t7$+" "+f$+" -quit $.!Boot") 1440 ENDPROC 1450 DEFPROCv 1460 IFd$<>"":f$=d$+"."+f$ 1470 IFe$="8":Z%=0:PROCos(t3$+" "+f$) 1480 IFe$="P":Z%=1:PROCos(t3$+" "+f$) 1490 IFe$<>"O":PROCd:PROCc("Run "+f$):END 1500 CLS:PRINTCHR$(128+aa%);"Please press the key to use to"'CHR$(128+aa%);"scroll up...":?&80=0:?&80=FNya 1510 PRINT'CHR$(128+aa%);"Please press the key to use to"'CHR$(128+aa%);"scroll down...":*FX21 1520 ?&81=FNya:PROCd:PROCKey("*Load "+f$+"|M?&1974=?&80:?&1981=?&81:CALL&1904|F|M"):END 1530 VDU21:END 1540 ENDPROC 1550 DEFPROCKey(A$):PROCc("KEY0 "+A$):PROCc("FX21"):PROCc("FX138,0,192"):VDU22,7:END::ENDPROC 1560 DEFFNya:LOCALA%,B%:A%=&7A 1570 REPEAT:B%=255-((USR&FFF4)AND&FF00)DIV256:UNTILB% ANDB%<>182ANDB%<>?&80 1580 =B% 1590 DEFPROCla(f%):LOCALm$,n%:RESTORE:READm$,m$:IFf%<2:ENDPROC 1600 REPEATREADm$,n%:REPEAT 1610 READm$,m$,m$,m$:n%=n%-1:UNTILn%<1:f%=f%-1:UNTILf%<2:ENDPROC 1620 : 1630 REM Issue num, Issue Date 1640 DATA 66,29/10/98 1650 : 1660 DATA Magazine Disc Menu,8 1670 DATA About This Disc,:0,Thi1,-2 1680 DATA Editorial,:0,Editori,-2 1690 DATA Program Info Menu,,,2 1700 DATA Messages Menu,,,3 1710 DATA Articles Menu,,,4 1720 DATA Adverts Menu,,,5 1730 DATA Games And Demos Menu,,,6 1740 DATA 8BS Messaging System,%,SendMes,-4 1750 : 1760 DATA Program Info,4 1770 DATA Program Info Collection,:0,Doc1,-2 1780 DATA Messaging System Info,%,MsgInf,-2 1790 DATA Messages Menu,,,3 1800 DATA Return To Main Menu,,,1 1810 : 1820 DATA Messages,7 1830 DATA To You,:0,uu,-2 1840 DATA Comments on Programs,:0,Comment,-2 1850 DATA Help Offered,:0,HelpYou,-2 1860 DATA Help Wanted,:0,HelpMe,-2 1870 DATA General Messages,:0,Gen1,-2 1880 DATA Articles Menu,,,4 1890 DATA Return To Main Menu,,,1 1900 : 1910 DATA Articles Menu,14 1920 DATA Regular Contacts,:0,Contact,-2 1930 DATA History of 8BS Part 4,:0,8BSHis4,-1 1940 DATA Dungeon Adventure Soution,:2,Dungeon,-1 1950 DATA Games Hints,:2,Hints,-1 1960 DATA Emerald Isle Solution,:2,EmIslSo,-1 1970 DATA Bored of The Rings Solution,:2,Boresol,-1 1980 DATA S.Hanson Interview,:0,intsh,-1 1990 DATA A.Stephens Interview,:0,intas,-1 2000 DATA Superior Softography,:0,Softog,-1 2010 DATA Play it Again Sam 11 Review,:0,PAS11re,-1 2020 DATA Play it Again Sam 14 Review,:2,PAS14re,-1 2030 DATA Games on The BBC,:0,Games,-1 2040 DATA Adverts Menu,,,5 2050 DATA Return To Main Menu,,,1 2060 : 2070 DATA Adverts Menu,7 2080 DATA 8BS Advert,:0,8BSAD,-1 2090 DATA For Sale,:0,ForSale,-2 2100 DATA Wanted,:0,Wanted,-2 2110 DATA Superior Software Offer,:0,SupSoft,-1 2120 DATA K8G,:2,K8Gad,-1 2130 DATA D5K,:2,D5Kad,-1 2140 DATA Return To Main Menu,,,1 2150 : 2160 DATA Games and Demos,5 2170 DATA Repton Screens,:2.S,Stop,-4 2180 DATA Bubble Bobble,:2.B,Bubble1,-4 2190 DATA Honesty. Poem,:2.S,Honesty,-4 2200 DATA Points of View. Poem,:2.S,PointOv,-4 2210 DATA Return To Main Menu,,,1 2220 :