UMBPCI.SYS v3.16 - Upper Memory Manager


Contents:


OVERVIEW

UMBPCI.SYS is a FREEware MS-DOS 5.00/6.xx, DR-DOS, Novell DOS, Caldera Open DOS and MS Windows 9x/3.xx Upper Memory Area (UMA) access driver (Microsoft HIMEM.SYS extender) for Intel, FIC VIA (Apollo), ALi (Alladin) and SiS PCI/AGP chipsets, supporting Intel Pentium, Pentium Pro, Pentium II/III, AMD and Cyrix CPUs.

It is based on the German c't Magazine's free source code. The original UMBPCI (German version) was written by c't Magazine's editor Andreas Stiller in 1995, based on UMBADD developed by Peter Siering (c't) in 1991. UMBPCI had several problems, supported only Intel chipsets up to the 430FX, and there were no free updates. Andreas further developed CTUMB, which is only available to c't subscribers, on c't Magazine's Utilities CD-ROM.

NOTE: UMBPCI.SYS is an unofficial release, unsupported by c't Magazine!
If you have problems read this manual FIRST. If that doesn't help, please e-mail Uwe Sieber.

Uwe Sieber's UMBPCI.SYS guidelines + info web pages:

Download UMBPCI.SYS directly from Uwe Sieber's web site:

To make UMBPCI available for download on your homepage, please use the links above, due to frequent updates.


DISCLAIMER

This program and the accompanying documentation are offered "as is".
The user bears the entire risk of this software not performing as expected.


UPDATES

New supported chipsets and version updates:


REQUIREMENTS


FEATURES + ADVANTAGES

UMBPCI.SYS extends Microsoft's HIMEM.SYS by enabling the "Request XMS-UMB" function. Microsoft's EMM386.EXE does the same, when loaded with the "NOEMS", "HIGHSCAN" or "RAM" parameters in CONFIG.SYS.

UMBPCI.SYS creates UMBs (Upper Memory Blocks) using the existing system memory intended to be used as Shadow RAM, but disabled by default, ONLY in the C800-EFFF range, NOT at B000-B7FF. The B000-B7FF area is normally used for monochrome video (used by older graphics adapters), NOT for BIOS (ROM) extensions, therefore X86 chipsets cannot enable shadow RAM within this region. UMBPCI.SYS enables this memory and disables its write protection.

UMBPCI.SYS takes ONLY 240 Bytes of conventional RAM (224 Bytes code + 16 Bytes environment), while providing up to 629 KiloBytes (KB) of FREE conventional (low) memory, IF loading ALL devices/drivers/TSRs "high"!
Microsoft EMM386.EXE also creates UMBs from the computer's physical XMS (eXtended Memory Specifications), but needs an additional 150 KB of XMS, 4 KB of low memory and 7 KB of UMA (Upper Memory Area) when loaded, and it also switches the CPU into "protected mode" (slower).
UMBPCI.SYS leaves the CPU in "real mode", for better compatibility and faster performance.
Take a look at these diagrams for memory requirements and performance comparison:

UMBPCI
[ Diagram by Ralf Buschmann ]

Begining with v3.00 you can simply try loading UMBPCI without any checking.
Because UMBPCI.SYS is an extension to HIMEM.SYS under MS-DOS/MS Windows, it MUST be loaded after HIMEM.SYS. CONFIG.SYS example assuming Windows 9x resides in C:\WINDOWS and UMBPCI.SYS in C:\UMBPCI:

DOS=HIGH,UMB
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF /Q
DEVICE=C:\UMBPCI\UMBPCI.SYS
DEVICEHIGH=...
INSTALLHIGH=...
SET=...
etc...

If UMBPCI is properly loaded, you'll see a message like this:

"UMBPCI c't 11/95 - Siering/Schaepers/Stiller
V3.16 - support for new Intel/VIA/ALi/SIS chipsets + P2 - Uwe Sieber 5/00
Using C800-EFFF
Intel 440BX/ZX found
Programm installed
"

If your chipset is NOT supported, you'll get this message:

"No supported chipset found.
Problem programming the chipset.
"

If your chipset is supported but UNTESTED, you'll get this message:

"This chipset is untested! Mail me the name of the chipset and if it works
so I can remove this break: uwe.sieber@gmx.de
press any key...
"

Uwe Sieber will remove this pause screen as soon as he'll find out if your (untested) chipset works.

If you get other messages, please e-mail Uwe Sieber.

You can determine your chipset's brand/type by using CTBIOS for DOS [28 KB, freeware by c't].


NEW TOOLS

New FREEware DOS tools included with UMBPCI.SYS:

  1. UMBCHK.EXE

    UMBCHK is needed ONLY if you want to use UMBPCI's /I=xxxx-yyyy parameter.

    Reboot your computer WITHOUT processing the startup files (AUTOEXEC.BAT and CONFIG.SYS): press F8 during the bootup POST (Power On Self Test) routine (MS-DOS 6.xx or Windows 9x). This is similar with the "Command prompt only" option from the Windows 9x Startup Menu. Then run UMBCHK to view all upper memory ranges available to UMBPCI, and to display the suggested command line for use with UMBPCI.
    UMBCHK recommends the same ranges UMBPCI uses when loaded without parameter.
    If you take a quick look at UMBPCI's message, you won't need UMBCHK.

    If UMBCHK suggests /I=C800-EFFF, add this line to your CONFIG.SYS file, AFTER the HIMEM.SYS line (example):

    DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF /Q
    DEVICE=C:\UMBPCI\UMBPCI.SYS /I=C800-EFFF

    NOTE: UMBCHK and UMBPCI's /I=xxxx-yyyy parameter are NOT needed by UMBPCI v3.00 and newer, which autodetect and map the available UMBs.

  2. DMACHK.COM

    Uwe Sieber added DMACHK thanks to Heiko Nocon who made it possible.
    Use DMACHK to check and display the UMB ranges in which ISA DMA works, eventually redirecting its output to a text file. Example:

    drive:\path\DMACHK > drive:\path\UMBRANGE.TXT

    To use it UMBPCI MUST be loaded.
    DMACHK may crash some machines - no idea why.

  3. UMBFILL.COM

    Windows 9x takes over all remaining UMBs (not mapped by UMBPCI) and uses them as normal memory. But the memory created by UMBPCI is sometimes not seen as "normal" by MS-DOS/MS Windows. It may not be cacheable and/or ISA DMA may not work.
    With the exception of the very first Intel PCI chipsets, the only "normal" UMBs UMBPCI creates, are at E000-EFFF on Intel chipsets up to the 440xX.
    To prevent Windows 9x from using this remaining critical memory in such cases, use UMBFILL to allocate ALL remaining UMBs before Windows 9x GUI loads.
    Add a UMBFILL line, AFTER ALL your devices/drivers/TSRs lines, and BEFORE the line that starts Windows in your AUTOEXEC.BAT, IF you load Windows from AUTOEXEC.BAT.

    Another way to prevent Windows 9x from taking over all remaining UMBs is to add/modify the line:

    LocalLoadHigh=0

    under your SYSTEM.INI's [386enh] section.
    Then Windows 9x occupies only a small part of the UMBs which seem to be uncritical.

    The LOADHIGH (abbreviated as LH) MS-DOS command does NOT work with UMBFILL!
    UMBFILL occupies only 800 Bytes of conventional memory.

    If someone can write a UMBFILL program that can be loaded high or that doesn't need low memory, please e-mail Uwe Sieber, to include it with future UMBPCI releases. Many thanks!


RESTRICTIONS

ISA (Industry Standard Architecture) DMA (Direct Memory Access) is critical in the created UMBs. ISA involves ANY 8-bit ISA expansion cards you might have on your computer (modem, sound card, network card etc), and the Floppy Drive Controller (FDC). A typical PC/AT IBM compatible clone has one (primary, 3.5", 1.44 MB, drive letter A, default bootable drive), or two (secondary, 5.25", 1.2 MB, drive letter B, optional) floppy drives.
Such devices MUST use the DMA controller (built into the motherboard chipset), thus relieving the CPU of time consuming routine tasks (requiring extra CPU cycles), so your processor can proceed with other operations at the same time (multitasking).

KNOWN PROBLEMS + SOLUTIONS [depending on your motherboard chipset type]:

  1. The ISA DMA function might NOT be possible in certain UMA regions, because the memory UMBPCI uses is intended as shadow RAM, NOT as normal RAM. This has nothing to do with PCI Bus Mastering.

  2. Level 2 (L2) CPU cache may be write-protected or may NOT work at all.

  3. There are reports about crashes involving CMOS/BIOS corruption on some Compaq Presarios. Maybe the reason was simply a wrong parameter, but there is no further information available.

  4. Some USB (Universal Serial Bus) keyboards use the C800-CBFF area, therefore you need to restrict UMBPCI.SYS to the CC00-EFFF region in CONFIG.SYS, when using the /I=xxxx-yyyy parameter (example):

    DEVICE=C:\UMBPCI\UMBPCI.SYS /I=CC00-EFFF

  5. The "Suspend to RAM" ACPI function may not work. It probably doesn't save the UMBs created by UMBPCI.

  6. No program that needs ISA DMA should be loaded, especially disk (floppy) cache TSRs (Terminate and Stay Resident programs) like Microsoft SMARTDRV.EXE.
    But you can use the /L parameter with SMARTDRV to force it to load partially into conventional memory, with LOADHIGH in AUTOEXEC.BAT, or INSTALLHIGH in CONFIG.SYS. The result will be a "splitted load", exactly what UMBPCI.SYS needs. In this case SMARTDRV takes 16384 Bytes of low memory:

    Smartdrv's low memory requirement can be reduced by using the /E:xxxxx and /B:xxxxx parameters. The default values are /B:16384 and /E:8192 which causes SMARTDRV to take 16384 Bytes of low memory in the example above.

    For absolute minimum memory usage but a little disk performance loss in real DOS mode, you can combine the /B and /E parameters:

    LOADHIGH=C:\WINDOWS\SMARTDRV 2048 16 /B:1024 /E:1024 /L

    This takes only 1 KB of low and about 16 KB of upper memory.

    The B(uffer) value must be a multiple of the E(lement) value.

    1024 is a bit extreme and prevents SMARTDRV from caching CD-ROMs because a sector on a CD-ROM disk has 2048 Bytes. /B:4096 and /E:4096 should be a good compromise.

    You can also disable the SMARTDRV floppy cache by adding the A- and B- parameters (depending on how many floppy drives you have), or by loading SMARTDRV into the upper memory E segment [E000-EFFF], if you have an Intel 430xX or 440xX chipset (tricky).
    Example of SMARTDRV line in AUTOEXEC.BAT:

    LOADHIGH=C:\WINDOWS\SMARTDRV.EXE 2048 16 A- B- C+ D /N

    to disable read and write caching on both floppy drives (A and B), enable read and write caching on the hard drive (C), and enable read-only caching on the CD-ROM/DVD drive (D).

    Another way to force SMARTDRV to load into the E segment (ONLY IF you have an Intel 430xX or 440xX chipset), at least at E000-E3FF, is to load MSCDEX (MicroSoft Compact Disk EXtensions) with LOADHIGH, BEFORE the SMARTDRV line in AUTOEXEC.BAT.

    NOTE: You also need to load your DOS mode cd-rom/dvd (supplied) driver in CONFIG.SYS, if you want to have your cd-rom/dvd available in native MS-DOS, AND to have it cached by SMARTDRV the same time (example):

    DEVICEHIGH=C:\CDROM\VIDE-CDD.SYS /D:MYCDROM

    In case SMARTDRV loads partially at E000 or below E000, the floppy disk becomes UNREADABLE, IF the read/write floppy cache is enabled by SMARTDRV's A+ and/or B+ switches!

    NOTE: VIDE-CDD.SYS is the "universal" CD-ROM/DVD DOS driver, free from Acer [140 KB], and works with most popular IDE/ATAPI internal cd-rom/dvd drives. More details at this page.

    Example of MSCDEX v2.25 and SMARTDRV v5.02 "combo" in AUTOEXEC.BAT, using MS Windows 9x:

    LOADHIGH=C:\WINDOWS\COMMAND\MSCDEX.EXE /D:MYCDROM /M:16
    LOADHIGH=C:\WINDOWS\SMARTDRV.EXE 2048 16 A+ B+ C+ D /N

    to force SMARTDRV to load at E000, and occupy the UMA at and above E3FF.

    Another method is to create two UMB regions, by adding this line in CONFIG.SYS:

    DEVICE=C:\UMBPCI\UMBPCI.SYS /I=C800-DFFF /I=E000-EFFF

    Then you can choose to load a program in one of the 2 created regions: #1 (C800-DFFF) or #2 (E000-EFFF), by using the /L:x parameter (example):

    LOADHIGH /L:2 C:\WINDOWS\SMARTDRV 2048 16 A+ B+ C+ D /N

    This places SMARTDRV into the second region which starts at E000.

    BTW: INSTALLHIGH doesn't support the /L:x parameter. Ask Microsoft why...

    These are the ONLY ways to make floppy cache possible, other than restricting UMBPCI's available UMA to E000-EFFF (example):

    DEVICE=C:\UMBPCI\UMBPCI.SYS /I=E000-EFFF

    which defeats the purpose of using UMBPCI.SYS for providing as much UMA as possible.

    TIP: MSCDEX provides support for accessing CD-ROM/DVD drives in native DOS mode. Run MSCDEX /? from the true MS-DOS prompt to display its command line switches.

    Observe also the different DOS (2048) and Windows (16) SMARTDRV cache sizes (in KiloBytes). You want to allocate a large SMARTDRV cache in real MS-DOS mode (but not more than 1/6 of your installed memory, especially if you only have 16 MB or less), and the smallest SMARTDRV cache size in Windows, because Windows 9x and WfWG 3.1x provide their own 32-bit protected mode virtual cache algorhythms, and do NOT need SMARTDRV to cache ANY drives.

    Observe also the /N switch, which allows the return to the DOS prompt BEFORE SMARTDRV's temporary memory cache buffer is flushed and data permanently written to disk. Use /N with CAUTION, because you may experience DATA LOSS in case of a sudden power outage!
    SMARTDRV's buffer loads into the UMA in the example above, using the MS-DOS built-in LOADHIGH command.
    But if an upper memory manager (like EMM386, QEMM, NetRoom, 386MAX etc) enables access to the UMA, SMARTDRV doesn't need LOADHIGH (or a similar 3rd party "loader"), being capable of placing itself in the upper memory if it can fit into a free contiguous UMB.

    TIPS:

  7. If loading UMBPCI from a bootable floppy disk, you should ONLY use UMA ranges that can handle ISA DMA. E.g. on newer Intel chipsets (430xX, 440xX) load it with /I=E000-EFFF.
    Do NOT load UMBPCI from boot disks on chipsets that cannot handle ISA DMA in the UMBs!


HIRAM.EXE

HIRAM.EXE v1.9 is an older freeware Upper Memory Extender for 80x86 CPUs: 286, 386 and 486, intended for users who really want to free the last byte of low memory, and it is similar to UMBPCI.SYS.
Download HIRAM.EXE [74 KB, German release, 1993].
The functions of UMBPCI are splitted here into two programs: one enables the memory and the other makes it visible to DOS. The latter is called HIRAM.EXE, and doesn't use ANY memory.
HIRAM.EXE works fine with MS-DOS 5.00 - 7.xx [MS Windows 95/98] and the memorry enabled by UMBPCI, at least on Intel 430xX (Pentium/Pentium Pro) and 440xX (Pentium II/III) chipsets.
It may also work with other chipsets (but I haven't tested it), because it is CPU/chipset independent.

To make this work, you need these CONFIG.SYS commands in this EXACT order (example):
[all lines preceeded by a semicolon (;) are comments]

; To load DOS high and to enable the Upper Memory Blocks:
DOS=HIGH,UMB
; To enable the Upper Memory Area:
DEVICE=C:\UMBPCI\UMBPCI.SYS
; To make the UMA visible to DOS through a small XMS 2.0 handler:
DEVICE=C:\UMBPCI\HIRAM.EXE
; Yes, now you can load HIMEM.SYS high:
DEVICEHIGH=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF /Q

TIP: Take a look at my "MS-DOS 7.xx MEMory Specs" page for an example using HIRAM.EXE with an Intel 440BX Pentium II/III chipset.

The trick is that HIRAM implements the function "Request XMS-UMB" without HIMEM.SYS, while UMBPCI does it in the "official" way, by extending HIMEM.SYS with this function.
When "DEVICEHIGH=C:\WINDOWS\HIMEM.SYS" comes, DOS takes all XMS UMBs from HIRAM.EXE, and HIRAM deactivates its XMS function to allow HIMEM.SYS to load.
Without "DOS=HIGH,UMB" HIMEM.SYS would stop with an error message like:

"Another XMS driver is already installed"

because HIRAM has no reason to deactivate its small XMS handler.

Therefore by using HIRAM.EXE you can save 1 KB of low memory in comparison to loading UMBPCI.SYS by itself.
Wow! ;-)


KNOWN CHIPSET PROBLEMS


USAGE GUIDELINES

If you want to use UMBPCI's /I=xxxx-yyyy parameter, make sure to check the free UMA before loading UMBPCI.SYS, by running UMBCHK (see the "NEW TOOLS" section above).

To visualize the DOS memory allocation the Microsoft MEM.EXE command is certainly not of prime quality. :( I suggest using MI.COM [9 KB, freeware, English]. MI stands probably for Memory Information.

If you use EMM386.EXE, you can "borrow" its /I=xxxx-yyyy parameter(s) for use with UMBPCI.SYS v2.24 and older ONLY (UMBPCI v3.00 and newer do NOT need the /I=xxxx-yyyy parameter), but this MUST be limited to the range C800-EFFF, which is valid for ALL UMBPCI releases.
After adding a line for UMPCI.SYS to your CONFIG.SYS, disable the EMM386.EXE line by placing REM or a semicolon (;) in front of it. Examples:

REM DEVICE=C:\DOS\EMM386.EXE I=B000-B7FF RAM D=256 AUTO

or:

; DEVICE=C:\WINDOWS\EMM386.EXE I=B000-B7FF RAM D=256 AUTO

If you don't want to use UMBPCI's /I=xxxx-yyyy parameter (needed ONLY if you want to enable EMS) you can skip to the following section: "ADDITIONAL OS COMPATIBILITY".

UMBPCI.SYS accepts and recognizes only the I=xxxx-yyyy command line switch preceeded by a forward slash (/), which MUST be used with UMBPCI v2.24 and older. UMBPCI supports multiple /I=xxxx-yyyy parameters.
UMBPCI uses ONLY contiguous 16 KB Upper Memory Blocks. You may have to increase the start address or decrease the end address to the nearest 16 KB border for UMBPCI.SYS to operate properly!

In MSD's Memory chart (displayed by pressing M at the MSD main screen), look at your upper memory range. Every caret (square) stands for 1 KB of memory, therefore each entire line stands for 16 KB. Because UMBPCI.SYS can use ONLY whole (contiguous) free 16 KB blocks, you have to look for lines that are COMPLETELY available (unused).

MSD.EXE is the MS-DOS based MicroSoft Diagnostics utility (included with MS-DOS 6.xx and Windows 3.1x/9x), that you might need one day (hope not) to see how your System, Memory, Devices, TSRs, Video, Mouse, Disks, Ports etc... are configured, and to detect eventual hardware conflicts: IRQ (Interrupt ReQuest line), BA (hex Base Address), I/O (Input/Output) Port, COMx Port etc.

Users of MS-DOS 5.00 - 6.22 can download the updated MSD.EXE v3.01 [160 KB, free].
MSD.EXE is NOT installed by Windows 95/98 Setup! Copy MSD.EXE manually from your Win9x Setup CD-ROM to a folder in your path (I recommend \WINDOWS\COMMAND), or run it directly from the CD-ROM:

MSD

at any DOS prompt.

HINT: Try first to run MSD from outside the Windows GUI, in native/true MS-DOS mode, by choosing to boot with the "Command prompt only" option from the Windows 9x Startup Menu:

to see what lies under your PC's "hood".

When deciding which lines to use with UMBPCI's /I=xxxx-yyyy parameter, take the starting upper memory address from the left side of the lowest line and the end address from the right side of the highest line, as shown on your MSD free upper memory screen.

Your Windows 9x (typically installed in C:\WINDOWS) CONFIG.SYS file should look something like this, assuming the entire UMB area is contiguous and free:

DOS=HIGH,UMB
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF /Q
DEVICE=C:\UMBPCI\UMBPCI.SYS /I=C800-EFFF
DEVICEHIGH=...
INSTALLHIGH=...
SET=...
etc...

You MUST place HIMEM.SYS in CONFIG.SYS (using the DEVICE command), because UMBPCI.SYS is an extension to HIMEM.SYS. Windows 9x loads HIMEM.SYS automatically, but later in the sequence. Therefore HIMEM.SYS MUST be loaded BEFORE the UMBPCI.SYS line!

EMM386.EXE is no longer needed, unless you need Expanded Memory (EMS) for running DOS applications/games.
If you DO need EMS, you MUST reserve 64 KB of contiguous upper memory for the EMS Page Frame, and place the EMM386.EXE DEVICE line AFTER UMBPCI.SYS in your CONFIG.SYS.
Also, you MUST exclude the contiguous Upper Memory Region (UMR) used by EMM386.EXE's Page Frame from UMBPCI's /I=xxxx-yyyy range. This 64 KB area is located by default between addresses C800-D7FF. EMM386.EXE tries to place its Page Frame in this region upon loading. You can also force EMM386.EXE to "fit" its Page Frame into the C800-D7FF region by adding the Mx switch on the EMM386.EXE line (M3 in this case), ONLY IF this area is NOT used by ROM/BIOS. Example of such CONFIG.SYS lines, combining UMBPCI.SYS and EMM386.EXE to provide EMS, and to load ALL devices/TSRs "high" the same time:

DOS=HIGH,UMB
DEVICE=C:\WINDOWS\HIMEM.SYS /TESTMEM:OFF /Q
DEVICE=C:\UMBPCI\UMBPCI.SYS /I=D800-EFFF
DEVICE=C:\WINDOWS\EMM386.EXE X=D800-EFFF X=B800-C7FF I=C800-D7FF I=B000-B7FF RAM M3 D=256 AUTO
DEVICEHIGH=...
INSTALLHIGH=...
SET=...
etc...

IMPORTANT: To become familiar with HIMEM.SYS and EMM386.EXE command line parameters:

TIP: Read also the HIMEM.SYS and EMM386.EXE related topics in MEMORY.TXT, REGIONS.TXT, EMM386.TXT and SECRETS.TXT, all part of my ©Tricks + Secrets files.

Alternatively you can load EMM386.EXE without a Page Frame by adding the "FRAME=NONE" parameter to your EMM386.EXE CONFIG.SYS line, while still providing EMS. Example:

DEVICE=C:\WINDOWS\EMM386.EXE FRAME=NONE X=D800-EFFF X=B800-C7FF I=C800-D7FF I=B000-B7FF RAM D=256 AUTO

But BEWARE of program errors, because older EMS DOS programs were not designed to work properly WITHOUT a Page Frame.

Another method is to reserve the 64 KB Page Frame area and let Windows 9x GUI provide EMS in its DOS boxes/sessions. This SYSTEM.INI [386enh] section line:

[386enh]
EMMPageFrame=C800

does the trick, provided that the 64 KB upper memory region at C800-D7FF is CONTIGUOUS and FREE (unused) when Windows 9x starts, and that EMM386.EXE does NOT load from CONFIG.SYS.
Note that EMM386.EXE settings in CONFIG.SYS take precedence over the SYSTEM.INI lines. If EMM386.EXE is set to provide expanded memory (EMS), with the "RAM" or "HIGHSCAN" switch in CONFIG.SYS, the SYSTEM.INI line above has NO effect.
Use this workaround ONLY IF you have ANY DOS based programs/games that need EMS to run in a DOS box/session.

Alternatively you can disable the Windows 9x search for free (unused) RAM in the UMA, by adding/changing this line under the [386enh] section of your SYSTEM.INI, to avoid incompatibilities with DOS mode drivers/TSRs or/and 3rd party upper/extended/expanded memory managers loaded from your startup files (CONFIG.SYS and AUTOEXEC.BAT):

[386enh]
EMMExclude=A000-FFFF

TIP: For more SYSTEM.INI settings, dedicated to fine tune your Windows machine for optimal performance, read the "SYSTEM.INI TWEAKS" topic, also in MYTIPS95.TXT and MYTIPS31.TXT, both part of my ©Tricks + Secrets files.


ADDITIONAL OS COMPATIBILITY

Begining with v3.00 UMBPCI is compatible with DR-DOS, Novell DOS and Caldera Open DOS.
When UMBPCI doesn't find an XMS driver (i.e. HIMEM.SYS), it only enables (maps) the upper memory and ends. HIDOS.SYS can then create UMBs from this memory.


FAST VIDEO!

UMBPCI.SYS is the IDEAL Memory Manager for using FastVid to maximize your PCI/AGP Video performance, ONLY on Pentium Pro, Pentium II, III, Celeron and Xeon class CPUs!

FastVid v1.10 PCI/AGP Video accelerator [128 KB] is a FREEware DOS tool.
More details at Eric's FastVid page @ Fast Graphics.
FastVid enables the Write Posting (WP), Banked VGA Write Combining (BVGAWC) and Linear Frame Buffer Write Combining (LFBWC) modes in the BIOS for your PCI/AGP video card, in MS-DOS 5.00 - 6.22 and MS Windows 9x/3.1x. Doesn't use ANY memory.

Run FastVid for the first time without ANY parameters, from the native/true/real MS-DOS mode. It will configure itself for your primary PCI/AGP video controller. All you have to do is answer Yes (type Y) or No (type N) to FASTVID's step-by-step questions. After that, just add the suggested FASTVID line to your AUTOEXEC.BAT file and reboot.
These are my FastVid v1.10 AUTOEXEC.BAT command lines (examples), using these 2D+3D video controllers:

IMPORTANT:

Take a look at my Pentium III 700 MHz [overclocked @ 784 MHz] system benchmarks using FastVid + UMBPCI.SYS.

CAUTION: FastVid is NOT compatible with Microsoft EMM386.EXE or ANY other 3rd party upper/expanded/extended memory managers: Quarterdeck QEMM386.SYS, Helix NetRoom RM386.EXE, Caldera DR-DOS EMM386.EXE, Qualitas 386MAX.SYS etc. Therefore you MUST use HIMEM.SYS by itself in your CONFIG.SYS [without upper memory support :(], or BETTER, install UMBPCI.SYS, to provide access to the Upper Memory Area (UMA) and load ALL your devices/drivers/TSRs "high"!

For complete details read the documentation provided with FastVid and the related info @ Eric's FastVid page.

TIP: To learn how to properly manage, optimize and MAXimize your DOS memory resources (conventional, upper, extended and expanded), read MEMORY.TXT, REGIONS.TXT and EMM386.TXT, all part of my ©Tricks + Secrets files.