For those of you who reading my MASM thread, I pasted some code which showed that I was starting to/want to write my own PC and XT-class BIOS (mostly in C, because it'll be easier for me to keep the code modular should I decide to add clones using different chipsets- the NEAT chipset comes to mind). I know sergey's done one already for his project, and I think it would be a better exercise for me to get acquainted with the PC's hardware... I can go back to DOS internals later (or look at that topic when I get sick of writing this and need a break ).
I would like to do this without blatantly copying the routines from IBM's listings... for the BIOS interrupt services, that's trivial now that Ralf Brown's Interrupt List exists, but for the actual boot process that seems like contradictory requirements!
I know some code in any BIOS will more-or-less be the same. I imagine that for most- if not all clones- the PIT, DMA controller, PPI, and PIC, and CRT controller all need to have their registers to the same values as IBM's. I also imagine that other tests such as RS-232, LPT, floppy seek test and the 8088 test can be programmed differently.
Any advice on how to go about not just blatantly copying code? Are there any documents that explain the BIOS boot process in detail without using IBM's code? I have a copy of Annabook's BIOSkit, so that is certainly a start, but a lot of the code is not actually explained, and the Makefile for that project is rather impractical to build on a modern machine. http://www.minuszerodegrees.net/5150/misc/5150_post_and_initialisation.htm discusses a high level look at the 5150 3rd revision BIOS (according to that page, mine must be broken or something, because it only moves the floppy heads back to the first track AFTER the 'Everything OK' beep :lol. It'd be cool if Compaq, what was once Columbia Data Products, or Phoenix still had their Chinese Wall notes!
Currently, my BIOS beeps the PC speaker, then halts... it also has the FONT placed at the correct location (which seems to be constant regardless of the BIOS for some reason. Any particular reason why?)
Thanks in advance for any feedback!
I would like to do this without blatantly copying the routines from IBM's listings... for the BIOS interrupt services, that's trivial now that Ralf Brown's Interrupt List exists, but for the actual boot process that seems like contradictory requirements!
I know some code in any BIOS will more-or-less be the same. I imagine that for most- if not all clones- the PIT, DMA controller, PPI, and PIC, and CRT controller all need to have their registers to the same values as IBM's. I also imagine that other tests such as RS-232, LPT, floppy seek test and the 8088 test can be programmed differently.
Any advice on how to go about not just blatantly copying code? Are there any documents that explain the BIOS boot process in detail without using IBM's code? I have a copy of Annabook's BIOSkit, so that is certainly a start, but a lot of the code is not actually explained, and the Makefile for that project is rather impractical to build on a modern machine. http://www.minuszerodegrees.net/5150/misc/5150_post_and_initialisation.htm discusses a high level look at the 5150 3rd revision BIOS (according to that page, mine must be broken or something, because it only moves the floppy heads back to the first track AFTER the 'Everything OK' beep :lol. It'd be cool if Compaq, what was once Columbia Data Products, or Phoenix still had their Chinese Wall notes!
Currently, my BIOS beeps the PC speaker, then halts... it also has the FONT placed at the correct location (which seems to be constant regardless of the BIOS for some reason. Any particular reason why?)
Thanks in advance for any feedback!