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