When programmers at the MIT Instrumentation Laboratory set out to develop the flight software for the Apollo 11 space program in the mid-1960s, the necessary technology did not exist. They had to invent it.
They came up with a new way to store computer programs, called “rope memory,” and created a special version of the assembly programming language. Assembly itself is obscure to many of today’s programmers—it’s very difficult to read, intended to be easily understood by computers, not humans. For the Apollo Guidance Computer (AGC), MIT programmers wrote thousands of lines of that esoteric code.
Here’s a very 1960s data visualization of just how much code they wrote—this is Margaret Hamilton, director of software engineering for the project, standing next to a stack of paper containing the software:
The AGC code has been available to the public for quite a while–it was first uploaded by tech researcher Ron Burkey in 2003, after he’d transcribed it from scanned images of the original hardcopies MIT had put online. That is, he manually typed out each line, one by one.
“It was scanned by a airplane pilot named Gary Neff in Colorado,” Burkey said in an email. “MIT got hold of the scans and put them online in the form of page images, which unfortunately had been mutilated in the process to the point of being unreadable in places.” Burkey reconstructed the unreadable parts, he said, using his engineering skills to fill in the blanks.
“Quite a bit later, I managed to get some replacement scans from Gary Neff for the unreadable parts and fortunately found out that the parts I filled in were 100% correct!” he said.
The effort made the code available to any researcher or hobbyist who wanted to explore it. Burkey himself even used the software to create a simulation of the AGC:
As enormous and successful as Burkey’s project has been, however, the code itself remained somewhat obscure to many of today’s software developers. That was until last Thursday (July 7), when former NASA intern Chris Garry uploaded the software in its entirety to GitHub, the code-sharing site where millions of programmers hang out these days.
And in the
PINBALL_GAME_BUTTONS_AND_LIGHTS.s file, which is described as “the keyboard and display system program … exchanged between the AGC and the computer operator,” there’s a peculiar Shakespeare quote:
This is likely a reference to the AGC programming language itself, as one Reddit user pointed out. The language used predetermined “nouns” and “verbs” to execute operations. The verb
37, for example, means“Run program,” while the noun
33 means “Time to ignition.”
Now that the code is on GitHub, programmers can actually suggest changes and file issues. And, of course, they have. One developer submitted an issue saying, “A customer has had a fairly serious problem with stirring the cryogenic tanks with a circuit fault present,” and listed steps to reproduce the problem. “Be aware that this may be hazardous to the tester attempting it,” he added. The responses flooded in.
One user suggested maybe the issue was not with the code, but something else: