Command: udma.sys / udmajr.sys

  UDMA.SYS / UDMAJR.SYS are DOS hard-disk caching driver for UltraDMA
  hard-disks. UDMA.SYS / UDMAJR.SYS has to be loaded in CONFIG.SYS /
  FDCONFIG.SYS.
  When FreeDOS is already running, you can load UDMA.SYS / UDMAJR.SYS
  later with DEVLOAD.
  UDMA.SYS / UDMAJR.SYS are out of date. There is NO MORE support
  by the author! You should use UIDE.SYS instead.

Syntax:

  DEVICE[HIGH] = [path]UDMA.SYS [/A] [/Q] [/R] [/Sn] [/U]
  DEVICE[HIGH] = [path]UDMAJR.SYS [/A] [/Q] [/R] [/Sn] [/U]

Options:

  UDMA.SYS / UDMAJR.SYS normally needs no switches. Its switch options
  are as follows:
    /A   Specifies use of the old alternate EIDE controller addresses,
         01E8h-01EFh on the primary channel, and 0168h-016Fh on the
         secondary channel. If /A is omitted, the driver will use
         normal controller addresses of 01F0h-01F7h or 0170h-0177h.
         /A is only for an "odd" SATA BIOS or other unusual cases.
    /Q   Enables awaiting "data request" before starting UltraDMA data
         transfers. /Q must be OMITTED with a SATA-to-IDE adapter
         by Sabrent etc., as such cards do not emulate data request
         from SATA disks! /Q is not needed with newer controllers
         or IDE disks. It is for "old" systems and should be used
         only if UDMA loads O.K. but seems unable to transfer data.
    /R   Restricts UDMA to "regular" memory and avoids the HMA for its
         binary-search table. /R may be required with DOS systems
         that will NOT allocate memory until after CONFIG.SYS loads
         drivers! /R is unneeded with V7.10 MS-DOS, V6.22 MS-DOS,
         V7.1 PC-DOS, PTS-DOS, or EDR-DOS. /R is REQUIRED to work
         with ROM-DOS! Other DOS variants should be tested first.
    /Sn  Specifies the desired cache size, as follows:
           /S0     5-MB cache,  1280-byte table size,  8K blocks.
           /S1    10-MB cache,  2560-byte table size,  8K blocks.
           /S2    20-MB cache,  2560-byte table size, 16K blocks.
           /S3    40-MB cache,  2560-byte table size, 32K blocks.
           /S4    80-MB cache,  2560-byte table size, 64K blocks.
           /S5   120-MB cache,  3840-byte table size, 64K blocks.
           /S6   160-MB cache,  5120-byte table size, 64K blocks.
           /S7   200-MB cache,  6400-byte table size, 64K blocks.
           /S8   250-MB cache,  8000-byte table size, 64K blocks.
           /S9   400-MB cache, 12800-byte table size, 64K blocks.
           /SL   750-MB cache, 24000-byte table size, 64K blocks.
         When /S is omitted, /S4 is assumed. The driver logic and
         stack take a fixed 2544 bytes along with the binary-search
         table sizes above. UDMA sets its binary-search table and
         1088 bytes of logic in the HMA unless /R is given or under
         3648 bytes of HMA are free (2368 bytes with /S0), in which
         case regular memory will be used. When not enough HMA or
         regular memory for a given /S is "free", the largest cache
         that fits in "free" memory is used. UDMA loads in 4K, so
         at least a 5-MB cache in regular memory can always be set.
         The 400-MB and 750-MB caches cannot use the HMA and always
         take 15K or 26K of regular memory. For no UltraDMA disks
         UDMA dismisses its UltraDMA logic during init, to save 368
         bytes of HMA. For an old V2.0 XMS manager (ROM-DOS etc.)
         the maximum is /S3 or 40-MB. /S0 is for ancient 8-MB DOS
         systems and may lose efficiency caching today's big files.
         At least /S1 is recommended. Enough free XMS memory must
         be available for the cache size to be set, or UDMA aborts!
    /U   Requests the "stand alone" UltraDMA driver only (no caching),
         which may be of help in running a disk diagnostic program.
  For each switch, a dash may replace the slash, and lower-case letters
  may be used.

Comments:

  UDMA.SYS is offered for those who wish to remain "compatible" with
  older versions of that driver. It uses the same 640 byte resident
  "core" as UDMA2.SYS or UDMAJR.SYS. As with all prior versions,
  UDMA.SYS is the only driver in the set which displays the UltraDMA
  controller "names" and PCI-bus data at load-time, for those desiring
  to see which chip will be run. UDMA.SYS offers the full set of load-
  time tests same as UDMA2.SYS.
  UDMAJR.SYS is offered for "RAM disk" or "embedded" systems which
  require an absolute minimum-size UltraDMA driver. It has the same
  640 byte resident "core" as UDMA2S.SYS or UDMA.SYS with the same
  run-time capability.
  UDMAJR.SYS omits an 80386 test, "read tests" and the controller and
  disk "names" at load-time (the controller I/O address IS shown!),
  thus it achieves an object-file size of 2048 bytes.

Examples:

  In CONFIG.SYS / FDCONFIG.SYS:
    DEVICE=C:\FDOS\BIN\UDMA.SYS
    DEVICEHIGH=C:\FDOS\BIN\UDMA.SYS
    DEVICE=C:\FDOS\BIN\UDMAJR.SYS
    DEVICEHIGH=C:\FDOS\BIN\UDMAJR.SYS

See also:

  autoexec.bat
  config.sys
  devload
  fdconfig.sys
 (udma2.sys)
  uide.sys
 (xdma.sys)

  Copyright © 2007 Jack Ellis, updated 2011 by W. Spiegl.

  This file is derived from the FreeDOS Spec Command HOWTO.
  See the file H2Cpying for copying conditions.