home *** CD-ROM | disk | FTP | other *** search
- Quarterdeck Technical Note
-
- Patching QEMM-386 5.10 and 5.11 to allow Windows
- 3.00A (date 10-31-90) to run in standard mode
-
- Background: Windows 3, in both its standard and
- enhanced modes, puts the machine into protected
- mode without using the VCPI (Virtual Control
- Program Interface) specification, which is intended
- to allow applications to go into protected mode
- when a protected-mode memory manager is already
- present. Normally this would make it impossible to
- run Windows standard and enhanced modes with QEMM-
- 386 active. Microsoft and Quarterdeck have
- collaborated on an enhanced-mode solution that
- allows a peaceful transfer of expanded memory
- management duties from QEMM-386 to Windows enhanced
- mode and back again. However, this solution makes
- use of a Windows interface that exists only for
- enhanced mode, not for standard mode. In order to
- extend its support for Windows 3.00 so that
- standard mode can be run under QEMM-386's
- management as well as real and enhanced mode, QEMM-
- 386 patches the Windows file DOSX.EXE in memory to
- make Windows in standard mode behave like a VCPI
- client. This solution works well for the version
- of Windows in existence at the time of the release
- of QEMM-386 version 5.10 and 5.11. But the method
- of patching that QEMM-386 5.10 and 5.11 use is
- specific to the first release of Windows (dated 5-1-
- 90); it depends on specific bytes of code being at
- specific offsets in the DOSX.EXE file.
-
- Windows 3.00A (identified on the outside of some
- packages as Windows 3.00 with a series of 4 plus
- signs beneath the version), dated 10-31-90, was
- released almost two months after QEMM-386 5.11.
- Future versions of QEMM-386 will detect Windows
- 3.00A and adjust the QEMM patching method to allow
- for the differences between Windows versions.
- However, QEMM-386 5.10 and 5.11, in the versions
- that are shipped, will detect that the version of
- DOSX.EXE is not the one that QEMM-386 is familiar
- with, and will tell Windows standard mode not to
- start up, to prevent an exception error from the
- 386 processor. The symptom is that Windows puts up
- its first graphics screen, then returns the system
- to the DOS prompt, which appears on top of the
- Windows 3.0 logo. The video card remains in
- graphics mode.
-
- Quarterdeck customers who contact us about this
- problem can receive a new QEMM-386 disk that
- addresses the problem - when a new version of QEMM-
- 386 is released. In the meantime, QEMM-386 can be
- patched to make it compatible with the new Windows
- standard mode program. It is important to note
- that the following patch, while making QEMM-386
- compatible with the 10-31-90 Windows standard mode
- program, also makes QEMM-386 incompatible with the
- original 5-1-90 Windows standard mode program.
- Keep a separate copy of QEMM386.SYS available for
- each Windows version if you think you might be
- using both versions of Windows.
-
- The following procedure is intended to prevent
- Windows 3.00A returning the machine to the DOS
- prompt shortly after starting Windows in standard
- mode.
- -------------------------------------------------
-
- 1) Make a copy of the QEMM386.SYS file in your
- QEMM directory. We are about to alter your current
- copy of QEMM386.SYS; the copy you make will serve
- as a backup in case this operation fails.
-
- COPY C:\QEMM\QEMM386.SYS C:\QEMM\QEMMOLD.SYS
-
- (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 and
- type:
-
- DEBUG C:\QEMM\QEMM386.SYS
-
- (If your QEMM386.SYS is not located in the QEMM
- directory of the C: drive, change the path
- accordingly.)
-
- Hit the Enter key; you should the the DEBUG
- prompt, which is a hyphen.
-
- 3) At the DEBUG prompt, type:
-
- S 100 L F000 B5 19
-
- Hit the Enter key; DEBUG should return two
- segment addresses and offsets:
-
- xxxx:yyyy
- xxxx:zzzz
-
- (Both xxxx figures should be the same number.)
-
- 4) At the DEBUG prompt again, use the segment
- addresses and offsets that were just returned to
- give the DEBUG commands, one at a time:
-
- E xxxx:yyyy D5
- E xxxx:zzzz D5
-
- The addresses that DEBUG returned in step 3
- should be used in place of the addresses xxxx:yyyy
- and xxxx:zzzz, which we use as examples. Hit the
- Enter key after each command; the DEBUG prompt
- should return in a moment.
-
- 5) At the DEBUG prompt, type:
-
- S 100 L F000 CO 28
-
- Hit the Enter key; DEBUG should return a
- segment address and an offset:
-
- xxxx:yyyy
-
- 6) At the DEBUG prompt again, use the segment
- address and offset that was just returned to give
- the DEBUG command:
-
- E xxxx:yyyy 20 29
-
- The address that DEBUG returned in step 5 should
- be used in place of the address xxxx:yyyy, which we
- use as an example. Hit the Enter key; the DEBUG
- prompt should return in a moment.
-
- 7) At the DEBUG prompt, type:
-
- S 100 L F000 C8 1A
-
- Hit the Enter key; DEBUG should return a
- segment address and an offset:
-
- xxxx:yyyy
-
- 8) At the DEBUG prompt again, use the segment
- address and offset that was just returned to give
- the DEBUG command:
-
- E xxxx:yyyy E8
-
- The address that DEBUG returned in step 7 should
- be used in place of the address xxxx:yyyy, which we
- use as an example. Hit the Enter key; the DEBUG
- prompt should return in a moment.
-
- 9) At the DEBUG prompt, type
-
- W
-
- Hit the Enter key; DEBUG will announce that it is
- writing a certain number of bytes, then it will
- return the DEBUG prompt.
-
- 10) At the DEBUG prompt, type
-
- Q
-
- ***END OF FILE***
-