December 6th, 2016

FOSS DOS for 21st Century Hardware

Jim Hall

The founder and coordinator of the FreeDOS Project writes about FreeDOS 1.2, which is scheduled for a Christmas Day release. There is good news for classic gamers and nostalgia buffs: this one’s got games.

Wing FreeDOS

WING is a DOS game similar to the arcade game Galaga.

Sure, you know a lot about Linux, but what about other non-Linux free and open source software systems? FreeDOS is an open source implementation of DOS. While DOS isn’t as old as Unix, it has a rich history. Let me tell you about how FreeDOS came about, and what’s coming up next.

My introduction to computing

When I was growing up, we were fortunate to have a computer at home. This was in the 1980s, when home computers were still nascent. Like many, our first home computer was an Apple. My brother and I taught ourselves to program on this computer, and learned to code our own programs in Applesoft BASIC. I remember writing a lot of games and simulators.

A few years later, we replaced the Apple with the then-new IBM PC running MS-DOS. While the BASIC programming environment on MS-DOS differed from that on the Apple, I quickly fell in love with MS-DOS. I could do so much more on MS-DOS than I could with Applesoft BASIC, and the library of available software for MS-DOS was quickly growing. It was a great stepping stone for me.

If you are familiar with the era, MS-DOS became the de facto standard operating system throughout the 1980s. If you lived during the 1980s, and especially if you worked in an office during that time, it’s almost guaranteed you used MS-DOS.

In 1991, Microsoft released MS-DOS 5. With over eight million copies sold in the first year, MS-DOS 5 almost immediately became the most popular version of DOS ever. This upgrade was essentially a rewrite of MS-DOS, and offered a number of important improvements for home and business.

Around this time I discovered shareware, then a novel concept. Instead of buying software from a store, you downloaded the program from an online bulletin board and tried it out. If you liked the program, you could buy the full version by way of sending the programmer a check. Shareware also encouraged you to share the unregistered version with anyone, allowing quality shareware programs to proliferate via word of mouth and recommendations from other users. I relied on several popular shareware programs to write papers for school and do other work.

So it was that in the early 1990s I arrived at college already an established hard-core user of MS-DOS. I picked up a few developer tools and learned to code in the C programming language. As a physics student, I wrote my own programs to analyze lab data, and utilities to extend the features of the MS-DOS command line. While Windows 3.1 was available by then, it didn’t interest me. I preferred working at the command line over any graphical interface available at the time. I found I could do so much more from a command prompt than with a mouse.

The origin of FreeDOS

In late 1993 and early 1994, Microsoft began to talk seriously about the next version of Windows. Through interviews with countless trade magazines, Microsoft announced that the next version of Windows would do away with MS-DOS. In effect, DOS was dead.

At the time I thought, “If Windows 4.0 is anything like Windows 3.1, I want nothing to do with it.” I preferred working in DOS. Like Unix and Linux, you could combine multiple tools via the command line to quickly process data. DOS made it easy to get my work done.

I looked to Linux for inspiration. If programmers could work together via the Internet to create a free software implementation of Unix, surely we could do the same for DOS?

I discussed this idea with other DOS programmers on Usenet, the popular Internet chat board of the 1990s. People thought that a “free DOS” was an interesting idea, but no one seemed interested in writing such a thing. In my naïveté, I volunteered to lead an effort to create a “free DOS,” and on June 29, 1994, I posted this to comp.os.msdos.apps:

“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.”

In the months that followed, programmers from around the world joined in. We combined utilities that we had written, each to replicate or improve different features of classic DOS, and created a set of free DOS utilities. Tim Norman wrote our first command interpreter to replace COMMAND.COM from standard DOS. Soon after, Pat Villani contributed his DOS-compatible kernel, which others later improved to add networking and CD-ROM support. We released our first “Alpha” distribution in only a few months, in September 1994.

From this small beginning grew FreeDOS, an open source implementation of DOS that anyone could use.

We released several alpha versions over the next four years, then posted our first beta in 1998. By this time, Microsoft had all but eliminated MS-DOS, so FreeDOS didn’t have to chase a moving target and shifting compatibility with new MS-DOS versions.

By 2006 we had worked our way through many beta distributions and felt ready to finally release our first official version of FreeDOS. We posted the FreeDOS 1.0 distribution on September 3, 2006, and released FreeDOS 1.1 over five years later, on January 2, 2012.

Versions 1.0 and 1.1 both were very popular. Developers leveraged FreeDOS in embedded devices, my favorite example being a pinball machine that used the OS to run the board and display the score. Big-name computer vendors like Dell and HP shipped it as a default operating system on some PC desktops and laptops. Even today, you can find popular manufacturers pre-installing FreeDOS on some computers.

HP Probook freeDOS option

Configuring an HP Probook 455 G3 Notebook PC with FreeDOS.

But the story doesn’t end there. Soon, we’ll have a whole new version of FreeDOS — and I’d like to tell you about it.

Introducing FreeDOS 1.2

It’s been several years since FreeDOS 1.1, so it’s time for a new release. We started discussing a new release a while back, asking what features should appear in the next official release. If the next release would dramatically change what FreeDOS is about, we decided it should be 2.0. But if it’s an incremental change, then 1.2 would be more appropriate.

Some argued that we should advance FreeDOS. Even I wanted to see the next version become a “modern” DOS. But what does it mean to have a “modern” DOS? In the end, after many long discussions, we decided that a “modern” DOS would not be “DOS” anymore. FreeDOS shouldn’t break DOS compatibility; FreeDOS still needs to be “DOS.”

So we decided the next version should be FreeDOS 1.2. The new release is an incremental change over FreeDOS 1.1. Our Base package group includes those core utilities that replicate the behavior of classic DOS. Here, the kernel and many core utilities remain unchanged, although we’ve updated a few. Most of the changes in the FreeDOS 1.2 distribution can be found in the other packages we include.

The Utilities package group includes several new useful tools. For those who use FreeDOS to play classic DOS games, we provide SLOWDOWN to let you run certain older games on a fast CPU. We provide several image processing programs such as GIFSICLE and PNGCRUSH. If you wish for a more Unix-like environment, we also include several familiar commands such as SED, GREP, HEAD, TEE, and BC.

freedos bc

The GNU BC calculator in FreeDOS 1.2.

The Network package group in FreeDOS 1.2 also makes it easier to get online, with a revamped network setup and useful network utilities such as LINKS for text-mode web browsing and DILLO for more familiar graphical-mode web browsing.

FreeDOS Dillo web browser

The DILLO web browser in FreeDOS 1.2.

One major change is the inclusion of a new Games package group. We’ve avoided games in previous FreeDOS distributions, but since so many people prefer FreeDOS to play their favorite classic DOS games, it seemed a good idea to include a variety of open source games from different genres. First-person shooter fans can find FREEDOOM and BOOM, while classic gamers can try NETHACK, INVADERS, TETRIS Queen, and SUDOKU86. You may also enjoy WING, similar to the Galaga arcade game, or Kiloblaster, a fast-paced arcade shooter game. FreeDOS 1.2 has lots of games to explore!

Playing SUDOKU in FreeDOS 1.2.

Playing SUDOKU in FreeDOS 1.2.

Of all the changes in version 1.2, I’m personally most excited about the new installer. I wanted the install process to be easy for both new and experienced users. Your first experience with FreeDOS (via the installer) shouldn’t be a painful one. Jerome Shidel wrote our improved installer. It is both simple and powerful. If you’re a new user and want to install FreeDOS 1.2 with the default, it’s only a few key presses and you’re done! Advanced users can unlock an Advanced mode that provides more options to tweak the installation.

Installing FreeDOS

Installing FreeDOS

Installing FreeDOS

Installing FreeDOS

The streamlined install process in FreeDOS 1.2.

Of course, you can run your own DOS programs on FreeDOS 1.2. For example, you can play your favorite DOS games. 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.

Jill of the Jungle FreeDOS

The shareware game Jill of the Jungle, running on FreeDOS 1.2.

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. Developers can also use FreeDOS in an embedded system. While modern embedded systems now run Linux, if you support an older embedded system, FreeDOS can fit in very well.

As Easy As FreeDOS

The shareware spreadsheet As Easy As, running a demo calculation on FreeDOS 1.2.

I’m very excited for the new FreeDOS 1.2 release! I think there’s something for everyone to enjoy in the new FreeDOS. Play your favorite classic DOS games, run legacy programs, or develop embedded systems. Whatever your preference, I hope you like the FreeDOS 1.2!

The official FreeDOS 1.2 distribution will be available on Sunday, December 25, 2016.

Jim Hall
Jim Hall, is an active contributor to open source software. In open source communities, he is perhaps best known for his work on FreeDOS, and more recently for usability testing in open source software.

5 comments to FOSS DOS for 21st Century Hardware

  • Always happy to hear news about FreeDOS, and happy to see it’s still under active development. Thanks for the update, Jim!

  • Askfor

    Back in 90’s I was impressed with Novell DOS, which was, in fact, Digital Research DOS with multitasking, rebranded by Novell. It was perfectly compatible, except Windows would not run on it, thanks to Microsoft’s unfair business practices. I remember playing Doom, Heretic and Hexen in Novell DOS. Is there a multitasking in FreeDOS ?

  • drenw

    Seems that FreeDOS is very often used to flash motherboard BIOS’s, as this Archlinux wiki article gives the rundown on; . Here’s to hoping that with the new v1.2 version, Linux users will be more apt to use FreeDOS via DOSEMU e.g., at . Also to hoping that Linux distro maintainers will automatically start including packages during their OS installations for using FreeDOS.

  • Mike

    FreeDOS is great but DOSEMU is effectively dead…it’s been 9 years since the last release.

    If (like me) you like to play old DOS games, DOSBox is a better solution.

    If that extends to Win9x games, then DOSBox-X is an even better solution (since DOSBox intends to never support Win9x properly).

  • @drenw: Yes indeed. When I was working IT a few years back and we had to update every laptop’s BIOS before it shipped, I set up a FreeDOS boot CD that would boot, check what hardware it was running on, and flash the appropriate BIOS update. (There was some problem in our Windows image that prevented us from just running the updates from inside Windows; it was later fixed and my image became obsolete. But it was an interesting project while it lasted.)