Source Code

034184,000001: # Copyright: Public domain. 034185,000002: # Filename: THROTTLE_CONTROL_ROUTINES.agc 034186,000003: # Purpose: Part of the source code for Luminary 1A build 099. 034187,000004: # It is part of the source code for the Lunar Module's (LM) 034188,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 034189,000006: # Assembler: yaYUL 034190,000007: # Contact: HARTMUTH GUTSCHE <hgutsche@xplornet.com>. 034191,000008: # Website: www.ibiblio.org/apollo. 034192,000009: # Pages: 793-797 034193,000010: # Mod history: 2009-05-20 HG Transcribed from page images. 034194,000011: 034195,000012: # This source code has been transcribed or otherwise adapted from 034196,000013: # digitized images of a hardcopy from the MIT Museum. The digitization 034197,000014: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 034198,000015: # the Museum. Many thanks to both. The images (with suitable reduction 034199,000016: # in storage size and consequent reduction in image quality as well) are 034200,000017: # available online at www.ibiblio.org/apollo. If for some reason you 034201,000018: # find that the images are illegible, contact me at info@sandroid.org 034202,000019: # about getting access to the (much) higher-quality images which Paul 034203,000020: # actually created. 034204,000021: 034205,000022: # Notations on the hardcopy document read, in part: 034206,000023: 034207,000024: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 034208,000025: # 16:27 JULY 14, 1969 034209,000026: 034210,000027: # Page 793 034211,000028: 31,2216 BANK 31 034212,000029: 31,2000 SETLOC FTHROT 034213,000030: 31,2000 BANK 034214,000031: 31,2216 E7,1612 EBANK= PIF 034215,000032: 31,2216 COUNT* $$/THROT 034216,000033: 034217,000034: # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 034218,000035: # HERE FC, DESIRED THRUST, AND FP, PRESENT THRUST, UNWEIGHTED, ARE COMPUTED. 034219,000036: 034220,000037: 31,2216 31246 THROTTLE CA ABDELV # COMPUTE PRESENT ACCELERATION IN UNITS OF 034221,000038: 31,2217 00006 EXTEND # 2(-4) M/CS/CS, SAVING SERVICER TROUBLE 034222,000039: 31,2220 72417 MP /AF/CNST 034223,000040: 31,2221 00006 +3 EXTEND 034224,000041: 31,2222 23607 QXCH RTNHOLD 034225,000042: 31,2223 02400 AFDUMP TC MASSMULT 034226,000043: 31,2224 53470 DXCH FP # FP = PRESENT THRUST 034227,000044: 31,2225 00006 EXTEND 034228,000045: 31,2226 31464 DCA /AFC/ 034229,000046: 31,2227 02400 TC MASSMULT 034230,000047: 31,2230 55615 TS FC # FC = THRUST DESIRED BY GUIDANCE 034231,000048: 31,2231 53466 DXCH FCODD # FCODD = WHAT IT IS GOING TO GET 034232,000049: 034233,000050: # IF IT HAS BEEN LESS THAN 3 SECONDS SINCE THE LAST THROTTLING, AUGMENT FP USING THE FWEIGHT CALCULATED THEN. 034234,000051: 034235,000052: 31,2232 41617 CS TTHROT # THIS CODING ASSUMES A FLATOUT WITHIN 034236,000053: 31,2233 60025 AD TIME1 # 80 SECONDS BEFORE FIRST THROTTLE CALL 034237,000054: 31,2234 74733 MASK POSMAX 034238,000055: 31,2235 40000 COM 034239,000056: 31,2236 65002 AD 3SECS 034240,000057: 31,2237 00006 EXTEND 034241,000058: 31,2240 62244 BZMF WHERETO # BRANCH IF (TIME1-TTHROT +1) > 3 SECONDS 034242,000059: 31,2241 00006 EXTEND 034243,000060: 31,2242 31611 DCA FWEIGHT 034244,000061: 31,2243 21470 DAS FP 034245,000062: 034246,000063: # THIS LOGIC DETERMINES THE THROTTLING IN THE REGION 10% - 94%. THE MANUAL THROTTLE, NOMINALLY SET AT 034247,000064: # MINIMUM BY ASTRONAUT OR MISSION CONTROL PROGRAMS, PROVIDES THE LOWER BOUND. A STOP IN THE THROTTLE HARDWARE 034248,000065: # PROVIDES THE UPPER. 034249,000066: 034250,000067: 31,2244 35014 WHERETO CA EBANK5 # INITIALIZE L*WCR*T AND H*GHCR*T FROM 034251,000068: 31,2245 54003 TS EBANK # PAD LOADED ERASABLES IN W-MATRIX 034252,000069: # Page 794 034253,000070: 31,2246 E5,1506 EBANK= LOWCRIT 034254,000071: 31,2246 00006 EXTEND 034255,000072: 31,2247 31507 DCA LOWCRIT 034256,000073: 31,2250 52131 DXCH L*WCR*T 034257,000074: 31,2251 35016 CA EBANK7 034258,000075: 31,2252 54003 TS EBANK 034259,000076: 31,2253 E7,1612 EBANK= PIF 034260,000077: 31,2253 44755 CS ZERO # INITIALIZE PIFPSET 034261,000078: 31,2254 55606 TS PIFPSET 034262,000079: 31,2255 40131 CS H*GHCR*T 034263,000080: 31,2256 61620 AD FCOLD 034264,000081: 31,2257 00006 EXTEND 034265,000082: 31,2260 62272 BZMF LOWFCOLD # BRANCH IF FCOLD < OR = HIGHCRIT 034266,000083: 31,2261 40130 CS L*WCR*T 034267,000084: 31,2262 61465 AD FCODD 034268,000085: 31,2263 00006 EXTEND 034269,000086: 31,2264 62267 BZMF FCOMPSET # BRANCH IF FC < OR = LOWCRIT 034270,000087: 31,2265 31467 CA FP # SEE NOTE 1 034271,000088: 31,2266 12277 TCF FLATOUT1 034272,000089: 034273,000090: 31,2267 42002 FCOMPSET CS FMAXODD # SEE NOTE 2 034274,000091: 31,2270 61467 AD FP 034275,000092: 31,2271 12301 TCF FLATOUT2 034276,000093: 034277,000094: 31,2272 40131 LOWFCOLD CS H*GHCR*T 034278,000095: 31,2273 61465 AD FCODD 034279,000096: 31,2274 00006 EXTEND 034280,000097: 31,2275 62302 BZMF DOPIF # BRANCH IF FC < OR = HIGHCRIT 034281,000098: 034282,000099: 31,2276 32003 CA FMAXPOS # NO: THROTTLE-UP 034283,000100: 31,2277 53466 FLATOUT1 DXCH FCODD 034284,000101: 31,2300 34737 CA FEXTRA 034285,000102: 31,2301 55606 FLATOUT2 TS PIFPSET 034286,000103: 034287,000104: # NOTE 1 FC IS SET EQUAL TO FP SO PIF WILL BE ZERO. THIS IS DESIRABLE 034288,000105: # AS THERE IS ACTUALLY NO THROTTLE CHANGE. 034289,000106: 034290,000107: # NOTE2 HERE, SINCE WE ARE ABOUT TO RETURN TO THE THROTTLEABLE REGION 034291,000108: # (BELOW 55%) THE QUANTITY -(FMAXODD-FP) IS COMPUTED AND PUT 034292,000109: # INTO PIFPSET TO COMPENSATE FOR THE DIFFERENCE BETWEEN THE 034293,000110: # NUMBER OF BITS CORRESPONDING TO FULL THROTTLE (FMAXODD) AND THE 034294,000111: # NUMBER CORRESPONDING TO ACTUAL THRUST (FP). THUS THE TOTAL 034295,000112: # THROTTLE COMMAND PIF = FC - FP - (FMAXODD - FP) = FC - FMAXODD. 034296,000113: 034297,000114: 31,2302 03740 DOPIF TC FASTCHNG 034298,000115: 31,2303 00006 EXTEND 034299,000116: 31,2304 31466 DCA FCODD 034300,000117: 31,2305 55620 TS FCOLD 034301,000118: 31,2306 53613 DXCH PIF 034302,000119: 31,2307 00006 EXTEND 034303,000120: # Page 795 034304,000121: 31,2310 41470 DCS FP 034305,000122: 31,2311 21613 DAS PIF # PIF = FC - FP, NEVER EQUALS +0 034306,000123: 034307,000124: 31,2312 31612 DOIT CA PIF 034308,000125: 31,2313 61606 AD PIFPSET # ADD IN PIFPSET, WITHOUT CHANGING PIF 034309,000126: 31,2314 55614 TS PSEUDO55 034310,000127: 31,2315 54055 TS THRUST 034311,000128: 31,2316 34750 CAF BIT4 034312,000129: 31,2317 00006 EXTEND 034313,000130: 31,2320 05014 WOR CHAN14 034314,000131: 31,2321 30025 CA TIME1 034315,000132: 31,2322 55617 TS TTHROT 034316,000133: 034317,000134: # SINCE /AF/ IS NOT AN INSTANTANEOUS ACELERATION, BUT RATHER AN "AVERAGE" OF THE ACCELERATION LEVELS DURING 034318,000135: # THE PRECEEDING PIPA INTERVAL, AND SINCE FP IS COMPUTED DIRECTLY FROM /AF/, FP IN ORDER TO CORRESPOND TO THE 034319,000136: # ACTUAL THRUST LEVEL AT THE END OF THE INTERVAL MUST BE WEIGHTED BY 034320,000137: 034321,000138: # PIF(PPROCESS + TL) PIF /PIF/ 034322,000139: # FWEIGHT = ------------------ + ------------- 034323,000140: # PGUID 2 PGUID FRATE 034324,000141: 034325,000142: # WHERE PROCESS IS THE TIME BETWEEN PIPA READING AND THE START OF THROTTLING, PGUID IS THE GUIDANCE PERIOD, AND 034326,000143: # FRATE IS THE THROTTLING RATE (32 UNITS PER CENTISECOND). PGUID IS EITHER 1 OR 2 SECONDS. THE "TL" IN THE 034327,000144: # FIRST TERM REPRESENTS THE ENGINE'S RESPONSE LAG. HERE FWEIGHT IS COMPUTED FOR USE NEXT PASS. 034328,000145: 034329,000146: 31,2323 31762 CA THISTPIP +1 # INITIALIZE FWEIGHT COMP AS IF FOR P66 034330,000147: 31,2324 54130 TS BUF 034331,000148: 034332,000149: 31,2325 41011 CS MODREG # ARE WE IN FACT IN P66? 034333,000150: 31,2326 62501 AD DEC66 034334,000151: 31,2327 00006 EXTEND 034335,000152: 31,2330 12335 BZF FWCOMP # YES 034336,000153: 034337,000154: 31,2331 31235 CA PIPTIME +1 # NO: INITIALIZE FOR TWO SECOND PERIOD 034338,000155: 31,2332 54130 TS BUF 034339,000156: 31,2333 35003 CAF 4SECS 034340,000157: 31,2334 12336 TCF FWCOMP +1 034341,000158: 034342,000159: 31,2335 35000 FWCOMP CAF 2SECS 034343,000160: 31,2336 54002 +1 TS Q 034344,000161: 31,2337 00006 EXTEND 034345,000162: 31,2340 74746 MP BIT6 034346,000163: 31,2341 22131 LXCH BUF +1 034347,000164: 31,2342 40130 CS BUF # TIME OF LAST PIPA READING. 034348,000165: 31,2343 60025 AD TIME1 034349,000166: 31,2344 62004 AD THROTLAG # COMPENSATE FOR ENGINE RESPONSE LAG 034350,000167: 31,2345 74357 MASK LOW8 # MAKE SURE SMALL AND POSITIVE 034351,000168: 31,2346 22007 ZL 034352,000169: 31,2347 00006 EXTEND 034353,000170: # Page 796 034354,000171: 31,2350 10002 DV Q 034355,000172: 31,2351 00006 EXTEND 034356,000173: 31,2352 71612 MP PIF 034357,000174: 31,2353 60000 DOUBLE 034358,000175: 31,2354 53611 DXCH FWEIGHT 034359,000176: 31,2355 11612 CCS PIF 034360,000177: 31,2356 64753 AD ONE 034361,000178: 31,2357 12361 TCF +2 034362,000179: 31,2360 64753 AD ONE 034363,000180: 31,2361 00006 EXTEND 034364,000181: 31,2362 71612 MP PIF 034365,000182: 31,2363 00006 EXTEND 034366,000183: 31,2364 10131 DV BUF +1 034367,000184: 31,2365 22007 ZL 034368,000185: 31,2366 21611 DAS FWEIGHT 034369,000186: 034370,000187: 31,2367 01607 THDUMP TC RTNHOLD 034371,000188: 034372,000189: # FLATOUT THROTTLES UP THE DESCENT ENGINE, AND IS CALLED AS A BASIC SUBROUTINE. 034373,000190: 034374,000191: 31,2370 34737 FLATOUT CAF BIT13 # 4096 PULSES 034375,000192: 31,2371 55606 WHATOUT TS PIFPSET # USE PIFPSET SO FWEIGHT WILL BE ZERO 034376,000193: 31,2372 44755 CS ZERO 034377,000194: 31,2373 55620 TS FCOLD 034378,000195: 31,2374 55612 TS PIF 034379,000196: 31,2375 00006 EXTEND 034380,000197: 31,2376 23607 QXCH RTNHOLD 034381,000198: 31,2377 12312 TCF DOIT 034382,000199: 034383,000200: # MASSMULT SCALES ACCELERATION, ARRIVING IN A AND L IN UNITS OF 2(-4) M/CS/CS, TO FORCE IN PULSE UNITS. 034384,000201: 034385,000202: 31,2400 00006 MASSMULT EXTEND 034386,000203: 31,2401 22130 QXCH BUF 034387,000204: 31,2402 52155 DXCH MPAC 034388,000205: 31,2403 07103 TC DMP 034389,000206: 31,2404 01244 ADRES MASS 034390,000207: 31,2405 07103 TC DMP # LEAVES PROPERLY SCALED FORCE IN MPAC 034391,000208: 31,2406 02005 ADRES SCALEFAC 034392,000209: 31,2407 07257 TC TPAGREE 034393,000210: 31,2410 30154 CA MPAC 034394,000211: 31,2411 00006 EXTEND 034395,000212: 31,2412 12415 BZF +3 034396,000213: 31,2413 34733 CAF POSMAX 034397,000214: 31,2414 00130 TC BUF 034398,000215: 31,2415 52156 DXCH MPAC +1 034399,000216: 31,2416 00130 TC BUF 034400,000217: # Page 797 034401,000218: # CONSTANTS -- 034402,000219: 034403,000220: 31,2417 4737 FEXTRA = BIT13 # FEXT +5.13309020 E+4 034404,000221: 034405,000222: 31,2417 04143 /AF/CNST DEC .13107 034406,000223: 034407,000224: # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * End of include-file THROTTLE_CONTROL_ROUTINES.agc. Parent file is MAIN.agc