An interview with Jim Hall about FreeDOS

1

Jim Hall is a longtime open source software developer and advocate, who is also an author on this website. In his professional side, Jim teaches technical writing at the University of Minnesota, where he also previously served as IT Director and Campus CIO for one of the system campuses. Jim is also CEO of Hallmentum, an IT consulting company.

In 1994, Jim started the FreeDOS Project, an open source version of the classic DOS operating system for the PC. Recently, the project released FreeDOS 1.4, the latest official distribution of FreeDOS. We asked Jim about FreeDOS, where it’s been, what’s happening with it now, and where it’s going.

Q: For anyone who hasn’t used FreeDOS before, can you tell us what FreeDOS is and where it came from?

FreeDOS started as an open source implementation of DOS back in 1994. The history up to that was that I was a longtime DOS user. I’d used DOS growing up, since 1981, and I continued using DOS into the 1990s when I was a university student. I’d used Windows at the time—we had Windows in our campus computer labs, for example—but I never liked it. So I kept using DOS.

I’d tried Linux, though, and I liked it. I discovered Unix in our main computer lab on campus, and I thought of Unix as a super powerful version of DOS (that’s kind of an interesting approach to Unix, from a DOS “lens”) and I wanted to have “Unix” on my home PC. I wrote some command line programs to mimic some Unix commands, but in 1993, I found this free Unix called Linux. I installed SLS Linux (the earliest Linux “distribution”) on my computer, with DOS, so it was dual boot. I ran Linux some of the time, and DOS some of the time. Mainly, I booted back into DOS because I still liked it and that’s where I had all my applications and games.

In 1994, I was unhappy to see that Microsoft planned to stop making DOS. I read a lot of computer magazines at the time, and Microsoft was starting to talk about the next version of Windows and how it wouldn’t need to use DOS. I should probably mention that Windows versions 1, 2, and 3 were all basically just “shells” that ran on top of DOS. You had to have a copy of DOS in order to run Windows. Or if you were like me, you didn’t buy Windows and only ran DOS. But Microsoft said the next Windows wouldn’t need DOS; DOS was “dead.” And I didn’t like it.

But back to Linux. I’d already experienced that people could work together over the internet to create a cool Unix-like operating system like Linux. I thought, “DOS is much simpler. If they can do that with Unix, we can do the same thing with DOS.”

And that’s where FreeDOS started. I announced the FreeDOS project on June 29, 1994 and we’ve been keeping it going since then. Tim Norman wrote our first command.com shell, called “FreeCOM,” and others contributed other DOS programs to replace the core features of DOS. Not long after that, Pat Villani reached out to me and volunteered his working DOS kernel that he used for embedded work, and we adopted that as the FreeDOS kernel. Over time, lots of very smart and cool people built on that, and added other parts, to make FreeDOS what is is today.

Q: You just released FreeDOS version 1.4. What went into making that release?

Our distribution maintainer is Jerome Shidel. And when he joined us to make the FreeDOS 1.2 several years ago, he also created a new installer. I think it was for FreeDOS 1.3 that he created a new “distribution creation” system to make it easier to collect all the packages into a full distribution.

And after FreeDOS 1.3, we realized that the new system made it possible to create a monthly “test release” that collected all the new versions of packages that people had released. That meant we could have a “rolling” distribution, something that wasn’t actually official but that had all the most recent stuff in it. And with that, we realized we could someday just “relabel” a monthly test release as a “release candidate” for the next official distribution, and go from there.

That’s what we did when we made FreeDOS 1.4. We make all of the decisions about FreeDOS on the freedos-devel email list and in conversations there, we realized that enough time had gone by since FreeDOS 1.3, and a lot of people had released new versions of things to make FreeDOS better, and it really was time to make a new official version. Jerome makes the monthly test releases around the first of each month, and on January 1, 2025, we had FreeDOS 1.4 Release Candidate 1. And so on for Release Candidate 2 in February, and Release Candidate 3 in March. Things were very stable in Release Candidate 3, so we decided the next test release would be the official FreeDOS 1.4 distribution. We actually had the FreeDOS 1.4 distribution on April 1, but we decided “April 1” wasn’t a good day to release a new FreeDOS. We gave it a few days to “shake out” any issues in the new distribution before I promoted it to the official FreeDOS 1.4 distribution and announced it on April 5.

Q: What are the main features of this release? Is there anything new? What’s changed?

Lots of stuff has changed in FreeDOS 1.4, although most of these are fixes and updates. We intentionally avoided making any really big changes in FreeDOS 1.4.

The automated “distribution build” system also creates a change log that lists all of the changes. But that can be a bit hard to read, so I’ll share a few highlights here:

We have an updated command.com program. Jeremy is the volunteer maintainer for the FreeDOS kernel and FreeCOM, and he released a new FreeCOM that fixes several bugs and makes it more stable. Lots of people contributed to this, including TK Chia, Emir, Andrew, Yu-Shih, Bernd, Jiří, and others.

We have an updated networking stack. Michael is the developer behind mTCP, which is a collection of TCP/IP applications for DOS. To be clear, DOS doesn’t have a built-in networking stack (no DOS has ever had that) but mTCP makes it possible to get FreeDOS on a network and do stuff.

The FreeDOS Help content has been completely updated, thanks to Willi and a host of translators and contributors. Version 1.1.0 aims to describe every piece of FreeDOS, so new users can learn how to use DOS—and folks who used DOS “back in the day” but need a reminder on the details can quickly get into FreeDOS.

We have a new image viewer called dosview. It’s hard to believe we went this long without a program that could display images. Dosview can read 16 different file formats (and write to 12 image formats) including BMP, PCX, JPG, PNG, WEBP, TIFF, and GIF. Thanks to developer SuperIlu for working on this great program.

We also have a bunch of other updates in the core parts of FreeDOS, like an updated fdisk program that (thanks to Bernd) fixes critical errors when working with many partitions. And an updated xcopy command (thanks to Jeremy) that has a reworked recursive copy to not use as much stack space, and an updated move (also from Jeremy) that avoids stack overflow errors in certain conditions.

We also removed a few packages, although we tried not to do much of that. For example, FreeDOS used to include several graphical user interfaces. However SEAL and oZone weren’t very complete, had some annoying bugs, and didn’t support an API to build applications with them. A graphical interface isn’t really a “desktop” if it’s just a graphical shell to run DOS programs. So we dropped these.

But we still include OpenGEM, which is a stable and feature-rich graphical interface for DOS, which longtime DOS users may recognize as similar to GEM, the Graphics Environment Manager. OpenGEM hasn’t worked “right” in previous versions of FreeDOS, and Liam figured out a workaround, which we include as an updated gem.bat launcher in FreeDOS 1.4. Basically, OpenGEM only works properly if it’s installed in the “root” directory, so we show a workaround that lets you “map” a drive letter to the OpenGEM directory, and that makes it work correctly.

We also included two new packages, SBEMU and VSBHDA, that can emulate a SoundBlaster card on new hardware. This makes it possible to play classic DOS games that expect a SoundBlaster. You need this because, unlike modern operating systems like Linux, DOS doesn’t have a hardware abstraction ayer and it was very common for games and other software to communicate directly with hardware, like a sound card or digital music card.

One thing that isn’t in FreeDOS 1.4 is an updated kernel. Jeremy is still working on that, and while there is a new “in-development” kernel that has several cool features (like the ability to run Windows 3 in Enhanced Mode … the current FreeDOS kernel can only run Windows 3 in Standard Mode) we recognize that changing the kernel is a big deal because it (obviously) is a very core part of the operating system. We didn’t want to “just” drop in a new kernel without putting it through a bunch of testing. So FreeDOS 1.4 has the same kernel as FreeDOS 1.3.

Q: What are some things people can do with FreeDOS?

You can do lots of things with FreeDOS. Over the years, we’ve run a few surveys to ask how people use FreeDOS, and we see the same themes coming up again and again: People use FreeDOS to play classic games, run DOS applications, and develop new DOS programs. You might wonder why not use DOSBox instead. And while DOSBox is great for some things, and I play a few DOS games under DOSBox, I find that there’s no substitute for actually running a copy of DOS to get that classic feeling.

Also, FreeDOS can run on real hardware. There’s a big retrohardware community out there, and FreeDOS is great for that. We know there are lots of people who like to run classic hardware—real Pentium computers from the 1990s, real ’386 computers, and real AT and XT systems from the 1980s. And yes, you can install FreeDOS on real hardware.

Play classic DOS games. Just because a game is old doesn’t mean it’s stopped being fun to play. There are a lot of great classic games that you can play on FreeDOS. I like to play a bunch of classic games. Recently, I replayed Commander Keen. Right now, I’m replaying Jill of the Jungle. There’s also Wolfenstein 3D, Doom, Rise of the Triad, Duke Nukem, and many others that you can find on places like GOG.com or “game archive” websites like Archive.org.

Run your favorite DOS applications. DOS had a lot of great applications, something to suit pretty much every need. If it ran on DOS, it should run on FreeDOS. For example, WordPerfect and WordStar were classic word processors for DOS, and both run great on FreeDOS. I was (and still am) a huge fan of DOS spreadsheets like Lotus 1-2-3 and Quattro Pro. TRIUS Inc released their As Easy As spreadsheet for free via their forum http://triusinc.com/forums/viewtopic.php?t=10—that was always my favorite DOS spreadsheet, and I still use it today. By the way, Dan Bricklin also released VisiCalc for DOS as a free download from his website http://www.bricklin.com/visicalc.htm.

Create new DOS programs. We include several compilers, assemblers, debuggers, and editors that should make any programmer happy. For C programming, I like the Open Watcom C compiler or the IA-16 version of GCC; both are included in FreeDOS on the “Bonus” CD. For Assembly programming, we include several assemblers like NASM (the Netwide Assembler) or FASM (the Flat Assembler) or JWASM (an assembler that’s very compatible with MASM). We also have compilers and environments for other programming including Pascal, Fortran, BASIC, Perl, and others.

Q: Do you have a roadmap for the future of FreeDOS, and what does that look like?

We don’t make long-range plans for FreeDOS. It’s already a very feature-complete DOS implementation, so each new version of the distribution is really about releasing updates and maybe including a few new programs. But I can share a few things we’ve discussed on the email list.

I think the biggest item for the future is an update to the kernel to support Windows for Workgroups. I mentioned that you can already run Windows 3.x in Standard Mode on FreeDOS, but you can’t run Windows 3.x in Enhanced Mode—at least, not on the current kernel. Jeremy has made some progress there, and there’s an in-development version of a new FreeDOS kernel that supports Windows 3.x in Enhanced Mode. But it
needs more testing, which is why we didn’t include it in the FreeDOS 1.4 distribution. We are planning to include that kernel in the monthly test releases, so it can get a lot of testing by the time we make a new official distribution.

We’ve had some initial discussions about some of the packages we include in FreeDOS. In the 1980s and 1990s, DOS was very small; for example, MS-DOS 6 installed from just a few floppies. FreeDOS is more than “just DOS” and we include lots of useful tools, including compilers and editors. I think we’ll still provide lots of development tools, but maybe some of the other tools aren’t necessary. It’s too early to get into specifics, since we haven’t fully discussed it on the email list yet, but we’ll get there.

Overall, I think the best way to keep tabs on what’s happening in FreeDOS is to download the monthly test releases and try them out. We’ll try out any changes there; if something doesn’t work out, we’ll change it back or try something else. It’s the best way to keep development in the open, where open source belongs.

Leave a Reply