DOS from Scratch: Introduction

Welcome to DOS from Scratch, a series of blog posts following my attempts to create a DOS compatible operating system from scratch.

But Why?

Why would I want to spend time writing code to imitate a 40 year old operating system? Nostalgia, mostly. My first experience using a computer was on a 286 running I don't even know what version of DOS. It was fascinating to me, but back then I was a young child who had no idea how computers worked. Now that I'm an adult with a firm grasp on systems programming, I want to revisit that period of history and learn what was really going on under the hood. I also want to document the process for anyone else who may have a similar nostalgic curiosity.

Project Philosophy

Because the purpose of this project is to learn how everything in the operating system works, I intend to write all of the code from scratch. I'll be referencing existing code to learn how things work, and occasionally running existing applications to test compatibility, but the final product will be 100% written by me. While there will be a bootstrapping phase using an existing OS and tools, I do intend for the operating system to eventually be entirely self hosting.

Getting Started

Now that all the background is out of the way, let's dive in. I'll be updating this page with a table of contents as new posts are published, so you should bookmark this page if you're interested in following along.

You can also check out the code on Github.

Table of Contents