Posted By: wraggster
Pate has posted more WIP News of his work on a dos emulator for the Nintendo DS:
This weekend I finally had more time to work on DSx86. The biggest new feature I added this weekend was a proper FAT directory handling (DIR and CD commands on the DOS prompt). I also fixed the new process launching and returning to the parent process when the child process exits. There were also some missing features in the memory allocation routines, which now should be pretty much complete.
I got a bit bored working on the DOS internals for the last three weeks, so I took some time off from that work and looked into supporting AlleyCat. I had to add quite a few new modrm bytes for the opcodes that AlleyCat uses, and also the simple CGA support I added for Paratrooper was far from good enough for AlleyCat. The CGA support is still missing some important features and has some bugs, but I managed to get AlleyCat working for a little while, until it hits an unsupported CGA string instruction.
The DOS kernel now supports the most important features for launching games from the SD card, so a first alpha-version release of DSx86 is now much closer. I have a two-week Xmas vacation starting on the 21st, and my current plan is to get the first working version of DSx86 released during my Xmas vacation. That might still change if I run into some major problem in the code, but at least that is the plan. The biggest missing features that I still must add before I can release it are the following:
Screen scaling/scrolling support.
Support for Ctrl and Alt key combinations. Currently only Shift is supported.
Nintendo DS key mapping support (mapping a DS key to a PC key).
Support for the missing file I/O features (like writing to a file).
In addition, there are a lot of bugs and partially supported features that I would like to fix, but I think these are not absolutely mandatory for the first release:
DOS prompt uses the DOS stdin functions, which I have now hardcoded to use the keyboard. However, my keyboard emulation is not fully compatible with the way stdin is supposed to work. Some keys cause weird behaviour, but the most important keys seem to work.
The text mode hardware cursor is only partially supported, and leaves old cursor images around the screen when moving the cursor.
A vast number of modrm bytes for the partially supported opcodes are still missing. This basically means that only the specifically supported games are likely to work. I am completing these all the time, but it will take months and months to add them all.
The code for the screen handling (both MCGA and CGA) is very ugly, basically a collection of special cases with no internal logic to them. I eventually need to rethink and recode much of this code.
AdLib emulation code is still very buggy and sounds pretty bad.
The internal DOS emulation is still far from complete, but most of the missing features are not very likely to be used in games.
There are a lot of places that could use some more optimization. I have ideas for quite a few optimizations, I just haven't had time to work on them yet.
Btw, December 6th is the independence day of Finland. Happy Independence Day!
http://dsx86.patrickaalto.com/