[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