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

050773,000002:                                                                                                 #  Copyright:    Public domain.
050774,000003:                                                                                                 #  Filename:      LATITUDE_LONGITUDE_SUBROUTINES.agc
050775,000004:                                                                                                 #  Purpose:      Part of the source code for Colossus build 237.
050776,000005:                                                                                                 #                This is for the Command Module's (CM) Apollo Guidance
050777,000006:                                                                                                 #                Computer (AGC), we believe for Apollo 8.
050778,000007:                                                                                                 #  Assembler:    yaYUL
050779,000008:                                                                                                 #  Contact:      Jim Lawton <jim DOT lawton AT gmail DOT com>
050780,000009:                                                                                                 #  Website:      www.ibiblio.org/apollo/index.html
050781,000010:                                                                                                 #  Page scans:   www.ibiblio.org/apollo/ScansForConversion/Colossus237/
050782,000011:                                                                                                 #  Mod history:  2011-04-13 JL    Adapted from corresponding Colossus 249 file.
050783,000012: 
050784,000013:                                                                                                 # # Page 1203
050785,000014:                                                                                                 #  SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT
050786,000015: 
050787,000016:                                                                                                 #  CALLING SEQUENCE
050788,000017: 
050789,000018:                                                                                                 #    L-1    CALL
050790,000019:                                                                                                 #    L             LAT-LONG
050791,000020:                                                                                                 #  SUBROUTINES USED
050792,000021: 
050793,000022:                                                                                                 #   R-TO-RP,ARCTAN,SETGAMMA,SETRE
050794,000023:                                                                                                 #  ERASABLE INIT. REQ.
050795,000024: 
050796,000025:                                                                                                 #    AXO,-AYO,AZO,TEPHEM (SET AT LAUNCH TIME)
050797,000026:                                                                                                 #  ALPHAV = POSITION VECTOR METERS B-29
050798,000027:                                                                                                 #    MPAC-- TIME (CSECS B-28)
050799,000028:                                                                                                 #   ERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
050800,000029:                                                                                                 #   LUNAFLAG=0 FOR EARTH,1 FOR MOON
050801,000030:                                                                                                 #  OUTPUT
050802,000031: 
050803,000032:                                                                                                 #    LATITUDE IN LAT   (REVS. B-0)
050804,000033:                                                                                                 #    LONGITUDE IN LONG   (REVS. B-0)
050805,000034:                                                                                                 #  ALTITUDE IN ALT METERS B-29
050806,000035: 30,3776                                          BANK     30                                    
050807,000036: 13,2000                                          SETLOC   LATLONG                               
050808,000037: 13,2000                                          BANK                                           
050809,000038: 
050810,000039: 13,2322                                          COUNT    13/LT-LG                              
050811,000040: 
050812,000041: 13,2322  E4,1551                                 EBANK=   ALPHAV                                
050813,000042: 13,2322           40220        LAT-LONG          STQ      SETPD                                 
050814,000043: 13,2323           02242                                   INCORPEX                              
050815,000044: 13,2324           00001                                   0D                                    
050816,000045: 13,2325           24007                          STOVL    6D                                    #  SAVE TIME IN 6-7D FOR R-TO-RP
050817,000046: 13,2326           02152                                   ALPHAV                                
050818,000047: 13,2327           51406                          PUSH     ABVAL                                 #  0-5D= R FOR R-TO-RP
050819,000048: 13,2330           16310                          STODL    ALPHAM                                #  ABS. VALUE OF R FOR ALT FORMULA BELOW
050820,000049: 13,2331           11453                                   ZEROVEC                               #  SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON
050821,000050: 13,2332           71414                          BOFF     COS                                   #  USE COS(0) TO GET NON-ZERO IN MPAC
050822,000051: 13,2333           01743                                   LUNAFLAG                              #  0=EARTH,1=MOON
050823,000052: 13,2334           26335                                   CALLRTRP                              
050824,000053: 13,2335           77624        CALLRTRP          CALL                                           
050825,000054: 13,2336           55366                                   R-TO-RP                               #  RP VECTOR CONVERTED FROM R B-29
050826,000055: 13,2337           77656                          UNIT                                           #  UNIT RP B-1
050827,000056: 13,2340           36152                          STCALL   ALPHAV                                #  U2= 1/2 SINL FOR SETRE SUBR BELOW
050828,000057: 13,2341           26523                                   SETGAMMA                              #   SET GAMMA=B2/A2 FOR EARTH,=1 FOR MOON
050829,000058: 13,2342           77624                          CALL                                           #   SCALED B-1
050830,000059: 13,2343           26533                                   SETRE                                 #  CALC RE METERS B-29
050831,000060: 13,2344           63545                          DLOAD    DSQ                                   
050832,000061: 13,2345           02152                                   ALPHAV                                
050833,000062: 13,2346           63525                          PDDL     DSQ                                   
050834,000063: 13,2347           02154                                   ALPHAV     +2                         
050835,000064:                                                                                                 # # Page 1204
050836,000065: 13,2350           75415                          DAD      SQRT                                  
050837,000066: 13,2351           76405                          DMP      SL1R                                  
050838,000067: 13,2352           00011                                   GAMRP                                 
050839,000068: 13,2353           14021                          STODL    COSTH                                 #  COS(LAT) B-1
050840,000069: 13,2354           02156                                   ALPHAV     +4                         
050841,000070: 13,2355           34023                          STCALL   SINTH                                 #  SIN(LAT) B-1
050842,000071: 13,2356           26463                                   ARCTAN                                
050843,000072: 13,2357           15104                          STODL    LAT                                   #  LAT B0
050844,000073: 13,2360           02152                                   ALPHAV                                
050845,000074: 13,2361           14021                          STODL    COSTH                                 #  COS(LONG) B-1
050846,000075: 13,2362           02154                                   ALPHAV     +2                         
050847,000076: 13,2363           34023                          STCALL   SINTH                                 #  SIN(LONG) B-1
050848,000077: 13,2364           26463                                   ARCTAN                                
050849,000078: 13,2365           15106                          STODL    LONG                                  #  LONG. REVS B-0 IN RANGE -1/2 TO 1/2
050850,000079: 13,2366           02310                                   ALPHAM                                
050851,000080: 13,2367           77625                          DSU                                            #  ALT= R-RE METERS B-29
050852,000081: 13,2370           02241                                   ERADM                                 
050853,000082: 13,2371           35110                          STCALL   ALT                                   #  EXIT WITH ALT METERS B-29
050854,000083: 13,2372           02242                                   INCORPEX                              
050855,000084: 
050856,000085:                                                                                                 # # Page 1205
050857,000086:                                                                                                 #  SUBROUTINE TO CONVERT LAT,LONG.ALT AT GIVEN TIME TO RADIUS VECTOR
050858,000087:                                                                                                 #  CALLING SEQUENCE
050859,000088: 
050860,000089:                                                                                                 #    L-1    CALL
050861,000090:                                                                                                 #    L             LALOTORV
050862,000091:                                                                                                 #  SUBROUTINES USED
050863,000092: 
050864,000093:                                                                                                 #   SETGAMMA,SETRE,RP-TO-R
050865,000094:                                                                                                 #  ERASABLE INIT. REQ.
050866,000095: 
050867,000096:                                                                                                 #    AXO,AYO,AZO,TEPHEM  SET AT LAUNCH TIME
050868,000097:                                                                                                 #    LAT-- LATITUDE  (REVS B0)
050869,000098:                                                                                                 #    LONG-- LONGITUDE  (REVS B0)
050870,000099:                                                                                                 #  ALT--ALTITUDE (METERS) B-29
050871,000100:                                                                                                 #    MPAC-- TIME  (CSECS B-28)
050872,000101:                                                                                                 #    ERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
050873,000102:                                                                                                 #    LUNAFLAG=0 FOR EARTH,1 FOR MOON
050874,000103:                                                                                                 #  OUTPUT
050875,000104: 
050876,000105:                                                                                                 #  R-VECTOR IN ALPHAV (METERS B-29)
050877,000106: 13,2373           40220        LALOTORV          STQ      SETPD                                 #  LAT,LONG,ALT TO R VECTOR
050878,000107: 13,2374           02242                                   INCORPEX                              
050879,000108: 13,2375           00001                                   0D                                    
050880,000109: 13,2376           34007                          STCALL   6D                                    #  6-7D= TIME FOR RP-TO-R
050881,000110: 13,2377           26523                                   SETGAMMA                              #  GAMMA=B2/A2 FOR EARTH,1 FOR MOON B-1
050882,000111: 13,2400           73545                          DLOAD    SIN                                   #                COS(LONG)COS(LAT) IN MPAC
050883,000112: 13,2401           01104                                   LAT                                   #       UNIT RP= SIN(LONG)COS(LAT)    2-3D
050884,000113: 13,2402           65275                          DMPR     PDDL                                  #  PD 2          GAMMA*SIN(LAT)       0-1D
050885,000114: 13,2403           00011                                   GAMRP                                 
050886,000115: 13,2404           01104                                   LAT                                   #          0-1D= GAMMA*SIN(LAT) B-2
050887,000116: 13,2405           65346                          COS      PDDL                                  #  PD 4     2-3D=COS(LAT) B-1 TEMPORARILY
050888,000117: 13,2406           01106                                   LONG                                  
050889,000118: 13,2407           57356                          SIN      DMPR                                  #  PD 2
050890,000119: 13,2410           71525                          PDDL     COS                                   #  PD 4    2-3D=SIN(LONG)COS(LAT) B-2
050891,000120: 13,2411           01104                                   LAT                                   
050892,000121: 13,2412           71525                          PDDL     COS                                   #  PD 6     4-5D=COS(LAT) B-1 TEMPORARILY
050893,000122: 13,2413           01106                                   LONG                                  
050894,000123: 13,2414           55475                          DMPR     VDEF                                  #  PD4     MPAC= COS(LONG)COS(LAT) B-2
050895,000124: 13,2415           41456                          UNIT     PUSH                                  #  0-5D= UNIT RP FOR RP-TO-R SUBR.
050896,000125: 13,2416           36152                          STCALL   ALPHAV                                #  ALPHAV +4= SINL FOR SETRE SUBR.
050897,000126: 13,2417           26533                                   SETRE                                 #  RE METERS B-29
050898,000127: 13,2420           43145                          DLOAD    BOFF                                  #  SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON
050899,000128: 13,2421           11453                                   ZEROVEC                               
050900,000129: 13,2422           01743                                   LUNAFLAG                              
050901,000130: 13,2423           26425                                   CALLRPRT                              
050902,000131: 13,2424           77746                          COS                                            #  USE COS(0) TO GET NON-ZERO IN MPAC
050903,000132: 13,2425           77624        CALLRPRT          CALL                                           
050904,000133: 13,2426           55341                                   RP-TO-R                               #  EXIT WITH UNIT R VECTOR IN MPAC
050905,000134: 13,2427           16152                          STODL    ALPHAV                                
050906,000135: 13,2430           02241                                   ERADM                                 
050907,000136:                                                                                                 # # Page 1206
050908,000137: 13,2431           74215                          DAD      VXSC                                  #  (RE + ALT)(UNIT R) METERS B-30
050909,000138: 13,2432           01110                                   ALT                                   
050910,000139: 13,2433           02152                                   ALPHAV                                
050911,000140: 13,2434           77772                          VSL1                                           #  R METERS B-29
050912,000141: 13,2435           36152                          STCALL   ALPHAV                                #  EXIT WITH R IN METERS B-29
050913,000142: 13,2436           02242                                   INCORPEX                              
050914,000143:                                                                                                 #  SUBROUTINE TO COMPUTE EARTH RADIUS
050915,000144: 
050916,000145:                                                                                                 #  INPUT
050917,000146: 
050918,000147:                                                                                                 #    1/2 SIN LAT IN ALPHAV +4
050919,000148: 
050920,000149:                                                                                                 #  OUTPUT
050921,000150: 
050922,000151:                                                                                                 #    EARTH RADIUS IN ERADM AND MPAC  (METERS B-29)
050923,000152: 
050924,000153: 13,2437           63545        GETERAD           DLOAD    DSQ                                   
050925,000154: 13,2440           02156                                   ALPHAV     +4                         #  SIN**2(L)
050926,000155: 13,2441           44352                          SL1      BDSU                                  
050927,000156: 13,2442           11451                                   DP1/2                                 #  COS**2(L)
050928,000157: 13,2443           44275                          DMPR     BDSU                                  
050929,000158: 13,2444           26460                                   EE                                    
050930,000159: 13,2445           11451                                   DP1/2                                 
050931,000160: 13,2446           75465                          BDDV     SQRT                                  
050932,000161: 13,2447           26454                                   B2XSC                                 
050933,000162: 13,2450           77622                          SR4R                                           
050934,000163: 13,2451           02241                          STORE    ERADM                                 
050935,000164: 13,2452           77616                          RVQ                                            
050936,000165: 
050937,000166:                                                                                                 #  THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166,B=6356784 METERS
050938,000167:                                                                                                 #  B2XSC= B**2 SCALED B-51
050939,000168:                                                                                                 #  B2/A2= B**2/A**2 SCALED B-1
050940,000169:                                                                                                 #  EE=(1-B**2/A**2) SCALED B-0
050941,000170: 
050942,000171: 13,2453           00446 00305  B2XSC             2DEC     .0179450689                            #  B**2 SCALED B-51
050943,000172: 13,2455  04,3450               DP1/2             =        XUNIT                                 
050944,000173: 13,2455           17711 05254  B2/A2             2DEC     .9933064884 B-1                        #  GAMMA= B**2/A**2 B-1
050945,000174: 13,2457           00155 25250  EE                2DEC     6.6935116  E-3                        #  (1-B**2/A**2) B-0
050946,000175: 13,2461           00302 17755  ERAD              2DEC     6373338    B-29                       #  PAD RADIUS
050947,000176: 
050948,000177:                                                                                                 # # Page 1207
050949,000178:                                                                                                 #  ARCTAN SUBROUTINE
050950,000179: 
050951,000180: 
050952,000181:                                                                                                 #  CALLING SEQUENCE
050953,000182: 
050954,000183:                                                                                                 #    SIN THETA IN SINTH B-1
050955,000184:                                                                                                 #    COS THETA IN COSTH B-1
050956,000185:                                                                                                 #    CALL ARCTAN
050957,000186: 
050958,000187:                                                                                                 #  OUTPUT
050959,000188:                                                                                                 #    ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2
050960,000189: 
050961,000190: 
050962,000191: 13,2463           77600        ARCTAN            BOV                                            
050963,000192: 13,2464           26465                                   CLROVFLW                              
050964,000193: 13,2465           63545        CLROVFLW          DLOAD    DSQ                                   
050965,000194: 13,2466           00023                                   SINTH                                 
050966,000195: 13,2467           63525                          PDDL     DSQ                                   
050967,000196: 13,2470           00021                                   COSTH                                 
050968,000197: 13,2471           77615                          DAD                                            
050969,000198: 13,2472           75454                          BZE      SQRT                                  
050970,000199: 13,2473           26511                                   ARCTANXX                              #  ATAN=0/0  SET THETA=0
050971,000200: 13,2474           40065                          BDDV     BOV                                   
050972,000201: 13,2475           00023                                   SINTH                                 
050973,000202: 13,2476           26516                                   ATAN=90                               
050974,000203: 13,2477           67542                          SR1      ASIN                                  
050975,000204: 13,2500           00025                          STORE    THETA                                 
050976,000205: 13,2501           50125                          PDDL     BMN                                   
050977,000206: 13,2502           00021                                   COSTH                                 
050978,000207: 13,2503           26505                                   NEGCOS                                
050979,000208: 13,2504           43545                          DLOAD    RVQ                                   
050980,000209: 13,2505           57545        NEGCOS            DLOAD    DCOMP                                 
050981,000210: 13,2506           43244                          BPL      DAD                                   
050982,000211: 13,2507           26513                                   NEGOUT                                
050983,000212: 13,2510           11451                                   DP1/2                                 
050984,000213: 13,2511           00025        ARCTANXX          STORE    THETA                                 
050985,000214: 13,2512           77616                          RVQ                                            
050986,000215: 
050987,000216: 13,2513           52025        NEGOUT            DSU      GOTO                                  
050988,000217: 13,2514           11451                                   DP1/2                                 
050989,000218: 13,2515           26511                                   ARCTANXX                              
050990,000219: 13,2516           75345        ATAN=90           DLOAD    SIGN                                  
050991,000220: 13,2517           11477                                   LODP1/4                               
050992,000221: 13,2520           00023                                   SINTH                                 
050993,000222: 13,2521           00025                          STORE    THETA                                 
050994,000223: 13,2522           77616                          RVQ                                            
050995,000224: 
050996,000225: 13,2523  04,3452               2DZERO            =        DPZERO                                
050997,000226: 
050998,000227:                                                                                                 # # Page 1208
050999,000228:                                                                                                 #  ..... SETGAMMA SUBROUTINE .....
051000,000229:                                                                                                 #  SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES
051001,000230: 
051002,000231:                                                                                                 #   GAMMA = B**2/A**2 FOR EARTH (B-1)
051003,000232:                                                                                                 #   GAMMA = 1 FOR MOON (B-1)
051004,000233: 
051005,000234:                                                                                                 #  CALLING SEQUENCE
051006,000235:                                                                                                 #   L       CALL
051007,000236:                                                                                                 #   L+1            SETGAMMA
051008,000237: 
051009,000238:                                                                                                 #  INPUT
051010,000239:                                                                                                 #   LUNAFLAG=0 FOR EARTH,=1 FOR MOON
051011,000240: 
051012,000241:                                                                                                 #  OUTPUT
051013,000242:                                                                                                 #   GAMMA IN GAMRP  (B-1)
051014,000243: 
051015,000244: 13,2523           43145        SETGAMMA          DLOAD    BOFF                                  #  BRANCH FOR EARTH
051016,000245: 13,2524           26456                                   B2/A2                                 #  EARTH GAMMA
051017,000246: 13,2525           01743                                   LUNAFLAG                              
051018,000247: 13,2526           26531                                   SETGMEX                               
051019,000248: 13,2527           77735                          SLOAD                                          
051020,000249: 13,2530           11451                                   1B1                                   #  MOON GAMMA
051021,000250: 13,2531           00011        SETGMEX           STORE    GAMRP                                 
051022,000251: 13,2532           77616                          RVQ                                            
051023,000252: 13,2533                        GAMRP             =        8D                                    
051024,000253: 
051025,000254:                                                                                                 # # Page 1209
051026,000255:                                                                                                 #  .....SETRE SUBROUTINE .....1
051027,000256:                                                                                                 #  SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)
051028,000257: 
051029,000258:                                                                                                 #  RE= RM FOR MOON
051030,000259:                                                                                                 #   RE= RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID
051031,000260: 
051032,000261:                                                                                                 #  CALLING SEQUENCE
051033,000262:                                                                                                 #   L       CALL
051034,000263:                                                                                                 #   L+1            SETRE
051035,000264: 
051036,000265:                                                                                                 #  SUBROUTINES USED
051037,000266:                                                                                                 #   CETERAD
051038,000267: 
051039,000268:                                                                                                 #  INPUT
051040,000269:                                                                                                 #   ERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED RE
051041,000270:                                                                                                 #   ALPHAV +4= 1/2 SINL IF GETERAD IS CALLED
051042,000271:                                                                                                 #   LUNAFLAG=0 FOR EARTH,=1 FOR MOON
051043,000272: 
051044,000273:                                                                                                 #  OUTPUT
051045,000274:                                                                                                 #   ERADM= 504RM FOR MOON (METERS B-29)
051046,000275:                                                                                                 #   ERADM= ERAD OR COMPUTED RE FOR EARTH (METERS B-29)
051047,000276: 
051048,000277: 13,2533           71220        SETRE             STQ      DLOAD                                 
051049,000278: 13,2534           00051                                   SETREX                                
051050,000279: 13,2535           26560                                   504RM                                 
051051,000280: 13,2536           71214                          BON      DLOAD                                 #  BRANCH FOR MOON
051052,000281: 13,2537           01703                                   LUNAFLAG                              
051053,000282: 13,2540           26550                                   TSTRLSRM                              
051054,000283: 13,2541           26462                                   ERAD                                  
051055,000284: 13,2542           45014                          BOFF     CALL                                  #  ERADFLAG=0 FOR FIXED RE,1 FOR COMPUTED
051056,000285: 13,2543           00742                                   ERADFLAG                              
051057,000286: 13,2544           26546                                   SETRXX                                
051058,000287: 13,2545           26437                                   GETERAD                               
051059,000288: 13,2546           36241        SETRXX            STCALL   ERADM                                 #  EXIT WITH RE OR RM METERS B-29
051060,000289: 13,2547           00051                                   SETREX                                
051061,000290: 13,2550           77214        TSTRLSRM          BON      VLOAD                                 #  ERADFLAG=0,SET R0=RLS
051062,000291: 13,2551           00702                                   ERADFLAG                              #          =1     R0=RM
051063,000292: 13,2552           26546                                   SETRXX                                
051064,000293: 13,2553           02026                                   RLS                                   
051065,000294: 13,2554           64446                          ABVAL    SR2R                                  #  SCALE FROM B-27 TO B-29
051066,000295: 13,2555           77650                          GOTO                                           
051067,000296: 13,2556           26546                                   SETRXX                                
051068,000297: 13,2557  0000051               SETREX            =        S2                                    
051069,000298: 13,2557           00065 01265  504RM             2DEC     1738090    B-29                       #  METERS B-29 (MOON RADIUS)

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