RSS

The IBM PC, Part 3

16 May

In November of 1979, Microsoft’s frequent partner Seattle Computer Products released a standalone Intel 8086 motherboard for hardcore hobbyists and computer manufacturers looking to experiment with this new and very powerful CPU. The 8086 was closely related to the 8088 that IBM chose for the PC; the latter was a cost-reduced version of the former, an 8-bit/16-bit hybrid chip rather than a pure 16-bit like the 8086. IBM opted for the less powerful 8088 partly to control costs, but also to allow the use of certain hardware that required the 8-bit external data bus found on the 8088. But perhaps the biggest consideration stemmed, as happens so often, from the marketing department rather than engineering. The 8086 was such a powerful chip that an IBM PC so equipped might convince some customers to choose it in lieu of IBM’s own larger systems; IBM wanted to take business from other PC manufacturers, not from their own other divisions.

The important thing to understand for our purposes, though, is that both chips shared the instruction set, and thus could run the same software. Everyone wanted to run CP/M on the SCP boards, but CP/M existed only for the Intel 8080 and Zilog Z80. Thus, SCP had the same problem that Sams and IBM would face months later. Digital Research repeatedly promised an 8086/8088 version of CP/M, but failed to deliver. So, in April of 1980 Tim Paterson of SCP decided to write his own 8086/8088 operating system. He called it QDOS — the “Quick and Dirty Operating System.”

The ethicality or lack thereof of what Paterson did has been debated for years. Gary Kildall stridently claimed many times that he ripped off the actual CP/M source code, but this is a very problematic assertion. There is no evidence that he even had access to the source, which Digital, like most companies then and now, guarded carefully. On the other hand, Paterson freely admits that he pulled out his CP/M reference manual and duplicated each of its API calls one by one. On the other other hand, and while it may not have reflected much originality or creative thinking, what he did was pretty clearly legal even by the standards of today. Courts have ruled again and again that APIs cannot be copyrighted, only specific implementations thereof, and that reverse engineering is therefore allowed. (Well, there is patent law, but that’s a swamp we’re going to stay well away from…) Food for thought for open-source advocates and Microsoft haters: if QDOS was ethically wrong, then Linux — largely a reimplementation of the Unix standards — must be equally wrong. Paterson claims that he had a good reason to copy CP/M so closely: he wanted to make it as easy as possible for programmers to move existing CP/M software over to QDOS. He also claims that beneath the surface, where he could get away with it, he substantially improved upon his model, notably in disk- and file-handling.

In the meantime Gates was wondering how he was going to come up with an operating system for IBM in the time frame they wanted. Then one day Paterson called Paul Allen of Microsoft to tell him about QDOS, just in case Microsoft was interested in writing some software for it or using it in-house. Gates, just the man to recognize an out-of-the-blue savior when he saw one, called Sams, asking, “Do you want to get [it], or do you want me to?” Sams’s answer to that question would cost IBM billions and billions over the decades to come. “By all means, you get it,” he said. Recognizing that PC software was far from his realm of expertise, Sams had already pretty much thrown all of his systems-software problems into Microsoft’s lap, and he saw no reason to change course now. “We wanted this to be their problem,” he later said. Microsoft’s “problem” would in a few years become a big, big problem for IBM.

On September 30, Gates, Ballmer, and Bob O’Rear flew down to Florida to make their final proposal to IBM. For Sams, who wanted to essentially foist the software problem on someone else, their plan sounded ideal. Microsoft would take responsibility for providing an operating system, four programming languages (BASIC, COBOL, FORTRAN, Pascal), and a range of other software to be available at launch (including our old friend Microsoft Adventure). One point Gates carefully stipulated: Microsoft would license all of this to IBM, not outright sell it to them, and would expect to be paid on a per-copy royalty basis. IBM, feeling there was opportunity enough for everyone to do well out of this and that it couldn’t hurt to have Microsoft’s own fate tied so closely to that of the IBM PC, agreed. This huge company, legendarily risk-averse and conservative, elected to place the fate of one of their biggest projects ever in the hands of a 24-year-old. If Microsoft failed to come through, the IBM PC itself would be stillborn. On November 6, Microsoft and IBM officially signed the contract, which immediately paid Microsoft $700,000 to begin porting all of this disparate software to the new architecture. Ironically, by that time both Lowe and Sams, who had played such prominent roles in everything that came before, had been transferred to other divisions. Project Chess may have been an Independent Business Unit, but it obviously wasn’t entirely immune to the fickle ways of the IBM bureaucracy. Don Estridge took over leadership of the project.

While the software deal was being finalized, Project Chess had not been idle. That same November Microsoft received its first two prototype machines. IBM, desperately concerned about secrecy, demanded they keep them in a windowless vault secured with locks they themselves provided. Microsoft and IBM’s Project Chess, just about as physically far apart as two organizations can be and still be in the United States, nevertheless developed a working relationship that seems similar to those of today, when geography matters far less. They communicated constantly through telephone and (especially) a special email system they set up, shuttled packages back and forth via an overnight service, and visited one another frequently — and sometimes without warning. (This became a particular concern for Microsoft; IBM had a habit of dropping in unannounced to see if all of their byzantine security procedures were being practiced.) The IBM team of course had plenty to keep them busy, but Microsoft were truly up against it. Thanks to all of the negotiations, they were according to Gates already “three months behind schedule” the day the contract was finalized. Everyone worked months of seven-day weeks. Most didn’t even take Christmas off.

The first goal had to be to get the machine running in its two modes of operation: BASIC and the disk-based operating system. The former Microsoft could handle on their own, but the latter left them dependent on Seattle Computer Products. Even as Microsoft had been finalizing their deal with IBM and starting to work, Paterson and SCP had been continuing their own work, refining QDOS from a “quick and dirty” hack into an operating system they could sell. Along the way they renamed it, for obvious reasons, to 86-DOS. As 1980 drew to a close, they at last had a version they felt was suitable for the outside world.

Until this point, Bill Gates has basically behaved himself, acting like a hard-driving but straightforward businessman. Now, however, we start to see some of that legendary Gates shiftiness come out. He wanted for Microsoft a royalty-based agreement that would let them share in the hoped-for success of the IBM PC. But he wasn’t ready to share those fruits with SCP, who still had no idea that the IBM project was even happening or that their modest little one-man-authored operating system was key to the plans of one of the biggest companies in the world. Gates wanted to keep them in the dark, but he needed 86-DOS, like, yesterday. He therefore needed to pry 86-DOS out of their hands without letting them know why he wanted it.

Paul Allen negotiated an agreement with SCP owner Rod Brock in January, implying that Microsoft had a whole stable of customers eager to run 86-DOS. The deal would essentially allow Microsoft to act as middleman — or, if you like, retailer — in these transactions. For each customer to whom they sold a license for 86-DOS, they would pay SCP $10,000, or $15,000 if the license also included the source code. They would also pay SCP an initial fee of $10,000 to begin the agreement. For SCP, a much smaller, hardware-focused company without the reach or marketing skills of Microsoft, the agreement sounded great — especially because business lately had not been particularly good. Microsoft seemed convinced that they could sell quite a few licenses, bringing in effortless money for SCP for this operating system Paterson had begun almost on a lark. One clause buried in the contract might have raised a red flag: “Nothing in this licensing agreement shall require Microsoft to identify its customer to Seattle Computer Products.” Brock later said, “That seemed strange to us, but we agreed to go along.” In reality, of course, Microsoft had no stable of eager licensees. They had just one, the biggest fish of all: IBM. Microsoft sold just one license under the agreement, acquiring IBM’s operating system for them complete with source for just $25,000.

In February, Bob O’Rear of Microsoft got 86-DOS to boot for the first time on one of the prototype machines:

“It was like the middle of the night. It was one of the most joyous moments of my life, to finally after all the preparation and work, and back and forth, to have that operating system boot up and tell you that it’s ready to accept a command. That was an exciting moment.”

IBM was soon requesting a number of changes to 86-DOS. Microsoft thus found themselves in the awkward position of having to go back to Paterson, who of course knew 86-DOS far better than anyone else and whom they had signed to a consulting contract, to request changes without telling him where the requests were really coming from. In the end they convinced him to leave SCP and come to work for them full-time. “It’s IBM!” they told him as soon as he walked through the door on his first day as an employee. Ironically for Paterson, who has spent decades battling critics who claim he ripped off CP/M, many of the changes IBM requested actually made 86-DOS look even more like CP/M. For instance, the command prompt showing the current drive — i.e., “A>” — was the result of one of IBM’s requests, and a carbon copy of CP/M’s. Paterson says it made him “want to throw up,” but of course on this project what IBM requested IBM generally got.

IBM planned to announce the IBM PC in August of 1981 — as per the original plan, which gave Project Chess exactly one year to complete its work. They weren’t interested in postponing, so everyone in Boca Raton and especially at Microsoft just worked harder as smaller deadlines were missed but the biggest one just stayed fixed. They also began confidentially approaching other developers, of software such as VisiCalc and the word-processing package Easy Writer, to add to Microsoft’s lineup of applications and games. They even arranged to make another of our old friends, the UCSD Pascal P-System, available for those who wanted to run it in lieu of 86-DOS or the Microsoft BASIC environment. Incredibly given its expanding scope, the project remained a complete secret for quite a long time. But finally in June InfoWorld printed a detailed article that described the entire plan down almost to the last detail, even mentioning that the operating system would not be CP/M but would be “CP/M-like.” They missed only the planned announcement date, saying it would happen in July rather than August. The Datamaster, the earlier “PC-like” project that had provided technology and personnel to Project Chess, did make its own belated debut that month. Many assumed that the project InfoWorld had scooped was the Datamaster, and thus that the magazine had gotten it all quite wrong. Those better connected, however, knew better by this time.

Then on July 27, 1981, barely two weeks before the planned announcement, Bill Gates made what has often been called the deal of the century.

Rod Brock at SCP was a disappointed man. The legion of 86-DOS licensees he had anticipated following the Microsoft deal hadn’t materialized, and now he had lost Paterson, the one software guy at his hardware-focused company, to Microsoft. It was pretty obvious by now who the one 86-DOS sub-licensee must be, but SCP was strapped for cash and lacked the ability to support an operating system. He started to shop 86-DOS around a bit, looking for someone willing to take over support in return for an exclusive license to it. Gates pounced immediately, offering SCP a much-needed $50,000 for the deal — with one crucial difference. He stipulated that Microsoft would not be buying an exclusive license, but would be buying the software itself, outright. They would then grant the exclusive license to SCP, essentially turning the deal on its head. Brock was uncertain, but he really did need the money, and he didn’t quite know what to do with 86-DOS himself anyway…

He signed the agreement, making Microsoft the sole owner of 86-DOS — or, as it was immediately renamed, MS-DOS. It’s yet another example of the terrible financial decision-making that was so endemic to the early microcomputer industry, as hackers who knew everything about bits and bytes but nothing about business suddenly found themselves running companies. These were the kinds of mistakes that Gates never made, but knew how to exploit and even engender in others. When dealing with innocents like Brock, it was as easy as leading the proverbial lambs to slaughter. MS-DOS, purchased for $50,000, was earning Microsoft more than $200 million per year by 1991. Even more importantly, it was the key building block in the Microsoft monopoly that would absolutely dominate business computing by the mid-1980s, and dominate virtually all computing throughout the 1990s. This decision, more than any other, is the one that made Microsoft the giant it still is today.

But Microsoft (and IBM) suddenly had one more legal hurdle to clear. By this time, with the IBM PC becoming more and more of an open secret in the industry, Gary Kildall had seen a copy of 86-DOS/MS-DOS in action. He was convinced that Paterson had stolen his operating system, that he had somehow gotten a copy of the source code, made only those changes needed to get it running on the Intel 8086/8088, filed off the digital serial numbers, and sold it to IBM. Now he began to threaten legal action, and (perhaps of more concern to IBM) to cause a huge stink in the press that could cast a cloud over the upcoming announcement. He and Gates met for lunch to try to hash things out, but to no avail. “It was one of those meetings where everybody was nice to each other, then everyone shouted at each other, then everyone was nice to each other, then everyone shouted at each other,” recalled John Katsaros, a Digital Research colleague who was also there. And so IBM stepped in to make a deal. They would also offer CP/M-86, the 8088-compatible version of the operating system which Digital were still messing about with, on the IBM PC just as soon Kildall could give them a completed version. Kildall, at least somewhat placated, accepted. The IBM PC, which IBM had from the start envisioned as a true “anything machine,” would now have no fewer than four available operating paradigms: the ROM-hosted BASIC, MS-DOS, CP/M, or UCSD Pascal.

 

Tags: , ,

20 Responses to The IBM PC, Part 3

  1. matt w

    May 18, 2012 at 11:54 am

    This is great! But I humbly suggest that when you publish it in book form, you expand on the third paragraph a bit — I know I really ought to understand what “duplicated each of its API calls one by one” means, but I don’t.

     
    • Jimmy Maher

      May 18, 2012 at 12:23 pm

      A quick rundown:

      “API” stands for “Application Programming Interface.” It’s the way that an application talks to the operating system to make requests of it. For instance, let’s say that I want to open a file to read in a database (or for any other purpose, really). I accomplish this via the appropriate API call, telling the OS what file I want to open, whether I want to read from or write to it (or both), etc. Then the OS answers me, telling whether it can accommodate me. If so it passes me a hook to the file that I can use in my program. If not, it hopefully tells me why (the file doesn’t exist, I don’t have permission to access it, etc.).

      Modern APIs are mostly enormously complex, both because modern OSs do so damn much and because there’s often a lot of legacy cruft that never gets cleaned out. The modern MS Windows API, for instance, consists of thousands upon thousands of available functions, built in layers upon layers, some new, some dating back over 20 years. In the case of CP/M, however, there were only on the order of 25 to 30 API calls even available, most just dealing with very basic disk operations like the one I’ve just described — because that’s ultimately about all that CP/M really did. Thus it wasn’t such a big deal for Paterson to systematically duplicate them for QDOS.

      What this got him was a degree of CP/M compatibility. Because CP/M programs ran on an entirely different architecture at this time, you couldn’t just stick the executables into QDOS and expect them to run. However, if you had the source code you could very easily recompile them to run in QDOS, possibly with no changes at all — because all of the API calls would be exactly the same. Further, someone who knew how to program for CP/M would automatically be able to program for QDOS. It’s the same reasoning that leads so many modern programming languages to adapt a “C-like” syntax, because just about every professional programmer knows him some C.

       
      • Aula

        January 22, 2018 at 7:12 pm

        “However, if you had the source code you could very easily recompile them to run in QDOS, possibly with no changes at all — because all of the API calls would be exactly the same.” Well, if you assume the source code was written entirely in some programming language that could be compiled to both a CP/M program and a QDOS program, although I can’t imagine why any such language would be so low-level that it would force (or even allow) direct access to the API. However, if the program was written (even partially) in assembly – which probably most CP/M software was – then it would need to be rewritten, as 8080/Z80 and 8086/8088 assembly languages are quite different. Either way, the practical benefit of this “compatibility” was probably almost nonexistent.

         
        • Nathanael

          March 6, 2021 at 4:49 am

          It was common during the 1970s-1980s for a program to be primarily written in a high-level language (like BASIC or PASCAL or FORTRAN) but for the *operating system interactions* to throw back to machine language. Having similar APIs made it much easier to port to a different OS. Even though the actual machine language wrappers around the system calls had to be ported, the general structure of the program didn’t have to be changed. When you switched to a system where the entire conceptual structure behind the API was different, it required extensive rewrites to port.

           
  2. Lisa

    June 11, 2012 at 7:18 pm

    Have you made some change in the RSS feed settings? With “IBM PC part 2” they suddenly started coming through as complete posts rather than only links. I think that’s great – keep it that way, if you did something! :)

     
    • Lisa

      June 11, 2012 at 7:19 pm

      That is, looks like some old things are getting republished because of it – but if it holds going forward, that’ll be cool.

       
      • Jimmy Maher

        June 12, 2012 at 6:09 am

        I updated to a newer version of WordPress a few days ago. That must be the source of the disruption. Sorry about that.

        I didn’t intentionally change any settings that I’m aware of, but if you’re happy with the new format I guess we can leave well enough alone. :) No one has complained so far…

         
  3. Milan Kovac

    November 15, 2012 at 4:21 pm

    :D

    “if QDOS was ethically wrong, then Linux — largely a reimplementation of the Unix standards — must be equally wrong.”

    well… NOT.

    reimplementation of CP/M (aka QDOS) had objective to make money (or at least: Bill Gates do it that way)

    and

    reimplementation of UNIX had for objective something quite opposite to proprietary QDOS: to “Open” software.

     
    • Giuseppe

      April 22, 2013 at 12:13 am

      That’s a difference that makes no difference.

       
      • hjp

        June 6, 2017 at 8:21 pm

        There is a more important difference, though: Kildall apparently intended the CP/M API to be proprietary. But AT&T had different plans for Unix: Not only had they licenced it to a whole bunch of other vendors (and universities like Berkeley), they even turned it into a standard. When Linux was developed, the POSIX standard existed, and implementing it was not only allowed, but encouraged!

        (That said I think that APIs must not be copyrightable and recent court decisions overturning that long tradition are worrying.)

         
  4. Bruce

    December 20, 2012 at 2:27 pm

    A nit. Since DOS didn’t get directories until much later, the prompt would have been simply > in fact this didn’t stop being the default until DOS 4 or 5.

     
    • Bruce

      December 20, 2012 at 2:28 pm

      Simply A> rather. Sorry, autocorrect.

       
    • Jimmy Maher

      December 20, 2012 at 2:41 pm

      Thanks! I made a correction in the text.

       
  5. G Grobbelaar

    August 31, 2015 at 11:05 pm

    Dos, o Dos! I started my PC experience on a 086, but “de-grade” down to a XT – 2 floppies! That dos promt has the nagging ability to stay! Even win7 and 8 still has it as one use it to PING the internet! But to see it from what really happen to get the PC’s in a home is quite exciting! As I stated in an earlier post, I never really had connections to PC’s until 91 when I met my wife via my sister that worked at the same company. What also fascinate me now is how, when windows 3.1 came out in its 2 flavours, how quickly people forgot the dos commands! Its literally the same as what cell phones did! How many numbers could one remember when it was still the old rotary or push button phones? Yes we had a phone book, but our friend numbers we could easily recall those 7 numbers! Same with DOS – scandisk, fxdisk, copy A: *.* to C: … You catch my drift, not to talk of bootdisks and recovery disks! We are not that inclined to remember that much anymore, do we? Any case its just my few bits for this bytes, actually mega bytes! BTW, so many people still don’t understand why 1mb is 1024 and not 1000! But here I think its a moot point as everyone here knows the reason!

     
  6. Vol Lidovski

    April 18, 2021 at 2:57 pm

    It is an irony that DR later did the same thing as Tim Paterson did. They duplicated MS-DOS API in their DR-DOS which was being quite popular while Microsoft were belated with MS-DOS 5.

     
  7. Jeff Nyman

    August 9, 2021 at 10:18 am

    “But he wasn’t ready to share those fruits with SCP, who still had no idea that the IBM project was even happening or that their modest little one-man-authored operating system was key to the plans of one of the biggest companies in the world.”

    You say this was the “shiftiness” of Bill Gates but it was IBM that imposed the secrecy requirement. This is well-attested so I’m not sure how this equates to “shiftiness.” It is true that the contract Microsoft provided them said that SCP was not allowed to ask who the customer was. But sources indicate this was part of what IBM put in place as a restriction as well as part of their NDA.

    The main thing Microsoft did do was make the contract per OEM, as opposed to a per-copy royalty. So it’s no doubt that this benefitted Microsoft but I think, as a quasi-historian, you have to paint the full picture. Including how the license was eventually bought back by Microsoft for an (at the time) large sum of money.

    I do realize there is an obvious bias in many posts here to paint Gates (much like Tramiel) as “evil” or “shifty” or some other pejorative. This often colors the historical writing on these posts, which is a little distressing since so much of the content is otherwise quite good.

     
    • Daniel

      December 4, 2022 at 9:56 am

      It would make sense that IBM enforced that. After all, they managed to keep the project almost completely secret from the public until two months before the official announcement! I guess you don’t manage that by being fine with even second-tier suppliers learning about the deals.

      In contrast to a lot of other sites and articles on the topic – especially older ones – I don’t feel Gates’ portrayal is unfair on this blog. I also thought “shifty” was a bit of a strong word, but that might be because English is not my first language. I looked it up in a thesaurus and some dictionaries and it seems it’s not as derogatory as it felt to me, frequent synonyms that come up are “cunning” and “astute”, which he definitely was. As this particular article nicely puts it, Microsoft’s ultimate success is probably in large part due to the simple fact that Gates and Allen, in an industry full of inexperienced business people, tended to make fewer devastating mistakes and be more aware of pitfalls.

      What many of those vilifying Gates and Microsoft forget, and what I do think could be pointed out more clearly, is how much they risked on the way to their success. Many of those ultimate “deals of the century” were a huge gamble and could have just as well sunk the companies, had things developed just a little differently than they did. It’s just that we don’t read much about the gambles that didn’t pay off, as opposed to the Microsofts and Apples. Digital Research isn’t even the cautonary tale here, given for how much longer they managed to be around.

       
  8. Jeff Nyman

    August 9, 2021 at 10:38 am

    “In reality, of course, Microsoft had no stable of eager licensees. They had just one, the biggest fish of all: IBM.”

    You once again paint things to fit the narrative you want. The implication is that Microsoft not only just had the one customer (true) but also that they didn’t foresee other customers. They likely did. Yet you say Allen went there “implying that Microsoft had a whole stable of customers eager to run 86-DOS.”

    Now, maybe that’s true. And since you’re (attempting to) write history here, I would quote where that was stated as a reference. Meaning, what specifically was stated. And even then, unless it’s documented, you have to treat it as one possible interpretation of how things were presented. Rod Brock is obviously a good source; he was there. But he is also only one source and looks at it via his via from SCP. Example, as you state:

    “The legion of 86-DOS licensees he had anticipated following the Microsoft deal hadn’t materialized…”

    Note: that *HE* anticipated. Not necessarily that were “promised” him by Microsoft.

    So was he, and SCP, lied to? Well, your own post even indicates where Microsoft’s head was at here

    “Microsoft would license all of this to IBM, not outright sell it to them, and would expect to be paid on a per-copy royalty basis.”

    Microsoft likely fully anticipated other customers beyond IBM, hence this aspect of their contract and deal. So what they were selling SCP on was a future not yet realized. And, of course, welcome to the real world: that’s how a lot of business is done. Whether and to what extent and how they conveyed that to SCP is, at the very least, uncertain from this post.

    As you say about Brock’s deal with Microsoft: “It’s yet another example of the terrible financial decision-making that was so endemic to the early microcomputer industry…”

    Yes, but then why equate a lot of that to the “shiftiness” of Bill Gates?

     
  9. Busca

    March 7, 2022 at 11:11 pm

    “as soon as he worked through the door” -> assume this should be “walked” instead?

     
    • Jimmy Maher

      March 10, 2022 at 4:42 pm

      Yes. Thanks!

       

Leave a Reply

Your email address will not be published.


This site uses Akismet to reduce spam. Learn how your comment data is processed.