Source Code

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