First post, by Dividebysandwich
- Rank
- Newbie
Hey there, I thought I had a user on here but apparently not, so completely new account it is 😉
About a year ago I started working on a pure Rust DOS emulator, basically for giggles. I'm lending a hand with the dosbox-staging project but I always wanted to get DOS a bit more rusty. I got to the point where simple DOS programs worked, basic EGA and VGA graphics worked, I could run things like Norton Commander, Quick Basic and some realmode games and had almost the entire 286 and 287 instruction set working. At a certain point I got stuck at several issues that were extremely difficult to diagnose with logfiles and bespoke x86 debugging tools. Up to that point most of the code was handwritten or transcribed from existing sources. Using iced-x86 was a big help to get going for sure, but I was stuck for quite a while. Things like NC1-3 worked fine but NC4 and up did not because overlays were broken. After some time of stagnation I thought, why not give this a HTTP/WS debug API and then let an LLM figure out where I got stuck?
So yeah, here's Rust-DOS, a new DOS emulator with the following features:
- 386 and 486 with fpu and realmode + protected mode support with dynamic recompilation
- Hercules, CGA, EGA, VGA, early SVGA support
- Soundblaster, GUS, MT32 (via Munt), covox speech thing, disney sound source, and host midi out support
- Disk drive noises and disk speed emulation (I contributed that to dosbox-staging's recent release too)
- Web-based debug UI
- Runs native and in a webbrowser as WASM
- Built-in config UI can change most things on the fly (even the graphics adapter)
- Audio effects (reverb, chorus), mixer, screen recording, gamepad and joystick support and much more
- GPLv2 licensed

Website with live demo and downloads is at https://rust-dos.com
Github: https://github.com/dividebysandwich/rust-dos
Disclaimer: As mentioned above, while the groundwork was hand-coded, both local and cloud hosted LLMs were used for the recent development.