10 REM" [0x16] [0x07] [0x0E] 20 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ADFS easy menu system. 30 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒADFS easy menu system. 40 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] By C.J.Richardson. 50 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒBy C.J.Richardson. 60 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚This program will save a 70 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚routine to an ADFS disc which 80 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚when *RUN will catalogue a 90 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚directory. Use the symbol next 100 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚to the name of the program to 110 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚run the program or move into 120 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚that directory. Use $ to MOUNT 130 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚another disc or move back to 140 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚ the root directory. 150 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚This program also builds a 155 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ‚!BOOT file and sets OPT 4 3. 160 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] †------------------------------ 170 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒThis program is Public domain. 180 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒPlease do not alter it in any 190 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒway. If you use any of the 200 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒroutines, please mention me 210 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] ƒin the titles. Thanks,CJR. 220 REM" [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] [0x08] †------------------------------ 230 DEFFNS="ADFSMEN" 240 MODE7:PRINT':PROCd("ADFS auto menu. By C.J.Richardson.") 250 PRINT':PROCd("Insert an ADFS disc into drive 0") 260 PRINT':PROCd("Then press a key to save") 270 PRINT':PROCd("the code and !BOOT file") 280 REPEATUNTILGET 290 *ADFS 300 *MOUNT 310 PROCass 320 OSCLI"SA. "+"mcmenu "+STR$~M%+" "+STR$~P%+" "+STR$~T% 330 OSCLI"SPOOL !BOOT":PRINT"*B."'"*DIR$"'"*/mcmenu":OSCLI"SPOOL" 340 *OPT 4 3 350 PROCd("Shift + break to run") 360 END 370 DEFPROCd(A$):PRINTTAB(18-LENA$/2)""A$'TAB(18-LENA$/2)"ƒ"A$:ENDPROC 380 DEFPROCass:M%=&921:REM CODE CAN BE ANYWHERE AS LONG AS NOT OVER THIS PROGRAM! 390 FORL%=0TO2STEP2 400 P%=M% 410 [:OPTL%:.A%:LDA#22:JSR&FFEE:LDA#&7:JSR&FFEE:LDA#0:STA&70:LDA#13:STA&81 420 .J%:JSRC%:BCS N% \ SETUP 430 JSRX%:CMP#2:BNEY%:LDA#129:BNEZ% 440 .Y%:LDA#131:.Z%:JSR&FFEE \ NOT A DIRECTORY 131 IS 129 450 LDA&70:ADC#48:JSR&FFEE:LDA#134:JSR&FFEE:LDY#1:.I%:LDA&76,Y:JSR&FFEE:INY:CPY#11:BNEI%:LDY#7:LDA#32:.E%:JSR&FFEE:DEY:BNE E% \ PRINT COLOURS AND NAMES 460 INC&70:JMP J% \ PRINT FILES 470 .C%:LDY#&20:LDA#0:.B%:STA&900,Y:DEY:BNEB%:.F% \ BLANK OUT 480 LDA#&76:STA&901 \ READ TO &76 490 LDA#1:STA&905 \ READ ONE FILE 500 LDA&70:STA&909 \ NEXT FILE TO READ 510 LDX#&00:LDY#&09:LDA#08:JMP&FFD1 \ READ FILES 520 .N%:JSR&FFE7:LDY#0:.Q%:LDA O%,Y:INY:JSR&FFEE:CMP#13:BNEQ% \ PRINT INFO 530 .D%:LDX#0:LDA#&15:JSR&FFF4 \ FLUSH BUFFER 540 .G%:LDX#0:LDA#&91:JSR&FFF4:TYA:CMP#36:BEQ T%:SBC#48:STA&70:TYA:BEQ G% \ GET KEY 550 JSR C%:BCS D%:JSRX% \ GET SELECTION NAME. IS IT A DIRECTORY? 560 CMP#2:BNEnotdir:LDA#68:STA&73:LDA#73:STA&74:LDA#82:STA&75:LDA#32:STA&76:LDX#&73:LDY#0:JSR&FFF7:JMPA% \ IT'S A DIRECTORY 570 .T%:LDA#&77:JSR&FFF4:LDX#S% MOD 256:LDY#S% DIV 256:JSR&FFF7:LDX#(S%+3)MOD256:LDY#(S%+3)DIV256:JSR&FFF7 \ DISMOUNT THEN MOUNT 580 JMPA% 590 .X%:LDA#&77:STA&90D:LDA#0:STA&90E:LDX#&D:LDY#&9:LDA#&5:JMP&FFDD \ IS IT A DIRECTORY? 600 .notdir:JSRbasch%:BNEnobas% 610 LDA#75:STA&70:LDA#46:STA&71:LDA#48:STA&72:LDA#67:STA&73:LDA#72:STA&74:LDA#46:STA&75:LDA#34:STA&76:LDA#34:STA&81:LDA#124:STA&82:LDA#77:STA&83:LDA#13:STA&84 \ PROGRAM F0 WITH CHAIN 620 LDX#&70:LDY#0:JSR&FFF7 630 LDX#0:LDA#&15:JSR&FFF4 640 LDX#0:LDY#128:LDA#138:JMP&FFF4 \ PRESS F0 650 .nobas%:LDX#&77:LDY#0:JMP&FFF7 \ *RUN THE PROGRAM 660 .basch%:LDA#&40:LDX#&77:LDY#0:JSR&FFCE \ CHECKS FOR BASIC. OPEN PROG NAME 670 STA&74:TAY:JSR&FFD7:CMP#&D:BEQl1%:LDA#1:RTS \ 1st byte &D? No RTS yes continue 680 .l1%:LDA&917:STA&70:DEC&70:DEC&70:LDA&918:STA&71:LDA#0:STA&72:STA&73:LDY&74:LDX#&70:LDA#1:JSR&FFDA \ WRITE POINTER TO NEXT TO EOF 690 LDY&74:JSR&FFD7:CMP#&D:BEQl2:LDA#1:RTS \ IS IT &D? 700 .l2:LDY&74:JSR&FFD7:CMP#&FF:BEQl3:LDA#1:RTS \ IS LAST &FF? 710 .l3:LDA#0:RTS \ IT'S BASIC 720 .S%:EQUS"DISMOUNT":EQUB13 730 .O%:EQUS"CJR.‚Choose.Directory.ƒProgram.‚Or $.":EQUB13 740 ]:NEXT:ENDPROC