Source Code
046591,000001: # Copyright: Public domain.
046592,000002: # Filename: LATITUDE_LONGITUDE_SUBROUTINES.agc
046593,000003: # Purpose: A section of Luminary 1C, revision 131.
046594,000004: # It is part of the source code for the Lunar Module's (LM)
046595,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
046596,000006: # This file is intended to be a faithful transcription, except
046597,000007: # that the code format has been changed to conform to the
046598,000008: # requirements of the yaYUL assembler rather than the
046599,000009: # original YUL assembler.
046600,000010: # Reference: pp. 1132-1138 of 1729.pdf.
046601,000011: # Contact: Ron Burkey <info@sandroid.org>.
046602,000012: # Website: www.ibiblio.org/apollo/index.html
046603,000013: # Mod history: 05/31/03 RSB. Began transcribing.
046604,000014: # 05/14/05 RSB Corrected website reference above.
046605,000015:
046606,000016: # Page 1132
046607,000017: # SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT
046608,000018:
046609,000019: # CALLING SEQUENCE
046610,000020: # L-1 CALL
046611,000021: # L LAT-LONG
046612,000022:
046613,000023: # SUBROUTINES USED
046614,000024: # R-TO-RP, ARCTAN, SFTGAMMA, SETRE
046615,000025:
046616,000026: # ERASABLE INIT. REQ.
046617,000027: # AXO, -AYO, AZO, TEPHEM (SET AT LAUNCH TIME)
046618,000028: # ALPHAV = POSITION VECTOR METERS B-29
046619,000029: # MPAC -- TIME (CSECS B-28)
046620,000030: # ERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
046621,000031: # LUNAFLAG=0 FOR EARTH, 1 FOR MOON
046622,000032:
046623,000033: # OUTPUT
046624,000034: # LATITUDE IN LAT (REVS. B-0)
046625,000035: # LONGITUDE IN LONG (REVS. B-0)
046626,000036: # ALTITUDE IN ALT METERS B-29
046627,000037:
046628,000038: 30,3766 BANK 30
046629,000039: 13,2000 SETLOC LATLONG
046630,000040: 13,2000 BANK
046631,000041:
046632,000042: 13,2347 COUNT* $$/LT-LG
046633,000043: 13,2347 E4,1431 EBANK= ALPHAV
046634,000044: 13,2347 40220 LAT-LONG STQ SETPD
046635,000045: 13,2350 03674 INCORPEX
046636,000046: 13,2351 00001 0D
046637,000047: 13,2352 24007 STOVL 6D # SAVE TIME IN 6-7D FOR R-TO-RP
046638,000048: 13,2353 02032 ALPHAV
046639,000049: 13,2354 51406 PUSH ABVAL # 0-5D= R FOR R-TO-RP
046640,000050: 13,2355 16070 STODL ALPHAM # ABS. VALUE OF R FOR ALT FORMULA BELOW
046641,000051: 13,2356 24007 ZEROVEC # SET MPAC=0 FOR EARTH, NON-ZERO FOR MOON
046642,000052: 13,2357 71414 BOFF COS # USE COS(0) TO GET NON-ZERO IN MPAC
046643,000053: 13,2360 01743 LUNAFLAG # 0=EARTH, 1=MOON
046644,000054: 13,2361 26362 CALLRTRP
046645,000055: 13,2362 77624 CALLRTRP CALL
046646,000056: 13,2363 51700 R-TO-RP # RP VECTOR CONVERTED FROM R B-29
046647,000057: 13,2364 77656 UNIT # UNIT RP B-1
046648,000058: 13,2365 36032 STCALL ALPHAV # U2= 1/2 CINL FOR SETRE SUBR BELOW
046649,000059: 13,2366 26546 SETGAMMA # SET GAMMA=B2/A2 FOR EARTH, =1 FOR MOON
046650,000060: 13,2367 77624 CALL # SCALED B-1.
046651,000061: 13,2370 26556 SETRE # CALC RE METERS B-29
046652,000062: 13,2371 63545 DLOAD DSQ
046653,000063: 13,2372 02032 ALPHAV
046654,000064: 13,2373 63525 PDDL DSQ
046655,000065: 13,2374 02034 ALPHAV +2
046656,000066: 13,2375 75415 DAD SQRT
046657,000067: # Page 1133
046658,000068: 13,2376 76405 DMP SL1R
046659,000069: 13,2377 00011 GAMRP
046660,000070: 13,2400 14021 STODL COSTH # COS(LAT) B-1
046661,000071: 13,2401 02036 ALPHAV +4
046662,000072: 13,2402 34023 STCALL SINTH # SIN(LAT) B-1
046663,000073: 13,2403 26506 ARCTAN
046664,000074: 13,2404 15120 STODL LAT # LAT B0
046665,000075: 13,2405 02032 ALPHAV
046666,000076: 13,2406 14021 STODL COSTH # COS(LONG) B-1
046667,000077: 13,2407 02034 ALPHAV +2
046668,000078: 13,2410 34023 STCALL SINTH # SIN(LONG) B-1
046669,000079: 13,2411 26506 ARCTAN
046670,000080: 13,2412 15122 STODL LONG # LONG. REVS B-0 IN RANGE -1/2 TO 1/2
046671,000081: 13,2413 02070 ALPHAM
046672,000082: 13,2414 77625 DSU # ALT= R-RE METERS B-29
046673,000083: 13,2415 03673 ERADM
046674,000084: 13,2416 35124 STCALL ALT # EXIT WITH ALT METERS B-29
046675,000085: 13,2417 03674 INCORPEX
046676,000086: # Page 1134
046677,000087: # SUBROUTINE TO CONVERT LAT,LONG.ALT AT GIVEN TIME TO RADIUS VECTOR
046678,000088:
046679,000089: # CALLING SEQUENCE
046680,000090: # L-1 CALL
046681,000091: # L LALOTORV
046682,000092:
046683,000093: # SUBROUTINES USED
046684,000094: # SETGAMMA, SETRE, RP-TO-R
046685,000095:
046686,000096: # ERASABLE INIT. REQ.
046687,000097: # AXO, AYO, AZO, TEPHEM SET AT LAUNCH TIME
046688,000098: # LAT -- LATITUDE (REVS B0)
046689,000099: # LONG -- LONGITUDE (REVS B0)
046690,000100: # ALT -- ALTITUDE (METERS) B-29
046691,000101: # MPAC -- TIME (CSECS B-28)
046692,000102: # ERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
046693,000103: # LUNAFLAG=0 FOR EARTH, 1 FOR MOON
046694,000104:
046695,000105: # OUTPUT
046696,000106: # R-VECTOR IN ALPHAV (METERS B-29)
046697,000107:
046698,000108: 13,2420 40220 LALOTORV STQ SETPD # LAT,LONG,ALT TO R VECTOR
046699,000109: 13,2421 03674 INCORPEX
046700,000110: 13,2422 00001 0D
046701,000111: 13,2423 34007 STCALL 6D # 6-7D= TIME FOR RP-TO-R
046702,000112: 13,2424 26546 SETGAMMA # GAMMA=B2/A2 FOR EARTH, 1 FOR MOON B-1
046703,000113: 13,2425 73545 DLOAD SIN # COS(LONG)COS(LAT) IN MPAC
046704,000114: 13,2426 01120 LAT # UNIT RP = SIN(LONG)COS(LAT) 2-3D
046705,000115: 13,2427 65275 DMPR PDDL # PD 2 GAMMA*SIN(LAT) 0-1D
046706,000116: 13,2430 00011 GAMRP
046707,000117: 13,2431 01120 LAT # 0-1D= GAMMA*SIN(LAT) B-2
046708,000118: 13,2432 65346 COS PDDL # PD4 2-3D= COS(LAT) B-1 TEMPORARILY
046709,000119: 13,2433 01122 LONG
046710,000120: 13,2434 57356 SIN DMPR # PD 2
046711,000121: 13,2435 71525 PDDL COS # PD 4 2-3D = SIN(LONG)COS(LAT) B-2
046712,000122: 13,2436 01120 LAT
046713,000123: 13,2437 71525 PDDL COS # PD 6 4-5D = COS(LAT) B-1 TEMPORARILY
046714,000124: 13,2440 01122 LONG
046715,000125: 13,2441 55475 DMPR VDEF # PD4 MPAC= COS(LONG)COS(LAT) B-2
046716,000126: 13,2442 41456 UNIT PUSH # 0-5D= UNIT RP FOR RP-TO-R SUBR.
046717,000127: 13,2443 36032 STCALL ALPHAV # ALPHAV +4= SINL FOR SETRE SUBR.
046718,000128: 13,2444 26556 SETRE # RE METERS B-29
046719,000129: 13,2445 43145 DLOAD BOFF # SET MPAC=0 FOR EARTH, NON-ZERO IN MPAC
046720,000130: 13,2446 24007 ZEROVEC
046721,000131: 13,2447 01743 LUNAFLAG
046722,000132: 13,2450 26452 CALLRPRT
046723,000133: 13,2451 77746 COS # USE COS(0) TO GET NON-ZERO IN MPAC
046724,000134: 13,2452 77624 CALLRPRT CALL
046725,000135: 13,2453 55716 RP-TO-R # EXIT WITH UNIT R VECTOR IN MPAC
046726,000136: 13,2454 16032 STODL ALPHAV
046727,000137: 13,2455 03673 ERADM
046728,000138: # Page 1135
046729,000139: 13,2456 74215 DAD VXSC # (RE + ALT)(UNIT R) METERS B-30
046730,000140: 13,2457 01124 ALT
046731,000141: 13,2460 02032 ALPHAV
046732,000142: 13,2461 77772 VSL1 # R METERS B-29
046733,000143: 13,2462 36032 STCALL ALPHAV # EXIT WITH R IN METERS B-29
046734,000144: 13,2463 03674 INCORPEX
046735,000145:
046736,000146: # SUBROUTINE TO COMPUTE EARTH RADIUS
046737,000147:
046738,000148: # INPUT
046739,000149: # 1/2 SIN LAT IN ALPHAV +4
046740,000150:
046741,000151: # OUTPUT
046742,000152: # EARTH RADIUS IN ERADM AND MPAC (METERS B-29)
046743,000153:
046744,000154: 13,2464 63545 GETERAD DLOAD DSQ
046745,000155: 13,2465 02036 ALPHAV +4 # SIN**2(L)
046746,000156: 13,2466 44352 SL1 BDSU
046747,000157: 13,2467 24005 DP1/2 # COS**2(L)
046748,000158: 13,2470 44275 DMPR BDSU
046749,000159: 13,2471 26505 EE
046750,000160: 13,2472 24005 DP1/2
046751,000161: 13,2473 75465 BDDV SQRT
046752,000162: 13,2474 26501 B2XSC
046753,000163: 13,2475 77622 SR4R
046754,000164: 13,2476 03673 STORE ERADM
046755,000165: 13,2477 77616 RVQ
046756,000166:
046757,000167: # THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166, B=6356784 METERS
046758,000168: # B2XSC = B**2 SCALED B-51
046759,000169: # B2/A2 = B**2/A**2 SCALED B-1
046760,000170: # EE = (1-B**2/A**2) SCALED B-0
046761,000171:
046762,000172: 13,2500 00446 00305 B2XSC 2DEC .0179450689 # B**2 SCALED B-51
046763,000173: 13,2502 12,2004 DP1/2 = XUNIT
046764,000174: 13,2502 17711 05254 B2/A2 2DEC .9933064884 B-1 # GAMMA= B**2/A**2 B-1
046765,000175: 13,2504 00155 25250 EE 2DEC 6.6935116 E-3 # (1-B**2/A**2) B-0
046766,000176:
046767,000177: # Page 1136
046768,000178: # ARCTAN SUBROUTINE
046769,000179:
046770,000180: # CALLING SEQUENCE
046771,000181: # SIN THETA IN SINTH B-1
046772,000182: # COS THETA IN COSTH B-1
046773,000183: # CALL ARCTAN
046774,000184:
046775,000185: # OUTPUT
046776,000186: # ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2
046777,000187:
046778,000188: 13,2506 77600 ARCTAN BOV
046779,000189: 13,2507 26510 CLROVFLW
046780,000190: 13,2510 63545 CLROVFLW DLOAD DSQ
046781,000191: 13,2511 00023 SINTH
046782,000192: 13,2512 63525 PDDL DSQ
046783,000193: 13,2513 00021 COSTH
046784,000194: 13,2514 77615 DAD
046785,000195: 13,2515 75454 BZE SQRT
046786,000196: 13,2516 26534 ARCTANXX # ATAN=0/0. SET THETA=0
046787,000197: 13,2517 40065 BDDV BOV
046788,000198: 13,2520 00023 SINTH
046789,000199: 13,2521 26541 ATAN=90
046790,000200: 13,2522 67542 SR1 ASIN
046791,000201: 13,2523 00025 STORE THETA
046792,000202: 13,2524 50125 PDDL BMN
046793,000203: 13,2525 00021 COSTH
046794,000204: 13,2526 26530 NEGCOS
046795,000205: 13,2527 43545 DLOAD RVQ
046796,000206: 13,2530 57545 NEGCOS DLOAD DCOMP
046797,000207: 13,2531 43244 BPL DAD
046798,000208: 13,2532 26536 NEGOUT
046799,000209: 13,2533 24005 DP1/2
046800,000210: 13,2534 00025 ARCTANXX STORE THETA
046801,000211: 13,2535 77616 RVQ
046802,000212:
046803,000213: 13,2536 52025 NEGOUT DSU GOTO
046804,000214: 13,2537 24005 DP1/2
046805,000215: 13,2540 26534 ARCTANXX
046806,000216: 13,2541 75345 ATAN=90 DLOAD SIGN
046807,000217: 13,2542 11003 LODP1/4
046808,000218: 13,2543 00023 SINTH
046809,000219: 13,2544 00025 STORE THETA
046810,000220: 13,2545 77616 RVQ
046811,000221:
046812,000222: 13,2546 12,2006 2DZERO = DPZERO
046813,000223:
046814,000224: # Page 1137
046815,000225: # ***** SETGAMMA SUBROUTINE *****
046816,000226: # SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES
046817,000227:
046818,000228: # GAMMA = B**2/A**2 FOR EARTH (B-1)
046819,000229: # GAMMA = 1 FOR MOON (B-1)
046820,000230:
046821,000231: # CALLING SEQUENCE
046822,000232: # L CALL
046823,000233: # L+1 SETGAMMA
046824,000234:
046825,000235: # INPUT
046826,000236: # LUNAFLAG=0 FOR EARTH, =1 FOR MOON
046827,000237:
046828,000238: # OUTPUT
046829,000239: # GAMMA IN GAMRP (B-1)
046830,000240:
046831,000241: 13,2546 43145 SETGAMMA DLOAD BOFF # BRANCH FOR EARTH
046832,000242: 13,2547 26503 B2/A2 # EARTH GAMMA
046833,000243: 13,2550 01743 LUNAFLAG
046834,000244: 13,2551 26554 SETGMEX
046835,000245: 13,2552 77735 SLOAD
046836,000246: 13,2553 24005 1B1 # MOON GAMMA
046837,000247: 13,2554 00011 SETGMEX STORE GAMRP
046838,000248: 13,2555 77616 RVQ
046839,000249: 13,2556 GAMRP = 8D
046840,000250:
046841,000251: # Page 1138
046842,000252: # ***** SETRE SUBROUTINE *****
046843,000253: # SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)
046844,000254:
046845,000255: # RE = RM FOR MOON
046846,000256: # RE = RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID
046847,000257:
046848,000258: # CALLING SEQUENCE
046849,000259: # L CALL
046850,000260: # L+1 SETRE
046851,000261:
046852,000262: # SUBROUTINES USED
046853,000263: # CETERAD
046854,000264:
046855,000265: # INPUT
046856,000266: # ERADFLAG = 0 FOR FIXED RE, 1 FOR COMPUTED RE
046857,000267: # ALPHAV +4 = 1/2 SINL IF GETERAD IS CALLED
046858,000268: # LUNAFLAG = 0 FOR EARTH, =1 FOR MOON
046859,000269:
046860,000270: # OUTPUT
046861,000271: # ERADM = 504RM FOR MOON (METERS B-29)
046862,000272: # ERADM = ERAD OR COMPUTED RE FOR EARTH (METERS B-29)
046863,000273:
046864,000274: 13,2556 71220 SETRE STQ DLOAD
046865,000275: 13,2557 00051 SETREX
046866,000276: 13,2560 10003 504RM
046867,000277: 13,2561 71214 BON DLOAD # BRANCH FOR MOON
046868,000278: 13,2562 01703 LUNAFLAG
046869,000279: 13,2563 26573 TSTRLSRM
046870,000280: 13,2564 10001 ERAD
046871,000281: 13,2565 45014 BOFF CALL # ERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED
046872,000282: 13,2566 00742 ERADFLAG
046873,000283: 13,2567 26571 SETRXX
046874,000284: 13,2570 26464 GETERAD
046875,000285: 13,2571 37673 SETRXX STCALL ERADM # EXIT WITH RE OR RM METERS B-29
046876,000286: 13,2572 00051 SETREX
046877,000287: 13,2573 77214 TSTRLSRM BON VLOAD # ERADFLAG=0, SET R0=RLS
046878,000288: 13,2574 00702 ERADFLAG # =1 40=RM
046879,000289: 13,2575 26571 SETRXX
046880,000290: 13,2576 02023 RLS
046881,000291: 13,2577 64446 ABVAL SR2R # SCALE FROM B-27 TO B-29
046882,000292: 13,2600 77650 GOTO
046883,000293: 13,2601 26571 SETRXX
046884,000294: 13,2602 0000051 SETREX = S2
046885,000295:
046886,000296:
End of include-file LATITUDE_LONGITUDE_SUBROUTINES.agc. Parent file is MAIN.agc