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