Apollo Guidance Computer Activities

AGC Conference 3 - Hugh Blair-Smith's Introduction

Apollo Guidance Computer History Project

Third conference

November 30, 2001

Hugh Blair-Smith

Hugh Blair-Smith's Introduction

HUGH BLAIR-SMITH: My name is Hugh Blair-Smith. I am the most software flavored person here, I believe, so my path to Apollo begins at Harvard where in my senior year suddenly there was a computer course available to undergraduates and that was because the Univac 1 had become just obsolete enough that Univac was happy to give one to Harvard. So suddenly undergraduates could have programming courses. I fell under the influence of Al Hopkins and Ray Alonso and Jim Lincoln and Scotty and a whole lot of other people, but just to pick all the migrants we had.

ELDON HALL: I don't remember all of them, but you've mentioned all the important ones, I'll say. You were in that group.

HUGH BLAIR-SMITH: Only I didn't come with the group, nor did they recruit me. My path to MIT was that, as I was doing one full-time software job at Harvard, after graduation, I got involved moonlighting and the fellow I was moonlighting with was named Dan Goldenberg and he ran the computing group at the Instrumentation Lab. So he recruited me because he needed somebody who would be able to do an assembler program or what we now call a cross-assembler program, for an unknown number of machines with unknown characteristics. Sounds simple enough, so why not?

But I, without realizing it, was prepared quite well for that because of what I did in my spare time when I was at college. In my post-graduate year, I went around to all the showrooms that the various computer companies had and begged programming manuals, and they'd all give me one. So I believed at one time, back, maybe up to 1958 some time, that I had some knowledge of how to program every computer that was abroad in the world.

DAVID MINDELL: The last year that was possible, probably.

HUGH BLAIR-SMITH: Probably yes. So I came into the computing group and I was told when I arrived in September that it was necessary for this cross-assembler to be ready by Christmas because the Christmas computer would be all ready, up and running at that time. So I said, Well, all right, if it's a Christmas computer, we need a short, snappy name for the system, I'll call it the Yul system.  Nothing to do with the Montreal airport code, it was the assembler for the Christmas computer.

Well, needless to say, Christmas was about three months late, as I recall. We actually got all this stuff going in March, but by that time the Yul system, running on the 650, cranking out cards, was indeed able to assemble programs for what was not yet an Apollo machine--this was still 1960--this was what we called the Mod 1. The Mod 1 had a two-bit op-code field, which meant it had, first, three, and then later four, instructions. So I got involved, among other things, with writing software for that, but I remember a very happy afternoon writing a sub-routine with a great loop in it to perform addition. You didn't just write down an ADD instruction on that machine. So that was good fun.

But anyhow, I got involved in the instruction set design, once I saw the way the instructions were mechanized, which of course were very reminiscent of the Harvard Mark 4, because of the people who were mechanizing them. There was going to be a machine called Mod 2, but it kind of collapsed along the way, so there was going to be a machine called Mod 3, and it had three bits in the instruction code field--all of eight instructions. What a great field to work in.

So I got involved with Al Hopkins and Ray Alonso in designing the instruction set for that, and we actually published that first in IEEE and then in Gordon Bell's book on computer structures. We put in there a case study of how to design an instruction set under these very tight constraints.

Al Hopkins looked at that and said, "Boy, that's complicated, it's got MULTIPLY instructions and all that stuff, we'll call that Mod 3C, for complex," and he had a rival design called Mod 3S, for simple. Anyhow, a lot of those were just pilot models, of one sort or another. But the Mod 3C was in fact chosen as the original Apollo Guidance computer, all 4,096 words of it, each word 15 bits, plus parity.

ELDON HALL: Wasn't that called Mod 1B?

HUGH BLAIR-SMITH: There was a 1B, but that was the 2-bit op-code. There was Mod 1A and Mod 1B.

ELDON HALL: Well, there's a report that's about Mod-1B and that sounds like what you're describing as Mod 3.

HUGH BLAIR-SMITH: Well, there may have been a publication of 1B that I don't remember, but the one I have the author credit for was about 3C. Anyway, the closest I got to hardware is that I was encouraged, in order to keep the logic simple, to learn how to draw three input NOR gate diagrams. So I drew the diagrams. Whether anything good ever came of that I'm not at all certain, but it was fun. So I got a feel for the way these things were put together.

Anyway, so, of course, the Yul system had to, as it was originally designed to do, flex so as to accommodate somewhat different designs of machines, and it did that all right. And at some level, I think it wasn't until we got into what was originally called AGC-4, that is, as if it was Mod 4, that we began to talk about an interpretative language. So the assembler had to handle both the interpretive code and the regular code and make sure there weren't any improper transitions between one and the other.

But anyhow, the AGC-4 had 11 instructions in its three-bit instruction code, and that's because I lifted a great stunt from the Bendix G-20, I believe it was called, and anybody who can remember Bendix even as a company, never mind a computer maker, is doing well.

But the key instruction, there, that made a lot of additional instructions possible was called INDEX, which would pick up a full-sized data word, add it to the next instruction line and simply execute the result as an instruction. Because it was possible for this addition to overflow, we got more op-codes, so that's how we kind of cheated, on that. But ultimately the instruction sets of these machines were basically decided around a table of four of us, Al Hopkins being the system man, Ray Alonso being, as I recall, input-output specialist, Herb Thaler, from Raytheon, basically for circuitry, and I was there representing software. So, the outlines and to some extent the details of the instruction sets got decided in that way. And I do remember in AGC-4 just barely managing to sneak in a divide instruction. Everybody said, "Oh no, that's too hard, how can you do that?" And I said, "Well, here's how." So we snuck it in there. Of course, later on, with Block 2, we had to go through a lot more instructions, so we managed to, by a number of stunts that maybe I don't have time to go into here, to make the total number 34, plus about 100 or so op-codes in the interpretive set, which was a curious Polish prefix notation. We owed a lot to Lukasiewicz for that.

So that was most of the developmental things that I got involved in. I did get into a little bit of flight programming. I wrote something called routine 29, which was supposed to wave the rendezvous radar dish around so that it could find the command module--that is, it drove the dish on the LEM. And I got it so it worked fast enough although with only perhaps 99% reliability, and I have a feeling somebody trashed it as being a little weird. But in the time budget allotted this thing there was no way to do any more than that.

So finally, in the Apollo 13 business, I was among those who "valiantly" tried to come up with software fixes. My particular problem was that the mated spacecraft are approaching the Earth, and they've got to be separated. Can we throw a little program up into the erasable memory to fire the maneuvering jets, the RCS jets of the LEM, to make it blast away? And so I hastily threw something together. But then it occurred to somebody that we've got air pressure in the tunnel between the two spacecraft and that will do very nicely to blast them apart, and that's the way it was done. So that didn't come to anything.

After that, I worked on various other projects. There was a machine we called the cubic inch computer, which of course was really an imperial inch, I believe it was an inch and a quarter on each side by the time it was done. But that was fun. It had a square root instruction as well as the divide instruction, among other virtues. But it came to nothing in the end.

Then I got involved in the space shuttle business and then just a little bit of the control system mathematics for the space station, which, considering how many years that was before there was a space station, was kind of curious to remember. And then, at the end of 1981, I decided that the government in general and NASA in particular had lost their interest in advancing the art of computing, so I bugged out and I got involved in some crazy start-ups in the PC field, and have been involved in that ever since. Although I'm now in a good company, rather than a start-up.

ELDON HALL: I think, going back to your Mod 3, in my terminology that's AGC-3, I think.

HUGH BLAIR-SMITH: Yes, we did call it that, right. As soon as it became an AGC we changed its name.

ELDON HALL: That 1B was a very early version of that.

HUGH BLAIR-SMITH: Yeah.

ELDON HALL: So that was my misunderstanding.

HUGH BLAIR-SMITH: 1B, as I recall, controlled a little stepper motor, to make a little wheel adopt various angular states.

Next: Herb Briss' Introduction

Home: Conference 3