(c) 2002 Jim Hall.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this copyright notice is preserved.
** HISTORY OF FREEDOS
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 softwaren 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 with a manifesto, and
posted them to the newsgroups:
first announcement:
001.txt
: Newsgroups: comp.os.msdos.apps
: Subject: PD-DOS project *announcement*
: Message-ID: <1994Jun29.002412.4803@rivers>
: From: ph99jh42@uwrf.edu (JAMES HALL)
: Date: 29 Jun 94 00:24:11 -0600
: Keywords: public domain DOS
: Summary: I'd like to start a PD-DOS project if one not already exists
: Nntp-Posting-Host: enterprise.acc.uwrf.edu
: X-Newsreader: TIN [version 1.2 PL0]
: Lines: 31
:
:
: 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
: James.F.Hall@uwrf.edu
:
:
:
: PS -- of course, if this already exists, please point me to the group
: leader so I can at least contribute!
original manifesto:
002.txt
current manifesto:
manifesto
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 command.com, 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:
1. 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.
2. As the DOS for various DOS-like environments, to allow users to run
DOS applications in environments that would not otherwise support
them.
3. 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.
___________________________
Jim Hall lives in St. Paul, Minnesota, with his wife (Sara) and three
cats (Murphy, Vita, and Linus.) Jim 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, Jim is Web
Production Manager for the University of Minnesota.