> b8? Anybody know what that one is?
The vgabios itself has a bug in it. The b8 is an invalid INT # and
what has happened is the vgabios code itself has crashed and is executing
randomly. On the EPIA-M I had seen this problem on certain units where if
the motherboard got too hot (but not really that hot) and you reboot, it
would just sit there beeping forever with its onboard noisemaker. This was
with the stock AWARD bios. The problem would go away if I set up a fan to
blow on the motherboard and cool it down.
Under linuxbios the problem would manifest itself where during the vgabios
init code you'd get into an endless loop of invalid INT callbacks. So it
would stop the system from booting.
My "fix" was to only allow certain INT's in the callback and so if an
invalid one happens, we just abort out of the VGA init code. This worked fine
for our purposes, the vgabios had been able to init the hardware enough to
get the system working, and life could go on. Note also when this endless
INT callback thingy happened in linuxbios, if I blasted the fan on the
motherboard to cool it down, that would fix the problem.
I really don't know how a bug in the vgabios could manifest itself only on
certain motherboards and only when they get hot. But it's not impossible.
Note these int21 handler code was required for getting the vgabios working
on the EPIA-M. Whether the thing is a case statement or a table is
irrelevant, the case statement approach allows for endless customization.
The point is the int21 callbacks must be implemented. That's how a black
box like the vgabios can be delivered to VIA without source, yet VIA can
integrate it into their AWARD bios. The INT 21 callbacks like 4F01 are for
the vgabios to query the system to find out how much video ram has been
reserved for the display (I default to 8M), what is the preferred output
device, and other mysterious and poorly documented settings. The documentation
I was going on was the CLE266 BIOS PORTING GUIDE from VIA, an NDA document.
It is cryptic and incomplete (typical). It doesn't cover all of the INT21
callbacks that the vgabios makes use of.
Even if you boot off the AWARD bios, then run the vgabios with the emulator
and make use of the AWARD bios to know what to return for these 4fxx INT21
callbacks, you're still left with the bug in the vgabios itself. I'm satisfied
there is a bug there so I haven't spent any more time trying to improve the
situation.
Long story short I don't know why Ignacio Verona's not getting VGA output
on his EPIA-MII. However there is a reason for all the business in linuxbios
with the unsupport int printing + aborting the vgabios execution and the
code in the epia-m tree that handles the callbacks, so don't start thinking
about ripping it out unless you really know what you're doing.
-Dave