10 comments

[ 0.18 ms ] story [ 20.6 ms ] thread
nostalgic !
(comment deleted)
Oh, man, using DEBUG to mess around with the system binaries was my JAM when I was 13, 14 years old. I would put new messages in, cheat at Prince of Persia on the school's computers by patching the save file, all sorts of malarkey.

I discovered that my computer's 80186 processor had onboard features that no other x86 processor had: among them, three onboard very high resolution timers. I used one of those timers and a very tight loop to toggle the speaker with a sort of PWM to make it play at different volumes. I didn't really know what I was doing, I should have timed the various instructions and adjusted the timer delay so I could tune the speaker to different frequencies. But I got within spitting distance of being able to play music with some degree of timbre and even polyphony on that thing, which it wasn't designed to do!

How ironic that these days there are many millions of computers chock full of nifty devices like that, that are dedicated to individual users, that are all buttoned up so tightly with multi-user protected operating systems that it's virtually impossible for a kid to discover the sense of power you get from banging directly on the metal. Sure, you can still get there, but the road is now very much longer and full of non obvious steps. With good old debug.exe, the curtain was right there for anyone to pull back.
You know, DOS is still there and you can bang directly in the metal inside a virtual machine. But nowadays you can do this even way better in Arduino/RaspberryPi, having even more hardware exposed. Sure, the road is a bit longer, but also the power rush you get from seeing your little nifty cobbled together wires that, once coupled with a serial->usb converter, your fiddling with switches will do on the screen, is very intoxicating.
Great little tutorial and a lovely trip down memory lane!
Lovely. I spent many an hour in DEBUG.EXE as a child.

Finding extra space for adding code, like the welcome message, was always fun -- although it would be better form to have the code zero out the "borrowed" bytes after the message is written, just in case. Sometimes it was necessary to rewrite the assembly to squeeze in a few more bytes, eg, zeroing a register using an XOR instead of a MOV command with a 0000 parameter.

One could save these patches as text files that were designed to be piped directly into DEBUG.EXE, and these could be distributed -- by floppy, BBS, or printout -- to other users of the same DOS version. This was also a common way to format and distribute assembly language source code, since anyone could use their local copy of DEBUG.EXE to assemble it.

DEBUG was way ahead of its time. Such a useful tool. I believe it was derived from DDT debugger in CP/M.

Similarly, EDLIN was derived from ED in CP/M which was also a clone of "ed" on Unix. So, EDLIN and VIM are distant cousins. :)

On my computer typing class, I had to do the exam using edlin, thankfully that was the last time I ever bothered to use it.

Even MS-DOS 3.3 had better alternatives like QEdit available, with its WordStar shortcuts.

QEdit was my favorite editor on DOS. So fast. I actually had read the whole Hitchhiker’s Guide trilogy on QEdit.