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