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.

023080,000002:                                                                                                  ## Copyright:   Public domain.
023081,000003:                                                                                                  ## Filename:    P15.agc
023082,000004:                                                                                                  ## Purpose:     A section of Artemis revision 071.
023083,000005:                                                                                                  ##              It is part of the reconstructed source code for the first
023084,000006:                                                                                                  ##              release of the flight software for the Command Module's
023085,000007:                                                                                                  ##              (CM) Apollo Guidance Computer (AGC) for Apollo 15 through
023086,000008:                                                                                                  ##              17. The code has been recreated from a copy of Artemis 072.
023087,000009:                                                                                                  ##              It has been adapted such that the resulting bugger words
023088,000010:                                                                                                  ##              exactly match those specified for Artemis 071 in NASA
023089,000011:                                                                                                  ##              drawing 2021154-, which gives relatively high confidence
023090,000012:                                                                                                  ##              that the reconstruction is correct.
023091,000013:                                                                                                  ## Reference:   527
023092,000014:                                                                                                  ## Assembler:   yaYUL
023093,000015:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
023094,000016:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
023095,000017:                                                                                                  ## Mod history: 2019-08-14 MAS  Created from Artemis 072.
023096,000018:                                                                                                  ##              2019-08-15 MAS  Undid changes between Artemis 071 and 072
023097,000019:                                                                                                  ##                              in the KILLSIVB logic.
023098,000020: 

Page 527

023100,000022: 
023101,000023:                                                                                                  #  P15 TLI INITIATE/CUTOFF
023102,000024:                                                                                                  #        
023103,000025:                                                                                                  #        DISPLAYS N33 : TIME OF SIVB INJECTION SEQUENCE START (TB6)
023104,000026:                                                                                                  #        ESTABLISHES T6SET TO BE EXECUTED AT TB6 TIME
023105,000027:                                                                                                  #        SETS TLITIG = TB6 + 9:37.6
023106,000028:                                                                                                  #        DISPLAYS N14 : INERTIAL VELOCITY MAGNITUDE AT TLI C/O
023107,000029:                                                                                                  #        DISPLAYS N95 : TFI - TIME FROM TLITIG (DECREASING)
023108,000030:                                                                                                  #                       VG  - VELOCITY-TO-BE-GAINED
023109,000031:                                                                                                  #                       V   - INERTIAL VELOCITY MAGNITUDE
023110,000032:                                                                                                  #        T6SET : SETS THE SIVB INJECTION SEQUENCE START BIT,
023111,000033:                                                                                                  #        ESTABLISHES T6RESET (DT = 10 SECS), AND
023112,000034:                                                                                                  #        TURNS ON THE UPLINK ACTIVITY LIGHT
023113,000035:                                                                                                  #        T6RESET : CLEARS THE SIVB I.S.S. BIT AND
023114,000036:                                                                                                  #        TURNS OFF THE UPLINK ACTIVITY LIGHT
023115,000037:                                                                                                  #        P40S/SV : CALLS MIDTOAV1 TO INTEGRATE THE CSM
023116,000038:                                                                                                  #        STATE VECTOR TO TLITLIG - 100 AND
023117,000039:                                                                                                  #        ESTABLISHES TIGBLNK AT TLITIG - 105
023118,000040:                                                                                                  #        TIGBLNK : BLANKS THE DSKY FOR 5 SECS AND
023119,000041:                                                                                                  #        ESTABLISHES TIGAVEG FOR TLITIG - 100 
023120,000042:                                                                                                  #        TIGAVEG : STARTS READACCS AND REDISPLAYS
023121,000043:                                                                                                  #        N95 (VG AND V NOW DYNAMIC)
023122,000044:                                                                                                  #        SIVBCOMP : UPDATES VG AND V AND
023123,000045:                                                                                                  #        AFTER TLITIG + 10 CALCULATES TGO AND
023124,000046:                                                                                                  #        CHANGES THE N95 R1 DISPLAY TO TFC
023125,000047:                                                                                                  #        WHEN TGO < 4 SECS, SIVBCOMP ESTABLISHES SIVBOFF (DT = TGO)
023126,000048:                                                                                                  #        SIVBOFF : SHUTS DOWN THE SIVB AND CALLS POSTTLI
023127,000049:                                                                                                  #        POSTTLI : FLASHES N95 TO INDICATE TLI IS COMPLETED
023128,000050:                                                                                                  #        P15 EXITS VIA GOTOPOOH
023129,000051: 33,2000                                           SETLOC   P15LOC1                               
023130,000052: 33,2000                                           BANK                                           
023131,000053: 33,3455                                           COUNT*   $$/P15                                
023132,000054: 33,3455  E7,1412                                  EBANK=   TIG                                   
023133,000055: 33,3455           35026        P15JOB             CAF      V06N33                                #  DISPLAY TB6 TIME
023134,000056: 33,3456           05535                           TC       VNFLASH                               
023135,000057: 33,3457           06006                           TC       INTPRET                               
023136,000058: 33,3460           43345                           DLOAD    DAD                                   
023137,000059: 33,3461           03413                                    TIG                                   
023138,000060: 33,3462           27533                                    TLIDT                                 
023139,000061: 33,3463           03464                           STORE    TLITMP                                
023140,000062: 33,3464           44234                           RTB      BDSU                                  
023141,000063: 33,3465           51751                                    LOADTIME                              
023142,000064: 33,3466           03413                                    TIG                                   
023143,000065: 33,3467           03673                           STORE    P40TMP                                #  TIG-TIME2
023144,000066: 33,3470           77776                           EXIT                                           #  .TO P40TMP
023145,000067: 33,3471           52155                           DXCH     MPAC                                  #  ..AND A,L
023146,000068: 33,3472           05332                           TC       LONGCALL                              
023147,000069: 33,3473  E7,1672                                  EBANK=   P40TMP                                
023148,000070: 33,3473           02311 40067                     2CADR    T6SET                                 
023149,000071: 33,3475           05362                           TC       2PHSCHNG                              

Page 528

023151,000073: 33,3476           00153                           OCT      00153                                 #  A,3.15=T6SET IN P40TMP CSEC
023152,000074: 33,3477           24024                           OCT      24024                                 #  C,JOB BELOW,LONGBASE FOR A ABOVE
023153,000075: 33,3500  01,2077               3P15SPT1           =        3.15SPOT                              
023154,000076: 33,3500           00006                           EXTEND                                         
023155,000077: 33,3501           31464                           DCA      TLITMP                                
023156,000078: 33,3502           53413                           DXCH     TIG                                   #  TLITIG = TB6 + 9:37.6
023157,000079: 33,3503           33536        DISP14             CAF      V06N14                                #  DISPLAY V AT TLI C/O
023158,000080: 33,3504           05535                           TC       VNFLASH                               
023159,000081: 33,3505           06006                           TC       INTPRET                               
023160,000082: 33,3506           51575                           VLOAD    ABVAL                                 
023161,000083: 33,3507           01563                                    VRECTCSM                              #  M/CS B+7
023162,000084: 33,3510           03723                           STORE    VNOW                                  
023163,000085: 33,3511           43021                           BDSU     SET                                   
023164,000086: 33,3512           02356                                    VC/O                                  #       B+7
023165,000087: 33,3513           03464                                    TIMRFLAG                              #  ENABLE CLOKTASK
023166,000088: 33,3514           17725                           STODL    VGTLI                                 #  VGTLI = VC/O - |VRECTCSM| B+7
023167,000089: 33,3515           27535                                    S4BCOMP                               
023168,000090: 33,3516           01062                           STORE    AVEGEXIT                              #  SET AVERAGEG EXIT TO SIVBCOMP
023169,000091: 33,3517           77776                           EXIT                                           
023170,000092: 33,3520           33537                           CAF      V06N95                                
023171,000093: 33,3521           54777                           TS       NVWORD1                               #  ENABLE CLOCKJOB
023172,000094: 33,3522           34770        CLOKNOW            CAF      ONE                                   
023173,000095: 33,3523           05233                           TC       WAITLIST                              
023174,000096: 33,3524  E7,1412                                  EBANK=   TIG                                   
023175,000097: 33,3524           03225 50067                     2CADR    CLOKTASK                              
023176,000098: 
023177,000099: 33,3526           05362                           TC       2PHSCHNG                              
023178,000100: 33,3527           40036                           OCT      40036                                 #  6.3SPOT FOR CLOKTASK
023179,000101: 33,3530           00004                           OCT      00004                                 #  KILL GROUP 4
023180,000102: 33,3531  01,2325               6P3SPT4            =        6.3SPOT                               
023181,000103: 33,3531           15205                           TCF      ENDOFJOB                              
023182,000104: 
023183,000105: 33,3532           00003 20640  TLIDT              2DEC     57760      B-28                       #  9 MIN 37.6 SEC (TB6 + TLIDT = TLITIG)
023184,000106: 
023185,000107: 33,3534  E7,1412                                  EBANK=   TIG                                   
023186,000108: 33,3534           03540 66067  S4BCOMP            2CADR    SIVBCOMP                              
023187,000109: 
023188,000110: 33,3536           01416        V06N14             VN       0614                                  
023189,000111: 33,3537           01537        V06N95             VN       0695                                  
023190,000112: 
023191,000113: 
023192,000114: 20,2000                                           SETLOC   P15LOC                                
023193,000115: 20,2000                                           BANK                                           
023194,000116: 20,2311  E7,1412                                  EBANK=   TIG                                   
023195,000117: 20,2311                                           COUNT*   $$/P15                                
023196,000118: 20,2311           00006        T6SET              EXTEND                                         
023197,000119: 20,2312           30025                           DCA      TIME2                                 
023198,000120: 20,2313           53022                           DXCH     TEVENT                                
023199,000121: 20,2314           32330                           CAF      10SEC                                 #  T6RESET IN 10 SEC.
023200,000122: 20,2315           05223                           TC       TWIDDLE                               

Page 529

023202,000124: 20,2316           02331                           ADRES    T6RESET                               
023203,000125: 20,2317           05402                           TC       PHASCHNG                              
023204,000126: 20,2320           40023                           OCT      40023                                 #  A,3.2=T6CHNSET IMMED.,
023205,000127:                                                                                                  #        T6RESET IN 10 SEC,TBASE NOW
023206,000128: 
023207,000129: 20,2321  01,2052               3P2SPT1            =        3.2SPOT                               
023208,000130: 20,2321           34754        T6CHNSET           CAF      BIT13                                 
023209,000131: 20,2322           00006                           EXTEND                                         #  SIVB INJECTION
023210,000132: 20,2323           05012                           WOR      CHAN12                                #   SEQUENCE START
023211,000133: 20,2324           34766                           CAF      BIT3                                  
023212,000134: 20,2325           00006                           EXTEND                                         
023213,000135: 20,2326           05011                           WOR      DSALMOUT                              #  UPLINK ACTIV. ON
023214,000136: 20,2327           05314                           TC       TASKOVER                              
023215,000137: 
023216,000138: 20,2330           01750        10SEC              DEC      1000       B-14                       
023217,000139: 
023218,000140: 20,2331           44754        T6RESET            CS       BIT13                                 #  PROTECTED BY GROUP 3
023219,000141: 20,2332           00006                           EXTEND                                         #  CLEAR SIVB ISS
023220,000142: 20,2333           03012                           WAND     CHAN12                                
023221,000143: 20,2334           44766                           CS       BIT3                                  #  TURN OFF UPLINK ACTIVITY
023222,000144: 20,2335           00006                           EXTEND                                         
023223,000145: 20,2336           03011                           WAND     DSALMOUT                              
023224,000146: 20,2337           05362                           TC       2PHSCHNG                              
023225,000147: 20,2340           00003                           OCT      00003                                 #  KILL GROUP 3
023226,000148: 20,2341           05014                           OCT      05014                                 
023227,000149: 20,2342           77777                           DEC      -0         B-14                       #  GROUP 4 CONTINUES BELOW
023228,000150: 20,2343           00006        P15INTEG           EXTEND                                         
023229,000151: 20,2344           32354                           DCA      100SEC                                
023230,000152: 20,2345           53460                           DXCH     AVEGDT                                #  START AVERAGEG AT TIG - 100.00
023231,000153: 20,2346           34664                           CAF      PRIO12                                
023232,000154: 20,2347           05135                           TC       FINDVAC                               
023233,000155: 20,2350  E7,1412                                  EBANK=   TIG                                   
023234,000156: 20,2350           02523 50067                     2CADR    P40S/SV                               #  COMMON CODE IN P40
023235,000157: 20,2352           15314                           TCF      TASKOVER                              
023236,000158: 
023237,000159: 20,2353           00000 23420  100SEC             2DEC     10000      B-28                       
023238,000160: 

Page 530

023240,000162: 
023241,000163:                                                                                                  #  SIVB SHUTDOWN COMPUTATIONS
023242,000164: 
023243,000165:                                                                                                  #  CALLED VIA AVEGEXIT EVERY 2 SECS STARTING AT TLITIG - 100
023244,000166:                                                                                                  #           VG AND V (N95) ARE ALWAYS UPDATED
023245,000167:                                                                                                  #           TGO CALCULATONS FOR TLI SHUTDOWN AND TTOGO (N95)
023246,000168:                                                                                                  #           ARE ENABLED (STEERSW = 1) AT TLITIG + 10
023247,000169: 33,2000                                           SETLOC   P15LOC1                               
023248,000170: 33,2000                                           BANK                                           
023249,000171: 33,3540  E7,1412                                  EBANK=   TIG                                   
023250,000172: 33,3540                                           COUNT*   $$/P15                                
023251,000173: 33,3540           06006        SIVBCOMP           TC       INTPRET                               
023252,000174: 33,3541           45345                           DLOAD    DSU                                   
023253,000175: 33,3542           03661                                    TTOGO                                 
023254,000176: 33,3543           27666                                    TENSEC                                #  TFI > +10 ? (TFC CAN NEVER EXCEED +2)
023255,000177: 33,3544           43040                           BMN      SET                                   #  YES, SET STERSW TO ENABLE TGO CALC
023256,000178: 33,3545           67547                                    +2                                    #  NO
023257,000179: 33,3546           01064                                    STEERSW                               
023258,000180: 33,3547           77624                           CALL                                           
023259,000181: 33,3550           70537                                    S11.1                                 #  VMAG, HDOT, AND H FOR N62
023260,000182: 33,3551           44345                           DLOAD    BDSU                                  
023261,000183: 33,3552           03723                                    VNOW                                  #  VMAG      M/CS B+7 FOR N95
023262,000184: 33,3553           02356                                    VC/O                                  #  VMAG(C/O) M/CS B+7
023263,000185: 33,3554           17725                           STODL    VGTLI                                 #  VG = VC/O - VNOW FOR N95
023264,000186: 33,3555           03723                                    VNOW                                  
023265,000187: 33,3556           45214                           BOFF     DSU                                   
023266,000188: 33,3557           01344                                    STEERSW                               
023267,000189: 33,3560           67605                                    SETVPAST                              #  STEERSW = 0, EXIT
023268,000190: 33,3561           03462                                    VPAST                                 #  MPAC = VNOW - VPAST (DV FOR LAST 2 SECS)
023269,000191: 33,3562           41440                           BMN      PUSH                                  #  00D = DV FOR LAST 2 SECS
023270,000192: 33,3563           67605                                    SETVPAST                              #  DV NEGATIVE, EXIT
023271,000193: 33,3564           54345                           DLOAD    SR                                    
023272,000194: 33,3565           03725                                    VGTLI                                 #  B+7
023273,000195: 33,3566           20612                                    09D                                   #  SR9 NOW B+16
023274,000196: 33,3567           77671                           DDV                                            #  B+16 / B+7 NOW B+9
023275,000197: 33,3570           41200                           BOV      DMP                                   
023276,000198: 33,3571           67605                                    SETVPAST                              #  OVERFLOW, EXIT
023277,000199: 33,3572           27670                                    200B+19                               #  B+9 X B+19 NOW B+28
023278,000200: 33,3573           67206                           PUSH     SLOAD                                 #  00D = TGO WITHOUT TAILOFF EFFECTS
023279,000201: 33,3574           02355                                    DTF                                   #  TLI TAILOFF CONSTANT B+14
023280,000202: 33,3575           44261                           SR       BDSU                                  #  COMPENSATE FOR TAILOFF
023281,000203: 33,3576           20617                                    14D                                   #  B+28
023282,000204: 33,3577           43206                           PUSH     DAD                                   #  00D = COMPENSATED TGO
023283,000205: 33,3600           01044                                    PIPTIME                               
023284,000206: 33,3601           17413                           STODL    TIG                                   #  FOR CLOKTASK (N95)
023285,000207: 33,3602           50025                           DSU      BMN                                   #  TGO FROM 00D
023286,000208: 33,3603           27664                                    4SEC                                  #  TGO < 4 SECS ?
023287,000209: 33,3604           67611                                    KILLSIVB                              #  YES : SET UP SIVB SHUTDOWN
023288,000210: 33,3605           77745        SETVPAST           DLOAD                                          
023289,000211: 33,3606           03723                                    VNOW                                  
023290,000212: 33,3607           37462                           STCALL   VPAST                                 #  VPAST = VNOW

Page 531

023292,000214: 33,3610           51603                                    SERVXT1                               #  ** NO RETURN ** SAME AS GOTO SERVXT1
023293,000215: 
023294,000216: 
023295,000217: 33,3611  E7,1412                                  EBANK=   TIG                                   
023296,000218: 33,3611           77776        KILLSIVB           EXIT                                           
023297,000219: 33,3612           00004                           INHINT                                         
023298,000220: 33,3613           00006                           EXTEND                                         

The following code has a bug with sign agreement that was fixed in Artemis 072. It is possible for the (TIG - TIME2) calculation to result in a mixed-sign result, in which case the following logic will behave incorrectly. In Artemis 072, the result of the calculation was stored in MPAC instead of AVEGDT. After the DAS, sign agreement was then forced via a "TCR DPAGREE". Finally, because the result was now in MPAC instead of AVEGDT where it needed to be, the TCF +3 was changed to TCF +2 to ensure the number made it safely into AVEGDT +1.

023306,000228: 33,3614           31413                           DCA      TIG                                   
023307,000229: 33,3615           53460                           DXCH     AVEGDT                                
023308,000230: 33,3616           00006                           EXTEND                                         
023309,000231: 33,3617           40025                           DCS      TIME2                                 
023310,000232: 33,3620           21460                           DAS      AVEGDT                                
023311,000233: 33,3621           31460                           CAE      AVEGDT     +1                         #  DT TO C/O = TIG - TIME2 (< 4 SECS TO GO)
023312,000234:                                                                                                  #              PIPTIME + TGO - TIME2     
023313,000235: 33,3622           00006                           EXTEND                                         #  DT <= 0 ?
023314,000236: 33,3623           63625                           BZMF     +2                                    #  YES
023315,000237: 33,3624           13627                           TCF      +3                                    #  NO
023316,000238: 33,3625           34770                           CAF      ONE                                   
023317,000239: 33,3626           55460                           TS       AVEGDT     +1                         
023318,000240: 33,3627           05223                           TC       TWIDDLE                               
023319,000241: 33,3630           03636                           ADRES    SIVBOFF                               
023320,000242: 33,3631           05362                           TC       2PHSCHNG                              
023321,000243: 33,3632           40614                           OCT      40614                                 #  4.61 SIVBOFF IN (AVEGDT+1) CS
023322,000244: 33,3633           10035                           OCT      10035                                 
023323,000245: 
023324,000246: 33,3634  01,2231               4P61SPT1           =        4.61SPOT                              
023325,000247: 33,3634  01,2250               5P3SPT16           =        5.3SPOT                               
023326,000248: 33,3634           04655                           TC       POSTJUMP                              
023327,000249: 33,3635           51134                           CADR     CLEARSTR                              
023328,000250: 
023329,000251: 33,3636  0003777                                  EBANK=   WHOCARES                              
023330,000252: 33,3636           34753        SIVBOFF            CAF      BIT14                                 
023331,000253: 33,3637           00006                           EXTEND                                         
023332,000254: 33,3640           05012                           WOR      CHAN12                                #  SHUTDOWN THE SIVB
023333,000255: 33,3641           00006                           EXTEND                                         
023334,000256: 33,3642           30025                           DCA      TIME2                                 
023335,000257: 33,3643           53022                           DXCH     TEVENT                                #  SET TEVENT
023336,000258: 33,3644           05255                           TC       FIXDELAY                              
023337,000259: 33,3645           00372                           DEC      250        B-14                       #  DELAY 2.5 SECS
023338,000260: 33,3646           34772                           CAF      ZERO                                  
023339,000261: 33,3647           54777                           TS       NVWORD1                               #  ZERO NVWORD1 IN CASE CLOCKJOB WAITING
023340,000262: 33,3650           44756                           CS       TIMRBIT                               
023341,000263: 33,3651           70103                           MASK     FLAGWRD7                              
023342,000264: 33,3652           54103                           TS       FLAGWRD7                              #  DISABLE CLOKTASK
023343,000265: 33,3653           05402                           TC       PHASCHNG                              
023344,000266: 33,3654           05014                           OCT      05014                                 
023345,000267: 33,3655           77777                           DEC      -0         B-14                       #  START BELOW
023346,000268: 33,3656           34664                           CAF      PRIO12                                
023347,000269: 33,3657           05121                           TC       NOVAC                                 

Page 532

023349,000271: 33,3660  0003777                                  EBANK=   WHOCARES                              
023350,000272: 33,3660           02012 74067                     2CADR    POSTTLI                               
023351,000273: 
023352,000274: 33,3662           05314                           TC       TASKOVER                              
023353,000275: 
023354,000276: 33,3663           00000 00620  4SEC               2DEC     400        B-28                       
023355,000277: 33,3665           00000 01750  TENSEC             2DEC     1000       B-28                       
023356,000278: 33,3667           00006 10000  200B+19            2DEC     200        B-19                       
023357,000279: 
023358,000280: 
023359,000281: 36,2000                                           SETLOC   P15LOC2                               
023360,000282: 36,2000                                           BANK                                           
023361,000283: 36,2012  0003777                                  EBANK=   WHOCARES                              
023362,000284: 
023363,000285: 36,2012                                           COUNT*   $$/P15                                
023364,000286: 36,2012           32015        POSTTLI            CAF      V16N95                                
023365,000287: 36,2013           05535                           TC       VNFLASH                               
023366,000288: 36,2014           14103                           TCF      GOTOPOOH                              
023367,000289: 
023368,000290: 
023369,000291: 36,2015           04137        V16N95             VN       1695                                  
023370,000292: 

Page 533

023372,000294: 

This page empty.

023374,000296: 

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