Ref: 22140006
Title: Problems with QEMM 5.1, Windows 3.0a, and DOS Workstations
Date: 03/18/91

Copyright 3Com Corporation, 1991.  All rights reserved.

A problem has been noted using Quarterdeck's QEMM386 memory manager and
Microsoft Windows 3.0a in enhanced mode.  Workstations will display the
Windows start screen and then dump back to DOS.  Here are two possible
causes and their workarounds:

Possible cause #1:  There may be a conflict between the video card and
QEMM--the video card may be using an "extra" 32 KB of memory to perform
bank switching for increased speed or resolutions.  QEMM does not expect
this and maps that region (usually between B000-B7FF) as high memory.  When
Windows tries to start up, the video card up goes after the extra 32 KB,
finds it has been taken over by QEMM, and crashes.

The solution to this problem is to insert the line "x=B000-B7FF" in
the QEMM386 options and reboot.  This will not allow QEMM to map the
32 KB region.


Possible cause #2:  If the version of QEMM386.SYS is time-stamped 5:10 AM,
5:11 AM or 5:12 AM (corresponding with release versions 5.10, 5.11, and 5.12),
QEMM386.SYS will need a patch.

Note:  The patch *must* be applied to STANDARD MODE Win 3.00a users.

The patch is required because, starting with QEMM-386 5.00, QEMM-386 supports
both EMS (Expanded Memory Specification), which governs access to expanded
memory, and XMS (Extended Memory Specification), which governs access to
extended memory.  Requests for EMS and for XMS memory are both filled from
the same pool of QEMM-managed memory, and EMS and XMS "handles" are managed
together by QEMM-386.  (Handles are numbers returned to a program by the
memory manager when the program takes a chunk of memory, so that the program
can quickly identify the chunk when it next communicates with the memory
manager.)

Both EMS and XMS contain a call that programs can use to reallocate blocks
of memory; that is, to take a handle that the program has already received
and increase or decrease the chunk of memory to which the handle refers.
Users of QEMM-386 versions 5.00 through 5.12 may sometimes experience system
instability when a program makes an EMS or XMS call to increase the size of a
handle.  The symptom is likely to be a system crash or a reboot.  Users of
versions of QEMM-386 after version 5.12 should not experience this problem.

To patch QEMM386.SYS versions 5.10, 5.11, or 5.12, follow these steps:

Caution:  Do NOT use this patch for QEMM-386 5.00.

1.  Make a backup copy of the QEMM386.SYS file in your QEMM directory.

COPY C:\QEMM\QEMM386.SYS C:\QEMM\QEMM386.OLD

(If your QEMM386.SYS is not located in the QEMM directory of the
C drive, change the path accordingly.)

2.  Go to the DOS directory on the hard disk.  Type DEBUG C:\QEMM\QEMM386.SYS
and press Enter.  (If your QEMM386.SYS is not located in the QEMM directory
of the C drive, change the path accordingly.)

You should see the DEBUG prompt, which is a hyphen.

3.  At the DEBUG prompt, type S 100 L F000 75 6 1 0E and press Enter.

DEBUG should return a segment address and an offset: xxxx:yyyy

4.  At the DEBUG prompt, use the segment address and offset that was
returned in step 3 to give the DEBUG command:

        E xxxx:yyyy EB

Press Enter.  The DEBUG prompt will return.

5.  At the DEBUG prompt, type W and press Enter.

DEBUG will announce that it is writing a certain number of bytes, then it
will return the DEBUG prompt.

6.  At the DEBUG prompt, type Q and press Enter to exit DEBUG and return
to DOS.

7.  To double-check your patch, type the following from the DOS prompt
in your DOS directory:

        COMP C:\QEMM\QEMM386.SYS C:\QEMM\QEMM386.OLD

(If your QEMM386.SYS is not located in the QEMM directory of the C drive,
change the path accordingly.)

Press Enter.  COMP should return:

       C:QEMM386.SYS and C:QEMM386.OLD
       Compare error at OFFSET xxxx File 1 = EB
                                    File 2 = 75
       Eof mark not found
       Compare more files (Y/N)?

(The value xxxx after OFFSET will vary, depending on the version of QEMM
5.1.)  The message indicates that there is exactly one byte difference
between the files, and the differing byte is EB in QEMM386.SYS and 75 in
QEMM386.OLD.  If COMP returns the message "Files compare ok" then you
probably did not use DEBUG's W command to save your change, or you have
compared the wrong files.  If COMP returns more than one compare error, or
if the bytes returned by the compare error do not match those in the above
example, the procedure has failed.  In this case, use the DOS command
"COPY C:\QEMM\QEMM386.OLD C:\QEMM\QEMM386.SYS" to restore the original
file, and follow steps 1-7 again.

If the patch was successful, reboot the system and test the patched version
of QEMM386.  If the patched version of QEMM386 fails, restore your original
copy and follow steps 1-7 again.

