I grew up in the 1970s and 1980s. My parents wanted to expose my brother and me to computers from an early age, so they bought an Apple II clone called the Franklin Ace 1000. I'm sure the first thing we used it for was playing games. But it didn't take long before we asked, "How does it work?" Our parents bought us a book about how to program in Applesoft BASIC, and we taught ourselves.

I remember my first programs were pretty standard stuff. Eventually I developed a fondness for creating simulations and turn-based games. For example, my friends and I played Dungeons and Dragons in our spare time, and I wrote several D&D-style games. A favorite hobby was re-creating the computer readouts from television shows and movies. Perhaps my largest effort was a program, based on the 1983 movie WarGames, that let you "play" global thermonuclear war.

Later, we replaced the Apple with an IBM PC. The BASIC environment on DOS was different from Applesoft BASIC, but I figured it out easily enough. I continued writing programs on it throughout my junior high and high school years.

In 1990, I became an undergraduate physics student at the University of Wisconsin—River Falls. Even though my major was physics, I continued to write programs. I learned the C programming language and picked up a C compiler. I wrote lots of utilities to help me analyze lab data or add new features to the MS-DOS command line. Like many others at the time, I also created utilities that replaced and enhanced the MS-DOS command line.

The university had a computer lab, and I got an account there on the VAX and Unix systems. I really liked Unix. The command line was similar to MS-DOS, but more powerful. I learned to use Unix when I was in the computer labs, but I still used MS-DOS on my personal computer. By running MS-DOS, I could use my favorite programs to write papers and help analyze lab data.

I discovered the concept of "shareware" programs, which let you try a program for free. If you found the program useful, you registered it by sending a check to the program's author. I thought shareware was a pretty neat idea, and I found MS-DOS shareware programs that filled my needs. For example, I switched from WordPerfect to the shareware GalaxyWrite word processor to write papers. I used AsEasyAs to do spreadsheet analysis and Telix to dial into the university's computer lab when I needed to use a Unix system.

In 1993, I learned about a Unix system that I could run on my home computer for free. This "Linux" system seemed just as powerful as the university's Unix systems, but now I could run everything on my home computer. I installed Linux on my PC, dual-booted with MS-DOS. I thought Linux was neat and I used it a lot, but still spent most of my time in MS-DOS. Because let's face it: In 1993, there were a lot more applications and games on MS-DOS than on Linux.

In 1993, I learned about a Unix system that I could run on my home computer for free.

How FreeDOS started

Because MS-DOS was my favorite operating system, I had built up this library of utilities I'd written to add new functionality to MS-DOS. I just thought DOS was a great operating system. I'd used Windows by this point—but if you remember the era, you know Windows 3.1 wasn't a great platform. I preferred doing my work at the command line, not with a mouse.

In early 1994, I started seeing a lot of interviews with Microsoft executives in tech magazines saying the next version of Windows would totally do away with MS-DOS. I looked at Windows 3.1 and said, "If Windows 3.2 or Windows 4.0 will be anything like Windows 3.1, I want nothing to do with it."

Having experience with Linux, I thought, "If developers can come together over the internet to write a complete Unix operating system, surely we can do the same thing with DOS." After all, DOS was a fairly straightforward operating system compared to Unix. DOS ran one task at a time (aka single-tasking) and had a simpler memory model. I'd already written a number of utilities that expanded the MS-DOS command line, so I had a head start.

I asked around the comp.os.msdos.apps discussion group on Usenet. Although others were interested in a free DOS, no one wanted to start such a project. So, I volunteered to do it.

On June 29, 1994, I posted this to comp.os.msdos.apps:

ANNOUNCEMENT OF PD-DOS PROJECT:

A few months ago, I posted articles relating to starting a public domain version of DOS. The general support for this at the time was strong, and many people agreed with the statement, "start writing!" So, I have...

Announcing the first effort to produce a PD-DOS. I have written up a "manifest" describing the goals of such a project and an outline of the work, as well as a "task list" that shows exactly what needs to be written. I'll post those here, and let discussion follow.

If you are thinking about developing, or have ideas or suggestions for PD-DOS, I would appreciate direct email to me. If you just want to discuss the merits or morals of writing a PD-DOS, I'll leave that to the net. I'll check in from time to time to see how the discussion is going, and maybe contribute a little to what promises to be a very polarized debate!

I am excited about PD-DOS, and I am hoping I can get a group started!

—James Hall

PS—of course, if this already exists, please point me to the group leader so I can at least contribute!

Developers contacted me almost immediately. We had all written our own MS-DOS extensions, power tools that expanded what you could do on the MS-DOS command line. We pooled our utilities and looked on public FTP sites for public domain source code to other programs that replicated the features of MS-DOS.

When I started the project, I didn't fully understand the nuances between "free software" and "public domain."

How FreeDOS is used today

A note about the name: When I started the project, I didn't fully understand the nuances between "free software" and "public domain." I assumed they were the same. And certainly, many of the free tools we found on FTP sites were released into the public domain. I adopted the name PD-DOS for Public Domain DOS. It took only a few weeks before I realized we wanted the protection of the GNU General Public License, which would make our DOS project a "free software" project. By late July, we changed the name to Free-DOS. Later, we dropped the hyphen to become FreeDOS.

Over the years, developers have shared with me how they use FreeDOS to run embedded systems. My all-time favorite example is a developer who used FreeDOS to power a pinball machine. FreeDOS ran an application that controlled the board, tallied the score, and updated the back display. I don't know exactly how it was built, but one way such a system could work is to have every bumper register a "key" on a keyboard bus and the application simply read from that input. I thought it was cool.

People sometimes forget about legacy software, but it pops up in unexpected places. I used to be campus CIO of a small university, and once a faculty member brought in some floppy disks with old research data on them. The data wasn't stored in plaintext files, rather as DOS application data. None of our modern systems would read the old data files, so we booted a spare PC with FreeDOS, downloaded a shareware DOS program that could read the application data, and exported the data to plaintext.

There are other examples of legacy software running on DOS. My favorite is the McLaren F1 supercar, which can only be serviced with an ancient DOS laptop. And Game of Thrones author George R.R. Martin uses DOS to write his books.

They probably use MS-DOS, but I believe there are a bunch of other legacy systems running on FreeDOS.

A few years ago, we ran a survey to see how people use FreeDOS, and three different ways emerged:

To play classic DOS games: You can play your favorite DOS games on FreeDOS. And there are a lot of great classic games to play: Wolfenstein 3D, Doom, Commander Keen, Rise of the Triad, Jill of the Jungle, Duke Nukem, and many others. To run legacy software: Need to recover data from an old business program? Or maybe you need to run a report from your old finance system? Just install your legacy software under FreeDOS, and you'll be good to go. To develop embedded systems: Many embedded systems run on DOS, although modern systems are more likely to run on Linux. If you support an older embedded system, you might be running DOS, and FreeDOS can fit in very well.

You can probably add a fourth category to those FreeDOS use cases: updating BIOS. I get a lot of email and comments from people who still boot FreeDOS to update the BIOS in their computer system. DOS is still a safe way to do that.

It's true that you don't see much DOS in embedded systems being developed today. I think the Raspberry Pi and other low-cost and low-power devices have made Linux in embedded devices very attractive, so most developer interest has moved there. But you still see FreeDOS sometimes, a testament to the staying power of open source development.