Home
> Commands A-M
> Configuration E
EMM386.EXE
Description
| Syntax
| Parameters
| Switches
| Related
| Notes
| Examples
| Errorlevels
| Availability
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]
[Mx
| FRAME=address
| /Pmmmm]
[A=altregs]
[ALTBOOT]
[B=address]
[D=nnn]
[H=handles]
[HIGHSCAN]
[I=mmmm-nnnn]
[L=minXMS]
[MIN=size]
[[NOEMS]
[NOVCPI]]
[NOHI]
[NOMOVEXBDA]
[NOTR]
[Pn=address]
[RAM=mmmm-nnnn]
[ROM=mmmm-nnnn]
[V[ERBOSE]]
[W=ON
| OFF]
[WIN=mmmm-nnnn]
[X=mmmm-nnnn]
Parameters
- A=altregs
(v5.0
Win95)
- 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.
- ALTBOOT
(v5.0
Win95)
- Specifies that EMM386 use an alternate handler to
restart your computer when you press CTRL+ALT+DEL. Use
this only if your computer stops responding or
exhibits other unusual behavior when EMM386 is loaded
and you press CTRL+ALT+DEL.
- B=mmmm-nnnn
(v5.0
Win95)
- 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.
- D=nnn
(v5.0
Win95)
- 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.
- [drive:][\path\]
(v5.0
Win95)
- Specifies the location of the EMM386.EXE file.
- FRAME=address
(v5.0
Win95)
- 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.
- H=handles
(v5.0
Win95)
- Specifies how many handles EMM386 can use. Valid
values are in the range 2 through 255.
The default value is 64.
- HIGHSCAN
(v5.0
Win95)
- 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.
- I=mmmm-nnnn
(v5.0
Win95)
- 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. X takes precedence
over the I switch if the two ranges overlap.
- L=minXMS
(v5.0
Win95)
- Ensures that the specified amount (in kilobytes)
of extended memory will still be available after
EMM386 is loaded. The default value is 0.
- memory
(v5.0
Win95)
- 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
NOEMS, the default value
is 0. EMM386 rounds the value down to the nearest
multiple of 16.
- MIN=size
(v5.0
Win95)
- 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
NOEMS NOEMS, the default
value is 0. If the value of MIN is greater than the
value of memory,
EMM386 uses the value specified by MIN.
- Mx
(v5.0
Win95)
- Specifies the address of the page frame. Valid
values for x are in the range 1 through 14. The list
shows each value and its associated base address in
hexadecimal format:
- 1 => C000h
- 2 => C400h
- 3 => C800h
- 4 => CC00h
- 5 => D000h
- 6 => D400h
- 7 => D800h
- 8 => DC00h
- 9 => E000h
- 10 => 8000h
- 11 => 8400h
- 12 => 8800h
- 13 => 8C00h
- 14 => 9000h
Values in the range 10 through 14 should be used
only on computers that have 512K of memory.
- NOEMS
(v5.0
Win95)
- Provides access to the upper memory area but
prevents access to expanded memory.
- NOHI
(v5.0
Win95)
- Prevents EMM386 from loading into the upper memory
area. Normally, a portion of EMM386 is loaded into
upper memory. Specifying this decreases available
conventional memory and increases the upper memory
area available for UMBs.
- NOMOVEXBDA
(v5.0
Win95)
- Prevents EMM386 from moving the extended BIOS data
from conventional memory to upper memory.
- NOTR
(v6.0
Win95)
- UNDOCUMENTED Prevents EMM386 from detecting
the presence of a Token Ring Network adapter.
- NOVCPI
(v5.0
Win95)
- Disables support for VCPI applications. This must
be used with NOEMS. If
you specify NOVCPI without specifying
NOEMS, EMM386 does not
disable VCPI support. If you specify both, EMM386
disregards MEMORY and
the MIN. Disabling support
for VCPI applications reduces the amount of extended
memory allocated.
- ON
( | OFF
| AUTO
v5.0
Win95)
- 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 only when a program calls for it. The default
value is ON. Use the EMM386
command to change this value after EMM386 has started.
- Pn=address
(v5.0
Win95)
- 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
Mx,
FRAME=address,
or /Pmmmm, you cannot specify
the addresses for pages 0 through 3 for
/Pmmmm.
- RAM=mmmm-nnnn
(v5.0
Win95)
- 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.
- ROM=mmmm-nnnn
(v5.0
Win95)
- 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.
- V[ERBOSE]
(v5.0
Win95)
- Directs EMM386 to display status and error
messages while loading. By default, EMM386 displays
messages only if it encounters an error condition.
(To display status messages without adding VERBOSE,
press and hold the ALT key while EMM386 starts and
loads.)
- W=ON
( | OFF
v5.0
Win95)
- Enables (if set to W=ON) or disables (if set to W=OFF) Weitek
coprocessor support. The default value is W=OFF.
- WIN=mmmm-nnnn
(v5.0
Win95)
- 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.
X takes precedence over WIN
if the two ranges overlap. WIN takes precedence over
the RAM,
ROM, and
I if their ranges overlap.
- X=mmmm-nnnn
(v5.0
Win95)
- 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. X takes precedence over
I if the two ranges overlap.
Switches
- /Pmmmm
(v5.0
Win95)
- 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.
Related
EMM386.
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 MIN 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
memory. 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 RAM
or NOEMS to provide access
to the upper memory area.
To give the operating system access to the upper
memory area but not to expanded memory, use
NOEMS. To give the
operating system access to both the upper memory area
and expanded memory, use the RAM
switch. RAM provides access
to less of the upper memory area for running device
drivers and programs than does
NOEMS. 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,
FRAME, and /Pmmmm
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.
Examples
To start EMM386 as an expanded-memory emulator, using
the default values, add to your CONFIG.SYS file:
DEVICE=himem.sys
DEVICE=EMM386.EXE
Since no location is specified, the operating system
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 line
to your CONFIG.SYS file:
DEVICE=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 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 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 to your CONFIG.SYS file:
DEVICE=EMM386.EXE NOEMS NOVCPI
To provide access to the upper memory area and
provide EMS/VCPI memory, add to your CONFIG.SYS file:
DEVICE=EMM386.EXE RAM
Errorlevels
none.
Availability
- External
-
- DOS
-
v5.0
v5.0A
v5.00.02
v5.001A
v5.01
v5.02
v6.0
v6.10
v6.2
v6.21
v6.22
v6.23
v7.00
v7.0R1
v7.10
v8.00
- Windows
-
Win95
Win98
WinME
- Windows NT
-
none
Last Updated: 2004/03/01
Direct corrections or suggestions to:
Rick Lively