Is the intention to have much of the BIOS code on the hard drive with only the minimal amount of code on the EEPROM?
That is what I was thinking. I think this approach makes it much
easier to
modify, update and experiment with the BIOS.
What if you don't have a hard drive? I don't like this approach.
Another approach that could be used is to have a boot block sector of code. For those of you who have not programmed BIOS before I'll explain...
Most PCs shipping today come with boot block code in the EEPROM. A jumper (or switch) on the board is used to toggle between a boot block boot and a normal boot. Often this jumper is connected to a GPIO. Initial BIOS code reads the value of this GPIO and runs the appropriate code. The boot block code brings up the bare minimum amount of hardware in order to read a BIOS image off the floppy drive (memory and floppy). Once this image has been read into memory, the computer reruns the BIOS code using the image in memory to load the F000 and E000 segments (where BIOS code usually is run from) rather then the EEPROM. This is quite useful for testing BIOS code without modifying the code on the EEPROM.
A normal boot, however, would use the code from the EEPROM. By containing all of our BIOS code in the EEPROM, we allow an end user the use a system that does not have a hard drive (Net PC ring a bell?). Remember that we can compress most of the code on the EEPROM (with only the decompression algorithm and memory bring up code not compressed). This provides for plenty of code space, especially when you consider that modern EEPROMs shipping with systems are typically 512K bytes.
Eric R. Kern