Friday, September 15, 2017

Who wants to improve the kernel?

This article has changed since it was originally posted
I made an error when I originally posted this, so wanted to clarify. I thought the kernel was the only remaining part of FreeDOS that requires a non-open source software toolchain (Borland C). And in fact, I mentioned Borland in the Q&A from my FreeDOS talk at Kieler. From the FreeDOS kernel build.txt file:

This kernel compiles with Turbo C 2.01, Turbo C++ 1.01 (now freely available!), Turbo C 3.0, Borland C 4.51 & 5.01. It should work with other Borland and Microsoft compilers and (Open)Watcom C. GCC can compile the kernel but the result does *not* work (no 16-bit x86 support).

(emphasis mine)

I interpreted that the kernel "should" compile with OpenWatcom as being uncertain. But Rugxulo reached out to me and confirmed that "The FD kernel can already compile fine with OpenWatcom."

So thanks to Rugxulo for clearing that up for me! I haven't been involved in kernel programming since Pat died, so I didn't realize we now compiled on OpenWatcom.

I've edited this post to reflect this update.

Wednesday, September 13, 2017

Attending Kieler Open Source und Linux Tage

Over the next few days, I will be in Kiel, Germany to attend the Kieler Open Source und Linux Tage. I'm giving two talks while I'm there: one about usability testing in open source software, and one on the past and future of FreeDOS. You can find links to both in the conference program.

Are you planning to attend Kieler? If so, please email me so I can meet you!
Update: If you want to download a copy of my slides, you can find them on my personal page. The presentations are available under the Creative Commons Attribution.

Saturday, September 9, 2017

23 Years of FreeDOS

On June 29th, 2017, FreeDOS turned 23 years old. There’s nothing special about "23," but I thought it would be great to celebrate the anniversary by having a bunch of past and current users share their stories about why they use FreeDOS. So, I made a call for users to write their own FreeDOS stories.

These stories are written from different perspectives, such as: "How did you discover FreeDOS?" "What do you use FreeDOS for?" and "How do you contribute to FreeDOS?" In short, I requested users to answer the question: "Why FreeDOS?"

This eBook contains the voices of many of the users who contributed their stories, as well as the history of FreeDOS. Many individuals have helped make FreeDOS what it is, but this eBook represents only a few of them. I hope you enjoy this collection of 23 years of everything FreeDOS!

You can find the free ebook at 23 Years of FreeDOS (ebook) on the FreeDOS website.

Thanks to Lauren Holly, Ben Norrman, and Shane Rose for serving as co-editors on the ebook. And special thanks to Shane Rose for the ebook design.

23 Years of FreeDOS is available for free, under the Creative Commons Attribution 4.0 International Public License (CC BY 4.0).

Tuesday, August 22, 2017

How to get involved in FreeDOS

Interested in getting involved in FreeDOS, but aren't sure where to start? We have several ways for new developers to get engaged. Here are two starting points:

Port FreeDOS utilities to OpenWatcom
When we created FreeDOS in 1994, there weren't a lot of Free software or open source software C compilers for DOS. The few that existed were subsets of C, or so limited in their functionality that they weren't useful in creating the FreeDOS utilities. The most popular C compilers of the era were Borland's C Compiler and Turbo C Compiler. (A few years after FreeDOS, Borland released the Turbo C Compiler at no charge as part of their "Museum" collection of old DOS software.) It's not surprising that a lot of FreeDOS utilities were written using one of Borland C or Turbo C.

Since then, the folks over at OpenWatcom have released an open source software C compiler for DOS. But many FreeDOS utilities must still be built using the closed source compilers. We prefer to be able to compile all code in a compiler we can distribute in FreeDOS itself.

I encourage any new developer to pick up a FreeDOS utility, and port it to the OpenWatcom C Compiler for DOS. The difficulty level here is variable. For simple file tools, this is likely straightforward and may require little work other than writing a new Makefile instruction. For other utilities, such as disk tools, there may be much more work involved.

If you take on this challenge, I also encourage you to reach out to the program's developer or maintainer. The FreeDOS utility may not be abandoned; more likely, the developer may not have needed to make new releases if their utilities are feature complete and haven't had bugs reported in years.
Port GNU Utilities for FreeDOS
Years ago, the "GNUish" project ported many GNU utilities to DOS. But eventually the project stalled. Before GNUish shut down, they asked us to mirror their files. You can find them at gnuish on ibiblio. As far as I know no one has created a comprehensive update to GNUish.

I think it would be great for someone to pick up the GNUish project again. Port the GNU Utilities to FreeDOS using OpenWatcom, or DJGPP. This is likely challenging, as it will require creating wrappers for different functionality, and workarounds for other functionality that doesn't exist on DOS.

If you're interested in contributing to FreeDOS, but you aren't sure what to work on, you might consider porting the GNU Utilities or other Unix utilities to FreeDOS. We'd love to add them to our archive. Read more at Unix utilities for FreeDOS

Saturday, August 5, 2017

FreeDOS for OEM

Jerome Shidel contributed this article for the FreeDOS summer coding blog challenge, about how to use FreeDOS for OEM PCs.
Different computer manufacturers will sometimes include FreeDOS as a pre-installed operating system option. This is always great to see! And FreeDOS, like any DOS, is pretty easy to set up as a pre-installed operating system.

When creating the FreeDOS 1.2 installer, I thought it would be good to keep this subject in the back of my mind. How can we make FreeDOS easier for original equipment manufacturers (OEMs) to include as a pre-installed operating system?

All of those computers, the ones that ship with their only installed operating system being FreeDOS, they should be considered. Yes, I do realize that mostly they are sold outside of the United States as a low cost option. And, users will most likely just be installing a copy of Windows or Linux onto them. But, I figured there may be some people that get them to run FreeDOS. So, I kept that in mind while designing how the installer handles certain things. Nearly always, I attempted to maintain an OEM PC compatible and extensible design. I knew it should work. But, I was very busy prior to the 1.2 release and never got around to testing it.

Now that FreeDOS 1.2 has been out for a while, I wanted to come back to the subject. I finally have tested it, and wow—it is awesome!

So, here is the quick way I made an OEM PC style setup with FreeDOS 1.2:
  1. Create a USB fob drive using the USB "Full" installer (FD12FULL.img).
  2. Boot that USB fob drive on the PC.
  3. When the installer launches, select the language then exit to DOS.
  4. Run FDISK 2
  5. Create your FreeDOS Recovery Partition. In my test, I used 1024MB.
  6. Exit FDISK and reboot the computer.
  7. When the installer launches again, select the language then return to DOS.
  8. Run FORMAT D: /q/u/v:FD-RECOVERY
  9. Run XCOPY /E C:\*.* D:
  10. Run SYS D:
  11. Run FDISK 2
  12. Activate the Recovery Partition on the D: drive.
  13. Create the user's big main FreeDOS partition, but do not activate it.
  14. Shutdown, then clone the drive a couple million times.
Once done, it has a couple really cool effects:
  • The first time the PC is booted, the user gets to install FreeDOS. They even get to pick their language and keyboard settings for their install. Afterwards, when the system reboots, it boots into their install.
  • The C: drive is that big user partition and the D: drive is the Recovery Partition. The Recovery Partition has all of the packages from the FreeDOS 1.2 distribution. So, you can use FDIMPLES to install and remove more packages with out needing to insert any additional media.
  • OEM vendors could add additional packages. Vendors might do this for networking and sound drivers. Those custom packages could be configured to be automatically installed.
There was only one issue of note that I found. If the user wishes to reinstall over their existing installation, using the Recovery Partition, they will need to change their active partition using FDISK to the Recovery Partition. Otherwise, the SYS transfer will fail. This actually has to do with force-updating of the MBR code, and not the simple SYS transfer. You can also avoid this problem by running the FreeDOS Installer in Advanced mode and “Not transferring the system files.” But, it is easier just to re-activate the Recovery Partition and reboot.​

Thursday, July 20, 2017

The FAST and SOFA compilers

As part of the FreeDOS Summer Coding Blog Challenge, Bruce Axtens writes on his blog about the history of the FAST and SOFA compilers for FreeDOS.

If you don't know about FAST and SOFA, FAST is loosely based on Basic, Pascal, C and Assembler. The programs produced by FAST are very small and very fast. SOFA is an 8088 (and semi-80386) assembler, with syntax based somewhat on A86 and CHASM.

Both FAST and SOFA were created by Peter Campbell, who passed away in 2007. FAST and SOFA have since been released under the GNU GPL.

Thursday, July 6, 2017

How to compile bwBASIC from source

Dr Owain Kenway recently wrote about a problem he discovered with Bywater BASIC, one of the BASIC interpreters we include in the FreeDOS 1.2 distribution. Looks like we made a mistake on our end by including the Win32 version, but Owain shows how to recompile a native DOS version. You can read his how-to on his blog:

Fixing bwBASIC on FreeDOS »

While this isn't necessarily part of the FreeDOS Summer Coding Blog Challenge, I'd like to include it as such because it shows the power of open source software: you can always compile it yourself.

(We'll also update the bwBASIC package on our end. Thanks, Owain!)

Wednesday, July 5, 2017

How to support different spoken languages in FreeDOS programs

All summer, we are doing the FreeDOS Summer Coding Blog Challenge, where we ask you to write and share some tips that new developers can use to get started in FreeDOS. I thought I'd start by writing about the Cats and Kitten libraries to support different spoken languages in your programs.
When you write a new program, you probably don't think about spoken languages other than your own. I am a native English speaker, so when I write a new program, all of my error messages and outputted text is in English. And that works well for the many people who have English as their native language, or who know enough English as a second language to get by. But what about others who don't speak English, or who only know a little English? They can't understand what my programs are saying.

So in the early 2000s, I decided FreeDOS should have a system to support different spoken languages. This type of multi-language support is called Internationalization (or "I18N," because there are eighteen letters between the "I" and "N").

I looked around at how other popular systems had implemented multiple spoken languages. The standard Unix method is with a set of C library functions built around language "catalogs." A catalog is just a file that contains all the error messages and other printed text from a program. In the Unix method, you have a different catalog for every language: English, German, Italian, Spanish, French, and so on.

My first FreeDOS I18N library was a stripped-down implementation of the Unix method. This is a very simple method. Every time you want to print some text in the user's preferred language, you first look up the message string from the catalog using the catgets() function—so named because it will get a string from a message catalog.

In Unix, you use catgets() this way:

  string = catgets(cat, set, num, "Hello world");

This fetches message string number num from message set set, from language catalog cat. The organization of messages into sets allows developers to group status messages into one set (say, set 1), error messages into another set (such as set 7), and so on.

Before calling catgets(), you need to open the appropriate language catalog with a previous call to catopen(). Typically, you have one catalog per language, so you have a different language file for English, another for Spanish, etc. Before your program exits, you close any message catalogs with calls to catclose().

If the string doesn't exist in the message catalog, catgets() returns a default string that you passed to it; in this case, the default string was "Hello world."

I implemented a simplified version of these functions in a FreeDOS Internationalization library called Cats. To save on memory, Cats supported only one open catalog at a time. If you tried to open a second message catalog, the call to catopen() would return an error (-1).

Message catalogs were very simple under Cats. Implemented as plain text files, Cats loaded the entire message catalog into memory at run-time. In this way, you didn't need to recompile the program just to support other languages; you just added another message catalog file for the new language. An English message catalog for a simple program might look like this:

  1.1:Hello world
  7.4:Failure writing to drive A:

The same message catalog in Spanish might look like this:

  1.1:Hola mundo
  7.4:Fallo al escribir en la unidad A:

For example, the string "Failure writing to drive A:" is message number 4 in set 7.

The Cats library was a simple way for developers to add support for different languages in their programs, written in C. And because Cats implemented a Unix standard, it made porting Unix tools to FreeDOS much easier. Once you added the calls to catgets(), all you needed to support other languages was a message catalog that someone translated to a different language. And I kept the Cats message catalogs very simple; they were plain text files.

Cats was a neat innovation, but loading the messages into memory was cumbersome because it used streams. I admit that I just did it the quick and easy way. Fortunately, other FreeDOS developers improved on Cats to optimize the loading of catalogs, reduce memory footprint, and add other enhancements. The new library was noticeably smaller, so we renamed it Kitten, also written in C.

Because of the optimizations, Kitten used a slightly different way to retrieve messages. Since Cats only supported one message catalog at a time anyway, Kitten removed the cat catalog identifier. Once you open a message catalog with kittenopen(), all calls to kittengets() assume that message catalog. You only need to make a single call to kittenclose() before you end the program.

Using Kitten made it much easier to support different spoken languages in FreeDOS programs. Here's a trivial example to put it all together:

  /* test.c */

  #include <stdio.h>
  #include <stdlib.h>
  #include "kitten.h"

    char *s;
    s = kittengets(7, 4, "Failure writing to drive A:");

This loads a message catalog "test" into memory, then retrieves message 4 from set 7 into a string pointer s. If message 4 in set 7 isn't found, kittengets() returns the default string "Failure writing to drive A:" into s. The program prints the message to the user, then closes the message catalog before exiting.

Typically, you name the message catalog after the program's name. So the message catalog for the FreeDOS CHOICE program is "choice". Kitten searches for the language file in a few locations on disk, and always appends the value of the %LANG% environment variable, which is typically set to the two-letter language abbreviation: "en" for English or "es" for Spanish. The DOS filename for the English version of the "choice" language catalog is CHOICE.EN, and the Spanish language version is CHOICE.ES.

A limitation to Cats and Kitten is that it can only support single-byte character sets supported by DOS. So Cats and Kitten cannot support Chinese or Japanese, but should do fine with most other languages.
You can find Cats and Kitten at the FreeDOS files archive on ibiblio, under devel/libs/cats/

We made three revisions to Kitten, so the latest version is Kitten revision C, which you can download directly as

FreeDOS contributor Mateusz "Fox" Viste wrote a similar implementation for Pascal programs, called Cubs. You can also find it on ibiblio, under devel/libs/cats/cubs/

FreeDOS developer Eric Auer created a command-line version of Kitten, named Localize, so you can provide internationalization support for DOS Batch (BAT) files. Find it on ibiblio, under devel/libs/cats/localize/

Monday, July 3, 2017

FreeDOS Summer Coding Blog Challenge

FreeDOS just celebrated our 23rd birthday on June 29. That's a long time for any open source software project, so while there wasn't anything special about "23," we decided to mark our project's anniversary with a FreeDOS Blog Challenge. For the blog challenge, we asked you to share your "FreeDOS story" about how you discovered FreeDOS or how you used FreeDOS. During the month of June, we shared these FreeDOS stories as "guest posts" on our blog. Thanks to everyone who sent in a story! You can find links to all the stories at "Happy 23rd birthday to FreeDOS!"

Since the blog challenge was such fun, a community member on Facebook suggested a followup. I thought that was a great idea.

Announcing the FreeDOS Summer Coding Blog Challenge! Throughout the summer, share your tips about programming for FreeDOS. Post them on your own blog, or email them to us and we'll do guest posts for you.

What should I write about?
You might write a "how-to" article about how to manage very large arrays in memory, or how to load very large files. Or maybe you could talk about how to optimize a DOS program's I/O operations, such as how to read chunks of a file into a memory buffer using read() rather than using streams. Or you might want to write an article about how to use the conio functions to control the screen and read from the keyboard. Or maybe you could write something a little more "entry level" like tips to use the FreeDOS Kitten library to support multiple languages in your program.

Your "how-to" articles don't necessarily need to be about coding in a language like C or Assembly. If your preferred programming language is Pascal or BASIC, then write something about how to write programs in those languages for FreeDOS. If it's a programming language that's included in FreeDOS, we'd like to include it in the FreeDOS summer coding challenge.

Don't limit yourself to compiled languages, either. You can do lots of clever things at the FreeDOS command line and in BAT ("batch") files. So you could write an article about how to use a batch menu tool, like Jerome's V8 PowerTools included in FreeDOS 1.2, to create a neat interactive "program" as one smart batch file.

We want to hear from everyone! It's not just about developers, or people who contribute to the FreeDOS Project directly. The FreeDOS summer coding challenge is for anyone.
How do I write an article?
If you don't often write for a blog, then writing a FreeDOS "how-to" article might seem a little daunting. But really, it's easy!

I recommend you write your article as though you were explaining it to a friend. If it helps, write a draft in your email program, so you can convince yourself you're emailing someone about programming in FreeDOS. And if you like, you can actually send that email message to me (jhall@freedos…) and I'll use it as a guest post on the FreeDOS blog.

If you have your own blog or website, post your story on your blog, and email me to let me know where to find your article. If you don't have your own blog, I would be happy to post it for you as a "guest post" here. I'll even do light editing for you and take care of formatting.

Don't worry about making it perfect. I can do light editing for you before I put it up as a guest post. As in the FreeDOS Blog Challenge, I'll edit for spelling, grammar, and style before I post your article on our blog. I try not to make changes to content or to the flow of your article—but if I do, I'll always run the changes by you first.
Send us your story by September 30!

If the FreeDOS summer coding challenge works out well, we might do a similar blog challenge in winter, maybe about your favorite DOS applications.

Guest post: Updating BIOS with FreeDOS

Lars Noodén shared this note about using FreeDOS to update the BIOS on a computer. On the FreeDOS website, we like to say that most people install FreeDOS to play classic games, run legacy software, or do embedded development. And for installing FreeDOS, that probably covers almost everyone. But there are a lot of folks who use FreeDOS to do exactly what Lars describes: update the BIOS.

I use FreeDOS only occasionally—but when I have used FreeDOS, it has been a life saver. The most recent time was when I needed to update the BIOS on an old laptop. I was able to make a FreeDOS image containing the BIOS update and then modify GRUB2's configurations to allow me to boot it. The GRUB2 part, as opposed to GRUB1, was hard. The FreeDOS part was straightforward and easy. Here's how I did it:

This was all done on an ancient laptop using a Long Term Support (LTS) version of Ubuntu GNU/Linux for AMD64 computers, which to my consternation used GRUB2.

First, after downloading the FreeDOS boot floppy and unzipping it, I mounted the resulting disk image read-write using the "loopback" device so that I could edit it. I copied the vendor's ".EXE" style BIOS update there so it would be available while FreeDOS was running. I then removed AUTOEXEC.BAT so that I would get the normal command prompt when booting. Then I unmounted the disk image and it was ready to go, so I copied it to /boot/floppy.img and was all set with that. That was the easy part.

Next was the hard part with GRUB2. While it was fairly easy to figure out how to configure the old GRUB1, the new version is not. After much searching online, I ended up "cargo-culting" it. So if you follow this route, try to find and read current documentation. It turned out that I had to first to get memdisk into the /boot directory. The package syslinux at the time could do that—although now the package grub-imageboot seems to do that job, and installing it puts memdisk directly in /boot for you.

Then GRUB2 had to be configured to offer memdisk and the modified FreeDOS boot floppy as an option. That is done by creating a new file, /etc/grub.d/42_custom, and making it executable. In it, I put the following:
 cat <<EOT
   menuentry "FreeDOS" {
     linux16 /boot/memdisk
     initrd16 /boot/floppy.img
Then once update-grub was run, FreeDOS showed up in the boot menu starting with the next boot.

And with FreeDOS now in the boot menu, it was just to reboot the computer, select FreeDOS, and then run the BIOS update from the A: prompt. After the BIOS update ran to completion and I was back in Ubuntu, I removed the GRUB2 entry.

FreeDOS really saved the day in that way, since there was no other way to conjure the equivalent of a bootable floppy disk.

-Lars Noodén

Friday, June 30, 2017

Guest post: Building the FreeDOS installer

Jerome Shidel created our new FreeDOS Installer, which first appeared in the FreeDOS 1.2 distribution. Jerome shared his FreeDOS story:

My FreeDOS story began many years ago in the pre DOS days. An early version of MS-DOS may have been around. But, it definitely was not a thing yet. It brings back fond memories.

At age 9, laying on the living room floor and hoarding the television. The Sinclair ZX80 powered up and its manual open. Teaching myself to program its 1 kilobyte of RAM with that terrible membrane keyboard. It wasn’t long until my father got me the enormous 16Kb RAM add-on module. That was a lot to fill back in those days. Especially when you bumped the ZX80, it would reset that extra memory module.

Next came that incredible Atari 800XL and the Coleco Adam home computers, before my father got a Laser XT and we moved into the reign of the 8086 CPU and MS-DOS. I spent many wonderful winter days sitting up in the attic with a space heater blowing under the desk, waiting for the keyboard to warm up enough for the computer to boot without errors.

After several years, Windows 3.1x became popular. But, I only had limited use for it at the time. I still spent most of my time wearing out keyboards programming odds and ends in DOS.

In 1995, Microsoft broke my heart with Windows 95. It looked so new and cool. I was so excited to give try it on my almost new $5000 notebook. That would be pricey now, imagine that in 1995 dollars. I went over all the requirements. Everything specification was met or far exceeded what it needed. I was ready to rock Windows 95. Or, so I thought.

Part of the way through installation, the notebook all of a sudden went to just a black screen. The install trashed my video BIOS firmware. According to the manufacturer, I would have to send it in and have some chips replaced. Not the patient sort, through a lot of trial and error, I was able to just re-flash the BIOS and get it working again. But, it would never support Windows 95.

At that point, I started to look around the internet for alternates to Microsoft products. I messed around with Slackware Linux and other DOS systems (like PC-DOS).

Even though I eventually grew to accept what happened in the Windows 95 debacle, I never did truly forgive them. I can really hold a grudge. Not even now.

So, I have been aware of FreeDOS since its early days in the late 1990s. But, I really did not use it much back in those days. FreeDOS was still in its early alpha stages. Plus, there were several other DOS distributions and Linux platforms that I had favored at the time. However, I did install some of those early versions and played around with them a little. It found it interesting, that unlike many of the commercial versions of DOS, FreeDOS was not stagnant. It was slowly progressing. I figured that I needed to keep an eye on that crazy FreeDOS project.

Fast forward nearly 20 years…

Generally speaking, I'm not much into any of the social media stuff on the web. So it was kind of unusual that back around March of 2015, I was wasting time on Facebook.

I was looking around at Facebook pages and groups for some of my interests. OpenSUSE, bash, Delphi, Pascal, assembly, FreeDOS… I though to myself:

“Huh?” “What?” “There is a FreeDOS page on Facebook?” “Wow!” “Neat.”

I was quite surprised to find out that there were still several very active DOS communities around the world. It was pretty weird in a cool way. I figured I should do something nice for them.

So, I perused some of the programs that I wrote back in the early 1990s and decided to make some of the stuff Open Source. Most notably was "Program Manager v7.2" a multi-menu program and game launcher. PGM's most recent update was way back in 1992. Yet, it was well received by the FreeDOS community. I decided to do more.

That led me to doing a complete rewrite of PGM using more modern concepts and techniques. I went a little (ok, a lot) overboard. Theme-able, multi-language, custom fonts, screen savers and etc. Like FreeDOS, The Program Manager Eternity (PGME) was reborn to live forever.

During the development of PGME, it was brought to my attention that Jim Hall was looking to create a brand new installer for FreeDOS. Something that looked more modern, easier to install and was powered by batch files. Something that could use some "simple" command line utilities to install FreeDOS.

Hmm, a set of tiny non-memory resident utilities that can interact with each other to create a text mode UI for batch files. All the logic for the batch program to reside in the batch. Use no memory. Yet provide batch files with enough functionality to build a flexible and simple installer. It sounded interesting. Sure why not.

So, I volunteered to create some GPL tools that could do the job. There were a few naysayers that thought it could not be done or just wouldn’t work. But, most were excited that a new FreeDOS release might be coming soon.

Well as you know, one thing tends to lead to another. As the foremost expert on the usage of V8 Power Tools, a set of batch tools I wrote, I volunteered to create the new installer and work began on FDI, the FreeDOS Installer. There were many enhancements and additions to V8PT during the development of FDI. It was a long and slow process jumping back and forth between them as new needs arose. But, the work progressed.

There was a lot of back and forth with Jim during the development of FDI. Lots of design, workflow and other decisions. Plus, coordinating all of the additional languages supplied by the community, the new installer was quite a lot of work.

After dozens of public beta tests and two Release Candidates, we released FreeDOS 1.2-Final on Christmas Day 2016.

Many thanks to the FreeDOS community for all their help during the development of FreeDOS 1.2. There are a wonderful community with many great people. Without their efforts, this release would not exist.

Then of course there is FDIMPLES. Originally, I created it specifically just to provide detailed package selection for the Advanced Mode of FDI. Its only purpose, modify the package list used during installation. But, as go so many plans, it didn't stay there. It was just to cool for installing and removing packages. I have big plans FDIMPLES.

Nowadays, there are several other areas that keep me busy with the FreeDOS project. But, that would be a tale for another day.

-Jerome Shidel

Thursday, June 29, 2017

Happy 23rd birthday to FreeDOS!

Throughout the 1980s and into the 1990s, I was a big DOS user. I used DOS for everything: writing papers for class, doing lab analysis, dialing into the campus computer lab. I loved the DOS command line. I considered myself something of a DOS "power user" at the time, and I even wrote my own utilities to expand the MS-DOS command line.

So I was a bit irritated in 1994 when Microsoft announced, by way of doing interviews with tech magazines of the time, that MS-DOS would soon go away. The next version of Windows, they said, would do away with MS-DOS. The world was moving to Windows. At the time, "Microsoft Windows" meant Windows 3.1, which was not that great.

I certainly didn't want to be forced to use Windows, not if version 3.2 or 4.0 looked anything like Windows 3.1. I believed I could be more efficient by typing at the command line, not by clicking around with a mouse.

So I decided to do something about that. We could create our own version of DOS, something that worked with programs meant for MS-DOS, but our DOS would be free for everyone to use. Other developers had done the same with Linux, I reasoned, so surely we could do it with DOS.

Twenty-three years ago today, on June 29 1994, I announced to an Internet discussion group what would become the FreeDOS 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!
That announcement of "PD-DOS" or "Public Domain DOS" later grew into the FreeDOS Project that you know today. And today, FreeDOS is now 23 years old!

While there's nothing really special about "23 years old," I thought we should mark our anniversary by sharing some interesting moments in FreeDOS history. All this month, I've asked others to share their own stories about how they got started with FreeDOS, or how they joined FreeDOS, or how they contributed to FreeDOS, as part of the FreeDOS Blog Challenge. And I was impressed and humbled to see so many people respond to that challenge.

I'd like to highlight the FreeDOS stories folks have shared with us:

  1. Fritz Mueller: How I started with FreeDOS and Contributing to FreeDOS Help
  2. Luca Ferrari: How he discovered FreeDOS
  3. Imre Leber: Becoming a FreeDOS developer
  4. Shane Martin Coughlan: FreeDOS and OpenGEM
  5. Marti Van Lin: FreeDOS and MultiOS
  6. Nickalysis (YouTube): FreeDOS to play classic DOS games
  7. Dr Owain Kenway: Hobby programming with FreeDOS
  8. Pat Villani (on Pat's behalf): Creating the FreeDOS Kernel
  9. N2kMaster: Discovering FreeDOS
  10. Gregory Pietsch: First contributions to FreeDOS
  11. Erwin Waterlander: Joining FreeDOS
  12. Joel Graff: FreeDOS and Linux
  13. Nicolae Crefelean: Translating for FreeDOS
  14. Sparky4: Favorite OS
  15. Nick Gilbert: Playing classic DOS games
  16. Catharinus van der Werf: Backing up with FreeDOS
  17. Rugxulo: My FreeDOS journey

Thanks to everyone who contributed their FreeDOS story! If you would like to share your story about how you use FreeDOS, please send it to Jim (jhall@freedos…) and we'll include it as a follow-up guest post.

Since we've received so many "FreeDOS story" contributions, I plan to collect them into a free ebook, which we'll make available via the FreeDOS website. We are still collecting FreeDOS stories for the ebook! If you would like to add your story to the ebook, send us an essay by Tuesday, July 18.

While everyone has been writing and sharing their memories of FreeDOS, I have been going through the archives to share some interesting highlights from FreeDOS history. Here's a rundown of the history we've uncovered for you:

  1. A brief history of the FreeDOS logo
  2. FreeDOS as banner ads
  3. FreeDOS as web buttons
  4. A timeline of all FreeDOS distributions
  5. A collection of FreeDOS images
  6. Alternative FreeDOS images
  7. The evolution of the FreeDOS website

I hope you enjoyed our memories of FreeDOS as we celebrate the 23rd "birthday" of the FreeDOS Project. For more information, feel free to download our FreeDOS "press kit" (.zip) which announced the FreeDOS 1.2 distribution. Or visit the FreeDOS Wiki. The official home of the FreeDOS website is

Guest post: My FreeDOS journey

Longtime FreeDOS contributor Rugxulo tells his history with computers, and how he came to use FreeDOS. As you'll see, Rugxulo has worked on a lot of different projects, including an unofficial FreeDOS distribution.

In 1994, I got my first ‘486SX-25 with 4MB RAM running MS-DOS 6.0 and Windows 3.1. Obviously it was very under-powered compared to now. But it still had a lot of good, irreplaceable software, mostly games like King's Quest 6, which utilized VGA, CD-ROM, SoundBlaster 16, and mouse to great effect.

For a few years I was calling lots of BBSes via dial-up, but most software was shareware (or worse, nagware; remember NoNags?). It was very frustrating. Eventually I decided to learn programming just to avoid all the b.s. Luckily, even back then, there were some good open source development tools like NASM and DJGPP. I also found my favorite editor, TDE, which unfortunately was hacked/ripped off by some opportunist trying to grab money from suckers. Later I found the original version (public domain with sources). Gotta love greed (not).

In 1998, I was tired of the slow ‘486, so I got a used Pentium 166Mhz with 32MB RAM running Windows 95. I never did write much fancy software, but one wimpy NASM-assembled util (public domain) was uploaded to Simtel. I was only superficially aware of FreeDOS and DR-DOS, and they definitely inspired me (as did quasi-open projects like MAME), but didn't know the details and didn't try them (yet). Eventually Windows 95 hosed itself, so I gave up for a while.

In 2002, I got a Pentium 4, 2.52Ghz with 512MB RAM, running Windows XP. While NTVDM had some bugs and wasn't perfect (esp. for graphics and sound, e.g. old games), at least things like DJGPP were able to workaround most of the issues. But for those years I was still focused more on learning assembly. And I resurrected the old Pentium but chose DR-DOS 7.03 instead of FreeDOS. (Not exactly sure why, and I didn't fully understand the short-lived OpenDOS fork. Eventually I dual-booted both DR-DOS and FreeDOS on one computer.) DR-DOS was very good, but it had many hard-coded limits, plus most of its tools and drivers were limited. I ended up replacing half the utils and drivers with freeware (or free software). Several years later, FreeDOS did everything I wanted, so I weaned myself off DR-DOS. (How far we've come from FreeDOS Beta 8, which I still have on physical floppies! Can you believe that was before OpenWatcom even existed?)

In 2004, I manually (but sloppily) converted PSR Invaders from TASM to NASM. Later in 2005, I learned sed (stream editor), which I found immensely useful. With that simple scripting, I was able to convert some of my own code "on the fly" between various assemblers (for comparison, since I disliked being stuck to one tool).

Around 2006 I got more active in online forums, mostly about DOS programming. So I read and posted a lot to FASM, BTTR, FBC, and DJGPP. Since I was still using my old computers, I was interested in the various x86 CPU families (and CPUID). I also made a lot of floppies, including a single-floppy DJGPP install, as well as an unofficial FreeDOS mini-distribution (three disks) called RUFFIDEA. I made a simple Geocities website that hosted it with lots of links to other "new" stuff. (Eventually I migrated to Google Pages, which became Google Sites.) So I was heavily invested in keeping track of all the "new" DOS software developments. Since I was still using floppies and old machines, I was also interested in compression, hence my work on Paq8o8z (CPUID, FTW!).

But my 2007-era 32-bit Windows Vista laptop (Turion64x2, 1.7Ghz, 1GB RAM) was worse than Windows XP regarding NTVDM (silly DPMI limit). And it had many other issues. In fact, by 2010 it (and most of my other old hardware) had failed. I don't want to say I gave up on assembly, but I certainly lost some interest in that (and compression, floppies, etc).

By 2011, I was using a new Lenovo Core i5, 3.2Ghz, 6GB RAM (Nehalem Westmere). Again, Windows hosed itself. It was probably a blessing in disguise, because now I was triple-booting FreeDOS, Lucid Puppy Linux, and Windows 7 (64-bit). Plus, that machine has VT-X (EPT) and "unrestricted guest mode", which is dozens of times faster than my (2009-ish) Dell laptop (Pentium Dual Core, 2.2Ghz, 4GB RAM) running Windows 7 (also 64-bit, ugh).

Around this time I also started learning Pascal and derivatives. Truly, portable code is just easier to adapt to new architectures and OSes. (Don't think AMD64 will live forever!) FPC 3.0.2 even has an "i8086-msdos" target nowadays, so it's better than ever. (Heck, FPC supports inline assembly.)

By this time I also started using bootable USBs, thanks to great tools like RUFUS. And of course I went back to floppies (almost!) by making a minimal virtual image (MetaDOS) for networking under VMs with FreeDOS. Sure, I had bought a USB floppy drive years ago, but I don't need it these days. So it's easy to install, deploy, upgrade old (and new!) machines with FreeDOS. We've come a long way, baby!


Guest post: Backing up with FreeDOS

Catharinus van der Werf shared this story via Facebook about using FreeDOS 1.2 to replace MS-DOS to run system backups. Posted here with permission:

In fact, I grew up with MS-DOS. Used it since 1988, when I bought my first computer, a Commodore PC-I without a hard disk drive and with two 5.25-inch floppy disk drives. The first thing I did on that computer was build an application in Dynamo, a program that was used at the Wageningen University. I soon discovered DEFRAG, which sped up the execution of programs. In my work, I created software programs, so it was important not to lose that. That's why I used PCTools Backup, to backup the complete partition to a series of fifteen 3.5-inch floppy disks.

My next computer was a Pentium that ran Windows 3.1. Because I did not know what to do with that, I replaced it with MS-DOS. I continued making backups on that computer with PCTools.

When I started using Windows 95, I got inspired. But because the computers and partitions grew bigger every day, backing up on floppy disks became a time-consuming problem. So since then I use Norton Ghost to backup the working partition to another partition on the same computer. And that is how I work still at the present time: I have created a muli-boot system that contains Windows 10 and FreeDOS. When I boot to FreeDOS, I start Ghost and make a backup with it. And backing up with FreeDOS works excellent.

And when FreeDOS 1.2 arrived in December 2016, I immediately threw away all my MS-DOS floppy stuff. FreeDOS 1.2 was the first DOS version that could easily be downloaded, installed on a USB fob drive (MS-DOS does not provide such a wonderful attribute) and after that installed on a FAT32-drive. So since then my computers do not longer have MS-DOS on it, but only the wonderful working FreeDOS.

-Catharinus van der Werf

Wednesday, June 28, 2017

Guest post: My experience with FreeDOS

Nick Gilbert shared his FreeDOS story via his blog, describing how he found FreeDOS and used it to set up a DOS gaming system.

My Experience with FreeDOS »

Earlier this month, we also linked to Nick's YouTube video about using FreeDOS to play classic DOS games.

Thanks, Nick!

Guest post: Favorite OS

Sparky4 has been using FreeDOS for ten years, and shares this story about getting started and installing FreeDOS on a variety of hardware:

Here is my take on FreeDOS. I discovered FreeDOS in mid- to late-2007 when I got a computer technician "Starter Pack." It was a broken Gateway 2000 PC from 1997, with an Intel 80686 Pentium-II CPU, a Knoppix Linux CD, and a FreeDOS 1.0 "Full" CD. FreeDOS 1.0 was latest release.

I installed FreeDOS on my main computer, but I did not know enough at the time to boot into FreeDOS. Over time, I started using it more on a Packard Bell computer, which I got for free. I used MS-DOS too, but I grew to love FreeDOS much more than MS-DOS.

Today, I still use FreeDOS. In fact, I wrote this article using FreeDOS, with FreeDOS Edit 0.9a. I know this editor is bulky on the XT, but it runs fine here.

I use this cute and awesome operating system on all of my computers. Even my newest computer has it, although I wish it had a FreeDOS-compatible network card and sound card. I happen to own an original IBM PC XT Model 5160 and a ‘286 computer generic PC clone. They both run FreeDOS.

They are also extremely fancy, with VGA graphics, Sound Blaster, massive hard drives (readable with an XT-IDE universal BIOS), and networking. I got this for a reason … That reason being Higanbana Project code-named Project 16. It is a new game for these computers. This game would require the VGA and OPL2 for maximum "radness" so I'm testing the game on those computers.


Tuesday, June 27, 2017

An evolution of the FreeDOS website

Formed in 1994, the FreeDOS Project has been around a long time. We actually predate much of the World Wide Web. Back in 1994, the whole "Web" thing was a pretty new idea. So it didn't occur to us to create a website until a few years later.

Our first website was created by M. "Hannibal" Toal, who stepped in as project coordinator when I was unavailable for a year or so. I'm not sure exactly when we set up our first website, but I think it was around November 6, 1996. The Internet Archive doesn't go back that far for, but a snapshot from June 1998 still has the same look: white text on a black background, with the original "oval logo."

I returned to FreeDOS after a short absence, and Hannibal handed "webmaster" duties to me. Unfortunately, I didn't know much about how to edit a website. I pretty much left the site as-is until I had learned enough HTML to be dangerous.

Starting sometime late 1998, I began working on an update to the FreeDOS website. I wanted the new website to be easier to read. More websites were using a black-on-white color scheme, which I found easier on the eyes. After some months working on a new design, I put live the updated website on January 1, 1999. A snapshot from January 1999 shows the updated style: black text on a white background, with a FreeDOS banner ad, and the original "oval logo." This was a very simple web design, built using a single large table. The World Wide Web didn't have nifty formatting like stylesheets, so most websites created their design using a table layout like the one we used.

Later that year, I updated the design slightly, using a blue title bar and yellow navigation bar. Copying other technology websites like Slashdot, I added a "poll" feature to the sidebar, although this was meant more for fun than information gathering. I'm not sure exactly when this new design went live, but the Internet Archive grabbed a screenshot from October 1999. Many of the news items from that snapshot talk about cleanup on the website, in late September. Based on that, I'll assume this web design went live around mid- to late September 1999.

I worked in higher ed at this time, as part of a web development team. I managed the production team. Sometime in late 1999 or 2000, our web developers put live a new web portal. I quite liked the design they used, and I mimicked it on the FreeDOS website. This was a minor tweak in the FreeDOS website design, using a series of stripes behind the "FreeDOS Project" wordmark. Technically, I don't consider that a new FreeDOS logo, just a graphical decoration around the logo. I'm not sure when the "striped" web update went live, but you can see a snapshot of the design from May 2000.

I made a small adjustment again in May 2000, adding a mint-green background to the titles of each news item. I'm sure I felt inspired by other websites like Slashdot, which used a green color scheme, although I'm a bit confused when I look at this design now. Green didn't really fit with the dark blue banner.

In early 2001, I again decided to update the FreeDOS website. The green backgrounds needed to go. Instead, I chose a unified blue-and-gray color scheme, with black-on-white text. The Internet Archive captured a screenshot in March 2001, but I think I updated the website sometime in mid-February 2001.

Several months later, our original "oval logo" was starting to look dated. Several FreeDOS users attempted new logos for us, but we liked Ben Rouner's logo best. His logo was a sleek, modern spin that was better suited to the banner on a website. We adopted this "blue stamped logo" in August or September 2001, accompanied by a website redesign with blue highlight colors and a white background. The new logo first appears in an Internet Archive snapshot from September 2001.

That website design stuck around for a few years, with only a few minor color tweaks in the design. We didn't update the web design until we decided to change the FreeDOS logo.

On the FreeDOS email list, someone restarted a discussion about FreeDOS adopting a mascot. After all, the Free Software Foundation had the gnu, Linux had the penguin, and BSD Unix had the daemon-in-sneakers. Shouldn't we have a mascot, too?

And I admit, I'd kind of wanted a mascot for the FreeDOS Project for some time. Back in 1999, I thought a lemur would look neat. I always liked lemurs. But after a while, I thought FreeDOS should have a mascot that "paired well" with the Linux penguin. FreeDOS was a free operating system like Linux, so I thought it natural that someone might create a composite image that combined the Linux and FreeDOS mascots, maybe sitting next to each other. I thought a seal would be a great idea; imagine a seal and a penguin hanging out together. But we already had a SEAL graphical desktop package, and the name conflict seemed pretty obvious.

Someone else submitted a new FreeDOS logo that used a fish icon, claiming that the fish represented freedom. For some reason, the fish caught on. And soon, Bas Snabilie contributed a cartoony FreeDOS fish mascot and matching logo. Bas's fish mascot was cute, for a fish, so we adopted him as our mascot. We later named him Blinky because of his googly eye.

In February or March 2004, I created a new web design that used the new FreeDOS "boxed wordmark logo" with the FreeDOS fish. The Internet Archive first captured the new design in March 2004.

Overall, people liked the new design. We made a few tweaks here and there, such as moving the "blue swirls" decorative banner from the top of the page to just under the logo, but the new design stayed up for a long time. More significantly, we rebuilt the FreeDOS website using "divs" and stylesheets, following a growing trend. This date is easier to pin down: it happened on Sunday, February 6, 2005. The Internet Archive picked up the change the next day, on February 7, 2005.

In late July or early August 2006, we again modified the FreeDOS website. The new design used a "flattened" appearance that had become popular on other websites at the time. The snapshot from August 2006 also shows the first blue background for the FreeDOS logo.

We finally released the FreeDOS 1.0 distribution on September 3, 2006. At the same time, we also incorporated a "What is FreeDOS" section on the front page of the website, including a brief description of the three ways most people use FreeDOS: to run classic DOS games, to run legacy software, to do embedded development. You can see the snapshot captured by the Internet Archive on September 5, 2006.

Sometime in April 2007, I changed the website yet again, to put a blue "gradient background" behind the FreeDOS logo, with a dark blue gradient as a sort of page title bar. You can see the updated design from May 2007.

I'm not able to track changes to the website very well after this. I didn't keep a web history of my own, and the Internet Archive didn't capture the stylesheets we used after 2008. However, I can see that sometime in November 2008 or very early December 2008, we updated the website again. The snapshot from December 2008 shows a new design, but without the stylesheet, I don't know what changes we made.

I do know that in late 2009, I decided to ask for help in the FreeDOS website design. I posted a plea around October 2009, and several months later I found myself in contact with a web designer named "nodethirtythree." This person volunteered to contribute a design from their website catalog, and on January 1, 2010, we refreshed the FreeDOS website with the new look. This update included a new "white wordmark logo," with the same FreeDOS fish from our boxed wordmark logo, and wordmark in white with a black drop-shadow. You can see the screenshot grabbed in January 2010.

As you can see, this website was really meant for wide screens. If you have a low display resolution, the link "tabs" or "buttons" partially cover the FreeDOS logo.

We've used variations on this design ever since. While the HTML code may have changed "under the hood," the outward appearance has remained mostly intact. The link "buttons" from the banner changed, but the blue striped background remained as part of our new web "brand."

In Spring 2012, I entered a program to earn a Master's degree. My very first class was Information Design, and I realized the FreeDOS website made an excellent case study of how to arrange information on a website to attract a particular audience. The semester ran from January 2012 until around May 2012, and in the final months of class, we each worked on a final project. Mine was an examination of the FreeDOS website, including a new arrangement of information to better suit FreeDOS users.

On June 3, 2012, I put live the new website. You can see it in the Internet Archive snapshot from June 14, 2012. The new design included a FreeDOS screenshot, updated sub-pages with improved cross-linking to information, and "quick answer" links to help new visitors learn about FreeDOS.

Those "quick answer" links seemed like a clever idea at the time, but not everyone liked them. They used javascript to only show one answer at a time. This was a little weird to some folks, so we eventually removed this in favor of more straightforward navigation.

On December 25, 2016, we released the FreeDOS 1.2 distribution. To mark the occasion, we updated the website, providing a cleaner look and new fonts. The Internet Archive first captured the new design on December 26, 2016. This new design also added separate descriptions with brief descriptions of how people use FreeDOS, which hadn't really changed since 2006: "Classic games," "Legacy software," and "Embedded systems."

This new website design is the same one we use today. This version is based around HTML5, and uses a clean presentation that incorporates more screenshots on the front page. A major change in the new website is the shift towards SVG for the images, such as the FreeDOS logo and the icons. While we've used a responsive web design for years, using SVG allows for cleaner scaling of images on different displays.

I'm not planning further changes to the website. But then again, I think I've said that after every major website update. Based on past experience, we'll likely make tweaks and small iterations to the website design, but no major changes for a few years. Enjoy!

Monday, June 26, 2017

Alternative images

In reviewing some interesting history of the FreeDOS Project, I've highlighted our FreeDOS logo and mascot, contributed banner ads, contributed web buttons, and some web award "sticker" images. I also discovered a small stash of alternative images contributed by our community. I don't know the dates for these, but I'll do my best to put them into some kind of order:

Alternative FreeDOS logos

We had our "oval logo" from the beginning, then our "blue stamped logo" starting around 2001, and variations on our "FreeDOS fish logo" since about 2004. Sometimes, people contributed images as a suggestion for a new FreeDOS logo, or just as a fun alternative logo that they used on their own website.

First is this interesting image that a user emailed me, called "Windows95 Waste." This must have been around 1996 or 1997, as I know it was well after Windows95 but long before Windows98. And Larry Ewing created Tux the Penguin in 1996. So there's a short window for this image to have been created. It was probably the first alternative image anyone sent us.

I don't remember who created this image, but I do recall that this person wanted to have the Linux mascot and the FreeDOS mascot sharing a friendly drink at a table while copies of Windows were crushed behind them. We didn't have a FreeDOS mascot at the time (we adopted Blinky the FreeDOS Fish much later in 2004) so he used a blue ball with some eyes and the FreeDOS "oval logo" stamped where the mouth would be. I always thought of this mascot as related to the green ball guy from The Hitchhiker's Guide to the Galaxy.

One user contributed this image, as a possible logo for the FreeDOS Project, called the "pixels logo."

Another user sent us this simple image that I quite liked, showing a DOS prompt and the name "FreeDOS."

One contributor created this beautiful logo with a kind of lens flare effect, and the tag line "Born to be free."

Another user sent us this interesting modern logo. It was simple and fresh, but ultimately not what we were looking for.

Others also like to create images for their website that advertised FreeDOS, like this "Powered by" image. This is larger than a standard web button image, although you could also think of it as a web button.

Another user sent us a very nice round logo, as a suggested new logo for the FreeDOS Project.

I think this next one was originally contributed as an animated GIF image, with awesome flames that flickered from the FreeDOS wordmark. It reminded me of the old DOOM game. But around 1996 or 1997, a bunch of free software websites started an effort to replace all GIF images with PNG, to avoid patent and licensing issues inherent in GIF. I did the same with the FreeDOS website images, so converted this animated GIF to a static image.

Around 2000, I started discussing a new logo for the FreeDOS Project. We'd already had the FreeDOS "oval logo" since the beginning, but maybe it was time to update the logo. One user suggested this alternative logo, using colors and interlocking "DOS" to emulate the MS-DOS logo. I though it was a little close to MS-DOS, so we didn't use it. Instead, we adopted the "blue stamped logo" in 2001.

A few years later, some folks asked if we should have a FreeDOS mascot. After all, Linux had the penguin, BSD Unix had the daemon, and GNU had the gnu. What mascot should FreeDOS have? I thought a seal would be neat, but we already had the SEAL desktop environment, and there was an obvious name conflict. One user contributed a new FreeDOS logo with a fish outline, claiming the fish represented freedom.

I didn't know about the fish logo, but others liked it. User Mike Green sent us this version of a FreeDOS logo that used a different fish icon, although it wasn't really a "mascot" yet. Eventually, we would adopt Bas Snabilie's cartoony fish drawing as the FreeDOS fish mascot, who we later named Blinky. But Mike's fish came first, so deserves a mention here. He provided several versions of his fish logo.

CD jewel case images

In late 2001, after we adopted the "blue stamped logo," one user contributed an image that you could print out and put in a CD jewel case, for your FreeDOS distribution. I think a few online CD distributors used this as their FreeDOS CD cover.

In 2004, someone updated the CD cover image with one that used the new FreeDOS fish mascot, Blinky. One version included a tagline "Cool and fresh" and the other was plain.

Sunday, June 25, 2017

Guest post: Translating for FreeDOS

Nicolae Crefelean shared this FreeDOS story with us via Facebook, with permission to make it available as a guest post. Thanks, Nicolae!

I discovered FreeDOS about 15 years ago, when I still worked with MS-DOS quite frequently as a sysadmin, so I was amazed to find out about this project. There was still plenty of work to do, but even then it still did a lot of things, there was a lot of software that worked with it, and that was great.

I was so excited about it that I kept telling my colleagues (for a while) what else was new—considering back then the development was very active. But that wasn't enough to compensate for my enthusiasm. So I thought I should translate the FreeDOS Manifesto to Romanian, so others can read a little bit about the project, get curious, share the word, maybe support it, and so on.

That's all I did for this project, but it still felt like I did something important. And as tiny as my FreeDOS contribution was, it was my first contribution to an open source project and it lit up a spark in me. Since then I contributed to many other OSS projects with translations, code, management, tech support, donations, etc. It's been a blast so far! I'll keep at it, as I love doing it. FreeDOS was my first stepping stone to contributing to free software, and that makes it very special for me.

Thanks for keeping the ball rolling, guys! And it's a great initiative to have so much information out in the open.

-Nicolae Crefelean

Guest post: FreeDOS and Linux

Joel Graff writes about growing up with DOS, and later running FreeDOS under a virtual machine in Linux.

I grew up on DOS. My first computer was an IBM PS/2 Model 30 (actually, it was a VIC-20, but we’ll not mention that here). At that time, it came with a low-density 3.5-inch floppy drive, a 10MB hard disk, MCGA, 256-color graphics (which eventually spelled the end for EGA), and a 24-pin dot matrix.

All for the modest price of $3,495.

It was expensive, but it was a valuable addition to our family, and it drew me into the world of computing. I had gotten a taste of gaming and BASIC programming with the VIC-20, but the PS/2, pre-loaded with DOS 3.31, introduced me to a system with configurable hardware and a fully functional operating system. It was an entirely different, and far more powerful experience than the old VIC-20.

I quickly grew to love DOS, and it wasn’t long before I mastered nearly every facet of it. Then I was coding mouse hardware support in GW-BASIC, thanks to my buddy who shared a book on DOS hardware programming with me. Really, it was that direct, low-level access to the system and it’s hardware that kept me coming back.

DOS wasn’t a complex environment. It was quick, clean, and simple. But then, the computing environment it had to manage was small and limited. There was no Internet, no cloud and no mobile platforms. “Scalability” wasn’t a word, and even if it was, DOS wasn’t going to have anything to do with it. And it’s that lack of complexity that afforded it the ability to master a hardware domain which, in retrospect, it accomplished with remarkable simplicity and efficiency. It wasn’t a bad way to be. My entire digital life could be contained on a single, 720KB floppy disk.

As time moved on, my interests changed. Life, in general, had much to do with it, but I can honestly say that Windows replacing DOS as the preferred gaming platform gave me little reason to pursue my gaming interests. Being a developer didn’t really hold much appeal either as Windows, with its arcane API dominated by Hungarian-notated commands, appeared to be the only commercial future for software developers.

So I did something else with my life. But I never gave up entirely on computing.

These days, I’m a Linux and FOSS nerd. I abandoned Windows when I saw the Windows 8 ship sailing and I haven’t looked back. It’s been a challenging, but great experience. Still even Linux, for all it’s terminal-level coolness, just doesn’t compare to the experience of working at a DOS command prompt. And while I didn’t have any real need for my DOS skills, those old DOS games seemed to always go with me, wherever I went, just waiting for something to happen.

Preserving those games had always been in the back of my mind; I knew I needed to do something about it. I had toyed with DOSBox in the past, but using it didn’t really encourage me to dust off the floppies. Then I discovered FreeDOS and it got me to take a second look.

I downloaded the FreeDOS ISO and built a virtual machine with it. QEMU made quick, easy work of that. Booting it for the first time was a blast! I discovered I had somewhat missed the C:\> prompt with it’s patient, blinking cursor. A few minutes later, and I had surprised myself with just how much I remembered, and with how faithfully FreeDOS preserves the DOS computing experience. Because of that, I had little difficulty working out the unique features of FreeDOS and taking advantage of some of the goodies (like Ethernet support) that, while not part of the original DOS experience, have been implemented in a way that’s really appropriate to it.

So I finally dusted off my old caddy and got a floppy drive for $15. Mounting the virtual machine image under Linux to copy data files in was simple. A couple weeks later, and I’ve copied most of my old disks from that dusty old caddy. Unfortunately, several were unrecoverable, which I expected, but enough had survived to preserve most of my gaming library.

Reliving my old gaming days has been a great experience. I don’t really need FreeDOS to do it. I can dig up some original DOS floppies somewhere and make it happen or I can use DOSBox. They’re both good options. But FreeDOS gives me a true, open source DOS environment to use, which beats both proprietary DOS and an emulator, in my mind.

The real advantage, though, is in the virtual machine.

Using a virtual machine means I can contain my entire library in a single file. This makes it easy my entire DOS library easily portable to different machines and platforms and even easier to preserve. That I can preserve a snapshot of my entire DOS life is just really awesome.

The best part, though, is that the FreeDOS project is alive and well. Because it’s a genuinely useful operating system that’s great for low-resource applications, people care about it. And that means it’s going to stick around for a while. Now if I could just do something about those old Commodore floppies.

-Joel Graff

A collection of FreeDOS images

I'm going through some interesting moments in FreeDOS history, and I found a series of web images that highlight the popularity of FreeDOS. Here are a few interesting image collections:

Web award "stickers"

Looking back at the FreeDOS History timeline, you can see that 2000 and 2001 was when FreeDOS finally got noticed. Our FreeDOS Beta 5 "Lara" distribution, released August 2000, was very popular, and was distributed via CD in several computer magazines. Beta 5 raised our profile. In late January, Open Source Land Magazine recognized us as a "Link of the Week," also with an accompanying interview and article about FreeDOS Beta 5.

Then in March 2001, we released the FreeDOS Beta 6 "Midnite" distribution. This version was also very popular, and I think earned FreeDOS recognition from a web magazine with this "New Cyber Tech" award. I don't have the exact date of this web award, but it was probably early-2001. I have a vague recollection that we received this award before the FreeDOS Beta 4 "Lemur" distribution, released April 2001.

In January 2012, we released the FreeDOS 1.1 distribution. This was our first major release in almost six years (DOS doesn't need to change that much) and was immediately popular. Many websites offered a copy of the latest FreeDOS. DO Download recognized FreeDOS 1.1 with a web "sticker" indicating it was safe to download.

Also in 2012, Download Atlas was another website that offered a copy of the FreeDOS 1.1 distribution. They similarly awarded FreeDOS as the "Editor's Choice," with several options on web sticker.

I don't have the date for this one, but I think it was also for the FreeDOS 1.1 distribution, so around 2012. Download Route offered a copy of the FreeDOS distribution, and shared with us a suitable web sticker.


I'm not sure exactly when they started, but sometime around 2004 or 2005, a small group of developers forked a copy of FreeDOS in an attempt to forklift it to support 32-bit features. "FreeDOS-32" was an unofficial but recognized development effort. Unfortunately, it proved to be too ambitious; development on FreeDOS-32 stalled by 2010 and developers seem to have dropped out entirely after 2011.

An interesting note to FreeDOS-32 is their Sloth mascot. You see, we'd been discussing adopting a mascot for the FreeDOS Project. Linux had Tux the Penguin, BSD Unix had Beastie the Daemon, so why shouldn't FreeDOS have a mascot? I argued that we should adopt a seal, but there was already a SEAL Desktop with the obvious choice of mascot. Eventually, a user contributed a fish mascot, and that seemed to capture attention. Then Bas Snabilie sent in a very cartoony fish mascot that we loved, and officially adopted as our mascot in February or March 2004.

So when Salvo and the other developers forked FreeDOS-32 in 2004 or 2005, they decided to create their own mascot, too. They picked a sloth (name?) probably because they expected development to be slow. Here he is, in a fetching cap and t-shirt:

FreeDOS Web Ring

Do you remember "Web Rings"? These were a popular way for similar sites to associate themselves with each other. The idea of a "Web Ring" was that every website partnered in the ring, and used a web image to advertise the ring. Each website was issued a unique ID within the ring, and used "Next" and "Previous" links to navigate via the ring host to other websites in the ring.

FreeDOS was part of such a "Web Ring", and used this 3-D image:

Friday, June 23, 2017

Guest post: Joining FreeDOS

Erwin Waterlander shares this story about first starting with FreeDOS:

I have good memories of DOS. In the end of the Eighties and the first half of the Nineties, I used it mainly for playing games and text processing. Around 1996, I started my programming hobby on MS-DOS. Like many, I didn't like that MS-DOS was going to be deprecated. I used MS-DOS until about 1999 when I started using Windows 98SE.

Via Usenet, I learned about the FreeDOS Project, probably around 1997. For several years, I was on the FreeDOS mailing list. It was nice to see there was a large community of DOS enthusiasts. This kept me supporting the DOS platform.

I contributed my wcd program ("Wherever Change Directory") to the FreeDOS utilities since 1998. Later, after 2009, I added dos2unix to the FreeDOS Project. The community gave me lots of useful feedback.

I ran FreeDOS 1.0 in QEMU, and now I run FreeDOS 1.2 in VirtualBox. I have to admit that after 1999, I did most of my programming for DOS in a Command Prompt on 32-bit Windows, because that worked for me. And I have used DOSBox for gaming. I use FreeDOS nowadays only for porting my programs. I will keep on supporting FreeDOS as long as I can.

-Erwin Waterlander

Guest post: First contributions to FreeDOS

Gregory Pietsch shares his story about how he contributed first contributed to FreeDOS:

I stumbled across FreeDOS around 1998 or so. At the time, I was familiar with MS-DOS, having used it since 1985 or so, and thought, "Okay, this group wants to build a GPL'ed clone of MS-DOS, it shouldn't be too hard." I decided to contribute a couple of programs. One of them, named "Code", is an encoder/decoder for uuencode/uudecode/xxencode/xxdecode. I thought it was useful.

A few years later, I got more ambitious. I wanted to get something in the Base distro with my name on it. I noticed that base was missing a version of Edlin, the line editor from the early days of MS-DOS. I figured, who cares if nobody uses this program anymore, that's my ticket into Base. Of course, I had to write it along different lines than the original. The original was in tight Assembler, so I wrote mine in C. After several false starts and a week of programming, I finally had something that was usable, and sent it in as FreeDOS Edlin 1.0.

Since then, I have debugged FreeDOS Edlin when I've needed to and attempted to add internationalization to it with varying degrees of success. I also made it easy to take apart. A programmer could use the back end of Edlin as the back end of Edit or reuse the string and array handling bits if they wanted to.

Also, every time I upgraded Edlin, the new version came with a note written by me from the perspective of a TASS editorialist proclaiming that Edlin was the linchpin holding FreeDOS together. It was the least I could do.

By the way, the development environment I use for this and other programs nowadays is Cygwin. That's why FreeDOS Edlin is successfully autoconf'ed. I figure, is there an easier way to make a distribution than "make dist"?

-Gregory Pietsch