======================== 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