26  Computers

I first became aware of computers through a reading assignment in third grade and I was hooked. The short reading, which described the fast math calculations possible on a 60’s-era minicomputer, made me excited about the possibilities of how much smarter I could be if I had one of these things.

Around that time, my father took a part-time job working for the county surveying office, and they issued him a pocket calculator. Although I’m sure these devices had been existence by then for a few years, it was an early (and expensive) model that we otherwise wouldn’t have been able to afford, and I was fascinated. Today we take calculators for granted – they’re so cheap and ubiquitous – but in those days it seemed like a work of genius. Not only could it give instant answers to any arithmetic operation – including division, which to my elementary school mind seemed impossibly complex – but it gave answers to eight digits of precision. This calculator was a simple four-function model, so it had no fancy scientific operations, but that made it all the more approachable to me and I remember spending hours playing with it, and imagining all the fun I could have if something like this was available to me all the time.

By middle school, calculators were becoming common enough and cheap enough for normal families to afford, and it soon was on the list of items I’d like to save up for and own for myself. My paper route money, accumulating slowly, was already enough to afford the cheapest models and in time I might be able to afford one of the real fancy ones.

My decision was made for me, or so I thought, when John came home with a new calculator. Oddly I no longer remember the details of what made is special: maybe it was solar-powered, or maybe it had some additional functions like square root, but I do remember explaining one day to my mother that this is the one I needed to buy.

“You can’t have it,” she said. “You’re just buying it because John has it.”

Mom understood that this was money that I had earned myself, and she must have wondered if it was better to simply let me squander it rather than assert her power to prevent me from a purchase with my own money. But she was also right: I didn’t need that particular, more expensive model. She was teaching me that in order to justify my purchase I needed a better explanation than simple peer pressure.

Ultimately I bought a slightly different model, a bit cheaper but just as good. Prices on electronics always go down, so my delay was to my advantage and I ended up with a pretty good model. I also learned a lesson about the importance of thinking for myself and making my own judgments. It helped that money always seemed tight, like something you had to measure and count carefully, never to be wasted. It was a good preview for the way the rest of my computer life unfolded.

Somehow during this time period, John had become interested in electronics. He found a mail-order company that sold kits, a bundle of parts and instructions that let you assemble your own device. He was good at it, and he began to make electronic equipment, first some simple ones, but was close to taking the biggest plunge and building a full-blown color TV set. Although it was well beyond my budget, I followed his activities closely and soon found myself in competition to understand more, not only about electronics generally but about new and interesting devices I could assemble for myself.

This led me to the discovery one day at the school library, of a magazine called Popular Electronics, and a rival and more technical one called Radio Electronics which in the mid-1970s began publishing more and more articles about digital electronics, including how to build primitive computers. To call it a “computer” these days would be considered an exaggeration: it did nothing more than simple computations – there was no keyboard or display. The key part was a CPU, which at about $18 was a lot of money to me, but not an impossibly-large sum. The trick was how to get ahold of the part.

Since the chip was made by RCA, I started with a local TV repair shop in Neillsville, asking the owner if he was able to order parts from RCA and to my delight he said yes, and that the particular CPU I wanted was something he could get for me. The final price tag, including charges for special ordering it, was just too much for me to take the plunge on just yet, so I passed, but it got me thinking a lot more about computers – and I began to scour every issue of Popular Electronics as soon as it arrived at the library each month.

Our library also had older issues of these magazines and in my hunger for anything to learn about electronics, I discovered the January 1975 seminal cover story about the MITS Altair computer, now regarded as the first PC. I was absolutely floored that such a thing was possible, and I immediately wrote to the company for details and a price list. I still have the letter they sent in response, including a poster-sized description of their products which I hung on the wall of my room.

But getting my hands on a micro-computer would be expensive, far more than I was able to pay especially for something with so little practical use. Fortunately, around this time our high school library signed on to a new timeshare computer service from the University of Wisconsin River Falls, and I became hooked.

In today’s world, where computers are absolutely everywhere, a timeshare computer – literally, you “share” time with others on a single computer – seems crazy slow, and it was. The computer terminal, installed in the high school library, was a simple typewriter-style printer, connected to a central “mini-computer” a hundred miles away at state university extension. The connection, through a phone line, could send and receive characters at the rate of 100 bits per second, or roughly five or six characters per second each way. The terminal in our library wasn’t a computer—it was just a printer with a keyboard, and each keypress had to go through the phone lines to the computer, where it was carefully shared with the keystrokes of dozens of other users in a way that made it feel like a personal computer. Each keystroke was sent back through the phone line and printed on a long, continuous roll of paper, at which point you could type another key and the process would continue. A series of characters typed this way would constitute a command to tell the computer to do something, at which point it would then send back a stream of characters representing its answer.

Even such simple functionality, at the time, was probably outrageously expensive, but our high school justified the cost because it came with online information about careers and colleges. This database, plus a few other equally simple applications were enough to excite the staff of Neillsville High School, but John was excited about something else: the innocuous-looking programming manual that came with the terminal.

The computer could be programmed in BASIC, a simple coding language that was deceptively easy, even on such a slow terminal. John started by writing some very simple programs, and after he showed me how, I was hooked. Soon I had memorized the manual and was carefully crafting new programs in every spare moment I had.

The process was painfully frustrating: I would write my program at home, without a computer, and then enter them later at school. Only then would I know if my program worked or not, and if not, I had to return home and carefully analyze my code, plus whatever the output was, fix it and then repeat the process the next time I was in front of the computer.

To make it even more frustrating, the terminal was a popular place and there was a long line of other students who wanted to use it as well. The librarian instituted a signup sheet, giving priority to those who wanted to use the career database. John and I convinced her that programming was an equally valid reason to use the computer, so we were next in line, but this still meant we had to show up first thing on the morning that the signup sheet was posted, gaining access to rationed time on an even more rationed and slow computer.

Still, such restricted access had one big benefit: it made us very careful programmers, knowing that a simple error that was prevented at home could save days of computer access later. Most of the time, by the time we entered the programs, they were already so carefully and thoughtfully constructed that they worked the first time, requiring only minor modifications.

The biggest problem was finding out more information about the programming language. The manual in the computer room was too brief to show more than the simplest commands, which we soon outgrew. I thirsted for anything at all that I could do better than John, and soon was scouring every possible source for more information.

One day, hidden in another room at the library I discovered a very thick manual – the real programming manual that had come with the computer but had apparently been forgotten no doubt due to its size and apparent irrelevance. But it wasn’t irrelevant to me. I brought the book home and poured through every page carefully, learning everything I could about seemingly arcane features of the programming language.

Much of my interest was fueled by my rivalry with John, and at first I hid the book from him, only revealing the new commands I uncovered when absolutely necessary to demonstrate some cool new feature. My interest in showing off, of course, soon forced me to reveal the secret manual, which I now shared with John. This proved even better because he soon found more things that I hadn’t seen, and we both became part of a virtuous cycle, getting better and better at programming, at 100 bits per second.

26.1 Summer programming

Although summer vacation was of course something all students look forward to, for me especially the end of classes in June meant the end of access to the school’s computer. I think John was less worried about this than I was. Writing computer programs came naturally to him, and although he was as competitive as the next male teenager when it came to trying to outdo me, he had other interests – and skills – besides computers. Summer meant more time for his electronics hobbies, for example, and his father – as owner of a car dealership – had plenty of paid work for him to do as well.

But I was too hooked on this computer to simply go without for the summer. I begged the librarian, a kind and supportive woman named Della Thompson, to let me visit the school during the summer.

Della was the mother of Tracy, a neighbor boy close to Jimbo’s house, a boy we had played with for years. I’d been to his house innumerable times, including once with Jimbo in order to film our own “movie”, a Star Trek wanna-be involving special effects and, of course, interaction with technology and computers. I knew Tracy’s mom from those times at his house, and she knew me as well, so when I finally worked up the nerve to ask for permission to drop by the school, she gladly agreed – at least for the days when she herself was at the school.

To have more access, I needed to speak with Mr. Hoesley, who today would have a title like “IT director”, but in those days was simply an assistant principal, responsible for some of the more mundane tasks that the principal didn’t have time for, like ordering and installing pieces of educational equipment, including the computer in the library.

Mr. Hoesley, fortunately, was happy to have me use the computer in the summer, at least on whatever days the school was open – which was most weekdays, since he himself worked through the summer. Nowadays, somebody like him would be actively involved in the computer education, perhaps writing programs side-by-side with me and John, but he was more than happy to let us do all the computing.

For much of the summer, my daily pattern was similar: ride my bike to the school in time to meet Mr. Hoesley when he arrived and let me in to the library. I’d work there until the day was finished, mostly entering and then debugging computer programs I’d written the night before. If it worked, great! If not, I’d debug as long as I could, and then spend my evening pouring over the printouts to see what had gone wrong, adding and subtracting lines of code until I had a plan for the next day.

I’d also spend evenings pouring through the compute manuals to learn more and more arcane commands, expanding my knowledge of what was possible and learning there was no apparent limit on how cool this technology could be.

26.2 TRS-80

It wasn’t until I was in college that some people started to use the term “personal computer” (after the first popular one, the IBM PC). Until then, we called them “home computers” or “microcomputers”. In fact, the “micro” in Microsoft dates from those days, when Bill Gates wanted people to understand that he was making microcomputer software.

My first computer: a Radio Shack TRS-80

These computers were outrageously simple by today’s standards, but that also made them an excellent learning environment because it was possible – just – to understand everything about the entire system, from the chips to software. This made the subject, to me, all the more approachable, and even today I still think about computers in terms that I first understood back then on my first one, the TRS-80.

The TRS-80 came with just one microprocessor, called the Z80. It could execute only a single 8-bit instruction at a time, at the speed of 4.7 kilohertz – just under 5,000 operations per second. By comparison, the PC I use to type this document has eight separate microprocessors, each running about one million times faster and with instructions that are 64-bits. A true comparison isn’t possible, but roughly speaking that’s tens of millions times faster — and my current computer contains many more parts, some of them far more complicated and faster even that that.

My first TRS-80 had a 4K memory RAM memory in which everything had to run, including all graphics on the 64 x 24 line screen. Memory was so tight that the computer didn’t even support lower-case letters; there was a hack to let you display in lower-case, but it required soldering a separate memory chip onto the motherboard, and although I was tempted, I didn’t want to risk ruining the entire computer with a single mistake.

I devoured the manual for the computer, especially the programming guide where I learned about Microsoft BASIC, a simple tiny programing language written by Bill Gates himself and that was actually fairly sophisticated. One of my first add-on purchases was an upgrade to the built-in BASIC, letting me run “Level II” BASIC, a more sophisticated version that ran in 16K. A friend later gave me an even more sophisticated “Level III” version that contained more sophisticated commands and was, at the time, awe-inspiring in its power.

The TRS-80 had a simple architecture, with a single memory space for everything, including graphics and all peripherals. Pressing a key on the keyboard flipped a bit at a fixed place in memory, which you could read in order to tell what was pressed. A major problem, in fact, with the first TRS-80s was that pressing a key prevented the computer from recognizing any other keys until the first was depressed, meaning you had to type very carefully and slowly to avoid missing a character.

It was possible to program the TRS-80 directly in the Z80 machine language, which not only ran much faster, but also gave you more direct control over some of the computer operations. I soon learned how, for example, to write a graphics operation that seemed blindingly fast compared to the built-in BASIC way of doing it. It was also possible to control the output ports and simulate some simple musical tones. Nothing, it seemed, was impossible if you thought cleverly about it.

I learned how to disassemble the built-in BASIC programming language, and I spent hours pouring over the source code, both to learn more how the whole thing operated, but also to teach myself assembly programming. For my sixteenth birthday, I received a Z80 programming manual that soon became among my favorite books; I read every page.

The computer, including monitor, keyboard, and a simple cassette recorder for storing data, cost about $700 (about $2,200 today if you adjust for inflation). That was about half a summer’s earnings for me back then, working at minimum wage.

Although I had played with programming on the timeshare computer at school, nothing compared to the time when I saved up enough money to buy one of my own. I horded magazines to learn more about them, first from our high school library, then from purchases I made during a summer visit to a store in Tulsa, Oklahoma.

The key lessons I learned, though, were not so much about programming a computer, but about how approachable the computer could be. Nobody taught me; I just picked up whatever I could from wherever I could, and I learned by trying things.

There is nothing to compare to learning new software ideas by inventing them yourself. That’s how I learned linked lists, for example, or the basics of parsing. When I later learned the “real” algorithms for some of the things I invented myself, it was a huge thrill to see that I already knew this stuff. It was as if I had discovered, independently, a world that was magical and new.

It was this sense, that I could do something that even adults had a hard time with, and that I could master a new domain without a teacher – that sense became deeply ingrained, and was something I never forgot. Years later, when I struggled to learn many other things on my own (the Japanese language, countless other computer programming languages, even new subjects in math or science or biology), I had a special confidence developed long ago in my room in Neillsville, when I learned that passionate focus could turn even a daunting ignorance into mastery.