home *** CD-ROM | disk | FTP | other *** search
- FixDisk V1.2
- (C) Copyright Werner Guenther 1990
- Freeware
- USE THIS PROGRAM AT YOUR OWN RISK
-
-
- FixDisk is a program to recover as much as possible from a defective disk.
- I don't claim it is better than Diskdoctor or DiskSalv, but it has some
- features the others don't have:
- It can recover damaged (unreadable) tracks. It has functions to check
- file integrity, to check the directory structure and functions to undelete,
- copy or show (even defective) files and fix corrupted directory pointers.
- A damaged file structure can be recovered copying the data file by file
- to another disk (a la DiskSalv) or can be fixed in place (like Diskdoctor).
- Everything can be selected with an intuition interface, so users can
- determine what action should be take place.
- Now the bad news: The program does not keep track of loose blocks, those
- files without a file header, as DiskSalv does.
- It doesn't process partitions > 48Mb.
-
- USAGE
-
- After starting FixDisk from CLI or Workbench, you will see a set of
- gadgets with the available drives on the top of the window. Choose the
- desired drive by clicking its gadget. If the chosen drive is a 3.5" or a
- 5.25" drive, you will be asked to insert a disk. Now the program starts to
- read in the disk, cylinder by cylinder, searching for file/directory
- headers. This may take a while, so be patient.
- You may be told of read errors and other messages at this point:
- - Block 0 has to start with `DOS' or `KICK'. If it does not, you are
- asked if you want to fix it.
- - The program couldn't find the root block and FixDisk wants to build a
- new one.
- - The disk isn't validated and the program will validate it.
- - There is no root block and no file header on the disk, meaning the
- disk is probably a custom disk or the Kickstart disk. FixDisk won't check
- anything and won't let you check, change or fix anything except read errors.
- You may press break (CTRL-C) if you want to abort this operation. When
- the disk has been examined, you'll get a file requester on the left half of
- the window. The first column shows the key, the block number where the file
- header has been found, followed by DEL for deleted files or '-->' followed
- by the file name. Red (color 3) entries are directories. Click on the
- file name to select it or shift-click for multiple selections. Double-click
- a directory to enter the directory.
- The right half of the window is filled with 17 gadgets. Some of them are
- disabled at startup. These gadgets will write onto the disk. To enable them,
- choose "Write enable" from the Miscellaneous menu.
-
- THE GADGETS:
-
- Scan mode - ALL
- Tells FixDisk to read the entire disk, cylinder by cylinder. This is
- the safest way of operation and makes sure you get any fileheader on
- the disk. It is used if the disk is heavily damaged, or if you want
- to undelete/recover all deleted files.
-
- Scan mode - Directory
- This is much faster than the previous one. It builds up the disk
- structure by following the hash chains, i.e. by reading the directory.
- Use this one for smaller problems like a 'key already set' error.
-
- Scan mode - Deleted
- Similar to 'Scan mode - All' but somewhat optimised to find
- fileheaders. You may enter a filename to search for, if you wish.
-
- Scan mode - Specify
- Used to find deleted files. Lets you specify which cylinders to scan,
- in case you already know where the fileheader was. The usual trick is
- to type 'list keys' and to look where other files with the same date
- are stored and to scan the cylinders in the vicinity.
-
- Directory - Parent
- This gadget is part of the file requester. The requester will show files
- from the parent directory.
-
- Directory - Root
- Same as above, but steps to the root directory.
-
- Show - Selected
- Shows a file in Hex or ASCII. Like all other commands, the file is
- processed without using DOS, but each sector (block) is read, checked and
- displayed. It works just as "Copy" does (see below), so you can use this
- function to see what exactly can be recovered from a defective file. If
- the file is on a 'Standard Filesystem' (non FFS) disk, you will be asked
- from where the program should take the file links. Each block that
- belongs to a file is listed in the file header block and in one or more
- "file list blocks" if the file is too large. On the "Standard Filesystem,"
- each data block has a pointer to the next block belonging to the same file.
- So there are two ways to determine how the file is built: using the links
- listed in the file header, or using the inter-block links. It is much safer
- if you select the file header links, since if only one block is wrong,
- you'll get rubbish using the inter-block links.
-
- Check Files - Selected
- This function checks the selected files. With the standard filesystem it
- is easy to determine if a file is good or defective, as each data block
- has a checksum, a pointer to the file header, pointer to the next block,
- etc. This is not the case with the FFS and there is no way to determine
- if a given data block really belongs to that file. So even if the file
- passes the test, it may still be corrupt.
-
- Check Files - Deleted Checks
- only deleted files, so you can see which one can be undeleted.
-
- Check Files - All
- Checks all files.
-
- Undelete Files - Selected
- This function first calls "check file." If the file seems to be OK, the
- file header is inserted into the hash chain of its parent directory and
- the bitmap is updated, but the "Bitmap Flag" changes to FALSE, just to
- make sure the disk is validated after this operation.
-
- Undelete Files - All
- Tries to undelete all deleted files.
-
- Copy Files - Selected
- Works like "Show" (see above). You'll be asked to enter an output
- path/directory. If the directory fills, you may enter a new path. If a
- given file already exists in the destination directory, the program will
- append ".2" to the filename (if .2 exists too, you'll get .2.2. (Don't
- tell me this is dumb, I know that already.) As with "Check File," you may
- get some error messages while the program is working. If a block doesn't
- seem to belong to a given file, you'll be asked to "SKIP IGNORE ABORT."
- Skip means the damaged block won't be copied, Ignore the block will be
- copied, no matter what is on that block, Abort leaves "Copy Files."
- Protection bits are preserved, dates are not.
-
- Copy Files - All
- Copies the entire disk, trying to recover as much as possible.
-
- Wipe Files - Selected
- This function clears the file header of a deleted file. Utilities like
- Diskdoctor and DiskSalv will try to recover all files, even if they have
- been deleted. If you don't want some files to pop up again using one of
- the programs above, you may use this function. Be warned: After this
- operation you'll have to use a disk-monitor/sector-editor to get the data
- back.
-
- Wipe Files - Deleted
- Purges all deleted files.
-
- Delete - Selected
- Deletes a file, i.e. the file header will be taken out of its hash chain,
- and the bitmap updated. The 'Bitmap Flag' will be set to FALSE as in
- "Undelete" (see above). This function even works if the DOS delete does
- return an error.
-
- Delete - Faulty
- Checks all files and deletes those with errors. The program may ask you
- before deleting a file, if you wish.
-
- Info - Device
- Returns some information about the selected device.
-
- Validate - Disk
- This is not the Amiga validator but my own. The main difference between
- them is that this one tries to repair the disk structure. You may get
- some error reports: loops in a hash chain, wrong or unreadable file
- headers, checksum errors or "key already set," two files claiming to own
- the same data block. You will be informed about any error and prompted
- before FixDisk attempts to fix it.
-
- Rename - Selected
- Rename a selected file.
-
- Recover - Track
- Tries to recover tracks with read/write errors on floppy disks. It uses
- the RAWREAD command from the trackdisk.device and therefore works with
- the trackdisk.device only. It will RAWREAD the track into a buffer,
- search the syncs and decode the sectors. If a sector sync is missing, the
- program tries to determine where the sector has to start. When the track
- has been decoded, you'll get a window displaying: the number of the
- sector (1-11), the first four longwords of that sector, if the checksum
- is OK or BAD, and if that block is ALLOCated or FREE. If an entries is
- red (color 3), the sector didn't have a sync. If instead of the first few
- bytes you get "unreadable," the program couldn't even work out where the
- sector should have been. If you are not satisfied with the result, you
- may click RETRY to restart the procedure and usually get a different
- result. If you think the result is good enough, click on WRITE. This will
- format the track and write those sectors back. If the track has a hard
- error, i.e. a damaged surface, it may happen that the track can't be
- formatted. Click RETRY several times and the defective part of the track
- may fall into the gap at some point. If this doesn't seem to work, select
- SAVE from the requester and save the track to a file. Now exit FixDisk,
- backup the disk and restart FixDisk using the backup. Select
- Recover-Track and click LOAD from the requester, filling the buffer with
- the data from the original disk. After selecting WRITE again, the track
- should be recovered.
-
- Gadgets on the "Recover - Track" requester:
-
- RETRY
- read and decode the same track again.
-
- WRITE
- reformat the track an write the data back to the disk.
-
- NEXT / NEW
- FixDisk builds a list of unreadable tracks. "NEXT" steps to the
- next damaged track on the list. If the list is empty, the gadget
- will display "NEW" instead.
-
- FIND
- Searches a pattern anywhere in the buffer. Useful if you know the
- first few bytes of a sector (which is quite easy to determine on a
- standard file system disk).
-
- SAVE
- Save the decoded track to a file.
-
- LOAD
- Read a decoded track from a file into the buffer.
-
- CANCEL
- Quit 'Recover - Track' and return to FixDisk's main window.
-
- The window displaying the sectors has several gadgets too:
-
- LEFT ARROW
- If a sector sync mark is missing, FixDisk will compute the position
- of that sector within the buffer and decode the sector from this
- point. You may manually correct this position using the arrow
- gadgets. The left arrow will shift the starting position one BIT
- (not byte) to the left.
-
- RIGHT ARROW
- Shift sector one bit to the right.
-
- NUMERIC STRING GADGET
- the string gadget will display the position of the sector relative
- FixDisk assumption.
-
- SECTOR DATA
- clicking onto the sector data area will 'lock' the sector, i.e.
- will prevent FixDisk from redecoding this sector when using
- RETRY from the requester.
-
- THE MENU
- There are actually only two menu items:
-
- Ignore Readerrors
- Usually you get a requester asking RETRY IGNORE if an error occurs. This
- may be annoying if the disk has many defective tracks. This item will
- stop that requester popping up. It has also a second function. If you are
- using the "Copy" function, the program will stop every time a file seems
- to be damaged and ask what action should be taken. With "Ignore
- readerrors" on, errors are just listed, but the program will act as if
- you have chosen IGNORE.
-
- Write Enable
- Enables those gadgets that will write onto the disk.
-
- That's all. Well, almost. The program has about 80 requesters, some of
- them have not been explained, but they should be self-explanatory.
-
- Send flames, bug reports, requests to
- G35@DHDURZ1.BITNET
-
- Werner Guenther
- Wingertspfad 12
- D 6900 Heidelberg (FRG)
-
-