Library / SDK
DOS-History/Paterson-Listings avatar
DOS-History/Paterson-Listings

Paterson Listings: the paper printouts that became the 86-DOS kernel source

Transcription of Tim Paterson's DOS printouts.

1,134 stars137 forksAssemblyMIT

At a glance

What is it?
Paterson Listings is a transcription of Tim Paterson's continuous-feed printer output containing the source of the 86-DOS 1.00 kernel, PC-DOS 1.00 pre-release kernels and utilities, and the Microsoft BASIC-86 compiler runtime library. It is arranged in three directories of decreasing fidelity, and assembling any of it needs the original Seattle Computer Products tools.
Who is it for?
Paterson Listings is worth having if you are writing about early PC history, teaching 8086 assembly from real kernel source, or checking what a pre-release DOS utility actually looked like, because the transcription is close to the original paper rather than a cleaned-up reconstruction. It is not a build system: assembling anything here needs the Seattle Computer Products assembler and HEX2BIN, and two of the ten bundles have not been transcribed yet.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 47 days ago.
What is it written in?
Mainly Assembly, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

This is a paper archive that happens to be compilable

Paterson Listings is a transcription of Tim Paterson's DOS printouts, and the README describes its contents as the source code of the 86-DOS 1.00 kernel, various PC-DOS 1.00 pre-release kernels and utilities, and the Microsoft BASIC-86 Compiler runtime library.

That is a short list with a large consequence. Paterson's stack of DOS listings contains 10 bundles of continuous-feed paper, and among them is 86DOS.ASM, the 86-DOS kernel source, created on 1981-06-15 and printed on 1981-06-16. The subject matter is the reason the repository exists at all, and it exists because the original artefact was paper: a set of continuous-feed printouts produced by a line printer, with the source of an operating system on them.

The repository's job is to make that paper usable. The DOS-related portions have been transcribed and turned into compilable source code, and the transcription work is done in the open: the README asks people to submit pull requests to transcribe the remaining bundles, and it specifies exactly what will be merged.

The audience is narrower than the topic suggests. This is not an operating system you would run. It is a primary source with an unusually clean transcription, for people reconstructing what early DOS was, and for people who want to read 8086 kernel code that predates most of the documentation about it.

Three directories, and they are not interchangeable

The repository is laid out as a three step pipeline, and choosing the wrong one wastes an afternoon.

The first directory, 1_transcription, is the transcription of the listings, essentially the raw printer output. The second, 2_printed_files, holds the original files that were printed, extracted from the raw printer output above. The third, 3_source_code, holds compilable source code extracted from the printed files above.

So the progression is paper, then files, then something a tool can assemble. The README is explicit about the choice: if you just want to browse the source code or compile and assemble it, choose 3_source_code. Each stage is available as a separate download from the releases, so you can take only the one you need.

The original scans are in PDF and PNG formats and live on the Internet Archive rather than in the repository, which keeps the repository's size reasonable while still letting you check a transcription against the paper.

Two other artefacts sit at the root. LICENSE holds the terms, and Tim_Paterson_24Apr2025_emails.txt is a file of emails, which is the kind of provenance trail that is usually missing from a code archive and often matters more than the code itself.

The bundles come with creation and printing timestamps

Each bundle is listed with its page count and the files it contains, and many of the files carry both a created timestamp and a printed one, which is more forensic detail than a source repository normally offers.

Bundle 01 is 86 pages and holds MSDOS.LST. Bundle 02 is 62 pages and holds 86DOS.A86, created 1981-07-07 17:06:59 and printed 1981-07-08 13:49:52. Bundle 03 is 18 pages with EDLIN.DIF, created and printed the same day, and CHKDSK.A86, created 1981-07-15 and printed 1981-07-28. Bundle 04 is 58 pages and holds 86DOS.ASM, the kernel source, created 1981-06-15 03:18:51 and printed 1981-06-16 15:17:17.

The pattern continues through bundles 05 and 06, each 57 and 71 pages, both holding a file called ASM.PRN, which is the assembler's own printer output. Bundle 07 is 10 pages with a CHKDSK.A86 created 1981-06-15 and printed 1981-06-16, and bundle 08 is 32 pages with 86DOS.DIF, a difference file created and printed within two minutes of each other.

That last detail is the interesting one. A .DIF file is what a patch looks like, and 86DOS.DIF was produced at 15:11:47 and printed at 15:13:47, while 86DOS.ASM from bundle 04 was created on 15 June and printed on 16 June. The listings are a record of work in progress, not a release, and the timestamps let you order it.

The later bundles widen the scope. Bundle 09 is 459 pages, by far the largest, and holds LIBLST.LOG and BASLIB.PRT, which is the BASIC-86 compiler runtime library. Bundle 10 is 20 pages and holds PAINT.ASM and CIRCLE.ASM, created in January and February 1982 and printed on the same day, 1982-02-06.

Two bundles are still missing, and the contribution rules are strict

Bundles 9 and 10 have not yet been transcribed, and that gap is the project's most visible limitation.

Bundle 09 is the largest of the ten, at 459 pages, and it is the one holding the BASIC-86 runtime library. In other words, the largest single piece of material in the archive, and the compiler runtime, is the part that is not yet readable as text. Bundle 10, with PAINT.ASM and CIRCLE.ASM, is the other gap, and the README credits a contributor for transcribing it, which suggests it is in progress rather than untouched.

The contribution policy is unusually specific, and it is a good sign about the quality of the archive. The README says only contributions that provide direct transcriptions of the listings or correct typos in existing transcriptions will be merged. In other words, no refactoring, no modernisation, no replacing an assembler listing with a reconstructed .asm file. The fidelity to the paper is the product.

That rule has a cost worth naming. A transcription of a printer listing carries the printer's artefacts, its line breaks and its formatting, and this repository keeps that rather than tidying it away. That is the right call for an archive, and it is also why 3_source_code exists as a separate stage: the compilable version is derived, not invented, but it is still a derivation and the raw material stays available for comparison.

For anyone whose question is about a specific file, the practical advice is to check the bundle list before assuming the file is there.

Assembling the kernel needs the 1981 tools

The build story is short because the toolchain is short, and the toolchain is period-correct.

Most of the sources here target Seattle Computer Products' ASM assembler, so you need a copy of it. The README explains where to get one: it can be obtained from any release of 86-DOS or MS-DOS by Seattle Computer Products. You also need the HEX2BIN utility from the same company, which converts the Intel HEX objects produced by the assembler into binaries.

The simplest way to assemble a source file is to run ASM followed by HEX2BIN, both taking the file name without its extension. To assemble 86DOS.ASM into the binary 86DOS.COM, the README shows:

bash
A:ASM 86DOS
A:HEX2BIN 86DOS

The full transcript in the README shows what a successful run looks like on a DOS prompt: the banner for Seattle Computer Products 8086 Assembler Version 2.24, the copyright line for 1979, 80 and 81, and then Error Count = 0 before the HEX2BIN step.

Two details follow from that. The tools are DOS programs, so you need an 8086 environment to run them, which is itself a piece of the historical puzzle. The bundle list shows files under a mix of extensions,.A86,.ASM,.DIF and.PRN, so the extension tells you which kind of artefact was captured.

The alternative to assembling is reading, and for most people reading is the point. 3_source_code is browsable text, and the technical writeups linked from the README, at thebrokenpipe.com, the classiccmp recovery blog, jscarsbrook.me and the Microsoft open source blog, are where the interpretation of these listings lives.

MIT licensed, one release tag, and a project that grows by hand

The licence is MIT, with the LICENSE file at the root of the repository, which is a permissive enough choice that the listings can be quoted, taught from, and included in other archives.

The release history has exactly one entry. The repository has a single tag, initial-release, dated 2026-04-21, and the last push was on 2026-09-06. That pattern is the honest description of the project: there is no release train here, because the releases are zip archives of transcription work, and each new transcription is a new build of the same artefact rather than a new version of a program.

The repository is almost entirely data. The top level holds the three numbered directories, the README, the licence, the .gitattributes file, and the file of emails. There is no build system, no CI configuration and no test suite in the usual sense, and the primary language tag on the repository is Assembly, which describes the content rather than a toolchain.

The credits section tells you who is behind it. The README thanks Tim Paterson for providing the listings, shanselman and the Microsoft folks for making it happen, and the-grue for transcribing bundle 10. Paterson is the author of the original 86-DOS work, and the fact that he is credited first, as the source of the paper, rather than as a maintainer, tells you what this repository is: an archive with a community transcription effort attached to it, rather than a project with a roadmap.

For a repository whose value is in what it preserves rather than what it computes, that is the right shape. The measure of success is how much of the paper has been made readable, and two bundles are still outstanding.

Editorial conclusion

Paterson Listings is worth having if you are writing about early PC history, teaching 8086 assembly from real kernel source, or checking what a pre-release DOS utility actually looked like, because the transcription is close to the original paper rather than a cleaned-up reconstruction. It is not a build system: assembling anything here needs the Seattle Computer Products assembler and HEX2BIN, and two of the ten bundles have not been transcribed yet. Before you plan a build, take 3_source_code, check whether the file you need came from bundle 09 or 10, and read the technical writeups linked from the README, because the listings themselves carry no commentary.

Frequently asked questions

What is in the Paterson Listings repository?

It contains the source code of the 86-DOS 1.00 kernel, various PC-DOS 1.00 pre-release kernels and utilities, and the Microsoft BASIC-86 Compiler runtime library, transcribed from Tim Paterson's DOS printouts and turned into compilable source code.

Which directory should I download from Paterson Listings?

Choose 3_source_code if you want to browse the code or compile and assemble it. The 1_transcription directory is essentially the raw printer output, and 2_printed_files holds the original files extracted from that output.

How do I assemble the 86-DOS source?

Most of the sources target the Seattle Computer Products ASM assembler, which can be obtained from any release of 86-DOS or MS-DOS, and you also need HEX2BIN to convert the Intel HEX output. Run ASM with the file name without its extension, then HEX2BIN with the same name, for example ASM 86DOS followed by HEX2BIN 86DOS.

Is everything in Paterson Listings transcribed?

No. Bundles 9 and 10 have not yet been transcribed, and bundle 09 is the largest of the ten at 459 pages, holding LIBLST.LOG and BASLIB.PRT from the BASIC-86 compiler runtime library. The README asks for pull requests with direct transcriptions or typo fixes.

Where can I see the original scans of the DOS listings?

The README says the original scans in PDF and PNG formats are available at the Internet Archive item paterson_listings, and that each bundle also has its own PDF linked from the bundle list in the README.

Official sources

  1. DOS-History/Paterson-Listings on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/dos-history-paterson-listings.svg)](https://hysenlabs.com/projects/dos-history-paterson-listings)