Author: JT Smith
As someone who writes about Open Source, I spend quite a bit of time
considering its future in the enterprise. I don’t spend
much time reflecting on how Open Source can improve on the technology of
yesteryear. But there are people who do just that.
Consider MS-DOS. If you are my age (old enough that it takes too long to
calculate how old you really are), you remember MS-DOS. And if you
think about it too long and hard, you might begin to get the shakes
remembering the machinations required to manage memory, load CDROM
drivers, and get the graphics to display correctly.
DOS. It’s one of those things that is best left buried in the crevices of
time. Or so I thought.
Believe it or not, there are Open Source developers busily building a
better DOS. Why? Because DOS is a long standing platform that is still
used for some embedded applications. And embedded applications need a
reliable, inexpensive base. With MS-DOS no longer an important product
for Microsoft and its cost relatively significant to embedded developers,
some folks believed there was a need for an Open Source DOS-compatible
FreeDOS was a project started in 1994 to counteract Microsoft’s stated intentions to do away with MS-DOS and move everyone to Windows. It employs no Microsoft code and is designed to be a work-alike equivalent to MS-DOS. FreeDOS does not guarantee that it does everything the same way
MS-DOS does, but it attempts to get it all done nonetheless. The
specification for FreeDOS is derived from public documentation describing
MS-DOS. It is still in beta test, but the system is quite usable.
Currently, FreeDOS is at version Ripcord Beta 7, aka “SPEARS.”
I resurrected an old 120 MHz 486/DX4 12MB machine in my basement and
proceeded to get to work. Because my machine is equipped with a 270 MB
disk drive, it has more than enough space to install the entire operating
system and its source code (when was the last time a 270 MB disk was more
than enough space for anything?). In fact, the total installation took
only about 35 MB of disk space.
The installation of FreeDOS was simple enough, once I got my old hardware
running. I downloaded the ISO image from Freedos.org’s download page, burned the CD, and cut the boot floppy. The FreeDOS CD does include a CD driver, but my 4x IDE CDROM was so old that it wasn’t recognized. So I had to use an old
vendor-supplied CDROM driver I had lying around. The installation
requires that you stay around during the process, because it constantly asks
for verification about installing various elements of the system. It is
not a large burden, though, because installation only takes a few minutes.
Booting up the system looks different than MS-DOS. First, there’s a neat
little boot manager that allows you to boot multiple operating
systems. This is very useful in a development situation. Next, the
boot-up messages are very different. This is not surprising, considering
the various drivers identify themselves as they load.
Once the system is booted, you are likely to notice that some things are familiar, while others have changed slightly. The output of the
“dir” command looks just like I remember from MS-DOS. The “edit” command
looks spookily like the MS-DOS “edit” command. Most of the normal DOS
commands look about the same under FreeDOS. Some commands (like “mem”)
use slightly different switches. Thankfully, the “/?” switch seems to
work to get a list of switches for most commands. There is also a decent
“help” command that documents a number of commands.
There are several factors indicating that this is a work in
progress. The installation notes warn that the floppy access is slow —
and it is. It does work fine, however. The “scandisk” utility only seems
to complete the first stage of work. The “format” command only seems to
do a quick format, regardless of which switches you specify.
There are a number of optional packages as well. Veterans of the
Linux/Unix/BSD crowd will be thrilled to learn that versions of “vi” and
“emacs” are available. There are also languages like Bywater Basic (which
I hadn’t touched since finding it on some of the early Linux
distributions) and an assembler.
Perhaps the most interesting add-on is Seal. Seal is a GUI that gives you a Windows-y interface, if you want one. The version I installed only contains a few
applications, but it shows a good deal of potential.
After checking out the software, the next step was obvious: load up some
serious DOS-based software and see what happens. My choice (perhaps
suggested by the code name “SPEARS”) was “Spear of Destiny,” the
relatively unsung sequel to the classic “Wolfenstein 3D”. It took some
research on the freedos.org Web site to find out how to free up enough low
memory to run the game (this is one area where there are some syntax
changes compared to MS-DOS), but once I got the memory in shape, the game
played just fine. The 486 was quite chipper (when was the last time I
called a 486 “chipper?”) and the game played true to form.
But, in the true spirit of Open Source, FreeDOS is not content to be an
imitation of the existing technology. In addition to impressive additions
like Seal, mentioned earlier, there is an effort underway to create a true
32-bit kernel. Yes, Virginia, there is a DOS Santa Claus. FreeDOS32 might someday be a DOS that doesn’t require
endless gyrations to manage memory. Isn’t it great what motivated technical people can try to do when there is no one in the way to say “no?”
So, while I certainly hope that DOS does not experience a resurgence as a
general-purpose business desktop, I do hope that the FreeDOS project
thrives. Open Source talks about freedom to use, but it also means
freedom to choose. FreeDOS gives people another choice. If you don’t
want DOS, try something else. But if DOS might be the key for that
special device you are building, check out FreeDOS. It is definitely
worth a look.