Tube Matching with Python, Part 1 — Um, things have changed a little…

One day in 1981 my dad arrived home with two large boxes and a feigned seriousness masking his nervous excitement. Inside the boxes were two rather big-ticket items for our family at the time:  a personal computer and a fax machine!  Everyone gathered around as he slowly opened the boxes and pulled out these mysterious and futuristic objects.

IBM Selectric II Typewriter circa 1971

My dad was a copywriter, and worked out of a home studio hunting and pecking his way through manuscripts on an IBM Selectric II typewriter.  When he’d finish a manuscript, he’d hop in his Jeep and drive in to the city to bring it to his client, and within a couple of days he’d make the trip again to retrieve the manuscript marked-up with red ink. Then he’d re-write everything, typing it all over again until he had a fresh stack of papers, and repeat the process as many times as necessary until the copy was approved.

The fax machine changed his life.  Eliminating several three-hour roundtrip drives to downtown Chicago per week meant many more hours to write for pleasure, play music, make paintings, and work outside.  There were horses to feed and chickens to round up at night and everything got a little easier with the additional time made possible by the fax machine.

Atari 800 8-Bit Personal Computer circa 1980

The computer was an Atari 800, an 8-bit sysem with 48 kilobytes of RAM.  There was no hard drive, but programs could be read and written to regular audio cassette tapes using the accompanying tape drive.  Data was somehow encoded into a series of 1-second audible bursts of sound which were written to and read from the tape as needed.  It took absolutely forever to load a program — easily 15 minutes, and the loading process was prone to error.  One sneeze and you’d have to hit the reset button and start all over again.

Atari 410 Cassette Tape Drive

There was also a built-in cartridge system which was way faster and far more reliable than the tape drive.  Programs could load from a cartridge in less than a second after plugging it into one of the slots and closing the little trap door on the top of the machine.

Atari 800 with BASIC cartridge installed

The computer salesperson had thrown in a Pac-Man game cartridge as part of the deal, and there was also a cartridge that was just called BASIC, but it didn’t seem to do anything — it just displayed a command prompt, and it seemed like no matter what I typed it would just say “syntax error.”  A similar thing would happen if I accidentally pressed the “BREAK” key while playing a game — the command line would appear and nothing I did would get me back to my game.  I just had to hit the dreaded RESET button.

Since the computer had to be connected to the television, its use was limited to the periods of time between whatever television shows happened to be of interest to anyone else;  nevertheless, I squeezed in hundreds of Pac-Man sessions until I couldn’t stand it anymore.

My dad was wildly creative and intimidatingly smart, but when it came to technical things he was totally hopeless.  His dream of updating his workflow to include a word processor and fax machine only got as far as the fax machine, and the computer sat neglected under the TV for two more years (except for the occasional game session).

Atari Disk Operating System II V. 2.5 circa 1984

Among my small group of pals in fifth grade was a boy named Matt.  Sleeping over at Matt’s house was awesome because they had all kinds of things my family didn’t, like an Apple IIe computer with a floppy disk drive and whole bunch of floppy disks loaded with games!  We’d play Choplifter and Oregon Trail for hours on end, and I got used to interacting with the command prompt to dig through directories on floppy disks in search of new games to try.

One day out of the blue Matt stopped and said, “You know, we could make our own game.”

“What? How?”, I responded.

Matt typed ‘list’ into the command prompt and hit return, and suddenly several dozen lines of code scrolled down the screen.  I stared at it in fascination, but it all seemed like completely nonsensical gibberish.  The only recognizable pattern was that every line was numbered, and the numbers seemed to increment by 10, but everything else was a mystery.

That was as far as we got in making our game —  he had no idea how to write a program and neither did I, but I was totally intrigued.  As soon as I got home I fired up the Atari 800, loaded up a program, then deliberately hit the BREAK key.  When the command prompt appeared I typed ‘list’ and hit return, and WHOA!!  Dozens of lines of code scrolled down the screen, similarly nonsensical and with the same line numbering scheme.

For the next few weeks I typed “list” into every computer keyboard I could get my grubby 11-year old hands on:  the mainframe terminals at the elementary school and public library, and various Apple, Compaq, and Commodore computers at other kids’ houses.  To my astonishment, similar lines of code appeared in nearly all cases.  It was as if I had been given the keys to a secret world that no one seemed to have any idea about — none of the adults had any clue what I was doing, even though it was their computers I was messing around with.  Unsurprisingly, I was often shooed away immediately out of concern that I’d break something.

One day I asked my fifth grade teacher if I could skip recess and practice the math exercises on the mainframe terminal, and he agreed, but instead of doing the exercises I spent the time digging through the programs and looking at the code.  My teacher appeared halfway through and looked over my shoulder, and in an obvious state of panic immediately banned me from the computer room for the rest of the year.  Undeterred, I started spending a lot more time at the public library, where an identical mainframe terminal was available to the public, and I discovered almost immediately that the same username and password given to my fifth grade class to access the math exercises also worked on the terminal at the library.  I still remember the login:

Username:  25,5

Password: five

Naturally, I wondered if the sixth-grade class had a login too, so I figured I’d try:

Username:  25,6

Password:  six

It worked!  Right there in the directory were all the math exercises that had been completed by the bigger kids in sixth grade, some of whom were jerks.  In pursuit of vigilante justice for bully-crimes previously committed against me, I re-did their exercises and entered all incorrect answers until they had the lowest possible score, then spent a week terrified of what might happen if I got caught.  To my relief, nothing ever happened!

What really intrigued me was how it could be possible to see the same files on the computer at the library that I could see at the school, 6 miles away.  I begged all available adults for information, but all they could tell me was that computers communicate with each other over telephone lines using a device called a modem.  I somehow found out that Atari sold a 300 baud modem that worked with the Atari 800 computer, but it cost $145!  ($345 in today’s dollars.)

The following year my mom moved into a house in town, right across the street from the public library, and I moved in with her.  This had two huge benefits:  there was an endless variety of concrete terrain to ride my skateboard on, and there were hundreds of houses with lawns to mow and I could convince people to pay me $5 to mow them.  In about two months I had mown enough lawns to buy the modem.

Atari 1030 300-BAUD modem

The modem introduced a new problem:  not only did I have to wait until no one was watching TV to use the computer, I also had to wait until no one was using the phone to use the modem.  Having a teen-aged older sister meant the phone was rarely available during normal waking hours, so I adapted by staying up later and later, and soon learned to love the quiet late-night hours that would characterize the next three decades of my life.

In 1984 there was no world-wide web and no such thing as a web-browser.  Peer-to-peer communications between computers typically involved a user’s computer calling into a host’s computer running a BBS, or “bulletin board system”.  After dialing in to a BBS, a text-based greeting would appear and the user would be prompted to choose from a numerical menu of options.  The typical BBS had options to download other programs, leave “E-mail” (which was really just a way of leaving a short message to other users), download a list of phone numbers of other known BBSs, and to “ring for the sysop.”  If the system operator happened to be nearby, they might hear the computer’s chime and engage in a one-on-one typed chat!  Somehow I had discovered a direct line of communication to people who knew so much more about all this stuff than I did, and I could ask questions if I was stuck on a problem I couldn’t figure out.  I filled up almost an entire spiral notebook with phone numbers and notes about other BBSs, downloaded countless programs, and (by studying their code) gradually became proficient in writing my own BASIC code.

I soon became overwhelmed by a burning desire to write my own BBS, and for the next several months I stayed up way past bedtime working on it.  I listened to a Purple Rain cassette  repeatedly on a small boom box, and to this day those songs never fail to remind me of for/next loops and gosub statements.  Eventually I managed to get the basic functionality of my BBS working, with a greeting page that offered the standard numerical menu options:  download programs, post “E-mail”, view and contribute to a compiled list of other BBSs, and of course, ring for the sysop.  I could barely wait to get it up and running, and I was filled with anticipation about being my own sysop and having someone ring for me!

Eventually I completed the code, and all that remained was to figure out how to program the modem to automatically answer incoming calls and run the BBS.  This is where things got difficult — monopolizing the telephone line was not something my parents were interested in, for starters, and worse, the Atari 1030 modem did not have an auto-answer function.  The “Cadillac-of-modems” at the time was the Hayes 300 baud modem, and it had an extensive command set that allowed for automatic call answering, but it cost “$1 per baud”, or $300, and that was way out of reach. My modem could answer calls, but I had to wait for the phone to ring, then frantically enter the command to answer the call.  I was able to test my BBS this way by requesting other sysops to call in, and luckily for me they courteously obliged.  I remember answering the first call and barely being able to sit still as I eagerly awaited the computer’s chime.  It seemed like forever, but finally the chime rang out and I leapt out of my chair to answer it, typing:  Hello, this is the sysop!

The modem of my dreams: Hayes 300 BAUD

Over the following months I tried to find a way to save up enough money to buy a Hayes modem, but it was winter and there were no lawns to mow, and whatever money I could make shoveling snow couldn’t get me close to the $300 price tag.  Over time I turned all my attention toward skateboarding and my increasing interest in punk rock, started playing the drums, formed a band with some friends, and took what would ultimately become a 33 year hiatus from computer programming.  Clearly, I never lost the love of it, as evidenced by the spray-painted pillow case hanging on the wall behind me in my band photo, bearing our band name:

Atari Party, 1987







Next:  Tube Matching with Python, Part 2:  Push, Pull, and Balance