In theory, a computer can mimic the behavior of anything. It can do so accurately only if the thing being imitated is thoroughly defined. So computers achieve only partial success, at best, when instructed to simulate the behavior of a city or to foresee the future of a national economy. Computers do well, however, when imitating other machines, including other computers — unbuilt ones that exist only on the paper of an architectural specification. You make the old computer imitate the new by writing a program. This program — the simulator — makes the existing computer respond to instructions just as the contemplated, unbuilt computer should. Essentially, your program translates instructions designed for the unbuilt computer into instructions that the existing one obeys. You can create a simulator that will make an old computer ape the behavior of the fanciest new computer you can imagine. People build new computers in hardware and not in such a program because simulators are slow — the Microteam's for instance, ran more slowly than Eagle was supposed to run by a factor of about 100,000. A simulator makes a slow computer but a fast tool.
Alsing wanted one. He had often wished he had a simulator, for testing and correcting microcode. On every other project, he had been forced to debug the microcode by running it on the prototype hardware of the new machine. But the hardware of the new machine was itself being debugged and indeed could not be fully debugged without the microcode. This made for awkward situations and mysteries in the lab. If the machine failed, it was hard to know what to blame first — the hardware, the microcode or the diagnostic program. For several years now, before every project, Alsing had held essentially the same conversation with West.
"I want to build a simulator, Tom."
"It'll take too long, Alsing. The machine'll be debugged before you get your simulator debugged."
This time, Alsing insisted. They could not build Eagle in anything like a year if they had to debug all the microcode on prototypes. If they went that way, moreover, they'd need to have at least one and probably two extra prototypes right from the start, and that would mean a doubling of the boring, grueling work of updating boards. Alsing wanted a program that would behave like a perfected Eagle, so that they could debug their microcode separately from the hardware.
West said: "Go ahead. But I betchya it'll all be over by the time you get it done."
Simulators were at least ten years old. No great mysteries surrounded them. After some calculation, however, Alsing realized that a program to simulate Eagle would be huge. It might take a seasoned programmer a year and a half to write such a thing, he figured. But Alsing kept these calculations to himself.
Although his intentions were in the main unquestionably gentle, Alsing seemed to have a constitutional aversion to the direct approach. I was visiting him one evening that spring. We were sitting in his living room, when the oldest of his three sons, a handsome, soft-spoken and polite teenager, came to him complaining that all of the TV sets were broken again.
"What did you want to watch?" Alsing asked him.
" 'Charlie's Angels,' Dad."
"Gee, that's too bad about the TVs," said Alsing.
When his son had left the room, Alsing grimaced. "I'm terrible," he said.
He had grown worried that his boys were watching too much of the wrong sort of television — "evening violence and Saturday- morning cartoons," he said. So one night he had gone around the house and had disabled all of the sets. On the theory that his sons would learn more from trying to repair a TV than from watching one, Alsing encouraged them to try to fix the things. He spent many pleasant Sunday mornings working on the sabotaged sets with his sons. His boys were learning more and more about TVs, but they hadn't yet gotten any of them to work. On occasion, however, when Alsing approved of a show that they wanted to watch, at least one set would, as if by magic, suddenly start working.
Who would Alsing get to write the simulator? Who could do it quickly enough for the thing to be useful? On the Microteam there was a veteran programmer, a jovial fellow named Dave Peck. Peck had a raucous laugh; it was his laugh preeminently that drove West to distraction. Data General employee number 257, Peck had performed his full share of round-the-clock programming. He had come over from Software to the Eclipse Group, because Alsing had promised him the chance to manage others for a change. Peck was a fast programmer. 'The fastest I ever saw, the fastest in the East," said Ken Holberger.
Peck said he'd been told he was fast so often that he guessed he must be. "But programming's just obvious to me." The problem was that these days, it took him a long time to talk himself into writing a big program — longer, as a rule, than it took him to write the program. Peck could turn out a simulator quickly, if anybody could. (He would ultimately perform some crucial smaller programming projects for the group, about thirty-four in all.) Like Alsing, he had been thinking on his own about a simulator for debugging microcode—just figuring out how he'd go about writing a simulator, in case he should get up the desire to do it. So far, however, the desire had not come.
The group also had another programmer. Among the first of the Microkids to arrive at Westborough was a twenty-two-year-old phenomenon, a fellow with degrees in computer science and electrical engineering and a nearly perfect academic record in those areas. His name was Neal Firth. He liked to program computers. He said: "I may be a little vain. I took a course in college in ma chine code. It was supposed to be a flunk-out course. To me, it was extremely simple. It's always just seemed extremely logical to me, programming."
Alsing considered the situation. He had two confident programmers— one relatively inexperienced, the other reluctant. Somehow, out of the two of them, he should be able to get a simulator. He put Peck in charge of the effort, but only nominally.
Shortly after Firth arrived, Alsing sat down with him and discussed ideas for a simulator. "There are a number of things you have to do to write one," said Alsing, drawing a grossly oversimplified picture of the task.
"Yeah, I could do that," Firth replied.
They talked about simulators with growing enthusiasm, until Alsing felt they had "a nice little fire going." Then casually, Alsing popped the question: "How long do you think it would take to write this simulator?"
"Six weeks or two months?" said Firth.
"Oh, good," said Alsing.
When he was ten years old, Alsing remembered, he was given a book called All You Need to Know about Radio and TV. When he had read it from cover to cover, he really believed that he did know everything about radios and TVs. He didn't, of course, but thinking that he did had given him the confidence to take apart radios and TVs and in the process to learn what made them work. He had that experience in mind when he talked to Firth. "When Neal said he could do it in a couple of months, he was probably thinking back to how long term-projects in college took." Firth, Alsing reasoned, had not been performing make-work projects as many neophyte engineers do their first years out of school. He didn't know what he could not do. "I think that after our little talk, Neal had a picture in his mind that he knew all about simulators now. It was no problem. He could do it over the weekend."
Around this time, Alsing also sat down with Peck. Firth was Peck's responsibility, Alsing said. Peck should somehow lead Firth to complete a simulator in just a few months. So Peck explained to Firth his own ideas about simulators. He laid out the basic scheme for Firth, in greater detail than Alsing had.
Observing the two from a little distance, Alsing got the strong impression that while Peck and Firth liked each other, neither was about to concede that the other was a better, faster programmer. A little friendly competition might work nicely here. Alsing went to Peck and said: "We really need some sort of simulator in six weeks. So, Dave, why don't you do a quick-and-dirty one, while Neal works on his bigger one?" Peck agreed. The contest began.
Every so often over the next month or so, Firth would visit Alsing and tell him that his simulator was coming right along and was going to do many things that Peck's quick-and-dirty one would not.
"Oh, good," said Alsing.
Peck got his simulator written and running in about six weeks, right on time. One member of the Microteam used it, but only for a while. Two and a half months after Peck finished, Firth's simulator became functional. Two months after that, Firth had refined it. He gave the Microteam a full-blown version of Eagle in a program — a wonderful machine, of paper, as it were.
If Firth had not built his paper Eagle, the lab might have looked like a crowded car on a commuter train: Hardy Boys and Microkids bumping into each other, all tempers on edge. Everyone arguing about whose turn it is to update boards. West threatening to throw them all out of the lab and do it himself. The debugging proceeding ever so slowly. Microkids writing up sections of code, then waiting in line for a chance to test them on a prototype, and after getting a crack at the prototype and finding their code doesn't work, having to set up trace after trace with logic analyzers, trying to see what's going wrong. They will be lucky if they finish this computer in three years.
As it was in fact, the Microteam could test their code right at their desks, via their own terminals. Firth's simulator was a program stored inside their computer, the Eclipse M/600 — Trixie. They merely had to feed into Trixie the microcode they wanted to test, order up the simulator, and command it to run their code. They could order the simulator to stop working at any point in a microprogram. The simulator could not tell the microcoders all by itself what was wrong with their code, but it arranged for the storage of all the necessary information about what had taken place while the code was running, and would play all of it back upon demand. Thus, without having to invent ingenious approaches with logic analyzers, the team could examine each little step in their microprograms. They could find out what was going wrong in an instant, in many cases. In the Microteam's small corner of the world, Firth's was an heroic act.
When they first moved to Westborough, in the summer of 1978, Firth and his wife, Lynn, lived in an apartment not far from Building 14A/B. His working day began in the shower, and would continue as he walked to Westborough on those summer mornings. A lone figure walking along the side of the access road — a young man, stocky and graceful, with long black hair cut straight as a hedgerow in a line just above the shoulders, wearing glasses with large black frames and often a blue Windbreaker, and black shoes. At that hour, there would be a torrent of cars — grim faces behind the windshields — hurrying toward the plant. But Firth hardly noticed the traffic. He was building his simulator. It was not a trivial task.
Firth had to write a program for every microverb. Then he had to shuffle and reshuffle these programs. In the material Eagle, all the microverbs in a single microinstruction would be executed in parallel, at more or less the same time, between two ticks of the computer's clock. But the simulator was a program, in which events occur one step at a time; it could execute the various microverbs of a given microinstruction only serially, one after the other. And the order in which the microverbs of a given microinstruction were executed was often crucial; one verb could in effect cancel another.
UINST also defined cases in which one microverb would alter the meaning of another one and cases in which one microverb would tweak two different pieces of hardware and mean two different things to each of them. From time to time, while he was building the simulator, features of the microcode and hardware of the material Eagle would be altered; Firth had to change his simulator accordingly. Moreover, he had to make his abstract machine useful to the Microkids. How would the people who were going to use the simulator extract information and give instructions? This is one of the most important and most often neglected issues that faces any programmer. Firth began his work pondering the question, and it showed. He made his paper machine completely "interactive."
"I guess nobody considered it a possible project in the time frame," Firth said, "but I didn't know that. To me, it seemed, well, challenging. It could be done. I was able to do it because I had no idea of what was going on. Usually it was: 'We gotta have this feature in the simulator by tomorrow or poor old Jon Blau won't be able to do a thing.' That's usually how it was."
For two summers during college, Firth had worked as a manual laborer for a company that produced computerized junk mail. He'd often found himself in the back room with nothing to do, and he would scout around for software documents that had been written for the company's computers. One day he found a stack of programs that a company engineer had created. Leafing through them, he found a glaring error, one that would make it impossible for the computers to address properly junk mail bound for California. Firth had just begun to study programming, but the error was "just obvious" to him. Remembering this incident years later, Firth said that the engineer had probably been "programming by rote. He wanted to make his program look like programs he'd seen before, and that clearly wasn't gonna work." Firth always tried to avoid such an approach. "I like to work around Why,'" he told me. "I prefer not to know the established limits and what other people think, when I start a project"
Firth said he thought his interest in electronics began when he was five years old. He was at a neighbor's house, playing with an electrical "toy. The neighbor's son, somewhat older than he was, came in and warned him that he would get electrocuted if he did certain things with that toy. But Firth had already done all those things.
"I find myself very much of a loner," he said. "When I was younger, I would sit and make model boats and planes endlessly." I saw him at one of the team's parties, and he was very jolly, talking fast. He often ate lunch with some of the other new recruits in the basement and had, he felt, some fine conversations with them. He said he liked technical discussions, but he also liked to talk about other matters. "Like the ultimate meaning of life," he said, with a grin. "I like to do strange things, go off and watch a tree for an hour. I can do that. I've always found that I'm a little off the beaten track. It doesn't bother me too much. I had a big interest in abstract music in high school and no one else liked it. Maybe I'm right, maybe they are, but as far as I'm concerned they're entitled to their incorrect opinions."
Firth didn't often mingle with the rest of the group, after work. He said that was because he was married and because he had moved some distance away from Westborough. I asked him, "Do you miss the society a bit?"
"I think I've always missed it, personally," he said.
Firth, who was born in Canada, went to high school in a suburb of Chicago, "a neighborhood in which everyone was moving somewhere upward." His father was a regional sales manager for a company in the area. Firth excelled in high school, was placed in all accelerated courses, and had no trouble with any of them — and "no challenge," except the ones he found for himself in music and computers. He, too, met the machines in the form of "an ancient IBM." The high school kept its machine in a little room, which was left open for him during the summers. He would go in and program the computer all morning, and in the afternoons he'd practice with the band. It was one of those first-class mid western high-school marching bands. Firth, in a big drum-major's hat, once led the band through a performance at Soldier Field in Chicago. He also played the contrabass clarinet, and twice performed with his high-school band under the directorship of Arthur Fiedler. He earned his spending money playing the electric bass at dances.
When Firth got to college, he felt he had to choose between music and computers. He had a flaw as a musician, he decided: he would always make a mistake. And he felt he would never be quite as good at music as he'd want to be. Programming came easily to him, although he found that he had to work extremely hard to do it very well. "I hate to say it, but in a way I feel that I can perfect it."
He was getting accolades now for his simulator. The team would be nowhere without it; everyone said so. Firth said: "I can't say that in all cases I'm extremely pleased with it. I guess, finally, it is a pretty crafty little thing, but there's some real crud at the foundation."
We were sitting at a bar, one long quiet afternoon. I asked Firth to
explain his abstract machine to me. He tried. "Okay," he said, "I come to the simulator with the machine instructions to add two numbers. I also give you the microcode that tells the computer how to do the ADD. Okay. I say, 'Simulator, execute the macroinstruction, ADD, at location so-and-so in simulated memory.' So I also had to simulate memory. But I also forgot to mention that when you wrote your microcode you also coded some decode information, which is information that the IP simulator will use." He said all this and more at such a clip, one digression leading to another, that I had to laugh. He laughed, too. He agreed he was a sucker for a digression.
"You kept it all in your head?" I asked.
"It was just obvious to me," he replied.
Firth had spent about three months getting all the concepts behind his simulator straight, and he actually wrote the program in about a month. The rest of the time he spent on refinements. He could write two hundred to three hundred lines of code in his mind, but he had a hard time remembering his own phone number.
Luckily for him, somewhere in the bowels of Westborough existed a computer, connected to the building's phone system. Through it you could program into your own office phone the numbers you called most often. Forever afterward, you could dial those numbers by punching out a three-digit code. Firth could remember the three-digit codes. He had completely forgotten his own phone number. It was a great relief to be able to do so. He did keep his number on a slip of paper in his desk drawer, though — just in case he should ever need to know it.
A WORKSHOP
West usually left for work a little after seven in the morning and set out for home a little less than twelve hours later. The drive took only about twenty minutes, but the distance he traveled couldn't be measured that way. "Probably somewhere on 495 it all changes," he said, and it did seem, on at least several mornings, that somewhere en route toward Building 14A/B he would grow quiet and a stiffness would gather around his jaw and in his shoulders, as if he were preparing to lift something. He talked facts when he got near, if he talked at all. By the time he drove into the parking lot, he had both hands on the steering wheel. In the evening, he would go out wearing the same demeanor, but by the time he had turned onto 495 and had been cruising down the highway awhile, he might take a hand off the wheel and he could become almost loquacious. One evening, for instance, he said suddenly, while driving along, that he wished he could bring his guitar to work and play with some of the youngsters in the group who were musicians. This seemed to signify that he had crossed the frontier from the land of Data General to his other domain. West didn't smoke cigarettes while he was at work. Away from Westborough, between sunset and bed, he might smoke a pack or more. Once he muttered that smoking wasn't harmful if you didn't do it at work. Had Cotton Mather returned as a spokesman for the tobacco industry, he might have advanced such a theory. Of course, West knew it was silly in any literal sense, and he uttered it barely loud enough to be heard. Some nights he would go away from Eagle and play music with friends and acquaintances, sometimes all night long, and then, fingers raw from his guitar strings, he would drive right in to work and become once again the tough, grim-looking manager. One evening that winter I said to him that I didn't think it was really possible to be a businessman and a dropout all at once. West said, "But I do it."