I had the great chance two years ago to do an interview with Jim Hall, the creator of FreeDOS, for the 25th anniversary of the project. I published this interview on 18/06/2019 on my old blog and thanks to the archives that Taokann made of my old blog, I can repost it here, two years later. I also spent a lot of time making a video of it, which I'm posting on my PeerTube instance!
Hello! Do you know in which month we are? In June 2019! And this month, the operating system FreeDOS turns 25 years old! Being a fan of retro computing, I had to talk about it, here is a quick presentation of the project before going on with the interview of Jim Hall.
FreeDOS is a free and open source operating system that was created in 1994 by Jim Hall, whose first beta was released in 1998 and the first version in 2006. This OS belongs to the DOS family, whose father was MS-DOS, the ancestor of Windows, by Microsoft. It was when Microsoft announced the end of MS-DOS support that Jim Hall undertook to create an operating system, first PD-DOS, before being renamed FreeDOS. This system had to support all programs written for MS-DOS and bring some new features adapted to the new technological advances, even as simple as the support of long filenames. And guess what? It’s done! FreeDOS works perfectly and allows you to emulate a DOS in addition to bringing it up to date. FreeDOS will delight retro-gamers by allowing them to find the favorite games of their childhoods, such as Wolfenstein 3D and Doom, and will allow those who need them to reuse some of their old software.
- Can you introduce FreeDOS and explain the goal of this project?FreeDOS is a free implementation of the DOS operating system.
DOS is an old operating system, for the original IBM Personal Computer. DOS was ubiquitous throughout the late 1980s and into the early 1990s. It’s fair to say that DOS dominated the PC market at the time. I was a DOS “power user” during that time, and preferred Microsoft’s MS-DOS over a graphical environment like Microsoft Windows. If you look at screenshots of Windows from that era, you’ll see why I preferred DOS. Windows wasn’t great. Although Windows wasn’t a standalone operating system yet; you still had to boot MS-DOS before you could run Windows 3. I ran a lot of applications and games on DOS. In the early 1990s, I was a university student (physics major) and I did almost all of my lab analysis using a DOS spreadsheet, and I wrote all my class papers using a DOS word processor. I loved the DOS command line, and would write small utilities to make the command line more powerful and flexible. In 1993, I discovered Linux - which gave me a free Unix operating system that I could run on my ’386 PC. I booted Linux a lot of the time, but still used DOS to run my spreadsheet and word processor, since there weren’t comparable applications yet on Linux. In 1994, Microsoft said that the next version of Windows would effectively eliminate MS-DOS. I didn’t like that. I decided that I’d rather keep using DOS. And the only way to do that was to write our own version of DOS. So I announced a DOS project on June 29, 1994, that became the FreeDOS Project.
- You created FreeDOS to continue using software running on MS-DOS, did you do it for any particular software? Which one? Do you still use this software today?
I didn’t create FreeDOS for any particular software, but I can tell you that my favorite DOS application at the time was a shareware spreadsheet called AsEasyAs, by TRIUS Inc. “Shareware” meant that you could use the software, and even share it with others, but you needed to pay a small fee if you continued to use it. Their spreadsheet was powerful and friendly. True to its name, AsEasyAs was easy to use. I probably used AsEasyAs for almost all of my physics lab analysis. It had a robust linear regression (line-fitting) function that provided the uncertainty values that we needed in our analysis. TRIUS later released AsEasyAs for free (gratis) on their website. You can find their announcement here I used several word processor programs in DOS, so I don’t know that I really have a favorite. But WordPerfect was probably the most powerful that I used. Later, I moved to GalaxyWrite, which was shareware. And I played a ton of DOS games. Wolfenstein 3D and DOOM (both by iD) are the classic first-person shooters. There were a lot of first-person shooters, like Blood and Duke Nukem 3D. I also liked pinball games. My absolute favorite DOS game was TIE Fighter, by LucasArts. I bought a copy from GOG a few years ago and occasionally play it. Lots of fun!
- This operating system, when you created it, what use was it originally intended for?
When I started FreeDOS, I just wanted to make a DOS-compatible operating system that could run the DOS applications that I used, including games. These days, we find people install FreeDOS for 3 or 4 things: 1. Playing classic DOS games 2. Running legacy DOS software 3. Supporting embedded systems 4. Installing BIOS updates I’m not sure if I should include “BIOS updates” in that list, because people don’t usually install FreeDOS to do a BIOS update. Instead, they just need a version of DOS to boot their PC from a USB fob drive, so they can run the BIOS update. I don’t know that these people actually install FreeDOS after that, they are just using FreeDOS to run an occasional BIOS update.
- Was it imperative from the start of the project to make an open source OS?
As an aside: FreeDOS actually pre-dates the term “open source.” Christine Peterson proposed the term “open source” at a meeting in 1998, but FreeDOS started in 1994. So the term we used in 1994 was “free (libre) software.” To me, it was important that FreeDOS be something where everyone could see the source code and make improvements to it. Developers should be able to share the programs with each other, including any changes they made to it. By releasing the source code, our users were also developers, and FreeDOS would get better every time someone used the source code to fix a bug or add a new feature. I think that openness is what helped FreeDOS get traction early on. That, and we wrote the “core” components of FreeDOS using Assembly and C, but mostly in C. Many people are proficient in C, so this made it easier for others to contribute to FreeDOS. Our general rule is that the “FreeDOS Base” (those components that reproduce the original MS-DOS) should be written in C or Assembly. We use OpenWatcom C as our standard C compiler, and NASM as our standard Assembler. Extended programs (such as programs in the “Utility” section) can be written in anything; we still see a lot of C and Assembly there, but also Pascal and other programming languages.
- How did you gather all the skills to create this FreeDOS? How did you find collaborators?
I taught myself programming from an early age. So when I started FreeDOS, I already had enough skill in programming to write a core set of DOS commands. And the DOS commands are pretty simple. Commands like CLS, ECHO, MORE, PAUSE or TYPE are trivial to write. Other “FreeDOS Base” commands like CHOICE, DATE, TIME and FIND are not that difficult, either. So writing many of the FreeDOS utilities didn’t take a lot of effort on my part. I collected the extended DOS utilities that I had written to expand the MS-DOS command line, the programs I had originally written only for myself, and shared them on an FTP server. The folks at Sunsite at UNC (now called Ibiblio) were very kind and offered us an account on their system so we could share the FreeDOS utilities. After I shared the utilities, I announced them on the Usenet newsgroup frequented by DOS programmers. People saw what I was doing, recognized that this “FreeDOS” was going somewhere, and they contributed their own utilities that reproduced the features in MS-DOS. It didn’t take long before someone contributed a COMMAND.COM replacement, for example. That’s how we grew FreeDOS. We shared our work, and let people know. Developers would reach out to us if they were interested in contributing to FreeDOS. I think the key was never saying “no” to a contributor. We always tried to find a way to include someone’s contribution to FreeDOS.
- Did you ever want to drop the project? Maybe, I don’t know... because it was too hard or due to lack of time
I dropped out of FreeDOS a few times, but I always came back. I mentioned that I started FreeDOS when I was a university student. After I graduated and got my first job, I became really busy at work. Things weren’t likely to improve anytime soon, so I asked if someone could take over the FreeDOS Project for a while. That’s when I met M. “Hannibal” Toal. He stepped into the Project Coordinator role for a while. During this time, Hannibal also created our first FreeDOS website. I dropped out of FreeDOS many years later. Again, I was getting very busy at work. I had recently been promoted to manage all of our Enterprise IT Operations and Infrastructure (my teams managed over 1,100 servers to support 65,000 students across the 5 campuses of the University system, deliver 33,000 paychecks, etc.) Pat Villani (who wrote our first kernel) volunteered to be Project Coordinator.
- How often do you use FreeDOS?
I don’t run FreeDOS as my primary system. That would really be impressive! But I do run FreeDOS on a regular basis. Like most of our users, I mostly run FreeDOS when I want to play a favorite DOS game. Yes, several of these DOS games are available as "source ports" on Linux, such as DOOM. And others can be run on DOSBox. I like the full DOS experience, so I prefer to boot FreeDOS and run the game there. I run FreeDOS in a virtual machine. I used to boot FreeDOS in DOSEmu when I wrote a lot of FreeDOS code. DOSEmu was really handy because it mapped a folder from my Linux home directory as the C: drive for FreeDOS. So I could use GNU Emacs on Linux to write code and immediately compile it in FreeDOS via DOSEmu. These days, I run FreeDOS with a PC emulator called QEMU, or GNOME Boxes (which is really just a GNOME front end to QEMU). I don't write code for FreeDOS. I just don't have time. But I do still work with it and help others from time to time.
- Will FreeDOS, now that it has fulfilled its original objective, continue to evolve and offer new features?
I think FreeDOS reached the goal of providing a DOS-compatible operating system that ran classic DOS applications. We reached that goal with the FreeDOS 1.0 distribution in 2006. Since then, the FreeDOS 1.1 and FreeDOS 1.2 distributions have improved on FreeDOS. The upcoming FreeDOS 1.3 distribution continues to evolve FreeDOS into a modern DOS. We can’t alter FreeDOS at a fundamental level. FreeDOS is DOS, and that means we need to be able to run classic DOS programs. That comes with a base set of assumptions, like a 16-bit Intel architecture with a BIOS. So moving FreeDOS to other architectures like ARM is pretty much impossible. I think FreeDOS will continue to evolve the command line. We’ve included Unix-like utilities in FreeDOS for a long time - and with the FreeDOS 1.3 distribution, we will separate those Unix-like utilities into their own group to make them easier to install. As FreeDOS grows, I think most of the changes will be command line programs. But there is a group of developers who are writing a new DOS kernel, which will run in Protected Mode (PM) multitasking. This kernel is called NightDOS. They have a lot of work ahead of them, and NightDOS is still very early in development. If they manage to write a DOS kernel that can run classic 16-bit programs, I’ll be very interested. But I think that’s a few years away.
- What did the FreeDOS community do that you liked most? Conversely, what did the FreeDOS community do that you were least pleased with?
One developer used FreeDOS as the embedded operating system in a pinball machine. I always thought that was neat! I’m not sure how he did this. One way I can imagine to do this is to create a DOS application that uses keyboard inputs to represent different score item on the pinball table (bumpers, targets, and so on) and add to the player’s score every time they hit the items. I’m not sure that there’s been something that I haven’t been happy with.
- How is FreeDOS better than MS-DOS?
I think the biggest advantage is that we are still working on FreeDOS, but Microsoft stopped working on MS-DOS in 2000. Actually, they stopped selling MS-DOS in 2000; Microsoft stopped developing DOS after MS-DOS 6.22, released in 1994. We keep very close to the original idea of “DOS.” So FreeDOS doesn’t have a standard Graphical User Interface (GUI) although we do include several GUIs in the FreeDOS distribution. But you can run pretty much any DOS program on FreeDOS these days. When developing FreeDOS and adding new features, we’ve tried to only add features that most users would find useful. In this way, FreeDOS is more advanced than MS-DOS, simply because of the extra utilities we provide. FreeDOS has archive utilities like Zip and Unzip, development tools and compilers and assemblers so you can make new programs, several editors, networking support, and of course a ton of new utilities that MS-DOS could only dream of. We also include several utilities that mimic the Unix command line, so FreeDOS will be more familiar to Linux users. For example, FreeDOS includes versions of cal, du, grep, head, less, tee, touch, uptime, which and several other Unix-like commands. A short list of the extra features in FreeDOS is:
- CD-ROM support with XCDROM and SHSUCDX (similar to MSCDEX)
- CUTEMOUSE mouse driver with scroll wheel support
- EDIT and SETEDIT multi-window text editors
- FAT32 file system support
- FDAPM power management: APM info/control/suspend/poweroff, ACPI throttle, HLT energy saving
- FDAV anti-virus and virus scanner
- FDNPKG package manager, with network support
- GRAPHICS prints to ESC/P, HP PCL and PostScript printers
- HTMLHELP help viewer
- JEMM386 (XMS, EMS) memory manager
- 32-bit protected mode drivers as JLMs (JEMM Loadable Modules)
- LBACACHE disk cache
- LBA large disk support
- LFN support via DOSLFN driver
- MPXPLAY media player: mp3, ogg, wmv with built-in AC97 and SB16 drivers
- PG text viewer (similar to LIST)
- Several utilities ported from Linux thanks to DJGPn