From: Mark.Kraml@f250.n514.z17.fidonet.ftn (Mark Kraml)
Newsgroups: alt.msdos.programmer
Subject: QEMM/386
Date: 12 Nov 92 02:45:28 GMT

Hello Jeff!

Monday November 09 1992, Jeff Silverman writes to All:

 JS> From: silverm@bcstec.ca.boeing.com (Jeff Silverman)
 JS> Newsgroups: alt.msdos.programmer
 JS> Subject: QEMM/386
 JS> Organization: Boeing Computer Services, Seattle
 JS> @Message-ID: <4141@bcstec.ca.boeing.com>
 JS> Date: 9 Nov 92 05:44:05 GMT


 JS> I am a VAX/VMS guru in the process of becoming an MS-DOS guru.  If these
 JS> questions sound naive, it is because I am coming at these from a strange
 JS> perspective.

i hope they pay you plenty. :)

 JS> In the VAX/VMS operating system, programs execute in their own virtual
 JS> address space, which gets mapped on a page by page basis into physical
 JS> memory.  2 VMS programs can be running at the same virtual address yet
 JS> address different pages of physical memory, because the mapping is done
on
 JS> a per-process basis and the OS handles all that transparently.  The
 JS> programmer sees 1, big pool of RAM.

nice. one day bill gates will hear about this.

 JS> What does QEMM/386 do, from a programmers point of view?  It appears to
 JS> move things around in both physical and virtual memory.  How is this
 JS> possible? If something, say, a TSR, is moved out of low memory and into
 JS> either High Memory (By high memory, I mean the region between 640K and 1
 JS> Mbyte) or extended memory, how does it keep working?

the program is loaded at the high address. all the power of the 386 VM and
memory page mapping hardware, that has been around for years now,is still used
to ..... wait..... put a piece of ram up high so a program can load into it.

 JS>   All of the
 JS> destinations for jump instructions would change.  Or does the 80386 have
 JS> additional memory relocation? How does QuarterDeck's OPTIMIZE program
 JS> work?

i only calculates the sizes of the TSR that load and them tries to fit them
into the holes above 640k. what does not fit get loaded low. you must reboot
the computer to install all these TSR at their new high addresses.

 JS>  Please don't say it works well, I KNOW it works well, I've been
 JS> playing with it, I can see that it works, but don't know what it's doing
 JS> or how it does it.

it works good. <big brin>

 JS>   Well, I do know what its doing, it's modifying
 JS> CONFIG.SYS to free up more RAM in the lower 640K region.

thats the picture.

 JS>  Why does DOS have
 JS> a 640Kbyte limit?

because dos is compatible down to the 8088 processor. and with so many systems
out there the programs are all getting written for these machines. now with
windows NT and OS/2 comming around the bend more and more programs will get
written for the larger address space models.

 JS>  Why would anybody ever want to use expanded RAM if
 JS> extended RAM is available?

because the 8088 based systems can only use expanded ram.

 JS>  If I have a "C" program which runs properly
 JS> under VMS, but needs, say, 3 Mbytes of RAM to store all its data
 JS> structures, what is the best way to run it under DOS?  Under Windows?

under VMS.

just kidding. if you run on a 386 or the like you can compile your program
with 1 of many DOS extenders. Phar-Lap is such a product. they will permit you
to run a 32bit application with lots of ram and still be compatible with DOS.

running under windows is also good. if DOS support is important then i can
recommend OS/2. it will run DOS programs. and will let you run large 32 bit
programs.

Mark