Intro & Why build a new DOS / PC Emulator
We’ve decided to build a new emulator for the DOS / Early PC platform. There are several other emulators for DOS, so you might be wondering why we want to create another.
Understanding & Accurately Describing
First, the PC is the platform we grew up with. There were many early games and applications we loved from this era, and building an emulator helps us better understand the platform. As Richard Feynman once said, “What I cannot create, I do not understand.”. Building a functional emulator is a way to check our understanding, and ensure that the articles we write are accurate.
Ease of Use & Mobile
We’ve built several emulators now, and have experience with building emulators that are easy to use. Many people that use emulators want a way to revisit their favorites, and don’t want to spend hours tweaking configs.
DOS software in particular was notoriously difficult to get running, even on the original hardware. Things like configuring port and interrupt numbers often stood between you and enjoying your software.
Ours should “just work”. This is particularly important on constrained devices like smartphones, were we plan to ship our emulator.
Performance & Battery life
There are several ways to architect an emulator. Finer granularity and accuracy can make things take just as long as on the original system. But this accuracy comes at a cost, since the machine essentially has to do more work to run the same programs.
On the other hand, high level emulation(HLE) involves emulating only the details that matter. These are typically any details that would be observable to the user or software. By doing less, the emulator can run faster and also use less power. This matters for mobile, of course, but also the browser. Emulators that support the browser are typically too slow to be useful. Our estimates suggest our HLE should provide real-time performance, even in your web browser.
An evolving platform
While the original DOS + PC were just one platform, each component of this system paved the way for future platforms. We’re starting with DOS + PC, but a well designed system should allow us to evolve this into some other interesting systems in the future:
- CPU: 8086 -> 286 -> 386
- Video: CGA -> VGA -> Early 3d gfx cards
- Platform: BIOS -> DOS -> 95 -> 98
Summary
We have high ambitions for this project. Next up we’ll talk more about the CPU, and compare it to another common chip from the era. Subscribe to our email list so you won’t miss any updates.