The software on Apollo missions

The Apollo missions may have heralded one of the first real attempts at creating a large piece of software to control a physical object. In the case of the Apollo missions this meant navigation. Modern software engineers would be dumb-founded by the lack of formal process. But one has to take into account that this was the 1960’s and the field of software engineering had not yet established itself. Indeed many still considered unstructured programming to be the norm. The Apollo XI mission consisted of 145,000 lines of code written for the Apollo Guidance Computer (AGC). It was written by MIT’s Instrumentation Laboratory. The programs were written in a language called MAC (MIT Algebraic Compiler), then translated by hand into assembler, typed onto punch cards.

The most interesting thing? The only type of reliable memory was rope-memory – constructed by looping wires through a core and around a core to represent the 1’s and 0’s of programs. Each program had to be hand-woven, and took several months to create. The entire memory capacity? about 64Kb – that’s kilobytes. The computer itself ran at 0.043 MHz.

Agc_rope

Core rope memory (Courtesy of NASA)

The code was likely not the most efficient in the world, but took flight on the Apollo 8 mission in 1968. It successfully helped navigate the spacecraft around the dark side of the moon (where it couldn’t be controlled by radio waves). Its main aim though was the lunar landing of Apollo XI. In fact the piece of code that performed the landing? It was never tested in space, and it was one of the most complex pieces of software written for the Apollo missions.

Want to look at the code? It’s all here, and is actually very readable (more so if you know assembler of course!) Read more about the software here.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s