This version has the following major changes/improvements:
* CGA mode is forced to be blitted even if you have selected Direct mode. I believe the blitted mode is fast enough for all CGA games, and removing the direct mode made the code smaller and simpler, and there is no danger of the game stopping because of an unsupported CGA graphics opcode any more.
* TEXT mode is now also using a blitted screen copy method with a dirty buffer, so it is reasonably fast, and it too supports now all possible opcodes to access the display RAM.
* About a dozen new EGA opcodes added.
* About a dozen new DOS interrupts are supported, including some DOS internal functions that are needed by software like Norton Sysinfo, and old FCB file functions that are needed by very old games like Ultima 3.
* Fixed bugs in "!" key, DOS memory resize function, division opcode, and 0xE000 segment memory access when not mapped to an EMS page.
I added all the DOS functions that Norton Sysinfo needs, so I can now run it on the real hardware and check the CPU emulation speed. I also added (partially faked) disk parameter block handling, which reads the data from the SD card partition and presents it like it was a hard disk (I have a 2GB SD card in my DS Lite). It looks to me like Sysinfo reads the media descriptor byte at the wrong offset, it should be 0xF8 and I have put 0xF8 to the offset I believe is correct, yet Sysinfo displays it as 0xFF.
The CPU speed bar changes between 10.6, 10.7 and 10.8 depending on whether the screen update mode is 60 FPS, 30 FPS or 15 FPS. Back in November last year the CPU speed showed 11.3 when running on real hardware, so my CPU core has gotten a little bit slower while I have been adding features to it. I'll probably look into optimizing it further after I have added the most important missing features.
Plans for the next two weeks (which include my Easter vacation) are to add mouse support, and then I would like to implement more graphics modes. Probably the VGA ModeX would be the most useful, although the higher-resolution EGA/VGA modes might be somewhat simpler to implement, as I can use the same opcodes, only the screen blitting function needs to be changed.