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

061259,000002:                                                                                                 #  Copyright:    Public domain.
061260,000003:                                                                                                 #  Filename:      SERVICE_ROUTINES.agc
061261,000004:                                                                                                 #  Purpose:      Part of the source code for Colossus build 237.
061262,000005:                                                                                                 #                This is for the Command Module's (CM) Apollo Guidance
061263,000006:                                                                                                 #                Computer (AGC), we believe for Apollo 8.
061264,000007:                                                                                                 #  Assembler:    yaYUL
061265,000008:                                                                                                 #  Contact:      Jim Lawton <jim DOT lawton AT gmail DOT com>
061266,000009:                                                                                                 #  Website:      www.ibiblio.org/apollo/index.html
061267,000010:                                                                                                 #  Page scans:   www.ibiblio.org/apollo/ScansForConversion/Colossus237/
061268,000011:                                                                                                 #  Mod history:  2011-04-17 JL    Adapted from corresponding Colossus 249 file.
061269,000012: 
061270,000013:                                                                                                 # # Page 1449
061271,000014:    7717                                          BLOCK    3                                     
061272,000015:    6000                                          SETLOC   FFTAG6                                
061273,000016:    6000                                          BANK                                           
061274,000017:    7717                                          COUNT    03/FLAG                               
061275,000018: 
061276,000019:    7717           54001        UPENT2            TS       L                                     #  WHICH FLAGWORD IS IT
061277,000020:    7720           74716                          MASK     OCT7                                  
061278,000021:    7721           56001                          XCH      L                                     #  SAVE IN L FOR INDEXING
061279,000022: 
061280,000023:    7722           75630                          MASK     OCT77770                              #  OBTAIN THE BIT INFORMATION
061281,000024:    7723           00004                          INHINT                                         #  PREVENT INTERUPTS
061282,000025:    7724           54061                          TS       ITEMP1                                #  STORE THE BIT INFORMATION TEMPORARIALY
061283,000026: 
061284,000027:    7725           50001                          NDX      L                                     
061285,000028:    7726           40074                          CS       FLAGWRD0                              
061286,000029:    7727           70061                          MASK     ITEMP1                                
061287,000030:    7730           50001                          NDX      L                                     
061288,000031:    7731           26074                          ADS      FLAGWRD0                              
061289,000032:    7732           00003                          RELINT                                         #  RELEASE INTERUPT INHIBIT
061290,000033: 
061291,000034:    7733           24002                          INCR     Q                                     #  OBTAIN THE CORRECT RETURN ADDRESS
061292,000035:    7734           00002                          TC       Q                                     #  RETURN
061293,000036: 
061294,000037:    7735           54001        DOWNENT2          TS       L                                     #  WHICH FLAGWORD IS IT
061295,000038:    7736           74716                          MASK     OCT7                                  
061296,000039:    7737           56001                          XCH      L                                     #  SAVE IN L FOR INDEXING
061297,000040: 
061298,000041:    7740           75630                          MASK     OCT77770                              #  OBTAIN THE BIT INFORMATION
061299,000042:    7741           40000                          COM                                            #  START TO PROCESS THE INFORMATION
061300,000043: 
061301,000044:    7742           00004                          INHINT                                         #  PREVENT INTERUPTS
061302,000045:    7743           50001                          NDX      L                                     
061303,000046:    7744           70074                          MASK     FLAGWRD0                              
061304,000047:    7745           50001                          NDX      L                                     
061305,000048:    7746           54074                          TS       FLAGWRD0                              
061306,000049:    7747           00003                          RELINT                                         #  RELEASE INTERUPT INHIBIT
061307,000050: 
061308,000051:    7750           24002                          INCR     Q                                     #  OBTAIN THE CORRECT RETURN ADDRESS
061309,000052:    7751           00002                          TC       Q                                     #  RETURN
061310,000053: 
061311,000054:    7752     4716               OCT7              EQUALS   SEVEN                                 
061312,000055: 10,3671                                          BANK     10                                    
061313,000056: 
061314,000057:                                                                                                 # # Page 1450
061315,000058:                                                                                                 #      UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES.   USING THEM, WHETHER OR
061316,000059:                                                                                                 #  NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
061317,000060:                                                                                                 #  EBANK SETTING.   A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
061318,000061:                                                                                                 #  ASSEMBLER.
061319,000062: 
061320,000063:                                                                                                 #      AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS.   ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
061321,000064:                                                                                                 #  NAME ANY BIT IN ERASABLE MEMORY.
061322,000065: 
061323,000066:                                                                                                 #      CALLING SEQUENCES ARE AS FOLLOWS:-
061324,000067: 
061325,000068:                                                                                                 #                      TC     UPFLAG                    TC     DOWNFLAG
061326,000069:                                                                                                 #                      ADRES  NAME OF FLAG              ADRES  NAME OF FLAG
061327,000070: 
061328,000071:                                                                                                 #      RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".
061329,000072: 
061330,000073:                                                                                                 #      UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.
061331,000074: 
061332,000075:    5435                                          BLOCK    02                                    
061333,000076:    4000                                          SETLOC   FFTAG1                                
061334,000077:    4000                                          BANK                                           
061335,000078:    5435                                          COUNT*   $$/FLAG                               
061336,000079: 
061337,000080:    5435           30002        UPFLAG            CA       Q                                     
061338,000081:    5436           05453                          TC       DEBIT                                 
061339,000082:    5437           40000                          COM                                            #  +(15 - BIT)
061340,000083:    5440           00006                          EXTEND                                         
061341,000084:    5441           04001                          ROR      LCHAN                                 #  SET BIT
061342,000085:    5442           50061        COMFLAG           INDEX    ITEMP1                                
061343,000086:    5443           54074                          TS       FLAGWRD0                              
061344,000087:    5444           22063                          LXCH     ITEMP3                                
061345,000088:    5445           00003                          RELINT                                         
061346,000089:    5446           00001                          TC       L                                     
061347,000090: 
061348,000091: 
061349,000092:    5447           30002        DOWNFLAG          CA       Q                                     
061350,000093:    5450           05453                          TC       DEBIT                                 
061351,000094:    5451           70001                          MASK     L                                     #  RESET BIT
061352,000095:    5452           15442                          TCF      COMFLAG                               
061353,000096: 
061354,000097: 
061355,000098:    5453           64712        DEBIT             AD       ONE                                   #  GET DE BITS
061356,000099:    5454           00004                          INHINT                                         
061357,000100:    5455           54063                          TS       ITEMP3                                
061358,000101:    5456           34721                          CA       LOW4                                  #  DEC15
061359,000102:    5457           54061                          TS       ITEMP1                                
061360,000103:    5460           50063                          INDEX    ITEMP3                                
061361,000104:    5461           27777                          CA       0          -1                         #  ADRES
061362,000105:    5462           54001                          TS       L                                     
061363,000106:    5463           34714                          CA       ZERO                                  
061364,000107:                                                                                                 # # Page 1451
061365,000108:    5464           00006                          EXTEND                                         
061366,000109:    5465           10061                          DV       ITEMP1                                #  A = FLAGWRD, L = (15 - BIT)
061367,000110:    5466           52062                          DXCH     ITEMP1                                
061368,000111:    5467           50061                          INDEX    ITEMP1                                
061369,000112:    5470           30074                          CA       FLAGWRD0                              
061370,000113:    5471           54001                          TS       L                                     #  CURRENT STATE
061371,000114:    5472           50062                          INDEX    ITEMP2                                
061372,000115:    5473           44674                          CS       BIT15                                 #  -(15 - BIT)
061373,000116:    5474           00002                          TC       Q                                     
061374,000117: 
061375,000118:                                                                                                 # # Page 1452
061376,000119:                                                                                                 #  DELAYJOB- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.
061377,000120: 
061378,000121:                                                                                                 #  ENTRANCE REQUIREMENTS...
061379,000122:                                                                                                 #                                                   CAF    DT              DELAY JOB FOR DT CENTISECS
061380,000123:                                                                                                 #                                                   TC     BANKCALL
061381,000124:                                                                                                 #                                                   CADR   DELAYJOB
061382,000125: 
061383,000126: 06,3651                                          BANK     06                                    
061384,000127: 00,2000                                          SETLOC   DLAYJOB                               
061385,000128: 00,2000                                          BANK                                           
061386,000129: 
061387,000130:                                                                                                 #  THIS MUST REMAIN IN BANK 0 *****************************************
061388,000131: 00,3730                                          COUNT    00/DELAY                              
061389,000132: 
061390,000133: 00,3730           00004        DELAYJOB          INHINT                                         
061391,000134: 00,3731           54002                          TS       Q                                     #  STORE DELAY DT IN Q FOR DLY -1 IN
061392,000135: 
061393,000136: 00,3732           36214                          CAF      DELAYNUM                              #  WAITLIST
061394,000137: 00,3733           54070        DELLOOP           TS       RUPTREG1                              
061395,000138: 00,3734           50000                          INDEX    A                                     
061396,000139: 00,3735           31141                          CA       DELAYLOC                              #  IS THIS DELAYLOC AVAILABLE
061397,000140: 00,3736           00006                          EXTEND                                         
061398,000141: 00,3737           13744                          BZF      OK2DELAY                              #  YES
061399,000142: 
061400,000143: 00,3740           10070                          CCS      RUPTREG1                              #  NO, TRY NEXT DELAYLOC
061401,000144: 00,3741           13733                          TCF      DELLOOP                               
061402,000145: 
061403,000146: 00,3742           05604                          TC       BAILOUT                               #  NO AVAILABLE LOCS AVAILABLE.
061404,000147: 00,3743           01104                          OCT      1104                                  
061405,000148: 
061406,000149: 00,3744           33764        OK2DELAY          CA       TCSLEEP                               #  SET WAITLIST IMMEDIATE RETURN
061407,000150: 00,3745           54061                          TS       WAITEXIT                              
061408,000151: 
061409,000152: 00,3746           30004                          CA       FBANK                                 
061410,000153: 00,3747           60070                          AD       RUPTREG1                              #  STORE BBANK FOR TASK CALL
061411,000154: 00,3750           54001                          TS       L                                     
061412,000155: 
061413,000156: 00,3751           33765                          CAF      WAKECAD                               #  STORE CADR FOR TASK CALL
061414,000157: 00,3752           15146                          TCF      DLY2       -1                         #  DLY IS IN WAITLIST ROUTINE
061415,000158: 
061416,000159: 00,3753           04604        TCGETCAD          TC       MAKECADR                              #  GET CALLERS FCADR
061417,000160: 
061418,000161: 00,3754           50070                          INDEX    RUPTREG1                              
061419,000162: 00,3755           55141                          TS       DELAYLOC                              #  SAVE DELAY CADRS
061420,000163: 
061421,000164: 00,3756           05070                          TC       JOBSLEEP                              
061422,000165: 
061423,000166: 00,3757           34714        WAKER             CAF      ZERO                                  
061424,000167: 00,3760           50006                          INDEX    BBANK                                 
061425,000168: 00,3761           57141                          XCH      DELAYLOC                              #  MAKE DELAYLOC AVAILABLE
061426,000169:                                                                                                 # # Page 1453
061427,000170: 00,3762           05074                          TC       JOBWAKE                               
061428,000171: 
061429,000172: 00,3763           05213                          TC       TASKOVER                              
061430,000173: 
061431,000174: 00,3764           03751        TCSLEEP           GENADR   TCGETCAD   -2                         
061432,000175: 00,3765           03757        WAKECAD           GENADR   WAKER                                 
061433,000176: 
061434,000177:                                                                                                 # # Page 1454
061435,000178:                                                                                                 #  GENTRAN, A BLOCK TRANSFER ROUTINE.
061436,000179: 
061437,000180:                                                                                                 #  WRITTEN BY D. EYLES
061438,000181:                                                                                                 #  MOD 1 BY KERNAN                                                         UTILITYM REV 17 11/18/67
061439,000182: 
061440,000183:                                                                                                 #  MOD 2 BY SCHULENBERG  (REMOVE RELINT)   SKIPPER REV 4 2/28/68
061441,000184: 
061442,000185:                                                                                                 #           THIS ROUTINE IS USEFUL FOR TRANSFERRING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
061443,000186:                                                                                                 #  CONSECUTIVE ERASABLE LOCATIONS.  IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.
061444,000187: 
061445,000188:                                                                                                 #           GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT.  THE CALLING SEQUENCE IS:
061446,000189: 
061447,000190:                                                                                                 #                                          I        CA     N-1             # OF QUANTITIES MINUS ONE.
061448,000191:                                                                                                 #                                          I +1     TC     GENTRAN         IN FIXED-FIXED.
061449,000192:                                                                                                 #                                          I +2     ADRES  L               STARTING ADRES OF DATA TO BE MOVED.
061450,000193:                                                                                                 #                                          I +3     ADRES  M               STARTING ADRES OF DUPLICATION BLOCK.
061451,000194:                                                                                                 #                                          I +4                            RETURNS HERE.
061452,000195: 
061453,000196:                                                                                                 #           GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.
061454,000197: 
061455,000198:                                                                                                 #           A, L AND ITEMP1 ARE NOT PRESERVED.
061456,000199: 
061457,000200:    5475                                          BLOCK    02                                    
061458,000201:    4000                                          SETLOC   FFTAG4                                
061459,000202:    4000                                          BANK                                           
061460,000203: 
061461,000204:    5475     0061                                 EBANK=   ITEMP1                                
061462,000205: 
061463,000206:    5475                                          COUNT*   $$/TRAN                               
061464,000207: 
061465,000208:    5475           00004        GENTRAN           INHINT                                         
061466,000209:    5476           54061                          TS       ITEMP1                                #  SAVE N-1.
061467,000210:    5477           50002                          INDEX    Q                                     #  C(Q) = ADRES L.
061468,000211:    5500           60000                          AD       0                                     #  ADRES (L + N - 1).
061469,000212:    5501           50000                          INDEX    A                                     
061470,000213:    5502           30000                          CA       0                                     #  C(ABOVE).
061471,000214:    5503           54001                          TS       L                                     #  SAVE DATA.
061472,000215:    5504           30061                          CA       ITEMP1                                
061473,000216:    5505           50002                          INDEX    Q                                     
061474,000217:    5506           60001                          AD       1                                     #  ADRES (M + N - 1).
061475,000218:    5507           50000                          INDEX    A                                     
061476,000219:    5510           22000                          LXCH     0                                     #  STUFF IT.
061477,000220:    5511           10061                          CCS      ITEMP1                                #  LOOP UNTIL N-1 = 0.
061478,000221:    5512           15476                          TCF      GENTRAN    +1                         
061479,000222:    5513           16710                          TCF      Q+2                                   #  RETURN TO CALLER.
061480,000223: 
061481,000224:                                                                                                 # # Page 1455
061482,000225:                                                                                                 #  B5OFF   ZERO BIT 5 OF EXTVBACT, WHICH IS SET BY TESTXACT.
061483,000226: 
061484,000227:                                                                                                 #           MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT
061485,000228: 
061486,000229:    5514                                          COUNT*   $$/EXTVB                              
061487,000230: 
061488,000231:    5514           44706        B5OFF             CS       BIT5                                  
061489,000232:    5515           71044                          MASK     EXTVBACT                              
061490,000233:    5516           55044                          TS       EXTVBACT                              
061491,000234:    5517           05112                          TC       ENDOFJOB                              
061492,000235: 
061493,000236:                                                                                                 # # Page 1456
061494,000237:                                                                                                 #  SUBROUTINES TO TURNOFF AND TURN ON TRACKER FAIL LIGHT.
061495,000238: 
061496,000239:    5520           00004        TRFAILOF          INHINT                                         
061497,000240:    5521           47704                          CS       OCT40200                              #  TURN OFF TRACKER LIGHT
061498,000241:    5522           71036                          MASK     DSPTAB     +11D                       
061499,000242:    5523           64674                          AD       BIT15                                 
061500,000243:    5524           55036                          TS       DSPTAB     +11D                       
061501,000244:    5525           41331                          CS       OPTMODES                              #  TO INSURE THAT OCDU FAIL WILL GO ON
061502,000245:    5526           74704                          MASK     BIT7                                  #  AGAIN IF IT WAS ON IN ADDITION TO
061503,000246:    5527           27331                          ADS      OPTMODES                              #  TRACKER FAIL.
061504,000247: 
061505,000248:    5530           00003        REQ               RELINT                                         
061506,000249:    5531           00002                          TC       Q                                     
061507,000250: 
061508,000251:    5532           00004        TRFAILON          INHINT                                         
061509,000252:    5533           41036                          CS       DSPTAB     +11D                       #  TURN ON
061510,000253:    5534           77704                          MASK     OCT40200                              
061511,000254:    5535           27036                          ADS      DSPTAB     +11D                       
061512,000255:    5536           15530                          TCF      REQ                                   

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