First post, by kaputnik
- Rank
- Oldbie
Found out that MR BIOS was available for Gigabyte GA-586HX, so decided to try to figure out a way to dual boot MR and the original Award 4.51PG BIOS.
The GA-586HX stores the BIOS on a 1Mbit 29 series EEPROM, SST29EE010. Happened to have a spare SST29EE020, the 2Mbit version of the same chip. Soldered together an adapter to manually switch the highest address pin low/high, effectively splitting the storage area in two parts, and burned a combined MR/original BIOS image to the chip.
MR BIOS works perfectly.
The original BIOS behaves very strangely though, corrupting itself at boot. It'll overwrite addresses 0x0 - 0x7F (128 bytes) and 0x10000 - 0x1007F (128 bytes again) with FF, verified by dumping the corrupted image and comparing it to the original image. It works for one boot after writing the BIOS image to the EEPROM, apparently the corruption happens after shadowing to RAM.
Except for the expected error messages about corrupted configuration - haven't done anything with the settings SRAM yet, it's still shared between the BIOSes - it only complains about "Unknown flash type". It will however complete POST and try to boot the OS.
Got no idea whatsoever what the Award BIOS uses to detect the flash type, but can imagine it's the chip ID bytes. Opened the BIOS image in a hex editor and tried to find any references to the SST29EE010:s chip ID "BF07". Found a couple of instances of that sequence and tried with BIOS images where one, the other, and both instances were changed to the SST29EE020 chip ID "BF10". No luck. Guess those instances were just coincidences, or there's something else that has to be done too.
So, I'm stuck here. Of course I could just completely disable writing by cutting the pin corresponding to /WE from the adapter, but that's not a very elegant solution. Would rather find out what causes the corruption and remedy it. First thing to try is to hack the BIOS to recognize the SST29EE020, alternatively try changing the chip ID of the SST29EE020 to BF07 if possible.
Anyone got any ideas how to go about this? 😀