Source Code

These source-code files are part of a reconstructed copy of Artemis 071, the first release of the Apollo 15 through 17 Command Module (CM) Apollo Guidance Computer (AGC) software.

The reconstruction began with source code of Artemis 072 previously transcribed from a digitized copy of that program. The code was then updated by undoing changes between the two versions. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021154-. Note that page numbers in the reconstructed code match those on the Artemis 072 printout, although the changed code would likely have changed page numbers for a real Artemis 071 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.

022161,000002:                                                                                                  ## Copyright:   Public domain.
022162,000003:                                                                                                  ## Filename:    R31.agc
022163,000004:                                                                                                  ## Purpose:     A section of Artemis revision 071.
022164,000005:                                                                                                  ##              It is part of the reconstructed source code for the first
022165,000006:                                                                                                  ##              release of the flight software for the Command Module's
022166,000007:                                                                                                  ##              (CM) Apollo Guidance Computer (AGC) for Apollo 15 through
022167,000008:                                                                                                  ##              17. The code has been recreated from a copy of Artemis 072.
022168,000009:                                                                                                  ##              It has been adapted such that the resulting bugger words
022169,000010:                                                                                                  ##              exactly match those specified for Artemis 071 in NASA
022170,000011:                                                                                                  ##              drawing 2021154-, which gives relatively high confidence
022171,000012:                                                                                                  ##              that the reconstruction is correct.
022172,000013:                                                                                                  ## Reference:   507
022173,000014:                                                                                                  ## Assembler:   yaYUL
022174,000015:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
022175,000016:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
022176,000017:                                                                                                  ## Mod history: 2019-08-14 MAS  Created from Artemis 072.
022177,000018: 

Page 507

022179,000020: 31,2000                                           SETLOC   R31                                   
022180,000021: 31,2000                                           BANK                                           
022181,000022: 
022182,000023: 31,2000                                           COUNT*   $$/R3134                              
022183,000024: 31,2000           35045        R31CALL            CAF      PRIO3                                 
022184,000025: 31,2001           05135                           TC       FINDVAC                               
022185,000026: 31,2002  E4,1760                                  EBANK=   SUBEXIT                               
022186,000027: 31,2002           02031 62064                     2CADR    V83CALL                               
022187,000028: 
022188,000029: 31,2004           04636        DSPDELAY           TC       BANKCALL                              
022189,000030: 31,2005           01730                           CADR     1SECDELY                              
022190,000031: 31,2006           31247                           CA       EXTVBACT                              
022191,000032: 31,2007           74755                           MASK     BIT12                                 
022192,000033: 31,2010           00006                           EXTEND                                         
022193,000034: 31,2011           12004                           BZF      DSPDELAY                              
022194,000035: 
022195,000036: 31,2012           30105        DISPN5X            CA       FLAGWRD9                              #  TEST R31FLAG (IN SUNDANCE R31FLAG WILL
022196,000037: 31,2013           74765                           MASK     R31FLBIT                              #  ALWAYS BE SET AS R34 DOES NOT EXIST
022197,000038: 31,2014           00006                           EXTEND                                         
022198,000039: 31,2015           12020                           BZF      +3                                    
022199,000040: 31,2016           32135                           CAF      V16N54                                #  R31    USE NOUN 54
022200,000041: 31,2017           02021                           TC       +2                                    
022201,000042: 31,2020           32136                           CAF      V16N53                                #  R34    USE NOUN 53
022202,000043: 31,2021           04636                           TC       BANKCALL                              
022203,000044: 31,2022           20576                           CADR     GOMARKF                               
022204,000045: 31,2023           05626                           TC       B5OFF                                 
022205,000046: 31,2024           05626                           TC       B5OFF                                 
022206,000047: 31,2025           12012                           TCF      DISPN5X                               
022207,000048: 
022208,000049: 31,2026           06006        V83                TC       INTPRET                               
022209,000050: 31,2027           77650                           GOTO                                           
022210,000051: 31,2030           62177                                    HAVEBASE                              #  INTEG STATE VECTORS
022211,000052: 31,2031           06006        V83CALL            TC       INTPRET                               
022212,000053: 31,2032           77650                           GOTO                                           
022213,000054: 31,2033           62146                                    STATEXTP                              #  EXTRAPOLATE STATE VECTORS
022214,000055: 31,2034           52375        COMPDISP           VLOAD    VSU                                   
022215,000056: 31,2035           00001                                    RATT                                  
022216,000057: 31,2036           02320                                    RONE                                  
022217,000058: 31,2037           51406                           PUSH     ABVAL                                 #  RATT-RONE TO 0D               PD= 6
022218,000059: 31,2040           02312                           STORE    RANGE                                 #  METERS B-29
022219,000060: 31,2041           77301                           NORM     VLOAD                                 
022220,000061: 31,2042           00047                                    X1                                    #  RATT-RONE                     PD= 0
022221,000062: 31,2043           77762                           VSR1                                           
022222,000063: 31,2044           53457                           VSL*     UNIT                                  
022223,000064: 31,2045           20201                                    0,1                                   
022224,000065: 31,2046           52315                           PDVL     VSU                                   #  UNIT(LOS) TO 0D               PD= 6
022225,000066: 31,2047           00007                                    VATT                                  
022226,000067: 31,2050           02326                                    VONE                                  
022227,000068: 31,2051           77641                           DOT                                            #  (VATT-VONE).UNIT(LOS)         PD= 0

Page 508

022229,000070: 31,2052           77752                           SL1                                            
022230,000071: 31,2053           36314                           STCALL   RRATE                                 #  RANGE RATE M/CS B-7
022231,000072: 31,2054           47530                                    CDUTRIG                               #  TO INITIALIZE FOR *NBSM*
022232,000073: 31,2055           77624                           CALL                                           
022233,000074: 31,2056           62317                                    R34LOS                                #  NOTE. PDL MUST = 0.
022234,000075: 31,2057           53575        R34ANG             VLOAD    UNIT                                  
022235,000076: 31,2060           02320                                    RONE                                  
022236,000077: 31,2061           77715                           PDVL                                           #  UR TO 0D                      PD= 6
022237,000078: 31,2062           15334                                    THISAXIS                              #  UNITX FOR CM, UNITZ FOR LM
022238,000079: 31,2063           77214                           BON      VLOAD                                 #  CHK R31FLAG. ON=R31 THETA, OFF=R34 PHI
022239,000080: 31,2064           04713                                    R31FLAG                               
022240,000081: 31,2065           62067                                    +2                                    #        R31-THETA
022241,000082: 31,2066           00015                                    12D                                   
022242,000083: 31,2067           77624                           CALL                                           
022243,000084: 31,2070           47647                                    *NBSM*                                
022244,000085: 31,2071           41505                           VXM      PUSH                                  #  UXORZ TO 6D                   PD=12D
022245,000086: 31,2072           01734                                    REFSMMAT                              
022246,000087: 31,2073           72431                           VPROJ    VSL2                                  
022247,000088: 31,2074           00001                                    0D                                    
022248,000089: 31,2075           53445                           BVSU     UNIT                                  
022249,000090: 31,2076           00007                                    6D                                    
022250,000091: 31,2077           47315                           PDVL     VXV                                   #  UP/2 TO 12D                   PD=18D
022251,000092: 31,2100           02320                                    RONE                                  
022252,000093: 31,2101           02326                                    VONE                                  
022253,000094: 31,2102           47256                           UNIT     VXV                                   
022254,000095: 31,2103           02320                                    RONE                                  
022255,000096: 31,2104           63241                           DOT      PDVL                                  #  SIGN TO 12D, UP/2 TO MPAC     PD=18D
022256,000097: 31,2105           00015                                    12D                                   
022257,000098: 31,2106           50372                           VSL1     DOT                                   #  UP.UXORZ
022258,000099: 31,2107           00007                                    6D                                    
022259,000100: 31,2110           72565                           SIGN     SL1                                   
022260,000101: 31,2111           00015                                    12D                                   
022261,000102: 31,2112           77726                           ACOS                                           
022262,000103: 31,2113           26316                           STOVL    RTHETA                                
022263,000104: 31,2114           02320                                    RONE                                  
022264,000105: 31,2115           51041                           DOT      BPL                                   
022265,000106: 31,2116           00007                                    6D                                    
022266,000107: 31,2117           62124                                    +5                                    
022267,000108: 31,2120           44345                           DLOAD    BDSU                                  #  IF UXORZ.R NEG, RTHETA = 1 - RTHETA
022268,000109: 31,2121           02316                                    RTHETA                                
022269,000110: 31,2122           15344                                    DPPOSMAX                              
022270,000111: 31,2123           02316                           STORE    RTHETA                                #  RTHETA BETWEEN 0 AND 1 REV.
022271,000112: 31,2124           77776                 +5        EXIT                                           
022272,000113: 31,2125           34764                           CAF      BIT5                                  #  HAVE WE BEEN ANSWERED
022273,000114: 31,2126           71247                           MASK     EXTVBACT                              
022274,000115: 31,2127           00006                           EXTEND                                         
022275,000116: 31,2130           12137                           BZF      ISITP79                               
022276,000117: 
022277,000118: 31,2131           41247                           CS       EXTVBACT                              
022278,000119: 31,2132           74755                           MASK     BIT12                                 

Page 509

022280,000121: 31,2133           27247                           ADS      EXTVBACT                              
022281,000122: 
022282,000123: 31,2134           12026                           TCF      V83                                   
022283,000124: 31,2135           04066        V16N54             VN       1654                                  
022284,000125: 31,2136           04065        V16N53             VN       1653                                  
022285,000126: 31,2137           05354        ISITP79            TC       CHECKMM                               
022286,000127: 31,2140           00117                           MM       79         B-14                       
022287,000128: 31,2141           15524                           TCF      ENDEXT                                #  NO, DIE
022288,000129: 
022289,000130: 31,2142           05527                           TC       CLEARMRK                              
022290,000131: 31,2143           05561                           TC       DOWNFLAG                              
022291,000132: 31,2144           00226                           ADRES    PCMANFLG                              
022292,000133: 31,2145           14103                           TCF      GOTOPOOH                              
022293,000134: 

Page 510

022295,000136:                                                                                                  #  STATEXTP DOES AN INITIAL PRECISION EXTRAPOLATION OF THE
022296,000137:                                                                                                  #  LEM STATE VECTOR TO PRESENT TIME OR TO PIPTIME IF AV G
022297,000138:                                                                                                  #  IS ON AND SAVES AS BASE VECTOR. IF AV G IS ON RN + VN
022298,000139:                                                                                                  #  ARE USED AS THE CM STATE VECTOR AND THE INITIAL R RDOT
022299,000140:                                                                                                  #  RTHETA ARE COMPUTED WITH NO FURTHER INTEGRATION. IF AV
022300,000141:                                                                                                  #  G IS OFF A PRECISION EXTRAPOLATION IS MADE OF THE CM
022301,000142:                                                                                                  #  STATE VECTOR TO PRESENT TIME AND.....
022302,000143:                                                                                                  #    THE CM + LM STATE VECTORS ARE INTEGRATED TO PRES TIME
022303,000144:                                                                                                  #    USING PRECISION OR CONIC AS SURFFLAG IS SET OR CLEAR.
022304,000145:                                                                                                  #    IF AV G IS ON THEN SUBSEQUENT PASSES WILL PROVIDE
022305,000146:                                                                                                  #    USE OF RN + VN AS CM STATE VECTOR AND THE LM STATE
022306,000147:                                                                                                  #    VECTOR WILL BE PRECISION INTEGRATED USING LEMPREC
022307,000148:                                                                                                  #    IF SURFFLAG IS SET.
022308,000149:                                                                                                  #      CM STATE VECTOR RONE VONE + LM STATE VECTOR RATT
022309,000150:                                                                                                  #      VATT ARE USED IN COMPUTING R RDOT RTHETA.
022310,000151: 
022311,000152: 31,2146           43034        STATEXTP           RTB      BOF                                   #  INITIAL INTEGRATION
022312,000153: 31,2147           51751                                    LOADTIME                              
022313,000154: 31,2150           03751                                    V37FLAG                               
022314,000155: 31,2151           62154                                    BOTHGO                                #  AV G OFF, USE PRESENT TIME
022315,000156: 31,2152           77624                           CALL                                           
022316,000157: 31,2153           62301                                    GETRVN                                #       ON,  USE RN, VN, PIPTIME
022317,000158: 31,2154           02334        BOTHGO             STORE    BASETIME                              
022318,000159: 31,2155           34041                           STCALL   TDEC1                                 
022319,000160: 31,2156           27161                                    LEMPREC                               
022320,000161: 31,2157           77775                           VLOAD                                          #  BASE VECTOR, LM
022321,000162: 31,2160           00017                                    RATT1                                 
022322,000163: 31,2161           26224                           STOVL    BASEOTP                               #    POS.
022323,000164: 31,2162           00025                                    VATT1                                 
022324,000165: 31,2163           02240                           STORE    BASEOTV                               #    VEL.
022325,000166: 31,2164           71214                           BON      DLOAD                                 
022326,000167: 31,2165           03711                                    V37FLAG                               
022327,000168: 31,2166           62034                                    COMPDISP                              #  COMPUTE R RDOT RTHETA FROM
022328,000169:                                                                                                  #  RONE(RN) VONE(VN) RATT+VATT(LEMPREC)
022329,000170: 31,2167           00015                                    TAT                                   
022330,000171: 31,2170           34041                           STCALL   TDEC1                                 
022331,000172: 31,2171           27145                                    CSMPREC                               
022332,000173: 31,2172           77775                           VLOAD                                          #  BASE VECTOR, CM
022333,000174: 31,2173           00017                                    RATT1                                 
022334,000175: 31,2174           26254                           STOVL    BASETHP                               #   POS.
022335,000176: 31,2175           00025                                    VATT1                                 
022336,000177: 31,2176           02262                           STORE    BASETHV                               #   VEL.
022337,000178: 31,2177           47014        HAVEBASE           BON      RTB                                   #  SUBSEQUENT INTEGRATIONS
022338,000179: 31,2200           03711                                    V37FLAG                               
022339,000180: 31,2201           62264                                    GETRVN5                               
022340,000181: 31,2202           51751                                    LOADTIME                              
022341,000182: 31,2203           34041                           STCALL   TDEC1                                 #  AV G OFF. SET INTEG. OF CM
022342,000183: 31,2204           27516                                    INTSTALL                              
022343,000184: 31,2205           43175                           VLOAD    CLEAR                                 
022344,000185: 31,2206           02254                                    BASETHP                               

Page 511

022346,000187: 31,2207           00263                                    MOONFLAG                              
022347,000188: 31,2210           25535                           STOVL    RCV                                   
022348,000189: 31,2211           02262                                    BASETHV                               
022349,000190: 31,2212           15543                           STODL    VCV                                   
022350,000191: 31,2213           02334                                    BASETIME                              
022351,000192: 31,2214           43014                           BOF      SET                                   #  GET APPROPRIATE MOONFLAG SETTING
022352,000193: 31,2215           04343                                    MOONTHIS                              
022353,000194: 31,2216           62220                                    +2                                    
022354,000195: 31,2217           00063                                    MOONFLAG                              
022355,000196: 31,2220           77614                           CLEAR                                          
022356,000197: 31,2221           01673                                    INTYPFLG                              
022357,000198: 31,2222           43014                           BON      SET                                   
022358,000199: 31,2223           04307                                    SURFFLAG                              
022359,000200: 31,2224           62226                                    +2                                    #  PREC. IF LM DOWN
022360,000201: 31,2225           01473                                    INTYPFLG                              #  CONIC IF LM NOT DOWN
022361,000202: 31,2226           35517                           STCALL   TET                                   
022362,000203: 31,2227           27211                                    INTEGRVS                              #  INTEGRATION --- AT LAST---
022363,000204: 31,2230           77775                           VLOAD                                          
022364,000205: 31,2231           00001                                    RATT                                  
022365,000206: 31,2232           26320                           STOVL    RONE                                  
022366,000207: 31,2233           00007                                    VATT                                  
022367,000208: 31,2234           16326                           STODL    VONE                                  #  GET SET FOR CONIC EXTRAP.,OTHER
022368,000209: 31,2235           00015                                    TAT                                   
022369,000210: 31,2236           45014                           BON      CALL                                  
022370,000211: 31,2237           04307                                    SURFFLAG                              
022371,000212: 31,2240           62275                                    GETRVN6                               #  LEMPREC IF LM DOWN
022372,000213: 31,2241           27516                                    INTSTALL                              #  LEMCONIC IF NOT DOWN
022373,000214: 31,2242           77614                           SET                                            
022374,000215: 31,2243           01473                                    INTYPFLG                              
022375,000216: 31,2244           00041        OTHINT             STORE    TDEC1                                 #  ENTERED IF AV G ON TO INTEG LM
022376,000217: 31,2245           43175                           VLOAD    CLEAR                                 
022377,000218: 31,2246           02224                                    BASEOTP                               
022378,000219: 31,2247           00263                                    MOONFLAG                              
022379,000220: 31,2250           25535                           STOVL    RCV                                   
022380,000221: 31,2251           02240                                    BASEOTV                               
022381,000222: 31,2252           15543                           STODL    VCV                                   
022382,000223: 31,2253           02334                                    BASETIME                              
022383,000224: 31,2254           43014                           BOF      SET                                   
022384,000225: 31,2255           04343                                    MOONTHIS                              
022385,000226: 31,2256           62260                                    +2                                    
022386,000227: 31,2257           00063                                    MOONFLAG                              
022387,000228: 31,2260           35517                           STCALL   TET                                   
022388,000229: 31,2261           27211                                    INTEGRVS                              
022389,000230: 31,2262           77650                           GOTO                                           
022390,000231: 31,2263           62034                                    COMPDISP                              #  COMPUTE R RDOT RTHETA         
022391,000232: 31,2264           77624        GETRVN5            CALL                                           #  AV G ON
022392,000233: 31,2265           62301                                    GETRVN                                
022393,000234: 31,2266           45014                           BON      CALL                                  
022394,000235: 31,2267           04307                                    SURFFLAG                              
022395,000236: 31,2270           62275                                    GETRVN6                               #  LM DOWN, LMPREC

Page 512

022397,000238: 31,2271           27516                                    INTSTALL                              
022398,000239: 31,2272           52014                           CLEAR    GOTO                                  #  INTEGRVS (PREC) IF LM NOT DOWN
022399,000240: 31,2273           01673                                    INTYPFLG                              
022400,000241: 31,2274           62244                                    OTHINT                                
022401,000242: 31,2275           34041        GETRVN6            STCALL   TDEC1                                 
022402,000243: 31,2276           27161                                    LEMPREC                               
022403,000244: 31,2277           77650                           GOTO                                           
022404,000245: 31,2300           62034                                    COMPDISP                              #  COMPUTE R RDOT RTHETA
022405,000246: 31,2301           77620        GETRVN             STQ                                            
022406,000247: 31,2302           00000                                    0D                                    
022407,000248: 31,2303           52175                           VLOAD    GOTO                                  #  AV G ON, RONE = RN  VONE = VN
022408,000249: 31,2304           01030                                    RN                                    #   AND USE PIPTIME
022409,000250: 31,2305           62306                                    +1                                    
022410,000251: 31,2306           36320                           STCALL   RONE                                  
022411,000252: 31,2307           62310                                    +1                                    
022412,000253: 31,2310           52175                           VLOAD    GOTO                                  
022413,000254: 31,2311           01036                                    VN                                    
022414,000255: 31,2312           62313                                    +1                                    
022415,000256: 31,2313           16326                           STODL    VONE                                  
022416,000257: 31,2314           01044                                    PIPTIME                               
022417,000258: 31,2315           77650                           GOTO                                           
022418,000259: 31,2316           00000                                    0D                                    
022419,000260: 31,2000                                           SETLOC   R34                                   
022420,000261: 31,2000                                           BANK                                           
022421,000262: 31,2317                                           COUNT*   $$/R3134                              
022422,000263: 31,2317           77776        R34LOS             EXIT                                           
022423,000264: 31,2320           30036                           CA       CDUS                                  
022424,000265: 31,2321           50120                           INDEX    FIXLOC                                
022425,000266: 31,2322           54011                           TS       9D                                    
022426,000267: 31,2323           30035                           CA       CDUT                                  
022427,000268: 31,2324           50120                           INDEX    FIXLOC                                
022428,000269: 31,2325           54013                           TS       11D                                   
022429,000270: 31,2326           30120                           CA       FIXLOC                                
022430,000271: 31,2327           66211                           AD       SIX                                   
022431,000272: 31,2330           40000                           COM                                            
022432,000273: 31,2331           50120                           INDEX    FIXLOC                                
022433,000274: 31,2332           54046                           TS       X1                                    
022434,000275: 31,2333           06006                           TC       INTPRET                               
022435,000276: 31,2334           77624                           CALL                                           
022436,000277: 31,2335           46000                                    SXTNB                                 
022437,000278: 31,2336           34015                           STCALL   12D                                   
022438,000279: 31,2337           62057                                    R34ANG                                

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