Chemistry unhinged

Here’s a series of wonderful postlets on “Things [chemicals] I won’t work with.”  Link.  From stuff that smells very bad to things that like to explode in the dark; stinks and bangs for grown-ups (that is, if there /is/ any adult supervision in the chemistry biz, which I am beginning to doubt).

 

Dead Newt

Once upon a time I had a prototype Newton that didn’t boot. The crash was occurring early enough that the screen was not initialized, and the debugger we usually used for low-level problems wasn’t usable. The audio chip was too complex to write to, and in fact there probably wasn’t physical memory available to safely do audio DMA. The serial port was out for some reason (I forget why. Hush now, don’t bug me, this is a story 🙂 ).

So I wrote some loops of ARM assembly language. The loops didn’t access any memory, didn’t print anything, and they didn’t exit, and didn’t cause any output lines to change. In fact, each of the loops was identical except for their length. I sprinkled them through the boot code and quickly (within about an hour) found the problem (some configuration of stuff in the flash store caused the Newt OS to hurl).

So how did the loops help?

This isn’t a Car Talk puzzler, so I’ll give you the answer right away: Each of the loops had a distinctive sound when I held an AM radio up to the Newton. There was a “high sounding” short loop and a “low sounding” longer one, and by stuffing these into various forks of the boot code I could trace the system’s progress and even shift some data out.

In retrospect I could also have:

– Asked a tech to solder an LED to a spare output line (I’m not sure if we had any, though. Output lines, I mean).

– Clicked the speaker by stuffing data into it (though this might have required setting up DMA and so forth) or maybe just turning its power on an off.

– Gritted my teeth and initialized the serial output on the Newton (this looked hairy to me, and while it probably would have taken longer, it would have given the team a way to debug boot issues later on, sans radio).

As they say: “Any stort in a porm.”  I also think that debugging with a radio was pretty cool.

My first computer

How I got my first computer was like this.

—-

My grandfather was a tinkerer, inventor, high school science teacher and an enthusiastic ham radio operator. He loved gadgets. When I was a kid and we visited, I’d say a brief “Hi” to Grandma and make a beeline for Grandpa’s well-equipped basement shop. I’d come upstairs for meals and excursions to see other relatives in the area, but mostly I was mucking around in Grandpa’s basement (the collection of old Tom Swift books helped keep me down there, too).

Grandpa taught me about tools and loved to show off his latest gadgets (he was very fond of anything magnetic, especially electro-magnets, and always had a few around that he’d recently made or acquired). He was the guy in the neighborhood to see if your snow-blower was acting up, or if your garage door opener was out of commission. He loved radios in any form, and was not afraid of chemistry, carburetors or high voltage. I learned how to use a drill press, what Selsyn motors are, how to strip wire, and about a dozen uses for old baby food jars.

On one visit, when I was nine or ten years old, he tried to teach me Ohm’s Law. Some people constantly carry reminders of things important to them: pocket charms, key-chain trinkets, photos of family or the dog; /he/ carried little cards made of phenolic on which he had printed the various forms of Ohm’s Law. He was an Ohm’s Law freak.

I remember him saying, “This is the most important equation I know. E equals I times R.” And being in the third or fourth grade and completely lacking in algebra, I just did not get it. I did my best to fake understanding, but he was used to his students doing that.

“So, what’s E divided by R?” he demanded.

“Um, I?”

Whew. But the next couple questions I got wrong, and then I think he got a little more excited and started in on inductors, capacitors and reactance, and I was even more clueless. I just wanted to get back to the basement and curl up with some science fiction. My avuncular, wonderful tinker-Grandpa had acquired a serious and slightly scary aspect. Eventually the grilling ended, and I remember thinking that we each had disappointed the other. He gave me a little printed card with Ohm’s Law on it and had me promise to memorize it.

—-

Despite the Ohm’s Law Grandpa Impedance Mismatch, in fifth or sixth grade I started mucking around with electronics as a hobby, building a few things that worked and a lot more that didn’t; really just having fun. I put together some Heathkit projects (a power supply, a digital volt/ohm meter) and read things like the ARRL Handbook for fun. I had my own lab bench in the basement where I did equal amounts of mechanical tinkering, soldering, and making stinks and messes with a chemistry set (augmented with trips to the chemistry supply store at the local university, because even though this predated the true dumbing down of chemistry sets, they still hadn’t put anything truly interesting in mine). I was pretty much a geek, and school was about as much fun as you might imagine for a geek-with-glasses in the mid 1970s.

Electronics was fun, but computers were what fascinated me. I was inhaling science fiction; the main character in the Heinlein book Starman Jones worked with a computer, and The Moon is a Harsh Mistress was all about a really smart computer. I visited my Dad’s lab and played with the calculators and small computers they had there. I stared at Nixie tubes and tried to figure out how they worked.

The high school I was going to had a teletype (an old ASR-33, later upgraded to a faster 300 baud dot-matrix terminal) that dialed in to the school system’s PDP-10, but it was hard to get time on the system without being in a programming class. As a freshman I had no hope of getting “official” computer time for the next couple of years, and I had to sit by and watch the lucky, older students laboriously peck in their assignments: ka-chunk, ka-chunk, ka-CHUNKAchunkchunk… Teletypes really are glorious things when they really get moving. I wheedled some time on the terminal anyway; wrote a version of Life and a chess-move generator.

My parents bought me a Hewlett-Packard 25C programmable calculator. It had 49 steps of program memory, and I spent uncountable hours writing and stuffing programs into it. (My MasterMind game simply would not fit; weeks of clever hacks got it down to 51 steps, but no matter what I did I couldn’t squeeze it down to 49). My dad would sometimes bring home his HP-65 calculator from the office; the 65 had a little magnetic card reader, and I spent entire evenings programming it to run little games I’d written.

Then the January 1975 issue of Popular Electronics came out. It had a picture of the Altair 8800 on the cover, and I wanted one of those so badly I could taste it. When magazines like Byte and Kilobaud came out, I started buying those with my allowance rather than science fiction paperbacks. I scoured the ads in the back of the magazines for parts and made lists of the components I’d need to build a computer (but couldn’t afford). I got data sheets and data books (I don’t remember where) and started designing computers on paper. I memorized 7400-series chip pinouts and drew circuits in class. I found a manual for a SCELBI-8H, an 8008-based system, and it had ROM listings that I studied for weeks. I spent a summer designing an 8008-based CPU board of my own, all the way down to circuit board layouts, though I never actually built it. I knew I wanted to write my own version of BASIC, so I started by writing a floating point package; with a few hints I figured out things like normalization and strategies for doing multiple-precision operations.

A local calculator shop (they had those back then) started carrying computers: some rather cheesy ones from Southwest Technical (“SWTPC”) and the higher-quality “digital group” systems. The Z-80 was announced around this time, and I bought a programming manual for it. I got a part-time job at the local university helping one of my dad’s grad students with a project that involved shucking and carefully measuring literally tons of dried corn. I was actually saving money instead of blowing it on books.

I really, really wanted to program computers. But if you had asked me a simple question, “Why?,” I wouldn’t have been able to say. I was pretty much a teen-age geek basket case. It couldn’t have been pretty.

—-

2AM on Christmas morning, 1977. I snuck upstairs to see what was under the tree. Mom and Dad always put the “big” presents out after we kids went to bed, and they never wrapped them.

There was a package about two and half feet long, maybe eight inches wide and four deep, labeled “the digital group”. Holy shit. But that was weird; it wasn’t big enough to be a computer. Maybe the rest of it was elsewhere? Maybe they’d found a box and re-used it for (say) a sweater?

I went back downstairs and got in bed.

Then I snuck back upstairs again. Definitely part of a computer, not large enough to be the whole thing; maybe the rest was in the garage? I checked it out, peeked into corners and into the cars. Nada. I went back downstairs and couldn’t sleep.

In the morning, I found that my parents had bought me a ‘digital group’ computer system kit from that calculator shop. The first box was the keyboard; the rest of the parts came in installments as I assembled them, board-by-board over the next three months or so. All told the system cost about $1200. They’d agonized over this, but had seen me truly driven over the past couple of years. My dad, in particular, counseled me:

“Don’t get into computers just to do stuff with computers; it’s a dead end. Do something else and use the computers as a tool.”

I’m not entirely sure that was bad advice. The industry does tend to eat its children.

—-

I put the keyboard together in a few hours, and spent the remainder of Christmas vacation vibrating (the calculator store was closed over the holiday). An I/O board was next (a pretty easy soldering job). Then three 8K memory boards (each board about ten inches by eight, with two 4K banks of 1K-by-1-bit chips — that’s 64 chips for 8K of RAM). I took my time with all of the boards, making sure that each connection was soldered correctly, with no bridges or cold joints. When I took them to the dealer for testing (the dealer had a DG system they used to help customers with bring-up), all of these boards worked the first time.

I spent a week of evenings on the CPU board, carefully soldering each connection, taking conscious breaths between each one, examining every solder joint with a magnifying glass. I can still smell the solder and feel the warmth of the thin vertical trail of smoke on my nose. I wanted the board to be perfect. I dropped it off at the shop, and when I went back after school the next day the staff was impressed; the CPU board had also worked the first time — that was the first time they’d seen a customer-built CPU come right up.

“That board looked like it was made in the factory.”

Next, the video board. I was feeling cocky, rushed the work, and missed a solder bridge.

Their verdict: “Not as good as the last one. We were going to offer you a job building boards, but maybe not now.”

I was a bit disappointed, but I think I narrowly escaped a career as an electronics tech.

The cabinet, power supplies and monitor were last, and after making the last wiring connections and checking them I started the system bringup. First I borrowed Mom’s cassette tape recorder (the system booted from an OS on audio cassette — Mom never got to use that recorder again). I plugged in one board, applied power, checked for shorts and too-warm chips. Finally I turned off the power and let the fan slow to a stop. I carefully put the CPU card in its slot, and hit the power switch.

The monitor displayed:

Z – 8 0 R e a d I n i t i a l i z e C a s s e t t e

I put the OS tape in Mom’s cassette player and hit PLAY. The screen started filling with numbers as the simple monitor loaded each byte of the OS. Finally it displayed a menu. I could edit hex, or octal, or display memory, or tell the system to jump to a location and start executing.

I restarted the system, loaded up BASIC, and tried some simple programs. I’d last run these programs on the school district’s PDP-10, and now I was able to run them in my own bedroom, without worrying about whether some senior would kick me off the terminal so he could do a school assignment. My system was blazing fast, too; a teletype couldn’t compete with a video monitor.  I was the only kid in school who had his very own computer.  That was cool beyond imagining.
—-

When I was nine or ten years old, one of my chores was take our dog (a wonderful, soulful basset hound named Dook) out for a walk in the evening. Dook weighed about as much as I did. Rabbits were plentiful where we lived. I used to be very afraid that Dook would spot a rabbit on a walk, because he would get excited, start baying, and take off across a field, dragging me along behind.

One evening he did this and after getting a face full of grass I just let go of his leash. My Dad saw what happened and caught up with Dook in the woods. Dook had actually caught the rabbit. But . . . he looked up at Dad, paw on the poor little bunny, with an expression that looked a lot like “Now what?”

—-

I stared at the monitor thinking “Now what?”

Before I booted that system from cassette, I’d been a hardware guy, driven to make a bunch of chips and boards work. After the first menu came up, I was a software person. I wasn’t that interested in soldering any more. Over the next few years I would add some hardware to the system (a modem for getting on to Arpanet, a mass storage system that supported real files, rather than simple and manual audio cassettes), but I’d never build anything quite as large again.

I knew one thing now: Software was going to be harder.