DOS Development History - Part 3

Tim Paterson began to work on his prototype operating system shortly after attending the the National Computer Conference the previous summer in 1979. Knowing that developing a 16-bit operating system required the ability to translate 8-bit CP/M software, Paterson set out to emulate CP/M's functions as his first goal. This required writing the code to utilize the command structures and file handling routines CP/M used to run applications and languages.

Paterson's design called for a three-stage deployment, starting with a base operating system, then a single-user version, and then a multi-user version. The base system was written in assembly language with the FAT file system as the indexing and storage solution. Paterson worked the translation process between the 8-bit 8080 to the 16-bit 8086, and wrote a code assembler that could take the translation data and reformat it.

This base system was known as QD-DOS, known as "quick and dirty DOS", coded and tested in less than 3 months. After Paterson refined the base system to 6k in size and got it running on SCP's processor card as Version 0.10, he continued to work on the development of the new operating system to version 0.33, including memory management, then officially renamed it 86-DOS. Rod Brock began to ship 86-DOS with his S-100 processor and memory cards in August, 1980 for $600. Now with a 16-bit computing solution on the market, Brock needed software to bundle with it and attract sales. Paterson, who now had written, tested, and released his base operating system, went back to Microsoft® on behalf of Brock and sought out a custom BASIC implementation for their new processor card in conjunction with 86-DOS.

Microsoft® was already under agreement with IBM® to write their ROM BASIC. With an April, 1981 deadline their efforts were under pressure when Jack Sams returned with an updated plan - in addition to BASIC, the IBM® team wanted Microsoft® to include FORTRAN, COBOL, and Pascal with the software package. Gates explained that while BASIC was stand-alone and did not require an operating system, the other languages did. After Microsoft® had abandoned M-DOS, they had been focusing their operating system efforts instead on Xenix®, a clone of Unix they created after licensing it from AT&T. The reason was, as Microsoft® saw it, that it was still unclear which 16-bit CPU would eventually dominate. Intel's chip was up and coming, but there was still the Zilog Z-8000 and Motorola's 68000. Xenix®, on the other hand, was portable to each, and Microsoft® could focus on the system and their applications instead of the hardware since Xenix® was platform-independent.

Gates had been working on the same languages in 16-bit versions and was not far from deploying them for beta testing. Remembering Digital Research® was still working on the development of CP/M-86, he suggested to Sams that Digital's OS was a potential solution, and Microsoft® set up the initial meeting between IBM® and Gary Kindall. After some logistical details were worked out, IBM® representatives went to Monterey. IBM® did not succeed in negotiating the use of CP/M-86 from Digital and IBM® eliminated them from their considerations. At this point, IBM® had no operating system and Microsoft® had no deal to write the additional languages.

At a meeting in late September, Microsoft® Japan's Kazuhiko Nishi was discussing the languages IBM® wanted and their development characteristics with Gates and Allen. Although Microsoft® was not prepared to undertake the additional programming in the time allowed for the project, it seemed the only conceivable solution to the get momentum going. It was then that Paterson's 86-DOS was mentioned. Gates knew the effort required to program an operating system from scratch would be a monumental task. He also knew that Paterson had already written a 16-bit operating system for the Intel 8086 and it was in use bundled with Seattle Computing's CPU card. The focus quickly shifted from coding a home-grown operating system to using 86-DOS as the potential solution to the problem. With that realization, the meeting put the languages sales effort on hold pending the outcome of their next contact with Rod Brock at Seattle Computing Products.

Brock was contacted initially by Paul Allen. He told him that Microsoft® wanted to further develop 86-DOS and license it for marketing to third party OEM clients. Brock was focused on hardware vs. software development, and the offer stood to provide additional revenue. After negotiations, Brock agreed to license 86-DOS to Microsoft® for $10,000 for distribution rights, and $10,000 per company, with a $15,000 fee if the source code was distributed as well. Brock also maintained his rights to license 86-DOS to others independent of Microsoft®.

After reviewing their proposal including their newly-acquired 86-DOS, Microsoft® resubmitted it to IBM® in October, 1980. Microsoft®'s aim was to convince IBM® they had all the necessary pieces in place to proceed and deliver by the Spring deadline in 1981. IBM® reviewed the proposal, and agreed to Microsoft®'s various stipulations that they had full control of the operating system development and testing cycle, IBM® was prohibited from licensing Microsoft®'s software products to third parties, and Microsoft® was to be paid royalties on the distributions. Microsoft®, meanwhile, continued to license its products to third parties independent of IBM®. On November 6, 1980, IBM® signed the contract with Microsoft® to develop the programming languages and the operating system for the IBM® PC at a cost of $600,000 and the foundation was laid for the final development effort.

Within three weeks of signing the IBM® contract, Microsoft® received a prototype IBM® PC. The task at hand was to get 86-DOS working on the system first - Paterson had coded 86-DOS as a single assembly language program on 8-inch floppy media. In order to get the operating system working on the PC, the media format had to be ported from the 8-inch format to a 5.25 inch format, which was IBM®'s standard.

In what was to prove a tedious process, Microsoft®'s chief programmer Bob O'Rear was tasked with the code conversion. The first stage involved moving off sections of code from the 8 inch media and compiling it into hexidecimal values supported by the Intel BIOS. From there it was uploaded to a DEC2020 as an intermediary, and then copied to an Intel development system running an emulator. The DEC system used for the conversion process was also the system they were using to develop the BIOS code, resulting in a several-step cross-load whenever updates were made. Another problem was IBM®'s constant changing of the hardware characteristics, while Microsoft® made its own changes to the 86-DOS architecture.

Paterson was still working on 86-DOS even as Microsoft® was attempting to port the code to the IBM® form factor. His device independence strategy for the operating system was designed to handle logical records regardless of physical storage size, and he added a number of functions that handled file operations including multi-sector writing, reading multiple records, and handling routines for different record sizes. Microsoft® had requested he make several changes to 86-DOS as part of their development effort, including startup messages and line editor functions, and in addition to his own changes the code changed frequently. O'Rear had a number of issues surface in the course of the 86-DOS rework related to the way it handled serial communications and disk operations.

Finally, after three long months, Microsoft® got the operating system working on IBM®'s prototype system for the first time in February of 1981. In May, Paterson quit his job at Seattle Computing and joined Microsoft® to continue development on 86-DOS. His first efforts were to work on improving the error handling routines. Taking over from O'Rear, Paterson worked closely with IBM® at a hectic pace during the closing development cycle. Shortly thereafter, Microsoft® bought out the rights to 86-DOS from Seattle Computing for $50,000, granting SCP the right to license it with their computers only as a royalty free agreement, and giving SCP discounted pricing on all Microsoft® products.

With the development cycle now coming to completion and Microsoft®'s delivery date on schedule for IBM®'s August release, Microsoft® renamed 86-DOS, dropping the "86" identifier that had indicated the 16-bit nature of the operating system, and having bought the rights, they changed the name. The new name MS-DOS® was adopted prior to the first release, with IBM® DOS the name to identify the OEM effort. Even though the project had been built around IBM®'s needs, Microsoft® took great care to write MS-DOS® as a portable system with inherent abilities to expand and modify as new hardware came on the market, assuring the presence of MS-DOS® beyond their IBM® partnership. On August 12, 1981, IBM® announced the release of the original PC, controlled by "IBM Personal Computer DOS". This first release of DOS as we know it today was Version 1.00, and that is where we now begin on this website.