groundy
oss

Microsoft Open-Sources the Earliest Known DOS Source Code: What 1980 Tim Paterson 86-DOS Reveals

Microsoft released 86-DOS 1.00 on GitHub, the earliest known DOS source, giving researchers a primary document to trace the QDOS to MS-DOS chain and compare it with CP/M.

5 min · · · 3 sources ↓

Microsoft has published the 86-DOS 1.00 source code on GitHub, the assembly listings Tim Paterson wrote at Seattle Computer Products in 1981 before Microsoft acquired the OS for roughly $75,000 and shipped it to IBM as PC-DOS 1.0. This is the earliest known DOS source, predating the MS-DOS 1.25 and 2.11 releases Microsoft already open-sourced. The code is transcribed, buildable, and citable.

What Microsoft actually released and how to build it

The GitHub repository (DOS-History/Paterson-Listings) contains 10 bundles of continuous-feed paper printouts, scanned from original listings. Bundles 1 through 8 have been transcribed into machine-readable, compilable source. The remaining two bundles, covering the BASIC-86 Compiler runtime library and files like PAINT.ASM and CIRCLE.ASM, have not yet been transcribed.

The transcribed source targets Seattle Computer Products’ proprietary ASM assembler. To produce binaries from the assembled output, you need the HEX2BIN utility, which converts Intel HEX format into flat binary images. This is not code you can drop into MASM or NASM. It is a product of its toolchain and its era.

The earliest kernel file, 86DOS.ASM, was created June 15, 1981 and printed the following day. A later revision, 86DOS.A86, appeared July 7. CHKDSK.A86 carries the same June 15 creation date. These timestamps put the source roughly six weeks before IBM received PC-DOS 1.0 in August 1981.

Tim Paterson, Seattle Computer Products, and the original acquisition

Tim Paterson wrote 86-DOS at Seattle Computer Products in 1980 as a quick operating system for the 8086-based S-100 bus computer SCP was building. The “QDOS” nickname, for Quick and Dirty Operating System, followed the project for decades. Bill Gates and Microsoft acquired the OS for approximately $75,000, modified it, and delivered the result to IBM as PC-DOS 1.0 in August 1981.

The acquisition price has been cited in historical accounts for years. What the source release adds is the artifact itself: the actual assembly Paterson was working with at the time, now traceable to specific dates on the printout headers. You can see when he created a file, when he printed it, and what revision it was.

The provenance chain: 86-DOS to Windows

86-DOS 1.00 is the direct ancestor of PC-DOS 1.0, which became MS-DOS and, by extension, Windows. Microsoft has previously open-sourced MS-DOS 1.25, 2.11, and 4.0, but those are downstream products. The 86-DOS release fills in the earliest link in the chain.

For software historians, this matters because provenance in code works like provenance in art: the value is in being able to point to the original and trace every subsequent modification. The Paterson listings, now transcribed and buildable, give researchers a diffable starting point.

What the assembly source reveals about early OS design

The source is 8086 assembly written for a machine with kilobytes of RAM. The constraints are visible everywhere. Kernel routines are tight, hand-optimized for size, and assume a single-user, single-tasking environment with no memory protection. CHKDSK, one of the few application-level tools in the release, dates to the same June 1981 period as the kernel itself.

The use of Seattle Computer Products’ own assembler rather than a standard toolchain is a historical signal on its own. This was not written for portability or reuse. It was written to ship on specific hardware under a deadline. The printout headers with creation and print dates encode a development cadence that revision-control systems now capture automatically.

The CP/M shadow: why historians care about this code now

The dispute over how much of Digital Research’s CP/M design influenced early DOS predates this source release by decades. Gary Kildall’s CP/M was the dominant microcomputer operating system before DOS, and the structural similarities between CP/M’s API and DOS’s early function calls have been documented extensively in secondary sources.

What the 86-DOS release changes is the evidentiary standard. Historians and educators can now compare the actual assembly against CP/M’s published source rather than relying on re-creations and eyewitness accounts. The research for this article did not locate a detailed code-level comparison between the newly released 86-DOS source and CP/M, so specific similarities are not asserted here. The relevant point: the comparison is now possible against a primary document.

Previous DOS open-source releases and where 86-DOS fits

Microsoft’s earlier open-source releases of MS-DOS 1.25, 2.11, and 4.0 each represented a shipping product: a snapshot of DOS as customers received it. The 86-DOS release is different. It is a pre-product artifact, the work-in-progress from before the IBM deal closed. It shows what Paterson had before Microsoft’s modifications, not what shipped in a box.

The archival work was led by Yufeng Gao and Rich Cini, who located, scanned, and transcribed the original materials. Microsoft’s announcement emphasizes preservation: “Software history lives in code, yes, but also in scanned listings, internal documents, assembler printouts.” This is a museum release, not a developer tool.

What is still missing

Bundles 9 and 10, containing the BASIC-86 Compiler runtime library source and graphics routines like PAINT.ASM and CIRCLE.ASM, remain untranscribed. The original scans are archived at the Internet Archive in PDF and PNG format, so the raw material exists for anyone inclined to continue the transcription work.

Technical writeups from the preservation team are hosted at thebrokenpipe.com, cini.classiccmp.org, and jscarsbrook.me for readers who want the reconstruction methodology rather than just the source files.

Frequently Asked Questions

Can you boot the compiled 86-DOS on an IBM PC or modern emulator?

The compiled kernel targets SCP’s specific S-100 bus hardware and I/O ports, not the IBM PC’s hardware layout. Running it on IBM-compatible hardware or standard x86 emulators like QEMU would require hardware-abstraction changes, and the repo does not include boot-sector code for non-SCP platforms.

What gaps remain for a full 86-DOS vs. CP/M code comparison?

The kernel and core utilities (Bundles 1-8) are transcribed, but the BASIC-86 runtime and graphics routines (Bundles 9-10) are still scanned images only. A kernel-level function-call comparison between 86-DOS and CP/M is now possible against primary source. A complete application-layer comparison requires transcribing the remaining bundles and locating comparable CP/M application source from other archives.

What would transcribing Bundles 9 and 10 enable?

The BASIC-86 Compiler runtime library and graphics routines would complete the full 86-DOS codebase. Researchers could then trace how application-layer code like BASIC support evolved from Paterson’s pre-IBM work through the GW-BASIC and QBASIC interpreters shipped with later MS-DOS versions, extending the provenance chain beyond the kernel.

How did the developer community respond to the release?

The announcement gathered 414 points on Hacker News, with discussion focused on the CP/M provenance debate and the practical challenges of building the source with period-accurate tooling. The release was timed near the code’s 45th anniversary, and most coverage treated it as a preservation milestone rather than a practical development resource.

sources · 3 cited

  1. GitHub - DOS-History/Paterson-Listings: Transcription of Tim Paterson's DOS printouts primary accessed 2026-05-26
  2. Microsoft Releases 86-DOS Code In Major Open Source Archive Move analysis accessed 2026-05-26
  3. Paterson Listings - Internet Archive community accessed 2026-05-26