Source Code

017319,000001: # Copyright: Public domain. 017320,000002: # Filename: ANGLFIND.agc 017321,000003: # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. 017322,000004: # It is part of the source code for the Command Module's (CM) 017323,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 017324,000006: # Assembler: yaYUL 017325,000007: # Contact: Ron Burkey <info@sandroid.org>. 017326,000008: # Website: www.ibiblio.org/apollo. 017327,000009: # Pages: 399-411 017328,000010: # Mod history: 2009-05-09 RSB Adapted from the Colossus249/ file 017329,000011: # of the same name, using Comanche055 page 017330,000012: # images. 017331,000013: # 2009-05-22 RSB In NOGOM2, TC ZEROEROR corrected to 017332,000014: # CADR ZEROEROR. 017333,000015: 017334,000016: # This source code has been transcribed or otherwise adapted from digitized 017335,000017: # images of a hardcopy from the MIT Museum. The digitization was performed 017336,000018: # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many 017337,000019: # thanks to both. The images (with suitable reduction in storage size and 017338,000020: # consequent reduction in image quality as well) are available online at 017339,000021: # www.ibiblio.org/apollo. If for some reason you find that the images are 017340,000022: # illegible, contact me at info@sandroid.org about getting access to the 017341,000023: # (much) higher-quality images which Paul actually created. 017342,000024: 017343,000025: # Notations on the hardcopy document read, in part: 017344,000026: 017345,000027: # Assemble revision 055 of AGC program Comanche by NASA 017346,000028: # 2021113-051. 10:28 APR. 1, 1969 017347,000029: 017348,000030: # This AGC program shall also be referred to as 017349,000031: # Colossus 2A 017350,000032: 017351,000033: # Page 399 017352,000034: 15,2000 BANK 15 017353,000035: 22,2000 SETLOC KALCMON1 017354,000036: 22,2000 BANK 017355,000037: 017356,000038: 22,2000 E6,1661 EBANK= BCDU 017357,000039: 017358,000040: 22,2000 COUNT 22/KALC 017359,000041: 017360,000042: 22,2000 06006 KALCMAN3 TC INTPRET 017361,000043: 22,2001 77634 RTB 017362,000044: 22,2002 44376 READCDUK # PICK UP CURRENT CDU ANGLES 017363,000045: 22,2003 03262 STORE BCDU # STORE THE INITIAL S/C ANGLES 017364,000046: 22,2004 72364 AXC,2 TLOAD # COMPUTE THE TRANSFORMATION FROM 017365,000047: 22,2005 03320 MIS # INITIAL S/C AXES TO STABLE MEMBER AXES 017366,000048: 22,2006 03262 BCDU # (MIS) 017367,000049: 22,2007 77624 CALL 017368,000050: 22,2010 44405 CDUTODCM 017369,000051: 22,2011 72364 AXC,2 TLOAD # COMPUTE THE TRANSFORMATION FROM 017370,000052: 22,2012 03425 MFS # FINAL S/C AXES TO STABLE MEMBER AXES 017371,000053: 22,2013 01156 CPHI # (MFS) 017372,000054: 22,2014 77624 CALL 017373,000055: 22,2015 44405 CDUTODCM 017374,000056: 22,2016 45160 SECAD AXC,1 CALL # MIS AND MFS ARRAYS CALCULATED $2 017375,000057: 22,2017 03320 MIS 017376,000058: 22,2020 44334 TRANSPOS 017377,000059: 22,2021 77775 VLOAD 017378,000060: 22,2022 77626 STADR 017379,000061: 22,2023 50474 STOVL TMIS +12D 017380,000062: 22,2024 77626 STADR 017381,000063: 22,2025 50502 STOVL TMIS +6 017382,000064: 22,2026 77626 STADR 017383,000065: 22,2027 74510 STORE TMIS # TMIS = TRANSPOSE(MIS) SCALED BY 2 017384,000066: 22,2030 75160 AXC,1 AXC,2 017385,000067: 22,2031 03266 TMIS 017386,000068: 22,2032 03425 MFS 017387,000069: 22,2033 77624 CALL 017388,000070: 22,2034 44304 MXM3 017389,000071: 22,2035 45575 VLOAD STADR 017390,000072: 22,2036 50335 STOVL MFI +12D 017391,000073: 22,2037 77626 STADR 017392,000074: 22,2040 50343 STOVL MFI +6 017393,000075: 22,2041 77626 STADR 017394,000076: 22,2042 74351 STORE MFI # MFI = TMIS MFS (SCALED BY 4) 017395,000077: 22,2043 45001 SETPD CALL # TRANSPOSE MFI IN PD LIST 017396,000078: 22,2044 00023 18D 017397,000079: 22,2045 44343 TRNSPSPD 017398,000080: 22,2046 45575 VLOAD STADR 017399,000081: 22,2047 50474 STOVL TMFI +12D 017400,000082: 22,2050 77626 STADR 017401,000083: 22,2051 50502 STOVL TMFI +6 017402,000084: # Page 400 017403,000085: 22,2052 77626 STADR 017404,000086: 22,2053 74510 STORE TMFI # TMFI = TRANSPOSE (MFI) SCALED BY 4 017405,000087: 017406,000088: # CALCULATE COFSKEW AND MFISYM 017407,000089: 017408,000090: 22,2054 45345 DLOAD DSU 017409,000091: 22,2055 03271 TMFI +2 017410,000092: 22,2056 03430 MFI +2 017411,000093: 22,2057 45325 PDDL DSU # CALCULATE COF SCALED BY 2/SIN(AM) 017412,000094: 22,2060 03432 MFI +4 017413,000095: 22,2061 03273 TMFI +4 017414,000096: 22,2062 45325 PDDL DSU 017415,000097: 22,2063 03301 TMFI +10D 017416,000098: 22,2064 03440 MFI +10D 017417,000099: 22,2065 77666 VDEF 017418,000100: 22,2066 03311 STORE COFSKEW # EQUALS MFISKEW 017419,000101: 017420,000102: # CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE 017421,000103: 017422,000104: 22,2067 43345 DLOAD DAD 017423,000105: 22,2070 03426 MFI 017424,000106: 22,2071 03446 MFI +16D 017425,000107: 22,2072 43225 DSU DAD 017426,000108: 22,2073 15325 DP1/4TH 017427,000109: 22,2074 03436 MFI +8D 017428,000110: 22,2075 03317 STORE CAM # CAM = (MFI0+MFI4+MFI8-1)/2 HALF-SCALE 017429,000111: 22,2076 77726 ARCCOS 017430,000112: 22,2077 03365 STORE AM # AM=ARCCOS(CAM) (AM SCALED BY 2) 017431,000113: 22,2100 51025 DSU BPL 017432,000114: 22,2101 04367 MINANG 017433,000115: 22,2102 44111 CHECKMAX 017434,000116: 22,2103 77776 EXIT # MANEUVER LESS THAN 0.25 DEG 017435,000117: 22,2104 00004 INHINT # GO DIRECTLY INTO ATTITUDE HOLD 017436,000118: 22,2105 45017 CS ONE # ABOUT COMMANDED ANGLES 017437,000119: 22,2106 55332 TS HOLDFLAG # NOGO WILL STOP ANY RATE AND SET UP FOR A 017438,000120: 22,2107 03142 TC LOADCDUD # GOOD RETURN 017439,000121: 22,2110 12730 TCF NOGO 017440,000122: 017441,000123: 22,2111 45345 CHECKMAX DLOAD DSU 017442,000124: 22,2112 03365 AM 017443,000125: 22,2113 04370 MAXANG 017444,000126: 22,2114 77244 BPL VLOAD 017445,000127: 22,2115 44123 ALTCALC # UNIT 017446,000128: 22,2116 03311 COFSKEW # COFSKEW 017447,000129: 22,2117 77656 UNIT 017448,000130: 22,2120 03343 STORE COF # COF IS THE MANEUVER AXIS 017449,000131: 22,2121 77650 GOTO # SEE IF MANEUVER GOES THRU GIMBAL LOCK 017450,000132: 22,2122 44737 LOCSKIRT 017451,000133: 22,2123 53375 ALTCALC VLOAD VAD # IF AM GREATER THAN 170 DEGREES 017452,000134: 22,2124 03426 MFI 017453,000135: # Page 401 017454,000136: 22,2125 03267 TMFI 017455,000137: 22,2126 77762 VSR1 017456,000138: 22,2127 27267 STOVL MFISYM 017457,000139: 22,2130 03434 MFI +6 017458,000140: 22,2131 74455 VAD VSR1 017459,000141: 22,2132 03275 TMFI +6 017460,000142: 22,2133 27275 STOVL MFISYM +6 017461,000143: 22,2134 03442 MFI +12D 017462,000144: 22,2135 74455 VAD VSR1 017463,000145: 22,2136 03303 TMFI +12D 017464,000146: 22,2137 03303 STORE MFISYM +12D # MFISYM=(MFI+TMFI)/2 SCALED BY 4 017465,000147: 017466,000148: # CALCULATE COF 017467,000149: 017468,000150: 22,2140 70545 DLOAD SR1 017469,000151: 22,2141 03317 CAM 017470,000152: 22,2142 45325 PDDL DSU # PD0 CAM $4 017471,000153: 22,2143 15333 DPHALF 017472,000154: 22,2144 03317 CAM 017473,000155: 22,2145 65204 BOVB PDDL # PD2 1 - CAM $2 017474,000156: 22,2146 45712 SIGNMPAC 017475,000157: 22,2147 03307 MFISYM +16D 017476,000158: 22,2150 56225 DSU DDV 017477,000159: 22,2151 00001 0 017478,000160: 22,2152 00003 2 017479,000161: 22,2153 65366 SQRT PDDL # COFZ = SQRT(MFISYM8-CAM)/(1-CAM) 017480,000162: 22,2154 03277 MFISYM +8D # $ ROOT 2 017481,000163: 22,2155 56225 DSU DDV 017482,000164: 22,2156 00001 0 017483,000165: 22,2157 00003 2 017484,000166: 22,2160 65366 SQRT PDDL # COFY = SQRT(MFISYM4-CAM)/(1-CAM) $ROOT2 017485,000167: 22,2161 03267 MFISYM 017486,000168: 22,2162 56225 DSU DDV 017487,000169: 22,2163 00001 0 017488,000170: 22,2164 00003 2 017489,000171: 22,2165 55566 SQRT VDEF # COFX = SQRT(MFISYM-CAM)/(1-CAM) $ROOT 2 017490,000172: 22,2166 77656 UNIT 017491,000173: 22,2167 03343 STORE COF 017492,000174: 017493,000175: # DETERMINE LARGEST COF AND ADJUST ACCORDINGLY 017494,000176: 017495,000177: 22,2170 45345 COFMAXGO DLOAD DSU 017496,000178: 22,2171 03343 COF 017497,000179: 22,2172 03345 COF +2 017498,000180: 22,2173 71240 BMN DLOAD # COFY G COFX 017499,000181: 22,2174 44203 COMP12 017500,000182: 22,2175 03343 COF 017501,000183: 22,2176 50025 DSU BMN 017502,000184: 22,2177 03347 COF +4 017503,000185: # Page 402 017504,000186: 22,2200 44260 METHOD3 # COFZ G COFX OR COFY 017505,000187: 22,2201 77650 GOTO 017506,000188: 22,2202 44234 METHOD1 # COFX G COFY OR COFZ 017507,000189: 22,2203 45345 COMP12 DLOAD DSU 017508,000190: 22,2204 03345 COF +2 017509,000191: 22,2205 03347 COF +4 017510,000192: 22,2206 77640 BMN 017511,000193: 22,2207 44260 METHOD3 # COFZ G COFY OR COFX 017512,000194: 017513,000195: 22,2210 51145 METHOD2 DLOAD BPL # COFY MAX 017514,000196: 22,2211 03313 COFSKEW +2 # UY 017515,000197: 22,2212 44216 U2POS 017516,000198: 22,2213 57575 VLOAD VCOMP 017517,000199: 22,2214 03343 COF 017518,000200: 22,2215 03343 STORE COF 017519,000201: 22,2216 51145 U2POS DLOAD BPL 017520,000202: 22,2217 03271 MFISYM +2 # UX UY 017521,000203: 22,2220 44224 OKU21 017522,000204: 22,2221 57545 DLOAD DCOMP # SIGN OF UX OPPOSITE TO UY 017523,000205: 22,2222 03343 COF 017524,000206: 22,2223 03343 STORE COF 017525,000207: 22,2224 51145 OKU21 DLOAD BPL 017526,000208: 22,2225 03301 MFISYM +10D # UY UZ 017527,000209: 22,2226 44737 LOCSKIRT 017528,000210: 22,2227 57545 DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY 017529,000211: 22,2230 03347 COF +4 017530,000212: 22,2231 03347 STORE COF +4 017531,000213: 22,2232 77650 GOTO 017532,000214: 22,2233 44737 LOCSKIRT 017533,000215: 22,2234 51145 METHOD1 DLOAD BPL # COFX MAX 017534,000216: 22,2235 03311 COFSKEW # UX 017535,000217: 22,2236 44242 U1POS 017536,000218: 22,2237 57575 VLOAD VCOMP 017537,000219: 22,2240 03343 COF 017538,000220: 22,2241 03343 STORE COF 017539,000221: 22,2242 51145 U1POS DLOAD BPL 017540,000222: 22,2243 03271 MFISYM +2 # UX UY 017541,000223: 22,2244 44250 OKU12 017542,000224: 22,2245 57545 DLOAD DCOMP 017543,000225: 22,2246 03345 COF +2 # SIGN OF UY OPPOSITE TO UX 017544,000226: 22,2247 03345 STORE COF +2 017545,000227: 22,2250 51145 OKU12 DLOAD BPL 017546,000228: 22,2251 03273 MFISYM +4 # UX UZ 017547,000229: 22,2252 44737 LOCSKIRT 017548,000230: 22,2253 57545 DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY 017549,000231: 22,2254 03347 COF +4 017550,000232: 22,2255 03347 STORE COF +4 017551,000233: 22,2256 77650 GOTO 017552,000234: 22,2257 44737 LOCSKIRT 017553,000235: 22,2260 51145 METHOD3 DLOAD BPL # COFZ MAX 017554,000236: # Page 403 017555,000237: 22,2261 03315 COFSKEW +4 # UZ 017556,000238: 22,2262 44266 U3POS 017557,000239: 22,2263 57575 VLOAD VCOMP 017558,000240: 22,2264 03343 COF 017559,000241: 22,2265 03343 STORE COF 017560,000242: 22,2266 51145 U3POS DLOAD BPL 017561,000243: 22,2267 03273 MFISYM +4 # UX UZ 017562,000244: 22,2270 44274 OKU31 017563,000245: 22,2271 57545 DLOAD DCOMP 017564,000246: 22,2272 03343 COF # SIGN OF UX OPPOSITE TO UZ 017565,000247: 22,2273 03343 STORE COF 017566,000248: 22,2274 51145 OKU31 DLOAD BPL 017567,000249: 22,2275 03301 MFISYM +10D # UY UZ 017568,000250: 22,2276 44737 LOCSKIRT 017569,000251: 22,2277 57545 DLOAD DCOMP 017570,000252: 22,2300 03345 COF +2 # SIGN OF UY OPPOSITE TO UZ 017571,000253: 22,2301 03345 STORE COF +2 017572,000254: 22,2302 77650 GOTO 017573,000255: 22,2303 44737 LOCSKIRT 017574,000256: 017575,000257: # Page 404 017576,000258: # MATRIX OPERATIONS 017577,000259: 017578,000260: 22,2304 77601 MXM3 SETPD # MXM3 MULTIPLIES 2 3X3 MATRICES 017579,000261: 22,2305 00001 0 # AND LEAVES RESULT IN PD LIST 017580,000262: 22,2306 64743 DLOAD* PDDL* # ADDRESS OF 1ST MATRIX IN XR1 017581,000263: 22,2307 77762 12D,2 # ADDRESS OF 2ND MATRIX IN XR2 017582,000264: 22,2310 77770 6,2 017583,000265: 22,2311 55523 PDDL* VDEF # DEFINE VECTOR M2(COL 1) 017584,000266: 22,2312 77776 0,2 017585,000267: 22,2313 64717 MXV* PDDL* # M1XM2(COL 1) IN PD 017586,000268: 22,2314 00001 0,1 017587,000269: 22,2315 77760 14D,2 017588,000270: 22,2316 64723 PDDL* PDDL* 017589,000271: 22,2317 77766 8D,2 017590,000272: 22,2320 77774 2,2 017591,000273: 22,2321 63666 VDEF MXV* # DEFINE VECTOR M2(COL 2) 017592,000274: 22,2322 00001 0,1 017593,000275: 22,2323 64723 PDDL* PDDL* # M1XM2(COL2) IN PD 017594,000276: 22,2324 77756 16D,2 017595,000277: 22,2325 77764 10D,2 017596,000278: 22,2326 55523 PDDL* VDEF # DEFINE VECTOR M2(COL 3) 017597,000279: 22,2327 77772 4,2 017598,000280: 22,2330 41517 MXV* PUSH # M1XM2(COL 3) IN PD 017599,000281: 22,2331 00001 0,1 017600,000282: 22,2332 77650 GOTO 017601,000283: 22,2333 44343 TRNSPSPD # REVERSE ROWS AND COLS IN PD AND 017602,000284: 017603,000285: # RETURN WITH M1XM2 IN PD LIST 017604,000286: 22,2334 76601 TRANSPOS SETPD VLOAD* # TRANSPOS TRANSPOSES A 3X3 MATRIX 017605,000287: 22,2335 00001 0 # AND LEAVES RESULT IN PD LIST 017606,000288: 22,2336 00001 0,1 # MATRIX ADDRESS IN XR1 017607,000289: 22,2337 62713 PDVL* PDVL* 017608,000290: 22,2340 00007 6,1 017609,000291: 22,2341 00015 12D,1 017610,000292: 22,2342 77606 PUSH # MATRIX IN PD 017611,000293: 22,2343 65345 TRNSPSPD DLOAD PDDL # ENTER WITH MATRIX IN PD LIST 017612,000294: 22,2344 00003 2 017613,000295: 22,2345 00007 6 017614,000296: 22,2346 14003 STODL 2 017615,000297: 22,2347 77626 STADR 017616,000298: 22,2350 63770 STODL 6 017617,000299: 22,2351 00005 4 017618,000300: 22,2352 77725 PDDL 017619,000301: 22,2353 00015 12D 017620,000302: 22,2354 14005 STODL 4 017621,000303: 22,2355 77626 STADR 017622,000304: 22,2356 63762 STODL 12D 017623,000305: 22,2357 00013 10D 017624,000306: 22,2360 77725 PDDL 017625,000307: # Page 405 017626,000308: 22,2361 00017 14D 017627,000309: 22,2362 14013 STODL 10D 017628,000310: 22,2363 77626 STADR 017629,000311: 22,2364 77760 STORE 14D 017630,000312: 22,2365 77616 RVQ # RETURN WITH TRANSPOSED MATRIX IN PD LIST 017631,000313: 22,2366 00013 MINANG DEC .00069375 017632,000314: 22,2367 17071 MAXANG DEC .472222 017633,000315: 017634,000316: # GIMBAL LOCK CONSTANTS 017635,000317: 017636,000318: # D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES 017637,000319: # NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES 017638,000320: 017639,000321: 22,2370 15667 SD DEC .433015 # = SIN(D) $2 017640,000322: 22,2371 33555 K3S1 DEC .86603 # = SIN(D) $2 017641,000323: 22,2372 67777 K4 DEC -.25 # = -COS(D) $2 017642,000324: 22,2373 04000 K4SQ DEC .125 # = COS(D)COS(D) $2 017643,000325: 22,2374 00217 SNGLCD DEC .008725 # = SIN(NGL)COS(D) $2 017644,000326: 22,2375 17773 CNGL DEC .499695 # = COS(NGL) $2 017645,000327: 22,2376 00004 READCDUK INHINT # LOAD T(MPAC) WITH THE CURRENT CDU ANGLES 017646,000328: 22,2377 30034 CA CDUZ 017647,000329: 22,2400 54156 TS MPAC +2 017648,000330: 22,2401 00006 EXTEND 017649,000331: 22,2402 30033 DCA CDUX 017650,000332: 22,2403 00003 RELINT 017651,000333: 22,2404 16445 TCF TLOAD +6 017652,000334: 16,2000 BANK 16 017653,000335: 22,2000 SETLOC KALCMON2 017654,000336: 22,2000 BANK 017655,000337: 017656,000338: 22,2405 COUNT* $$/KALC 017657,000339: 017658,000340: 22,2405 66370 CDUTODCM AXT,1 SSP # SUBROUTINE TO COMPUTE DIRECTION COSINE 017659,000341: 22,2406 00003 OCT 3 # MATRIX RELATING S/C AXES TO STARLE 017660,000342: 22,2407 00051 S1 # MEMBER AXES FROM 3 CDU ANGLES IN T(MPAC) 017661,000343: 22,2410 00001 OCT 1 # SET XR1, S1, AND PD FOR LOOP Hello! 017662,000344: 22,2411 00010 STORE 7 017663,000345: 22,2412 77601 SETPD 017664,000346: 22,2413 00001 0 017665,000347: 22,2414 47133 LOOPSIN SLOAD* RTB 017666,000348: 22,2415 00013 10D,1 017667,000349: 22,2416 45513 CDULOGIC 017668,000350: 22,2417 00013 STORE 10D # LOAD PD WITH 0 SIN(PHI) 017669,000351: 22,2420 65356 SIN PDDL # 2 COS(PHI) 017670,000352: 22,2421 00013 10D # 4 SIN(THETA) 017671,000353: 22,2422 41546 COS PUSH # 6 COS(THETA) 017672,000354: 22,2423 71300 TIX,1 DLOAD # 8 SIN(PSI) 017673,000355: 22,2424 44414 LOOPSIN # 10 COS(PSI) 017674,000356: 22,2425 00007 6 017675,000357: 22,2426 72405 DMP SL1 017676,000358: 22,2427 00013 10D 017677,000359: # Page 406 017678,000360: 22,2430 10001 STORE 0,2 017679,000361: 22,2431 77745 DLOAD 017680,000362: 22,2432 00005 4 017681,000363: 22,2433 65205 DMP PDDL 017682,000364: 22,2434 00001 0 # (PD6 SIN(THETA)SIN(PHI)) 017683,000365: 22,2435 00007 6 017684,000366: 22,2436 41205 DMP DMP 017685,000367: 22,2437 00011 8D 017686,000368: 22,2440 00003 2 017687,000369: 22,2441 44352 SL1 BDSU 017688,000370: 22,2442 00015 12D 017689,000371: 22,2443 77752 SL1 017690,000372: 22,2444 10003 STORE 2,2 017691,000373: 22,2445 77745 DLOAD 017692,000374: 22,2446 00003 2 017693,000375: 22,2447 65205 DMP PDDL # (PD7 COS(PHI)SIN(THETA)) SCALED 4 017694,000376: 22,2450 00005 4 017695,000377: 22,2451 00007 6 017696,000378: 22,2452 41205 DMP DMP 017697,000379: 22,2453 00011 8D 017698,000380: 22,2454 00001 0 017699,000381: 22,2455 77752 SL1 017700,000382: 22,2456 72415 DAD SL1 017701,000383: 22,2457 00017 14D 017702,000384: 22,2460 10005 STORE 4,2 017703,000385: 22,2461 77745 DLOAD 017704,000386: 22,2462 00011 8D 017705,000387: 22,2463 10007 STORE 6,2 017706,000388: 22,2464 77745 DLOAD 017707,000389: 22,2465 00013 10D 017708,000390: 22,2466 72405 DMP SL1 017709,000391: 22,2467 00003 2 017710,000392: 22,2470 10011 STORE 8D,2 017711,000393: 22,2471 77745 DLOAD 017712,000394: 22,2472 00013 10D 017713,000395: 22,2473 57405 DMP DCOMP 017714,000396: 22,2474 00001 0 017715,000397: 22,2475 77752 SL1 017716,000398: 22,2476 10013 STORE 10D,2 017717,000399: 22,2477 77745 DLOAD 017718,000400: 22,2500 00005 4 017719,000401: 22,2501 57405 DMP DCOMP 017720,000402: 22,2502 00013 10D 017721,000403: 22,2503 77752 SL1 017722,000404: 22,2504 10015 STORE 12D,2 017723,000405: 22,2505 77745 DLOAD 017724,000406: 22,2506 72405 DMP SL1 # (PUSH UP 7) 017725,000407: 22,2507 00011 8D 017726,000408: 22,2510 41325 PDDL DMP # (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE 4 017727,000409: 22,2511 00007 6 017728,000410: # Page 407 017729,000411: 22,2512 00001 0 017730,000412: 22,2513 72415 DAD SL1 # (PUSH UP 7) 017731,000413: 22,2514 77626 STADR # C7=COS(PHI)SIN(THETA)SIN(PSI) 017732,000414: 22,2515 67760 STORE 14D,2 017733,000415: 22,2516 77745 DLOAD 017734,000416: 22,2517 72405 DMP SL1 # (PUSH UP 6) 017735,000417: 22,2520 00011 8D 017736,000418: 22,2521 41325 PDDL DMP # (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE 4 017737,000419: 22,2522 00007 6 017738,000420: 22,2523 00003 2 017739,000421: 22,2524 72425 DSU SL1 # (PUSH UP 6) 017740,000422: 22,2525 77626 STADR 017741,000423: 22,2526 67756 STORE 16D,2 # C8=-SIN(THETA)SIN(PHI)SIN(PSI) 017742,000424: 22,2527 77616 RVQ # +COS(THETA)COS(PHI) 017743,000425: 22,2530 ENDOCM EQUALS 017744,000426: 017745,000427: 15,2000 BANK 15 017746,000428: 22,2000 SETLOC KALCMON1 017747,000429: 22,2000 BANK 017748,000430: 017749,000431: # CALCULATION OF THE MATRIX DEL....... 017750,000432: 017751,000433: # * * __T * 017752,000434: # DEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A) SCALED 1 017753,000435: 017754,000436: # _ 017755,000437: # WHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION. 017756,000438: # A IS THE ANGLE OF ROTATION (DP SCALED 2). 017757,000439: # _ 017758,000440: # UPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC. 017759,000441: 017760,000442: 22,2530 COUNT 22/KALC 017761,000443: 017762,000444: 22,2530 41401 DELCOMP SETPD PUSH # MPAC CONTAINS THE ANGLE A 017763,000445: 22,2531 00001 0 017764,000446: 22,2532 65356 SIN PDDL # PD0 = SIN(A) 017765,000447: 22,2533 41546 COS PUSH # PD2 = COS(A) 017766,000448: 22,2534 65302 SR2 PDDL # PD2 = COS(A) $8 017767,000449: 22,2535 41021 BDSU BOVB # PD4 = 1-COS(A) $2 017768,000450: 22,2536 15333 DPHALF 017769,000451: 22,2537 45712 SIGNMPAC 017770,000452: 017771,000453: # COMPUTE THE DIAGONAL COMPONENTS OF DEL 017772,000454: 017773,000455: 22,2540 77725 PDDL 017774,000456: 22,2541 03343 COF 017775,000457: 22,2542 41316 DSQ DMP 017776,000458: 22,2543 00005 4 017777,000459: 22,2544 52415 DAD SL3 017778,000460: # Page 408 017779,000461: 22,2545 00003 2 017780,000462: 22,2546 77604 BOVB 017781,000463: 22,2547 45712 SIGNMPAC 017782,000464: 22,2550 17426 STODL DEL # UX UX(U-COS(A)) +COS(A) $1 017783,000465: 22,2551 03345 COF +2 017784,000466: 22,2552 41316 DSQ DMP 017785,000467: 22,2553 00005 4 017786,000468: 22,2554 52415 DAD SL3 017787,000469: 22,2555 00003 2 017788,000470: 22,2556 77604 BOVB 017789,000471: 22,2557 45712 SIGNMPAC 017790,000472: 22,2560 17436 STODL DEL +8D # UY UY(1-COS(A)) +COS(A) $1 017791,000473: 22,2561 03347 COF +4 017792,000474: 22,2562 41316 DSQ DMP 017793,000475: 22,2563 00005 4 017794,000476: 22,2564 52415 DAD SL3 017795,000477: 22,2565 00003 2 017796,000478: 22,2566 77604 BOVB 017797,000479: 22,2567 45712 SIGNMPAC 017798,000480: 22,2570 03446 STORE DEL +16D # UZ UZ(1-COS(A)) +COS(A) $1 017799,000481: 017800,000482: # COMPUTE THE OFF-DIAGONAL TERMS OF DEL 017801,000483: 017802,000484: 22,2571 41345 DLOAD DMP 017803,000485: 22,2572 03343 COF 017804,000486: 22,2573 03345 COF +2 017805,000487: 22,2574 72405 DMP SL1 017806,000488: 22,2575 00005 4 017807,000489: 22,2576 41325 PDDL DMP # D6 UX UY (1-COS A) $ 4 017808,000490: 22,2577 03347 COF +4 017809,000491: 22,2600 00001 0 017810,000492: 22,2601 43206 PUSH DAD # D8 UZ SIN A $ 4 017811,000493: 22,2602 00007 6 017812,000494: 22,2603 41112 SL2 BOVB 017813,000495: 22,2604 45712 SIGNMPAC 017814,000496: 22,2605 17434 STODL DEL +6 017815,000497: 22,2606 62421 BDSU SL2 017816,000498: 22,2607 77604 BOVB 017817,000499: 22,2610 45712 SIGNMPAC 017818,000500: 22,2611 17430 STODL DEL +2 017819,000501: 22,2612 03343 COF 017820,000502: 22,2613 41205 DMP DMP 017821,000503: 22,2614 03347 COF +4 017822,000504: 22,2615 00005 4 017823,000505: 22,2616 65352 SL1 PDDL # D6 UX UZ (1-COS A) $ 4 017824,000506: 22,2617 03345 COF +2 017825,000507: 22,2620 41405 DMP PUSH # D8 UY SIN(A) 017826,000508: 22,2621 00001 0 017827,000509: 22,2622 62415 DAD SL2 017828,000510: 22,2623 00007 6 017829,000511: # Page 409 017830,000512: 22,2624 77604 BOVB 017831,000513: 22,2625 45712 SIGNMPAC 017832,000514: 22,2626 17432 STODL DEL +4 # UX UZ (1-COS(A))+UY SIN(A) 017833,000515: 22,2627 62421 BDSU SL2 017834,000516: 22,2630 77604 BOVB 017835,000517: 22,2631 45712 SIGNMPAC 017836,000518: 22,2632 17442 STODL DEL +12D # UX UZ (U-COS(A))-UY SIGN(A) 017837,000519: 22,2633 03345 COF +2 017838,000520: 22,2634 41205 DMP DMP 017839,000521: 22,2635 03347 COF +4 017840,000522: 22,2636 00005 4 017841,000523: 22,2637 65352 SL1 PDDL # D6 UY UZ (1-COS(A)) $ 4 017842,000524: 22,2640 03343 COF 017843,000525: 22,2641 41405 DMP PUSH # D6 UX SIN(A) 017844,000526: 22,2642 00001 0 017845,000527: 22,2643 62415 DAD SL2 017846,000528: 22,2644 00007 6 017847,000529: 22,2645 77604 BOVB 017848,000530: 22,2646 45712 SIGNMPAC 017849,000531: 22,2647 17444 STODL DEL +14D # UY UZ(1-COS(A)) +UX SIN(A) 017850,000532: 22,2650 62421 BDSU SL2 017851,000533: 22,2651 77604 BOVB 017852,000534: 22,2652 45712 SIGNMPAC 017853,000535: 22,2653 03440 STORE DEL +10D # UY UZ(1-COS(A)) -UX SIN(A) 017854,000536: 22,2654 77616 RVQ 017855,000537: 017856,000538: # DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE 017857,000539: # X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2) 017858,000540: # LEAVES CDU ANGLES SCALED 2PI IN V(MPAC) 017859,000541: # COS(MGA) WILL BE LEFT IN S1 (SCALED 1) 017860,000542: 017861,000543: # THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS *** 017862,000544: 017863,000545: # C =COS(THETA)COS(PSI) 017864,000546: # 0 017865,000547: 017866,000548: # C =-COS(THETA)SIN(PSI)COS(PHI)+SIN(THETA)SIN(PHI) 017867,000549: # 1 017868,000550: 017869,000551: # C =COS(THETA)SIN(PSI)SIN(PHI)+SIN(THETA)COS(PHI) 017870,000552: # 2 017871,000553: 017872,000554: # C =SIN(PSI) 017873,000555: # 3 017874,000556: 017875,000557: # C =COS(PSI)COS(PHI) 017876,000558: # 4 017877,000559: 017878,000560: # C =-COS(PSI)SIN(PHI) 017879,000561: # 5 017880,000562: 017881,000563: # C =-SIN(THETA)COS(PSI) 017882,000564: # 6 017883,000565: 017884,000566: # C =SIN(THETA)SIN(PSI)COS(PHI)+COS(THETA)SIN(PHI) 017885,000567: # 7 017886,000568: # Page 410 017887,000569: # C =-SIN(THETA)SIN(PSI)SIN(PHI)+COS(THETA)COS(PHI) 017888,000570: # 8 017889,000571: 017890,000572: # WHERE PHI = OGA 017891,000573: # THETA = IGA 017892,000574: # PSI = MGA 017893,000575: 017894,000576: 22,2655 67543 DCMTOCDU DLOAD* ARCSIN 017895,000577: 22,2656 00007 6,1 017896,000578: 22,2657 71406 PUSH COS # PD +0 PSI 017897,000579: 22,2660 41152 SL1 BOVB 017898,000580: 22,2661 45712 SIGNMPAC 017899,000581: 22,2662 00051 STORE S1 017900,000582: 22,2663 57543 DLOAD* DCOMP 017901,000583: 22,2664 00015 12D,1 017902,000584: 22,2665 67471 DDV ARCSIN 017903,000585: 22,2666 00051 S1 017904,000586: 22,2667 51123 PDDL* BPL # PD +2 THETA 017905,000587: 22,2670 00001 0,1 # MUST CHECK THE SIGN OF COS(THETA) 017906,000588: 22,2671 44703 OKTHETA # TO DETERMINE THE PROPER QUADRANT 017907,000589: 22,2672 57545 DLOAD DCOMP 017908,000590: 22,2673 43244 BPL DAD 017909,000591: 22,2674 44700 SUHALFA 017910,000592: 22,2675 15333 DPHALF 017911,000593: 22,2676 77650 GOTO 017912,000594: 22,2677 44702 CALCPHI 017913,000595: 22,2700 77625 SUHALFA DSU 017914,000596: 22,2701 15333 DPHALF 017915,000597: 22,2702 77606 CALCPHI PUSH 017916,000598: 22,2703 57543 OKTHETA DLOAD* DCOMP 017917,000599: 22,2704 00013 10D,1 017918,000600: 22,2705 67471 DDV ARCSIN 017919,000601: 22,2706 00051 S1 017920,000602: 22,2707 51123 PDDL* BPL # PUSH DOWN PHI 017921,000603: 22,2710 00011 8D,1 017922,000604: 22,2711 44723 OKPHI 017923,000605: 22,2712 57545 DLOAD DCOMP # PUSH UP PHI 017924,000606: 22,2713 43244 BPL DAD 017925,000607: 22,2714 44720 SUHALFAP 017926,000608: 22,2715 15333 DPHALF 017927,000609: 22,2716 77650 GOTO 017928,000610: 22,2717 44724 VECOFANG 017929,000611: 22,2720 52025 SUHALFAP DSU GOTO 017930,000612: 22,2721 15333 DPHALF 017931,000613: 22,2722 44724 VECOFANG 017932,000614: 22,2723 77745 OKPHI DLOAD # PUSH UP PHI 017933,000615: 22,2724 43466 VECOFANG VDEF RVQ 017934,000616: 017935,000617: # Page 411 017936,000618: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS 017937,000619: 017938,000620: 22,2725 00004 NOGOM2 INHINT # THIS LOCATION ACCESSED BY A BZMF NOGO -2 017939,000621: 22,2726 04662 TC BANKCALL 017940,000622: 22,2727 40155 CADR ZEROERROR 017941,000623: 017942,000624: 22,2730 00004 NOGO INHINT 017943,000625: 22,2731 04526 TC STOPRATE 017944,000626: 017945,000627: # TERMINATE MANEUVER 017946,000628: 22,2732 35016 CAF TWO # NOTE: ALL RETURNS ARE NOW MADE VIA 017947,000629: 22,2733 05245 TC WAITLIST # GOODEND 017948,000630: 22,2734 E6,1661 EBANK= BCDU 017949,000631: 22,2734 02006 42066 2CADR ENDMANU 017950,000632: 017951,000633: 22,2736 15217 TCF ENDOFJOB 017952,000634: End of include-file ANGLFIND.agc. Parent file is MAIN.agc