April 2018 Release
This release contains two important changes to how memory for the IBM Monochrome and Color Graphics adapters is managed:
-
The MDA and CGA frame buffers are now implemented with a custom Memory controller, making them consistent with how the EGA and VGA frame buffers are managed, and more importantly, eliminating the need for the default memory controller to perform dirty block tracking (because the only component that needed that feature was the Video component, which can handle that itself now).
-
The 4K MDA and 16K CGA frame buffers are aliased multiple times in their respective 32K address ranges, mimicking the actual hardware's address decoding. This resolves a compatibility issue with IBM's original "Exploring the IBM Personal Computer" software, which attempted to clear the screen with a broken INT 10h Scroll Up call and still managed to clear the screen anyway, because the addresses being used were aliased to the frame buffer.
The second change now requires the Bus component to use a 4K block size for all machines, irrespective of the machine's bus width, since any machine can be configured with an MDA card, and that card requires 4K block aliasing. That, in turn, affected machines with saved states that had previously been using a larger block size. The Bus restoreMemory() function now has code to detect that situation and convert the saved blocks before restoring them.