Source Code
|
These source-code files are part of a reconstructed copy of Luminary 178, the
final release of the Apollo 14 Lunar Module (LM) Apollo Guidance Computer
(AGC) software.
The reconstruction began with source code of Zerlina 56, Luminary 210, and Luminary 131, previously transcribed from digitized copies of those programs. The code was created by combining the three, using Zerlina 56 as a base, since it was based off of Luminary 183. The differences between the three were carefully merged using the Luminary memos as a guide, with all changes made after Luminary 178 being backed out. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021152N. Note that page numbers in the reconstructed code match those for the baseline log section mentioned in each file's changelog; the page numbers for a real Luminary 178 listing would be different. 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. |
015834,000002: ## Copyright: Public domain.
015835,000003: ## Filename: KALCMANU_STEERING.agc
015836,000004: ## Purpose: A section of Luminary revision 178.
015837,000005: ## It is part of the reconstructed source code for the final
015838,000006: ## release of the flight software for the Lunar Module's
015839,000007: ## (LM) Apollo Guidance Computer (AGC) for Apollo 14. The
015840,000008: ## code has been recreated from copies of Zerlina 56, Luminary
015841,000009: ## 210, and Luminary 131, as well as many Luminary memos.
015842,000010: ## It has been adapted such that the resulting bugger words
015843,000011: ## exactly match those specified for Luminary 178 in NASA
015844,000012: ## drawing 2021152N, which gives relatively high confidence
015845,000013: ## that the reconstruction is correct.
015846,000014: ## Reference: pp. 370-374
015847,000015: ## Assembler: yaYUL
015848,000016: ## Contact: Ron Burkey <info@sandroid.org>.
015849,000017: ## Website: www.ibiblio.org/apollo/index.html
015850,000018: ## Mod history: 2019-08-14 MAS Created from Zerlina 56.
015851,000019:
|
Page 370 |
015853,000021: # GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
015854,000022:
015855,000023: # NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
015856,000024:
015857,000025: 22,3003 E6,1706 EBANK= TTEMP
015858,000026:
015859,000027: 22,3003 04616 NEWDELHI TC BANKCALL # CHECK FOR AUTO STABILIZATION
015860,000028: 22,3004 54270 CADR ISITAUTO # ONLY
015861,000029: 22,3005 10000 CCS A
015862,000030: 22,3006 12730 TCF NOGO -2
015863,000031: 22,3007 06042 NEWANGL TC INTPRET
015864,000032: 22,3010 75160 AXC,1 AXC,2
015865,000033: 22,3011 03245 MIS # COMPUTE THE NEW MATRIX FROM S/C TO
015866,000034: 22,3012 02230 KEL # STABLE MEMBER AXES
015867,000035: 22,3013 77624 CALL
015868,000036: 22,3014 44312 MXM3
015869,000037: 22,3015 45575 VLOAD STADR
015870,000038: 22,3016 50515 STOVL MIS +12D # CALCULATE NEW DESIRED CDU ANGLES
015871,000039: 22,3017 77626 STADR
015872,000040: 22,3020 50523 STOVL MIS +6D
015873,000041: 22,3021 77626 STADR
015874,000042: 22,3022 74531 STORE MIS
015875,000043: 22,3023 45160 AXC,1 CALL
015876,000044: 22,3024 03245 MIS
015877,000045: 22,3025 44654 DCMTOCDU # PICK UP THE NEW CDU ANGLES FROM MATRIX
015878,000046: 22,3026 77634 RTB
015879,000047: 22,3027 21621 V1STO2S
015880,000048: 22,3030 03303 STORE NCDU # NEW CDU ANGLES
015881,000049: 22,3031 77414 BONCLR EXIT
015882,000050: 22,3032 01215 CALCMAN2
015883,000051: 22,3033 45122 MANUSTAT # TO START MANEUVER
015884,000052: 22,3034 34752 CAF TWO # +0 OTHERWISE
015885,000053: 22,3035 55261 INCRDCDU TS SPNDX
015886,000054: 22,3036 51261 INDEX SPNDX
015887,000055: 22,3037 31675 CA BCDU # INITIAL CDU ANGLES
015888,000056: 22,3040 00006 EXTEND # OR PREVIOUS DESIRED CDU ANGLES
015889,000057: 22,3041 51261 INDEX SPNDX
015890,000058: 22,3042 21702 MSU NCDU
015891,000059: 22,3043 00006 EXTEND
015892,000060: 22,2000 SETLOC KALCMON1
015893,000061: 22,2000 BANK
015894,000062:
015895,000063: 22,3044 73121 MP DT/TAU
015896,000064: 22,3045 10000 CCS A # CONVERT TO 2S COMPLEMENT
015897,000065: 22,3046 64753 AD ONE
015898,000066: 22,3047 13051 TCF +2
015899,000067: 22,3050 40000 COM
015900,000068: 22,3051 51261 INDEX SPNDX
015901,000069: 22,3052 55637 TS DELDCDU # ANGLE INCREMENTS TO BE ADDED TO
015902,000070: 22,3053 51261 INDEX SPNDX # CDUXD, CDUYD, CDUZD EVERY TENTH SECOND
015903,000071:
|
Page 371 |
015905,000073: 22,3054 31702 CA NCDU # BY LEM DAP
015906,000074: 22,3055 51261 INDEX SPNDX
015907,000075: 22,3056 57675 XCH BCDU
015908,000076: 22,3057 51261 INDEX SPNDX
015909,000077: 22,3060 55634 TS CDUXD
015910,000078: 22,3061 11261 CCS SPNDX
015911,000079: 22,3062 13035 TCF INCRDCDU # LOOP FOR THREE AXES
015912,000080:
015913,000081: 22,3063 00003 RELINT
015914,000082:
015915,000083: # COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER
015916,000084:
015917,000085: 22,3064 03075 TMANUCHK TC TIMECHK
015918,000086: 22,3065 13170 TCF CONTMANU
015919,000087: 22,3066 34753 CAF ONE
015920,000088: 22,3067 00004 MANUSTAL INHINT # END MAJOR PART OF MANEUVER WITHIN 1 SEC
015921,000089: 22,3070 05214 TC WAITLIST # UNDER WAITLIST CALL TO MANUSTOP
015922,000090: 22,3071 E6,1706 EBANK= TTEMP
015923,000091: 22,3071 03213 44066 2CADR MANUSTOP
015924,000092:
015925,000093: 22,3073 00003 RELINT
015926,000094: 22,3074 15155 TCF ENDOFJOB
015927,000095:
015928,000096: 22,3075 00006 TIMECHK EXTEND
015929,000097: 22,3076 40025 DCS TIME2
015930,000098: 22,3077 53707 DXCH TTEMP
015931,000099: 22,3100 00006 EXTEND
015932,000100: 22,3101 31733 DCA TM
015933,000101: 22,3102 21707 DAS TTEMP
015934,000102: 22,3103 11706 CCS TTEMP
015935,000103: 22,3104 00002 TC Q
015936,000104: 22,3105 13107 TCF +2
015937,000105: 22,3106 13117 TCF 2NDRETRN
015938,000106: 22,3107 11707 CCS TTEMP +1
015939,000107: 22,3110 00002 TC Q
015940,000108: 22,3111 13113 TCF MANUOFF
015941,000109: 22,3112 40000 COM
015942,000110: 22,3113 63166 MANUOFF AD ONESEK +1
015943,000111: 22,3114 00006 EXTEND
015944,000112: 22,3115 63117 BZMF 2NDRETRN
015945,000113: 22,3116 24002 INCR Q
015946,000114: 22,3117 24002 2NDRETRN INCR Q
015947,000115: 22,3120 00002 TC Q
015948,000116:
015949,000117: 22,3121 03146 DT/TAU DEC .1
015950,000118:
015951,000119: 22,3122 77776 MANUSTAT EXIT # INITIALIZATION ROUTINE
015952,000120: 22,3123 00006 EXTEND # FOR AUTOMATIC MANEUVERS
015953,000121: 22,3124 30025 DCA TIME2
|
Page 372 |
015955,000123: 22,3125 21733 DAS TM # TM+T0 MANEUVER COMPLETION TIME
015956,000124: 22,3126 00006 EXTEND
015957,000125: 22,3127 43166 DCS ONESEK
015958,000126: 22,3130 21733 DAS TM # (TM+T0)-1
015959,000127: 22,3131 00004 INHINT
015960,000128: 22,3132 34752 CAF TWO
015961,000129: 22,3133 55700 RATEBIAS TS KSPNDX
015962,000130: 22,3134 60000 DOUBLE
015963,000131: 22,3135 55701 TS KDPNDX
015964,000132: 22,3136 50000 INDEX A
015965,000133: 22,3137 31724 CA BRATE
015966,000134: 22,3140 51700 INDEX KSPNDX # STORE MANEUVER RATE IN
015967,000135: 22,3141 55642 TS OMEGAPD # OMEGAPD, OMEGAQD, OMEGARD
015968,000136: 22,3142 00006 EXTEND
015969,000137: 22,3143 63145 BZMF +2 # COMPUTE ATTITUDE ERROR
015970,000138: 22,3144 40000 COM # OFFSET = (WX)ABS(WX)/2AJX
015971,000139: 22,3145 00006 EXTEND # WHERE AJX= 2-JET ACCELERATION
015972,000140: 22,3146 73167 MP BIASCALE # = -1/16
015973,000141: 22,3147 00006 EXTEND
015974,000142: 22,3150 51701 INDEX KDPNDX
015975,000143: 22,3151 71724 MP BRATE
015976,000144: 22,3152 00006 EXTEND
015977,000145: 22,3153 51700 INDEX KSPNDX
015978,000146: 22,3154 11530 DV 1JACC # =AJX $ 90 DEG/SEC-SEC
015979,000147: 22,3155 51700 INDEX KSPNDX
015980,000148: 22,3156 55274 TS DELPEROR # $ 180 DEG
015981,000149: 22,3157 11700 CCS KSPNDX
015982,000150: 22,3160 13133 TCF RATEBIAS
015983,000151:
015984,000152: 22,3161 30025 CA TIME1
015985,000153: 22,3162 63166 AD ONESEK +1
015986,000154: 22,3163 57705 XCH NEXTIME
015987,000155: 22,3164 13034 TCF INCRDCDU -1
015988,000156:
015989,000157: 22,3165 00000 ONESEK DEC 0 B-14
015990,000158: 22,3166 00144 DEC 100 B-14
015991,000159:
015992,000160: 22,3167 75777 BIASCALE OCT 75777 # = -1/16
015993,000161:
015994,000162: 22,3170 40025 CONTMANU CS TIME1 # RESET FOR NEXT DCDU UPDATE
015995,000163: 22,3171 61705 AD NEXTIME
015996,000164: 22,3172 10000 CCS A
015997,000165: 22,3173 64753 AD ONE
015998,000166: 22,3174 13177 TCF MANUCALL
015999,000167: 22,3175 64735 AD NEGMAX
016000,000168: 22,3176 40000 COM
016001,000169: 22,3177 00004 MANUCALL INHINT # CALL FOR NEXT UPDATE VIA WAITLIST
016002,000170: 22,3200 05214 TC WAITLIST
016003,000171: 22,3201 E6,1706 EBANK= TTEMP
016004,000172: 22,3201 03206 44066 2CADR UPDTCALL
016005,000173:
|
Page 373 |
016007,000175: 22,3203 33166 CAF ONESEK +1 # INCREMENT TIME FOR NEXT UPDATE
016008,000176: 22,3204 27705 ADS NEXTIME
016009,000177: 22,3205 15155 TCF ENDOFJOB
016010,000178:
016011,000179:
016012,000180: 22,3206 37717 UPDTCALL CAF PRIO26 # SATELLITE PROGRAM TO CALL FOR UPDATE
016013,000181: 22,3207 05105 TC FINDVAC # OF STEERING COMMANDS
016014,000182: 22,3210 E6,1706 EBANK= TTEMP
016015,000183: 22,3210 03003 44066 2CADR NEWDELHI
016016,000184:
016017,000185: 22,3212 05272 TC TASKOVER
016018,000186:
|
Page 374 |
016020,000188: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
016021,000189:
016022,000190: 22,3213 34755 MANUSTOP CAF ZERO # ZERO MANEUVER RATES
016023,000191: 22,3214 55641 TS DELDCDU2
016024,000192: 22,3215 55644 TS OMEGARD
016025,000193: 22,3216 55276 TS DELREROR
016026,000194: 22,3217 55640 TS DELDCDU1
016027,000195: 22,3220 55643 TS OMEGAQD
016028,000196: 22,3221 55275 TS DELQEROR
016029,000197: 22,3222 30323 CA CPSI # SET DESIRED GIMBAL ANGLES TO
016030,000198: 22,3223 55636 TS CDUZD # DESIRED FINAL GIMBAL ANGLES
016031,000199: 22,3224 30322 CA CTHETA
016032,000200: 22,3225 55635 TS CDUYD
016033,000201: 22,3226 30321 ENDROLL CA CPHI # NO FINAL YAW
016034,000202: 22,3227 55634 TS CDUXD
016035,000203: 22,3230 34755 CAF ZERO
016036,000204: 22,3231 55642 TS OMEGAPD # I.E. MANEUVER DID NOT GO THRU
016037,000205: 22,3232 55637 TS DELDCDU # GIMBAL LOCK ORIGINALLY
016038,000206: 22,3233 55274 TS DELPEROR
016039,000207: 22,3234 31306 GOODMANU CA ATTPRIO # RESTORE USERS PRIO
016040,000208: 22,3235 54063 TS NEWPRIO
016041,000209:
016042,000210: 22,3236 34755 CA ZERO # ZERO ATTCADR
016043,000211: 22,3237 53305 DXCH ATTCADR
016044,000212:
016045,000213: 22,3240 05116 TC SPVAC # RETURN TO USER
016046,000214:
016047,000215: 22,3241 05272 TC TASKOVER
016048,000216:
016049,000217:
End of include-file KALCMANU_STEERING.agc. Parent file is MAIN.agc