Source Code
016977,000001: # Copyright: Public domain.
016978,000002: # Filename: ANGLFIND.agc
016979,000003: # Purpose: Part of the source code for Colossus, build 249.
016980,000004: # It is part of the source code for the Command Module's (CM)
016981,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9.
016982,000006: # Assembler: yaYUL
016983,000007: # Reference: pp. 394-406 of 1701.pdf.
016984,000008: # Contact: Ron Burkey <info@sandroid.org>.
016985,000009: # Website: www.ibiblio.org/apollo.
016986,000010: # Mod history: 08/10/04 RSB. Began transcribing.
016987,000011:
016988,000012: # The contents of the "Colossus249" files, in general, are transcribed
016989,000013: # from a scanned document obtained from MIT's website,
016990,000014: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this
016991,000015: # document read, in part:
016992,000016:
016993,000017: # Assemble revision 249 of AGC program Colossus by NASA
016994,000018: # 2021111-041. October 28, 1968.
016995,000019:
016996,000020: # This AGC program shall also be referred to as
016997,000021: # Colossus 1A
016998,000022:
016999,000023: # Prepared by
017000,000024: # Massachussets Institute of Technology
017001,000025: # 75 Cambridge Parkway
017002,000026: # Cambridge, Massachusetts
017003,000027: # under NASA contract NAS 9-4065.
017004,000028:
017005,000029: # Refer directly to the online document mentioned above for further information.
017006,000030: # Please report any errors (relative to 1701.pdf) to info@sandroid.org.
017007,000031:
017008,000032: # In some cases, where the source code for Luminary 131 overlaps that of
017009,000033: # Colossus 249, this code is instead copied from the corresponding Luminary 131
017010,000034: # source file, and then is proofed to incorporate any changes.
017011,000035:
017012,000036: # Page 394
017013,000037: 15,2000 BANK 15
017014,000038: 22,2000 SETLOC KALCMON1
017015,000039: 22,2000 BANK
017016,000040:
017017,000041: 22,2000 E6,1661 EBANK= BCDU
017018,000042:
017019,000043: 22,2000 COUNT 22/KALC
017020,000044:
017021,000045: 22,2000 06006 KALCMAN3 TC INTPRET
017022,000046: 22,2001 77634 RTB
017023,000047: 22,2002 44376 READCDUK # PICK UP CURRENT CDU ANGLES
017024,000048: 22,2003 03262 STORE BCDU # STORE THE INITIAL S/C ANGLES
017025,000049: 22,2004 72364 AXC,2 TLOAD # COMPUTE THE TRANSFORMATION FROM
017026,000050: 22,2005 03320 MIS # INITIAL S/C AXES TO STABLE MEMBER AXES
017027,000051: 22,2006 03262 BCDU # (MIS)
017028,000052: 22,2007 77624 CALL
017029,000053: 22,2010 44405 CDUTODCM
017030,000054: 22,2011 72364 AXC,2 TLOAD # COMPUTE THE TRANSFORMATION FROM
017031,000055: 22,2012 03425 MFS # FINAL S/C AXES TO STABLE MEMBER AXES
017032,000056: 22,2013 01156 CPHI # (MFS)
017033,000057: 22,2014 77624 CALL
017034,000058: 22,2015 44405 CDUTODCM
017035,000059: 22,2016 45160 SECAD AXC,1 CALL # MIS AND MFS ARRAYS CALCULATED
017036,000060: 22,2017 03320 MIS
017037,000061: 22,2020 44334 TRANSPOS
017038,000062: 22,2021 77775 VLOAD
017039,000063: 22,2022 77626 STADR
017040,000064: 22,2023 50474 STOVL TMIS +12D
017041,000065: 22,2024 77626 STADR
017042,000066: 22,2025 50502 STOVL TMIS +6
017043,000067: 22,2026 77626 STADR
017044,000068: 22,2027 74510 STORE TMIS # TMIS = TRANSPOSE(MIS) SCALED BY 2
017045,000069: 22,2030 75160 AXC,1 AXC,2
017046,000070: 22,2031 03266 TMIS
017047,000071: 22,2032 03425 MFS
017048,000072: 22,2033 77624 CALL
017049,000073: 22,2034 44304 MXM3
017050,000074: 22,2035 45575 VLOAD STADR
017051,000075: 22,2036 50335 STOVL MFI +12D
017052,000076: 22,2037 77626 STADR
017053,000077: 22,2040 50343 STOVL MFI +6
017054,000078: 22,2041 77626 STADR
017055,000079: 22,2042 74351 STORE MFI # MFI = TMIS MFS (SCALED BY 4)
017056,000080: 22,2043 45001 SETPD CALL # TRANSPOSE MFI IN PD LIST
017057,000081: 22,2044 00023 18D
017058,000082: 22,2045 44343 TRNSPSPD
017059,000083: 22,2046 45575 VLOAD STADR
017060,000084: 22,2047 50474 STOVL TMFI +12D
017061,000085: 22,2050 77626 STADR
017062,000086: 22,2051 50502 STOVL TMFI +6
017063,000087: # Page 395
017064,000088: 22,2052 77626 STADR
017065,000089: 22,2053 74510 STORE TMFI # TMFI = TRANSPOSE (MFI) SCALED BY 4
017066,000090:
017067,000091: # CALCULATE COFSKEW AND MFISYM
017068,000092:
017069,000093: 22,2054 45345 DLOAD DSU
017070,000094: 22,2055 03271 TMFI +2
017071,000095: 22,2056 03430 MFI +2
017072,000096: 22,2057 45325 PDDL DSU # CALCULATE COF SCALED BY 2/SIN(AM)
017073,000097: 22,2060 03432 MFI +4
017074,000098: 22,2061 03273 TMFI +4
017075,000099: 22,2062 45325 PDDL DSU
017076,000100: 22,2063 03301 TMFI +10D
017077,000101: 22,2064 03440 MFI +10D
017078,000102: 22,2065 77666 VDEF
017079,000103: 22,2066 03311 STORE COFSKEW # EQUALS MFISKEW
017080,000104:
017081,000105: # CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE
017082,000106:
017083,000107: 22,2067 43345 DLOAD DAD
017084,000108: 22,2070 03426 MFI
017085,000109: 22,2071 03446 MFI +16D
017086,000110: 22,2072 43225 DSU DAD
017087,000111: 22,2073 15322 DP1/4TH
017088,000112: 22,2074 03436 MFI +8D
017089,000113: 22,2075 03317 STORE CAM # CAM = (MFI0+MFI4+MFI8-1)/2 HALF-SCALE
017090,000114: 22,2076 77726 ARCCOS
017091,000115: 22,2077 03365 STORE AM # AM=ARCCOS(CAM) (AM SCALED BY 2)
017092,000116: 22,2100 51025 DSU BPL
017093,000117: 22,2101 04367 MINANG
017094,000118: 22,2102 44111 CHECKMAX
017095,000119: 22,2103 77776 EXIT # MANEUVER LESS THAN 0.25 DEG
017096,000120: 22,2104 00004 INHINT # GO DIRECTLY INTO ATTITUDE HOLD
017097,000121: 22,2105 44712 CS ONE # ABOUT COMMANDED ANGLES
017098,000122: 22,2106 55332 TS HOLDFLAG # NOGO WILL STOP ANY RATE AND SET UP FOR A
017099,000123: 22,2107 03301 TC LOADCDUD # GOOD RETURN
017100,000124: 22,2110 12727 TCF NOGO
017101,000125:
017102,000126: 22,2111 45345 CHECKMAX DLOAD DSU
017103,000127: 22,2112 03365 AM
017104,000128: 22,2113 04370 MAXANG
017105,000129: 22,2114 77244 BPL VLOAD
017106,000130: 22,2115 44123 ALTCALC # UNIT
017107,000131: 22,2116 03311 COFSKEW # COFSKEW
017108,000132: 22,2117 77656 UNIT
017109,000133: 22,2120 03343 STORE COF # COF IS THE MANEUVER AXIS
017110,000134: 22,2121 77650 GOTO # SEE IF MANEUVER GOES THRU GIMBAL LOCK
017111,000135: 22,2122 44736 LOCSKIRT
017112,000136: 22,2123 53375 ALTCALC VLOAD VAD # IF AM GREATER THAN 170 DEGREES
017113,000137: 22,2124 03426 MFI
017114,000138: # Page 396
017115,000139: 22,2125 03267 TMFI
017116,000140: 22,2126 77762 VSR1
017117,000141: 22,2127 27267 STOVL MFISYM
017118,000142: 22,2130 03434 MFI +6
017119,000143: 22,2131 74455 VAD VSR1
017120,000144: 22,2132 03275 TMFI +6
017121,000145: 22,2133 27275 STOVL MFISYM +6
017122,000146: 22,2134 03442 MFI +12D
017123,000147: 22,2135 74455 VAD VSR1
017124,000148: 22,2136 03303 TMFI +12D
017125,000149: 22,2137 03303 STORE MFISYM +12D # MFISYM=(MFI+TMFI)/2 SCALED BY 4
017126,000150:
017127,000151: # CALCULATE COF
017128,000152:
017129,000153: 22,2140 70545 DLOAD SR1
017130,000154: 22,2141 03317 CAM
017131,000155: 22,2142 45325 PDDL DSU # PD0 CAM
017132,000156: 22,2143 15330 DPHALF
017133,000157: 22,2144 03317 CAM
017134,000158: 22,2145 65204 BOVB PDDL # PDL 1 - CAM
017135,000159: 22,2146 45707 SIGNMPAC
017136,000160: 22,2147 03307 MFISYM +16D
017137,000161: 22,2150 56225 DSU DDV
017138,000162: 22,2151 00001 0
017139,000163: 22,2152 00003 2
017140,000164: 22,2153 65366 SQRT PDDL # COFZ = SQRT(MFISYM8-CAM)/(1-CAM)
017141,000165: 22,2154 03277 MFISYM +8D
017142,000166: 22,2155 56225 DSU DDV
017143,000167: 22,2156 00001 0
017144,000168: 22,2157 00003 2
017145,000169: 22,2160 65366 SQRT PDDL # COFY = SQRT(MFISYM4-CAM)/(1-CAM)
017146,000170: 22,2161 03267 MFISYM
017147,000171: 22,2162 56225 DSU DDV
017148,000172: 22,2163 00001 0
017149,000173: 22,2164 00003 2
017150,000174: 22,2165 55566 SQRT VDEF # COFX = SQRT(MFISYM-CAM)/(1-CAM)
017151,000175: 22,2166 77656 UNIT
017152,000176: 22,2167 03343 STORE COF
017153,000177:
017154,000178: # DETERMINE LARGEST COF AND ADJUST ACCORDINGLY
017155,000179:
017156,000180: 22,2170 45345 COFMAXGO DLOAD DSU
017157,000181: 22,2171 03343 COF
017158,000182: 22,2172 03345 COF +2
017159,000183: 22,2173 71240 BMN DLOAD # COFY G COFX
017160,000184: 22,2174 44203 COMP12
017161,000185: 22,2175 03343 COF
017162,000186: 22,2176 50025 DSU BMN
017163,000187: 22,2177 03347 COF +4
017164,000188: # Page 397
017165,000189: 22,2200 44260 METHOD3 # COFZ G COFX OR COFY
017166,000190: 22,2201 77650 GOTO
017167,000191: 22,2202 44234 METHOD1 # COFX G COFY OR COFZ
017168,000192: 22,2203 45345 COMP12 DLOAD DSU
017169,000193: 22,2204 03345 COF +2
017170,000194: 22,2205 03347 COF +4
017171,000195: 22,2206 77640 BMN
017172,000196: 22,2207 44260 METHOD3 # COFZ G COFY OR COFX
017173,000197:
017174,000198: 22,2210 51145 METHOD2 DLOAD BPL # COFY MAX
017175,000199: 22,2211 03313 COFSKEW +2 # UY
017176,000200: 22,2212 44216 U2POS
017177,000201: 22,2213 57575 VLOAD VCOMP
017178,000202: 22,2214 03343 COF
017179,000203: 22,2215 03343 STORE COF
017180,000204: 22,2216 51145 U2POS DLOAD BPL
017181,000205: 22,2217 03271 MFISYM +2 # UX UY
017182,000206: 22,2220 44224 CKU21
017183,000207: 22,2221 57545 DLOAD DCOMP # SIGN OF UX OPPOSITE TO UY
017184,000208: 22,2222 03343 COF
017185,000209: 22,2223 03343 STORE COF
017186,000210: 22,2224 51145 CKU21 DLOAD BPL
017187,000211: 22,2225 03301 MFISYM +10D # UY UZ
017188,000212: 22,2226 44736 LOCSKIRT
017189,000213: 22,2227 57545 DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY
017190,000214: 22,2230 03347 COF +4
017191,000215: 22,2231 03347 STORE COF +4
017192,000216: 22,2232 77650 GOTO
017193,000217: 22,2233 44736 LOCSKIRT
017194,000218: 22,2234 51145 METHOD1 DLOAD BPL # COFX MAX
017195,000219: 22,2235 03311 COFSKEW # UX
017196,000220: 22,2236 44242 U1POS
017197,000221: 22,2237 57575 VLOAD VCOMP
017198,000222: 22,2240 03343 COF
017199,000223: 22,2241 03343 STORE COF
017200,000224: 22,2242 51145 U1POS DLOAD BPL
017201,000225: 22,2243 03271 MFISYM +2 # UX UY
017202,000226: 22,2244 44250 CKU12
017203,000227: 22,2245 57545 DLOAD DCOMP
017204,000228: 22,2246 03345 COF +2 # SIGN OF UY OPPOSITE TO UX
017205,000229: 22,2247 03345 STORE COF +2
017206,000230: 22,2250 51145 CKU12 DLOAD BPL
017207,000231: 22,2251 03273 MFISYM +4 # UX UZ
017208,000232: 22,2252 44736 LOCSKIRT
017209,000233: 22,2253 57545 DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY
017210,000234: 22,2254 03347 COF +4
017211,000235: 22,2255 03347 STORE COF +4
017212,000236: 22,2256 77650 GOTO
017213,000237: 22,2257 44736 LOCSKIRT
017214,000238: 22,2260 51145 METHOD3 DLOAD BPL # COFZ MAX
017215,000239: # Page 398
017216,000240: 22,2261 03315 COFSKEW +4 # UZ
017217,000241: 22,2262 44266 U3POS
017218,000242: 22,2263 57575 VLOAD VCOMP
017219,000243: 22,2264 03343 COF
017220,000244: 22,2265 03343 STORE COF
017221,000245: 22,2266 51145 U3POS DLOAD BPL
017222,000246: 22,2267 03273 MFISYM +4 # UX UZ
017223,000247: 22,2270 44274 CKU31
017224,000248: 22,2271 57545 DLOAD DCOMP
017225,000249: 22,2272 03343 COF # SIGN OF UX OPPOSITE TO UZ
017226,000250: 22,2273 03343 STORE COF
017227,000251: 22,2274 51145 CKU31 DLOAD BPL
017228,000252: 22,2275 03301 MFISYM +10D # UY UZ
017229,000253: 22,2276 44736 LOCSKIRT
017230,000254: 22,2277 57545 DLOAD DCOMP
017231,000255: 22,2300 03345 COF +2 # SIGN OF UY OPPOSITE TO UZ
017232,000256: 22,2301 03345 STORE COF +2
017233,000257: 22,2302 77650 GOTO
017234,000258: 22,2303 44736 LOCSKIRT
017235,000259:
017236,000260: # Page 399
017237,000261: # MATRIX OPERATIONS
017238,000262:
017239,000263: 22,2304 77601 MXM3 SETPD # MXM3 MULTIPLIES 2 3X3 MATRICES
017240,000264: 22,2305 00001 0 # AND LEAVES RESULT IN PD LIST
017241,000265: 22,2306 64743 DLOAD* PDDL* # ADDRESS OF 1ST MATRIX IN XR1
017242,000266: 22,2307 77762 12D,2 # ADDRESS OF 2ND MATRIX IN XR2
017243,000267: 22,2310 77770 6,2
017244,000268: 22,2311 55523 PDDL* VDEF # DEFINE VECTOR M2(COL 1)
017245,000269: 22,2312 77776 0,2
017246,000270: 22,2313 64717 MXV* PDDL* # M1XM2(COL 1) IN PD
017247,000271: 22,2314 00001 0,1
017248,000272: 22,2315 77760 14D,2
017249,000273: 22,2316 64723 PDDL* PDDL*
017250,000274: 22,2317 77766 8D,2
017251,000275: 22,2320 77774 2,2
017252,000276: 22,2321 63666 VDEF MXV* # DEFINE VECTOR M2(COL 2)
017253,000277: 22,2322 00001 0,1
017254,000278: 22,2323 64723 PDDL* PDDL* # M1XM2(COL2) IN PD
017255,000279: 22,2324 77756 16D,2
017256,000280: 22,2325 77764 10D,2
017257,000281: 22,2326 55523 PDDL* VDEF # DEFINE VECTOR M2(COL 3)
017258,000282: 22,2327 77772 4,2
017259,000283: 22,2330 41517 MXV* PUSH # M1XM2(COL 3) IN PD
017260,000284: 22,2331 00001 0,1
017261,000285: 22,2332 77650 GOTO
017262,000286: 22,2333 44343 TRNSPSPD # REVERSE ROWS AND COLS IN PD AND
017263,000287: # RETURN WITH M1XM2 IN PD LIST
017264,000288: 22,2334 76601 TRANSPOS SETPD VLOAD* # TRANSPOS TRANSPOSES A 3X3 MATRIX
017265,000289: 22,2335 00001 0 # AND LEAVES RESULT IN PD LIST
017266,000290: 22,2336 00001 0,1 # MATRIX ADDRESS IN XR1
017267,000291: 22,2337 62713 PDVL* PDVL*
017268,000292: 22,2340 00007 6,1
017269,000293: 22,2341 00015 12D,1
017270,000294: 22,2342 77606 PUSH # MATRIX IN PD
017271,000295: 22,2343 65345 TRNSPSPD DLOAD PDDL # ENTER WITH MATRIX IN PD LIST
017272,000296: 22,2344 00003 2
017273,000297: 22,2345 00007 6
017274,000298: 22,2346 14003 STODL 2
017275,000299: 22,2347 77626 STADR
017276,000300: 22,2350 63770 STODL 6
017277,000301: 22,2351 00005 4
017278,000302: 22,2352 77725 PDDL
017279,000303: 22,2353 00015 12D
017280,000304: 22,2354 14005 STODL 4
017281,000305: 22,2355 77626 STADR
017282,000306: 22,2356 63762 STODL 12D
017283,000307: 22,2357 00013 10D
017284,000308: 22,2360 77725 PDDL
017285,000309: # Page 400
017286,000310: 22,2361 00017 14D
017287,000311: 22,2362 14013 STODL 10D
017288,000312: 22,2363 77626 STADR
017289,000313: 22,2364 77760 STORE 14D
017290,000314: 22,2365 77616 RVQ # RETURN WITH TRANSPOSED MATRIX IN PD LIST
017291,000315: 22,2366 00013 MINANG DEC .00069375
017292,000316: 22,2367 17071 MAXANG DEC .472222
017293,000317:
017294,000318: # GIMBAL LOCK CONSTANTS
017295,000319:
017296,000320: # D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES
017297,000321: # NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES
017298,000322:
017299,000323: 22,2370 15667 SD DEC .433015 # = SIN(D)
017300,000324: 22,2371 33555 K3S1 DEC .86603 # = SIN(D)
017301,000325: 22,2372 67777 K4 DEC -.25 # = -COS(D)
017302,000326: 22,2373 04000 K4SQ DEC .125 # = COS(D)COS(D)
017303,000327: 22,2374 00217 SNGLCD DEC .008725 # = SIN(NGL)COS(D)
017304,000328: 22,2375 17773 CNGL DEC .499695 # = COS(NGL)
017305,000329: 22,2376 00004 READCDUK INHINT # LOAD T(MPAC) WITH THE CURRENT CDU ANGLES
017306,000330: 22,2377 30034 CA CDUZ
017307,000331: 22,2400 54156 TS MPAC +2
017308,000332: 22,2401 00006 EXTEND
017309,000333: 22,2402 30033 DCA CDUX
017310,000334: 22,2403 00003 RELINT
017311,000335: 22,2404 16445 TCF TLOAD +6
017312,000336: 16,2000 BANK 16
017313,000337: 22,2000 SETLOC KALCMON2
017314,000338: 22,2000 BANK
017315,000339:
017316,000340: 22,2405 COUNT* $$/KALC
017317,000341:
017318,000342: 22,2405 66370 CDUTODCM AXT,1 SSP # SUBROUTINE TO COMPUTE DIRECTION COSINE
017319,000343: 22,2406 00003 OCT 3 # MATRIX RELATING S/C AXES TO STARLE
017320,000344: 22,2407 00051 S1 # MEMBER AXES FROM 3 CDU ANGLES IN T(MPAC)
017321,000345: 22,2410 00001 OCT 1 # SET XR1, S1, AND PD FOR LOOP
Hello!
017322,000346: 22,2411 00010 STORE 7
017323,000347: 22,2412 77601 SETPD
017324,000348: 22,2413 00001 0
017325,000349: 22,2414 47133 LOOPSIN SLOAD* RTB
017326,000350: 22,2415 00013 10D,1
017327,000351: 22,2416 45510 CDULOGIC
017328,000352: 22,2417 00013 STORE 10D # LOAD PD WITH 0 SIN(PHI)
017329,000353: 22,2420 65356 SIN PDDL # 2 COS(PHI)
017330,000354: 22,2421 00013 10D # 4 SIN(THETA)
017331,000355: 22,2422 41546 COS PUSH # 6 COS(THETA)
017332,000356: 22,2423 71300 TIX,1 DLOAD # 8 SIN(PSI)
017333,000357: 22,2424 44414 LOOPSIN # 10 COS(PSI)
017334,000358: 22,2425 00007 6
017335,000359: 22,2426 72405 DMP SL1
017336,000360: 22,2427 00013 10D
017337,000361: # Page 401
017338,000362: 22,2430 10001 STORE 0,2
017339,000363: 22,2431 77745 DLOAD
017340,000364: 22,2432 00005 4
017341,000365: 22,2433 65205 DMP PDDL
017342,000366: 22,2434 00001 0 # (PD6 SIN(THETA)SIN(PHI))
017343,000367: 22,2435 00007 6
017344,000368: 22,2436 41205 DMP DMP
017345,000369: 22,2437 00011 8D
017346,000370: 22,2440 00003 2
017347,000371: 22,2441 44352 SL1 BDSU
017348,000372: 22,2442 00015 12D
017349,000373: 22,2443 77752 SL1
017350,000374: 22,2444 10003 STORE 2,2
017351,000375: 22,2445 77745 DLOAD
017352,000376: 22,2446 00003 2
017353,000377: 22,2447 65205 DMP PDDL # (PD7 COS(PHI)SIN(THETA)) SCALED 4
017354,000378: 22,2450 00005 4
017355,000379: 22,2451 00007 6
017356,000380: 22,2452 41205 DMP DMP
017357,000381: 22,2453 00011 8D
017358,000382: 22,2454 00001 0
017359,000383: 22,2455 77752 SL1
017360,000384: 22,2456 72415 DAD SL1
017361,000385: 22,2457 00017 14D
017362,000386: 22,2460 10005 STORE 4,2
017363,000387: 22,2461 77745 DLOAD
017364,000388: 22,2462 00011 8D
017365,000389: 22,2463 10007 STORE 6,2
017366,000390: 22,2464 77745 DLOAD
017367,000391: 22,2465 00013 10D
017368,000392: 22,2466 72405 DMP SL1
017369,000393: 22,2467 00003 2
017370,000394: 22,2470 10011 STORE 8D,2
017371,000395: 22,2471 77745 DLOAD
017372,000396: 22,2472 00013 10D
017373,000397: 22,2473 57405 DMP DCOMP
017374,000398: 22,2474 00001 0
017375,000399: 22,2475 77752 SL1
017376,000400: 22,2476 10013 STORE 10D,2
017377,000401: 22,2477 77745 DLOAD
017378,000402: 22,2500 00005 4
017379,000403: 22,2501 57405 DMP DCOMP
017380,000404: 22,2502 00013 10D
017381,000405: 22,2503 77752 SL1
017382,000406: 22,2504 10015 STORE 12D,2
017383,000407: 22,2505 77745 DLOAD
017384,000408: 22,2506 72405 DMP SL1 # (PUSH UP 7)
017385,000409: 22,2507 00011 8D
017386,000410: 22,2510 41325 PDDL DMP # (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE 4
017387,000411: 22,2511 00007 6
017388,000412: # Page 402
017389,000413: 22,2512 00001 0
017390,000414: 22,2513 72415 DAD SL1 # (PUSH UP 7)
017391,000415: 22,2514 77626 STADR # C7=COS(PHI)SIN(THETA)SIN(PSI)
017392,000416: 22,2515 67760 STORE 14D,2
017393,000417: 22,2516 77745 DLOAD
017394,000418: 22,2517 72405 DMP SL1 # (PUSH UP 6)
017395,000419: 22,2520 00011 8D
017396,000420: 22,2521 41325 PDDL DMP # (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE 4
017397,000421: 22,2522 00007 6
017398,000422: 22,2523 00003 2
017399,000423: 22,2524 72425 DSU SL1 # (PUSH UP 6)
017400,000424: 22,2525 77626 STADR
017401,000425: 22,2526 67756 STORE 16D,2 # C8=-SIN(THETA)SIN(PHI)SIN(PSI)
017402,000426: 22,2527 77616 RVQ # +COS(THETA)COS(PHI)
017403,000427: 22,2530 ENDOCM EQUALS
017404,000428: 15,2000 BANK 15
017405,000429: 22,2000 SETLOC KALCMON1
017406,000430: 22,2000 BANK
017407,000431:
017408,000432: # CALCULATION OF THE MATRIX DEL.......
017409,000433:
017410,000434: # * * __T *
017411,000435: # DEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A) SCALED 1
017412,000436:
017413,000437: # _
017414,000438: # WHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION.
017415,000439: # A IS THE ANGLE OF ROTATION (DP SCALED 2).
017416,000440: # _
017417,000441: # UPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC.
017418,000442:
017419,000443: 22,2530 COUNT 22/KALC
017420,000444:
017421,000445: 22,2530 41401 DELCOMP SETPD PUSH # MPAC CONTAINS THE ANGLE A
017422,000446: 22,2531 00001 0
017423,000447: 22,2532 65356 SIN PDDL # PD0 = SIN(A)
017424,000448: 22,2533 41546 COS PUSH # PD2 = COS(A)
017425,000449: 22,2534 65302 SR2 PDDL # PD2 = COS(A)
017426,000450: 22,2535 41021 BDSU BOVB # PD4 = 1-COS(A)
017427,000451: 22,2536 15330 DPHALF
017428,000452: 22,2537 45707 SIGNMPAC
017429,000453:
017430,000454: # COMPUTE THE DIAGONAL COMPONENTS OF DEL
017431,000455:
017432,000456: 22,2540 77725 PDDL
017433,000457: 22,2541 03343 COF
017434,000458: 22,2542 41316 DSQ DMP
017435,000459: 22,2543 00005 4
017436,000460: 22,2544 52415 DAD SL3
017437,000461: # Page 403
017438,000462: 22,2545 00003 2
017439,000463: 22,2546 77604 BOVB
017440,000464: 22,2547 45707 SIGNMPAC
017441,000465: 22,2550 17426 STODL DEL # UX UX(U-COS(A)) +COS(A)
017442,000466: 22,2551 03345 COF +2
017443,000467: 22,2552 41316 DSQ DMP
017444,000468: 22,2553 00005 4
017445,000469: 22,2554 52415 DAD SL3
017446,000470: 22,2555 00003 2
017447,000471: 22,2556 77604 BOVB
017448,000472: 22,2557 45707 SIGNMPAC
017449,000473: 22,2560 17436 STODL DEL +8D # UY UY(1-COS(A)) +COS(A)
017450,000474: 22,2561 03347 COF +4
017451,000475: 22,2562 41316 DSQ DMP
017452,000476: 22,2563 00005 4
017453,000477: 22,2564 52415 DAD SL3
017454,000478: 22,2565 00003 2
017455,000479: 22,2566 77604 BOVB
017456,000480: 22,2567 45707 SIGNMPAC
017457,000481: 22,2570 03446 STORE DEL +16D # UZ UZ(1-COS(A)) +COS(A)
017458,000482:
017459,000483: # COMPUTE THE OFF-DIAGONAL TERMS OF DEL
017460,000484:
017461,000485: 22,2571 41345 DLOAD DMP
017462,000486: 22,2572 03343 COF
017463,000487: 22,2573 03345 COF +2
017464,000488: 22,2574 72405 DMP SL1
017465,000489: 22,2575 00005 4
017466,000490: 22,2576 41325 PDDL DMP # D6 UX UY (1-COS A)
017467,000491: 22,2577 03347 COF +4
017468,000492: 22,2600 00001 0
017469,000493: 22,2601 43206 PUSH DAD # D8 UZ SIN A
017470,000494: 22,2602 00007 6
017471,000495: 22,2603 41112 SL2 BOVB
017472,000496: 22,2604 45707 SIGNMPAC
017473,000497: 22,2605 17434 STODL DEL +6
017474,000498: 22,2606 62421 BDSU SL2
017475,000499: 22,2607 77604 BOVB
017476,000500: 22,2610 45707 SIGNMPAC
017477,000501: 22,2611 17430 STODL DEL +2
017478,000502: 22,2612 03343 COF
017479,000503: 22,2613 41205 DMP DMP
017480,000504: 22,2614 03347 COF +4
017481,000505: 22,2615 00005 4
017482,000506: 22,2616 65352 SL1 PDDL # D6 UX UZ (1-COS A)
017483,000507: 22,2617 03345 COF +2
017484,000508: 22,2620 41405 DMP PUSH # D8 UY SIN(A)
017485,000509: 22,2621 00001 0
017486,000510: 22,2622 62415 DAD SL2
017487,000511: 22,2623 00007 6
017488,000512: # Page 404
017489,000513: 22,2624 77604 BOVB
017490,000514: 22,2625 45707 SIGNMPAC
017491,000515: 22,2626 17432 STODL DEL +4 # UX UZ (1-COS(A))+UY SIN(A)
017492,000516: 22,2627 62421 BDSU SL2
017493,000517: 22,2630 77604 BOVB
017494,000518: 22,2631 45707 SIGNMPAC
017495,000519: 22,2632 17442 STODL DEL +12D # UX UZ (U-COS(A))-UY SIGN(A)
017496,000520: 22,2633 03345 COF +2
017497,000521: 22,2634 41205 DMP DMP
017498,000522: 22,2635 03347 COF +4
017499,000523: 22,2636 00005 4
017500,000524: 22,2637 65352 SL1 PDDL # D6 UY UZ (1-COS(A))
017501,000525: 22,2640 03343 COF
017502,000526: 22,2641 41405 DMP PUSH # D6 UX SIN(A)
017503,000527: 22,2642 00001 0
017504,000528: 22,2643 62415 DAD SL2
017505,000529: 22,2644 00007 6
017506,000530: 22,2645 77604 BOVB
017507,000531: 22,2646 45707 SIGNMPAC
017508,000532: 22,2647 17444 STODL DEL +14D # UY UZ(1-COS(A)) +UX SIN(A)
017509,000533: 22,2650 62421 BDSU SL2
017510,000534: 22,2651 77604 BOVB
017511,000535: 22,2652 45707 SIGNMPAC
017512,000536: 22,2653 03440 STORE DEL +10D # UY UZ(1-COS(A)) -UX SIN(A)
017513,000537: 22,2654 77616 RVQ
017514,000538:
017515,000539: # DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE
017516,000540: # X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2)
017517,000541: # LEAVES CDU ANGLES SCALED 2PI IN V(MPAC)
017518,000542: # COS(MGA) WILL BE LEFT IN S1 (SCALED 1)
017519,000543:
017520,000544: # THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS ***
017521,000545:
017522,000546: # C =COS(THETA)COS(PSI)
017523,000547: # 0
017524,000548:
017525,000549: # C =-COS(THETA)SIN(PSI)COS(PHI)+SIN(THETA)SIN(PHI)
017526,000550: # 1
017527,000551:
017528,000552: # C =COS(THETA)SIN(PSI)SIN(PHI)+SIN(THETA)COS(PHI)
017529,000553: # 2
017530,000554:
017531,000555: # C =SIN(PSI)
017532,000556: # 3
017533,000557:
017534,000558: # C =COS(PSI)COS(PHI)
017535,000559: # 4
017536,000560:
017537,000561: # C =-COS(PSI)SIN(PHI)
017538,000562: # 5
017539,000563:
017540,000564: # C =-SIN(THETA)COS(PSI)
017541,000565: # 6
017542,000566:
017543,000567: # C =SIN(THETA)SIN(PSI)COS(PHI)+COS(THETA)SIN(PHI)
017544,000568: # 7
017545,000569: # Page 405
017546,000570: # C =-SIN(THETA)SIN(PSI)SIN(PHI)+COS(THETA)COS(PHI)
017547,000571: # 8
017548,000572:
017549,000573: # WHERE PHI = OGA
017550,000574: # THETA = IGA
017551,000575: # PSI = MGA
017552,000576:
017553,000577: 22,2655 67543 DCMTOCDU DLOAD* ARCSIN
017554,000578: 22,2656 00007 6,1
017555,000579: 22,2657 71406 PUSH COS # PD +0 PSI
017556,000580: 22,2660 41152 SL1 BOVB
017557,000581: 22,2661 45707 SIGNMPAC
017558,000582: 22,2662 00051 STORE S1
017559,000583: 22,2663 57543 DLOAD* DCOMP
017560,000584: 22,2664 00015 12D,1
017561,000585: 22,2665 67471 DDV ARCSIN
017562,000586: 22,2666 00051 S1
017563,000587: 22,2667 51123 PDDL* BPL # PD +2 THETA
017564,000588: 22,2670 00001 0,1 # MUST CHECK THE SIGN OF COS(THETA)
017565,000589: 22,2671 44703 CKTHETA # TO DETERMINE THE PROPER QUADRANT
017566,000590: 22,2672 57545 DLOAD DCOMP
017567,000591: 22,2673 43244 BPL DAD
017568,000592: 22,2674 44700 SUHALFA
017569,000593: 22,2675 15330 DPHALF
017570,000594: 22,2676 77650 GOTO
017571,000595: 22,2677 44702 CALCPHI
017572,000596: 22,2700 77625 SUHALFA DSU
017573,000597: 22,2701 15330 DPHALF
017574,000598: 22,2702 77606 CALCPHI PUSH
017575,000599: 22,2703 57543 CKTHETA DLOAD* DCOMP
017576,000600: 22,2704 00013 10D,1
017577,000601: 22,2705 67471 DDV ARCSIN
017578,000602: 22,2706 00051 S1
017579,000603: 22,2707 51123 PDDL* BPL # PUSH DOWN PHI
017580,000604: 22,2710 00011 8D,1
017581,000605: 22,2711 44723 CKPHI
017582,000606: 22,2712 57545 DLOAD DCOMP # PUSH UP PHI
017583,000607: 22,2713 43244 BPL DAD
017584,000608: 22,2714 44720 SUHALFAP
017585,000609: 22,2715 15330 DPHALF
017586,000610: 22,2716 77650 GOTO
017587,000611: 22,2717 44724 VECOFANG
017588,000612: 22,2720 52025 SUHALFAP DSU GOTO
017589,000613: 22,2721 15330 DPHALF
017590,000614: 22,2722 44724 VECOFANG
017591,000615: 22,2723 77745 CKPHI DLOAD # PUSH UP PHI
017592,000616: 22,2724 43466 VECOFANG VDEF RVQ
017593,000617:
017594,000618: # Page 406
017595,000619: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
017596,000620:
017597,000621: 22,2725 00004 NOGOM2 INHINT # THIS LOCATION ACCESSED BY A BZMF NOGO -2
017598,000622: 22,2726 03272 TC ZEROERROR
017599,000623:
017600,000624: 22,2727 00004 NOGO INHINT
017601,000625: 22,2730 03245 TC STOPRATE
017602,000626:
017603,000627: # TERMINATE MANEUVER
017604,000628: 22,2731 34711 CAF TWO # NOTE: ALL RETURNS ARE NOW MADE VIA
017605,000629: 22,2732 05140 TC WAITLIST # GOODEND
017606,000630: 22,2733 40,2000 SBANK= PINSUPER
017607,000631: 22,2733 E6,1661 EBANK= BCDU
017608,000632: 22,2733 03237 44106 2CADR ENDMANU
017609,000633:
017610,000634: 22,2735 15112 TCF ENDOFJOB
017611,000635:
End of include-file ANGLFIND.agc. Parent file is MAIN.agc