Archive Index (1999-2012) | 2013-current at | About  

Article: The past, present, and future of the FreeDOS Project

Mar 25, 2002 — by LinuxDevices Staff — from the LinuxDevices Archive

Foreword: In this article, FreeDOS Project founder Jim Hall shares his thoughts on the past, present, and future of the FreeDOS Project — a complete, free, MS-DOS compatible operating system. . From the website . . .

“FreeDOS aims to be a complete, free, 100% MS-DOS compatible operating system. FreeDOS is ideal for anyone who wants to bundle a version of DOS without having to pay a royalty for use of DOS. FreeDOS will also work on old hardware, in DOS emulators, and in embedded systems. FreeDOS is also an invaluable resource for people who would like to develop their own operating system. While there are many free operating systems out there, no other free DOS-compatible operating system exists.”

The past, present, and future of the FreeDOS Project
by Jim Hall

Early history

I've been using DOS since I was small — my family bought a IBM PC-XT personal computer, the one with dual floppy drives and no hard disk. That must have been MS-DOS 1.1. I learned to do some neat things in DOS but mostly I just sat and wrote some simple games and explored the beauty of the command line interface. My interest in DOS didn't wane as I grew older. I began with open source software in 1992, when I learned GNU Emacs. My first contribution to free software came in 1993, providing a few patches to GNU Emacs so that it would run on an Apollo Aegis/UNIX system that I used as an intern at a small company. Even then I found myself thinking of DOS applications that would make my work easier.

In 1994, DOS was still a popular operating system. It was simple, straightforward and stable. At least, DOS was more stable than Windows 3.1. I had grown attached to DOS and I enjoyed having it available. There were lots of programs written for it. I used DOS to do my data analysis for labs, write papers and physics reports, dial into the University network, and write small, helpful programs.

Yet, there were rumors from Microsoft that they were planning to do away with MS-DOS, and replace it with Windows. (This was, of course, the promise of Windows95.) When Microsoft said they were going to drop MS-DOS in favor of Windows, it struck a chord with DOS users. We didn't want to give up DOS. I noticed questions on newsgroups like comp.os.msdos.misc asking if there was some other DOS alternative. DR-DOS was one possibility, but who could say if even DR-DOS would survive in an age of Windows?

On the DOS newsgroups, people starting asking if anyone had started a free DOS, something similar to Linux, which was already popular on many university campuses. People believed in the worth of a free DOS and were willing to contribute to (but not start) a free DOS project. For a few months I watched the same question come up on the newsgroups: “is there a free DOS I can download?” No one had answered the question, which implied that there was no such thing as a free DOS. Determined not to let go of DOS, I got together with a few other programmers, and wrote utilities that reproduced some basic functionality of MS-DOS, giving away our source code so that others could benefit. I announced our intentions to the newsgroups, and posted a manifesto. The current manifesto is here.

In all likelihood, most free software projects start out this way. Initially, I was just working with a free DOS to see what I could do with it. Then I found that by modifying my assumptions a little (for example: reading lines of text one character at a time, not as whole strings) I discovered that I could not just replicate MS-DOS programs, I could improve them. That hooked me, and a lot of others. We weren't just writing another _version_ of DOS, we were writing a better DOS that was more productive than MS-DOS.

This new DOS was popular. I immediately started to get email from people all over the world who wanted to contribute. Tim Norman began writing a free, and Pat Villani contacted me about a DOS kernel he had written as part of an embedded system. From there, our “free DOS” project became more and more popular.

Initially, we called our effort “PD-DOS”, indicating our decision to release code in the public domain. (At the time, I was unaware of the distinction between “public domain” and “free”.) Later, we realized that many of us were using the GNU GPL for our programs, and thus we were creating Free software, not software in the public domain. Hence, we changed the name to “FreeDOS”.

Issues and challenges

In order to meet our original goals of hanging on to DOS so we could continue to use our favorite applications, we realized that we needed to emulate the MS-DOS application programmer interface (API) as closely as possible. But if we expected to maintain compatibility with existing DOS applications, we couldn't re-invent a new DOS API. For the “core” of the FreeDOS kernel, we had to stick with the way Microsoft did it.

Yet how to do that without using Microsoft's source code to MS-DOS? Fortunately, Ralph Brown has created a huge list of functions supported by the different versions of MS-DOS. This is the now-famous “Ralph Brown's Interrupt List”. With the list, we had a very detailed map of what needed to be supported, and how to get there. All we _need_ now are willing developers.

The biggest obstacle to getting programmers is interest. People have to be enthused by a project. Without enough programming talent behind a new open source project, it will die due to lack of interest. Fortunately for FreeDOS we were quickly able to drum up support. We started work within a few months and the project thrived.

Anyone who wants to join the FreeDOS Project should first read the FreeDOS Maintainers Lists. This lists the software that has already been written for the FreeDOS Project. Looking at this list helps prevent duplicated effort. People interested in writing programs for FreeDOS may wish to subscribe to the FreeDOS Developer mailing list. The mailing list is where most of the discussion about FreeDOS happens. Programmers talk about their ideas here, we get a chance to review new changes, new libraries, new programs, and everyone has the opportunity to suggest improvements.

But you don't have to write programs in order to contribute to the FreeDOS Project. There are things that need to done which don't require programming experience. For example, if you speak a language other than English, help with the internationalization of FreeDOS. Many FreeDOS programs support internationalization through some kind of library — the two most popular are MSGLIB and Cats. Or, make FreeDOS easier to use by writing for the FreeDOS Documentation Project. Write a set of documentation, or even a HOWTO, for your favorite FreeDOS program. Every contribution makes a difference.

Current status

Today, FreeDOS will run on any Intel or Intel-clone computer. This even includes the low-end systems such as the PC-XT and PC-AT. When we started the FreeDOS Project back in 1994, I had a '386 desktop system in my room and an PC-XT laptop that I would carry around with me to class. My FreeDOS programs were, for the most part, written and debugged on the PC-XT, with some work carrying over to the '386 when I had time to sit at my desk by myself.

However, not everyone runs FreeDOS on a standalone PC. Many people use FreeDOS from a DOS emulator, such as Linux DOSEmu, or VMWare, or Plex86, or MacBochs. The Linux DOSEmu project has chosen FreeDOS as their official DOS. These days, many Linux distributions come with a “disk image” that you can install onto your Linux system and immediately be able to boot DOSEmu and run FreeDOS. The latest kernel builds are very compatible with MS-DOS. I have received email from at least one person who has installed Windows on FreeDOS, using the latest kernel. This is impressive, since Windows doesn't like to run on anything that isn't strictly MS-DOS!

It is not just developers who enjoy working with FreeDOS. DOS novices are discovering FreeDOS. Often, I hear about someone who has installed FreeDOS for the first time on an unused PC, and how excited they are to have an operating system that is simple enough for them to use and modify. These computers are often too slow or don't have enough memory to run Windows or even Linux, but they will run FreeDOS just fine. Many of these users use FreeDOS to access the Internet (using DOSPPP to dial the Internet provider) or as a system to write letters to friends and family with a DOS-based word processor.

FreeDOS is also very attractive for embedded systems designers. In fact, the FreeDOS kernel got it start as the operating system for DOS-based embedded systems on the M68000-series CPU. Embedded systems are very interesting. Examples of embedded systems are: a box to control a laser cutting tool, flight arrival and departure boards at airports, and cash registers. As a case in point, there are many cash registers around that are running DOS. I understand that there is a company in Japan that already uses FreeDOS in an embedded system, but I have no idea what company that is. Another company uses FreeDOS to control the electronics on a pinball machine.

One reason that embedded manufacturers are interested in FreeDOS is access to source code. The FreeDOS kernel, and most of the FreeDOS programs, are distributed under the GNU General Public License, so it is free. A company that is building a next-generation automated teller, for example, can save time by adding kernel support for the touch-screen, and use the existing DOS networking interface to talk to a central computer, rather than invent an expensive proprietary system. You can't do that with “closed source” DOS alternatives. With other DOS systems you don't have access to the source code. With FreeDOS, you already have access to the source code under the GNU GPL, and you are free to modify the system to make your project work.

Another reason to use FreeDOS in embedded devices is the ability to create a “light” kernel. Let's say you were creating an embedded device that never read from the keyboard — it reads data from a serial port and displays output to the video adapter. With FreeDOS, there is nothing to stop you from “ripping out” of the kernel anything that deals with keyboard i/o. Similarly, you can remove anything that doesn't relate specifically to your application. In this way, you can build a custom kernel that has a much smaller footprint than any other DOS solution.

The future

I see DOS being used in three different ways . . .

  • As a standalone operating system, especially on low-end hardware. I regularly receive email from people who deploy FreeDOS for schools in various countries because the latest PC hardware just wasn't available or is too expensive for them.
  • As the DOS for various DOS-like environments, to allow users to run DOS applications in environments that would not otherwise support them.
  • In embedded systems.
People are using FreeDOS in ways I did not imagine when I started the FreeDOS Project. For example, I've received email from companies who are using FreeDOS as “update” boot floppies. The customer boots this floppy to update the BIOS in a video card or drive controller card. For example, Matrox uses FreeDOS on their boot disks to update the BIOS on their video cards. Dell distributes a FreeDOS boot floppy to help users with their Latitude laptops.

We're still making the kernel as stable as it can be. People sometimes look at us and say “sheesh, they still haven't reached full MS-DOS 6.x compatibility.” But remember that everything that we do is based on “undocumented DOS” material, and of course the ever-informative Brown's interrupt list.

I continue to work on FreeDOS because people find it useful and interesting. As long as there are people out there who continue to use and enjoy FreeDOS, I'll always be involved.

Copyright (c) 2002 by Jim Hall. Verbatim copying and distribution of this entire article is permitted in any medium, provided this copyright notice is preserved.

About the author: Jim Hall founded the FreeDOS project. He lives in St. Paul, Minnesota, with his wife (Sara) and three cats (Murphy, Vita, and Linus.) Hall has also played an important role in the development of other open source and free software projects, and has contributed to GNU Robots, GNU Emacs, DOS Freemacs, and several DOS/UNIX compatibility libraries. At work, Hall is Web Production Manager for the University of Minnesota.

This article was originally published on and has been donated to the open source community by QuinStreet Inc. Please visit for up-to-date news and articles about Linux and open source.

Comments are closed.