Article ID: 78433 - View products that this article applies to.
This article was previously published under Q78433
This article has been archived. It is offered "as is" and will no longer be updated.
This article explains the following EMM386.EXE switches for MS-DOS 5.0 or later:
This article explains these switches in-depth, and describes some of the differences and limitations associated with the switches. There is also a separate note regarding the use of X= and I= to maximize available UMB space.
W=on/off Mx FRAME= /Pmmmm Pn=address X= I=
W=on/offThis switch enables or disables support for the Weitek 3167 math coprocessor. If W=on, MS-DOS 5.0 must be loaded low because the HMA will be used by the coprocessor.
The Weitek coprocessor and the Intel coprocessor use different methods of passing instructions and results back and forth to the 80386/80486 chip controlling the system. The Intel chips do not reside in the memory space of the CPU. The Weitek chip is memory-mapped; it appears to take up a certain amount of space in extended memory, but the area of memory it uses is the HMA. Because the HMA is also the location used to load the MS-DOS 5.0 kernel high, the Weitek processor cannot be used while MS-DOS 5.0 is loaded high. Therefore, if the W=on switch is used, the DOS=HIGH command will be unusable and MS-DOS must be loaded low.
Mx/FRAME=/Paddress versus Pn=addressThe Mx, FRAME=address, and /Pmmmm parameters are all essentially equivalent. They create a 64K LIM 3.2 compatible page frame at the address specified. The syntax for specifying the address for each of these is on page 606 of the version 5.0 "Microsoft MS-DOS User's Guide and Reference."
The Pn=address parameter allows you to create LIM 4.0 compatible 16K pages. This allows you to create 16K pages at any available address in the allowable memory ranges (8000-9C00, which is in conventional memory space, or C000-EC00 which is part of the upper memory area). Note that multiple uses of this parameter with a different value for n will create additional 16K pages (up to a maximum of four). These additional pages do not necessarily need to reside in contiguous areas of memory with respect to the other pages.
To use LIM expanded memory emulation, a page frame must be created somewhere in memory to provide a location for the visible pages of expanded memory to appear as they get bank-switched in and out by the applications using EMS.
LIM versions 3.2 and earlier require a 64K contiguous block for use as the page frame. LIM 4.0 allows for disjoint page frames of 16K each, and it is not necessary to create four frames for a total of 64K. An application written for LIM 4.0 can function with a single page of 16K. However, because most expanded memory boards in use conform to LIM 3.2 or earlier, very few applications can take advantage of the reduced "footprint" capability of LIM 4.0. For these applications, it is still necessary to create a 64K LIM 3.2 compatible page frame.
X=address and I=addressThese switches force EMM386 to include (I=) or exclude (X=) specific areas of memory between A000-FFFF when EMM386 is determining where to place upper memory blocks (UMBs) or finding a location for the EMS page frame.
Using I=address can often increase available UMB space by including areas that EMM386 was not able to automatically detect. Be careful when using this switch to not include memory areas in use by system adapters or ROMs. If these areas are included, it may cause the system to hang when booting, or to display other unpredictable behavior. You can determine which memory areas are free by using memory scanning utilities from several third party vendors, or MSD from Microsoft.
The X=address statement is sometimes required to prevent EMM386 from using areas that it might otherwise attempt to use, such as RAM on certain network adapters, which is otherwise undetectable.
Article ID: 78433 - Last Review: October 26, 2013 - Revision: 3.0