10 REM > MenRead 1.22 20 REM v1.20 19-06-96 JGH: Modified for new menus 30 REM v1.21 23-11-96 JGH: Output to file added 40 REM v1.22 12-07-98 JGH: More menu functions added 50 : 60 DEFFNS="MenRead" 70 MODE7 80 Uon$=CHR$1+CHR$27+CHR$1+CHR$45+CHR$1+CHR$1 90 Uoff$=CHR$1+CHR$27+CHR$1+CHR$45+CHR$1+CHR$0 100 REPEAT 110 MODE7:VDU23;8202;0;0;0;23;2,53;0;0;0;0;0; 120 PRINT'''TAB(4)"8-Bit Software Menu Printout" 130 PRINTTAB(4)"8-Bit Software Menu Printout" 140 PRINT'''"Printout of menu from issue 28 onwards." 150 PRINT" Including new menu from issue 50" 160 PRINT'''TAB(8)"Printer on? Y/N " 170 REPEAT:A$=GET$:UNTILINSTR("YyNn",A$) 180 IF INSTR("Yy",A$):P%=2 ELSE P%=14 190 in%=0:out%=0:A%=0:E%=0:Y%=0:fs%=(USR&FFDA)AND&FF 200 IFfs%=4:OSCLI"DRIVE 0":OSCLI"DIR $" ELSE IFfs%<>5:OSCLI"MOUNT 0" 210 PRINT'TAB(6)"Output to file? Y/N " 220 REPEAT:A$=GET$:UNTILINSTR("YyNn",A$) 230 IF INSTR("Yy",A$):INPUT'TAB(6)"Output filename: "F$:out%=OPENOUT(F$):P%=0 240 MODE&80:ONERROR:REPORT:PROCClose:PRINT:END 250 T%=0:in%=OPENIN"Menu":IFin%:IFEXT#in%<&1800:CLOSE#in%:in%=0 260 IFin%=0:T%=1:in%=OPENIN"!Boot":PTR#in%=EXT#in%DIV2 270 Issue$=FNissue:Date$=FNdate 280 VDUP%:IF P%=14 PRINT"Press SHIFT to scroll text." 290 A%=FNfx(199,out%):PRINTTAB(8);:IFP%=2:PRINTUon$; 300 PRINT "8-Bit Software Issue ";Issue$;" (";Date$;") ";MID$("HA",3-fs%DIV8);"DFS Version";FNcr;:IFP%=2:PRINTUoff$; 310 PRINTTAB(5);:IFP%=2:PRINTUon$; 320 PRINT"Program description. Type. Program name."FNcr; 330 IFP%=2:PRINTUoff$; 340 IFT%=0:PTR#in%=&1300 350 REPEAT:PROCmenu:REPEATUNTILBGET#in%=&D OR EOF#in% 360 UNTILEOF#in%:CLOSE#in%:in%=0:IFP%=2:VDU3 370 IFout%:CLOSE#out%:out%=0:A%=FNfx(199,0) 380 PRINT'''"Insert next disk and press a key, or Escape to end";:IFGET 390 UNTILFALSE:END 400 : 410 DEFPROCmenu:REPEATUNTILBGET#in%=&DC OREOF#in%:REM Find DATA statement 420 IFEOF#in%:ENDPROC 430 MenTit$=FNgt:Num%=VALFNgt:IFP%=2:PRINTUon$; 440 PRINTFNcr;MenTit$;FNcr;:IFP%=2:PRINTUoff$; 450 FORL%=1TO Num%:PTR#in%=PTR#in%+5:REM Move to next line 460 Desc$=FNgt:IFT%=0:Act$=FNgt 470 Dir$=FNgt:Name$=FNgt:Asc$=FNgt:IFT%=0:Ttx$=FNgt:Opt%=VALFNgt 480 IFDir$<>"":Dir$=Dir$+"." 490 IFT%=0:Opt%=VALAsc$+VALTtx$ 500 IFT%=1:Opt%=VALAsc$:IFOpt%=0:Opt%=-1-INSTR("MODE3TEXT MODE7TTXT ARCHIARCHICHAINBASICLOAD LOAD LIST LIST ",LEFT$(Asc$,5))DIV10 510 IFOpt%>0:NEXT:ENDPROC 520 PRINTTAB(5)CHR$(L%+64);": ";Desc$;TAB(38);MID$("Prog Text Ttxt Arch BasicBasicBasic",1-5*Opt%,5); 530 PRINTTAB(45);Dir$;Name$;FNcr; 540 NEXT:ENDPROC 550 : 560 DEFFNgt:A$="":REPEATA%=BGET#in% 570 IFA%<>&2C AND A%<>&D AND A%>31 AND A%<127:A$=A$+CHR$A% 580 UNTILA%=&2C OR A%=&D:IFLEFT$(A$,1)=" ":REPEATA$=MID$(A$,2):UNTILLEFT$(A$,1)<>" " 590 =LEFT$(A$,LENA$+(RIGHT$(A$,1)="""")) 600 DEFFNissue:L%=0:REPEAT:IFBGET#in%=&6C:IFBGET#in%=&24:IFBGET#in%=&3D:IFBGET#in%=&22:L%=TRUE 610 UNTILL% OR T%>0:IFT%=1:REPEATREPEATUNTILBGET#in%=&D:PTR#in%=PTR#in%+3:UNTILBGET#in%=&DC 620 =FNgt 630 DEFFNdate:L%=0:REPEAT:IFBGET#in%=&6D:IFBGET#in%=&24:IFBGET#in%=&3D:IFBGET#in%=&22:L%=TRUE 640 UNTILL% OR T%>0:IFT%=1:PTR#in%=PTR#in%-1 650 DEFFNcr:PRINTCHR$13;:A%=FNfx(199,0):PRINT:A%=FNfx(199,out%):="" 660 =FNgt 670 DEFFNfx(A%,X%):LOCALY%:Y%=X%DIV256:=((USR&FFF4)AND&FFFF00)DIV256 680 DEFPROCClose:IFout%:A%=out%:out%=0:CLOSE#A% 690 IFin%:A%=in%:in%=0:CLOSE#A% 700 ENDPROC