Source Code
![]() |
These source-code files derive from a printout of Luminary 210 (Apollo 15-17
Lunar Module guidance computer program), from the personal library of
original AGC developer Don Eyles, digitally photographed at archive.org,
financially sponsored by Jim Lawton, and transcribed to source code by a
team of volunteers. This colorized, syntax-highlighted form was created
by assembling that transcribed source code. Note that the full page images
are available on the
Virtual AGC project page at archive.org, while reduced-size images
are presented at the VirtualAGC project website. Report or fix any
transcription errors at
the Virtual AGC project code repository. Notations on the program listing read, in part: GAP: ASSEMBLE REVISION 210 OF AGC PROGRAM LUMINARY BY NASA 2021112-161 17:11 MAR. 19,1971Note that the date is the date of the printout, not the date of the program revision. |
034291,000002: ## Copyright: Public domain.
034292,000003: ## Filename: THE_LUNAR_LANDING.agc
034293,000004: ## Purpose: A section of Luminary revision 210.
034294,000005: ## It is part of the source code for the Lunar Module's (LM)
034295,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
034296,000007: ## This file is intended to be a faithful transcription, except
034297,000008: ## that the code format has been changed to conform to the
034298,000009: ## requirements of the yaYUL assembler rather than the
034299,000010: ## original YUL assembler.
034300,000011: ## Reference: pp. 781-788
034301,000012: ## Assembler: yaYUL
034302,000013: ## Contact: Ron Burkey <info@sandroid.org>.
034303,000014: ## Website: www.ibiblio.org/apollo/index.html
034304,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
034305,000016: ## 2016-11-29 HG Transcribed
034306,000017: ## 2016-12-07 HG Fix P00 -> POO
034307,000018: ## 2016-12-25 RSB Comment-text proofed using ProoferComments
034308,000019: ## and corrected errors found.
034309,000020: ## 2017-03-13 RSB Comment-text fixes noted in proofing Luminary 116.
034310,000021:
![]() |
Page 781 |
034312,000023: 32,2602 BANK 32
034313,000024: 32,2000 SETLOC F2DPS*32
034314,000025: 32,2000 BANK
034315,000026:
034316,000027: 32,2602 E7,1621 EBANK= E2DPS
034317,000028:
034318,000029: # ****************************************
034319,000030: # P63: THE LUNAR LANDING, BRAKING PHASE
034320,000031: # ****************************************
034321,000032:
034322,000033: 32,2602 COUNT* $$/P63
034323,000034:
034324,000035: 32,2602 05355 P63LM TC PHASCHNG
034325,000036: 32,2603 04024 OCT 04024
034326,000037:
034327,000038: 32,2604 04607 TC BANKCALL # DO IMU STATUS CHECK ROUTINE R02
034328,000039: 32,2605 33757 CADR R02BOTH
034329,000040:
034330,000041: 32,2606 33063 CAF P63ADRES # INITIALIZE WHICH FOR BURNBABY
034331,000042: 32,2607 55455 TS WHICH
034332,000043:
034333,000044: 32,2610 32000 CAF DPSTHRSH # INITIALIZE DVMON
034334,000045: 32,2611 55250 TS DVTHRUSH
034335,000046: 32,2612 34742 CAF FOUR
034336,000047: 32,2613 55515 TS DVCNTR
034337,000048:
034338,000049: 32,2614 44744 CS ONE # INITIALIZE WCHPHASE AND FLPASSO
034339,000050: 32,2615 55346 TS WCHPHASE
034340,000051:
034341,000052: 32,2616 34746 CA ZERO
034342,000053: 32,2617 55623 TS FLPASS0
034343,000054:
034344,000055: 32,2620 44727 CS BIT14
034345,000056: 32,2621 00006 EXTEND
034346,000057: 32,2622 03012 WAND CHAN12 # REMOVE TRACK-ENABLE DISCRETE.
034347,000058:
034348,000059: 32,2623 06060 FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
034349,000060: 32,2624 77614 CLEAR
034350,000061: 32,2625 00664 NOTERFLG # PERMIT TERRAIN MODEL
034351,000062: 32,2626 43014 CLEAR CLEAR
034352,000063: 32,2627 02663 NOTHROTL
034353,000064: 32,2630 03271 REDFLAG
034354,000065: 32,2631 43014 CLEAR SET
034355,000066: 32,2632 05660 LRBYPASS
034356,000067: 32,2633 03067 MUNFLAG
034357,000068: 32,2634 43014 CLEAR CLEAR
034358,000069: 32,2635 00266 P25FLAG # TERMINATE P25 IF IT IS RUNNING.
034359,000070: 32,2636 00270 RNDVZFLG # TERMINATE P20 IF IT IS RUNNING
034360,000071:
034361,000072: # ****************************************
034362,000073:
![]() |
Page 782 |
034364,000075: 32,2637 77201 IGNALG SETPD VLOAD # FIRST SET UP INPUTS FOR RP-TO-R:-
034365,000076: 32,2640 00001 0 # AT 0D LANDING SITE IN MOON FIXED FRAME
034366,000077: 32,2641 02021 RLS # AT 6D ESTIMATED TIME OF LANDING
034367,000078: 32,2642 41525 PDDL PUSH # MPAC NON-ZERO TO INDICATE LUNAR CASE
034368,000079: 32,2643 02027 TLAND
034369,000080: 32,2644 37625 STCALL TPIP # ALSO SET TPIP FOR FIRST GUIDANCE PASS
034370,000081: 32,2645 55716 RP-TO-R
034371,000082: 32,2646 64312 VSL4 MXV
034372,000083: 32,2647 01732 REFSMMAT
034373,000084: 32,2650 37635 STCALL LAND
034374,000085: 32,2651 71346 GUIDINIT # GUIDINIT INITIALIZES WM AND /LAND/
034375,000086: 32,2652 45345 DLOAD DSU
034376,000087: 32,2653 02027 TLAND
034377,000088: 32,2654 25070 GUIDDURN
034378,000089: 32,2655 34041 STCALL TDEC1 # INTEGRATE STATE FORWARD TO THAT TIME
034379,000090: 32,2656 27115 LEMPREC
034380,000091: 32,2657 77331 SSP VLOAD
034381,000092: 32,2660 03647 NIGNLOOP
034382,000093: 32,2661 00050 40D
034383,000094: 32,2662 06503 UNITX
034384,000095: 32,2663 26572 STOVL CG
034385,000096: 32,2664 06501 UNITY
034386,000097: 32,2665 26600 STOVL CG +6
034387,000098: 32,2666 06477 UNITZ
034388,000099: 32,2667 16606 STODL CG +14
034389,000100: 32,2670 25066 99999CON
034390,000101: 32,2671 27665 STOVL DELTAH # INITIALIZE DELTAH FOR V16N68 DISPLAY
034391,000102: 32,2672 06505 ZEROVECS
034392,000103: 32,2673 17252 STODL UNFC/2 # INITIALIZE TRIM VELOCITY CORRECTION TERM
034393,000104: 32,2674 06505 HI6ZEROS
034394,000105: 32,2675 17643 STODL TTF/8
034395,000106: 32,2676 25074 HLROFFF
034396,000107: 32,2677 03452 STORE HLROFF # LR CUTOFF ALTITUDE.
034397,000108: 32,2700 77745 IGNALOOP DLOAD
034398,000109: 32,2701 00015 TAT
034399,000110: 32,2702 27561 STOVL PIPTIME1
034400,000111: 32,2703 00017 RATT1
034401,000112: 32,2704 64312 VSL4 MXV
034402,000113: 32,2705 01732 REFSMMAT
034403,000114: 32,2706 37521 STCALL R
034404,000115: 32,2707 67037 MUNGRAV
034405,000116: 32,2710 35236 STCALL GDT/2
034406,000117: 32,2711 62417 ?GUIDSUB # WHICH DELIVERS N PASSES OF GUIDANCE
034407,000118:
034408,000119: # DDUMCALC IS PROGRAMMED AS FOLLOWS:-
034409,000120: # 2 -
034410,000121: # (RIGNZ - RGU )/16 + 16(RGU )KIGNY/B8 + (RGU - RIGNX)KIGNX/B4 + (ABVAL(VGU) - VIGN)KIGNV/B4
034411,000122: # 2 1 0
034412,000123: # DDUM = -------------------------------------------------------------------------------------------
034413,000124:
![]() |
Page 783 |
034415,000126: # 10
034416,000127: # 2 (VGU - 16 VGU KIGNX/B4)
034417,000128: # 2 0
034418,000129:
034419,000130: # THE NUMERATOR IS SCALED IN METERS AT 2(28). THE DENOMINATOR IS A VELOCITY IN UNITS OF 2(10) M/CS.
034420,000131: # THE QUOTIENT IS THUS A TIME IN UNITS OF 2(18) CENTISECONDS. THE FINAL SHIFT RESCALES TO UNITS OF 2(28) CS.
034421,000132: # THERE IS NO DAMPING FACTOR. THE CONSTANTS KIGNX/B4, KIGNY/B8 AND KIGNV/B4 ARE ALL NEGATIVE IN SIGN.
034422,000133:
034423,000134: 32,2712 55646 DDUMCALC TS NIGNLOOP
034424,000135: 32,2713 06060 TC INTPRET
034425,000136: 32,2714 57345 DLOAD DMPR # FORM DENOMINATOR FIRST
034426,000137: 32,2715 03627 VGU
034427,000138: 32,2716 02465 KIGNX/B4
034428,000139: 32,2717 44232 SL4R BDSU
034429,000140: 32,2720 03633 VGU +4
034430,000141: 32,2721 45325 PDDL DSU
034431,000142: 32,2722 02463 RIGNZ
034432,000143: 32,2723 02630 RGU +4
034433,000144: 32,2724 65222 SR4R PDDL
034434,000145: 32,2725 02626 RGU +2
034435,000146: 32,2726 57316 DSQ DMPR
034436,000147: 32,2727 02467 KIGNY/B8
034437,000148: 32,2730 65232 SL4R PDDL
034438,000149: 32,2731 02624 RGU
034439,000150: 32,2732 57225 DSU DMPR
034440,000151: 32,2733 02461 RIGNX
034441,000152: 32,2734 02465 KIGNX/B4
034442,000153: 32,2735 51515 PDVL ABVAL
034443,000154: 32,2736 03627 VGU
034444,000155: 32,2737 57225 DSU DMPR
034445,000156: 32,2740 02457 VIGN
034446,000157: 32,2741 02471 KIGNV/B4
034447,000158: 32,2742 43215 DAD DAD
034448,000159: 32,2743 56215 DAD DDV
034449,000160: 32,2744 77661 SRR
034450,000161: 32,2745 21613 10D
034451,000162:
034452,000163: 32,2746 43206 PUSH DAD
034453,000164: 32,2747 03561 PIPTIME1
034454,000165: 32,2750 14041 STODL TDEC1 # STORE NEW GUESS FOR NEXT INTEGRATION
034455,000166: 32,2751 45246 ABS DSU
034456,000167: 32,2752 25072 DDUMCRIT
034457,000168: 32,2753 45040 BMN CALL
034458,000169: 32,2754 64773 DDUMGOOD
034459,000170: 32,2755 27447 INTSTALL
034460,000171: 32,2756 43014 SET SET
034461,000172: 32,2757 01473 INTYPFLG
034462,000173: 32,2760 00063 MOONFLAG
034463,000174: 32,2761 77745 DLOAD
034464,000175: 32,2762 03561 PIPTIME1
034465,000176:
![]() |
Page 784 |
034467,000178: 32,2763 25517 STOVL TET # HOPEFULLY ?GUIDSUB DID NOT
034468,000179: 32,2764 00017 RATT1 # CLOBBER RATT1 AND VATT1
034469,000180: 32,2765 25535 STOVL RCV
034470,000181: 32,2766 00025 VATT1
034471,000182: 32,2767 35543 STCALL VCV
034472,000183: 32,2770 27145 INTEGRVS
034473,000184: 32,2771 77650 GOTO
034474,000185: 32,2772 64700 IGNALOOP
034475,000186:
034476,000187: 32,2773 53575 DDUMGOOD VLOAD UNIT # INITIALIZE KALCMANU
034477,000188: 32,2774 03252 UNFC/2
034478,000189: 32,2775 27773 STOVL POINTVSM
034479,000190: 32,2776 06503 UNITX
034480,000191: 32,2777 27765 STOVL SCAXIS # NEXT COMPUTE DISTANCE LANDING SITE IS
034481,000192: 32,3000 03527 V # OUT OF LM'S ORBITAL PLANE AT IGNITION:
034482,000193: 32,3001 53435 VXV UNIT # SIGN IS + IF LANDING SITE IS TO THE
034483,000194: 32,3002 03521 R # RIGHT, NORTH; - IF TO THE LEFT, SOUTH.
034484,000195: 32,3003 72441 DOT SL1
034485,000196: 32,3004 03635 LAND
034486,000197: 32,3005 16614 STODL OUTOFPLN # NEXT COMPUTE TIG
034487,000198: 32,3006 03423 ZOOMTIME
034488,000199: 32,3007 44261 SR BDSU
034489,000200: 32,3010 20617 14D
034490,000201: 32,3011 00041 TDEC1
034491,000202: 32,3012 03442 STORE TIG
034492,000203: 32,3013 77776 EXIT
034493,000204: # ****************************************
034494,000205:
034495,000206: 32,3014 05355 IGNALGRT TC PHASCHNG # PREVENT REPEATING IGNALG
034496,000207: 32,3015 04024 OCT 04024
034497,000208:
034498,000209: 32,3016 44353 ASTNCLOK CS ASTNDEX
034499,000210: 32,3017 04607 TC BANKCALL
034500,000211: 32,3020 74663 CADR STCLOK2
034501,000212: 32,3021 15146 TCF ENDOFJOB # RETURN IN NEW JOB AND IN EBANK FIVE
034502,000213:
034503,000214: 32,3022 35007 ASTNRET CAF EBANK7
034504,000215: 32,3023 54003 TS EBANK
034505,000216:
034506,000217: 32,3024 00004 INHINT
034507,000218: 32,3025 04665 TC IBNKCALL
034508,000219: 32,3026 40143 CADR PFLITEDB
034509,000220: 32,3027 00003 RELINT
034510,000221:
034511,000222: 32,3030 04607 TC BANKCALL
034512,000223: 32,3031 54125 CADR R60LEM
034513,000224:
034514,000225: 32,3032 05355 TC PHASCHNG # PREVENT RECALLING R60
034515,000226: 32,3033 04024 OCT 04024
034516,000227:
![]() |
Page 785 |
034518,000229: 32,3034 34737 P63SPOT3 CA BIT6 # IS THE LR ANTENNA IN POSITION 1 YET
034519,000230: 32,3035 00006 EXTEND
034520,000231: 32,3036 02033 RAND CHAN33
034521,000232: 32,3037 00006 EXTEND
034522,000233: 32,3040 13046 BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
034523,000234:
034524,000235: 32,3041 33064 CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
034525,000236: 32,3042 04607 TC BANKCALL # SILLY THING AROUND
034526,000237: 32,3043 20635 CADR GOPERF1
034527,000238: 32,3044 16001 TCF GOTOPOOH # TERMINATE
034528,000239: 32,3045 13034 TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
034529,000240:
034530,000241: 32,3046 34743 P63SPOT4 CAF TWO # ENTER INITIALIZE LANDING RADAR
034531,000242: 32,3047 55674 TS STILBADH
034532,000243: 32,3050 55675 TS STILBADV
034533,000244: 32,3051 34746 CAF ZERO
034534,000245: 32,3052 55670 TS LRLCTR
034535,000246: 32,3053 55672 TS LRMCTR
034536,000247: 32,3054 55671 TS LRRCTR
034537,000248: 32,3055 55673 TS LRSCTR
034538,000249: 32,3056 55462 TS VSELECT
034539,000250:
034540,000251: 32,3057 34742 CA FOUR # INITIALIZE COUNTER TO ISSUE 511
034541,000252: 32,3060 55622 TS 511CTR # ALARM AFTER 10 SECONDS
034542,000253:
034543,000254: 32,3061 04626 TC POSTJUMP # OFF TO SEE THE WIZARD...
034544,000255: 32,3062 74130 CADR BURNBABY
034545,000256:
034546,000257: # ----------------------------------------
034547,000258:
034548,000259: # CONSTANTS FOR P63LM AND IGNALG
034549,000260:
034550,000261: 32,3063 02100 P63ADRES GENADR P63TABLE
034551,000262:
034552,000263: 32,3064 4353 ASTNDEX = MD1 # OCT 25; INDEX FOR CLOKTASK
034553,000264:
034554,000265: 32,3064 00500 CODE500 OCT 00500
034555,000266:
034556,000267: 32,3065 00035 30373 99999CON 2DEC 30479.7 B-24
034557,000268:
034558,000269: 32,3067 00004 01610 GUIDDURN 2DEC +66440 B-28 # GUIDDURN +6.64400314E+ 2
034559,000270: 32,3071 00000 00010 DDUMCRIT 2DEC +8 B-28 # CRITERION FOR IGNALG CONVERGENCE
034560,000271:
![]() |
Page 786 |
034562,000273: 32,3073 00364 HLROFFF DEC 15.24 B-10 # LOADED DP, BUT LOW ORDER DOESN'T MATTER
034563,000274: # ----------------------------------------
034564,000275:
![]() |
Page 787 |
034566,000277: # ****************************************
034567,000278: # P68: LANDING CONFIRMATION
034568,000279: # ****************************************
034569,000280:
034570,000281: 34,3271 BANK 34
034571,000282: 34,2000 SETLOC F2DPS*34
034572,000283: 34,2000 BANK
034573,000284:
034574,000285: 34,3271 COUNT* $$/P6567
034575,000286:
034576,000287: 34,3271 05355 LANDJUNK TC PHASCHNG
034577,000288: 34,3272 04024 OCT 04024
034578,000289:
034579,000290: 34,3273 00004 INHINT
034580,000291: 34,3274 04607 TC BANKCALL # ZERO ATTITUDE ERROR
034581,000292: 34,3275 40154 CADR ZATTEROR
034582,000293:
034583,000294: 34,3276 06060 TC INTPRET # TO INTERPRETIVE AS TIME IS NOT CRITICAL
034584,000295: 34,3277 77614 SET # PREVENT RCS JET FIRINGS IF MODE CONT IS
034585,000296: 34,3300 06460 PULSEFLG # IN ATT HOLD
034586,000297: 34,3301 43014 SET CLEAR
034587,000298: 34,3302 04067 SURFFLAG
034588,000299: 34,3303 04666 LETABORT
034589,000300: 34,3304 77214 SET VLOAD
034590,000301: 34,3305 05062 APSFLAG
034591,000302: 34,3306 01220 RN
034592,000303: 34,3307 16032 STODL ALPHAV
034593,000304: 34,3310 01234 PIPTIME
034594,000305: 34,3311 45014 SET CALL
034595,000306: 34,3312 01463 LUNAFLAG
034596,000307: 34,3313 26406 LAT-LONG
034597,000308: 34,3314 77201 SETPD VLOAD # COMPUTE RLS AND STORE IT AWAY
034598,000309: 34,3315 00001 0
034599,000310: 34,3316 01220 RN
034600,000311: 34,3317 65352 VSL2 PDDL
034601,000312: 34,3320 01234 PIPTIME
034602,000313: 34,3321 45006 PUSH CALL
034603,000314: 34,3322 51644 R-TO-RP
034604,000315: 34,3323 02021 STORE RLS
034605,000316: 34,3324 77776 EXIT
034606,000317: 34,3325 33345 CAF V06N43* # ASTRONAUT: NOW LOOK WHERE YOU ENDED UP
034607,000318: 34,3326 04607 TC BANKCALL
034608,000319: 34,3327 20471 CADR GOFLASH
034609,000320: 34,3330 16001 TCF GOTOPOOH # TERMINATE
034610,000321: 34,3331 13333 TCF +2 # PROCEED
034611,000322: 34,3332 13325 TCF -5 # RECYCLE
034612,000323:
034613,000324: 34,3333 06060 TC INTPRET
034614,000325: 34,3334 64375 VLOAD MXV # INITIALIZE GSAV AND (USING REFMF)
034615,000326:
![]() |
Page 788 |
034617,000328: 34,3335 01220 RN # YNBSAV, ZNBSAV AND ATTFLAG FOR P57
034618,000329: 34,3336 01732 REFSMMAT
034619,000330: 34,3337 45056 UNIT CALL
034620,000331: 34,3340 47640 CDU*SMNB
034621,000332: 34,3341 36222 STCALL GSAV
034622,000333: 34,3342 33470 REFMF
034623,000334: 34,3343 77776 EXIT
034624,000335:
034625,000336: 34,3344 16001 TCF GOTOPOOH # ASTRONAUT: PLEASE SELECT P57
034626,000337:
034627,000338:
034628,000339: 34,3345 01453 V06N43* VN 0643
End of include-file THE_LUNAR_LANDING.agc. Parent file is MAIN.agc