Source Code
![]() |
These source-code files were transcribed from a printout in Don Eyles's personal
collection, scanned by archive.org, and financially sponsored by Peter McDermott.
A team of volunteers performed the transcription and proof-reading. The scanned
page images are available at
the Virtual AGC Project website, as well as higher-quality (but much larger)
images at
the Virtual AGC Project's collection in the Internet Archive. Report any problems by creating
"issues" at
the Virtual AGC Project's GitHub Repository. Notations on the program listing read, in part: YUL SYSTEM FOR AGC: NEW PROGRAM SHEPATIN BY EYLES DEC 13, 1966 THIS PROGRAM WAS ASSEMBLED AS A VERSION OF REVISION 37 OF PROGRAM SUNBURST BY LEM GROUPNote that the date is the date of the printout, not the date of the program revision. |
026456,000002: ## Copyright: Public domain. 026457,000003: ## Filename: ATTITUDE_MANEUVER_ROUTINE.agc 026458,000004: ## Purpose: A section of Sunburst revision 37, or Shepatin revision 0. 026459,000005: ## It is part of an early development version of the software 026460,000006: ## for Apollo Guidance Computer (AGC) on the unmanned Lunar 026461,000007: ## Module (LM) flight Apollo 5. Sunburst 37 was the program 026462,000008: ## upon which Don Eyles's offline development program Shepatin 026463,000009: ## was based; the listing herein transcribed was actually for 026464,000010: ## the equivalent revision 0 of Shepatin. 026465,000011: ## This file is intended to be a faithful transcription, except 026466,000012: ## that the code format has been changed to conform to the 026467,000013: ## requirements of the yaYUL assembler rather than the 026468,000014: ## original YUL assembler. 026469,000015: ## Reference: pp. 595-619 026470,000016: ## Assembler: yaYUL 026471,000017: ## Contact: Ron Burkey <info@sandroid.org>. 026472,000018: ## Website: www.ibiblio.org/apollo/index.html 026473,000019: ## Mod history: 2017-05-24 MAS Created from Sunburst 120. 026474,000020: ## 2017-06-13 RSB Transcribed. 026475,000021: ## 2017-06-22 RSB Proofed comment text with 026476,000022: ## octopus/ProoferComments. 026477,000023:
![]() |
Page 595 |
026479,000025: # BLOCK 2 LGC ATTITUDE MANEUVER ROUTINE-KALCMANU 026480,000026: 026481,000027: 026482,000028: 026483,000029: # MOD 1 DATE 11/7/66 BY DON KEENE 026484,000030: # PROGRAM DESCRIPTION 026485,000031: 026486,000032: # KALCMANU IS A ROUTINE WHICH GENERATES COMMANDS FOR THE LM DAP TO CHANGE THE ATTITUDE OF THE SPACECRAFT 026487,000033: # DURING FREE FALL. IT IS DESIGNED TO MANEUVER THE SPACECRAFT FROM ITS INITIAL ORIENTATION TO SOME DESIRED 026488,000034: # ORIENTATION SPECIFIED BY THE PROGRAM WHICH CALLS KALCMANU, AVOIDING GIMBAL LOCK IN THE PROCESS. IN THE 026489,000035: # MOD 1 VERSION, THIS DESIRED ATTITUDE CAN BE SPECIFIED IN ONE OF TWO WAYS 026490,000036: 026491,000037: # A) BY A SET OF THREE COMMANDED CDU ANGLES 026492,000038: 026493,000039: # B) BY A VECTOR IN STABLE MEMBER COORDINATES ALONG WHICH THE THRUST VECTOR (GIVEN IN SPACECRAFT 026494,000040: # COORDINATES IS TO BE ALIGNED. 026495,000041: 026496,000042: # IF THE FIRST METHOD IS USED, THE THREE DESIRED CDU ANGLES MUST BE STORED AS 2:S COMPLEMENT SINGLE 026497,000043: # PRECISION ANGLES IN THE THREE CONSECUTIVE LOCATIONS, CPHI, CTHETA, CPSI, WHERE 026498,000044: 026499,000045: # CPHI = COMMANDED OUTER GIMBAL ANGLE 026500,000046: # CTHETA = COMMANDED INNER GIMBAL ANGLE 026501,000047: # CPSI = COMMANDED MIDDLE GIMBAL ANGLE 026502,000048: 026503,000049: # THE ENTRY POINT IN KALCMANU FOR THIS METHOD IS KALCMAN3 (SEE SECTION 4) 026504,000050: 026505,000051: # THE SECOND METHOD MAY BE USED FOR POINTING THE THRUST AXIS OF THE SPACECRAFT. IN THIS CASE THE AXIS TO 026506,000052: # BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY 026507,000053: # BEGINNING WITH THE LOCATION CALLED SCAXIS. THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES. 026508,000054: # THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN 026509,000055: 026510,000056: # SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM. THE COMPONENTS OF 026511,000057: # THIS VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES. 026512,000058: 026513,000059: # - 026514,000060: # KALCMANU DETERMINES THE DIRECTION OF THE SINGLE EQUIVALENT ROTATION (COF ALTERNATELY TERMED U) AND THE 026515,000061: # MAGNITUDE OF THE ROTATION (AM) TO BRING THE S/C FROM ITS INITIAL ORIENTATION TO ITS FINAL ORIENTATION. 026516,000062: # THIS DIRECTION REMAINS FIXED BOTH IN INERTIAL COORDINATES AND IN COMMANDED S/C AXES THROUGHOUT THE 026517,000063: # - 026518,000064: # MANEUVER. ONCE COF AND AM HAVE BEEN DETERMINED, KALCMANU THEN EXAMINES THE MANEUVER TO SEE IF IT WILL BRING 026519,000065: # - 026520,000066: # THE S/C THROUGH GIMBAL LOCK. IF SO, COF AND AM ARE READJUSTED SO THAT THE S/C WILL JUST SKIM THE GIMBAL 026521,000067: # LOCK ZONE AND ALIGN THE X-AXIS. IN GENERAL A FINAL YAW ABOUT X WILL BE NECESSARY TO COMPLETE THE MANEUVER. 026522,000068: 026523,000069: # NEEDLESS TO SAY, NEITHER THE INITIAL NOR THE FINAL ORIENTATION CAN BE IN GIMBAL LOCK. 026524,000070: 026525,000071: # FOR PROPER ATTITUDE CONTROL THE DIGITAL AUTOPILOT MUST BE GIVEN AN ATTITUDE REFERENCE WHICH IT CAN TRACK. 026526,000072: # KALCMANU DOES THIS BY GENERATING A REFERENCE OF DESIRED GIMBAL ANGLES (CDUXD, CDUYD, CDUZD) WHICH ARE UPDATED 026527,000073: # EVERY ONE SECOND DURING THE MANEUVER. TO ACHIEVE A SMOOTHER SEQUENCE OF COMMANDS BETWEEN SUCCESSIVE UPDATES, 026528,000074: # THE PROGRAM ALSO GENERATES A SET OF INCREMENTAL CDU ANGLES (DELDCDU) TO BE ADDED TO CDU DESIRED BY THE DIGITAL 026529,000075: # AUTOPILOT. KALCMANU ALSO CALCULATES THE COMPONENT MANEUVER RATES (OMEGAPD, OMEGAQD, OMEGARD), WHICH CAN 026530,000076: # -
![]() |
Page 596 |
026532,000078: # BE DETERMINED SIMPLY BY MULTIPLYING COF BY SOME SCALAR (ARATE) CORRESPONDING TO THE DESIRED ROTATIONAL RATE. 026533,000079: 026534,000080: # AUTOMATIC MANEUVERS ARE TIMED WITH THE HELP OF WAITLIST SO THAT AFTER A SPECIFIED INTERVAL THE Y AND Z 026535,000081: # DESIRED RATES ARE SET TO ZERO AND THE DESIRED CDU ANGLES (CDUYD, CDUZD) ARE SET EQUAL TO THE FINAL DESIRED CDU 026536,000082: # ANGLES (CTHETA, CPSI). IF ANY YAW REMAINS DUE TO GIMBAL LOCK AVOIDANCE, THE FINAL YAW MANEUVER IS 026537,000083: # CALCULATED AND THE DESIRED YAW RATE SET TO SOME FIXED VALUE (ROLLRATE = + OR - 2 DEGREES PER SEC). 026538,000084: # IN THIS CASE ONLY AN INCREMENTAL CDUX ANGLE (DELFROLL) IS SUPPLIED TO THE DAP. AT THE END OF THE YAW 026539,000085: # MANEUVER OR IN THE EVENT THAT THERE WAS NO FINAL YAW, CDUXD IS SET EQUAL TO CPHI AND THE X-AXIS DESIRED 026540,000086: # RATE SET TO ZERO. THUS, UPON COMPLETION OF THE MANEUVER THE S/C WILL FINISH UP IN A LIMIT CYCLE ABOUT THE 026541,000087: # DESIRED FINAL GIMBAL ANGLES. 026542,000088: 026543,000089: 026544,000090: 026545,000091: # PROGRAM LOGIC FLOW 026546,000092: 026547,000093: # KALCMANU IS CALLED AS A HIGH PRIORITY JOB WITH ENTRY POINTS AT KALCMAN3 AND VECPOINT. IT FIRST PICKS 026548,000094: # UP THE CURRENT CDU ANGLES TO BE USED AS THE BASIS FOR ALL COMPUTATIONS INVOLVING THE INITIAL S/C ORIENTATION. 026549,000095: # IT THEN DETERMINES THE DIRECTION COSINE MATRICES RELATING BOTH THE INITIAL AND FINAL S/C ORIENTATION TO STABLE 026550,000096: # * * * 026551,000097: # MEMBER AXES (MIS, MFS). IT ALSO COMPUTES THE MATRIX RELATING FINAL S/C AXES TO INITIAL S/C AXES (MFI). THE 026552,000098: # ANGLE OF ROTATION (AM) IS THEN EXTRACTED FROM THIS MATRIX, AND TESTS ARE MADE TO DETERMINE IF 026553,000099: 026554,000100: # A) AM LESS THAN .25 DEGREES (MINANG) 026555,000101: # B) AM GREATER THAN 170 DEGREES (MAXANG) 026556,000102: 026557,000103: # IF AM LESS THAN .25 DEGREES, NO COMPLICATED AUTOMATIC MANEUVERING IS NECESSARY. THEREFORE WE CAN SIMPLY 026558,000104: # SET CDU DESIRED EQUAL TO THE FINAL CDU DESIRED ANGLES AND TERMINATE THE JOB. 026559,000105: 026560,000106: # IF AM IS GREATER THAN .25 DEGREES BUT LESS THAN 170 DEGREES, THE AXES OF THE SINGLE EQUIVALENT ROTATION 026561,000107: # - * 026562,000108: # (COF) IS EXTRACTED FROM THE SKEW SYMMETRIC COMPONENTS OF MFI. * * 026563,000109: # IF AM GREATER THAN 170 DEGREES AN ALTERNATE METHOD EMPLOYING THE SYMMETRIC PART OF MFI (MFISYM) IS USED 026564,000110: # - 026565,000111: # TO DETERMINE COF. 026566,000112: 026567,000113: # THE PROGRAM THEN CHECKS TO SEE IF THE MANEUVER AS COMPUTED WILL BRING THE S/C THROUGH GIMBAL LOCK. IF 026568,000114: # SO, A NEW MANEUVER IS CALCULATED WHICH WILL JUST SKIM THE GIMBAL LOCK ZONE AND ALIGN THE S/C X-AXIS. THIS 026569,000115: # METHOD ASSURES THAT THE ADDITIONAL MANEUVERING TO AVOID GIMBAL LOCK WILL BE KEPT TO A MINIMUM. SINCE A FINAL 026570,000116: # P AXIS YAW WILL BE NECESSARY, A SWITCH IS RESET (STATE SWITCH 31) TO ALLOW FOR THE COMPUTATION OF THIS FINAL 026571,000117: # YAW. 026572,000118: 026573,000119: # AS STATED PREVIOUSLY KALCMANU GENERATES A SEQUENCE OF DESIRED GIMBAL ANGLES WHICH ARE UPDATED EVERY 026574,000120: # - 026575,000121: # SECOND. THIS IS ACCOMPLISHED BY A SMALL ROTATION OF THE DESIRED S/C FRAME ABOUT THE VECTOR COF. THE NEW 026576,000122: # DESIRED REFERENCE MATRIX IS THEN, 026577,000123: 026578,000124: # * * * 026579,000125: # MIS = MIS DEL 026580,000126: 026581,000127: # N+1 N
![]() |
Page 597 |
026583,000129: # * 026584,000130: # WHERE DEL IS THE MATRIX CORRESPONDING TO THIS SMALL ROTATION. THE NEW CDU ANGLES CAN THEN BE EXTRACTED 026585,000131: # * 026586,000132: # FROM MIS. 026587,000133: 026588,000134: # AT THE BEGINNING OF THE MANEUVER THE AUTOPILOT DESIRED RATES (OMEGAPD, OMEGAQD, OMEGARD) AND THE 026589,000135: # MANEUVER TIMINGS ARE ESTABLISHED. ON THE FIRST PASS AND ON ALL SUBSEQUENT UPDATES THE CDU DESIRED 026590,000136: # ANGLES ARE LOADED WITH THE APPROPRIATE VALUES AND THE INCREMENTAL CDU ANGLES ARE COMPUTED. THE AGC CLOCKS 026591,000137: 026592,000138: # (TIME1 AND TIME2) ARE THAN CHECKED TO SEE IF THE MANEUVER WILL TERMINATE BEFORE THE NEXT UPDATE. IF 026593,000139: # NOT, KALCMANU CALLS FOR ANOTHER UPDATE (RUN AS A JOB WITH PRIORITY TBD) IN ONE SECOND. ANY DELAYS IN THIS 026594,000140: # CALLING SEQUENCE ARE AUTOMATICALLY COMPENSATED IN CALLING FOR THE NEXT UPDATE. 026595,000141: 026596,000142: # IF IT IS FOUND THAT THE MANEUVER IS TO TERMINATE BEFORE THE NEXT UPDATE A ROUTINE IS CALLED (AS A WAIT- 026597,000143: # LIST TASK) TO STOP THE MANEUVER AT THE APPROPRIATE TIME AS EXPLAINED ABOVE. 026598,000144: 026599,000145: 026600,000146: 026601,000147: # CALLING SEQUENCE 026602,000148: 026603,000149: # THE ENTRY POINT IN KALCMANU FOR POINTING THE THRUST AXIS OF THE SPACECRAFT IS VECPOINT 026604,000150: 026605,000151: # CAF PRIO XX 026606,000152: # -- 026607,000153: # INHINT 026608,000154: # TC FINDVAC 026609,000155: # 2CADR VECPOINT 026610,000156: # RELINT 026611,000157: 026612,000158: # THE CALLING PROGRAM MUST ALSO SPECIFY THE DESIRED MANEUVERING RATES, PRESENTLY IN THE FORM OF A SINGLE 026613,000159: # PRECISION NUMBER (RATEINDEX), WHICH IS LOADED WITH ONE OF FOUR VALUES 0, 2, 4, OR 6, CORRESPONDING TO ANGULAR 026614,000160: # RATES OF .5, 2, 5, 10 DEGREES/SEC. THERE IS ALSO A STATE SWITCH (33) WHICH MAY BE SET TO IGNORE ANY FINAL YAW 026615,000161: 026616,000162: # INCURRED BY AVOIDING GIMBAL LOCK. 026617,000163: 026618,000164: # WITH THIS INFORMATION KALCMANU WILL THEN GENERATE A SEQUENCE OF THREE CDU DESIRED ANGLES (CDUXD, CDUYD, 026619,000165: # CDUZD), AND THREE INCREMENTAL ANGLES (DELDCDU, DELDCDU1, DELDCDU2) AS WELL AS THE COMPONENT MANEUVER RATES 026620,000166: # (IN S/C AXES) TO BE USED BY THE LEM DAP IN PERFORMING THE AUTOMATIC MANEUVER. 026621,000167: 026622,000168: # THERE ARE TWO WAYS IN WHICH KALCMANU MAY BE INITIATED CORRESPONDING TO THE TWO METHODS OF SPECIFYING THE 026623,000169: # DESIRED ATTITUDE OF THE SPACECRAFT. IF METHOD 1 IS USED, THE COMMANDED GIMBAL ANGLES MUST BE PRECOMPUTED AND 026624,000170: # STORED IN LOCATIONS CPHI, CTHETA, CPSI. THE USER:S PROGRAM MUST THEN CLEAR STATE SWITCH NO 33 TO ALLOW THE 026625,000171: # ATTITUDE MANEUVER ROUTINE TO PERFORM ANY FINAL P-AXIS YAW INCURRED BY AVOIDING GIMBAL LOCK. THE MANEUVER IS 026626,000172: 026627,000173: # THEN INITIATED BY ESTABLISHING THE FOLLOWING EXECUTIVE JOB 026628,000174: 026629,000175: # * 026630,000176: # CAF PRIO XX 026631,000177: # -- 026632,000178: # INHINT 026633,000179: # TC FINDVAC 026634,000180: # 2CADR KALCMAN3 026635,000181: # RELINT 026636,000182:
![]() |
Page 598 |
026638,000184: # THE USER:S PROGRAM MAY EITHER CONTINUE OR WAIT FOR THE TERMINATION OF THE MANEUVER. IF THE USER WISHES TO 026639,000185: # WAIT, HE MAY PUT HIS JOB TO SLEEP WITH THE FOLLOWING INSTRUCTIONS 026640,000186: 026641,000187: # L TC BANKCALL 026642,000188: # L+1 CADR ATTSTALL 026643,000189: # L+2 (BAD RETURN) 026644,000190: # L+3 (GOOD RETURN) 026645,000191: 026646,000192: # UPON COMPLETION OF THE MANEUVER, THE PROGRAM WILL BE AWAKENED AT L+3 IF THE MANEUVER WAS COMPLETED 026647,000193: # SUCCESSFULLY, OR AT L+2 IF THE MANEUVER WAS ABORTED. THIS ABORT WOULD OCCUR IF THE INITIAL OR FINAL ATTITUDE 026648,000194: # WAS IN GIMBAL LOCK. 026649,000195: # - 026650,000196: # IF THE SECOND METHOD IS USED, THE DESIRED THRUST DIRECTION, V , MUST BE COMPUTED AND STORED IN THE SIX 026651,000197: # F 026652,000198: # ERASABLE LOCATIONS BEGINNING WITH THE ADDRESS POINTVSM. THE THRUST AXIS MUST BE LOADED INTO THE SIX ERASABLE 026653,000199: # LOCATIONS BEGINNING WITH SC AXIS. THE CALLER MUST THEN CLEAR (OR SET) STATE SWITCH NO 33 AND SPECIFY THE 026654,000200: # DESIRED MANEUVERING RATE AS BEFORE. THE MANEUVER IS THEN INITIATED BY THE EXECUTIVE CALL. 026655,000201: 026656,000202: 026657,000203: 026658,000204: # SUBROUTINES 026659,000205: 026660,000206: # KALCMANU USES A NUMBER OF INTERPRETIVE SUBROUTINES WHICH MAY BE OF GENERAL INTEREST. SINCE THESE ROUTINES 026661,000207: # WERE PROGRAMMED EXCLUSIVELY FOR KALCMANU, THEY ARE NOT, AS YET, GENERALLY AVAILABLE FOR USE BY OTHER PROGRAMS. 026662,000208: 026663,000209: # MXM3 026664,000210: # ---- 026665,000211: 026666,000212: # THIS SUBROUTINE MULTIPLIES TWO 3X3 MATRICES AND LEAVES THE RESULT IN THE FIRST 18 LOCATIONS OF THE PUSH 026667,000213: # DOWN LIST, I.E., 026668,000214: 026669,000215: # (M M M ) 026670,000216: # ( 0 1 2) 026671,000217: # * ( ) * * 026672,000218: # M = (M M M ) = M1 X M2 026673,000219: # ( 3 4 5) 026674,000220: 026675,000221: # ( ) 026676,000222: # (M M M ) 026677,000223: # ( 6 7 8) 026678,000224: 026679,000225: # * 026680,000226: # INDEX REGISTER X1 MUST BE LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M1, AND X2 MUST BE 026681,000227: # * 026682,000228: # LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M2. THE ROUTINE USES THE FIRST 20 LOCATIONS OF THE PUSH 026683,000229: # DOWN LIST. THE FIRST ELEMENT OF THE MATRIX APPEARS IN PDO. PUSH UP FOR M . 026684,000230: # 8 026685,000231: 026686,000232: # TRANSPOS 026687,000233: # --------
![]() |
Page 599 |
026689,000235: # THIS ROUTINE TRANSPOSES A 3X3 MATRIX AND LEAVES THE RESULT IN THE PUSH DOWN LIST, I.E., 026690,000236: # 026691,000237: # * * T 026692,000238: # M = M1 026693,000239: 026694,000240: # INDEX REGISTER X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M1. PUSH UP FOR THE FIRST AND SUB- 026695,000241: # * 026696,000242: # SEQUENT COMPONENTS OF M. THIS SUBROUTINE ALSO USES THE FIRST 20 LOCATIONS OF THE PUSH DOWN LIST. 026697,000243: 026698,000244: # CDU TO DCM 026699,000245: # ---------- 026700,000246: 026701,000247: # THIS SUBROUTINE CONVERTS THREE CDU ANGLES IN T(MPAC) TO A DIRECTION COSINE MATRIX (SCALED BY 2) RELATING 026702,000248: # THE CORRESPONDING S/C ORIENTATIONS TO THE STABLE MEMBER FRAME. THE FORMULAS FOR THIS CONVERSION ARE 026703,000249: 026704,000250: # M = COSY COSZ 026705,000251: # 0 026706,000252: 026707,000253: # M = -COSY SINZ COSX + SINY SINX 026708,000254: # 1 026709,000255: 026710,000256: # M = COSY SINZ SINX + SINY COSX 026711,000257: # 2 026712,000258: 026713,000259: # M = SINZ 026714,000260: # 3 026715,000261: 026716,000262: # M = COSZ COSX 026717,000263: # 4 026718,000264: 026719,000265: # M = -COSZ SINX 026720,000266: # 5 026721,000267: 026722,000268: # M = -SINY COSZ 026723,000269: # 6 026724,000270: 026725,000271: # M = SINY SINZ COSX + COSY SINX 026726,000272: # 7 026727,000273: 026728,000274: # M = -SINY SINZ SINX + COSY COSX 026729,000275: # 8 026730,000276: 026731,000277: # WHERE X = OUTER GIMBAL ANGLE 026732,000278: # Y = INNER GIMBAL ANGLE 026733,000279: # Z = MIDDLE GIMBAL ANGLE 026734,000280: 026735,000281: # THE INTERPRETATION OF THIS MATRIX IS AS FOLLOWS 026736,000282: 026737,000283: # IF A , A , A REPRESENT THE COMPONENTS OF A VECTOR IN S/C AXES THEN THE COMPONENTS OF THE SAME VECTOR IN 026738,000284: # X Y Z
![]() |
Page 600 |
026740,000286: # STABLE MEMBER AXES (B , B , B ) ARE 026741,000287: # X Y Z 026742,000288: 026743,000289: # (B ) (A ) 026744,000290: # ( X) ( X) 026745,000291: # ( ) ( ) 026746,000292: # ( ) * ( ) 026747,000293: # (B ) = M (A ) 026748,000294: # ( Y) ( Y) 026749,000295: # ( ) ( ) 026750,000296: # (B ) (A ) 026751,000297: # ( Z) ( Z) 026752,000298: 026753,000299: # THE SUBROUTINE WILL STORE THIS MATRIX IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY AS SPECIFIED BY THE CALLING 026754,000300: # * 026755,000301: # PROGRAM. TO DO THIS THE CALLING PROGRAM MUST FIRST LOAD X2 WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M. 026756,000302: 026757,000303: # INTERNALLY, THE ROUTINE USES THE FIRST 16 LOCATIONS OF THE PUSH DOWN LIST, ALSO STEP REGISTER S1 AND INDEX 026758,000304: # REGISTER X2. 026759,000305: 026760,000306: 026761,000307: 026762,000308: # DCM TO CDU 026763,000309: # ---------- 026764,000310: # * 026765,000311: 026766,000312: # THIS ROUTINE EXTRACTS THE CDU ANGLES FROM A DIRECTION COSINE MATRIX (M SCALED BY 2) RELATING S/C AXIS TO 026767,000313: # * 026768,000314: # STABLE MEMBER AXES. X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M. THE SUBROUTINE LEAVES THE 026769,000315: # CORRESPONDING GIMBAL ANGLES IN V(MPAC) AS DOUBLE PRECISION 1:S COMPLEMENT ANGLES SCALED BY 2PI. THE FORMULAS 026770,000316: # FOR THIS CONVERSION ARE 026771,000317: 026772,000318: # Z = ARCSIN (M ) 026773,000319: # 3 026774,000320: 026775,000321: # Y = ARCSIN (-M /COSZ) 026776,000322: # 6 026777,000323: 026778,000324: # IF M IS NEGATIVE, Y IS REPLACED BY PI SGN Y - Y 026779,000325: # 0 026780,000326: 026781,000327: # X = ARCSIN (-M /COSZ) 026782,000328: # 5 026783,000329: 026784,000330: # IF M IS NEGATIVE X IS REPLACED BY PI SGN X - X 026785,000331: # 4 026786,000332: 026787,000333: # THIS ROUTINE DOES NOT SET THE PUSH DOWN POINTER, BUT USES THE NEXT 8 LOCATIONS OF THE PUSH DOWN LIST AND 026788,000334: # RETURNS THE POINTER TO ITS ORIGINAL SETTING. THIS PROCEDURE ALLOWS THE CALLER TO STORE THE MATRIX AT THE TOP OF 026789,000335: 026790,000336: # THE PUSH DOWN LIST. 026791,000337:
![]() |
Page 601 |
026793,000339: # DELCOMP 026794,000340: # ------- 026795,000341: 026796,000342: # * 026797,000343: # THIS ROUTINE COMPUTES THE DIRECTION COSINE MATRIX (DEL) RELATING ON 026798,000344: # - 026799,000345: # IS ROTATED WITH RESPECT TO THE FIRST BY AN ANGLE, A, ABOUT A UNIT VECTOR, U. THE FORMULA FOR THIS MATRIX IS 026800,000346: 026801,000347: # * * --T * 026802,000348: # DEL = I COSA + UU (1-COSA) + V SINA 026803,000349: # X 026804,000350: 026805,000351: # WHERE * (1 0 0) 026806,000352: # I = (0 1 0) 026807,000353: # (0 0 1) 026808,000354: 026809,000355: 026810,000356: # 2 026811,000357: # (U U U U U ) 026812,000358: # ( X X Y X Z) 026813,000359: # ( ) 026814,000360: # --T ( 2 ) 026815,000361: # UU = (U U U U U ) 026816,000362: # ( Y X Y Y Z) 026817,000363: # ( ) 026818,000364: # ( 2 ) 026819,000365: # (U U U U U ) 026820,000366: # ( Z X Z Y Z ) 026821,000367: 026822,000368: 026823,000369: # (0 -U U ) 026824,000370: 026825,000371: # ( Z Y ) 026826,000372: # * ( ) 026827,000373: # V = (U 0 -U ) 026828,000374: # X ( Z X) 026829,000375: # ( ) 026830,000376: # (-U U 0 ) 026831,000377: # ( Y X ) 026832,000378: 026833,000379: # - 026834,000380: # U = UNIT ROTATION VECTOR RESOLVED INTO S/C AXES 026835,000381: # A = ROTATION ANGLE 026836,000382: 026837,000383: # * 026838,000384: # THE INTERPRETATION OF DEL IS AS FOLLOWS 026839,000385: 026840,000386: # IF A , A , A REPRESENT THE COMPONENT OF A VECTOR IN THE ROTATED FRAME, THEN THE COMPONENTS OF THE SAME 026841,000387: # X Y Z 026842,000388: # VECTOR IN THE ORIGINAL S/C AXES (B , B , B ) ARE 026843,000389: # X Y Z
![]() |
Page 602 |
026845,000391: # (B ) (A ) 026846,000392: # ( X) ( X) 026847,000393: # ( ) * ( ) 026848,000394: # (B ) = DEL (A ) 026849,000395: # ( Y) ( Y) 026850,000396: # ( ) ( ) 026851,000397: # (B ) (A ) 026852,000398: # ( Z) ( Z) 026853,000399: 026854,000400: # THE ROUTINE WILL STORE THIS MATRIX (SCALED UNITY) IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY BEGINNING WITH 026855,000401: # - 026856,000402: # THE LOCATION CALLED DEL. IN ORDER TO USE THE ROUTINE, THE CALLING PROGRAM MUST FIRST STORE U (A HALF UNIT 026857,000403: # DOUBLE PRECISION VECTOR) IN THE SET OF ERASABLE LOCATIONS BEGINNING WITH THE ADDRESS CALLED COF. THE ANGLE, A, 026858,000404: # MUST THEN BE LOADED INTO D(MPAC). 026859,000405: # 026860,000406: # INTERNALLY, THE PROGRAM ALSO USES THE FIRST 10 LOCATIONS OF THE PUSH DOWN LIST. 026861,000407: 026862,000408: 026863,000409: 026864,000410: # READCDUK 026865,000411: # -------- 026866,000412: 026867,000413: # THIS BASIC LANGUAGE SUBROUTINE LOADS T(MPAC) WITH THE THREE CDU ANGLES. 026868,000414: 026869,000415: 026870,000416: 026871,000417: # SIGNMPAC 026872,000418: # -------- 026873,000419: 026874,000420: # THIS IS A BASIC LANGUAGE SUBROUTINE WHICH LIMITS THE MAGNITUDE OF D(MPAC) TO + OR - DPOSMAX ON OVERFLOW. 026875,000421: 026876,000422: 026877,000423: 026878,000424: # PROGRAM STORAGE ALLOCATION 026879,000425: 026880,000426: # 1) FIXED MEMORY 1059 WORDS 026881,000427: # 2) ERASABLE MEMORY 98 026882,000428: 026883,000429: # 3) STATE SWITCHES 3 026884,000430: # 4) FLAGS 1 026885,000431: 026886,000432: 026887,000433: 026888,000434: # JOB PRIORITIES 026889,000435: 026890,000436: # 1) KALCMANU TBD 026891,000437: # 2) ONE SECOND UPDATE TBD 026892,000438: 026893,000439: 026894,000440: 026895,000441: 026896,000442: # SUMMARY OF STATE SWITCHES AND FLAGWORDS USED BY KALCMANU.
![]() |
Page 603 |
026898,000444: # STATE FLAGWRD 2 SETTING MEANING 026899,000445: # SWITCH NO. BIT NO. 026900,000446: 026901,000447: # * 026902,000448: # 31 14 0 MANEUVER WENT THROUGH GIMBAL LOCK 026903,000449: # 1 MANEUVER DID NOT GO THROUGH GIMBAL LOCK 026904,000450: 026905,000451: # * 026906,000452: # 32 13 0 CONTINUE UPDATE PROCESS 026907,000453: # 1 START UPDATE PROCESS 026908,000454: 026909,000455: # 33 12 0 PERFORM FINAL P-AXIS YAW IF REQUIRED 026910,000456: # 1 IGNORE ANY FINAL P-AXIS YAW 026911,000457: 026912,000458: # 34 11 0 SIGNAL END OF KALCMANU 026913,000459: # 1 KALCMANU IN PROCESS USER MUST SET SWITCH BEFORE INITIATING 026914,000460: 026915,000461: 026916,000462: # * INTERNAL TO KALCMANU 026917,000463: 026918,000464: 026919,000465: 026920,000466: # SUGGESTIONS FOR PROGRAM INTEGRATION 026921,000467: 026922,000468: # THE FOLLOWING VARIABLES SHOULD BE ASSIGNED TO UNSWITCH ERASABLE 026923,000469: 026924,000470: # CPHI 026925,000471: # CTHETA 026926,000472: # CPSI 026927,000473: # POINTVSM +5 026928,000474: # SCAXIS +5 026929,000475: # DELDCDU 026930,000476: # DELDCDU1 026931,000477: # DELDCDU2 026932,000478: # RATEINDX 026933,000479: 026934,000480: # THE FOLLOWING SUBROUTINES MAY BE PUT IN A DIFFERENT BANK 026935,000481: 026936,000482: # MXM3 026937,000483: # TRANSPOS 026938,000484: # SIGNMPAC 026939,000485: # READCDUK 026940,000486: # CDUTODCM 026941,000487:
![]() |
Page 604 |
026943,000489: 34,2000 BANK 34 026944,000490: 34,2000 E3,1535 EBANK= MIS 026945,000491: 026946,000492: 34,2000 12001 NOOP 026947,000493: 34,2001 06103 VECPOINT TC INTPRET 026948,000494: 34,2002 77634 RTB 026949,000495: 34,2003 70457 READCDUK # READ THE PRESENT CDU ANGLES 026950,000496: 34,2004 01533 STORE BCDU 026951,000497: 34,2005 45164 AXC,2 CALL # COMPUTE THE TRANSFORMATION FROM INITIAL 026952,000498: 34,2006 01535 MIS # S/C AXES TO STABLE MEMBER AXES (MIS) 026953,000499: 34,2007 70464 CDUTODCM 026954,000500: 34,2010 61375 VLOAD VXM # - 026955,000501: 34,2011 01656 POINTVSM # RESOLVE THE POINTING DIRECTION VS INTO 026956,000502: 34,2012 01536 MIS # INITIAL S/C AXES 026957,000503: 34,2013 41456 UNIT PUSH 026958,000504: 34,2014 53435 VXV UNIT # TAKE THE CROSS PRODUCT VF X VI 026959,000505: 34,2015 01664 SCAXIS # WHERE VI = SCAXIS 026960,000506: 34,2016 57400 BOV VCOMP 026961,000507: 34,2017 70042 PICKAXIS 026962,000508: 34,2020 25624 STOVL COF 026963,000509: 34,2021 01664 SCAXIS 026964,000510: 34,2022 72441 DOT SL1 026965,000511: 34,2023 77726 ARCCOS 026966,000512: 34,2024 77624 COMPMATX CALL # NOW COMPUTE THE TRANSFORMATION FROM 026967,000513: 34,2025 70603 DELCOMP # FINAL S/C AXES TO INITIAL S/C AXES = MFI 026968,000514: 34,2026 75160 AXC,1 AXC,2 # COMPUTE THE TRANSFORMATION FROM FINAL 026969,000515: 026970,000516: 34,2027 01535 MIS # S/C AXES TO STABLE MEMBER AXES 026971,000517: 34,2030 01557 KEL 026972,000518: 34,2031 77624 CALL 026973,000519: 34,2032 73442 MXM3 # MFS IN PD LIST 026974,000520: 34,2033 45160 AXC,1 CALL 026975,000521: 34,2034 00000 0 # EXTRACT THE CDU ANGLES FROM THIS MATRIX 026976,000522: 34,2035 70727 DCMTOCDU 026977,000523: 34,2036 77634 RTB 026978,000524: 34,2037 33573 V1STO2S # AND USE THEM AS THE COMMANDED CDU ANGLES 026979,000525: 34,2040 35632 STCALL CPHI 026980,000526: 34,2041 70070 KALCMAN3 +1 # PROCEED AS IF WE HAD BEEN GIVEN COMMAND 026981,000527: # CDU ANGLES 026982,000528: 34,2042 50375 PICKAXIS VLOAD DOT # IF VF X VI = 0. PUSH UP FOR VF 026983,000529: 34,2043 01664 SCAXIS # FIND VF . VI 026984,000530: 34,2044 72240 BMN TLOAD # IF ANTIPARALLEL 026985,000531: 34,2045 70051 ROT180 026986,000532: 34,2046 01533 BCDU 026987,000533: 34,2047 35632 STCALL CPHI # IF VF = VI 026988,000534: 34,2050 70070 KALCMAN3 +1 026989,000535: 026990,000536: 34,2051 47375 ROT180 VLOAD VXV # 180 DEG ROTATION IS REQUIRED 026991,000537: 34,2052 01544 MIS +6 # Y STABLE MEMBER AXIS IN INITIAL S/C AXES 026992,000538: 34,2053 30414 HALFA 026993,000539: 026994,000540: 34,2054 47256 UNIT VXV # FIND Y(SM) X X(I) 026995,000541: 34,2055 01664 SCAXIS # FIND UNIT (VI X UNIT(Y(SM) X X(I)))
![]() |
Page 605 |
026997,000543: 34,2056 40056 UNIT BOV # PICK A VECTOR PERPENDICULAR TO VI IN THE 026998,000544: 34,2057 70064 PICKX # PLANE CONTAINING Y(SM) AND X(I) SO THAT 026999,000545: 34,2060 15624 XROT STODL COF # MANEUVER DOES NOT GO THRU GIMBAL LOCK 027000,000546: 34,2061 30414 HALFA 027001,000547: 34,2062 77650 GOTO 027002,000548: 34,2063 70024 COMPMATX 027003,000549: 34,2064 52175 PICKX VLOAD GOTO # PICK THE X AXIS IN THIS CASE 027004,000550: 34,2065 30414 HALFA 027005,000551: 027006,000552: 34,2066 70060 XROT 027007,000553: 027008,000554: # FIRST ENTRY POINT- KALCMAN3 027009,000555: 027010,000556: # THE THREE DESIRED CDU ANGLES MUST BE STORED AS SINGLE PRECISION TWOS COMPLEMENT ANGLES IN THE THREE SUCCESSIVE 027011,000557: # LOCATIONS, CPHI, CTHETA, CPSI. 027012,000558: 027013,000559: 34,2067 06103 KALCMAN3 TC INTPRET # PICK UP THE CURRENT CDU ANGLES AND 027014,000560: 34,2070 77634 RTB # COMPUTE THE MATRIX FROM INITIAL S/C 027015,000561: 34,2071 70457 READCDUK # AXES TO FINAL S/C AXES 027016,000562: 34,2072 01533 STORE BCDU # STORE INITIAL S/C ANGLES 027017,000563: 34,2073 51535 SLOAD ABS 027018,000564: 34,2074 01535 BCDU +2 # CHECK MAGNITUDE OF MIDDLE GIMBAL ANGLE 027019,000565: 34,2075 51025 DSU BPL 027020,000566: 34,2076 30444 LOCKANGL # IF GREATER THAN 60 DEG, ABORT MANEUVER 027021,000567: 34,2077 71007 TOOBAD 027022,000568: 34,2100 72364 AXC,2 TLOAD 027023,000569: 34,2101 01535 MIS 027024,000570: 34,2102 01533 BCDU 027025,000571: 34,2103 77624 CALL # COMPUTE THE TRANSFORMATION FROM INITIAL 027026,000572: 34,2104 70464 CDUTODCM # S/C AXES TO STABLE MEMBER AXES 027027,000573: 34,2105 51535 SLOAD ABS # CHECK THE MAGNITUDE OF THE DESIRED 027028,000574: 34,2106 01634 CPSI # MIDDLE GIMBAL ANGLE 027029,000575: 027030,000576: 34,2107 51025 DSU BPL 027031,000577: 34,2110 30444 LOCKANGL # IF GREATER THAN 60 DEG, ABORT MANEUVER 027032,000578: 34,2111 71007 TOOBAD 027033,000579: 34,2112 72364 AXC,2 TLOAD 027034,000580: 34,2113 01557 MFS # PREPARE TO CALCULATE ARRAY MFS 027035,000581: 34,2114 01632 CPHI 027036,000582: 34,2115 77624 CALL 027037,000583: 34,2116 70464 CDUTODCM 027038,000584: 34,2117 45160 SECAD AXC,1 CALL # MIS AND MFS ARRAYS CALCULATED $2 027039,000585: 34,2120 01535 MIS 027040,000586: 34,2121 73472 TRANSPOS 027041,000587: 34,2122 77775 VLOAD 027042,000588: 34,2123 77626 STADR 027043,000589: 34,2124 52161 STOVL TMIS +12D 027044,000590: 34,2125 77626 STADR 027045,000591: 34,2126 52167 STOVL TMIS +6 027046,000592: 34,2127 77626 STADR 027047,000593: 34,2130 76175 STORE TMIS # TMIS = TRANSPOSE(MIS) SCALED BY 2 027048,000594: 34,2131 75160 AXC,1 AXC,2
![]() |
Page 606 |
027050,000596: 34,2132 01601 TMIS 027051,000597: 34,2133 01557 MFS 027052,000598: 34,2134 77624 CALL 027053,000599: 34,2135 73442 MXM3 027054,000600: 34,2136 45575 VLOAD STADR 027055,000601: 34,2137 52203 STOVL MFI +12D 027056,000602: 34,2140 77626 STADR 027057,000603: 34,2141 52211 STOVL MFI +6 027058,000604: 34,2142 77626 STADR 027059,000605: 34,2143 76217 STORE MFI # MFI = TMIS MFS (SCALED BY 4) 027060,000606: 34,2144 45001 SETPD CALL # TRANSPOSE MFI IN PD LIST 027061,000607: 34,2145 00023 18D 027062,000608: 34,2146 73501 TRNSPSPD 027063,000609: 34,2147 45575 VLOAD STADR 027064,000610: 027065,000611: 34,2150 52161 STOVL TMFI +12D 027066,000612: 34,2151 77626 STADR 027067,000613: 34,2152 52167 STOVL TMFI +6 027068,000614: 34,2153 77626 STADR 027069,000615: 34,2154 76175 STORE TMFI # TMFI = TRANSPOSE (MFI) SCALED BY 4 027070,000616: 027071,000617: # CALCULATE COFSKEW AND MFISYM 027072,000618: 027073,000619: 34,2155 45345 DLOAD DSU 027074,000620: 34,2156 01604 TMFI +2 027075,000621: 34,2157 01562 MFI +2 027076,000622: 34,2160 45325 PDDL DSU # CALCULATE COF SCALED BY 2/SIN(AM) 027077,000623: 34,2161 01564 MFI +4 027078,000624: 34,2162 01606 TMFI +4 027079,000625: 34,2163 45325 PDDL DSU 027080,000626: 34,2164 01614 TMFI +10D 027081,000627: 34,2165 01572 MFI +10D 027082,000628: 34,2166 77666 VDEF 027083,000629: 34,2167 01635 STORE COFSKEW # EQUALS MFISKEW 027084,000630: 027085,000631: # CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE 027086,000632: 027087,000633: 34,2170 43345 DLOAD DAD 027088,000634: 027089,000635: 34,2171 01560 MFI 027090,000636: 34,2172 01600 MFI +16D 027091,000637: 34,2173 43225 DSU DAD 027092,000638: 34,2174 30426 QUARTA 027093,000639: 34,2175 01570 MFI +8D 027094,000640: 34,2176 01645 STORE CAM # CAM = (MFI0+MFI4+MFI8-1)/2 HALF SCALE 027095,000641: 34,2177 77726 ARCCOS 027096,000642: 34,2200 01643 STORE AM # AM=ARCCOS(CAM) (AM SCALED BY 2) 027097,000643: 34,2201 51025 DSU BPL 027098,000644: 34,2202 30410 MINANG 027099,000645: 34,2203 70214 CHECKMAX 027100,000646: 34,2204 77751 TLOAD # MANEUVER LESS THAN .25 DEGREES 027101,000647: 34,2205 01632 CPHI # GO DIRECTLY INTO ATTITUDE HOLD
![]() |
Page 607 |
027103,000649: 34,2206 00767 STORE CDUXD # ABOUT COMMANDED ANGLES 027104,000650: 34,2207 77751 TLOAD 027105,000651: 34,2210 30416 NIL 027106,000652: 34,2211 00775 STORE OMEGAPD # ZERO DESIRED RATES 027107,000653: 34,2212 34772 STCALL DELDCDU # PREPARE TO END MANEUVER ON GOOD RETURN 027108,000654: 34,2213 70777 ENDMANU 027109,000655: 34,2214 45345 CHECKMAX DLOAD DSU 027110,000656: 34,2215 01643 AM 027111,000657: 34,2216 30412 MAXANG 027112,000658: 34,2217 77244 BPL VLOAD 027113,000659: 34,2220 70226 ALTCALC # UNIT 027114,000660: 34,2221 01635 COFSKEW # COFSKEW 027115,000661: 34,2222 77656 UNIT 027116,000662: 34,2223 01624 STORE COF # COF IS THE MANEUVER AXIS 027117,000663: 34,2224 77650 GOTO # SEE IF MANEUVER GOES THRU GIMBAL LOCK 027118,000664: 34,2225 71024 LOCSKIRT 027119,000665: 34,2226 53375 ALTCALC VLOAD VAD # IF AM GREATER THAN 170 DEGREES 027120,000666: 34,2227 01560 MFI 027121,000667: 34,2230 01602 TMFI 027122,000668: 34,2231 77762 VSR1 027123,000669: 34,2232 25602 STOVL MFISYM 027124,000670: 34,2233 01566 MFI +6 027125,000671: 34,2234 74455 VAD VSR1 027126,000672: 34,2235 01610 TMFI +6 027127,000673: 34,2236 25610 STOVL MFISYM +6 027128,000674: 34,2237 01574 MFI +12D 027129,000675: 34,2240 74455 VAD VSR1 027130,000676: 34,2241 01616 TMFI +12D 027131,000677: 34,2242 01616 STORE MFISYM +12D # MFISYM=(MFI+TMFI)/2 SCALED BY 4 027132,000678: 027133,000679: # CALCULATE COF 027134,000680: 027135,000681: 34,2243 70545 DLOAD SR1 027136,000682: 34,2244 01645 CAM 027137,000683: 34,2245 45325 PDDL DSU # PDO CAM $4 027138,000684: 34,2246 30414 HALFA 027139,000685: 34,2247 01645 CAM 027140,000686: 34,2250 65204 BOVB PDDL # PD2 1 - CAM $2 027141,000687: 34,2251 70445 SIGNMPAC 027142,000688: 34,2252 01622 MFISYM +16D 027143,000689: 34,2253 56225 DSU DDV 027144,000690: 027145,000691: 34,2254 00001 0 027146,000692: 34,2255 00003 2 027147,000693: 34,2256 65366 SQRT PDDL # COFZ = SQRT(MFISYM8-CAM)/1-CAM) 027148,000694: 34,2257 01612 MFISYM +8D # $ ROOT 2 027149,000695: 34,2260 56225 DSU DDV 027150,000696: 34,2261 00001 0 027151,000697: 34,2262 00003 2 027152,000698: 34,2263 65366 SQRT PDDL # COFY = SQRT(MFISYM4-CAM)/(1-CAM) $ROOT2
![]() |
Page 608 |
027154,000700: 34,2264 01602 MFISYM 027155,000701: 34,2265 56225 DSU DDV 027156,000702: 027157,000703: 34,2266 00001 0 027158,000704: 34,2267 00003 2 027159,000705: 34,2270 55566 SQRT VDEF # COFX = SQRT(MFISYM-CAM)/(1-CAM) $ROOT 2 027160,000706: 34,2271 77656 UNIT 027161,000707: 34,2272 01624 STORE COF 027162,000708: 027163,000709: # DETERMINE LARGEST COF AND ADJUST ACCORDINGLY 027164,000710: 027165,000711: 34,2273 45345 COFMAXGO DLOAD DSU 027166,000712: 34,2274 01624 COF 027167,000713: 34,2275 01626 COF +2 027168,000714: 34,2276 71240 BMN DLOAD # COFY G COFX 027169,000715: 34,2277 70306 COMP12 027170,000716: 34,2300 01624 COF 027171,000717: 34,2301 50025 DSU BMN 027172,000718: 34,2302 01630 COF +4 027173,000719: 34,2303 70363 METHOD3 # COFZ G COFX OR COFY 027174,000720: 34,2304 77650 GOTO 027175,000721: 34,2305 70337 METHOD1 # COFX G COFY OR COFZ 027176,000722: 34,2306 45345 COMP12 DLOAD DSU 027177,000723: 34,2307 01626 COF +2 027178,000724: 34,2310 01630 COF +4 027179,000725: 34,2311 77640 BMN 027180,000726: 34,2312 70363 METHOD3 # COFZ G COFY OR COFX 027181,000727: 027182,000728: 34,2313 51145 METHOD2 DLOAD BPL # COFY MAX 027183,000729: 34,2314 01637 COFSKEW +2 # UY 027184,000730: 34,2315 70321 U2POS 027185,000731: 34,2316 57575 VLOAD VCOMP 027186,000732: 34,2317 01624 COF 027187,000733: 34,2320 01624 STORE COF 027188,000734: 34,2321 51145 U2POS DLOAD BPL 027189,000735: 34,2322 01604 MFISYM +2 # UX UY 027190,000736: 34,2323 70327 OKU21 027191,000737: 34,2324 57545 DLOAD DCOMP # SIGN OF UX OPPOSITE TO UY 027192,000738: 34,2325 01624 COF 027193,000739: 34,2326 01624 STORE COF 027194,000740: 34,2327 51145 OKU21 DLOAD BPL 027195,000741: 34,2330 01614 MFISYM +10D # UY UZ 027196,000742: 34,2331 71024 LOCSKIRT 027197,000743: 34,2332 57545 DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY 027198,000744: 34,2333 01630 COF +4 027199,000745: 34,2334 01630 STORE COF +4 027200,000746: 34,2335 77650 GOTO 027201,000747: 34,2336 71024 LOCSKIRT 027202,000748: 34,2337 51145 METHOD1 DLOAD BPL # COFX MAX 027203,000749: 027204,000750: 34,2340 01635 COFSKEW # UX 027205,000751: 34,2341 70345 U1POS
![]() |
Page 609 |
027207,000753: 34,2342 57575 VLOAD VCOMP 027208,000754: 34,2343 01624 COF 027209,000755: 34,2344 01624 STORE COF 027210,000756: 34,2345 51145 U1POS DLOAD BPL 027211,000757: 34,2346 01604 MFISYM +2 # UX UY 027212,000758: 34,2347 70353 OKU12 027213,000759: 34,2350 57545 DLOAD DCOMP 027214,000760: 34,2351 01626 COF +2 # SIGN OF UY OPPOSITE TO UX 027215,000761: 027216,000762: 34,2352 01626 STORE COF +2 027217,000763: 34,2353 51145 OKU12 DLOAD BPL 027218,000764: 34,2354 01606 MFISYM +4 # UX UZ 027219,000765: 34,2355 71024 LOCSKIRT 027220,000766: 34,2356 57545 DLOAD DCOMP # SIGN OF UZ OPPOSITE TO UY 027221,000767: 34,2357 01630 COF +4 027222,000768: 34,2360 01630 STORE COF +4 027223,000769: 34,2361 77650 GOTO 027224,000770: 34,2362 71024 LOCSKIRT 027225,000771: 34,2363 51145 METHOD3 DLOAD BPL # COFZ MAX 027226,000772: 34,2364 01641 COFSKEW +4 # UZ 027227,000773: 34,2365 70371 U3POS 027228,000774: 34,2366 57575 VLOAD VCOMP 027229,000775: 34,2367 01624 COF 027230,000776: 34,2370 01624 STORE COF 027231,000777: 34,2371 51145 U3POS DLOAD BPL 027232,000778: 34,2372 01606 MFISYM +4 # UX UZ 027233,000779: 34,2373 70377 OKU31 027234,000780: 34,2374 57545 DLOAD DCOMP 027235,000781: 34,2375 01624 COF # SIGN OF UX OPPOSITE TO UZ 027236,000782: 34,2376 01624 STORE COF 027237,000783: 34,2377 51145 OKU31 DLOAD BPL 027238,000784: 34,2400 01614 MFISYM +10D # UY UZ 027239,000785: 027240,000786: 34,2401 71024 LOCSKIRT 027241,000787: 34,2402 57545 DLOAD DCOMP 027242,000788: 34,2403 01626 COF +2 # SIGN OF UY OPPOSITE TO UZ 027243,000789: 34,2404 01626 STORE COF +2 027244,000790: 34,2405 77650 GOTO 027245,000791: 34,2406 71024 LOCSKIRT 027246,000792:
![]() |
Page 610 |
027248,000794: # MATRIX OPERATIONS 027249,000795: 027250,000796: 35,3442 BANK 35 027251,000797: 35,3442 E3,1535 EBANK= MIS 027252,000798: 027253,000799: 35,3442 77601 MXM3 SETPD # MXM3 MULTIPLIES 2 3X3 MATRICES 027254,000800: 35,3443 00001 0 # AND LEAVES RESULT IN PD LIST 027255,000801: 35,3444 64743 DLOAD* PDDL* # ADDRESS OF 1ST MATRIX IN XR1 027256,000802: 35,3445 77762 12D,2 # ADDRESS OF 2ND MATRIX IN XR2 027257,000803: 35,3446 77770 6,2 027258,000804: 35,3447 55523 PDDL* VDEF # DEFINE VECTOR M2(COL 1) 027259,000805: 35,3450 77776 0,2 027260,000806: 35,3451 64717 MXV* PDDL* # M1XM2(COL 1) IN PD 027261,000807: 35,3452 00001 0,1 027262,000808: 027263,000809: 35,3453 77760 14D,2 027264,000810: 35,3454 64723 PDDL* PDDL* 027265,000811: 35,3455 77766 8D,2 027266,000812: 35,3456 77774 2,2 027267,000813: 35,3457 63666 VDEF MXV* # DEFINE VECTOR M2(COL 2) 027268,000814: 35,3460 00001 0,1 027269,000815: 35,3461 64723 PDDL* PDDL* # M1XM2(COL 2) IN PD 027270,000816: 35,3462 77756 16D,2 027271,000817: 35,3463 77764 10D,2 027272,000818: 35,3464 55523 PDDL* VDEF # DEFINE VECTOR M2(COL 3) 027273,000819: 35,3465 77772 4,2 027274,000820: 35,3466 41517 MXV* PUSH # M1XM2(COL 3) IN PD 027275,000821: 35,3467 00001 0,1 027276,000822: 35,3470 77650 GOTO 027277,000823: 35,3471 73501 TRNSPSPD # REVERSE ROWS AND COLS IN PD AND 027278,000824: # RETURN WITH M1XM2 IN PD LIST 027279,000825: 027280,000826: 35,3472 76601 TRANSPOS SETPD VLOAD* # TRANSPOS TRANSPOSES A 3X3 MATRIX 027281,000827: 35,3473 00001 0 # AND LEAVES RESULT IN PD LIST 027282,000828: 35,3474 00001 0,1 # MATRIX ADDRESS IN XR1 027283,000829: 35,3475 62713 PDVL* PDVL* 027284,000830: 35,3476 00007 6,1 027285,000831: 35,3477 00015 12D,1 027286,000832: 027287,000833: 35,3500 77606 PUSH # MATRIX IN PD 027288,000834: 35,3501 65345 TRNSPSPD DLOAD PDDL # ENTER WITH MATRIX IN PD LIST 027289,000835: 35,3502 00003 2 027290,000836: 35,3503 00007 6 027291,000837: 35,3504 14003 STODL 2 027292,000838: 35,3505 77626 STADR 027293,000839: 35,3506 63770 STODL 6 027294,000840: 35,3507 00005 4 027295,000841: 35,3510 77725 PDDL 027296,000842: 35,3511 00015 12D 027297,000843: 35,3512 14005 STODL 4 027298,000844: 35,3513 77626 STADR 027299,000845: 35,3514 63762 STODL 12D
![]() |
Page 611 |
027301,000847: 35,3515 00013 10D 027302,000848: 35,3516 77725 PDDL 027303,000849: 35,3517 00017 14D 027304,000850: 35,3520 14013 STODL 10D 027305,000851: 35,3521 77626 STADR 027306,000852: 35,3522 77760 STORE 14D 027307,000853: 027308,000854: 35,3523 77616 RVQ # RETURN WITH TRANSPOSED MATRIX IN PD LIST 027309,000855:
![]() |
Page 612 |
027311,000857: 34,2407 BANK 34 027312,000858: 34,2407 E3,1535 EBANK= MIS 027313,000859: 027314,000860: 34,2407 00013 13563 MINANG 2DEC 0.00069375 027315,000861: 027316,000862: 34,2411 17070 34343 MAXANG 2DEC 0.472222222 027317,000863: 027318,000864: 34,2413 20000 00000 HALFA 2DEC 0.5 027319,000865: 027320,000866: 34,2415 00000 00000 NIL 2DEC 0.0 027321,000867: 027322,000868: 34,2417 00000 00000 2DEC 0.0 027323,000869: 027324,000870: 34,2421 00000 00000 2DEC 0.0 027325,000871: 027326,000872: 34,2423 20000 00000 2DEC 0.5 027327,000873: 027328,000874: 34,2425 10000 00000 QUARTA 2DEC .25 027329,000875: 027330,000876: # GIMBAL LOCK CONSTANTS 027331,000877: 027332,000878: # D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES 027333,000879: # NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES 027334,000880: 027335,000881: 34,2427 15666 20443 SD 2DEC .433015 # = SIN(D) $2 027336,000882: 027337,000883: 34,2431 33555 01106 K3S1 2DEC .86603 # = SIN(D) $1 027338,000884: 027339,000885: 34,2433 67777 77777 K4 2DEC -.25 # = -COS(D) $2 027340,000886: 027341,000887: 34,2435 04000 00000 K4SQ 2DEC .125 # = COS(D)COS(D) $2 027342,000888: 027343,000889: 34,2437 00216 36323 SNGLCD 2DEC .008725 # = SIN(NGL)COS(D) $2 027344,000890: 027345,000891: 34,2441 17773 00057 CNGL 2DEC .499695 # COS(NGL) $2 027346,000892: 027347,000893: 34,2443 12525 12525 LOCKANGL 2DEC .3333333333 # $60DEGG 027348,000894: 027349,000895: # ROUTINE FOR LIMITING THE SIZE OF MPAC ON OVERFLOW TO DP POSMAX OR DP NEGMAX 027350,000896: 027351,000897: 34,2445 00006 SIGNMPAC EXTEND 027352,000898: 34,2446 37735 DCA DPOSMAX 027353,000899: 34,2447 52145 DXCH MPAC 027354,000900: 34,2450 10000 CCS A 027355,000901: 34,2451 37761 CAF ZERO 027356,000902: 34,2452 16535 TCF SLOAD2 +2 027357,000903: 34,2453 12454 TCF +1 027358,000904: 34,2454 00006 EXTEND 027359,000905: 34,2455 47735 DCS DPOSMAX 027360,000906: 027361,000907: 34,2456 16533 TCF SLOAD2 027362,000908:
![]() |
Page 613 |
027364,000910: 027365,000911: # INTERPRETIVE SUBROUTINE TO READ THE CDU ANGLES 027366,000912: 027367,000913: 34,2457 30034 READCDUK CA CDUZ # LOAD T(MPAC) WITH CDU ANGLES 027368,000914: 34,2460 54146 TS MPAC +2 027369,000915: 34,2461 00006 EXTEND 027370,000916: 34,2462 30033 DCA CDUX # AND CHANGE MODE TO TRIPLE PRECISION 027371,000917: 34,2463 16545 TCF TLOAD +6 027372,000918: 027373,000919: 027374,000920: 34,2464 66370 CDUTODCM AXT,1 SSP 027375,000921: 34,2465 00003 OCT 3 027376,000922: 34,2466 00051 S1 027377,000923: 34,2467 00001 OCT 1 # SET XR1, S1, AND PD FOR LOOP 027378,000924: 34,2470 00010 STORE 7 027379,000925: 34,2471 77601 SETPD 027380,000926: 34,2472 00001 0 027381,000927: 34,2473 47133 LOOPSIN SLOAD* RTB 027382,000928: 34,2474 00013 10D,1 027383,000929: 34,2475 33524 CDULOGIC 027384,000930: 34,2476 00013 STORE 10D # LOAD PD WITH 0 SIN(PHI) 027385,000931: 34,2477 65356 SIN PDDL # 2 COS(PHI) 027386,000932: 34,2500 00013 10D # 4 SIN(THETA) 027387,000933: 34,2501 41546 COS PUSH # 6 COS(THETA) 027388,000934: 34,2502 71300 TIX,1 DLOAD # 8 SIN(PSI) 027389,000935: 34,2503 70473 LOOPSIN # 10 COS(PSI) 027390,000936: 34,2504 00007 6 027391,000937: 34,2505 72405 DMP SL1 027392,000938: 34,2506 00013 10D 027393,000939: 34,2507 10001 STORE 0,2 # C0=COS(THETA)COS(PSI) 027394,000940: 34,2510 41345 DLOAD DMP 027395,000941: 34,2511 00005 4 027396,000942: 027397,000943: 34,2512 00001 0 027398,000944: 34,2513 41325 PDDL DMP # (PD6 SIN(THETA)SIN(PHI)) 027399,000945: 34,2514 00007 6 027400,000946: 34,2515 00011 8D 027401,000947: 34,2516 72405 DMP SL1 027402,000948: 34,2517 00003 2 027403,000949: 34,2520 72421 BDSU SL1 027404,000950: 34,2521 00015 12D 027405,000951: 34,2522 10003 STORE 2,2 # C1=-COS(THETA)SIN(PSI)COS(PHI) 027406,000952: 34,2523 41345 DLOAD DMP 027407,000953: 34,2524 00003 2 027408,000954: 34,2525 00005 4 027409,000955: 34,2526 41325 PDDL DMP # (PD7 COS(PHI)SIN(THETA)) SCALED 4 027410,000956: 34,2527 00007 6 027411,000957: 34,2530 00011 8D 027412,000958: 34,2531 72405 DMP SL1 027413,000959: 34,2532 00001 0 027414,000960: 34,2533 72415 DAD SL1
![]() |
Page 614 |
027416,000962: 34,2534 00017 14D 027417,000963: 34,2535 10005 STORE 4,2 # C2=COS(THETA)SIN(PSI)SIN(PHI) 027418,000964: 34,2536 77745 DLOAD 027419,000965: 34,2537 00011 8D 027420,000966: 34,2540 10007 STORE 6,2 # C3=SIN(PSI) 027421,000967: 34,2541 77745 DLOAD 027422,000968: 34,2542 00013 10D 027423,000969: 34,2543 72405 DMP SL1 027424,000970: 34,2544 00003 2 027425,000971: 34,2545 10011 STORE 8D,2 # C4=COS(PSI)COS(PHI) 027426,000972: 34,2546 41345 DLOAD DMP 027427,000973: 34,2547 00013 10D 027428,000974: 34,2550 00001 0 027429,000975: 34,2551 72476 DCOMP SL1 027430,000976: 027431,000977: 34,2552 10013 STORE 10D,2 # C5=-COS(PSI)SIN(PHI) 027432,000978: 34,2553 41345 DLOAD DMP 027433,000979: 34,2554 00005 4 027434,000980: 34,2555 00013 10D 027435,000981: 34,2556 72476 DCOMP SL1 027436,000982: 34,2557 10015 STORE 12D,2 # C6=-SIN(THETA)COS(PSI) 027437,000983: 34,2560 77745 DLOAD 027438,000984: 34,2561 72405 DMP SL1 # (PUSH UP 7) 027439,000985: 34,2562 00011 8D 027440,000986: 34,2563 41325 PDDL DMP # (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE 4 027441,000987: 34,2564 00007 6 027442,000988: 34,2565 00001 0 027443,000989: 34,2566 72415 DAD SL1 # (PUSH UP 7) 027444,000990: 34,2567 77626 STADR # C7=COS(PHI)SIN(THETA)SIN(PSI) 027445,000991: 34,2570 67760 STORE 14D,2 # +COS(THETA)SIN(PHI) 027446,000992: 34,2571 77745 DLOAD 027447,000993: 34,2572 72405 DMP SL1 # (PUSH UP 6) 027448,000994: 34,2573 00011 8D 027449,000995: 34,2574 41325 PDDL DMP # (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE 4 027450,000996: 34,2575 00007 6 027451,000997: 34,2576 00003 2 027452,000998: 34,2577 72425 DSU SL1 # (PUSH UP 6) 027453,000999: 34,2600 77626 STADR 027454,001000: 027455,001001: 34,2601 67756 STORE 16D,2 # C8=-SIN(THETA)SIN(PHI)SIN(PSI) 027456,001002: 34,2602 77616 RVQ # +COS(THETA)COS(PHI) 027457,001003: 027458,001004: # CALCULATION OF THE MATRIX DEL...... 027459,001005: 027460,001006: # * * --T * 027461,001007: # DEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A) SCALED 1 027462,001008: 027463,001009: # - 027464,001010: # WHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION. 027465,001011: # A IS THE ANGLE OF ROTATION (DP SCALED 2) 027466,001012: # - 027467,001013: # UPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC 027468,001014:
![]() |
Page 615 |
027470,001016: 34,2603 41401 DELCOMP SETPD PUSH # MPAC CONTAINS THE ANGLE A 027471,001017: 34,2604 00001 0 027472,001018: 34,2605 65356 SIN PDDL # PD0 = SIN(A) 027473,001019: 34,2606 41546 COS PUSH # PD2 = COS(A) 027474,001020: 34,2607 41021 BDSU BOVB 027475,001021: 34,2610 30414 HALFA 027476,001022: 34,2611 70445 SIGNMPAC 027477,001023: 34,2612 77725 PDDL # PD4 = 1-COS(A) 027478,001024: 027479,001025: # COMPUTE THE DIAGONAL COMPONENTS OF DEL 027480,001026: 027481,001027: 34,2613 01624 COF 027482,001028: 34,2614 41316 DSQ DMP 027483,001029: 34,2615 00005 4 027484,001030: 34,2616 43312 SL2 DAD # UX UX(1-COS(A)) $2 027485,001031: 34,2617 00003 2 027486,001032: 34,2620 41152 SL1 BOVB 027487,001033: 34,2621 70445 SIGNMPAC 027488,001034: 34,2622 15560 STODL KEL # UX UX(1-COS(A)) +COS(A) $1 027489,001035: 027490,001036: 34,2623 01626 COF +2 027491,001037: 34,2624 41316 DSQ DMP 027492,001038: 34,2625 00005 4 027493,001039: 34,2626 43312 SL2 DAD # UY UY(1-COS(A)) $2 027494,001040: 34,2627 00003 2 027495,001041: 34,2630 41152 SL1 BOVB 027496,001042: 34,2631 70445 SIGNMPAC 027497,001043: 34,2632 15570 STODL KEL +8D # UY UY(1-COS(A)) +COS(A) $1 027498,001044: 34,2633 01630 COF +4 027499,001045: 34,2634 41316 DSQ DMP 027500,001046: 34,2635 00005 4 027501,001047: 34,2636 43312 SL2 DAD # UZ UZ(1-COS(A)) $2 027502,001048: 34,2637 00003 2 027503,001049: 34,2640 41152 SL1 BOVB 027504,001050: 34,2641 70445 SIGNMPAC 027505,001051: 34,2642 01600 STORE KEL +16D # UZ UZ(1-COS(A)) +COS(A) $1 027506,001052: 027507,001053: # COMPUTE THE OFF DIAGONAL TERMS OF DEL 027508,001054: 027509,001055: 34,2643 41345 DLOAD DMP 027510,001056: 34,2644 01624 COF 027511,001057: 34,2645 01626 COF +2 027512,001058: 34,2646 72405 DMP SL1 027513,001059: 027514,001060: 34,2647 00005 4 027515,001061: 34,2650 41325 PDDL DMP # D6 UX UY (1-COS A) $ 4 027516,001062: 34,2651 01630 COF +4 027517,001063: 34,2652 00001 0 027518,001064: 34,2653 43206 PUSH DAD # D8 UZ SIN A $ 4 027519,001065: 34,2654 00007 6 027520,001066: 34,2655 41112 SL2 BOVB 027521,001067: 34,2656 70445 SIGNMPAC
![]() |
Page 616 |
027523,001069: 34,2657 15566 STODL KEL +6 027524,001070: 34,2660 62421 BDSU SL2 027525,001071: 027526,001072: 34,2661 77604 BOVB 027527,001073: 34,2662 70445 SIGNMPAC 027528,001074: 34,2663 15562 STODL KEL +2 027529,001075: 34,2664 01624 COF 027530,001076: 34,2665 41205 DMP DMP 027531,001077: 34,2666 01630 COF +4 027532,001078: 34,2667 00005 4 027533,001079: 34,2670 65352 SL1 PDDL # D6 UX UZ (1-COS A ) $ 4 027534,001080: 34,2671 01626 COF +2 027535,001081: 34,2672 41405 DMP PUSH # D8 UY SIN(A) 027536,001082: 34,2673 00001 0 027537,001083: 34,2674 62415 DAD SL2 027538,001084: 34,2675 00007 6 027539,001085: 34,2676 77604 BOVB 027540,001086: 34,2677 70445 SIGNMPAC 027541,001087: 34,2700 15564 STODL KEL +4 # UX UZ (1-COS(A))+UY SIN(A) 027542,001088: 34,2701 62421 BDSU SL2 027543,001089: 34,2702 77604 BOVB 027544,001090: 34,2703 70445 SIGNMPAC 027545,001091: 34,2704 15574 STODL KEL +12D # UX UZ (1-COS(A))-UY SIN(A) 027546,001092: 34,2705 01626 COF +2 027547,001093: 34,2706 41205 DMP DMP 027548,001094: 34,2707 01630 COF +4 027549,001095: 027550,001096: 34,2710 00005 4 027551,001097: 34,2711 65352 SL1 PDDL # D6 UY UZ (1-COS(A)) $ 4 027552,001098: 34,2712 01624 COF 027553,001099: 34,2713 41405 DMP PUSH # D8 UX SIN(A) 027554,001100: 34,2714 00001 0 027555,001101: 34,2715 62415 DAD SL2 027556,001102: 34,2716 00007 6 027557,001103: 34,2717 77604 BOVB 027558,001104: 34,2720 70445 SIGNMPAC 027559,001105: 34,2721 15576 STODL KEL +14D # UY UZ(1-COS(A)) +UX SIN(A) 027560,001106: 34,2722 62421 BDSU SL2 027561,001107: 34,2723 77604 BOVB 027562,001108: 34,2724 70445 SIGNMPAC 027563,001109: 34,2725 01572 STORE KEL +10D # UY UZ (1-COS(A)) -UX SIN(A) 027564,001110: 34,2726 77616 RVQ 027565,001111: 027566,001112: # DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE 027567,001113: # X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2) 027568,001114: # LEAVES CDU ANGLES SCALED 2PI IN V(MPAC) 027569,001115: # COS(MGA) WILL BE LEFT IN S1 (SCALED 1) 027570,001116: 027571,001117: # THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS*** 027572,001118:
![]() |
Page 617 |
027574,001120: # C =COS(THETA)COS(PSI) 027575,001121: # 0 027576,001122: # C =-COS(THETA)SIN(PSI)COS(PHI)+SI (THETA)SIN(PHI) 027577,001123: # 1 027578,001124: # C =COS(THETA)SIN(PSI)SIN(PHI) + S N(THETA)COS(PHI) 027579,001125: # 2 027580,001126: # C =SIN(PSI) 027581,001127: # 3 027582,001128: 027583,001129: # C =COS(PSI)COS(PHI) 027584,001130: # 4 027585,001131: # C =-COS(PSI)SIN(PHI) 027586,001132: # 5 027587,001133: # C =-SIN(THETA)COS(PSI) 027588,001134: # 6 027589,001135: # C =SIN(THETA)SIN(PSI)COS(PHI)+COS THETA)SIN(PHI) 027590,001136: # 7 027591,001137: # C =-SIN(THETA)SIN(PSI)SIN(PHI)+CO (THETA)COS(PHI) 027592,001138: # 8 027593,001139: 027594,001140: # WHERE PHI = OGA 027595,001141: # THETA = IGA 027596,001142: # PSI = MGA 027597,001143: 027598,001144: 34,2727 67543 DCMTOCDU DLOAD* ARCSIN 027599,001145: 34,2730 00007 6,1 027600,001146: 34,2731 71406 PUSH COS # PD +0 PSI 027601,001147: 34,2732 41152 SL1 BOVB 027602,001148: 34,2733 70445 SIGNMPAC 027603,001149: 34,2734 00051 STORE S1 027604,001150: 34,2735 57543 DLOAD* DCOMP 027605,001151: 34,2736 00015 12D,1 027606,001152: 027607,001153: 34,2737 67471 DDV ARCSIN 027608,001154: 34,2740 00051 S1 027609,001155: 34,2741 51123 PDDL* BPL # PD +2 THETA 027610,001156: 34,2742 00001 0,1 # MUST CHECK THE SIGN OF COS(THETA) 027611,001157: 34,2743 70755 OKTHETA # TO DETERMINE THE PROPER QUADRANT 027612,001158: 34,2744 57545 DLOAD DCOMP 027613,001159: 34,2745 43244 BPL DAD 027614,001160: 34,2746 70752 SUHALFA 027615,001161: 34,2747 30414 HALFA 027616,001162: 34,2750 77650 GOTO 027617,001163: 34,2751 70754 CALCPHI 027618,001164: 34,2752 77625 SUHALFA DSU 027619,001165: 34,2753 30414 HALFA 027620,001166: 34,2754 77606 CALCPHI PUSH 027621,001167: 34,2755 57543 OKTHETA DLOAD* DCOMP 027622,001168: 34,2756 00013 10D,1 027623,001169: 34,2757 67471 DDV ARCSIN 027624,001170: 34,2760 00051 S1 027625,001171: 34,2761 51123 PDDL* BPL # PUSH DOWN PHI
![]() |
Page 618 |
027627,001173: 34,2762 00011 8D,1 027628,001174: 34,2763 70775 OKPHI 027629,001175: 34,2764 57545 DLOAD DCOMP # PUSH UP PHI 027630,001176: 34,2765 43244 BPL DAD 027631,001177: 34,2766 70772 SUHALFAP 027632,001178: 34,2767 30414 HALFA 027633,001179: 34,2770 77650 GOTO 027634,001180: 34,2771 70776 VECOFANG 027635,001181: 34,2772 52025 SUHALFAP DSU GOTO 027636,001182: 34,2773 30414 HALFA 027637,001183: 34,2774 70776 VECOFANG 027638,001184: 34,2775 77745 OKPHI DLOAD # PUSH UP PHI 027639,001185: 34,2776 43466 VECOFANG VDEF RVQ 027640,001186:
![]() |
Page 619 |
027642,001188: # ROUTINES FOR TERMINATING THE AUTOMATIC MANEUVER AND RETURNING TO USER 027643,001189: 027644,001190: 34,2777 77776 ENDMANU EXIT 027645,001191: 34,3000 37754 CAF TWO 027646,001192: 34,3001 00004 INHINT 027647,001193: 34,3002 05701 TC WAITLIST # PREPARE FOR A GOOD (NORMAL) RETURN VIA 027648,001194: 34,3003 E3,1535 EBANK= MIS 027649,001195: 34,3003 03715 70063 2CADR GOODMANU # GOODEND 027650,001196: 027651,001197: 34,3005 00003 RELINT 027652,001198: 34,3006 05605 TC ENDOFJOB 027653,001199: 027654,001200: 34,3007 77776 TOOBAD EXIT # INITIAL OR FINAL GIMBAL ANGLES IN 027655,001201: 34,3010 37754 CAF TWO # GIMBAL LOCK 027656,001202: 34,3011 00004 INHINT 027657,001203: 34,3012 05701 TC WAITLIST 027658,001204: 34,3013 E3,1535 EBANK= MIS 027659,001205: 34,3013 03017 70063 2CADR NOGO # PREPARE FOR A BAD RETURN VIA BADEND 027660,001206: 027661,001207: 34,3015 00003 RELINT 027662,001208: 34,3016 05605 TC ENDOFJOB 027663,001209: 027664,001210: 34,3017 06045 NOGO TC FLAG2DWN # RESET BIT 11 OF FLAGWRD2 TO SIGNAL END 027665,001211: 34,3020 02000 OCT 2000 # OF KALCMANU 027666,001212: 34,3021 36301 CAF THREE 027667,001213: 34,3022 05243 TC POSTJUMP # RETURN UNDER WAITLIST VIA BADEND 027668,001214: 34,3023 26726 CADR BADEND # AND WAKE UP USER End of include-file ATTITUDE_MANEUVER_ROUTINE.agc. Parent file is MAIN.agc