I grew up in the 1970s and 1980s, and that meant I grew up with computers. Our first home computer was an Apple II, and my brother and I taught ourselves about BASIC programming on the Apple. I wrote a lot of games and math puzzles, because that’s really the limit of AppleSoft BASIC programming.
Later, our family replaced the Apple with an IBM PC, and I was excited to try the new DOS command line. DOS provided its own BASIC, but also a host of tools. Well, in those days “host” meant about twenty utilities, mostly to work with floppy disks and files. it wasn’t until MS-DOS 5 that I felt DOS had become truly “modern.” This version, released in 1991, replaced the venerable Edlin “line editor” with a full-screen interactive editor. It also included a completely new QBASIC programming environment and an incredibly useful DOS Shell that supported task-switching, a precursor to true multitasking.
And it was on this new system that I learned how to program in C and other languages. With this new knowledge, I wrote my own utilities to enhance the DOS command line, sometimes creating entirely new versions of existing DOS utilities with extra features and functionality. I felt like a true DOS “power user” and I felt very comfortable at the command line. I did much of my work on the command line, with my own tools to manage my directories and process files, but relying on my favorite DOS applications to write papers for class, or play games when I wanted to relax.
In 1993, I learned about Linux and considered this as my next “step up” from DOS. I installed an early Linux distribution on my little PC at home, but I couldn’t do away with DOS entirely. Linux didn’t have many applications in those early days, so I would frequently reboot into DOS to use my word processor or spreadsheet. I loved DOS, and relied on it.
So you might imagine I was a tad upset to learn in 1994 that Microsoft planned to “do away” with MS-DOS the following year. According to interviews in tech magazines, Microsoft’s next Windows version wouldn’t need MS-DOS, and DOS would effectively become a “dead” operating system. Everyone had to upgrade to Windows.
I’d used Windows by this point, and I wasn’t a fan. If you remember Windows 3 at the time, you know it wasn’t a great experience. I thought Windows was slow and unreliable. When a Windows application ran into problems, that one application could take down all of Windows. And I thought, “If Windows 4 will be anything like Windows 3, I want nothing to do with that.” So I decided to stick with Linux and DOS.
But if Microsoft was getting out of the DOS game, how could I keep running DOS?
I decided that if we were going to keep DOS around, we had to make our own. I asked around on Usenet, the forums or “message boards” of the day, and asked if anyone was working on their own DOS. The answer was “no,” but folks thought it was an interesting idea.
A few months later, on June 29, 1994, I made this announcement on comp.os.msdos.apps:
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.
I called it “PD-DOS” because I wanted to create a DOS that was free for everyone to use, and I thought that meant “public domain.” But it didn’t take long to realize the difference between public domain and “Free software,” so we changed the name to Free-DOS after a few weeks. We later dropped the hyphen to become FreeDOS.
I’ll save you the details on the history of FreeDOS, except to say that we had a very frequent release cycle, and we added a ton of new utilities to DOS. We divided FreeDOS into “groups” – the “Base” group replaced the core features from MS-DOS, and other groups provided editors, drivers, and development tools. And everything was open source. For example, the “Lang” group included the MicroC Compiler and Val Linker so FreeDOS developers could compile C programs. You can’t have an open-source DOS if developers don’t have open-source tools to build more of FreeDOS.
It took us a long time before we felt comfortable releasing a version of FreeDOS that was “complete” enough to earn the “1.0” label. FreeDOS 1.0 finally appeared in September 2006. Development slowed after that, mostly because DOS stopped being a moving target in 1995 when Microsoft released Windows 95 and stopped making new versions of MS-DOS. It took another six years before we released FreeDOS 1.1 in January 2012, and four years after that for FreeDOS 1.2 in December 2016. Each release added new features, including new drivers for modern hardware, updated software, and new tools.
FreeDOS as a Modern DOS
We are working on the next version of FreeDOS, and we released FreeDOS 1.3 Release Candidate 4 in April 2021. We’re really proud of this new version, especially the “Live CD” mode that allows you to run FreeDOS from the CD, without having to install anything to a hard drive.
If you don’t want to run FreeDOS from the LiveCD, you can also install it to your hard drive. We updated the installer in FreeDOS so it detects all sorts of conditions and takes the appropriate action, like creating a new disk partition for FreeDOS if none exist already.
Older FreeDOS distributions used to prompt you for everything, even selecting individual programs to install. The new installer is very streamlined. It asks you a few questions to get started, then does everything else on its own. Installing FreeDOS on an empty virtual machine takes only a few minutes.
It’s great that you can customize your FreeDOS installation. DOS was never a big operating system, but FreeDOS includes a lot of optional software in the distribution. To save space, start by installing a bare minimum system, then use the FDIMPLES package manager to install the extra packages you want to use. Don’t forget that FreeDOS 1.3 RC4 also includes a “Bonus” CD full of extra programs that you also might find interesting.
FreeDOS 1.3 RC4 also includes a variety of Linux and Unix tools. If you’re a Linux user, you should feel right at home with commands like cal, du, grep, sed, less, head, tr, tee, and even a version of Unix nroff called NRO. One of my favorite Unix utilities on FreeDOS is the Freemacs editor, an editor that’s very similar to GNU Emacs from Linux.
If you don’t like Freemacs or the standard DOS Edit text editors, you can choose from over a dozen editors to suit your style. More recently, I’ve switched to FED, a folding editor that “folds” blocks of code so you can see more of your program on one screen. FED also adds color to your code listings, so keywords, comments, numbers, and other program features stand out to help you spot bugs before you compile.
If you want to write your own programs, we also have several compilers and assemblers. A recent addition is an IA-16 version of GCC. This requires a 32-bit CPU to compile, but the programs it creates can run on any 16-bit system. We also provide the 32-bit DJGPP C compiler, which is probably more like the GCC that you’re used to from Linux. For most of my programming, I prefer the OpenWatcom C Compiler.
But most people use FreeDOS to play games. And that’s cool, we even include a few of our own. If you’re into arcade-style shooters, fly missions in WING or Kraptor. For classic games to kill time, try Nibbles or Tetris. And FreeDOS has a bunch of other fun games from a variety of genres; find the one you like.
You can find the new FreeDOS 1.3 RC4 from the FreeDOS website, on our Downloads page. To install FreeDOS, you’ll need at least 20MB of free disk space: 20MB to install a plain FreeDOS system, and 250MB to install everything, including applications and games. To install the source code too, you’ll need up to 450MB of free space.