ID:QM QEMM-386 / LOADHI Error Messages
Quarterdeck Technical Note #192 Filename: QEMMERR.TEC
by Todd Threadgill CompuServe: QEMMER.TEC
Last revised: 1/31/92 Category: QEMM
Subject: Documents QEMM-386's error messages, and gives suggestions for
resolving the cause of the messages.
The Quarterdeck Expanded Memory Manager-386 (QEMM-386) is an extremely
sophisticated utility program and, as such, may encounter a wide number of
situations that can cause errors. In this document, QEMM-386's error messages
are outlined and discussed. We will also present various troubleshooting tips
that should solve the problem leading to the error message.
MESSAGE 1: "QEMM386: Cannot load because there is not enough memory"
This error message can appear for several different reasons, often on machines
with a total of one megabyte of RAM (640K conventional + 384K extended). When
QEMM-386 starts up, it finds all of the memory in your system and puts it into
one big pool. Then it checks the parameters that were specified in the QEMM-386
command line in the CONFIG.SYS file. If there is not enough memory available
to provide all of the services requested by the user as well as those that
QEMM-386 performs by default, QEMM-386 will terminate with this error message.
WHAT YOU CAN DO: Be sure to remove any EXTMEM (EXT) or MEMORY (MEM)
parameters that may reside on the QEMM386.SYS device line, as these
parameters can easily prevent QEMM from loading when set incorrectly.
Give QEMM-386 parameters that will cause it to use less memory. Such
parameters include NOFILL (NO), NOROM (NR), and MAPS=0. If you have
specified the ROM parameter, remove it. Also, you may need to exclude
some of your usable High RAM areas - on a EGA/VGA system, try X=B000-B7FF;
on a Hercules system the NV parameter should be sufficient. If your system
has Shadow RAM, QEMM-386 can usually use it as well, so enabling the
shadow RAM is a good idea when this message appears. (Note that QEMM-386
is not able to detect and use all types of Shadow RAM.) The preferable
solution to this problem is to install more memory in the computer. This
will allow QEMM-386 to perform all of its memory-enhancing functions,
while also providing more expanded memory for applications that need it.
MESSAGE 2: "QEMM386: Cannot load because the processor is already in Virtual
The Intel 386 processor can run in one of three different modes: Real
mode, Protected mode, and Virtual 8086 mode. When QEMM-386 starts up,
its default settings tell it to place the processor in Virtual 86 mode.
Only one program can do this, and since QEMM-386 is a "control program"
-- that is, it takes control of the whole machine's operation -- it is
forced by the design of the 80386 processor to become the program that
places the machine into Virtual 86 mode. QEMM-386 will not load if some
other program has already done this.
WHAT YOU CAN DO: First check to make sure that QEMM-386 is the first
line in your CONFIG.SYS file. If it is not, then move the QEMM-386 line
to the beginning of the file and see if QEMM-386 will load. If QEMM-386
still refuses to load, or it was the first program to load in your
CONFIG.SYS, then you should check your machine's BIOS settings.
Sometimes the BIOS may have certain settings (these may appear in the
BIOS setup as "extended features") that may need to be turned off.
*** WARNING ***
Your computer's BIOS is a highly sophisticated piece of software.
Quarterdeck does not recommend experimenting with BIOS settings unless you
are familiar with your BIOS' operation. If you are the least bit unsure
of how to make changes to your BIOS setup, seek the assistance of a
hardware technician before continuing, or consult the documentation for
MESSAGE #3: "QEMM386: Cannot load because an expanded memory manager is
Only one expanded memory manager can be present on the computer at any one
time. When QEMM-386 initializes, it checks to see if another expanded memory
manager has already been loaded into the system. If it detects the presence of
such a memory manager, it will abort with this error message rather than
attempt to install itself. Since QEMM-386 is designed to provide all of the
features you need in an expanded memory manager, the old expanded memory
manager is no longer needed.
WHAT YOU CAN DO: Check your CONFIG.SYS for another expanded memory
manager, or place QEMM-386 on the first line of the CONFIG.SYS. Expanded
memory managers tend to have the letters "EMM" or "EMS" in their names, so
if you see a line that looks like this:
remove the line from the CONFIG.SYS file.
MESSAGE #4: "QEMM386: Unknown Microchannel Adapter ID: XXXX"
On Microchannel computers, each installed adapter has its own ID number. This
number is a four-digit alphanumeric code. When QEMM-386 initializes during
boot-up, it notes the names of all of the adapters that are present and
compares them to a list of adapters contained in its MCA.ADL file. If an
adapter is present that is not listed in the MCA.ADL file, QEMM-386 will
display the above error message.
WHAT YOU CAN DO: Add the Microchannel Adapter ID information to your
MCA.ADL file, following the information listed in Appendix D of the
QEMM-386 manual. Alternatively, you may print out the @XXXX.ADF file
(where XXXX represents the four-character alphanumeric code that appears
in the error message) and fax it to Quarterdeck at (310) 314-3217. We'll
be happy to send you the additions you need to make or to translate your
adapter's settings into the format needed by QEMM-386. Also, updated
MCA.ADL files are available on CompuServe, BIX, and Quarterdeck's own
Bulletin Board System - (310) 314-3227.
Quarterdeck also offers a Technical Note that discusses the MCA.ADL file
in detail. You may obtain this document, MCA.TEC, through Quarterdeck's
Q/FAX service -- call (310) 314-3214 from your fax machine and download
MESSAGE #5: "QEMM386: Cannot find file MCA.ADL."
With this message the QEMM386.SYS device driver is reporting that it cannot
find the MCA.ADL file that it uses to determine memory locations used by
adapter cards in Microchannel machines (see message above). QEMM386.SYS looks
for MCA.ADL in the directory from which it was loaded in the CONFIG.SYS file
(e.g. if your CONFIG.SYS contains a line that reads
DEVICE=C:\QEMM\QEMM386.SYS, QEMM will look in the C:\QEMM directory for the
WHAT YOU CAN DO: Ensure that the MCA.ADL file is located in the
directory that is specified on the QEMM386.SYS device line in your
MESSAGE #6: "QEMM386: Cannot load because this is not an 80386."
When QEMM-386 initializes, it checks the machine to ensure that a 386/486
processor is present. QEMM-386 cannot run on 80286, 8088, or 8086 machines.
WHAT YOU CAN DO: If QEMM-386 displays this error on a 386/486 machine,
you should re-install QEMM-386. If the message still appears, you should
obtain a new copy of QEMM-386 and try again. SPECIAL NOTE FOR 386 ADD-IN
BOARD OWNERS: This error message may appear if QEMM386.SYS appears in the
CONFIG.SYS file before the driver for your particular 386 add-in board.
Put the board's driver before QEMM386.SYS in the CONFIG.SYS and the
problem should go away.
MESSAGE #7: "QEMM386: Cannot load because there is no room for a Page
In order to create and utilize expanded memory, QEMM-386 must create a page
frame that is 64K in size. By default, QEMM-386 attempts to put the page frame
between A000 (640K) and F000 (960K). However, some configurations prevent
QEMM-386 from placing a page frame above A000 by splitting, or fragmenting, the
unused areas above A000 into chunks that are less than 64K in size. If
QEMM-386 cannot place the page frame above A000, it will attempt to place it in
conventional memory. When it cannot create a page frame at all, QEMM-386 will
display the above error message.
WHAT YOU CAN DO: Try re-arranging any adapters so that a 64K area above
A000 is unused. This may involve changing physical switch settings on
your machine's adapters, or, on PS/2 and other Microchannel machines, this
will entail using the Reference Diskette. If rearranging the adapters'
locations above A000 is not possible, remove any exclusions (X=xxxx-xxxx)
statements that reference areas between 0000 and 9FFF.
MESSAGE #8: "QEMM386: Cannot load because QEMM is already loaded."
QEMM-386 is a control program, that oversees virtually all aspects of the
computer's operation. By definition there can only be one control program in
charge of the system at any one time. As a result, QEMM-386 cannot be loaded
on top of itself. QEMM-386 is intelligent, and can detect its own presence
while loading. If it sees that it has already been loaded, it will abort with
the above error message.
WHAT YOU CAN DO: This error will only result if you have multiple lines
in your CONFIG.SYS file that load the QEMM386.SYS device file. By
removing all but one of these lines you will solve the problem.
MESSAGE #9: "QEMM386: Disabling StealthROM:F because the page frame does not
overlap any ROM."
QEMM-386 Version 6.0's new Stealth technology "hides" ROM areas above 640K and
allows them to be used as either High RAM or part of the EMS page frame. In
order to use STEALTHROM:F, the page frame must be located atop a Stealthed ROM
area. By default, QEMM will do its best to place the page frame properly.
However, if the page frame has been explicitly set (by using QEMM's FRAME=
parameter) at an address that is not occupied by a ROM, or if all ROMS have
been excluded with the X= parameter, QEMM will disable ST:F and continue. This
may result in an overall reduction of the amount High RAM created by QEMM-386.
WHAT YOU CAN DO: Remove the FRAME= parameter from your QEMM386.SYS
device line in your CONFIG.SYS file. If there are no FRAME= parameters
on the device line, check for exclusions (EXCLUDE= or X= parameters) that
may be "covering" ROM areas, remove them, and try again.
MESSAGE #10: "QEMM386: Disabling StealthROM:M because there is no page
A page frame is required in order to use the ST:M parameter and take full
advantage of Stealth.
WHAT YOU CAN DO: Check your QEMM386.SYS device line in your CONFIG.SYS
file for the following parameters:
FRAMELENGTH=x (FL=x) -- where x is a value less than 4
If your QEMM386.SYS device line contains any of the above parameters,
Stealth will be automatically disabled. To use Stealth, remove the
MESSAGE #11: "QEMM386: Disabling Stealth because QEMM could not locate the
ROM handler for INT xx."
For best results when using Stealth, QEMM-386 must monitor some interrupts at
all times. When these interrupts have been diverted by a program, QEMM-386
will disable Stealth. As a result QEMM-386 should usually be loaded on the
first line of your machine's CONFIG.SYS file, and this is practical in the
vast majority of configurations. However, there are times when it is
desirable to load other device drivers before QEMM386.SYS. When doing this,
some device drivers may make it impossible for Stealth to "see" all of the
activity in the machine, and problems can result.
WHAT YOU CAN DO: If possible, place the QEMM386.SYS device line at the
beginning of your CONFIG.SYS file. If this is not possible, use
HOOKROM.SYS (included with QEMM-386 version 6.0 and later) -- this device
driver must be placed at the beginning of the CONFIG.SYS file!
HOOKROM.SYS acts as a secretary for QEMM-386, taking notes about the state
of the machine as the CONFIG.SYS is processed, and then passing these
notes to QEMM-386 so that it can operate properly with Stealth active.
Please see the READ.ME file included with QEMM-386 for more information
MESSAGE #11: "Cannot load because QEMM is not registered.
Run the INSTALL program to register."
The files on the QEMM-386 product diskette must be installed by running the
INSTALL program -- they will not function properly when copied over by DOS'
WHAT YOU CAN DO: Run the INSTALL program from the QEMM-386 product
MESSAGE #12: "CONTEXTS is no longer a QEMM parameter!" or
"NAMES is no longer a QEMM parameter!"
QEMM-386 versions 4.23 and earlier featured a CONTEXTS parameter, which allowed
users to specify the maximum number of mapping contexts that QEMM-386 could
save at one time. Mapping contexts are now determined by the number of HANDLES
provided by QEMM-386 (ranging from 16 to 255, 64 by default). Similarly, it was
determined that the function of the NAMES parameter (also from QEMM-386
versions 4.23 and earlier), which specified the maximum number of named
handles, could be included into the HANDLES parameter. As a result the CONTEXTS
and NAMES parameters were determined to be superfluous and were abandoned in
QEMM-386 version 5.0 and later.
WHAT YOU CAN DO: Remove the CONTEXTS=xxx and MAPS=xxx parameters from
your QEMM386.SYS device line in your CONFIG.SYS file.
MESSAGE #13: "LOADHI: The high memory chain is corrupted!"
QEMM-386 uses a collection of high memory areas called a "memory chain" to keep
track of the TSR's and device drivers that are loaded high by the LOADHI
programs. If there is a conflict in high memory, this chain can become
WHAT YOU CAN DO: This error message is usually accompanied by an address
(for example, C800). You can frequently resolve the conflict with an
exclusion on the QEMM-386 device line in the CONFIG.SYS file. Also, it is
possible that other drivers or programs that are being loaded in the
CONFIG.SYS or AUTOEXEC.BAT may be corrupting the high memory chain, in
which case you should clean out your CONFIG and AUTOEXEC of any device
drivers or TSRs that aren't absolutely vital to your machine's operation,
then replace each line of each file, one at a time, rebooting each time
you make a change, until the conflicting driver or TSR is discovered.
MESSAGE #14: "LOADHI: Cannot write to log file."
Usually this error appears when there is a copy of the QEMM386.SYS device
driver in the root directory of the hard drive, as well as in the QEMM
subdirectory. This can cause confusion when loading high.
WHAT YOU CAN DO: Make sure that QEMM386.SYS is only found in the QEMM
subdirectory, and that the QEMM-386 device line in the CONFIG.SYS file
specifically points to that subdirectory (i.e.,
DEVICE=C:\QEMM\QEMM386.SYS, vs. DEVICE=QEMM386.SYS).
*This technical note may be copied and distributed freely as long as it*
*is distributed in its entirety and it is not distributed for profit. *
* Copyright (C) 1990-2 by Quarterdeck Office Systems *
************************ E N D O F F I L E *************************