A historical deep-dive traces how MS-DOS 2.0 came to be, from Microsoft's early bet on UNIX-based XENIX to IBM's push for a lightweight OS for the PC XT. Paul Allen pushed for a hierarchical FAT file system, loadable drivers, print spooling, and UNIX-derived utilities (find, more, sort, fc) despite IBM's resistance to a larger DOS footprint. The piece compares the MS-DOS 1.25 and 2.0 source trees on GitHub, showing the 2.0 rewrite grew from 7 files to 118 ASM files, incorporating XENIX-inspired code.

8m read timeFrom nemanjatrifunovic.substack.com
Post cover image

Questions this post answers

Why does MS-DOS 2.0 have a hierarchical directory structure instead of a flat file system like MS-DOS 1.0?

Paul Allen pushed for a hierarchical FAT file system with a root directory and nested subdirectories, modeled on UNIX, to better support the hard disk in the upcoming IBM PC XT. This also introduced file handlers to replace CP/M-style File Control Blocks, though FCBs were retained for compatibility. IBM initially only wanted hard disk support without a full rewrite, but Allen insisted on the broader redesign. daily.dev surfaces stories like this for developers curious how today's file system conventions took shape.

What UNIX-derived commands were added to MS-DOS 2.0?

MS-DOS 2.0 introduced find, more, sort, and fc, directly inspired by XENIX, along with chdir and mkdir to support the new hierarchical file system. These implementations appear in files named XENIX.ASM and XENIX2.ASM within the MS-DOS 2.0 source tree, reflecting Microsoft's attempt to bring UNIX-style tooling to the single-tasking DOS environment. developers tracing the roots of familiar shell commands can find more historical deep-dives on daily.dev.

How much did the MS-DOS source code grow between version 1.25 and 2.0?

The MS-DOS source tree grew from just 7 files in version 1.25 to 118 ASM files in version 2.0, based on the official GitHub repository for MS-DOS. Version 1.25 kept the entire kernel in a single MSDOS.ASM file, with BIOS and COMMAND.COM each in their own single file, while 2.0 split these components across many files to reflect a more modular structure, requiring about 20 KB of RAM versus far less for 1.0. daily.dev helps developers dig into source-level histories like this MS-DOS codebase comparison.

239 Impressions