Source Code
These source-code files are part of a reconstructed copy of Luminary 69/2,
the flown, final release of the Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction is based on the source code of Luminary 69 — i.e., the initial, unflown version, "revision 0" — of which a contemporary listing was available. The code was then updated by incorporating the differences between Luminary 69 and Luminary 69/2, known from other contemporary documentation. The only such difference is the implementation in Luminary 69/2 of the "R-2 Lunar Potential Model", the source code for which was taken from program Luminary 99/1 (Apollo 11 LM), of which a contemporary listing was also available. Finally, the now-reconstructed Luminary 69/2 was then validated by assembling it to executable form and verifying that its memory banks had the correct checksums, known from still other contemporary documentation. Note that page numbers in the reconstructed code match those in the original Luminary 69 program listing, or in the ORBITAL INTEGRATION log section, in Luminary 99/1. Page numbers would certainly differ somewhat in a contemporary Luminary 69/2 listing. Moreover, annotations that were not present in the contemporary source code have been added to the reconstructed code to justify each change in Luminary 69/2 relative to Luminary 69. Here's a guide to the Apollo documentation referenced in those annotations:
|
016333,000002: ## Copyright: Public domain.
016334,000003: ## Filename: KALCMANU_STEERING.agc
016335,000004: ## Purpose: A section of LUM69 revision 2.
016336,000005: ## It is part of the reconstructed source code for the flown
016337,000006: ## version of the flight software for the Lunar Module's (LM)
016338,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
016339,000008: ## been recreated from a copy of Luminary revsion 069, using
016340,000009: ## changes present in Luminary 099 which were described in
016341,000010: ## Luminary memos 75 and 78. The code has been adapted such
016342,000011: ## that the resulting bugger words exactly match those specified
016343,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
016344,000013: ## relatively high confidence that the reconstruction is correct.
016345,000014: ## Reference: pp. 378-382
016346,000015: ## Assembler: yaYUL
016347,000016: ## Contact: Ron Burkey <info@sandroid.org>.
016348,000017: ## Website: www.ibiblio.org/apollo/index.html
016349,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
016350,000019:
Page 378 |
016352,000021: # GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
016353,000022:
016354,000023: # NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
016355,000024:
016356,000025: 22,3003 E6,1705 EBANK= TTEMP
016357,000026:
016358,000027: 22,3003 04616 NEWDELHI TC BANKCALL # CHECK FOR AUTO STABILIZATION
016359,000028: 22,3004 54240 CADR ISITAUTO # ONLY
016360,000029: 22,3005 10000 CCS A
016361,000030: 22,3006 12730 TCF NOGO -2
016362,000031: 22,3007 06036 NEWANGL TC INTPRET
016363,000032: 22,3010 75160 AXC,1 AXC,2
016364,000033: 22,3011 03244 MIS # COMPUTE THE NEW MATRIX FROM S/C TO
016365,000034: 22,3012 02234 KEL # STABLE MEMBER AXES
016366,000035: 22,3013 77624 CALL
016367,000036: 22,3014 44312 MXM3
016368,000037: 22,3015 45575 VLOAD STADR
016369,000038: 22,3016 50516 STOVL MIS +12D # CALCULATE NEW DESIRED CDU ANGLES
016370,000039: 22,3017 77626 STADR
016371,000040: 22,3020 50524 STOVL MIS +6D
016372,000041: 22,3021 77626 STADR
016373,000042: 22,3022 74532 STORE MIS
016374,000043: 22,3023 45160 AXC,1 CALL
016375,000044: 22,3024 03244 MIS
016376,000045: 22,3025 44654 DCMTOCDU # PICK UP THE NEW CDU ANGLES FROM MATRIX
016377,000046: 22,3026 77634 RTB
016378,000047: 22,3027 21524 V1STO2S
016379,000048: 22,3030 03302 STORE NCDU # NEW CDU ANGLES
016380,000049: 22,3031 77414 BONCLR EXIT
016381,000050: 22,3032 01215 CALCMAN2
016382,000051: 22,3033 45122 MANUSTAT # TO START MANEUVER
016383,000052: 22,3034 34752 CAF TWO # +0 OTHERWISE
016384,000053: 22,3035 55272 INCRDCDU TS SPNDX
016385,000054: 22,3036 51272 INDEX SPNDX
016386,000055: 22,3037 31674 CA BCDU # INITIAL CDU ANGLES
016387,000056: 22,3040 00006 EXTEND # OR PREVIOUS DESIRED CDU ANGLES
016388,000057: 22,3041 51272 INDEX SPNDX
016389,000058: 22,3042 21701 MSU NCDU
016390,000059: 22,3043 00006 EXTEND
016391,000060: 22,2000 SETLOC KALCMON1
016392,000061: 22,2000 BANK
016393,000062:
016394,000063: 22,3044 73121 MP DT/TAU
016395,000064: 22,3045 10000 CCS A # CONVERT TO 2S COMPLEMENT
016396,000065: 22,3046 64753 AD ONE
016397,000066: 22,3047 13051 TCF +2
016398,000067: 22,3050 40000 COM
016399,000068: 22,3051 51272 INDEX SPNDX
016400,000069: 22,3052 55636 TS DELDCDU # ANGLE INCREMENTS TO BE ADDED TO
016401,000070: 22,3053 51272 INDEX SPNDX # CDUXD, CDUYD, CDUZD EVERY TENTH SECOND
Page 379 |
016403,000072: 22,3054 31701 CA NCDU # BY LEM DAP
016404,000073: 22,3055 51272 INDEX SPNDX
016405,000074: 22,3056 57674 XCH BCDU
016406,000075: 22,3057 51272 INDEX SPNDX
016407,000076: 22,3060 55633 TS CDUXD
016408,000077: 22,3061 11272 CCS SPNDX
016409,000078: 22,3062 13035 TCF INCRDCDU # LOOP FOR THREE AXES
016410,000079:
016411,000080: 22,3063 00003 RELINT
016412,000081:
016413,000082: # COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER
016414,000083:
016415,000084: 22,3064 03075 TMANUCHK TC TIMECHK
016416,000085: 22,3065 13170 TCF CONTMANU
016417,000086: 22,3066 34753 CAF ONE
016418,000087: 22,3067 00004 MANUSTAL INHINT # END MAJOR PART OF MANEUVER WITHIN 1 SEC
016419,000088: 22,3070 05203 TC WAITLIST # UNDER WAITLIST CALL TO MANUSTOP
016420,000089: 22,3071 E6,1705 EBANK= TTEMP
016421,000090: 22,3071 03213 44066 2CADR MANUSTOP
016422,000091:
016423,000092: 22,3073 00003 RELINT
016424,000093: 22,3074 15155 TCF ENDOFJOB
016425,000094:
016426,000095: 22,3075 00006 TIMECHK EXTEND
016427,000096: 22,3076 40025 DCS TIME2
016428,000097: 22,3077 53706 DXCH TTEMP
016429,000098: 22,3100 00006 EXTEND
016430,000099: 22,3101 31732 DCA TM
016431,000100: 22,3102 21706 DAS TTEMP
016432,000101: 22,3103 11705 CCS TTEMP
016433,000102: 22,3104 00002 TC Q
016434,000103: 22,3105 13107 TCF +2
016435,000104: 22,3106 13117 TCF 2NDRETRN
016436,000105: 22,3107 11706 CCS TTEMP +1
016437,000106: 22,3110 00002 TC Q
016438,000107: 22,3111 13113 TCF MANUOFF
016439,000108: 22,3112 40000 COM
016440,000109: 22,3113 63166 MANUOFF AD ONESEK +1
016441,000110: 22,3114 00006 EXTEND
016442,000111: 22,3115 63117 BZMF 2NDRETRN
016443,000112: 22,3116 24002 INCR Q
016444,000113: 22,3117 24002 2NDRETRN INCR Q
016445,000114: 22,3120 00002 TC Q
016446,000115:
016447,000116: 22,3121 03146 DT/TAU DEC .1
016448,000117:
016449,000118: 22,3122 77776 MANUSTAT EXIT # INITIALIZATION ROUTINE
016450,000119: 22,3123 00006 EXTEND # FOR AUTOMATIC MANEUVERS
016451,000120: 22,3124 30025 DCA TIME2
Page 380 |
016453,000122: 22,3125 21732 DAS TM # TM+T0 MANEUVER COMPLETION TIME
016454,000123: 22,3126 00006 EXTEND
016455,000124: 22,3127 43166 DCS ONESEK
016456,000125: 22,3130 21732 DAS TM # (TM+T0)-1
016457,000126: 22,3131 00004 INHINT
016458,000127: 22,3132 34752 CAF TWO
016459,000128: 22,3133 55677 RATEBIAS TS KSPNDX
016460,000129: 22,3134 60000 DOUBLE
016461,000130: 22,3135 55700 TS KDPNDX
016462,000131: 22,3136 50000 INDEX A
016463,000132: 22,3137 31723 CA BRATE
016464,000133: 22,3140 51677 INDEX KSPNDX # STORE MANEUVER RATE IN
016465,000134: 22,3141 55641 TS OMEGAPD # OMEGAPD, OMEGAQD, OMEGARD
016466,000135: 22,3142 00006 EXTEND
016467,000136: 22,3143 63145 BZMF +2 # COMPUTE ATTITUDE ERROR
016468,000137: 22,3144 40000 COM # OFFSET = (WX)ABS(WX)/2AJX
016469,000138: 22,3145 00006 EXTEND # WHERE AJX= 2-JET ACCELERATION
016470,000139: 22,3146 73167 MP BIASCALE # = -1/16
016471,000140: 22,3147 00006 EXTEND
016472,000141: 22,3150 51700 INDEX KDPNDX
016473,000142: 22,3151 71723 MP BRATE
016474,000143: 22,3152 00006 EXTEND
016475,000144: 22,3153 51677 INDEX KSPNDX
016476,000145: 22,3154 11530 DV 1JACC # = AJX $ 90 DEG/SEC-SEC
016477,000146: 22,3155 51677 INDEX KSPNDX
016478,000147: 22,3156 55277 TS DELPEROR # $ 180 DEG
016479,000148: 22,3157 11677 CCS KSPNDX
016480,000149: 22,3160 13133 TCF RATEBIAS
016481,000150:
016482,000151: 22,3161 30025 CA TIME1
016483,000152: 22,3162 63166 AD ONESEK +1
016484,000153: 22,3163 57704 XCH NEXTIME
016485,000154: 22,3164 13034 TCF INCRDCDU -1
016486,000155:
016487,000156: 22,3165 00000 ONESEK DEC 0 B-14
016488,000157: 22,3166 00144 DEC 100 B-14
016489,000158:
016490,000159: 22,3167 75777 BIASCALE OCT 75777 # = -1/16
016491,000160:
016492,000161: 22,3170 40025 CONTMANU CS TIME1 # RESET FOR NEXT DCDU UPDATE
016493,000162: 22,3171 61704 AD NEXTIME
016494,000163: 22,3172 10000 CCS A
016495,000164: 22,3173 64753 AD ONE
016496,000165: 22,3174 13177 TCF MANUCALL
016497,000166: 22,3175 64735 AD NEGMAX
016498,000167: 22,3176 40000 COM
016499,000168: 22,3177 00004 MANUCALL INHINT # CALL FOR NEXT UPDATE VIA WAITLIST
016500,000169: 22,3200 05203 TC WAITLIST
016501,000170: 22,3201 E6,1705 EBANK= TTEMP
016502,000171: 22,3201 03206 44066 2CADR UPDTCALL
Page 381 |
016504,000173: 22,3203 33166 CAF ONESEK +1 # INCREMENT TIME FOR NEXT UPDATE
016505,000174: 22,3204 27704 ADS NEXTIME
016506,000175: 22,3205 15155 TCF ENDOFJOB
016507,000176:
016508,000177: 22,3206 37713 UPDTCALL CAF PRIO26 # SATELLITE PROGRAM TO CALL FOR UPDATE
016509,000178: 22,3207 05105 TC FINDVAC # OF STEERING COMMANDS
016510,000179: 22,3210 E6,1705 EBANK= TTEMP
016511,000180: 22,3210 03003 44066 2CADR NEWDELHI
016512,000181:
016513,000182: 22,3212 05261 TC TASKOVER
016514,000183:
Page 382 |
016516,000185: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
016517,000186:
016518,000187: 22,3213 34755 MANUSTOP CAF ZERO # ZERO MANEUVER RATES
016519,000188: 22,3214 55640 TS DELDCDU2
016520,000189: 22,3215 55643 TS OMEGARD
016521,000190: 22,3216 55301 TS DELREROR
016522,000191: 22,3217 55637 TS DELDCDU1
016523,000192: 22,3220 55642 TS OMEGAQD
016524,000193: 22,3221 55300 TS DELQEROR
016525,000194: 22,3222 30323 CA CPSI # SET DESIRED GIMBAL ANGLES TO
016526,000195: 22,3223 55635 TS CDUZD # DESIRED FINAL GIMBAL ANGLES
016527,000196: 22,3224 30322 CA CTHETA
016528,000197: 22,3225 55634 TS CDUYD
016529,000198: 22,3226 30321 ENDROLL CA CPHI # NO FINAL YAW
016530,000199: 22,3227 55633 TS CDUXD
016531,000200: 22,3230 34755 CAF ZERO
016532,000201: 22,3231 55641 TS OMEGAPD # I.E. MANEUVER DID NOT GO THRU
016533,000202: 22,3232 55636 TS DELDCDU # GIMBAL LOCK ORIGINALLY
016534,000203: 22,3233 55277 TS DELPEROR
016535,000204: 22,3234 31311 GOODMANU CA ATTPRIO # RESTORE USERS PRIO
016536,000205: 22,3235 54063 TS NEWPRIO
016537,000206:
016538,000207: 22,3236 34755 CA ZERO # ZERO ATTCADR
016539,000208: 22,3237 53310 DXCH ATTCADR
016540,000209:
016541,000210: 22,3240 05116 TC SPVAC # RETURN TO USER
016542,000211:
016543,000212: 22,3241 05261 TC TASKOVER
016544,000213:
016545,000214:
End of include-file KALCMANU_STEERING.agc. Parent file is MAIN.agc