I have tried many ways to maximize the conventional memory. The
following resulted in the most attainable.
Even MAX386 was not able to free that much on my computer!
The only thing strange is that I stumbled on this by coincidence. If
you look in my CONFIG.SYS file I have the line:
DEVICE=C:\WINDOWS\EMM386.EXE NOEMS D=64 M9
But you are not supposed to have NOEMS and M9 together since one says
no frame (NOEMS) and the other (M9) says use the upper area for frame.
hmmmm...
1. Is there anything wrong with this ???
2. If not then why does one need a memory manager like QEMM or
386MAX ???????????
here are the details:
----------------------
Total upper memory which I have sums to 327440 bytes!!!
as can be seen from what MEM/C prints on my computer:
Conventional Memory :
Name Size in Decimal Size in Hex
------------- --------------------- -------------
MSDOS 16368 ( 16.0K) 3FF0
HIMEM 1072 ( 1.0K) 430
EMM386 3232 ( 3.2K) CA0
COMMAND 2688 ( 2.6K) A80
FREE 631792 (617.0K) 9A3F0
Total FREE : 631792 (617.0K)
Upper Memory :
Name Size in Decimal Size in Hex
------------- --------------------- -------------
SYSTEM 167472 (163.5K) 28E30
RAMBIOS 33376 ( 32.6K) 8260
MA13B 6416 ( 6.3K) 1910
TSLCDR 10400 ( 10.2K) 28A0
RAMDRIVE 1184 ( 1.2K) 4A0
NAV& 7824 ( 7.6K) 1E90
PCMOUSE2 11936 ( 11.7K) 2EA0
MSCDEX 36208 ( 35.4K) 8D70
SMARTDRV 28304 ( 27.6K) 6E90
SMARTCAN 10144 ( 9.9K) 27A0
DOSKEY 4128 ( 4.0K) 1020
FREE 64 ( 0.1K) 40
FREE 9984 ( 9.8K) 2700
Total FREE : 10048 ( 9.8K)
Total bytes available to programs (Conventional+Upper) : 641840 (626.8K)
Largest executable program size : 631600 (616.8K)
Largest available upper memory block : 9984 ( 9.8K)
7602176 bytes total contiguous extended memory
0 bytes available contiguous extended memory
4071424 bytes available XMS memory
MS-DOS resident in High Memory Area
655360 bytes total conventional memory
655360 bytes available to MS-DOS
631600 largest executable program size
7602176 bytes total contiguous extended memory
0 bytes available contiguous extended memory
4071424 bytes available XMS memory
MS-DOS resident in High Memory Area
As you can see the Upper Memory is crowded with TSRs and device
drivers and I have 9.8k still available there. The Conventional Memory
holds only the minimum thus providing 631600 bytes free !!
The following is the CONFIG.SYS file I use:
Lastdrive=E
DEVICE=C:\WINDOWS\HIMEM.SYS
DEVICE=C:\WINDOWS\EMM386.EXE NOEMS D=64 M9
DEVICEHIGH C:\MACH32\RAMBIOS.SYS
Devicehigh C:\TSCSI\MA13B.SYS
Devicehigh C:\TSCSI\TSLCDR.SYS /d:TSLCD
DEVICEHIGH C:\WINDOWS\RAMDRIVE.SYS 1024 /E
DEVICEHIGH c:\ndw\NAV&.SYS /b
DOS=HIGH,UMB
FILES=48
BUFFERS=10
STACKS=9,256
And this is the AUTOEXEC.BAT file:
LOADHIGH C:\TSCSI\MSCDEX /d:TSLCD /m:10 /v
C:\WINDOWS\SMARTDRV.EXE
LOADHIGH C:\PCMOUSE\PCMOUSE2/A5
c:\ndw\smartcan /on
c:\ndw\image
LOADHIGH C:\DOS\DOSKEY
PROMPT $p$g
PATH C:\WINDOWS;C:\DOS;C:\NDW;C:\PCMOUSE;C:\MACH32;C:\SFX;c:\tscsi
COPY C:\COMMAND.COM D:
MKDIR D:\VIRTUAL
SET COMSPEC=D:\COMMAND.COM
SET TEMP=D:\VIRTUAL
SET ATI_SND=C:\SFX\
-- Michael
It all depends. If, like you, you can get all device drivers and TSRs
you need loaded into UMBs with EMM386, then fine.
If, however, you can't get everything you want into UMBs with EMM386,
then there are some circumstances where 386MAX or QEMM can do better.
This is particularly true if you (say) are on a Token-Ring network, so
you have lost valuable upper memory to your NIC ROM/RAM, and you have
enormous network TSRs. If you have a PS/2 you lose another 64K to the
extra system ROM. And so on. 386MAX and QEMM help here.
I have looked at both 386MAX and QEMM.
They are both better than EMM386, but in different ways.
Both perform at their best only when stressed: i.e. when given more to
load high than EMM386 could have done anyway. If you have so little to
load high that EMM386 could have done it anyway, then neither product is
likely to reveal its extra potential. For instance, QEMM does not
automatically turn on Stealth unless it fails to achieve a complete load
high without Stealth. 386MAX does not attempt a re-ordering unless it
fails to achieve a complete load high first time.
Here's a brief reaction to the products:
BOTH:
BOTH have an automatic optimisation program. DOS 5/EMM386 does not.
(MSDOS 6 has one of these too, haven't tried it yet.)
Believe me, once you have a certain amount of stuff to load high, you
NEED an automatic optimiser, because the criteria for optimal
organisation of UMB memory are much more obscure than the tyro would
imagine. Only an automatic program can, for instance, determine the
workspace required by a device driver during initialisation which is
subsequently not needed, but has to be there at load time.
BOTH can use the EMS frame as temporary RAM at load-time for device
drivers and TSRs.
BOTH have pooled EMS and XMS memory.
BOTH support VCPI extenders.
BOTH (as of recently) support DPMI extenders.
386MAX:
This product does better at providing UMB space than EMM386 on Compaq
and (for the BlueMax variant) IBM PS/2 machines, by replacing the system
BIOS with a squeezed version, eliminating all the POST and ABIOS code.
It's very effective on a PS/2 Model 55, saving over 64K (i.e. reducing
the BIOS to below 64k in size from 128k), less so on a Model 56, because
the squeezed BIOS is still slightly larger than 64K.
386MAX requires a squeezed BIOS specific to each machine type, and this
can be tedious with very new models.
386MAX, on MCA machines, will attempt a system reconfiguration to move
option card ROM and RAM so as to maximise contiguous UMB space.
QEMM386:
This product does better at providing UMB space than EMM386 on any
machine, when its Stealth feature is activated. This feature maps out
all ROM BIOS (both system and adapter card) and hooks all interrupts
linked into ROM so as to map in the BIOS for the duration of the
interrupt call only. Debugging and tuning Stealth is not for the
faint-hearted. There are many circumstances when Stealth can go wrong,
and not all of them are under the user's control. For instance, I have
never got QEMM386 to work reliably in Stealth Mapping mode on a PS/2
Model 56, and I can only assume that this is because the IBM BIOS makes
inter-segment calls or jumps in the new SCSI code in the system BIOS.
By the time I had Stealth Mapping mode working with specific exclusions,
I found that I got a better return from Frame mode.
QEMM386 with Stealth generally outperforms 386MAX in the provision of
UMB memory. But there is a performance penalty for doing all the
mapping and remapping on every interrupt call. This turns out not to be
very significant on a networked machine, where there isn't very much
activity in the local BIOS.
QEMM with Stealth has niggling instabilities which cause it to crash
from time to time when running Windows or other DOS extended technology
(such as whatever extender the Lahey Fortran uses). This seems to be
worst on Remote IPL'd machines - I can crash a RIPLd machine
consistently when an equivalently configured locally booted machine is
quite stable.
The QEMM VIDRAM utility can expand the 640k base memory to 704k on color
VGA machines for text-mode only applications.
BOTH PRODUCTS have useful features that the other one lacks.
The ideal product would be a combination of both.
BOTH PRODUCTS, for the truly best performance, require the user to sweat
a little. For instance, the user must be prepared to reconfigure option
cards to move their ROM and RAM segments to an optimal position
(generally, as low as possible above video memory).
I have even gone so far as to edit the IBM Reference Diskette so as to
permit ROM and RAM placements for Token-Ring cards at C000, which IBM
lock out. This reduces the fragmentation of the UMB area, and enables
me to load high the whole of IBM DOS LAN Requester!
Finally, another way to solve these problems is to use OS/2 v2.x instead
of DOS. OS/2 puts all the device drivers and network programs into
protected mode memory, so a DOS box under OS/2 is free of all clutter
and runs with an even larger DOS base memory than any UMB optimiser can
realistically achieve. OS/2 also permits you to load high TSRs into
UMBs. One thing OS/2 cannot do is run a VCPI-extended DOS application.
DPMI is OK.
--
Robin Walker Queens' College, Cambridge, CB3 9ET, GB
Internet: rd...@cus.cam.ac.uk Tel: +44 223 335528 Fax: +44 223 335522
You forgot to mention the ability to pool EMS and XMS memory with memory configurations
greater than 16MB. This can allow the use of disk caches and ram disks without robbing
memory from windows.
The other feature you didn't mention (at least I don't remember it) is that the size
of QEMM/386MAX is smaller that both EMM386 and HIMEM both loaded.
--
Mike Mattix
Agricultural Group of Monsanto
P.O. Box 174
Luling, LA 70070
INTERNET Address: dmm...@bigez.monsanto.com