Programming

From QDOS to Open Source: Your Step-by-Step Guide to Building MS-DOS 1.0

2026-05-01 08:32:40

Overview

In April 2025, on the 45th anniversary of 86-DOS 1.00, Microsoft published the earliest known source code for the operating system that launched the PC revolution. Originally written by Tim Paterson at Seattle Computer Products as QDOS (Quick and Dirty Operating System) in 1980, the code was purchased by Microsoft for just under $100,000, rebranded as PC DOS 1.0 for IBM, and licensed to other manufacturers as MS-DOS. The repository, now available on GitHub under the MIT license, includes the 86-DOS 1.00 kernel, several development snapshots of PC-DOS 1.00, utilities like CHKDSK, and the original assembler. The source had to be recovered from physical assembler printouts and continuous-feed paper, painstakingly scanned and transcribed by historians. This guide walks you through obtaining, compiling, and running this historic code on modern systems—a perfect project for retro computing enthusiasts and low-level systems programmers.

From QDOS to Open Source: Your Step-by-Step Guide to Building MS-DOS 1.0
Source: itsfoss.com

Prerequisites

Before diving in, ensure you have the following:

Step-by-Step Instructions

1. Clone the Repository

Open a terminal and run:

git clone https://github.com/microsoft/MS-DOS.git
cd MS-DOS

Inside, you’ll find the v1.0 folder containing the 86-DOS 1.00 kernel and PC-DOS 1.00 snapshots.

2. Set Up the Emulator Environment

Install and configure 86Box (preferred for accuracy). Download it from the official site. Create a new machine profile:

Prepare a blank floppy image (e.g., boot.img) using the emulator’s built-in tools or dd command (Linux/macOS).

3. Extract and Assemble the Source

The repository includes the ASM assembler binary in the tools directory. Copy it to your working folder. The kernel source files (DOS.ASM, MSDOS.ASM) contain assembly code that must be assembled using ASM. Run:

ASM DOS.ASM
ASM MSDOS.ASM

This produces .OBJ files. For the final executable (the bootable kernel), use the LINK utility (also included) to combine object modules into DOS.COM:

LINK DOS.OBJ,MSDOS.OBJ,IO.OBJ

Note: The IO.OBJ is a separate module (I/O system) that you’ll find alongside the kernel source. Ensure all objects are present.

From QDOS to Open Source: Your Step-by-Step Guide to Building MS-DOS 1.0
Source: itsfoss.com

4. Create a Bootable Floppy

Copy the resulting DOS.COM, plus COMMAND.COM (the shell) and utilities like CHKDSK.COM from the repository’s bin folder, onto the floppy image. The exact boot sector is already part of the compiled kernel; write the image to a virtual floppy using:

dd if=boot.img of=/dev/fd0  (Linux)   # or use 86Box's “Write Image” function

If using PCem, simply attach the image as the first floppy drive.

5. Boot and Verify

Start the emulator with the floppy image inserted. The machine should boot into 86-DOS (or PC-DOS 1.0) with the familiar A:\> prompt. Test a command:

CHKDSK A:

You should see a disk-check report. Congratulations—you’re running the exact source code from 1981!

Common Mistakes

Summary

Microsoft’s open-sourcing of 86-DOS 1.00 provides a rare glimpse into the roots of personal computing. By cloning the repository, setting up a proper emulation environment, and assembling the code with the original tools, you can experience the OS exactly as it ran on 1980s hardware. This project is ideal for retro computing fans, assembly language learners, and anyone curious about operating system internals. The full process—from source to boot—takes about an hour for an experienced user. Dive in and see where it all began!

Explore

Huxley Universe by Ben Mauro Poised to Revolutionize Sci-Fi: Industry Insiders Weigh In How to Implement Integrated Land Planning to Balance Food, Energy, and Biodiversity Needs AI-Assisted Code Review Drives Major Bug Fixes for Linux's sched_ext Scheduler Building Stable Streaming Interfaces: Q&A on Scroll, Layout, and Performance Get a Sneak Peek: Early Recreation of Google's New Workspace Icons