Windows 3.1 standard mode is compatible with expanded memory managerssuch as EMM386, 386MAX, and QEMM386. However, there are severalproblems with the Virtual Control Program Interface (VCPI) used bythese products to provide access to extended memory in standard mode.Under most circumstances, users of machines with 386 or higherprocessors and with more than 2 megabytes (MB) of memory installedshould use enhanced mode rather than standard mode.
Windows 3.1 can run in standard mode when an expanded memory manager(EMM) is active. An EMM uses the paging mechanism of the 386 or higherprocessor to map extended memory blocks, as EMS pages, into the firstmegabyte of address space where no real memory is present. To do so,the EMM puts the processor into protected mode, and keeps the emulatedupper memory block (UMB) and EMS page frames always available forprocesses designed for real mode (such as MS-DOS), installed devicedrivers, and terminate-and-stay-resident (TSR) programs. When one ofthese processes is running, the processor is in virtual-8086 (v86)mode, with paging on and the address mapping specified by the EMM.
In this configuration, the EMM services request to enter and leaveprotected mode using the VCPI. The EMM may also allocate extendedmemory. The standard mode MS-DOS Extender, DOSX, uses VCPI to switchto protected mode and to v86 mode. Therefore, in standard mode, theEMM remains active and continues to run "underneath" Windows. Inenhanced mode, the EMM is deactivated for the duration of the Windowssession.
Several questions have arisen regarding "VCPI support" understandard-mode Windows. If no EMM is installed, more extended memoryand more total memory is available to Windows. An EMM uses aconsiderable amount of extended memory to store itself and its tables.The system incurs additional overhead because paging must be active atall times. Unless an EMM is absolutely necessary, possibly because anMS-DOS-based application will not run without EMS, Windows will probablyrun better without an EMM. Windows enhanced mode runs on a machine with 2MB of RAM memory installed if no EMM is present.
Windows standard mode does not support an MS-DOS-based application that isa DPMI (DOS Protected Mode Interface) client. However, if the EMMalso provides DPMI services, DOSX will not interfere with theseservices.
The standard-mode task switcher attempts to arbitrate extended memoryuse between Windows-based and MS-DOS-based applications. It performs thisarbitration by hooking the XMS function dispatcher. This does not workproperly if an EMM is installed, primarily because the extended memoryportion of the address space in standard mode is not accessible to theMS-DOS portion of the switcher. For this reason, when an EMM ispresent in standard mode, users will experience the following types ofproblems:
- Performance degradation when the system switches between tasks because the task switcher cannot use XMS memory for swap space.
- Applications, such as AutoCad and Lotus 1-2-3, that include an MS-DOS extender will not run.
Because the standard-mode task switcher can't access Windows'sextended memory, it can't use extended memory for swap space when anEMM is present. Users may experience some performance degradationswitching between MS-DOS-based applications in this configuration. Enhancedmode is recommended to run many MS-DOS-based applications under Windows.
Windows standard mode does not specifically prevent VCPI applicationsfrom running. However, because the task switcher cannot effectivelyuse extended memory provided by an EMM, an MS-DOS-based application thatuses extended memory probably will fail to run in the standard-modeMS-DOS box. This applies equally to applications that use XMS, VCPI,and DPMI. While it may be possible to run an MS-DOS-based application thatuses extended memory in an MS-DOS box under standard-mode Windows,there is no general solution to the problems involved.
The VCPI specification is maintained by Phar Lap Software, Inc., andQuarterdeck Office Systems. Windows 3.1 standard mode complies withversion 1.10 of the VCPI specification. Because many commercial EMMproducts can be configured to not provide EMS, DOSX will attempt touse VCPI if the following are true:
- The INT 67h vector is not null
- A device named "EMMXXXX0" is present
- The VCPI detection call (INT 67h, AX=DE00h) succeeds
In particular, DOSX does not require the presence of a LIM 4.0(Lotus/Intel/Microsoft expanded memory specification) driver or a LIM3.2 page frame.