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