Source Code

019948,000001: # Copyright: Public domain. 019949,000002: # Filename: R60_62.agc 019950,000003: # Purpose: A section of Luminary 1C, revision 131. 019951,000004: # It is part of the source code for the Lunar Module's (LM) 019952,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 019953,000006: # This file is intended to be a faithful transcription, except 019954,000007: # that the code format has been changed to conform to the 019955,000008: # requirements of the yaYUL assembler rather than the 019956,000009: # original YUL assembler. 019957,000010: # Reference: pp. 481-494 of 1729.pdf. 019958,000011: # Contact: Ron Burkey <info@sandroid.org>. 019959,000012: # Website: www.ibiblio.org/apollo/index.html 019960,000013: # Mod history: 05/14/03 RSB. Began transcribing. 019961,000014: # 05/14/05 RSB Corrected website reference above. 019962,000015: 019963,000016: # Page 481 019964,000017: # MOD NO: 0 DATE: 1 MAY 1968 019965,000018: # MOD BY: DIGITAL DEVEL GROUP LOG SECTION R60,R62 019966,000019: 019967,000020: # FUNCTIONAL DESCRIPTION: 019968,000021: 019969,000022: # CALLED AS A GENERAL SUBROUTINE TO MANEUVER THE LM TO A SPECIFIED 019970,000023: # ATTITUDE. 019971,000024: 019972,000025: # 1. IF THE 3-AXIS FLAG IS NOT SET THE FINAL CDU ANGLES ARE 019973,000026: # CALCULATED (VECPOINT). 019974,000027: 019975,000028: # 2. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS). 019976,000029: 019977,000030: # 3. REQUEST FLASHING DISPLAY V50 N18 PLEASE PERFORM AUTO MANEUVER. 019978,000031: 019979,000032: # 4. IF PRIORITY DISPLAY FLAG IS SET TO A PHASECHANGE. THEN AWAIT 019980,000033: # ASTRONAUT RESPONSE. 019981,000034: 019982,000035: # 5. DISPLAY RESPONSE RETURNS. 019983,000036: 019984,000037: # A. ENTER -- RESET 3-AXIS FLAG AND RETURN TO CLIENT. 019985,000038: 019986,000039: # B. TERMINATE -- IF IN P00 GO TO STEP 5A. OTHERWISE CHECK IF R61 IS 019987,000040: # THE CALLING PROGRAM. IF IN R61 AN EXIT IS MADE TO GOTOV56. IF 019988,000041: # NOT IN R61 AND EXIT IS DONE VIA GOTOP00H. 019989,000042: 019990,000043: # C. PROCEED -- CONTINUE WITH PROGRAM AT STEP 6. 019991,000044: 019992,000045: # 6. IF THE 3-AXIS FLAG IS NOT SET, THE FINAL CDU ANGLES ARE CALCULATED 019993,000046: # (VECPOINT). 019994,000047: 019995,000048: # 7. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS). 019996,000049: 019997,000050: # 8. IF THE G+N SWITCH IS NOT SET GO BACK TO STEP 3. 019998,000051: # 019999,000052: # 9. IF THE AUTO SWITCH IS NOT SET GO BACK TO STEP 3. 020000,000053: 020001,000054: # 10. NON-FLASHING DISPLAY V06N18 (FDAI ANGLES). 020002,000055: 020003,000056: # 11. DO A PHASE-CHANGE. 020004,000057: 020005,000058: # 12. DO A MANEUVER CALCULATION AND ICDU DRIVE ROUTINE TO ACHIEVE FINAL 020006,000059: # GIMBAL ANGLES (GOMANUR). 020007,000060: 020008,000061: # 13. AT END OF MANEUVER TO TO STEP 3. 020009,000062: 020010,000063: # IF SATISFACTORY MANEUVER STEP 5A EXITS R60. 020011,000064: # FOR FURTHER ADJUSTMENT OF THE VEHICLE ATTITUDE ABOUT THE 020012,000065: # DESIRED VECTOR, THE ROUTINE MAY BE PERFORMED AGAIN STARTING AT 020013,000066: # Page 482 020014,000067: # STEP 5C. 020015,000068: 020016,000069: # CALLING SEQUENCE: TC BANKCALL 020017,000070: # CADR R60LEM 020018,000071: 020019,000072: # ERASABLE INITIALIZATION REQUIRED: SCAXIS, POINTVSM (FOR VECPOINT) 020020,000073: # 3AXISFLG. 020021,000074: 020022,000075: # SUBROUTINES CALLED: VECPOINT, BALLANGS, GOPERF24, LINUS, GOSPER, 020023,000076: # GOMANUR, DOWNFLAG, PHASCHNG, UPFLAG 020024,000077: 020025,000078: # NORMAL EXIT MODES: CAE TEMPR60 (CALLER'S RETURN ADDRESS) 020026,000079: # TC BANKJUMP 020027,000080: 020028,000081: # ALARMS: NONE 020029,000082: 020030,000083: # OUTPUT: NONE 020031,000084: 020032,000085: # DEBRIS: CPHI, CTHETA, CPSI, 3AXISFLG, TBASE2 020033,000086: 020034,000087: 34,2000 BANK 34 020035,000088: 26,2000 SETLOC MANUVER 020036,000089: 26,2000 BANK 020037,000090: 020038,000091: 26,2123 1163 EBANK= TEMPR60 020039,000092: 020040,000093: 26,2123 COUNT* $$/R06 020041,000094: 26,2123 04645 R60LEM TC MAKECADR 020042,000095: 26,2124 55163 TS TEMPR60 020043,000096: 020044,000097: 26,2125 34746 REDOMANN CAF 3AXISBIT 020045,000098: 26,2126 70101 MASK FLAGWRD5 # IS 3-AXIS FLAG SET 020046,000099: 26,2127 10000 CCS A 020047,000100: 26,2130 12136 TCF TOBALL # YES 020048,000101: 26,2131 06042 TC INTPRET 020049,000102: 26,2132 77624 CALL 020050,000103: 26,2133 56040 VECPOINT # TO COMPUTE FINAL ANGLES 020051,000104: 26,2134 00322 STORE CPHI # STORE FINAL ANGLES -- CPHI, CTHETA, CPSI 020052,000105: 26,2135 77776 EXIT 020053,000106: 020054,000107: 26,2136 05504 TOBALL TC UPFLAG # INSURE THAT TOTAL ATTITUDE ERRORS ARE 020055,000108: 26,2137 00013 ADRES NEEDLFLG # DISPLAYED ON FDAI ERROR NEEDLES 020056,000109: 26,2140 05516 TC DOWNFLAG 020057,000110: 26,2141 00000 ADRES NEED2FLG 020058,000111: 26,2142 04616 TC BANKCALL 020059,000112: 26,2143 54272 CADR BALLANGS # TO CONVERT ANGLES TO FDAI 020060,000113: 26,2144 32260 TOBALLA CAF V06N18 020061,000114: 26,2145 04616 TC BANKCALL 020062,000115: # Page 483 020063,000116: 26,2146 20711 CADR GOPERF2R # DISPLAY PLEASE PERFORM AUTO MANEUVER 020064,000117: 26,2147 02246 TC R61TEST 020065,000118: 26,2150 02154 TC REDOMANC # PROCEED 020066,000119: 26,2151 02201 TC ENDMANU1 # ENTER I.E., FINISHED WITH R60 020067,000120: 26,2152 02205 TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS 020068,000121: 26,2153 05155 TC ENDOFJOB 020069,000122: 020070,000123: 26,2154 34746 REDOMANC CAF 3AXISBIT 020071,000124: 26,2155 70101 MASK FLAGWRD5 # IS 3-AXIS FLAG SET 020072,000125: 26,2156 10000 CCS A 020073,000126: 26,2157 12165 TCF TOBALLC # YES 020074,000127: 26,2160 06042 TC INTPRET 020075,000128: 26,2161 77624 CALL 020076,000129: 26,2162 56040 VECPOINT # TO COMPUTE FINAL ANGLES 020077,000130: 26,2163 00322 STORE CPHI # STORE ANGLES 020078,000131: 26,2164 77776 EXIT 020079,000132: 020080,000133: 26,2165 04616 TOBALLC TC BANKCALL 020081,000134: 26,2166 54272 CADR BALLANGS # TO CONVERT ANGLES TO FDAI 020082,000135: 26,2167 02261 TC G+N,AUTO # CHECK AUTO MODE 020083,000136: 26,2170 10000 CCS A 020084,000137: 26,2171 12144 TCF TOBALLA # NOT AUTO, GO REREQUEST AUTO MANEUVER. 020085,000138: 020086,000139: 26,2172 32260 AUTOMANV CAF V06N18 # STATIC DISPLAY DURING AUTO MANEUVER 020087,000140: 26,2173 04616 TC BANKCALL 020088,000141: 26,2174 20452 CADR GODSPR 020089,000142: 26,2175 02205 TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS 020090,000143: 020091,000144: 26,2176 04616 STARTMNV TC BANKCALL # PERFORM MANEUVER VIA KALCMANU 020092,000145: 26,2177 17741 CADR GOMANUR 020093,000146: 020094,000147: 26,2200 12144 ENDMANUV TCF TOBALLA # FINISHED MANEUVER. 020095,000148: 26,2201 05516 ENDMANU1 TC DOWNFLAG # RESET 3-AXIS FLAG 020096,000149: 26,2202 00124 ADRES 3AXISFLG 020097,000150: 26,2203 31163 CAE TEMPR60 020098,000151: 26,2204 04640 TC BANKJUMP 020099,000152: 020100,000153: 26,2205 40100 CHKLINUS CS FLAGWRD4 020101,000154: 26,2206 74740 MASK PDSPFBIT # IS PRIORITY DISPLAY FLAG SET? 020102,000155: 26,2207 10000 CCS A 020103,000156: 26,2210 00002 TC Q # NO -- EXIT 020104,000157: 26,2211 30002 CA Q 020105,000158: 26,2212 54156 TS MPAC +2 # SAVE RETURN 020106,000159: 26,2213 46250 CS THREE # OBTAIN LOCATION FOR RESTART 020107,000160: 26,2214 60133 AD BUF2 # HOLD Q OF LAST DISPLAY 020108,000161: 26,2215 55054 TS TBASE2 020109,000162: 020110,000163: 26,2216 05353 TC PHASCHNG 020111,000164: 26,2217 00132 OCT 00132 020112,000165: # Page 484 020113,000166: 26,2220 34745 CAF BIT7 020114,000167: 26,2221 05464 TC LINUS # GO SET BITS FOR PRIORITY DISPLAY 020115,000168: 26,2222 00156 TC MPAC +2 020116,000169: 020117,000170: 26,2223 37717 RELINUS CAF PRIO26 # RESTORE ORIGINAL PRIORITY 020118,000171: 26,2224 05146 TC PRIOCHNG 020119,000172: 020120,000173: 26,2225 34747 CAF TRACKBIT # DON'T CONTINUE R60 UNLESS TRACKFLAG ON. 020121,000174: 26,2226 70075 MASK FLAGWRD1 020122,000175: 26,2227 10000 CCS A 020123,000176: 26,2230 12243 TCF RER60 020124,000177: 020125,000178: 26,2231 34745 CAF RNDVZBIT # IS IT P20? 020126,000179: 26,2232 70074 MASK FLAGWRD0 020127,000180: 26,2233 10000 CCS A 020128,000181: 26,2234 02240 TC +4 # YES 020129,000182: 26,2235 05353 TC PHASCHNG # NO, MUST BE P25, SET 2.11 SPOT 020130,000183: 26,2236 40112 OCT 40112 020131,000184: 020132,000185: 26,2237 05155 TC ENDOFJOB 020133,000186: 020134,000187: 26,2240 05353 TC PHASCHNG # SET 2.7 SPOT FOR P20 020135,000188: 26,2241 40072 OCT 40072 020136,000189: 020137,000190: 26,2242 05155 TC ENDOFJOB 020138,000191: 020139,000192: 26,2243 05504 RER60 TC UPFLAG # SET PRIO DISPLAY FLAG AFTER RESTART 020140,000193: 26,2244 00077 ADRES PDSPFLAG 020141,000194: 020142,000195: 26,2245 01054 TC TBASE2 020143,000196: 020144,000197: 26,2246 31010 R61TEST CA MODREG # IF WE ARE IN P00 IT MUST BE V49 OR V89 020145,000198: 26,2247 00006 EXTEND 020146,000199: 26,2250 12201 BZF ENDMANU1 # THUS WE GO TO ENDEXT VIA USER 020147,000200: 020148,000201: 26,2251 30100 CA FLAGWRD4 # ARE WE IN R61 (P20 OR garbled) 020149,000202: 26,2252 74740 MASK PDSPFBIT 020150,000203: 26,2253 00006 EXTEND 020151,000204: 26,2254 16001 BZF GOTOP00H # NO 020152,000205: 26,2255 06025 TC GOTOV56 # YES 020153,000206: 020154,000207: 26,2256 20100 BIT14+7 OCT 20100 020155,000208: 26,2257 00203 OCT203 OCT 203 020156,000209: 26,2260 01422 V06N18 VN 0618 020157,000210: 020158,000211: # SUBROUTINE TO CHECK FOR G+N CONTROL, AUTO STABILIZATION 020159,000212: 020160,000213: # RETURNS WITH C(A) = + IF NOT SET FOR G+N, AUTO 020161,000214: # RETURNS WITH C(A) = +0 IF SWITCHES ARE SET 020162,000215: 020163,000216: 26,2261 00006 G+N,AUTO EXTEND 020164,000217: # Page 485 020165,000218: 26,2262 00030 READ CHAN30 020166,000219: 26,2263 74742 MASK BIT10 020167,000220: 26,2264 10000 CCS A 020168,000221: 26,2265 00002 TC Q # NOT IN G+N C(A) = - 020169,000222: 26,2266 00006 ISITAUTO EXTEND # CHECK FOR AUTO MODE 020170,000223: 26,2267 00031 READ CHAN31 020171,000224: 26,2270 74736 MASK BIT14 020172,000225: 26,2271 00002 TC Q # (+) = NOT IN AUTO, (+0) = AOK 020173,000226: 020174,000227: # Page 486 020175,000228: # PROGRAM DESCRIPTION BALLANGS 020176,000229: # MOD NO. LOG SECTION R60,R62 020177,000230: # WRITTEN BY RAMA M. AIYAWAR 020178,000231: 020179,000232: # FUNCTIONAL DESCRIPTION 020180,000233: 020181,000234: # COMPUTES LM FDAI BALL DISPLAY ANGLES 020182,000235: 020183,000236: # CALLING SEQUENCE 020184,000237: 020185,000238: # TC BALLANGS 020186,000239: 020187,000240: # NORMAL EXIT MODE 020188,000241: 020189,000242: # TC BALLEXIT # (SAVED Q) 020190,000243: 020191,000244: # ALARM OR EXIT MODE: NIL 020192,000245: 020193,000246: # SUBROUTINES CALLED 020194,000247: 020195,000248: # CD*TR*G 020196,000249: # ARCTAN 020197,000250: 020198,000251: # INPUT 020199,000252: 020200,000253: # CPHI,CTHETA,CPSI ARE THE ANGLES CORRESPONDING TO AOG, AIG, AMG. THEY ARE 020201,000254: # SP,2'S COMPLEMENT SCALED TO HALF REVOLUTION. 020202,000255: 020203,000256: # OUTPUT 020204,000257: 020205,000258: # FDAIX, FDAIY, FDAIZ ARE THE REQUIRED BALL ANGLES SCALED TO HALF REVOLUTION 020206,000259: # SP,2'S COMPEMENT. 020207,000260: 020208,000261: # THESE ANGLES WILL BE DISPLAYED AS DEGREES AND HUNDREDTHS, IN THE ORDER ROLL, PITCH, YAW, USING NOUNS 18 & 19. 020209,000262: 020210,000263: # ERASABLE INITIALIZATION REQUIRED 020211,000264: 020212,000265: # CPHI, CTHETA, CPSI EACH AN SP REGISTER 020213,000266: 020214,000267: # DEBRIS 020215,000268: 020216,000269: # A,L,Q,MPAC,SINCDU,COSCDU,PUSHLIST,BALLEXIT 020217,000270: 020218,000271: # NOMENCLATURE: CPHI, CTHETA, & CPSI REPRESENT THE OUTER, INNER, AND MIDDLE GIMBAL ANGLES, RESPECTIVELY; OR 020219,000272: # EQUIVALENTLY, CDUX, CDUY, AND CDUZ. 020220,000273: 020221,000274: # NOTE: ARCTAN CHECKS FOR OVERFLOW AND SHOULD BE ABLE TO HANDLE ANY SINGULARITIES. 020222,000275: 020223,000276: 26,2000 SETLOC BAWLANGS 020224,000277: 26,2000 BANK 020225,000278: 020226,000279: 26,2272 COUNT* $$/BALL 020227,000280: 26,2272 04645 BALLANGS TC MAKECADR 020228,000281: 26,2273 55337 TS BALLEXIT 020229,000282: 26,2274 30321 CA CPHI 020230,000283: # Page 487 020231,000284: 26,2275 54771 TS CDUSPOT +4 020232,000285: 26,2276 30322 CA CTHETA 020233,000286: 26,2277 54765 TS CDUSPOT 020234,000287: 26,2300 30323 CA CPSI 020235,000288: 26,2301 54767 TS CDUSPOT +2 020236,000289: 020237,000290: 26,2302 06042 TC INTPRET 020238,000291: 26,2303 45001 SETPD CALL 020239,000292: 26,2304 00001 0D 020240,000293: 26,2305 47545 CD*TR*G 020241,000294: 020242,000295: 26,2306 41345 DLOAD DMP 020243,000296: 26,2307 00742 SINCDUX # SIN (OGA) 020244,000297: 26,2310 00746 COSCDUZ # COS (MGA) 020245,000298: 020246,000299: 26,2311 57552 SL1 DCOMP # SCALE 020247,000300: 26,2312 65336 ARCSIN PDDL # YAW = ARCSIN(-SXCZ) INTO 0 PD 020248,000301: 26,2313 00740 SINCDUZ 020249,000302: 26,2314 14023 STODL SINTH # (SINTH = 18D IN PD) 020250,000303: 26,2315 00746 COSCDUZ 020251,000304: 26,2316 72405 DMP SL1 # RESCALE 020252,000305: 26,2317 00750 COSCDUX 020253,000306: 26,2320 34021 STCALL COSTH # (COSTH = 16D IN PD) 020254,000307: 26,2321 26506 ARCTAN 020255,000308: 26,2322 41325 PDDL DMP # ROLL = ARCTAN(SZ/CZCX) INTO 2 PD 020256,000309: 26,2323 00740 SINCDUZ 020257,000310: 26,2324 00742 SINCDUX 020258,000311: 26,2325 41512 SL2 PUSH # SXSZ INTO 4 PD 020259,000312: 26,2326 65205 DMP PDDL # SXSZCY INTO 4 PD 020260,000313: 26,2327 00744 COSCDUY 020261,000314: 26,2330 65205 DMP PDDL # SXSZSY INTO 6 PD 020262,000315: 26,2331 00736 SINCDUY 020263,000316: 26,2332 00750 COSCDUX 020264,000317: 26,2333 72405 DMP SL1 # CXCY 020265,000318: 26,2334 00744 COSCDUY 020266,000319: 26,2335 45425 DSU STADR # PULL UP FORM 6 PD 020267,000320: 26,2336 63756 STODL COSTH # COSTH = CXCY - SXSZSY 020268,000321: 26,2337 00736 SINCDUY 020269,000322: 26,2340 72405 DMP SL1 020270,000323: 26,2341 00750 COSCDUX # CXSY 020271,000324: 26,2342 45415 DAD STADR # PULL UP FORM 4 PD 020272,000325: 26,2343 43754 STCALL SINTH # SINTH = CXSY + SXSZCY 020273,000326: 26,2344 26506 ARCTAN # RETURNS WITH D(MPAC) = PITCH 020274,000327: 26,2345 55525 PDDL VDEF # PITCH INTO 2 PD, ROLL INTO MPAC FROM 2 PD 020275,000328: 26,2346 77634 RTB # VDEF MAKES V(MPAC) = ROLL, PITCH, YAW 020276,000329: 26,2347 21621 V1STO2S 020277,000330: 26,2350 02345 STORE FDAIX # MODE IS TP 020278,000331: 26,2351 77776 EXIT 020279,000332: 020280,000333: 26,2352 31337 ENDBALL CA BALLEXIT 020281,000334: 020282,000335: # Page 488 020283,000336: 26,2353 04640 TC BANKJUMP 020284,000337: 020285,000338: # Page 489 020286,000339: # PROGRAM DESCRIPTION -- VECPOINT 020287,000340: 020288,000341: # THIS INTERPRETIVE SUBROUTINE MAY BE USED TO POINT A SPACECRAFT AXIS IN A DESIRED DIRECTION. THE AXIS 020289,000342: # TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY 020290,000343: # BEGINNING WITH THE LOCATION CALLED SCAXIS. THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES. 020291,000344: # THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN 020292,000345: # SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM. THE COMPONENTS OF THIS 020293,000346: # VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES. WITH THIS INFORMTION VECPOINT COMPUTES A SET OF THREE GIMBAL 020294,000347: # ANGLES (2'S COMPLEMENT) CORRESPONDING TO THE CROSS-PRODUCT ROTATION BETWEEN SCAXIS AND POINTVSM AND STORES THEM 020295,000348: # IN T(MPAC) BEFORE RETURNING TO THE CALLER. 020296,000349: 020297,000350: # THIS ROTATION, HOWEVER, MAY BRING THE S/C INTO GIMBAL LOCK. WHEN POINTING A VECTOR IN THE Y-Z PLANE, 020298,000351: # THE TRANSPONDER AXIS, OR THE AOT FOR THE LEM, THE PROGRAM WILL CORRECT THIS PROGLEM BY ROTATING THE CROSS- 020299,000352: # PRODUCT ATTITUDE ABOUT POINTVSM BY A FIXED AMOUNT SUFFICIENT TO ROTATE THE DESIRED S/C ATTITUDE OUT OF GIMBAL 020300,000353: # LOCK. IF THE AXIS TO BE POINTED IS MORE THAN 40.6 DEGREES BUT LESS THAN 60.5 DEG FROM THE +X (OR -X) AXIS, 020301,000354: # THE ADDITIONAL ROTATION TO AVOID GIMBAL LOCK IS 35 DEGREES. IF THE AXIS IS MORE THAN 60.5 DEGREES FROM +X (OR -X) 020302,000355: # THE ADDITIONAL ROTATION IS 35 DEGREES. THE GIMBAL ANGLES CORRESPONDING TO THIS ATTITUDE ARE THEN COMPUTED AND 020303,000356: # STORED AS 2'S COMPLEMENT ANGLES N T(MPAC) BEFORE RETURNING TO THE CALLER. 020304,000357: 020305,000358: # WHEN POINTING THE X-AXIS, OR THE THRUST VECTOR, OR ANY VECTOR WITHIN 40.6 DEG OF THE X-AXIS, VECPOINT 020306,000359: # CANNOT CORRECT FOR A CROSS-PRODUCT ROTATION INTO GIMBAL LOCK. IN THIS CASE A PLATFORM REALIGNMENT WOULD BE 020307,000360: # REQUIRED TO POINT THE VECTOR IN THE DESIRED DIRECTION. AT PRESENT NO INDICATION IS GIVEN FOR THIS SITUATION 020308,000361: # EXCEPT THAT THE FINAL MIDDLE GIMBAL ANGLE IN MPAC +2 IS GREATER THAN 59 DEGREES. 020309,000362: 020310,000363: # CALLING SEQUENCE 020311,000364: 020312,000365: # 1) LOAD SCAXIS, POINTVSM 020313,000366: # 2) CALL 020314,000367: # VECPOINT 020315,000368: 020316,000369: # RETURNS WITH 020317,000370: 020318,000371: # 1) DESIRED OUTER GIMBAL ANGLE IN MPAC 020319,000372: # 2) DESIRED INNER GIMBAL ANGLE IN MPAC +1 020320,000373: # 3) DESIRED MIDDLE GIMBAL ANGLE IN MPAC +2 020321,000374: 020322,000375: # ERASABLES USED -- 020323,000376: 020324,000377: # 1) SCAXIS 6 020325,000378: # 2) POINTVSM 6 020326,000379: # 3) MIS 18 020327,000380: # 4) DEL 18 020328,000381: # 5) COF 6 020329,000382: # 6) VECQTEMP 1 020330,000383: # 7) ALL OF VAC AREA 43 020331,000384: 020332,000385: # TOTAL 99 020333,000386: 020334,000387: 27,2000 SETLOC VECPT 020335,000388: 27,2000 BANK 020336,000389: # Page 490 020337,000390: 27,2032 COUNT* $$/VECPT 020338,000391: 020339,000392: 27,2032 E6,1675 EBANK= BCDU 020340,000393: 020341,000394: 27,2032 40020 VECPNT1 STQ BOV # THIS ENTRY USES DESIRED CDUS 020342,000395: 27,2033 03324 VECQTEMP # NOT PRESENT -- ENTER WITH CDUD'S IN MPAC 020343,000396: 27,2034 56035 VECPNT2 020344,000397: 27,2035 52164 VECPNT2 AXC,2 GOTO 020345,000398: 27,2036 03245 MIS 020346,000399: 27,2037 56046 STORANG 020347,000400: 27,2040 40020 VECPOINT STQ BOV # SAVE RETURN ADDRESS 020348,000401: 27,2041 03324 VECQTEMP 020349,000402: 27,2042 56043 VECLEAR # AND CLEAR OVFIND 020350,000403: 27,2043 47164 VECLEAR AXC,2 RTB 020351,000404: 27,2044 03245 MIS # READ THE PRESENT CDU ANGLES AND 020352,000405: 27,2045 44403 READCDUK # STORE THEM IN PD25, 26, 27 020353,000406: 27,2046 34032 STORANG STCALL 25D 020354,000407: 27,2047 44410 CDUTODCM # S/C AXES TO STABLE MEMBER AXES (MIS) 020355,000408: 27,2050 61375 VLOAD VXM 020356,000409: 27,2051 03773 POINTVSM # RESOLVE THE POINTING DIRECTION VF INTO 020357,000410: 27,2052 03246 MIS # INITIAL S/C AXES (VF = POINTVSM) 020358,000411: 27,2053 77656 UNIT 020359,000412: 27,2054 00035 STORE 28D 020360,000413: # PD 28 29 30 31 32 33 020361,000414: 27,2055 53435 VXV UNIT # TAKE THE CROSS PRODUCT VF X VI 020362,000415: 27,2056 03765 SCAXIS # WHERE VI = SCAXIS 020363,000416: 27,2057 57400 BOV VCOMP 020364,000417: 27,2060 56170 PICKAXIS 020365,000418: 27,2061 17270 STODL COF # CHECK MAGNITUDE 020366,000419: 27,2062 00045 36D # OF CROSS PRODUCT 020367,000420: 27,2063 50025 DSU BMN # VECTOR, IF LESS 020368,000421: 27,2064 14415 DPB-14 # THAN B-14 ASSUME 020369,000422: 27,2065 56170 PICKAXIS # UNIT OPERATION 020370,000423: 27,2066 50375 VLOAD DOT # INVALID. 020371,000424: 27,2067 03765 SCAXIS 020372,000425: 27,2070 00035 28D 020373,000426: 27,2071 65552 SL1 ARCCOS 020374,000427: 27,2072 77624 COMPMATX CALL # NO COMPUTE THE TRANSFORMATION FROM 020375,000428: 27,2073 44527 DELCOMP # FINAL S/C AXES TO INITIAL S/C AXES MFI 020376,000429: 27,2074 75160 AXC,1 AXC,2 020377,000430: 27,2075 03245 MIS # COMPUTE THE TRANSFORMATION FROM FINAL 020378,000431: 27,2076 02230 KEL # S/C AXES TO STABLE MEMBER AXES 020379,000432: 27,2077 77624 CALL # MFS = MIS MFI 020380,000433: 27,2100 44312 MXM3 # (IN PD LIST) 020381,000434: 020382,000435: 27,2101 51545 DLOAD ABS 020383,000436: 27,2102 00007 6 # MFS6 = SIN(CPSI) 020384,000437: 27,2103 50025 DSU BMN 020385,000438: 27,2104 14402 SINGIMLC # = SIN(59 DEGS) 020386,000439: 27,2105 56160 FINDGIMB # /CPSI/ LESS THAN 59 DEGS. 020387,000440: # Page 491 020388,000441: # I.E., DESIRED ATTITUDE NOT IN GIMBAL LOCK 020389,000442: 020390,000443: 27,2106 51545 DLOAD ABS # CHECK TO SEE IF WE ARE POINTING 020391,000444: 27,2107 03765 SCAXIS # THE THRUST AXIS 020392,000445: 27,2110 51025 DSU BPL 020393,000446: 27,2111 14404 SINVEC1 # SIN 49.4 DEGS 020394,000447: 27,2112 56160 FINDGIMB # IF SO, WE ARE TRYING TO POINT IT INTO 020395,000448: 27,2113 77775 VLOAD # GIMBAL LOCK, ABORT COULD GO HERE 020396,000449: 27,2114 77626 STADR 020397,000450: 27,2115 50515 STOVL MIS +12D 020398,000451: 27,2116 77626 STADR # STORE MFS (IN PD LIST) IN MIS 020399,000452: 27,2117 50523 STOVL MIS +6 020400,000453: 27,2120 77626 STADR 020401,000454: 27,2121 50531 STOVL MIS 020402,000455: 27,2122 03254 MIS +6 # INNER GIMBAL AXIS IN FINAL S/C AXES 020403,000456: 27,2123 57444 BPL VCOMP # LOCATE THE IG AXIS DIRECTION CLOSEST TO 020404,000457: 27,2124 56125 IGSAMEX # FINAL X S/C AXIS 020405,000458: 020406,000459: 27,2125 50035 IGSAMEX VXV BMN # FIND THE SHORTEST WAY OF ROTATING THE 020407,000460: 27,2126 03765 SCAXIS # S/C OUT OF GIMBAL LOCK BY A ROTATION 020408,000461: 27,2127 56134 U=SCAXIS # ABOUT +- SCAXIS, I.E., IF (IG (SGN MFS3) 020409,000462: # X SCAXIS . XF) LESS THAN Q, U = SCAXIS 020410,000463: # OTHERWISE U = -SCAXIS. 020411,000464: 020412,000465: 27,2130 57575 VLOAD VCOMP 020413,000466: 27,2131 03765 SCAXIS 020414,000467: 27,2132 37270 STCALL COF # ROTATE ABOUT -SCAXIS 020415,000468: 27,2133 56137 CHEKAXIS 020416,000469: 27,2134 77775 U=SCAXIS VLOAD 020417,000470: 27,2135 03765 SCAXIS 020418,000471: 27,2136 03270 STORE COF # ROTATE ABOUT + SCAXIS 020419,000472: 27,2137 51545 CHEKAXIS DLOAD ABS 020420,000473: 27,2140 03765 SCAXIS # SEE IF WE ARE POINTING THE AOT 020421,000474: 27,2141 51025 DSU BPL 020422,000475: 27,2142 14406 SINVEC2 # SIN 29.5 DEGS 020423,000476: 27,2143 56147 PICKANG1 # IF SO, ROTATE 50 DEGS ABOUT +- SCAXIS 020424,000477: 27,2144 52145 DLOAD GOTO # IF NOT, MUST BE POINTING THE TRANSPONDER 020425,000478: 27,2145 14412 VECANG2 # OR SOME VECTOR IN THE Y, OR Z PLANE 020426,000479: 27,2146 56151 COMPMFSN # IN THIS CASE ROTATE 35 DEGS TO GET OUT 020427,000480: # OF GIMBAL LOCK (VECANG2 garbled) 020428,000481: 27,2147 77745 PICKANG1 DLOAD 020429,000482: 27,2150 14410 VECANG1 # =.50 DEGS. 020430,000483: 27,2151 77624 COMPMFSN CALL 020431,000484: 27,2152 44527 DELCOMP # COMPUTE THE ROTATION ABOUT SCAXIS TO 020432,000485: 27,2153 75160 AXC,1 AXC,2 # BRING MFS OUT OF GIMBAL LOCK 020433,000486: 27,2154 03245 MIS 020434,000487: 27,2155 02230 KEL 020435,000488: 27,2156 77624 CALL # COMPUTE THE NEW TRANSFORMATION FROM 020436,000489: 27,2157 44312 MXM3 # DESIRED S/C AXES TO STABLE MEMBER AXES 020437,000490: # WHICH WILL ALIGN VI WITH VF AND AVOID 020438,000491: # Page 492 020439,000492: # GIMBAL LOCK 020440,000493: 27,2160 45160 FINDGIMB AXC,1 CALL 020441,000494: 27,2161 00000 0 # EXTRACT THE COMMANDED CDU ANGLES FROM 020442,000495: 27,2162 44654 DCMTOCDU # THIS MATRIX 020443,000496: 27,2163 40234 RTB SETPD 020444,000497: 27,2164 21621 V1STO2S # CONVERT TO 2'S COMPLEMENT 020445,000498: 27,2165 00001 0 020446,000499: 27,2166 77650 GOTO 020447,000500: 27,2167 03324 VECQTEMP # RETURN TO CALLER 020448,000501: 020449,000502: 27,2170 50375 PICKAXIS VLOAD DOT # IF VF X VI = 0, FIND VF, VI 020450,000503: 27,2171 00035 28D 020451,000504: 27,2172 03765 SCAXIS 020452,000505: 27,2173 72240 BMN TLOAD 020453,000506: 27,2174 54354 ROT180 020454,000507: 27,2175 00032 25D 020455,000508: 27,2176 77650 GOTO # IF VF = VI, CDU DESIRED = PRESENT CDU 020456,000509: 27,2177 03324 VECQTEMP # PRESETN CDU ANGLES 020457,000510: 020458,000511: 35,2000 BANK 35 020459,000512: 26,2000 SETLOC MANUVER1 020460,000513: 26,2000 BANK 020461,000514: 26,2354 47375 ROT180 VLOAD VXV # IF VF, VI ANTI-PARALLEL, 180 DEG ROTATION 020462,000515: 26,2355 03254 MIS +6 # IS REQUIRED. Y STABLE MEMBER AXIS IN 020463,000516: 26,2356 06522 HIDPHALF # INITIAL S/C AXES. 020464,000517: 26,2357 47256 UNIT VXV # FIND Y(SM) X X(I) 020465,000518: 26,2360 03765 SCAXIS # FIND UNIT(VI X UNIT(Y(SM) X X(I))) 020466,000519: 26,2361 40056 UNIT BOV # I.E., PICK A VECTOR IN THE PLANE OF X(I), 020467,000520: 26,2362 54376 PICKX # Y(SM) PERPENDICULAR TO VI 020468,000521: 26,2363 17270 STODL COF 020469,000522: 26,2364 00045 36D # CHECK MAGNITUDE 020470,000523: 26,2365 50025 DSU BMN # OF THIS VECTOR. 020471,000524: 26,2366 14415 DPB-14 # IF LESS THAN B-14, 020472,000525: 26,2367 54376 PICKX # PICK X-AXIS. 020473,000526: 26,2370 77775 VLOAD 020474,000527: 26,2371 03270 COF 020475,000528: 26,2372 17270 XROT STODL COF 020476,000529: 26,2373 06522 HIDPHALF 020477,000530: 26,2374 77650 GOTO 020478,000531: 26,2375 56072 COMPMATX 020479,000532: 26,2376 52175 PICKX VLOAD GOTO # PICK THE XAXIS IN THIS CASE 020480,000533: 26,2377 06522 HIDPHALF 020481,000534: 26,2400 54372 XROT 020482,000535: 26,2401 15555 35172 SINGIMLC 2DEC .4285836003 # = SIN(59) 020483,000536: 26,2403 14113 36326 SINVEC1 2DEC .3796356537 # = SIN(49.4) 020484,000537: 26,2405 07701 35703 SINVEC2 2DEC .2462117800 # = SIN(29.5) 020485,000538: 26,2407 04343 21616 VECANG1 2DEC .1388888889 # = 50 DEGREES 020486,000539: # Page 493 020487,000540: 26,2411 03070 34344 VECANG2 2DEC .09722222222 # = 35 DEGREES 020488,000541: 020489,000542: 26,2413 00000 1BITDP OCT 0 # KEEP THIS BEFORE DPB(-14) 020490,000543: 26,2414 00001 DPB-14 OCT 00001 020491,000544: 26,2415 00000 OCT 00000 020492,000545: 020493,000546: # Page 494 020494,000547: # ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49) 020495,000548: 020496,000549: 34,2000 BANK 34 020497,000550: 23,2000 SETLOC R62 020498,000551: 23,2000 BANK 020499,000552: 23,2103 E6,1675 EBANK= BCDU 020500,000553: 020501,000554: 23,2103 COUNT* $$/R62 020502,000555: 020503,000556: 23,2103 23,2103 R62DISP EQUALS R62FLASH 020504,000557: 020505,000558: 23,2103 35010 R62FLASH CAF V06N22 # FLASH V06N22 AND 020506,000559: 23,2104 04616 TC BANKCALL # ICDU ANGLES 020507,000560: 23,2105 20477 CADR GOFLASH 020508,000561: 23,2106 15472 TCF ENDEXT # TERMINATE 020509,000562: 23,2107 12111 TCF GOMOVE # PROCEED 020510,000563: 23,2110 12103 TCF R62FLASH # ENTER 020511,000564: 020512,000565: # ASTRONAUT MAY LOAD NEW ICDUS AT THIS 020513,000566: # POINT. 020514,000567: 23,2111 05504 GOMOVE TC UPFLAG # SET FOR 3-AXIS MANEUVER 020515,000568: 23,2112 00124 ADRES 3AXISFLG 020516,000569: 020517,000570: 23,2113 04616 TC BANKCALL 020518,000571: 23,2114 54123 CADR R60LEM 020519,000572: 23,2115 15472 TCF ENDEXT # END R62 020520,000573: End of include-file R60_62.agc. Parent file is MAIN.agc