EMM386 Command-Line Switches

This section provides correct syntax and other details for using EMM386 command-line switches.

EMM386

Enables or disables EMM386 expanded-memory support.

The EMM386 device driver, EMM386.EXE, provides expanded-memory support and also provides access to the upper memory area. For information about EMM386.EXE, see its entry later in this appendix.

Syntax

emm386 [on|off|auto] [w=on|w=off]

To display the current status of EMM386 expanded-memory support, type emm386 at the command prompt:

Parameters

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 only when a program calls for it. The default value is on.

w=on|w=off

Enables (if set to w=on) or disables (if set to w=off) Weitek coprocessor support. The default value is w=off.

Notes on EMM386

Installing the EMM386.EXE device driver.

To use the emm386 command, you must also install the EMM386.EXE device driver by using the device command in CONFIG.SYS.

Reactivating EMM386 expanded-memory support.

If EMM386 was loaded when the VM was started but is not currently in use, the on parameter reactivates expanded-memory support.

Suspending EMM386 expanded-memory support.

If EMM386 expanded-memory support is currently active, handle 0 is the only handle allocated, and EMM386 is not providing access to the upper memory area. The off parameter suspends EMM386 expanded-memory support. When EMM386 expanded-memory support is off, the EMM386.EXE device-driver header is changed so that programs cannot use expanded memory. This enables you to run programs that do not comply with the Virtual Control Program Interface (VCPI).

EMM386.EXE

Caution Use EMM386.EXE parameters carefully. You can make the computer inoperable if you use them incorrectly.

Provides access to the upper memory area and uses extended memory to simulate expanded memory. This is for MS-DOS – based applications that need expanded memory. The EMM386.EXE device driver must be loaded by a device command in CONFIG.SYS. 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).

Note

The EMM386.EXE device driver is different from the EMM386 command used to enable expanded-memory support.

Syntax

device=[drive:][path]emm386.exe [on|off|auto] [memory] [min=size]
[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 device=emm386.exe in CONFIG.SYS. 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.

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

5 => D000h

9 => E000h

12 => 8800h

2 => C400h

6 => D400h

10 => 8000h

13 => 8C00h

3 => C800h

7 => D800h

11 => 8400h

14 => 9000h

4 => CC00h

8 => DC00h


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 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 16.

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 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, the 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 ALT 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 the 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 the computer when you press CTRL+ALT+DEL. Use this switch only if the computer stops responding or exhibits other unusual behavior when EMM386 is loaded and you press CTRL+ALT+DEL.

Notes on EMM386.EXE

Must install HIMEM.SYS before EMM386.EXE.

You must include a device command for the HIMEM.SYS device driver in CONFIG.SYS 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.

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 the operating system access to the upper memory area but not to expanded memory, use the noems switch. To give the operating system 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 CONFIG.SYS. The device command for EMM386.EXE must precede any devicehigh commands.

EMM386.EXE Examples

To start EMM386 as an expanded-memory emulator, using the default values, add the following lines to CONFIG.SYS:


device=himem.sys
device=emm386.exe

Because no location is specified, MS-DOS searches for the EMM386.EXE file in the root directory of the 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 CONFIG.SYS:


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 CONFIG.SYS:


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 CONFIG.SYS:


device=emm386.exe noems novcpi 

To provide access to the upper memory area and provide EMS/VCPI memory, add the following line to CONFIG.SYS:


device=emm386.exe ram