Notes on Windows 3.0 and High Memory
************************************

As you may have discovered, the standard and 386 enhanced modes of
Windows 3.0 are incompatible with 386 control programs like QEMM
and 386-to-the-Max, and like Windows/386 2.1 before it, the latest
release of Windows provides no "high memory" features.  While this
absence makes little difference to Windows applications, it does
affect the maximum size of any DOS windows opened under the 386
enhanced mode of Windows 3.0.
 
On many 386 machines, however, it is possible to endow a Windows 3.0
environment with high memory by loading either Quarterdeck's QRAM or
Quantilas' Move'em AFTER Microsoft's HIMEM driver.  Designed as memory
enhancement products for 286 machines, these control programs do not
attempt to access protected mode in any manner that conflicts with
either Windows 3.0 (or Windows/386 2.1 for that matter).  The
conventional memory one saves by loading device drivers and TSRs into
high memory, while insignificant as far as Windows is concerned, 
can be of critical significance when attempting to run standard DOS
applications in Windows 3.0's enhanced 386 mode.

The following are the contents of typical config and autoexec files,
with and without the high memory produced by Move'em (the syntax is
somewhat different for QRAM, but the results are similiar):

Without high memory
*******************

STACKS=0,0
FILES=30
BUFFERS=3
DEVICE=C:\HIMEM.SYS
DEVICE=C:\WINDOWS\SMARTDRV.SYS 2048 512 
DEVICE=C:\WINDOWS\RAMDRIVE.SYS 1024 /E
DEVICE=C:\DOS\ANSI.SYS
DEVICE=C:\DOS\MOUSE.SYS
INSTALL=C:\DOS\SHARE.EXE
SHELL=C:\COMMAND.COM /P /E:256

CLS
SET TEMP=E:\
PATH C:\;C:\DOS;C:\WINDOWS
PROMPT $P$ 
C:\DOS\DOSKEY.COM
C:\DOS\MODE.EXE LPT1:,,P
C:\DOS\MODE.EXE COM1: 9600,N,8,1
C:\DOS\MODE.EXE COM2: 9600,N,8,1
CLS


With high memory
****************

STACKS=0,0
FILES=30
BUFFERS=3
DEVICE=C:\HIMEM.SYS
DEVICE=C:\MOVE'EM.MGR EXCLUDE=E000-EFFF      
DEVICE=C:\DOS\MOVE'EM.SYS PROG=C:\WINDOWS\SMARTDRV.SYS 2048 512 
DEVICE=C:\DOS\MOVE'EM.SYS PROG=C:\WINDOWS\RAMDRIVE.SYS 1024 /E
DEVICE=C:\DOS\MOVE'EM.SYS PROG=C:\DOS\ANSI.SYS
DEVICE=C:\DOS\MOVE'EM.SYS PROG=C:\DOS\MOUSE.SYS
SHELL=C:\COMMAND.COM /P /E:256

CLS
SET TEMP=E:\
PATH C:\;C:\DOS;C:\WINDOWS
PROMPT $P$ 
C:\DOS\MOVE'EM.COM PROG=C:\DOS\MODE.EXE LPT1:,,P
C:\DOS\MOVE'EM.COM PROG=C:\DOS\DOSKEY.COM                  
C:\DOS\MOVE'EM.COM PROG=C:\DOS\SHARE.EXE
C:\DOS\MODE.EXE COM1: 9600,N,8,1
C:\DOS\MODE.EXE COM2: 9600,N,8,1
CLS

(The 64K area from E000 to EFFF excluded on the Move'em load statement
above leaves a page frame for Windows 3.0's own internal EMM manager,
and a pointer to that area can be added to the system.ini file.)

In this example, on a 386 with 4 MB of memory and a VGA1024 card,
running under DOS 4.01, Move'em produces 96Kb of non-conflictual high
memory, where some 40Kb worth of device drivers and TSRs are loaded, 
thus relieving the drain on conventional memory by just that much.  
Without any high memory, the maximum executable program size under
DOS is 535Kb, while in a DOS window under Windows 3.0, you are left
with 522Kb; the same setup with high memory, leaves a maximum
executable program size of 579Kb under DOS, and 558Kb for a DOS
window under Windows 3.0.  The 36Kb saved can make all the difference
between running an application inside Windows 3.0, and having to
exit the environment altogether.

Note that when loaded in high memory some device drivers and TSRs 
conflict with the environment Windows 3.0 attempts to create (the 
files.com utility packaged with QRAM, for example), so a trial-and-
error approach is necessary.  But even if the only device driver or
TSR you find you can load in high memory is Smartdriv, you'll
still have relieved your conventional memory drain by 20Kb.

Ashley Saldanha
72677,2370