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