This past weekend I have subscribed to the OpenBIOS mailinglist, and it took me some time to read all contributions, except for some in the archive.

Following are my thoughts in this discussion:

CMOS/NVRAM
Older PCs use a CMOS of 64 bytes, newer (486 and up) use 128 bytes. Some other systems use up to 4K or 8K of CMOS (MCI/EISA).
The first 16 bytes of CMOS are reserved for RTC use:
00h - 09h Time and date fields
0Ah          Status Register A
0Bh          Status Register B
0Ch          Status Register C
0Dh          Status Register D
0Eh          Diagnostic Status Register
0Fh          Shutdown Register
The following 32 bytes are most commonly used for ISA configuration data, and the last 16 bytes are generally used for BIOS-specific configuration data, such as Boot sector virus-protection, security, ROM shadow config, and extended CMOS checksum.
An additional 64 bytes may be available in the Extended CMOS RAM, incorporated in many chipsets to store advanced config info.
From space in CMOS RAM 16 bytes less are available.

Hard disk drives
BIOS CHS limits to 1024/255/63, thus supporting up to 8.0325 Gb. IDE CHS limits to 65,536/16/255, thus supporting up to 130.56 Gb. Thus the overall limits are 1024/16/63, supporting only up to 504 Mb. A little resize of storage in BIOS/CMOS would break those limitations, as Microid Research may have done with its MR BIOS. As far as I know the MR BIOS has CHS support for 16384/255?/63? (128.52 Gb). It already did in 1990! I have used a 2 Gb EIDE drive in an old 386DX (1989) ISA machine with an MR BIOS v1.51, though advanced PIO/DMA modes were not available. Some sort of translation is used however, but I haven't figured that out. It isn't LBA according to WD/Phoenix for sure. By the way, MR BIOS supports installation of 8 hard drives and 4 floppy drives, for some years now, and you can boot from all of these.

OK, there is the idea of designing an OpenBIOS. Are there any general ideas on how this OpenBIOS should be designed? Most BIOSses still have the IBM compatibility, that is compatibility to the older PC and XT standards, by maintaining a list of vectors to the IBM-compatible vector (AMI calls this the ROM Compatibility Table, Phoenix calls this COMPAS or Compatibility Structure). And what about the INTs. As I recall, Intel reserved 32 ints to be CPU ints. With the 8088 just a few were used, and IBM began to use all non-used but reserved ints for their PC BIOS, which means that we now are stuck up with several ints being both BIOS and Hardware/CPU ints, such as 05h, 10h, 11h, and 12h. Are there any ideas on this, including some possible work-around?

BIOS should at least consist of three parts: Power-On-Self-Test (test and initialize various components, and eventually the bootstrap loader), System BIOS (providing the interface between OS and hardware: interrupts), and a setup utility (system configuration). The setup util should be in the BIOS itself, or a special key(combination) should be available during POST if things go wrong, and you can't access the setup program on disk. The setup program should be functional, and doesn't have to have great looks (as the AMI WinBIOS?).

--------------------------------------------------------------------------------------------
Alle Metzlar
Matrix Technologies
P.O. Box 40, NL 1724 ZG Oudkarspel
The Netherlands
Tel: (+31) 226 316889 Fax: (+31) 226 312157
EMail: matrix@xs4all.nl
WWW:   http://www.xs4all.nl/~matrix/  (Matrix Technologies' BIOS Web)
--------------------------------------------------------------------------------------------
Author of:
Het BIOS boekje, Uitg. Pim Oets, ISBN 90-5722-013X
Das BIOS Buch, Franzis' Verlag, ISBN 3-7723-4832-7
Die BIOS CD-ROM, Franzis' Verlag, ISBN 3-7723-8612-1
--------------------------------------------------------------------------------------------