Jump to content
  • entries
    9
  • comments
    5
  • views
    24,588

The Cretive Atari - program


Allan

668 views

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.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...