Source Code

These source-code files were derived from scans of the Colossus 237 (Apollo 8 Command Module) program listing from the private collection of original AGC developer Fred Martin. Scanning was by Ron Burkey. Pre-existing Colossus 249 (Apollo 9 CM) source files were used as a template, and changes between Colossus 249 and Colossus 237 were manually transcribed by a team of volunteers. 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
Note that the date is the date of the printout, not the date of the program revision.

061622,000002:                                                                                                  ## Copyright:   Public domain.
061623,000003:                                                                                                  ## Filename:    SERVICE_ROUTINES.agc
061624,000004:                                                                                                  ## Purpose:     Part of the source code for Colossus build 237.
061625,000005:                                                                                                  ##              This is for the Command Module's (CM) Apollo Guidance
061626,000006:                                                                                                  ##              Computer (AGC), for Apollo 8.
061627,000007:                                                                                                  ## Assembler:   yaYUL
061628,000008:                                                                                                  ## Contact:     Jim Lawton <jim DOT lawton AT gmail DOT com>
061629,000009:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
061630,000010:                                                                                                  ## Page Scans:  www.ibiblio.org/apollo/ScansForConversion/Colossus237/
061631,000011:                                                                                                  ## Mod history: 2011-04-17 JL   Adapted from corresponding Colossus 249 file.
061632,000012:                                                                                                  ##              2017-01-01 RSB  Proofed comment text using octopus/ProoferComments,
061633,000013:                                                                                                  ##                              and fixed errors found.
061634,000014: 

Page 1449

061636,000016:    7717                                           BLOCK    3                                     
061637,000017:    6000                                           SETLOC   FFTAG6                                
061638,000018:    6000                                           BANK                                           
061639,000019:    7717                                           COUNT    03/FLAG                               
061640,000020: 
061641,000021:    7717           54001        UPENT2             TS       L                                     #  WHICH FLAGWORD IS IT
061642,000022:    7720           74716                           MASK     OCT7                                  
061643,000023:    7721           56001                           XCH      L                                     #  SAVE IN L FOR INDEXING
061644,000024: 
061645,000025:    7722           75630                           MASK     OCT77770                              #  OBTAIN THE BIT INFORMATION
061646,000026:    7723           00004                           INHINT                                         #  PREVENT INTERUPTS
061647,000027:    7724           54061                           TS       ITEMP1                                #  STORE THE BIT INFORMATION TEMPORARIALY
061648,000028: 
061649,000029:    7725           50001                           NDX      L                                     
061650,000030:    7726           40074                           CS       FLAGWRD0                              
061651,000031:    7727           70061                           MASK     ITEMP1                                
061652,000032:    7730           50001                           NDX      L                                     
061653,000033:    7731           26074                           ADS      FLAGWRD0                              
061654,000034:    7732           00003                           RELINT                                         #  RELEASE INTERUPT INHIBIT
061655,000035: 
061656,000036:    7733           24002                           INCR     Q                                     #  OBTAIN THE CORRECT RETURN ADDRESS
061657,000037:    7734           00002                           TC       Q                                     #  RETURN
061658,000038: 
061659,000039:    7735           54001        DOWNENT2           TS       L                                     #  WHICH FLAGWORD IS IT
061660,000040:    7736           74716                           MASK     OCT7                                  
061661,000041:    7737           56001                           XCH      L                                     #  SAVE IN L FOR INDEXING
061662,000042: 
061663,000043:    7740           75630                           MASK     OCT77770                              #  OBTAIN THE BIT INFORMATION
061664,000044:    7741           40000                           COM                                            #  START TO PROCESS THE INFORMATION
061665,000045: 
061666,000046:    7742           00004                           INHINT                                         #  PREVENT INTERUPTS
061667,000047:    7743           50001                           NDX      L                                     
061668,000048:    7744           70074                           MASK     FLAGWRD0                              
061669,000049:    7745           50001                           NDX      L                                     
061670,000050:    7746           54074                           TS       FLAGWRD0                              
061671,000051:    7747           00003                           RELINT                                         #  RELEASE INTERUPT INHIBIT
061672,000052: 
061673,000053:    7750           24002                           INCR     Q                                     #  OBTAIN THE CORRECT RETURN ADDRESS
061674,000054:    7751           00002                           TC       Q                                     #  RETURN
061675,000055: 
061676,000056:    7752     4716               OCT7               EQUALS   SEVEN                                 
061677,000057: 10,3671                                           BANK     10                                    
061678,000058: 

Page 1450

061680,000060:                                                                                                  #      UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES.   USING THEM, WHETHER OR
061681,000061:                                                                                                  #  NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
061682,000062:                                                                                                  #  EBANK SETTING.   A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
061683,000063:                                                                                                  #  ASSEMBLER.
061684,000064: 
061685,000065:                                                                                                  #      AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS.   ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
061686,000066:                                                                                                  #  NAME ANY BIT IN ERASABLE MEMORY.
061687,000067: 
061688,000068:                                                                                                  #      CALLING SEQUENCES ARE AS FOLLOWS:-
061689,000069: 
061690,000070:                                                                                                  #                      TC     UPFLAG                    TC     DOWNFLAG
061691,000071:                                                                                                  #                      ADRES  NAME OF FLAG              ADRES  NAME OF FLAG
061692,000072: 
061693,000073:                                                                                                  #      RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".
061694,000074: 
061695,000075:                                                                                                  #      UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.
061696,000076: 
061697,000077:    5435                                           BLOCK    02                                    
061698,000078:    4000                                           SETLOC   FFTAG1                                
061699,000079:    4000                                           BANK                                           
061700,000080:    5435                                           COUNT*   $$/FLAG                               
061701,000081: 
061702,000082:    5435           30002        UPFLAG             CA       Q                                     
061703,000083:    5436           05453                           TC       DEBIT                                 
061704,000084:    5437           40000                           COM                                            #  +(15 - BIT)
061705,000085:    5440           00006                           EXTEND                                         
061706,000086:    5441           04001                           ROR      LCHAN                                 #  SET BIT
061707,000087:    5442           50061        COMFLAG            INDEX    ITEMP1                                
061708,000088:    5443           54074                           TS       FLAGWRD0                              
061709,000089:    5444           22063                           LXCH     ITEMP3                                
061710,000090:    5445           00003                           RELINT                                         
061711,000091:    5446           00001                           TC       L                                     
061712,000092: 
061713,000093: 
061714,000094:    5447           30002        DOWNFLAG           CA       Q                                     
061715,000095:    5450           05453                           TC       DEBIT                                 
061716,000096:    5451           70001                           MASK     L                                     #  RESET BIT
061717,000097:    5452           15442                           TCF      COMFLAG                               
061718,000098: 
061719,000099: 
061720,000100:    5453           64712        DEBIT              AD       ONE                                   #  GET DE BITS
061721,000101:    5454           00004                           INHINT                                         
061722,000102:    5455           54063                           TS       ITEMP3                                
061723,000103:    5456           34721                           CA       LOW4                                  #  DEC15
061724,000104:    5457           54061                           TS       ITEMP1                                
061725,000105:    5460           50063                           INDEX    ITEMP3                                
061726,000106:    5461           27777                           CA       0          -1                         #  ADRES
061727,000107:    5462           54001                           TS       L                                     
061728,000108:    5463           34714                           CA       ZERO                                  

Page 1451

061730,000110:    5464           00006                           EXTEND                                         
061731,000111:    5465           10061                           DV       ITEMP1                                #  A = FLAGWRD, L = (15 - BIT)
061732,000112:    5466           52062                           DXCH     ITEMP1                                
061733,000113:    5467           50061                           INDEX    ITEMP1                                
061734,000114:    5470           30074                           CA       FLAGWRD0                              
061735,000115:    5471           54001                           TS       L                                     #  CURRENT STATE
061736,000116:    5472           50062                           INDEX    ITEMP2                                
061737,000117:    5473           44674                           CS       BIT15                                 #  -(15 - BIT)
061738,000118:    5474           00002                           TC       Q                                     
061739,000119: 

Page 1452

061741,000121:                                                                                                  #  DELAYJOB- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.
061742,000122: 
061743,000123:                                                                                                  #  ENTRANCE REQUIREMENTS...
061744,000124:                                                                                                  #                                                   CAF    DT              DELAY JOB FOR DT CENTISECS
061745,000125:                                                                                                  #                                                   TC     BANKCALL
061746,000126:                                                                                                  #                                                   CADR   DELAYJOB
061747,000127: 
061748,000128: 06,3651                                           BANK     06                                    
061749,000129: 00,2000                                           SETLOC   DLAYJOB                               
061750,000130: 00,2000                                           BANK                                           
061751,000131: 
061752,000132:                                                                                                  #  THIS MUST REMAIN IN BANK 0 *****************************************
061753,000133: 00,3730                                           COUNT    00/DELAY                              
061754,000134: 
061755,000135: 00,3730           00004        DELAYJOB           INHINT                                         
061756,000136: 00,3731           54002                           TS       Q                                     #  STORE DELAY DT IN Q FOR DLY -1 IN
061757,000137: 
061758,000138: 00,3732           36214                           CAF      DELAYNUM                              #  WAITLIST
061759,000139: 00,3733           54070        DELLOOP            TS       RUPTREG1                              
061760,000140: 00,3734           50000                           INDEX    A                                     
061761,000141: 00,3735           31141                           CA       DELAYLOC                              #  IS THIS DELAYLOC AVAILABLE
061762,000142: 00,3736           00006                           EXTEND                                         
061763,000143: 00,3737           13744                           BZF      OK2DELAY                              #  YES
061764,000144: 
061765,000145: 00,3740           10070                           CCS      RUPTREG1                              #  NO, TRY NEXT DELAYLOC
061766,000146: 00,3741           13733                           TCF      DELLOOP                               
061767,000147: 
061768,000148: 00,3742           05604                           TC       BAILOUT                               #  NO AVAILABLE LOCS AVAILABLE.
061769,000149: 00,3743           01104                           OCT      1104                                  
061770,000150: 
061771,000151: 00,3744           33764        OK2DELAY           CA       TCSLEEP                               #  SET WAITLIST IMMEDIATE RETURN
061772,000152: 00,3745           54061                           TS       WAITEXIT                              
061773,000153: 
061774,000154: 00,3746           30004                           CA       FBANK                                 
061775,000155: 00,3747           60070                           AD       RUPTREG1                              #  STORE BBANK FOR TASK CALL
061776,000156: 00,3750           54001                           TS       L                                     
061777,000157: 
061778,000158: 00,3751           33765                           CAF      WAKECAD                               #  STORE CADR FOR TASK CALL
061779,000159: 00,3752           15146                           TCF      DLY2       -1                         #  DLY IS IN WAITLIST ROUTINE
061780,000160: 
061781,000161: 00,3753           04604        TCGETCAD           TC       MAKECADR                              #  GET CALLERS FCADR
061782,000162: 
061783,000163: 00,3754           50070                           INDEX    RUPTREG1                              
061784,000164: 00,3755           55141                           TS       DELAYLOC                              #  SAVE DELAY CADRS
061785,000165: 
061786,000166: 00,3756           05070                           TC       JOBSLEEP                              
061787,000167: 
061788,000168: 00,3757           34714        WAKER              CAF      ZERO                                  
061789,000169: 00,3760           50006                           INDEX    BBANK                                 
061790,000170: 00,3761           57141                           XCH      DELAYLOC                              #  MAKE DELAYLOC AVAILABLE

Page 1453

061792,000172: 00,3762           05074                           TC       JOBWAKE                               
061793,000173: 
061794,000174: 00,3763           05213                           TC       TASKOVER                              
061795,000175: 
061796,000176: 00,3764           03751        TCSLEEP            GENADR   TCGETCAD   -2                         
061797,000177: 00,3765           03757        WAKECAD            GENADR   WAKER                                 
061798,000178: 

Page 1454

061800,000180:                                                                                                  #  GENTRAN, A BLOCK TRANSFER ROUTINE.
061801,000181: 
061802,000182:                                                                                                  #  WRITTEN BY D. EYLES
061803,000183:                                                                                                  #  MOD 1 BY KERNAN                                                         UTILITYM REV 17 11/18/67
061804,000184: 
061805,000185:                                                                                                  #  MOD 2 BY SCHULENBERG  (REMOVE RELINT)   SKIPPER REV 4 2/28/68
061806,000186: 
061807,000187:                                                                                                  #           THIS ROUTINE IS USEFULL FOR TRANSFERING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
061808,000188:                                                                                                  #  CONSECUTIVE ERASABLE LOCATIONS.  IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.
061809,000189: 
061810,000190:                                                                                                  #           GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT.  THE CALLING SEQUENCE IS:
061811,000191: 
061812,000192:                                                                                                  #                                          I        CA     N-1             # OF QUANTITIES MINUS ONE.
061813,000193:                                                                                                  #                                          I +1     TC     GENTRAN         IN FIXED-FIXED.
061814,000194:                                                                                                  #                                          I +2     ADRES  L               STARTING ADRES OF DATA TO BE MOVED.
061815,000195:                                                                                                  #                                          I +3     ADRES  M               STARTING ADRES OF DUPLICATION BLOCK.
061816,000196:                                                                                                  #                                          I +4                            RETURNS HERE.
061817,000197: 
061818,000198:                                                                                                  #           GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.
061819,000199: 
061820,000200:                                                                                                  #           A, L AND ITEMP1 ARE NOT PRESERVED.
061821,000201: 
061822,000202:    5475                                           BLOCK    02                                    
061823,000203:    4000                                           SETLOC   FFTAG4                                
061824,000204:    4000                                           BANK                                           
061825,000205: 
061826,000206:    5475     0061                                  EBANK=   ITEMP1                                
061827,000207: 
061828,000208:    5475                                           COUNT*   $$/TRAN                               
061829,000209: 
061830,000210:    5475           00004        GENTRAN            INHINT                                         
061831,000211:    5476           54061                           TS       ITEMP1                                #  SAVE N-1.
061832,000212:    5477           50002                           INDEX    Q                                     #  C(Q) = ADRES L.
061833,000213:    5500           60000                           AD       0                                     #  ADRES (L + N - 1).
061834,000214:    5501           50000                           INDEX    A                                     
061835,000215:    5502           30000                           CA       0                                     #  C(ABOVE).
061836,000216:    5503           54001                           TS       L                                     #  SAVE DATA.
061837,000217:    5504           30061                           CA       ITEMP1                                
061838,000218:    5505           50002                           INDEX    Q                                     
061839,000219:    5506           60001                           AD       1                                     #  ADRES (M + N - 1).
061840,000220:    5507           50000                           INDEX    A                                     
061841,000221:    5510           22000                           LXCH     0                                     #  STUFF IT.
061842,000222:    5511           10061                           CCS      ITEMP1                                #  LOOP UNTIL N-1 = 0.
061843,000223:    5512           15476                           TCF      GENTRAN    +1                         
061844,000224:    5513           16710                           TCF      Q+2                                   #  RETURN TO CALLER.
061845,000225: 

Page 1455

061847,000227:                                                                                                  #  B5OFF   ZERO BIT 5 OF EXTVBACT, WHICH IS SET BY TESTXACT.
061848,000228: 
061849,000229:                                                                                                  #           MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT
061850,000230: 
061851,000231:    5514                                           COUNT*   $$/EXTVB                              
061852,000232: 
061853,000233:    5514           44706        B5OFF              CS       BIT5                                  
061854,000234:    5515           71044                           MASK     EXTVBACT                              
061855,000235:    5516           55044                           TS       EXTVBACT                              
061856,000236:    5517           05112                           TC       ENDOFJOB                              
061857,000237: 

Page 1456

061859,000239:                                                                                                  #  SUBROUTINES TO TURNOFF AND TURN ON TRACKER FAIL LIGHT.
061860,000240: 
061861,000241:    5520           00004        TRFAILOF           INHINT                                         
061862,000242:    5521           47704                           CS       OCT40200                              #  TURN OFF TRACKER LIGHT
061863,000243:    5522           71036                           MASK     DSPTAB     +11D                       
061864,000244:    5523           64674                           AD       BIT15                                 
061865,000245:    5524           55036                           TS       DSPTAB     +11D                       
061866,000246:    5525           41331                           CS       OPTMODES                              #  TO INSURE THAT OCDU FAIL WILL GO ON
061867,000247:    5526           74704                           MASK     BIT7                                  #  AGAIN IF IT WAS ON IN ADDITION TO
061868,000248:    5527           27331                           ADS      OPTMODES                              #  TRACKER FAIL.
061869,000249: 
061870,000250:    5530           00003        REQ                RELINT                                         
061871,000251:    5531           00002                           TC       Q                                     
061872,000252: 
061873,000253:    5532           00004        TRFAILON           INHINT                                         
061874,000254:    5533           41036                           CS       DSPTAB     +11D                       #  TURN ON
061875,000255:    5534           77704                           MASK     OCT40200                              
061876,000256:    5535           27036                           ADS      DSPTAB     +11D                       
061877,000257:    5536           15530                           TCF      REQ                                   

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