Source Code
013344,000001: # Copyright: Public domain.
013345,000002: # Filename: LEM_GEOMETRY.agc
013346,000003: # Purpose: Part of the source code for Luminary 1A build 099.
013347,000004: # It is part of the source code for the Lunar Module's (LM)
013348,000005: # Apollo Guidance Computer (AGC), for Apollo 11.
013349,000006: # Assembler: yaYUL
013350,000007: # Contact: Ron Burkey <info@sandroid.org>.
013351,000008: # Website: www.ibiblio.org/apollo.
013352,000009: # Pages: 320-325
013353,000010: # Mod history: 2009-05-16 RSB Adapted from the corresponding
013354,000011: # Luminary131 file, using page
013355,000012: # images from Luminary 1A.
013356,000013:
013357,000014: # This source code has been transcribed or otherwise adapted from
013358,000015: # digitized images of a hardcopy from the MIT Museum. The digitization
013359,000016: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of
013360,000017: # the Museum. Many thanks to both. The images (with suitable reduction
013361,000018: # in storage size and consequent reduction in image quality as well) are
013362,000019: # available online at www.ibiblio.org/apollo. If for some reason you
013363,000020: # find that the images are illegible, contact me at info@sandroid.org
013364,000021: # about getting access to the (much) higher-quality images which Paul
013365,000022: # actually created.
013366,000023:
013367,000024: # Notations on the hardcopy document read, in part:
013368,000025:
013369,000026: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
013370,000027: # 16:27 JULY 14, 1969
013371,000028:
013372,000029: # Page 320
013373,000030: 23,2041 BANK 23
013374,000031: 13,2000 SETLOC LEMGEOM
013375,000032: 13,2000 BANK
013376,000033:
013377,000034: 13,2070 30,2000 SBANK= LOWSUPER
013378,000035: 13,2070 E5,1642 EBANK= XSM
013379,000036:
013380,000037: # THESE TWO ROUTINES COMPUTE THE ACTUAL STATE VECTOR FOR LM,CSM BY ADDING
013381,000038: # THE CONIC R,V AND THE DEVIATIONS R,V. THE STATE VECTORS ARE CONVERTED TO
013382,000039: # METERS B-29 AND METERS/CSEC B-7 AND STORED APPROPIRATELY IN RN,VN OR
013383,000040: # R-OTHER,V-OTHER FOR DOWNLINK. THE ROUTINES' NAMES ARE SWITCHED IN THE
013384,000041: # OTHER VEHICLE'S COMPUTER.
013385,000042:
013386,000043: # INPUT
013387,000044: # STATE VECTOR IN TEMPORARY STORAGE AREA
013388,000045: # IF STATE VECTOR IS SCALED POS B27 AND VEL B5
013389,000046: # SET X2 TO +2
013390,000047: # IF STATE VECTOR IS SCALED POS B29 AND VEL B7
013391,000048: # SET X2 TO 0
013392,000049:
013393,000050: # OUTPUT
013394,000051: # R(T) IN RN, V(T) IN VN, T IN PIPTIME
013395,000052: # OR
013396,000053: # R(T) IN R-OTHER, V(T) IN V-OTHER (T IS DEFINED BY T-OTHER)
013397,000054:
013398,000055: 13,2070 COUNT* $$/GEOM
013399,000056: 13,2070 43414 SVDWN2 BOF RVQ # SW=1=AVETOMID DOING W-MATRIX INTEG.
013400,000057: 13,2071 04756 AVEMIDSW
013401,000058: 13,2072 26073 +1
013402,000059: 13,2073 53775 VLOAD VSL*
013403,000060: 13,2074 01521 TDELTAV
013404,000061: 13,2075 57605 0 -7,2
013405,000062: 13,2076 53655 VAD VSL*
013406,000063: 13,2077 01535 RCV
013407,000064: 13,2100 57576 0,2
013408,000065: 13,2101 25221 STOVL RN
013409,000066: 13,2102 01527 TNUV
013410,000067: 13,2103 53257 VSL* VAD
013411,000068: 13,2104 57602 0 -4,2
013412,000069: 13,2105 01543 VCV
013413,000070: 13,2106 77657 VSL*
013414,000071: 13,2107 57576 0,2
013415,000072: 13,2110 15227 STODL VN
013416,000073: 13,2111 01517 TET
013417,000074: 13,2112 01235 STORE PIPTIME
013418,000075: 13,2113 77616 RVQ
013419,000076: # Page 321
013420,000077: 13,2114 53775 SVDWN1 VLOAD VSL*
013421,000078: 13,2115 01521 TDELTAV
013422,000079: 13,2116 57605 0 -7,2
013423,000080: 13,2117 53655 VAD VSL*
013424,000081: 13,2120 01535 RCV
013425,000082: 13,2121 57576 0,2
013426,000083: 13,2122 25720 STOVL R-OTHER
013427,000084: 13,2123 01527 TNUV
013428,000085: 13,2124 53257 VSL* VAD
013429,000086: 13,2125 57602 0 -4,2
013430,000087: 13,2126 01543 VCV
013431,000088: 13,2127 77657 VSL*
013432,000089: 13,2130 57576 0,2
013433,000090: 13,2131 01726 STORE V-OTHER
013434,000091: 13,2132 77616 RVQ
013435,000092:
013436,000093: # Page 322
013437,000094: # THE FOLLOWING ROUTINE TAKES A HALF UNIT TARGET VECTOR REFERRED TO NAV BASE COORDINATES AND FINDS BOTH
013438,000095: # GIMBAL ORIENTATIONS AT WHICH THE RR MIGHT SIGHT THE TARGET. THE GIMBAL ANGLES CORRESPONDING TO THE PRESENT MODE
013439,000096: # ARE LEFT IN MODEA AND THOSE WHICH WOULD BE USED AFTER A REMODE IN MODEB. THIS ROUTINE ASSUMES MODE 1 IS TRUNNION
013440,000097: # ANGLE LESS THAN 90 DEGS IN ABS VALUE WITH ARBITRARY SHAFT, WITH A CORRESPONDING DEFINITION FOR MODE 2. MODE
013441,000098: # SELECTION AND LIMIT CHECKING ARE DONE ELSEWHERE.
013442,000099:
013443,000100: # THE MODE 1 CONFIGURATION IS CALCULATED FROM THE VECTOR AND THEN MODE 2 IS FOUND USING THE RELATIONS
013444,000101:
013445,000102: # S(2) = 180 + S(1)
013446,000103: # T(2) = 180 - T(1)
013447,000104:
013448,000105: # THE VECTOR ARRIVES IN MPAC WHERE TRG*SMNG OR *SMNB* WILL HAVE LEFT IT.
013449,000106:
013450,000107: 13,2133 00041 RRANGLES STORE 32D
013451,000108: 13,2134 57545 DLOAD DCOMP # SINCE WE WILL FIND THE MODE 1 SHAFT
013452,000109: 13,2135 00043 34D # ANGLE LATER, WE CAN FIND THE MODE 1
013453,000110: 13,2136 67401 SETPD ASIN # TRUNNION BY SIMPLY TAKING THE ARCSIN OF
013454,000111: 13,2137 00001 0 # THE Y COMPONENT, THE ASIN GIVIN AN
013455,000112: 13,2140 44206 PUSH BDSU # ANSWER WHOSE ABS VAL IS LESS THAN 90 DEG.
013456,000113: 13,2141 24005 LODPHALF
013457,000114: 13,2142 14005 STODL 4 # MODE 2 TRUNNION TO 4.
013458,000115:
013459,000116: 13,2143 24007 LO6ZEROS
013460,000117: 13,2144 24043 STOVL 34D # UNIT THE PROJECTION OF THE VECTOR
013461,000118: 13,2145 00041 32D # IN THE X-Z PLANE
013462,000119: 13,2146 41056 UNIT BOVB # IF OVERFLOW, TARGET VECTOR IS ALONG Y
013463,000120: 13,2147 52421 LUNDESCH # CALL FOR MANEUVER UNLESS ON LUNAR SURF
013464,000121: 13,2150 14041 STODL 32D # PROJECTION VECTOR.
013465,000122: 13,2151 00041 32D
013466,000123: 13,2152 44142 SR1 STQ
013467,000124: 13,2153 00051 S2
013468,000125: 13,2154 14023 STODL SINTH # USE ARCTRIG SINCE SHAFT COULD BE ARB.
013469,000126: 13,2155 00045 36D
013470,000127: 13,2156 77742 SR1
013471,000128: 13,2157 34021 STCALL COSTH
013472,000129: 13,2160 47320 ARCTRIG
013473,000130: # Page 323
013474,000131: 13,2161 43206 PUSH DAD # MODE 1 SHAFT TO 2.
013475,000132: 13,2162 24005 LODPHALF
013476,000133: 13,2163 24007 STOVL 6
013477,000134: 13,2164 00005 4
013478,000135: 13,2165 77634 RTB # FIND MODE 2 CDU ANGLES.
013479,000136: 13,2166 21635 2V1STO2S
013480,000137: 13,2167 25112 STOVL MODEB
013481,000138: 13,2170 00001 0
013482,000139: 13,2171 77634 RTB # MODE 1 ANGLES TO MODE A.
013483,000140: 13,2172 21635 2V1STO2S
013484,000141: 13,2173 01110 STORE MODEA
013485,000142: 13,2174 77776 EXIT
013486,000143:
013487,000144: 13,2175 40110 CS RADMODES # SWAP MODEA AND MODEB IF RR IN MODE 2.
013488,000145: 13,2176 74740 MASK ANTENBIT
013489,000146: 13,2177 10000 CCS A
013490,000147: 13,2200 12204 TCF +4
013491,000148:
013492,000149: 13,2201 53110 DXCH MODEA
013493,000150: 13,2202 53112 DXCH MODEB
013494,000151: 13,2203 53110 DXCH MODEA
013495,000152:
013496,000153: 13,2204 06037 TC INTPRET
013497,000154: 13,2205 77650 GOTO
013498,000155: 13,2206 00051 S2
013499,000156: # Page 324
013500,000157: # GIVEN RR TRUNNION AND SHAFT (T,S) IN TANGNB,+1, FIND THE ASSOCIATED
013501,000158: # LINE OF SIGHT IN NAV BASE AXES. THE HALF UNIT VECTOR, .5(SIN(S)COS(T),
013502,000159: # -SIN(T),COS(S)COS(T)) IS LEFT IN MPAC AND 32D.
013503,000160:
013504,000161: 23,2000 SETLOC INFLIGHT
013505,000162: 23,2000 BANK
013506,000163:
013507,000164: 23,2041 COUNT* $$/GEOM
013508,000165:
013509,000166: 23,2041 47135 RRNB SLOAD RTB
013510,000167: 23,2042 03753 TANGNB
013511,000168: 23,2043 21576 CDULOGIC
013512,000169: 23,2044 41401 SETPD PUSH # TRUNNION ANGLE TO 0
013513,000170: 23,2045 00001 0
013514,000171: 23,2046 57556 SIN DCOMP
013515,000172: 23,2047 14043 STODL 34D # Y COMPONENT
013516,000173:
013517,000174: 23,2050 41546 COS PUSH # .5 COS(T) TO 0
013518,000175: 23,2051 47135 SLOAD RTB
013519,000176: 23,2052 03754 TANGNB +1
013520,000177: 23,2053 21576 CDULOGIC
013521,000178: 23,2054 71406 RRNB1 PUSH COS # SHAFT ANGLE TO 2
013522,000179: 23,2055 72405 DMP SL1
013523,000180: 23,2056 00001 0
013524,000181: 23,2057 14045 STODL 36D # Z COMPONENT
013525,000182:
013526,000183: 23,2060 41356 SIN DMP
013527,000184: 23,2061 77752 SL1
013528,000185: 23,2062 24041 STOVL 32D
013529,000186: 23,2063 00041 32D
013530,000187: 23,2064 77616 RVQ
013531,000188:
013532,000189: # THIS ENTRY TO RRNB REQUIRES THE TRUNNION AND SHAFT ANGLES IN MPAC AND MPAC +1 RESPECTIVELY
013533,000190:
013534,000191: 23,2065 14025 RRNBMPAC STODL 20D # SAVE SHAFT CDU IN 21.
013535,000192: 23,2066 00155 MPAC # SET MODE TO DP. (THE PRECEEDING STORE
013536,000193: # MAY BE DP, TP OR VECTOR.)
013537,000194: 23,2067 40234 RTB SETPD
013538,000195: 23,2070 21576 CDULOGIC
013539,000196: 23,2071 00001 0
013540,000197: 23,2072 73406 PUSH SIN # TRUNNION ANGLE TO 0
013541,000198: 23,2073 77676 DCOMP
013542,000199: 23,2074 14043 STODL 34D # Y COMPONENT
013543,000200: 23,2075 41546 COS PUSH # .5COS(T) TO 0
013544,000201: 23,2076 47135 SLOAD RTB # PICK UP CDU'S.
013545,000202: 23,2077 00026 21D
013546,000203: 23,2100 21576 CDULOGIC
013547,000204: 23,2101 77650 GOTO
013548,000205: 23,2102 46054 RRNB1
013549,000206: # Page 325
013550,000207: # (This page has nothing on it.)
013551,000208:
013552,000209:
End of include-file LEM_GEOMETRY.agc. Parent file is MAIN.agc