RSS Bot Posted February 17, 2009 Share Posted February 17, 2009 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;" http://www.atariage.com/forums/index.php?a...;showentry=5810 Link to comment Share on other sites More sharing options...
Recommended Posts