Source Code
These source-code files are part of a reconstructed copy of LM131 revision 1,
the final release of the Apollo 13 Lunar Module (LM) Apollo Guidance Computer
(AGC) software.
The source reconstruction began with source code of Luminary 131 previously transcribed from a digitized copy of that program. A dump of the flight spare core rope memory module B5, part number 2010802-171, serial number RAY 411, was obtained. This module is the only module different between Luminary 131 and LM131 revision 1. The dump was disassembled and all changes were incorporated into these source files. Note that page numbers in the reconstructed code match those on the Luminary 131 printout, although the changed code would likely have changed page numbers for a real LM131 revision 1 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. |
015117,000002: ## Copyright: Public domain.
015118,000003: ## Filename: KALCMANU_STEERING.agc
015119,000004: ## Purpose: A section of LM131 revision 1.
015120,000005: ## It is part of the reconstructed source code for the final
015121,000006: ## release of the flight software for the Lunar Module's (LM)
015122,000007: ## Apollo Guidance Computer (AGC) for Apollo 13. The code has
015123,000008: ## been reconstructed from a listing of Luminary 131 and a dump
015124,000009: ## of a core rope memory module B5, part number 2010802-171,
015125,000010: ## which is the only module different between LM131 revision 1
015126,000011: ## and Luminary 131. The executable generated from this source
015127,000012: ## has been verified against the module dump, so while the names,
015128,000013: ## comments, and ordering may not be exactly correct, the
015129,000014: ## resulting binary is.
015130,000015: ## Reference: pp. 367-371
015131,000016: ## Assembler: yaYUL
015132,000017: ## Contact: Ron Burkey <info@sandroid.org>.
015133,000018: ## Website: www.ibiblio.org/apollo/index.html
015134,000019: ## Mod history: 2022-10-28 MAS Created from Luminary 131.
015135,000020:
Page 367 |
015137,000022: # GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
015138,000023:
015139,000024: # NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
015140,000025:
015141,000026: 22,3003 E6,1706 EBANK= TTEMP
015142,000027:
015143,000028: 22,3003 04616 NEWDELHI TC BANKCALL # CHECK FOR AUTO STABILIZATION
015144,000029: 22,3004 54266 CADR ISITAUTO # ONLY
015145,000030: 22,3005 10000 CCS A
015146,000031: 22,3006 12730 TCF NOGO -2
015147,000032: 22,3007 06042 NEWANGL TC INTPRET
015148,000033: 22,3010 75160 AXC,1 AXC,2
015149,000034: 22,3011 03245 MIS # COMPUTE THE NEW MATRIX FROM S/C TO
015150,000035: 22,3012 02230 KEL # STABLE MEMBER AXES
015151,000036: 22,3013 77624 CALL
015152,000037: 22,3014 44312 MXM3
015153,000038: 22,3015 45575 VLOAD STADR
015154,000039: 22,3016 50515 STOVL MIS +12D # CALCULATE NEW DESIRED CDU ANGLES
015155,000040: 22,3017 77626 STADR
015156,000041: 22,3020 50523 STOVL MIS +6D
015157,000042: 22,3021 77626 STADR
015158,000043: 22,3022 74531 STORE MIS
015159,000044: 22,3023 45160 AXC,1 CALL
015160,000045: 22,3024 03245 MIS
015161,000046: 22,3025 44654 DCMTOCDU # PICK UP THE NEW CDU ANGLES FROM MATRIX
015162,000047: 22,3026 77634 RTB
015163,000048: 22,3027 21621 V1STO2S
015164,000049: 22,3030 03303 STORE NCDU # NEW CDU ANGLES
015165,000050: 22,3031 77414 BONCLR EXIT
015166,000051: 22,3032 01215 CALCMAN2
015167,000052: 22,3033 45122 MANUSTAT # TO START MANEUVER
015168,000053: 22,3034 34752 CAF TWO # +0 OTHERWISE
015169,000054: 22,3035 55261 INCRDCDU TS SPNDX
015170,000055: 22,3036 51261 INDEX SPNDX
015171,000056: 22,3037 31675 CA BCDU # INITIAL CDU ANGLES
015172,000057: 22,3040 00006 EXTEND # OR PREVIOUS DESIRED CDU ANGLES
015173,000058: 22,3041 51261 INDEX SPNDX
015174,000059: 22,3042 21702 MSU NCDU
015175,000060: 22,3043 00006 EXTEND
015176,000061: 22,2000 SETLOC KALCMON1
015177,000062: 22,2000 BANK
015178,000063:
015179,000064: 22,3044 73121 MP DT/TAU
015180,000065: 22,3045 10000 CCS A # CONVERT TO 2S COMPLEMENT
015181,000066: 22,3046 64753 AD ONE
015182,000067: 22,3047 13051 TCF +2
015183,000068: 22,3050 40000 COM
015184,000069: 22,3051 51261 INDEX SPNDX
015185,000070: 22,3052 55637 TS DELDCDU # ANGLE INCREMENTS TO BE ADDED TO
015186,000071: 22,3053 51261 INDEX SPNDX # CDUXD, CDUYD, CDUZD EVERY TENTH SECOND
Page 368 |
015188,000073: 22,3054 31702 CA NCDU # BY LEM DAP
015189,000074: 22,3055 51261 INDEX SPNDX
015190,000075: 22,3056 57675 XCH BCDU
015191,000076: 22,3057 51261 INDEX SPNDX
015192,000077: 22,3060 55634 TS CDUXD
015193,000078: 22,3061 11261 CCS SPNDX
015194,000079: 22,3062 13035 TCF INCRDCDU # LOOP FOR THREE AXES
015195,000080:
015196,000081: 22,3063 00003 RELINT
015197,000082:
015198,000083: # COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER
015199,000084:
015200,000085: 22,3064 03075 TMANUCHK TC TIMECHK
015201,000086: 22,3065 13170 TCF CONTMANU
015202,000087: 22,3066 34753 CAF ONE
015203,000088: 22,3067 00004 MANUSTAL INHINT # END MAJOR PART OF MANEUVER WITHIN 1 SEC
015204,000089: 22,3070 05203 TC WAITLIST # UNDER WAITLIST CALL TO MANUSTOP
015205,000090: 22,3071 E6,1706 EBANK= TTEMP
015206,000091: 22,3071 03213 44066 2CADR MANUSTOP
015207,000092:
015208,000093: 22,3073 00003 RELINT
015209,000094: 22,3074 15155 TCF ENDOFJOB
015210,000095:
015211,000096: 22,3075 00006 TIMECHK EXTEND
015212,000097: 22,3076 40025 DCS TIME2
015213,000098: 22,3077 53707 DXCH TTEMP
015214,000099: 22,3100 00006 EXTEND
015215,000100: 22,3101 31733 DCA TM
015216,000101: 22,3102 21707 DAS TTEMP
015217,000102: 22,3103 11706 CCS TTEMP
015218,000103: 22,3104 00002 TC Q
015219,000104: 22,3105 13107 TCF +2
015220,000105: 22,3106 13117 TCF 2NDRETRN
015221,000106: 22,3107 11707 CCS TTEMP +1
015222,000107: 22,3110 00002 TC Q
015223,000108: 22,3111 13113 TCF MANUOFF
015224,000109: 22,3112 40000 COM
015225,000110: 22,3113 63166 MANUOFF AD ONESEK +1
015226,000111: 22,3114 00006 EXTEND
015227,000112: 22,3115 63117 BZMF 2NDRETRN
015228,000113: 22,3116 24002 INCR Q
015229,000114: 22,3117 24002 2NDRETRN INCR Q
015230,000115: 22,3120 00002 TC Q
015231,000116:
015232,000117: 22,3121 03146 DT/TAU DEC .1
015233,000118:
015234,000119: 22,3122 77776 MANUSTAT EXIT # INITIALIZATION ROUTINE
015235,000120: 22,3123 00006 EXTEND # FOR AUTOMATIC MANEUVERS
015236,000121: 22,3124 30025 DCA TIME2
Page 369 |
015238,000123: 22,3125 21733 DAS TM # TM+T0 MANEUVER COMPLETION TIME
015239,000124: 22,3126 00006 EXTEND
015240,000125: 22,3127 43166 DCS ONESEK
015241,000126: 22,3130 21733 DAS TM # (TM+T0)-1
015242,000127: 22,3131 00004 INHINT
015243,000128: 22,3132 34752 CAF TWO
015244,000129: 22,3133 55700 RATEBIAS TS KSPNDX
015245,000130: 22,3134 60000 DOUBLE
015246,000131: 22,3135 55701 TS KDPNDX
015247,000132: 22,3136 50000 INDEX A
015248,000133: 22,3137 31724 CA BRATE
015249,000134: 22,3140 51700 INDEX KSPNDX # STORE MANEUVER RATE IN
015250,000135: 22,3141 55642 TS OMEGAPD # OMEGAPD, OMEGAQD, OMEGARD
015251,000136: 22,3142 00006 EXTEND
015252,000137: 22,3143 63145 BZMF +2 # COMPUTE ATTITUDE ERROR
015253,000138: 22,3144 40000 COM # OFFSET = (WX)ABS(WX)/2AJX
015254,000139: 22,3145 00006 EXTEND # WHERE AJX= 2-JET ACCELERATION
015255,000140: 22,3146 73167 MP BIASCALE # = -1/16
015256,000141: 22,3147 00006 EXTEND
015257,000142: 22,3150 51701 INDEX KDPNDX
015258,000143: 22,3151 71724 MP BRATE
015259,000144: 22,3152 00006 EXTEND
015260,000145: 22,3153 51700 INDEX KSPNDX
015261,000146: 22,3154 11530 DV 1JACC # = AJX $ 90 DEG/SEC-SEC
015262,000147: 22,3155 51700 INDEX KSPNDX
015263,000148: 22,3156 55274 TS DELPEROR # $ 180 DEG
015264,000149: 22,3157 11700 CCS KSPNDX
015265,000150: 22,3160 13133 TCF RATEBIAS
015266,000151:
015267,000152: 22,3161 30025 CA TIME1
015268,000153: 22,3162 63166 AD ONESEK +1
015269,000154: 22,3163 57705 XCH NEXTIME
015270,000155: 22,3164 13034 TCF INCRDCDU -1
015271,000156:
015272,000157: 22,3165 00000 ONESEK DEC 0 B-14
015273,000158: 22,3166 00144 DEC 100 B-14
015274,000159:
015275,000160: 22,3167 75777 BIASCALE OCT 75777 # = -1/16
015276,000161:
015277,000162: 22,3170 40025 CONTMANU CS TIME1 # RESET FOR NEXT DCDU UPDATE
015278,000163: 22,3171 61705 AD NEXTIME
015279,000164: 22,3172 10000 CCS A
015280,000165: 22,3173 64753 AD ONE
015281,000166: 22,3174 13177 TCF MANUCALL
015282,000167: 22,3175 64735 AD NEGMAX
015283,000168: 22,3176 40000 COM
015284,000169: 22,3177 00004 MANUCALL INHINT # CALL FOR NEXT UPDATE VIA WAITLIST
015285,000170: 22,3200 05203 TC WAITLIST
015286,000171: 22,3201 E6,1706 EBANK= TTEMP
015287,000172: 22,3201 03206 44066 2CADR UPDTCALL
Page 370 |
015289,000174: 22,3203 33166 CAF ONESEK +1 # INCREMENT TIME FOR NEXT UPDATE
015290,000175: 22,3204 27705 ADS NEXTIME
015291,000176: 22,3205 15155 TCF ENDOFJOB
015292,000177:
015293,000178: 22,3206 37717 UPDTCALL CAF PRIO26 # SATELLITE PROGRAM TO CALL FOR UPDATE
015294,000179: 22,3207 05105 TC FINDVAC # OF STEERING COMMANDS
015295,000180: 22,3210 E6,1706 EBANK= TTEMP
015296,000181: 22,3210 03003 44066 2CADR NEWDELHI
015297,000182:
015298,000183: 22,3212 05261 TC TASKOVER
015299,000184:
Page 371 |
015301,000186: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
015302,000187:
015303,000188: 22,3213 34755 MANUSTOP CAF ZERO # ZERO MANEUVER RATES
015304,000189: 22,3214 55641 TS DELDCDU2
015305,000190: 22,3215 55644 TS OMEGARD
015306,000191: 22,3216 55276 TS DELREROR
015307,000192: 22,3217 55640 TS DELDCDU1
015308,000193: 22,3220 55643 TS OMEGAQD
015309,000194: 22,3221 55275 TS DELQEROR
015310,000195: 22,3222 30323 CA CPSI # SET DESIRED GIMBAL ANGLES TO
015311,000196: 22,3223 55636 TS CDUZD # DESIRED FINAL GIMBAL ANGLES
015312,000197: 22,3224 30322 CA CTHETA
015313,000198: 22,3225 55635 TS CDUYD
015314,000199: 22,3226 30321 ENDROLL CA CPHI # NO FINAL YAW
015315,000200: 22,3227 55634 TS CDUXD
015316,000201: 22,3230 34755 CAF ZERO
015317,000202: 22,3231 55642 TS OMEGAPD # I.E. MANEUVER DID NOT GO THRU
015318,000203: 22,3232 55637 TS DELDCDU # GIMBAL LOCK ORIGINALLY
015319,000204: 22,3233 55274 TS DELPEROR
015320,000205: 22,3234 31306 GOODMANU CA ATTPRIO # RESTORE USERS PRIO
015321,000206: 22,3235 54063 TS NEWPRIO
015322,000207:
015323,000208: 22,3236 34755 CA ZERO # ZERO ATTCADR
015324,000209: 22,3237 53305 DXCH ATTCADR
015325,000210:
015326,000211: 22,3240 05116 TC SPVAC # RETURN TO USER
015327,000212:
015328,000213: 22,3241 05261 TC TASKOVER
015329,000214:
015330,000215:
End of include-file KALCMANU_STEERING.agc. Parent file is MAIN.agc