TITLE: EMM386.EXE Configuration Parameters DOCUMENT ID: TID1200297 DOCUMENT REVISION: 0 DATE: 06Mar95 ALERT STATUS: Yellow README FOR: NA NOVELL PRODUCT and VERSION: NOVELL DOS 7.0 ABSTRACT: NA --------------------------------------------------------------------- DISCLAIMER: THE ORIGIN OF THIS INFORMATION MAY BE INTERNAL OR EXTERNAL TO NOVELL. NOVELL MAKES EVERY EFFORT WITHIN ITS MEAN TO VERIFY THIS INFORMATION. HOWEVER, THE INFORMATION PROVIDED IN THIS DOCUMENT IS FOR YOUR INFORMATION ONLY. NOVELL MAKES NO EXPLICIT OR IMPLIED CLAIMS TO THE VALIDITY OF THIS INFORMATION. --------------------------------------------------------------------- ISSUE: EMM386.EXE provides access to upper memory. It also uses extended memory to emulate EMS memory for those applications that require it. The close integration of EMM386.EXE with the operating system permits key operating system components to automatically relocate themselves outside of conventional memory. EMM386 SWITCHES IN CONFIG.SYS You load and configure EMM386.EXE by using a DEVICE= statement in the CONFIG.SYS file. The SETUP or INSTALL utility automatically adds the DEVICE=EMM386.EXE line to the CONFIG.SYS file when the 80386 memory manager option is chosen. The switch values are determined by the selections made during SETUP or INSTALL, or by changes made directly to the CONFIG.SYS EMM386.EXE line. The full syntax of the EMM386 DEVICE statement is: DEVICE = C:\NWDOS\EMM386.EXE [[/]?|[/]H] [[/]AUTO] [[/]COMPAQ] [DMA=kb] [[/]DPMI] [[/]EXCLUDE=start-end] [[/]FRAME=AUTO|NONE|address] [[/]GATEA20=type] [HANDLES=n] [[/]INCLUDE=start-end] [[/]INT15=kb] [[/]MULTI[=ON|OFF]] [[/]ROM=start-end] [[/]USE=start-end] [[/]VIDEO=[start-end] [[/]VXD=path] [[/]WEITEK=ON|OFF] [[/]WINSTD] [[/]XBDA] /AUTO. EMM386.EXE defaults to /AUTO. The memory manager switches to protected mode if no other protected mode memory manager has been enabled, and will switch back and forth from real to protected mode as needed. /COMPAQ. This switch makes an additional 256KB of memory available as extended memory on Compaq 386 machines. /DMA. This switch allows you to set the DMA buffer size. Valid sizes are 0-65535. /DPMI. This switch enables DPMI support. The DOS Protected Mode Interface for Novell DOS is compliant with the DPMI 0.9 specification. DPMI (DOS Protected Mode Interface) uses a host/client concept where the client has fewer privileges than the host (described earlier as privilege levels). This interface provides access to real or V86 mode to service DOS calls. Because the DPMI host (EMM386.EXE) provides access to all real/V86 mode functions, it can change the client application's DOS environment to reflect something other than the true physical environment. This means that DPMI can create multiple DOS "machines" so it can provide service to more than one application at a time. /EXCLUDE. This switch forces EMM386.EXE to exclude a specified area of upper memory from use. The syntax is: /EXCLUDE=start-end The starting address should be in the format xx00, while the ending address should be xxFF. The address is hexadecimal. An example of the correct use of this switch is: /EXCLUDE=D000-D7FF Some devices, such as network interface cards, use upper memory. A conflict with EMM386.EXE can occur because these cards don't use memory until initialized (usually by loading a driver from a batch file). Because EMM386.EXE loads first, it doesn't detect the card's need for upper memory, and therefore gives that range of memory to something else. The way to prevent the conflict is to use an EXCLUDE statement to reserve (or leave untouched) the memory range needed by the card. /FRAME. Enables EMS or LIM memory emulation. The syntax is: /FRAME=AUTO | NONE | address AUTO enables EMS and lets the memory manager locate the page frame. NONE disables EMS support. Address is the location where the EMS page frame is to be created. The address must be specified as a four-digit hexadecimal value. A switch of /FRAME=D000 will enable EMS support with the page frame located at D000-DFFF. XMS (extended Memory Specification) is always supported by EMM386.EXE no matter what the /FRAME switch is set to. EMM386.EXE is compliant with the XMS 3.0 specification. EMS (Expanded Memory Specification) is available only when /FRAME=AUTO or /FRAME=address. EMS is sometimes referred to as the LIM (Lotus-Intel-Microsoft) memory specification. EMM386.EXE is compliant with the LIM 4.0 specification. VCPI (Virtual Control Program Interface) is supported by all possible combinations of the /FRAME switch. Technically, VCPI is an extension of EMS. It was originally intended to allow EMS and DOS extenders to coexist. It was created by the same group (Lotus-Intel-Microsoft) that created EMS. While VCPI is supported with /FRAME=NONE, some VCPI applications require a page frame before they recognize EMM386.EXE as a VCPI host. VCPI doesn't use privilege levels. As a result, host and client are equivalent and each manages its own environment. This means that virtualization of hardware for VCPI clients isn't possible. Therefore, multitasking VCPI clients isn't possible. /GATEA20. This switch specifies the way EMM386.EXE handles control of the address line A20. The correct syntax is: /GATEA20=type where type can be MCA, AT, INT15, XMS, or HP. The memory manager should automatically detect the machine type. However, if it doesn't, you can add this switch. /HANDLES. This switch allows you to set the number of XMS/EMS handles. Valid values are from 0 to 255. /INCLUDE. This switch asks EMM386.EXE to include a range of upper memory. The test it performs to determine usability is less stringent that the normal, automatic scanning which EMM386 otherwise performs. As with /EXCLUDE, the upper memory addresses to be included must be specified in hexadecimal format. The syntax is: /INCLUDE=xx00-xxFF An example of an INCLUDE is: /INCLUDE=B000-B7FF As a rule, EMM386.EXE doesn't map any video space for inclusion as upper memory. It automatically scans C000-FFFF. The address range B000-B7FF is for Hercules video display. You can use /INCLUDE to gain an additional 32KB of upper memory by including this range (if your video adapter does not require it.) If Windows is installed, you shouldn't include the memory address range B000-B7FF unless the driver MONOUMB2.386 is loaded. /INT15. The INT15 switch reserves a specified amount of extended memory. This memory is not accessible to XMS, EMS, or any other type of memory specification. This exclusion allows third-party software with built-in memory managers to function while still allowing EMM386.EXE to perform its task of relocating DOS. The syntax is: /INT15=XXXX where XXXX is a decimal value specifying the number of kilobytes to be set aside. /MULTI. This switch provides support for the Novell DOS multitasking software. It also loads the DPMI server. SETUP automatically adds this switch when the Task Manager multitasking software is enabled. /OFF. This switch turns off EMM386.EXE. The computer remains in real mode until the ON switch is used from the command line. /ON. This switch turns EMM386 on. Once EMM386 is on, the computer remains in protected or V86 mode until the OFF switch is used at the command line. /ROM. The ROM switch copies ROM (Read-Only Memory) into RAM (Random Access Memory), thereby accelerating the operating speed of the computer because RAM executes faster than ROM. The function this switch performs is commonly called ROM shadowing (or simply shadowing). The valid syntax is: /ROM=AUTO|NONE|start-end AUTO copies all available ROM to RAM. NONE disables any copying and start-end copies only the specified address. As in all other examples, the address must be in hexadecimal format. /USE. /USE forces EMM386.EXE to scan a specified area of upper memory for usable memory. The syntax is: /USE=start-end The start and end addresses specify the area to be scanned. Addresses are in hexadecimal values. This switch differs from the /INCLUDE switch in that /USE forces use of the memory, while /INCLUDE tests the memory first for usability. /USE is therefore powerful, yet dangerous. If the area you force was already being used, you may lockup your system or corrupt memory. /VIDEO. This switch makes unused video memory available to applications when it isn't being used by the video card. You can specify the address range to use, but the normal method is to use /VIDEO with no parameters. EMM386.EXE determines the amount of memory to use. The correct syntax is: /VIDEO=start-end The start and end must be valid hexadecimal addresses between A000 and B7FF. Using the /VIDEO switch, you can give machines with Hercules, EGA, and VGA cards an additional 64KB of conventional memory. Machines with CGA cards can get 96KB more conventional memory. Machines with EGA and VGA cards can get the additional memory only as long as the video card is in text mode. The command MEMMAX +V enables the use of the additional memory, while MEMMAX -V disables it. /VXD. This switch specifies the location of Novell DOS VxDs (Virtual Device Drivers) with Windows 3.0 or 3.1 in enhanced mode. The default is for the VxD to be located in the same directory where the memory manager was loaded. If the VxD isn't located in the same directory, adding the switch /VXD=path to the EMM386.EXE line lets the drivers be located and loaded. The path must be a full valid DOS path: for example, C:\NWDOS. Normal installation of Novell DOS 7 will correctly place all VxDs. /WEITEK. This switch enables or disables the Weitek coprocessor (if one is installed). The correct syntax is: /WEITEK=ON|OFF /WINSTD. This switch provides support for Windows 3.0 standard mode (286 mode). Windows 3.0 in standard mode requires that upper memory be disabled. This switch isn't required for Windows 3.1 standard mode. You can also use the /WINSTD switch to diagnose memory manager conflicts. It helps distinguish between a conflict with protected mode and a conflict with upper memory. If an application works with /WINSTD and doesn't work without the switch, then the application is conflicting with upper memory but can function in protected mode. /XBDA. Normally the XBDA (extended BIOS Data Area) occupies 1KB at the top of conventional memory. This is usually reflected in a MEM report as total conventional memory of 639KB instead of 640KB. This is sometimes moved to the bottom of conventional memory by the memory manager. If the XBDA is being moved, and this causes problems, use the /XBDA switch. It will prevent relocation of the XBDA. EMM386 COMMAND LINE OPTIONS With the change from the DR DOS EMM386.SYS to the new EMM386.EXE, you can run Novell DOS's 386 memory manager from both the CONFIG.SYS and the command line. Here's an example of EMM386 command-line options: EMM386 [?|HELP] [AUTO] [PIC={ON|OFF}] [OFF] [ON] [WEITEK={ON|OFF}] ? or HELP. Displays the help screen. AUTO. The AUTO switch makes changing between ON and OFF automatic. The AUTO switch is the default when EMM386.EXE runs without any overriding switches. PIC=. When PIC=ON VCPI applications are informed that the PIC is not revectored. Set to OFF for all applications except if experiencing difficulty with 4GW DOS Extender applications. The recommended settings for use with 4GW applications are: Single Tasking: EMM386 PIC=ON Multi Tasking: DPMI OFF EMM386 PIC=ON OFF. The OFF switch places EMM386.EXE permanently in real mode with upper memory and EMS permanently disabled. You can't use the OFF switch if upper memory or EMS (LIM) is being used. At first glance, using the OFF switch from the command line seems unnecessary. What would be the purpose of running a memory manager and not using upper memory or EMS? The answer is that the OFF switch is an excellent diagnostic tool for troubleshooting memory manager and BIOS conflicts. You can also use the OFF switch with older DOS applications that assume that the computer is in real mode. These programs are also unaware of interfaces such as DPMI (DOS Protected Mode Interface) or VCPI (Virtual Control Program Interface). To use the ON|OFF combination, simply add the switch /OFF to the EMM386.EXE line in CONFIG.SYS. This switch prevents EMM386.EXE from creating any upper memory or EMS. When you add this line, EMM386.EXE will load, but the computer will be functioning in real mode. Entering the command EMM386 /ON switches the machine into protected mode. The configuration of the system hasn't changed, so you can attribute any conflicts or changes in the computer to being in protected mode. ON. The /ON switch turns EMM386.EXE on permanently in protected/virtual 8086 mode. WEITEK=. This option enables or disables the Weitek coprocessor (if one is installed). The Weitek switch allows command-line enabling and disabling of the coprocessor. The default is OFF (WEITEK=OFF). The Weitek coprocessor maps into and out of the HMA so that DOS applications can access it. EMM386.EXE can make much better use of the HMA by using it for the relocation of DOS structures such as COMMAND.COM. If an application requires the use of the Weitek coprocessor, you should turn on the Weitek switch. The proper use would be to add the switch /WEITEK=ON to the EMM386.EXE line in the CONFIG.SYS. You can then disable or enable it from the command line. NOTE: The above information was extracted from the July 1994 Novell Application Notes supplemental report "Enhancing the DOS Desktop Environment with Novell DOS 7. --------------------------------------------------------------------- Any trademarks referenced in this document are the property of their respective owners. Consult your product manuals for complete trademark information. ---------------------------------------------------------------------