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.

060435,000002:                                                                                                  ## Copyright:   Public domain.
060436,000003:                                                                                                  ## Filename:    RESTARTS_ROUTINE.agc
060437,000004:                                                                                                  ## Purpose:     A section of Artemis revision 071.
060438,000005:                                                                                                  ##              It is part of the reconstructed source code for the first
060439,000006:                                                                                                  ##              release of the flight software for the Command Module's
060440,000007:                                                                                                  ##              (CM) Apollo Guidance Computer (AGC) for Apollo 15 through
060441,000008:                                                                                                  ##              17. The code has been recreated from a copy of Artemis 072.
060442,000009:                                                                                                  ##              It has been adapted such that the resulting bugger words
060443,000010:                                                                                                  ##              exactly match those specified for Artemis 071 in NASA
060444,000011:                                                                                                  ##              drawing 2021154-, which gives relatively high confidence
060445,000012:                                                                                                  ##              that the reconstruction is correct.
060446,000013:                                                                                                  ## Reference:   1411
060447,000014:                                                                                                  ## Assembler:   yaYUL
060448,000015:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
060449,000016:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
060450,000017:                                                                                                  ## Mod history: 2019-08-14 MAS  Created from Artemis 072.
060451,000018: 

Page 1411

060453,000020: 01,2000                                           SETLOC   RESTART                               
060454,000021: 01,2000                                           BANK                                           
060455,000022: 
060456,000023: 01,3467  E3,1436                                  EBANK=   PHSNAME1                              #  GOPROG MUST SWITCH TO THIS EBANK
060457,000024: 
060458,000025: 01,3467                                           COUNT*   $$/RSROU                              
060459,000026: 01,3467           30161        RESTARTS           CA       MPAC       +5                         #  GET GROUP NUMBER -1
060460,000027: 01,3470           60000                           DOUBLE                                         #  SAVE FOR INDEXING
060461,000028: 01,3471           54155                           TS       TEMP2G                                
060462,000029: 
060463,000030: 01,3472           33127                           CA       PHS2CADR                              #  SET UP EXIT IN CASE IT IS AN EVEN
060464,000031: 01,3473           54157                           TS       TEMPSWCH                              #  TABLE PHASE
060465,000032: 
060466,000033: 01,3474           33526                           CA       RTRNCADR                              #  TO SAVE TIME ASSUME IT WILL GET NEXT
060467,000034: 01,3475           54707                           TS       GOLOC      +2                         #  GROUP AFTER THIS
060468,000035: 
060469,000036: 01,3476           30154                           CA       TEMPPHS                               
060470,000037: 01,3477           75024                           MASK     OCT1400                               
060471,000038: 01,3500           10000                           CCS      A                                     #  IS IT A VARIABLE OR TABLE RESTART
060472,000039: 01,3501           13512                           TCF      ITSAVAR                               #  IT:S A VARIABLE RESTART
060473,000040: 
060474,000041: 01,3502           10154        GETPART2           CCS      TEMPPHS                               #  IS IT AN X.1 RESTART
060475,000042: 01,3503           10000                           CCS      A                                     
060476,000043: 01,3504           13612                           TCF      ITSATBL                               #  NO, ITS A TABLE RESTART
060477,000044: 
060478,000045: 01,3505           35053                           CA       PRIO14                                #  IT IS AN X.1 RESTART, THEREFORE START
060479,000046: 01,3506           05135        FVACCADR           TC       FINDVAC                               #  THE DISPLAY RESTART ROUTINE (=GENADR)
060480,000047: 01,3507  E3,1400                                  EBANK=   LST1                                  
060481,000048: 01,3507           03263 20063                     2CADR    INITDSP                               
060482,000049: 
060483,000050: 
060484,000051: 01,3511           03526                           TC       RTRNCADR                              #  FINISHED WITH THIS GROUP, GET NEXT ONE
060485,000052: 
060486,000053: 01,3512           75024        ITSAVAR            MASK     OCT1400                               #  IS IT TYPE B ?
060487,000054: 01,3513           10000                           CCS      A                                     
060488,000055: 01,3514           13563                           TCF      ITSLIKEB                              #  YES, IT IS TYPE B
060489,000056: 
060490,000057: 01,3515           00006                           EXTEND                                         #  STORE THE JOB (OR TASK) 2CADR FOR EXIT
060491,000058: 01,3516           50155                           NDX      TEMP2G                                
060492,000059: 01,3517           31437                           DCA      PHSNAME1                              
060493,000060: 01,3520           52706                           DXCH     GOLOC                                 
060494,000061: 
060495,000062: 01,3521           30154                           CA       TEMPPHS                               #  SEE IF THIS IS A JOB, TASK, OR A LONGCAL
060496,000063: 01,3522           74774                           MASK     OCT7                                  
060497,000064: 01,3523           67701                           AD       MINUS2                                
060498,000065: 01,3524           10000                           CCS      A                                     
060499,000066: 01,3525           13675                           TCF      ITSLNGCL                              #  ITS A LONGCALL
060500,000067: 
060501,000068: 01,3526           04651        RTRNCADR           TC       SWRETURN                              #  CANT GET HERE
060502,000069: 01,3527           13531                           TCF      ITSAWAIT                              

Page 1412

060504,000071: 01,3530           13576                           TCF      ITSAJOB                               #  ITS A JOB
060505,000072: 
060506,000073: 01,3531           33463        ITSAWAIT           CA       WTLTCADR                              #  SET UP WAITLIST CALL
060507,000074: 01,3532           54704                           TS       GOLOC      -1                         
060508,000075: 
060509,000076: 01,3533           50155                           NDX      TEMP2G                                #  DIRECTLY STORED
060510,000077: 01,3534           31260                           CA       PHSPRDT1                              
060511,000078: 01,3535           10000        TIMETEST           CCS      A                                     #  IS IT AN IMMEDIATE RESTART
060512,000079: 01,3536           24000                           INCR     A                                     #  NO,
060513,000080: 01,3537           13542                           TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
060514,000081: 
060515,000082: 01,3540           15470                           TCF      ITSINDIR                              #  STORED INDIRECTLY
060516,000083: 
060517,000084: 01,3541           13561                           TCF      IMEDIATE                              #  IT WANTS AN IMMEDIATE RESTART
060518,000085: 
060519,000086:                                                                                                  #  ***** THIS MUST BE IN FIXED FIXED *****
060520,000087: 
060521,000088:    4000                                           SETLOC   FFTAG2                                
060522,000089:    4000                                           BANK                                           
060523,000090: 
060524,000091:    5470                                           COUNT*   $$/RSROU                              
060525,000092:    5470           22706        ITSINDIR           LXCH     GOLOC      +1                         #  GET THE CORRECT E BANK IN CASE THIS IS
060526,000093:    5471           22006                           LXCH     BB                                    #  SWITCHED ERRASIBLE
060527,000094: 
060528,000095:    5472           50000                           NDX      A                                     #  GET THE TIME INDIRECTLY
060529,000096:    5473           30001                           CA       1                                     
060530,000097: 
060531,000098:    5474           22006                           LXCH     BB                                    #  RESTORE THE BB AND GOLOC
060532,000099:    5475           22706                           LXCH     GOLOC      +1                         
060533,000100: 
060534,000101:    5476           13542                           TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
060535,000102: 
060536,000103:                                                                                                  #  ***** YOU MAY RETURN TO  SWITCHED FIXED *****
060537,000104: 
060538,000105: 01,2000                                           SETLOC   RESTART                               
060539,000106: 01,2000                                           BANK                                           
060540,000107: 
060541,000108: 01,3542                                           COUNT*   $$/RSROU                              
060542,000109: 01,3542           40000        FINDTIME           COM                                            #  MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD
060543,000110: 01,3543           54001                           TS       L                                     #  AND SAVE
060544,000111: 01,3544           50155                           NDX      TEMP2G                                
060545,000112: 01,3545           41257                           CS       TBASE1                                
060546,000113: 01,3546           00006                           EXTEND                                         
060547,000114: 01,3547           60025                           SU       TIME1                                 
060548,000115: 01,3550           10000                           CCS      A                                     
060549,000116: 01,3551           40000                           COM                                            
060550,000117: 01,3552           67663                           AD       OCT37776                              
060551,000118: 01,3553           64770                           AD       ONE                                   
060552,000119: 01,3554           60001                           AD       L                                     
060553,000120: 01,3555           10000                           CCS      A                                     

Page 1413

060555,000122: 01,3556           34772                 -3        CAF      ZERO                                  
060556,000123: 01,3557           13561                           TCF      +2                                    
060557,000124: 01,3560           13561                           TCF      +1                                    
060558,000125: 01,3561           64770        IMEDIATE           AD       ONE                                   
060559,000126: 01,3562           00704                           TC       GOLOC      -1                         
060560,000127: 01,3563           33526        ITSLIKEB           CA       RTRNCADR                              #  TYPE B, SO STORE RETURN IN
060561,000128: 01,3564           54157                           TS       TEMPSWCH                              #  TEMPSWCH IN CASE OF AN EVEN PHASE
060562,000129: 
060563,000130: 01,3565           33133                           CA       PRT2CADR                              #  SET UP EXIT TO GET TABLE PART OF THIS
060564,000131: 01,3566           54707                           TS       GOLOC      +2                         #  VARIABLE TYPE OF PHASE
060565,000132: 
060566,000133: 01,3567           30154                           CA       TEMPPHS                               #  MAKE THE PHASE LOOK RIGHT FOR THE TABLE
060567,000134: 01,3570           76043                           MASK     OCT177                                #  PART OF THIS VARIABLE PHASE
060568,000135: 01,3571           54154                           TS       TEMPPHS                               
060569,000136: 
060570,000137: 01,3572           00006                           EXTEND                                         
060571,000138: 01,3573           50155                           NDX      TEMP2G                                #  OBTAIN THE JOB:S 2CADR
060572,000139: 01,3574           31437                           DCA      PHSNAME1                              
060573,000140: 01,3575           52706                           DXCH     GOLOC                                 
060574,000141: 
060575,000142: 01,3576           50155        ITSAJOB            NDX      TEMP2G                                #  NOW ADD THE PRIORITY AND LET:S GO
060576,000143: 01,3577           31260                           CA       PHSPRDT1                              
060577,000144: 01,3600           54704        CHKNOVAC           TS       GOLOC      -1                         #  SAVE PRIO UNTIL WE SEE IF ITS
060578,000145: 01,3601           00006                           EXTEND                                         #  A FINDVAC OR A NOVAC
060579,000146: 01,3602           63606                           BZMF     ITSNOVAC                              
060580,000147: 
060581,000148: 01,3603           33506                           CAF      FVACCADR                              #  POSITIVE, SET UP FINDVAC CALL.
060582,000149: 01,3604           56704                           XCH      GOLOC      -1                         #  PICK UP PRIO,
060583,000150: 01,3605           00704                           TC       GOLOC      -1                         #  AND GO
060584,000151: 
060585,000152: 01,3606           35310        ITSNOVAC           CAF      NOVACADR                              #  NEGATIVE,
060586,000153: 01,3607           56704                           XCH      GOLOC      -1                         #  SET UP NOVAC CALL,
060587,000154: 01,3610           40000                           COM                                            #  CORRECT PRIO,
060588,000155: 01,3611           00704                           TC       GOLOC      -1                         #  AND GO
060589,000156: 
060590,000157: 01,3612           54020        ITSATBL            TS       CYR                                   #  FIND OUT IF THE PHASE IS ODD OR EVEN
060591,000158: 01,3613           10020                           CCS      CYR                                   
060592,000159: 01,3614           13615                           TCF      +1                                    #  IT:S EVEN
060593,000160: 01,3615           13713                           TCF      ITSEVEN                               
060594,000161: 
060595,000162: 01,3616           33526                           CA       RTRNCADR                              #  IN CASE THIS IS THE SECOND PART OF A
060596,000163: 01,3617           54707                           TS       GOLOC      +2                         #  TYPE B RESTART, WE NEED PROPER EXIT
060597,000164: 
060598,000165: 01,3620           30154                           CA       TEMPPHS                               #  SET UP POINTER FOR FINDING OUR PLACE IN
060599,000166: 01,3621           54021                           TS       SR                                    #  THE RESTART TABLES
060600,000167: 01,3622           60021                           AD       SR                                    
060601,000168: 01,3623           50155                           NDX      TEMP2G                                
060602,000169: 01,3624           62001                           AD       SIZETAB    +1                         
060603,000170: 01,3625           54156                           TS       POINTER                               

Page 1414

060605,000172: 
060606,000173: 01,3626           00006        CONTBL2            EXTEND                                         #  FIND OUT WHAT:S IN THE TABLE
060607,000174: 01,3627           50156                           NDX      POINTER                               
060608,000175: 01,3630           32002                           DCA      CADRTAB                               #  GET THE 2CADR
060609,000176: 
060610,000177: 01,3631           22706                           LXCH     GOLOC      +1                         #  STORE THE BB INFORMATION
060611,000178: 
060612,000179: 01,3632           10000                           CCS      A                                     #  IS IT A JOB OR IS IT TIMED
060613,000180: 01,3633           24000                           INCR     A                                     #  POSITIVE, MUST BE A JOB
060614,000181: 01,3634           13707                           TCF      ITSAJOB2                              
060615,000182: 
060616,000183: 01,3635           24000                           INCR     A                                     #  MUST BE EITHER A WAITLIST OR LONGCALL
060617,000184: 01,3636           54705                           TS       GOLOC                                 #  LET-S STORE THE CORRECT CADR
060618,000185: 
060619,000186: 01,3637           33463                           CA       WTLTCADR                              #  SET UP OUR EXIT TO WAITLIST
060620,000187: 01,3640           54704                           TS       GOLOC      -1                         
060621,000188: 
060622,000189: 01,3641           30706                           CA       GOLOC      +1                         #  NOW FIND OUT IF IT IS A WAITLIST CALL
060623,000190: 01,3642           74757                           MASK     BIT10                                 #  THIS SHOULD BE ONE IF WE HAVE -BB
060624,000191: 01,3643           10000                           CCS      A                                     #  FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
060625,000192:                                                                                                  #  6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
060626,000193:                                                                                                  #  IN IMPORTANCE ANYWAY. BIT 4
060627,000194: 01,3644           13702                           TCF      ITSWTLST                              #  IT IS A WAITLIST CALL
060628,000195: 
060629,000196: 01,3645           50156                           NDX      POINTER                               #  OBTAIN THE ORIGINAL DELTA T
060630,000197: 01,3646           32000                           CA       PRDTTAB                               #  ADDRESS FOR THIS LONGCALL
060631,000198: 
060632,000199: 01,3647           15477                           TCF      ITSLGCL1                              #  NOW GO GET THE DELTA TIME
060633,000200: 
060634,000201:                                                                                                  #  ***** THIS MUST BE IN FIXED FIXED *****
060635,000202: 
060636,000203:    4000                                           SETLOC   FFTAG2                                
060637,000204:    4000                                           BANK                                           
060638,000205: 
060639,000206:    5477                                           COUNT*   $$/RSROU                              
060640,000207:    5477           22706        ITSLGCL1           LXCH     GOLOC      +1                         #  OBTAIN THE CORRECT E BANK
060641,000208:    5500           22006                           LXCH     BB                                    
060642,000209:    5501           22706                           LXCH     GOLOC      +1                         #  AND PRESERVE OUR E AND F BANKS
060643,000210: 
060644,000211:    5502           00006                           EXTEND                                         #  GET THE DELTA TIME
060645,000212:    5503           50000                           NDX      A                                     
060646,000213:    5504           30001                           DCA      0                                     
060647,000214:    5505           22706                           LXCH     GOLOC      +1                         #  RESTORE OUR E AND F BANK
060648,000215:    5506           22006                           LXCH     BB                                    #  RESTORE THE TASKS E AND F BANKS
060649,000216:    5507           22706                           LXCH     GOLOC      +1                         #  AND PRESERVE OUR L
060650,000217: 
060651,000218:    5510           13650                           TCF      ITSLGCL2                              #  NOW LET:S PROCESS THIS LONGCALL
060652,000219: 
060653,000220:                                                                                                  #  ***** YOU MAY RETURN TO  SWITCHED FIXED *****
060654,000221: 

Page 1415

060656,000223: 01,2000                                           SETLOC   RESTART                               
060657,000224: 01,2000                                           BANK                                           
060658,000225: 
060659,000226: 01,3650                                           COUNT*   $$/RSROU                              
060660,000227: 01,3650           53305        ITSLGCL2           DXCH     LONGTIME                              
060661,000228: 
060662,000229: 01,3651           00006                           EXTEND                                         #  CALCULATE TIME LEFT
060663,000230: 01,3652           40025                           DCS      TIME2                                 
060664,000231: 01,3653           21305                           DAS      LONGTIME                              
060665,000232: 01,3654           00006                           EXTEND                                         
060666,000233: 01,3655           31303                           DCA      LONGBASE                              
060667,000234: 01,3656           21305                           DAS      LONGTIME                              
060668,000235: 
060669,000236: 01,3657           11304                           CCS      LONGTIME                              #  FIND OUT HOW THIS SHOULD BE RESTARTED
060670,000237: 01,3660           13670                           TCF      LONGCLCL                              
060671,000238: 01,3661           13663                           TCF      +2                                    
060672,000239: 01,3662           13556                           TCF      IMEDIATE   -3                         
060673,000240: 01,3663           11305                           CCS      LONGTIME   +1                         
060674,000241: 01,3664           13670                           TCF      LONGCLCL                              
060675,000242: 01,3665           13666                           NOOP                                           #  CAN:T GET HERE    *********
060676,000243: 01,3666           13556                           TCF      IMEDIATE   -3                         
060677,000244: 01,3667           13561                           TCF      IMEDIATE                              
060678,000245: 
060679,000246: 01,3670           33137        LONGCLCL           CA       LGCLCADR                              #  WE WILL GO TO LONGCALL
060680,000247: 01,3671           54704                           TS       GOLOC      -1                         
060681,000248: 
060682,000249: 01,3672           00006                           EXTEND                                         #  PREPARE OUR ENTRY TO LONGCALL
060683,000250: 01,3673           31305                           DCA      LONGTIME                              
060684,000251: 01,3674           00704                           TC       GOLOC      -1                         
060685,000252: 
060686,000253: 01,3675           33463        ITSLNGCL           CA       WTLTCADR                              #  ASSUME IT WILL GO TO WAITLIST
060687,000254: 01,3676           54704                           TS       GOLOC      -1                         
060688,000255: 
060689,000256: 01,3677           50155                           NDX      TEMP2G                                
060690,000257: 01,3700           41260                           CS       PHSPRDT1                              #  GET THE DELTA T ADDRESS
060691,000258: 
060692,000259: 01,3701           15477                           TCF      ITSLGCL1                              #  NOW GET THE DELTA TIME
060693,000260: 
060694,000261: 01,3702           40706        ITSWTLST           CS       GOLOC      +1                         #  CORRECT THE BBCON INFORMATION
060695,000262: 01,3703           54706                           TS       GOLOC      +1                         
060696,000263: 
060697,000264: 01,3704           50156                           NDX      POINTER                               #  GET THE DT AND FIND OUT IF IT WAS STORED
060698,000265: 01,3705           32000                           CA       PRDTTAB                               #  DIRECTLY OR INDIRECTLY
060699,000266: 
060700,000267: 01,3706           13535                           TCF      TIMETEST                              #  FIND OUT HOW THE TIME IS STORED
060701,000268: 
060702,000269: 01,3707           56705        ITSAJOB2           XCH      GOLOC                                 #  STORE THE CADR
060703,000270: 
060704,000271: 01,3710           50156                           NDX      POINTER                               #  ADD THE PRIORITY AND LET:S GO
060705,000272: 01,3711           32000                           CA       PRDTTAB                               
060706,000273: 

Page 1416

060708,000275: 01,3712           13600                           TCF      CHKNOVAC                              
060709,000276: 
060710,000277: 01,3713           30157        ITSEVEN            CA       TEMPSWCH                              #  SET UP FOR EITHER THE SECOND PART OF THE
060711,000278: 01,3714           54707                           TS       GOLOC      +2                         #  TABLE, OR A RETURN FOR THE NEXT GROUP
060712,000279: 
060713,000280: 01,3715           50155                           NDX      TEMP2G                                #  SET UP POINTER FOR OUR LOCATION WITHIN
060714,000281: 01,3716           32000                           CA       SIZETAB                               #  THE TABLE
060715,000282: 01,3717           60154                           AD       TEMPPHS                               #  THIS MAY LOOK BAD BUT LET:S SEE YOU DO
060716,000283: 01,3720           60154                           AD       TEMPPHS                               #  BETTER IN TIME OR NUMBERR OF LOCATIONS
060717,000284: 01,3721           60154                           AD       TEMPPHS                               
060718,000285: 01,3722           54156                           TS       POINTER                               
060719,000286: 
060720,000287: 01,3723           13626                           TCF      CONTBL2                               #  NOW PROCESS WHAT IS IN THE TABLE
060721,000288: 
060722,000289: 01,3724           36214        PHSPART2           CA       THREE                                 #  SET THE POINTER FOR THE SECOND HALF OF
060723,000290: 01,3725           26156                           ADS      POINTER                               #  THE TABLE
060724,000291: 
060725,000292: 01,3726           33526                           CA       RTRNCADR                              #  THIS WILL BE OUR LAST TIME THROUGH THE
060726,000293: 01,3727           54707                           TS       GOLOC      +2                         #  EVEN TABLE, SO AFTER IT GET THE NEXT
060727,000294:                                                                                                  #  GROUP
060728,000295: 01,3730           13626                           TCF      CONTBL2                               #  SO LET:S GET THE SECOND ENTRY IN THE TBL
060729,000296: 
060730,000297: 01,3731     0154               TEMPPHS            EQUALS   MPAC                                  
060731,000298: 01,3731     0155               TEMP2G             EQUALS   MPAC       +1                         
060732,000299: 01,3731     0156               POINTER            EQUALS   MPAC       +2                         
060733,000300: 01,3731     0157               TEMPSWCH           EQUALS   MPAC       +3                         
060734,000301: 01,3731     7701               MINUS2             EQUALS   NEG2                                  
060735,000302: 01,3731     6043               OCT177             EQUALS   LOW7                                  
060736,000303: 

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