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