🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.ibm.pc
Article #8225

Re: Why is VGA ROM duplicated at C000:0 & E000:0 (QEMM related)

#8225
From: Charles Marslett
Date: Thu, 07 Dec 1989 15:16
51 lines
3010 bytes
In article <4086@mhres.mh.nl>, hst@mh_co2.mh.nl (Klaas Hemstra) writes:
> I have a question concerning the VGA ROM BIOS.
> 
> On the two different systems I was able to check this ROM BIOS was located at
> address C000:0000   AND (!!!) AT E000:0000.
> (Systems: A Compaq 386s with Compaq VGA and a Paradise VGA card on an AT comp.)
> 
> Of course I don't care how VGA uses my memory map, as long as it works, but
> this duplicated memory usage causes a problem running QEMM (386).

The situation is caused by certain (not so neat) BIOS shadowing techniques, used
by Compaq and several other box vendors to avoid problems with paged BIOS ROMs.
I know of no popular boards for AT-bus systems that really use paged ROMs, so
I dislike the technique (I think it overkill), but it allows the code to be
executed at E000:0000-7FFF and the tables to be paged in at C000:0000-7FFF if
the code is written to handle that -- I had to modify my BIOS to access the
tables at C000:0000-7FFF even if relocated because of software packages that
check vectors for VGA/EGA presence (another bad coding practice).

If you disable the BIOS cache or BIOS shadowing function in your system setup
(most allow this, and I think Compaq does), then the E000 copy of the BIOS
should disappear.


> So I told QEMM to include the memory from C000:000 - C600:0000.
> At first this seamed to work fine but later I discovered that some VGA
> graphic modes did not work. Of course because there ROM BIOS was gone ?!
> After some experimenting I was able to include C300:0000 - C600:0000, but
> I'm still not sure about all VGA modes (haven't tested most of them).

Our VGAs (with BIOSes written before the middle of this year) would have
worked fine in this situation (though the software package, whose name I can-
not remember right now, would not recognize your system as having a VGA in it).
As I mentioned above, this is because most VGA BIOSes reference the tables
at C000 with absolute segment references (rather than based on the BIOS CS
register like I did).

> Biggest questions: Why does VGA duplicates it's BIOS,
> 		   Is it always the case ?
> 		   Can it be disabled ?

It doesn't, all systems don't do it the same way, and mostly it can be
disabled with the setup program in the system ROM or on the setup diskette
that (hopefully) came with the system.

> Thanks for your attention,
> 					Klaas Hemstra

Charles Marslett
STB Systems, Inc <-- apply all standard disclaimers
chasm@attctc.dallas.tx.us
Technical Details
Message-ID: <10515@attctc.Dallas.TX.US>
Path: arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!sun-barr!newstop!texsun!pollux!attctc!chasm
References: <4086@mhres.mh.nl>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!sun-barr!newstop!texsun!pollux!attctc!chasm
From: chasm@attctc.Dallas.TX.US (Charles Marslett)
Newsgroups: comp.sys.ibm.pc
Subject: Re: Why is VGA ROM duplicated at C000:0 & E000:0 (QEMM related)
Summary: Compaq did it, not the VGA
Message-ID: <10515@attctc.Dallas.TX.US>
Date: 7 Dec 89 15:16:04 GMT
References: <4086@mhres.mh.nl>
Organization: The Unix(R) Connection, Dallas, Texas
Lines: 51