Document library
Change log
Bug and issues
Developer info
Virtual AGC — AGS — LVDC — Gemini

Luminary — Sunburst — Sundance
Lunar Module Flight Software

Language Manual
Physical Implementations

Please enable javascript in your browser to see a site-search form here.


What is "Luminary"?

AGC software family treeLuminary is the program which was run on the Apollo Guidance Computer installed in the Lunar Module (LM).  In order to be loaded into the AGC—actually, to be converted to the "core ropes" within the AGC—it was necessary to "assemble" Luminary's source code into binary machine language, using a computer program called YUL.  In the context of the Virtual AGC project, of course, the process is somewhat different:  Luminary source code is assembled by the yaYUL program, and then loaded into the yaAGC simulation.

The figure at right (click to enlarge) concisely depicts the relationships among the early LM AGC software and the relationship with the CM's AGC software.

Known Software Versions

Mission LM Number Mission
LM Program Version Source Code
Mission-specific documentation
Where is it now?
Apollo 5


GSOP (R-527)
"Apollo Experience Report—Guidance and Control Systems: Lunar Module Mission Programer"
Apollo 5 was an unmanned mission to test the LM, and as such it had a working AGC.  Due to software bugs, it was necessary for ground controllers to deactivate the AGC at certain points in the mission.  Who knows if we'll ever see a copy of it?

The "Programer"—yes, that's the real spelling!—was the gadget that was the stand-in for the crew.
Apollo 9

GSOP (R-557)
Flight Plan
Here is some info from James Kernan, on of the LGC developers, in response to my question about correct versioning of Sundance:

Sundance 306 is correct.  I was the "rope mother" for Sundance-Apollo 9.  ...  Sundance was not only the Apollo 9 LM flight program, it was also the development bed for the Lunar orbit and landing software.  At some point we created a version and called it Luminary.  I think the last few revisions of Sundance were devoted to disabling crew access to the Lunar orbit and landing software that was present in the build.

Jim also tells me that a copy of Sundance 306 may still "be in the building".  I'm not certain which building he's talking about, but it's nevertheless interesting news that a copy of the program does exist somewhere.
Apollo 10
Luminary 1

GSOP (R-557)

Apollo 11
Luminary 1A
As colorized, hyperlinked,  HTML

As scanned page images (very big!)
Erasable pad loads

Excerpted LM Systems Handbook

The 1201/1202 alarms

The Apollo 11 Adventure

Operational Data Book
Crew Debriefing
Flight Plan
Page images have been taken from a hardcopy from the Charles Stark Draper Historical Collection, MIT Museum, and then converted to source code by a team of volunteers.

Honor Roll

Organizational honors

Massachusetts Institute of Technology / MIT Museum
Building N51, 265 Massachusetts Avenue
Cambridge, MA  02139

Individual honors
  • Deborah Douglas, the Museum's Curator of Science and Technology, who conceived the idea of making this material available to us, and without whom we had literally no chance of obtaining it.
  • Paul Fjeld, for digitizing the hardcopy.
  • (In alphabetical order) Fabrizio Bernardini, Hartmuth Gutshe, Onno Hommes, Jim Lawton, and Sergio Navarro, for converting the page images to source code.
  • Steve Case and Dawn Masuoka for helping in proofing the executable binary.
  • ... and those whose names I do not know at the Charles Stark Draper Laboratory and NASA who allowed us to do this.

The MIT Museum copy is dated 14 July, 1969, which seems odd at first glance, since it would be far too late to actually have been included in the Apollo 11 mission.  Hugh Blair-Smith speculates that this is the date of the printing rather than of the program build, and that seems plausible. 

One of the original AGC programmers, Mr. Allan Klumpp, also has a copy.  Allan's copy is awaiting scanning to be made available online at klabs.org, which we are eagerly anticipating.  A comparison of memory-bank checksums ("bugger words") has been made between the MIT and Klumpp listings (thanks to Paul Fjeld and Allan Klumpp), and it has been found that these two listings have a small difference in memory bank 6.  In other words, they are not precisely the same!  So one or the other of these is not the software that was actually flown. 

Mr. James Kernan, another of the original AGC developers, has sent us some facts that may explain the confusion, if not to tell us which version was actually flown.  I'll let Jim tell it in his own words:

I was an employee at Draper Lab, and was in charge of the Lunar Module LGC computer programming group and also in charge of Assembly Control for the flight software during the Apollo 9-12 software development period.  The latter responsibility included reviewing all proposed alterations to the flight software and the YUL assembler inputs.

I can explain the confusion over the Luminary version that flew on Apollo 11.  We were aiming for Luminary Revision 99 as the Apollo 11 Lunar Module flight software.  There was a tradition (or rule) that the flight software version should have no revision, so we renamed Luminary Revision 099 as Lum99 Revision 0.  At the last minute, Dan Lickly, our chief engineer, appeared with ephemerides updates and it took two tries to get it right.  The result was that we created Lum99 Revision 1 and Lum99 Revision 2.  We made a no-change version of the later and named it Lum99R2 Revision 0.

The tapes and ropes were made from that.   That is my recollection.  Unfortunately, I did not have the foresight to keep a printout of the flight version.
Apollo 12
Luminary 1B

Excerpted LM Systems Handbook

Operational Data Book
Flight Plan

Apollo 13
Luminary 1C
As colorized, hyperlinked,  HTML

As scanned page images (very big!)
GSOP (R-567)
Pad loads for LM-7

Excerpted LM Systems Handbook

Operational Data Book
Mr. Paul Fjeld has also told me (or speculated) that the listing from which these scans were created was originally preserved by Don Eyles (one of the programmers), and then copied/reduced by Hugh Blair-Smith (whose name appears frequently on this site), via James Kernan (another of the original programmers), for David Craig (whose ex libris appears on p. 2 of the scan, and who is apparently a great collector of Apollo artifacts).  Somehow it was passed to Mr. Gary Neff, who created the scans, which he gave back to Mr. Craig, and which were then placed online at MIT's History of Recent Science and Technology website.  Unfortunately, the quality of the page images was somehow greatly reduced in the latter steps, and the high-quality page images that Mr. Neff produced were discarded in the process.  MIT's HRST website has subsequently disappeared, but eventually was mirrored elsewhere on the web, and is partially mirrored here.  However, we choose to present this listing as a set of individual page images rather than as a single gigantic PDF file you'll find elsewhere on the web.  (Whew!  "Many hands make the work Luminary.")  By the way, Mr. Neff also kindly provided me with a replacement for a page which is garbled in the MIT version, and consequently is probably available only here.
Apollo 14
Luminary 1D

Excerpted LM Systems Handbook

The solder ball

Operational Data Book

Apollo 15
Luminary 1E

LGC Data Cards

Program Notes

Delco Manual

GSOP (R-567)
Operations Handbook
Operational Data Book
Crew Debriefing

Flight Plan

LM Familiarization Manual
Allan Klumpp (one of the AGC programmers) tells me that he believes Luminary 1D build 209 was used for these flights, and he was certainly in a position to know.  But it does contradict the statements in the A17 Flight Readiness Review (Fabrizio Bernardini tells me), which agree with the information to the left.  Regardless, Mr. Klumpp's copy of 1D build 209 is the closest thing to the real Apollo 15-17 LM software I'm aware of.  It is awaiting scanning to be made available online at klabs.org, which we are eagerly anticipating.
Apollo 16
Luminary 1E 210

Program Notes

GSOP (R-567)
Operations Handbook
Operational Data Book
Flight Plan

LM Familiarization Manual
Apollo 17
Luminary 1E 210

Excerpted LM Systems Handbook

Program Notes

GSOP (R-567)
Operations Handbook
Operational Data Book
Crew Debriefing

Flight Plan

LM Familiarization Manual
(The data in this table originally came from on-line sources, but in the form shown contains many corrections supplied by Mr. Paul Fjeld.  Please don't take this information as authoritative!)

Source Code and Binary

Both source code and (independently derived) binary code are provided within the yaAGC tarball downlod.  The files are contained within a subdirectory named after the software version (such as "Luminary131").  The more important files supplied are these:

Source code for major subdivisions of the Luminary program.
Organizer which treats all of the other assembly-language files (*.agc) as include-files, to form the complete program.
Human-readable form of the Luminary binary executable, as an octal listing.
Binary executable created from binsource (octal listing) file.

In other words, to create a Luminary binary executable rather than using the one provided with yaAGC (such as Luminary131.bin), one simply needs to assemble the file MAIN.agc.  Typically, if all files remain organized the way they are in the yaAGC distribution tarball, the sequence of steps for doing so (from a command-line prompt) would be something like this:

cd Luminary131
../yaYUL/yaYUL --force MAIN.agc >Luminary131.lst

The listfile (Luminary131.lst) so produced is a bit more manageable than the scanned version at MIT's website, in that it is a hundredth the size and you can perform text-searches on it.  The binary so produced, MAIN.agc.bin, should be byte-for-byte identical to the binary (Luminary131.bin) provided with the yaAGC distribution.  Therefore, the following Linux command should reveal no differences between the two:

diff -s MAIN.agc.bin Luminary131.bin

(Replace "diff -s" with "fc /b" in Windows.) 

Technically speaking....

A point which may not be completely appreciated is that Luminary131.bin was not created from the assembly-language source files.  Therefore, the byte-for-byte equivalence mentioned above actually has some significance.  In fact, both the assembly-language source code and Luminary131.bin (or Luminary131.binsource) come from separate readings of the original Luminary assembly listing scan, so their equivalence provides an important check on validity.  (See below.)  The file Luminary131.bin was created from the human-readable/editable ASCII file Luminary131.binsource by means of the program Oct2Bin, with the following steps:

cd Luminary131
./Oct2Bin <Luminary131.binsource
mv Oct2Bin.bin Luminary131.bin

Admittedly, few people are likely to perform any processing of this kind unless contibuting a new version of the Luminary code to the Virtual AGC project.


Validity of the Luminary 131 Source Code and of the Binary (Apollo 13)

I believe that the core-rope image (which is what is needed to actually run the Luminary software in the yaAGC CPU emulator) I've provided for Luminary 1C (build 131) is 100% accurate.  If you're not willing to take my word for that, and if the discussion in the preceding section doesn't convince you, an extended discussion of proofing and validation of the core-rope appears in the description of the Colossus software.

Validity of the Luminary 099 Code (Apollo 11)

The Luminary 099 page images became available after the Colossus 249 and Luminary 131page images had already been converted to source-code files, and prior to any other missions becoming available.  The conversion technique was very abbreviated compared to that of Luminary 131, as follows:
The binary thus produced by yaYUL is supplied in the source tree and used for regression testing.

Last modified by Ronald Burkey on 2010-02-20.

Virtual AGC is hosted by ibiblio.org