10 *DIR $ 20 drive%=2 30 ONERRORGOTO10 32 REPEAT 40 dir$="$" 50 fn%=1 70 REPEAT 80 *FX4,1 90 VDU3,14,12 100 PROCcat 110 REPEAT 120 B=0 130 PROCshow 140 P%=0 150 *FX21,0 160 A=GET:IFA=33THENCHAIN"CONTROL" 170 IFA>134 AND A<140 THENPROCjump 180 IFA>47ANDA<52THENPROCdrive(A) 190 IFA=66ORA=98THENPROCbackup 200 IFA=67ORA=99THENPROCcopy 210 IFA=77ORA=109THENPROCcompact 220 IFA=82ORA=114THENPROCrun 230 IFA=79ORA=111THENPROCopt4 240 IFA=86ORA=118THENPROCview 250 IFA=80ORA=112THENPROCview 260 IFA=78ORA=110THENPROCname 270 IFA=73ORA=105THENPROCinfo 280 IFA=87ORA=119THENPROCwipe 290 IFA=68ORA=100THENPROCdestroy 300 IFA=84ORA=116THENPROCtitle 310 IFA=76ORA=108THENPROClock 320 IFA=85ORA=117THENPROCunlock 330 IFA=36THENPROCdirectory 340 IFA=42THENPROCoscommand 345 IFA=63THENPROChelp 350 UNTILB=1 360 UNTILA=1 370 UNTILFALSE 380 390 DEFPROCshow 400 PRINTTAB(0,4); 410 F$="":add%=&0E00 420 f%=0:c%=0:nf%=add%?261/8 430 IF nf%=0 THEN PRINTCHR$(129);" EMPTY DISC":ENDPROC 440 REPEAT 450 f%=f%+1:PROCprint 470 IF f%=nf% THEN GOTO510 480 f%=f%+1:PROCprint:PRINT 510 UNTIL f%=nf% 520 PRINT 530 ENDPROC 540 550 DEFPROCprint 560 add%=add%+8 570 c%=c%+1:PROCstring 590 IF c%=fn% THEN F$=B$:PRINTCHR$(129);" <"; ELSE PRINTCHR$(131);" "; 600 PRINTB$; 610 IF c%=fn% THEN PRINT">"; ELSE PRINT" "; 620 IF add%?7 AND &80 THEN PRINT"L "; ELSE PRINT" "; 630 ENDPROC 640 650 DEFPROCstring 660 B$="" 670 B$=B$+CHR$(add%?7 AND &7F) 680 IFB$=dir$THENB$=" "ELSEB$=B$+"." 690 FORN=0TO6:B$=B$+CHR$(?(add%+N)):NEXT 720 ENDPROC 722 730 DEFPROCclr(line):IFline=24THENPRINTTAB(0,24)STRING$(37," ");:ENDPROC 740 PRINTTAB(0,line);STRING$(40," ");:ENDPROC 750 ENDPROC 760 770 DEFPROCclear 780 FOR W=20TO24:PROCclr(W):NEXT:ENDPROC 790 800 DEFPROCclear1 810 FOR W=4TO24:PROCclr(W):NEXT:ENDPROC 820 830 DEFPROCjump 840 IFA=138THENfn%=fn%+2 850 IFA=139THENfn%=fn%-2 852 IFA=136THENfn%=fn%-1 854 IFA=137THENfn%=fn%+1 856 IF A=135 THEN fn%=1 860 IFfn%>nf%THENfn%=1 862 IFfn%<1THENfn%=nf% 870 ENDPROC 880 890 DEFPROCdrive(D) 900 drive%=D-48 910 OSCLI("DIR :"+STR$(drive%)+".$") 920 A=1:B=1 930 ENDPROC 940 950 DEFPROCbackup 960 PROCclear:PRINTTAB(0,20)"†BACKUP ";STR$(drive%);" to drive ... "; 970 D=GET:PRINTCHR$(D):IFD<48ORD>51THENGOTO960 980 PRINT"…Press any key to start..":A=GET 990 OSCLI("ENABLE") 1000 OSCLI("BACKUP "+STR$(drive%)+" "+CHR$(D)) 1010 ENDPROC 1020 1030 DEFPROCdestroy 1040 VDU15 1050 PROCclear:PRINTTAB(0,20) 1060 INPUT"†DESTROY "W$ 1070 IF W$="" THEN W$=F$ 1080 OSCLI("ENABLE") 1090 OSCLI("DESTROY "+W$) 1100 A=1:B=1:ENDPROC 1110 1120 DEFPROCwipe 1130 VDU15 1140 PROCclear:PRINTTAB(0,20) 1150 INPUT"†WIPE "W$ 1160 IF W$="" THEN W$=F$ 1170 OSCLI("WIPE "+W$) 1180 A=1:B=1:ENDPROC 1190 1200 DEFPROCcopy 1210 VDU15 1220 PROCclear:PRINTTAB(0,20) 1230 INPUT"†COPY "W$ 1240 IF W$="" THEN W$=F$ 1250 PRINTTAB(0,21)"†COPY ";W$;" to drive ... ";:D=GET 1260 source=drive%:PROCdrive(D) 1270 PRINTTAB(0,22); 1280 OSCLI("COPY "+STR$(source)+" "+STR$(drive%)+" "+W$) 1290 ENDPROC 1300 1310 DEFPROCopt4 1320 PROCclear:PRINTTAB(0,20)"†OPT4," 1330 C=GET:IF C=13THENENDPROC 1340 IFC<48ORC>51THEN1320 1350 OSCLI("OPT4,"+STR$(C)) 1360 A=1:B=1:ENDPROC 1370 1380 DEFPROCtitle 1400 PROCclear 1420 PRINTTAB(0,20)"†The present title is ";T$ 1430 PRINTTAB(0,22);:INPUT"†ENTER the new title... "T$ 1440 IFT$<>""THENOSCLI("TITLE "+T$) 1450 B=1:ENDPROC 1460 1470 DEFPROClock 1480 IFA=76THENF$="*.*" 1490 OSCLI("ACCESS "+F$+" L") 1500 B=1:ENDPROC 1510 1520 DEFPROCunlock 1530 IFA=85THENF$="*.*" 1540 OSCLI("ACCESS "+F$) 1550 B=1:ENDPROC 1560 1570 DEFPROCview 1580 PROCgetinfo 1590 CLS:PROCcheck_printer 1600 IFL%=&1900ANDE%=&1904THENPROCasci_file:GOTO1630 1610 IFL%=&0000ORL%=&FFFFTHENPROCasci_file:GOTO1630 1620 IFE%>&8000 THEN PROCcheckbasic ELSE VDU14:OSCLI("DUMP "+F$) 1630 CLOSE#0:VDU3 1640 PRINT''"…END OF FILE" 1650 PROCend:B=1:ENDPROC 1660 1670 DEFPROCasci_file 1680 ch=OPENIN(F$) 1690 REPEAT 1700 A%=BGET#ch 1710 IFA%>31THENVDUA% 1720 IFA%=13THENPRINT 1730 IFA%=27THENA%=BGET#ch:VDU1,27,1,A% 1740 PROCcheck_keyboard 1750 UNTILEOF#(ch) OR K=13 1760 ENDPROC 1770 1780 DEFPROCcheck_keyboard 1790 K=INKEY(1):IFK=32THENPROChold 1800 *FX21,0 1810 ENDPROC 1820 1830 DEFPROChold 1840 v%=VPOS:h%=POS:PRINTTAB(0,24):PROCend 1850 IFK=13THENENDPROC 1860 v%=v%-1 1870 PRINTTAB(0,24)" ":IFv%=24THENv%=23 1880 PRINTTAB(h%,v%-1);:ENDPROC 1890 1900 DEFPROCcheck_printer 1910 CLS:VDU15:z%=0:IFA<>80ANDA<>112THENENDPROC 1920 PRINTTAB(8,10)"…CHECK PRINTER IS READY"'"… AND HIT ANY KEY":G=GET 1930 P%=1:CLS:VDU2:ENDPROC 1940 1950 DEFPROCname 1960 PROCclear:PRINTTAB(0,20)"†Rename ";F$;:INPUT" as ... "N$:IFN$=""THENB=1:ENDPROC 1970 OSCLI("RENAME "+F$+" "+N$) 1980 A=1:B=1:ENDPROC 1990 2000 DEFPROCinfo 2010 VDU15 2020 IFA=73THENCLS:PRINT"ƒINFORMATION for drive ";drive%;':OSCLI("INFO *.*") 2030 IFA=105THENPROCclear:PRINTTAB(0,20);:OSCLI("INFO "+F$) 2040 VDU14:PROCend:ENDPROC 2050 2060 DEFPROCdirectory 2070 PROCclear:PRINTTAB(0,20)"†ENTER the new directory...";:dir$=GET$:PRINTdir$ 2080 OSCLI("DIR "+dir$) 2100 B=1:ENDPROC 2110 2120 DEFPROCrun 2130 VDU15:*FX4,0 2140 PROCgetinfo 2150 IFL%=&0000ORL%=&FFFFTHENPRINT'"TEXT FILE":GOTO2040 2155 CLS 2160 IFE%>&8000THENPAGE=O%:CHAINF$ 2170 OSCLI("RUN "+F$) 2180 ENDPROC 2190 2200 DEFPROCcompact 2210 PROCclear:PRINTTAB(0,20) 2220 VDU15 2230 C$="COMPACT "+STR$(drive%) 2240 OSCLI(C$) 2250 PROCend:ENDPROC 2260 2270 DEFPROCoscommand 2280 PROCclear:PRINTTAB(0,20) 2290 VDU15 2300 INPUT"†*"C$ 2310 IFC$=""THENENDPROC 2320 OSCLI(C$) 2330 A=1:PROCend:ENDPROC 2340 2350 DEFPROCend 2360 PRINT"…Hit any key to continue ...";:K=GET:B=1:ENDPROC 2370 2380 DEFPROCviewbasic 2390 S%=0:R%=0 2400 ch=OPENIN(F$) 2410 2420 REPEAT 2430 A%=BGET#ch 2440 IFA%=141THENPROCgoto 2450 IFS%ORR%THENVDUA%ELSECALL&B50E 2460 IFA%=34THENS%=S%EOR1 2470 IFA%=244THENR%=1 2480 IFA%=13THENPROCnewline 2490 IFA%=58THENS%=0:R%=0 2500 PROCcheck_keyboard 2510 UNTILEOF#(ch)ORK=13 2520 ENDPROC 2530 2540 DEFPROCnewline 2550 S%=0:R%=0 2560 H%=BGET#ch:IFEOF#(ch)THENENDPROC 2570 L%=BGET#ch:IFEOF#(ch)THENENDPROC 2580 N%=BGET#ch:IFEOF#(ch)THENENDPROC 2590 IFP%THENVDU3,10,2:ELSEVDU10 2600 L$=STR$(H%*&100+L%) 2610 REPEAT:L$=" "+L$:UNTIL LEN(L$)=6 2620 PRINTL$; 2630 A%=0 2640 ENDPROC 2650 2660 DEFPROCgoto 2670 H%=BGET#ch:L%=BGET#ch:N%=BGET#ch 2680 H%=H%*4AND&FF 2690 T%=H% AND &C0 EOR L% 2700 H%=H%*4AND&FF EOR N% 2710 L$=STR$(H%*&100+T%) 2720 GOTO 2620 2730 2740 DEFPROCcat 2750 PROCdircmd 2752 IF?&7A<>0THENPRINT"DISC FAULT ";?&7A 2760 add%=&0E00:T$="" 2770 FORN=0TO7:T$=T$+CHR$(add%?N):NEXT 2780 FORN=256TO259:T$=T$+CHR$(add%?N):NEXT 2790 PRINTT$;" (";~add%?260;")" 2800 o%=add%?262 DIV &10 2810 PRINTTAB(20,0)"Option ";o%;" (";MID$(" off)LOAD) RUN)EXEC)",o%*5+1,5) 2820 PRINT"Drive ";drive%;" ";MID$("4080",add%?262 AND &03,2);" Tracks" 2830 PRINT"Directory :";drive%;".";dir$;" ";add%?261/8;" Files" 2840 PRINTTAB(0,20)"†ENTER ! for CONTROL MENU,drive number," 2850 PRINTTAB(0,21)"†Upper case key to....Backup coMpact" 2860 PRINTTAB(0,22)"†Copy Destroy Info. Lock Name Opt4" 2870 PRINTTAB(0,23)"†Print Run Title Unlock View Wipe" 2880 ENDPROC 2890 2900 DEFPROCgetinfo 2920 D%=!(&0F00+fn%*8) 2930 L%=D%AND&FFFF:E%=(D% DIV &10000) AND&FFFF 2940 ENDPROC 2950 2960 DEFPROCdircmd 2970 ?&70=drive% 2980 ?&71=0 2990 ?&72=&0E 3000 ?&73=0 3010 ?&74=0 3020 ?&75=3 3030 ?&76=&53 3040 ?&77=0:REM TRACK 3050 ?&78=0:REM SECTOR 3060 ?&79=&22:REM 2 SECTORS 3080 A%=&7F:X%=&70:Y%=0:R%=USR(&FFF1) 3090 ENDPROC 3100 3110 DEFPROCcheckbasic 3120 IF?&8008=1THENPROCviewbasic:ENDPROC 3130 PRINT"Sorry BASIC 2 only." 3140 PRINT"Unless you know and alter the" 3150 PRINT"call address in PROCviewbasic" 3160 PRINT"and the check byte in PROCcheckbasic." 3165 B=1 3170 PROCend:ENDPROC 3200 DEFPROChelp 3205 CLS:PRINT 3210 PRINT"****** Help for the file loader ******" 3212 PRINT"esc..Return to the loader menu" 3214 PRINT"!..Return to the control menu" 3216 PRINT"*..Enter os command" 3218 PRINT"O..Change boot up option 1-3" 3220 PRINT"N..Rename current or named file" 3222 PRINT"R..Run current file" 3224 PRINT"T..Retitle disk" 3226 PRINT"**************************************" 3228 PRINT"l/L..Lock : This group operate on" 3230 PRINT"u/U..Unlock : the current file or" 3232 PRINT"i/I..Info : all files" 3234 PRINT"**************************************" 3236 PRINT"C..Copy : This group operate on" 3238 PRINT"D..Destroy : the current file or" 3240 PRINT"W..Wipe : " 3242 PRINT"**************************************" 3244 PRINT"P..Print : Unpredictable results" 3246 PRINT"V..View : alter to suit." 3248 PRINT"**************************************" 3250 PRINT"B..Backup : These write over this" 3252 PRINT"M..coMpact : program so must reboot" 3254 PRINT"**************************************" 3290 A=GET:B=1:ENDPROC