Dr. Strangecode
(or How I Learned to Stop Worrying and Love the Bomb)
(or Adventures in Microcomputing)

I started programming seriously after the machine was upgraded to 8k. Scott, who owned the computer, was just too constrained in 4k and RAM was falling to undreamt of affordability. I looked at it differently, but since Scott was nice enough to let me play with his toy, I wasn't about to tell him he was crazy.

I had never even considered a program vast enough that it would use up the whole 4k. You have to understand that I was an amateur, programming for fun. It was simple to understand how data could consume all available memory space, but I didn't have much data, only dreams.

Now that memory seemed almost limitless, I felt a challenge to think of a program worthy of this expansive space. Without having to worry about how to tighten-up the code on my 3.2k program so I could have enough data space left, I needed to think BIG. That's how I got the idea for writing my first assembler.

Scott always told me I was crazy. Of course, I was. (Still am, actually.) Who in their right mind would look up all those hex codes to program in machine language when the system had ROM BASIC? He would argue that if he didn't run out of memory he could program anything in BASIC that I could in machine code, and could program it faster. I always countered that I could go to the machine's limit with enough time. The difference between Scott and me was blame. He blamed the hardware. I blamed time.

With a whole 8k to play with, I would have enough room to write an assembler. After it was complete, I could write in assembly, leaving my table of hex codes behind. I could move into the modern age. I could keep up with Scott. I could push the computer to the limit. And so I wrote my first assembler, in machine code, using my hex instruction table for the last time.


I started programming professionally on a machine that came with 64k standard, the Comodore 64. By that time, I realized that 64k wasn't really all that huge, but in assembler it was more than enough. (I'd been fooling around with a CP/M machine for a while, and 64k just didn't seem too large any more.) A company had written a little game on the then-new IBM-PC (in compiled BASIC), and wanted it ported to the C/64. Could this game (well over 100k on the PC) be ported to a C/64 cartridge? In assembler, the code was under 5k, and with static data it still fit on an 8k cartridge. No problem. Well there was a problem. What to do with the other 56k in the machine?


PCs changed all those antiquated perceptions for me. Of course I went through stages. Starting at 64k was a little tight when DOS (1.1) was so huge, but 192k PCs where serious machines. After all, compiled BASIC could only use 128k, and with 64k for DOS, the rest was only useful for ramdrives, right?

Wrong. I learned C. C could use all the memory in the machine. Now I could manipulate close to a half-meg of data in RAM, assuming I had the RAM to work with. Suddenly 640k machines were useful. I had to get over the embarrassment of telling customers things like: "...no, the program needs at least 256k..." or "...upgrade your 320k to 512k and the program will run twice as fast..." I got over it.

Soon enough, with memory prices falling like bricks, my fellow power users and I were trying to push through 640k to 704k. We were hungry and could eat all available memory. We had the tools. We had the technology. We were addicted to silicon before we realized it, and it was too late for us. There was no going back.


The industry eventually caught up with us. EMS and XMS memory, and the '286 gave use new ways to eat up memory. Now we could do ridiculous things like having ramdrives and print buffers larger than the machines we'd started on a few years back. We were freely wasting precious memory, to be sure, but why not? Memory was cheap. What else were we going to do with it?


Windows. It was inevitable. When memory is so cheap they're practically giving it away, we're all grasping at ways to utilize it. In come the visionaries, with new and improved ways to suck up memory. This marvelous new technology starts out using 2MB, 4MB, and keeps getting hungrier. Two or three years back the question "You're trying to do that on a PC with only 8MB?" was unheard of. As a side benefit, the technology contains the ability to consume all available disk space as well. Now we're cooking with gas!


I find it easy, now, to laugh at a machine with only 4MB of RAM. (A mere 3 orders of magnitude from where I started.) I've overcome my problem of trying to conceptualize computers. Now Megabytes, MegaHerz, and MIPS are just numbers. I guess what I was doing was a little like trying to conceptualize the commute to work in microns.

Since I've been working on UNIX platforms, I don't have any difficulty saying to my boss things like: "Order it with at least 64 Megs of memory and 4 gigs of disk if you want it to be useful." I remember being a little uncomfortable with "Giga" at one time, but now "Gigs" rolls out of my mouth effortlessly, and "Kilo" is becoming nostalgic for me.

I'm practicing for the future. I try to use "Tera" at least once a week. I'm still having a little trouble using "Ters" smoothly in complete sentences, but I'll get over it.

I still blame time, but thank goodness memory is now free!


Back to Editorials