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