feature article
Subscribe Now

Next Door to Genius

Was Microsoft Built on Pirated Software from Digital Research?

“If you can’t say something nice about someone, come sit right here by me.” – Alice Roosevelt Longworth

This story is part grave digging, part mythology, part forensic analysis, and part courtroom drama. It’s new and it’s old. It’s about computers and it’s about people; good guys and bad guys; intrigue and betrayal. And it’s all true. Well, most of it, anyway.

Some of you already know the story – or think you do – and it starts like this. A computer science professor named Gary Kildall, working out of his house in tiny Pacific Grove, California, invented his own programming language called PL/M as well as an operating system he called CP/M. When he wasn’t teaching, he consulted part-time for Intel, but the chip company wasn’t interested in his new OS.

So Kildall formed his own company, Digital Research, and, before long, he was selling more copies of CP/M than he’d ever expected. Homebrew computer builders and hobbyists liked CP/M for its modularity and portability. It became the de facto standard operating system for these new things called “personal computers.”

That’s about the time IBM entered the market. The computer giant needed software for its new PC, so IBM representatives flew to Seattle to see Bill Gates about licensing his BASIC programming language. Gates suggested that IBM also pay a visit to Gary Kildall in California to see about licensing the CP/M operating system to go along with his BASIC interpreter. But Kildall and company weren’t available when IBM arrived, so the men in the blue suits made a return trip to Seattle to seek a second alternative. Thinking quickly, Gates bought the rights to the QDOS operating system from another local Seattle company, made some minor tweaks, renamed it MS-DOS, licensed it to IBM, and started down the path to becoming the world’s richest company. The End.

Ever since then, people have accused Microsoft of “stealing” CP/M from Digital Research and Gary Kildall. The two operating systems are certainly very similar. Anyone who’s used them both will tell you that they’re nearly interchangeable from a user’s point of view. The commands, the file structure, the programming interface – it’s all uncannily familiar.

So did Microsoft rip off CP/M? Should Gary Kildall have been the next Bill Gates?


It’s that simple. For all of its similarities, MS-DOS is emphatically not a copy of CP/M. It was, instead, written from scratch by a guy named Tim Paterson at Seattle Computer Products. Microsoft bought QDOS (Quick and Dirty Operating System) for $75,000, hired Paterson, and that was that. QDOS was original, just as CP/M was original. But the rumors refuse to die.

How do we know for sure that MS-DOS wasn’t copied from CP/M? Because a recent expert forensic analysis says so. Bob Zeidman specializes in exactly this kind of binary, bit-for-bit comparison, and he says they’re hardly similar at all. Zeidman’s company serves as expert witness on numerous high-tech court cases, including the recent Google/Oracle fracas and the more famous Facebook (The Social Network) infringement case. Scouring source code and object code for infringement is what they do all day, and they just last week concluded that no, MS-DOS does not copy anything significant from CP/M.

Why bring this up now? Because early copies of MS-DOS source code have recently come to light, thanks to a donation from Microsoft to The Computer History Museum. This allowed Zeidman to examine different versions of MS-DOS source code, line by line, for the first time. (The source for CP/M was already available.) They also examined the binaries of both operating systems, which can be just as useful.

Their conclusion? There was no copying between the two. MS-DOS and CP/M were developed independently, largely by two individual programmers, working at two different times. Yes, there are many similarities in how they work – their “look and feel” – but that’s to be expected in an era when microcomputers, floppy disks, and CRTs are all new. There are only so many ways you can send ASCII text to a console. Other contemporary operating systems, such as Apple DOS and VMS, look pretty similar, too.

Adding to the similarities was the fact that MS-DOS (like QDOS before it) was deliberately designed to have partial file compatibility with CP/M diskettes. Given that CP/M was the dominant PC operating system at the time, it only made sense to be compatible with CP/M’s filesystem.

The only place where CP/M and MS-DOS do align is in their respective tables of system calls. Both offer an array of callable functions to read from the keyboard, check device status, open and close files, and so on. These are all accessible via a jump table. Intriguingly, both operating systems organize their system calls in nearly the same order. Function 0 is the same for both; Function 1 is the same for both, and so on.

Zeidman is quick to point out that the code implementing these functions is quite different. There’s no similarity between their implementations. Only their order of appearance in the table of APIs is mostly (but not entirely) the same. It can’t be explained by coincidence, but it’s not software plagiarism, either.

The issue is reminiscent of the recent Oracle/Google lawsuit, where the similarities between Android’s APIs and those of Java were in dispute. But in that case, the code implementing the APIs actually was the same. With CP/M vs. MS-DOS, that’s not the case.

So why, out of the blue, did Tim Paterson copy most of Gary Kildall’s list of system calls? The short answer is, why not? Both operating systems implemented a similar set of features (albeit with different code), and a certain level of compatibility would have been desirable. So Paterson could either (a) arrange the system calls in some sequence that made sense to him; (b) organize them at random; or (c) reuse an existing order that was already proven to work. In the absence of any compelling reason to change CP/M’s established methods, he chose the quick and dirty route. 

So the technical analysis is done, the evidence is in, and the jury has gone home. MS-DOS is not a copy of CP/M, just a similar operating system developed at a similar time. And yet, the rumor persists. “Microsoft stole MS-DOS! The company is built on ill-gotten gains!”

Some people just need a bad guy. For many, an illicit story fuels their resentment of Microsoft and its success. We like to root for the underdog, but we have mixed reactions to their success. Our own success is good and right; others must have gotten theirs unfairly.

Kildall himself could be resentful of Microsoft, too. He felt that his own contributions to the industry had been overshadowed, and that other companies didn’t always emphasize software elegance the way he did. But his work didn’t stop at CP/M. He went on to create MP/M (multiuser CP/M), a LOGO language compiler, a graphical user interface, and his own PBX system. He later sold Digital Research to Novell, made millions on the deal, and retired to an opulent house near the ocean in Pebble Beach. Life didn’t suck.

On a personal note, Gary Kildall’s old house is just a few doors down from mine on the same street. I see the Kildall family home (which doubled as Digital Research’s headquarters) every day. When the company expanded into a second building, it was also in our same little neighborhood. There’s now a brass plaque mounted in the sidewalk in front of the Kildall/DRI building, put there by the IEEE in honor of his contributions to the computer industry.

Gary Kildall wasn’t the man who should have been Bill Gates. He’s the man who was Gary Kildall. 

One thought on “Next Door to Genius”

Leave a Reply

featured blogs
Jul 17, 2018
As I mentioned last week in my blog about narrowband IoT , 4G is the standard that is used across the radio interface of most of the connected phones in the world. 4G is the fourth generation of this standard (and LTE is kind of like Rev2 of 4G), mostly dealing with the speed...
Jul 16, 2018
Each instance of an Achronix Speedcore eFPGA in your ASIC or SoC design must be configured after the system powers up because Speedcore eFPGAs employ nonvolatile SRAM technology to store the eFPGA'€™s configuration bits. Each Speedcore instance contains its own FPGA configu...
Jul 12, 2018
A single failure of a machine due to heat can bring down an entire assembly line to halt. At the printed circuit board level, we designers need to provide the most robust solutions to keep the wheels...