FDFORMAT - Format Disks with higher Capacity LICENSE ------- This program is a public-domain product for private and educational use. You may freely copy and use it without any charge. This program must not be sold for profit. An adaequate fee may be requested for copying, shipping and handling when redistributing this program. You may modify and improve this program, but the executable program must show a message that your version has been modified. If you find, that this program is worth contributing for it, do not hesitate to send cash, check, 3«"-diskettes or something else. THANKS ------ Special thanks to the following people: Jochen Roderburg, Cologne, Germany: For suggestions and improvements to support compatibility with several BIOS-Versions. Michael Ho, Lincoln, Nebraska: For an improvement in sector sliding. Joel Armengaud, Paris, France: For supporting automatic detection of 720 kByte diskettes in FDREAD. J”rg-Stefan Sell, Essen, Germany: For supporting an interface routine to less compatible XT computers. COMMENTS AND PROBLEMS --------------------- Comments, improvements, suggestions and problems may be sent to the Author Christoph H. Hochst„tter Carl-Strehl-Strasse 20 D-3550 Marburg West-Germany Phone: +49 6421 14618 (voice/BTX) +49 6429 6209 (BBS) E-Mail: HAMPE2@DMRHRZ11.BITNET (Bitnet/Internet) Christoph Hochstaetter on 2:243/22 (Fido) SYSTEM REQUIREMENTS ------------------- IBM or compatible Computer DOS 3.20 or above FEATURES OF FDFORMAT -------------------- FDFORMAT is a replacement for the DOS-Format program, which has the following advantages: 1) Supporting 3«"-1.44 MB drives with any BIOS-Versions in ATs and Clones. This saves you a lot of money, you would need for a new BIOS-Version. 2) Formatting and using of 720/820 kByte disks in AT 5¬"-1.2 MByte Drives using cheap double-density (DD) disks. 3) Increasing the capacity of your disks up to 300 kByte additional storage. 4) Supporting 3«"-360 kByte format. This is useful, when you want to make copies of 5¬"-disks to 3«"-Disks using DISKCOPY 5) Enhance speed of your diskette I/O up to 100% with sector sliding. This is a method of physical ordering sectors in a way, that your drive is ready to read the next logical sector, when your head advances one track. 6) Improved BOOT-Sector, which automatically boots from harddisk, if the diskette in drive A: is not a system disk. This allows you to leave the diskette in drive A:, when you reboot the system. GETTING STARTED --------------- To make full use of FDFORMAT, you have to make FDREAD.EXE resident on non-XT computers. There are two ways to make FDREAD resident: 1) Typing FDREAD from the DOS-Command-Prompt or inserting it into your AUTOEXEC.BAT file. 2) Loading FDREAD as a Device-Driver by inserting DEVICE=[path]FDREAD.EXE into your CONFIG.SYS File. Yes, you can also load FDREAD as a Device-Driver. When you do so, it will take only 160 Bytes of main memory. If you install it from the DOS-Command-Line, it will take 224 Bytes. DOS 4.00+ users should not use the INSTALL= statement of CONFIG.SYS, but also the DEVICE= statement. Note for users of High-Memory Loaders like QEMM, QRAM, Mov'em or 386-MAX: Do not load FDREAD high. FDREAD automatically loads high, if it installed from AUTOEXEC.BAT or the DOS-Command-Line. This feature works with any memory manager supporting UMBs. FDREAD is needed for special formats only. Any standard format can be used without FDREAD. USING FDFORMAT -------------- The general Syntax for FDFORMAT is: FDFORMAT [options] may be A: or B:. FDFORMAT does not format harddisks. Options begin with a letter or number. Options may be preceeded by '/' or '-'. If you do not preceed options with '/' or '-', you must seperate the options with spaces. '.' and ':' are always ignored. So the following commands will all format a 1.44 MByte Disk in Drive A: FDFORMAT A: /F:1.44 FDFORMAT A: -F144 FDFORMAT A: F144 You may precede all numbers with a $-sign to indicate, that they are hexadecimal numbers. OPTIONS USED IN FDFORMAT ------------------------ The most important option is the F-Option. The F-Option determines the general Format, which is used for the target diskette. The following table shows, which parameters are allowed for the F- Options and for which type of Disk-Drive: F-Opt Format 360k-Drive 720k-Drive 1.2M-Drive 1.44M-Drive ----- --------------- ---------- ---------- ---------- ----------- F160 160 kByte Disk yes FDREAD yes FDREAD F180 180 kByte Disk yes FDREAD yes FDREAD F200 200 kByte Disk FDREAD FDREAD FDREAD FDREAD F205 205 kByte Disk FDREAD FDREAD FDREAD FDREAD F320 320 kByte Disk yes FDREAD yes FDREAD F360 360 kByte Disk yes FDREAD yes FDREAD F400 400 kByte Disk FDREAD FDREAD FDREAD FDREAD F410 410 kByte Disk FDREAD FDREAD FDREAD FDREAD F720 720 kByte Disk no yes FDREAD yes F800 800 kByte Disk no FDREAD FDREAD FDREAD F820 820 kByte Disk no FDREAD FDREAD FDREAD F120 1.2 MByte Disk no no yes yes F12 1.2 MByte Disk no no yes yes F144 1.44 MByte Disk no no FDREAD yes F14 1.44 MByte Disk no no FDREAD yes F148 1.48 MByte Disk no no FDREAD yes F16 1.6 MByte Disk no no no FDREAD F164 1.64 MByte Disk no no no FDREAD F168 1.68 MByte Disk no no no FDREAD F172 1.72 MByte Disk no no no FDREAD FDREAD in the above table means, that this format will work only, if FDREAD is installed. The other options are: 1 : Format single sided Disk (provided for DOS-FORMAT- compatibility). 4 : Format Standard 360 kByte Disk (provided for DOS-FORMAT- compatibility). 8 : Format 8 sector Disk (provided for DOS-FORMAT- compatibility). Bnnn: Use Disk-Type Byte nnn (for use with older BIOS Versions). Cnnn: Use nnn Sectors per Cluster (nnn = 1 or 2). Dnnn: Use nnn Root-Directory-Entries (nnn = 1-224). Gnnn: Use Gap-Length of nnn (for use by experts only). Hnnn: Use nnn heads (nnn = 1 or 2). Innn: Use an Interleave of nnn (for use by experts only). K : Do not wait for any keyboard input, when starting FDFORMAT. (Useful, when starting FDFORMAT from batch files). Mnnn: Use Media Byte nnn (Useful for ATARI formats). Mnnn: Use Media-Descriptor-Byte nnn. (Useful when formatting ATARI ST disks). Nnnn: Use nnn Sectors. (* Cluster *) O : Format 720 kByte Disk for use with AT&T Olivetti M24/M28. R : Do not verify Disk (and save 33% time). S : Make System-Disk. Snnn: Use nnn Sectors. Tnnn: Use nnn Tracks. V : Write Label to Disk. Xnnn: Slide nnn Sectors, when head changes. Ynnn: Slide nnn Sectors nnn, when track changes. Examples: FDFORMAT A: /4 (format 360 kB disk) FDFORMAT A: /F:1.72 (format 1.72 MB disk) FDFORMAT A: /T:80 /N:9 (format 720 kB disk) FDFORMAT A: /O (format 720 kB disk for AT&T M24/28) FDFORMAT A: /F:720 M$F7 B$54 (format 720 kB disk for ATARI ST) FDFORMAT A: /F:12 D64 (format 1.2 MB disk with 64 RDEs) FDFORMAT A: /F:410 R (format 410 kB Disk without verify) DETAILED DESCRIPTION OF OPTIONS ------------------------------- The Tnnn option - Use nnn Tracks -------------------------------- This option tells FDFORMAT, how many tracks are to be used. A Standard 360 kB diskette has 40 tracks, all other standard formats have 80 tracks. You can set this option to 1-41 for an 360 kB drive and to 1-82 for all other drives. The more tracks you use, the more storage you will receive. Some drives allow even more than 41 or 82 tracks, but you may have trouble, when trying to read this diskette on another disk drive. The default is 40 for a 360 kB Drive and 80 for all other drives. Example: FDFORMAT A: /T:41 (format a disk with 41 Tracks. This will give you 369 kB storage in a 360 kB drive) The Nnnn option - Use nnn Sectors per Track ------------------------------------------- This option determines the number of sectors per track you will use. The standard and default values for the different formats are: disk format standard value maximum value possible ----------- -------------- ---------------------- 360 kB 9 10 720 kB 9 10 1.2 MB 15 18 1.44 MB 18 21 You may use this option to increase the storage of your diskette too. Example: FDFORMAT A: /N:10 (format a disk with 10 sectors. This gives you 400 kB storage in a 360 kB drive). The Hnnn option - Use nnn sides (1 or 2) ---------------------------------------- You can set this option to 1 or 2. The default is always 2. Normally you do not need this option, since single-sided disks are rarely used. Using T,N and H together ------------------------ These three options determine your diskette storage. The formula for the diskette storage is: tracks * sectors * sides storage in kB = ------------------------ 2 Since diskettes use usually 2 sided, you can simplify this formula to: storage in kB = tracks * sectors Examples: FORMAT A: /T:80 /N:9 /H:2 (format a 720 kB disk) FORMAT A: /T:82 /N:10 /H:2 (format a 820 kB disk) FORMAT A: /T:40 /N:9 /H:2 (format a 360 kB disk) FORMAT A: /T:41 /N:10 /H:2 (format a 410 kB disk) You can use the F-Option (described above) as a shortcut for the T, H and N options (eg. FORMAT A: /F:1.44 is equal to FORMAT A: /T:80 /N:18 /H:2). Note: Always use High-Density-Diskettes when you format with more than 11 sectors/track and always use double-density-disks, when you format with 10 sectors and below. At least here is a table, which values are maximum for T, H and N. Drive and disk max T max N max H Storage ------------------------------ ----- ----- ----- ------- 360 kB drive with DD-diskette 41 10 2 410 kB 720 kB drive with DD-diskette 82 10 2 820 kB 1.2 MB drive with DD-diskette 82 10 2 820 kB 1.2 MB drive with HD-diskette 82 18 2 1.48 MB 1.44 MB drive with DD-diskette 82 10 2 820 kB 1.44 MB drive with DD-diskette 82 21 2 1.72 MB The Cnnn option - Use nnn sectors per cluster (1 or 2) ------------------------------------------------------ A cluster is the minimum allocation unit DOS can handle. DOS supports 1 or 2 sectors per cluster for floppy disks. If you specify /C:1 space is allocated in 512 Bytes steps. /C:2 means that space is allocated in 1024 Byte steps. You can optimize your disk organization, if you use /C:1, when you plan to store "many small" files and specify /C:2, when you plan to store "few large" files on the disk to be formatted. The default is /C:1 for high density disks and /C:2 for double density disks Example: FORMAT A: /F:360 /C:1 (format a 360 kB disk with 1 sector per cluster) Note: A blank formatted disk with /C:2 always has more bytes free than with /C:1. But when files are stored to the disk, your disk space will be handled more dynamically. The Dnnn option - Use nnn Root-Directory-Entries ------------------------------------------------ This option determines the number of Root-Directory-Entries. The default is 112 for double density disks and 224 for high density disks. This value can be reduced to get additional space on disk or increased up to 240 to reserve for space for files in the root directory. This option does not affect any of your subdirectories. Subdirectories are dynamically allocated. You only have to determine the size of root directory. Legal values for disks with 1 sector per cluster are 16, 32, 48,.... and for disks with 2 sectors per cluster 16,48,80,.... if you specify a value between two legal values, it will be increased to next legal value automatically. Example: You need a disk that will not have more than 40 files in the root directory. So type: FDFORMAT A: /D:40. You will get a disk with 48 root directory entries and you have more space for data. The O option - Format a disk for AT&T/Olivetti M24/M28 Computers ---------------------------------------------------------------- This option is actually a shortcut for /T:80 /N:9 /H:2 /D:144. The AT&T and Olivetti M24/M28 Computers use 720 kB Disks with 144 root directory entries. The standard IBM 720 kB format has 112 root directory entries. So simply use the /O option to format a diskette in a 5¬"-1.2 MB drive or a 5¬"-720 kB drive. Example: FDFORMAT A: /O Note: If you could not read M24/M28 720 kB disks in your 1.2 MB drive until now, try again with FDREAD installed. It will work fine. The Mnnn option - Override media descriptor ------------------------------------------- FDFORMAT uses the same media descriptor byte as DOS-Format would do. If you override this value, this has no effect under DOS 3.3x or DOS 4.0x. But you may not be able to read the disk under DOS 3.2x. This option was added to support to format disks for the ATARI ST. Refer to the ATARI Documentation to set the correct Values for the media descriptor and track, heads, sectors. The R option - Do not verify disk --------------------------------- The R option skips verifying each track after it has been formatted. This saves 33%-50% of time during formatting a diskette. The disadvantage is that errors on the diskette are not detected. A typical example for missing error detection is typing FDFORMAT A: /R in an 1.2 MB drive with a double density disk inserted. FDFORMAT will not report any errors in this case. If you are sure that you have a good diskette and you specified no wrong parameters, the /R option is a good choice to save time. The K option - No keyboard input -------------------------------- The K option suppresses the message "Insert new disk in drive...." and starts formatting immediately, after FDFORMAT is started. This is useful, if you want to start FDFORMAT from a batch file or an external program. You can also suppress any screen output, if you add ">NUL" to the FDFORMAT command (See your DOS Manual for piping input and output). FDFORMAT returns an exit code or errorlevel, which can be used in batch files. The exit codes are: Exit Code Meaning --------- ---------------------------------------------------- 0 normal completion 1 syntax error or illegal parameters 2 specified drive cannot be formatted 4 aborted by user (after I/O error) 8 I/O error for config file 16 syntax error or illegal parameters in config file 32 error writing disk label 128 incorrect DOS version (< 3.20) The S Option - Format system disk --------------------------------- The S option lets you format a system disk. It copies boot-sector, DOS-System-file and COMMAND.COM to your disk. FDFORMAT does not do these task by itself, but calls the DOS-Command SYS to do so. Thus you must make sure, that SYS.COM or SYS.EXE is in a directory, which is included in your PATH Environment Variable. The call to SYS is made to ensure compatibility with any DOS Version. Note: You cannot create a system disk, which cannot be read without FDREAD. (* Translation: You can only create a system disk when the disk does not require FDREAD in order to be recognized by the machine. *) Example: FDFORMAT A: /F:360 /S (correct) FDFORMAT A: /F:410 /S (incorrect, because this format requires FDREAD) The 1 Option - Single sided disk -------------------------------- This is the same as the /H:1 option. provided for syntax compatibility with DOS-Format. The 8 Option - 8 sector disk ---------------------------- This is the same as the /S:8 option. provided for syntax compatibility with DOS-Format. The 4 option - 360 kB disk -------------------------- This is the same as the /F:360 option. provided for syntax compatibility with DOS-Format. The P option - Does nothing --------------------------- This option does really nothing in FDFORMAT Version 1.5. It was provided for compatibility with earlier versions. The V option - Write volume label --------------------------------- This option writes a volume label to your disk. You may specify simply /V. This will prompt you for a volume label. You may also specify /V:. This will write the name to your disk. Example: FDFORMAT A: /F:820 /V (prompts for volume label) FDFORMAT A: /V:mydisk (Writes volume label MYDISK) The X and Y options - Do sector sliding --------------------------------------- These options can be used to enhance the performance of your disk up to 100%. This is bit difficult to explain. Imagine a standard 360 kB disk. It has 9 sectors on each track numbered 1 to 9. Normally the sectors on all tracks ordered "1 2 3 4 5 6 7 8 9". With sector sliding of 1 you order "1 2 3 4 5 6 7 8 9" on track 0, "9 1 2 3 4 5 6 7 8" on track 1, "8 9 1 2 3 4 5 6 7" of track 2 and so on. You can easily imagine, that it takes a little time, when your diskette drive head steps from one track to another. But your diskette continues rotating. Without sector sliding your diskette is positioned to sector 2 or 3 on the next track, when the stepping is done. It needs nearly a full revolution until sector 1 of the next track can be read. With sector sliding of 1 or 2 your diskette is positioned exactly on sector 1, when it starts reading again. The DOS-Format program always formats with sector sliding 0. FDFORMAT provides two parameters to do sector sliding. /Xn slides n sectors, when you change the head, but not the track. /Ym slides m sectors, when you slide the track. Normally only /Y is useful, but on some systems, especially XTs, you can reach additional speed by using /X. Now, how to determine the correct value for sector sliding. In general you can say good values for /X are 0-2 and for /Y 0-4. The default is 0 for /X and /Y. You to experiment with your configuration, which value is optimal for you. You may reconfigure your default sector sliding in the FDFORMAT.CFG file (described later). You have to find out this for each format seperately. Always good choices are the following: Disk-Size Good choice for sector sliding ------------------ ------------------------------ 320-410 kB /X:1 /Y:3 720-820 kB /X:1 /Y:2 1.2 MB-1.72 MB /X:2 /Y:3 This will improve your diskette perfomance 50%-100% on almost any system. Example: FDFORMAT A: /4 /X:1 /Y:2 /R/K/V:SLIDE_DISK The Innn option - Use Interleave of nnn --------------------------------------- The I option changes the Interleave factor for diskette format. Normally the best interleave is 1, thus it takes only 1 revolution to read an entire track. But there are 2 exceptions to it. When formatting a 21 sector 3«"-HD disk or a 18 sector 5¬"-HD disk. You need an interleave of 2 in these cases, because a data sector is used as GAP. If you do not use an interleave of at least 2, the disk will become unreadable. But you do not have to take care about this option, FDFORMAT automatically determines the best interleave for you (1 or 2). However you can set your interleave whatever you like, but the only effect is, that your disk becomes slower. Example: FDFORMAT A: /I:6 (format a very slow disk) The Gnnn option - Specify GAP length ------------------------------------ The GAP length is the fill space between two sectors on one track. As with the Interleave, FDFORMAT determines the best value for you. You can reduce the GAP length to speed up your diskette. But this reduces your safety, when storing data, unless you choose an interleave of 2. And an interleave of drastically slows down your disk performance. If you want to reduce your GAP length anyway, do not set it below 32 for high density disks and not below 40 for double density disks. For the safety of your data, it is recommended not to modify the GAP length. Sector sliding is a better method to speed up your diskette performance and does not affect the safety of your data. The Bnnn option - Setting the disk type Byte This option affects to 80286/80386/80486 Computers only and needs to be set, if you have an incompatible or older BIOS, which does not support 1.44 MByte Drives. It is configurable in the FDFORMAT.CFG file described later. This byte is made out of the following components: Group Decimal Hexadecimal Meaning ----------------------------------------------------------------- 0 0 Media Type unknown 1 16 10 Media Type known ----------------------------------------------------------------- 32 20 double stepping (40 Tracks) 2 0 0 single stepping (80 Tracks) ----------------------------------------------------------------- 0 0 Data-Transfer-Rate: 500 kBaud 64 40 Data-Transfer-Rate: 300 kBaud 3 128 80 Data-Transfer-Rate: 250 kBaud ----------------------------------------------------------------- 0 0 360 kB Disk in 360 kB Drive, unchecked 1 1 360 kB Disk in 1.2 MB Drive, unchecked 2 2 1.2 MB Disk in 1.2 MB Drive, unchecked 3 3 360 kB Disk in 360 kB Drive, checked 4 4 360 kB Disk in 1.2 MB Drive, checked 5 5 1.2 MB Disk in 1.2 MB Drive, checked 4 7 7 state not defined (3«"-Drive) ----------------------------------------------------------------- To get the correct value for your format, select one Value out of each group and add these values. Normally the media type byte is set correctly, following these rules: Group 1: Always set to 16 Group 2: 32, if tracks from 1-43, else 0 Group 3: high density disks: always 0 double density disks: 64 for 5¬"-Disks, 128 for 3«"-Disks Group 4: always set to 3 Why set group 4 always to 3? There is a problem DTK-BIOS. DTK-BIOS seems not to work with any other value than 3. All other BIOS Versions I have tested, seem to ignore the Value of Group 4. So it will be the best choice to set it always to 3. In some few cases. Your System will not work with the default value. In this case, try out any value from 0-7 for Group 4. It should work. If you have determined the correct value, you can write it in the FDFORMAT.CFG file. CONFIGURING FDFORMAT WITH FDFORMAT.CFG -------------------------------------- Before you start setting up a configuration file, you should try, if all formats will work correctly. FDFORMAT normally automatically determines the best options for you. If something seems to fail, then set up a configuration file. You must also create a configuration file, if you have one of the following situations. 1) You have an XT with a high density controller to support 1.2 MByte or 1.44 MByte drives. 2) You have an AT and an 1.44 MByte drive, but you cannot install it with your setup program (e.g. IBM/Advanced diagnostics). 3) You have an XT (like EPSON QX-16 or AT&T/Olivetti M24/M28), which has one or more 720 kByte drives, that also supports 360 kByte diskettes. 4) You have an 5¬"-720 kByte drive in an AT. Format of the configuration file FDFORMAT.CFG --------------------------------------------- The general format for FDFORMAT.CFG is: : [XT|AT] [BIOS] [40=n] [80=n] [F=n] [360=n] [720=n] [1.2=n] [1.44=] [X=] [Y=] Example for a configuration file: REM Configure drive B: for 1.44 MByte B: AT BIOS F=7 360=$B7 720=$97 1.44=$17 X=2 Y=2 REM Configure drive A: for 5¬"-720 kByte A: AT F=2 BIOS 720=$54 X=0 Y=0 REM All Numbers preceded by a $-sign are hexadecimal The options in detail: XT : Tell FDFORMAT that your Computer is an XT or compatible and does not perform any AT-BIOS functions. This option is only needed, if FDFORMAT does not automatically recognizes, that your computer is an XT. This option is also needed, if your XT supports 720 kByte drives, that can handle 360 kByte diskettes too. AT : Tell FDFORMAT that your Computer is an 80286/386(SX) or 80486 Computer or an XT, that supports AT-BIOS functions. This option is only needed, if FDFORMAT does not recognize, that you can use AT-BIOS functions. A typical case, where you need this parameter is, when you have an XT with a high density controller installed. BIOS: This option works only with AT-BIOS. It tells FDFORMAT not to modify the disk type byte directly, as it is the default, but try to change the format information via BIOS-Calls. This option should only be used, if FDFORMAT does not work without this option. The BIOS option has the typical disadvantage that some BIOS-Versions do not support all formats for all drives. In this case you must set the disk type byte for the unsupported format in your configuration file. This option is described later. PC40: This option works only with a few XT-BIOS-Versions for 720 kByte drives. You can specify an offset to the physical drive number, that indicates, that a 40 Track Diskette (360 kByte) is inserted, when calling BIOS-Disk I/O. Normally this option is set to 0. PC80: This option works with most XT-BIOS-Versions, that support 720 kByte Drives, who also can handle 360 kByte diskettes. These are for example AT&T M24/M28 or EPSON-QX16. The most often used offset is 64. Try 64 first, if it does not work try 32, 16, 8, 4 or 2. Do not try any other values, it will not work. F : This option needs to be set only, if your BIOS does not support the your type of disk drive. You need this option, if you have an 1.44 MB drive installed and your BIOS does not support it. If you want to install this option use the following values: F=0 for 360 kByte Drive, F=1 for 1.2 MB drive, F=3 for 720 kB Drive and F=7 for 1.44 MB drive. 360 : Use this option to use another disk type byte for 360 kB diskettes than the default value of $73. If you have set the BIOS option, the 360 kByte format will not be set by BIOS, but directly using this disk type byte. Refer to the B command line option to see how you can determine the correct disk type byte. 720 : same as 360, but for 720 kB format. 1.2 : same as 360, but for 1.2 MB format. 1.44: same as 360, but for 1.44 MB format. X : can be used to override the default of 0 for sector sliding, when the head changes. Y : can be used to override the default of 0 for sector sliding, when the track changes. Sample Configuration Files -------------------------- A: XT PC80=64 720 kB drive in XT like AT&T M24 A: AT F=7 1.44 MB drive in AT or XT A: AT F=1 1.2 MB drive in AT or XT A: AT F=2 360=$74 720=$57 720 kB 5¬"-Drive in AT A: AT F=2 360=$73 720=$53 720 kB 5¬"-Drive in AT & DTK-BIOS