---------------------- MS-DOS v6.22 Help: EMM386.EXE -----------------------
<Notes> <Examples>                                                   <Index>
----------------------------------------------------------------------------
 
                                 EMM386.EXE
 
Provides access to the upper memory area and uses extended memory to
simulate expanded memory. This device driver must be loaded by a <DEVICE>
command in your CONFIG.SYS file and can be used only on computers with an
80386 or higher processor.
 
EMM386 uses extended memory to simulate expanded memory for programs that
can use expanded memory. EMM386 also makes it possible to load programs and
device drivers into upper memory blocks (UMBs).
 
Syntax
 
    DEVICE=[drive:][path]EMM386.EXE [ON|OFF|AUTO] [memory] [MIN=size]
    [W=ON|W=OFF] [Mx|FRAME=address|/Pmmmm] [Pn=address] [X=mmmm-nnnn]
    [I=mmmm-nnnn] [B=address] [L=minXMS] [A=altregs] [H=handles] [D=nnn]
    [RAM=mmmm-nnnn] [NOEMS] [NOVCPI] [HIGHSCAN] [VERBOSE] [WIN=mmmm-nnnn]
    [NOHI] [ROM=mmmm-nnnn] [NOMOVEXBDA] [ALTBOOT]
 
Parameters
 
[drive:][path]
    Specifies the location of the EMM386.EXE file.
 
[ON|OFF|AUTO]
    Activates the EMM386 device driver (if set to ON), or suspends the
    EMM386 device driver (if set to OFF), or places the EMM386 device driver
    in auto mode (if set to AUTO). Auto mode enables expanded-memory support
    and upper memory block support only when a program calls for it. The
    default value is ON. Use the EMM386 command to change this value after
    EMM386 has started.
 
memory
    Specifies the maximum amount of extended memory (in kilobytes) that you
    want EMM386 to provide as expanded/Virtual Control Program Interface
    (EMS/VCPI) memory. This amount is in addition to the memory used for
    UMBs and EMM386 itself. Values for memory are in the range 64 through
    the lesser of either 32768 or the amount of extended memory available
    when EMM386 is loaded. The default value is the amount of free extended
    memory. If you specify the NOEMS switch, the default value is 0. EMM386
    rounds the value down to the nearest multiple of 16.
 
Switches
 
MIN=size
    Specifies the minimum amount of EMS/VCPI memory (in kilobytes) that
    EMM386 will provide, if that amount of memory is available. EMM386
    reserves this amount of extended memory for use as EMS/VCPI memory when
    EMM386 is loaded by the DEVICE=EMM386.EXE command in your CONFIG.SYS
    file. EMM386 may be able to provide additional EMS/VCPI memory (up to
    the amount specified by the MEMORY parameter) if sufficient XMS memory
    is available when a program requests EMS/VCPI memory. Values are in the
    range 0 through the value specified by the MEMORY parameter. The default
    value is 256. If you specify the NOEMS switch, the default value is 0.
    If the value of MIN is greater than the value of MEMORY, EMM386 uses the
    value specified by MIN.
 
W=ON|W=OFF
    Enables or disables support for the Weitek coprocessor. The default
    setting is W=OFF.
 
Mx
    Specifies the address of the page frame. Valid values for x are in the
    range 1 through 14. 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
 
    Values in the range 10 through 14 should be used only on computers that
    have 512K of memory.
 
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. 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. 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. Valid values for n are in the range 0 through 255. Valid values
    for address are in the ranges 8000h through 9C00h and C000h through
    EC00h, in increments of 400h. 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 Mx switch, the FRAME switch, or the /Pmmmm switch, you cannot
    specify the addresses for pages 0 through 3 for the /Pmmmm switch.
 
X=mmmm-nnnn
    Prevents EMM386 from using a particular range of segment addresses for
    an EMS page or for UMBs. Valid values for mmmm and nnnn are in the range
    A000h through FFFFh and are rounded down to the nearest 4-kilobyte
    boundary. The X switch takes precedence over the I switch if the two
    ranges overlap.
 
I=mmmm-nnnn
    Specifies a range of segment addresses to be used (included) for an EMS
    page or for UMBs. Valid values for mmmm and nnnn are in the range A000h
    through FFFFh and are rounded down to the nearest 4-kilobyte boundary.
    The X switch takes precedence over the I switch if the two ranges
    overlap.
 
B=address
    Specifies the lowest segment address available for EMS "banking"
    (swapping of 16-kilobyte pages). Valid values are in the range 1000h
    through 4000h. The default value is 4000h.
 
l=minXMS
    Ensures that the specified amount (in kilobytes) of extended memory will
    still be available after EMM386 is loaded. The default value is 0.
 
A=altregs
    Specifies how many fast alternate register sets (used for multitasking)
    you want to allocate to EMM386. Valid values are in the range 0 through
    254. The default value is 7. Every alternate register set adds about 200
    bytes to the size in memory of EMM386.
 
H=handles
    Specifies how many handles EMM386 can use. 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. Valid values for nnn are in the range 16 through 256. The
    default value is 32.
 
RAM=mmmm-nnnn
    Specifies a range of segment addresses to be used for UMBs and also
    enables EMS support. If you do not specify a range, EMM386 uses all
    available adapter space to create UMBs and a page frame for EMS.
 
NOEMS
    Provides access to the upper memory area but prevents access to expanded
    memory.
 
NOVCPI
    Disables support for VCPI applications. This switch must be used with
    the NOEMS switch. If you specify the NOVCPI switch without specifying
    the NOEMS switch, EMM386 does not disable VCPI support. If you specify
    both switches, EMM386 disregards the MEMORY parameter and the MIN
    switch. Disabling support for VCPI applications reduces the amount of
    extended memory allocated.
 
HIGHSCAN
    Specifies that EMM386 use an additional check to determine the
    availablity 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.
 
VERBOSE
    Directs EMM386 to display status and error messages while loading. By
    default, EMM386 displays messages only if it encounters an error
    condition. You can abbreviate VERBOSE as V. (To display status messages
    without adding the VERBOSE switch, press and hold the ALT key while
    EMM386 starts and loads.)
 
WIN=mmmm-nnnn
    Reserves a specified range of segment addresses for Windows instead of
    for EMM386. Valid values for mmmm and nnnn are in the range A000h
    through FFFFh and are rounded down to the nearest 4-kilobyte boundary.
    The X switch takes precedence over the WIN switch if the two ranges
    overlap. The WIN switch takes precedence over the RAM, ROM, and I
    switches if their ranges overlap.
 
[NOHI]
    Prevents EMM386 from loading into the upper memory area. Normally, a
    portion of EMM386 is loaded into upper memory. Specifying this switch
    decreases available conventional memory and increases the upper memory
    area available for UMBs.
 
[ROM=mmmm-nnnn]
    Specifies a range of segment addresses that EMM386 uses for shadow
    RAM--random-access memory used for read-only memory (ROM). Valid values
    for mmmm and nnnn are in the range A000h through FFFFh and are rounded
    down to the nearest 4-kilobyte boundary. Specifying this switch may
    speed up your system if it does not already have shadow RAM.
 
[NOMOVEXBDA]
    Prevents EMM386 from moving the extended BIOS data from conventional
    memory to upper memory.
 
[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.
 
                                      ***

<Syntax> <Examples>
----------------------------------------------------------------------------
 
                             EMM386.EXE--Notes
 
Sharing XMS and EMS memory
 
EMM386 provides EMS/VCPI memory for programs that require it by converting
XMS memory to EMS/VCPI memory. When it is loaded, EMM386 reserves the amount
of memory specified by the MIN switch for use as EMS/VCPI memory (the
default value is 256K). Once this amount of XMS memory is reserved, it is
always available as EMS/VCPI memory and no longer available as XMS memory.
EMM386 may be able to convert additional amounts of XMS memory to EMS/VCPI
memory, up to the amount specified by the MEMORY parameter. EMM386 returns
the additional amount back to XMS memory when it is no longer needed as
EMS/VCPI memory.
 
If you specify MIN=0, EMM386 does not reserve any XMS memory for use as
EMS/VCPI memory. Instead, it converts XMS memory to EMS/VCPI memory only
when a program requests it. This frees XMS memory when EMS/VCPI memory is
not needed. However, EMM386 will not be able to supply the requested amount
of EMS/VCPI memory if programs have allocated all the XMS memory at the time
of the request.
 
Must install HIMEM.SYS before EMM386.EXE
 
You must include a DEVICE command for the HIMEM.SYS device driver in your
CONFIG.SYS file before the DEVICE command for EMM386.EXE.
 
Using EMM386 memory switches
 
Unless you want to use EMM386 to provide access to the upper memory area,
you need not specify memory switches on the DEVICE command line. EMM386
usually runs properly with the default values. In some cases, however, you
might want to control how EMM386 uses memory. For example, you can control
where EMM386 puts the EMS page frame or which segments it uses for EMS
pages. You can use as many of these memory switches as you want, in any
order you want.
 
CAUTION:  Use EMM386.EXE parameters carefully. You can make your computer
          inoperable if you use them incorrectly.
 
Using EMM386 to provide access to the upper memory area
 
In addition to providing access to expanded memory, EMM386 provides access
to the upper memory area, which you can use to load certain programs and
device drivers. You must use either the RAM or NOEMS switch to provide
access to the upper memory area.
 
To give MS-DOS access to the upper memory area but not to expanded memory,
use the NOEMS switch. To give MS-DOS access to both the upper memory area
and expanded memory, use the RAM switch. The RAM switch provides access to
less of the upper memory area for running device drivers and programs than
does the NOEMS switch. In either case, you must include the DOS=UMB command
in your CONFIG.SYS file. The device command for EMM386.EXE must precede any
DEVICEHIGH commands.
 
Using EMM386 with Windows 3.1
 
When EMM386 is used with Windows 3.1, the I, X, NOEMS, Mx, Pnnnn, and FRAME
switches have precedence over the EMMINCLUDE, EMMEXCLUDE, and EMMPAGEFRAME
settings in the Windows SYSTEM.INI file. Changes to these settings in the
SYSTEM.INI file have no effect when EMM386 is loaded.
 
SMARTDRV double buffering may be required to use EMM386
 
If you have a small computer system interface (SCSI) or enhanced system
device interface (ESDI) hard disk or other device, you may have to add the
following line to your CONFIG.SYS file:
 
    device=smartdrv.exe /double_buffer
 
Add the line before any DEVICEHIGH statements and before any statements that
load installable device drivers that use expanded memory. The statement
enables an SCSI or EDSI controller to transfer information to programs that
use the upper memory area or expanded memory.
 
                                      ***

<Syntax> <Notes>
----------------------------------------------------------------------------
 
                            EMM386.EXE--Examples
 
To start EMM386 as an expanded-memory emulator, using the default values,
add the following lines to your CONFIG.SYS file:
 
    device=himem.sys
    device=emm386.exe
 
Since no location is specified, MS-DOS searches for the EMM386.EXE file in
the root directory of your startup drive.
 
To specify that EMM386 allocate a maximum of 4096K of memory and a
guaranteed 256K of memory (the default value), and to specify that the
EMM386.EXE file is located in the DOS directory on drive C, add the
following line to your CONFIG.SYS file:
 
    device=c:\dos\emm386.exe 4096
 
To emulate expanded memory, specify the segment-base address D000h for the
EMS page frame, and allocate 512K of memory to EMM386, use one of the
following commands:
 
    device=emm386.exe 512 frame=d000
 
    device=emm386.exe 512 p0=d000 p1=d400 p2=d800 p3=dc00
 
Suppose that, in addition to specifying the conditions set in the preceding
commands, you want to prevent EMM386 from using the segment addresses E000h
through EC00h. To do this and to specify that EMM386 can use 127 handles,
add the following line to your CONFIG.SYS file:
 
    device=emm386.exe 512 frame=d000 x=e000-ec00 h=127
 
To provide access to the upper memory area but not provide EMS/VCPI memory,
add the following line to your CONFIG.SYS file:
 
    device=emm386.exe noems novcpi
 
To provide access to the upper memory area and provide EMS/VCPI memory, add
the following line to your CONFIG.SYS file:
 
    device=emm386.exe ram
 
                                      ***

----------------------------------------------------------------------------
<Top of page>
Last update: June 14, 2000 06:20 EST by -vjf-
Content © 1997 Microsoft Corporation
All else © 2000 Vernon J Frazee
Counter