FreeDOS - Not just for updating your BIOS. - Dr Owain Kenway

Monday, Jun 19

Generally, I’m a tinkerer. I like playing with things and taking them apart and fixing them. I do this in my day job looking after UCL’s supercomputers, but I like to have some systems at home to play with. If I’m honest, I’m attracted to unusual, old pieces of technology - old programmable calculators, old computers - my most recent aquisition for example is an Amstrad NC200 - a Z80 based laptop computer which comes with BBC BASIC, a stunning 128K of memory and a DD floppy drive. I dream of having the room for DEC PDP-8s, 11s, and 10s in my flat. But that’s not an option today.

A while back I went looking for something to do with my ancient ASUS EeePC 701 netbook which had been sitting in a drawer for some time after several years of service during my PhD. For a while I planned to install a 32bit install of Ubuntu server, but its meagre specs (256M RAM, but more the 4G storage) made this look like a little bit of a struggle. Then, after watching so Lazy Game Reviews (check out his videos, they are great) of old DOS PCs I had an epiphany - while my EeePC was going to struggle to run Linux, it would be an excellent DOS machine. I don’t care about networking on machines I tinker on, and indeed due to my security paranoia, networks on old machines are an anti-feature!

Then came a hunt for a DOS. My DOS 6.22 floppies of 23 years ago were long gone. I wanted PC-DOS 7.0 (because it had REXX which I wanted to play with more) but it was quite hard to find legitimately (and I’m not a fan of piracy, even for abandonware). And so I decided to try FreeDOS.

It was a little bit of a struggle to install on the machine, because the 701 is quite old, and some combination of its USB storage support and my USB DVD drive really didn’t like the format of the installer so it could boot but not see the install files, but thanks to the installer being well written I hit upon a workaround - boot off the CD and then read the install files off a separate USB stick.

(Note - you must use the legacy installer with the 701 as its Celeron processor is so old the normal one won’t work!)

After an evening of prodding it I had a working machine:

FreeDOS booting on the EeePC

FreeDOS works pretty well on the EeePC. I’ve not tried networking (see aforementioned comments) and the APM tools don’t seem able to read the battery status (hardware indicators work) but overall it’s a great little development machine. Even better, it comes with a massive stack of packages to get you up and running, including some, like the 4DOS shell and the OpenWatcom compiler which used to be commercial products in my childhood, and which used to be regularly advertised in Byte. It has a friendly, Linux-like package management tool for installing them as well which is great.

Here are some great, useful packages that come with it:

In addition to the provided tools, most (all?) DOS software works as well, and so to the standard set of packages I added VIM for DOS and the OpenWatcom F77 compilers (I will always prefer Fortran to C, it’s my upbringing).

Our Pi example F77

I also added a USB floppy drive to both this machine and my Linux machines for that little bit of retro flair copying files between them (USB mass storage works on this machine as long as it’s plugged in at boot).

What do I use this machine for?

Well it’s mostly a machine for doing some hobby programming in Fortran. It is ideal for the task as it’s extremely portable, but also because it’s stress and distraction free: I don’t have twitter in prodding me in the background. No e-mail or youtube videos to distract. I don’t really have to worry about security or updates as it’s not connected to any networks. Instead I can focus on writing code.

FreeDOS at the HPC-SIG

For the same reasons it’s an excellent machine for taking notes at meetings. With no distractions I am forced to pay attention to what is going on. I’ve never got the hang of taking effective notes on the iPad either - I’m afraid touch screens are never going to be comfortable to type on. Notes written, back at base onto the floppy they go and onto my main (Linux) machine. The joyous retro click of the floppy drive dragging me back to my PCs in the 90s.

The system is simple enough that tinkering on it while understanding what is going on is easy - one of my frustrations with Linux is that over the last decade it’s become increasingly Windowsy in its complexity - arguably necessary to provide a modern desktop (indeed I’m typing this on a Linux machine) but deadly to understanding. FreeDOS is simple in a good, old-fashioned way. It’s easy to learn and easy to learn things on. There is 35+ years of software available. DOS in general is pretty well documented. FreeDOS runs on modern hardware.

Perhaps the biggest surprise is how modern and easy to use the system is for software development. The workflow for coding on the machine is different from what I do on Linux only in that I don’t have git available. Even though I’m using compilers from the 90s, a user interface from the 80s and Vim. Both FreeDOS’s shell and 4DOS have tab completion (although it works differently from bash). If you really need them, Unix-style tools are available. Watcom’s wmake is a fairly adequate implementation of make. As a result I’ve tackled my first largish F77 project (I’ve always used F90 + whatever add-ons the compiler I’m using has) pretty successfully:

My implementation of Conway's Game of Life on FreeDOS with Codepage 437 graphics

Overall, if you have a spare machine lying around and want to do some programming, or are just hankering after a retro system to play with, you should give FreeDOS a try. You’ll learn a lot about what makes the machine work, and you’ll have a lot of fun. The community (on the mailing lists and twitter) appears friendly as well.

I think you could make a strong argument that with the additon of QBASIC (or just using edit and freebasic) it’s an excellent environment for children to learn programming as well.