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