iain@batserver.cs.uq.oz.au (Iain Fogg) (04/12/90)
I recently downloaded EMS40V11.ARC from SIMTEL-20. My old EMS driver was version 3.4 and 4DOS complains a bit with that loaded. I have installed the new driver and the 4DOS problem has disappeared, but I am a bit confused about a couple of things. I hope someone can help. BTW I have a 386 clone with 4M of RAM - 3M extended. When the EMS driver is installed it displays the following message on the screen: EMS 4.0 Simulator, Ver. 1.1 (C) 1989 Ziff Communications PC Magazine + Douglas Boling The documentation I have says that if no parameter is given to the driven at startup, 384K will be used as a default. This suggests to me that if the driver is installed with no parameters, the 384K of memory above the 640K waterline will become expanded memory. Does this make sense - isn't the video buffer located in this part of memory? Also, what happens when the ROM BIOS is relocated to RAM - where is it typically relocated to. Again if its somewhere above the 640K mark, and I've installed the EMS driver with no parameters, won't I have big problems? I actually install the driver with 3072 as a parameter, hoping that this tells the driver I have 3M of extended memory. In other words, (I think) I want to tell the driver to start expanded memory at the 1M mark and go from there. Any advice on the installation of EMS drivers would be most welcome, in particular the driver I've mentioned above. On a related point, my old version 3.4 driver is ~10K bigger that the new version 4.0 job (i.e. length of .SYS file), but the new driver uses ~50K more low memory that the old one. I think the old driver used memory above 640K as a frame buffer for EMS memory. I can only guess that this new driver is using memory below 640K. Does this sound reasonable? This is fairly concerning because 50K of low memory is quite a slab. Again, advice/comments welcome. Iain. PS. If you require any more detailed information to answer my questions please email to: iain@batserver.cs.uq.oz.au
cs4g6ag@maccs.dcss.mcmaster.ca (Stephen M. Dunn) (04/13/90)
In article <3238@moondance.cs.uq.oz.au> iain@batserver.cs.uq.oz.au writes:
$BTW I have a 386 clone with 4M of RAM - 3M extended.
So the 3M starts at the 1M mark, and the other 384K is probably used
for ROM BIOS and video BIOS shadowing.
$ EMS 4.0 Simulator, Ver. 1.1 (C) 1989 Ziff Communications
$ PC Magazine + Douglas Boling
Unless this has been made aware of the 386 (and I don't know if it
has or not), this is not a good choice. If it is not 386-aware, then
it performs its task by copying chunks of memory from extended into
conventional (i.e. SLOW and eats up 64K of your main memory) and it
will return to real mode via a CPU reset (yech! SLOW!). Of course, if
it does recognize a 386, that's no problem.
$The documentation I have says that if no parameter is given to the
$driven at startup, 384K will be used as a default. This suggests to me
$that if the driver is installed with no parameters, the 384K of memory
$above the 640K waterline will become expanded memory. Does this make
$sense - isn't the video buffer located in this part of memory? Also,
This is likely not correct for three reasons:
1. Your other 384K is probably being used for shadowing of ROMs, so the
384k it mentions will be from the upper 3M
2. Most boards, if they don't do shadowing, don't map any of the memory
into the 640K-1M region; instead, you'd have 3M + 384k starting at
the 1M boundary. The fact that you only have 3M there suggests to
me that the rest is being used for shadowing.
3. Extended memory is usually allocated from the top of memory downwards,
so it would take the last 384k of extended memory. This is because
the only support for extended memory in the original AT is a word that
says how much there is ... so programs will take the highest chunk
they can find and then change this word so that other programs which
come along later will think there's less than there is.
The video buffer is located in that region ... addresses A0000 through
BFFFF are reserved for video RAM. Also, ROM BIOS and BIOS extensions
such as those found in video cards go in the upper 256k of memory, as do
network adapters and anything else that needs to have some of its
on-board memory mapped into the memory address space.
$what happens when the ROM BIOS is relocated to RAM - where is it
$typically relocated to. Again if its somewhere above the 640K mark, and
$I've installed the EMS driver with no parameters, won't I have big
$problems?
I would imagine that the ROM BIOS is copied to RAM at the same location
the BIOS used to be at. This is by far the simplest solution, since it
avoids problems such as having to relocate the code as you move it (and
try doing that with binary code!)
$On a related point, my old version 3.4 driver is ~10K bigger that the
$new version 4.0 job (i.e. length of .SYS file), but the new driver uses
$~50K more low memory that the old one. I think the old driver used
$memory above 640K as a frame buffer for EMS memory. I can only guess
$that this new driver is using memory below 640K. Does this sound
$reasonable? This is fairly concerning because 50K of low memory is quite
$a slab. Again, advice/comments welcome.
Yes, this is in fact what is happening. This driver must not be
aware that it's running on a 386. The 386's built-in memory management
unit can map 4k pages of memory from anywhere in the address space to
any other place - which means that it can map selected 16k EMS pages
from anywhere in the extended address space into gaps in high memory,
exactly emulating hardware EMS. EMS40, however, assumes it's running
on a 286, which can't do this, so it eats about 70k of low memory, which
includes 64k that's used as the page frame, and it copies stuff back
and forth between the actual location in extended memory and the
apparent location in low memory. This is the only way to do it in
software on a 286, but is exceptionally inefficient given what the 386
is capable of. I'd strongly advise you to ditch this driver and buy
one of the commercial drivers for the 386 (they aren't very expensive)
that does a much better job.
--
More half-baked ideas from the oven of:
****************************************************************************
Stephen M. Dunn cs4g6ag@maccs.dcss.mcmaster.ca
<std_disclaimer.h> = "\nI'm only an undergraduate ... for now!\n";
phil@pepsi.amd.com (Phil Ngai) (04/14/90)
In article <26255292.20756@maccs.dcss.mcmaster.ca> cs4g6ag@maccs.dcss.mcmaster.ca (Stephen M. Dunn) writes: |$ EMS 4.0 Simulator, Ver. 1.1 (C) 1989 Ziff Communications ^^^^^^^^^ Note this word well! This driver is worth every penny you paid for it on a 286, but less on a 386. It is a perfect example of how worthless the damn EMS 4.0 spec is. -- Phil Ngai, phil@amd.com {uunet,decwrl,ucbvax}!amdcad!phil The War on Drugs is the modern day Inquisition.
hd7x@vax5.cit.cornell.edu (04/14/90)
In article <3238@moondance.cs.uq.oz.au>, iain@batserver.cs.uq.oz.au (Iain Fogg) writes: > I recently downloaded EMS40V11.ARC from SIMTEL-20. My old EMS driver was > version 3.4 and 4DOS complains a bit with that loaded. I have installed > the new driver and the 4DOS problem has disappeared, but I am a bit > confused about a couple of things. I hope someone can help. > > BTW I have a 386 clone with 4M of RAM - 3M extended. > > When the EMS driver is installed it displays the following message on > the screen: > > EMS 4.0 Simulator, Ver. 1.1 (C) 1989 Ziff Communications > PC Magazine + Douglas Boling > [rest of story deleted] Well, first of all, if you have a 386, you shouldn't be using PC Mag's EMS simulator, since that was designed to work on 286 machines and won't take advantage of the features of the 386. So yes, you are wasting memory - you should get Qualitas' 386 to the Max, or Quarterdeck's QEMM-386. The 384K is already above the 1MB boundary, so you don't have to worry about that. -Sanjay Aiyagari (HD7X@vax5.cit.cornell.edu)
akm@spencer.cs.uoregon.edu (Anant Kartik Mithal) (04/14/90)
In article <3876.2625f50e@vax5.cit.cornell.edu> hd7x@vax5.cit.cornell.edu writes: >Well, first of all, if you have a 386, you shouldn't be using PC Mag's EMS >simulator, since that was designed to work on 286 machines and won't take >advantage of the features of the 386. So yes, you are wasting memory - you >should get Qualitas' 386 to the Max, or Quarterdeck's QEMM-386. > >The 384K is already above the 1MB boundary, so you don't have to worry about >that. Not so. If it is shadow RAM, then it is below 1MB. Many bioses set the memory between 640 K and 1MB to shadow if the computer has more than 2 MB, so the original poster was right to be concerned. kartik ----------------------------------------------------------------------------- Anant Kartik Mithal akm@cs.uoregon.edu Department of Computer Science akm@oregon.BITNET University of Oregon