[comp.sys.ibm.pc] Use of expanded memory on System 2 Model 50

afd@mruxd.UUCP (A Dietz) (07/12/88)

The model 50 has 1M on board, but DOS has access only to 
640K.  How do I get to the other 360K, designated as "expanded
memory"?  I have compiled a program that will not fit into
the useable memory (640K), yet is far less than the 1M available.

A Dietz
Bellcore, Morristown
(ulysses, rutgers, bellcore)!mruxd!afd

psc@lznv.ATT.COM (Paul S. R. Chisholm) (07/15/88)

< "Would you buy a used operating system from these guys?" >

In article <322@mruxd.UUCP>, afd@mruxd.UUCP (A Dietz) writes:
> The model 50 has 1M on board, but DOS has access only to 
> 640K.  How do I get to the other 360K, designated as "expanded
> memory"?

Ambiguous question.  Are you saying, "How do I get the other 360K to
be used as expanded memory?", or "How do I get to the other 360K, which
is currently expanded memory?"

First of all, the top 360K in a 1M 286/386 box is *extended* memory.
DOS has no way of marking what parts of extended memory are allocated,
so this RAM is fairly useless.

Quarterdeck sells an Expanded Memory Manager for PS/2-50 and -60 RAM
boards, which converts *extended* memory into *expanded* memory (Lotus
Intel Microsoft Expanded Memory Specification, or LIM EMS).  There's an
agreement on how DOS applications can allocate and free this kind of
memory, so this is useful.  There are third party libraries that make
EMS use easier.

>           I have compiled a program that will not fit into
> the usable memory (640K), yet is far less than the 1M available.

Well, it is a *micro* computer, isn't it?  The top 360K of the 8086 1M
address space is reserved for various junk.  There's no easy way for
your program to transparently grab memory there.  Yes, I *know* you've
got an 80286, not an 8086, but try telling DOS that.

Solutions:  Buy 2M more RAM and port your application to OS/2 (lots of
luck:-).  Find large arrays and make them smaller.  Look for unused
functions and get rid of them.  Tell your compiler to optimize for
space instead of speed.  Buy a better compiler.  Use EMS memory.  Use a
real operating system (can you say UNIX(R)?  I thought you could.-)

> A Dietz, Bellcore, Morristown, (ulysses, rutgers, bellcore)!mruxd!afd

-Paul S. R. Chisholm, {ihnp4,cbosgd,allegra,rutgers}!mtune!lznv!psc
AT&T Mail !psrchisholm, Internet psc@lznv.att.com
I'm not speaking for my employer, I'm just speaking my mind.
UNIX(R) is a registered trademark of AT&T.

psc@lznv.ATT.COM (Paul S. R. Chisholm) (07/16/88)

< "Would you buy a used operating system from these guys?" >

In article <322@mruxd.UUCP>, afd@mruxd.UUCP (A Dietz) writes:
> The model 50 has 1M on board, but DOS has access only to 
> 640K.  How do I get to the other 360K, designated as "expanded
> memory"?

In article <1407@lznv.ATT.COM>, psc@lznv.ATT.COM (Paul S. R. Chisholm)
(that's me) writes at great length about how unlikely it is that you're
going to be able to use that 360K as conventional memory.  Well, as
part of their Windows/286 (a.k.a. Windows 2.1) product, Microsoft is
distributing a device driver that lets you get an extra 64K of
conventional memory out of your extended (AT style, not LIM EMS)
memory.  This memory can be used by non-Windows applications.  PC Week,
July 11, 1988, p. 34:  "As implemented in Windows, the driver conflicts
with many existing memory management programs, including EMS emulators
and virtual-disk [RAM drive] utilities."

If all you needed was 704K total, and you're not using extended memory
for anything else, you're all set.

> A Dietz, Bellcore, Morristown, (ulysses, rutgers, bellcore)!mruxd!afd

-Paul S. R. Chisholm, {ihnp4,cbosgd,allegra,rutgers}!mtune!lznv!psc
AT&T Mail !psrchisholm, Internet psc@lznv.att.com
I'm not speaking for my employer, I'm just speaking my mind.
UNIX(R) is a registered trademark of AT&T.

Ralf.Brown@B.GP.CS.CMU.EDU (07/16/88)

In article <1410@lznv.ATT.COM>, psc@lznv.ATT.COM (Paul S. R. Chisholm) writes:
}(that's me) writes at great length about how unlikely it is that you're
}going to be able to use that 360K as conventional memory.  Well, as
}part of their Windows/286 (a.k.a. Windows 2.1) product, Microsoft is
}distributing a device driver that lets you get an extra 64K of
}conventional memory out of your extended (AT style, not LIM EMS)
}memory.  This memory can be used by non-Windows applications.  PC Week,
}
}If all you needed was 704K total, and you're not using extended memory
}for anything else, you're all set.

Except that the extra 64K will not be contiguous with the base 640K, thus
making it unusable unless the program is specifically written to take 
advantage of it.  BTW, DESQview has had an equivalent driver for over a year.
The driver works because of a quirk of the 80286 that lets it access almost 
64K more than 1meg in real mode (up to FFFF:FFFF, which would have wrapped
back to 0000:FFEF on an 808[68] machine).

On a PS/2 mod 50 or 60, there is circuitry present to run the extra memory as
either exTENDed or LIM EMS (Quarterdeck's QEMM-50/60 makes it EMS) memory.

--
UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf -=-=-=- Voice: (412) 268-3053 (school)
ARPA: ralf@cs.cmu.edu  BIT: ralf%cs.cmu.edu@CMUCCVMA  FIDO: Ralf Brown 1:129/31
Disclaimer? I     |Ducharm's Axiom:  If you view your problem closely enough
claimed something?|   you will recognize yourself as part of the problem.

mk59200@tut.fi (Kolkka Markku Olavi) (07/18/88)

In article <322@mruxd.UUCP> afd@mruxd.UUCP (A Dietz) writes:
>The model 50 has 1M on board, but DOS has access only to 
>640K.  How do I get to the other 360K, designated as "expanded
>memory"?  I have compiled a program that will not fit into
>the useable memory (640K), yet is far less than the 1M available.
>
>A Dietz
>Bellcore, Morristown
>(ulysses, rutgers, bellcore)!mruxd!afd

Here are two answers to your problem:

1. The hi-tech approach
	Buy 2 or 4 MB of additional memory, a large and fast
	hard disk and OS/2 or Unix.  Now you have virtual
	memory, and you can make programs as large as you like
	(well, almost).

2. The lo-tech solution (ie. use your brains instead of wallet)
	Modify the program to run in 640K memory: use overlays,
	temporary files, optimize your algorithms etc.

The extended memory can be used under Mess-DOS as RAM-disk
or disk cache.  To access it, you must switch the 80286 to
protected mode, copy the stuff you need to the 640K "normal"
area and switch back to real mode.  This isn't trivial at all.

--
	Markku Kolkka		| Tampere University of Technology
	mk59200@tut.fi		| Tampere, Finland
	...!mcvax!tut!mk59200	|