What, exactly is contained in a BIOS image file?
I assume it's just a bunch of x86 opcodes and arguments.
If I wanted to create a custom BIOS image file, what would I need to know? I don't mean to make use of USB or AGP or anything "fancy," just RAM and serial I/O. And maybe VGA, PS/2, and ISA depending on how difficult/time intensive it looks.
But what's involved? Write some x86 asm and assemble it to binary, and burn/flash it to my chip? Seems too easy.
What else doI need to know? And where do I read to find it out?
Thanks,
F00F
Creating BIOS images?
Yes, just a bunch of opcodes and arguments. There's a bit which checks out and intialises the hardware, you know, susses out what CPU it is running at what speed, sends it configuration information to sort out the caching and bus timing, loads microcode patches if required (Pentium), sets up the mobo chipset registers with all the info it needs to be able to address memory and I/O, maybe sets up the clock generator PLL and the programmable switch-mode power supply for the correct CPU voltage, decompresses the main part of the BIOS into shadow RAM, checksums the extension BIOSes and runs them, runs diagnostics to find out what hardware is there and if it's running OK, interrogates P'n'P devices to find out who they are and build/check the necessary information tables (ESCD/DPMI, all that good stuff) - oh, yeah, how about a nice CMOS set-up menu system so you can change your hard disc parameters, time/date, etc? and don't forget the ATA and ATAPI devices.....and once it's done all that it's ready to provide all those system services defined in the old original IBM PC ROM BIOS (see here for a list of where you need to put them for compatibility) plus those all-important Int 13 extensions to support standard, large and LBA disc modes, ACPI etc.
By now you'll have noticed that for a modern system it's not straight forward. An old 8088 or 80286 system was a lot simpler, and for the first few years they did not have a CMOS set-up utility built in.
A couple of interesting places I found this afternoon:
http://www.dewassoc.com/kbase/index.html
http://www.xs4all.nl/~matrix/
By now you'll have noticed that for a modern system it's not straight forward. An old 8088 or 80286 system was a lot simpler, and for the first few years they did not have a CMOS set-up utility built in.
A couple of interesting places I found this afternoon:
http://www.dewassoc.com/kbase/index.html
http://www.xs4all.nl/~matrix/
Tested patched BIOSes. Untested patched BIOSes.
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"