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