FixDisk V1.7 ------------ (C) Copyright Werner Guenther 1990 (v1.0,v1.2) (C) Copyright Roxal of Dash 1992,3 (v1.6) (C) Copyright Remote of Ancient 1993 (v1.7) FREEWARE This program is freeware and you may do whatever you want to it! +--- | Since Roxal of Dash did not include a documentation for his update of FixDisk,I taught I could do it,and here it is. First some words about the newest version of this superb disk repair kit! Remember that the program does *not* contain more requesters and gadgets. - Added my Virus Mem Killer (v.I) at the beginning of the program. The Killer checks the mem before the FixDisk program pops up at your screen! If your memory contains unknown vector change a requester appears at your screen asking if you want to clear them!! I added this because a lot of people got their disks _more_ *trashed* instead of fixed due to virus in their memory!! - The Fixdisk also checks the program itself for virus infection (a better version than what Roxal/Dash implemented) :-) - Fixed some *old* bugs and some *new* (caused by Roxal's coding). And this was a hell of a job !! :-) - Protected the file (Fixdisk.exe) from future crunching/packing and virus infection!! (This should help! :-) ) ----------------------------------------------------------------- If you want to contact me for any reason ,call me by modem at this board: Crusaders Home Sweet Home : +47 63 83 39 80 63 83 39 81 63 83 39 82 Leave me a private message !!! (REMOTE ANCIENT) ---------------------------------------------------------------- Here's is the original documentation from Werner Guenther (v1.2) ---------------------------------------------------------------- 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)