Source Code
|
These source-code files are part of a reconstructed copy of LUM69 Revision 2, the
flown Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction began with source code of Luminary 69 revision 0 previously transcribed from a digitized copy of that program. The code was then updated by back-porting the R-2 lunar potential model from previously-transcribed source code of Luminary 99. These required changes were described in the original Luminary memos 75 and 78. The reconstructed code was verified by matching memory-bank checksums to those listed in drawing 2021152G. Note that page numbers in the reconstructed code match those on the Luminary 069 printout, although the added code would likely have changed page numbers for a real LUM69 Revision 2 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. |
034758,000002: ## Copyright: Public domain.
034759,000003: ## Filename: THROTTLE_CONTROL_ROUTINES.agc
034760,000004: ## Purpose: A section of LUM69 revision 2.
034761,000005: ## It is part of the reconstructed source code for the flown
034762,000006: ## version of the flight software for the Lunar Module's (LM)
034763,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
034764,000008: ## been recreated from a copy of Luminary revsion 069, using
034765,000009: ## changes present in Luminary 099 which were described in
034766,000010: ## Luminary memos 75 and 78. The code has been adapted such
034767,000011: ## that the resulting bugger words exactly match those specified
034768,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
034769,000013: ## relatively high confidence that the reconstruction is correct.
034770,000014: ## Reference: pp. 797-801
034771,000015: ## Assembler: yaYUL
034772,000016: ## Contact: Ron Burkey <info@sandroid.org>.
034773,000017: ## Website: www.ibiblio.org/apollo/index.html
034774,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
034775,000019:
|
Page 797 |
034777,000021:
034778,000022: 31,2247 BANK 31
034779,000023: 31,2000 SETLOC FTHROT
034780,000024: 31,2000 BANK
034781,000025: 31,2247 E7,1610 EBANK= PIF
034782,000026: 31,2247 COUNT* $$/THROT
034783,000027:
034784,000028: # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
034785,000029: # HERE FC, DESIRED THRUST, AND FP, PRESENT THRUST, UNWEIGHTED, ARE COMPUTED.
034786,000030:
034787,000031: 31,2247 31246 THROTTLE CA ABDELV # COMPUTE PRESENT ACCELERATION IN UNITS OF
034788,000032: 31,2250 00006 EXTEND # 2(-4) M/CS/CS, SAVING SERVICER TROUBLE
034789,000033: 31,2251 72444 MP /AF/CNST
034790,000034: 31,2252 00006 +3 EXTEND
034791,000035: 31,2253 23605 QXCH RTNHOLD
034792,000036: 31,2254 02425 AFDUMP TC MASSMULT
034793,000037: 31,2255 53563 DXCH FP # FP = PRESENT THRUST
034794,000038: 31,2256 00006 EXTEND
034795,000039: 31,2257 31574 DCA /AFC/
034796,000040: 31,2260 02425 TC MASSMULT
034797,000041: 31,2261 55613 TS FC # FC = THRUST DESIRED BY GUIDANCE
034798,000042: 31,2262 53561 DXCH FCODD # FCODD = WHAT IT IS GOING TO GET
034799,000043:
034800,000044: # IF IT HAS BEEN LESS THAN 3 SECONDS SINCE THE LAST THROTTLING, AUGMENT FP USING THE FWEIGHT CALCULATED THEN.
034801,000045:
034802,000046: 31,2263 41615 CS TTHROT # THIS CODING ASSUMES A FLATOUT WITHIN
034803,000047: 31,2264 60025 AD TIME1 # 80 SECONDS BEFORE FIRST THROTTLE CALL
034804,000048: 31,2265 74733 MASK POSMAX
034805,000049: 31,2266 40000 COM
034806,000050: 31,2267 65002 AD 3SECS
034807,000051: 31,2270 00006 EXTEND
034808,000052: 31,2271 62275 BZMF WHERETO # BRANCH IF (TIME1-TTHROT +1) > 3 SECONDS
034809,000053: 31,2272 00006 EXTEND
034810,000054: 31,2273 31607 DCA FWEIGHT
034811,000055: 31,2274 21563 DAS FP
034812,000056:
034813,000057: # THIS LOGIC DETERMINES THE THROTTLING IN THE REGION 10% - 94%. THE MANUAL THROTTLE, NOMINALLY SET AT
034814,000058: # MINIMUM BY ASTRONAUT OR MISSION CONTROL PROGRAMS, PROVIDES THE LOWER BOUND. A STOP IN THE THROTTLE HARDWARE
034815,000059: # PROVIDES THE UPPER.
034816,000060:
034817,000061: 31,2275 35014 WHERETO CA EBANK5 # INITIALIZE L*WCR*T AND H*GHCR*T FROM
034818,000062: 31,2276 54003 TS EBANK # PAD LOADED ERASABLES IN W-MATRIX
|
Page 798 |
034820,000064: 31,2277 E5,1476 EBANK= LOWCRIT
034821,000065: 31,2277 00006 EXTEND
034822,000066: 31,2300 31477 DCA LOWCRIT
034823,000067: 31,2301 52131 DXCH L*WCR*T
034824,000068: 31,2302 35016 CA EBANK7
034825,000069: 31,2303 54003 TS EBANK
034826,000070: 31,2304 E7,1610 EBANK= PIF
034827,000071: 31,2304 44755 CS ZERO # INITIALIZE PIFPSET
034828,000072: 31,2305 55604 TS PIFPSET
034829,000073: 31,2306 40131 CS H*GHCR*T
034830,000074: 31,2307 61616 AD FCOLD
034831,000075: 31,2310 00006 EXTEND
034832,000076: 31,2311 62323 BZMF LOWFCOLD # BRANCH IF FCOLD < OR = HIGHCRIT
034833,000077: 31,2312 40130 CS L*WCR*T
034834,000078: 31,2313 61560 AD FCODD
034835,000079: 31,2314 00006 EXTEND
034836,000080: 31,2315 62320 BZMF FCOMPSET # BRANCH IF FC < OR = LOWCRIT
034837,000081: 31,2316 31562 CA FP # SEE NOTE 1
034838,000082: 31,2317 12337 TCF FLATOUT1
034839,000083:
034840,000084: 31,2320 42002 FCOMPSET CS FMAXODD # SEE NOTE 2
034841,000085: 31,2321 61562 AD FP
034842,000086: 31,2322 12341 TCF FLATOUT2
034843,000087:
034844,000088: 31,2323 40131 LOWFCOLD CS H*GHCR*T
034845,000089: 31,2324 61560 AD FCODD
034846,000090: 31,2325 00006 EXTEND
034847,000091: 31,2326 62342 BZMF DOPIF # BRANCH IF FC < OR = HIGHCRIT
034848,000092:
034849,000093: 31,2327 30102 CA FLAGWRD6 # IS POUTFLAG SET?
034850,000094: 31,2330 74745 MASK POUTBIT
034851,000095: 31,2331 00006 EXTEND
034852,000096: 31,2332 12336 BZF FLATOUT1 -1
034853,000097:
034854,000098: 31,2333 30131 CA H*GHCR*T # YES: THROTTLE-UP ONLY TO HIGHCRIT
034855,000099: 31,2334 55560 TS FCODD
034856,000100: 31,2335 12342 TCF DOPIF
034857,000101:
034858,000102: 31,2336 32003 CA FMAXPOS # NO: THROTTLE-UP
034859,000103: 31,2337 53561 FLATOUT1 DXCH FCODD
034860,000104: 31,2340 34737 CA FEXTRA
034861,000105: 31,2341 55604 FLATOUT2 TS PIFPSET
034862,000106:
034863,000107: # NOTE 1 FC IS SET EQUAL TO FP SO PIF WILL BE ZERO. THIS IS DESIRABLE
034864,000108: # AS THERE IS ACTUALLY NO THROTTLE CHANGE.
034865,000109:
034866,000110: # NOTE2 HERE, SINCE WE ARE ABOUT TO RETURN TO THE THROTTLEABLE REGION
034867,000111: # (BELOW 55%) THE QUANTITY -(FMAXODD-FP) IS COMPUTED AND PUT
034868,000112: # INTO PIFPSET TO COMPENSATE FOR THE DIFFERENCE BETWEEN THE
034869,000113: # NUMBER OF BITS CORRESPONDING TO FULL THROTTLE (FMAXODD) AND THE
|
Page 799 |
034871,000115: # NUMBER CORRESPONDING TO ACTUAL THRUST (FP). THUS THE TOTAL
034872,000116: # THROTTLE COMMAND PIF = FC - FP - (FMAXODD - FP) = FC - FMAXODD.
034873,000117:
034874,000118: 31,2342 03721 DOPIF TC FASTCHNG # RESTART PROTECTION
034875,000119: 31,2343 00006 EXTEND
034876,000120: 31,2344 31561 DCA FCODD
034877,000121: 31,2345 55616 TS FCOLD
034878,000122: 31,2346 53611 DXCH PIF
034879,000123: 31,2347 00006 EXTEND
034880,000124: 31,2350 41563 DCS FP
034881,000125: 31,2351 21611 DAS PIF # PIF = FC - FP, NEVER EQUALS +0
034882,000126:
034883,000127: 31,2352 31610 DOIT CA PIF
034884,000128: 31,2353 61604 AD PIFPSET # ADD IN PIFPSET, WITHOUT CHANGING PIF
034885,000129: 31,2354 55612 TS PSEUDO55
034886,000130: 31,2355 54055 TS THRUST
034887,000131: 31,2356 34750 CAF BIT4
034888,000132: 31,2357 00006 EXTEND
034889,000133: 31,2360 05014 WOR CHAN14
034890,000134: 31,2361 30025 CA TIME1
034891,000135: 31,2362 55615 TS TTHROT
034892,000136:
034893,000137: # SINCE /AF/ IS NOT AN INSTANTANEOUS ACCELERATION, BUT RATHER AN "AVERAGE" OF THE ACCELERATION LEVELS DURING
034894,000138: # THE PRECEEDING PIPA INTERVAL, AND SINCE FP IS COMPUTED DIRECTLY FROM /AF/, FP IN ORDER TO CORRESPOND TO THE
034895,000139: # ACTUAL THRUST LEVEL AT THE END OF THE INTERVAL MUST BE WEIGHTED BY
034896,000140:
034897,000141: # PIF(PPROCESS + TL) PIF /PIF/
034898,000142: # FWEIGHT = ------------------ + -------------
034899,000143: # PGUID 2 PGUID FRATE
034900,000144:
034901,000145: # WHERE PPROCESS IS THE TIME BETWEEN PIPA READING AND THE START OF THROTTLING, PGUID IS THE GUIDANCE PERIOD, AND
034902,000146: # FRATE IS THE THROTTLING RATE (32 UNITS PER CENTISECOND). PGUID IS ASSUMED TO BE 2 SECONDS. THE "TL" IN THE
034903,000147: # FIRST TERM REPRESENTS THE ENGINE'S RESPONSE LAG. HERE FWEIGHT IS COMPUTED FOR USE NEXT PASS.
034904,000148:
034905,000149: 31,2363 35003 CA 4SECS
034906,000150: 31,2364 54002 TS Q
034907,000151: 31,2365 41235 CS PIPTIME +1 # TIME OF LAST PIPA READING
034908,000152: 31,2366 60025 AD TIME1
034909,000153: 31,2367 62004 AD THROTLAG # COMPENSATE FOR ENGINE RESPONSE LAG
034910,000154: 31,2370 74357 MASK LOW8 # MAKE SURE SMALL AND POSITIVE
034911,000155: 31,2371 22007 ZL
034912,000156: 31,2372 00006 EXTEND
034913,000157: 31,2373 10002 DV Q
034914,000158: 31,2374 00006 EXTEND
034915,000159: 31,2375 71610 MP PIF
034916,000160: 31,2376 60000 DOUBLE
034917,000161: 31,2377 53607 DXCH FWEIGHT
034918,000162: 31,2400 37715 CA 2.PG.FRT
034919,000163: 31,2401 54002 TS Q
|
Page 800 |
034921,000165: 31,2402 11610 CCS PIF
034922,000166: 31,2403 64753 AD ONE
034923,000167: 31,2404 12406 TCF +2
034924,000168: 31,2405 64753 AD ONE
034925,000169: 31,2406 00006 EXTEND
034926,000170: 31,2407 71610 MP PIF
034927,000171: 31,2410 00006 EXTEND
034928,000172: 31,2411 10002 DV Q
034929,000173: 31,2412 22007 ZL
034930,000174: 31,2413 21607 DAS FWEIGHT
034931,000175:
034932,000176: 31,2414 01605 THDUMP TC RTNHOLD
034933,000177:
034934,000178: # FLATOUT THROTTLES UP THE DESCENT ENGINE, AND IS CALLED AS A BASIC SUBROUTINE.
034935,000179:
034936,000180: 31,2415 34737 FLATOUT CAF BIT13 # 4096 PULSES
034937,000181: 31,2416 55604 WHATOUT TS PIFPSET # USE PIFPSET SO FWEIGHT WILL BE ZERO
034938,000182: 31,2417 44755 CS ZERO
034939,000183: 31,2420 55616 TS FCOLD
034940,000184: 31,2421 55610 TS PIF
034941,000185: 31,2422 00006 EXTEND
034942,000186: 31,2423 23605 QXCH RTNHOLD
034943,000187: 31,2424 12352 TCF DOIT
034944,000188:
034945,000189: # MASSMULT SCALES ACCELERATION, ARRIVING IN A AND L IN UNITS OF 2(-4) M/CS/CS, TO FORCE IN PULSE UNITS.
034946,000190:
034947,000191: 31,2425 00006 MASSMULT EXTEND
034948,000192: 31,2426 22130 QXCH BUF
034949,000193: 31,2427 00006 EXTEND
034950,000194: 31,2430 71244 MP MASS # LEAVES ODDLY SCALED FORCE IN A AND L
034951,000195: 31,2431 52155 DXCH MPAC
034952,000196: 31,2432 07102 TC DMP # LEAVES PROPERLY SCALED FORCE IM MPAC
034953,000197: 31,2433 02005 ADRES SCALEFAC
034954,000198: 31,2434 07256 TC TPAGREE
034955,000199: 31,2435 30154 CA MPAC
034956,000200: 31,2436 00006 EXTEND
034957,000201: 31,2437 12442 BZF +3
034958,000202: 31,2440 34733 CAF POSMAX
034959,000203: 31,2441 00130 TC BUF
034960,000204: 31,2442 52156 DXCH MPAC +1
034961,000205: 31,2443 00130 TC BUF
034962,000206:
034963,000207: # CONSTANTS:-
034964,000208:
034965,000209: 31,2444 4737 FEXTRA = BIT13
|
Page 801 |
034967,000211: 31,2444 7715 2.PG.FRT = PRIO31 # DECIMAL 12800
034968,000212: 31,2444 04143 /AF/CNST DEC .13107
034969,000213:
034970,000214: # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
End of include-file THROTTLE_CONTROL_ROUTINES.agc. Parent file is MAIN.agc