			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 two drivers in the package.	UDMA supports one to four disks
of any size, including new models above 128 GiB.   Its resident code is
592 bytes.   UDMAJR ("Junior UDMA") is a smaller version of UDMA, 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 UDMA (the resident coding is identical).   It is intended for use by
embedded systems "ROM disk" whose files must be kept to a minimum size.

UDMA and UDMAJR can be used in "DMA only" mode, for minimum DOS systems
which do not load an XMS driver.   Without XMS, UDMA/UDMAJR 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, UDMA/UDMAJR in
"DMA only" mode is still useful on minimum systems.   The resident size
of the driver is reduced to 528 bytes in this case.

UDMA and UDMAJR also include a full set of driver return codes, to show
the exact cause of any error.	 The larger UDMA 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 UDMA and only where it is loaded with an XMS driver (these
tests are written to use XMS memory).	If no XMS driver is present, or
when the smaller UDMAJR driver is run, the "comparison reads" and "read
speed" tests are omitted.   Users who may be having problems can forego
UDMAJR and run the full UDMA as a diagnostic aid.   The UDMA and UDMAJR
driver return codes (available after any I-O), and the message displays
for UDMA load-time errors, 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 (UDMA only)
	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 UDMA/UDMAJR in "DMA only" mode shall "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\UDMAJR.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
conventional or upper memory.

							Spread & enjoy!
							Jack & Luchezar
