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.

009477,000002:                                                                                                  ## Copyright:   Public domain.
009478,000003:                                                                                                  ## Filename:    AGS_INITIALIZATION.agc
009479,000004:                                                                                                  ## Purpose:     A section of LUM69 revision 2.
009480,000005:                                                                                                  ##              It is part of the reconstructed source code for the flown
009481,000006:                                                                                                  ##              version of the flight software for the Lunar Module's (LM)
009482,000007:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 10. The code has
009483,000008:                                                                                                  ##              been recreated from a copy of Luminary revsion 069, using
009484,000009:                                                                                                  ##              changes present in Luminary 099 which were described in
009485,000010:                                                                                                  ##              Luminary memos 75 and 78. The code has been adapted such
009486,000011:                                                                                                  ##              that the resulting bugger words exactly match those specified
009487,000012:                                                                                                  ##              for LUM69 revision 2 in NASA drawing 2021152B, which gives
009488,000013:                                                                                                  ##              relatively high confidence that the reconstruction is correct.
009489,000014:                                                                                                  ## Reference:   pp. 221-225
009490,000015:                                                                                                  ## Assembler:   yaYUL
009491,000016:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
009492,000017:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
009493,000018:                                                                                                  ## Mod history: 2019-07-27 MAS  Created from Luminary 69.
009494,000019: 

Page 221

009496,000021: 
009497,000022:                                                                                                  #  PROGRAM NAME:   AGS INITIALIZATION (R47)
009498,000023: 
009499,000024:                                                                                                  #  WRITTEN BY  :   RHODE/KILROY/FOLLETT
009500,000025: 
009501,000026:                                                                                                  #  MOD NO. :       0
009502,000027:                                                                                                  #  DATE    :       23 MARCH 1967
009503,000028:                                                                                                  #  MOD BY  :       KILROY
009504,000029: 
009505,000030:                                                                                                  #  MOD NO. :       1
009506,000031:                                                                                                  #  DATE    :       28 OCTOBER 1967
009507,000032:                                                                                                  #  MOD BY  :       FOLLETT
009508,000033: 
009509,000034:                                                                                                  #  FUNCT. DESC.:   (1) TO PROVIDE THE AGS ABORT ELECTRONICS ASSEMBLY(AEA) WITH THE LEM AND CSM STATE VECTORS
009510,000035:                                                                                                  #                  (POSITION,VELOCITY,TIME) IN LEM IMU COORDINATES BY MEANS OF THE LGC DIGITAL DOWNLINK.
009511,000036: 
009512,000037:                                                                                                  #                  (2) TO ZERO THE ICDU, LGC AND AEA GIMBAL ANGLE COUNTERS SIMULTANEOUSLY IN ORDER TO ESTABLISH A
009513,000038:                                                                                                  #                  COMMON ZERO REFERENCE FOR THE MEASUREMENT OF GIMBAL(EULER) ANGLES WHICH DEFINE LEM ATTITUDE
009514,000039:                                                                                                  #                  (3) TO ESTABLISH THE GROUND ELAPSED TIME OF AEA CLOCK ZERO.(IF AN AEA CLOCK ZERO IS
009515,000040:                                                                                                  #                  REQUESTED DURING THIS PROGRAM
009516,000041: 
009517,000042:                                                                                                  #  LOG SECTION :   AGS INITIALIZATION
009518,000043: 
009519,000044:                                                                                                  #  CALLING SEQ :   PROGRAM IS ENTERED WHEN ASTRONAUT KEYS V47E ON DSKY.
009520,000045:                                                                                                  #                  R47 MAY BE CALLED AT ANY TIME EXCEPT WHEN ANOTHER EXTENDED VERB IS IN PROGRESS
009521,000046: 
009522,000047:                                                                                                  #  SUBROUTINES
009523,000048:                                                                                                  #  CALLED      :
009524,000049: 
009525,000050:                                                                                                  #  NORMAL EXIT :   ENDEXT
009526,000051: 
009527,000052:                                                                                                  #  ALARM/ABORT :   ALARM - BAD REFSMMAT - CODE:220
009528,000053:                                                                                                  #                  OPERATOR ERROR IF V47 SELECTED DURING ANOTHER EXTENDED VERB.
009529,000054: 
009530,000055:                                                                                                  #  ERASABLES
009531,000056:                                                                                                  #  USED        :   SAMPTIME    (2) TIME OF :ENTER: KEYSTROKE
009532,000057:                                                                                                  #                  AGSK        (2) GROUND ELAPSED TIME OF THE AEA CLOCK :ZERO:
009533,000058:                                                                                                  #                  AGSBUFF   (140) CONTAINS AGS INITIALIZATION DATA (SEE :OUTPUT: BELOW)
009534,000059:                                                                                                  #                  AGSWORD     (1) PREVIOUS DOWNLIST SAVED HERE
009535,000060: 
009536,000061: 05,2447  E4,1604                                  EBANK=   AGSBUFF                               
009537,000062: 
009538,000063: 40,2000                                           BANK     40                                    
009539,000064: 32,2000                                           SETLOC   R47                                   
009540,000065: 32,2000                                           BANK                                           
009541,000066: 
009542,000067: 32,2015                                           COUNT*   $$/R47                                
009543,000068: 
009544,000069: 32,2015           34737        AGSINIT            CAF      REFSMBIT                              
009545,000070: 32,2016           70077                           MASK     FLAGWRD3                              #  CHECK REFSMFLG.
009546,000071: 32,2017           10000                           CCS      A                                     
009547,000072: 

Page 222

009549,000074: 32,2020           02027                           TC       REDSPTEM                              #  REFSMMAT IS OK
009550,000075: 32,2021           05567                           TC       ALARM                                 #  REFSMMAT IS BAD
009551,000076: 32,2022           00220                           OCT      220                                   
009552,000077: 32,2023           05472                           TC       ENDEXT                                
009553,000078: 
009554,000079: 32,2024           00006        NEWAGS             EXTEND                                         
009555,000080: 32,2025           30014                           DCA      SAMPTIME                              #  TIME OF THE :ENTER: KEYSTROKE
009556,000081: 32,2026           53421                           DXCH     AGSK                                  #  BECOMES NEW AEA CLOCK :ZERO:
009557,000082: 
009558,000083: 32,2027           00006        REDSPTEM           EXTEND                                         
009559,000084: 32,2030           31421                           DCA      AGSK                                  
009560,000085: 32,2031           53052                           DXCH     DSPTEMX                               
009561,000086: 32,2032           32202        AGSDISPK           CAF      V06N16                                
009562,000087: 32,2033           04616                           TC       BANKCALL                              #  R1 = 00XXX. HRS., R2 = 000XX MIN.,
009563,000088: 32,2034           20212                           CADR     GOMARKF                               #  R3 = 0XX.XX SEC.
009564,000089: 32,2035           05472                           TC       ENDEXT                                #  TERMINATE RETURN
009565,000090: 32,2036           02046                           TC       AGSVCALC                              #  PROCEED   RETURN
009566,000091: 32,2037           44746                           CS       BIT6                                  #  IS ENTER VIA A V32
009567,000092: 32,2040           60154                           AD       MPAC                                  
009568,000093: 32,2041           00006                           EXTEND                                         
009569,000094: 32,2042           12024                           BZF      NEWAGS                                #  YES, USE KEYSTROKE TIME FOR NEW AGSK
009570,000095: 
009571,000096: 32,2043           00006                           EXTEND                                         #  NO, NEW AGSK LOADED VIA V25
009572,000097: 32,2044           31052                           DCA      DSPTEMX                               #  LOADED INTO DSPTEMX BY KEYING
009573,000098: 32,2045           02026                           TC       REDSPTEM   -1                         #  V25E FOLLOWED BY HRS.,MINS.,SECS.
009574,000099:                                                                                                  #  DISPLAY THE NEW K
009575,000100: 
009576,000101: 32,2046           06036        AGSVCALC           TC       INTPRET                               
009577,000102: 32,2047           77614                           SET                                            
009578,000103: 32,2050           01076                                    NODOFLAG                              #  DONT ALLOW V37
009579,000104: 32,2051           77414                           SET      EXIT                                  
009580,000105: 32,2052           02076                                    XDSPFLAG                              
009581,000106: 
009582,000107: 32,2053           32202                           CAF      V06N16                                
009583,000108: 32,2054           04616                           TC       BANKCALL                              
009584,000109: 32,2055           20473                           CADR     EXDSPRET                              
009585,000110: 
009586,000111: 32,2056           06036                           TC       INTPRET                               #  EXTRAPOLATE LEM AND CSM STATE VECTORS
009587,000112: 32,2057           77634                           RTB                                            #  TO THE PRESENT TIME
009588,000113: 32,2060           21462                                    LOADTIME                              #  LOAD MPAC WITH TIME2,TIME1
009589,000114: 32,2061           34041                           STCALL   TDEC1                                 #  CALCULATE LEM STATE VECTOR
009590,000115: 32,2062           27057                                    LEMPREC                               
009591,000116: 32,2063           77624                           CALL                                           #  CALL ROUTINE TO CONVERT TO SM COORDS AND
009592,000117: 32,2064           64142                                    SCALEVEC                              #  PROVIDE PROPER SCALING
009593,000118: 32,2065           16205                           STODL    AGSBUFF                               #  (LEMPREC AND CSMPREC LEAVE TDEC1 IN TAT)
009594,000119: 32,2066           00015                                    TAT                                   #  TAT = TIME TO WHICH RATT1 AND VATT1 ARE
009595,000120: 32,2067           34041                           STCALL   TDEC1                                 #  COMPUTED(CSEC SINCE CLOCK START B-28).
009596,000121: 32,2070           27043                                    CSMPREC                               #  CALCULATE CSM STATE VECTOR FOR SAME TIME
009597,000122: 32,2071           77624                           CALL                                           
009598,000123: 32,2072           64142                                    SCALEVEC                              
009599,000124: 

Page 223

009601,000126: 32,2073           16213                           STODL    AGSBUFF    +6                         
009602,000127: 32,2074           00015                                    TAT                                   
009603,000128: 32,2075           56225                           DSU      DDV                                   #  CALCULATE AND STORE THE TIME
009604,000129: 32,2076           02021                                    AGSK                                  
009605,000130: 32,2077           24205                                    TSCALE                                
009606,000131: 32,2100           02221                           STORE    AGSBUFF    +12D                       
009607,000132: 32,2101           77776                           EXIT                                           
009608,000133: 
009609,000134: 32,2102           34753                           CAF      LAGSLIST                              
009610,000135: 32,2103           54332                           TS       DNLSTCOD                              
009611,000136: 
009612,000137: 32,2104           32206                           CAF      20SEC                                 #  DELAY FOR 20 SEC WHILE THE AGS
009613,000138: 32,2105           04616                           TC       BANKCALL                              #  DOWNLIST IS TRANSMITTED
009614,000139: 32,2106           01735                           CADR     DELAYJOB                              
009615,000140: 
009616,000141: 32,2107           31324                           CA       AGSWORD                               
009617,000142: 32,2110           54332                           TS       DNLSTCOD                              #  RETURN TO THE OLD DOWNLIST
009618,000143: 32,2111           34744                           CAF      IMUSEBIT                              
009619,000144: 32,2112           70074                           MASK     FLAGWRD0                              #  CHECK IMUSE FLAG.
009620,000145: 32,2113           10000                           CCS      A                                     
009621,000146: 32,2114           02132                           TC       AGSEND                                #  IMU IS BEING USED - DO NOT ZERO
009622,000147: 32,2115           11304        CKSTALL            CCS      IMUCADR                               #  CHECK FOR IMU USAGE WHICH AVOIDS THE
009623,000148: 32,2116           12121                           TCF      +3                                    #  IMUSE BIT:  I.E., IMU COMPENSATION.
009624,000149: 32,2117           12125                           TCF      +6                                    #  FREE.  GO AHEAD WITH THE IMU ZERO.
009625,000150: 32,2120           12121                           TCF      +1                                    
009626,000151: 32,2121           34363                 +3        CAF      TEN                                   #  WAIT .1 SEC AND TRY AGAIN.
009627,000152: 32,2122           04616                           TC       BANKCALL                              
009628,000153: 32,2123           01735                           CADR     DELAYJOB                              
009629,000154: 32,2124           12115                           TCF      CKSTALL                               
009630,000155: 
009631,000156: 32,2125           04616                 +6        TC       BANKCALL                              #  IMU IS NOT IN USE
009632,000157: 32,2126           16667                           CADR     IMUZERO                               #  SET IMU ZERO DISCRETE FOR 320MSECS
009633,000158: 32,2127           04616                           TC       BANKCALL                              #  WAIT 3 SEC FOR COUNTERS TO INCREMENT
009634,000159: 32,2130           17671                           CADR     IMUSTALL                              
009635,000160: 32,2131           02132                           TC       AGSEND                                
009636,000161: 32,2132           05516        AGSEND             TC       DOWNFLAG                              #  ALLOW V37
009637,000162: 32,2133           00054                           ADRES    NODOFLAG                              
009638,000163: 
009639,000164: 32,2134           32203                           CAF      V50N16                                
009640,000165: 32,2135           04616                           TC       BANKCALL                              
009641,000166: 32,2136           20220                           CADR     GOMARK3                               
009642,000167: 32,2137           15472                           TCF      ENDEXT                                
009643,000168: 32,2140           15472                           TCF      ENDEXT                                
009644,000169: 32,2141           05472                           TC       ENDEXT                                
009645,000170: 
009646,000171: 32,2142           64375        SCALEVEC           VLOAD    MXV                                   
009647,000172: 32,2143           00025                                    VATT1                                 
009648,000173: 32,2144           01734                                    REFSMMAT                              
009649,000174: 32,2145           72561                           VXSC     VSL2                                  
009650,000175: 32,2146           24212                                    VSCALE                                
009651,000176: 

Page 224

009653,000178: 32,2147           53255                           VAD      VAD                                   #  THIS SECTION ROUNDS THE VECTOR, AND
009654,000179: 32,2150           24214                                    AGSRND1                               #  CORRECTS FOR THE FACT THAT THE AGS
009655,000180: 32,2151           24222                                    AGSRND2                               #  IS A 2 S COMPLIMENT MACHINE WHILE THE
009656,000181: 32,2152           77634                           RTB                                            #  LGC IS A 1 S COMPLIMENT MACHINE.
009657,000182: 32,2153           21744                                    VECSGNAG                              
009658,000183: 32,2154           24025                           STOVL    VATT1                                 
009659,000184: 32,2155           00017                                    RATT1                                 
009660,000185: 32,2156           74321                           MXV      VXSC                                  
009661,000186: 32,2157           01734                                    REFSMMAT                              
009662,000187: 32,2160           24210                                    RSCALE                                
009663,000188: 32,2161           53212                           VSL8     VAD                                   #  AGAIN THIS SECTION ROUNDS.  TWO VECTORS
009664,000189: 32,2162           24214                                    AGSRND1                               #  ARE ADDED TO DEFEAT ALSIGNAG IN THE
009665,000190: 32,2163           47055                           VAD      RTB                                   #  CASE OF A HIGH-ORDER ZERO COUPLED WITH
009666,000191: 32,2164           24222                                    AGSRND2                               #  A LOW ORDER NEGATIVE PART.
009667,000192: 32,2165           21744                                    VECSGNAG                              
009668,000193: 32,2166           77750                           LXA,1                                          
009669,000194: 32,2167           00024                                    VATT1                                 
009670,000195: 32,2170           72130                           SXA,1    LXA,1                                 
009671,000196: 32,2171           00155                                    MPAC       +1                         
009672,000197: 32,2172           00026                                    VATT1      +2                         
009673,000198: 32,2173           72130                           SXA,1    LXA,1                                 
009674,000199: 32,2174           00160                                    MPAC       +4                         
009675,000200: 32,2175           00030                                    VATT1      +4                         
009676,000201: 32,2176           43530                           SXA,1    RVQ                                   
009677,000202: 32,2177           00162                                    MPAC       +6                         
009678,000203: 
009679,000204: 32,2200     4753               LAGSLIST           =        ONE                                   
009680,000205: 32,2200           00216        V01N14             VN       0114                                  
009681,000206: 32,2201           14400        V50N00A            VN       5000                                  
009682,000207: 32,2202     6010               V00N25             EQUALS   OCT31                                 
009683,000208: 32,2202           01420        V06N16             VN       0616                                  
009684,000209: 32,2203     4242               V00N34             EQUALS   34DEC                                 
009685,000210: 32,2203           14420        V50N16             VN       5016                                  
009686,000211: 32,2204           03100 00000  TSCALE             2DEC     100        B-10                       #  CSEC TO SEC SCALE FACTOR
009687,000212: 32,2206           03720        20SEC              DEC      2000       B-14                       
009688,000213: 32,2207           15077 05041  RSCALE             2DEC     3.280839   B-3                        #  METERS TO FEET SCALE FACTOR
009689,000214: 32,2211           24402 25724  VSCALE             2DEC     3.280839   E2         B-9             #  METERS/CS TO FEET/SEC SCALE FACTOR
009690,000215: 32,2213           00000 60000  AGSRND1            2OCT     0000060000                            
009691,000216: 32,2215           00000 60000                     2OCT     0000060000                            
009692,000217: 32,2217           00000 60000                     2OCT     0000060000                            
009693,000218: 32,2221           00000 37777  AGSRND2            2OCT     0000037777                            
009694,000219: 32,2223           00000 37777                     2OCT     0000037777                            
009695,000220: 

Page 225

009697,000222: 32,2225           00000 37777                     2OCT     0000037777                            
009698,000223: 
009699,000224: 32,2227  30,2000                                  SBANK=   LOWSUPER                              #  FOR SUBSEQUENT LOW 2CADRS.

End of include-file AGS_INITIALIZATION.agc.  Parent file is MAIN.agc