Joshua Spann

DOS Is Still Awesome

DOS

Oct 22, 2019

Over 30 years old… DOS is dead… 32-bit is dated and archaic. 64-bit is all we’ll ever need. No more 32-bit apps or binaries on Linux, Mac, or Windows. The i386, i686, and x86 processors are now in the graveyard for once allmighty CPUs: microcontrollers and embedded applications. And thus the operating systems that ran on those architectures.

But is DOS truly dead? Has it long-fufilled its goals? Is it now a platform for nostalgia and endless monologing YouTubers pining for their fading youth? I say “no”. I think that DOS is even more relevant today, in a world of dynamic operating systems, realtime kernels, and contemporary web apps that are more complex in 2 lines than all the lines in DOS over the years.

I didn’t really get the priviledge of growing up on a Tandy or by cutting my teeth on a Commodore. I grew up on a rug and cut my teeth on the schoolyard asphalt. Both things hurt me and drew blood. My first computer was a doctor’s hand-me-down IBM running DOS 6.5 running Windows 3.11. All I remember is my mom took a computer class to learn how to use it. She stayed late and I fondly remember going with my dad to pick her up.

Thanks to mom, we got it somewhat working. I learned to type win on the dark screen to pull up the most futuristic thing ever: a virtual desktop!!! I fondly remember opening Paint and making lousy drawings, then printing them out on a dot-matrix color printer. I was so dumbfounded on how the drawing could fit my screen but not the paper. Then, after 1.5 attempts, we were out of ink and that was the end of that…

Then, in school, we had oregon trail, snake, you name it. So much fun. We had certain days that we all gathered around the one lone computer and took turns after school playing games. I sucked. Still do. But that dark space was still there, haunting me. Then the school got IBMs. Windows 95. Windows 98. Then we got a Windows ME at home. Then that thing bricked itself in under 2 years. Then XP. Then I got my own computer in 2006 and had fun from then on.

As time went on, I grew up and got a college class. The history of computing with basic cimputing concepts in a nutshell. There I found DOS again. I loved that part of the class. I had used a virtual machine image with DOS, tweaking it to be awesome by finishing the assignments. Then it hit me — the dark times of my youth… it was DOS!

Inspired by DOS and wanting to be legal, I sought out to acquire it legally for myself. I didn’t even realize I could buy it online. eBay was too pricy half the time. I learned of Linux in the next class and wanted something free like that. I typed in “Linux distros like DOS” on a google search and discovered Arch Linux. Then I went full-blown Linux over the next year and ran it as my main system. If only I discovered FreeDOS. Heck, I discovered TempleOS before I did FreeDOS.

I got into Linux wanting that command-line feeling of DOS. Then I smarted up and bought some fresh, unopened DOS disks really cheap online. Plus I found some floppy disks from that hand-me-down (right after I got the order, go figure…). Then I heard great news: CP/M DOS is going open source! Then later on: MS-DOS 1.4 is going open-source! I got excited. I had an old laptop and the harddisk failed. It was a really strange size, so replacing it was a no-go. Bit rot is so great…

I could do a Linux, BSD, or some other *NIX-y live USB, but I thought: not this time. This time, DOS. Thank goodness FreeDOS sought full compatibility with MS-DOS. I had a VM where I installed DOS from those floppy disks. I made a live USB of FreeDOS. I extracted all the files from the VM onto the USB stick. I had a live USB of MS-DOS v6.22 with some luckily acquired now-freeware (Borland, anyone?) and a desire to play around like I never could before.

I did some C programming. Boy there’s a lot today we take for granted. GCC, CLANG, Visual Studio’s compiler… they hold our hands too much. I did some QBASIC and loved making sounds on it like I did in that old college class. Then I could make songs. I could use the speaker like TempleOS. There was no good C library for me so I installed NASM and pulled up the documentation on DOS interrupts.

Then, using some x86 knowledge I got from build-your-own-os tutorials, I was able to do more than just make a bootloader that prints a string! I made the speaker beep endlessly until Ctrl+Alt+Del. Then I got the speaker to shut up. But then no sound. Then I built my own sloppy timer to hold the note past 1 cycle. Then I decided to use a DOS interrupt instead. Now it plays a note. Now I have to link it with my C code and I can have a DOS library to play music in C. Then I can do neat things with the PC speaker.

Why would anyone do this today? Instead of wasting 5 days to get everything to this point, I could have the whole application done in 5 minutes and get it really useful in 5 days! Am I a masochist? Nope. 16-bit real mode, unprotected. Poke and prod, get an understanding of how it all works on the low level. The convenience of today’s platforms and tools do it all for you and you become a whiny know-it-all that complains when you can’t get your favorite library to work.

Playing around with DOS did something awesome to me. I didn’t view the system with nostalgia, memories of clunky 8-bit and 16-bit games, or rose-colored-glasses. I viewed it as an amazing learning platform and tool. It was a place so well-documented but still so void of documentation for my needs. I have an obscure compiler error in GCC? Googled the answer and got it on the first page. Info about the Linux kernel setup and concepts: Would you perfer the Ubuntu or Arch User forums? You have the Arch wiki and countless sub-reddits. Borland says "i" not defined on line 2: for (int i=0;i<argc;i++)? Good luck, your answer was there once and is on the first page. The original site is long down and the internet achive doesn’t have a backup, sorry.

DOS is still awesome because it’s not a hand-holder. It’s a system from a different time and has a different way of doing things. It’s a great place to shoot yourself in the foot. It makes you think low-level. It makes you begin to understand how today’s tools work and it helps you to appreciate them even more. People are hot-to-trot for functional programming, slowly moving away from the constraints of object-oriented programming and even assembly. Even though DOS is seemingly full of assembly and constraints, it is a place where one can find that they are truly free.