We just needed roughly 2 MB of code to travel to the moon.
Former NASA intern Chris Garry has posted the whole source code for the Apollo 11 mission computer to GitHub. On this famous site, programmers exchange code and insights, and it’s proved to be a delicious slice of nostalgia in more ways than one.
MIT created the software for NASA’s Apollo Guidance Computer (AGC), which was deployed on Apollo command modules and lunar modules in the 1960s. Nothing for what NASA was attempting to achieve existed at the time, so the MIT team had to code the entire thing from scratch. To do this, they developed their own version of Assembly language and a mechanism for storing computer programs known as “core rope memory,” which offered more storage capacity.
What was the total amount of code? As seen by this photograph supplied by MIT of Margaret Hamilton, it was as tall as an adult lady, director of Apollo Flight Computer Programming at MIT’s Draper Laboratory.
MIT scanned and made accessible the actual pages of the AGC code in 2003. However, Gary Neff, a Colorado airline pilot, observed how unreadable some of the pages were and recreated the code himself. It appeared in a few other places, such as a Google blog from 2009. Still, Neff’s work remained mainly unknown until Garry discovered it and uploaded it to GitHub, where it has found fresh life among programmers looking over the code and offering ways to enhance and alter it.
Looking at the code and seeing how, honestly, confusing it is may bring back memories for some while making others grateful to their higher power of choice that we live in the Python era.
And it appears that the original programmers felt the same way about their work. Users who have gone through the source code have discovered jokes, asides, and even connections to famous music, Shakespeare, and cultural events of the period.
Take a look at this line of code from the ignition program (aptly titled BURN BABY BURN) that explains how the Watts Riots inspired the program’s name in Los Angeles in 1965:
Another file, PINBALL GAME BUTTONS AND LIGHTS, which appears to be for the system’s keyboard display, has a passage from Shakespeare’s Henry VI, which appears to be intended to mock the display system, which employed numeric codes to represent noun and verb instructions.
The complete AGC source code is available on GitHub.