Linux.com

Home News Software Developer How They Built it: The Software of Apollo 11

How They Built it: The Software of Apollo 11


When Apollo 11’s Lunar Module landed on the Moon 40 years ago today, the software that helped take humans to another celestial body was essentially built using paper-tape rolls and thick cardstock that was punched with special holes.

It wasn’t open source in the sense we know today, but it was built for NASA under contract, then was tested, modified and fine-tuned by NASA engineers in ways that are similar to open source projects nowadays.

“Well, in today's definition it was open source--the source code was publicly available” to mission engineers, said John “Jack” Garman, who was a 24-year-old NASA computer engineer when Apollo 11 lifted off July 16, 1969, on its way to the Moon. “But ‘open source’ in the Linux sense generally means that anyone can contribute additions and improvements, and of course that wasn't the case for the Apollo software.”

Garman helped test and re-write the software before Apollo 11 ever left the ground, then continued to monitor it while it was used in the onboard computers. “The software was programmed on IBM punch cards. They had 80-columns and were ‘assembled’ to instruction binary on mainframes… and it took hours.”

During the mission, most of the software code couldn’t be changed because it was hard- coded into the hardware, like ROM today, he said. But during pre-launch design simulations, problems that came up in the code could sometimes be finessed by Garman and the other computer engineers using a small amount of erasable memory that was available for the programs.

“Some of us NASA engineers who also worked in Mission Control would [literally guess and] ‘make up’ minor changes to the software to work around [hypothetical] ‘failures’ that were thrown at the flight control team during simulations,” Garman said. “In a sense, that fits the ‘open source’ model, but only within the NASA and NASA Contractor domain.” NASA staff members had full access to the program code through their contracts with the Apollo hardware vendors, so they were able to change the code to make the program behave differently as needed.

The software used a low-level assembly language and was controlled using pairs or segments of numbers entered into a square-shaped, numeric-only keyboard called a Display and Keyboard Unit, or DSKY, inside each the Apollo capsule and the Lunar Module. The two-digit codes stood for “nouns” or “verbs,” and were used to enter commands (verbs) or data (nouns), such as spacecraft docking angles or time spans for operations.

The Apollo Guidance Computer (AGC) systems on each craft were designed and built by teams of researchers and students at the Massachusetts Institute of Technology (MIT), led by the late Dr. Charles Stark Draper, under contract with NASA. Garman was one of the many NASA workers who helped run, test and debug the fledgling MIT code that would run the Moon mission from launch to splashdown. Some dedicated hobbyists have even designed and built their own computers to replicate the original Apollo devices.

“The AGC was very slow, but very reliable and very small for that time in the history of digital computers,” Garman said. “It was the earliest to use integrated circuits.”

The software as it was designed was built basically from scratch by MIT, he said. How did they know what to start with? “MIT didn't really--they sort of made it up as they went along. Neither NASA nor MIT had built software for digital flight control and guidance systems in the past--no one had near this magnitude. So it took some soul-searching on both NASA and MIT's sides to write down requirements and create hard schedules and test plans.”

A wide range of different modules were needed for different phases of the Moon mission, from the operating system to the user interface and the programs for each phase of the flight in both the command module computer and the lunar module computer. That meant applications for ascent, orbit, the trans-lunar injection on the way to the Moon, coasting, lunar orbit, trans-Earth injection on the return to Earth and re-entry. The same sorts of applications were needed for the Lunar Module, including descent, surface operations, ascent, rendezvous and descent abort, if it would be needed.

But while most of the software programs couldn’t be rewritten during a mission since they were largely held in ROM and couldn’t be changed in flight, the order in which the programs ran could be rearranged during the mission, if needed. That allowed flight controllers to change when and how programs ran to give different results during the flight. It’s not like today’s manned Space Shuttle missions, but it worked.

During the Apollo 11 Lunar Module’s descent to the Moon 40 years ago today, Garman played a direct role in preventing a mission abort. Several warning lights and computer overload alarms came on as the craft descended just above the Moon’s surface, causing worry in Mission Control, but all of Garman’s pre-flight simulation experiences told him that the alarms were not critical and the landing could continue. Without hesitating, and without panicking, the 24-year-old NASA computer engineer confidently gave the “go” to continue the mission.

Granville Paules, was a 32-year-old guidance officer for one of the Apollo 11 mission teams and remembers that moment well.

“The alarms went off on during descent,” Paules said. “It was a conflict between the on-board systems and the computer was starting to get overloaded. Garman had a simulation where a similar thing had occurred about three weeks before that, so he knew what to do. It probably would have been a lot scarier, possibly even an abort for the landing, if we had not had that simulation. I can say that the odds of aborting that lunar landing were a lot higher than people want to believe. That simulation gave everybody the confidence to turn off the alarm and ignore it.”

While this was all going on, “the entire Mission Control Center was like the inside of a mausoleum,” he said. “You couldn’t hear a sound until he landed and then everybody exhaled at once. It was palpable.”

It was truly an amazing milestone, said Gene Kranz, one of several flight directors for Apollo 11.

“We landed on the Moon with less than 17 seconds of fuel remaining,” Kranz recalled. “When we shut that engine down we had fulfilled the pledge we had made to President (John F.) Kennedy and to the crew of Apollo 1.” [Kennedy launched the U.S. goal to land a man on the Moon in a May 1961 speech but was assassinated two years later and never saw his dream fulfilled, while the three-man crew of Apollo 1 died in a flash fire on the launch pad in January 1967 while training for what was to be the first Apollo flight into Earth orbit.]

Seven months after the Apollo 11 mission, Kranz would play another huge role in NASA’s Apollo program. He was one of the key heroes who helped bring the three-man Apollo 13 crew home to Earth in April, 1970, after an oxygen tank exploded as the craft made its way toward to Moon.

“The real key [to the success of Apollo 11’s first moon landing] was the absolutely spectacular training we had, the teams we had and the trusting leadership we had,” Kranz said. “I still marvel about the trust I had that day and that I engendered with my team.”

Jerry Bostick was 30 years old and was a member of Kranz’s White Team for Apollo 11.

“I started out in the mission planning division, designing missions,” he said. “We would write the requirements for all of the software in both the ground-based and the onboard computers, working primarily with MIT and IBM.”

“We would give instructions to the programs by punching cards,” Bostick said. “You had to wait at least 12 hours to see if it would work right.” The early programming was done in the real-time computing complex in Houston using IBM 7094 computers with 64K of memory. There were no hard disks. All the data was stored on magnetic tape, with each computer having about eight tape drives. Most programs used for the mission were written in Fortran, Bostick said. “After Apollo 1, we upgraded to the biggest and the best equipment that government money could buy, the IBM 360 with an unheard of 1MB of memory. We went all the way from 64K to 1MB.”

Today, Bostick says he is still amazed. “I have to admit, I sometimes wonder, oh man did we really do that?” he said. “I recognize that I was involved in one of the greatest accomplishments of mankind at the time, but none of us dwelled on that then. It was just a job we had to do that the President had laid out and told us to go out and figure out how to do it.”

Jay H. Greene was a 27-year-old flight dynamics officer for Apollo 11 for the Lunar Module’s descent to the moon. “We never thought about what we couldn’t do,” Greene said. “We were so involved in getting the job done that we had no doubts that it was possible.”

“It was pretty primitive stuff,” Greene said of the computers and programs that took Americans to the moon for Apollo 11. “I wouldn’t say crude. I would say elegant. Yes, Apollo 11 was neat. I consider myself very fortunate to have been involved in it.”

Comments (6)Add Comment
Jeff Osier-Mixon
Awesome
written by Jeff Osier-Mixon, July 20, 2009
Great writeup, thanks!
Andrea Benini
Best Post of the day ! Absolutely ! We want to vote for this !
written by Andrea Benini, July 21, 2009
this Day it ain't over till it's over but I must vote for this post as the best post of the day, even the best post of the week. You're bookmarked now, very nice post, full of useful information and links. I'm just downloading ROM and simulators from the link you've provided right now.
I've even signed this link for other retrocomputing maniacs, awesome !

You and John Pultorak are now my heroes

sincerely yours
Ben
Ron Burkey
You missed one
written by Ron Burkey, July 21, 2009
Todd, some people might also be interested in running a software simulation of the AGC and DSKY(http://www.ibiblio.org/apollo), using real Apollo source code. There's also a lot of AGC info at the linked Virtual AGC site (including some of John Pultorak's info) that isn't really available anywhere else. (Disclaimer: It's my project, so I may be biased.)

Actually, the info and simulation software at the Virtual AGC site includes the Abort Guidance System (AGS) as well, which was an entirely separate and only slightly less noteworthy computerized system used in the Lunar Module. Or more accurately, it was present but not used, which is a good thing.

smilies/smiley.gif
kryptikos
Apollo 11 and Linux...can do attitude...
written by kryptikos, July 21, 2009
I have a strong love and interest in aviation. I finally was able to read this article last night and thoroughly enjoyed it. Interesting how they did all this on 64k…and were all excited when they bumped up to the largest IBM computer of the times with 1 MB of RAM! These guys went to the moon on this stuff and we complain when we don’t have 1 GB. Ha! I think back on those guys and how they engineered with a can do attitude and created things from scratch. I think that’s what I love most about Linux. It allows you to create from scratch anything you can dream up. Although I will admit I’m glad we don’t have 8 tape drives for the OS.
Peter Capek
Minor correction
written by Peter Capek, July 21, 2009
The 7090 had 32K of memory, not 64K. But those were 36 bit words, rather than bytes. So the actual memory, in today's terms, was a little over 100K bytes. Still a very impressive feat!
Phil Karn
Is all that 7094 software still around?
written by Phil Karn, July 21, 2009
I know there are some very dedicated people who are resurrecting the onboard computer software, but what about the support programs that ran in the Real Time Computing Complex in Houston? That's where most of the work was really done; the onboard computers were primarily digital autopilots.

Write comment
You must be logged in to post a comment. Please register if you do not have an account yet.

busy
 
Become a Linux Foundation Member

Who we are ?

The Linux Foundation is a non-profit consortium dedicated to the growth of Linux.

More About the foundation...

Frequent Questions

Join / Members / Staff / Board