home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
UTILS
/
DIRUTL
/
DIRREP21.LBR
/
DIRREP.DQC
/
DIRREP.DOC
Wrap
Text File
|
2000-06-30
|
5KB
|
95 lines
;;xxxxxxxx
DIRREP.DOC
v.2.1 04/16/85
DBACK.COM v.2.1
DREST.COM v.2.1
Update: Now allows you to set maximum drive for your system;
allows 2-byte number of tracks before directory.
The files in this library, DBACK.COM and DREST.COM make up a
repair kit for disk directories. I don't know if it has happened
to you (yet), but fooling around with assembly language and
related subjects has led more than once to my spoiling my disk
directory. If you have only floppies to worry about, it's not so
bad, but a 10MB disk holds a lot of files!!
The first time this happened I was a rank beginner without a
proper set of utilities or even a real knowledge of what a CPM
file directory looked like; the only solution I could find was to
reformat the entire hard disk! That may be a little better than
buying a new disk drive, but hardly ideal.
The last time (I won't say how this happened), I was an
experienced CPM programmer. I knew that the garbage that appeared
when I typed DIR came from a misdirected write that had put an
allocation block into the directory (=block #0) instead of
elsewhere. This time I made use of my trusty RDWRT utility (now
SRW) to enter an E5 at the beginning of each spoiled entry to
simulate erasure. This cleaned up my directory just fine, and it
was a few notches more satisfactory than formatting the disk, but
one sad fact remained: the files were gone. On my hard disk, an
allocation block is 4K, or 32 128-byte sectors. At 4
files/sector, I had lost 128 files. Without their addresses in
the directory, there was no way of locating them short of
stepping through the entire disk block by block.
The purpose of this little library is to avoid such experiences
in the future by copying the disk directory into a file that can
be stored on a separate disk and restored if need be to its
original place. DBACK [X]>Y will create a file called DIRFL.DRX
on drive Y containing the entire disk directory for drive X (omit
if current drive). DREST [d] will test the disk directory of
drive d for "bad sectors," not the BDOS variety, but sectors that
don't contain what a directory should. It then asks you if you
want to restore the directory from the file you had previously
made with DBACK (which can be on a different drive). To be on the
safe side, you might answer N the first time and take a look at
your directory tracks with a disk utility like SRW. If you type
'Y', your directory will be restored from the file. Simple, no?
Since loss of a directory puts programmers in a state of panic, I
have made the program very simple; it doesn't let you screw up by
putting the wrong part of the file at the wrong place, but
restores the whole thing. The only thing to watch out for is that
the DIRFL file is identified only by the drive letter: DIRFL.DRA
contains the directory for drive A, etc. This means that if you
have a floppy disk system you have to remember which disk was in
which drive. The way to use this program is to back up your
directory just before you engage in a dangerous programming task.
But in answer to those who will claim that you can't know in
advance when the tragedy will occur, I answer that a partially
restored directory is better than no directory at all. If you
have written to the disk since the backup, you'll just lose some
recent material. But even if you have erased a file and its
blocks have been reallocated, you can always erase it again.
You'll still be saving all the files that remained unchanged
since your backup. For a hard disk, that can be quite a few.
Technical notes:
-- The directory test divides sectors into G=good, B=bad and
E=erased. Since the program tests each sector twice, it returns
an E for directory sectors half full or less (<=2 entries). I
have left this in since it doesn't seem worthwhile creating a new
category; what you're really interested in are the sectors marked
'B'!
-- These programs come configured for a three-drive system. If
you have more than a,b,c, change the byte at 102H from 3 to the
number of drives on your system.
-- Another supposition is that the number of sectors/track is a
one-byte number. (In fact, in order for the directory display to
work, you'd better have no more sectors per track than columns on
your screen!) If this isn't true for your system, I'd be glad to
rewrite the relevant parts of the program. Just DON'T USE IT AS
IS: if you've just lost your directory you have troubles enough.
-- Since it is now easy to change the maximum drive number, I
have not included the source code in this version of the library
Eric Gans
French Dep't UCLA
Los Angeles, CA 90024