		       UltraDMA Drivers for DOS

This is a "package" of UltraDMA hard-disk drivers for DOS.   All of the
drivers run UltraDMA disk(s) on PC motherboards having a "South Bridge"
controller chip made by Intel, VIA, SiS, ALi and other vendors.	  These
drivers are NOT for use by "add-on" IDE adapters made by Promise, SiiG,
HighPoint, or others, as such adapter cards already support UltraDMA in
their own on-board BIOS logic.	 The propose of these drivers is to use
the motherboard UltraDMA controller and AVOID needing an "add-on" card!

There are three drivers in this package.   UDMA supports a single hard-
disk of up to 128 GiB.	 Its resident code is only 400 bytes, and it is
intended for the majority of PC users who have only one disk and do not
need more features.   UUDMA (Universal UDMA) supports one to four disks
of any size, including new models above 128 GiB.   Its resident code is
592 bytes.   UUDMAS ("Short UUDMA") is a smaller version of UUDMA whose
object-file size is only 2048 bytes by omitting some load-time messages
and the disk read speed and verify test.   It has all run-time features
of UUDMA (the resident program is identical) and is intended for use by
embedded systems "ROM disk" whose files must be kept to a minimum size.

Most users will find UDMA perfectly adequate, but users having multiple
or large-size disks will need to run UUDMA or UUDMAS.	Also, note that
UUDMA and UUDMAS can be run in "DMA only" mode, for minimum DOS systems
that do not load an XMS driver.	  Without XMS, UUDMA/UUDMAS have no I-O
buffer and "pass back" to the BIOS those I-O requests which do not meet
DMA requirements (see below).	Since such I-O is rare, UUDMA/UUDMAS in
"DMA only" mode is still useful on minimum systems.   The resident size
of the driver is reduced to 528 bytes in this case.   Note that in "DMA
only", the load-time "comparison reads" between the driver and BIOS are
still run for each disk, but the "read speed" tests (requires XMS) will
be omitted.

UUDMA and UUDMAS also include a full set of driver return codes to show
the exact cause of any error.	The larger UUDMA will display load-time
diagnostic messages for each of these return codes, if any error occurs
during the "comparison reads" between the driver and BIOS or during the
"read speed" test of each UltraDMA disk.   These tests are done only at
load-time by the drivers.   Users who may be having problems can forego
UDMA and run UUDMA/UUDMAS to aid in diagnosing the problem.   The UUDMA
and UUDMAS driver return codes (available after any I-O), and the load-
time messages displayed by UUDMA only, are as follows:

   Code 08h - DMA transfer timed out (did not end in 400 msec)
	0Fh - DMA error detected during or after data transfer
	20h - Controller not-ready for 400 msec before I-O start
	21h - Controller not-ready for 400 msec at the END of I-O
	80h - First DRQ timed out (did not occur in 400 msec)
	AAh - Disk not-ready for 400 msec before I-O start
	ABh - Disk not-ready for 400 msec at the END of I-O
	CCh - Disk showed a write-fault before I-O start
	CDh - Disk showed a write-fault at the END of I-O
	E0h - Hard error at I-O end (controller status bit 0 set)
	FEh - Data MISMATCH between BIOS and driver reads
	FFh - Error during an XMS memory transfer

For optimum and error-free performance, we recommended that you install
a single hard-disk as the "master" on the primary IDE channel.	 With a
disk that runs an UltraDMA mode higher than 2 (ATA-33) you MUST use 80-
conductor IDE cable.   Also, note the following comments, from the ATA/
ATAPI-7 specification:

     The host shall be placed at one end of the cable. It's recommended
     that for a single device configuration the device be placed at the
     opposite end of the cable from the host. If a single device
     configuration is implemented with the device not at the end of the
     cable, a cable stub results that may cause degradation of signals.
     Single device configurations with the device not at the end of the
     cable shall not be used with Ultra DMA modes.

Please be sure to set up the hard disk in your BIOS correctly.	 Set it
to "Auto" or "LBA" but not "CHS" or "Large".   If the BIOS set-up has a
setting like "UDMA Capable" for the disk, enable it.   Any power-saving
features like a "drive spin-down timeout" should be disabled, or driver
read-write requests may time out!

UDMA mode is set to the highest common mode, supported by your disk and
chipset.  This value should be initialized by your BIOS, even where the
BIOS itself does not do UltraDMA I-O.	The drivers handle only read or
write requests.	  All other requests (seeks, etc.) are "passed back" to
the BIOS or some other driver for handling.

The disk is checked to support standard LBA mode (63 sectors, 255 heads
and its designed number of cylinders). The driver supports LBA mode for
MS-DOS 7.0+, PC-DOS 7.1, ROM-DOS, FreeDOS, new DR-DOS 7.0 versions, and
PTS-DOS 32 (the latter is untested). CHS mode is also supported for the
MS-DOS 6.x and below. This mode requires that all user files are on the
first 8 GiB of the drive. More data, if present, must be in other drive
partitions and accessed via other operating system supporting LBA mode.

If the buffer for an I-O request is not DWORD-aligned, fails a VDS lock
or crosses a 64K physical memory boundary, the request shall go through
a 64K buffer in XMS memory, using Ultra DMA I-O to and from the buffer.
Minimum DOS systems running UUDMA/UUDMAS in "DMA only" mode will "pass"
these requests back to the BIOS for execution.	 Not crossing a 64K DMA
boundary is required by the Bus Master IDE specification, and alignment
to a DWORD (4-byte) boundary is required by some Intel "South Bridges".
Also, I-O requests for more than 64K (over 128 sectors) of data will be
"passed" back to the BIOS.   DOS should never issue such a request.

Load the driver through your "CONFIG.SYS" file after any memory-manager
(EMM386.EXE, etc.) but PRIOR to any disk-cache program (NCACHE2, etc.).
You should use a command-line similar to the following:

		      DEVICE[HIGH]=[path]UDMA.SYS

For example:  DEVICE=C:\DOS\UDMA.SYS, DEVICEHIGH=C:\BIN\UUDMA.SYS, etc.
There are NO command-line options for any of the drivers, they all find
which hard-disks to use automatically, and they all run equally well in
standard or "high" memory.

							Spread & enjoy!
							Jack & Luchezar
