Source Code

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