by Paul Allen
If DEC was the cutting-edge leader among IBM’s competition, Honeywell was a big cocoon where people punched the clock as though they were working for the phone company. The firm was known for its low-stress, informal work culture: no neckties, lots of bridge games at lunch. The managers had offices with windows, along the perimeter, while the programmers worked out of a large bullpen, two to a cubicle. My colleagues were nice guys in their thirties. They were solid software engineers, but nothing like the elite at C-Cubed or the crack hired guns at TRW. They had no hacker ethic.
I was assigned to a communications protocol that would link multiple Honeywell minicomputers, a small piece of a big project within a turn-the-crank environment. I sat in my light brown cubicle and wrote anonymous assembly code for a niche-market machine, and soon I got bored. I was happier in my spare time, when I could use Bill’s password to hack around at Harvard and got my first exposure to Unix, the multitasking operating system from Bell Labs that had taken universities by storm. With short commands and a root-and-branch file system, Unix provided an easier way to organize files, and it could run on hardware costing as little as ten thousand dollars. Here was a parallel computing universe that seemed full of fresh ideas, and it made my work at Honeywell feel even staler.
Rita and I had come to New England knowing two people. One was Bart Johnson, a brilliant, troubled Lakesider who would insinuate that he was working for the Mafia. Bart had an unusual way of dealing with parking tickets; he’d buy a junker and park wherever he pleased in Back Bay, until the tickets overflowed his glove compartment. When the car got towed, as it inevitably did, he’d go out and buy another one.
Then there was Bill. We had him out to Tyngsborough in October for a birthday dinner for him and Rita, who always found Bill entertaining. Back in Pullman, she’d roasted a chicken one night for dinner and couldn’t take her eyes off him. “Did you see that?” she said, after he’d left. “He ate his chicken with a spoon. I have never in my life seen anyone eat chicken with a spoon.” When Bill was thinking hard about something, he paid no heed to social convention. Once he offered Rita fashion advice—basically, to buy all your clothes in the same style and colors and save time by not having to match them. For Bill, that meant any sweater that went with tan slacks.
That November Rita and I moved into Rindge Houses, a subsidized development in Cambridge with linoleum floors, steel doors, and legions of cockroaches. After my Chrysler began burning oil, I bought a used yellow Mustang convertible for $290. One morning I climbed in and turned the key. Nothing happened; someone had stolen the battery. A few days later, I went to Sears and returned with a new one. Again I opened the hood, and this time the engine was gone. I gave up on my convertible, which was ill-suited for that whistling Northeast wind anyway. Within weeks the car was up on blocks and stripped clean.
By Thanksgiving Rita had left her job and returned to Seattle to finish her degree at UW. Rita was my first love, my first slow dance, and without her I was lonely. I spent more time with Bill at Currier House before his nightly poker games with the local cardsharps. He was getting some costly lessons in bluffing; he’d win three hundred dollars one night and lose six hundred the next. As Bill dropped thousands that fall, he kept telling me, “I’m getting better.” I knew what he was thinking: I’m smarter than those guys.
In my off hours, my thoughts turned to microprocessors. A few low-cost computers had been built around the Intel 8008, but none had made much headway. The French Micral N, marketed as a “microcomputer” in 1973, could be programmed only in binary and was used in highway tollbooths or for overseas agriculture projects. The Scelbi-8H, with just a thousand bytes of memory, was mostly ignored; the Mark 8 came in a kit for only the most manic do-it-yourselfer. With the advent of Intel’s more capable 8080 chip in April 1974, technology seemed ready for a leap. But the springboard general-purpose machine had yet to be built.
I wondered if we might draw on the Traf-O-Data design to create an 8080-driven computer that would rival the PDP-8, but Bill found that unconvincing. Then I countered: What if we could string a hundred chips together to make something cheaper and more powerful than the minicomputers of the day? Or if we pooled a bunch of 4-bit processor “slice” chips to emulate the IBM 360 at a fraction of IBM’s inflated prices?
Each time I brought an idea to Bill, he would pop my balloon. “That would take a bunch of people and a lot of money,” he’d say. Or “That sounds really complicated.” Our Traf-O-Data ordeal was still fresh in his mind. “We’re not hardware gurus, Paul,” he’d remind me. “What we know is software.” And he was right. My ideas were ahead of their time or beyond our scope or both. It was ridiculous to think that two young guys in Boston could beat IBM on its own turf. Bill’s reality checks stopped us from wasting time in areas where we had scant chance of success.
So when the right opportunity surfaced, as it did that December, it got my full attention.
* * *
SOME HAVE SUGGESTED that our Altair BASIC was remarkable because we created it without ever seeing an Altair or even a sample Intel 8080, the microprocessor it would run on. What we did was indeed unprecedented, but what is less well understood is that we had no choice. The Altair was little more than a bare-bones box with a CPU-on-a-chip inside. It had no hard drive, no floppy disk, no place to edit or store programs. And even had the machine been up to it, debugging on the memory-challenged 8080 would have been slow and difficult at best.
Any other programmers vying to bring an 8080 BASIC to Albuquerque would be facing an uphill climb. For starters, they’d have to realize that they needed a simulator and then to create one from scratch on a mainframe or minicomputer. Bill and I had a big edge in speed and productivity with our Traf-O-Data development tools. But could we actually write a BASIC interpreter?
Our game plan echoed our work on Traf-O-Data. I would generate the tools, the macro assembler and simulator, while Bill took the lead in creating the interpreter’s design. In contrast to a compiler, a memory hog that converts whole files of source code into assembly or machine language, an interpreter executes one snippet of code at a time, on the fly, which would minimize an Altair customer’s outlay. At the time, 4K of memory was just under three hundred dollars retail—a fair sum in 1975, but not a deal-breaker for a crazed hobbyist. It would be tight, but we believed we could squeeze a pared-down interpreter into that 4K, with enough room left over for some small user-written programs.
One large piece of our BASIC was unaccounted for: the floating-point math code that was essential for manipulating large numbers and decimal points in scientific notation.* One night Bill and I were at dinner at the Currier House cafeteria, where advanced math students would chat about hypercubes and five-dimensional geometry. I was worrying aloud that I’d have to write our math routines myself when a curly-haired freshman across from us piped up: “I’ve done those for the PDP-8.” We promptly brought him to Bill’s room to discuss what we needed, and that was how we found Monte Davidoff. (Monte negotiated a flat fee of $400 for his services, and several thousands more for follow-up work in Albuquerque.)
Quandary solved, we moved into Harvard’s Aiken Computation Lab on Oxford Street, a one-story concrete building with an underutilized time-sharing system. The clock was ticking on us from the start. Bill had told Ed Roberts that our BASIC was nearly complete, and Ed said he’d like to see it in a month or so, when in point of fact we didn’t even have an 8080 instruction manual. After we bought one, I set to work. The 8080 had more than twice as many instructions as the 8008, which meant that I’d need to create quite a few more macros. But the two chips shared a basic architecture, and my general approach was the same. Once again, I would be morphing PDP-10 software into an assembler for the microprocessor chip. I finished the macros in a day or two.
My 8080 simulator was larger but conceptually similar to the one for Traf-O-Data, and as before, I tweaked the PDP-10’s debugger to allow us to stop and peer inside our BASIC as it ran. There are times
in a programmer’s career when everything clicks, when your brain is running full out; for me, this was one of them. I got a boost from Aiken’s new video display monitor (or “glass teletype,” in the jargon of the day), the DEC VT05. Access to a high-speed printer helped, as did storage on the PDP-10’s hard disk drive. Within a month, we had development tools for the new chip that likely existed nowhere else. That 8080 package was quick and powerful, done about as well as it could have been. I’m still proud of that code today.
If my tools gave us our first big edge, Bill’s conceptual talent as a programmer kept us quickly moving ahead. By the time I delivered my development suite, he’d already thought through the interpreter’s structure. I can still see him alternately pacing and rocking for long periods before jotting on a yellow legal pad, his fingers stained from a rainbow of felt-tip pens. Once my simulator was in place and he was able to use the PDP-10, Bill moved to a terminal and peered at his legal pad as he rocked. Then he’d type a flurry of code with those strange hand positions of his, and repeat. He could go like that for hours at a stretch.
In building our homegrown BASIC, we borrowed bits and pieces of our design from previous versions, a long-standing software tradition. Languages evolve, ideas blend together; in computer technology, we all stand on others’ shoulders. As the weeks passed, we got immersed in the mission. As far as we knew, we were building the first native high-level programming language for a microprocessor. Occasionally we wondered if some group at MIT or Stanford might beat us, but we’d quickly regain focus. Could we pull it off? Could we finish this thing and close the deal in Albuquerque? Yeah, we could! We had the energy and the skill, and we were hell-bent on seizing the opportunity.
We worked all hours, with double shifts on weekends. Bill basically stopped going to class. Monte overslept his one o’clock French section. I neglected my job at Honeywell, dragging into the office at noon. I’d stay until 5:30, and then it was back to Aiken until three or so in the morning. I’d save my files, crash for five or six hours, and start over. We’d break for dinner at Harvard House of Pizza or get the pupu platter at Aku Aku, a local version of Trader Vic’s. I had a weakness for their egg rolls and butterflied shrimp.
I’d occasionally catch Bill grabbing naps at his terminal during our late-nighters. He’d be in the middle of a line of code when he’d gradually tilt forward until his nose touched the keyboard. After dozing an hour or two, he’d open his eyes, squint at the screen, blink twice, and resume precisely where he’d left off—a prodigious feat of concentration.
Working so closely together, the three of us developed a strong camaraderie. Because our program ran on top of the multiuser TOPS-10 operating system, we could all work simultaneously. We staged nightly competitions to squeeze a subroutine into the fewest instructions, taking notepads to separate corners of the room and scrawling away. Then someone would say, “I can do it in nine.” And someone else would call out, “Well, I can do it in five!” At one point, after Monte laid his floating-point math routine on the floor, Bill sprawled next to the long tail of fan-folded paper to find a few last trims. We knew that each byte saved would leave that much more room for users to add to their applications. (Today we live in a different world, where sixteen gigabytes of memory—four million times our BASIC budget for the Altair—are packed into the base iPhone. Handcrafted code is by and large a lost art. People still try to make programs efficient, but they no longer fight to save that last byte, or even megabyte.)
A few years ago, when I reminisced with Monte about those days, he compared programming to writing a novel—a good analogy, I thought, for our approach to Altair BASIC. At the beginning we outlined our plot, the conceptual phase of the coding. Then we took the big problem and carved it into its component chapters, from the hundreds of subroutines to their related data structures, before putting all the parts back together. If a line didn’t work, we’d re-edit our draft. The heart of the matter was to sustain the big structural picture while hammering out the details of a small subroutine, going back and forth between the two. It was the most demanding and stimulating mental challenge I had ever faced.
As we pushed on, our confidence grew. One day we called MITS to ask about the handshake subroutines on the Teletype for coding the Altair’s input and output. We knew we were on the right track when Bill Yates, Ed Roberts’s partner and lead engineer, told us that no one else had even posed the question. At that point we figured the job was ours to lose.
Returning to Aiken late one night after a fast-food run, we were stopped by the campus police and asked for our IDs. We’d considered our use of the facility harmless, especially since the PDP-10 was underutilized. But we didn’t know that Harvard split the computer’s maintenance costs with the U.S. Defense Department, based on usage. I’d relied on Bill’s password account for my work on the simulator, which ate a lot of processor time. When the January bills came due, Harvard’s share was up conspicuously, with one student the prime culprit: William Henry Gates III. (When he appeared before the university’s administrative board that summer, Bill got off with a slap on the wrist.)
By late February, eight weeks after our first contact with MITS, the interpreter was done. Shoehorned into about 3,200 bytes, roughly two thousand lines of code, it was one tight little BASIC—stripped down, for sure, but robust for its size. No one could have beaten the functionality and speed crammed into that tiny footprint of memory: “The best piece of work we ever did,” as Bill told me recently. And it was a true collaboration. I’d estimate that 45 percent of the code was Bill’s, 30 percent Monte’s, and 25 percent mine, excluding my development tools.*
All things considered, it was quite an achievement for three people our age. If you checked that software today, I believe it would stack up against anything written by our old mentors at C-Cubed. Bill and I had grown into crack programmers.
And we were just getting started.
AS I GOT ready to go to Albuquerque, Bill began to worry. What if I’d screwed up one of the numbers used to represent the 8080 instructions in the macro assembler? Our BASIC had tested out fine on my simulator on the PDP-10, but we had no sure evidence that the simulator itself was flawless. A single character out of place might halt the program cold when it ran on the real chip. The night before my departure, after I knocked off for a few hours of sleep, Bill stayed up with the 8080 manual and triple-checked my macros. He was bleary-eyed the next morning when I stopped by en route to Logan Airport to pick up the fresh paper tape he’d punched out. The byte codes were correct, Bill said. As far as he could tell, my work was error free.
The flight was uneventful up until the plane’s final descent, when it hit me that we’d forgotten something: a bootstrap loader, the small sequence of instructions to tell the Altair how to read the BASIC interpreter and then stick it into memory. A loader was a necessity for microprocessors in the pre-ROM era. Without one, that yellow tape in my briefcase would be worthless. I felt like an idiot for not thinking of it at Aiken, where I could have coded it without rushing and simulated and debugged it on the PDP-10.
Now time was short. Minutes before landing, I grabbed a steno pad and began scribbling the loader code in machine language—no labels, no symbols, just a series of three-digit numbers in octal (base 8), the lingua franca for Intel’s chips. Each number represented one byte, a single instruction for the 8080, and I knew most of them by heart. “Hand assembly” is a famously laborious process, even in small quantities. I finished the program in twenty-one bytes—not my most concise work, but I was too rushed to strive for elegance.
I came out of the terminal sweating and dressed in my professional best, a tan Ultrasuede jacket and tie. Ed Roberts was supposed to pick me up, so I stood there for ten minutes looking for someone in a business suit. Not far down the entryway to the airport, a pickup truck pulled up and a big, burly, jowly guy—six foot four, maybe 280 pounds—climbed out. He had on jeans and a short-sleeve shirt with a string tie, the first one I’d seen outside of
a Western. He came up to me and in a booming Southern accent asked, “Are you Paul Allen?” His wavy black hair was receding at the front.
I said, “Yes, are you Ed?”
He said, “Come on, get in the truck.”
As we bounced over the city’s sun-baked streets, I wondered how all this was going to turn out. I’d expected a high-powered executive from some cutting-edge entrepreneurial firm, like the ones clustered along Route 128, the high-tech beltway around Boston. The reality had a whole different vibe. (On a later trip to Albuquerque, I came down from a plane and got hit in the head by tumbleweed on the tarmac. I wasn’t in Massachusetts anymore.)
Ed said, “Let’s go over to MITS so you can see the Altair.” He drove into a low-rent commercial area by the state fairgrounds and stopped at a one-story strip mall. With its brick facade and big plate-glass windows, the Cal-Linn Building might have looked modern in 1955. A beauty salon occupied one storefront around the corner. I followed Ed through a glass door and into a light industrial space that housed MITS’s engineering and manufacturing departments. As I passed an assembly line of a dozen or so weary-looking workers, stuffing kit boxes with capacitors and Mylar circuit boards, I understood why Ed was so focused on getting a BASIC. He had little interest in software, which he referred to as variable hardware, but he knew that the Altair’s sales wouldn’t keep expanding unless it could do something useful.
When I arrived, there were only two or three assembled computers in the whole plant; everything else had gone out the door. Ed led me to a messy workbench where I found a sky-blue metal box with ALTAIR 8800 stenciled on a charcoal gray front panel. Modeled after a popular minicomputer, with rows of toggle switches for input and flashing red LEDs for output, the Altair looked like a slightly smaller version of our Traf-O-Data machine, about seven inches high by eighteen inches wide. It seemed fantastic that such a small box could contain a general-purpose computer with a legitimate CPU. But I had no doubt that the Altair was the real McCoy. The only mystery was whether it would work with the paper tape stowed in my briefcase.