Source Code

These source-code files were obtained by digitally photographing the Colossus 237 program listing from the private collection of original AGC developer Fred Martin, and then modifying pre-existing Colossus 249 (Apollo 9) source files to incorporate changes. Note that the page images presented online are of reduced quality, and that additional images are available. Report any conversion errors or legibility problems in page images to info@sandroid.org. Notations on the program listing read, in part:

	GAP: ASSEMBLE REVISION 237 OF AGC PROGRAM COLOSSUS 
	BY NASA 2021111-031  1:17 AUG. 24, 1968

058242,000002:                                                                                                 #  Copyright:    Public domain.
058243,000003:                                                                                                 #  Filename:      RESTARTS_ROUTINE.agc
058244,000004:                                                                                                 #  Purpose:      Part of the source code for Colossus build 237.
058245,000005:                                                                                                 #                This is for the Command Module's (CM) Apollo Guidance
058246,000006:                                                                                                 #                Computer (AGC), we believe for Apollo 8.
058247,000007:                                                                                                 #  Assembler:    yaYUL
058248,000008:                                                                                                 #  Contact:      Jim Lawton <jim DOT lawton AT gmail DOT com>
058249,000009:                                                                                                 #  Website:      www.ibiblio.org/apollo/index.html
058250,000010:                                                                                                 #  Page scans:   www.ibiblio.org/apollo/ScansForConversion/Colossus237/
058251,000011:                                                                                                 #  Mod history:  2011-04-17 JL    Adapted from corresponding Colossus 249 file.
058252,000012: 
058253,000013:                                                                                                 # # Page 1378
058254,000014: 01,3520                                          BANK     01                                    
058255,000015: 01,2000                                          SETLOC   RESTART                               
058256,000016: 01,2000                                          BANK                                           
058257,000017: 
058258,000018: 01,3520  E3,1436                                 EBANK=   PHSNAME1                              #  GOPROG MUST SWITCH TO THIS EBANK
058259,000019: 
058260,000020: 01,3520                                          COUNT    01/RSROU                              
058261,000021: 
058262,000022: 01,3520           30161        RESTARTS          CA       MPAC       +5                         #  GET GROUP NUMBER -1
058263,000023: 01,3521           60000                          DOUBLE                                         #  SAVE FOR INDEXING
058264,000024: 01,3522           54155                          TS       TEMP2G                                
058265,000025: 
058266,000026: 01,3523           33762                          CA       PHS2CADR                              #  SET UP EXIT IN CASE IT IS AN EVEN
058267,000027: 01,3524           54157                          TS       TEMPSWCH                              #  TABLE PHASE
058268,000028: 
058269,000029: 01,3525           33557                          CA       RTRNCADR                              #  TO SAVE TIME ASSUME IT WILL GET NEXT
058270,000030: 01,3526           54707                          TS       GOLOC      +2                         #  GROUP AFTER THIS
058271,000031: 
058272,000032: 01,3527           30154                          CA       TEMPPHS                               
058273,000033: 01,3530           74744                          MASK     OCT1400                               
058274,000034: 01,3531           10000                          CCS      A                                     #  IS IT A VARIABLE OR TABLE RESTART
058275,000035: 01,3532           13543                          TCF      ITSAVAR                               #  IT:S A VARIABLE RESTART
058276,000036: 
058277,000037: 01,3533           10154        GETPART2          CCS      TEMPPHS                               #  IS IT AN X.1 RESTART
058278,000038: 01,3534           10000                          CCS      A                                     
058279,000039: 01,3535           13643                          TCF      ITSATBL                               #  NO, ITS A TABLE RESTART
058280,000040: 
058281,000041: 01,3536           34761                          CA       PRIO14                                #  IT IS AN X.1 RESTART, THEREFORE START
058282,000042: 01,3537           05042                          TC       FINDVAC                               #  THE DISPLAY RESTART JOB
058283,000043: 01,3540  E3,1400                                 EBANK=   LST1                                  
058284,000044: 01,3540           03165 20063                    2CADR    INITDSP                               
058285,000045: 
058286,000046: 01,3542           03557                          TC       RTRNCADR                              #  FINISHED WITH THIS GROUP, GET NEXT ONE
058287,000047: 
058288,000048: 01,3543           74744        ITSAVAR           MASK     OCT1400                               #  IS IT TYPE B ?
058289,000049: 01,3544           10000                          CCS      A                                     
058290,000050: 01,3545           13614                          TCF      ITSLIKEB                              #  YES,IT IS TYPE B
058291,000051: 
058292,000052: 01,3546           00006                          EXTEND                                         #  STORE THE JOB (OR TASK) 2CADR FOR EXIT
058293,000053: 01,3547           50155                          NDX      TEMP2G                                
058294,000054: 01,3550           31437                          DCA      PHSNAME1                              
058295,000055: 01,3551           52706                          DXCH     GOLOC                                 
058296,000056: 
058297,000057: 01,3552           30154                          CA       TEMPPHS                               #  SEE IF THIS IS A JOB, TASK, OR A LONGCAL
058298,000058: 01,3553           74716                          MASK     OCT7                                  
058299,000059: 01,3554           67715                          AD       MINUS2                                
058300,000060: 01,3555           10000                          CCS      A                                     
058301,000061: 01,3556           13726                          TCF      ITSLNGCL                              #  ITS A LONGCALL
058302,000062: 
058303,000063:                                                                                                 # # Page 1379
058304,000064: 01,3557           04570        RTRNCADR          TC       SWRETURN                              #  CANT GET HERE.
058305,000065: 01,3560           13562                          TCF      ITSAWAIT                              
058306,000066: 
058307,000067: 01,3561           13627                          TCF      ITSAJOB                               #  ITS A JOB
058308,000068: 
058309,000069: 01,3562           33766        ITSAWAIT          CA       WTLTCADR                              #  SET UP WAITLIST CALL
058310,000070: 01,3563           54704                          TS       GOLOC      -1                         
058311,000071: 
058312,000072: 01,3564           50155                          NDX      TEMP2G                                #  DIRECTLY STORED
058313,000073: 01,3565           31054                          CA       PHSPRDT1                              
058314,000074: 01,3566           10000        TIMETEST          CCS      A                                     #  IS IT AN IMMEDIATE RESTART
058315,000075: 01,3567           24000                          INCR     A                                     #  NO.
058316,000076: 01,3570           13573                          TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
058317,000077: 
058318,000078: 01,3571           15367                          TCF      ITSINDIR                              #  STORED INDIRECTLY
058319,000079: 
058320,000080: 01,3572           13612                          TCF      IMEDIATE                              #  IT WANTS AN IMMEDIATE RESTART
058321,000081: 
058322,000082:                                                                                                 #  ***** THIS MUST BE IN FIXED FIXED *****
058323,000083: 
058324,000084:    5367                                          BLOCK    02                                    
058325,000085:    4000                                          SETLOC   FFTAG2                                
058326,000086:    4000                                          BANK                                           
058327,000087: 
058328,000088:    5367                                          COUNT    02/RSROU                              
058329,000089: 
058330,000090:    5367           22706        ITSINDIR          LXCH     GOLOC      +1                         #  GET THE CORRECT B BANK IN CASE THIS IS
058331,000091:    5370           22006                          LXCH     BB                                    #  SWITCHED ERRASIBLE
058332,000092: 
058333,000093:    5371           50000                          NDX      A                                     #  GET THE TIME INDIRECTLY
058334,000094:    5372           30001                          CA       1                                     
058335,000095: 
058336,000096:    5373           22006                          LXCH     BB                                    #  RESTORE THE BB AND GOLOC
058337,000097:    5374           22706                          LXCH     GOLOC      +1                         
058338,000098: 
058339,000099:    5375           13573                          TCF      FINDTIME                              #  FIND OUT WHEN IT SHOULD BEGIN
058340,000100: 
058341,000101:                                                                                                 #  ***** YOU MAY RETURN TO SWITCHED FIXED *****
058342,000102: 
058343,000103: 01,3573                                          BANK     01                                    
058344,000104: 01,2000                                          SETLOC   RESTART                               
058345,000105: 01,2000                                          BANK                                           
058346,000106: 
058347,000107: 01,3573                                          COUNT    01/RSROU                              
058348,000108: 
058349,000109: 01,3573           40000        FINDTIME          COM                                            #  MAKE NEGATIVE SINCE IT WILL BE SUBTRACTD
058350,000110: 01,3574           54001                          TS       L                                     #  AND SAVE
058351,000111: 01,3575           50155                          NDX      TEMP2G                                
058352,000112: 01,3576           41053                          CS       TBASE1                                
058353,000113: 01,3577           00006                          EXTEND                                         
058354,000114:                                                                                                 # # Page 1380
058355,000115: 01,3600           60025                          SU       TIME1                                 
058356,000116: 01,3601           10000                          CCS      A                                     
058357,000117: 01,3602           40000                          COM                                            
058358,000118: 01,3603           67700                          AD       OCT37776                              
058359,000119: 01,3604           64712                          AD       ONE                                   
058360,000120: 01,3605           60001                          AD       L                                     
058361,000121: 01,3606           10000                          CCS      A                                     
058362,000122: 01,3607           34714                          CA       ZERO                                  
058363,000123: 01,3610           13612                          TCF      +2                                    
058364,000124: 01,3611           13612                          TCF      +1                                    
058365,000125: 01,3612           64712        IMEDIATE          AD       ONE                                   
058366,000126: 01,3613           00704                          TC       GOLOC      -1                         
058367,000127: 01,3614           33557        ITSLIKEB          CA       RTRNCADR                              #  TYPE B,             SO STORE RETURN IN
058368,000128: 01,3615           54157                          TS       TEMPSWCH                              #  TEMPSWCH IN CASE OF AN EVEN PHASE
058369,000129: 
058370,000130: 01,3616           33763                          CA       PRT2CADR                              #  SET UP EXIT TO GET TABLE PART OF THIS
058371,000131: 01,3617           54707                          TS       GOLOC      +2                         #  VARIABLE TYPE OF PHASE
058372,000132: 
058373,000133: 01,3620           30154                          CA       TEMPPHS                               #  MAKE THE PHASE LOOK RIGHT FOR THE TABLE
058374,000134: 01,3621           76043                          MASK     OCT177                                #  PART OF THIS VARIABLE PHASE
058375,000135: 01,3622           54154                          TS       TEMPPHS                               
058376,000136: 
058377,000137: 01,3623           00006                          EXTEND                                         
058378,000138: 01,3624           50155                          NDX      TEMP2G                                #  OBTAIN THE JOB:S 2CADR
058379,000139: 01,3625           31437                          DCA      PHSNAME1                              
058380,000140: 01,3626           52706                          DXCH     GOLOC                                 
058381,000141: 
058382,000142: 01,3627           50155        ITSAJOB           NDX      TEMP2G                                #  NOW ADD THE PRIORITY AND LET:S GO
058383,000143: 01,3630           31054                          CA       PHSPRDT1                              
058384,000144: 01,3631           54704        CHKNOVAC          TS       GOLOC      -1                         #  SAVE PRIO UNTIL WE SEE IF ITS
058385,000145: 01,3632           00006                          EXTEND                                         #  A FINDVAC OR A NOVAC
058386,000146: 01,3633           63637                          BZMF     ITSNOVAC                              
058387,000147: 
058388,000148: 01,3634           33765                          CAF      FVACCADR                              #  POSITIVE, SET UP FINDVAC CALL.
058389,000149: 01,3635           56704                          XCH      GOLOC      -1                         #  PICK UP PRIO,
058390,000150: 01,3636           00704                          TC       GOLOC      -1                         #  AND GO
058391,000151: 
058392,000152: 01,3637           33767        ITSNOVAC          CAF      NOVACADR                              #  NEGATIVE,
058393,000153: 01,3640           56704                          XCH      GOLOC      -1                         #  SET UP NOVAC CALL,
058394,000154: 01,3641           40000                          COM                                            #  CORRECT PRIO,
058395,000155: 01,3642           00704                          TC       GOLOC      -1                         #  AND GO
058396,000156: 
058397,000157: 01,3643           54020        ITSATBL           TS       CYR                                   #  FIND OUT IF THE PHASE IS ODD OR EVEN
058398,000158: 01,3644           10020                          CCS      CYR                                   
058399,000159: 01,3645           13646                          TCF      +1                                    #  IT:S EVEN
058400,000160: 01,3646           13744                          TCF      ITSEVEN                               
058401,000161: 
058402,000162: 01,3647           33557                          CA       RTRNCADR                              #  IN CASE THIS IS THE SECOND PART OF A
058403,000163: 01,3650           54707                          TS       GOLOC      +2                         #  TYPE B RESTART, WE NEED PROPER EXIT
058404,000164: 
058405,000165:                                                                                                 # # Page 1381
058406,000166: 01,3651           30154                          CA       TEMPPHS                               #  SET UP POINTER FOR FINDING OUR PLACE IN
058407,000167: 01,3652           54021                          TS       SR                                    #  THE RESTART TABLES
058408,000168: 01,3653           60021                          AD       SR                                    
058409,000169: 01,3654           50155                          NDX      TEMP2G                                
058410,000170: 01,3655           62001                          AD       SIZETAB    +1                         
058411,000171: 01,3656           54156                          TS       POINTER                               
058412,000172: 
058413,000173: 01,3657           00006        CONTBL2           EXTEND                                         #  FIND OUT WHAT:S IN THE TABLE
058414,000174: 01,3660           50156                          NDX      POINTER                               
058415,000175: 01,3661           32002                          DCA      CADRTAB                               #  GET THE 2CADR
058416,000176: 
058417,000177: 01,3662           22706                          LXCH     GOLOC      +1                         #  STORE THE BB INFORMATION
058418,000178: 
058419,000179: 01,3663           10000                          CCS      A                                     #  IS IT A JOB OR IT IT  TIMED
058420,000180: 01,3664           24000                          INCR     A                                     #  POSITIVE, MUST BE A JOB
058421,000181: 01,3665           13740                          TCF      ITSAJOB2                              
058422,000182: 
058423,000183: 01,3666           24000                          INCR     A                                     #  MUST BE EITHER A WAITLIST OR LONGCALL
058424,000184: 01,3667           54705                          TS       GOLOC                                 #  LET-S STORE THE CORRECT CADR
058425,000185: 
058426,000186: 01,3670           33766                          CA       WTLTCADR                              #  SET UP OUR EXIT TO WAITLIST
058427,000187: 01,3671           54704                          TS       GOLOC      -1                         
058428,000188: 
058429,000189: 01,3672           30706                          CA       GOLOC      +1                         #  NOW FIND OUT IF IT IS A WAITLIST CALL
058430,000190: 01,3673           74701                          MASK     BIT10                                 #  THIS SHOULD BE ONE IF WE HAVE -BB
058431,000191: 01,3674           10000                          CCS      A                                     #  FOR THAT MATTER SO SHOULD BE BITS 9,8,7,
058432,000192:                                                                                                 #                                           6,5, AND LAST BUT NOT LEAST (PERHAPS NOT
058433,000193:                                                                                                 #                                           IN IMPORTANCE ANYWAY. BIT 4
058434,000194: 01,3675           13733                          TCF      ITSWTLST                              #  IT IS A WAITLIST CALL
058435,000195: 
058436,000196: 01,3676           50156                          NDX      POINTER                               #  OBTAIN THE ORIGINAL DELTA T
058437,000197: 01,3677           32000                          CA       PRDTTAB                               #  ADDRESS FOR THIS LONGCALL
058438,000198: 
058439,000199: 01,3700           15376                          TCF      ITSLGCL1                              #  NOW GO GET THE DELTA TIME
058440,000200: 
058441,000201:                                                                                                 #  ***** THIS MUST BE IN FIXED FIXED *****
058442,000202: 
058443,000203:    5376                                          BLOCK    02                                    
058444,000204:    4000                                          SETLOC   FFTAG2                                
058445,000205:    4000                                          BANK                                           
058446,000206: 
058447,000207:    5376                                          COUNT    02/RSROU                              
058448,000208: 
058449,000209:    5376           22706        ITSLGCL1          LXCH     GOLOC      +1                         #  OBTAIN THE CORRECT E BANK
058450,000210:    5377           22006                          LXCH     BB                                    
058451,000211:    5400           22706                          LXCH     GOLOC      +1                         #  AND PRESERVE OUR E AND F BANKS
058452,000212: 
058453,000213:    5401           00006                          EXTEND                                         #  GET THE DELTA TIME
058454,000214:    5402           50000                          NDX      A                                     
058455,000215:    5403           30001                          DCA      0                                     
058456,000216:                                                                                                 # # Page 1382
058457,000217:    5404           22706                          LXCH     GOLOC      +1                         #  RESTORE OUR E AND F BANK
058458,000218:    5405           22006                          LXCH     BB                                    #  RESTORE THE TASKS E AND F BANKS
058459,000219:    5406           22706                          LXCH     GOLOC      +1                         #  AND PRESERVE OUR L
058460,000220: 
058461,000221:    5407           13701                          TCF      ITSLGCL2                              #  NOT LET:S PROCESS THIS LONGCALL
058462,000222: 
058463,000223:                                                                                                 #  ***** YOU  MAY RETURN TO  SWITCHED FIXED *****
058464,000224: 
058465,000225: 01,3701                                          BANK     01                                    
058466,000226: 01,2000                                          SETLOC   RESTART                               
058467,000227: 01,2000                                          BANK                                           
058468,000228: 
058469,000229: 01,3701                                          COUNT    01/RSROU                              
058470,000230: 
058471,000231: 01,3701           53140        ITSLGCL2          DXCH     LONGTIME                              
058472,000232: 
058473,000233: 01,3702           00006                          EXTEND                                         #  CALCULATE TIME LEFT
058474,000234: 01,3703           40025                          DCS      TIME2                                 
058475,000235: 01,3704           21140                          DAS      LONGTIME                              
058476,000236: 01,3705           00006                          EXTEND                                         
058477,000237: 01,3706           31136                          DCA      LONGBASE                              
058478,000238: 01,3707           21140                          DAS      LONGTIME                              
058479,000239: 
058480,000240: 01,3710           11137                          CCS      LONGTIME                              #  FIND OUT HOW THIS SHOULD BE RESTARTED
058481,000241: 01,3711           13721                          TCF      LONGCLCL                              
058482,000242: 01,3712           13714                          TCF      +2                                    
058483,000243: 01,3713           13607                          TCF      IMEDIATE   -3                         
058484,000244: 01,3714           11140                          CCS      LONGTIME   +1                         
058485,000245: 01,3715           13721                          TCF      LONGCLCL                              
058486,000246: 01,3716           13717                          NOOP                                           #  CAN:T GET HERE    *********
058487,000247: 01,3717           13607                          TCF      IMEDIATE   -3                         
058488,000248: 01,3720           13612                          TCF      IMEDIATE                              
058489,000249: 
058490,000250: 01,3721           33764        LONGCLCL          CA       LGCLCADR                              #  WE WILL GO TO LONGCALL
058491,000251: 01,3722           54704                          TS       GOLOC      -1                         
058492,000252: 
058493,000253: 01,3723           00006                          EXTEND                                         #  PREPARE OUR ENTRY TO LONGCALL
058494,000254: 01,3724           31140                          DCA      LONGTIME                              
058495,000255: 01,3725           00704                          TC       GOLOC      -1                         
058496,000256: 
058497,000257: 01,3726           33766        ITSLNGCL          CA       WTLTCADR                              #  ASSUME IT WILL GO TO WAITLIST
058498,000258: 01,3727           54704                          TS       GOLOC      -1                         
058499,000259: 
058500,000260: 01,3730           50155                          NDX      TEMP2G                                
058501,000261: 01,3731           41054                          CS       PHSPRDT1                              #  GET THE DELTA T ADDRESS
058502,000262: 
058503,000263: 01,3732           15376                          TCF      ITSLGCL1                              #  NOW GET THE DELTA TIME
058504,000264: 
058505,000265: 01,3733           40706        ITSWTLST          CS       GOLOC      +1                         #  CORRECT THE BBCON INFORMATION
058506,000266: 01,3734           54706                          TS       GOLOC      +1                         
058507,000267:                                                                                                 # # Page 1383
058508,000268: 01,3735           50156                          NDX      POINTER                               #  GET THE DT AND FIND OUT IF IT WAS STORED
058509,000269: 01,3736           32000                          CA       PRDTTAB                               #  DIRECTOY OR INDIRECTLY
058510,000270: 
058511,000271: 01,3737           13566                          TCF      TIMETEST                              #  FIND OUT HOW THE TIME IS STORED
058512,000272: 
058513,000273: 01,3740           56705        ITSAJOB2          XCH      GOLOC                                 #  STORE THE CADR
058514,000274: 
058515,000275: 01,3741           50156                          NDX      POINTER                               #  ADD THE PRIORITY AND LET:S GO
058516,000276: 01,3742           32000                          CA       PRDTTAB                               
058517,000277: 
058518,000278: 01,3743           13631                          TCF      CHKNOVAC                              
058519,000279: 
058520,000280: 01,3744           30157        ITSEVEN           CA       TEMPSWCH                              #  SET FOR EITHER THE SECOND PART OF THE
058521,000281: 01,3745           54707                          TS       GOLOC      +2                         #  TABLE, OR A RETURN FOR THE NEXT GROUP
058522,000282: 
058523,000283: 01,3746           50155                          NDX      TEMP2G                                #  SET UP POINTER FOR OUR LOCATION WITHIN
058524,000284: 01,3747           32000                          CA       SIZETAB                               #  THE TABLE
058525,000285: 01,3750           60154                          AD       TEMPPHS                               #  THIS MAY LOOK BAD BUT LET:S SEE YOU DO
058526,000286: 01,3751           60154                          AD       TEMPPHS                               #  BETTER IN TIME OR NUMBERR OF LOCATIONS
058527,000287: 01,3752           60154                          AD       TEMPPHS                               
058528,000288: 01,3753           54156                          TS       POINTER                               
058529,000289: 
058530,000290: 01,3754           13657                          TCF      CONTBL2                               #  NO PROCESS WHAT IS IN THE TABLE
058531,000291: 
058532,000292: 01,3755           36214        PHSPART2          CA       THREE                                 #  SET THE POINTER FOR THE SECOND HALF OF
058533,000293: 01,3756           26156                          ADS      POINTER                               #  THE TABLE
058534,000294: 
058535,000295: 01,3757           33557                          CA       RTRNCADR                              #  THIS WILL BE OUR LAST TIME THROUGH THE
058536,000296: 01,3760           54707                          TS       GOLOC      +2                         #  EVEN TABLE , SO AFTER IT  GET THE NEXT
058537,000297:                                                                                                 #  GROUP
058538,000298: 01,3761           13657                          TCF      CONTBL2                               #  SO LET:S GET THE SECOND ENTRY IN THE TBL
058539,000299: 
058540,000300: 01,3762     0154               TEMPPHS           EQUALS   MPAC                                  
058541,000301: 01,3762     0155               TEMP2G            EQUALS   MPAC       +1                         
058542,000302: 01,3762     0156               POINTER           EQUALS   MPAC       +2                         
058543,000303: 01,3762     0157               TEMPSWCH          EQUALS   MPAC       +3                         
058544,000304: 01,3762     0705               GOLOC             EQUALS   VAC5       +20D                       
058545,000305: 01,3762     7715               MINUS2            EQUALS   NEG2                                  
058546,000306: 01,3762     6043               OCT177            EQUALS   LOW7                                  
058547,000307: 
058548,000308: 
058549,000309: 01,3762           03755        PHS2CADR          GENADR   PHSPART2                              
058550,000310: 01,3763           03533        PRT2CADR          GENADR   GETPART2                              
058551,000311: 01,3764           05231        LGCLCADR          GENADR   LONGCALL                              
058552,000312: 01,3765           05042        FVACCADR          GENADR   FINDVAC                               
058553,000313: 01,3766           05140        WTLTCADR          GENADR   WAITLIST                              
058554,000314: 01,3767           05027        NOVACADR          GENADR   NOVAC                                 

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