First post, by clb
Hello,
I am trying to wrap my head around the mechanism that Boot ROMs work, in particular around booting and BIOS. After watching videos on the topic and reading XT-IDE and other BIOS ROM product pages, there are still some things I'm a bit uncertain about. Actually, quite a few things.
1) If I understand correctly, the general machinery is that the motherboard BIOS decides at boot which real mode addresses should map to onboard RAM, and which addresses don't? The addresses that do not map to RAM will generate loads and stores on the ISA bus? Then each ISA card snoops the bus for these accesses and when they see one, they go "hey, I have a ROM on board that is configured to live in that address range, I'll respond to that memory request". The mechanism is a bit uncoordinated/"dumb": only manual jumper configuration ensures that multiple ISA cards won't overlap memory addresses for their ROMs.
2) Are the colloquial terms "BIOS ROMs" (besides the main BIOS ROM onboard), "Boot ROMs" and "Option ROMs" all referring to the same thing - an EEPROM on an ISA card providing a memory block in some address range?
3) How does the BIOS know which real mode addresses (in UMB) should get routed over to RAM, and which real mode addresses will contain BIOS ROMs? E.g. if I put in a network card with an 32k EEPROM socket to my 386, how will DOS know not to allocate precious RAM over that memory area, but assign that RAM over to Extended memory instead? Or other way around, if I don't have any ROMs in e.g. address B4000-B7FFF, how does DOS know to map memory there for an UMB block? It seems to me that there would need to be some kind of discovery protocol in play for the system BIOS to locate all the ROMs?
4) XTIDE Universal BIOS (https://www.xtideuniversalbios.org/) enables booting from large hard drives. Does XTIDE Universal BIOS somehow replace the motherboard system BIOS altogether (F0000h upwards)? Or does it live in a separate ROM memory block than the main motherboard BIOS?
5) How does XTIDE hook into the boot process? Is it some kind of a general feature/protocol of all PCs that the system BIOS asks each ROM if they want to take over booting? Or do the ROMs somehow provide hard disk information to the BIOS?
6) Finally, if I want to dump a ROM, is it identical to do it via the DEBUG command ( http://mess.redump.net/dumping/dump_bios_using_debug ) (after using e.g. MSD or some other tool to locate the ROM address and size in memory) vs an EEPROM reader?
Thanks for any tips!