EMM386.exe

Index

Provides access to the upper memory area and uses extended memory to simulate expanded memory.

Syntax

The Emm386.exe device driver must be loaded in Config.sys using a Device statement.

Device=[Path] Emm386 [Switches] [Parameters]

Path The full path. Default is the root directory of the start-up drive (usually C:/)

Although the EMM386 device driver must be loaded in Config.sys, it need not be activated unless required. Once loaded, the activation status can be modified with the EMM386 command at any time.
ON EMM386 is activated at startup (Default).
OFF EMM386 is not activated at startup.
AUTO EMM386 is not activated at startup but is automatically activated if any program calls for it.

Although few programs these days use expanded memory, EMM386 is still needed to allow access to the upper memory area. If no expanded memory is required, that part of EMM386's job can be disabled.
NOEMS Provides access to the upper memory area but does not provide any expanded memory.
NOVCPI Disables support for VCPI programs. This switch must be used with the NOEMS switch otherwise VCPI support is not disabled. If both switches are set, EMM386 disregards the memory parameter and the MIN switch. Disabling support for VCPI programs reduces the amount of extended memory required by EMM386.

Left to itself, EMM386 will allow all extended memory up to 32 Mb to be used as expanded memory if programs require it. Any memory not required is still available as extended memory for other programs. A number of switches allow more precise control over exactly how much of each type of memory is allocated/kept free.
memory Specifies the maximum amount of extended memory (in Kb) to be provided as expanded/Virtual Control Program Interface (EMS/VCPI) memory. This amount is in addition to the memory used for Upper Memory Blocks (UMBs) and EMM386 itself. Values for memory can be in the range 64 to the lesser of the amount of extended memory available or 32768 (32 Mb) with the value being rounded down to the nearest multiple of 16. (Default: maximum possible).
MIN=size Specifies a minimum amount of EMS/VCPI memory (in Kb) to be provided by EMM386. Additional expanded memory may be allocated if required (and if available) but the minimum is guaranteed.
size size must be in the range of 0 to the maximum available. (Default: 256). If size is greater than a value set as memory, EMM386 uses the value specified by size
L=minXMS Specifies a minimum amount of extended memory (in Kb) that is not to be made available as expanded memory. (Default=0)

By default, once Emm386.exe is installed, it moves part of itself along with the extended BIOS data from conventional memory to upper memory. Should these actions not be desired for any reason, they can be prevented:
NoHi Emm386.exe remains entirely in conventional memory.
NoMoveXBDA The extended BIOS data remains in conventional memory.

When EMM386 is configured to provide upper memory blocks (by using the NOEMS or RAM switches), EMM386 will also automatically backfill conventional memory if there is less than 640k, in order to bring total conventional memory up to 640k.
NoBackfill Because Windows does not support backfilled conventional memory, use the NoBackfill switch if your computer has less than 640K of conventional memory.

Under some circumstances EMM386 will interfere with the function of Ctrl+Alt+Del when used to restart the computer.
AltBoot Specifies that EMM386 use an alternate handler to restart your computer when you press Ctrl+Alt+Del. Use this switch only if your computer stops responding or exhibits other unusual behavior when EMM386 is loaded and you press Ctrl+Alt+Del.

/V
or
/Verbose

Directs EMM386 to display status and error messages while loading. By default, EMM386 does not display any messages unless it encounters an error. As an alternative to using the switch, status messages can be displayed by holding down the Alt key while EMM386 is loading.

A number of switches allow control over exactly where UMBs and expanded memory page frames are to be located.
RAM=range Specifies a range of segment addresses to be used for UMBs and also enables EMS support. If =range is omitted, EMM386 uses all available adapter space to create UMBs along with a page frame for EMS.
ROM=range Specifies a range of segment addresses that EMM386 uses for shadow RAM. Specifying this switch may speed up your system if it does not already have shadow RAM.
X=range Prevents EMM386 from using a particular range of segment addresses for an EMS page or for UMBs. The X switch takes precedence over the WIN and I switches if the ranges overlap.
I=range Specifies a range of segment addresses to be used (included) for an EMS page or for UMBs.

WIN=range Reserves a specified range of segment addresses for Windows instead of for EMM386. The WIN switch takes precedence over the RAM, ROM, and I switches if their ranges overlap.
range range is specified in the form: mmmm-nnnn where mmmm and nnnn can be from A000h through FFFFh and are rounded down to the nearest 4-kilobyte boundary.
Mx Specifies the address of the page frame.
x Valid values are in the range 1 through 14. Values in the range 10 through 14 should be used only on computers that have 512K of memory. The following list shows each value and its associated base address in hexadecimal format:
            1 => C000h     8 => DC00h
        2 => C400h     9 => E000h
        3 => C800h    10 => 8000h
        4 => CC00h    11 => 8400h
        5 => D000h    12 => 8800h
        6 => D400h    13 => 8C00h
        7 => D800h    14 => 9000h

FRAME=address Specifies the page-frame segment base directly. To specify a specific segment-base address for the page frame, use the FRAME switch, and specify the address you want.
address Valid values for address are in the ranges 8000h through 9000h and C000h through E000h, in increments of 400h. To provide expanded memory and disable the page frame, you can specify FRAME=NONE; however, this may cause some programs that require expanded memory to work improperly.
/Pmmmm Specifies the address of the page frame.
mmmm Valid values for mmmm are in the ranges 8000h through 9000h and C000h through E000h, in increments of 400h.
Pn=address Specifies the segment address of a specific page, where n is the number of the page you are specifying and address is the segment address you want. The addresses for pages 0 through 3 must be contiguous in order to maintain compatibility with version 3.2 of the Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS). If you use the M switch, the FRAME switch, or the /P switch, you cannot specify the addresses for pages 0 through 3 for the /P switch.
n Valid values are in the range 0 through 255.
address Valid values are in the ranges 8000h through 9C00h and C000h through EC00h, in increments of 400h.
B=address Specifies the lowest segment address available for EMS "banking" (swapping of 16KB pages).
address Valid values are in the range 1000h through 4000h. The default value is 4000h.

A=altregs Specifies how many fast alternate register sets (used for multitasking) you want to allocate to EMM386. Every alternate register set adds about 200 bytes to the size in memory of EMM386.
altregs Valid values are in the range 0 through 254. The default value is 7.

H=handles Specifies how many handles EMM386 can use.
handles Valid values are in the range 2 through 255. The default value is 64.

D=nnn Specifies how many kilobytes of memory should be reserved for buffered direct memory access (DMA). Discounting floppy disk DMA, this value should reflect the largest DMA transfer that will occur while EMM386 is active.
nnn Valid values are in the range 16 through 256. The default value is 32.

The Weitek co-processor apparently requires special provisions with EMM386
W=ON Enables support for the Weitek co-processor.
W=OFF Does not provide support for the Weitek co-processor (Default).

HIGHSCAN Specifies that EMM386 use an additional check to determine the availability of upper memory for use as UMBs or EMS windows. On some computers, specifying this switch may have no effect or cause EMM386 to identify upper memory areas as available when they are not. As a result, your computer might stop responding.

Notes

The significance of a number of the above switches is, I regret, beyond my comprehension. I have included them here for completeness. However, not only have I not tested them, but have no idea on how to go about trying.

File Details

File NameDefault LocationDos Ver.Win Ver.SizeDateSource
Emm386.exec:\windows 7.0Win95 125 495111/07/95win95_08.cab
7.1Win95 (OSR2.x) 125 495224/08/96win95_14.cab
Win98 125 49506/09/98win98_41.cab
Win98 SE 125 495323/04/99win98_45.cab

Superscripts denote which same size files, if any, are identical (using FC).


Thanks to L.H. Loo for details on the Win98 version.
This page last revised:
September 1, 2001.