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