home *** CD-ROM | disk | FTP | other *** search
- This library contains three small utilities for recovering from
- several possible floppy disk problems. As far as I know, they will
- probably only work on dual-sided, dual-density MS-DOS disks. All IO is
- done with MS-DOS function calls, so the routines are probably pretty
- portable. My only experience with MS-DOS is with version 2.1, so
- I'm afraid these routines may not work with earlier (or later) versions
- of the operating system. However, I have included the DeSmet C sources
- for the routines, so you may be able to generalize the routines after
- reading the tutorial below.
-
- I have found these routines useful for recovering from two types of
- "lost data" problems on my diskettes. The first type of situation is
- when a file is mistakenly deleted from the disk. A more complicated
- situation arises when the directory or file allocation tables somehow
- become corrupted (in my case this happened when I mistakenly switched
- diskettes while files were still open).
-
- If you should encounter one of the above problems yourself, DON'T
- PANIC!!!! Immediately STOP WHATEVER YOU ARE DOING and think carefully
- about the best way to recover. It is important not to write anything
- else on the diskette as it may overwrite data you are trying to save.
- Make a backup copy of the damaged diskette with the DISKCOPY command
- before doing anything else, as these procedures are very powerful, and
- can easily compound your problems if you make a mistake.
-
- This document is divided into two parts. The first section is a
- tutorial which is based on Appendix C of the PC-DOS reference manual.
- It assumes less technical expertise on your part than Appendix C does
- however. It is followed by detailed descriptions of of the three
- utilities included in this package: FAT, PFAT, and TOSECT.
-
-
- Tutorial
- --------
-
- In this section, I will give you enough background in how DOS stores
- your information on diskettes to enable to use the utilities in this
- package to recover them. I'll assume that you have some knowledge of
- the MS-DOS operating system, but that you are not necessarily a computer
- expert. The first part of this tutorial deals with the general
- organization of DOS files on disk. It is followed by sections on the
- disk directories and file allocation tables. Two important topics in
- restoring the data are treated in appendices: the DEBUG program, and
- hexadecimal notation. If you are unfamiliar with either of these
- topics, I would advise reading the appendices before proceeding with the
- rest of this section.
-
- NOTE: In the following sections, I will often use Hexadecimal notation
- for numbers. A hexadecimal number will be followed by a captital X.
- More details about hexadecimal notation can be found in appendix B.
- Some examples of hexadecimal numbers are given below:
-
- Hexadecimal Number Decimal Number
- ------------------ --------------
- 5X 5
- 10X 16
- 33X 51
- 200X 512
-
- DISK ORGANIZATION
-
- This section describes the organization of double sided double
- density MS-DOS disks. If your diskettes were formatted with DOS 2.0,
- they will be formatted as described below. Trying to use these
- utilities with other versions of DOS or other diskette formats will
- produce unpredictable results.
-
- The floppy disks used by DOS to store data are organized into units
- called sectors. Each sector on a DOS diskette can hold 512 bytes
- of information (a byte is the amount of computer storage necessary
- to hold one character of data). The sectors are organized into
- larger units called clusters and tracks. A cluster is two
- consecutive sectors on the disk. A track consists of a group of 9
- sectors, but you won't have to worry about them since we will only
- be dealing with sectors and clusters.
-
- The first few sectors on each diskettes have special purposes
- assigned to them. We will refer to the sectors by their logical sector
- numbers (this is the same scheme used by the DOS DEBUG program). The
- first logical sector (number 0X) is the boot record. The next four
- sectors (logical sectors 1X-4X) are for two copies of the disk's File
- Allocation Table (FAT). These tell the operating system where the
- consecutive pieces of a file arer located on the disk. The FAT will be
- explained in gory detail in a later section. The FAT's are followed by
- the Root Directory for the diskette (sectors 5X - BX ). This contains
- information about all of the files stored in the diskette's disk directory.
- It also contains information about the diskette's subdirectories, which are
- treated by the operating system as just a special kind of file.
-
- The logical sectors from CX to the end of the diskette are the
- diskette's data area. They contain the actual information you have
- stored in files. There are several types of files which you might have
- in your data area. Some of them are easier to recover than others. The
- easiest type of files to piece back together are ASCII files. These are
- basically normal text files that can be typed on the terminal. When
- sectors from these files are examined with the DEBUG utility, you can
- see the text that is stored in these files by useing the d command. The
- text will appear as strings of characters on the left hand side of the
- display. These are the easiest kinds of files to recover.
-
- Another type of file is the kind I call "almost ASCII files". These
- files are produced by word processing programs, data base programs, and
- many interpreters (such as BASIC). They consist of mostly ASCII
- characters that can also be displayed with the DEBUG d command. The
- things that makes them a little more complicated to recover than pure
- ASCII files is that they also contain other information besides these
- text characters (such as word processing codes for bold face, italics,
- and underlining). While these files are harder to restore than the pure
- ASCII files, they usually contain enough ASCII characters to be able to
- piece them back together if you are familiar with the file's contents.
-
- The hardest kinds of files to recover are binary files. These
- are files such as programs ( COM and EXE files ) and unformatted data
- files produced by some programming languages, data base programs, and
- spreadsheet programs. I wouldn't suggest even attempting to restore
- these files unless you are an extremely competent assembly language
- programmer and very familiar with the files contents. There is one
- exception to the above situation however which will be discussed in more
- detail in the FAT section. This occurs when the file is suspected to
- occupy consecutive clusters on the disk.
-
- Another class of files in the data area are subdirectories. They
- are stored in the same way as ordinary files except for a special
- notation that is made in their parent directory. The format of these
- files is the same as that of the root directory. I will explain more
- about them in the directory section below.
-
- In summary, the smallest unit on the diskette with which we will
- work is called a byte (the amount of storage needed for one character).
- The next largest unit is a sector which consists of 512 (200X) bytes.
- The sectors are numbered starting with 0. Two consecutive sectors make
- up a cluster which has 400X bytes. The first twelve sectors on the
- diskette (sectors 0X to BX) contain special information that tell the
- operating system where the file information is physically located on the
- disk. The rest of the sectors contain the actual file data.
-
-
- DIRECTORIES
-
- The directories tell the operating system essential information
- about each file on the disk. The easiest directory to find is the root
- directory stored in blocks 5X to BX. The directory consists of 112
- 32-byte entries. If you only want to undelete a file you need to know
- about the first byte in the file name part of the entry and how to find
- where the beginning of the file is on the disk. If the entire directory
- was destroyed, you'll need to understand the whole entry so that you can
- reconstruct it.