Source Code
![]() |
These source-code files were obtained by digitally photographing
an Artemis 72 program listing from a private collection and then
modifying pre-existing Comanche 55 (Apollo 11) source files to
incorporate changes. Note that the page images
presented online are of reduced quality, and that additional images
may be 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 072 OF AGC PROGRAM ARTEMIS BY NASA 2021114-011 11:40 FEB. 26, 1971 THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS COLOSSUS 3 THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER OSR PROJECT 55-23890, SPONSORED BY THE MANNED SPACECRAFT CENTER OF THE NATIONAL AERONAUTICS AND SPACE ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE CHARLES STARK DRAPER LABORATORY, MASSACHUSETTS INSTITUTE OF TECHNOLOGY, CAMBRIDGE, MASS. |
052654,000002: # Copyright: Public domain.
052655,000003: # Filename: LATITUDE_LONGITUDE_SUBROUTINES.agc
052656,000004: # Purpose: Part of the source code for Artemis (i.e., Colossus 3),
052657,000005: # build 072. This is for the Command Module's (CM)
052658,000006: # Apollo Guidance Computer (AGC), we believe for
052659,000007: # Apollo 15-17.
052660,000008: # Assembler: yaYUL
052661,000009: # Contact: Sergio Navarro <sergionavarrog@gmail.com>
052662,000010: # Website: www.ibiblio.org/apollo/index.html
052663,000011: # Page scans: www.ibiblio.org/apollo/ScansForConversion/Artemis072/
052664,000012: # Mod history: 2009-09-03 SN Adapted from corresponding Comanche 055 file.
052665,000013: # 2009-09-04 JL Fixed typos.
052666,000014: # 2010-02-20 RSB Un-##'d this header.
052667,000015: # 2010-04-13 JL Fixed a typo (' instead of #).
052668,000016: # 2010-08-15 JL Fixed indentation.
052669,000017:
052670,000018: # # Page 1236
052671,000019: # SUBROUTINE TO CONVERT RAD VECTOR AT GIVEN TIME TO LAT,LONG AND ALT
052672,000020:
052673,000021: # CALLING SEQUENCE
052674,000022:
052675,000023: # L-1 CALL
052676,000024: # L LAT-LONG
052677,000025:
052678,000026: # SUBROUTINES USED
052679,000027:
052680,000028: # R-TO-RP, ARCTAN, SETGAMMA, SETRE
052681,000029:
052682,000030: # ERASABLE INIT. REQ.
052683,000031:
052684,000032: # AXO, -AYO, AZO, TEPHEM (SET AT LAUNCH TIME)
052685,000033: # ALPHAV = POSITION VECTOR METERS B-29
052686,000034: # MPAC -- TIME (CSECS B-28)
052687,000035: # ERADFLAG =1, TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
052688,000036: # LUNAFLAG=0 FOR EARTH, 1 FOR MOON
052689,000037:
052690,000038: # OUTPUT
052691,000039:
052692,000040: # LATITUDE IN LAT (REVS. B-0)
052693,000041: # LONGITUDE IN LONG (REVS. B-0)
052694,000042: # ALTITUDE IN ALT METERS B-29
052695,000043:
052696,000044: 13,2000 SETLOC LATLONG
052697,000045: 13,2000 BANK
052698,000046:
052699,000047: 13,2453 COUNT* $$/LT-LG
052700,000048: 13,2453 E4,1551 EBANK= ALPHAV
052701,000049: 13,2453 40220 LAT-LONG STQ SETPD
052702,000050: 13,2454 02241 INCORPEX
052703,000051: 13,2455 00001 0D
052704,000052: 13,2456 24007 STOVL 6D # SAVE TIME IN 6-7D FOR R-TO-RP
052705,000053: 13,2457 02152 ALPHAV
052706,000054: 13,2460 51406 PUSH ABVAL # 0-5D= R FOR R-TO-RP
052707,000055: 13,2461 16301 STODL ALPHAM # ABS. VALUE OF R FOR ALT FORMULA BELOW
052708,000056: 13,2462 11762 ZEROVEC # SET MPAC=0 FOR EARTH, NON-ZERO FOR MOON
052709,000057: 13,2463 71414 BOFF COS # USE COS(0) TO GET NON-ZERO IN MPAC
052710,000058: 13,2464 01743 LUNAFLAG # 0=EARTH,1=MOON
052711,000059: 13,2465 26466 CALLRTRP
052712,000060: 13,2466 77624 CALLRTRP CALL
052713,000061: 13,2467 55370 R-TO-RP # RP VECTOR CONVERTED FROM R B-29
052714,000062: 13,2470 77656 UNIT # UNIT RP B-1
052715,000063: 13,2471 36152 STCALL ALPHAV # U2= 1/2 SINL FOR SETRE SUBR BELOW
052716,000064: 13,2472 35766 SETGAMMA # SET GAMMA=B2/A2 FOR EARTH, =1 FOR MOON
052717,000065: 13,2473 77624 CALL # SCALED B-1.
052718,000066: 13,2474 26654 SETRE # CALC RE METERS B-29
052719,000067: 13,2475 63545 DLOAD DSQ
052720,000068: 13,2476 02152 ALPHAV
052721,000069: 13,2477 63525 PDDL DSQ
052722,000070: 13,2500 02154 ALPHAV +2
052723,000071: 13,2501 75415 DAD SQRT
052724,000072: 13,2502 76405 DMP SL1R
052725,000073: # # Page 1237
052726,000074: 13,2503 00011 GAMRP
052727,000075: 13,2504 14021 STODL COSTH # COS(LAT) B-1
052728,000076: 13,2505 02156 ALPHAV +4
052729,000077: 13,2506 34023 STCALL SINTH # SIN(LAT) B-1
052730,000078: 13,2507 26614 ARCTAN
052731,000079: 13,2510 14747 STODL LAT # LAT B0
052732,000080: 13,2511 02152 ALPHAV
052733,000081: 13,2512 14021 STODL COSTH # COS(LONG) B-1
052734,000082: 13,2513 02154 ALPHAV +2
052735,000083: 13,2514 34023 STCALL SINTH # SIN(LONG) B-1
052736,000084: 13,2515 26614 ARCTAN
052737,000085: 13,2516 14751 STODL LONG # LONG. REVS B-0 IN RANGE -1/2 TO 1/2
052738,000086: 13,2517 02301 ALPHAM
052739,000087: 13,2520 77625 DSU # ALT= R-RE METERS B-29
052740,000088: 13,2521 02240 ERADM
052741,000089: 13,2522 34753 STCALL ALT # EXIT WITH ALT METERS B-29
052742,000090: 13,2523 02241 INCORPEX
052743,000091:
052744,000092: # # Page 1238
052745,000093: # SUBROUTINE TO CONVERT LAT,LONG.ALT AT GIVEN TIME TO RADIUS VECTOR
052746,000094:
052747,000095: # CALLING SEQUENCE
052748,000096:
052749,000097: # L-1 CALL
052750,000098: # L LALOTORV
052751,000099:
052752,000100: # SUBROUTINES USED
052753,000101:
052754,000102: # SETGAMMA, SETRE, RP-TO-R
052755,000103:
052756,000104: # ERASABLE INIT. REQ.
052757,000105:
052758,000106: # AXO, AYO, AZO, TEPHEM SET AT LAUNCH TIME
052759,000107: # LAT -- LATITUDE (REVS B0)
052760,000108: # LONG -- LONGITUDE (REVS B0)
052761,000109: # ALT -- ALTITUDE (METERS) B-29
052762,000110: # MPAC -- TIME (CSECS B-28)
052763,000111: # ERADFLAG =1 TO COMPUTE EARTH RADIUS, =0 FOR FIXED EARTH RADIUS
052764,000112: # LUNAFLAG=0 FOR EARTH, 1 FOR MOON
052765,000113:
052766,000114: # OUTPUT
052767,000115:
052768,000116: # R-VECTOR IN ALPHAV (METERS B-29)
052769,000117:
052770,000118: 13,2524 40220 LALOTORV STQ SETPD # LAT,LONG,ALT TO R VECTOR
052771,000119: 13,2525 02241 INCORPEX
052772,000120: 13,2526 00001 0D
052773,000121: 13,2527 34007 STCALL 6D # 6-7D = TIME FOR RP-TO-R
052774,000122: 13,2530 35766 SETGAMMA # GAMMA = B2/A2 FOR EARTH, 1 FOR MOON B-1
052775,000123: 13,2531 73545 DLOAD SIN # COS(LONG)COS(LAT) IN MPAC
052776,000124: 13,2532 00747 LAT # UNIT RP = SIN(LONG)COS(LAT) 2-3D
052777,000125: 13,2533 65275 DMPR PDDL # PD 2 GAMMA*SIN(LAT) 0-1D
052778,000126: 13,2534 00011 GAMRP
052779,000127: 13,2535 00747 LAT # 0-1D = GAMMA*SIN(LAT) B-2
052780,000128: 13,2536 65346 COS PDDL # PD4 2-3D = COS(LAT) B-1 TEMPORARILY
052781,000129: 13,2537 00751 LONG
052782,000130: 13,2540 57356 SIN DMPR # PD 2
052783,000131: 13,2541 71525 PDDL COS # PD 4 2-3D = SIN(LONG)COS(LAT) B-2
052784,000132: 13,2542 00747 LAT
052785,000133: 13,2543 71525 PDDL COS # PD 6 4-5D = COS(LAT) B-1 TEMPORARILY
052786,000134: 13,2544 00751 LONG
052787,000135: 13,2545 55475 DMPR VDEF # PD4 MPAC = COS(LONG)COS(LAT) B-2
052788,000136: 13,2546 41456 UNIT PUSH # 0-5D = UNIT RP FOR RP-TO-R SUBR.
052789,000137: 13,2547 36152 STCALL ALPHAV # ALPHAV +4= SINL FOR SETRE SUBR.
052790,000138: 13,2550 26654 SETRE # RE METERS B-29
052791,000139: 13,2551 43145 DLOAD BOFF # SET MPAC = 0 FOR EARTH, NON-ZERO FOR MOON
052792,000140: 13,2552 11762 ZEROVEC
052793,000141: 13,2553 01743 LUNAFLAG
052794,000142: 13,2554 26556 CALLRPRT
052795,000143: 13,2555 77746 COS # USE COS(0) TO GET NON-ZERO IN MPAC
052796,000144: 13,2556 77624 CALLRPRT CALL
052797,000145: 13,2557 55345 RP-TO-R # EXIT WITH UNIT R VECTOR IN MPAC
052798,000146: 13,2560 16152 STODL ALPHAV
052799,000147: 13,2561 02240 ERADM
052800,000148: # # Page 1239
052801,000149: 13,2562 74215 DAD VXSC # (RE + ALT)(UNIT R) METERS B-30
052802,000150: 13,2563 00753 ALT
052803,000151: 13,2564 02152 ALPHAV
052804,000152: 13,2565 77772 VSL1 # R METERS B-29
052805,000153: 13,2566 36152 STCALL ALPHAV # EXIT WITH R IN METERS B-29
052806,000154: 13,2567 02241 INCORPEX
052807,000155:
052808,000156: # SUBROUTINE TO COMPUTE EARTH RADIUS
052809,000157:
052810,000158: # INPUT
052811,000159:
052812,000160: # 1/2 SIN LAT IN ALPHAV +4
052813,000161:
052814,000162: # OUTPUT
052815,000163:
052816,000164: # EARTH RADIUS IN ERADM AND MPAC (METERS B-29)
052817,000165:
052818,000166: 13,2570 63545 GETERAD DLOAD DSQ
052819,000167: 13,2571 02156 ALPHAV +4 # SIN**2(L)
052820,000168: 13,2572 44352 SL1 BDSU
052821,000169: 13,2573 11760 DP1/2 # COS**2(L)
052822,000170: 13,2574 44275 DMPR BDSU
052823,000171: 13,2575 26611 EE
052824,000172: 13,2576 11760 DP1/2
052825,000173: 13,2577 75465 BDDV SQRT
052826,000174: 13,2600 26605 B2XSC
052827,000175: 13,2601 77622 SR4R
052828,000176: 13,2602 02240 STORE ERADM
052829,000177: 13,2603 77616 RVQ
052830,000178:
052831,000179: # THE FOLLOWING CONSTANTS WERE COMPUTED WITH A=6378166, B=6356784 METERS
052832,000180: # B2XSC = B**2 SCALED B-51
052833,000181: # B2/A2 = B**2/A**2 SCALED B-1
052834,000182: # EE = (1-B**2/A**2) SCALED B-0
052835,000183:
052836,000184: 13,2604 00446 00305 B2XSC 2DEC .0179450689 # B**2 SCALED B-51
052837,000185: 13,2606 04,3757 DP1/2 = XUNIT
052838,000186: 13,2606 17711 05254 B2/A2 2DEC .9933064884 B-1 # GAMMA= B**2/A**2 B-1
052839,000187: 13,2610 00155 25250 EE 2DEC 6.6935116 E-3 # (1-B**2/A**2) B-0
052840,000188: 13,2612 00302 17755 ERAD 2DEC 6373338 B-29 # PAD RADIUS
052841,000189:
052842,000190: # # Page 1240
052843,000191: # ARCTAN SUBROUTINE
052844,000192:
052845,000193: # CALLING SEQUENCE
052846,000194:
052847,000195: # SIN THETA IN SINTH B-1
052848,000196: # COS THETA IN COSTH B-1
052849,000197: # CALL ARCTAN
052850,000198:
052851,000199: # OUTPUT
052852,000200: # ARCTAN THETA IN MPAC AND THETA B-0 IN RANGE -1/2 TO +1/2
052853,000201:
052854,000202: 13,2614 77600 ARCTAN BOV
052855,000203: 13,2615 26616 CLROVFLW
052856,000204: 13,2616 63545 CLROVFLW DLOAD DSQ
052857,000205: 13,2617 00023 SINTH
052858,000206: 13,2620 63525 PDDL DSQ
052859,000207: 13,2621 00021 COSTH
052860,000208: 13,2622 77615 DAD
052861,000209: 13,2623 75454 BZE SQRT
052862,000210: 13,2624 26642 ARCTANXX # ATAN=0/0 SET THETA=0
052863,000211: 13,2625 40065 BDDV BOV
052864,000212: 13,2626 00023 SINTH
052865,000213: 13,2627 26647 ATAN=90
052866,000214: 13,2630 67542 SR1 ASIN
052867,000215: 13,2631 00025 STORE THETA
052868,000216: 13,2632 50125 PDDL BMN
052869,000217: 13,2633 00021 COSTH
052870,000218: 13,2634 26636 NEGCOS
052871,000219: 13,2635 43545 DLOAD RVQ
052872,000220: 13,2636 57545 NEGCOS DLOAD DCOMP
052873,000221: 13,2637 43244 BPL DAD
052874,000222: 13,2640 26644 NEGOUT
052875,000223: 13,2641 11760 DP1/2
052876,000224: 13,2642 00025 ARCTANXX STORE THETA
052877,000225: 13,2643 77616 RVQ
052878,000226:
052879,000227: 13,2644 52025 NEGOUT DSU GOTO
052880,000228: 13,2645 11760 DP1/2
052881,000229: 13,2646 26642 ARCTANXX
052882,000230: 13,2647 75345 ATAN=90 DLOAD SIGN
052883,000231: 13,2650 33412 LODP1/4
052884,000232: 13,2651 00023 SINTH
052885,000233: 13,2652 00025 STORE THETA
052886,000234: 13,2653 77616 RVQ
052887,000235:
052888,000236: 13,2654 04,3761 2DZERO = DPZERO
052889,000237:
052890,000238: # # Page 1241
052891,000239: # ..... SETGAMMA SUBROUTINE .....
052892,000240: # SUBROUTINE TO SET GAMMA FOR THE LAT-LONG AND LALOTORV SUBROUTINES
052893,000241:
052894,000242: # GAMMA = B**2/A**2 FOR EARTH (B-1)
052895,000243: # GAMMA = 1 FOR MOON (B-1)
052896,000244:
052897,000245: # CALLING SEQUENCE
052898,000246: # L CALL
052899,000247: # L+1 SETGAMMA
052900,000248:
052901,000249: # INPUT
052902,000250: # LUNAFLAG=0 FOR EARTH, =1 FOR MOON
052903,000251:
052904,000252: # OUTPUT
052905,000253: # GAMMA IN GAMRP (B-1)
052906,000254:
052907,000255: 16,2000 SETLOC LATLONG1
052908,000256: 16,2000 BANK
052909,000257: 16,3766 COUNT* $$/LT-LG
052910,000258:
052911,000259: 16,3766 43145 SETGAMMA DLOAD BOFF # BRANCH FOR EARTH
052912,000260: 16,3767 26607 B2/A2 # EARTH GAMMA
052913,000261: 16,3770 01743 LUNAFLAG
052914,000262: 16,3771 35774 SETGMEX
052915,000263: 16,3772 77735 SLOAD
052916,000264: 16,3773 11760 1B1 # MOON GAMMA
052917,000265: 16,3774 00011 SETGMEX STORE GAMRP
052918,000266: 16,3775 77616 RVQ
052919,000267: 16,3776 GAMRP = 8D
052920,000268: 13,2000 SETLOC LATLONG
052921,000269: 13,2000 BANK
052922,000270:
052923,000271: # # Page 1242
052924,000272: # ..... SETRE SUBROUTINE .....
052925,000273: # SUBROUTINE TO SET RE (EARTH OR MOON RADIUS)
052926,000274:
052927,000275: # RE = RM FOR MOON
052928,000276: # RE = RREF FOR FIXED EARTH RADIUS OR COMPUTED RF FOR FISCHER ELLIPSOID
052929,000277:
052930,000278: # CALLING SEQUENCE
052931,000279: # L CALL
052932,000280: # L+1 SETRE
052933,000281:
052934,000282: # SUBROUTINES USED
052935,000283: # GETERAD
052936,000284:
052937,000285: # INPUT
052938,000286: # ERADFLAG = 0 FOR FIXED RE, 1 FOR COMPUTED RE
052939,000287: # ALPHAV +4 = 1/2 SINL IF GETERAD IS CALLED
052940,000288: # LUNAFLAG = 0 FOR EARTH, =1 FOR MOON
052941,000289:
052942,000290: # OUTPUT
052943,000291: # ERADM = 504RM FOR MOON (METERS B-29)
052944,000292: # ERADM = ERAD OR COMPUTED RE FOR EARTH (METERS B-29)
052945,000293:
052946,000294: 13,2654 71220 SETRE STQ DLOAD
052947,000295: 13,2655 00051 SETREX
052948,000296: 13,2656 26701 504RM
052949,000297: 13,2657 71214 BON DLOAD # BRANCH FOR MOON
052950,000298: 13,2660 01703 LUNAFLAG
052951,000299: 13,2661 26671 TSTRLSRM
052952,000300: 13,2662 26613 ERAD
052953,000301: 13,2663 45014 BOFF CALL # ERADFLAG=0 FOR FIXED RE, 1 FOR COMPUTED
052954,000302: 13,2664 00742 ERADFLAG
052955,000303: 13,2665 26667 SETRXX
052956,000304: 13,2666 26570 GETERAD
052957,000305: 13,2667 36240 SETRXX STCALL ERADM # EXIT WITH RE OR RM METERS B-29
052958,000306: 13,2670 00051 SETREX
052959,000307: 13,2671 77214 TSTRLSRM BON VLOAD # ERADFLAG=0, SET R0=RLS
052960,000308: 13,2672 00702 ERADFLAG # =1 R0=RM
052961,000309: 13,2673 26667 SETRXX
052962,000310: 13,2674 02026 RLS
052963,000311: 13,2675 64446 ABVAL SR2R # SCALE FROM B-27 TO B-29
052964,000312: 13,2676 77650 GOTO
052965,000313: 13,2677 26667 SETRXX
052966,000314: 13,2700 0000051 SETREX = S2
052967,000315: 13,2700 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