The Cretive Atari - program
600 PRINT "***DISK RETRY, DIRECTORY SECTOR ";RSECTOR
610 PRINT "***STATUS=";DSTATS
520 GOTO 570
630 INCR=INCR+1
640 PRINT INCR;
650 NEXT RSECTOR
660 PRINT
670 PRINT "WAIT -- BUILDING TABLES."
680 REM OK, NOW EXAMINE DIRECTORY.
690 REM PRODUCE LISTING FIRST OFF.
700 REM NOTE 360=VTOC, NOT DIR.
710 DIM INFO(64,6) !FILE INFO
720 DIM NIME(64) !NAME INFO
730 DIM DEAD(64) !FILE BOMBED?
740 FOR Z%=1 TO 64:DEAD(Z%)=0:NEXT Z%
750 REM
760 Z=B+128 !START OF DIR ENTRY
770 REM BUILD FLAG & INFO TABLE------
780 FNUM=1
790 FOR LOC=Z TO Z+(64*16) STEP 16
800 REM LOC=ENTRIES' STARTING ADDR
810 FLAG%=PEEK(LOC)
820 IF(FLAG% AND &80)=&80 THEN INFO(FNUM,3)=1
830 IF(FLAG% AND &40)=&40 THEN INFO(FNUM,4)=1
840 IF(FLAG% AND &20)=&20 THEN INFO(FNUM,5)=1
850 IF(FLAG% AND 1)=1 THEN INFO(FNUM,6)=1
860 REM SECTOR INFO----------------------
870 INFO(FNUM,1)=PEEK(LOC+1)+256*PEEK(LOC+2)
880 INFO(FNUM,2)=PEEK(LOC+3)+256*PEEK(LOC+4)
890 REM NOW GET NAME DATA..-------------
900 NIME$(FNUM)=""
910 FOR Z%=5 TO 15
920 NIME$(FNUM)=NIME$(FNUM)+CHR$(PEEK(LOC+Z%))
930 NEXT Z%
940 REM CHECK FOR END OF ENTRIES
950 IF PEEK(LOC+5)=0 THEN 1020
960 REM
970 FNUM=FNUM+1
980 IF FNUM/5=INT(FNUM/5) THEN PRINT FNUM;
990 NEXT LOC
1000 PRINT "DIR TOTALLY FULL."
1010 GOTO 1030
1020 PRINT "DIR PARTLY FULL."
1030 FNUM=FNUM-1
1040 PRINT
1050 PRINT "NUMBER OF ENTRIES=";FNUM
1060 REM OUTPUT DIRECTORY
1070 REM ENTRY POINT (FROM BELOW)
1080 IF FNUM=0 THEN 1320 !EMPTY DISK
1090 PRINT
1100 PRINT "D=DELETED/U=USED/L=LOCKED/O=OPEN"
1110 PRINT "SC=SECTOR COUNT(LEN)"
1120 PRINT "SS=STARTING SECTOR(LEN)"
1130 PRINT " + = GOOD FILE / - = BAD FILE / ? = UNKNOWN"
1140 PRINT
1150 FOR F=1 TO FNUM
1160 PRINT USING "##";F;
1170 IF DEAD(F)=-1 THEN PRINT "+";
1180 IF DEAD(F)=1 THEN PRINT "-";
1190 IF DEAD(F)=0 THEN PRINT "?";
1200 PRINT "!";NIME$(F);"!";
1210 IF INFO(F,3)=1 THEN PRINT "D"; ELSE PRINT " ";
1220 IF INFO(F,4)=1 THEN PRINT "U"; ELSE PRINT " ";
1230 IF INFO(F,5)=1 THEN PRINT "L"; ELSE PRINT " ";
1240 IF INFO(F,6)=1 THEN PRINT "O"; ELSE PRINT " ";
1250 PRINT "!SC:";
1260 PRINT USING "###";INFO(F,1);
1270 PRINT "!SS:";
1280 PRINT USING "###";INFO(F,2)
1290 IF F/20=INT(F/20) THEN INPUT RET$
1300 NEXT F
1310 GOTO 1390
1320 PRINT "EMPTY DISK -- NO ENTRIES"
1330 STOP
1340 PRINT
1350 REM ENTRY POINT (BELOW)
1360 PRINT "PRESS RETURN."
1370 INPUT RET$:CLS:GOTO 1420
1380 GOTO 1400
1390 PRINT "PRESS RETURN."
1400 INPUT RET$
1410 REM NEXT IS ENTRY POINT
1420 PRINT "SELECT :"
1430 PRINT "1. A FILE NUMBER TO CHECK;"
0 Comments
Recommended Comments
There are no comments to display.