Home
yaAGS et al.
Download
Links
Change log
Bug and issues
Developer info
FAQ
Virtual AGC and AGS
LM Flight Software (Luminary)  

yaAGC
yaYUL
yaDSKY
yaOtherStuff
Luminary
Colossus
Language Manual
Physical Implementations

What is "Luminary"?

Luminary 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.

Known Software Versions

Mission
LM Number
Mission
Type
LM Program
Version
Where is it now?
Scanned
PDF
Text
zipfile
Comments
Apollo 7
(None)






Apollo 8
(None)






Apollo 9
LM-3
D
Sundance
?



Apollo 10
LM-4
F
Luminary 1
069



Apollo 11
LM-5
G
Luminary 1A
099


There is a copy in MIT Museum archives, although I have not so far had the privilege of seeing it.  Mr. Alexander Brown tells us additionally that the MIT copy is marked "Luminary IA, 14 July, 1969."  The date is odd, since it would be far too late to actually have been included in the Apollo 11 mission, but Hugh Blair-Smith speculates that this is the date of the printing rather than of the program build.  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.  When the online copy is available, I'll provided an executable version for Virtual AGC as soon as possible.  Note:  A comparison of memory-bank checksums ("bugger words") has now 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!  But perhaps there has been an error in the comparison procedure.  If/when more is known, I'll let you know about it.
Apollo 12
LM-6
H
Luminary 1B
116



Apollo 13
LM-7
H-2
Luminary 1C
131
620 Mbytes
1.2 Mbytes
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.  That website has now disappeared, but an improved scan is hosted here at Virtual AGC.  (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.
Apollo 14
LM-8
H-3
Luminary 1D
178



Apollo 15
LM-10
J-1
Luminary 1E
210






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.  Any information that would help to resolve this discrepancy would be welcome.  Mr. Klumpp's copy of 1D build 209 is awaiting scanning to be made available online at klabs.org, which we are eagerly anticipating.
Apollo 16
LM-11
J-2
Apollo 17
LM-12
J-3
(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:

Filename.s
Source code for major subdivisions of the Luminary program.
MAIN.s
Organizer which treats all of the other assembly-language files (*.s) as include-files, to form the complete program.
Luminary131.binsource
Human-readable form of the Luminary binary executable.
Luminary131.bin
Binary executable created from Luminary131.binsource.

In other words, to create a Luminary binary executable rather than using the one provided with yaAGC (Luminary131.bin), one simply needs to assemble the file MAIN.s.  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.s >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.s.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.s.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 Source Code and of the Binary

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.


This page was last modified by Ronald Burkey on 2007-04-15.