Source Code

These source-code files derive from a printout of Luminary 210 (Apollo 15-17 Lunar Module guidance computer program), from the personal library of original AGC developer Don Eyles, digitally photographed at archive.org, financially sponsored by Jim Lawton, and transcribed to source code by a team of volunteers. This colorized, syntax-highlighted form was created by assembling that transcribed source code. Note that the full page images are available on the Virtual AGC project page at archive.org, while reduced-size images are presented at the VirtualAGC project website. Report or fix any transcription errors at the Virtual AGC project code repository.

Notations on the program listing read, in part:

	GAP: ASSEMBLE REVISION 210 OF AGC PROGRAM LUMINARY 
	BY NASA 2021112-161 17:11 MAR. 19,1971
Note that the date is the date of the printout, not the date of the program revision.

048526,000002:                                                                                                  ## Copyright:   Public domain.
048527,000003:                                                                                                  ## Filename:    LATITUDE_LONGITUDE_SUBROUTINES.agc
048528,000004:                                                                                                  ## Purpose:     A section of Luminary revision 210.
048529,000005:                                                                                                  ##              It is part of the source code for the Lunar Module's (LM)
048530,000006:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 15-17.
048531,000007:                                                                                                  ##              This file is intended to be a faithful transcription, except
048532,000008:                                                                                                  ##              that the code format has been changed to conform to the
048533,000009:                                                                                                  ##              requirements of the yaYUL assembler rather than the
048534,000010:                                                                                                  ##              original YUL assembler.
048535,000011:                                                                                                  ## Reference:   pp. 1131-1137
048536,000012:                                                                                                  ## Assembler:   yaYUL
048537,000013:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
048538,000014:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
048539,000015:                                                                                                  ## Mod history: 2016-11-17 JL   Created from Luminary131 version.
048540,000016:                                                                                                  ##              2016-12-12 MAS  Transcribed.
048541,000017:                                                                                                  ##              2016-12-26 RSB  Comment-text proofed using ProoferComments
048542,000018:                                                                                                  ##                              and corrected errors found.
048543,000019: 

Page 1131

048545,000021:                                                                                                  #  SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT
048546,000022: 
048547,000023:                                                                                                  #  CALLING SEQUENCE
048548,000024: 
048549,000025:                                                                                                  #    L-1    CALL
048550,000026:                                                                                                  #    L             LAT-LONG
048551,000027:                                                                                                  #  SUBROUTINES USED
048552,000028: 
048553,000029:                                                                                                  #   R-TO-RP,ARCTAN,SETGAMMA,SETRE
048554,000030:                                                                                                  #  ERASABLE INIT. REQ.
048555,000031: 
048556,000032:                                                                                                  #    AXO,-AYO,AZO,TEPHEM (SET AT LAUNCH TIME)
048557,000033:                                                                                                  #  ALPHAV = POSITION VECTOR METERS B-29
048558,000034:                                                                                                  #    MPAC-- TIME  (CSECS B-28)
048559,000035:                                                                                                  #   ERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
048560,000036:                                                                                                  #   LUNAFLAG=0 FOR EARTH,1 FOR MOON
048561,000037:                                                                                                  #  OUTPUT
048562,000038: 
048563,000039:                                                                                                  #    LATITUDE IN LAT   (REVS. B-0)
048564,000040:                                                                                                  #    LONGITUDE IN LONG   (REVS. B-0)
048565,000041:                                                                                                  #  ALTITUDE IN ALT METERS B-29
048566,000042: 30,3761                                           BANK     30                                    
048567,000043: 13,2000                                           SETLOC   LATLONG                               
048568,000044: 13,2000                                           BANK                                           
048569,000045: 
048570,000046: 13,2406                                           COUNT*   $$/LT-LG                              
048571,000047: 13,2406  E4,1431                                  EBANK=   ALPHAV                                
048572,000048: 13,2406           40220        LAT-LONG           STQ      SETPD                                 
048573,000049: 13,2407           03674                                    INCORPEX                              
048574,000050: 13,2410           00001                                    0D                                    
048575,000051: 13,2411           24007                           STOVL    6D                                    #  SAVE TIME IN 6-7D FOR R-TO-RP
048576,000052: 13,2412           02032                                    ALPHAV                                
048577,000053: 13,2413           51406                           PUSH     ABVAL                                 #  0-5D= R FOR R-TO-RP
048578,000054: 13,2414           16070                           STODL    ALPHAM                                #  ABS. VALUE OF R FOR ALT FORMULA BELOW
048579,000055: 13,2415           24007                                    ZEROVEC                               #  SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON
048580,000056: 13,2416           71414                           BOFF     COS                                   #  USE COS(0) TO GET NON-ZERO IN MPAC
048581,000057: 13,2417           01743                                    LUNAFLAG                              #  0=EARTH,1=MOON
048582,000058: 13,2420           26421                                    CALLRTRP                              
048583,000059: 13,2421           77624        CALLRTRP           CALL                                           
048584,000060: 13,2422           51644                                    R-TO-RP                               #  RP VECTOR CONVERTED FROM R B-29
048585,000061: 13,2423           77656                           UNIT                                           #  UNIT RP B-1
048586,000062: 13,2424           36032                           STCALL   ALPHAV                                #  U2= 1/2 SINL FOR SETRE SUBR BELOW
048587,000063: 13,2425           26605                                    SETGAMMA                              #   SET GAMMA=B2/A2 FOR EARTH,=1 FOR MOON
048588,000064: 13,2426           77624                           CALL                                           #   SCALED B-1
048589,000065: 13,2427           26615                                    SETRE                                 #  CALC RE METERS B-29
048590,000066: 13,2430           63545                           DLOAD    DSQ                                   
048591,000067: 13,2431           02032                                    ALPHAV                                
048592,000068: 13,2432           63525                           PDDL     DSQ                                   
048593,000069: 13,2433           02034                                    ALPHAV     +2                         
048594,000070: 13,2434           75415                           DAD      SQRT                                  

Page 1132

048596,000072: 13,2435           76405                           DMP      SL1R                                  
048597,000073: 13,2436           00011                                    GAMRP                                 
048598,000074: 13,2437           14021                           STODL    COSTH                                 #  COS(LAT) B-1
048599,000075: 13,2440           02036                                    ALPHAV     +4                         
048600,000076: 13,2441           34023                           STCALL   SINTH                                 #  SIN(LAT) B-1
048601,000077: 13,2442           26545                                    ARCTAN                                
048602,000078: 13,2443           15120                           STODL    LAT                                   #  LAT B0
048603,000079: 13,2444           02032                                    ALPHAV                                
048604,000080: 13,2445           14021                           STODL    COSTH                                 #  COS(LONG) B-1
048605,000081: 13,2446           02034                                    ALPHAV     +2                         
048606,000082: 13,2447           34023                           STCALL   SINTH                                 #  SIN(LONG) B-1
048607,000083: 13,2450           26545                                    ARCTAN                                
048608,000084: 13,2451           15122                           STODL    LONG                                  #  LONG. REVS B-0 IN RANGE -1/2 TO 1/2
048609,000085: 13,2452           02070                                    ALPHAM                                
048610,000086: 13,2453           77625                           DSU                                            #  ALT= R-RE METERS B-29
048611,000087: 13,2454           03673                                    ERADM                                 
048612,000088: 13,2455           35124                           STCALL   ALT                                   #  EXIT WITH ALT METERS B-29
048613,000089: 13,2456           03674                                    INCORPEX                              

Page 1133

048615,000091:                                                                                                  #  SUBROUTINE TO CONVERT LAT,LONG,ALT AT GIVEN TIME TO RADIUS VECTOR
048616,000092:                                                                                                  #  CALLING SEQUENCE
048617,000093: 
048618,000094:                                                                                                  #    L-1    CALL
048619,000095:                                                                                                  #    L             LALOTORV
048620,000096:                                                                                                  #  SUBROUTINES USED
048621,000097: 
048622,000098:                                                                                                  #   SETGAMMA,SETRE,RP-TO-R
048623,000099:                                                                                                  #  ERASABLE INIT. REQ.
048624,000100: 
048625,000101:                                                                                                  #    AXO,AYO,AZO,TEPHEM  SET AT LAUNCH TIME
048626,000102:                                                                                                  #    LAT-- LATITUDE  (REVS B0)
048627,000103:                                                                                                  #    LONG-- LONGITUDE  (REVS B0)
048628,000104:                                                                                                  #  ALT--ALTITUDE (METERS) B-29
048629,000105:                                                                                                  #    MPAC-- TIME  (CSECS B-28)
048630,000106:                                                                                                  #    ERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
048631,000107:                                                                                                  #   LUNAFLAG=0 FOR EARTH,1 FOR MOON
048632,000108:                                                                                                  #  OUTPUT
048633,000109: 
048634,000110:                                                                                                  #  R-VECTOR IN ALPHAV (METERS B-29)
048635,000111: 13,2457           40220        LALOTORV           STQ      SETPD                                 #  LAT,LONG,ALT TO R VECTOR
048636,000112: 13,2460           03674                                    INCORPEX                              
048637,000113: 13,2461           00001                                    0D                                    
048638,000114: 13,2462           34007                           STCALL   6D                                    #  6-7D= TIME FOR RP-TO-R
048639,000115: 13,2463           26605                                    SETGAMMA                              #  GAMMA=B2/A2 FOR EARTH,1 FOR MOON B-1
048640,000116: 13,2464           73545                           DLOAD    SIN                                   #                COS(LONG)COS(LAT) IN MPAC
048641,000117: 13,2465           01120                                    LAT                                   #       UNIT RP= SIN(LONG)COS(LAT)    2-3D
048642,000118: 13,2466           65275                           DMPR     PDDL                                  #  PD 2          GAMMA*SIN(LAT)       0-1D
048643,000119: 13,2467           00011                                    GAMRP                                 
048644,000120: 13,2470           01120                                    LAT                                   #          0-1D= GAMMA*SIN(LAT) B-2
048645,000121: 13,2471           65346                           COS      PDDL                                  #  PD4      2-3D=COS(LAT) B-1 TEMPORARILY
048646,000122: 13,2472           01122                                    LONG                                  
048647,000123: 13,2473           57356                           SIN      DMPR                                  #  PD 2
048648,000124: 13,2474           71525                           PDDL     COS                                   #  PD 4    2-3D=SIN(LONG)COS(LAT) B-2
048649,000125: 13,2475           01120                                    LAT                                   
048650,000126: 13,2476           71525                           PDDL     COS                                   #  PD 6     4-5D=COS(LAT) B-1 TEMPORARILY
048651,000127: 13,2477           01122                                    LONG                                  
048652,000128: 13,2500           55475                           DMPR     VDEF                                  #  PD 4    MPAC= COS(LONG)COS(LAT) B-2
048653,000129: 13,2501           41456                           UNIT     PUSH                                  #  0-5D= UNIT RP FOR RP-TO-R SUBR.
048654,000130: 13,2502           36032                           STCALL   ALPHAV                                #  ALPHAV +4= SINL FOR SETRE SUBR.
048655,000131: 13,2503           26615                                    SETRE                                 #  RE METERS B-29
048656,000132: 13,2504           43145                           DLOAD    BOFF                                  #  SET MPAC=0 FOR EARTH,NON-ZERO FOR MOON
048657,000133: 13,2505           24007                                    ZEROVEC                               
048658,000134: 13,2506           01743                                    LUNAFLAG                              
048659,000135: 13,2507           26511                                    CALLRPRT                              
048660,000136: 13,2510           77746                           COS                                            #  USE COS(0) TO GET NON-ZERO IN MPAC
048661,000137: 13,2511           77624        CALLRPRT           CALL                                           
048662,000138: 13,2512           55716                                    RP-TO-R                               #  EXIT WITH UNIT R VECTOR IN MPAC
048663,000139: 13,2513           16032                           STODL    ALPHAV                                
048664,000140: 13,2514           03673                                    ERADM                                 

Page 1134

048666,000142: 13,2515           74215                           DAD      VXSC                                  #  (RE + ALT)(UNIT R) METERS B-30
048667,000143: 13,2516           01124                                    ALT                                   
048668,000144: 13,2517           02032                                    ALPHAV                                
048669,000145: 13,2520           77772                           VSL1                                           #  R METERS B-29
048670,000146: 13,2521           36032                           STCALL   ALPHAV                                #  EXIT WITH R IN METERS B-29
048671,000147: 13,2522           03674                                    INCORPEX                              
048672,000148:                                                                                                  #  SUBROUTINE TO COMPUTE EARTH RADIUS
048673,000149: 
048674,000150:                                                                                                  #  INPUT
048675,000151: 
048676,000152:                                                                                                  #    1/2 SIN LAT IN ALPHAV +4
048677,000153: 
048678,000154:                                                                                                  #  OUTPUT
048679,000155: 
048680,000156:                                                                                                  #    EARTH RADIUS IN ERADM AND MPAC  (METERS B-29)
048681,000157: 
048682,000158: 13,2523           63545        GETERAD            DLOAD    DSQ                                   
048683,000159: 13,2524           02036                                    ALPHAV     +4                         #  SIN**2(L)
048684,000160: 13,2525           44352                           SL1      BDSU                                  
048685,000161: 13,2526           24005                                    DP1/2                                 #  COS**2(L)
048686,000162: 13,2527           44275                           DMPR     BDSU                                  
048687,000163: 13,2530           26544                                    EE                                    
048688,000164: 13,2531           24005                                    DP1/2                                 
048689,000165: 13,2532           75465                           BDDV     SQRT                                  
048690,000166: 13,2533           26540                                    B2XSC                                 
048691,000167: 13,2534           77622                           SR4R                                           
048692,000168: 13,2535           03673                           STORE    ERADM                                 
048693,000169: 13,2536           77616                           RVQ                                            
048694,000170: 
048695,000171:                                                                                                  #  THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166,B=6356784 METERS
048696,000172:                                                                                                  #  B2XSC= B**2 SCALED B-51
048697,000173:                                                                                                  #  B2/A2= B**2/A**2 SCALED B-1
048698,000174:                                                                                                  #  EE=(1-B**2/A**2) SCALED B-0
048699,000175: 13,2537           00446 00305  B2XSC              2DEC     .0179450689                            #  B**2 SCALED B-51
048700,000176: 
048701,000177: 13,2541  12,2004               DP1/2              =        XUNIT                                 
048702,000178: 13,2541           17711 05254  B2/A2              2DEC     .9933064884 B-1                        #  GAMMA= B**2/A**2 B-1
048703,000179: 
048704,000180: 13,2543           00155 25250  EE                 2DEC     6.6935116  E-3                        #  (1-B**2/A**2) B-0
048705,000181: 

Page 1135

048707,000183:                                                                                                  #  ARCTAN SUBROUTINE
048708,000184: 
048709,000185: 
048710,000186:                                                                                                  #  CALLING SEQUENCE
048711,000187: 
048712,000188:                                                                                                  #    SIN THETA IN SINTH B-1
048713,000189:                                                                                                  #    COS THETA IN COSTH B-1
048714,000190:                                                                                                  #    CALL ARCTAN
048715,000191: 
048716,000192:                                                                                                  #  OUTPUT
048717,000193:                                                                                                  #     ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2
048718,000194: 
048719,000195: 
048720,000196: 13,2545           77600        ARCTAN             BOV                                            
048721,000197: 13,2546           26547                                    CLROVFLW                              
048722,000198: 13,2547           63545        CLROVFLW           DLOAD    DSQ                                   
048723,000199: 13,2550           00023                                    SINTH                                 
048724,000200: 13,2551           63525                           PDDL     DSQ                                   
048725,000201: 13,2552           00021                                    COSTH                                 
048726,000202: 13,2553           77615                           DAD                                            
048727,000203: 13,2554           75454                           BZE      SQRT                                  
048728,000204: 13,2555           26573                                    ARCTANXX                              #  ATAN=0/0  SET THETA=0
048729,000205: 13,2556           40065                           BDDV     BOV                                   
048730,000206: 13,2557           00023                                    SINTH                                 
048731,000207: 13,2560           26600                                    ATAN=90                               
048732,000208: 13,2561           67542                           SR1      ASIN                                  
048733,000209: 13,2562           00025                           STORE    THETA                                 
048734,000210: 13,2563           50125                           PDDL     BMN                                   
048735,000211: 13,2564           00021                                    COSTH                                 
048736,000212: 13,2565           26567                                    NEGCOS                                
048737,000213: 13,2566           43545                           DLOAD    RVQ                                   
048738,000214: 13,2567           57545        NEGCOS             DLOAD    DCOMP                                 
048739,000215: 13,2570           43244                           BPL      DAD                                   
048740,000216: 13,2571           26575                                    NEGOUT                                
048741,000217: 13,2572           24005                                    DP1/2                                 
048742,000218: 13,2573           00025        ARCTANXX           STORE    THETA                                 
048743,000219: 13,2574           77616                           RVQ                                            
048744,000220: 
048745,000221: 13,2575           52025        NEGOUT             DSU      GOTO                                  
048746,000222: 13,2576           24005                                    DP1/2                                 
048747,000223: 13,2577           26573                                    ARCTANXX                              
048748,000224: 13,2600           75345        ATAN=90            DLOAD    SIGN                                  
048749,000225: 13,2601           11040                                    LODP1/4                               
048750,000226: 13,2602           00023                                    SINTH                                 
048751,000227: 13,2603           00025                           STORE    THETA                                 
048752,000228: 13,2604           77616                           RVQ                                            
048753,000229: 
048754,000230: 13,2605  12,2006               2DZERO             =        DPZERO                                
048755,000231: 

Page 1136

048757,000233:                                                                                                  #  ..... SETGAMMA SUBROUTINE .....
048758,000234:                                                                                                  #  SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES
048759,000235: 
048760,000236:                                                                                                  #   GAMMA = B**2/A**2 FOR EARTH (B-1)
048761,000237:                                                                                                  #   GAMMA = 1 FOR MOON (B-1)
048762,000238: 
048763,000239:                                                                                                  #  CALLING SEQUENCE
048764,000240:                                                                                                  #   L       CALL
048765,000241:                                                                                                  #   L+1            SETGAMMA
048766,000242: 
048767,000243:                                                                                                  #  INPUT
048768,000244:                                                                                                  #   LUNAFLAG=0 FOR EARTH,=1 FOR MOON
048769,000245: 
048770,000246:                                                                                                  #  OUTPUT
048771,000247:                                                                                                  #   GAMMA IN GAMRP  (B-1)
048772,000248: 
048773,000249: 13,2605           43145        SETGAMMA           DLOAD    BOFF                                  #  BRANCH FOR EARTH
048774,000250: 13,2606           26542                                    B2/A2                                 #  EARTH GAMMA
048775,000251: 13,2607           01743                                    LUNAFLAG                              
048776,000252: 13,2610           26613                                    SETGMEX                               
048777,000253: 13,2611           77735                           SLOAD                                          
048778,000254: 13,2612           24005                                    1B1                                   #  MOON GAMMA
048779,000255: 13,2613           00011        SETGMEX            STORE    GAMRP                                 
048780,000256: 13,2614           77616                           RVQ                                            
048781,000257: 13,2615                        GAMRP              =        8D                                    
048782,000258: 

Page 1137

048784,000260:                                                                                                  #  .....SETRE SUBROUTINE .....
048785,000261:                                                                                                  #  SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)
048786,000262: 
048787,000263:                                                                                                  #  RE= RM FOR MOON
048788,000264:                                                                                                  #   RE= RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID
048789,000265: 
048790,000266:                                                                                                  #  CALLING SEQUENCE
048791,000267:                                                                                                  #   L       CALL
048792,000268:                                                                                                  #   L+1            SETRE
048793,000269: 
048794,000270:                                                                                                  #  SUBROUTINES USED
048795,000271:                                                                                                  #   GETERAD
048796,000272: 
048797,000273:                                                                                                  #  INPUT
048798,000274:                                                                                                  #   ERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED RE
048799,000275:                                                                                                  #   ALPHAV +4= 1/2 SINL IF GETERAD IS CALLED
048800,000276:                                                                                                  #   LUNAFLAG=0 FOR EARTH,=1 FOR MOON
048801,000277: 
048802,000278:                                                                                                  #  OUTPUT
048803,000279:                                                                                                  #   ERADM= 504RM FOR MOON (METERS B-29)
048804,000280:                                                                                                  #   ERADM= ERAD OR COMPUTED RF FOR EARTH (METERS B-29)
048805,000281: 
048806,000282: 13,2615           71220        SETRE              STQ      DLOAD                                 
048807,000283: 13,2616           00051                                    SETREX                                
048808,000284: 13,2617           10003                                    504RM                                 
048809,000285: 13,2620           71214                           BON      DLOAD                                 #  BRANCH FOR MOON
048810,000286: 13,2621           01703                                    LUNAFLAG                              
048811,000287: 13,2622           26632                                    TSTRLSRM                              
048812,000288: 13,2623           10001                                    ERAD                                  
048813,000289: 13,2624           45014                           BOFF     CALL                                  #  ERADFLAG=0 FOR FIXED RE,1 FOR COMPUTED
048814,000290: 13,2625           00742                                    ERADFLAG                              
048815,000291: 13,2626           26630                                    SETRXX                                
048816,000292: 13,2627           26523                                    GETERAD                               
048817,000293: 13,2630           37673        SETRXX             STCALL   ERADM                                 #  EXIT WITH RE OR RM METERS B-29
048818,000294: 13,2631           00051                                    SETREX                                
048819,000295: 13,2632           77214        TSTRLSRM           BON      VLOAD                                 #  ERADFLAG=0,SET R0=RLS
048820,000296: 13,2633           00702                                    ERADFLAG                              #          =1     R0=RM
048821,000297: 13,2634           26630                                    SETRXX                                
048822,000298: 13,2635           02021                                    RLS                                   
048823,000299: 13,2636           64446                           ABVAL    SR2R                                  #  SCALE FROM B-27 TO B-29
048824,000300: 13,2637           77650                           GOTO                                           
048825,000301: 13,2640           26630                                    SETRXX                                
048826,000302: 13,2641  0000051               SETREX             =        S2                                    

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