You are currently offline, waiting for your internet to reconnect

EMM386 Troubleshooting and Technical Information

This article was previously published under Q78557
If this article does not describe your hardware-related issue, please see the following Microsoft Web site to view more articles about hardware:
SUMMARY
The following topics are discussed in this article:

  • Troubleshooting steps to use if EMM386.EXE locks up the computer
  • How EMM386.EXE locates UMBs and the EMS page frame:
    UMA scanning algorithm
    EMM386 and the E000 segment
  • Common EMS questions concerning the following:

    • "WARNING: Unable to set page frame base address--EMS unavailable" message
    • "Size of expanded memory pool adjusted" message
    • EMM386.EXE and Windows
  • EMM386.EXE version history
NOTE: This information applies to the versions of EMM386.EXE included withMS-DOS, Microsoft Windows, and Microsoft Windows for Workgroups.
MORE INFORMATION

IF EMM386.EXE LOCKS UP THE COMPUTER

If EMM386.EXE locks up the computer, follow these troubleshooting steps:

  1. If the DEVICE=EMM386.EXE in the CONFIG.SYS file contains the HIGHSCAN parameter, remove HIGHSCAN from the command, save the CONFIG.SYS file, and restart your computer. (HIGHSCAN cannot be used on some computers.)
  2. Start EMM386.EXE with the exclude option.

    EMM386.EXE may have incorrectly identified an area being used by the system as a "hole" (a region that can be used as a UMB or an EMS page frame). As a result, EMM386.EXE overwrites a portion of memory that is used by a hardware adapter in your computer.

    By excluding addresses in the range A000-EFFF, EMM386.EXE does not use any part of the excluded region for a UMB or EMS page frame. Identifying the correct region(s) to exclude requires experimentation. Start by excluding a large region and then reducing the size of the region. For example:
          DEVICE=EMM386.EXE NOEMS X=A000-EFFF      DEVICE=EMM386.EXE NOEMS X=C000-DFFF      DEVICE=EMM386.EXE NOEMS X=C800-CFFF						
    You can use multiple exclusions on the EMM386.EXE device line. For example:
          DEVICE=EMM386.EXE NOEMS X=C000-C7FF X=E000-EFFF						
    Refer to the documentation included with your hardware device(s) for information on the upper memory addresses the adapter card uses. Examples of devices that use upper memory addresses include network cards, SCSI adapters, video cards, and scanners.
  3. If your computer has a SCSI disk controller and requires a device driver for the SCSI adapter, be sure the DEVICE= line for the SCSI driver appears before the DEVICE=EMM386.EXE line. Examples of SCSI device drivers include ASPI4DOS.SYS and USPI14.SYS.
  4. If you are experiencing problems with the computer hanging, try loading the SMARTDrive double buffer driver.

    NOTE: The SMARTDrive double buffer driver line should appear before the DEVICE=EMM386.EXE line in the CONFIG.SYS file.

    MS-DOS 6.0 or later, Windows 3.1 or later, or Windows for Workgroups

    If you use MS-DOS 6.0 or later, Microsoft Windows 3.1 or later, or Microsoft Windows for Workgroups the SMARTDrive double buffer driver is loaded from the CONFIG.SYS file as follows:
          device=c:\windows\smartdrv.exe /double_buffer						
    In the AUTOEXEC.BAT file, add a /L to the end of the SMARTDRV.EXE line. For example:
          c:\windows\smartdrv.exe /L						
    If the problems persist, add a plus sign (+) to the end of the double buffer device line as follows:
          device=c:\windows\smartdrv.exe /double_buffer+						

    MS-DOS 5.x

    If you use the SMARTDRV.SYS driver included with MS-DOS 5.x the SMARTDrive double buffer driver is loaded in the CONFIG.SYS as follows:
          device=c:\dos\smartdrv.sys /b+
  5. Experiment with different HIMEM.SYS A20 handlers. This is done using the /MACHINE: switch on the HIMEM.SYS device line.

    For information on the HIMEM.SYS /MACHINE: switch and troubleshooting A20 handler problems:

    • Consult your MS-DOS, Windows, or Windows for Workgroups documentation -or-

    • Query on the following words in the Microsoft Knowledge Base:
      tshoot and himem.sys and control and a20 line

HOW EMM386.EXE LOCATES UMBs AND THE EMS PAGE FRAME

UMA Scanning Algorithm

By default EMM386.EXE scans the following UMA region:
   MS-DOS 5.0: C800-DFFF   Windows 3.1, Windows for Workgroups 3.1: C600-DFFF   MS-DOS 6.0 and later, Windows for Workgroups 3.11 and later: C000-EFFF				
NOTES:

The E000-EFFF region is handled differently on certain hardware (see thefollowing section).

Under MS-DOS 6.0 and later and Windows for Workgroups 3.11, the F000-F7FFrange can be included by using the HIGHSCAN switch.

EMM386.EXE and the E000 Segment

On Compaq machines, the E000 segment has either shadow RAM or the segmentis unused. For shadow RAM, the shadow area is reclaimed by EMM386.EXE ifthe Int 10 vector has not been hooked before EMM386.EXE loads. This isbecause the shadow region contains a remapped copy of the video ROM fromthe C000 region.

EMM368.EXE excludes E000 on MCA machines (IBM PS/2s) since the E000 segmenthas the system ROM.

On other machines, E000 may be excluded by default. If you think the E000range is available, you can explicitly include the E000 segment by addingI=E000-EFFF to the DEVICE=EMM386.EXE command in the CONFIG.SYS file.

NOTE: When EMM386.EXE encounters the include switch, it includes the regionwithout scanning it for potential conflicts.

COMMON EMS ISSUES

WARNING: Unable to Set Page Frame Base Address--EMS Unavailable

This error is displayed if EMM386.EXE cannot locate a 64K contiguous "hole"in the UMA for the EMS page frame.

According to the LIM 3.2 specification, a page frame consists of fourcontiguous 16K pages, and a LIM provider must set the page frame.

According to the LIM 4.0 specification, an EMS provider need not set a 64Kpage frame, but it should set a 16K page at the minimum.

Although EMM386.EXE conforms to the LIM 4.0 specification, it does not loadas an EMS provider if it does not find a 64K contiguous hole that can beused for the page frame. This is because the majority of LIM 3.2applications assume the existence of a page frame.

EMM386.EXE can be forced to load without a LIM 3.2 (64K) page frame byusing the Pn parameters. If you force EMM386.EXE to load as a LIM 4.0provider, do not attempt to run LIM 3.2 applications. Consult with yourapplication vendor to determine the required LIM version.

NOTE: If you require a LIM 3.2 (64K) page frame, it may be necessary tomodify the settings on your hardware devices to free a contiguous, 64Kregion in the UMA.

Size of Expanded Memory Pool Adjusted

This error message is displayed if EMM386.EXE cannot provide all the EMSmemory requested on the command line. For example, if you use theDEVICE=EMM386.EXE 2048 and your computer only has 1024K of XMS memory,EMM386.EXE displays this error message and provides as much EMS aspossible. (Note that EMM386.EXE uses some XMS memory for its own code anddata, and this reduces the amount of XMS memory available for EMS.)

Windows Cannot Provide EMS with the NOEMS Switch

According to the LIM 4.0 specification, an EMS page can also reside inconventional memory (0-640K). The EMM386 EMS line starts at 256K bydefault. If the NOEMS option is specified, all the holes in the adapterregion A000-FFFF are used for UMBs, and EMM386.EXE does not provide anyEMS.

Once Windows 3.0 is started and an MS-DOS session is started, EMM386.EXEmay or may not be able to provide EMS. If Windows is running in 386enhanced mode, EMM386.EXE can provide EMS in an MS-DOS session; however,the EMS pages are in conventional memory. This can cause problems becauseof the behavior of LIM 3.2 applications as described above.

In a Windows 3.1 386 enhanced mode MS-DOS session, EMS is not provided.

EMM386.EXE VERSION HISTORY

MS-DOS 5.0                    4.20MS-DOS 5.00a                  4.33MS-DOS 6.0                    4.45MS-DOS 6.2                    4.48MS-DOS 6.21                   4.48MS-DOS 6.22                   4.49Windows 3.1                   4.44Windows 3.11                  4.44Windows for Workgroups 3.1    4.44Windows for Workgroups 3.11   4.48Windows 95                    4.95Windows 98                    4.95				
Some of the products included here are manufactured by vendors independentof Microsoft; we make no warranty, implied or otherwise, regarding theperformance or reliability of these products.
HWSCSI 6.22 5.00 5.00a 6.00 6.20 3.10 freeze stop lock conflict msdos
Properties

Article ID: 78557 - Last Review: 01/18/2007 19:09:00 - Revision: 3.1

  • Microsoft MS-DOS 5.0 Standard Edition
  • Microsoft MS-DOS 5.0a
  • Microsoft MS-DOS 6.0 Standard Edition
  • Microsoft MS-DOS 6.2 Standard Edition
  • Microsoft MS-DOS 6.21 Standard Edition
  • Microsoft MS-DOS 6.22 Standard Edition
  • Microsoft Windows for Workgroups 3.1
  • Microsoft Windows for Workgroups 3.11
  • Microsoft Windows 3.1 Standard Edition
  • Microsoft Windows 3.11 Standard Edition
  • Microsoft Windows 95
  • Microsoft Windows 98 Standard Edition
  • kbinfo kbtshoot KB78557
Feedback