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. |
036639,000002: ## Copyright: Public domain.
036640,000003: ## Filename: P70-P71.agc
036641,000004: ## Purpose: A section of Luminary revision 210.
036642,000005: ## It is part of the source code for the Lunar Module's (LM)
036643,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
036644,000007: ## This file is intended to be a faithful transcription, except
036645,000008: ## that the code format has been changed to conform to the
036646,000009: ## requirements of the yaYUL assembler rather than the
036647,000010: ## original YUL assembler.
036648,000011: ## Reference: pp. 831-838
036649,000012: ## Assembler: yaYUL
036650,000013: ## Contact: Ron Burkey <info@sandroid.org>.
036651,000014: ## Website: www.ibiblio.org/apollo/index.html
036652,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
036653,000016: ## 2016-12-01 RSB Completed transcription.
036654,000017: ## 2016-12-07 HG Fix pseudo operator ADDRESS -> ADRES
036655,000018: ## 2016-12-08 HG Fix operand LANDISP -> LANADISP
036656,000019: ## 2016-12-25 RSB Comment-text proofed using ProoferComments
036657,000020: ## and corrected errors found.
036658,000021: ## 2017-03-16 RSB Comment-text fixes identified in 5-way
036659,000022: ## side-by-side diff of Luminary 69/99/116/131/210.
036660,000023:
![]() |
Page 831 |
036662,000025: 21,2042 BANK 21
036663,000026: 21,2000 SETLOC R11
036664,000027: 21,2000 BANK
036665,000028:
036666,000029: 21,2042 E7,1515 EBANK= DVCNTR
036667,000030: 21,2042 COUNT* $$/R11
036668,000031:
036669,000032: 21,2042 40103 R10,R11 CS FLAGWRD7 # IS SERVICER STILL RUNNING?
036670,000033: 21,2043 74740 MASK AVEGFBIT
036671,000034: 21,2044 10000 CCS A
036672,000035: 21,2045 15263 TCF TASKOVER # LET AVGEND TAKE CARE OF GROUP 2.
036673,000036: 21,2046 11055 CCS PIPCTR
036674,000037: 21,2047 12054 TCF STORPCTR
036675,000038: 21,2050 00006 EXTEND
036676,000039: 21,2051 34746 DCA NEG0
036677,000040: 21,2052 52754 DXCH -PHASE2
036678,000041: 21,2053 12060 TCF R10,R11A
036679,000042:
036680,000043: 21,2054 55722 STORPCTR TS PIPCTR1
036681,000044:
036682,000045: 21,2055 36010 CAF OCT31
036683,000046: 21,2056 05175 TC TWIDDLE
036684,000047: 21,2057 02042 ADRES R10,R11
036685,000048: 21,2060 34744 R10,R11A CAF HFLSHBIT
036686,000049: 21,2061 70107 FLASHH? MASK FLGWRD11
036687,000050: 21,2062 00006 EXTEND
036688,000051: 21,2063 12067 BZF FLASHV? # H FLASH OFF, SO LEAVE ALONE
036689,000052:
![]() |
In the assembly-listing hardcopy, there is a handwritten note, reading "page 541". |
036691,000054: 21,2064 34740 CA HLITE
036692,000055: 21,2065 54001 TS L
036693,000056: 21,2066 04577 TC FLIP # FLIP H LITE
036694,000057:
036695,000058: 21,2067 34743 FLASHV? CA VFLSHBIT # VFLASHBIT MUST BE BIT 2.
036696,000059: 21,2070 70107 MASK FLGWRD11
036697,000060: 21,2071 00006 EXTEND
036698,000061: 21,2072 12076 BZF 10,11 # VFLASH OFF
036699,000062:
036700,000063: 21,2073 34742 CA VLITE
036701,000064: 21,2074 54001 TS L
036702,000065: 21,2075 04577 TC FLIP # FLIP V LITE
036703,000066:
036704,000067:
036705,000068: 21,2076 30105 10,11 CA FLAGWRD9 # IS THE LETABORT FLAG SET ?
036706,000069: 21,2077 74734 MASK LETABBIT
036707,000070: 21,2100 00006 EXTEND
036708,000071: 21,2101 12170 BZF LANADISP # NO. PROCEED TO R10.
036709,000072:
036710,000073: 21,2102 41010 P71NOW? CS MODREG # YES. ARE WE IN P71 NOW?
036711,000074: 21,2103 62147 AD 1DEC71
036712,000075: 21,2104 00006 EXTEND
![]() |
Page 832 |
036714,000077: 21,2105 12170 BZF LANADISP # YES. PROCEED TO R10.
036715,000078:
036716,000079: 21,2106 34744 CAF BIT1
036717,000080: 21,2107 70374 MASK CHANBKUP
036718,000081: 21,2110 10000 CCS A
036719,000082: 21,2111 12170 TCF LANADISP # IGNORE CHAN BITS - ASSUME NO ABORT
036720,000083:
036721,000084: 21,2112 00006 EXTEND # NO. IS AN ABORT STAGE COMMANDED?
036722,000085: 21,2113 00030 READ CHAN30
036723,000086: 21,2114 40000 COM
036724,000087: 21,2115 54001 TS L
036725,000088: 21,2116 74741 MASK BIT4
036726,000089: 21,2117 10000 CCS A
036727,000090: 21,2120 12136 TCF P71A # YES.
036728,000091:
036729,000092: 21,2121 41010 P70NOW? CS MODREG # NO. ARE WE IN P70 NOW?
036730,000093: 21,2122 62146 AD 1DEC70
036731,000094: 21,2123 00006 EXTEND
036732,000095: 21,2124 12170 BZF LANADISP # YES. PROCEED TO R10.
036733,000096:
036734,000097: 21,2125 30001 CA L # NO. IS AN ABORT COMMANDED?
036735,000098: 21,2126 74744 MASK BIT1
036736,000099: 21,2127 10000 CCS A
036737,000100: 21,2130 12133 TCF P70A # YES.
036738,000101: 21,2131 12170 TCF LANADISP # NO. PROCEED TO R10.
036739,000102:
036740,000103: 21,2132 COUNT* $$/P70
036741,000104:
036742,000105: 21,2132 02150 P70 TC LEGAL?
036743,000106: 21,2133 44746 P70A CS ZERO
036744,000107: 21,2134 12137 TCF +3
036745,000108: 21,2135 02150 P71 TC LEGAL?
036746,000109: 21,2136 34743 P71A CAF TWO
036747,000110: 21,2137 54002 +3 TS Q
036748,000111: 21,2140 00004 INHINT
036749,000112: 21,2141 00006 EXTEND
036750,000113: 21,2142 32145 DCA CNTABTAD
036751,000114: 21,2143 52006 DTCB
036752,000115:
036753,000116: 21,2144 E7,1515 EBANK= DVCNTR
036754,000117: 21,2144 03417 12067 CNTABTAD 2CADR CONTABRT
036755,000118:
036756,000119: 21,2146 00106 1DEC70 DEC 70 B-14
036757,000120: 21,2147 00107 1DEC71 DEC 71 B-14
036758,000121:
036759,000122: 05,3417 BANK 05
036760,000123: 05,2000 SETLOC ABORTS1
036761,000124: 05,2000 BANK
036762,000125: 05,3417 COUNT* $$/P70
036763,000126:
![]() |
Page 833 |
036765,000128: 05,3417 33422 CONTABRT CAF ABRTJADR
036766,000129: 05,3420 54017 TS BRUPT
036767,000130: 05,3421 50017 RESUME
036768,000131:
036769,000132: 05,3422 13423 ABRTJADR TCF ABRTJASK
036770,000133:
036771,000134: 05,3423 33503 ABRTJASK CAF OCTAL27
036772,000135: 05,3424 60002 AD Q
036773,000136: 05,3425 54001 TS L
036774,000137: 05,3426 40000 COM
036775,000138: 05,3427 52760 DXCH -PHASE4
036776,000139: 05,3430 50002 INDEX Q
036777,000140: 05,3431 33502 CAF MODE70
036778,000141: 05,3432 55010 TS MODREG
036779,000142:
036780,000143: 05,3433 55162 TS DISPDEX # INSURE DISPDEX IS POSITIVE.
036781,000144:
036782,000145: 05,3434 10002 CCS Q # SET APSFLAG IF P71.
036783,000146: 05,3435 40106 CS FLGWRD10 # SET APSFLAG PRIOR TO THE ENEMA.
036784,000147: 05,3436 74730 MASK APSFLBIT
036785,000148: 05,3437 26106 ADS FLGWRD10
036786,000149: 05,3440 43505 CS DAPBITS # DAPBITS = OCT 40640 = BITS 6,8,9,15
036787,000150: 05,3441 70111 MASK DAPBOOLS # RESET ULLAGE,DRIFT,XOVRIINH,AND PULSES
036788,000151: 05,3442 54111 TS DAPBOOLS
036789,000152:
036790,000153: 05,3443 33506 CAF 1DEGDB # INSURE DAP DEADBAND IS SET TO 1 DEGREE
036791,000154: 05,3444 55343 TS DB
036792,000155:
036793,000156: 05,3445 40101 CS FLAGWRD5 # SET ENGONFLG.
036794,000157: 05,3446 74736 MASK ENGONBIT
036795,000158: 05,3447 26101 ADS FLAGWRD5
036796,000159:
036797,000160: 05,3450 44346 CS PRIO30 # INSURE THAT THE ENGINE IS ON, IF ARMED.
036798,000161: 05,3451 00006 EXTEND
036799,000162: 05,3452 02011 RAND DSALMOUT
036800,000163: 05,3453 64730 AD BIT13
036801,000164: 05,3454 00006 EXTEND
036802,000165: 05,3455 01011 WRITE DSALMOUT
036803,000166:
036804,000167: 05,3456 34726 CAF LRBYBIT # TERMINATE R12.
036805,000168: 05,3457 54107 TS FLGWRD11
036806,000169:
036807,000170: 05,3460 40074 CS FLAGWRD0 # SIGNAL THE LAD TO DISPLAY LATVEL IN
036808,000171: 05,3461 74743 MASK R10FLBIT # INERTIAL COORDINATES AND FORVEL ZERO
036809,000172: 05,3462 26074 ADS FLAGWRD0
036810,000173:
036811,000174: 05,3463 00006 EXTEND # LOAD TEVENT FOR THE DOWNLINK.
036812,000175: 05,3464 30025 DCA TIME2
036813,000176: 05,3465 53342 DXCH TEVENT
036814,000177:
![]() |
Page 834 |
036816,000179: 05,3466 00006 EXTEND
036817,000180: 05,3467 33501 DCA SVEXITAD
036818,000181: 05,3470 53252 DXCH AVGEXIT
036819,000182:
036820,000183: 05,3471 02657 TC ABTKLEAN # KILL GROUPS 1,3, AND 6.
036821,000184:
036822,000185: 05,3472 36266 CAF THREE # SET UP 4.3SPOT FOR GOABORT
036823,000186: 05,3473 54001 TS L
036824,000187: 05,3474 40000 COM
036825,000188: 05,3475 52760 DXCH -PHASE4
036826,000189:
036827,000190: 05,3476 04626 TC POSTJUMP
036828,000191: 05,3477 12767 CADR ENEMA
036829,000192:
036830,000193: 05,3500 E7,1515 EBANK= DVCNTR
036831,000194: 05,3500 03656 64067 SVEXITAD 2CADR SERVEXIT
036832,000195:
036833,000196: 05,3502 00106 MODE70 DEC 70 B-14
036834,000197: 05,3503 00027 OCTAL27 OCT 27
036835,000198: 05,3504 00107 MODE71 DEC 71 B-14
036836,000199:
036837,000200: 05,3505 40640 DAPBITS OCT 40640
036838,000201:
036839,000202: 05,3506 00554 1DEGDB OCT 00554
036840,000203: 32,3443 BANK 32
036841,000204: 32,2000 SETLOC ABORTS
036842,000205: 32,2000 BANK
036843,000206:
036844,000207: 32,3443 COUNT* $$/P70
036845,000208:
036846,000209: 32,3443 34742 GOABORT CAF FOUR
036847,000210: 32,3444 55515 TS DVCNTR
036848,000211:
036849,000212: 32,3445 33653 CAF WHICHADR
036850,000213: 32,3446 55455 TS WHICH
036851,000214:
036852,000215: 32,3447 06060 TC INTPRET
036853,000216: 32,3450 43014 CLEAR CLEAR
036854,000217: 32,3451 04665 FLRCS
036855,000218: 32,3452 04265 FLUNDISP
036856,000219: 32,3453 43014 CLEAR SET
036857,000220: 32,3454 03670 IDLEFLAG
036858,000221: 32,3455 06464 ACC4-2FL
036859,000222: 32,3456 45014 SET CALL
036860,000223: 32,3457 04462 P7071FLG
036861,000224: 32,3460 61063 INITCDUW
036862,000225: 32,3461 77776 EXIT
036863,000226:
036864,000227: 32,3462 05323 TC CHECKMM
036865,000228: 32,3463 00106 70DEC DEC 70 B-14
![]() |
Page 835 |
036867,000230: 32,3464 13577 TCF P71RET
036868,000231:
036869,000232: 32,3465 06060 P70INIT TC INTPRET
036870,000233: 32,3466 77624 CALL
036871,000234: 32,3467 65626 TGOCOMP
036872,000235: 32,3470 54345 DLOAD SL
036873,000236: 32,3471 34003 MDOTDPS
036874,000237: 32,3472 20205 4D
036875,000238: 32,3473 77665 BDDV
036876,000239: 32,3474 01244 MASS
036877,000240: 32,3475 16262 STODL TBUP
036878,000241: 32,3476 01244 MASS
036879,000242: 32,3477 70471 DDV SR1
036880,000243: 32,3500 16015 K(1/DV)
036881,000244: 32,3501 03635 STORE 1/DV1
036882,000245: 32,3502 03637 STORE 1/DV2
036883,000246: 32,3503 03641 STORE 1/DV3
036884,000247: 32,3504 77665 BDDV
036885,000248: 32,3505 25652 K(AT)
036886,000249: 32,3506 16254 STODL AT
036887,000250: 32,3507 34015 100PCTTO
036888,000251: 32,3510 02260 STORE TTO
036889,000252: 32,3511 57535 SLOAD DCOMP
036890,000253: 32,3512 26002 DPSVEX
036891,000254: 32,3513 77702 SR2
036892,000255: 32,3514 36256 STCALL VE
036893,000256: 32,3515 60267 COMMINIT
036894,000257: 32,3516 77745 INJTARG DLOAD
036895,000258: 32,3517 02564 ABTRDOT
036896,000259: 32,3520 36264 STCALL RDOTD # INITIALIZE RDOTD.
036897,000260: 32,3521 57315 YCOMP # COMPUTE Y
036898,000261: 32,3522 45246 ABS DSU
036899,000262: 32,3523 02562 YLIM # /Y/-DYMAX
036900,000263: 32,3524 75240 BMN SIGN # IF <0, XR<.5DEG, LEAVE YCO AT 0
036901,000264: 32,3525 65530 YOK # IF >0, FIX SIGN OF DEFICIT, THIS IS YCO.
036902,000265: 32,3526 02326 Y
036903,000266: 32,3527 03633 STORE YCO
036904,000267: 32,3530 45345 YOK DLOAD DSU
036905,000268: 32,3531 03633 YCO
036906,000269: 32,3532 02326 Y
036907,000270: 32,3533 77661 SR
036908,000271: 32,3534 20606 5D
036909,000272: 32,3535 03643 STORE XRANGE
036910,000273: 32,3536 45014 SET CALL
036911,000274: 32,3537 04461 FLVR
036912,000275: 32,3540 71650 THETCOMP
036913,000276: 32,3541 51025 DSU BPL
036914,000277: 32,3542 02556 THETCRIT
036915,000278: 32,3543 65547 +4
036916,000279: 32,3544 52175 VLOAD GOTO
![]() |
Page 836 |
036918,000281: 32,3545 02546 J1PARM
036919,000282: 32,3546 65552 STORPARM
036920,000283: 32,3547 43175 +4 VLOAD SET # IF J2 IS USED, SET THE
036921,000284: 32,3550 02552 J2PARM # ABORT TARGETING FLAG
036922,000285: 32,3551 04470 ABTTGFLG
036923,000286: 32,3552 16572 STORPARM STODL JPARM
036924,000287: 32,3553 03631 RCO
036925,000288: 32,3554 02576 STORE RP
036926,000289: 32,3555 77414 SET EXIT
036927,000290: 32,3556 04471 ROTFLAG
036928,000291:
036929,000292: 32,3557 03635 UPTHROT TC THROTUP
036930,000293:
036931,000294: 32,3560 05355 TC PHASCHNG
036932,000295: 32,3561 04024 OCT 04024
036933,000296:
036934,000297: 32,3562 05506 TC UPFLAG
036935,000298: 32,3563 00216 ADRES FLAP
036936,000299:
036937,000300: 32,3564 04607 UPTHROT1 TC BANKCALL # VERIFY THAT THE PANEL SWITCHES
036938,000301: 32,3565 73710 CADR P40AUTO # ARE PROPERLY SET.
036939,000302:
036940,000303: 32,3566 03635 TC THROTUP
036941,000304:
036942,000305: 32,3567 35020 CAF PRIO17 # LET SERVICER FINISH BEFORE CONNECTING
036943,000306: 32,3570 05137 TC PRIOCHNG # ASCENT GUIDANCE EQUATIONS.
036944,000307:
036945,000308: 32,3571 00006 EXTEND
036946,000309: 32,3572 33655 DCA ATMAGAD
036947,000310: 32,3573 53252 DXCH AVGEXIT
036948,000311:
036949,000312: 32,3574 05355 GRP4OFF TC PHASCHNG # TERMINATE USE OF GROUP 4.
036950,000313: 32,3575 00004 OCT 00004
036951,000314:
036952,000315: 32,3576 15146 TCF ENDOFJOB
036953,000316:
036954,000317: 32,3577 05520 P71RET TC DOWNFLAG
036955,000318: 32,3600 00215 ADRES LETABORT
036956,000319:
036957,000320: 32,3601 36000 CAF THRESH2 # SET DVMON THRESHOLD TO THE ASCENT VALUE.
036958,000321: 32,3602 55250 TS DVTHRUSH
036959,000322:
036960,000323: 32,3603 06060 TC INTPRET
036961,000324: 32,3604 77624 CALL
036962,000325: 32,3605 60243 P12INIT
036963,000326: 32,3606 45014 BON CALL
036964,000327: 32,3607 04707 FLAP
036965,000328: 32,3610 65614 OLDTIME
036966,000329: 32,3611 65626 TGOCOMP # IF FLAP=0, TGO=T-TIG
036967,000330: 32,3612 77650 GOTO
![]() |
Page 837 |
036969,000332: 32,3613 65516 INJTARG
036970,000333: 32,3614 72545 OLDTIME DLOAD SL1 # IF FLAP=1,TGO=2 TGO
036971,000334: 32,3615 03517 TGO
036972,000335: 32,3616 03502 STORE TGO1
036973,000336: 32,3617 77776 EXIT
036974,000337:
036975,000338: 32,3620 05355 TC PHASCHNG
036976,000339: 32,3621 04024 OCT 04024
036977,000340:
036978,000341: 32,3622 00006 EXTEND
036979,000342: 32,3623 31502 DCA TGO1
036980,000343: 32,3624 53517 DXCH TGO
036981,000344: 32,3625 13564 TCF UPTHROT1
036982,000345:
036983,000346: # ************************************************************************
036984,000347:
036985,000348: 21,2150 BANK 21
036986,000349: 21,2000 SETLOC R11
036987,000350: 21,2000 BANK
036988,000351:
036989,000352: 21,2150 COUNT* $$/P70
036990,000353:
036991,000354: 21,2150 40774 LEGAL? CS MMNUMBER # IS THE DESIRED PGM ALREADY IN PROGRESS?
036992,000355: 21,2151 61010 AD MODREG
036993,000356: 21,2152 00006 EXTEND
036994,000357: 21,2153 12164 BZF ABORTALM
036995,000358:
036996,000359: 21,2154 40105 CS FLAGWRD9 # ARE THE ABORTS ENABLED?
036997,000360: 21,2155 74734 MASK LETABBIT
036998,000361: 21,2156 10000 CCS A
036999,000362: 21,2157 12164 TCF ABORTALM
037000,000363:
037001,000364: 21,2160 30103 CA FLAGWRD7 # IS SERVICER ON THE AIR?
037002,000365: 21,2161 74740 MASK AVEGFBIT
037003,000366: 21,2162 10000 CCS A
037004,000367: 21,2163 00002 TC Q # YES. ALL IS WELL.
037005,000368: 21,2164 04355 ABORTALM TC FALTON
037006,000369: 21,2165 04450 TC RELDSP
037007,000370: 21,2166 04626 TC POSTJUMP
037008,000371: 21,2167 21062 CADR PINBRNCH
037009,000372:
037010,000373: 32,3626 BANK 32
037011,000374: 32,2000 SETLOC ABORTS
037012,000375: 32,2000 BANK
037013,000376:
037014,000377: 32,3626 COUNT* $$/P70
037015,000378:
037016,000379: # ************************************************************************
037017,000380:
037018,000381: 32,3626 45234 TGOCOMP RTB DSU
![]() |
Page 838 |
037020,000383: 32,3627 21603 LOADTIME
037021,000384: 32,3630 03442 TIG
037022,000385: 32,3631 77661 SL
037023,000386: 32,3632 20214 11D
037024,000387: 32,3633 03517 STORE TGO
037025,000388: 32,3634 77616 RVQ
037026,000389:
037027,000390: # ************************************************************************
037028,000391:
037029,000392: 32,3635 34730 THROTUP CAF BIT13
037030,000393: 32,3636 54055 TS THRUST
037031,000394: 32,3637 34741 CAF BIT4
037032,000395: 32,3640 00006 EXTEND
037033,000396: 32,3641 05014 WOR CHAN14
037034,000397: 32,3642 00002 TC Q
037035,000398:
037036,000399: # ************************************************************************
037037,000400:
037038,000401: 32,3643 00000 01750 10SECS 2DEC 1000 B-28
037039,000402:
037040,000403: 32,3645 00021 33400 HINJECT 2DEC 18288 B-24 # 60,000 FEET EXPRESSED IN METERS.
037041,000404:
037042,000405: 32,3647 11021 00000 (TGO)A 2DEC 37000 B-17
037043,000406:
037044,000407: 32,3651 00507 25605 K(AT) 2DEC .02 # SCALING CONSTANT
037045,000408:
037046,000409: 32,3653 02114 WHICHADR REMADR ABRTABLE
037047,000410:
037048,000411: # ************************************************************************
037049,000412:
037050,000413: 32,3654 E7,1515 EBANK= DVCNTR
037051,000414: 32,3654 03375 70067 ATMAGAD 2CADR ATMAG
End of include-file P70-P71.agc. Parent file is MAIN.agc