home *** CD-ROM | disk | FTP | other *** search
- ========================
- 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 purpose 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 timed out
- 0Fh - DMA error
- 20h - Controller busy before I-O
- 21h - Controller busy after I-O
- 80h - First DRQ timed out
- AAh - Disk not ready before I-O
- ABh - Disk not ready after I-O
- CCh - Write FAULT before I-O
- CDh - Write FAULT after I-O
- E0h - Hard error at I-O end
- FEh - BIOS/driver read MISMATCH (init only)
- FFh - XMS memory error
-
- 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.
-
- 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.
-
- Please be sure to set up the hard disk in your BIOS correctly. Set it
- to "Auto", "LBA", or "LBA Assisted". DO NOT set it to "CHS", "ECHS",
- "Revised ECHS", "Bit Shift", "User Cylinders/Heads/Sectors", or "None".
- If the BIOS has a setting such as "UDMA Capable" for a disk, enable it.
- Any power-saving features like a "drive spin-down timeout", etc. should
- be disabled, or driver read-write requests may time out!
-
- The UDMA/UDMAJR drivers are written for systems using "legacy" UltraDMA
- controller mode. The drivers will NOT "recognize" controllers set to
- "native PCI" mode, only "legacy" IDE mode! Also, the motherboard is
- expected to use a "standard" BIOS program, one that supports "EDD" BIOS
- calls and provides "DPTE" data for "legacy" UltraDMA disks as described
- in the Phoenix EDD BIOS specifiction Ver 1.1 (9 May 1995). It's through
- such BIOS logic that UDMA/UDMAJR determine which disks to use, and what
- their physical parameters are.
-
- However, there are some "old" motherboards (pre-1998) that run UltraDMA
- disks but have NO "EDD" BIOS. There are also some NEW systems (Compaq
- and H/P) which offer both a serial ATA and parallel IDE controller, but
- their BIOS in fact DOES NOT give proper "DPTE" data for "legacy" disks!
-
- For such "old" and improper-new systems, UDMA/UDMAJR starting with V6.8
- shall do a "hardware only" scan for UltraDMA disks, if the drivers find
- NO disks to use through standard BIOS logic. The drivers will re-scan
- the system WITHOUT using any EDD BIOS logic, and will expect to find:
-
- BIOS unit 80h = Primary Master disk, UltraDMA disk #1.
- unit 81h = Primary Slave disk, UltraDMA disk #2, if present.
- unit 82h = Secondary Master disk, UltraDMA disk #3, if present.
- unit 83h = Secondary Slave disk, UltraDMA disk #4, if present.
-
- The "hardware only" scan REQUIRES that UltraDMA disk #1 be the primary-
- master, a second UltraDMA disk to be the primary-slave, etc. If ATAPI
- devices (ZIP, CD-ROM) are also present, they must use an IDE cable slot
- AFTER all UltraDMA disks! ATAPI devices normally occupy the SECONDARY
- channel for such systems. Note that, if a SCSI controller is present,
- its on-board BIOS chip (if any) must be set DISABLED! This is so the
- motherboard's main BIOS will not "install" any SCSI drives ahead of the
- UltraDMA hard disks. This also demands that an UltraDMA disk, not a
- SCSI or CD-ROM, must be the system "boot" disk. On systems that need a
- "hardware only" scan with UDMA/UDMAJR, SCSI disks may still be accessed
- by a DOS SCSI driver appropriate for the controller and its disks.
-
- NOTE that these limits of attaching the UltraDMA disks first on the IDE
- controller are required ONLY to deal with a missing/invalid "EDD" BIOS.
- If a valid "EDD" BIOS is present as on most good "modern" systems, user
- disk drives (both IDE and SCSI) may be configured in ANY desired order.
-
- 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
-