UltraDMA Driver for DOS ~~~~~~~~~~~~~~~~~~~~~~~ This is a DOS driver, intended to run ONLY a single UltraDMA hard disk on chipsets made by Intel, VIA, SiS, ALi, and other manufacturers. It CANNOT be used with the add-on IDE controller cards having an on-board BIOS that already supports UltraDMA like Promise, SiiG or Adaptec. The disk must be the MASTER on the PRIMARY IDE channel. A primary slave is assumed to be absent. Other IDE units (CD-ROM, ZIP, LS-120, etc.) must use the secondary channel, and are assumed to be run by other drivers. An "Identify Drive" command is sent to the disk when the driver loads. Its mode is set to the highest supported. For older controllers which won't run in this mode, the maximum mode can be specified by an option. ATA-16 to ATA-133 hard disks may be used. This driver handles only read and write requests to the PRIMARY MASTER disk. All other requests (seek etc.) are "passed" back to the BIOS or some other driver for handling. The disk is assumed to support standard LBA mode (63 sectors, 255 heads and its designed number of cylinders). The driver supports 28-bit LBA mode (BIOS commands 42h read, 43h write) and handles up to 128-GB disks in MS-DOS v7.0+, PC-DOS 7.1 and FreeDOS. The old 24-bit CHS mode (BIOS commands 2 read, 3 write) is still supported for MS-DOS v6.x and below. CHS mode requires all user files to be on the first 8 GiB of the disk. More data, if present, must be in other disk partitions, and accessed via other operating systems which support LBA mode. Version 2.0+ of this driver is changed so that if the user I/O buffer is not DWORD-aligned, fails a VDS "lock" or crosses a 64K boundary, a request shall be processed through a 4K driver buffer, using UltraDMA I/O to and from the buffer. This prevents "passing" any I/O request back to the BIOS for execution in slow PIO mode, as in older versions of this driver. Not crossing a 64K DMA boundary is required by the Bus Master IDE specification, and DWORD alignment - by the Intel chipsets. With V3.1+, if the symbol QW is defined, the "Quick-Write" version of this driver, with a 20K I/O buffer, shall be assembled. All output is from its buffer, so this driver version need NOT wait for output end! Used in systems which "gather" blocks of data for faster output, e.g. with Symantec's NCACHE2 disk-cache, the "Quick-Write" driver can give SIGNIFICANT speed increases as writes become OVERLAPPED! However, the driver and cache EACH need a 20K buffer for best speed, output errors CANNOT be reported before a subsequent I/O request, and its check for I/O end does NOT check the DMA-interrupt flag, to avoid trouble by an intervening BIOS request which might RESET the flag! Thus the "Quick- Write" driver may not be used on old chipsets [e.g. Intel 82371] that require use of the DMA-interrupt flag. The "Quick-Write" driver WORKS on newer chipsets [e.g. VIA VT8235] and so is "Use At Your OWN Risk"! The driver must be loaded from CONFIG.SYS after any XMS/UMB drivers, but before any disk caching software, using the following line: DEVICE[HIGH]=[path]UDMA.SYS [Mode] "Mode" is a digit from 0 to 6 to set an UDMA mode limit (default is 6). Any slash or dash is optional, i.e. "/4", "-4", "4" are all equivalent. Unknown option characters are simply ignored without any error message. Even if a maximum UDMA mode is specified, the UDMA mode will be set to a LOWER value if the hard disk cannot handle that maximum! For example specifying /5 (ATA-100) on a hard disk limited to Mode 4 (ATA-66) will cause the driver to set the disk to Mode 4, the best the disk will do! You don't normally need the Mode option; it'll be automatically set to the highest mode of your disk. If your controller does NOT support it, however, you MUST expressly set a limit by the Mode option! Modes are: 0.ATA-16, 1.ATA-25, 2.ATA-33, 3.ATA-44, 4.ATA-66, 5.ATA-100, 6.ATA-133. Spread and enjoy! Jack and Luchezar