Source Code
![]() |
These source-code files were transcribed from scans made from Don Eyles's personal
copy of Luminary 069. They were scanned at archive.org's Boston
facility, and the scanning was sponsored by Onno Hommes. The code was transcribed
from these scans by a team of volunteers who are referenced in the program
comments. Comments from the original source code are prefixed with a single '#' symbol,
whereas comments added later are prefixed by "##" or "###". In some cases, where
similar code blocks exist in previously-transcribed AGC programs (primarily
Luminary 99, from Apollo 11) those code blocks were used as a starting point and
then corrected to agree with the Luminary 69 scans. The full scans are available
at the Virtual AGC
project's collection at archive.org, while more-convenient reduced-size (but reduced-quality)
images are available at
the main Virtual AGC website. Report any errors noted by creating an
issue report at the Virtual AGC
project's GitHub repository. Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 069 OF AGC PROGRAM LUMINARY BY NASA 2021112-011 19:02 NOV. 25,1968Note that the date is the date of the printout, not the date of the program revision. |
034682,000002: ## Copyright: Public domain.
034683,000003: ## Filename: THE_LUNAR_LANDING.agc
034684,000004: ## Purpose: The main source file for Luminary revision 069.
034685,000005: ## It is part of the source code for the original release
034686,000006: ## of the flight software for the Lunar Module's (LM) Apollo
034687,000007: ## Guidance Computer (AGC) for Apollo 10. The actual flown
034688,000008: ## version was Luminary 69 revision 2, which included a
034689,000009: ## newer lunar gravity model and only affected module 2.
034690,000010: ## This file is intended to be a faithful transcription, except
034691,000011: ## that the code format has been changed to conform to the
034692,000012: ## requirements of the yaYUL assembler rather than the
034693,000013: ## original YUL assembler.
034694,000014: ## Reference: pp. 789-796
034695,000015: ## Assembler: yaYUL
034696,000016: ## Contact: Ron Burkey <info@sandroid.org>.
034697,000017: ## Website: www.ibiblio.org/apollo/index.html
034698,000018: ## Mod history: 2016-12-13 MAS Created from Luminary 99.
034699,000019: ## 2016-12-18 MAS Updated from comment-proofed Luminary 99 version.
034700,000020: ## 2017-01-09 RRB Updated for Luminary 69.
034701,000021: ## 2017-01-23 HG Fix interpretive sequence SET VLOAD -> SET CLEAR
034702,000022: ## APSFLAG APSFLAG
034703,000023: ## RN SWANDISP
034704,000024: ## Add missing interpretive sequence SET VLOAD
034705,000025: ## LRBYPASS
034706,000026: ## RN
034707,000027: ## Fix operator TS -> DXCH
034708,000028: ## Fix value for GUIDDURN +66440 -> +65164
034709,000029: ## 2017-01-28 RSB Proofed comment text using octopus/prooferComments
034710,000030: ## and fixed errors found.
034711,000031: ## 2017-03-16 RSB Comment-text fixes identified in 5-way
034712,000032: ## side-by-side diff of Luminary 69/99/116/131/210.
034713,000033:
![]() |
Page 789 |
034715,000035: 32,2772 BANK 32
034716,000036: 32,2000 SETLOC F2DPS*32
034717,000037: 32,2000 BANK
034718,000038:
034719,000039: 32,2772 E7,1617 EBANK= E2DPS
034720,000040:
034721,000041: # ****************************************
034722,000042: # P63: THE LUNAR LANDING, BRAKING PHASE
034723,000043: # ****************************************
034724,000044:
034725,000045: 32,2772 COUNT* $$/P63
034726,000046:
034727,000047: 32,2772 05353 P63LM TC PHASCHNG
034728,000048: 32,2773 04024 OCT 04024
034729,000049:
034730,000050: 32,2774 04616 TC BANKCALL # DO IMU STATUS CHECK ROUTINE R02
034731,000051: 32,2775 11175 CADR R02BOTH
034732,000052:
034733,000053: 32,2776 33246 CAF P63ADRES # INITIALIZE WHICH FOR BURNBABY
034734,000054: 32,2777 55453 TS WHICH
034735,000055:
034736,000056: 32,3000 32010 CAF DPSTHRSH # INITIALIZE DVMON
034737,000057: 32,3001 55251 TS DVTHRUSH
034738,000058: 32,3002 34751 CAF FOUR
034739,000059: 32,3003 55513 TS DVCNTR
034740,000060:
034741,000061: 32,3004 44753 CS ONE # INITIALIZE WCHPHASE AND FLPASSO
034742,000062: 32,3005 22007 ZL # FOR IGNITION ALGORITHM
034743,000063: 32,3006 53621 DXCH WCHPHASE
034744,000064:
034745,000065:
034746,000066: 32,3007 44736 CS BIT14
034747,000067: 32,3010 00006 EXTEND
034748,000068: 32,3011 03012 WAND CHAN12 # REMOVE TRACK-ENABLE DISCRETE.
034749,000069:
034750,000070: 32,3012 06036 FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
034751,000071: 32,3013 43014 CLEAR CLEAR
034752,000072: 32,3014 02663 NOTHROTL
034753,000073: 32,3015 03271 REDFLAG
034754,000074: 32,3016 43014 CLEAR SET
034755,000075: 32,3017 05660 LRBYPASS
034756,000076: 32,3020 03067 MUNFLAG
034757,000077: 32,3021 43014 CLEAR CLEAR
034758,000078: 32,3022 00266 P25FLAG # TERMINATE P25 IF IT IS RUNNING.
034759,000079: 32,3023 00270 RNDVZFLG # TERMINATE P20 IF IT IS RUNNING
034760,000080:
034761,000081: # ****************************************
034762,000082:
034763,000083: 32,3024 77201 IGNALG SETPD VLOAD # FIRST SET UP INPUTS FOR RP-TO-R:-
034764,000084: 32,3025 00001 0 # AT 0D LANDING SITE IN MOON FIXED FRAME
034765,000085: 32,3026 02023 RLS # AT 6D ESTIMATED TIME OF LANDING
![]() |
Page 790 |
034767,000087: 32,3027 41525 PDDL PUSH # MPAC NON-ZERO TO INDICATE LUNAR CASE
034768,000088: 32,3030 02401 TLAND
034769,000089: 32,3031 37623 STCALL TPIP # ALSO SET TPIP FOR FIRST GUIDANCE PASS
034770,000090: 32,3032 51504 RP-TO-R
034771,000091: 32,3033 64312 VSL4 MXV
034772,000092: 32,3034 01734 REFSMMAT
034773,000093: 32,3035 37633 STCALL LAND
034774,000094: 32,3036 60264 GUIDINIT # GUIDINIT INITIALIZES WM AND /LAND/
034775,000095: 32,3037 45345 DLOAD DSU
034776,000096: 32,3040 02401 TLAND
034777,000097: 32,3041 25254 GUIDDURN
034778,000098: 32,3042 34041 STCALL TDEC1 # INTEGRATE STATE FORWARD TO THAT TIME
034779,000099: 32,3043 27057 LEMPREC
034780,000100: 32,3044 77331 SSP VLOAD
034781,000101: 32,3045 03645 NIGNLOOP
034782,000102: 32,3046 00050 40D
034783,000103: 32,3047 06422 UNITX
034784,000104: 32,3050 26510 STOVL CG
034785,000105: 32,3051 06420 UNITY
034786,000106: 32,3052 26516 STOVL CG +6
034787,000107: 32,3053 06416 UNITZ
034788,000108: 32,3054 16524 STODL CG +14
034789,000109: 32,3055 25252 99999CON
034790,000110: 32,3056 27663 STOVL DELTAH # INITIALIZE DELTAH FOR V16N68 DISPLAY
034791,000111: 32,3057 06424 ZEROVECS
034792,000112: 32,3060 17252 STODL UNFC/2 # INITIALIZE TRIM VELOCITY CORRECTION TERM
034793,000113: 32,3061 06424 HI6ZEROS
034794,000114: 32,3062 03641 STORE TTF/8
034795,000115:
034796,000116: 32,3063 77745 IGNALOOP DLOAD
034797,000117: 32,3064 00015 TAT
034798,000118: 32,3065 27557 STOVL PIPTIME1
034799,000119: 32,3066 00017 RATT1
034800,000120: 32,3067 64312 VSL4 MXV
034801,000121: 32,3070 01734 REFSMMAT
034802,000122: 32,3071 37517 STCALL R
034803,000123: 32,3072 67162 MUNGRAV
034804,000124: 32,3073 35237 STCALL GDT/2
034805,000125: 32,3074 62514 ?GUIDSUB # WHICH DELIVERS N PASSES OF GUIDANCE
034806,000126:
034807,000127: # DDUMCALC IS PROGRAMMED AS FOLLOWS:-
034808,000128: # 2 -
034809,000129: # (RIGNZ - RGU )/16 + 16(RGU )KIGNY/B8 + (RGU - RIGNX)KIGNX/B4 + (ABVAL(VGU) - VIGN)KIGNV/B4
034810,000130: # 2 1 0
034811,000131: # DDUM = -------------------------------------------------------------------------------------------
034812,000132: # 10
034813,000133: # 2 (VGU - 16 VGU KIGNX/B4)
034814,000134: # 2 0
![]() |
Page 791 |
034816,000136: # THE NUMERATOR IS SCALED IN METERS AT 2(28). THE DENOMINATOR IS A VELOCITY IN UNITS OF 2(10) M/CS.
034817,000137: # THE QUOTIENT IS THUS A TIME IN UNITS OF 2(18) CENTISECONDS. THE FINAL SHIFT RESCALES TO UNITS OF 2(28) CS.
034818,000138: # THERE IS NO DAMPING FACTOR. THE CONSTANTS KIGNX/B4, KIGNY/B8 AND KIGNV/B4 ARE ALL NEGATIVE IN SIGN.
034819,000139:
034820,000140: 32,3075 55644 DDUMCALC TS NIGNLOOP
034821,000141: 32,3076 06036 TC INTPRET
034822,000142: 32,3077 57345 DLOAD DMPR # FORM DENOMINATOR FIRST
034823,000143: 32,3100 03625 VGU
034824,000144: 32,3101 02471 KIGNX/B4
034825,000145: 32,3102 44232 SL4R BDSU
034826,000146: 32,3103 03631 VGU +4
034827,000147: 32,3104 45325 PDDL DSU
034828,000148: 32,3105 02467 RIGNZ
034829,000149: 32,3106 02550 RGU +4
034830,000150: 32,3107 65222 SR4R PDDL
034831,000151: 32,3110 02546 RGU +2
034832,000152: 32,3111 57316 DSQ DMPR
034833,000153: 32,3112 02473 KIGNY/B8
034834,000154: 32,3113 65232 SL4R PDDL
034835,000155: 32,3114 02544 RGU
034836,000156: 32,3115 57225 DSU DMPR
034837,000157: 32,3116 02465 RIGNX
034838,000158: 32,3117 02471 KIGNX/B4
034839,000159: 32,3120 51515 PDVL ABVAL
034840,000160: 32,3121 03625 VGU
034841,000161: 32,3122 57225 DSU DMPR
034842,000162: 32,3123 02463 VIGN
034843,000163: 32,3124 02475 KIGNV/B4
034844,000164: 32,3125 43215 DAD DAD
034845,000165: 32,3126 56215 DAD DDV
034846,000166: 32,3127 77661 SRR
034847,000167: 32,3130 21613 10D
034848,000168:
034849,000169: 32,3131 43206 PUSH DAD
034850,000170: 32,3132 03557 PIPTIME1
034851,000171: 32,3133 14041 STODL TDEC1 # STORE NEW GUESS FOR NEXT INTEGRATION
034852,000172: 32,3134 45246 ABS DSU
034853,000173: 32,3135 25256 DDUMCRIT
034854,000174: 32,3136 45040 BMN CALL
034855,000175: 32,3137 65156 DDUMGOOD
034856,000176: 32,3140 27412 INTSTALL
034857,000177: 32,3141 43014 SET SET
034858,000178: 32,3142 01473 INTYPFLG
034859,000179: 32,3143 00063 MOONFLAG
034860,000180: 32,3144 77745 DLOAD
034861,000181: 32,3145 03557 PIPTIME1
034862,000182: 32,3146 25517 STOVL TET # HOPEFULLY ?GUIDSUB DID NOT
034863,000183: 32,3147 00017 RATT1 # CLOBBER RATT1 AND VATT1
034864,000184: 32,3150 25535 STOVL RCV
034865,000185: 32,3151 00025 VATT1
![]() |
Page 792 |
034867,000187: 32,3152 35543 STCALL VCV
034868,000188: 32,3153 27107 INTEGRVS
034869,000189: 32,3154 77650 GOTO
034870,000190: 32,3155 65063 IGNALOOP
034871,000191:
034872,000192: 32,3156 54335 DDUMGOOD SLOAD SR
034873,000193: 32,3157 03425 ZOOMTIME
034874,000194: 32,3160 20617 14D
034875,000195: 32,3161 77621 BDSU
034876,000196: 32,3162 00041 TDEC1
034877,000197: 32,3163 27440 STOVL TIG # COMPUTE DISTANCE LANDING SITE WILL BE
034878,000198: 32,3164 03525 V # OUT OF LM'S ORBITAL PLANE AT IGNITION:
034879,000199: 32,3165 53435 VXV UNIT # SIGN IS + IF LANDING SITE IS TO THE
034880,000200: 32,3166 03517 R # RIGHT, NORTH; - IF TO THE LEFT, SOUTH.
034881,000201: 32,3167 72441 DOT SL1
034882,000202: 32,3170 03633 LAND
034883,000203: 32,3171 26534 R60INIT STOVL OUTOFPLN # INITIALIZATION FOR CALCMANU
034884,000204: 32,3172 03252 UNFC/2
034885,000205: 32,3173 02536 STORE R60VSAVE # STORE UNFC/2 TEMPORARILY IN R60SAVE
034886,000206: 32,3174 77776 EXIT
034887,000207: # ****************************************
034888,000208:
034889,000209: 32,3175 05353 IGNALGRT TC PHASCHNG # PREVENT REPEATING IGNALG
034890,000210: 32,3176 04024 OCT 04024
034891,000211:
034892,000212: 32,3177 43247 ASTNCLOK CS ASTNDEX
034893,000213: 32,3200 04616 TC BANKCALL
034894,000214: 32,3201 74667 CADR STCLOK2
034895,000215: 32,3202 15155 TCF ENDOFJOB # RETURN IN NEW JOB AND IN EBANK FIVE
034896,000216:
034897,000217: 32,3203 06036 ASTNRET TC INTPRET
034898,000218: 32,3204 47131 SSP RTB # GO PICK UP DISPLAY AT END OF R51:
034899,000219: 32,3205 02747 QMAJ # "PROCEED" WILL DO A FINE ALIGNMENT
034900,000220: 32,3206 65210 FCADR P63SPOT2 # "ENTER" WILL RETURN TO P63SPOT2
034901,000221: 32,3207 30776 R51P63
034902,000222: 32,3210 53575 P63SPOT2 VLOAD UNIT # INITIALIZE KALCMANU FOR BURN ATTITUDE
034903,000223: 32,3211 02536 R60VSAVE
034904,000224: 32,3212 27767 STOVL POINTVSM
034905,000225: 32,3213 06422 UNITX
034906,000226: 32,3214 03761 STORE SCAXIS
034907,000227: 32,3215 77776 EXIT
034908,000228:
034909,000229: 32,3216 35016 CAF EBANK7
034910,000230: 32,3217 54003 TS EBANK
034911,000231:
034912,000232: 32,3220 00004 INHINT
034913,000233: 32,3221 04674 TC IBNKCALL
034914,000234: 32,3222 40142 CADR PFLITEDB
034915,000235: 32,3223 00003 RELINT
034916,000236:
![]() |
Page 793 |
034918,000238: 32,3224 04616 TC BANKCALL
034919,000239: 32,3225 54101 CADR R60LEM
034920,000240:
034921,000241: 32,3226 05353 TC PHASCHNG # PREVENT RECALLING R60
034922,000242: 32,3227 04024 OCT 04024
034923,000243:
034924,000244: 32,3230 34746 P63SPOT3 CA BIT6 # IS THE LR ANTENNA IN POSITION 1 YET
034925,000245: 32,3231 00006 EXTEND
034926,000246: 32,3232 02033 RAND CHAN33
034927,000247: 32,3233 00006 EXTEND
034928,000248: 32,3234 13242 BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
034929,000249:
034930,000250: 32,3235 33250 CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
034931,000251: 32,3236 04616 TC BANKCALL # SILLY THING AROUND
034932,000252: 32,3237 20476 CADR GOPERF1
034933,000253: 32,3240 16001 TCF GOTOPOOH # TERMINATE
034934,000254: 32,3241 13230 TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
034935,000255:
034936,000256: 32,3242 04616 P63SPOT4 TC BANKCALL # ENTER INITIALIZE LANDING RADAR
034937,000257: 32,3243 67704 CADR SETPOS1
034938,000258:
034939,000259: 32,3244 04635 TC POSTJUMP # OFF TO SEE THE WIZARD ...
034940,000260: 32,3245 74124 CADR BURNBABY
034941,000261:
034942,000262: # ----------------------------------------
034943,000263:
034944,000264: # CONSTANTS FOR P63LM AND IGNALG
034945,000265:
034946,000266: 32,3246 02074 P63ADRES GENADR P63TABLE
034947,000267:
034948,000268: 32,3247 00027 ASTNDEX OCT 00027 # INDEX FOR CLOKTASK
034949,000269:
034950,000270: 32,3250 00500 CODE500 OCT 00500
034951,000271:
034952,000272: 32,3251 00035 30373 99999CON 2DEC 30479.7 B-24
034953,000273:
034954,000274: 32,3253 00003 37214 GUIDDURN 2DEC +65164 B-28
034955,000275: 32,3255 00000 00010 DDUMCRIT 2DEC +8 B-28 # CRITERION FOR IGNALG CONVERGENCE
034956,000276:
![]() |
Page 794 |
034958,000278: # ----------------------------------------
034959,000279:
![]() |
Page 795 |
034961,000281: # ****************************************
034962,000282: # P68: LANDING CONFIRMATION
034963,000283: # ****************************************
034964,000284:
034965,000285: 31,2172 BANK 31
034966,000286: 31,2000 SETLOC F2DPS*31
034967,000287: 31,2000 BANK
034968,000288:
034969,000289: 31,2172 COUNT* $$/P6567
034970,000290:
034971,000291: 31,2172 05353 LANDJUNK TC PHASCHNG
034972,000292: 31,2173 04024 OCT 04024
034973,000293:
034974,000294: 31,2174 00004 INHINT
034975,000295: 31,2175 04616 TC BANKCALL # ZERO ATTITUDE ERROR
034976,000296: 31,2176 40153 CADR ZATTEROR
034977,000297:
034978,000298: 31,2177 04616 TC BANKCALL # SET 5 DEGREE DEADBAND
034979,000299: 31,2200 40127 CADR SETMAXDB
034980,000300:
034981,000301: 31,2201 06036 TC INTPRET # TO INTERPRETIVE AS TIME IS NOT CRITICAL
034982,000302: 31,2202 43014 SET CLEAR
034983,000303: 31,2203 04067 SURFFLAG
034984,000304: 31,2204 04666 LETABORT
034985,000305: 31,2205 43014 SET CLEAR
034986,000306: 31,2206 05062 APSFLAG
034987,000307: 31,2207 03664 SWANDISP
034988,000308: 31,2210 77214 SET VLOAD
034989,000309: 31,2211 05460 LRBYPASS
034990,000310: 31,2212 01221 RN
034991,000311: 31,2213 16032 STODL ALPHAV
034992,000312: 31,2214 01235 PIPTIME
034993,000313: 31,2215 45014 SET CALL
034994,000314: 31,2216 01463 LUNAFLAG
034995,000315: 31,2217 26351 LAT-LONG
034996,000316: 31,2220 77201 SETPD VLOAD # COMPUTE RLS AND STORE IT AWAY
034997,000317: 31,2221 00001 0
034998,000318: 31,2222 01221 RN
034999,000319: 31,2223 65352 VSL2 PDDL
035000,000320: 31,2224 01235 PIPTIME
035001,000321: 31,2225 45006 PUSH CALL
035002,000322: 31,2226 51531 R-TO-RP
035003,000323: 31,2227 02023 STORE RLS
035004,000324: 31,2230 77776 EXIT
035005,000325: 31,2231 32246 CAF V06N43* # ASTRONAUT: NOW LOOK WHERE YOU ENDED UP
035006,000326: 31,2232 04616 TC BANKCALL
035007,000327: 31,2233 20351 CADR GOFLASH
035008,000328: 31,2234 16001 TCF GOTOPOOH # TERMINATE
035009,000329: 31,2235 12237 TCF +2 # PROCEED
035010,000330: 31,2236 12231 TCF -5 # RECYCLE
035011,000331:
![]() |
Page 796 |
035013,000333: 31,2237 06036 TC INTPRET
035014,000334: 31,2240 77775 VLOAD # INITIALIZE GSAV AND (USING REFMF)
035015,000335: 31,2241 06422 UNITX # YNBSAV, ZNBSAV AND ATTFLAG FOR P57
035016,000336: 31,2242 36235 STCALL GSAV
035017,000337: 31,2243 33470 REFMF
035018,000338: 31,2244 77776 EXIT
035019,000339:
035020,000340: 31,2245 16001 TCF GOTOPOOH # ASTRONAUT: PLEASE SELECT P57
035021,000341:
035022,000342: 31,2246 01453 V06N43* VN 0643
035023,000343:
End of include-file THE_LUNAR_LANDING.agc. Parent file is MAIN.agc