Source Code

These source-code files are part of a reconstructed copy of LUM69 Revision 2, the flown Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.

The reconstruction began with source code of Luminary 69 revision 0 previously transcribed from a digitized copy of that program. The code was then updated by back-porting the R-2 lunar potential model from previously-transcribed source code of Luminary 99. These required changes were described in the original Luminary memos 75 and 78. The reconstructed code was verified by matching memory-bank checksums to those listed in drawing 2021152G. Note that page numbers in the reconstructed code match those on the Luminary 069 printout, although the added code would likely have changed page numbers for a real LUM69 Revision 2 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.

055810,000002:                                                                                                  ## Copyright:   Public domain.
055811,000003:                                                                                                  ## Filename:    RESTARTS_ROUTINE.agc
055812,000004:                                                                                                  ## Purpose:     A section of LUM69 revision 2.
055813,000005:                                                                                                  ##              It is part of the reconstructed source code for the flown
055814,000006:                                                                                                  ##              version of the flight software for the Lunar Module's (LM)
055815,000007:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 10. The code has
055816,000008:                                                                                                  ##              been recreated from a copy of Luminary revsion 069, using
055817,000009:                                                                                                  ##              changes present in Luminary 099 which were described in
055818,000010:                                                                                                  ##              Luminary memos 75 and 78. The code has been adapted such
055819,000011:                                                                                                  ##              that the resulting bugger words exactly match those specified
055820,000012:                                                                                                  ##              for LUM69 revision 2 in NASA drawing 2021152B, which gives
055821,000013:                                                                                                  ##              relatively high confidence that the reconstruction is correct.
055822,000014:                                                                                                  ## Reference:   pp. 1297-1302
055823,000015:                                                                                                  ## Assembler:   yaYUL
055824,000016:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
055825,000017:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
055826,000018:                                                                                                  ## Mod history: 2019-07-27 MAS  Created from Luminary 69.
055827,000019: 

Page 1297

055829,000021: 01,3523                                           BANK     01                                    
055830,000022: 01,2000                                           SETLOC   RESTART                               
055831,000023: 01,2000                                           BANK                                           
055832,000024: 
055833,000025: 01,3523  E3,1436                                  EBANK=   PHSNAME1                              #  GOPROG MUST SWITCH TO THIS EBANK
055834,000026: 
055835,000027: 01,3523                                           COUNT*   $$/RSROU                              
055836,000028: 01,3523           30161        RESTARTS           CA       MPAC       +5                         #  GET GROUP NUMBER -1
055837,000029: 01,3524           60000                           DOUBLE                                         #  SAVE FOR INDEXING
055838,000030: 01,3525           54155                           TS       TEMP2G                                
055839,000031: 
055840,000032: 01,3526           33765                           CA       PHS2CADR                              #  SET UP EXIT IN CASE IT IS AN EVEN
055841,000033: 01,3527           54157                           TS       TEMPSWCH                              #  TABLE PHASE
055842,000034: 
055843,000035: 01,3530           33562                           CA       RTRNCADR                              #  TO SAVE TIME ASSUME IT WILL GET NEXT
055844,000036: 01,3531           54707                           TS       GOLOC      +2                         #  GROUP AFTER THIS
055845,000037: 
055846,000038: 01,3532           30154                           CA       TEMPPHS                               
055847,000039: 01,3533           75007                           MASK     OCT1400                               
055848,000040: 01,3534           10000                           CCS      A                                     #  IS IT A VARIABLE OR TABLE RESTART
055849,000041: 01,3535           13546                           TCF      ITSAVAR                               #  IT:S A VARIABLE RESTART
055850,000042: 
055851,000043: 01,3536           10154        GETPART2           CCS      TEMPPHS                               #  IS IT AN X.1 RESTART
055852,000044: 01,3537           10000                           CCS      A                                     
055853,000045: 01,3540           13646                           TCF      ITSATBL                               #  NO, ITS A TABLE RESTART
055854,000046: 
055855,000047: 01,3541           35024                           CA       PRIO14                                #  IT IS AN X.1 RESTART, THEREFORE START
055856,000048: 01,3542           05105                           TC       FINDVAC                               #  THE DISPLAY RESTART JOB
055857,000049: 01,3543  E3,1400                                  EBANK=   LST1                                  
055858,000050: 01,3543           02712 20103                     2CADR    INITDSP                               
055859,000051: 
055860,000052: 01,3545           03562                           TC       RTRNCADR                              #  FINISHED WITH THIS GROUP, GET NEXT ONE
055861,000053: 
055862,000054: 01,3546           75007        ITSAVAR            MASK     OCT1400                               #  IS IT TYPE B ?
055863,000055: 01,3547           10000                           CCS      A                                     
055864,000056: 01,3550           13617                           TCF      ITSLIKEB                              #  YES, IT IS TYPE B
055865,000057: 
055866,000058: 01,3551           00006                           EXTEND                                         #  STORE THE JOB (OR TASK) 2CADR FOR EXIT
055867,000059: 01,3552           50155                           NDX      TEMP2G                                
055868,000060: 01,3553           31437                           DCA      PHSNAME1                              
055869,000061: 01,3554           52706                           DXCH     GOLOC                                 
055870,000062: 
055871,000063: 01,3555           30154                           CA       TEMPPHS                               #  SEE IF THIS IS A JOB, TASK, OR A LONGCAL
055872,000064: 01,3556           74757                           MASK     OCT7                                  
055873,000065: 01,3557           67745                           AD       MINUS2                                
055874,000066: 01,3560           10000                           CCS      A                                     
055875,000067: 01,3561           13731                           TCF      ITSLNGCL                              #  ITS A LONGCALL
055876,000068: 
055877,000069: 01,3562           04631        RTRNCADR           TC       SWRETURN                              #  CANT GET HERE

Page 1298

055879,000071: 01,3563           13565                           TCF      ITSAWAIT                              
055880,000072: 
055881,000073: 01,3564           13632                           TCF      ITSAJOB                               #  ITS A JOB
055882,000074: 
055883,000075: 01,3565           33771        ITSAWAIT           CA       WTLTCADR                              #  SET UP WAITLIST CALL
055884,000076: 01,3566           54704                           TS       GOLOC      -1                         
055885,000077: 
055886,000078: 01,3567           50155                           NDX      TEMP2G                                #  DIRECTLY STORED
055887,000079: 01,3570           31054                           CA       PHSPRDT1                              
055888,000080: 01,3571           10000        TIMETEST           CCS      A                                     #  IS IT AN IMMEDIATE RESTART
055889,000081: 01,3572           24000                           INCR     A                                     #  NO,
055890,000082: 01,3573           13576                           TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
055891,000083: 
055892,000084: 01,3574           15436                           TCF      ITSINDIR                              #  STORED INDIRECTLY
055893,000085: 
055894,000086: 01,3575           13615                           TCF      IMEDIATE                              #  IT WANTS AN IMMEDIATE RESTART
055895,000087: 
055896,000088:                                                                                                  #  ***** THIS MUST BE IN FIXED FIXED *****
055897,000089: 
055898,000090:    5436                                           BLOCK    02                                    
055899,000091:    4000                                           SETLOC   FFTAG2                                
055900,000092:    4000                                           BANK                                           
055901,000093: 
055902,000094:    5436                                           COUNT*   $$/RSROU                              
055903,000095:    5436           22706        ITSINDIR           LXCH     GOLOC      +1                         #  GET THE CORRECT E BANK IN CASE THIS IS
055904,000096:    5437           22006                           LXCH     BB                                    #  SWITCHED ERRASIBLE
055905,000097: 
055906,000098:    5440           50000                           NDX      A                                     #  GET THE TIME INDIRECTLY
055907,000099:    5441           30001                           CA       1                                     
055908,000100: 
055909,000101:    5442           22006                           LXCH     BB                                    #  RESTORE THE BB AND GOLOC
055910,000102:    5443           22706                           LXCH     GOLOC      +1                         
055911,000103: 
055912,000104:    5444           13576                           TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
055913,000105: 
055914,000106:                                                                                                  #  ***** YOU MAY RETURN TO SWITCHED FIXED *****
055915,000107: 
055916,000108: 01,3576                                           BANK     01                                    
055917,000109: 01,2000                                           SETLOC   RESTART                               
055918,000110: 01,2000                                           BANK                                           
055919,000111: 
055920,000112: 01,3576                                           COUNT*   $$/RSROU                              
055921,000113: 01,3576           40000        FINDTIME           COM                                            #  MAKE NEGITIVE SINCE IT WILL BE SUBTRACTD
055922,000114: 01,3577           54001                           TS       L                                     #  AND SAVE
055923,000115: 01,3600           50155                           NDX      TEMP2G                                
055924,000116: 01,3601           41053                           CS       TBASE1                                
055925,000117: 01,3602           00006                           EXTEND                                         
055926,000118: 01,3603           60025                           SU       TIME1                                 
055927,000119: 01,3604           10000                           CCS      A                                     
055928,000120: 01,3605           40000                           COM                                            

Page 1299

055930,000122: 01,3606           67730                           AD       OCT37776                              
055931,000123: 01,3607           64753                           AD       ONE                                   
055932,000124: 01,3610           60001                           AD       L                                     
055933,000125: 01,3611           10000                           CCS      A                                     
055934,000126: 01,3612           34755                           CA       ZERO                                  
055935,000127: 01,3613           13615                           TCF      +2                                    
055936,000128: 01,3614           13615                           TCF      +1                                    
055937,000129: 01,3615           64753        IMEDIATE           AD       ONE                                   
055938,000130: 01,3616           00704                           TC       GOLOC      -1                         
055939,000131: 01,3617           33562        ITSLIKEB           CA       RTRNCADR                              #  TYPE B,             SO STORE RETURN IN
055940,000132: 01,3620           54157                           TS       TEMPSWCH                              #  TEMPSWCH IN CASE OF AN EVEN PHASE
055941,000133: 
055942,000134: 01,3621           33766                           CA       PRT2CADR                              #  SET UP EXIT TO GET TABLE PART OF THIS
055943,000135: 01,3622           54707                           TS       GOLOC      +2                         #  VARIABLE TYPE OF PHASE
055944,000136: 
055945,000137: 01,3623           30154                           CA       TEMPPHS                               #  MAKE THE PHASE LOOK RIGHT FOR THE TABLE
055946,000138: 01,3624           76073                           MASK     OCT177                                #  PART OF THIS VARIABLE PHASE
055947,000139: 01,3625           54154                           TS       TEMPPHS                               
055948,000140: 
055949,000141: 01,3626           00006                           EXTEND                                         
055950,000142: 01,3627           50155                           NDX      TEMP2G                                #  OBTAIN THE JOB:S 2CADR
055951,000143: 01,3630           31437                           DCA      PHSNAME1                              
055952,000144: 01,3631           52706                           DXCH     GOLOC                                 
055953,000145: 
055954,000146: 01,3632           50155        ITSAJOB            NDX      TEMP2G                                #  NOW ADD THE PRIORITY AND LET:S GO
055955,000147: 01,3633           31054                           CA       PHSPRDT1                              
055956,000148: 01,3634           54704        CHKNOVAC           TS       GOLOC      -1                         #  SAVE PRIO UNTIL WE SEE IF ITS
055957,000149: 01,3635           00006                           EXTEND                                         #  A FINDVAC OR A NOVAC
055958,000150: 01,3636           63642                           BZMF     ITSNOVAC                              
055959,000151: 
055960,000152: 01,3637           33770                           CAF      FVACCADR                              #  POSITIVE, SET UP FINDVAC CALL.
055961,000153: 01,3640           56704                           XCH      GOLOC      -1                         #  PICK UP PRIO,
055962,000154: 01,3641           00704                           TC       GOLOC      -1                         #  AND GO
055963,000155: 
055964,000156: 01,3642           33772        ITSNOVAC           CAF      NOVACADR                              #  NEGATIVE,
055965,000157: 01,3643           56704                           XCH      GOLOC      -1                         #  SET UP NOVAC CALL,
055966,000158: 01,3644           40000                           COM                                            #  CORRECT PRIO,
055967,000159: 01,3645           00704                           TC       GOLOC      -1                         #  AND GO
055968,000160: 
055969,000161: 01,3646           54020        ITSATBL            TS       CYR                                   #  FIND OUT IF THE PHASE IS ODD OR EVEN
055970,000162: 01,3647           10020                           CCS      CYR                                   
055971,000163: 01,3650           13651                           TCF      +1                                    #  IT:S EVEN
055972,000164: 01,3651           13747                           TCF      ITSEVEN                               
055973,000165: 
055974,000166: 01,3652           33562                           CA       RTRNCADR                              #  IN CASE THIS IS THE SECOND PART OF A
055975,000167: 01,3653           54707                           TS       GOLOC      +2                         #  TYPE B RESTART, WE NEED PROPER EXIT
055976,000168: 
055977,000169: 01,3654           30154                           CA       TEMPPHS                               #  SET UP POINTER FOR FINDING OUR PLACE IN
055978,000170: 01,3655           54021                           TS       SR                                    #  THE RESTART TABLES
055979,000171: 01,3656           60021                           AD       SR                                    

Page 1300

055981,000173: 01,3657           50155                           NDX      TEMP2G                                
055982,000174: 01,3660           62003                           AD       SIZETAB    +1                         
055983,000175: 01,3661           54156                           TS       POINTER                               
055984,000176: 
055985,000177: 01,3662           00006        CONTBL2            EXTEND                                         #  FIND OUT WHAT:S IN THE TABLE
055986,000178: 01,3663           50156                           NDX      POINTER                               
055987,000179: 01,3664           32002                           DCA      CADRTAB                               #  GET THE 2CADR
055988,000180: 
055989,000181: 01,3665           22706                           LXCH     GOLOC      +1                         #  STORE THE BB INFORMATION
055990,000182: 
055991,000183: 01,3666           10000                           CCS      A                                     #  IS IT A JOB OR IS IT  TIMED
055992,000184: 01,3667           24000                           INCR     A                                     #  POSITIVE, MUST BE A JOB
055993,000185: 01,3670           13743                           TCF      ITSAJOB2                              
055994,000186: 
055995,000187: 01,3671           24000                           INCR     A                                     #  MUST BE EITHER A WAITLIST OR LONGCALL
055996,000188: 01,3672           54705                           TS       GOLOC                                 #  LET-S STORE THE CORRECT CADR
055997,000189: 
055998,000190: 01,3673           33771                           CA       WTLTCADR                              #  SET UP OUR EXIT TO WAITLIST
055999,000191: 01,3674           54704                           TS       GOLOC      -1                         
056000,000192: 
056001,000193: 01,3675           30706                           CA       GOLOC      +1                         #  NOW FIND OUT IF IT IS A WAITLIST CALL
056002,000194: 01,3676           74742                           MASK     BIT10                                 #  THIS SHOULD BE ONE IF WE HAVE -BB
056003,000195: 01,3677           10000                           CCS      A                                     #  FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
056004,000196:                                                                                                  #  6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
056005,000197:                                                                                                  #  IN IMPORTANCE ANYWAY.  BIT 4
056006,000198: 01,3700           13736                           TCF      ITSWTLST                              #  IT IS A WAITLIST CALL
056007,000199: 
056008,000200: 01,3701           50156                           NDX      POINTER                               #  OBTAIN THE ORIGINAL DELTA T
056009,000201: 01,3702           32000                           CA       PRDTTAB                               #  ADDRESS FOR THIS LONGCALL
056010,000202: 
056011,000203: 01,3703           15445                           TCF      ITSLGCL1                              #  NOW GO GET THE DELTA TIME
056012,000204: 
056013,000205:                                                                                                  #  ***** THIS MUST BE IN FIXED FIXED *****
056014,000206: 
056015,000207:    5445                                           BLOCK    02                                    
056016,000208:    4000                                           SETLOC   FFTAG2                                
056017,000209:    4000                                           BANK                                           
056018,000210: 
056019,000211:    5445                                           COUNT*   $$/RSROU                              
056020,000212:    5445           22706        ITSLGCL1           LXCH     GOLOC      +1                         #  OBTAIN THE CORRECT E BANK
056021,000213:    5446           22006                           LXCH     BB                                    
056022,000214:    5447           22706                           LXCH     GOLOC      +1                         #  AND PRESERVE OUR E AND F BANKS
056023,000215: 
056024,000216:    5450           00006                           EXTEND                                         #  GET THE DELTA TIME
056025,000217:    5451           50000                           NDX      A                                     
056026,000218:    5452           30001                           DCA      0                                     
056027,000219: 
056028,000220:    5453           22706                           LXCH     GOLOC      +1                         #  RESTORE OUR E AND F BANK
056029,000221:    5454           22006                           LXCH     BB                                    #  RESTORE THE TASKS E AND F BANKS
056030,000222:    5455           22706                           LXCH     GOLOC      +1                         #  AND PRESERVE OUR L

Page 1301

056032,000224:    5456           13704                           TCF      ITSLGCL2                              #  NOW LET:S PROCESS THIS LONGCALL
056033,000225: 
056034,000226:                                                                                                  #  ***** YOU MAY RETURN TO SWITCHED FIXED *****
056035,000227: 
056036,000228: 01,3704                                           BANK     01                                    
056037,000229: 01,2000                                           SETLOC   RESTART                               
056038,000230: 01,2000                                           BANK                                           
056039,000231: 
056040,000232: 01,3704                                           COUNT*   $$/RSROU                              
056041,000233: 01,3704           53154        ITSLGCL2           DXCH     LONGTIME                              
056042,000234: 
056043,000235: 01,3705           00006                           EXTEND                                         #  CALCULATE TIME LEFT
056044,000236: 01,3706           40025                           DCS      TIME2                                 
056045,000237: 01,3707           21154                           DAS      LONGTIME                              
056046,000238: 01,3710           00006                           EXTEND                                         
056047,000239: 01,3711           31152                           DCA      LONGBASE                              
056048,000240: 01,3712           21154                           DAS      LONGTIME                              
056049,000241: 
056050,000242: 01,3713           11153                           CCS      LONGTIME                              #  FIND OUT HOW THIS SHOULD BE RESTARTED
056051,000243: 01,3714           13724                           TCF      LONGCLCL                              
056052,000244: 01,3715           13717                           TCF      +2                                    
056053,000245: 01,3716           13612                           TCF      IMEDIATE   -3                         
056054,000246: 01,3717           11154                           CCS      LONGTIME   +1                         
056055,000247: 01,3720           13724                           TCF      LONGCLCL                              
056056,000248: 01,3721           13722                           NOOP                                           #  CAN:T GET HERE *********
056057,000249: 01,3722           13612                           TCF      IMEDIATE   -3                         
056058,000250: 01,3723           13615                           TCF      IMEDIATE                              
056059,000251: 
056060,000252: 01,3724           33767        LONGCLCL           CA       LGCLCADR                              #  WE WILL GO TO LONGCALL
056061,000253: 01,3725           54704                           TS       GOLOC      -1                         
056062,000254: 
056063,000255: 01,3726           00006                           EXTEND                                         #  PREPARE OUR ENTRY TO LONGCALL
056064,000256: 01,3727           31154                           DCA      LONGTIME                              
056065,000257: 01,3730           00704                           TC       GOLOC      -1                         
056066,000258: 
056067,000259: 01,3731           33771        ITSLNGCL           CA       WTLTCADR                              #  ASSUME IT WILL GO TO WAITLIST
056068,000260: 01,3732           54704                           TS       GOLOC      -1                         
056069,000261: 
056070,000262: 01,3733           50155                           NDX      TEMP2G                                
056071,000263: 01,3734           41054                           CS       PHSPRDT1                              #  GET THE DELTA T ADDRESS
056072,000264: 
056073,000265: 01,3735           15445                           TCF      ITSLGCL1                              #  NOW GET THE DELTA TIME
056074,000266: 
056075,000267: 01,3736           40706        ITSWTLST           CS       GOLOC      +1                         #  CORRECT THE BBCON INFORMATION
056076,000268: 01,3737           54706                           TS       GOLOC      +1                         
056077,000269: 
056078,000270: 01,3740           50156                           NDX      POINTER                               #  GET THE DT AND FIND OUT IF IT WAS STORED
056079,000271: 01,3741           32000                           CA       PRDTTAB                               #  DIRECTLY OR INDIRECTLY
056080,000272: 
056081,000273: 01,3742           13571                           TCF      TIMETEST                              #  FIND OUT HOW THE TIME IS STORED
056082,000274: 

Page 1302

056084,000276: 01,3743           56705        ITSAJOB2           XCH      GOLOC                                 #  STORE THE CADR
056085,000277: 
056086,000278: 01,3744           50156                           NDX      POINTER                               #  ADD THE PRIORITY AND LET:S GO
056087,000279: 01,3745           32000                           CA       PRDTTAB                               
056088,000280: 
056089,000281: 01,3746           13634                           TCF      CHKNOVAC                              
056090,000282: 
056091,000283: 01,3747           30157        ITSEVEN            CA       TEMPSWCH                              #  SET UP FOR EITHER THE SECOND PART OF THE
056092,000284: 01,3750           54707                           TS       GOLOC      +2                         #  TABLE, OR A RETURN FOR THE NEXT GROUP
056093,000285: 
056094,000286: 01,3751           50155                           NDX      TEMP2G                                #  SET UP POINTER FOR OUR LOCATION WITHIN
056095,000287: 01,3752           32002                           CA       SIZETAB                               #  THE TABLE
056096,000288: 01,3753           60154                           AD       TEMPPHS                               #  THIS MAY LOOK BAD BUT LET:S SEE YOU DO
056097,000289: 01,3754           60154                           AD       TEMPPHS                               #  BETTER IN TIME OR NUMBERR OF LOCATIONS
056098,000290: 01,3755           60154                           AD       TEMPPHS                               
056099,000291: 01,3756           54156                           TS       POINTER                               
056100,000292: 
056101,000293: 01,3757           13662                           TCF      CONTBL2                               #  NOW PROCESS WHAT IS IN THE TABLE
056102,000294: 
056103,000295: 01,3760           36244        PHSPART2           CA       THREE                                 #  SET THE POINTER FOR THE SECOND HALF OF
056104,000296: 01,3761           26156                           ADS      POINTER                               #  THE TABLE
056105,000297: 
056106,000298: 01,3762           33562                           CA       RTRNCADR                              #  THIS WILL BE OUR LAST TIME THROUGH THE
056107,000299: 01,3763           54707                           TS       GOLOC      +2                         #  EVEN TABLE, SO AFTER IT GET THE NEXT
056108,000300:                                                                                                  #  GROUP
056109,000301: 01,3764           13662                           TCF      CONTBL2                               #  SO LET:S GET THE SECOND ENTRY IN THE TBL
056110,000302: 
056111,000303: 01,3765     0154               TEMPPHS            EQUALS   MPAC                                  
056112,000304: 01,3765     0155               TEMP2G             EQUALS   MPAC       +1                         
056113,000305: 01,3765     0156               POINTER            EQUALS   MPAC       +2                         
056114,000306: 01,3765     0157               TEMPSWCH           EQUALS   MPAC       +3                         
056115,000307: 01,3765     0705               GOLOC              EQUALS   VAC5       +20D                       
056116,000308: 01,3765     7745               MINUS2             EQUALS   NEG2                                  
056117,000309: 01,3765     6073               OCT177             EQUALS   LOW7                                  
056118,000310: 
056119,000311: 01,3765           03760        PHS2CADR           GENADR   PHSPART2                              
056120,000312: 01,3766           03536        PRT2CADR           GENADR   GETPART2                              
056121,000313: 01,3767           05277        LGCLCADR           GENADR   LONGCALL                              
056122,000314: 01,3770           05105        FVACCADR           GENADR   FINDVAC                               
056123,000315: 01,3771           05203        WTLTCADR           GENADR   WAITLIST                              
056124,000316: 01,3772           05072        NOVACADR           GENADR   NOVAC                                 
056125,000317: 
056126,000318: 

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