help.hlp (Table of Contents; Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software, purely for historical purposes. If you're looking for up-to-date documentation, particularly for programming, you should not rely on the information found here, as it will be woefully out of date.
EMM386.EXE--Notes
Examples  Syntax
────────────────────────────────────────────────────────────────────────────
 
                             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.
 
                                      ♦