Forty-five years ago, in April 1980, a young employee at Seattle Computer Products began developing a small disk operating system for the new Intel 8086-based board. Against all odds, this modest project evolved into software that would power the PC industry for over a decade: Microsoft’s MS-DOS.
This is a story about development of 86-DOS, better known by its code name QDOS1 before it was sold to Microsoft.
The two main sources I used are Tim Paterson's blogs from 2007 and Vintage Computer Federation’s video: VCF West XIII -- Tim Paterson -- Original DOS and the old days. Other sources are explicitly mentioned when applicable.
Rise of Sixteen-Bit Microprocessors
In late 1970s, personal computers were powered by various 8-bit microprocessors: the so-called “eighters” were based on Intel’s 8080 or its derivative Zilog’s Z80, while the “sixers” used processors from Motorola’s 6800 series or MOS Technology’s 6502 which was designed by the same team of engineers. Most of the “eighters” were built around the S-100 bus which was really the same one used by the Altair 8800. In the late 1970s and early 1980s, most office microcomputers were based on the Z80 CPU, the S-100 bus and the CP/M operating system. The notable exception was Apple II, which started as a hobbyist computer but became popular among small businesses after the introduction of VisiCalc spreadsheet software2.
Changes arrived in the summer of 1978. First, the S-100 bus was standardized as IEEE-696 and expanded to support 16-bit architectures - the first draft was published in the May 1978 issue of IEEE Computer Magazine. Soon after, Intel released its first 16-bit CPU, the 8086, more than a year ahead of its rivals Zilog and Motorola. To promote the new chip, Intel organized local technical seminars, and a small hardware company Seatle Computer Products (SCP) specialized in producing memory cards for S-100 based computers was invited to one. Company’s owner Rod Brock sent his new employee Tim Paterson who had just graduated from University of Washington. Though originally hired to improve memory card designs, Paterson quickly recognized an opportunity in the extended S-100 standard and the new CPU and convinced his boss to let him work on developing a 16-bit computer part-time with the hope of being first to market with an Intel 8086 microcomputer.3.
By early 1979, the hardware design was complete, and by May, SCP had the first few prototypes ready. They still needed the software; Paterson built a few basic development tools, including an assembler and a debugger, but SCP, as a hardware company, preferred to acquire software from independent vendors.
There was not much choice really: Digital Research Inc (DRI) ruled the operating systems market with CP/M, and Microsoft offered BASIC and other programming languages. A phone call with DRI revealed that an 8086 port of CP/M is in progress and scheduled for release by year’s end. DRI was also interested in testing an 8086 board, but SCP had none to spare at the time.
The next stop was Microsoft.
Microsoft Standalone BASIC and FAT
In January 1979, Microsoft moved from Alburquerque, New Mexico where it was founded in 1975 to Bellevue, Washington - some 15 miles from SCP. By that time, they were already a monopoly, albeit in a tiny market: BASIC interpreters for microcomputers4.
The product SCP was interested in was Microsoft’s Standalone Disk BASIC which contained not only the BASIC interpreter, but also an embedded file system, and did not need an operating system to run on. Microsoft had just ported BASIC to 8086 but needed actual hardware to test it: like most other software companies of the era, the company developed on a DEC minicomputer with simulators for the target platforms.
Unsurprisingly, both SCP and Microsoft were eager to work together. Tim Paterson worked closely with Microsoft’s Bob O'Rear. The project ran smoothly, and SCP soon had a working BASIC interpreter for the soon to be released 16-bit computer. It was probably at that time that Paterson first saw the FAT file system, but it was in June at the National Computer Conference in New York that he learned more about its implementation from its author - Microsoft’s employee No 1, Marc McDonald5.
Tim Paterson was familiar with a few other file systems at this point: at home, he used North Star DOS, at work it was Cromemco CDOS. In addition, he knew about UCSD p-system and had taken a class that covered Unix, although he had never had a chance to work with it.
He liked the idea of FAT, though. The file system was named after the File Allocation Table - the data structure used to hold pointers to allocation units (also called “clusters”); it is basically an array where each entry corresponds to a cluster on the disk. The entire structure would be stored in RAM and there was no need to read disk just to find out where the data was. The original Microsoft’s FAT had 8-bit entries which limited the number of clusters to 256; Paterson decided to increase it to 12 bits which was enough for 4096 clusters6.
The SCP 8086 board (let’s go with that name)7 began shipping in November 1979, and soon it became clear that the lack of an operating system was holding back the sales. CP/M-86 was still nowhere to be seen, so Tim Paterson proposed developing a new OS. Having developed a multi-tasking 8-bit OS at college, his initial idea was to take advantage of 8086’s advanced capabilities and develop a multi-tasking operating system. His boss was concerned that the design of such software would take too much time, and they needed something quickly.
They went with the solution that sounds sensible to unexperienced programmers: slap something together to solve the short-term problem and later throw it away and do the job properly. The code name for the new operating system was chosen accordingly: QDOS (Quick & Dirty Operating System)8, but it was decided early to release it under the name of 86-DOS. To avoid wasting time on the API design and make porting of the existing system easier, another important decision was made - its API should be ported from CP/M.
The CP/M Controversy
CP/M was developed by Dr Gary A. Kildall in 1973 - before any remotely popular microcomputers existed and before it was even clear that microprocessors were viable general-purpose CPUs. Although minimalistic, the operating system included a file system and a standardized API for accessing it. After the deal with IMSAI, CP/M quickly became the de-facto standard for 8-bit business computers. Kildall and his wife together founded Digital Research Inc. to develop and market the system.
As Intel’s 8086 could not run 8080 machine code directly, it was not possible to make 86-DOS directly compatible with CP/M. However, Intel’s 8086 user manual included translation rules for converting 8080 assembly instructions to 8086. By designing 86-DOS’s external API to match that of CP/M, users could at least achieve what Paterson called “translation compatibility” to help software developers in porting their applications from an 8-bit CP/M environment to a 16-bit 86-DOS system.
In principle, nothing about this decision should have been controversial. There was at least one CP/M “look alike” at the time - above mentioned Cromemco CDOS that Tim Paterson used at work; it seems that at least the early versions of that system were written without permission from DRI. However, after IBM selected the 86-DOS operating system for its PC, Paterson was accused of “ripping off” CP/M9.
In my view, the charges can be divided into two categories:
Accusations based on established facts: 86-DOS implements the CP/M API. The question of whether an API can be copyrighted remained unclear even into the 2020s. However, the practice of re-implementing someone else’s API was present since the early days of computing and is generally considered acceptable. Even in the early 1980s several Unix-like systems showed up that used Unix APIs and command-line syntax—as long as they avoided using the name “Unix” or incorporating AT&T-licensed code, they were left alone10. In the early 1990s Linus Torvalds implemented Unix API in his operating system Linux; while there was a legal dispute later, it was focused on the alleged illegal use of Unix source code, not the implementation of the API. Which brings us to:
Claims that Tim Paterson directly translated code from CP/M, or at least reverse-engineered it. These are clearly false: both operating systems consist of a little more than a file system and their file systems are obviously different, both in design and implementation - they are not even compatible. That simple fact did not stop the accusers from coming up with fantastic stories of a hidden code signature in CP/M that was ported to 86-DOS and was still present in MS-DOS. Unsurprisingly, no one ever provided evidence of this alleged “hidden signature.” Moreover, both operating systems were so small that hiding such a thing would have been impossible, even before their source code was made public11.
Paterson later expressed regret for basing the API on CP/M, arguing that translation compatibility had not been useful and that an entirely different API would not have changed much, given Digital Research’s delayed release of CP/M-86. However, this position is debatable. IBM was specifically looking for an operating system resembling CP/M for its PC; after acquiring 86-DOS, Microsoft made several adjustments at IBM’s request to make it resemble CP/M even more12.
Release and Sale of 86-DOS
With the main design decisions out of the way, Tim Paterson went to work. His only development tools were the ones he had developed himself earlier: the cross-assembler for the 8086 that ran on his employer’s Z80 Cromemco system, and a debugger that fit into a 2KB EPROM. Coding itself took him about six weeks until the version 0.1 (around 6 KB of machine code)
was ready in July, soon to be followed by a bug-fix release 0.11 - a copy of which was found in late 2023.
In October 1980, Microsoft's Paul Allen contacted Seattle Computer Products and expressed interest in reselling 86-DOS. The first version of 86-DOS licensed to Microsoft was 0.3. In July 1981, just a month before IBM PC was announced, 86-DOS was sold to Microsoft and renamed to MS-DOS.
There is some confusion about the name of the product and even discussions about when exactly it was renamed from QDOS to 86-DOS. According to Paterson, QDOS was an internal “code” name that was never used outside of the company. From the very beginning its official name was 86-DOS.
In 1980, Even Apple II became capable of running CP/M applications by using the popular Z80 SoftCard which would turn it into a CP/M system. The card was jointly developed by Microsoft and SCP and Tim Paterson was involved with the project - possibly in parallel with coding 86-DOS.
The device SCP produced was not a standalone computer; Paterson describes it as “a set of three plug-in cards for the S-100 bus: the 8086 CPU card, the CPU Support Card, and the 8/16 RAM”. There was no computer case, no power supply and certainly no keyboard and monitor.
I wrote about the significance of BASIC with early microcomputers in my recent post: The Curious Case of Jupiter Ace
At that time, McDonald was working on an 8-bit operating system called M-DOS or MIDAS that was also based on FAT; it was more advanced than most other existing disk operating systems; for instance, it supported multitasking. The problem was that it took whopping 30 KB of RAM, so it was never released.
Detailed design of the FAT12 file system is described in the article An Inside Look at MS-DOS, originally published in the Byte Magazine.
Finding the official name of the SCP’s product turned out to be a surprisingly hard problem. Tim Paterson uses mostly descriptive names for it: “the 8086 board”, “the card”, “8086 16-bit computer system”; around the Internet I found names like “SCP S-100 8086 board”, “SCP S-100 8086 system” or even “8086 set”. Obviously, SCP did not have a marketing department.
Not to be confused with Sinclair’s QDOS, a more advanced but less successful operating system for the Sinclair QL computer.
According to Paterson, Kildall himself used the term “rip-off” when he called him on the phone years later.
For an in-depth analysis of the accusations, I suggest reading an excellent article by David L. Farquhar: Did Microsoft steal DOS from CP/M? Another insightful article on the topic is Michal Necasek’s: 86-DOS Was an Original.
"IBM wanted CP/M prompts. It made me throw up.", said Tim Paterson in an interview to David Hunter in 1983.