[OpenBIOS] BIOS extensions are pointless (was: More comments...)
Pascal Dornier
pdornier at pcengines.com
Sun Feb 22 06:41:29 CET 1998
From: Benjamin Scott <hawk at ttlc.net>
To: openbios at linkscape.net <openbios at linkscape.net>
Date: Sunday, February 22, 1998 6:03
Subject: Re: [OpenBIOS] BIOS extensions are pointless (was: More
comments...)
> I think it might be better to say that re-implementing things like
>INT13 in protected-mode would be pointless. The few things that modern
>OSes actually do *use* the BIOS for are definate canidates for
>improvement and possible protected-mode reimplementation. However,
>"BIOS32" implies it may be protected-mode already. Anyone know more
>about this?
Yes, 32 bit protected mode. See the PCI BIOS spec.
> While I do agree in theory, memory space limitations may force us to
>link the BIOS together before programming the flash. Which isn't really
>a big deal.
If you own all the sources, you can save yourself the complexity of
linking. I don't even use a object linker, my assembler is fast enough
to assemble the whole BIOS in about 60 ms.
> Actually, to the list in general: Does anyone know exactly *where and
>how* geometry translation occurs? I've been thinking it must occur in
>the motherboard BIOS for onboard EIDE controllers. But we already know
>many OSes bypass the BIOS. I was assuming they were still talking to
>the EIDE controller through the BIOS, just via a different route. Is
>that correct? Or is geometry translation implemented in the EIDE
>controller chipset itself? Or something else?
There are multiple levels of geometry translation. It's a classic
example of Winchester Mystery House software design. Read it and
weep.
1. DOS translates logical block address into Cylinder / Head / Sector
based on BIOS parameters. This is constrained by the 10 bit limit
on cylinder and 6 bit on sector number (and sector numbers start
at 1, which further mucks things up).
2. The BIOS translates this either into another CHS (the drive can
only handle 4 bits for the head number, but 16 bits for the cylinder
number, and 8 bits for the sector). Alternatively, the CHS value
is converted into a logical block address.
3. The drive translates the CHS into a logical block number, then
converts that into the real CHS values (which is not a straight
division as the number of sectors per track varies).
The only right thing to do is put up with this nonsense during boot,
then use LBA mode.
--------------------------------------------------------------------
Pascal Dornier pdornier at pcengines.com http://www.pcengines.com
Your Spec + PC Engines = Custom Embedded PC Hardware
--------------------------------------------------------------------
---
OpenBIOS -- http://www.linkscape.net/openbios/
openbios-request at linkscape.net Body: un/subscribe
Problems? dcinege at psychosis.com
More information about the openbios
mailing list