Summary There are 3 known significant bugs in the lunar lander code:
- Uncontrolled sensor phase caused very high interrupt rate and significant CPU cycle stealing.
- Fitting elevation trajectory to high order polynomial allowed negative elevations.
- Outdated engine specification, which if followed exactly would have made landing impossible.
See below to get the story from the original computer scientists. Arguably this page should be titled "How to land on the moon despite software, hardware and documentation errors..."
- Software and documentation bugs in the Lunar Lander
"TALES FROM THE LUNAR MODULE GUIDANCE COMPUTER" by Don Eyles
ABSTRACT The Apollo 11 mission succeeded in landing on the moon despite two computer-related problems that affected the Lunar Module during the powered descent. An uncorrected problem in the rendezvous radar interface stole approximately 13% of the computer's duty cycle, resulting in five program alarms and software restarts. In a less well-known problem, caused by erroneous data, the thrust of the LM's descent engine fluctuated wildly because the throttle control algorithm was only marginally stable. The explanation of these problems provides an opportunity to describe the operating system of the Apollo flight computers and the lunar landing guidance software.
- The actual assembly code for the lunar lander
Guidance Calculations (see wikipedia page for explanation of instruction set)
- Wikipedia notes on the Apollo Guidance Computer (including key to the above assembly code)
- Interview: Fitting to high-order polynominals almost crashed the lander
Interview with Allan Klumpp, the Principal Designer of the LM Computer Descent Guidance Software. This is a little shorter and less detailed than the Don Eyles report.