BIOS Hacking to Change Video Boot Mode
While i managed to get most of the way through it, my EPROM chips ordered from Aliexpress had already been written too - this isn't too great for chips that can only be written once - so i now need to wait for more parts 🙁
I believe I have found where the address in the bios file that defines if it will boot in simultaneous mode or crt only mode or flat panel only mode but i need verify if it will result in some validation error on boot (ie checksum check etc)
Understanding the VGA Bios
I was fortunate enough to find an OEM Video Bios editor (BMP548P) for this specific chip (it looks to be for a PCI card version of the video chip based on some settings but handy eitherway). This provided some excellent material to understand what was going on between setting options and what appears int he video bios file.
In examining the AT27C010 ic contents via a hex editor, i could also see the display text that the video card outputs near the start of the file, so initial signs were good - i could see where in the BIOS file - the vga bios information started and finished (using the previous vga bios extract), again good signs.
It is worth noting that absolutely none of the Phoenix editing tools i had found would work with the .bin extract! Nor did the OEM Video Bios editor (BMP548P) wanted to use vga bios bin i was able to extract from an earlier post.
What i was able to do however was use BMP548P to help me discover where the display mode was being stored in the bios file.
When I started BMP548P inside a windows xp virtual machine, this is what it looks like. You see it immediately shows the boot message the user can edit:
The attachment BMP548P_CT65548_VGA_BIOS_Editor_1.jpg is no longer available
Pressing the 'tab' key a few times - took me to what i was looking for in the 'Display Determination' page.
As you can see its highlighted the defaults of:
- 'Analog Display Boot Type' option = Simultaneous boot
- 'Adjust Shift in 40 Col. & Pack Pixel Modes?' option = yes (which is the setting that is making weird refresh rates while the system is in simultaneous display mode)
A few further screenshots to highlight what options are shown.
The attachment BMP548P_CT65548_VGA_BIOS_Editor_2a.jpg is no longer available
The attachment BMP548P_CT65548_VGA_BIOS_Editor_2b.jpg is no longer available
The attachment BMP548P_CT65548_VGA_BIOS_Editor_2c.jpg is no longer available
While i couldn't import my video bios settings into this application, it was able to save/ export was in BMP548P via pressing <F10>. This created a user specified .dat file - which on further evaluation under a hex editor was very similar to the vga bios extracted from the 486. Again good signs, as both appeared to be in a .bin format
The next step was to see if i can use the export to narrow down the address of where BMP548P is saving the display determination.
I did this by exporting 3 x versions of the BMP548P .dat file - keep all values the same EXCEPT the display mode.
- simultaneous mode
- CRT mode
- Flat panel mode
Then used a bin comparison tool (in this case VBinDiff-3.0_beta5) - this compares every value between two files and highlights any differences:
The attachment Compare_VGA_Video_DAT_Files.jpg is no longer available
This helped to identify 3 values that had changed between settings.
To narrow this down further, I exported the exact same settings (ie simultaneous mode) as 2 x different files - which should of resulted in two files being identical. Those 2 values as shown the picture above were also different despite all configuration settings being identical - the only thing i could think of was the difference in time between saving each file. Therefore i am assuming that these 2 values may either represent a date / time or some form of checksum using the system date and time.
Either way the 3rd value looked to be the location of the display determination.