Starting with version 4.45, EMM386.EXE can wait until an application
requests expanded memory before allocating extended memory and converting
it to expanded memory. When the application frees the expanded memory it
was using, EMM386.EXE returns it to the XMS memory pool.
Two EMM386.EXE parameters control XMS/EMS pool sharing. The [MEMORY]
parameter specifies the maximum amount of expanded memory that EMM386.EXE
can emulate. The MIN= parameter specifies the minimum amount of expanded
memory that EMM386.EXE can provide.
There is a one-to-one ratio between expanded and extended memory usage: it
requires 1 megabyte (MB) of extended memory to emulate 1 MB of expanded
Guaranteeing You Reserve Enough Expanded Memory
Unless you use the MIN= parameter, there is no guarantee that there
will be enough memory for your application.
For example, if you have the following EMM386.EXE configuration,
EMM386.EXE is configured to emulate up to 1 MB of expanded memory.
device=c:\dos\emm386.exe 1024 ([memory] = 1024)
EMM386.EXE allocate 1 MB of extended memory as expanded memory when
expanded memory is requested. It may be unable to actually provide a
full megabyte of expanded memory if other applications or device
drivers have reduced the amount of free extended memory below 1 MB.
To preallocate extended memory as expanded memory and thereby ensure
your application has the expanded memory it requires, use the MIN=
parameter. For example, to configure EMM386.EXE to emulate up to 1 MB
of expanded memory and a minimum of 512 kilobytes (K) of expanded
memory, use the following command in your CONFIG.SYS file:
device=c:\msdos\emm386.exe 1024 min=512
The MIN= parameter ensures that EMM386.EXE is able to provide a
certain amount of expanded memory by preallocating extended memory as
expanded memory. MIN= defaults to 256K (or zero if the NOEMS switch is
used). You can also specify MIN=0 to ensure EMM386.EXE does not
preallocate any extended memory.