First post, by scruit
I'm looking to create my own option rom (similar to the roms on expansion cards that capture the boot process and display a message) so I can write out a custom message to the screen during bootup.
I want each of the PCs in my little 'museum' of retro computers to print text describing the machine and its history, with a message like this:
"Scruit's Retro Museum - IBM PS/2 55sx
Press any key for more historical info, otherwise bootup will continue in 10 seconds..."
Then if you press any key you get a paragraph something like:
"This is a IBM PS/ model xxxx that was developed in 19xx and sold by IBM from 19xx to 19xx. It has a 386sx processor and was originally shipped with DOS xxxx and Windows xxxx."
For this I'm aiming at the older PCs, up to 486, maybe pentium.
Anyone know of a good tutorial/demo of how to write a rom like this?
What I have experience with:
- Writing simple assembly language
- Troubleshooting/fixing ROMs in older 8-bit machines
- I have written arduino programs that use memory chips and ROMs, so I'm familiar with the concepts behind address/data lines and the timing of row select / column select / address select / read/write, and parsing timing diagrams from datasheets etc.
- Programming ROMs I've downloaded for use on machines (like XT-IDE)
- Understanding where option roms can like (soemtimes there's sockets on the motherboard, sometimes there's empty sockets on ISA cards etc)
- Some machines have high/low roms versus single roms, depending on address/data line architecture.
- That the option ROMS exist in a specific block in memory and are simply present/addressable by virtue of being installed (starts at 0xc8000?)
The bit I'm missing:
- How does the motherboard recognize that a ROM is intended to be executed?
- Is there a particular byte value at a particular address in the ROM that identifies it as an option rom? Like, it scans all the potential addresses in the bios expansion area and passes control to any blocks that have the correct bye value(s)
- Or does it pass control to each available block in the bios expansion area, and the absence of a ROM there allows it to simply skip that block?
I'm going to spend some time trying to reverse-engineer some option roms I have here. Was hoping to speed that process with a tutorial though.
Thanks!