10*|"Before I get swamped with compla
ints (if I'm lucky), The reason DFS
users don't have the directories shown
on the screen is because it is too di
fficult to read the screen, find a blank
line then try to cont- inue reading
it.
20*|"You can get over this by doing a
special command. Read the KEYS below.
30*|"There are no REM statements in t
his, Every REM type message is in a
star type line, like this.
40*|"I believe someone asked for a DF
S and ADFS version of this program,
But as 8BitPD don't put who the user is
who created the program the other
user is commenting about, I am not sure.
However, Please tell me what you t
hink of this.
50*|"In the near future, I will be do
ing a MUCH, MUCH, MUCH faster version
of this, it will be so fast, it won't r
ead the catalogue of the tv or screen
. This version has a few extra commands,
They are :-
60*|" 'A' - Access one or all files
, Reversing the current 'lock' status.
70*|" 'D' - Delete a selected file.
You have TWO chances to abort.
80*|" '$' - Select DIR $ in ADFS an
d in DFS.
90*|" 'P' - Printer dump of the scr
een. (You may imply your own PD here).
100*|" '*' - OSCLI command (The bore
ing one!).
110*|" 'Q' - Quit from program.
120*|" 'S' - Change sides or drive o
f the disc.
130*|"DELETE - If you enter the wrong
'first' number, You can delete it and
start again.
140*|"2095-1695-1702-1724-5028 (This i
s the bytes used at different stages
of this being programmed from the 20/01
/93 to the 15/05/93.
150*|"Copyright John Ilsley 20/01/93
160*|"Revised for DFS/ADFS 15/05/93.
170ONERROR MODE7:REPORT:PRINTERL:END
180MODE7
190DIM file$(47):DIM lock$(47):DIM bit
(5):DIM dir$(47)
200GOTO 300
210
220*|"Its Initiation area
230FOR l=0 TO 47:file$(l)="":lock$(l)=
"":dir$(l)="":NEXT
260drive$="":title$="":FOR l=1TO5:bit(
l)=0:NEXT
270F=FNfs
280IF F=4 THEN f$="DISC" : RETURN
281IF F=8 THEN f$="ADFS" : RETURN
300IF FNfs=8 THEN PRINT"ADFS":f$="ADFS
":GOTO 330
310IF FNfs=4 THEN PRINT"DISC":f$="DISC
":GOTO 330
320PRINT"I need a FS to work with!..."
:END
330IF f$="ADFS" MODE3:GOTO 720
340IF f$="DISC" MODE7:GOTO 490
350
360*|" Main scan routine.
370DEFFNscan(x%,y%,length%)
380LOCALresult$,loop%
390PRINTTAB(x%,y%);
400FORloop%=1TOlength%:A%=135:result$=
result$+CHR$(USR &FFF4 MOD &10000 DIV &F
F):VDU9:NEXT
401=result$
410
420*|" Check for FSN
430DEFFNfs
440X%=&70:Y%=0:A%=0:fs%=USR(&FFDA) AND
&FF
450=fs%
460REM 8 = ADFS / 4=DISC / 3=RAM / 1=T
APE
470
480*|" DFS scan screen variables
490GOSUB 230
500MODE7:*.
510PRINT'';CHR$136;" Reading filenames
, Please wait"
520drive$=FNscan(6,1,1)
530t$=FNscan(0,0,12)
540k=1
550w$=MID$(t$,k,1)
560IF w$=" " THEN GOTO 590
570k=k+1
580GOTO 550
590title$=MID$(t$,1,k)
600fc=4:dc=4
610l=1
620max=l
630A$=FNscan(fc,dc,10)
640IF A$=" " THEN max=max-1:G
OTO 1370
650file$(l)=MID$(A$,1,7)
660lock$(l)=MID$(A$,10,1)
670IF fc=4 THEN fc=24:GOTO 690
680IF fc=24 THEN fc=4:dc=dc+1:GOTO 690
690l=l+1:GOTO 620
700
710*|" ADFS scan screen variables
720*MOUNT 0
730*DIR $
740GOSUB230
750MODE3:*.
760PRINT'';CHR$136;" Reading filenames
, Plese wait"
770drive$=FNscan(6,1,1)
780t$=FNscan(0,0,20)
790k=1
800w$=MID$(t$,k,1)
810IF w$=" " THEN GOTO 840
820k=k+1
830GOTO 800
840title$=MID$(t$,1,k)
850fc=0 :dc=4
860l=1
870max=l
880A$=FNscan(fc,dc,10)
890IF A$=" " max=max-1:GOTO 1
370
900file$(l)=MID$(A$,1,10)
910A$=FNscan(fc+11,dc,1)
920lock$(l)=A$
930IF lock$(l)="D" THEN dir$(l)="D"
940IF fc=0 THEN fc=20:GOTO980
950IF fc=20 THEN fc=40:GOTO980
960IF fc=40 THEN fc=60:GOTO980
970IF fc=60 THEN fc=0:dc=dc+1
980l=l+1
990GOTO 870
1000
1010*|" Incase it 'forgets' what system
it is in.
1020f=FNfs
1030IF f=4 THEN f$="DISC"
1040IF f=8 THEN f$="ADFS"
1050IF f$="DISC" GOTO 1080
1060IF f$="ADFS" GOTO 1220
1070
1080*|"Show DFS files
1090MODE7:CLS
1100aca=0:acb=5:d=0
1110FOR l=1 TO max
1120IF l<10 THEN l$="0"+STR$(l):GOTO114
0
1130l$=STR$(l)
1140PRINTTAB(aca,d);l$;").";TAB(acb,d);
file$(l);" ";lock$(l)
1150d=d+1
1160IF d=16 THEN aca=20:acb=25:d=0
1170NEXT
1180PRINTTAB(18,22);"Drive ";drive$;" -
Title"
1190PRINTTAB(18,23);title$;
1200GOTO 1390
1210
1220*|"Show ADFS files
1230MODE7:CLS
1240aca=0:acb=5:d=0
1250FOR l=1 TO max
1260IF l<10 THEN l$="0"+STR$(l):GOTO 12
80
1270l$=STR$(l)
1280IF dir$(l)="D" THEN both$="Dir" ELS
E both$=lock$(l)
1290PRINTTAB(aca,d);l$;").";TAB(acb,d);
file$(l);" ";both$;
1300d=d+1
1310IF d=25 THEN aca=20:acb=25:d=0
1320NEXT
1330PRINTTAB(18,23);CHR$(134);"Drive ";
drive$;" - Title";
1340PRINTTAB(18,24);CHR$(131);title$;
1350GOTO 1390
1360
1370*|"Select menu (first input)
1380GOTO 1010
1390cor$="0123456789Cc*$FfDdAaSs"
1400REPEAT
1410q$=GET$
1420UNTIL INSTR(cor$,q$)
1430IF f$="DISC" AND q$="C" OR q$="c" P
ROCchangeFS
1440IF f$="ADFS" AND q$="C" OR q$="c" P
ROCchangeFS
1450IF q$="*" PROCoscli:GOTO 1390
1460IF q$="F" OR q$="f" PROCchangeFS:RU
N
1470IF q$="A" OR q$="a" GOTO1880
1480IF q$="S" OR q$="s" GOTO2670
1490IF q$="D" OR q$="d" GOTO2260
1500IF q$="$" OSCLI"DIR$":RUN
1510
1520*|"Select menu (second input)
1530REPEAT
1540b$=GET$
1550IF b$=CHR$(127) VDU7:GOTO 1390
1560UNTIL INSTR(cor$,b$)
1570IF f$="DISC" AND b$="C" OR b$="c" P
ROCchangeFS
1580IF f$="ADFS" AND b$="C" OR b$="c" P
ROCchangeFS
1590IF b$="*" PROCoscli:GOTO 1390
1600IF b$="F" OR b$="f" PROCchangeFS:RU
N
1610IF b$="S" OR b$="s" GOTO2670
1620IF b$="D" OR b$="d" GOTO2260
1630IF b$="A" OR b$="a" GOTO1880
1640n$=q$+b$
1650n=VAL(n$)
1660fn$=file$(n)
1670IF dir$(n)="D" THEN OSCLI"DIR "+fil
e$(n):GOTO 740
1680X=OPENIN(fn$)
1690FOR b=0TO5
1700bit(b)=BGET#X
1710NEXT
1720CLOSE#0
1730FOR l=0TO5
1740PRINT;l;" - ";bit(l)
1750NEXT
1760IF bit(0)=13 AND bit(1)=0 THEN CHAI
N fn$
1770OSCLI"RUN "+fn$
1780
1790*|"Just to do a PRINT
1800DEFPROCplace(a$)
1801PROCclear
1810PRINTTAB(18,22);CHR$(130);a$
1820ENDPROC
1830DEFPROCclear
1840PRINTTAB(18,22);STRING$(19," ")
1850ENDPROC
1860
1870*|"Lock / Unlock routine
1880PROCplace("Auto lock/unlock")
1890cor$="0123456789@*"
1900REPEAT
1910a$=GET$
1920UNTIL INSTR(cor$,a$)
1930IF a$="*" PROCdoall:GOTO 1010
1940IF a$="@" GOTO1010
1950REPEAT
1960b$=GET$
1970UNTIL INSTR(cor$,a$)
1980IF b$="@" GOTO1010:GOTO 1010
1990z$=a$+b$
2000n=VAL(z$)
2010PROCclear
2020f=FNfs
2030PROCdo
2040GOTO 1010
2050
2060*|"Decides the type of lock requied
2070DEFPROCdo
2080IF f=8 AND lock$(n)="D" THEN y$="D"
2090IF f=8 AND lock$(n)="L" THEN OSCLI"
ACCESS "+file$(n)+" WR":y$="W"
2100IF f=4 AND lock$(n)="L" THEN OSCLI"
ACCESS "+file$(n):y$=" "
2110IF f=8 AND lock$(n)="W" THEN OSCLI"
ACCESS "+file$(n)+" LRW":y$="L"
2120IF f=4 AND lock$(n)=" " THEN OSCLI"
ACCESS "+file$(n)+" L":y$="L"
2130lock$(n)=y$
2140ENDPROC
2150
2160*|"A smart peice of programming her
e! (Reverses the current lock status)
2170DEFPROCdoall
2180PROCclear:PROCplace("Takes Ages,Wai
t!")
2190f=FNfs
2200FOR n=1 TO max
2210PROCdo
2220NEXT
2230ENDPROC
2240
2250*|"Delete files routine
2260PROCplace("Delete File(s)")
2270cor$="0123456789@"
2280REPEAT
2290a$=GET$
2300UNTIL INSTR(cor$,a$)
2310IF a$="@" GOTO 1020
2320REPEAT
2330b$=GET$
2340UNTIL INSTR(cor$,b$)
2350z$=a$+b$
2360n=VAL(z$)
2370PROCclear
2380f$=file$(n)
2390PROCclear:PROCplace("Delete "+f$+"
Y/n")
2400a$=GET$
2410IF a$="Y" OR a$="y" PROCclear:PROCp
lace("Confirm "+f$):GOTO2440
2420IF a$="N" OR a$="n" PROCclear:GOTO
2260
2430GOTO 2400
2440a$=GET$
2450IF a$="Y" OR a$="y" OSCLI"ACCESS "+
file$(n):OSCLI"DELETE "+file$(n):PROCcle
ar:GOTO 2260
2460GOTO 1020
2470
2480*|"The boring old OSCLI routine whi
ch I'm so peed of with!
2490DEFPROCoscli
2500CLS
2510PRINT"Enter '*' command"
2520INPUT'" "a$
2530OSCLI"*"+a$
2540PRINT'"* = again or other to quit"
2550a$=GET$
2560IF a$="*" GOTO 2520
2570ENDPROC
2580
2590DEFPROCchangeFS
2600*|"Switches between ADFS and DFS an
d ADFS
2610f=FNfs
2620CLS
2630IF f=8 THEN PRINT"Selecting DFS":OS
CLI"DISC":RUN
2640IF f=4 THEN PRINT"Selecting ADFS":O
SCLI"ADFS":RUN
2650GOTO 2630
2660
2670*|"Change drives in ADFS or sides a
nd drives in DFS
2680f=FNfs
2690CLS
2700IF f=4 GOTO 2810
2710IF f=8 GOTO 2730
2720
2730*|"Change the ADFS one
2740PRINT'"Your on drive ";drive$
2750PRINT'"Enter NEW drive. 0 1 4 5"
2760REPEAT
2770a$=GET$
2780UNTIL INSTR("0145",a$)
2790OSCLI"MOUNT "+a$:GOTO740
2800
2810*|"Change the DFS one
2820PRINT'"Your on drive ";drive$
2830PRINT"and directory ";dir$(1)
2840PRINT'"Enter new drive. 0 1 2 3"
2850REPEAT
2860a$=GET$
2870UNTIL INSTR("0123",a$)
2880OSCLI"DRIVE "+a$
2890MODE7:*.
2900PRINT'"Enter new directory "
2910a$=GET$
2920OSCLI"DIR "+a$:GOTO 480