Happy Birthday MS-DOS. You were awful, but I liked you...

"Oooh, you are awful - but I like you!"

That was one of Dick Emery's gags - it's a British thing and I'm not going to explain it any further than that.


MS-DOS is 30 today. It's also awful. (That's the link with Dick Emery's punchline.)

I learned computing on MS-DOS.


Sure, I had a Spectrum before that. And that taught me BASIC programming, and how to swear like a retired sailor when a game stopped loading 2:04 into its 2:06 load time. I liked the Spectrum, but it merely whet my appetite and showed me what might be possible.

MS-DOS taught me more about computers than anything else ever could. Or did, for that matter.

MS-DOS is awful because it has no multi-tasking - what's running right now is what you get. It had no process protection - any program could happily overwrite any bit of memory, even if it belonged to MS-DOS itself. It didn't protect hardware - you could do anything you wanted to any bit of hardware. It didn't set up hardware or protect hardware items from each other - if both your floppy drive and your tape drive wanted the same memory, they both got it, with hilarious results!

No, wait. Not hilarious results. Data loss. That's the one. Yes, data loss, and much crashing. That was what I meant.

Yes, MS-DOS was awful. It provided an abstraction from the disk hardware, a basic video and keyboard input/output layer, and a filesystem. If a modern Windows installation is a basic hotel room, then MS-DOS was a bivouac under a bees' nest dripping with honey just as the bears are waking up from hibernation.


But I liked MS-DOS.

It did what it did, and that was that. It couldn't nanny you, or stop you from doing anything. As a learning environment for a computer geek, MS-DOS is fantastic.

You have total access to the hardware, to memory, to everything. It's a hacker's paradise. No, wait, we lost that linguistic battle - a hacker is now a bad guy, not a curious tinkerer. OK, so MS-DOS is a tinkerer's paradise.


As it's an anniversary, I'll give you an idea of how much fun MS-DOS could be with an anecdote.

At school, we had some "multimedia machines" in the Library. Not networked, and often abused by students to play games on with bootdisks. They frequently needed a rebuild.
Myself and a friend were asked to secure them, and we did pretty well. But we had one last hole - kids using CTRL+BREAK to break out of the boot sequence.
And then my friend had an idea.

When you hit CTRL+BREAK in MS-DOS, it interrupts the current operation and jumps to a bit of code to handle the interruption. I'm simplifying there a bit, but it's pretty much what happens.

Basically, he wrote a small program which over-wrote the bit of memory that handled that kind of interruption. Instead of pointing at the correct MS-DOS handler, it pointed at the very start of the code the machine runs when first booting.

So if you tried to CTRL+BREAK out of the boot process, the machine rebooted.

It was perfect.

And I must admit, it amused us and the Librarians for a week or so, watching kids walk up to the machine and try to play games on it, only to find it continually rebooting as they did so. Anyone who reported such behaviour got a wide-eyed Librarian saying "So you mean you broke it?", which usually forced the miscreants to make their excuses and leave...


You can't do that on a modern computer.


And if I'm honest, it wasn't MS-DOS that made that possible. CP/M would probably have allowed the same trickery, for example.

But it wasn't CP/M that I learned on. It isn't CP/M that I'm looking back on with rose-tinted glasses.


MS-DOS was extremely limited. Tools like XTree Gold, Norton Utilities, PC Tools, QEMM, 4DOS and more were necessary to work around its utter lack of useful commands. MS-DOS didn't get an undelete command or unformat until after everyone else had one, for example.

And I'll even admit that at the time, I often didn't run MS-DOS. I ran DR-DOS/Novell DOS, which was compatible but had more features and used less precious RAM...

But DOS, be it MS or DR/Novell or IBM PC, was what taught me the most about the fundamentals of computers. The fact that it mostly taught me by the unusual method of not being good enough and therefore making me go out and learn to find or make my own fix - well, that fact is irrelevant.


I don't miss MS-DOS in my everyday computing. I don't think it could have continued to be useful to many outside of specialised areas. But I am, now that I have hindsight's benefits, grateful to MS-DOS for giving me a grounding for a career with computers.


MS-DOS, you are awful.

But I like you.