Source Code
![]() |
This is an attempt to recreate Luminary 99 Rev 2, otherwise known as LUM99R2, from Luminary 99 Rev 1 and ephemeris data from Luminary 116. The differences are confined to the last 10-12 lines of the CONTROLLED CONSTANTS. Luminary 99 Rev 1 source-code was transcribed from a printout in the MIT Museum, while Luminary 116 source code was transcribed from a printout belonging to Don Eyles. AGC developer James Kernan, the "rope mother" for the Apollo 11 Lunar Module's AGC, explains as follows: "At the last minute, Dan Lickly, our chief engineer, appeared with ephemerides updates and it took two tries to get it right. The result was that we created Lum99 Revision 1 and Lum99 Revision 2." It is suspected that the former is what's in the MIT Museum, and the latter is what we are trying to recreate here. As for which revision actually flew in Apollo 11, all of the other available surviving evidence points to Rev 1 rather than to Rev 2, so we're just not sure! |
029629,000002: ## Copyright: Public domain.
029630,000003: ## Filename: R31.agc
029631,000004: ## Purpose: Part of the source code for Luminary 1A build 099.
029632,000005: ## It is part of the source code for the Lunar Module's (LM)
029633,000006: ## Apollo Guidance Computer (AGC), for Apollo 11.
029634,000007: ## Assembler: yaYUL
029635,000008: ## Contact: Ron Burkey <info@sandroid.org>.
029636,000009: ## Website: www.ibiblio.org/apollo.
029637,000010: ## Pages: 703-708
029638,000011: ## Mod history: 2009-05-19 RSB Adapted from the corresponding
029639,000012: ## Luminary131 file, using page
029640,000013: ## images from Luminary 1A.
029641,000014: ## 2016-12-14 RSB Proofed text comments with octopus/ProoferComments
029642,000015: ## and corrected the errors found.
029643,000016: ## 2017-03-03 RSB Snapshot of Luminary 99 Rev 1.
029644,000017: ## 2017-03-09 RSB Comment-text fixes noted in proofing Luminary 116.
029645,000018:
![]() |
Page 703 |
029647,000020: 40,3674 BANK 40
029648,000021: 40,2000 SETLOC R31LOC
029649,000022: 40,2000 BANK
029650,000023:
029651,000024: 40,3674 COUNT* $$/R31
029652,000025:
029653,000026: 40,3674 35015 R31CALL CAF PRIO3
029654,000027: 40,3675 05105 TC FINDVAC
029655,000028: 40,3676 E7,1470 EBANK= SUBEXIT
029656,000029: 40,3676 03121 76067 2CADR V83CALL
029657,000030:
029658,000031: 40,3700 05221 DSPDELAY TC FIXDELAY
029659,000032: 40,3701 00144 DEC 100 B-14
029660,000033: 40,3702 31044 CA EXTVBACT
029661,000034: 40,3703 74740 MASK BIT12
029662,000035: 40,3704 00006 EXTEND
029663,000036: 40,3705 13700 BZF DSPDELAY
029664,000037:
029665,000038: 40,3706 35017 CAF PRIO5
029666,000039: 40,3707 05072 TC NOVAC
029667,000040: 40,3710 E7,1611 EBANK= TSTRT
029668,000041: 40,3710 03113 76067 2CADR DISPN5X
029669,000042:
029670,000043: 40,3712 15261 TCF TASKOVER
029671,000044:
029672,000045: 37,3113 BANK 37
029673,000046: 37,2000 SETLOC R31
029674,000047: 37,2000 BANK
029675,000048: 37,3113 COUNT* $$/R31
029676,000049:
029677,000050: 37,3113 33407 DISPN5X CAF V16N54
029678,000051: 37,3114 04616 TC BANKCALL
029679,000052: 37,3115 20334 CADR GOMARKF
029680,000053: 37,3116 05563 TC B5OFF
029681,000054: 37,3117 05563 TC B5OFF
029682,000055: 37,3120 13113 TCF DISPN5X
029683,000056:
029684,000057: 37,3121 40103 V83CALL CS FLAGWRD7 # TEST AVERAGE G FLAG
029685,000058: 37,3122 74747 MASK AVEGFBIT
029686,000059: 37,3123 00006 EXTEND
029687,000060: 37,3124 13377 BZF MUNG? # ON - TEST MUNFLAG
029688,000061:
029689,000062: 37,3125 40104 CS FLAGWRD8
029690,000063: 37,3126 74744 MASK SURFFBIT
029691,000064: 37,3127 00006 EXTEND
029692,000065: 37,3130 13403 BZF ONEBASE # ON SURFACE - BYPASS LEMPREC
029693,000066:
029694,000067: 37,3131 06037 TC INTPRET # EXTRAPOLATE BOTH STATE VECTORS
029695,000068: 37,3132 77634 RTB
![]() |
Page 704 |
029697,000070: 37,3133 21573 LOADTIME
029698,000071: 37,3134 34041 STCALL TDEC1
029699,000072: 37,3135 27057 LEMPREC # PRECISION BASE VECTOR FOR LM
029700,000073: 37,3136 77775 VLOAD
029701,000074: 37,3137 00017 RATT1
029702,000075: 37,3140 26170 STOVL BASETHP
029703,000076: 37,3141 00025 VATT1
029704,000077: 37,3142 16105 STODL BASETHV
029705,000078: 37,3143 00015 TAT
029706,000079: 37,3144 02114 DOCMBASE STORE BASETIME # PRECISION BASE VECTOR FOR CM
029707,000080: 37,3145 34041 STCALL TDEC1
029708,000081: 37,3146 27043 CSMPREC
029709,000082: 37,3147 77775 VLOAD
029710,000083: 37,3150 00017 RATT1
029711,000084: 37,3151 26140 STOVL BASEOTP
029712,000085: 37,3152 00025 VATT1
029713,000086: 37,3153 02120 STORE BASEOTV
029714,000087: 37,3154 77776 EXIT
029715,000088:
029716,000089: 37,3155 40103 REV83 CS FLAGWRD7
029717,000090: 37,3156 74747 MASK AVEGFBIT
029718,000091: 37,3157 00006 EXTEND
029719,000092: 37,3160 13326 BZF GETRVN # IF AVEGFLAG SET, USE RN,VN
029720,000093:
029721,000094: 37,3161 40104 CS FLAGWRD8
029722,000095: 37,3162 74744 MASK SURFFBIT
029723,000096: 37,3163 00006 EXTEND
029724,000097: 37,3164 13370 BZF R31SURF # IF ON SURFACE, USE LEMAREC
029725,000098:
029726,000099: 37,3165 06037 TC INTPRET # DO CONIC EXTRAPOLATION FOR BOTH VEHICLES
029727,000100: 37,3166 77634 RTB
029728,000101: 37,3167 21573 LOADTIME
029729,000102: 37,3170 34041 STCALL TDEC1
029730,000103: 37,3171 27414 INTSTALL
029731,000104: 37,3172 43175 VLOAD CLEAR
029732,000105: 37,3173 02170 BASETHP
029733,000106: 37,3174 00263 MOONFLAG
029734,000107: 37,3175 25535 STOVL RCV
029735,000108: 37,3176 02105 BASETHV
029736,000109: 37,3177 15543 STODL VCV
029737,000110: 37,3200 02114 BASETIME
029738,000111: 37,3201 43014 BOF SET # GET APPROPRIATE MOONFLAG SETTING
029739,000112: 37,3202 04344 MOONTHIS
029740,000113: 37,3203 77205 +2
029741,000114: 37,3204 00063 MOONFLAG
029742,000115: 37,3205 77614 SET
029743,000116: 37,3206 01473 INTYPFLG # CONIC EXTRAP.
029744,000117: 37,3207 35517 STCALL TET
029745,000118: 37,3210 27107 INTEGRVS # INTEGRATION --- AT LAST ---
029746,000119: 37,3211 77775 OTHCONIC VLOAD
![]() |
Page 705 |
029748,000121: 37,3212 00001 RATT
029749,000122: 37,3213 26207 STOVL RONE
029750,000123: 37,3214 00007 VATT
029751,000124: 37,3215 36215 STCALL VONE # GET SET FOR CONIC EXTRAP., OTHER.
029752,000125: 37,3216 27414 INTSTALL
029753,000126: 37,3217 71214 SET DLOAD
029754,000127: 37,3220 01473 INTYPFLG
029755,000128: 37,3221 00015 TAT
029756,000129: 37,3222 00041 OTHINT STORE TDEC1
029757,000130: 37,3223 43175 VLOAD CLEAR
029758,000131: 37,3224 02140 BASEOTP
029759,000132: 37,3225 00263 MOONFLAG
029760,000133: 37,3226 25535 STOVL RCV
029761,000134: 37,3227 02120 BASEOTV
029762,000135: 37,3230 15543 STODL VCV
029763,000136: 37,3231 02114 BASETIME
029764,000137: 37,3232 43014 BOF SET
029765,000138: 37,3233 04344 MOONTHIS
029766,000139: 37,3234 77236 +2
029767,000140: 37,3235 00063 MOONFLAG
029768,000141: 37,3236 35517 STCALL TET
029769,000142: 37,3237 27107 INTEGRVS
029770,000143: 37,3240 52375 COMPDISP VLOAD VSU
029771,000144: 37,3241 00001 RATT
029772,000145: 37,3242 02207 RONE
029773,000146: 37,3243 65234 RTB PDDL
029774,000147: 37,3244 21724 NORMUNX1 # UNIT(RANGE) TO PD 0-5
029775,000148: 37,3245 00045 36D
029776,000149: 37,3246 77657 SL* # RESCALE AFTER NORMUNIT
029777,000150: 37,3247 20201 0,1
029778,000151: 37,3250 26201 STOVL RANGE # SCALED 2(29)M
029779,000152: 37,3251 00007 VATT
029780,000153: 37,3252 50251 VSU DOT # (VCM-VLM).UNIT(LOS), PD=0
029781,000154: 37,3253 02215 VONE
029782,000155: 37,3254 77752 SL1 # SCALED 2(7)M/CS
029783,000156: 37,3255 26203 STOVL RRATE
029784,000157: 37,3256 02207 RONE
029785,000158: 37,3257 63256 UNIT PDVL # UNIT(R) TO PD 0-5
029786,000159: 37,3260 06514 UNITZ
029787,000160: 37,3261 77624 CALL
029788,000161: 37,3262 47661 CDU*NBSM
029789,000162: 37,3263 41505 VXM PUSH # UNIT(Z)/4 TO PD 6-11
029790,000163: 37,3264 01734 REFSMMAT
029791,000164: 37,3265 72431 VPROJ VSL2 # UNIT(P)=UNIT(UZ-(UZ)PROJ(UR))
029792,000165: 37,3266 00001 0D
029793,000166: 37,3267 53445 BVSU UNIT
029794,000167: 37,3270 00007 6D
029795,000168: 37,3271 47315 PDVL VXV # UNIT(P) TO PD 12-17
029796,000169: 37,3272 00001 0D # UNIT(RL)
029797,000170: 37,3273 02215 VONE
![]() |
Page 706 |
029799,000172: 37,3274 50235 VXV DOT # (UR * VL) * UR . U(P)
029800,000173: 37,3275 00001 0D
029801,000174: 37,3276 00015 12D
029802,000175: 37,3277 77715 PDVL # SIGN TO 12-13, LOAD U(P)
029803,000176: 37,3300 75241 DOT SIGN
029804,000177: 37,3301 00007 6D
029805,000178: 37,3302 00015 12D
029806,000179: 37,3303 65512 SL2 ACOS # ARCCOS(UP.UZ(SIGN))
029807,000180: 37,3304 26205 STOVL RTHETA
029808,000181: 37,3305 00001 0D
029809,000182: 37,3306 51041 DOT BPL # IF UR.UZ NEG,
029810,000183: 37,3307 00007 6D # RTHETA = 1 - RTHETA
029811,000184: 37,3310 77315 +5
029812,000185: 37,3311 45345 DLOAD DSU
029813,000186: 37,3312 06530 DPPOSMAX
029814,000187: 37,3313 02205 RTHETA
029815,000188: 37,3314 02205 STORE RTHETA
029816,000189: 37,3315 77776 EXIT
029817,000190:
029818,000191: 37,3316 34747 CA BIT5
029819,000192: 37,3317 71044 MASK EXTVBACT
029820,000193: 37,3320 00006 EXTEND # IF ANSWERED,
029821,000194: 37,3321 15472 BZF ENDEXT # TERMINATE
029822,000195:
029823,000196: 37,3322 41044 CS EXTVBACT
029824,000197: 37,3323 74740 MASK BIT12
029825,000198: 37,3324 27044 ADS EXTVBACT # SET BIT 12
029826,000199: 37,3325 13155 TCF REV83 # AND START AGAIN.
029827,000200:
029828,000201: 37,3326 37710 GETRVN CA PRIO22 # INHIBIT SERVICER
029829,000202: 37,3327 05146 TC PRIOCHNG
029830,000203: 37,3330 06037 TC INTPRET
029831,000204: 37,3331 40375 VLOAD SETPD
029832,000205: 37,3332 01221 RN # LM STATE VECTOR IN RN,VN
029833,000206: 37,3333 00001 0
029834,000207: 37,3334 26207 STOVL RONE
029835,000208: 37,3335 01227 VN
029836,000209: 37,3336 26215 STOVL VONE # LOAD R(CSM),V(CSM) IN CASE MUNFLAG SET
029837,000210: 37,3337 01726 V(CSM) # (TO INSURE TIME COMPATABILITY)
029838,000211: 37,3340 65315 PDVL PDDL
029839,000212: 37,3341 01720 R(CSM)
029840,000213: 37,3342 01235 PIPTIME
029841,000214: 37,3343 77776 EXIT
029842,000215: 37,3344 35015 CA PRIO3
029843,000216: 37,3345 05146 TC PRIOCHNG
029844,000217: 37,3346 06037 TC INTPRET
029845,000218: 37,3347 77214 BOFF VLOAD
029846,000219: 37,3350 03347 MUNFLAG
029847,000220: 37,3351 77363 GETRVN2 # IF MUNFLAG RESET, DO CM DELTA PRECISION
![]() |
Page 707 |
029849,000222: 37,3352 60505 VXM VSR4 # CHANGE TO REFERENCE SYSTEM AND RESCALE
029850,000223: 37,3353 01734 REFSMMAT
029851,000224: 37,3354 77715 PDVL # R TO PD 0-5
029852,000225: 37,3355 76505 VXM VSL1
029853,000226: 37,3356 01734 REFSMMAT
029854,000227: 37,3357 40206 PUSH SETPD # V TO PD 5-11
029855,000228: 37,3360 00001 0
029856,000229: 37,3361 77650 GOTO
029857,000230: 37,3362 77240 COMPDISP
029858,000231:
029859,000232: 37,3363 77624 GETRVN2 CALL
029860,000233: 37,3364 27414 INTSTALL
029861,000234: 37,3365 52014 CLEAR GOTO
029862,000235: 37,3366 01673 INTYPFLG # PREC EXTRAP FOR OTHER
029863,000236: 37,3367 77222 OTHINT
029864,000237: 37,3370 06037 R31SURF TC INTPRET
029865,000238: 37,3371 77634 RTB # LM IS ON SURFACE, SO PRECISION
029866,000239: 37,3372 21573 LOADTIME # INTEGRATION USES PLANETARY INERTIAL
029867,000240: 37,3373 34041 STCALL TDEC1 # ORIENTATION SUBROUTINE
029868,000241: 37,3374 27057 LEMPREC
029869,000242: 37,3375 77650 GOTO # DO CSM CONIC
029870,000243: 37,3376 77211 OTHCONIC
029871,000244: 37,3377 40102 MUNG? CS FLAGWRD6
029872,000245: 37,3400 74744 MASK MUNFLBIT
029873,000246: 37,3401 00006 EXTEND
029874,000247: 37,3402 13326 BZF GETRVN # IF MUNFLAG SET, CSM BASE NOT NEEDED
029875,000248:
029876,000249: 37,3403 06037 ONEBASE TC INTPRET # GET CSM BASE VECTOR
029877,000250: 37,3404 52034 RTB GOTO
029878,000251: 37,3405 21573 LOADTIME
029879,000252: 37,3406 77144 DOCMBASE
029880,000253:
029881,000254: 37,3407 04066 V16N54 VN 1654
029882,000255:
![]() |
Page 708
This page is intentionally empty. |
029885,000258:
End of include-file R31.agc. Parent file is MAIN.agc