Transcribing The Source Of The First DOS For The IBM PC

Doing software archaeology can be a harrowing task, as rarely do you find complete snapshots of particular versions of software. Case in point the development of MS-DOS – also known as IBM PC DOS – from 86-DOS, which recently got a lucky break in the form of printed source listings. These printouts come courtesy of [Tim Paterson], the creator of 86-DOS and of MS-DOS during his time working for Microsoft.

These code listings contain the sources of the 86-DOS 1.00 kernel, multiple development snapshots, and also listings for utilities like CHKDSK. These printed listings additionally contain many handwritten notes, making transcribing it into working source code somewhat of a chore. The results can be found on the GitHub project page, with the original scans available on Archive.org.

Of the ten bundles of continuous feed paper prints all but two have been transcribed so far, though with the various DOS kernels and the Seattle Computer Products (SCP) assembler source already ready for compilation. This includes 86-DOS 1.00, MS-DOS 1.25 and PC-DOS 1.00-dev, requiring the same SCP assembler to create a binary.

In the project page README a number of blog posts are also linked that add even more technical detail. Anyone who wants to pitch in with transcribing and/or testing recovered source code is welcome to do so.

9 thoughts on “Transcribing The Source Of The First DOS For The IBM PC

  1. Header indicates MASM microsoft macro assembler. The code is dated 83. “The usual sites” on the internet have MASM 1.0 from 1980 and MASM 3.0 from 1984 but those are both too old and too new. I wonder if anyone already knows for certain its assembled with MASM 1.0

    Yes I already know the github says it’ll assemble with the SCP assembler from ’81 I was just wondering if the “official” binaries were made back in the day with MASM 2.0, which I don’t have a copy of or maybe MASM 1.0 I donno. Of course if both SCP and MASM have the same binary output it doesn’t matter much…

    I never used MASM back in the day I was more of a M80 guy. MS’s M80 system was pretty much 8086 MASM for 8080s and Z80s mostly on CP/M but also IIRC my father bought his customized copy for TRS-80 at Radio Shack and it was very much “OK” not super amazing but not bad. Controversial opinion but reasonable: You’re better off learning Z80 from Radio Shack EDTASM than from Microsoft M80 on CP/M.

    1. Ah, the good old Zilog Z80, so many memories! With its general-purpose registers (AF, BC, DE, HL), its status register (flags: carry, zero, sign, parity/overflow), and its shift operations (RL, RR, SLA, SRA, SRL, etc.) used for multiplications or divisions by powers of two… It was all part of learning and mastering the hardware at the time.

    1. Kinda dewshing it up here brah. It was and is never not common knowledge. It’s a famous part of the Microsoft mythos. If only there were some way to look up Tim Paterson age 69. BTW Hogwarts is not a real school.

  2. I admit that MS-DOS 1.25 has some relevance.
    It was the first version used by MS-DOS Compatibles (non-IBM compatible PCs).
    Though to be honest, MS-/PC-DOS 2.x was the first serious DOS.
    It also had certain Unix features, such as switchar= line in config.sys.
    More info here: https://www.youtube.com/watch?v=Vo8NG8T4rWs

    If MS was serious about this, it would release more than those bread crumbs.
    Please don’t get me wrong, the MS-DOS 2.11 code release was fair.
    Because that’s the oldest release normal DOS software did run on as we know it.
    I said “did”, because this was in the 80s. Software like Norton Commander and XTree Gold or dBase.
    DR’s DOS Plus 1.2 was MS-DOS 2.x ABI compatible, too.
    The first network stacks written for DOS were available to DOS 2.x, too.

    By late 80s, though, DOS applications expected DOS 3.1 as minimum requirement and MS-DOS 3.20 or PC-DOS 3.30 were shining.
    They were also quicker in response (better i/o performance), albeit also a bit larger in terms of memory consumption.
    3.1 had the network redirector, while 3.30 could added network file flush support.
    OEM versions of 3.x were interesting, too. Such as Compaq DOS with its own utilities or the Robotron versions (DCP 3.2 and 3.3).
    Compaq DOS 3.31 and DR-DOS 3.31 were popular.
    Both did overcome limitations of MS-/PC-DOS of the time.
    Compaq DOS 3.31 had extended FAT16 support and allowed bigger partitions (beyond 32 MB partitions).
    DOS 3.x also was the last “hurray” or non-IBM PCs form early 80s.
    Because of the availability of the OEM kits it was possible to still adapt DOS 3.x to MS-DOS Compatibles.
    That changed by the time DOS 4 was out, when IBM PC was considered the winning standard.

    If Microsoft was serious, thus, it would have made MS-DOS 3.20 or 3.30 public.
    Because it did actually matter in the 1980s (it replaced MS-DOS 2.11 very quickly. “Backup copies”, ahem).
    Or the non-multitasking DOS 4 from 1988-1990, which was unpopular but otherwise highly DOS software compatible and very advanced (had IFS).
    The 3 line didn’t have much (if any) third-party software included yet, making it’s source code rather “safe” to be released.
    By comparison DOS 6 had various utilities from Symantec (MS-DOS) and Central Point Software (IBM DOS).
    There are various rights holders, in short.

    1. certain features… reminds me of the DOS Ed editor, which was fundamentally different from Unix ed (pronounced Ee-Dee as if it were an acronym). Windows admins would get confused by the “ed” in Linux, and further confused about how to pronounce the name. good times

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

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