From: Kevin Cummings (cummings@hammer.prime.com)
Date: 03/29/93


From: cummings@hammer.prime.com (Kevin Cummings)
Subject: Re: How to switch back to VGA-text from SVGA-text mode???
Date: Mon, 29 Mar 1993 20:50:02 GMT

In article <1993Mar26.165234.19263@aio.jsc.nasa.gov>, mancus@sweetpea.jsc.nasa.gov (Keith Mancus) writes:
> In article <1993Mar24.224133.12392@primerd.prime.com>, cummings@hammer.prime.com (Kevin Cummings) writes:
>
> > Since video hardware varies from machine to machine (and card to card)
> > the only "portable" method of doing this is for the system to provide a
> > common interface to the video hardware. This method is currently the INT 14
> > code in your video BIOS. Sadly, OSes like LINUX do not use any of the BIOS
> > code in your machine. Therefore, you need a program to do the work for you.
> > A program that programs your video cards registers directly would work,
> > but probably only on your video card. Cards are not guarenteed to have
> > the same video clocks available (or even the same method of selecting those
> > clocks), nor are they required to have to program certain registers in order
> > to set up various video "modes". That is why some cards support some modes,
> > others don't, and some cards do the same modes in different ways. All of
> > the card dependant stuff is buried in the video BIOS (usually behind
> > the select video mode function or the VESA select video mode function).
>
> Sorry, I don't understand. The basic interface of the cards MUST be
> the same at some level, or the common BIOS couldn't talk to all of them.
> Why can't a Linux program be written that, in effect, acts as the BIOS
> does? I can see that it might have to execute in real mode, which might
> be a problem. Other than that, what is so magic about the BIOS?

It's a "system call" under DOS, but not under LINUX. The code you need to
execute is in the EPROM on your video card, but its been setup for a memory
model that LINUX does not support. Therefore it is useless to LINUX.
(Well, not entirely, I suppose that you could execute it through a VM86
task, but that would require a lot of kernel work, and trap code to catch
and deal with the IO to the video registers. At least that's the way it
was explained to me a year ago when the question first came up.)

-- 
Kevin J. Cummings                       ComputerVision Services
cummings@kjc386.framingham.ma.us        cummings@primerd.Prime.COM