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.

058011,000002:                                                                                                  ## Copyright:   Public domain.
058012,000003:                                                                                                  ## Filename:    INFLIGHT_ALIGNMENT_ROUTINES.agc
058013,000004:                                                                                                  ## Purpose:     A section of Artemis revision 071.
058014,000005:                                                                                                  ##              It is part of the reconstructed source code for the first
058015,000006:                                                                                                  ##              release of the flight software for the Command Module's
058016,000007:                                                                                                  ##              (CM) Apollo Guidance Computer (AGC) for Apollo 15 through
058017,000008:                                                                                                  ##              17. The code has been recreated from a copy of Artemis 072.
058018,000009:                                                                                                  ##              It has been adapted such that the resulting bugger words
058019,000010:                                                                                                  ##              exactly match those specified for Artemis 071 in NASA
058020,000011:                                                                                                  ##              drawing 2021154-, which gives relatively high confidence
058021,000012:                                                                                                  ##              that the reconstruction is correct.
058022,000013:                                                                                                  ## Reference:   1354
058023,000014:                                                                                                  ## Assembler:   yaYUL
058024,000015:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
058025,000016:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
058026,000017:                                                                                                  ## Mod history: 2019-08-14 MAS  Created from Artemis 072.
058027,000018: 

Page 1354

058029,000020: 
058030,000021: 23,2000                                           SETLOC   INFLIGHT                              
058031,000022: 23,2000                                           BANK                                           
058032,000023: 
058033,000024: 23,3240  E5,1671                                  EBANK=   XSM                                   
058034,000025: 
058035,000026:                                                                                                  #  CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
058036,000027: 
058037,000028:                                                                                                  #  THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE
058038,000029:                                                                                                  #  HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC.
058039,000030: 
058040,000031:                                                                                                  #  THE OUTPUTS ARE THE THREE GYRO TORQUING ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC,
058041,000032:                                                                                                  #  MGC, AND OGC RESPECTIVELY.
058042,000033: 
058043,000034: 23,3240                                           COUNT*   $$/INFLT                              
058044,000035: 23,3240           71220        CALCGTA            ITA      DLOAD                                 #  PUSHDOWN 00-03,16D-27D,34D-37D
058045,000036: 23,3241           00051                                    S2                                    #  XDC = (XD1 XD2 XD3)
058046,000037: 23,3242           02714                                    XDC                                   #  YDC = (YD1 YD2 YD3)
058047,000038: 23,3243           65325                           PDDL     PDDL                                  #  ZDC = (ZD1 ZD2 ZD3)
058048,000039: 23,3244           15336                                    HI6ZEROS                              
058049,000040: 23,3245           02720                                    XDC        +4                         
058050,000041: 23,3246           55476                           DCOMP    VDEF                                  
058051,000042: 23,3247           77656                           UNIT                                           
058052,000043: 23,3250           14027                           STODL    ZPRIME                                #  ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3)
058053,000044: 23,3251           00027                                    ZPRIME                                
058054,000045: 
058055,000046: 23,3252           77742                           SR1                                            
058056,000047: 23,3253           14023                           STODL    SINTH                                 #  SIN(IGC) = ZP1
058057,000048: 23,3254           00033                                    ZPRIME     +4                         
058058,000049: 23,3255           77742                           SR1                                            
058059,000050: 23,3256           34021                           STCALL   COSTH                                 #  COS(IGC) = ZP3
058060,000051: 23,3257           47311                                    ARCTRIG                               
058061,000052: 
058062,000053: 23,3260           16762                           STODL    IGC                                   #  Y GYRO TORQUING ANGLE   FRACTION OF REV.
058063,000054: 23,3261           02716                                    XDC        +2                         
058064,000055: 23,3262           77742                           SR1                                            
058065,000056: 23,3263           14023                           STODL    SINTH                                 #  SIN(MGC) = XD2
058066,000057: 23,3264           00027                                    ZPRIME                                
058067,000058: 
058068,000059: 23,3265           65205                           DMP      PDDL                                  
058069,000060: 23,3266           02720                                    XDC        +4                         #  PD00 = (ZP1)(XD3)
058070,000061: 23,3267           00033                                    ZPRIME     +4                         
058071,000062: 
058072,000063: 23,3270           45205                           DMP      DSU                                   
058073,000064: 23,3271           02714                                    XDC                                   #  MPAC = (ZP3)(XD1)
058074,000065: 23,3272           77626                           STADR                                          
058075,000066: 23,3273           43756                           STCALL   COSTH                                 #  COS(MGC) = MPAC - PD00
058076,000067: 23,3274           47311                                    ARCTRIG                               
058077,000068: 23,3275           26764                           STOVL    MGC                                   #  Z GYRO TORQUING ANGLE   FRACTION OF REV.

Page 1355

058079,000070: 23,3276           00027                                    ZPRIME                                
058080,000071: 23,3277           77641                           DOT                                            
058081,000072: 23,3300           02730                                    ZDC                                   
058082,000073: 23,3301           24021                           STOVL    COSTH                                 #  COS(OGC) = ZP . ZDC
058083,000074: 23,3302           00027                                    ZPRIME                                
058084,000075: 23,3303           77641                           DOT                                            
058085,000076: 23,3304           02722                                    YDC                                   
058086,000077: 23,3305           34023                           STCALL   SINTH                                 #  SIN(OGC) = ZP . YDC
058087,000078: 23,3306           47311                                    ARCTRIG                               
058088,000079: 
058089,000080: 23,3307           36760                           STCALL   OGC                                   #  X GYRO TORQUING ANGLE   FRACTION OF REV.
058090,000081: 23,3310           00051                                    S2                                    
058091,000082: 

Page 1356

058093,000084: 
058094,000085:                                                                                                  #  ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE.
058095,000086: 
058096,000087:                                                                                                  #  THE INPUTS ARE SIN/4 AND COS/4 STORED DP AT SINTH AND COSTH.
058097,000088: 
058098,000089:                                                                                                  #  THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO
058099,000090:                                                                                                  #  AVAILABLE AT MPAC.
058100,000091: 
058101,000092: 23,3311           51545        ARCTRIG            DLOAD    ABS                                   #  PUSHDOWN  16D-21D
058102,000093: 23,3312           00023                                    SINTH                                 
058103,000094: 23,3313           50025                           DSU      BMN                                   
058104,000095: 23,3314           07525                                    QTSN45                                #  ABS(SIN/4) - SIN(45)/4
058105,000096: 23,3315           47324                                    TRIG1                                 #  IF (-45,45) OR (135,-135)
058106,000097: 
058107,000098: 23,3316           72545                           DLOAD    SL1                                   #  (45,135) OR (-135,-45)
058108,000099: 23,3317           00021                                    COSTH                                 
058109,000100: 23,3320           75326                           ACOS     SIGN                                  
058110,000101: 23,3321           00023                                    SINTH                                 
058111,000102: 23,3322           00025                           STORE    THETA                                 #  X = ARCCOS(COS) WITH SIGN(SIN)
058112,000103: 23,3323           77616                           RVQ                                            
058113,000104: 
058114,000105: 23,3324           72545        TRIG1              DLOAD    SL1                                   #  (-45,45) OR (135,-135)
058115,000106: 23,3325           00023                                    SINTH                                 
058116,000107: 23,3326           77736                           ASIN                                           
058117,000108: 23,3327           14025                           STODL    THETA                                 #  X = ARCSIN(SIN) WITH SIGN(SIN)
058118,000109: 23,3330           00021                                    COSTH                                 
058119,000110: 23,3331           77640                           BMN                                            
058120,000111: 23,3332           47335                                    TRIG2                                 #  IF (135,-135)
058121,000112: 
058122,000113: 23,3333           43545                           DLOAD    RVQ                                   
058123,000114: 23,3334           00025                                    THETA                                 #  X = ARCSIN(SIN)   (-45,45)
058124,000115: 
058125,000116: 23,3335           75345        TRIG2              DLOAD    SIGN                                  #  (135,-135)
058126,000117: 23,3336           15334                                    HIDPHALF                              
058127,000118: 23,3337           00023                                    SINTH                                 
058128,000119: 23,3340           77625                           DSU                                            
058129,000120: 23,3341           00025                                    THETA                                 
058130,000121: 23,3342           00025                           STORE    THETA                                 #  X = .5 WITH SIGN(SIN) - ARCSIN(SIN)
058131,000122: 23,3343           77616                           RVQ                                            #        (+) - (+) OR (-) - (-)
058132,000123: 

Page 1357

058134,000125:                                                                                                  #  SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN
058135,000126:                                                                                                  #  COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED
058136,000127:                                                                                                  #  FLIGHT SUBROUTINES.
058137,000128: 

Page 1358

058139,000130:                                                                                                  #  CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION.
058140,000131: 
058141,000132:                                                                                                  #  THE INPUTS ARE  1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT
058142,000133:                                                                                                  #  VECTORS ARE STORED AT XNB, YNB, AND ZNB.  2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME
058143,000134:                                                                                                  #  COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM.
058144,000135: 
058145,000136:                                                                                                  #  THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2.
058146,000137: 
058147,000138: 23,3344           77601        CALCGA             SETPD                                          #  PUSHDOWN 00-05, 16D-21D, 34D-37D
058148,000139: 23,3345           00001                                    0                                     
058149,000140: 23,3346           47375                           VLOAD    VXV                                   
058150,000141: 23,3347           02714                                    XNB                                   #  XNB = OGA (OUTER GIMBAL AXIS)
058151,000142: 23,3350           02700                                    YSM                                   #  YSM = IGA (INNER GIMBAL AXIS)
058152,000143: 23,3351           41456                           UNIT     PUSH                                  #  PD0 = UNIT(OGA X IGA) = MGA
058153,000144: 
058154,000145: 23,3352           44041                           DOT      ITA                                   
058155,000146: 23,3353           02730                                    ZNB                                   
058156,000147: 23,3354           00051                                    S2                                    
058157,000148: 23,3355           24021                           STOVL    COSTH                                 #  COS(OG) = MGA . ZNB
058158,000149: 23,3356           00001                                    0                                     
058159,000150: 23,3357           77641                           DOT                                            
058160,000151: 23,3360           02722                                    YNB                                   
058161,000152: 23,3361           34023                           STCALL   SINTH                                 #  SIN(OG) = MGA . YNB
058162,000153: 23,3362           47311                                    ARCTRIG                               
058163,000154: 23,3363           26760                           STOVL    OGC                                   
058164,000155: 23,3364           00001                                    0                                     
058165,000156: 
058166,000157: 23,3365           50235                           VXV      DOT                                   #  PROVISION FOR MG ANGLE OF 90 DEGREES
058167,000158: 23,3366           02714                                    XNB                                   
058168,000159: 23,3367           02700                                    YSM                                   
058169,000160: 23,3370           77752                           SL1                                            
058170,000161: 23,3371           24021                           STOVL    COSTH                                 #  COS(MG) = IGA . (MGA X OGA)
058171,000162: 23,3372           02700                                    YSM                                   
058172,000163: 23,3373           77641                           DOT                                            
058173,000164: 23,3374           02714                                    XNB                                   
058174,000165: 23,3375           34023                           STCALL   SINTH                                 #  SIN(MG) = IGA . OGA
058175,000166: 23,3376           47311                                    ARCTRIG                               
058176,000167: 23,3377           02764                           STORE    MGC                                   
058177,000168: 
058178,000169: 23,3400           45246                           ABS      DSU                                   
058179,000170: 23,3401           07527                                    .166...                               
058180,000171: 23,3402           77644                           BPL                                            
058181,000172: 23,3403           47422                                    GIMLOCK1                              #  IF ANGLE GREATER THAN 60 DEGREES
058182,000173: 
058183,000174: 23,3404           50375        CALCGA1            VLOAD    DOT                                   
058184,000175: 23,3405           02706                                    ZSM                                   
058185,000176: 23,3406           00001                                    0                                     
058186,000177: 23,3407           24021                           STOVL    COSTH                                 #  COS(IG) = ZSM . MGA
058187,000178: 23,3410           02672                                    XSM                                   

Page 1359

058189,000180: 23,3411           45441                           DOT      STADR                                 
058190,000181: 23,3412           43754                           STCALL   SINTH                                 #  SIN(IG) = XSM . MGA
058191,000182: 23,3413           47311                                    ARCTRIG                               
058192,000183: 
058193,000184: 23,3414           26762                           STOVL    IGC                                   
058194,000185: 23,3415           02760                                    OGC                                   
058195,000186: 23,3416           77634                           RTB                                            
058196,000187: 23,3417           45644                                    V1STO2S                               
058197,000188: 23,3420           35310                           STCALL   THETAD                                
058198,000189: 23,3421           00051                                    S2                                    
058199,000190: 
058200,000191: 23,3422           77776        GIMLOCK1           EXIT                                           
058201,000192: 23,3423           05671                           TC       ALARM                                 
058202,000193: 23,3424           00401                           OCT      00401                                 
058203,000194: 23,3425           05547                           TC       UPFLAG                                #  GIMBAL LOCK HAS OCCURED
058204,000195: 23,3426           00056                           ADRES    GLOKFAIL                              
058205,000196: 
058206,000197: 23,3427           06006                           TC       INTPRET                               
058207,000198: 23,3430           77650                           GOTO                                           
058208,000199: 23,3431           47404                                    CALCGA1                               
058209,000200: 

Page 1360

058211,000202: 
058212,000203:                                                                                                  #  AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM.
058213,000204: 
058214,000205:                                                                                                  #  THE INPUTS ARE  1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD.  2) THE STAR2 VECTOR
058215,000206:                                                                                                  #  REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6.  3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED
058216,000207:                                                                                                  #  AT LOCATION 6 OF THE VAC AREA.  4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF
058217,000208:                                                                                                  #  THE VAC AREA.
058218,000209: 
058219,000210:                                                                                                  #  THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B. THE THREE HALF-UNIT VECTORS ARE STORED
058220,000211:                                                                                                  #  AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D.
058221,000212: 
058222,000213: 23,3432           66370        AXISGEN            AXT,1    SSP                                   #  PUSHDOWN 00-30D,34D-37D
058223,000214: 23,3433           02743                                    STARAD     +6                         
058224,000215: 23,3434           00051                                    S1                                    
058225,000216: 23,3435           02727                                    STARAD     -6                         
058226,000217: 
058227,000218: 23,3436           77601                           SETPD                                          
058228,000219: 23,3437           00001                                    0                                     
058229,000220: 23,3440           46773        AXISGEN1           VLOAD*   VXV*                                  #  06D   UA = S1
058230,000221: 23,3441           02752                                    STARAD     +12D,1                     #        STARAD +00D     UB = S1
058231,000222: 23,3442           02760                                    STARAD     +18D,1                     
058232,000223: 23,3443           77656                           UNIT                                           #  12D   VA = UNIT(S1 X S2)
058233,000224: 23,3444           06760                           STORE    STARAD     +18D,1                     #        STARAD +06D     VB = UNIT(S1 X S2)
058234,000225: 23,3445           77773                           VLOAD*                                         
058235,000226: 23,3446           02752                                    STARAD     +12D,1                     
058236,000227: 
058237,000228: 23,3447           76433                           VXV*     VSL1                                  
058238,000229: 23,3450           02760                                    STARAD     +18D,1                     #  18D   WA = UA X VA
058239,000230: 23,3451           06766                           STORE    STARAD     +24D,1                     #        STARAD +12D     WB = UB X VB
058240,000231: 
058241,000232: 23,3452           77700                           TIX,1                                          
058242,000233: 23,3453           47440                                    AXISGEN1                              
058243,000234: 
058244,000235: 23,3454           66160                           AXC,1    SXA,1                                 
058245,000236: 23,3455           00006                                    6                                     
058246,000237: 23,3456           00036                                    30D                                   
058247,000238: 
058248,000239: 23,3457           66370                           AXT,1    SSP                                   
058249,000240: 23,3460           00022                                    18D                                   
058250,000241: 23,3461           00051                                    S1                                    
058251,000242: 23,3462           00006                                    6                                     
058252,000243: 
058253,000244: 23,3463           66374                           AXT,2    SSP                                   
058254,000245: 23,3464           00006                                    6                                     
058255,000246: 23,3465           00052                                    S2                                    
058256,000247: 23,3466           00002                                    2                                     
058257,000248: 
058258,000249: 23,3467           76720        AXISGEN2           XCHX,1   VLOAD*                                
058259,000250: 23,3470           00036                                    30D                                   #  X1=-6 X2=+6   X1=-6 X2=+4     X1=-6 X2=+2
058260,000251: 23,3471           00001                                    0,1                                   
058261,000252: 

Page 1361

058263,000254: 23,3472           62757                           VXSC*    PDVL*                                 #  J=(UA)(UB1)   J=(UA)(UB2)     J=(UA)(UB3)
058264,000255: 23,3473           75033                                    STARAD     +6,2                       
058265,000256: 23,3474           00007                                    6,1                                   
058266,000257: 23,3475           77757                           VXSC*                                          
058267,000258: 23,3476           75025                                    STARAD     +12D,2                     
058268,000259: 23,3477           30031                           STOVL*   24D                                   #  K=(VA)(VB1)   J=(VA)(VB2)     J=(VA)(VB3)
058269,000260: 23,3500           00015                                    12D,1                                 
058270,000261: 
058271,000262: 23,3501           53357                           VXSC*    VAD                                   
058272,000263: 23,3502           75017                                    STARAD     +18D,2                     #  L=(WA)(WB1)   J=(WA)(WB2)     J=(WA)(WB3)
058273,000264: 23,3503           76455                           VAD      VSL1                                  
058274,000265: 23,3504           00031                                    24D                                   
058275,000266: 23,3505           53520                           XCHX,1   UNIT                                  
058276,000267: 23,3506           00036                                    30D                                   
058277,000268: 23,3507           06736                           STORE    XDC        +18D,1                     #  XDC = L+J+K   YDC = L+J+K     ZDC = L+J+K
058278,000269: 
058279,000270: 23,3510           77700                           TIX,1                                          
058280,000271: 23,3511           47512                                    AXISGEN3                              
058281,000272: 
058282,000273: 23,3512           77704        AXISGEN3           TIX,2                                          
058283,000274: 23,3513           47467                                    AXISGEN2                              
058284,000275: 
058285,000276: 23,3514           77775                           VLOAD                                          
058286,000277: 23,3515           02714                                    XDC                                   
058287,000278: 23,3516           26736                           STOVL    STARAD                                
058288,000279: 23,3517           02722                                    YDC                                   
058289,000280: 23,3520           26744                           STOVL    STARAD     +6                         
058290,000281: 23,3521           02730                                    ZDC                                   
058291,000282: 23,3522           02752                           STORE    STARAD     +12D                       
058292,000283: 
058293,000284: 23,3523           77616                           RVQ                                            
058294,000285: 

Page 1362

058296,000287: 23,3524           05520 26075  QTSN45             2DEC     .1768                                 
058297,000288: 23,3526           05252 25253  .166...            2DEC     .1666666667                            
058298,000289: 

Page 1363 Empty page

058301,000292: 
058302,000293: 

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