Date:         Mon, 5 Oct 92 11:20:12 EDT
From:         "Paul J. Bodin" <pjb3@CUNIXB.CC.COLUMBIA.EDU>
Subject:      Re: Memory management question
Comments: To: Nota Bene List <NOTABENE%TAUNIVM@CUVMB.CC.COLUMBIA.EDU>
Newsgroups: bit.listserv.notabene

Jerome T. Walsh writes:

> being prehistoric, I run a 286-clone (Gateway 2000 flavor, if it helps),
> with 2M of RAM.  I load MS-DOS 5.0 high.  According to the MSDOS manual,
> I might be able to load device drivers and even some programs high (i.e.
> into the UMBs) as well, but nothing seems to work.  I suspect I need an
> unspecified memory manager to accomplish this on my system.  (Yes, I do
> have HIMEM.SYS loaded, and dos=high,umb in my CONFIG.SYS, and they both
> precede my devicehigh commands, which have no effect.)

In addition to what Michael Shalev and Odeda Zlotnick have written, I
think we once again need a clarification about memory types.  There
are basically two types of memory outside the 640K area that DOS can
use: expanded memory (EMS) and extended memory (sometimes in the form
of XMS memory).  Extended memory is memory addressed above 1 meg
(1024K) and may be added at will to machines with a 286 or better
processor.  The address of this type of memory is fixed--it must be
used where it is.  With the appropriate XMS driver, the first 64K of
this extended memory may be used as the HMA (High Memory Area) because
of an anomaly of the internal addressing logic of the 80286 chip
architecture--it is into this HMA that DOS puts most of its code and
its buffers when you use HIMEM.SYS and DOS=HIGH.  This memory is not
available on 8086/8088 computers (the original PC, XT and clones).

Expanded memory (EMS) is memory that is physically located outside the
1 meg DOS address space, but that can have its address temporarily
changed to make it look as if it were inside that space (this is
called "mapping").  This mapping must be done by a memory management
driver (the program usually has "EMM" somewhere in the name) like
QEMM386, 386MAX, EMM386.EXE, REMM.SYS, CEMM.SYS, etc., using special
hardware registers to keep track of the correspondence between
physical location and temporary logical location.  These registers are
available on LIM/EMS memory boards, certain chipsets for 286
motherboards (like the well known Chips and Technologies NEAT
chipset), or as part of an 80386 or better CPU chip.  This mapped
memory is what you use as expanded memory for some programs (like the
MX=10 speller trick for NB), and as memory for Upper Memory Blocks
used by LOADHIGH, DEVICEHIGH and other such programs.  You must have
this kind of memory before DOS=UMB will be effective.  If you don't
have this special memory you can use the command, but it won't do any
good.

To summarize, in order to use DOS=HIGH,UMB you must have both EMS and
XMS memory available.  That means you must not only have the required
hardware for both kinds of memory, but you must also be using the
equivalents of DOS' own HIMEM.SYS and EMM386.EXE.

___________________________________________________________________________
Paul J. Bodin                         Internet: pjb3@cunixb.cc.columbia.edu
Union Theological Seminary               smail: 435-52nd Street
(718) 439-3549                                  Brooklyn, NY 11220
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU