![ms dos emulator for mac ms dos emulator for mac](https://static01.nyt.com/images/2018/11/01/technology/personaltech/1techtipART_04/24techipART_04-articleLarge.jpg)
The running application was located from 0x0100 up, and the operating system was at the top of memory, with the application stack growing down from just below the start of the OS. On a CP/M system, which could access a total of 64 KB of memory, the region from 0x0000 to 0x0100 (Zero Page) was reserved to the operating system and contained, among other things, the command line arguments. Since MS-DOS implemented the same ABI and memory map, it was source-code compatible with CP/M. While not binary compatible, the Intel 8086 was “assembly source compatible” with the 8080, which meant that it was easily possible to convert /Z80 assembly source into 8086 assembly, since the two architectures were very similar (backward-compatible memory model one register set could be mapped onto the other) and only the instruction encoding was different. Seattle Computer Products “86-DOS”, which later became MS-DOS (called “PC-DOS” on IBM machines), was a clone of CP/M, but for the Intel 8086, much like DR’s own CP/M-86 (which later became DR-DOS). CP/M to PC-DOS/MS-DOSĬP/M was an 8 bit operating system by Digital Research that ran on all kinds of Intel 8080-based systems. Let us look at how this has been done in the last 3 decades, looking at DOS/Windows, Macintosh, Amiga and Palm. Operating system vendors face this problem once or twice a decade: They need to migrate their user base from their old operating system to their very different new one, or they need to switch from one CPU architecture to another one, and they want to enable users to run old applications unmodified, and help developers port their applications to the new OS.