Source Code

These source-code files are part of a reconstructed copy of Luminary 97, the original release of the Apollo 11 Lunar Module (LM) Apollo Guidance Computer (AGC) software.

The reconstruction began with source code of Luminary 99 revision 1 previously transcribed from a digitized copy of that program. The code was then updated by undoing changes described in original Luminary memos 83 and 85, using asterisks indicating changed lines in the listing as a guide. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021152D. Note that page numbers in the reconstructed code match those on the Luminary 099 revision 001 printout, although the added code would likely have changed page numbers for a real Luminary 97 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.

054846,000002:                                                                                                  ## Copyright:   Public domain.
054847,000003:                                                                                                  ## Filename:    RESTARTS_ROUTINE.agc
054848,000004:                                                                                                  ## Purpose:     A section of Luminary revision 97.
054849,000005:                                                                                                  ##              It is part of the reconstructed source code for the
054850,000006:                                                                                                  ##              original release of the flight software for the Lunar 
054851,000007:                                                                                                  ##              Module's (LM) Apollo Guidance Computer (AGC) for Apollo 11.
054852,000008:                                                                                                  ##              The code has been recreated from a copy of Luminary 99
054853,000009:                                                                                                  ##              revision 001, using asterisks indicating changed lines in
054854,000010:                                                                                                  ##              the listing and Luminary Memos #83 and #85, which list 
054855,000011:                                                                                                  ##              changes between Luminary 97 and 98, and 98 and 99. The
054856,000012:                                                                                                  ##              code has been adapted such that the resulting bugger words
054857,000013:                                                                                                  ##              exactly match those specified for Luminary 97 in NASA drawing
054858,000014:                                                                                                  ##              2021152D, which gives relatively high confidence that the
054859,000015:                                                                                                  ##              reconstruction is correct.
054860,000016:                                                                                                  ## Reference:   pp. 1303-1308
054861,000017:                                                                                                  ## Assembler:   yaYUL
054862,000018:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
054863,000019:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
054864,000020:                                                                                                  ## Mod history: 2019-07-28 MAS  Created from Luminary 99.
054865,000021: 

Page 1303

054867,000023: 01,3526                                           BANK     01                                    
054868,000024: 01,2000                                           SETLOC   RESTART                               
054869,000025: 01,2000                                           BANK                                           
054870,000026: 
054871,000027: 01,3526  E3,1436                                  EBANK=   PHSNAME1                              #  GOPROG MUST SWITCH TO THIS EBANK
054872,000028: 
054873,000029: 01,3526                                           COUNT*   $$/RSROU                              
054874,000030: 01,3526           30161        RESTARTS           CA       MPAC       +5                         #  GET GROUP NUMBER -1
054875,000031: 01,3527           60000                           DOUBLE                                         #  SAVE FOR INDEXING
054876,000032: 01,3530           54155                           TS       TEMP2G                                
054877,000033: 
054878,000034: 01,3531           33770                           CA       PHS2CADR                              #  SET UP EXIT IN CASE IT IS AN EVEN
054879,000035: 01,3532           54157                           TS       TEMPSWCH                              #  TABLE PHASE
054880,000036: 
054881,000037: 01,3533           33565                           CA       RTRNCADR                              #  TO SAVE TIME ASSUME IT WILL GET NEXT
054882,000038: 01,3534           54707                           TS       GOLOC      +2                         #  GROUP AFTER THIS
054883,000039: 
054884,000040: 01,3535           30154                           CA       TEMPPHS                               
054885,000041: 01,3536           75007                           MASK     OCT1400                               
054886,000042: 01,3537           10000                           CCS      A                                     #  IS IT A VARIABLE OR TABLE RESTART
054887,000043: 01,3540           13551                           TCF      ITSAVAR                               #  IT:S A VARIABLE RESTART
054888,000044: 
054889,000045: 01,3541           10154        GETPART2           CCS      TEMPPHS                               #  IS IT AN X.1 RESTART
054890,000046: 01,3542           10000                           CCS      A                                     
054891,000047: 01,3543           13651                           TCF      ITSATBL                               #  NO, ITS A TABLE RESTART
054892,000048: 
054893,000049: 01,3544           35024                           CA       PRIO14                                #  IT IS AN X.1 RESTART, THEREFORE START
054894,000050: 01,3545           05105                           TC       FINDVAC                               #  THE DISPLAY RESTART JOB
054895,000051: 01,3546  E3,1400                                  EBANK=   LST1                                  
054896,000052: 01,3546           03037 20103                     2CADR    INITDSP                               
054897,000053: 
054898,000054: 01,3550           03565                           TC       RTRNCADR                              #  FINISHED WITH THIS GROUP, GET NEXT ONE
054899,000055: 
054900,000056: 01,3551           75007        ITSAVAR            MASK     OCT1400                               #  IS IT TYPE B ?
054901,000057: 01,3552           10000                           CCS      A                                     
054902,000058: 01,3553           13622                           TCF      ITSLIKEB                              #  YES, IT IS TYPE B
054903,000059: 
054904,000060: 01,3554           00006                           EXTEND                                         #  STORE THE JOB (OR TASK) 2CADR FOR EXIT
054905,000061: 01,3555           50155                           NDX      TEMP2G                                
054906,000062: 01,3556           31437                           DCA      PHSNAME1                              
054907,000063: 01,3557           52706                           DXCH     GOLOC                                 
054908,000064: 
054909,000065: 01,3560           30154                           CA       TEMPPHS                               #  SEE IF THIS IS A JOB, TASK, OR A LONGCAL
054910,000066: 01,3561           74757                           MASK     OCT7                                  
054911,000067: 01,3562           67746                           AD       MINUS2                                
054912,000068: 01,3563           10000                           CCS      A                                     
054913,000069: 01,3564           13734                           TCF      ITSLNGCL                              #  ITS A LONGCALL
054914,000070: 
054915,000071: 01,3565           04631        RTRNCADR           TC       SWRETURN                              #  CANT GET HERE

Page 1304

054917,000073: 01,3566           13570                           TCF      ITSAWAIT                              
054918,000074: 
054919,000075: 01,3567           13635                           TCF      ITSAJOB                               #  ITS A JOB
054920,000076: 
054921,000077: 01,3570           33774        ITSAWAIT           CA       WTLTCADR                              #  SET UP WAITLIST CALL
054922,000078: 01,3571           54704                           TS       GOLOC      -1                         
054923,000079: 
054924,000080: 01,3572           50155                           NDX      TEMP2G                                #  DIRECTLY STORED
054925,000081: 01,3573           31054                           CA       PHSPRDT1                              
054926,000082: 01,3574           10000        TIMETEST           CCS      A                                     #  IS IT AN IMMEDIATE RESTART
054927,000083: 01,3575           24000                           INCR     A                                     #  NO,
054928,000084: 01,3576           13601                           TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
054929,000085: 
054930,000086: 01,3577           15436                           TCF      ITSINDIR                              #  STORED INDIRECTLY
054931,000087: 
054932,000088: 01,3600           13620                           TCF      IMEDIATE                              #  IT WANTS AN IMMEDIATE RESTART
054933,000089: 
054934,000090:                                                                                                  #  ***** THIS MUST BE IN FIXED FIXED *****
054935,000091: 
054936,000092:    5436                                           BLOCK    02                                    
054937,000093:    4000                                           SETLOC   FFTAG2                                
054938,000094:    4000                                           BANK                                           
054939,000095: 
054940,000096:    5436                                           COUNT*   $$/RSROU                              
054941,000097:    5436           22706        ITSINDIR           LXCH     GOLOC      +1                         #  GET THE CORRECT E BANK IN CASE THIS IS
054942,000098:    5437           22006                           LXCH     BB                                    #  SWITCHED ERRASIBLE
054943,000099: 
054944,000100:    5440           50000                           NDX      A                                     #  GET THE TIME INDIRECTLY
054945,000101:    5441           30001                           CA       1                                     
054946,000102: 
054947,000103:    5442           22006                           LXCH     BB                                    #  RESTORE THE BB AND GOLOC
054948,000104:    5443           22706                           LXCH     GOLOC      +1                         
054949,000105: 
054950,000106:    5444           13601                           TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
054951,000107: 
054952,000108:                                                                                                  #  ***** YOU MAY RETURN TO SWITCHED FIXED *****
054953,000109: 
054954,000110: 01,3601                                           BANK     01                                    
054955,000111: 01,2000                                           SETLOC   RESTART                               
054956,000112: 01,2000                                           BANK                                           
054957,000113: 
054958,000114: 01,3601                                           COUNT*   $$/RSROU                              
054959,000115: 01,3601           40000        FINDTIME           COM                                            #  MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD
054960,000116: 01,3602           54001                           TS       L                                     #  AND SAVE
054961,000117: 01,3603           50155                           NDX      TEMP2G                                
054962,000118: 01,3604           41053                           CS       TBASE1                                
054963,000119: 01,3605           00006                           EXTEND                                         
054964,000120: 01,3606           60025                           SU       TIME1                                 
054965,000121: 01,3607           10000                           CCS      A                                     
054966,000122: 01,3610           40000                           COM                                            

Page 1305

054968,000124: 01,3611           67731                           AD       OCT37776                              
054969,000125: 01,3612           64753                           AD       ONE                                   
054970,000126: 01,3613           60001                           AD       L                                     
054971,000127: 01,3614           10000                           CCS      A                                     
054972,000128: 01,3615           34755                           CA       ZERO                                  
054973,000129: 01,3616           13620                           TCF      +2                                    
054974,000130: 01,3617           13620                           TCF      +1                                    
054975,000131: 01,3620           64753        IMEDIATE           AD       ONE                                   
054976,000132: 01,3621           00704                           TC       GOLOC      -1                         
054977,000133: 01,3622           33565        ITSLIKEB           CA       RTRNCADR                              #  TYPE B, SO STORE RETURN IN
054978,000134: 01,3623           54157                           TS       TEMPSWCH                              #  TEMPSWCH IN CASE OF AN EVEN PHASE
054979,000135: 
054980,000136: 01,3624           33771                           CA       PRT2CADR                              #  SET UP EXIT TO GET TABLE PART OF THIS
054981,000137: 01,3625           54707                           TS       GOLOC      +2                         #  VARIABLE TYPE OF PHASE
054982,000138: 
054983,000139: 01,3626           30154                           CA       TEMPPHS                               #  MAKE THE PHASE LOOK RIGHT FOR THE TABLE
054984,000140: 01,3627           76074                           MASK     OCT177                                #  PART OF THIS VARIABLE PHASE
054985,000141: 01,3630           54154                           TS       TEMPPHS                               
054986,000142: 
054987,000143: 01,3631           00006                           EXTEND                                         
054988,000144: 01,3632           50155                           NDX      TEMP2G                                #  OBTAIN THE JOB:S 2CADR
054989,000145: 01,3633           31437                           DCA      PHSNAME1                              
054990,000146: 01,3634           52706                           DXCH     GOLOC                                 
054991,000147: 
054992,000148: 01,3635           50155        ITSAJOB            NDX      TEMP2G                                #  NOW ADD THE PRIORITY AND LET:S GO
054993,000149: 01,3636           31054                           CA       PHSPRDT1                              
054994,000150: 01,3637           54704        CHKNOVAC           TS       GOLOC      -1                         #  SAVE PRIO UNTIL WE SEE IF ITS
054995,000151: 01,3640           00006                           EXTEND                                         #  A FINDVAC OR A NOVAC
054996,000152: 01,3641           63645                           BZMF     ITSNOVAC                              
054997,000153: 
054998,000154: 01,3642           33773                           CAF      FVACCADR                              #  POSITIVE, SET UP FINDVAC CALL.
054999,000155: 01,3643           56704                           XCH      GOLOC      -1                         #  PICK UP PRIO,
055000,000156: 01,3644           00704                           TC       GOLOC      -1                         #  AND GO
055001,000157: 
055002,000158: 01,3645           33775        ITSNOVAC           CAF      NOVACADR                              #  NEGATIVE,
055003,000159: 01,3646           56704                           XCH      GOLOC      -1                         #  SET UP NOVAC CALL,
055004,000160: 01,3647           40000                           COM                                            #  CORRECT PRIO,
055005,000161: 01,3650           00704                           TC       GOLOC      -1                         #  AND GO
055006,000162: 
055007,000163: 01,3651           54020        ITSATBL            TS       CYR                                   #  FIND OUT IF THE PHASE IS ODD OR EVEN
055008,000164: 01,3652           10020                           CCS      CYR                                   
055009,000165: 01,3653           13654                           TCF      +1                                    #  IT:S EVEN
055010,000166: 01,3654           13752                           TCF      ITSEVEN                               
055011,000167: 
055012,000168: 01,3655           33565                           CA       RTRNCADR                              #  IN CASE THIS IS THE SECOND PART OF A
055013,000169: 01,3656           54707                           TS       GOLOC      +2                         #  TYPE B RESTART, WE NEED PROPER EXIT
055014,000170: 
055015,000171: 01,3657           30154                           CA       TEMPPHS                               #  SET UP POINTER FOR FINDING OUR PLACE IN
055016,000172: 01,3660           54021                           TS       SR                                    #  THE RESTART TABLES
055017,000173: 01,3661           60021                           AD       SR                                    

Page 1306

055019,000175: 01,3662           50155                           NDX      TEMP2G                                
055020,000176: 01,3663           62003                           AD       SIZETAB    +1                         
055021,000177: 01,3664           54156                           TS       POINTER                               
055022,000178: 
055023,000179: 01,3665           00006        CONTBL2            EXTEND                                         #  FIND OUT WHAT:S IN THE TABLE
055024,000180: 01,3666           50156                           NDX      POINTER                               
055025,000181: 01,3667           32002                           DCA      CADRTAB                               #  GET THE 2CADR
055026,000182: 
055027,000183: 01,3670           22706                           LXCH     GOLOC      +1                         #  STORE THE BB INFORMATION
055028,000184: 
055029,000185: 01,3671           10000                           CCS      A                                     #  IS IT A JOB OR IS IT TIMED
055030,000186: 01,3672           24000                           INCR     A                                     #  POSITIVE, MUST BE A JOB
055031,000187: 01,3673           13746                           TCF      ITSAJOB2                              
055032,000188: 
055033,000189: 01,3674           24000                           INCR     A                                     #  MUST BE EITHER A WAITLIST OR LONGCALL
055034,000190: 01,3675           54705                           TS       GOLOC                                 #  LET-S STORE THE CORRECT CADR
055035,000191: 
055036,000192: 01,3676           33774                           CA       WTLTCADR                              #  SET UP OUR EXIT TO WAITLIST
055037,000193: 01,3677           54704                           TS       GOLOC      -1                         
055038,000194: 
055039,000195: 01,3700           30706                           CA       GOLOC      +1                         #  NOW FIND OUT IF IT IS A WAITLIST CALL
055040,000196: 01,3701           74742                           MASK     BIT10                                 #  THIS SHOULD BE ONE IF WE HAVE -BB
055041,000197: 01,3702           10000                           CCS      A                                     #  FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
055042,000198:                                                                                                  #  6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
055043,000199:                                                                                                  #  IN IMPORTANCE ANYWAY.  BIT 4
055044,000200: 01,3703           13741                           TCF      ITSWTLST                              #  IT IS A WAITLIST CALL
055045,000201: 
055046,000202: 01,3704           50156                           NDX      POINTER                               #  OBTAIN THE ORIGINAL DELTA T
055047,000203: 01,3705           32000                           CA       PRDTTAB                               #  ADDRESS FOR THIS LONGCALL
055048,000204: 
055049,000205: 01,3706           15445                           TCF      ITSLGCL1                              #  NOW GO GET THE DELTA TIME
055050,000206: 
055051,000207:                                                                                                  #  ***** THIS MUST BE IN FIXED FIXED *****
055052,000208: 
055053,000209:    5445                                           BLOCK    02                                    
055054,000210:    4000                                           SETLOC   FFTAG2                                
055055,000211:    4000                                           BANK                                           
055056,000212: 
055057,000213:    5445                                           COUNT*   $$/RSROU                              
055058,000214:    5445           22706        ITSLGCL1           LXCH     GOLOC      +1                         #  OBTAIN THE CORRECT E BANK
055059,000215:    5446           22006                           LXCH     BB                                    
055060,000216:    5447           22706                           LXCH     GOLOC      +1                         #  AND PRESERVE OUR E AND F BANKS
055061,000217: 
055062,000218:    5450           00006                           EXTEND                                         #  GET THE DELTA TIME
055063,000219:    5451           50000                           NDX      A                                     
055064,000220:    5452           30001                           DCA      0                                     
055065,000221: 
055066,000222:    5453           22706                           LXCH     GOLOC      +1                         #  RESTORE OUR E AND F BANK
055067,000223:    5454           22006                           LXCH     BB                                    #  RESTORE THE TASKS E AND F BANKS
055068,000224:    5455           22706                           LXCH     GOLOC      +1                         #  AND PRESERVE OUR L

Page 1307

055070,000226:    5456           13707                           TCF      ITSLGCL2                              #  NOW LET:S PROCESS THIS LONGCALL
055071,000227: 
055072,000228:                                                                                                  #  ***** YOU MAY RETURN TO SWITCHED FIXED *****
055073,000229: 
055074,000230: 01,3707                                           BANK     01                                    
055075,000231: 01,2000                                           SETLOC   RESTART                               
055076,000232: 01,2000                                           BANK                                           
055077,000233: 
055078,000234: 01,3707                                           COUNT*   $$/RSROU                              
055079,000235: 01,3707           53154        ITSLGCL2           DXCH     LONGTIME                              
055080,000236: 
055081,000237: 01,3710           00006                           EXTEND                                         #  CALCULATE TIME LEFT
055082,000238: 01,3711           40025                           DCS      TIME2                                 
055083,000239: 01,3712           21154                           DAS      LONGTIME                              
055084,000240: 01,3713           00006                           EXTEND                                         
055085,000241: 01,3714           31152                           DCA      LONGBASE                              
055086,000242: 01,3715           21154                           DAS      LONGTIME                              
055087,000243: 
055088,000244: 01,3716           11153                           CCS      LONGTIME                              #  FIND OUT HOW THIS SHOULD BE RESTARTED
055089,000245: 01,3717           13727                           TCF      LONGCLCL                              
055090,000246: 01,3720           13722                           TCF      +2                                    
055091,000247: 01,3721           13615                           TCF      IMEDIATE   -3                         
055092,000248: 01,3722           11154                           CCS      LONGTIME   +1                         
055093,000249: 01,3723           13727                           TCF      LONGCLCL                              
055094,000250: 01,3724           13725                           NOOP                                           #  CAN:T GET HERE *********
055095,000251: 01,3725           13615                           TCF      IMEDIATE   -3                         
055096,000252: 01,3726           13620                           TCF      IMEDIATE                              
055097,000253: 
055098,000254: 01,3727           33772        LONGCLCL           CA       LGCLCADR                              #  WE WILL GO TO LONGCALL
055099,000255: 01,3730           54704                           TS       GOLOC      -1                         
055100,000256: 
055101,000257: 01,3731           00006                           EXTEND                                         #  PREPARE OUR ENTRY TO LONGCALL
055102,000258: 01,3732           31154                           DCA      LONGTIME                              
055103,000259: 01,3733           00704                           TC       GOLOC      -1                         
055104,000260: 
055105,000261: 01,3734           33774        ITSLNGCL           CA       WTLTCADR                              #  ASSUME IT WILL GO TO WAITLIST
055106,000262: 01,3735           54704                           TS       GOLOC      -1                         
055107,000263: 
055108,000264: 01,3736           50155                           NDX      TEMP2G                                
055109,000265: 01,3737           41054                           CS       PHSPRDT1                              #  GET THE DELTA T ADDRESS
055110,000266: 
055111,000267: 01,3740           15445                           TCF      ITSLGCL1                              #  NOW GET THE DELTA TIME
055112,000268: 
055113,000269: 01,3741           40706        ITSWTLST           CS       GOLOC      +1                         #  CORRECT THE BBCON INFORMATION
055114,000270: 01,3742           54706                           TS       GOLOC      +1                         
055115,000271: 
055116,000272: 01,3743           50156                           NDX      POINTER                               #  GET THE DT AND FIND OUT IF IT WAS STORED
055117,000273: 01,3744           32000                           CA       PRDTTAB                               #  DIRECTLY OR INDIRECTLY
055118,000274: 
055119,000275: 01,3745           13574                           TCF      TIMETEST                              #  FIND OUT HOW THE TIME IS STORED
055120,000276: 

Page 1308

055122,000278: 01,3746           56705        ITSAJOB2           XCH      GOLOC                                 #  STORE THE CADR
055123,000279: 
055124,000280: 01,3747           50156                           NDX      POINTER                               #  ADD THE PRIORITY AND LET:S GO
055125,000281: 01,3750           32000                           CA       PRDTTAB                               
055126,000282: 
055127,000283: 01,3751           13637                           TCF      CHKNOVAC                              
055128,000284: 
055129,000285: 01,3752           30157        ITSEVEN            CA       TEMPSWCH                              #  SET UP FOR EITHER THE SECOND PART OF THE
055130,000286: 01,3753           54707                           TS       GOLOC      +2                         #  TABLE, OR A RETURN FOR THE NEXT GROUP
055131,000287: 
055132,000288: 01,3754           50155                           NDX      TEMP2G                                #  SET UP POINTER FOR OUR LOCATION WITHIN
055133,000289: 01,3755           32002                           CA       SIZETAB                               #  THE TABLE
055134,000290: 01,3756           60154                           AD       TEMPPHS                               #  THIS MAY LOOK BAD BUT LET:S SEE YOU DO
055135,000291: 01,3757           60154                           AD       TEMPPHS                               #  BETTER IN TIME OR NUMBERR OF LOCATIONS
055136,000292: 01,3760           60154                           AD       TEMPPHS                               
055137,000293: 01,3761           54156                           TS       POINTER                               
055138,000294: 
055139,000295: 01,3762           13665                           TCF      CONTBL2                               #  NOW PROCESS WHAT IS IN THE TABLE
055140,000296: 
055141,000297: 01,3763           36245        PHSPART2           CA       THREE                                 #  SET THE POINTER FOR THE SECOND HALF OF
055142,000298: 01,3764           26156                           ADS      POINTER                               #  THE TABLE
055143,000299: 
055144,000300: 01,3765           33565                           CA       RTRNCADR                              #  THIS WILL BE OUR LAST TIME THROUGH THE
055145,000301: 01,3766           54707                           TS       GOLOC      +2                         #  EVEN TABLE, SO AFTER IT GET THE NEXT
055146,000302:                                                                                                  #  GROUP
055147,000303: 01,3767           13665                           TCF      CONTBL2                               #  SO LET:S GET THE SECOND ENTRY IN THE TBL
055148,000304: 
055149,000305: 01,3770     0154               TEMPPHS            EQUALS   MPAC                                  
055150,000306: 01,3770     0155               TEMP2G             EQUALS   MPAC       +1                         
055151,000307: 01,3770     0156               POINTER            EQUALS   MPAC       +2                         
055152,000308: 01,3770     0157               TEMPSWCH           EQUALS   MPAC       +3                         
055153,000309: 01,3770     0705               GOLOC              EQUALS   VAC5       +20D                       
055154,000310: 01,3770     7746               MINUS2             EQUALS   NEG2                                  
055155,000311: 01,3770     6074               OCT177             EQUALS   LOW7                                  
055156,000312: 
055157,000313: 01,3770           03763        PHS2CADR           GENADR   PHSPART2                              
055158,000314: 01,3771           03541        PRT2CADR           GENADR   GETPART2                              
055159,000315: 01,3772           05277        LGCLCADR           GENADR   LONGCALL                              
055160,000316: 01,3773           05105        FVACCADR           GENADR   FINDVAC                               
055161,000317: 01,3774           05203        WTLTCADR           GENADR   WAITLIST                              
055162,000318: 01,3775           05072        NOVACADR           GENADR   NOVAC                                 
055163,000319: 
055164,000320: 

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