Octocontrabass wrote:
Changing the mode involves changing the palette controller.
Nope, the code I've attached to my previous post changes modes but it does not touch any DAC registers. It even has a comment on the top, "To do: do something with 16- and 256-color palettes?"
Octocontrabass wrote:
Video modes set using the VGA ROM are designed to be register-compatible with EGA
No, they weren't. The modes were designed to use the same buffer layout, but not registers. (And FYI while EGA had two buffers for two monitors, VGA had only one buffer for a single monitor). The EGA palette registers had 2 bits per color channels, while VGA had 6 bits, so it cannot be register-compatible. Converting EGA channel values to VGA channel values requires SHL 4. See
IBM EGA specification, page 12 section Registers.
Octocontrabass wrote:
In order for that to work on VGA, the VGA ROM must program the palette controller to produce the 64 EGA colors.
Where did you get that "must produce the 64 EGA colors" thing? Would you mind sharing a link with us? By default, the first 16 (and only 16, not 64) VGA palette entries are configured to match the default 16 EGA colors. End of story.
Octocontrabass wrote:
Disassemble any VGA option ROM and see for yourself.
Believe it or not, I actually did disassemble
many video ROMs back in the day. Mostly SVGA ROMs, to reverse engineer their banking routine and additional register set. I wrote an SVGA assembly library for DOS with native drivers, years before VESA got widespread. Later I rewrote that library with VESA, and
I've posted a screenshot of that rewrite on this forum (huh, that post was 8 years ago, and the rewrite was in 1998).
But please, this conversation is going nowhere, and it definitely does not help the OP. No matter how many times you write "64 EGA colors", that won't make it true.
Cheers,
bzt