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. |
030777,000002: ## Copyright: Public domain.
030778,000003: ## Filename: R31.agc
030779,000004: ## Purpose: A section of Luminary revision 210.
030780,000005: ## It is part of the source code for the Lunar Module's (LM)
030781,000006: ## Apollo Guidance Computer (AGC) for Apollo 15-17.
030782,000007: ## This file is intended to be a faithful transcription, except
030783,000008: ## that the code format has been changed to conform to the
030784,000009: ## requirements of the yaYUL assembler rather than the
030785,000010: ## original YUL assembler.
030786,000011: ## Reference: pp. 706-710
030787,000012: ## Assembler: yaYUL
030788,000013: ## Contact: Ron Burkey <info@sandroid.org>.
030789,000014: ## Website: www.ibiblio.org/apollo/index.html
030790,000015: ## Mod history: 2016-11-17 JL Created from Luminary131 version.
030791,000016: ## 2016-12-01 RSB Completed. Other than correction of typos
030792,000017: ## in comments and change in the positioning
030793,000018: ## of the constant V16N54, there were no changes.
030794,000019: ## 2016-12-01 HG fix operand V15N54 -> V16N54
030795,000020: ## remove V16N54 from its old location
030796,000021: ## 2016-12-25 RSB Comment-text proofed using ProoferComments
030797,000022: ## and corrected errors found.
030798,000023:
![]() |
Page 706 |
030800,000025: 40,3741 BANK 40
030801,000026: 40,2000 SETLOC R31LOC
030802,000027: 40,2000 BANK
030803,000028:
030804,000029: 40,3741 COUNT* $$/R31
030805,000030:
030806,000031: 40,3741 35006 R31CALL CAF PRIO3
030807,000032: 40,3742 05076 TC FINDVAC
030808,000033: 40,3743 E7,1470 EBANK= SUBEXIT
030809,000034: 40,3743 03113 76067 2CADR V83CALL
030810,000035:
030811,000036: 40,3745 05223 DSPDELAY TC FIXDELAY
030812,000037: 40,3746 00144 DEC 100 B-14
030813,000038: 40,3747 31043 CA EXTVBACT
030814,000039: 40,3750 74731 MASK BIT12
030815,000040: 40,3751 00006 EXTEND
030816,000041: 40,3752 13745 BZF DSPDELAY
030817,000042:
030818,000043: 40,3753 35010 CAF PRIO5
030819,000044: 40,3754 05063 TC NOVAC
030820,000045: 40,3755 E7,1611 EBANK= TSTRT
030821,000046: 40,3755 03761 60107 2CADR DISPN5X
030822,000047:
030823,000048: 40,3757 15263 TCF TASKOVER
030824,000049:
030825,000050: 40,3760 04066 V16N54 VN 1654
030826,000051: 40,3761 33760 DISPN5X CAF V16N54
030827,000052: 40,3762 04607 TC BANKCALL
030828,000053: 40,3763 20323 CADR GOMARKF
030829,000054: 40,3764 05565 TC B5OFF
030830,000055: 40,3765 05565 TC B5OFF
030831,000056: 40,3766 13761 TCF DISPN5X
030832,000057:
030833,000058: 37,3113 BANK 37
030834,000059: 37,2000 SETLOC R31
030835,000060: 37,2000 BANK
030836,000061:
030837,000062: 37,3113 40103 V83CALL CS FLAGWRD7 # TEST AVERAGE G FLAG
030838,000063: 37,3114 74740 MASK AVEGFBIT
030839,000064: 37,3115 00006 EXTEND
030840,000065: 37,3116 13371 BZF MUNG? # ON - TEST MUNFLAG
030841,000066:
030842,000067: 37,3117 40104 CS FLAGWRD8
030843,000068: 37,3120 74735 MASK SURFFBIT
030844,000069: 37,3121 00006 EXTEND
030845,000070: 37,3122 13375 BZF ONEBASE # ON SURFACE - BYPASS LEMPREC
030846,000071:
030847,000072: 37,3123 06060 TC INTPRET # EXTRAPOLATE BOTH STATE VECTORS
030848,000073: 37,3124 77634 RTB
![]() |
Page 707 |
030850,000075: 37,3125 21603 LOADTIME
030851,000076: 37,3126 34041 STCALL TDEC1
030852,000077: 37,3127 27115 LEMPREC # PRECISION BASE VECTOR FOR LM
030853,000078: 37,3130 77775 VLOAD
030854,000079: 37,3131 00017 RATT1
030855,000080: 37,3132 26161 STOVL BASETHP
030856,000081: 37,3133 00025 VATT1
030857,000082: 37,3134 16104 STODL BASETHV
030858,000083: 37,3135 00015 TAT
030859,000084: 37,3136 02113 DOCMBASE STORE BASETIME # PRECISION BASE VECTOR FOR CM
030860,000085: 37,3137 34041 STCALL TDEC1
030861,000086: 37,3140 27101 CSMPREC
030862,000087: 37,3141 77775 VLOAD
030863,000088: 37,3142 00017 RATT1
030864,000089: 37,3143 26131 STOVL BASEOTP
030865,000090: 37,3144 00025 VATT1
030866,000091: 37,3145 02172 STORE BASEOTV
030867,000092: 37,3146 77776 EXIT
030868,000093:
030869,000094: 37,3147 40103 REV83 CS FLAGWRD7
030870,000095: 37,3150 74740 MASK AVEGFBIT
030871,000096: 37,3151 00006 EXTEND
030872,000097: 37,3152 13320 BZF GETRVN # IF AVEGFLAG SET, USE RN,VN
030873,000098:
030874,000099: 37,3153 40104 CS FLAGWRD8
030875,000100: 37,3154 74735 MASK SURFFBIT
030876,000101: 37,3155 00006 EXTEND
030877,000102: 37,3156 13362 BZF R31SURF # IF ON SURFACE, USE LEMAREC
030878,000103:
030879,000104: 37,3157 06060 TC INTPRET # DO CONIC EXTRAPOLATION FOR BOTH VEHICLES
030880,000105: 37,3160 77634 RTB
030881,000106: 37,3161 21603 LOADTIME
030882,000107: 37,3162 34041 STCALL TDEC1
030883,000108: 37,3163 27447 INTSTALL
030884,000109: 37,3164 43175 VLOAD CLEAR
030885,000110: 37,3165 02161 BASETHP
030886,000111: 37,3166 00263 MOONFLAG
030887,000112: 37,3167 25535 STOVL RCV
030888,000113: 37,3170 02104 BASETHV
030889,000114: 37,3171 15543 STODL VCV
030890,000115: 37,3172 02113 BASETIME
030891,000116: 37,3173 43014 BOF SET # GET APPROPRIATE MOONFLAG SETTING
030892,000117: 37,3174 04344 MOONTHIS
030893,000118: 37,3175 77177 +2
030894,000119: 37,3176 00063 MOONFLAG
030895,000120: 37,3177 77614 SET
030896,000121: 37,3200 01473 INTYPFLG # CONIC EXTRAP.
030897,000122: 37,3201 35517 STCALL TET
030898,000123: 37,3202 27145 INTEGRVS # INTEGRATION --- AT LAST---
030899,000124: 37,3203 77775 OTHCONIC VLOAD
![]() |
Page 708 |
030901,000126: 37,3204 00001 RATT
030902,000127: 37,3205 26200 STOVL RONE
030903,000128: 37,3206 00007 VATT
030904,000129: 37,3207 36206 STCALL VONE # GET SET FOR CONIC EXTRAP.,OTHER.
030905,000130: 37,3210 27447 INTSTALL
030906,000131: 37,3211 71214 SET DLOAD
030907,000132: 37,3212 01473 INTYPFLG
030908,000133: 37,3213 00015 TAT
030909,000134: 37,3214 00041 OTHINT STORE TDEC1
030910,000135: 37,3215 43175 VLOAD CLEAR
030911,000136: 37,3216 02131 BASEOTP
030912,000137: 37,3217 00263 MOONFLAG
030913,000138: 37,3220 25535 STOVL RCV
030914,000139: 37,3221 02172 BASEOTV
030915,000140: 37,3222 15543 STODL VCV
030916,000141: 37,3223 02113 BASETIME
030917,000142: 37,3224 43014 BOF SET
030918,000143: 37,3225 04344 MOONTHIS
030919,000144: 37,3226 77230 +2
030920,000145: 37,3227 00063 MOONFLAG
030921,000146: 37,3230 35517 STCALL TET
030922,000147: 37,3231 27145 INTEGRVS
030923,000148: 37,3232 52375 COMPDISP VLOAD VSU
030924,000149: 37,3233 00001 RATT
030925,000150: 37,3234 02200 RONE
030926,000151: 37,3235 65234 RTB PDDL
030927,000152: 37,3236 21722 NORMUNX1 # UNIT(RANGE) TO PD 0-5
030928,000153: 37,3237 00045 36D
030929,000154: 37,3240 77657 SL* # RESCALE AFTER NORMUNIT
030930,000155: 37,3241 20201 0,1
030931,000156: 37,3242 26214 STOVL RANGE # SCALED 2(29)M
030932,000157: 37,3243 00007 VATT
030933,000158: 37,3244 50251 VSU DOT # (VCM-VLM).UNIT(LOS), PD=0
030934,000159: 37,3245 02206 VONE
030935,000160: 37,3246 77752 SL1 # SCALED 2(7)M/CS
030936,000161: 37,3247 26216 STOVL RRATE
030937,000162: 37,3250 02200 RONE
030938,000163: 37,3251 63256 UNIT PDVL # UNIT(R) TO PD 0-5
030939,000164: 37,3252 06477 UNITZ
030940,000165: 37,3253 77624 CALL
030941,000166: 37,3254 47653 CDU*NBSM
030942,000167: 37,3255 41505 VXM PUSH # UNIT(Z)/4 TO PD 6-11
030943,000168: 37,3256 01732 REFSMMAT
030944,000169: 37,3257 72431 VPROJ VSL2 # UNIT(P)=UNIT(UZ-(UZ)PROJ(UR))
030945,000170: 37,3260 00001 0D
030946,000171: 37,3261 53445 BVSU UNIT
030947,000172: 37,3262 00007 6D
030948,000173: 37,3263 47315 PDVL VXV # UNIT(P) TO PD 12-17
030949,000174: 37,3264 00001 0D # UNIT(RL)
030950,000175: 37,3265 02206 VONE
![]() |
Page 709 |
030952,000177: 37,3266 50235 VXV DOT # (UR * VL)*UR . U(P)
030953,000178: 37,3267 00001 0D
030954,000179: 37,3270 00015 12D
030955,000180: 37,3271 77715 PDVL # SIGN TO 12-13 , LOAD U(P)
030956,000181: 37,3272 75241 DOT SIGN
030957,000182: 37,3273 00007 6D
030958,000183: 37,3274 00015 12D
030959,000184: 37,3275 65512 SL2 ACOS # ARCCOS(UP.UZ(SIGN))
030960,000185: 37,3276 26220 STOVL RTHETA
030961,000186: 37,3277 00001 0D
030962,000187: 37,3300 51041 DOT BPL # IF UR.UZ NEG,
030963,000188: 37,3301 00007 6D # RTHETA = 1 - RTHETA
030964,000189: 37,3302 77307 +5
030965,000190: 37,3303 45345 DLOAD DSU
030966,000191: 37,3304 06513 DPPOSMAX
030967,000192: 37,3305 02220 RTHETA
030968,000193: 37,3306 02220 STORE RTHETA
030969,000194: 37,3307 77776 EXIT
030970,000195:
030971,000196: 37,3310 34740 CA BIT5
030972,000197: 37,3311 71043 MASK EXTVBACT
030973,000198: 37,3312 00006 EXTEND # IF ANSWERED,
030974,000199: 37,3313 15474 BZF ENDEXT # TERMINATE
030975,000200:
030976,000201: 37,3314 41043 CS EXTVBACT
030977,000202: 37,3315 74731 MASK BIT12
030978,000203: 37,3316 27043 ADS EXTVBACT # SET BIT 12
030979,000204: 37,3317 13147 TCF REV83 # AND START AGAIN.
030980,000205:
030981,000206: 37,3320 37731 GETRVN CA PRIO22 # INHIBIT SERVICER
030982,000207: 37,3321 05137 TC PRIOCHNG
030983,000208: 37,3322 06060 TC INTPRET
030984,000209: 37,3323 40375 VLOAD SETPD
030985,000210: 37,3324 01220 RN # LM STATE VECTOR IN RN,VN
030986,000211: 37,3325 00001 0
030987,000212: 37,3326 26200 STOVL RONE
030988,000213: 37,3327 01226 VN
030989,000214: 37,3330 26206 STOVL VONE # LOAD R(CSM),V(CSM) IN CASE MUNFLAG SET
030990,000215: 37,3331 01724 V(CSM) # (TO INSURE TIME COMPATABILITY)
030991,000216: 37,3332 65315 PDVL PDDL
030992,000217: 37,3333 01716 R(CSM)
030993,000218: 37,3334 01234 PIPTIME
030994,000219: 37,3335 77776 EXIT
030995,000220: 37,3336 35006 CA PRIO3
030996,000221: 37,3337 05137 TC PRIOCHNG
030997,000222: 37,3340 06060 TC INTPRET
030998,000223: 37,3341 77214 BOFF VLOAD
030999,000224: 37,3342 03347 MUNFLAG
031000,000225: 37,3343 77355 GETRVN2 # IF MUNFLAG RESET, DO CM DELTA PRECISION
![]() |
Page 710 |
031002,000227: 37,3344 60505 VXM VSR4 # CHANGE TO REFERENCE SYSTEM AND RESCALE
031003,000228: 37,3345 01732 REFSMMAT
031004,000229: 37,3346 77715 PDVL # R TO PD 0-5
031005,000230: 37,3347 76505 VXM VSL1
031006,000231: 37,3350 01732 REFSMMAT
031007,000232: 37,3351 40206 PUSH SETPD # V TO PD 5-11
031008,000233: 37,3352 00001 0
031009,000234: 37,3353 77650 GOTO
031010,000235: 37,3354 77232 COMPDISP
031011,000236:
031012,000237: 37,3355 77624 GETRVN2 CALL
031013,000238: 37,3356 27447 INTSTALL
031014,000239: 37,3357 52014 CLEAR GOTO
031015,000240: 37,3360 01673 INTYPFLG # PREC EXTRAP FOR OTHER
031016,000241: 37,3361 77214 OTHINT
031017,000242: 37,3362 06060 R31SURF TC INTPRET
031018,000243: 37,3363 77634 RTB # LM IS ON SURFACE, SO PRECISION
031019,000244: 37,3364 21603 LOADTIME # INTEGRATION USES PLANETARY INERTIAL
031020,000245: 37,3365 34041 STCALL TDEC1 # ORIENTATION SUBROUTINE
031021,000246: 37,3366 27115 LEMPREC
031022,000247: 37,3367 77650 GOTO # DO CSM CONIC
031023,000248: 37,3370 77203 OTHCONIC
031024,000249: 37,3371 40102 MUNG? CS FLAGWRD6
031025,000250: 37,3372 74735 MASK MUNFLBIT
031026,000251: 37,3373 00006 EXTEND
031027,000252: 37,3374 13320 BZF GETRVN # IF MUNFLAG SET, CSM BASE NOT NEEDED
031028,000253:
031029,000254: 37,3375 06060 ONEBASE TC INTPRET # GET CSM BASE VECTOR
031030,000255: 37,3376 52034 RTB GOTO
031031,000256: 37,3377 21603 LOADTIME
031032,000257: 37,3400 77136 DOCMBASE
031033,000258:
End of include-file R31.agc. Parent file is MAIN.agc