Another obsolete problem solved!
I have successfully added non-volatile memory - something like a thumb drive - to
a 30-year-old computer that had no permanent storage. Basically, the only person
who cares is my 9-year-old self. But he’s dancing with glee!
Portrait of a Young Geek
The year was 1979. I was nine years old, in fourth grade. I had just discovered and was immersed in 19th century novels, in the form of The Three Musketeers, The Man in the Iron Mask, and The Hunchback of Notre Dame. I had saved up my allowance and bought myself a chemistry set. I had asked for, and was receiving, private music and Latin lessons. My brother and I were beginning to get into Dungeons and Dragons. My biggest treat was getting to go with my Dad to the dump, where I would find old appliances, bring them home, and salvage electronic parts from them (without, yet, really knowing what to do with them). I was just doing the stuff that seemed coolest at the time, but in retrospect I was pretty much following a classic geek script.
But then came the life-changing event, the moment that would determine my life’s course, that would elevate me from affably eclectic geek to seriously antisocial obsessive:
My dad brought home a computer.
Now, I had done a little of what you could call programming before, on my uncle’s Hewlett-Packard calculator. You could program those classic little guys with simple algorithms, including looping and input if I remember correctly. But no one would have called them general-purpose computers, even at the time.
But this was a Heathkit ET-3400, subtitled a “Microprocessor Trainer,” released in 1977. So it had a 6800 processor (forerunner of the 68000, on which the first Macs were based), RAM, ROM, a keyboard and a display, and you could type in your own programs and run them. It was a watershed moment. I got hooked.
Now, basically all of those key elements deserve some asterisks. First off, the numbers: 256 bytes of RAM. 1 KB of ROM. 500 kHz clock speed. Damn slow and puny. Second, the “display” consisted of six figure-eight LEDs, and the “keyboard” had exactly 17 keys - 16 hexadecimal digits plus a RESET button. You programmed it like this:
Write your program in assembly language, longhand. I used yellow legal pads.
Assemble it yourself into machine code. I used the left margin, mimicking the format of the listings in the manual, which had been produced by an assembler running on some other monster machine of the day.
Type the machine code into RAM, byte by byte, using the primitive “monitor” program in ROM that ran automatically on reset.
Point the processor to the memory location where your program started.
Hope it worked.
The monitor program included some simple debugging tools - up to four breakpoints, at which you could examine and modify memory.
So you really could write and run programs on it, to a first approximation. The main problem was that there was no permanent storage. Once you pulled the plug, everything was gone. So any session with the thing had to start by tediously typing in your program again. But, with 256 bytes of RAM, your program could never get very long anyway, so I just did it.
Bigger and Better
I think I actually did get a few of my own programs to run on the thing, which I now find astounding. A year or so later, my Dad brought home an expansion module for it (ETA-3400), that included a whopping 4 KB of RAM and ROM, a Tiny BASIC interpreter, and interfaces to an ASCII terminal and a cassette tape recorder, for storing programs. The cassette interface was slow, and didn’t always work, so you still lost a lot of code. It made sense to write it all out on paper anyway, because if the tape got hosed you’d have to type it all in again anyway. But it was something - and having a high-level language available was worlds easier. Plus, four kilobytes of RAM! I’d never run out of memory.
I wrote some programs to help running D&D games. Then I wrote my first adventure game, and promptly ran out of memory the first time I tried to type it in.
After that, we ended up getting an IBM-PC hot off the assembly line in 1982 (my father worked for them and won an early spot in the lottery for employee purchases), which had floppy disks and BASICA. Turbo Pascal followed, and eventually a 10 MB hard drive, blah blah blah. All us old geeks think our own hardware history is far more fascinating than it really is.
But I do have a point
And it’s this: in a fit of nostalgia, when I turned 36 I bought myself an ET-3400 on eBay. I just wanted to have it; I’m not into collecting all my old machines or starting a museum or anything, and of course there’s no question of trying to use it for something really useful - I have 8-pin DIP chips that are more powerful than this thing now. I just wanted to have it as an icon, a mandala, a talisman. A reminder of when things were simpler, and a reminder that simple things can change the world. (I’m halfway through my actuarially-predicted lifespan; I’m allowed to start going maudlin sometimes, right?)
But of course, it’s not an icon if you can’t display it. And it’s a computer; you can’t display it unless you can run a program. It would be cool to get out the old yellow legal pad and put in something at least marginally functional.
But how could I give a demo? Any program I wrote, however short, would have to be keyed in each time I wanted to show the thing…
A project is born
And that’s about all it takes to get me going. I got a $5 chip with 8 KB of EEPROM, and started working on connecting it to the Heathkit. Its whole top surface was a breadboard, so it was made to be hacked. It ended up taking me almost exactly a year, mostly because other projects intervened. But it worked! And, I even got to use a couple of TTL logic chips that I still had from those early trips to the dump.
So… it works
It would have been magic 30 years ago. Now, it’s basically useless. So it goes. But I can now make my little demo programs, store them in the EEPROM, and run them. So I’m happy… and so is that nine-year-old boy.
(If you’re that same nine-year-old boy, here are more details.)
Now if you’ll excuse me, my yellow legal pad is waiting.