Source Code

033092,000001: # Copyright: Public domain. 033093,000002: # Filename: THROTTLE_CONTROL_ROUTINES.agc 033094,000003: # Purpose: A section of Luminary 1C, revision 131. 033095,000004: # It is part of the source code for the Lunar Module's (LM) 033096,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 033097,000006: # This file is intended to be a faithful transcription, except 033098,000007: # that the code format has been changed to conform to the 033099,000008: # requirements of the yaYUL assembler rather than the 033100,000009: # original YUL assembler. 033101,000010: # Reference: pp. 793-797 of 1729.pdf. 033102,000011: # Contact: Ron Burkey <info@sandroid.org>. 033103,000012: # Website: www.ibiblio.org/apollo/index.html 033104,000013: # Mod history: 05/24/03 RSB. Began transcribing. 033105,000014: # 05/14/05 RSB Corrected website reference above. 033106,000015: 033107,000016: # Page 793 033108,000017: 31,2144 BANK 31 033109,000018: 31,2000 SETLOC FTHROT 033110,000019: 31,2000 BANK 033111,000020: 31,2144 E7,1612 EBANK= PIF 033112,000021: 31,2144 COUNT* $$/THROT 033113,000022: 033114,000023: # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 033115,000024: # HERE FC, DESIRED THRUST, AND FP, PRESENT THRUST, UNWEIGHTED, ARE COMPUTED. 033116,000025: 033117,000026: 31,2144 31245 THROTTLE CA ABDELV # COMPUTE PRESENT ACCELERATION IN UNITS OF 033118,000027: 31,2145 00006 EXTEND # 2(-4) M/CS/CS, SAVING SERVICER TROUBLE 033119,000028: 31,2146 72356 MP /AF/CNST 033120,000029: 31,2147 00006 +3 EXTEND 033121,000030: 31,2150 23607 QXCH RTNHOLD 033122,000031: 31,2151 02337 AFDUMP TC MASSMULT 033123,000032: 31,2152 53470 DXCH FP # FP = PRESENT THRUST 033124,000033: 31,2153 00006 EXTEND 033125,000034: 31,2154 31464 DCA /AFC/ 033126,000035: 31,2155 02337 TC MASSMULT 033127,000036: 31,2156 55615 TS FC # FC = THRUST DESIRED BY GUIDANCE 033128,000037: 31,2157 53466 DXCH FCODD # FCODD = WHAT IT IS GOING TO GET 033129,000038: 033130,000039: # COMPUTE DESIRED THRUST FOR DISPLAY AS A PERCENTAGE OF 10,500 POUNDS 033131,000040: 033132,000041: 31,2160 32360 CAF 4FMAXNOM # MOVE 4FMAXNOM TO ERASABLE FOR DV BELOW 033133,000042: 31,2161 54002 TS Q 033134,000043: 31,2162 31615 CA FC 033135,000044: 31,2163 72357 MASK OCT17777 # FOR SAFETY 033136,000045: 31,2164 00006 EXTEND 033137,000046: 31,2165 10002 DV Q 033138,000047: 31,2166 00006 EXTEND 033139,000048: 31,2167 75003 MP 4SECS 033140,000049: 31,2170 55750 TS THRDISP # FOR DISPLAY IN N92 033141,000050: 033142,000051: # IF IT HAS BEEN LESS THAN 3 SECONDS SINCE THE LAST THROTTLING, AUGMENT FP USING THE FWEIGHT CALCULATED THEN. 033143,000052: 033144,000053: 31,2171 41617 CS TTHROT # THIS CODING ASSUMES A FLATOUT WITHIN 033145,000054: 31,2172 60025 AD TIME1 # 80 SECONDS BEFORE FIRST THROTTLE CALL 033146,000055: 31,2173 74733 MASK POSMAX 033147,000056: 31,2174 40000 COM 033148,000057: 31,2175 65002 AD 3SECS 033149,000058: 31,2176 00006 EXTEND 033150,000059: 31,2177 62203 BZMF WHERETO # BRANCH IF (TIME1-TTHROT +1) > 3 SECONDS 033151,000060: # Page 794 033152,000061: 31,2200 00006 EXTEND 033153,000062: 31,2201 31611 DCA FWEIGHT 033154,000063: 31,2202 21470 DAS FP 033155,000064: 033156,000065: # THIS LOGIC DETERMINES THE THROTTLING IN THE REGION 10% - 94%. THE MANUAL THROTTLE, NOMINALLY SET AT 033157,000066: # MINIMUM BY ASTRONAUT OR MISSION CONTROL PROGRAMS, PROVIDES THE LOWER BOUND. A STOP IN THE THROTTLE HARDWARE 033158,000067: # PROVIDES THE UPPER. 033159,000068: 033160,000069: 31,2203 35014 WHERETO CA EBANK5 # INITIALIZE L*WCR*T AND H*GHCR*T FROM 033161,000070: 31,2204 54003 TS EBANK # PAD LOADED ERASABLES IN W-MATRIX 033162,000071: 31,2205 E5,1506 EBANK= LOWCRIT 033163,000072: 31,2205 00006 EXTEND 033164,000073: 31,2206 31507 DCA LOWCRIT 033165,000074: 31,2207 52131 DXCH L*WCR*T 033166,000075: 31,2210 35016 CA EBANK7 033167,000076: 31,2211 54003 TS EBANK 033168,000077: 31,2212 E7,1612 EBANK= PIF 033169,000078: 31,2212 44755 CS ZERO # INITIALIZE PIFPSET 033170,000079: 31,2213 55606 TS PIFPSET 033171,000080: 31,2214 40131 CS H*GHCR*T 033172,000081: 31,2215 61620 AD FCOLD 033173,000082: 31,2216 00006 EXTEND 033174,000083: 31,2217 62231 BZMF LOWFCOLD # BRANCH IF FCOLD < OR = HIGHCRIT 033175,000084: 31,2220 40130 CS L*WCR*T 033176,000085: 31,2221 61465 AD FCODD 033177,000086: 31,2222 00006 EXTEND 033178,000087: 31,2223 62226 BZMF FCOMPSET # BRANCH IF FC < OR = LOWCRIT 033179,000088: 31,2224 31467 CA FP # SEE NOTE 1 033180,000089: 31,2225 12236 TCF FLATOUT1 033181,000090: 033182,000091: 31,2226 42002 FCOMPSET CS FMAXODD # SEE NOTE 2 033183,000092: 31,2227 61467 AD FP 033184,000093: 31,2230 12240 TCF FLATOUT2 033185,000094: 033186,000095: 31,2231 40131 LOWFCOLD CS H*GHCR*T 033187,000096: 31,2232 61465 AD FCODD 033188,000097: 31,2233 00006 EXTEND 033189,000098: 31,2234 62241 BZMF DOPIF # BRANCH IF FC < OR = HIGHCRIT 033190,000099: 033191,000100: 31,2235 32003 CA FMAXPOS # NO: THROTTLE-UP 033192,000101: 31,2236 53466 FLATOUT1 DXCH FCODD 033193,000102: 31,2237 34737 CA FEXTRA 033194,000103: 31,2240 55606 FLATOUT2 TS PIFPSET 033195,000104: 033196,000105: # NOTE 1 FC IS SET EQUAL TO FP SO PIF WILL BE ZERO. THIS IS DESIRABLE 033197,000106: # AS THERE IS ACTUALLY NO THROTTLE CHANGE. 033198,000107: 033199,000108: # NOTE2 HERE, SINCE WE ARE ABOUT TO RETURN TO THE THROTTLEABLE REGION 033200,000109: # Page 795 033201,000110: # (BELOW 55%) THE QUANTITY -(FMAXODD-FP) IS COMPUTED AND PUT 033202,000111: # INTO PIFPSET TO COMPENSATE FOR THE DIFFERENCE BETWEEN THE 033203,000112: # NUMBER OF BITS CORRESPONDING TO FULL THROTTLE (FMAXODD) AND THE 033204,000113: # NUMBER CORRESPONDING TO ACTUAL THRUST (FP). THUS THE TOTAL 033205,000114: # THROTTLE COMMAND PIF = FC - FP - (FMAXODD - FP) = FC - FMAXODD. 033206,000115: 033207,000116: 31,2241 03677 DOPIF TC FASTCHNG 033208,000117: 31,2242 00006 EXTEND 033209,000118: 31,2243 31466 DCA FCODD 033210,000119: 31,2244 55620 TS FCOLD 033211,000120: 31,2245 53613 DXCH PIF 033212,000121: 31,2246 00006 EXTEND 033213,000122: 31,2247 41470 DCS FP 033214,000123: 31,2250 21613 DAS PIF # PIF = FC - FP, NEVER EQUALS +0 033215,000124: 033216,000125: 31,2251 31612 DOIT CA PIF 033217,000126: 31,2252 61606 AD PIFPSET # ADD IN PIFPSET, WITHOUT CHANGING PIF 033218,000127: 31,2253 55614 TS PSEUDO55 033219,000128: 31,2254 54055 TS THRUST 033220,000129: 31,2255 34750 CAF BIT4 033221,000130: 31,2256 00006 EXTEND 033222,000131: 31,2257 05014 WOR CHAN14 033223,000132: 31,2260 30025 CA TIME1 033224,000133: 31,2261 55617 TS TTHROT 033225,000134: 033226,000135: # SINCE /AF/ IS NOT AN INSTANTANEOUS ACELERATION, BUT RATHER AN "AVERAGE" OF THE ACCELERATION LEVELS DURING 033227,000136: # THE PRECEEDING PIPA INTERVAL, AND SINCE FP IS COMPUTED DIRECTLY FROM /AF/, FP IN ORDER TO CORRESPOND TO THE 033228,000137: # ACTUAL THRUST LEVEL AT THE END OF THE INTERVAL MUST BE WEIGHTED BY 033229,000138: # PIF(PPROCESS + TL) PIF /PIF/ 033230,000139: # FWEIGHT = ------------------ + ------------- 033231,000140: # PGUID 2 PGUID FRATE 033232,000141: # WHERE PROCESS IS THE TIME BETWEEN PIPA READING AND THE START OF THROTTLING, PGUID IS THE GUIDANCE PERIOD, AND 033233,000142: # FRATE IS THE THROTTLING RATE (32 UNITS PER CENTISECOND). PGUID IS EITHER 1 OR 2 SECONDS. THE "TL" IN THE 033234,000143: # FIRST TERM REPRESENTS THE ENGINE'S RESPONSE LAG. HERE FWEIGHT IS COMPUTED FOR USE NEXT PASS. 033235,000144: 033236,000145: 31,2262 31762 CA THISTPIP +1 # INITIALIZE FWEIGHT COMP AS IF FOR P66 033237,000146: 31,2263 54130 TS BUF 033238,000147: 033239,000148: 31,2264 41010 CS MODREG # ARE WE IN FACT IN P66? 033240,000149: 31,2265 62452 AD DEC66 033241,000150: 31,2266 00006 EXTEND 033242,000151: 31,2267 12274 BZF FWCOMP # YES 033243,000152: 033244,000153: 31,2270 31234 CA PIPTIME +1 # NO: INITIALIZE FOR TWO SECOND PERIOD 033245,000154: 31,2271 54130 TS BUF 033246,000155: 31,2272 35003 CAF 4SECS 033247,000156: 31,2273 12275 TCF FWCOMP +1 033248,000157: # Page 796 033249,000158: 033250,000159: 31,2274 35000 FWCOMP CAF 2SECS 033251,000160: 31,2275 54002 +1 TS Q 033252,000161: 31,2276 00006 EXTEND 033253,000162: 31,2277 74746 MP BIT6 033254,000163: 31,2300 22131 LXCH BUF +1 033255,000164: 31,2301 40130 CS BUF # TIME OF LAST PIPA READIN. 033256,000165: 31,2302 60025 AD TIME1 033257,000166: 31,2303 62004 AD THROTLAG # COMPENSATE FOR ENGINE RESPONSE LAG 033258,000167: 31,2304 74357 MASK LOW8 # MAKE SURE SMALL AND POSITIVE 033259,000168: 31,2305 22007 ZL 033260,000169: 31,2306 00006 EXTEND 033261,000170: 31,2307 10002 DV Q 033262,000171: 31,2310 00006 EXTEND 033263,000172: 31,2311 71612 MP PIF 033264,000173: 31,2312 60000 DOUBLE 033265,000174: 31,2313 53611 DXCH FWEIGHT 033266,000175: 31,2314 11612 CCS PIF 033267,000176: 31,2315 64753 AD ONE 033268,000177: 31,2316 12320 TCF +2 033269,000178: 31,2317 64753 AD ONE 033270,000179: 31,2320 00006 EXTEND 033271,000180: 31,2321 71612 MP PIF 033272,000181: 31,2322 00006 EXTEND 033273,000182: 31,2323 10131 DV BUF +1 033274,000183: 31,2324 22007 ZL 033275,000184: 31,2325 21611 DAS FWEIGHT 033276,000185: 033277,000186: 31,2326 01607 THDUMP TC RTNHOLD 033278,000187: 033279,000188: # FLATOUT THROTTLES UP THE DESCENT ENGINE, AND IS CALLED AS A BASIC SUBROUTINE. 033280,000189: 033281,000190: 31,2327 34737 FLATOUT CAF BIT13 # 4096 PULSES 033282,000191: 31,2330 55606 WHATOUT TS PIFPSET # USE PIFPSET SO FWEIGHT WILL BE ZERO 033283,000192: 31,2331 44755 CS ZERO 033284,000193: 31,2332 55620 TS FCOLD 033285,000194: 31,2333 55612 TS PIF 033286,000195: 31,2334 00006 EXTEND 033287,000196: 31,2335 23607 QXCH RTNHOLD 033288,000197: 31,2336 12251 TCF DOIT 033289,000198: 033290,000199: # MASSMULT SCALES ACCELERATION, ARRIVING IN A AND L IN UNITS OF 2(-4) M/CS/CS, TO FORCE IN PULSE UNITS. 033291,000200: 033292,000201: 31,2337 00006 MASSMULT EXTEND 033293,000202: 31,2340 22130 QXCH BUF 033294,000203: 31,2341 52155 DXCH MPAC 033295,000204: 31,2342 07106 TC DMP 033296,000205: 31,2343 01243 ADRES MASS 033297,000206: # Page 797 033298,000207: 31,2344 07106 TC DMP # LEAVES PROPERLY SCALED FORCE IN MPAC 033299,000208: 31,2345 02005 ADRES SCALEFAC 033300,000209: 31,2346 07262 TC TPAGREE 033301,000210: 31,2347 30154 CA MPAC 033302,000211: 31,2350 00006 EXTEND 033303,000212: 31,2351 12354 BZF +3 033304,000213: 31,2352 34733 CAF POSMAX 033305,000214: 31,2353 00130 TC BUF 033306,000215: 31,2354 52156 DXCH MPAC +1 033307,000216: 31,2355 00130 TC BUF 033308,000217: 033309,000218: # CONSTANTS -- 033310,000219: 033311,000220: 31,2356 4737 FEXTRA = BIT13 # FEXT +5.13309020 E+4 033312,000221: 033313,000222: 31,2356 04143 /AF/CNST DEC .13107 033314,000223: 033315,000224: 31,2357 17777 OCT17777 OCT 17777 033316,000225: 31,2360 35074 4FMAXNOM DEC 14908 B-14 # EQUIVALENT TO 10,500 LBS. 033317,000226: 033318,000227: # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * End of include-file THROTTLE_CONTROL_ROUTINES.agc. Parent file is MAIN.agc