Source Code
|
These source-code files are part of a reconstructed copy of LUM69 Revision 2, the
flown Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction began with source code of Luminary 69 revision 0 previously transcribed from a digitized copy of that program. The code was then updated by back-porting the R-2 lunar potential model from previously-transcribed source code of Luminary 99. These required changes were described in the original Luminary memos 75 and 78. The reconstructed code was verified by matching memory-bank checksums to those listed in drawing 2021152G. Note that page numbers in the reconstructed code match those on the Luminary 069 printout, although the added code would likely have changed page numbers for a real LUM69 Revision 2 listing. Comments from the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository. |
034428,000002: ## Copyright: Public domain.
034429,000003: ## Filename: THE_LUNAR_LANDING.agc
034430,000004: ## Purpose: A section of LUM69 revision 2.
034431,000005: ## It is part of the reconstructed source code for the flown
034432,000006: ## version of the flight software for the Lunar Module's (LM)
034433,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
034434,000008: ## been recreated from a copy of Luminary revsion 069, using
034435,000009: ## changes present in Luminary 099 which were described in
034436,000010: ## Luminary memos 75 and 78. The code has been adapted such
034437,000011: ## that the resulting bugger words exactly match those specified
034438,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
034439,000013: ## relatively high confidence that the reconstruction is correct.
034440,000014: ## Reference: pp. 789-796
034441,000015: ## Assembler: yaYUL
034442,000016: ## Contact: Ron Burkey <info@sandroid.org>.
034443,000017: ## Website: www.ibiblio.org/apollo/index.html
034444,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
034445,000019:
|
Page 789 |
034447,000021: 32,2772 BANK 32
034448,000022: 32,2000 SETLOC F2DPS*32
034449,000023: 32,2000 BANK
034450,000024:
034451,000025: 32,2772 E7,1617 EBANK= E2DPS
034452,000026:
034453,000027: # ****************************************
034454,000028: # P63: THE LUNAR LANDING, BRAKING PHASE
034455,000029: # ****************************************
034456,000030:
034457,000031: 32,2772 COUNT* $$/P63
034458,000032:
034459,000033: 32,2772 05353 P63LM TC PHASCHNG
034460,000034: 32,2773 04024 OCT 04024
034461,000035:
034462,000036: 32,2774 04616 TC BANKCALL # DO IMU STATUS CHECK ROUTINE R02
034463,000037: 32,2775 11175 CADR R02BOTH
034464,000038:
034465,000039: 32,2776 33246 CAF P63ADRES # INITIALIZE WHICH FOR BURNBABY
034466,000040: 32,2777 55453 TS WHICH
034467,000041:
034468,000042: 32,3000 32010 CAF DPSTHRSH # INITIALIZE DVMON
034469,000043: 32,3001 55251 TS DVTHRUSH
034470,000044: 32,3002 34751 CAF FOUR
034471,000045: 32,3003 55513 TS DVCNTR
034472,000046:
034473,000047: 32,3004 44753 CS ONE # INITIALIZE WCHPHASE AND FLPASSO
034474,000048: 32,3005 22007 ZL # FOR IGNITION ALGORITHM
034475,000049: 32,3006 53621 DXCH WCHPHASE
034476,000050:
034477,000051:
034478,000052: 32,3007 44736 CS BIT14
034479,000053: 32,3010 00006 EXTEND
034480,000054: 32,3011 03012 WAND CHAN12 # REMOVE TRACK-ENABLE DISCRETE.
034481,000055:
034482,000056: 32,3012 06036 FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
034483,000057: 32,3013 43014 CLEAR CLEAR
034484,000058: 32,3014 02663 NOTHROTL
034485,000059: 32,3015 03271 REDFLAG
034486,000060: 32,3016 43014 CLEAR SET
034487,000061: 32,3017 05660 LRBYPASS
034488,000062: 32,3020 03067 MUNFLAG
034489,000063: 32,3021 43014 CLEAR CLEAR
034490,000064: 32,3022 00266 P25FLAG # TERMINATE P25 IF IT IS RUNNING.
034491,000065: 32,3023 00270 RNDVZFLG # TERMINATE P20 IF IT IS RUNNING
034492,000066:
034493,000067: # ****************************************
034494,000068:
034495,000069: 32,3024 77201 IGNALG SETPD VLOAD # FIRST SET UP INPUTS FOR RP-TO-R:-
034496,000070: 32,3025 00001 0 # AT 0D LANDING SITE IN MOON FIXED FRAME
034497,000071: 32,3026 02023 RLS # AT 6D ESTIMATED TIME OF LANDING
|
Page 790 |
034499,000073: 32,3027 41525 PDDL PUSH # MPAC NON-ZERO TO INDICATE LUNAR CASE
034500,000074: 32,3030 02401 TLAND
034501,000075: 32,3031 37623 STCALL TPIP # ALSO SET TPIP FOR FIRST GUIDANCE PASS
034502,000076: 32,3032 51504 RP-TO-R
034503,000077: 32,3033 64312 VSL4 MXV
034504,000078: 32,3034 01734 REFSMMAT
034505,000079: 32,3035 37633 STCALL LAND
034506,000080: 32,3036 60264 GUIDINIT # GUIDINIT INITIALIZES WM AND /LAND/
034507,000081: 32,3037 45345 DLOAD DSU
034508,000082: 32,3040 02401 TLAND
034509,000083: 32,3041 25254 GUIDDURN
034510,000084: 32,3042 34041 STCALL TDEC1 # INTEGRATE STATE FORWARD TO THAT TIME
034511,000085: 32,3043 27057 LEMPREC
034512,000086: 32,3044 77331 SSP VLOAD
034513,000087: 32,3045 03645 NIGNLOOP
034514,000088: 32,3046 00050 40D
034515,000089: 32,3047 06422 UNITX
034516,000090: 32,3050 26510 STOVL CG
034517,000091: 32,3051 06420 UNITY
034518,000092: 32,3052 26516 STOVL CG +6
034519,000093: 32,3053 06416 UNITZ
034520,000094: 32,3054 16524 STODL CG +14
034521,000095: 32,3055 25252 99999CON
034522,000096: 32,3056 27663 STOVL DELTAH # INITIALIZE DELTAH FOR V16N68 DISPLAY
034523,000097: 32,3057 06424 ZEROVECS
034524,000098: 32,3060 17252 STODL UNFC/2 # INITIALIZE TRIM VELOCITY CORRECTION TERM
034525,000099: 32,3061 06424 HI6ZEROS
034526,000100: 32,3062 03641 STORE TTF/8
034527,000101:
034528,000102: 32,3063 77745 IGNALOOP DLOAD
034529,000103: 32,3064 00015 TAT
034530,000104: 32,3065 27557 STOVL PIPTIME1
034531,000105: 32,3066 00017 RATT1
034532,000106: 32,3067 64312 VSL4 MXV
034533,000107: 32,3070 01734 REFSMMAT
034534,000108: 32,3071 37517 STCALL R
034535,000109: 32,3072 67162 MUNGRAV
034536,000110: 32,3073 35237 STCALL GDT/2
034537,000111: 32,3074 62514 ?GUIDSUB # WHICH DELIVERS N PASSES OF GUIDANCE
034538,000112:
034539,000113: # DDUMCALC IS PROGRAMMED AS FOLLOWS:-
034540,000114: # 2 -
034541,000115: # (RIGNZ - RGU )/16 + 16(RGU )KIGNY/B8 + (RGU - RIGNX)KIGNX/B4 + (ABVAL(VGU) - VIGN)KIGNV/B4
034542,000116: # 2 1 0
034543,000117: # DDUM = -------------------------------------------------------------------------------------------
034544,000118: # 10
034545,000119: # 2 (VGU - 16 VGU KIGNX/B4)
034546,000120: # 2 0
|
Page 791 |
034548,000122: # THE NUMERATOR IS SCALED IN METERS AT 2(28). THE DENOMINATOR IS A VELOCITY IN UNITS OF 2(10) M/CS.
034549,000123: # THE QUOTIENT IS THUS A TIME IN UNITS OF 2(18) CENTISECONDS. THE FINAL SHIFT RESCALES TO UNITS OF 2(28) CS.
034550,000124: # THERE IS NO DAMPING FACTOR. THE CONSTANTS KIGNX/B4, KIGNY/B8 AND KIGNV/B4 ARE ALL NEGATIVE IN SIGN.
034551,000125:
034552,000126: 32,3075 55644 DDUMCALC TS NIGNLOOP
034553,000127: 32,3076 06036 TC INTPRET
034554,000128: 32,3077 57345 DLOAD DMPR # FORM DENOMINATOR FIRST
034555,000129: 32,3100 03625 VGU
034556,000130: 32,3101 02471 KIGNX/B4
034557,000131: 32,3102 44232 SL4R BDSU
034558,000132: 32,3103 03631 VGU +4
034559,000133: 32,3104 45325 PDDL DSU
034560,000134: 32,3105 02467 RIGNZ
034561,000135: 32,3106 02550 RGU +4
034562,000136: 32,3107 65222 SR4R PDDL
034563,000137: 32,3110 02546 RGU +2
034564,000138: 32,3111 57316 DSQ DMPR
034565,000139: 32,3112 02473 KIGNY/B8
034566,000140: 32,3113 65232 SL4R PDDL
034567,000141: 32,3114 02544 RGU
034568,000142: 32,3115 57225 DSU DMPR
034569,000143: 32,3116 02465 RIGNX
034570,000144: 32,3117 02471 KIGNX/B4
034571,000145: 32,3120 51515 PDVL ABVAL
034572,000146: 32,3121 03625 VGU
034573,000147: 32,3122 57225 DSU DMPR
034574,000148: 32,3123 02463 VIGN
034575,000149: 32,3124 02475 KIGNV/B4
034576,000150: 32,3125 43215 DAD DAD
034577,000151: 32,3126 56215 DAD DDV
034578,000152: 32,3127 77661 SRR
034579,000153: 32,3130 21613 10D
034580,000154:
034581,000155: 32,3131 43206 PUSH DAD
034582,000156: 32,3132 03557 PIPTIME1
034583,000157: 32,3133 14041 STODL TDEC1 # STORE NEW GUESS FOR NEXT INTEGRATION
034584,000158: 32,3134 45246 ABS DSU
034585,000159: 32,3135 25256 DDUMCRIT
034586,000160: 32,3136 45040 BMN CALL
034587,000161: 32,3137 65156 DDUMGOOD
034588,000162: 32,3140 27412 INTSTALL
034589,000163: 32,3141 43014 SET SET
034590,000164: 32,3142 01473 INTYPFLG
034591,000165: 32,3143 00063 MOONFLAG
034592,000166: 32,3144 77745 DLOAD
034593,000167: 32,3145 03557 PIPTIME1
034594,000168: 32,3146 25517 STOVL TET # HOPEFULLY ?GUIDSUB DID NOT
034595,000169: 32,3147 00017 RATT1 # CLOBBER RATT1 AND VATT1
034596,000170: 32,3150 25535 STOVL RCV
034597,000171: 32,3151 00025 VATT1
|
Page 792 |
034599,000173: 32,3152 35543 STCALL VCV
034600,000174: 32,3153 27107 INTEGRVS
034601,000175: 32,3154 77650 GOTO
034602,000176: 32,3155 65063 IGNALOOP
034603,000177:
034604,000178: 32,3156 54335 DDUMGOOD SLOAD SR
034605,000179: 32,3157 03425 ZOOMTIME
034606,000180: 32,3160 20617 14D
034607,000181: 32,3161 77621 BDSU
034608,000182: 32,3162 00041 TDEC1
034609,000183: 32,3163 27440 STOVL TIG # COMPUTE DISTANCE LANDING SITE WILL BE
034610,000184: 32,3164 03525 V # OUT OF LM'S ORBITAL PLANE AT IGNITION:
034611,000185: 32,3165 53435 VXV UNIT # SIGN IS + IF LANDING SITE IS TO THE
034612,000186: 32,3166 03517 R # RIGHT, NORTH; - IF TO THE LEFT, SOUTH.
034613,000187: 32,3167 72441 DOT SL1
034614,000188: 32,3170 03633 LAND
034615,000189: 32,3171 26534 R60INIT STOVL OUTOFPLN # INITIALIZATION FOR CALCMANU
034616,000190: 32,3172 03252 UNFC/2
034617,000191: 32,3173 02536 STORE R60VSAVE # STORE UNFC/2 TEMPORARILY IN R60SAVE
034618,000192: 32,3174 77776 EXIT
034619,000193: # ****************************************
034620,000194:
034621,000195: 32,3175 05353 IGNALGRT TC PHASCHNG # PREVENT REPEATING IGNALG
034622,000196: 32,3176 04024 OCT 04024
034623,000197:
034624,000198: 32,3177 43247 ASTNCLOK CS ASTNDEX
034625,000199: 32,3200 04616 TC BANKCALL
034626,000200: 32,3201 74667 CADR STCLOK2
034627,000201: 32,3202 15155 TCF ENDOFJOB # RETURN IN NEW JOB AND IN EBANK FIVE
034628,000202:
034629,000203: 32,3203 06036 ASTNRET TC INTPRET
034630,000204: 32,3204 47131 SSP RTB # GO PICK UP DISPLAY AT END OF R51:
034631,000205: 32,3205 02747 QMAJ # "PROCEED" WILL DO A FINE ALIGNMENT
034632,000206: 32,3206 65210 FCADR P63SPOT2 # "ENTER" WILL RETURN TO P63SPOT2
034633,000207: 32,3207 30776 R51P63
034634,000208: 32,3210 53575 P63SPOT2 VLOAD UNIT # INITIALIZE KALCMANU FOR BURN ATTITUDE
034635,000209: 32,3211 02536 R60VSAVE
034636,000210: 32,3212 27767 STOVL POINTVSM
034637,000211: 32,3213 06422 UNITX
034638,000212: 32,3214 03761 STORE SCAXIS
034639,000213: 32,3215 77776 EXIT
034640,000214:
034641,000215: 32,3216 35016 CAF EBANK7
034642,000216: 32,3217 54003 TS EBANK
034643,000217:
034644,000218: 32,3220 00004 INHINT
034645,000219: 32,3221 04674 TC IBNKCALL
034646,000220: 32,3222 40142 CADR PFLITEDB
034647,000221: 32,3223 00003 RELINT
034648,000222:
|
Page 793 |
034650,000224: 32,3224 04616 TC BANKCALL
034651,000225: 32,3225 54101 CADR R60LEM
034652,000226:
034653,000227: 32,3226 05353 TC PHASCHNG # PREVENT RECALLING R60
034654,000228: 32,3227 04024 OCT 04024
034655,000229:
034656,000230: 32,3230 34746 P63SPOT3 CA BIT6 # IS THE LR ANTENNA IN POSITION 1 YET
034657,000231: 32,3231 00006 EXTEND
034658,000232: 32,3232 02033 RAND CHAN33
034659,000233: 32,3233 00006 EXTEND
034660,000234: 32,3234 13242 BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
034661,000235:
034662,000236: 32,3235 33250 CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
034663,000237: 32,3236 04616 TC BANKCALL # SILLY THING AROUND
034664,000238: 32,3237 20476 CADR GOPERF1
034665,000239: 32,3240 16001 TCF GOTOPOOH # TERMINATE
034666,000240: 32,3241 13230 TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
034667,000241:
034668,000242: 32,3242 04616 P63SPOT4 TC BANKCALL # ENTER INITIALIZE LANDING RADAR
034669,000243: 32,3243 67704 CADR SETPOS1
034670,000244:
034671,000245: 32,3244 04635 TC POSTJUMP # OFF TO SEE THE WIZARD ...
034672,000246: 32,3245 74124 CADR BURNBABY
034673,000247:
034674,000248: # ----------------------------------------
034675,000249:
034676,000250: # CONSTANTS FOR P63LM AND IGNALG
034677,000251:
034678,000252: 32,3246 02074 P63ADRES GENADR P63TABLE
034679,000253:
034680,000254: 32,3247 00027 ASTNDEX OCT 00027 # INDEX FOR CLOKTASK
034681,000255:
034682,000256: 32,3250 00500 CODE500 OCT 00500
034683,000257:
034684,000258: 32,3251 00035 30373 99999CON 2DEC 30479.7 B-24
034685,000259:
034686,000260: 32,3253 00003 37214 GUIDDURN 2DEC +65164 B-28
034687,000261: 32,3255 00000 00010 DDUMCRIT 2DEC +8 B-28 # CRITERION FOR IGNALG CONVERGENCE
034688,000262:
|
Page 794 |
034690,000264: # ----------------------------------------
034691,000265:
|
Page 795 |
034693,000267: # ****************************************
034694,000268: # P68: LANDING CONFIRMATION
034695,000269: # ****************************************
034696,000270:
034697,000271: 31,2172 BANK 31
034698,000272: 31,2000 SETLOC F2DPS*31
034699,000273: 31,2000 BANK
034700,000274:
034701,000275: 31,2172 COUNT* $$/P6567
034702,000276:
034703,000277: 31,2172 05353 LANDJUNK TC PHASCHNG
034704,000278: 31,2173 04024 OCT 04024
034705,000279:
034706,000280: 31,2174 00004 INHINT
034707,000281: 31,2175 04616 TC BANKCALL # ZERO ATTITUDE ERROR
034708,000282: 31,2176 40153 CADR ZATTEROR
034709,000283:
034710,000284: 31,2177 04616 TC BANKCALL # SET 5 DEGREE DEADBAND
034711,000285: 31,2200 40127 CADR SETMAXDB
034712,000286:
034713,000287: 31,2201 06036 TC INTPRET # TO INTERPRETIVE AS TIME IS NOT CRITICAL
034714,000288: 31,2202 43014 SET CLEAR
034715,000289: 31,2203 04067 SURFFLAG
034716,000290: 31,2204 04666 LETABORT
034717,000291: 31,2205 43014 SET CLEAR
034718,000292: 31,2206 05062 APSFLAG
034719,000293: 31,2207 03664 SWANDISP
034720,000294: 31,2210 77214 SET VLOAD
034721,000295: 31,2211 05460 LRBYPASS
034722,000296: 31,2212 01221 RN
034723,000297: 31,2213 16032 STODL ALPHAV
034724,000298: 31,2214 01235 PIPTIME
034725,000299: 31,2215 45014 SET CALL
034726,000300: 31,2216 01463 LUNAFLAG
034727,000301: 31,2217 26351 LAT-LONG
034728,000302: 31,2220 77201 SETPD VLOAD # COMPUTE RLS AND STORE IT AWAY
034729,000303: 31,2221 00001 0
034730,000304: 31,2222 01221 RN
034731,000305: 31,2223 65352 VSL2 PDDL
034732,000306: 31,2224 01235 PIPTIME
034733,000307: 31,2225 45006 PUSH CALL
034734,000308: 31,2226 51531 R-TO-RP
034735,000309: 31,2227 02023 STORE RLS
034736,000310: 31,2230 77776 EXIT
034737,000311: 31,2231 32246 CAF V06N43* # ASTRONAUT: NOW LOOK WHERE YOU ENDED UP
034738,000312: 31,2232 04616 TC BANKCALL
034739,000313: 31,2233 20351 CADR GOFLASH
034740,000314: 31,2234 16001 TCF GOTOPOOH # TERMINATE
034741,000315: 31,2235 12237 TCF +2 # PROCEED
034742,000316: 31,2236 12231 TCF -5 # RECYCLE
034743,000317:
|
Page 796 |
034745,000319: 31,2237 06036 TC INTPRET
034746,000320: 31,2240 77775 VLOAD # INITIALIZE GSAV AND (USING REFMF)
034747,000321: 31,2241 06422 UNITX # YNBSAV, ZNBSAV AND ATTFLAG FOR P57
034748,000322: 31,2242 36235 STCALL GSAV
034749,000323: 31,2243 33470 REFMF
034750,000324: 31,2244 77776 EXIT
034751,000325:
034752,000326: 31,2245 16001 TCF GOTOPOOH # ASTRONAUT: PLEASE SELECT P57
034753,000327:
034754,000328: 31,2246 01453 V06N43* VN 0643
034755,000329:
End of include-file THE_LUNAR_LANDING.agc. Parent file is MAIN.agc