Back to Top Last Update : Sunday, 21-Oct-2012 18:27:21 HKT

XMGR- XMS Memory Manager
UIDE- "Universal IDE" caching driver
RDISK- 2-Gigabyte "RAM Disk" Driver
Last Update: 2012-10-15

Binary : ( 160.3 Kb )
Configuration Sample : ( 1.7 Kb )
XMGR, RDISK, UHDD/UDVD2, and UIDE are DOS drivers for an 80386+ system using MS-DOS V5.0+, FreeDOS, and all similar DOS variants.

XMGR is a DOS XMS memory manager. It supports V3.70+ UMBPCI by Uwe Sieber and can load directly into UMBPCI upper-memory. XMGR also runs with JEMMEX/JEMM386, MS-DOS V4.49/V4.95 EMM386 or other similar "EMS managers". It is written to V3.0 XMS Specifications and supports up to 4-GB of memory.

RDISK is a DOS RAM-disk driver, which creates a "fast" disk drive using 2 Megabytes to 2 GIGABYTES of XMS memory! It loads as a system driver in CONFIG.SYS, or it can load later in AUTOEXEC.BAT or by user command. DOS can copy critical programs or data files to the RAM-disk and access them much faster. RDISK is a small "load it and forget about it" driver, for users who do not need resizing or other features.

UHDD is a new "disk only" variant of UIDE, for users who do not need IDE CD/DVD support. UHDD omits CD/DVD logic but has all other UIDE features, including caches up to 4-Gigabytes, supporting 10 controllers and 28 BIOS disks or diskettes, and allowing caching calls from external user drivers such as UDVD2. See the UHDD.TXT file and UDVD2.ASM source file for full details about user-driver caching. UHDD sets all its tables and cache data in XMS memory, and it needs only 3344 bytes of upper/DOS memory for any size cache. If hard-disk support is not needed (/E or /N1 switch), UHDD omits its UltraDMA routines and saves 464 bytes. A "stand alone" UHDD (/B switch, no caching or diskettes) for tests and diagnostics takes 1440 bytes of upper/DOS memory. The "stand alone" UIDE can replace old UDMA/XDMA drivers with greatly improved features. UHDD's /H switch can be used to put most of the driver in "free HMA" space and takes only 816 bytes of memory (656 in "stand alone" mode)!

UDVD2 is a new "CD/DVD only" driver, which can replace old XCDROM/GCDROM drivers with greatly improved features. It runs up to 6 SATA, IDE, or old "PIO mode" CD/DVD drives, can play back audio CDs, and will call the UHDD driver for data-file caching (MUCH faster!) when UHDD is present. UDVD2 uses only 1984 bytes of upper/DOS memory (144 memory and 1840 HMA with its /H switch), plus 112 extra bytes if caching is done. It either "shares" UHDD's UltraDMA buffer, or reserves its own 128K XMS buffer if needed, for misaligned or other I-O unsuitable for UltraDMA. UDVD2 is a "model" for how user drivers may achieve data caching by calling the UHDD driver!

UIDE is a "Universal IDE" caching driver for DOS. It runs SATA and UltraDMA disks on up to 10 "Legacy" or "Native PCI" IDE controllers. It intercepts and caches DOS Int 13h I-O requests for up to 30 BIOS disks, including up to 4 diskettes. UIDE "calls the BIOS" for non-IDE disks and caches their data when I-O is done. Other DOS Int 13h drivers can load before UIDE, and it will cache data for their drives as well. ("ASPI" or other drivers without Int 13h logic are unsupported). UIDE also runs up to 8 SATA, IDE, or old "PIO mode" CD/DVD drives, and it caches CD/DVD data files and directories for MUCH faster speed! Data files, audio CD playback, and "trackwriter" input can all be handled simultaneously on different drives (audio or "trackwriting" is uncached).

UIDE caches 5 Megabytes to 4 GIGABYTES of data! It uses 5232 bytes of upper/DOS memory for any size cache. All its tables and cache data are in XMS memory. A "stand alone" UHDD (/B switch, no caching or diskettes) can be used for tests/diagnostics and takes 3744 bytes of upper/DOS memory. UIDE's /H switch can be used to put most of the driver in "free HMA" space, thus using only 912 bytes of memory!

All of the drivers can handle AHCI disk/CD/DVD drives on controller ports set to "Legacy", "Compatibility", or "Native IDE" mode. "Free use" source files are offered for all drivers. See their README file for full details.

Revision History
15-Oct-12 UHDD/UIDE again detect A: and B: diskettes from BIOS data, NOT "Int 13h" calls! See section 7 of their README for details. Other drivers unchanged (re-dated only).
4-Aug-12 UHDDJR deleted, logic now in UHDD! /B "Stand Alone" UHDD (no caching) reduced to 1440 bytes! UHDD dismisses all UltraDMA logic with /E "Call the BIOS" or /N1 "No disks" switches, saving 464 bytes! XMGR/RDISK/UIDE unchanged (re-dated only).
2-Aug-12 Added the UHDD "disk only" caching driver, for systems not needing IDE CD/DVD logic. UIDEJR deleted, replaced by smaller/simpler UHDDJR and UDVD2. UDVD2 caches CD/DVD data if UHDD is also used! New /UD switch in UDVD2 and UIDE, to cache CD/DVD directories only (requires the new SHCDX33F). XMGR/RDISK unchanged (re-dated only).
9-Jul-12 UIDE/UIDEJR device select error, for master + slave CD/DVD units on one IDE channel, is corrected. Many Thanks to Doug Beneway for discovering this error! Other drivers unchanged (re-dated only).
25-Jun-12 UIDE2 deleted. Other drivers unchanged (re-dated only).
17-Jun-12 UIDE/UIDE2/UIDEJR /A switch, init of 2 "Old IDE" channels, and CD-audio "Q"/status data corrected. Many Thanks to Japheth for his research and audio-test program! Other drivers unchanged (re-dated only).
31-May-12 UIDE and UIDE2 detection of "legacy" address CD/DVD drives corrected. Other drivers unchanged (re-dated only).
29-May-12 UIDE and UIDE2 check for diskettes via Int 13h, avoid DPTE tests if no PCI BIOS, let the BIOS do I-O for disks with bad DPTE data, and /N5 deleted, all re: VirtualBox BUGS! Other drivers unchanged (re-dated only).
20-May-12 UIDE and UIDE2 now have a /N5 switch to disable caching of diskettes, if needed for VirtualBox etc. Other drivers unchanged (re-dated only).
23-Mar-12 UIDE now runs 30 BIOS units like UIDE2. UIDE/UIDE2 again use "common" driver logic and are down to 912 bytes with a /H switch! Other drivers unchanged (re-dated only).
7-Mar-12 UIDE2 /N3 switch deleted, now runs 30 BIOS units (not 34). This makes UIDE2 less than 7K bytes for "boot" diskettes etc.! Other drivers unchanged (re-dated only).
24-Feb-12 UIDE/UIDE2 "64K DMA boundary error" fixed (may affect only year-2000 chips or older!). UIDE2 much smaller! Minor XMGR/UIDE size changes, RDISK unchanged (re-dated only).
16-Oct-11 UIDE /M switch deleted, search-table buffer now always 512 bytes. UIDE.SYS is back to 7.5K, UIDE-S is eliminated! UIDE2 improved, other drivers unchanged (re-dated only).
30-Sep-11 UIDE.ASM using common core logic now assembles UIDE, UIDE2 or UIDE-S. All handle 10 controllers, 34 BIOS units, 8 CD/DVD drives. Other drivers unchanged, re-dated only.
23-Sep-11 UIDE2 /HL now takes 4608 bytes but caches up to 280-MB for V7.10 MS-DOS, more on other DOS systems! Other drivers unchanged (re-dated only).
18-Sep-11 UIDE2 error (non-cached CD/DVD input in protected mode) is corrected. UIDE-S or UIDE2 now handle 8 CD/DVD drives! UIDE-S now uses a faster 512-byte search buffer, /M will set 256. Other drivers unchanged (re-dated only).
9-Sep-11 UIDE2 using fast protected-mode caching re-added. UIDE-S or UIDE2 handle 6 CD/DVD drives, not 4. Minor UIDE and UIDEJR logic reductions, other drivers re-dated only.
22-Jul-11 UIDE /E switch added to handle DOS "emulators" (VirtualBox etc.). Other drivers unchanged (re-dated only).
11-Jun-11 UIDEJR error detecting multiple CD/DVD units is corrected. No change to UIDE or other drivers (re-dated only).
7-Jun-11 UIDE and UIDE-S /X switch deleted. UIDE /M switch added, to save HMA but avoid speed loss! UIDE-S size reduced. Other drivers unchanged (re-dated only).
20-May-11 UIDE-S ("short" UIDE) added, for systems with limited HMA. See the initial UIDE.ASM comments, for details. Other drivers unchanged (re-dated only).
16-May-11 More "code mod" init errors corrected in XMGR/UIDE/UIDEJR. RDISK unaffected. The author's apologies; users should update NOW to the 16-May-2011 drivers!
14-May-11 UIDE/UIDEJR disk "timeout" now 7 seconds (was 0.4 sec) for "laptop" disk spin-ups. Disk-only UIDEJR at 1504 bytes (was 1600!) in memory, still 688 bytes using /H. Other drivers unchanged (re-dated only).
10-May-11 UIDEJR sizes minimized! "CD/DVD only" UIDEJR in HMA space (/N1 /H switches) takes 176 upper-memory bytes, directly replaces "old" XCDROM/GCDROM drivers! UIDEJR now runs 4 CD/DVD drives, new /U8 switch runs 8 when needed. Other drivers unchanged (re-dated only).
2-May-11 UIDE corrected to flush its cache before CD/DVD input on a "VDS Lock" error (unlikely; 5-year UIDE "bug", NO report of trouble!). /X switch added to UIDE. Other drivers unchanged (re-dated only).
25-Apr-11 BAD initialization error is corrected in UIDE, UIDEJR, and RDISK (XMGR not affected)! The author's apologies -- Users should update NOW to the new 25-Apr-2011 drivers!
16-Apr-11 UIDE user-driver caching improved and re-added. Read the file UIDE.TXT for all details. Other drivers unchanged (re-dated only).
5-Dec-10 UIDE/UIDEJR /R15 and /R63 switches added to handle old DOS "games" (many thanks to Guillermo Grana Gomez!). Other drivers unchanged (re-dated only).
28-Nov-10 Minor updates: UIDEJR audio track-number error corrected, XMGR protected-mode speed improved. /Z switch added in both XMGR and UIDE. RDISK unchanged (re-dated only).
15-Aug-10 UIDE audio track-number error corrected (Thanks, Nagatoshi Uehara!). UIDE speed improved, from faster cache-table updates. Other drivers unchanged (re-dated only).
10-Aug-10 UIDE binary-search buffer added. UIDE has > 96% speed of prior /PM cache! Using $ in CD/DVD names fixed in UIDE and UIDEJR (Thanks, Japheth!). Other drivers unchanged (re-dated only).
4-Aug-10 Much-improved UIDE speed in protected mode (JEMM386 etc.). UIDE /HL /K /L /P /PM deleted, both "protected mode" and "memory only" caches removed (now unneeded)! UIDE /N4 switch added. Oher drivers unchanged (re-dated only).
25-Jul-10 UIDE error in 38/46-bit LBA logic fixed. NO user effect, as DOS still handles 32 bits! Other drivers unchanged (re-dated only).
17-Jul-10 UIDE /PM cache-data entries minimized and /L switch added. "Memory only" caches can now be 400-MB! Other drivers unchanged (re-dated only).
13-Jul-10 Fast UIDE "memory only" cache added via /PM switch. Other drivers unchanged (re-dated only).
11-Jul-10 UIDE size reduced, I-O "calls" made more efficient for all but /HL mode. Other drivers unchanged (re-dated only).
4-Jul-10 README file updated -- XMGR/UIDE can use "Native IDE" mode same as "Legacy"/"Compatibility" mode, if offered for an AHCI mainboard. NO driver changes (re-dated only).
28-Jun-10 XMGR updated for AHCI use. See the README section 7, for full details. Other drivers unchanged (re-dated only).
16-Jun-10 UIDE /E switch and external-entry logic summarily deleted. Other drivers unchanged (re-dated only).
10-Jun-10 UIDE now ignores a "removable HARD disk" (some USB units!) due to likely media-change trouble! UIDE size reduced. Other drivers unchanged (re-dated only).
19-May-10 UIDE speed slightly improved, /K switch re-added to assist protected-mode speed (but see the NOTE about /K usage in the README!). Other drivers unchanged (re-dated only).
27-Nov-09 UIDE /HL switch added, for protected-mode caches to 255-MB on V7.10 MS-DOS and 425-MB+ on others. UIDE /N3 switch error fixed. Other drivers unchanged (re-dated only).
22-Nov-09 UIDE uses more-optimal cache blocks, UIDE /F switch added. UIDE/UIDEJR are no-longer packed by UPX, to avoid loader problems. XMGR/RDISK unchanged (re-dated only).
16-Nov-09 UIDE now caches 4 GIGABYTES of data! UIDE /P switch added for more protected-mode speed. XMGR/UIDE/UIDEJR now run 32 BIOS disks (not 40) as DOS has only 32 drive letters. RDISK unchanged (re-dated only).
4-Nov-09 Fixed UIDE "cache flush" error. Added UIDE /E switch and 25/50-MB caches, deleted all reassembly options. Other drivers unchanged (re-dated only).
19-Oct-09 UIDEJR "VDS lock" error fixed: CD/DVD logic now dismissed only by its /N2 switch. UIDE logic reduced, its source has added re-assembly options. Other drivers unchanged (re-dated only).
15-Oct-09 XMGR/UIDE /K switch deleted, as Win95/98 do NOT like using protected-mode move "calls"! Thanks to Japheth for his "warning"! Other drivers unchanged (re-dated only).
6-Oct-09 UIDE/UIDEJR are back to using normal memory, due to MS-DOS V7.10 kernel "bugs" that cause CRASHES! /R deleted, /H now requests HMA usage "at the user's own risk"! Other drivers unchanged (re-dated only).
3-Oct-09 Fixed UIDE handling of cache XMS errors, NOT a big problem since XMS memory almost never fails! Minor UIDE/UIDEJR size changes. Other drivers unchanged (re-dated only).
7-Sep-09 BAD protected-mode cache init error fixed in UIDE! Other drivers unchanged (re-dated only). UIDE users who load JEMM386 or other protected-mode handlers should download the 7-Sep-09 drivers immediately!! Users who load only UMBPCI (real-mode) are not affected.
3-Sep-09 XMGR now does protected-mode move "calls" (as in UIDE) for faster speed using RDISK, etc. XMGR /K switch added to request "normal" XMS moves, when needed. Other drivers unchanged (re-dated only).
02-Sep-09 README file updated -- FreeDOS users who desire full upper memory must omit UMBPCI and load JEMM386 or JEMMEX only. NO driver changes, all are still dated 30-Aug-2009.
30-Aug-09 BAD "VDS init" ERROR fixed in UIDE/UIDEJR! Other drivers unchanged (re-dated only). Users of UIDE/UIDEJR should download the 30-Aug-09 drivers immediately!
23-Jun-09 RDISK now a .COM file, loadable by CONFIG.SYS or AUTOEXEC. RDISK /: switch added to use any free drive letter, when loaded thru AUTOEXEC or later. RDISKON program added. Corrected UIDE CD/DVD handling of VDS errors. XMGR and UIDEJR unchanged (re-dated only).
9-Jun-09 UIDE/UIDEJR /N3 switch added for no XMS memory. Override of /D: name with UIDE$/UIDEJR$ added if no CD/DVD drives are found. XMGR/RDISK unchanged (re-dated only).
1-Jun-09 UIDE optimized for JEMM386, UIDE /K switch added. JEMM386 is now recommended with UIDE. See the README "Technical Notes" for full details. Other drivers unchanged.
27-May-09 UIDE now uses 992 upper-memory bytes (external-entry logic made an assembly option). UIDE move-memory logic fixed for older 80386/80486 CPUs. CD/DVD entry code in UIDE/UIDEJR improved. XMGR/RDISK unchanged.
19-May-09 Fixed RDISK clear-memory error and added removable-inquiry support. Other drivers unchanged (re-dated only).
15-May-09 Added the RDISK driver, which creates a 2-MB to 2-GIGABYTE "fast" RAM-disk using XMS memory! XMGR/UIDE unchanged.
6-May-09 Added the non-caching UIDEJR ["junior" UIDE] driver, using only 768 upper-memory and 2528 HMA bytes! UIDE/UIDEJR now run up to 10 controllers, 36 disks, 8 CD/DVD drives.
1-May-09 Fixed XMGR "Port 92h" logic error. Added XMGR /PA and /PN switches to control use of "Port 92h" logic.
28-Apr-09 Fixed UIDE save/restore error during CD/DVD init messages.
25-Apr-09 XMGR/UIDE license and FreeDOS prohibition deleted, drivers and sources are again available to all. Corrected UIDE error in posting CD/DVD "return codes". UIDE /R switch re-added to support ROM-DOS.
21-Apr-09 Minor UIDE error (disk "A20 error" code not set) is fixed.
17-Apr-09 UIDE now caches 2 GIGABYTES, using 992 upper-memory bytes and 3760 HMA bytes for any cache size; search tables now use XMS! /L deleted. Fixed BAD audio byte-count error.