Switches and Glitches
This release is another hodge-podge set of changes:
- Refactored DIP switch management
- Fixed video page flipping (including cursor display)
- Added 43-line and 50-line support to VGA
- FIxed floppy-only 5170 machines when using newer ROMs
DIP switch mappings now use model-specific tables to map functionality to switches, and all switch operations now go through a well-defined set of methods, instead of using hard-coded switch bit-masks. This should make any future support for additional IBM PC clones a "bit" cleaner.
Page-flipping worked before, but when a change was made to "latch" the new page address only during vertical retrace intervals (so that certain animation tests would work properly), that change made it possible for some flips to be ignored until another event triggered a screen update. In addition, the text-mode cursor was not being redrawn for non-zero pages.
I also added a few MDA and CGA machine configurations for the IBM PC AT (previously, I had only EGA and VGA configurations). This proved to be another useful test of the new DIP switch logic, because the AT did away with most DIP switches, except for a single "Display Switch" on the motherboard to indicate whether the primary monitor was a Color or Monochrome display.
And, since I also happened to create those new PC AT configurations as "Floppy-only" machines, that revealed an unexpected problem with 2 of the 3 PC AT ROMs, resulting in a "601-Diskette Error." Adding a port handler for an undocumented FDC "Diagnostic Register" (port 0x3F1) resolved the problem.