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 GROUP
Note 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