Ummm. let's bring some facts to the discission, Ron claims to have written
BIOS'es but fails to materialize the easy-to-understand explanation anyone
who had, would be able to provide.
You see, Ron, things that you know about are trivialized.. you don't need to
act high and mighty to be able to explain what is the essense of things.
Let's talk about IBM PC compatible BIOS.
The interface to this BIOS is mostly interrupt 0x21, which is used to call
code which resides in the read-only ROM memory in the so-called BIOS. This
code is executed on x86 compatible processor by the x86 compatible
processor, which is not a very hard thing to grasp.. what the BIOS contains,
is x86 compatible binary code, obviously.
This code is instructions to the motherboard and other components the BIOS
supports (such as IDE, SATA, etc. controllers, whatever the MB supports that
is within the scope of the IBM PC compatible BIOS...), this allows the
common feature set to be commanded through standard interface.
This was more relevant years ago, novadays Operating Systems such as
Windows, Linux and others do most of the tasks with device drivers
'natively'-- so the BIOS could be a lot simpler novadays, just pass the
control to the OS bootstrap and let it do the rest. This is much more
efficient, because BIOS is implemented using Real Mode and modern x86 OS
runs in Protected Mode.
Calls to the BIOS have to be done using API such as DPMI, which is not very
efficient. It is far more efficient to do the I/O directly from the
Protected Mode. Ofcourse different OS take different approach, Windows just
allows drivers to write into memory where they want with full privileges
which sometimes causes some instability with poorly written drivers. ;-) ;-)
I'm assuming the reader knows what Protection Level and Ring 0 means so I
won't insult anyone with excess babbling about how the privilege levels
work.
Interesting that adults find it more productive to argue who's right and
who's wrong without any mentioning how the BIOS on IBM PC compatibles is
supposed to be working.
Disclaimer: I might have made error or two, tough ****, because haven't done
any "BIOS" level programming for 10 years or so, Windows, BeOS, Linux, BSD
and others kind of made it a Solved Problem. IBM PC compatible BIOS is not
very interesting technically, never were, IMHO.
It was the MS-DOS programmers who had to deal with the BIOS most. Those
times are long past. Maybe someone somewhere is writing this embedded system
controller/application/widget, who knows.. good for you whoever you may be!