Sorry, I don't have my Mark IV flame thrower with me.
I agree with your point in that there are two extremes of approaches to the problem and one's personal preference probably depends on the problems one would like to solve with the BIOS and perhaps some confusion between the functions of a boot loader and a BIOS. Both are necessary. The question I am posing is just how much of the BIOS should be made loadable.
As I said, my background is both hardware and software.
My hardware hat has (is) grumbled about the limitations that a BIOS imposes on the operation of a PC. For example, when running in a pure DOS mode, I don't need the capabilities of a 1600x1200 3D graphics card. What I need is just the capability of a VT220 type serial terminal. I have had situations where the only spare vidio card was a super vga card with bad memory and I wanted to run DOS. Rather than booting into DOS with a serial terminal, I had to swap vidio cards with another PC.
Not every PC is used as an office business terminal or juniors game station. Most PC's are used as POS terminals or simple controllers. You just don't see these advertised in the PC mags. These system almost always run an embedded DOS and don't need the capabilities required in many of the current BIOS's. In fact, they might be cheaper and more reliable without them. And any universal, configurable BIOS should reflect those end users also.
While this may seem an extreme example to some, I was looking at an elevator control system several days ago which was 386 PC based. The manufacturer had installed a vidio card and terminal because the PC wouldn't boot with them.
As another example, I was looking at a server "Black Magic" built by Dresselhaus Computers (www.dresselhaus.com). The server was based around a standard 4 slot ISA motherboard. The only function of the server was to act as a LAN router. To keep the cost low, the manufacturer had modified the BIOS so as not to use any vidio terminal or hard drive. The server sdimply booted up and began executing what was pointed to by the boot record on the floppy drive. Ther server had no hard drives, no vidio capability, a 10 base t ethernet card and an internal modem card. It was, IMHO a simple way to use a PC.
I only use these examples to point out that a configurable BIOS/Boot Loader must be exactly that, configurable. And I only know of three ways of making a configurable BIOS.
The first is a very modularized ROM based BIOS with a number of conditional executions.
The second is to provide a source code rich in conditional macros or include statements which would be compiled/assembled by the manufacturer/hacker and burnt into the (E)(EE)PROM.
The third would be to make a loadable, segmented BIOS.
Each approach has it's pros and cons. The first is universal but at the expense of ROM space. It requires the least amount of customer interaction.
The second most closely fits the curent BIOS distribution model but requires that a knowledgable person make the final configuration after which the BIOS becomes unchangable.
The third is the most flexible but will require the most knowledge in the place least likely to find it, the end user.
A fourth approach would be to make some parts (or all) of the BIOS loadable or reloadable. That is, to provide a "boot" BIOS embedded containing some subset of functions necessary and sufficient to boot the OS in ROM and another superset of functions that would or could reconfigure the system to take advantage of the unique hardware configurations. For example, I have a 486 computer with a caching HD controller (a TEKRAM 2277). That particular controller is a hell of a lot faster and more efficient than the embedded controller on my K6-2 SOYO motherboard on the PC I am now using. I would like to optimize or change the Microid Research BIOS on the 486 mother board to only use the 2277 supplied drivers but under the ROM only BIOS, I can't.
My hardware hat prefers the third approach. My practical side knows that the second approach is most like to be widely received by the PC community. Maybe I can hope for the fourth.
At 11:52 PM 2/9/99 +0100, you wrote:
I see two clear fractions here. One that, like me, wishes to create a full, complete BIOS with all the functions that goes with it (keyboard, video, storage etc). And one that supports the minimalistic approach with just a bootloader in the Flash ROM. How should we deal with this? Should we make two seperate versions of OpenBIOS? Or should we join our efforts in making one, very flexible and configurable BIOS? Any other ideas?
I think that, when considering the bootloader approach, you miss two vital parts of the BIOS, the I and the O. To be classified as a BIOS (in particular, OpenBIOS), in my opinion it should atleast support some form of input and output system. Otherwise you are left with BS (perhaps Booting System?). There is nothing wrong with this, and I can clearly see some merits of that, but as I said, I don't classify that as a BIOS. Perhaps there should be a subproject of OpenBIOS called OpenBS?
(Flameshield suit - ON ;)
/ Niklas Ekström
On Mon, 8 Feb 1999, Ed Brinker wrote:
<snip> > With all of that history, I like the model > > --------------------------------------------------------- > Media: EEPROM BootDevice BootDevice Any Device > Code: BootLoader -> BIOS -> OSloader -> OS > > The EEPROM has four necessary functions that I can identify: > Self test of the motherboard. > The chipset dependent functions. These are really unique to the
motherboard.
For speed and efficency, copy the os independant portion of the kernel to shadow ram. Loading layer 1 of the boot.
<snip>