The many derivatives of the CP/M operating system
After a long and surprisingly varied dynasty, it's possible they're all FOSS now
Its new licence says that "CP/M and its derivatives" are free for anyone to modify and redistribute. But which derivatives?
The original Intel 8080 version of CP/M had a relatively brief reign: it appeared in 1974, just seven years before the IBM PC launched with PC DOS. The PC, and its many clones running MS-DOS, rapidly outsold and replaced CP/M.
But still, CP/M was, for a while, the industry-standard microcomputer OS, making Digital Research a powerful and important company. Wealthy companies that lose dominance over a market they formerly controlled don't tend to just give up. Digital Research put a substantial R&D effort into expanding and enhancing CP/M, creating a large family of OSes. It had some significant wins and big sales. Some of those products are still in use. All those products are arguably "CP/M derivatives", and as such, Bryan Sparks' 2001 edict might have just open-sourced them all.
The original CP/M was designed for the Intel 8080, although later most people ran it on Zilog's enhanced chip, the Z80. That's how come CP/M ran on the Amstrad CPC, PCW, and even the ZX Spectrum +3… and a compatible OS on MSX machines, mainly in Japan.
Later, as the OS was ported and rewritten for different architectures, that original version was retrospectively renamed CP/M-80. Despite some stories you may have read about Digital Research's dealings with IBM, the 8086 version, CP/M-86, was one of the original three OSes IBM offered for the original PC, alongside PC DOS and the UCSD p-System Pascal environment.
Microsoft cleverly retained the rights to licence the DOS it provided to IBM to other companies. That product, MS-DOS, was of course originally bought in anyway. Microsoft didn't write (or even buy, at first) MS-DOS: it licenced it from Tim Paterson of Seattle Computer Products
DR's CP/M-86 didn't sell well, though. This is partly because it cost $240, while PC DOS was just $40. This sent Digital Research down a long road of upgrading and enhancing its OS's functionality to make it more competitive.
The DOS extended family
You might remember DR's MS-DOS compatible DR-DOS, and how Microsoft was caught faking its incompatibility with Windows 3.1.
Caldera also briefly released the kernel of DR-DOS 7.01 as open source, then changed its mind and closed it again. Work on the open version continued for a while by the DR DOS Enhancement Project, and it is still out there.
DeviceLogics briefly sold DR-DOS 8.1, rebranded DrDOS. The classic CP/M-style separator between directory columns gives away its ancestry.
After rediscovering backups of Novell's later work, Caldera's thin-client spin-off Lineo continued to sell DR-DOS. Version 7.03 to 7.05 were licenced for use on boot disks to OEMs such as Seagate, Nero and Ontrack.
After gradually modernizing DR-DOS to have support for FAT32, hard disks over 8GB, the TaskMax multitasker, DPMI support and making it able to run from ROM, Lineo offered DR-DOS 8.0 and then 8.1. However, the FreeDOS Project found that DR-DOS 8.1 contained FreeDOS code, and the product was withdrawn from the market. The company then tried to sell the source code.
Marooned in Real Time
DR also offered far more capable OSes than DR-DOS.
The most significant change originated from MP/M. Hard as it is to believe in 2022, MP/M was a multiuser OS for eight-bit computers with 32kB or more of RAM. DR ported MP/M 2 to the 8086, then merged it with CP/M-86 1 to create Concurrent CP/M 3 – a multitasking, multiuser OS. In 1980s terms, Concurrent CP/M turned a PC into a minicomputer: a "host" machine that shared by multiple users at the same time, using text terminals on RS-232 serial ports.
There were also 16-bit variants of CP/M for the Motorola 68000 family and Zilog's Z8000 chips. To create these, the OS was re-written from a mixture of PL/M and assembly language into more modern high-level languages: initially DR's own Pascal-MT+, then re-implemented in C.
And so far in the story, the Unofficial CP/M Site has source code for most of this generation of OSes. The snag is that after this point is when the story gets really interesting.
While Concurrent CP/M was a very capable OS, ideal for multiuser accounts systems, it had a big limitation: it could only run CP/M-86 apps. The problem being that there weren't that many of those, while the market in MS-DOS apps was exploding. In response, DR developed "PC-Mode" (PDF): an add-on which allowed DOS 1.x programs to run on Concurrent CP/M.
(Readers with very long memories might remember DR's DOS Plus, which shipped on the BBC Master 512 and Amstrad PC1512. DOS Plus was a combination of CP/M-86 Plus with the PC Mode emulator: a single-user OS that could read MS-DOS floppies and run some DOS apps. It was what eventually evolved into DR-DOS.)
Thanks to this new ability, in 1984, DR renamed the OS to "Concurrent DOS", or CDOS for short. CDOS 3.2 could multitask CP/M-86 1 apps, Concurrent CP/M 3 apps and PC/MS-DOS 2 apps, all at the same time. That meant a new snag: they all had to share the 8086 PC's notorious maximum of 640kB of RAM.
DR rose to the challenge and rebuilt the OS for what (back in 1982) was called Intel's new "superchip": the 80286. As BYTE magazine's 1985 writeup said, echoed by Reg contributor Chris Bidmead, Concurrent DOS-286 could use the new chip to multitask existing DOS apps.
CP/M's open-source status clarified after 21 yearsREAD MORE
This project hit a serious roadblock when Intel released a later stepping of the chip. While CDOS-286's DOS multitasking worked on the B-1 stepping of the '286, Intel's subsequent C-1 stepping broke the functionality. CDOS-286 worked on the shipping version of the chip, but it couldn't multitask DOS apps. Intel promised that the missing capability would be restored in a future E-1 stepping.
Faced with an OS that couldn't deliver its flaship feature on most shipping 286 kit, DR changed its marketing: CDOS-286 was renamed FlexOS-286, and sold on the strength of its real-time capabilities, as in this brochure [PDF]. The version 1.31 release notes carefully specify that an E-2 stepping CPU is needed for DOS compatibility.
In this niche, FlexOS did well, and evolved into multiple products enhanced and sold by several companies, including Siemens' COROS (PDF) and IBM 4690 OS for its SurePOS cash registers. The latter is still supported by Toshiba.
Although the shipping version of Intel's 80286 severely impaired CDOS-286's capabilities, in the same year that CDOS-286 was released, the 80286 was itself supplanted by the Intel 80386. Intel realized that the dominant OS for its processors was DOS, not Xenix or the long-delayed OS/2. So it gave the 386 the ability to create and multitask multiple 8086 "virtual machines" in hardware: not a true hypervisor, but a limited version that make it relatively easy to multitask multiple DOS apps.
DR adapted this to create Concurrent DOS-386, announced in 1987: a full 32-bit OS with hardware-assisted multitasking of DOS apps. Later versions incorporated some of the technology from the still new DR-DOS, updating the emulation from MS-DOS 2.11 to MS-DOS 3.3.
Around 1991, DR renamed the product Multiuser DOS… but soon afterwards, Novell acquired DR, and the next year killed off the multiuser line. Three OEMs licenced the source code and continued selling their own versions.
DataPac Australasia Pty sold Multiuser DOS 5, later renamed System Manager 7, until it was acquired by Citrix, when the product was discontinued. Concurrent Controls Inc – later Applica Inc, and later still Aplycon Technologies – sold CCI Multiuser DOS 7 until about 2005. Intelligent Micro Software sold it as IMS Multiuser DOS, later renamed Real/32, possibly until as late as 2017. Some parts of IMS still seem to exist, including Integrated Solutions.
CP/M got to more places than you might think
The offspring of CP/M evolved in multiple different directions. While DR-DOS sold strongly for a while, led to the Novell acquisition, and its competition led Microsoft itself to improve MS-DOS substantially, it was only one branch of a large family tree.
Although CP/M-68K was not a big hit, with an injection of DR-DOS technology, its descendant GEMDOS powered the Atari ST, loved by millions. An open-source recreation, containing some of Caldera's freed code, is called EmuTOS. It runs on real Atari hardware, on various emulators, and even, ironically, on the Amiga. There's also an all-FOSS multitasking OS for later STs and emulators, based on the MINT kernel and GEM, called AFROS.
- Yocto Project gets big backer and second LTS release – but what is it?
- Improve Linux performance with this one weird trick
- Hardware boffin starts work on simulation of an entire IBM S/360 Model 50 mainframe
- Take your pick: 0/1/* ... but beware – your click could tank an entire edition of a century-old newspaper
Concurrent DOS-286 evolved into a whole family of realtime and embedded OSes, complete with their own multitasking GUI based on X/GEM, with apps written in Java. This ran on so many point-of-sales systems that it's very likely that, wherever you are in the world, you've bought something and your money went into a cash register running a DR OS.
Meanwhile the 32-bit version, Concurrent DOS-386, evolved into Multiuser DOS and was sold around the world by multiple companies. We have tried to contact everyone we can identify who sold any of the last generation of DR products, with no success.
Tantalisingly, all of these products could be described as CP/M derivatives, and as such, are now covered by the new CP/M open licence agreement. It would be terrific to see at least some of these products' source code released, and to see them running again today, expanded and enhanced and updated. ®