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