Source Code

020172,000001: # Copyright: Public domain. 020173,000002: # Filename: R60_R62.agc 020174,000003: # Purpose: Part of the source code for Luminary 1A build 099. 020175,000004: # It is part of the source code for the Lunar Module's (LM) 020176,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 020177,000006: # Assembler: yaYUL 020178,000007: # Contact: Ron Burkey <info@sandroid.org>. 020179,000008: # Website: www.ibiblio.org/apollo. 020180,000009: # Pages: 472-485 020181,000010: # Mod history: 2009-05-17 RSB Adapted from the corresponding 020182,000011: # Luminary131 file, using page 020183,000012: # images from Luminary 1A. 020184,000013: 020185,000014: # This source code has been transcribed or otherwise adapted from 020186,000015: # digitized images of a hardcopy from the MIT Museum. The digitization 020187,000016: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 020188,000017: # the Museum. Many thanks to both. The images (with suitable reduction 020189,000018: # in storage size and consequent reduction in image quality as well) are 020190,000019: # available online at www.ibiblio.org/apollo. If for some reason you 020191,000020: # find that the images are illegible, contact me at info@sandroid.org 020192,000021: # about getting access to the (much) higher-quality images which Paul 020193,000022: # actually created. 020194,000023: 020195,000024: # Notations on the hardcopy document read, in part: 020196,000025: 020197,000026: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 020198,000027: # 16:27 JULY 14, 1969 020199,000028: 020200,000029: # Page 472 020201,000030: # MOD NO: 0 DATE: 1 MAY 1968 020202,000031: # MOD BY: DIGITAL DEVEL GROUP LOG SECTION R60,R62 020203,000032: 020204,000033: # FUNCTIONAL DESCRIPTION: 020205,000034: 020206,000035: # CALLED AS A GENERAL SUBROUTINE TO MANEUVER THE LM TO A SPECIFIED 020207,000036: # ATTITUDE. 020208,000037: 020209,000038: # 1. IF THE 3-AXIS FLAG IS NOT SET THE FINAL CDU ANGLES ARE 020210,000039: # CALCULATED (VECPOINT). 020211,000040: 020212,000041: # 2. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS). 020213,000042: 020214,000043: # 3. REQUEST FLASHING DISPLAY V50 N18 PLEASE PERFORM AUTO MANEUVER. 020215,000044: 020216,000045: # 4. IF PRIORITY DISPLAY FLAG IS SET DO A PHASECHANGE. THEN AWAIT 020217,000046: # ASTRONAUT RESPONSE. 020218,000047: 020219,000048: # 5. DISPLAY RESPONSE RETURNS. 020220,000049: 020221,000050: # A. ENTER -- RESET 3-AXIS FLAG AND RETURN TO CLIENT. 020222,000051: 020223,000052: # B. TERMINATE -- IF IN P00 GO TO STEP 5A. OTHERWISE CHECK IF R61 IS 020224,000053: # THE CALLING PROGRAM. IF IN R61 AN EXIT IS MADE TO GOTOV56. IF 020225,000054: # NOT IN R61 AN EXIT IS DONE VIA GOTOP00H. 020226,000055: 020227,000056: # C. PROCEED -- CONTINUE WITH PROGRAM AT STEP 6. 020228,000057: 020229,000058: # 6. IF THE 3-AXISFLAG IS NOT SET, THE FINAL CDU ANGLES ARE CALCULATED 020230,000059: # (VECPOINT). 020231,000060: 020232,000061: # 7. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS). 020233,000062: 020234,000063: # 8. IF THE G+N SWITCH IS NOT SET GO BACK TO STEP 3. 020235,000064: # 020236,000065: # 9. IF THE AUTO SWITCH IS NOT SET GO BACK TO STEP 3. 020237,000066: 020238,000067: # 10. NON-FLASHING DISPLAY V06N18 (FDAI ANGLES). 020239,000068: 020240,000069: # 11. DO A PHASE-CHANGE. 020241,000070: 020242,000071: # 12. DO A MANEUVER CALCULATION AND ICDU DRIVE ROUTINE TO ACHIEVE FINAL 020243,000072: # GIMBAL ANGLES (GOMANUR). 020244,000073: 020245,000074: # 13. AT END OF MANEUVER TO TO STEP 3. 020246,000075: 020247,000076: # IF SATISFACTORY MANEUVER STEP 5A EXITS R60. 020248,000077: # FOR FURTHER ADJUSTMENT OF THE VEHICLE ATTITUDE ABOUT THE 020249,000078: # DESIRED VECTOR, THE ROUTINE MAY BE PERFORMED AGAIN STARTING AT 020250,000079: # Page 473 020251,000080: # STEP 5C. 020252,000081: 020253,000082: # CALLING SEQUENCE: TC BANKCALL 020254,000083: # CADR R60LEM 020255,000084: 020256,000085: # ERASABLE INITIALIZATION REQUIRED: SCAXIS, POINTVSM (FOR VECPOINT) 020257,000086: # 3AXISFLG. 020258,000087: 020259,000088: # SUBROUTINES CALLED: VECPOINT, BALLANGS, GOPERF24, LINUS, GODSPER, 020260,000089: # GOMANUR, DOWNFLAG, PHASCHNG, UPFLAG 020261,000090: 020262,000091: # NORMAL EXIT MODES: CAE TEMPR60 (CALLER'S RETURN ADDRESS) 020263,000092: # TC BANKJUMP 020264,000093: 020265,000094: # ALARMS: NONE 020266,000095: 020267,000096: # OUTPUT: NONE 020268,000097: 020269,000098: # DEBRIS: CPHI, CTHETA, CPSI, 3AXISFLG, TBASE2 020270,000099: 020271,000100: 34,2000 BANK 34 020272,000101: 26,2000 SETLOC MANUVER 020273,000102: 26,2000 BANK 020274,000103: 020275,000104: 26,2123 1164 EBANK= TEMPR60 020276,000105: 020277,000106: 26,2123 COUNT* $$/R06 020278,000107: 26,2123 04645 R60LEM TC MAKECADR 020279,000108: 26,2124 55164 TS TEMPR60 020280,000109: 020281,000110: 26,2125 34746 REDOMANN CAF 3AXISBIT 020282,000111: 26,2126 70101 MASK FLAGWRD5 # IS 3-AXIS FLAG SET 020283,000112: 26,2127 10000 CCS A 020284,000113: 26,2130 12136 TCF TOBALL # YES 020285,000114: 26,2131 06037 TC INTPRET 020286,000115: 26,2132 77624 CALL 020287,000116: 26,2133 56040 VECPOINT # TO COMPUTE FINAL ANGLES 020288,000117: 26,2134 00322 STORE CPHI # STORE FINAL ANGLES -- CPHI, CTHETA, CPSI 020289,000118: 26,2135 77776 EXIT 020290,000119: 020291,000120: 26,2136 04616 TOBALL TC BANKCALL 020292,000121: 26,2137 54266 CADR BALLANGS # TO CONVERT ANGLES TO FDAI 020293,000122: 26,2140 32254 TOBALLA CAF V06N18 020294,000123: 26,2141 04616 TC BANKCALL 020295,000124: 26,2142 20710 CADR GOPERF2R # DISPLAY PLEASE PERFORM AUTO MANEUVER 020296,000125: 26,2143 02242 TC R61TEST 020297,000126: 26,2144 02150 TC REDOMANC # PROCEED 020298,000127: 26,2145 02175 TC ENDMANU1 # ENTER I.E., FINISHED WITH R60 020299,000128: # Page 474 020300,000129: 26,2146 02201 TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS 020301,000130: 26,2147 05155 TC ENDOFJOB 020302,000131: 020303,000132: 26,2150 34746 REDOMANC CAF 3AXISBIT 020304,000133: 26,2151 70101 MASK FLAGWRD5 # IS 3-AXIS FLAG SET 020305,000134: 26,2152 10000 CCS A 020306,000135: 26,2153 12161 TCF TOBALLC # YES 020307,000136: 26,2154 06037 TC INTPRET 020308,000137: 26,2155 77624 CALL 020309,000138: 26,2156 56040 VECPOINT # TO COMPUTE FINAL ANGLES 020310,000139: 26,2157 00322 STORE CPHI # STORE ANGLES 020311,000140: 26,2160 77776 EXIT 020312,000141: 020313,000142: 26,2161 04616 TOBALLC TC BANKCALL 020314,000143: 26,2162 54266 CADR BALLANGS # TO CONVERT ANGLES TO FDAI 020315,000144: 26,2163 02255 TC G+N,AUTO # CHECK AUTO MODE 020316,000145: 26,2164 10000 CCS A 020317,000146: 26,2165 12140 TCF TOBALLA # NOT AUTO, GO REREQUEST AUTO MANEUVER. 020318,000147: 020319,000148: 26,2166 32254 AUTOMANV CAF V06N18 # STATIC DISPLAY DURING AUTO MANEUVER 020320,000149: 26,2167 04616 TC BANKCALL 020321,000150: 26,2170 20451 CADR GODSPR 020322,000151: 26,2171 02201 TC CHKLINUS # TO CHECK FOR PRIORITY DISPLAYS 020323,000152: 020324,000153: 26,2172 04616 STARTMNV TC BANKCALL # PERFORM MANEUVER VIA KALCMANU 020325,000154: 26,2173 17750 CADR GOMANUR 020326,000155: 020327,000156: 26,2174 12140 ENDMANUV TCF TOBALLA # FINISHED MANEUVER. 020328,000157: 26,2175 05516 ENDMANU1 TC DOWNFLAG # RESET 3-AXIS FLAG 020329,000158: 26,2176 00124 ADRES 3AXISFLG 020330,000159: 26,2177 31164 CAE TEMPR60 020331,000160: 26,2200 04640 TC BANKJUMP 020332,000161: 020333,000162: 26,2201 40100 CHKLINUS CS FLAGWRD4 020334,000163: 26,2202 74740 MASK PDSPFBIT # IS PRIORITY DISPLAY FLAG SET? 020335,000164: 26,2203 10000 CCS A 020336,000165: 26,2204 00002 TC Q # NO -- EXIT 020337,000166: 26,2205 30002 CA Q 020338,000167: 26,2206 54156 TS MPAC +2 # SAVE RETURN 020339,000168: 26,2207 46245 CS THREE # OBTAIN LOCATION FOR RESTART 020340,000169: 26,2210 60133 AD BUF2 # HOLD Q OF LAST DISPLAY 020341,000170: 26,2211 55055 TS TBASE2 020342,000171: 020343,000172: 26,2212 05353 TC PHASCHNG 020344,000173: 26,2213 00132 OCT 00132 020345,000174: 020346,000175: 26,2214 34745 CAF BIT7 020347,000176: 26,2215 05464 TC LINUS # GO SET BITS FOR PRIORITY DISPLAY 020348,000177: 26,2216 00156 TC MPAC +2 020349,000178: 020350,000179: # Page 475 020351,000180: 26,2217 37714 RELINUS CAF PRIO26 # RESTORE ORIGINAL PRIORITY 020352,000181: 26,2220 05146 TC PRIOCHNG 020353,000182: 020354,000183: 26,2221 34747 CAF TRACKBIT # DON'T CONTINUE R60 UNLESS TRACKFLAG ON. 020355,000184: 26,2222 70075 MASK FLAGWRD1 020356,000185: 26,2223 10000 CCS A 020357,000186: 26,2224 12237 TCF RER60 020358,000187: 020359,000188: 26,2225 34745 CAF RNDVZBIT # IS IT P20? 020360,000189: 26,2226 70074 MASK FLAGWRD0 020361,000190: 26,2227 10000 CCS A 020362,000191: 26,2230 02234 TC +4 # YES 020363,000192: 26,2231 05353 TC PHASCHNG # NO, MUST BE P25, SET 2.11 SPOT 020364,000193: 26,2232 40112 OCT 40112 020365,000194: 020366,000195: 26,2233 05155 TC ENDOFJOB 020367,000196: 020368,000197: 26,2234 05353 TC PHASCHNG # SET 2.7 SPOT FOR P20 020369,000198: 26,2235 40072 OCT 40072 020370,000199: 020371,000200: 26,2236 05155 TC ENDOFJOB 020372,000201: 020373,000202: 26,2237 05504 RER60 TC UPFLAG # SET PRIO DISPLAY FLAG AFTER RESTART 020374,000203: 26,2240 00077 ADRES PDSPFLAG 020375,000204: 020376,000205: 26,2241 01055 TC TBASE2 020377,000206: 020378,000207: 26,2242 31011 R61TEST CA MODREG # IF WE ARE IN P00 IT MUST BE V49 OR V89 020379,000208: 26,2243 00006 EXTEND 020380,000209: 26,2244 12175 BZF ENDMANU1 # THUS WE GO TO ENDEXT VIA USER 020381,000210: 020382,000211: 26,2245 30100 CA FLAGWRD4 # ARE WE IN R61 (P20 OR P25) 020383,000212: 26,2246 74740 MASK PDSPFBIT 020384,000213: 26,2247 00006 EXTEND 020385,000214: 26,2250 16001 BZF GOTOP00H # NO 020386,000215: 26,2251 06022 TC GOTOV56 # YES 020387,000216: 020388,000217: 26,2252 20100 BIT14+7 OCT 20100 020389,000218: 26,2253 00203 OCT203 OCT 203 020390,000219: 26,2254 01422 V06N18 VN 0618 020391,000220: 020392,000221: # SUBROUTINE TO CHECK FOR G+N CONTROL, AUTO STABILIZATION 020393,000222: 020394,000223: # RETURNS WITH C(A) = + IF NOT SET FOR G+N, AUTO 020395,000224: # RETURNS WITH C(A) = +0 IF SWITCHES ARE SET 020396,000225: 020397,000226: 26,2255 00006 G+N,AUTO EXTEND 020398,000227: 26,2256 00030 READ CHAN30 020399,000228: 26,2257 74742 MASK BIT10 020400,000229: 26,2260 10000 CCS A 020401,000230: 26,2261 00002 TC Q # NOT IN G+N C(A) = + 020402,000231: # Page 476 020403,000232: 26,2262 00006 ISITAUTO EXTEND # CHECK FOR AUTO MODE 020404,000233: 26,2263 00031 READ CHAN31 020405,000234: 26,2264 74736 MASK BIT14 020406,000235: 26,2265 00002 TC Q # (+) = NOT IN AUTO, (+0) = AOK 020407,000236: 020408,000237: # Page 477 020409,000238: # PROGRAM DESCRIPTION BALLANGS 020410,000239: # MOD NO. LOG SECTION R60,R62 020411,000240: 020412,000241: # WRITTEN BY RAMA M. AIYAWAR 020413,000242: 020414,000243: # FUNCTIONAL DESCRIPTION 020415,000244: 020416,000245: # COMPUTES LM FDAI BALL DISPLAY ANGLES 020417,000246: 020418,000247: # CALLING SEQUENCE 020419,000248: 020420,000249: # TC BALLANGS 020421,000250: 020422,000251: # NORMAL EXIT MODE 020423,000252: 020424,000253: # TC BALLEXIT # (SAVED Q) 020425,000254: 020426,000255: # ALARM OR EXIT MODE: NIL 020427,000256: 020428,000257: # SUBROUTINES CALLED 020429,000258: 020430,000259: # CD*TR*G 020431,000260: # ARCTAN 020432,000261: 020433,000262: # INPUT 020434,000263: 020435,000264: # CPHI,CTHETA,CPSI ARE THE ANGLES CORRESPONDING TO AOG, AIG, AMG. THEY ARE 020436,000265: # SP,2'S COMPLEMENT SCALED TO HALF REVOLUTION. 020437,000266: 020438,000267: # OUTPUT 020439,000268: 020440,000269: # FDAIX, FDAIY, FDAIZ ARE THE REQUIRED BALL ANGLES SCALED TO HALF REVOLUTION 020441,000270: # SP,2'S COMPEMENT. 020442,000271: 020443,000272: # THESE ANGLES WILL BE DISPLAYED AS DEGREES AND HUNDREDTHS, IN THE ORDER ROLL, PITCH, YAW, USING NOUNS 18 & 19. 020444,000273: 020445,000274: # ERASABLE INITIALIZATION REQUIRED 020446,000275: 020447,000276: # CPHI, CTHETA, CPSI EACH AN SP REGISTER 020448,000277: 020449,000278: # DEBRIS 020450,000279: 020451,000280: # A,L,Q,MPAC,SINCDU,COSCDU,PUSHLIST,BALLEXIT 020452,000281: 020453,000282: # NOMENCLATURE: CPHI, CTHETA, & CPSI REPRESENT THE OUTER, INNER, AND MIDDLE GIMBAL ANGLES, RESPECTIVELY; OR 020454,000283: # EQUIVALENTLY, CDUX, CDUY, AND CDUZ. 020455,000284: 020456,000285: # NOTE: ARCTAN CHECKS FOR OVERFLOW AND SHOULD BE ABLE TO HANDLE ANY SINGULARITIES. 020457,000286: 020458,000287: 26,2000 SETLOC BAWLANGS 020459,000288: 26,2000 BANK 020460,000289: 020461,000290: 26,2266 COUNT* $$/BALL 020462,000291: 26,2266 04645 BALLANGS TC MAKECADR 020463,000292: 26,2267 55342 TS BALLEXIT 020464,000293: 26,2270 30321 CA CPHI 020465,000294: # Page 478 020466,000295: 26,2271 54772 TS CDUSPOT +4 020467,000296: 26,2272 30322 CA CTHETA 020468,000297: 26,2273 54766 TS CDUSPOT 020469,000298: 26,2274 30323 CA CPSI 020470,000299: 26,2275 54770 TS CDUSPOT +2 020471,000300: 020472,000301: 26,2276 06037 TC INTPRET 020473,000302: 26,2277 45001 SETPD CALL 020474,000303: 26,2300 00001 0D 020475,000304: 26,2301 47543 CD*TR*G 020476,000305: 020477,000306: 26,2302 41345 DLOAD DMP 020478,000307: 26,2303 00743 SINCDUX # SIN (OGA) 020479,000308: 26,2304 00747 COSCDUZ # COS (MGA) 020480,000309: 020481,000310: 26,2305 57552 SL1 DCOMP # SCALE 020482,000311: 26,2306 65336 ARCSIN PDDL # YAW = ARCSIN(-SXCZ) INTO 0 PD 020483,000312: 26,2307 00741 SINCDUZ 020484,000313: 26,2310 14023 STODL SINTH # (SINTH = 18D IN PD) 020485,000314: 26,2311 00747 COSCDUZ 020486,000315: 26,2312 72405 DMP SL1 # RESCALE 020487,000316: 26,2313 00751 COSCDUX 020488,000317: 26,2314 34021 STCALL COSTH # (COSTH = 16D IN PD) 020489,000318: 26,2315 26510 ARCTAN 020490,000319: 26,2316 41325 PDDL DMP # ROLL = ARCTAN(SZ/CZCX) INTO 2 PD 020491,000320: 26,2317 00741 SINCDUZ 020492,000321: 26,2320 00743 SINCDUX 020493,000322: 26,2321 41512 SL2 PUSH # SXSZ INTO 4 PD 020494,000323: 26,2322 65205 DMP PDDL # SXSZCY INTO 4 PD 020495,000324: 26,2323 00745 COSCDUY 020496,000325: 26,2324 65205 DMP PDDL # SXSZSY INTO 6 PD 020497,000326: 26,2325 00737 SINCDUY 020498,000327: 26,2326 00751 COSCDUX 020499,000328: 26,2327 72405 DMP SL1 # CXCY 020500,000329: 26,2330 00745 COSCDUY 020501,000330: 26,2331 45425 DSU STADR # PULL UP FORM 6 PD 020502,000331: 26,2332 63756 STODL COSTH # COSTH = CXCY - SXSZSY 020503,000332: 26,2333 00737 SINCDUY 020504,000333: 26,2334 72405 DMP SL1 020505,000334: 26,2335 00751 COSCDUX # CXSY 020506,000335: 26,2336 45415 DAD STADR # PULL UP FORM 4 PD 020507,000336: 26,2337 43754 STCALL SINTH # SINTH = CXSY + SXSZCY 020508,000337: 26,2340 26510 ARCTAN # RETURNS WITH D(MPAC) = PITCH 020509,000338: 26,2341 55525 PDDL VDEF # PITCH INTO 2 PD, ROLL INTO MPAC FROM 2 PD 020510,000339: 26,2342 77634 RTB # VDEF MAKES V(MPAC) = ROLL, PITCH, YAW 020511,000340: 26,2343 21620 V1STO2S 020512,000341: 26,2344 02345 STORE FDAIX # MODE IS TP 020513,000342: 26,2345 77776 EXIT 020514,000343: 020515,000344: 26,2346 31342 ENDBALL CA BALLEXIT 020516,000345: 020517,000346: # Page 479 020518,000347: 26,2347 04640 TC BANKJUMP 020519,000348: 020520,000349: # Page 480 020521,000350: # PROGRAM DESCRIPTION -- VECPOINT 020522,000351: 020523,000352: # THIS INTERPRETIVE SUBROUTINE MAY BE USED TO POINT A SPACECRAFT AXIS IN A DESIRED DIRECTION. THE AXIS 020524,000353: # TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY 020525,000354: # BEGINNING WITH THE LOCATION CALLED SCAXIS. THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES. 020526,000355: # THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN 020527,000356: # SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM. THE COMPONENTS OF THIS 020528,000357: # VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES. WITH THIS INFORMTION VECPOINT COMPUTES A SET OF THREE GIMBAL 020529,000358: # ANGLES (2'S COMPLEMENT) CORRESPONDING TO THE CROSS-PRODUCT ROTATION BETWEEN SCAXIS AND POINTVSM AND STORES THEM 020530,000359: # IN T(MPAC) BEFORE RETURNING TO THE CALLER. 020531,000360: 020532,000361: # THIS ROTATION, HOWEVER, MAY BRING THE S/C INTO GIMBAL LOCK. WHEN POINTING A VECTOR IN THE Y-Z PLANE, 020533,000362: # THE TRANSPONDER AXIS, OR THE AOT FOR THE LEM, THE PROGRAM WILL CORRECT THIS PROBLEM BY ROTATING THE CROSS- 020534,000363: # PRODUCT ATTITUDE ABOUT POINTVSM BY A FIXED AMOUNT SUFFICIENT TO ROTATE THE DESIRED S/C ATTITUDE OUT OF GIMBAL 020535,000364: # 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, 020536,000365: # THE ADDITIONAL ROTATION TO AVOID GIMBAL LOCK IS 35 DEGREES. IF THE AXIS IS MORE THAN 60.5 DEGREES FROM +X (OR -X) 020537,000366: # THE ADDITIONAL ROTATION IS 35 DEGREES. THE GIMBAL ANGLES CORRESPONDING TO THIS ATTITUDE ARE THEN COMPUTED AND 020538,000367: # STORED AS 2'S COMPLEMENT ANGLES IN T(MPAC) BEFORE RETURNING TO THE CALLER. 020539,000368: 020540,000369: # WHEN POINTING THE X-AXIS, OR THE THRUST VECTOR, OR ANY VECTOR WITHIN 40.6 DEG OF THE X-AXIS, VECPOINT 020541,000370: # CANNOT CORRECT FOR A CROSS-PRODUCT ROTATION INTO GIMBAL LOCK. IN THIS CASE A PLATFORM REALIGNMENT WOULD BE 020542,000371: # REQUIRED TO POINT THE VECTOR IN THE DESIRED DIRECTION. AT PRESENT NO INDICATION IS GIVEN FOR THIS SITUATION 020543,000372: # EXCEPT THAT THE FINAL MIDDLE GIMBAL ANGLE IN MPAC +2 IS GREATER THAN 59 DEGREES. 020544,000373: 020545,000374: # CALLING SEQUENCE 020546,000375: 020547,000376: # 1) LOAD SCAXIS, POINTVSM 020548,000377: # 2) CALL 020549,000378: # VECPOINT 020550,000379: 020551,000380: # RETURNS WITH 020552,000381: 020553,000382: # 1) DESIRED OUTER GIMBAL ANGLE IN MPAC 020554,000383: # 2) DESIRED INNER GIMBAL ANGLE IN MPAC +1 020555,000384: # 3) DESIRED MIDDLE GIMBAL ANGLE IN MPAC +2 020556,000385: 020557,000386: # ERASABLES USED -- 020558,000387: 020559,000388: # 1) SCAXIS 6 020560,000389: # 2) POINTVSM 6 020561,000390: # 3) MIS 18 020562,000391: # 4) DEL 18 020563,000392: # 5) COF 6 020564,000393: # 6) VECQTEMP 1 020565,000394: # 7) ALL OF VAC AREA 43 020566,000395: 020567,000396: # TOTAL 99 020568,000397: 020569,000398: 27,2000 SETLOC VECPT 020570,000399: 27,2000 BANK 020571,000400: # Page 481 020572,000401: 27,2032 COUNT* $$/VECPT 020573,000402: 020574,000403: 27,2032 E6,1676 EBANK= BCDU 020575,000404: 020576,000405: 27,2032 40020 VECPNT1 STQ BOV # THIS ENTRY USES DESIRED CDUS 020577,000406: 27,2033 03325 VECQTEMP # NOT PRESENT -- ENTER WITH CDUD'S IN MPAC 020578,000407: 27,2034 56035 VECPNT2 020579,000408: 27,2035 52164 VECPNT2 AXC,2 GOTO 020580,000409: 27,2036 03246 MIS 020581,000410: 27,2037 56046 STORANG 020582,000411: 27,2040 40020 VECPOINT STQ BOV # SAVE RETURN ADDRESS 020583,000412: 27,2041 03325 VECQTEMP 020584,000413: 27,2042 56043 VECLEAR # AND CLEAR OVFIND 020585,000414: 27,2043 47164 VECLEAR AXC,2 RTB 020586,000415: 27,2044 03246 MIS # READ THE PRESENT CDU ANGLES AND 020587,000416: 27,2045 44403 READCDUK # STORE THEM IN PD25, 26, 27 020588,000417: 27,2046 34032 STORANG STCALL 25D 020589,000418: 27,2047 44410 CDUTODCM # S/C AXES TO STABLE MEMBER AXES (MIS) 020590,000419: 27,2050 61375 VLOAD VXM 020591,000420: 27,2051 03773 POINTVSM # RESOLVE THE POINTING DIRECTION VF INTO 020592,000421: 27,2052 03247 MIS # INITIAL S/C AXES (VF = POINTVSM) 020593,000422: 27,2053 77656 UNIT 020594,000423: 27,2054 00035 STORE 28D 020595,000424: # PD 28 29 30 31 32 33 020596,000425: 27,2055 53435 VXV UNIT # TAKE THE CROSS PRODUCT VF X VI 020597,000426: 27,2056 03765 SCAXIS # WHERE VI = SCAXIS 020598,000427: 27,2057 57400 BOV VCOMP 020599,000428: 27,2060 56170 PICKAXIS 020600,000429: 27,2061 17271 STODL COF # CHECK MAGNITUDE 020601,000430: 27,2062 00045 36D # OF CROSS PRODUCT 020602,000431: 27,2063 50025 DSU BMN # VECTOR, IF LESS 020603,000432: 27,2064 14411 DPB-14 # THAN B-14 ASSUME 020604,000433: 27,2065 56170 PICKAXIS # UNIT OPERATION 020605,000434: 27,2066 50375 VLOAD DOT # INVALID. 020606,000435: 27,2067 03765 SCAXIS 020607,000436: 27,2070 00035 28D 020608,000437: 27,2071 65552 SL1 ARCCOS 020609,000438: 27,2072 77624 COMPMATX CALL # NOW COMPUTE THE TRANSFORMATION FROM 020610,000439: 27,2073 44527 DELCOMP # FINAL S/C AXES TO INITIAL S/C AXES MFI 020611,000440: 27,2074 75160 AXC,1 AXC,2 020612,000441: 27,2075 03246 MIS # COMPUTE THE TRANSFORMATION FROM FINAL 020613,000442: 27,2076 02230 KEL # S/C AXES TO STABLE MEMBER AXES 020614,000443: 27,2077 77624 CALL # MFS = MIS MFI 020615,000444: 27,2100 44312 MXM3 # (IN PD LIST) 020616,000445: 020617,000446: 27,2101 51545 DLOAD ABS 020618,000447: 27,2102 00007 6 # MFS6 = SIN(CPSI) $2 020619,000448: 27,2103 50025 DSU BMN 020620,000449: 27,2104 14376 SINGIMLC # = SIN(59 DEGS) $2 020621,000450: 27,2105 56160 FINDGIMB # /CPSI/ LESS THAN 59 DEGS. 020622,000451: # Page 482 020623,000452: # I.E., DESIRED ATTITUDE NOT IN GIMBAL LOCK 020624,000453: 020625,000454: 27,2106 51545 DLOAD ABS # CHECK TO SEE IF WE ARE POINTING 020626,000455: 27,2107 03765 SCAXIS # THE THRUST AXIS 020627,000456: 27,2110 51025 DSU BPL 020628,000457: 27,2111 14400 SINVEC1 # SIN 49.4 DEGS $2 020629,000458: 27,2112 56160 FINDGIMB # IF SO, WE ARE TRYING TO POINT IT INTO 020630,000459: 27,2113 77775 VLOAD # GIMBAL LOCK, ABORT COULD GO HERE 020631,000460: 27,2114 77626 STADR 020632,000461: 27,2115 50514 STOVL MIS +12D 020633,000462: 27,2116 77626 STADR # STORE MFS (IN PD LIST) IN MIS 020634,000463: 27,2117 50522 STOVL MIS +6 020635,000464: 27,2120 77626 STADR 020636,000465: 27,2121 50530 STOVL MIS 020637,000466: 27,2122 03255 MIS +6 # INNER GIMBAL AXIS IN FINAL S/C AXES 020638,000467: 27,2123 57444 BPL VCOMP # LOCATE THE IG AXIS DIRECTION CLOSEST TO 020639,000468: 27,2124 56125 IGSAMEX # FINAL X S/C AXIS 020640,000469: 020641,000470: 27,2125 50035 IGSAMEX VXV BMN # FIND THE SHORTEST WAY OF ROTATING THE 020642,000471: 27,2126 03765 SCAXIS # S/C OUT OF GIMBAL LOCK BY A ROTATION 020643,000472: 27,2127 56134 U=SCAXIS # ABOUT +- SCAXIS, I.E., IF (IG (SGN MFS3) 020644,000473: # X SCAXIS . XF) LESS THAN 0, U = SCAXIS 020645,000474: # OTHERWISE U = -SCAXIS. 020646,000475: 020647,000476: 27,2130 57575 VLOAD VCOMP 020648,000477: 27,2131 03765 SCAXIS 020649,000478: 27,2132 37271 STCALL COF # ROTATE ABOUT -SCAXIS 020650,000479: 27,2133 56137 CHEKAXIS 020651,000480: 27,2134 77775 U=SCAXIS VLOAD 020652,000481: 27,2135 03765 SCAXIS 020653,000482: 27,2136 03271 STORE COF # ROTATE ABOUT + SCAXIS 020654,000483: 27,2137 51545 CHEKAXIS DLOAD ABS 020655,000484: 27,2140 03765 SCAXIS # SEE IF WE ARE POINTING THE AOT 020656,000485: 27,2141 51025 DSU BPL 020657,000486: 27,2142 14402 SINVEC2 # SIN 29.5 DEGS $2 020658,000487: 27,2143 56147 PICKANG1 # IF SO, ROTATE 50 DEGS ABOUT +- SCAXIS 020659,000488: 27,2144 52145 DLOAD GOTO # IF NOT, MUST BE POINTING THE TRANSPONDER 020660,000489: 27,2145 14406 VECANG2 # OR SOME VECTOR IN THE Y, OR Z PLANE 020661,000490: 27,2146 56151 COMPMFSN # IN THIS CASE ROTATE 35 DEGS TO GET OUT 020662,000491: # OF GIMBAL LOCK (VECANG2 $360) 020663,000492: 27,2147 77745 PICKANG1 DLOAD 020664,000493: 27,2150 14404 VECANG1 # = 50 DEGS. $360 020665,000494: 27,2151 77624 COMPMFSN CALL 020666,000495: 27,2152 44527 DELCOMP # COMPUTE THE ROTATION ABOUT SCAXIS TO 020667,000496: 27,2153 75160 AXC,1 AXC,2 # BRING MFS OUT OF GIMBAL LOCK 020668,000497: 27,2154 03246 MIS 020669,000498: 27,2155 02230 KEL 020670,000499: 27,2156 77624 CALL # COMPUTE THE NEW TRANSFORMATION FROM 020671,000500: 27,2157 44312 MXM3 # DESIRED S/C AXES TO STABLE MEMBER AXES 020672,000501: # WHICH WILL ALIGN VI WITH VF AND AVOID 020673,000502: # Page 483 020674,000503: # GIMBAL LOCK 020675,000504: 27,2160 45160 FINDGIMB AXC,1 CALL 020676,000505: 27,2161 00000 0 # EXTRACT THE COMMANDED CDU ANGLES FROM 020677,000506: 27,2162 44654 DCMTOCDU # THIS MATRIX 020678,000507: 27,2163 40234 RTB SETPD 020679,000508: 27,2164 21620 V1STO2S # CONVERT TO 2'S COMPLEMENT 020680,000509: 27,2165 00001 0 020681,000510: 27,2166 77650 GOTO 020682,000511: 27,2167 03325 VECQTEMP # RETURN TO CALLER 020683,000512: 020684,000513: 27,2170 50375 PICKAXIS VLOAD DOT # IF VF X VI = 0, FIND VF, VI 020685,000514: 27,2171 00035 28D 020686,000515: 27,2172 03765 SCAXIS 020687,000516: 27,2173 72240 BMN TLOAD 020688,000517: 27,2174 54350 ROT180 020689,000518: 27,2175 00032 25D 020690,000519: 27,2176 77650 GOTO # IF VF = VI, CDU DESIRED = PRESENT CDU 020691,000520: 27,2177 03325 VECQTEMP # PRESENT CDU ANGLES 020692,000521: 020693,000522: 35,2000 BANK 35 020694,000523: 26,2000 SETLOC MANUVER1 020695,000524: 26,2000 BANK 020696,000525: 26,2350 47375 ROT180 VLOAD VXV # IF VF, VI ANTIPARALLEL, 180 DEG ROTATION 020697,000526: 26,2351 03255 MIS +6 # IS REQUIRED. Y STABLE MEMBER AXIS IN 020698,000527: 26,2352 06520 HIDPHALF # INITIAL S/C AXES. 020699,000528: 26,2353 47256 UNIT VXV # FIND Y(SM) X X(I) 020700,000529: 26,2354 03765 SCAXIS # FIND UNIT(VI X UNIT(Y(SM) X X(I))) 020701,000530: 26,2355 40056 UNIT BOV # I.E., PICK A VECTOR IN THE PLANE OF X(I), 020702,000531: 26,2356 54372 PICKX # Y(SM) PERPENDICULAR TO VI 020703,000532: 26,2357 17271 STODL COF 020704,000533: 26,2360 00045 36D # CHECK MAGNITUDE 020705,000534: 26,2361 50025 DSU BMN # OF THIS VECTOR. 020706,000535: 26,2362 14411 DPB-14 # IF LESS THAN B-14, 020707,000536: 26,2363 54372 PICKX # PICK X-AXIS. 020708,000537: 26,2364 77775 VLOAD 020709,000538: 26,2365 03271 COF 020710,000539: 26,2366 17271 XROT STODL COF 020711,000540: 26,2367 06520 HIDPHALF 020712,000541: 26,2370 77650 GOTO 020713,000542: 26,2371 56072 COMPMATX 020714,000543: 26,2372 52175 PICKX VLOAD GOTO # PICK THE XAXIS IN THIS CASE 020715,000544: 26,2373 06520 HIDPHALF 020716,000545: 26,2374 54366 XROT 020717,000546: 26,2375 15555 35172 SINGIMLC 2DEC .4285836003 # = SIN(59) $2 020718,000547: 020719,000548: 26,2377 14113 36326 SINVEC1 2DEC .3796356537 # = SIN(49.4) $2 020720,000549: 020721,000550: 26,2401 07701 35703 SINVEC2 2DEC .2462117800 # = SIN(29.5) $2 020722,000551: 020723,000552: 26,2403 04343 21616 VECANG1 2DEC .1388888889 # = 50 DEGREES $360 020724,000553: # Page 484 020725,000554: 26,2405 03070 34344 VECANG2 2DEC .09722222222 # = 35 DEGREES $360 020726,000555: 020727,000556: 26,2407 00000 1BITDP OCT 0 # KEEP THIS BEFORE DPB(-14) ************ 020728,000557: 26,2410 00001 DPB-14 OCT 00001 020729,000558: 26,2411 00000 OCT 00000 020730,000559: 020731,000560: # Page 485 020732,000561: # ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49) 020733,000562: 020734,000563: 34,2000 BANK 34 020735,000564: 23,2000 SETLOC R62 020736,000565: 23,2000 BANK 020737,000566: 23,2103 E6,1676 EBANK= BCDU 020738,000567: 020739,000568: 23,2103 COUNT* $$/R62 020740,000569: 020741,000570: 23,2103 23,2103 R62DISP EQUALS R62FLASH 020742,000571: 020743,000572: 23,2103 35010 R62FLASH CAF V06N22 # FLASH V06N22 AND 020744,000573: 23,2104 04616 TC BANKCALL # ICDU ANGLES 020745,000574: 23,2105 20476 CADR GOFLASH 020746,000575: 23,2106 15472 TCF ENDEXT # TERMINATE 020747,000576: 23,2107 12111 TCF GOMOVE # PROCEED 020748,000577: 23,2110 12103 TCF R62FLASH # ENTER 020749,000578: 020750,000579: # ASTRONAUT MAY LOAD NEW ICDUS AT THIS 020751,000580: # POINT. 020752,000581: 23,2111 05504 GOMOVE TC UPFLAG # SET FOR 3-AXIS MANEUVER 020753,000582: 23,2112 00124 ADRES 3AXISFLG 020754,000583: 020755,000584: 23,2113 04616 TC BANKCALL 020756,000585: 23,2114 54123 CADR R60LEM 020757,000586: 23,2115 15472 TCF ENDEXT # END R62 020758,000587: End of include-file R60_62.agc. Parent file is MAIN.agc