Source Code

These source-code files are part of a reconstructed copy of Comanche 051, the original release of the Apollo 11 Command Module (CM) Apollo Guidance Computer (AGC) software.

The reconstruction began with source code of Comanche 055 previously transcribed from a digitized copy of that program. The code was then updated by undoing changes related to the R-2 lunar potential model, using hints from program comments and change-indicating asterisks in the Comanche 055 listing as a guide. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021153D. Note that page numbers in the reconstructed code match those on the Comanche 055 printout, although the added code would likely have changed page numbers for a real Comanche 051 listing.

Comments from the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository.

052462,000002:                                                                                                  ## Copyright:   Public domain.
052463,000003:                                                                                                  ## Filename:    LATITUDE_LONGITUDE_SUBROUTINES.agc
052464,000004:                                                                                                  ## Purpose:     A section of Comanche revision 051.
052465,000005:                                                                                                  ##              It is part of the reconstructed source code for the
052466,000006:                                                                                                  ##              original release of the flight software for the Command
052467,000007:                                                                                                  ##              Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11.
052468,000008:                                                                                                  ##              The code has been recreated from a copy of Comanche 055. It
052469,000009:                                                                                                  ##              has been adapted such that the resulting bugger words
052470,000010:                                                                                                  ##              exactly match those specified for Comanche 51 in NASA drawing
052471,000011:                                                                                                  ##              2021153D, which gives relatively high confidence that the
052472,000012:                                                                                                  ##              reconstruction is correct.
052473,000013:                                                                                                  ## Reference:   pp. 1236-1242
052474,000014:                                                                                                  ## Assembler:   yaYUL
052475,000015:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
052476,000016:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
052477,000017:                                                                                                  ## Mod history: 2019-07-30 MAS  Created from Comanche 55.
052478,000018: 

Page 1236

052480,000020:                                                                                                  #  SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT
052481,000021: 
052482,000022:                                                                                                  #  CALLING SEQUENCE
052483,000023:                                                                                                  #        L-1     CALL
052484,000024:                                                                                                  #        L               LAT-LONG
052485,000025: 
052486,000026:                                                                                                  #  SUBROUTINES USED
052487,000027:                                                                                                  #        R-TO-RP, ARCTAN, SETGAMMA, SETRE
052488,000028: 
052489,000029:                                                                                                  #  ERASABLE INIT. REQ.
052490,000030:                                                                                                  #        AXO, -AYO, AZO, TEPHEM (SET AT LAUNCH TIME)
052491,000031:                                                                                                  #        ALPHAV = POSITION VECTOR METERS B-29
052492,000032:                                                                                                  #        MPAC -- TIME (CSECS B-28)
052493,000033:                                                                                                  #        ERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
052494,000034:                                                                                                  #        LUNAFLAG=0 FOR EARTH, 1 FOR MOON
052495,000035: 
052496,000036:                                                                                                  #  OUTPUT
052497,000037:                                                                                                  #        LATITUDE IN LAT         (REVS. B-0)
052498,000038:                                                                                                  #        LONGITUDE IN LONG       (REVS. B-0)
052499,000039:                                                                                                  #        ALTITUDE IN ALT METERS  B-29
052500,000040: 
052501,000041: 30,3750                                           BANK     30                                    
052502,000042: 13,2000                                           SETLOC   LATLONG                               
052503,000043: 13,2000                                           BANK                                           
052504,000044: 
052505,000045: 13,2370                                           COUNT    13/LT-LG                              
052506,000046: 
052507,000047: 13,2370  E4,1551                                  EBANK=   ALPHAV                                
052508,000048: 13,2370           40220        LAT-LONG           STQ      SETPD                                 
052509,000049: 13,2371           02242                                    INCORPEX                              
052510,000050: 13,2372           00001                                    0D                                    
052511,000051: 13,2373           24007                           STOVL    6D                                    #  SAVE TIME IN 6-7D FOR R-TO-RP
052512,000052: 13,2374           02152                                    ALPHAV                                
052513,000053: 13,2375           51406                           PUSH     ABVAL                                 #  0-5D= R FOR R-TO-RP
052514,000054: 13,2376           16310                           STODL    ALPHAM                                #  ABS. VALUE OF R FOR ALT FORMULA BELOW
052515,000055: 13,2377           11566                                    ZEROVEC                               #  SET MPAC=0 FOR EARTH, NON-ZERO FOR MOON
052516,000056: 13,2400           71414                           BOFF     COS                                   #  USE COS(0) TO GET NON-ZERO IN MPAC
052517,000057: 13,2401           01743                                    LUNAFLAG                              #  0=EARTH, 1=MOON
052518,000058: 13,2402           26403                                    CALLRTRP                              
052519,000059: 13,2403           77624        CALLRTRP           CALL                                           
052520,000060: 13,2404           55371                                    R-TO-RP                               #  RP VECTOR CONVERTED FROM R B-29
052521,000061: 13,2405           77656                           UNIT                                           #  UNIT RP B-1
052522,000062: 13,2406           36152                           STCALL   ALPHAV                                #  U2= 1/2 SINL FOR SETRE SUBR BELOW
052523,000063: 13,2407           26571                                    SETGAMMA                              #        SET GAMMA=B2/A2 FOR EARTH, =1 FOR MOON
052524,000064: 13,2410           77624                           CALL                                           #        SCALED B-1
052525,000065: 13,2411           26601                                    SETRE                                 #  CALC RE METERS B-29
052526,000066: 13,2412           63545                           DLOAD    DSQ                                   
052527,000067: 13,2413           02152                                    ALPHAV                                
052528,000068: 13,2414           63525                           PDDL     DSQ                                   
052529,000069: 13,2415           02154                                    ALPHAV     +2                         

Page 1237

052531,000071: 13,2416           75415                           DAD      SQRT                                  
052532,000072: 13,2417           76405                           DMP      SL1R                                  
052533,000073: 13,2420           00011                                    GAMRP                                 
052534,000074: 13,2421           14021                           STODL    COSTH                                 #  COS(LAT) B-1
052535,000075: 13,2422           02156                                    ALPHAV     +4                         
052536,000076: 13,2423           34023                           STCALL   SINTH                                 #  SIN(LAT) B-1
052537,000077: 13,2424           26531                                    ARCTAN                                
052538,000078: 13,2425           15104                           STODL    LAT                                   #  LAT B0
052539,000079: 13,2426           02152                                    ALPHAV                                
052540,000080: 13,2427           14021                           STODL    COSTH                                 #  COS(LONG) B-1
052541,000081: 13,2430           02154                                    ALPHAV     +2                         
052542,000082: 13,2431           34023                           STCALL   SINTH                                 #  SIN(LONG) B-1
052543,000083: 13,2432           26531                                    ARCTAN                                
052544,000084: 13,2433           15106                           STODL    LONG                                  #  LONG. REVS B-0 IN RANGE -1/2 TO 1/2
052545,000085: 13,2434           02310                                    ALPHAM                                
052546,000086: 13,2435           77625                           DSU                                            #  ALT= R-RE METERS B-29
052547,000087: 13,2436           02241                                    ERADM                                 
052548,000088: 13,2437           35110                           STCALL   ALT                                   #  EXIT WITH ALT METERS B-29
052549,000089: 13,2440           02242                                    INCORPEX                              

Page 1238

052551,000091:                                                                                                  #  SUBROUTINE TO CONVERT LAT,LONG,ALT AT GIVEN TIME TO RADIUS VECTOR
052552,000092: 
052553,000093:                                                                                                  #  CALLING SEQUENCE
052554,000094:                                                                                                  #        L-1     CALL
052555,000095:                                                                                                  #        L               LALOTORV
052556,000096: 
052557,000097:                                                                                                  #  SUBROUTINES USED
052558,000098:                                                                                                  #        SETGAMMA, SETRE, RP-TO-R
052559,000099: 
052560,000100:                                                                                                  #  ERASABLE INIT. REQ.
052561,000101:                                                                                                  #        AXO, AYO, AZO, TEPHEM SET AT LAUNCH TIME
052562,000102:                                                                                                  #        LAT -- LATITUDE         (REVS B0)
052563,000103:                                                                                                  #        LONG -- LONGITUDE       (REVS B0)
052564,000104:                                                                                                  #        ALT -- ALTITUDE         (METERS) B-29
052565,000105:                                                                                                  #        MPAC -- TIME            (CSECS B-28)
052566,000106:                                                                                                  #        ERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
052567,000107:                                                                                                  #        LUNAFLAG=0 FOR EARTH, 1 FOR MOON
052568,000108: 
052569,000109:                                                                                                  #  OUTPUT
052570,000110:                                                                                                  #        R-VECTOR IN ALPHAV      (METERS B-29)
052571,000111: 
052572,000112: 13,2441           40220        LALOTORV           STQ      SETPD                                 #  LAT,LONG,ALT TO R VECTOR
052573,000113: 13,2442           02242                                    INCORPEX                              
052574,000114: 13,2443           00001                                    0D                                    
052575,000115: 13,2444           34007                           STCALL   6D                                    #      6-7D = TIME FOR RP-TO-R
052576,000116: 13,2445           26571                                    SETGAMMA                              #     GAMMA = B2/A2 FOR EARTH, 1 FOR MOON B-1
052577,000117: 13,2446           73545                           DLOAD    SIN                                   #            COS(LONG)COS(LAT) IN MPAC
052578,000118: 13,2447           01104                                    LAT                                   #  UNIT  RP = SIN(LONG)COS(LAT)    2-3D
052579,000119: 13,2450           65275                           DMPR     PDDL                                  #  PD 2      GAMMA*SIN(LAT)       0-1D
052580,000120: 13,2451           00011                                    GAMRP                                 
052581,000121: 13,2452           01104                                    LAT                                   #      0-1D = GAMMA*SIN(LAT) B-2
052582,000122: 13,2453           65346                           COS      PDDL                                  #  PD4 2-3D= COS(LAT) B-1 TEMPORARILY
052583,000123: 13,2454           01106                                    LONG                                  
052584,000124: 13,2455           57356                           SIN      DMPR                                  #  PD 2
052585,000125: 13,2456           71525                           PDDL     COS                                   #  PD 4 2-3D= SIN(LONG)COS(LAT) B-2
052586,000126: 13,2457           01104                                    LAT                                   
052587,000127: 13,2460           71525                           PDDL     COS                                   #  PD 6 4-5D= COS(LAT) B-1 TEMPORARILY
052588,000128: 13,2461           01106                                    LONG                                  
052589,000129: 13,2462           55475                           DMPR     VDEF                                  #  PD4 MPAC = COS(LONG)COS(LAT) B-2
052590,000130: 13,2463           41456                           UNIT     PUSH                                  #      0-5D = UNIT RP FOR RP-TO-R SUBR.
052591,000131: 13,2464           36152                           STCALL   ALPHAV                                #  ALPHAV +4= SINL FOR SETRE SUBR.
052592,000132: 13,2465           26601                                    SETRE                                 #  RE METERS B-29
052593,000133: 13,2466           43145                           DLOAD    BOFF                                  #  SET MPAC = 0 FOR EARTH, NON-ZERO FOR MOON
052594,000134: 13,2467           11566                                    ZEROVEC                               
052595,000135: 13,2470           01743                                    LUNAFLAG                              
052596,000136: 13,2471           26473                                    CALLRPRT                              
052597,000137: 13,2472           77746                           COS                                            #  USE COS(0) TO GET NON-ZERO IN MPAC
052598,000138: 13,2473           77624        CALLRPRT           CALL                                           
052599,000139: 13,2474           55344                                    RP-TO-R                               #  EXIT WITH UNIT R VECTOR IN MPAC
052600,000140: 13,2475           16152                           STODL    ALPHAV                                
052601,000141: 13,2476           02241                                    ERADM                                 

Page 1239

052603,000143: 13,2477           74215                           DAD      VXSC                                  #  (RE + ALT)(UNIT R) METERS B-30
052604,000144: 13,2500           01110                                    ALT                                   
052605,000145: 13,2501           02152                                    ALPHAV                                
052606,000146: 13,2502           77772                           VSL1                                           #  R METERS B-29
052607,000147: 13,2503           36152                           STCALL   ALPHAV                                #  EXIT WITH R IN METERS B-29
052608,000148: 13,2504           02242                                    INCORPEX                              
052609,000149: 
052610,000150:                                                                                                  #  SUBROUTINE TO COMPUTE EARTH RADIUS
052611,000151: 
052612,000152:                                                                                                  #  INPUT
052613,000153:                                                                                                  #        1/2 SIN LAT IN ALPHAV +4
052614,000154: 
052615,000155:                                                                                                  #  OUTPUT
052616,000156:                                                                                                  #        EARTH RADIUS IN ERADM AND MPAC (METERS B-29)
052617,000157: 
052618,000158: 13,2505           63545        GETERAD            DLOAD    DSQ                                   
052619,000159: 13,2506           02156                                    ALPHAV     +4                         #  SIN**2(L)
052620,000160: 13,2507           44352                           SL1      BDSU                                  
052621,000161: 13,2510           11564                                    DP1/2                                 #  COS**2(L)
052622,000162: 13,2511           44275                           DMPR     BDSU                                  
052623,000163: 13,2512           26526                                    EE                                    
052624,000164: 13,2513           11564                                    DP1/2                                 
052625,000165: 13,2514           75465                           BDDV     SQRT                                  
052626,000166: 13,2515           26522                                    B2XSC                                 
052627,000167: 13,2516           77622                           SR4R                                           
052628,000168: 13,2517           02241                           STORE    ERADM                                 
052629,000169: 13,2520           77616                           RVQ                                            
052630,000170: 
052631,000171:                                                                                                  #  THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166, B=6356784 METERS
052632,000172:                                                                                                  #  B2XSC = B**2 SCALED B-51
052633,000173:                                                                                                  #  B2/A2 = B**2/A**2 SCALED B-1
052634,000174:                                                                                                  #  EE = (1-B**2/A**2) SCALED B-0
052635,000175: 
052636,000176: 13,2521           00446 00305  B2XSC              2DEC     .0179450689                            #  B**2 SCALED B-51
052637,000177: 
052638,000178: 13,2523  04,3563               DP1/2              =        XUNIT                                 
052639,000179: 13,2523           17711 05254  B2/A2              2DEC     .9933064884 B-1                        #  GAMMA= B**2/A**2 B-1
052640,000180: 
052641,000181: 13,2525           00155 25250  EE                 2DEC     6.6935116  E-3                        #  (1-B**2/A**2) B-0
052642,000182: 
052643,000183: 13,2527           00302 17755  ERAD               2DEC     6373338    B-29                       #  PAD RADIUS
052644,000184: 

Page 1240

052646,000186:                                                                                                  #  ARCTAN SUBROUTINE
052647,000187: 
052648,000188:                                                                                                  #  CALLING SEQUENCE
052649,000189:                                                                                                  #        SIN THETA IN SINTH B-1
052650,000190:                                                                                                  #        COS THETA IN COSTH B-1
052651,000191:                                                                                                  #        CALL ARCTAN
052652,000192: 
052653,000193:                                                                                                  #  OUTPUT
052654,000194:                                                                                                  #        ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2
052655,000195: 
052656,000196: 13,2531           77600        ARCTAN             BOV                                            
052657,000197: 13,2532           26533                                    CLROVFLW                              
052658,000198: 13,2533           63545        CLROVFLW           DLOAD    DSQ                                   
052659,000199: 13,2534           00023                                    SINTH                                 
052660,000200: 13,2535           63525                           PDDL     DSQ                                   
052661,000201: 13,2536           00021                                    COSTH                                 
052662,000202: 13,2537           77615                           DAD                                            
052663,000203: 13,2540           75454                           BZE      SQRT                                  
052664,000204: 13,2541           26557                                    ARCTANXX                              #  ATAN=0/0  SET THETA=0
052665,000205: 13,2542           40065                           BDDV     BOV                                   
052666,000206: 13,2543           00023                                    SINTH                                 
052667,000207: 13,2544           26564                                    ATAN=90                               
052668,000208: 13,2545           67542                           SR1      ASIN                                  
052669,000209: 13,2546           00025                           STORE    THETA                                 
052670,000210: 13,2547           50125                           PDDL     BMN                                   
052671,000211: 13,2550           00021                                    COSTH                                 
052672,000212: 13,2551           26553                                    NEGCOS                                
052673,000213: 13,2552           43545                           DLOAD    RVQ                                   
052674,000214: 13,2553           57545        NEGCOS             DLOAD    DCOMP                                 
052675,000215: 13,2554           43244                           BPL      DAD                                   
052676,000216: 13,2555           26561                                    NEGOUT                                
052677,000217: 13,2556           11564                                    DP1/2                                 
052678,000218: 13,2557           00025        ARCTANXX           STORE    THETA                                 
052679,000219: 13,2560           77616                           RVQ                                            
052680,000220: 
052681,000221: 13,2561           52025        NEGOUT             DSU      GOTO                                  
052682,000222: 13,2562           11564                                    DP1/2                                 
052683,000223: 13,2563           26557                                    ARCTANXX                              
052684,000224: 13,2564           75345        ATAN=90            DLOAD    SIGN                                  
052685,000225: 13,2565           11612                                    LODP1/4                               
052686,000226: 13,2566           00023                                    SINTH                                 
052687,000227: 13,2567           00025                           STORE    THETA                                 
052688,000228: 13,2570           77616                           RVQ                                            
052689,000229: 
052690,000230: 13,2571  04,3565               2DZERO             =        DPZERO                                
052691,000231: 

Page 1241

052693,000233:                                                                                                  #  ..... SETGAMMA SUBROUTINE .....
052694,000234:                                                                                                  #  SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES
052695,000235: 
052696,000236:                                                                                                  #  GAMMA = B**2/A**2 FOR EARTH (B-1)
052697,000237:                                                                                                  #  GAMMA = 1 FOR MOON (B-1)
052698,000238: 
052699,000239:                                                                                                  #  CALLING SEQUENCE
052700,000240:                                                                                                  #        L       CALL
052701,000241:                                                                                                  #        L+1             SETGAMMA
052702,000242: 
052703,000243:                                                                                                  #  INPUT
052704,000244:                                                                                                  #        LUNAFLAG=0 FOR EARTH, =1 FOR MOON
052705,000245: 
052706,000246:                                                                                                  #  OUTPUT
052707,000247:                                                                                                  #        GAMMA IN GAMRP (B-1)
052708,000248: 
052709,000249: 13,2571           43145        SETGAMMA           DLOAD    BOFF                                  #  BRANCH FOR EARTH
052710,000250: 13,2572           26524                                    B2/A2                                 #  EARTH GAMMA
052711,000251: 13,2573           01743                                    LUNAFLAG                              
052712,000252: 13,2574           26577                                    SETGMEX                               
052713,000253: 13,2575           77735                           SLOAD                                          
052714,000254: 13,2576           11564                                    1B1                                   #  MOON GAMMA
052715,000255: 13,2577           00011        SETGMEX            STORE    GAMRP                                 
052716,000256: 13,2600           77616                           RVQ                                            
052717,000257: 13,2601                        GAMRP              =        8D                                    
052718,000258: 

Page 1242

052720,000260:                                                                                                  #  ..... SETRE SUBROUTINE .....
052721,000261:                                                                                                  #  SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)
052722,000262: 
052723,000263:                                                                                                  #        RE = RM FOR MOON
052724,000264:                                                                                                  #        RE = RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID
052725,000265: 
052726,000266:                                                                                                  #  CALLING SEQUENCE
052727,000267:                                                                                                  #        L       CALL
052728,000268:                                                                                                  #        L+1             SETRE
052729,000269: 
052730,000270:                                                                                                  #  SUBROUTINES USED
052731,000271:                                                                                                  #        GETERAD
052732,000272: 
052733,000273:                                                                                                  #  INPUT
052734,000274:                                                                                                  #        ERADFLAG = 0 FOR FIXED RE, 1 FOR COMPUTED RE
052735,000275:                                                                                                  #        ALPHAV +4 = 1/2 SINL IF GETERAD IS CALLED
052736,000276:                                                                                                  #        LUNAFLAG = 0 FOR EARTH, =1 FOR MOON
052737,000277: 
052738,000278:                                                                                                  #  OUTPUT
052739,000279:                                                                                                  #        ERADM = 504RM FOR MOON (METERS B-29)
052740,000280:                                                                                                  #        ERADM = ERAD OR COMPUTED RF FOR EARTH (METERS B-29)
052741,000281: 
052742,000282: 13,2601           71220        SETRE              STQ      DLOAD                                 
052743,000283: 13,2602           00051                                    SETREX                                
052744,000284: 13,2603           26626                                    504RM                                 
052745,000285: 13,2604           71214                           BON      DLOAD                                 #  BRANCH FOR MOON
052746,000286: 13,2605           01703                                    LUNAFLAG                              
052747,000287: 13,2606           26616                                    TSTRLSRM                              
052748,000288: 13,2607           26530                                    ERAD                                  
052749,000289: 13,2610           45014                           BOFF     CALL                                  #  ERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED
052750,000290: 13,2611           00742                                    ERADFLAG                              
052751,000291: 13,2612           26614                                    SETRXX                                
052752,000292: 13,2613           26505                                    GETERAD                               
052753,000293: 13,2614           36241        SETRXX             STCALL   ERADM                                 #  EXIT WITH RE OR RM METERS B-29
052754,000294: 13,2615           00051                                    SETREX                                
052755,000295: 13,2616           77214        TSTRLSRM           BON      VLOAD                                 #  ERADFLAG=0, SET R0=RLS
052756,000296: 13,2617           00702                                    ERADFLAG                              #          =1      R0=RM
052757,000297: 13,2620           26614                                    SETRXX                                
052758,000298: 13,2621           02026                                    RLS                                   
052759,000299: 13,2622           64446                           ABVAL    SR2R                                  #  SCALE FROM B-27 TO B-29
052760,000300: 13,2623           77650                           GOTO                                           
052761,000301: 13,2624           26614                                    SETRXX                                
052762,000302: 13,2625  0000051               SETREX             =        S2                                    
052763,000303: 13,2625           00065 01265  504RM              2DEC     1738090    B-29                       #  METERS B-29 (MOON RADIUS)
052764,000304: 
052765,000305: 
052766,000306: 
052767,000307: 

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