Source Code

These source-code files derive from a printout of Luminary 210 (Apollo 15-17 Lunar Module guidance computer program), from the personal library of original AGC developer Don Eyles, digitally photographed at archive.org, financially sponsored by Jim Lawton, and transcribed to source code by a team of volunteers. This colorized, syntax-highlighted form was created by assembling that transcribed source code. Note that the full page images are available on the Virtual AGC project page at archive.org, while reduced-size images are presented at the VirtualAGC project website. Report or fix any transcription errors at the Virtual AGC project code repository.

Notations on the program listing read, in part:

	GAP: ASSEMBLE REVISION 210 OF AGC PROGRAM LUMINARY 
	BY NASA 2021112-161 17:11 MAR. 19,1971
Note that the date is the date of the printout, not the date of the program revision.

015344,000002:                                                                                                  ## Copyright:   Public domain.
015345,000003:                                                                                                  ## Filename:    ATTITUDE_MANEUVER_ROUTINE.agc
015346,000004:                                                                                                  ## Purpose:     A section of Luminary revision 210.
015347,000005:                                                                                                  ##              It is part of the source code for the Lunar Module's (LM)
015348,000006:                                                                                                  ##              Apollo Guidance Computer (AGC) for Apollo 15-17.
015349,000007:                                                                                                  ##              This file is intended to be a faithful transcription, except
015350,000008:                                                                                                  ##              that the code format has been changed to conform to the
015351,000009:                                                                                                  ##              requirements of the yaYUL assembler rather than the
015352,000010:                                                                                                  ##              original YUL assembler.
015353,000011:                                                                                                  ## Reference:   pp. 354-375
015354,000012:                                                                                                  ## Assembler:   yaYUL
015355,000013:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
015356,000014:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
015357,000015:                                                                                                  ## Mod history: 2016-11-17 JL   Created from Luminary131 version.
015358,000016:                                                                                                  ##              2016-11-24 HG   Transcribed
015359,000017:                                                                                                  ##              2016-12-23 RSB  Proofed comment text with octopus/ProoferComments
015360,000018:                                                                                                  ##                              and fixed all errors found.
015361,000019:                                                                                                  ##              2017-03-15 RSB  Comment-text fixes identified in 5-way
015362,000020:                                                                                                  ##                              side-by-side diff of Luminary 69/99/116/131/210.
015363,000021: 

Page 354

015365,000023:                                                                                                  #  BLOCK 2 LGC ATTITUDE MANEUVER ROUTINE-KALCMANU
015366,000024: 
015367,000025: 
015368,000026:                                                                                                  #  MOD 2           DATE 5/1/67     BY DON KEENE
015369,000027: 
015370,000028:                                                                                                  #  PROGRAM DESCRIPTION
015371,000029: 
015372,000030:                                                                                                  #       KALCMANU IS A ROUTINE WHICH GENERATES COMMANDS FOR THE LM DAP TO CHANGE THE ATTITUDE OF THE SPACECRAFT
015373,000031:                                                                                                  #  DURING FREE FALL.  IT IS DESIGNED TO MANEUVER THE SPACECRAFT FROM ITS INITIAL ORIENTATION TO SOME DESIRED
015374,000032:                                                                                                  #  ORIENTATION SPECIFIED BY THE PROGRAM WHICH CALLS KALCMANU, AVOIDING GIMBAL LOCK IN THE PROCESS.  IN THE
015375,000033:                                                                                                  #  MOD 2 VERSION, THIS DESIRED ATTITUDE IS SPECIFIED BY A SET OF THREE COMMANDED CDU ANGLES STORED AS 2S COMPLEMENT
015376,000034:                                                                                                  #  SINGLE PRECISION ANGLES IN THE THREE CONSECUTIVE LOCATIONS, CPHI, CTHETA, CPSI, WHERE
015377,000035: 
015378,000036:                                                                                                  #       CPHI = COMMANDED OUTER GIMBAL ANGLE
015379,000037:                                                                                                  #       CTHETA = COMMANDED INNER GIMBAL ANGLE
015380,000038:                                                                                                  #       CPSI = COMMANDED MIDDLE GIMBAL ANGLE
015381,000039: 
015382,000040:                                                                                                  #      WHEN POINTING A SPACECRAFT AXIS (E.I. X, Y, Z, THE AOT, THRUST AXIS, ETC) THE SUBROUTINE VECPOINT MAY BE
015383,000041:                                                                                                  #  USED TO GENERATE THIS SET OF DESIRED CDU ANGLES (SEE DESCRIPTION IN R60)   -
015384,000042:                                                                                                  #   WITH THIS INFORMATION KALCMANU DETERMINES THE DIRECTION OF THE SINGLE EQUIVALENT ROTATION (COF ALSO U) AND THE
015385,000043:                                                                                                  #  MAGNITUDE OF THE ROTATION (AM) TO BRING THE S/C FROM ITS INITIAL ORIENTATION TO ITS FINAL ORIENTATION.
015386,000044:                                                                                                  #  THIS DIRECTION REMAINS FIXED BOTH IN INERTIAL COORDINATES AND IN COMMANDED S/C AXES THROUGHOUT THE
015387,000045:                                                                                                  #                   -
015388,000046:                                                                                                  #  MANEUVER.  ONCE COF AND AM HAVE BEEN DETERMINED, KALCMANU THEN EXAMINES THE MANEUVER TO SEE IF IT WILL BRING
015389,000047:                                                                                                  #                                        -
015390,000048:                                                                                                  #  THE S/C THROUGH GIMBAL LOCK.  IF SO, COF AND AM ARE READJUSTED SO THAT THE S/C WILL JUST SKIM THE GIMBAL
015391,000049:                                                                                                  #  LOCK ZONE AND ALIGN THE X-AXIS.  IN GENERAL A FINAL YAW  ABOUT X WILL BE NECESSARY TO COMPLETE THE MANEUVER.
015392,000050:                                                                                                  #  NEEDLESS TO SAY, NEITHER THE INITIAL NOR THE FINAL ORIENTATION CAN BE IN GIMBAL LOCK.
015393,000051: 
015394,000052:                                                                                                  #       FOR PROPER ATTITUDE CONTROL THE DIGITAL AUTOPILOT MUST BE GIVEN AN ATTITUDE REFERENCE WHICH IT CAN TRACK.
015395,000053:                                                                                                  #  KALCMANU DOES THIS BY GENERATING A REFERENCE OF DESIRED GIMBAL ANGLES (CDUXD, CDUYD, CDUZD) WHICH ARE UPDATED
015396,000054:                                                                                                  #  EVERY ONE SECOND DURING THE MANEUVER.  TO ACHIEVE A SMOOTHER SEQUENCE OF COMMANDS BETWEEN SUCCESSIVE UPDATES,
015397,000055:                                                                                                  #  THE PROGRAM ALSO GENERATES A SET OF INCREMENTAL CDU ANGLES (DELDCDU) TO BE ADDED TO CDU DESIRED BY THE DIGITAL
015398,000056:                                                                                                  #  AUTOPILOT.  KALCMANU ALSO CALCULATES THE COMPONENT MANEUVER RATES (OMEGAPD, OMEGAQD, OMEGARD), WHICH CAN
015399,000057:                                                                                                  #                                       -
015400,000058:                                                                                                  #  BE DETERMINED SIMPLY BY MULTIPLYING COF BY SOME SCALAR (ARATE) CORRESPONDING TO THE DESIRED ROTATIONAL RATE.
015401,000059: 
015402,000060:                                                                                                  #       AUTOMATIC MANEUVERS ARE TIMED WITH THE HELP OF WAITLIST SO THAT AFTER A SPECIFIED INTERVAL THE Y AND Z
015403,000061:                                                                                                  #  DESIRED RATES ARE SET TO ZERO AND THE DESIRED CDU ANGLES (CDUYD, CDUZD) ARE SET EQUAL TO THE FINAL DESIRED CDU
015404,000062:                                                                                                  #  ANGLES (CTHETA, CPSI).  IF ANY YAW  REMAINS DUE TO GIMBAL LOCK AVOIDANCE, THE FINAL YAW  MANEUVER IS
015405,000063:                                                                                                  #  CALCULATED AND THE DESIRED YAW  RATE SET TO SOME FIXED VALUE (ROLLRATE = + OR - 2 DEGREES PER SEC).
015406,000064:                                                                                                  #  IN THIS CASE ONLY AN INCREMENTAL CDUX ANGLE (DELFROLL) IS SUPPLIED TO THE DAP.  AT THE END OF THE YAW
015407,000065:                                                                                                  #  MANEUVER OR IN THE EVENT THAT THERE WAS NO FINAL YAW,  CDUXD IS SET EQUAL TO CPHI AND THE X-AXIS DESIRED
015408,000066:                                                                                                  #  RATE SET TO ZERO.  THUS, UPON COMPLETION OF THE MANEUVER THE S/C WILL FINISH UP IN A LIMIT CYCLE ABOUT THE
015409,000067:                                                                                                  #  DESIRED FINAL GIMBAL ANGLES.
015410,000068: 
015411,000069: 
015412,000070:                                                                                                  #  PROGRAM LOGIC FLOW
015413,000071: 
015414,000072:                                                                                                  #       KALCMANU IS CALLED AS A HIGH PRIORITY JOB WITH ENTRY POINTS AT KALCMAN3 AND VECPOINT.  IT FIRST PICKS
015415,000073:                                                                                                  #  UP THE CURRENT CDU ANGLES TO BE USED AS THE BASIS FOR ALL COMPUTATIONS INVOLVING THE INITIAL S/C ORIENTATION.
015416,000074: 

Page 355

015418,000076:                                                                                                  #  IT THEN DETERMINES THE DIRECTION COSINE MATRICES RELATING BOTH THE INITIAL AND FINAL S/C ORIENTATION TO STABLE
015419,000077:                                                                                                  #                *    *                                                                               *
015420,000078:                                                                                                  #  MEMBER AXES (MIS, MFS).  IT ALSO COMPUTES THE MATRIX RELATING FINAL S/C AXES TO INITIAL S/C AXES (MFI).  THE
015421,000079:                                                                                                  #  ANGLE OF ROTATION (AM) IS THEN EXTRACTED FROM THIS MATRIX, AND TESTS ARE MADE TO DETERMINE IF
015422,000080: 
015423,000081:                                                                                                  #       A)  AM LESS THAN .25 DEGREES (MINANG)
015424,000082:                                                                                                  #       B)  AM GREATER THAN 170 DEGREES (MAXANG)
015425,000083: 
015426,000084:                                                                                                  #       IF AM LESS THAN .25 DEGREES, NO COMPLICATED AUTOMATIC MANEUVERING IS NECESSARY.  THEREFORE WE CAN SIMPLY
015427,000085:                                                                                                  #  SET CDU DESIRED EQUAL TO THE FINAL CDU DESIRED ANGLES AND TERMINATE THE JOB.
015428,000086: 
015429,000087:                                                                                                  #       IF AM IS GREATER THAN .25 DEGREES BUT LESS THAN 170 DEGREES, THE AXES OF THE SINGLE EQUIVALENT ROTATION
015430,000088:                                                                                                  #    -                                                       *
015431,000089:                                                                                                  #  (COF) IS EXTRACTED FROM THE SKEW SYMMETRIC COMPONENTS OF MFI.                             *      *
015432,000090:                                                                                                  #        IF AM GREATER THAN 170 DEGREES AN ALTERNATE METHOD EMPLOYING THE SYMMETRIC PART OF MFI (MFISYM) IS USED
015433,000091:                                                                                                  #                -
015434,000092:                                                                                                  #  TO DETERMINE COF.
015435,000093: 
015436,000094:                                                                                                  #       THE PROGRAM THEN CHECKS TO SEE IF THE MANEUVER AS COMPUTED WILL BRING THE S/C THROUGH GIMBAL LOCK.  IF
015437,000095:                                                                                                  #  SO, A NEW MANEUVER IS CALCULATED WHICH WILL JUST SKIM THE GIMBAL LOCK ZONE AND ALIGN THE S/C X-AXIS.  THIS
015438,000096:                                                                                                  #  METHOD ASSURES THAT THE ADDITIONAL MANEUVERING TO AVOID GIMBAL LOCK WILL BE KEPT TO A MINIMUM.  SINCE A FINAL
015439,000097:                                                                                                  #  P AXIS YAW WILL BE NECESSARY, A SWITCH IS RESET (STATE SWITCH 31) TO ALLOW FOR THE COMPUTATION OF THIS FINAL
015440,000098:                                                                                                  #  YAW.
015441,000099: 
015442,000100:                                                                                                  #       AS STATED PREVIOUSLY KALCMANU GENERATES A SEQUENCE OF DESIRED GIMBAL ANGLES WHICH ARE UPDATED EVERY
015443,000101:                                                                                                  #                                                                                               -
015444,000102:                                                                                                  #  SECOND.  THIS IS ACCOMPLISHED BY A SMALL ROTATION OF THE DESIRED S/C FRAME ABOUT THE VECTOR COF.  THE NEW
015445,000103:                                                                                                  #  DESIRED REFERENCE MATRIX IS THEN,
015446,000104: 
015447,000105:                                                                                                  #                   *              *       *
015448,000106:                                                                                                  #                  MIS       =    MIS     DEL
015449,000107:                                                                                                  #                     N+1             N
015450,000108:                                                                                                  #         *
015451,000109:                                                                                                  #  WHERE DEL IS THE MATRIX CORRESPONDING TO THIS SMALL ROTATION.  THE NEW CDU ANGLES CAN THEN BE EXTRACTED
015452,000110:                                                                                                  #        *
015453,000111:                                                                                                  #  FROM MIS.
015454,000112: 
015455,000113:                                                                                                  #       AT THE BEGINNING OF THE MANEUVER THE AUTOPILOT DESIRED RATES (OMEGAPD, OMEGAQD, OMEGARD) AND THE
015456,000114:                                                                                                  #  MANEUVER TIMINGS ARE ESTABLISHED.  ON THE FIRST PASS AND ON ALL SUBSEQUENT UPDATES THE CDU DESIRED
015457,000115:                                                                                                  #  ANGLES ARE LOADED WITH THE APPROPRIATE VALUES AND THE INCREMENTAL CDU ANGLES ARE COMPUTED.  THE AGC CLOCKS
015458,000116:                                                                                                  #  (TIME1 AND TIME2) ARE THAN CHECKED TO SEE IF THE MANEUVER WILL TERMINATE BEFORE THE NEXT UPDATE.  IF
015459,000117:                                                                                                  #  NOT, KALCMANU CALLS FOR ANOTHER UPDATE (RUN AS A JOB WITH PRIORITY TBD) IN ONE SECOND.  ANY DELAYS IN THIS
015460,000118:                                                                                                  #  CALLING SEQUENCE ARE AUTOMATICALLY COMPENSATED IN CALLING FOR THE NEXT UPDATE.
015461,000119: 
015462,000120:                                                                                                  #       IF IT IS FOUND THAT THE MANEUVER IS TO TERMINATE BEFORE THE NEXT UPDATE A ROUTINE IS CALLED (AS A WAIT-
015463,000121:                                                                                                  #  LIST TASK) TO STOP THE MANEUVER AT THE APPROPRIATE TIME AS EXPLAINED ABOVE.
015464,000122: 

Page 356

015466,000124:                                                                                                  #  CALLING SEQUENCE
015467,000125: 
015468,000126:                                                                                                  #       IN ORDER TO PERFORM A KALCMANU SUPERVISED MANEUVER, THE COMMANDED GIMBAL ANGLES MUST BE PRECOMPUTED AND
015469,000127:                                                                                                  #  STORED IN LOCATIONS CPHI, CTHETA, CPSI.  THE USER:S PROGRAM MUST THEN CLEAR STATE SWITCH NO 33 TO ALLOW THE
015470,000128:                                                                                                  #  ATTITUDE MANEUVER ROUTINE TO PERFORM ANY FINAL P-AXIS YAW INCURRED BY AVOIDING GIMBAL LOCK.  THE MANEUVER IS
015471,000129:                                                                                                  #  THEN INITIATED BY ESTABLISHING THE FOLLOWING EXECUTIVE JOB
015472,000130: 
015473,000131:                                                                                                  #                         *
015474,000132:                                                                                                  #       CAF     PRIO    XX
015475,000133:                                                                                                  #                       --
015476,000134:                                                                                                  #       INHINT
015477,000135:                                                                                                  #       TC         FINDVAC
015478,000136:                                                                                                  #       2CADR      KALCMAN3
015479,000137:                                                                                                  #       RELINT
015480,000138: 
015481,000139:                                                                                                  #  THE USER:S PROGRAM MAY EITHER CONTINUE OR WAIT FOR THE TERMINATION OF THE MANEUVER.  IF THE USER WISHES TO
015482,000140:                                                                                                  #  WAIT, HE MAY PUT HIS JOB TO SLEEP WITH THE FOLLOWING INSTRUCTIONS
015483,000141: 
015484,000142:                                                                                                  #       L          TC        BANKCALL
015485,000143:                                                                                                  #       L+1        CADR      ATTSTALL
015486,000144:                                                                                                  #       L+2        (BAD      RETURN)
015487,000145:                                                                                                  #       L+3        (GOOD     RETURN)
015488,000146: 
015489,000147:                                                                                                  #       UPON COMPLETION OF THE MANEUVER, THE PROGRAM WILL BE AWAKENED AT L+3 IF THE MANEUVER WAS COMPLETED
015490,000148:                                                                                                  #  SUCCESSFULLY, OR AT L+2 IF THE MANEUVER WAS ABORTED.  THIS ABORT WOULD OCCUR IF THE INITIAL OR FINAL ATTITUDE
015491,000149:                                                                                                  #  WAS IN GIMBAL LOCK.
015492,000150: 
015493,000151:                                                                                                  #  ***NOTA BENE***  IT IS ASSUMED THAT THE DESIRED MANEUVERING RATE (0.5, 2, 5, 10, DEG/SEC) HAS BEEN SELECTED BY
015494,000152:                                                                                                  #  KEYBOARD ENTRY PRIOR TO THE EXECUTION OF KALCMANU.
015495,000153:                                                                                                  #      IT IS ALSO ASSUMED THAT THE AUTOPILOT IS IN THE AUTO MODE.  IF THE MODE SWITCH IS CHANGED DURING THE
015496,000154:                                                                                                  #  MANEUVER, KALCMANU WILL TERMINATE VIA GOODEND WITHIN 1 SECOND SO THAT R60 MAY REQUEST A TRIM OF THE S/C ATTITUDE
015497,000155:                                                                                                  #  THIS IS THE ONLY MEANS FOR MANUALLY TERMINATING A KALCMANU SUPERVISED MANEUVER.
015498,000156:                                                                                                  #  SUBROUTINES
015499,000157: 
015500,000158:                                                                                                  #       KALCMANU USES A NUMBER OF INTERPRETIVE SUBROUTINES WHICH MAY BE OF GENERAL INTEREST.  SINCE THESE ROUTINES
015501,000159:                                                                                                  #  WERE PROGRAMMED EXCLUSIVELY FOR KALCMANU, THEY ARE NOT, AS YET, GENERALLY AVAILABLE FOR USE BY OTHER PROGRAMS.
015502,000160: 
015503,000161:                                                                                                  #       MXM3
015504,000162:                                                                                                  #       ----
015505,000163: 
015506,000164:                                                                                                  #       THIS SUBROUTINE MULTIPLIES TWO 3X3 MATRICES AND LEAVES THE RESULT IN THE FIRST 18 LOCATIONS OF THE PUSH
015507,000165:                                                                                                  #  DOWN LIST, I.E.,
015508,000166: 
015509,000167:                                                                                                  #                 (M    M    M )
015510,000168:                                                                                                  #                 (  0   1    2)
015511,000169:                                                                                                  #        *        (            )       *         *
015512,000170:                                                                                                  #        M    =   (M    M    M )  =    M1   X    M2
015513,000171:                                                                                                  #                 ( 3    4    5)
015514,000172:                                                                                                  #                 (            )
015515,000173:                                                                                                  #                 (M    M    M )
015516,000174: 

Page 357

015518,000176:                                                                                                  #                 ( 6    7    8)
015519,000177: 
015520,000178:                                                                                                  #                                                                                        *
015521,000179:                                                                                                  #       INDEX REGISTER X1 MUST BE LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M1, AND X2 MUST BE
015522,000180:                                                                                                  #                                                         *
015523,000181:                                                                                                  #  LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M2.   THE ROUTINE USES THE FIRST 20 LOCATIONS OF THE PUSH
015524,000182:                                                                                                  #  DOWN LIST.  THE FIRST ELEMENT OF THE MATRIX APPEARS IN PDO.  PUSH UP FOR M .
015525,000183:                                                                                                  #                                                                            8
015526,000184: 
015527,000185:                                                                                                  #       TRANSPOS
015528,000186:                                                                                                  #       --------
015529,000187: 
015530,000188:                                                                                                  #       THIS ROUTINE TRANSPOSES A 3X3 MATRIX AND LEAVES THE RESULT IN THE PUSH DOWN LIST, I.E.,
015531,000189: 
015532,000190:                                                                                                  #        *         * T
015533,000191:                                                                                                  #        M    =    M1
015534,000192: 
015535,000193:                                                                                                  #  INDEX REGISTER X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M1.  PUSH UP FOR THE FIRST AND SUB-
015536,000194:                                                                                                  #                        *
015537,000195:                                                                                                  #  SEQUENT COMPONENTS OF M.   THIS SUBROUTINE ALSO USES THE FIRST 20 LOCATIONS OF THE PUSH DOWN LIST.
015538,000196: 
015539,000197:                                                                                                  #       CDU TO DCM
015540,000198:                                                                                                  #       ----------
015541,000199: 
015542,000200:                                                                                                  #       THIS SUBROUTINE CONVERTS THREE CDU ANGLES IN T(MPAC) TO A DIRECTION COSINE MATRIX (SCALED BY 2) RELATING
015543,000201:                                                                                                  #  THE CORRESPONDING S/C ORIENTATIONS TO THE STABLE MEMBER FRAME.  THE FORMULAS FOR THIS CONVERSION ARE
015544,000202: 
015545,000203:                                                                                                  #        M    =    COSY  COSZ
015546,000204:                                                                                                  #         0
015547,000205: 
015548,000206:                                                                                                  #        M    =    -COSY  SINZ  COSX  +  SINY  SINX
015549,000207:                                                                                                  #         1
015550,000208: 
015551,000209:                                                                                                  #        M    =    COSY  SINZ  SINX  +  SINY  COSX
015552,000210:                                                                                                  #         2
015553,000211: 
015554,000212:                                                                                                  #        M   =     SINZ
015555,000213:                                                                                                  #         3
015556,000214: 
015557,000215:                                                                                                  #        M   =     COSZ  COSX
015558,000216:                                                                                                  #         4
015559,000217: 
015560,000218:                                                                                                  #        M   =     -COSZ  SINX
015561,000219:                                                                                                  #         5
015562,000220: 
015563,000221:                                                                                                  #        M   =     -SINY  COSZ
015564,000222:                                                                                                  #         6
015565,000223: 
015566,000224:                                                                                                  #        M   =     SINY  SINZ  COSX  +  COSY  SINX
015567,000225:                                                                                                  #         7
015568,000226: 

Page 358

015570,000228:                                                                                                  #        M   =     -SINY  SINZ  SINX  +  COSY  COSX
015571,000229:                                                                                                  #         8
015572,000230: 
015573,000231:                                                                                                  #  WHERE      X     =    OUTER GIMBAL ANGLE
015574,000232:                                                                                                  #             Y     =    INNER GIMBAL ANGLE
015575,000233:                                                                                                  #             Z     =    MIDDLE GIMBAL ANGLE
015576,000234: 
015577,000235:                                                                                                  #       THE INTERPRETATION OF THIS MATRIX IS AS FOLLOWS
015578,000236: 
015579,000237:                                                                                                  #       IF A , A , A  REPRESENT THE COMPONENTS OF A VECTOR IN S/C AXES THEN THE COMPONENTS OF THE SAME VECTOR IN
015580,000238:                                                                                                  #           X   Y   Z
015581,000239:                                                                                                  #  STABLE MEMBER AXES (B , B , B ) ARE
015582,000240:                                                                                                  #                       X   Y   Z
015583,000241: 
015584,000242:                                                                                                  #             (B )                (A )
015585,000243:                                                                                                  #             ( X)                ( X)
015586,000244:                                                                                                  #             (  )                (  )
015587,000245:                                                                                                  #             (  )           *    (  )
015588,000246:                                                                                                  #             (B )      =    M    (A )
015589,000247:                                                                                                  #             ( Y)                ( Y)
015590,000248:                                                                                                  #             (  )                (  )
015591,000249:                                                                                                  #             (B )                (A )
015592,000250:                                                                                                  #             (Z )                ( Z)
015593,000251: 
015594,000252:                                                                                                  #      THE SUBROUTINE WILL STORE THIS MATRIX IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY AS SPECIFIED BY THE CALLING
015595,000253:                                                                                                  #                                                                                                              *
015596,000254:                                                                                                  #  PROGRAM.  TO DO THIS THE CALLING PROGRAM MUST FIRST LOAD X2 WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M.
015597,000255: 
015598,000256:                                                                                                  #       INTERNALLY, THE ROUTINE USES THE FIRST 16 LOCATIONS OF THE PUSH DOWN LIST, ALSO STEP REGISTER S1 AND INDEX
015599,000257:                                                                                                  #  REGISTER X2.
015600,000258: 
015601,000259: 
015602,000260:                                                                                                  #       DCM TO CDU
015603,000261:                                                                                                  #       ----------
015604,000262:                                                                                                  #                                                                            *
015605,000263:                                                                                                  #       THIS ROUTINE EXTRACTS THE CDU ANGLES FROM A DIRECTION COSINE MATRIX (M SCALED BY 2) RELATING S/C AXIS TO
015606,000264:                                                                                                  #                                                                                  *
015607,000265:                                                                                                  #  STABLE MEMBER AXES.  X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M.  THE SUBROUTINE LEAVES THE
015608,000266:                                                                                                  #  CORRESPONDING GIMBAL ANGLES IN V(MPAC) AS DOUBLE PRECISION 1:S COMPLEMENT ANGLES SCALED BY 2PI.  THE FORMULAS
015609,000267:                                                                                                  #  FOR THIS CONVERSION ARE
015610,000268: 
015611,000269:                                                                                                  #        Z    =    ARCSIN (M  )
015612,000270:                                                                                                  #                           3
015613,000271: 
015614,000272:                                                                                                  #        Y    =    ARCSIN (-M /COSZ)
015615,000273:                                                                                                  #                            6
015616,000274: 
015617,000275:                                                                                                  #  IF M  IS NEGATIVE, Y IS REPLACED BY PI SGN Y - Y
015618,000276:                                                                                                  #      0
015619,000277: 

Page 359

015621,000279:                                                                                                  #        X    =    ARCSIN (-M /COSZ)
015622,000280:                                                                                                  #                            5
015623,000281: 
015624,000282:                                                                                                  #  IF M  IS NEGATIVE X IS REPLACED BY PI SGN X - X
015625,000283:                                                                                                  #      4
015626,000284: 
015627,000285:                                                                                                  #       THIS ROUTINE DOES NOT SET THE PUSH DOWN POINTER, BUT USES THE NEXT 8 LOCATIONS OF THE PUSH DOWN LIST AND
015628,000286:                                                                                                  #  RETURNS THE POINTER TO ITS ORIGINAL SETTING.  THIS PROCEDURE ALLOWS THE CALLER TO STORE THE MATRIX AT THE TOP OF
015629,000287:                                                                                                  #  THE PUSH DOWN LIST.
015630,000288: 
015631,000289: 
015632,000290:                                                                                                  #       DELCOMP
015633,000291:                                                                                                  #       -------
015634,000292: 
015635,000293:                                                                                                  #                                                           *
015636,000294:                                                                                                  #       THIS ROUTINE COMPUTES THE DIRECTION COSINE MATRIX (DEL) RELATING ON
015637,000295:                                                                                                  #                                                                           -
015638,000296:                                                                                                  #  IS ROTATED WITH RESPECT TO THE FIRST BY AN ANGLE, A, ABOUT A UNIT VECTOR, U.  THE FORMULA FOR THIS MATRIX IS
015639,000297: 
015640,000298:                                                                                                  #        *         *           --T           *
015641,000299:                                                                                                  #        DEL  =    I  COSA  +  UU (1-COSA) + V SINA
015642,000300:                                                                                                  #                                             X
015643,000301: 
015644,000302:                                                                                                  #  WHERE      *         (1    0    0)
015645,000303:                                                                                                  #             I    =    (0    1    0)
015646,000304:                                                                                                  #                       (0    0    1)
015647,000305: 
015648,000306: 
015649,000307:                                                                                                  #                          2
015650,000308:                                                                                                  #                       (U         U U       U  U )
015651,000309:                                                                                                  #                       ( X         X Y       X  Z)
015652,000310:                                                                                                  #                       (                         )
015653,000311:                                                                                                  #             --T       (            2            )
015654,000312:                                                                                                  #             U U  =    (U U       U         U U  )
015655,000313:                                                                                                  #                       ( Y X       Y         Y Z )
015656,000314:                                                                                                  #                       (                         )
015657,000315:                                                                                                  #                       (                      2  )
015658,000316:                                                                                                  #                       (U U       U U       U    )
015659,000317:                                                                                                  #                       ( Z X       Z Y       Z   )
015660,000318: 
015661,000319: 
015662,000320:                                                                                                  #                       (0         -U        U  )
015663,000321:                                                                                                  #                       (            Z        Y )
015664,000322:                                                                                                  #             *         (                       )
015665,000323:                                                                                                  #             V    =    (U         0         -U )
015666,000324:                                                                                                  #              X        ( Z                    X)
015667,000325:                                                                                                  #                       (                       )
015668,000326:                                                                                                  #                       (-U        U         0  )
015669,000327:                                                                                                  #                       (  Y        X           )
015670,000328: 

Page 360

015672,000330:                                                                                                  #             -
015673,000331:                                                                                                  #             U    =    UNIT ROTATION VECTOR RESOLVED INTO S/C AXES
015674,000332:                                                                                                  #             A    =    ROTATION ANGLE
015675,000333: 
015676,000334:                                                                                                  #                              *
015677,000335:                                                                                                  #       THE INTERPRETATION OF DEL IS AS FOLLOWS
015678,000336: 
015679,000337:                                                                                                  #       IF A , A , A  REPRESENT THE COMPONENT OF A VECTOR INTHE ROTATED FRAME, THEN THE COMPONENTS OF THE SAME
015680,000338:                                                                                                  #         X   Y   Z
015681,000339:                                                                                                  #  VECTOR IN THE ORIGINAL S/C AXES (B , B , B ) ARE
015682,000340:                                                                                                  #                                    X   Y   Z
015683,000341: 
015684,000342:                                                                                                  #              (B )                    (A )
015685,000343:                                                                                                  #              ( X)                    ( X)
015686,000344:                                                                                                  #              (  )           *        (  )
015687,000345:                                                                                                  #              (B )     =    DEL       (A )
015688,000346:                                                                                                  #              ( Y)                    ( Y)
015689,000347:                                                                                                  #              (  )                    (  )
015690,000348:                                                                                                  #              (B )                    (A )
015691,000349:                                                                                                  #              ( Z)                    ( Z)
015692,000350: 
015693,000351:                                                                                                  #       THE ROUTINE WILL STORE THIS MATRIX (SCALED UNITY) IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY BEGINNING WITH
015694,000352:                                                                                                  #                                                                                              -
015695,000353:                                                                                                  #  THE LOCATION CALLED DEL.  IN ORDER TO USE THE ROUTINE, THE CALLING PROGRAM MUST FIRST STORE U (A HALF UNIT
015696,000354:                                                                                                  #  DOUBLE PRECISION VECTOR) IN THE SET OF ERASABLE LOCATIONS BEGINNING WITH THE ADDRESS CALLED COF.  THE ANGLE, A,
015697,000355:                                                                                                  #  MUST THEN BE LOADED INTO D(MPAC).
015698,000356: 
015699,000357:                                                                                                  #       INTERNALLY, THE PROGRAM ALSO USES THE FIRST 10 LOCATIONS OF THE PUSH DOWN LIST.
015700,000358: 
015701,000359: 
015702,000360:                                                                                                  #       READCDUK
015703,000361:                                                                                                  #       --------
015704,000362: 
015705,000363:                                                                                                  #       THIS BASIC LANGUAGE SUBROUTINE LOADS T(MPAC) WITH THE THREE CDU ANGLES.
015706,000364: 
015707,000365: 
015708,000366:                                                                                                  #       SIGNMPAC
015709,000367:                                                                                                  #        --------
015710,000368: 
015711,000369:                                                                                                  #        THIS IS A BASIC LANGUAGE SUBROUTINE WHICH LIMITS THE MAGNITUDE OF D(MPAC) TO + OR - DPOSMAX ON OVERFLOW.
015712,000370: 
015713,000371: 
015714,000372:                                                                                                  #        PROGRAM STORAGE ALLOCATION
015715,000373: 
015716,000374:                                                                                                  #              1)   FIXED MEMORY                       1059 WORDS
015717,000375:                                                                                                  #              2)   ERASABLE MEMORY                      98
015718,000376:                                                                                                  #              3)   STATE SWITCHES                        3
015719,000377: 

Page 361

015721,000379:                                                                                                  #              4)   FLAGS                                 1
015722,000380: 
015723,000381: 
015724,000382:                                                                                                  #        JOB PRIORITIES
015725,000383: 
015726,000384:                                                                                                  #              1)   KALCMANU                            TBD
015727,000385:                                                                                                  #              2)   ONE SECOND UPDATE                   TBD
015728,000386: 
015729,000387: 
015730,000388:                                                                                                  #        SUMMARY OF STATE SWITCHES AND FLAGWORDS USED BY KALCMANU.
015731,000389: 
015732,000390: 
015733,000391:                                                                                                  #   STATE                FLAGWRD 2      SETTING             MEANING
015734,000392:                                                                                                  #   SWITCH NO.            BIT NO.
015735,000393: 
015736,000394:                                                                                                  #     *
015737,000395:                                                                                                  #   31                      14            0       MANEUVER WENT THROUGH GIMBAL LOCK
015738,000396:                                                                                                  #                                         1       MANEUVER DID NOT GO THROUGH GIMBAL LOCK
015739,000397: 
015740,000398:                                                                                                  #     *
015741,000399:                                                                                                  #   32                      13            0       CONTINUE UPDATE PROCESS
015742,000400:                                                                                                  #                                         1       START UPDATE PROCESS
015743,000401: 
015744,000402:                                                                                                  #   33                      12            0       PERFORM FINAL P-AXIS YAW IF REQUIRED
015745,000403:                                                                                                  #                                         1       IGNORE ANY FINAL P-AXIS YAW
015746,000404: 
015747,000405:                                                                                                  #   34                      11            0       SIGNAL END OF KALCMANU
015748,000406:                                                                                                  #                                         1       KALCMANU IN PROCESS        USER MUST SET SWITCH BEFORE INITIATING
015749,000407: 
015750,000408: 
015751,000409:                                                                                                  #            * INTERNAL TO KALCMANU
015752,000410: 
015753,000411: 
015754,000412:                                                                                                  #         SUGGESTIONS FOR PROGRAM INTEGRATION
015755,000413: 
015756,000414:                                                                                                  #         THE FOLLOWING VARIABLES SHOULD BE ASSIGNED TO UNSWITCH ERASABLE
015757,000415: 
015758,000416:                                                                                                  #                         CPHI
015759,000417:                                                                                                  #                         CTHETA
015760,000418:                                                                                                  #                         CPSI
015761,000419:                                                                                                  #                         POINTVSM  +5
015762,000420:                                                                                                  #                         SCAXIS    +5
015763,000421:                                                                                                  #                         DELDCDU
015764,000422:                                                                                                  #                         DELDCDU1
015765,000423:                                                                                                  #                         DELDCDU2
015766,000424:                                                                                                  #                         RATEINDX
015767,000425: 
015768,000426:                                                                                                  #         THE FOLLOWING SUBROUTINES MAY BE PUT IN A DIFFERENT BANK
015769,000427: 
015770,000428:                                                                                                  #                         MXM3
015771,000429: 

Page 362

015773,000431:                                                                                                  #                         TRANSPOS
015774,000432:                                                                                                  #                         SIGNMPAC
015775,000433:                                                                                                  #                         READCDUK
015776,000434:                                                                                                  #                         CDUTODCM
015777,000435: 

Page 363

015779,000437: 15,2162                                           BANK     15                                    
015780,000438: 22,2000                                           SETLOC   KALCMON1                              
015781,000439: 22,2000                                           BANK                                           
015782,000440: 
015783,000441: 22,2004  E6,1675                                  EBANK=   BCDU                                  
015784,000442: 
015785,000443:                                                                                                  #  THE THREE DESIRED CDU ANGLES MUST BE STORED AS SINGLE PRECISION TWOS COMPLEMENT ANGLES IN THE THREE SUCCESSIVE
015786,000444:                                                                                                  #  LOCATIONS, CPHI, CTHETA, CPSI.
015787,000445: 
015788,000446: 22,2004                                           COUNT*   $$/KALC                               
015789,000447: 22,2004           06060        KALCMAN3           TC       INTPRET                               #  PICK UP THE CURRENT CDU ANGLES AND
015790,000448: 22,2005           77634                           RTB                                            #    COMPUTE THE MATRIX FROM INITIAL S/C
015791,000449: 22,2006           44403                                    READCDUK                              #    AXES TO FINAL S/C AXES
015792,000450: 22,2007           03276                           STORE    BCDU                                  #  STORE INITIAL S/C ANGLES
015793,000451: 22,2010           51535                           SLOAD    ABS                                   #  CHECK THE MAGNITUDE OF THE DESIRED
015794,000452: 22,2011           00324                                    CPSI                                  #  MIDDLE GIMBAL ANGLE
015795,000453: 22,2012           51025                           DSU      BPL                                   
015796,000454: 22,2013           04403                                    LOCKANGL                              #  IF GREATER THAN 70 DEG ABORT MANEUVER
015797,000455: 22,2014           44724                                    TOOBADF                               
015798,000456: 22,2015           72364                           AXC,2    TLOAD                                 
015799,000457: 22,2016           03245                                    MIS                                   
015800,000458: 22,2017           03276                                    BCDU                                  
015801,000459: 22,2020           77624                           CALL                                           #  COMPUTE THE TRANSFORMATION FROM INITIAL
015802,000460: 22,2021           44410                                    CDUTODCM                              #  S/C AXES TO STABLE MEMBER AXES
015803,000461: 22,2022           72364                           AXC,2    TLOAD                                 
015804,000462: 22,2023           02221                                    MFS                                   #  PREPARE TO CALCULATE ARRAY MFS
015805,000463: 22,2024           00322                                    CPHI                                  
015806,000464: 22,2025           77624                           CALL                                           
015807,000465: 22,2026           44410                                    CDUTODCM                              
015808,000466: 22,2027           45160        SECAD              AXC,1    CALL                                  #  MIS AND MFS ARRAYS CALCULATED         $2
015809,000467: 22,2030           03245                                    MIS                                   
015810,000468: 22,2031           44326                                    TRANSPOS                              
015811,000469: 22,2032           45575                           VLOAD    STADR                                 
015812,000470: 22,2033           50460                           STOVL    TMIS       +12D                       
015813,000471: 22,2034           77626                           STADR                                          
015814,000472: 22,2035           50466                           STOVL    TMIS       +6                         
015815,000473: 22,2036           77626                           STADR                                          
015816,000474: 22,2037           74474                           STORE    TMIS                                  #  TMIS = TRANSPOSE(MIS) SCALED BY 2
015817,000475: 22,2040           75160                           AXC,1    AXC,2                                 
015818,000476: 22,2041           03302                                    TMIS                                  
015819,000477: 22,2042           02221                                    MFS                                   
015820,000478: 22,2043           77624                           CALL                                           
015821,000479: 22,2044           44312                                    MXM3                                  
015822,000480: 22,2045           45575                           VLOAD    STADR                                 
015823,000481: 22,2046           51541                           STOVL    MFI        +12D                       
015824,000482: 22,2047           77626                           STADR                                          
015825,000483: 22,2050           51547                           STOVL    MFI        +6                         
015826,000484: 22,2051           77626                           STADR                                          
015827,000485: 22,2052           75555                           STORE    MFI                                   #  MFI = TMIS MFS (SCALED BY 4)
015828,000486: 22,2053           45001                           SETPD    CALL                                  #  TRANSPOSE MFI IN PD LIST
015829,000487: 

Page 364

015831,000489: 22,2054           00023                                    18D                                   
015832,000490: 22,2055           44335                                    TRNSPSPD                              
015833,000491: 22,2056           45575                           VLOAD    STADR                                 
015834,000492: 22,2057           50460                           STOVL    TMFI       +12D                       
015835,000493: 22,2060           77626                           STADR                                          
015836,000494: 22,2061           50466                           STOVL    TMFI       +6                         
015837,000495: 22,2062           77626                           STADR                                          
015838,000496: 22,2063           74474                           STORE    TMFI                                  #  TMFI = TRANSPOSE (MFI) SCALED BY 4
015839,000497: 
015840,000498:                                                                                                  #  CALCULATE COFSKEW AND MFISYM
015841,000499: 
015842,000500: 22,2064           45345                           DLOAD    DSU                                   
015843,000501: 22,2065           03305                                    TMFI       +2                         
015844,000502: 22,2066           02224                                    MFI        +2                         
015845,000503: 22,2067           45325                           PDDL     DSU                                   #  CALCULATE COF SCALED BY 2/SIN(AM)
015846,000504: 22,2070           02226                                    MFI        +4                         
015847,000505: 22,2071           03307                                    TMFI       +4                         
015848,000506: 22,2072           45325                           PDDL     DSU                                   
015849,000507: 22,2073           03315                                    TMFI       +10D                       
015850,000508: 22,2074           02234                                    MFI        +10D                       
015851,000509: 22,2075           77666                           VDEF                                           
015852,000510: 22,2076           03325                           STORE    COFSKEW                               #  EQUALS MFISKEW
015853,000511: 
015854,000512:                                                                                                  #  CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE
015855,000513: 
015856,000514: 22,2077           43345                           DLOAD    DAD                                   
015857,000515: 22,2100           02222                                    MFI                                   
015858,000516: 22,2101           02242                                    MFI        +16D                       
015859,000517: 22,2102           43225                           DSU      DAD                                   
015860,000518: 22,2103           06475                                    DP1/4TH                               
015861,000519: 22,2104           02232                                    MFI        +8D                        
015862,000520: 22,2105           03333                           STORE    CAM                                   #  CAM = (MFI0+MFI4+MFI8-1)/2 HALF SCALE
015863,000521: 22,2106           77726                           ARCCOS                                         
015864,000522: 22,2107           03335                           STORE    AM                                    #  AM=ARCCOS(CAM)  (AM SCALED BY 2)
015865,000523: 22,2110           51025                           DSU      BPL                                   
015866,000524: 22,2111           04363                                    MINANG                                
015867,000525: 22,2112           44117                                    CHECKMAX                              
015868,000526: 22,2113           77751                           TLOAD                                          #  MANEUVER LESS THAN .25 DEGREES
015869,000527: 22,2114           00322                                    CPHI                                  #  GO DIRECTLY INTO ATTITUDE HOLD
015870,000528: 22,2115           37235                           STCALL   CDUXD                                 #  ABOUT COMMANDED ANGLES
015871,000529: 22,2116           44742                                    TOOBADI                               #  STOP RATE AND EXIT
015872,000530: 
015873,000531: 22,2117           45345        CHECKMAX           DLOAD    DSU                                   
015874,000532: 22,2120           03335                                    AM                                    
015875,000533: 22,2121           04365                                    MAXANG                                
015876,000534: 22,2122           77244                           BPL      VLOAD                                 
015877,000535: 22,2123           44131                                    ALTCALC                               #  UNIT
015878,000536: 22,2124           03325                                    COFSKEW                               #  COFSKEW
015879,000537: 22,2125           77656                           UNIT                                           
015880,000538: 22,2126           03270                           STORE    COF                                   #  COF IS THE MANEUVER AXIS
015881,000539: 

Page 365

015883,000541: 22,2127           77650                           GOTO                                           #  SEE IF MANEUVER GOES THRU GIMBAL LOCK
015884,000542: 22,2130           44744                                    LOCSKIRT                              
015885,000543: 22,2131           53375        ALTCALC            VLOAD    VAD                                   #  IF AM GREATER THAN 170 DEGREES
015886,000544: 22,2132           02222                                    MFI                                   
015887,000545: 22,2133           03303                                    TMFI                                  
015888,000546: 22,2134           77762                           VSR1                                           
015889,000547: 22,2135           27303                           STOVL    MFISYM                                
015890,000548: 22,2136           02230                                    MFI        +6                         
015891,000549: 22,2137           74455                           VAD      VSR1                                  
015892,000550: 22,2140           03311                                    TMFI       +6                         
015893,000551: 22,2141           27311                           STOVL    MFISYM     +6                         
015894,000552: 22,2142           02236                                    MFI        +12D                       
015895,000553: 22,2143           74455                           VAD      VSR1                                  
015896,000554: 22,2144           03317                                    TMFI       +12D                       
015897,000555: 22,2145           03317                           STORE    MFISYM     +12D                       #  MFISYM=(MFI+TMFI)/2   SCALED BY 4
015898,000556: 
015899,000557: 
015900,000558:                                                                                                  #  CALCULATE COF
015901,000559: 
015902,000560: 
015903,000561: 22,2146           70545                           DLOAD    SR1                                   
015904,000562: 22,2147           03333                                    CAM                                   
015905,000563: 22,2150           45325                           PDDL     DSU                                   #  PDO CAM                                   $4
015906,000564: 22,2151           06503                                    DPHALF                                
015907,000565: 22,2152           03333                                    CAM                                   
015908,000566: 22,2153           65204                           BOVB     PDDL                                  #  PD2 1 - CAM                               $2
015909,000567: 22,2154           31765                                    SIGNMPAC                              
015910,000568: 22,2155           03323                                    MFISYM     +16D                       
015911,000569: 22,2156           56225                           DSU      DDV                                   
015912,000570: 22,2157           00001                                    0                                     
015913,000571: 22,2160           00003                                    2                                     
015914,000572: 22,2161           65366                           SQRT     PDDL                                  #  COFZ = SQRT(MFISYM8-CAM)/1-CAM)
015915,000573: 22,2162           03313                                    MFISYM     +8D                        #                                 $ ROOT 2
015916,000574: 22,2163           56225                           DSU      DDV                                   
015917,000575: 22,2164           00001                                    0                                     
015918,000576: 22,2165           00003                                    2                                     
015919,000577: 22,2166           65366                           SQRT     PDDL                                  #  COFY = SQRT(MFISYM4-CAM)/(1-CAM)   $ROOT2
015920,000578: 22,2167           03303                                    MFISYM                                
015921,000579: 22,2170           56225                           DSU      DDV                                   
015922,000580: 22,2171           00001                                    0                                     
015923,000581: 22,2172           00003                                    2                                     
015924,000582: 22,2173           55566                           SQRT     VDEF                                  #  COFX = SQRT(MFISYM-CAM)/(1-CAM)   $ROOT 2
015925,000583: 22,2174           77656                           UNIT                                           
015926,000584: 22,2175           03270                           STORE    COF                                   
015927,000585: 
015928,000586:                                                                                                  #  DETERMINE LARGEST COF AND ADJUST ACCORDINGLY
015929,000587: 
015930,000588: 22,2176           45345        COFMAXGO           DLOAD    DSU                                   
015931,000589: 22,2177           03270                                    COF                                   
015932,000590: 22,2200           03272                                    COF        +2                         
015933,000591: 22,2201           71240                           BMN      DLOAD                                 #  COFY G COFX
015934,000592: 

Page 366

015936,000594: 22,2202           44211                                    COMP12                                
015937,000595: 22,2203           03270                                    COF                                   
015938,000596: 22,2204           50025                           DSU      BMN                                   
015939,000597: 22,2205           03274                                    COF        +4                         
015940,000598: 22,2206           44266                                    METHOD3                               #  COFZ G COFX OR COFY
015941,000599: 22,2207           77650                           GOTO                                           
015942,000600: 22,2210           44242                                    METHOD1                               #  COFX G COFY OR COFZ
015943,000601: 22,2211           45345        COMP12             DLOAD    DSU                                   
015944,000602: 22,2212           03272                                    COF        +2                         
015945,000603: 22,2213           03274                                    COF        +4                         
015946,000604: 22,2214           77640                           BMN                                            
015947,000605: 22,2215           44266                                    METHOD3                               #  COFZ G COFY OR COFX
015948,000606: 
015949,000607: 22,2216           51145        METHOD2            DLOAD    BPL                                   #  COFY MAX
015950,000608: 22,2217           03327                                    COFSKEW    +2                         #  UY
015951,000609: 22,2220           44224                                    U2POS                                 
015952,000610: 22,2221           57575                           VLOAD    VCOMP                                 
015953,000611: 22,2222           03270                                    COF                                   
015954,000612: 22,2223           03270                           STORE    COF                                   
015955,000613: 22,2224           51145        U2POS              DLOAD    BPL                                   
015956,000614: 22,2225           03305                                    MFISYM     +2                         #  UX UY
015957,000615: 22,2226           44232                                    OKU21                                 
015958,000616: 22,2227           57545                           DLOAD    DCOMP                                 #  SIGN OF UX OPPOSITE TO UY
015959,000617: 22,2230           03270                                    COF                                   
015960,000618: 22,2231           03270                           STORE    COF                                   
015961,000619: 22,2232           51145        OKU21              DLOAD    BPL                                   
015962,000620: 22,2233           03315                                    MFISYM     +10D                       #  UY UZ
015963,000621: 22,2234           44744                                    LOCSKIRT                              
015964,000622: 22,2235           57545                           DLOAD    DCOMP                                 #  SIGN OF UZ OPPOSITE TO UY
015965,000623: 22,2236           03274                                    COF        +4                         
015966,000624: 22,2237           03274                           STORE    COF        +4                         
015967,000625: 22,2240           77650                           GOTO                                           
015968,000626: 22,2241           44744                                    LOCSKIRT                              
015969,000627: 22,2242           51145        METHOD1            DLOAD    BPL                                   #  COFX MAX
015970,000628: 22,2243           03325                                    COFSKEW                               #  UX
015971,000629: 22,2244           44250                                    U1POS                                 
015972,000630: 22,2245           57575                           VLOAD    VCOMP                                 
015973,000631: 22,2246           03270                                    COF                                   
015974,000632: 22,2247           03270                           STORE    COF                                   
015975,000633: 22,2250           51145        U1POS              DLOAD    BPL                                   
015976,000634: 22,2251           03305                                    MFISYM     +2                         #  UX UY
015977,000635: 22,2252           44256                                    OKU12                                 
015978,000636: 22,2253           57545                           DLOAD    DCOMP                                 
015979,000637: 22,2254           03272                                    COF        +2                         #  SIGN OF UY OPPOSITE TO UX
015980,000638: 22,2255           03272                           STORE    COF        +2                         
015981,000639: 22,2256           51145        OKU12              DLOAD    BPL                                   
015982,000640: 22,2257           03307                                    MFISYM     +4                         #  UX UZ
015983,000641: 22,2260           44744                                    LOCSKIRT                              
015984,000642: 22,2261           57545                           DLOAD    DCOMP                                 #  SIGN OF UZ OPPOSITE TO UY
015985,000643: 22,2262           03274                                    COF        +4                         
015986,000644: 

Page 367

015988,000646: 22,2263           03274                           STORE    COF        +4                         
015989,000647: 22,2264           77650                           GOTO                                           
015990,000648: 22,2265           44744                                    LOCSKIRT                              
015991,000649: 22,2266           51145        METHOD3            DLOAD    BPL                                   #  COFZ MAX
015992,000650: 22,2267           03331                                    COFSKEW    +4                         #  UZ
015993,000651: 22,2270           44274                                    U3POS                                 
015994,000652: 22,2271           57575                           VLOAD    VCOMP                                 
015995,000653: 22,2272           03270                                    COF                                   
015996,000654: 22,2273           03270                           STORE    COF                                   
015997,000655: 22,2274           51145        U3POS              DLOAD    BPL                                   
015998,000656: 22,2275           03307                                    MFISYM     +4                         #  UX UZ
015999,000657: 22,2276           44302                                    OKU31                                 
016000,000658: 22,2277           57545                           DLOAD    DCOMP                                 
016001,000659: 22,2300           03270                                    COF                                   #  SIGN OF UX OPPOSITE TO UZ
016002,000660: 22,2301           03270                           STORE    COF                                   
016003,000661: 22,2302           51145        OKU31              DLOAD    BPL                                   
016004,000662: 22,2303           03315                                    MFISYM     +10D                       #  UY UZ
016005,000663: 22,2304           44744                                    LOCSKIRT                              
016006,000664: 22,2305           57545                           DLOAD    DCOMP                                 
016007,000665: 22,2306           03272                                    COF        +2                         #  SIGN OF UY OPPOSITE TO UZ
016008,000666: 22,2307           03272                           STORE    COF        +2                         
016009,000667: 22,2310           77650                           GOTO                                           
016010,000668: 22,2311           44744                                    LOCSKIRT                              

Page 368

016012,000670:                                                                                                  #  MATRIX OPERATIONS
016013,000671: 
016014,000672: 13,2207                                           BANK     13                                    
016015,000673: 22,2000                                           SETLOC   KALCMON2                              
016016,000674: 22,2000                                           BANK                                           
016017,000675: 
016018,000676: 22,2312  E6,1675                                  EBANK=   BCDU                                  
016019,000677: 
016020,000678: 22,2312           76601        MXM3               SETPD    VLOAD*                                #  MXM3 MULTIPLIES 2 3X3 MATRICES
016021,000679: 22,2313           00001                                    0                                     #  AND LEAVES RESULT IN PD LIST
016022,000680: 22,2314           00001                                    0,1                                   #  AND MPAC
016023,000681: 22,2315           62703                           VXM*     PDVL*                                 
016024,000682: 22,2316           77776                                    0,2                                   
016025,000683: 22,2317           00007                                    6,1                                   
016026,000684: 22,2320           62703                           VXM*     PDVL*                                 
016027,000685: 22,2321           77776                                    0,2                                   
016028,000686: 22,2322           00015                                    12D,1                                 
016029,000687: 22,2323           41503                           VXM*     PUSH                                  
016030,000688: 22,2324           77776                                    0,2                                   
016031,000689: 22,2325           77616                           RVQ                                            
016032,000690: 
016033,000691: 
016034,000692:                                                                                                  #  RETURN WITH M1XM2 IN PD LIST
016035,000693: 
016036,000694: 22,2326           76601        TRANSPOS           SETPD    VLOAD*                                #  TRANSPOS TRANSPOSES A 3X3 MATRIX
016037,000695: 22,2327           00001                                    0                                     #   AND LEAVES RESULT IN PD LIST
016038,000696: 22,2330           00001                                    0,1                                   #  MATRIX ADDRESS IN XR1
016039,000697: 22,2331           62713                           PDVL*    PDVL*                                 
016040,000698: 22,2332           00007                                    6,1                                   
016041,000699: 22,2333           00015                                    12D,1                                 
016042,000700: 22,2334           77606                           PUSH                                           #  MATRIX IN PD
016043,000701: 22,2335           77776        TRNSPSPD           EXIT                                           #  ENTER WITH MATRIX AT 0 IN PD LIST
016044,000702: 22,2336           50120                           INDEX    FIXLOC                                
016045,000703: 22,2337           52013                           DXCH     12                                    
016046,000704: 22,2340           50120                           INDEX    FIXLOC                                
016047,000705: 22,2341           52017                           DXCH     16                                    
016048,000706: 22,2342           50120                           INDEX    FIXLOC                                
016049,000707: 22,2343           52013                           DXCH     12                                    
016050,000708: 22,2344           50120                           INDEX    FIXLOC                                
016051,000709: 22,2345           52015                           DXCH     14                                    
016052,000710: 22,2346           50120                           INDEX    FIXLOC                                
016053,000711: 22,2347           52005                           DXCH     4                                     
016054,000712: 22,2350           50120                           INDEX    FIXLOC                                
016055,000713: 22,2351           52015                           DXCH     14                                    
016056,000714: 22,2352           50120                           INDEX    FIXLOC                                
016057,000715: 22,2353           52003                           DXCH     2                                     
016058,000716: 22,2354           50120                           INDEX    FIXLOC                                
016059,000717: 22,2355           52007                           DXCH     6                                     
016060,000718: 22,2356           50120                           INDEX    FIXLOC                                
016061,000719: 22,2357           52003                           DXCH     2                                     
016062,000720: 

Page 369

016064,000722: 22,2360           06060                           TC       INTPRET                               
016065,000723: 22,2361           77616                           RVQ                                            
016066,000724: 
016067,000725: 15,2162                                           BANK     15                                    
016068,000726: 22,2000                                           SETLOC   KALCMON1                              
016069,000727: 22,2000                                           BANK                                           
016070,000728: 
016071,000729: 22,2362  E6,1675                                  EBANK=   BCDU                                  
016072,000730: 
016073,000731: 22,2362           00013 13563  MINANG             2DEC     0.00069375                            
016074,000732: 22,2364           17070 34343  MAXANG             2DEC     0.472222222                            
016075,000733:                                                                                                  #  GIMBAL LOCK CONSTANTS
016076,000734: 
016077,000735:                                                                                                  #  D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES
016078,000736:                                                                                                  #           NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES
016079,000737: 
016080,000738: 22,2366           15666 20443  SD                 2DEC     .433015                               #  = SIN(D)                        $2
016081,000739: 22,2370           33555 01106  K3S1               2DEC     .86603                                #  = SIN(D)                        $1
016082,000740: 22,2372           67777 77777  K4                 2DEC     -.25                                  #  = -COS(D)                       $2
016083,000741: 22,2374           04000 00000  K4SQ               2DEC     .125                                  #  = COS(D)COS(D)                  $2
016084,000742: 22,2376           00216 36323  SNGLCD             2DEC     .008725                               #  = SIN(NGL)COS(D)                $2
016085,000743: 22,2400           17773 00057  CNGL               2DEC     .499695                               #  COS(NGL)                        $2
016086,000744: 22,2402           14344        LOCKANGL           DEC      .388889                               #  = 70 DEGREES
016087,000745:                                                                                                  #  INTERPRETIVE SUBROUTINE TO READ THE CDU ANGLES
016088,000746: 
016089,000747: 22,2403           30034        READCDUK           CA       CDUZ                                  #  LOAD T(MPAC) WITH CDU ANGLES
016090,000748: 22,2404           54156                           TS       MPAC       +2                         
016091,000749: 22,2405           00006                           EXTEND                                         
016092,000750: 22,2406           30033                           DCA      CDUX                                  #  AND CHANGE MODE TO TRIPLE PRECISION
016093,000751: 22,2407           16517                           TCF      TLOAD      +6                         
016094,000752: 
016095,000753: 
016096,000754: 22,2410           66370        CDUTODCM           AXT,1    SSP                                   
016097,000755: 22,2411           00003                           OCT      3                                     
016098,000756: 22,2412           00051                                    S1                                    
016099,000757: 22,2413           00001                           OCT      1                                     #  SET XR1, S1, AND PD FOR LOOP
016100,000758: 22,2414           00010                           STORE    7                                     
016101,000759: 22,2415           77601                           SETPD                                          
016102,000760: 22,2416           00001                                    0                                     
016103,000761: 22,2417           47133        LOOPSIN            SLOAD*   RTB                                   
016104,000762: 22,2420           00013                                    10D,1                                 
016105,000763: 22,2421           21606                                    CDULOGIC                              
016106,000764: 

Page 370

016108,000766: 22,2422           00013                           STORE    10D                                   #  LOAD PD WITH  0 SIN(PHI)
016109,000767: 22,2423           65356                           SIN      PDDL                                  #                2 COS(PHI)
016110,000768: 22,2424           00013                                    10D                                   #                4 SIN(THETA)
016111,000769: 22,2425           41546                           COS      PUSH                                  #                6 COS(THETA)
016112,000770: 22,2426           71300                           TIX,1    DLOAD                                 #                8 SIN(PSI)
016113,000771: 22,2427           44417                                    LOOPSIN                               #               10 COS(PSI)
016114,000772: 22,2430           00007                                    6                                     
016115,000773: 22,2431           72405                           DMP      SL1                                   
016116,000774: 22,2432           00013                                    10D                                   
016117,000775: 22,2433           10001                           STORE    0,2                                   #  C0=COS(THETA)COS(PSI)
016118,000776: 22,2434           41345                           DLOAD    DMP                                   
016119,000777: 22,2435           00005                                    4                                     
016120,000778: 22,2436           00001                                    0                                     
016121,000779: 22,2437           41325                           PDDL     DMP                                   #  (PD6 SIN(THETA)SIN(PHI))
016122,000780: 22,2440           00007                                    6                                     
016123,000781: 22,2441           00011                                    8D                                    
016124,000782: 22,2442           72405                           DMP      SL1                                   
016125,000783: 22,2443           00003                                    2                                     
016126,000784: 22,2444           72421                           BDSU     SL1                                   
016127,000785: 22,2445           00015                                    12D                                   
016128,000786: 22,2446           10003                           STORE    2,2                                   #  C1=-COS(THETA)SIN(PSI)COS(PHI)
016129,000787: 22,2447           41345                           DLOAD    DMP                                   
016130,000788: 22,2450           00003                                    2                                     
016131,000789: 22,2451           00005                                    4                                     
016132,000790: 22,2452           41325                           PDDL     DMP                                   #  (PD7 COS(PHI)SIN(THETA)) SCALED 4
016133,000791: 22,2453           00007                                    6                                     
016134,000792: 22,2454           00011                                    8D                                    
016135,000793: 22,2455           72405                           DMP      SL1                                   
016136,000794: 22,2456           00001                                    0                                     
016137,000795: 22,2457           72415                           DAD      SL1                                   
016138,000796: 22,2460           00017                                    14D                                   
016139,000797: 22,2461           10005                           STORE    4,2                                   #  C2=COS(THETA)SIN(PSI)SIN(PHI)
016140,000798: 22,2462           77745                           DLOAD                                          
016141,000799: 22,2463           00011                                    8D                                    
016142,000800: 22,2464           10007                           STORE    6,2                                   #  C3=SIN(PSI)
016143,000801: 22,2465           77745                           DLOAD                                          
016144,000802: 22,2466           00013                                    10D                                   
016145,000803: 22,2467           72405                           DMP      SL1                                   
016146,000804: 22,2470           00003                                    2                                     
016147,000805: 22,2471           10011                           STORE    8D,2                                  #  C4=COS(PSI)COS(PHI)
016148,000806: 22,2472           41345                           DLOAD    DMP                                   
016149,000807: 22,2473           00013                                    10D                                   
016150,000808: 22,2474           00001                                    0                                     
016151,000809: 22,2475           72476                           DCOMP    SL1                                   
016152,000810: 22,2476           10013                           STORE    10D,2                                 #  C5=-COS(PSI)SIN(PHI)
016153,000811: 22,2477           41345                           DLOAD    DMP                                   
016154,000812: 22,2500           00005                                    4                                     
016155,000813: 22,2501           00013                                    10D                                   
016156,000814: 22,2502           72476                           DCOMP    SL1                                   
016157,000815: 22,2503           10015                           STORE    12D,2                                 #  C6=-SIN(THETA)COS(PSI)
016158,000816: 

Page 371

016160,000818: 22,2504           77745                           DLOAD                                          
016161,000819: 22,2505           72405                           DMP      SL1                                   #  (PUSH UP 7)
016162,000820: 22,2506           00011                                    8D                                    
016163,000821: 22,2507           41325                           PDDL     DMP                                   #  (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE 4
016164,000822: 22,2510           00007                                    6                                     
016165,000823: 22,2511           00001                                    0                                     
016166,000824: 22,2512           72415                           DAD      SL1                                   #  (PUSH UP 7)
016167,000825: 22,2513           77626                           STADR                                          #  C7=COS(PHI)SIN(THETA)SIN(PSI)
016168,000826: 22,2514           67760                           STORE    14D,2                                 #        +COS(THETA)SIN(PHI)
016169,000827: 22,2515           77745                           DLOAD                                          
016170,000828: 22,2516           72405                           DMP      SL1                                   #  (PUSH UP 6)
016171,000829: 22,2517           00011                                    8D                                    
016172,000830: 22,2520           41325                           PDDL     DMP                                   #  (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE 4
016173,000831: 22,2521           00007                                    6                                     
016174,000832: 22,2522           00003                                    2                                     
016175,000833: 22,2523           72425                           DSU      SL1                                   #  (PUSH UP 6)
016176,000834: 22,2524           77626                           STADR                                          
016177,000835: 22,2525           67756                           STORE    16D,2                                 #  C8=-SIN(THETA)SIN(PHI)SIN(PSI)
016178,000836: 22,2526           77616                           RVQ                                            #  +COS(THETA)COS(PHI)
016179,000837: 
016180,000838:                                                                                                  #  CALCULATION OF THE MATRIX DEL......
016181,000839: 
016182,000840:                                                                                                  #           *      *               --T           *
016183,000841:                                                                                                  #           DEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A)          SCALED 1
016184,000842: 
016185,000843:                                                                                                  #                 -
016186,000844:                                                                                                  #           WHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION.
016187,000845:                                                                                                  #           A IS THE ANGLE OF ROTATION (DP SCALED 2)
016188,000846:                                                                                                  #                                              -
016189,000847:                                                                                                  #           UPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC
016190,000848: 
016191,000849: 22,2527           41401        DELCOMP            SETPD    PUSH                                  #  MPAC CONTAINS THE ANGLE A
016192,000850: 22,2530           00001                                    0                                     
016193,000851: 22,2531           65356                           SIN      PDDL                                  #  PD0 = SIN(A)
016194,000852: 22,2532           41546                           COS      PUSH                                  #  PD2 = COS(A)
016195,000853: 22,2533           65302                           SR2      PDDL                                  #  PD2 = COS(A)                          $8
016196,000854: 22,2534           41021                           BDSU     BOVB                                  
016197,000855: 22,2535           06503                                    DPHALF                                
016198,000856: 22,2536           31765                                    SIGNMPAC                              
016199,000857: 22,2537           77725                           PDDL                                           #  PD4 = 1-COS(A)
016200,000858: 
016201,000859:                                                                                                  #  COMPUTE THE DIAGONAL COMPONENTS OF DEL
016202,000860: 
016203,000861: 22,2540           03270                                    COF                                   
016204,000862: 22,2541           41316                           DSQ      DMP                                   
016205,000863: 22,2542           00005                                    4                                     
016206,000864: 22,2543           52415                           DAD      SL3                                   
016207,000865: 22,2544           00003                                    2                                     
016208,000866: 22,2545           77604                           BOVB                                           
016209,000867: 22,2546           31765                                    SIGNMPAC                              
016210,000868: 

Page 372

016212,000870: 22,2547           16222                           STODL    KEL                                   #  UX UX(1-COS(A)) +COS(A)              $1
016213,000871: 22,2550           03272                                    COF        +2                         
016214,000872: 22,2551           41316                           DSQ      DMP                                   
016215,000873: 22,2552           00005                                    4                                     
016216,000874: 22,2553           52415                           DAD      SL3                                   
016217,000875: 22,2554           00003                                    2                                     
016218,000876: 22,2555           77604                           BOVB                                           
016219,000877: 22,2556           31765                                    SIGNMPAC                              
016220,000878: 22,2557           16232                           STODL    KEL        +8D                        #  UY UY(1-COS(A)) +COS(A)              $1
016221,000879: 22,2560           03274                                    COF        +4                         
016222,000880: 22,2561           41316                           DSQ      DMP                                   
016223,000881: 22,2562           00005                                    4                                     
016224,000882: 22,2563           52415                           DAD      SL3                                   
016225,000883: 22,2564           00003                                    2                                     
016226,000884: 22,2565           77604                           BOVB                                           
016227,000885: 22,2566           31765                                    SIGNMPAC                              
016228,000886: 22,2567           02242                           STORE    KEL        +16D                       #  UZ UZ(1-COS(A)) +COS(A)              $1
016229,000887: 
016230,000888:                                                                                                  #  COMPUTE THE OFF DIAGONAL TERMS OF DEL
016231,000889: 
016232,000890: 22,2570           41345                           DLOAD    DMP                                   
016233,000891: 22,2571           03270                                    COF                                   
016234,000892: 22,2572           03272                                    COF        +2                         
016235,000893: 22,2573           72405                           DMP      SL1                                   
016236,000894: 22,2574           00005                                    4                                     
016237,000895: 22,2575           41325                           PDDL     DMP                                   #  D6     UX UY (1-COS A)             $4
016238,000896: 22,2576           03274                                    COF        +4                         
016239,000897: 22,2577           00001                                    0                                     
016240,000898: 22,2600           43206                           PUSH     DAD                                   #  D8    UZ SIN A                     $4
016241,000899: 22,2601           00007                                    6                                     
016242,000900: 22,2602           41112                           SL2      BOVB                                  
016243,000901: 22,2603           31765                                    SIGNMPAC                              
016244,000902: 22,2604           16230                           STODL    KEL        +6                         
016245,000903: 22,2605           62421                           BDSU     SL2                                   
016246,000904: 22,2606           77604                           BOVB                                           
016247,000905: 22,2607           31765                                    SIGNMPAC                              
016248,000906: 22,2610           16224                           STODL    KEL        +2                         
016249,000907: 22,2611           03270                                    COF                                   
016250,000908: 22,2612           41205                           DMP      DMP                                   
016251,000909: 22,2613           03274                                    COF        +4                         
016252,000910: 22,2614           00005                                    4                                     
016253,000911: 22,2615           65352                           SL1      PDDL                                  #  D6    UX UZ (1-COS A)              $4
016254,000912: 22,2616           03272                                    COF        +2                         
016255,000913: 22,2617           41405                           DMP      PUSH                                  #  D8    UY SIN(A)
016256,000914: 22,2620           00001                                    0                                     
016257,000915: 22,2621           62415                           DAD      SL2                                   
016258,000916: 22,2622           00007                                    6                                     
016259,000917: 22,2623           77604                           BOVB                                           
016260,000918: 22,2624           31765                                    SIGNMPAC                              
016261,000919: 22,2625           16226                           STODL    KEL        +4                         #  UX UZ (1-COS(A))+UY SIN(A)
016262,000920: 

Page 373

016264,000922: 22,2626           62421                           BDSU     SL2                                   
016265,000923: 22,2627           77604                           BOVB                                           
016266,000924: 22,2630           31765                                    SIGNMPAC                              
016267,000925: 22,2631           16236                           STODL    KEL        +12D                       #  UX UZ (1-COS(A))-UY SIN(A)
016268,000926: 22,2632           03272                                    COF        +2                         
016269,000927: 22,2633           41205                           DMP      DMP                                   
016270,000928: 22,2634           03274                                    COF        +4                         
016271,000929: 22,2635           00005                                    4                                     
016272,000930: 22,2636           65352                           SL1      PDDL                                  #  D6  UY UZ (1-COS(A))               $4
016273,000931: 22,2637           03270                                    COF                                   
016274,000932: 22,2640           41405                           DMP      PUSH                                  #  D8  UX SIN(A)
016275,000933: 22,2641           00001                                    0                                     
016276,000934: 22,2642           62415                           DAD      SL2                                   
016277,000935: 22,2643           00007                                    6                                     
016278,000936: 22,2644           77604                           BOVB                                           
016279,000937: 22,2645           31765                                    SIGNMPAC                              
016280,000938: 22,2646           16240                           STODL    KEL        +14D                       #  UY UZ(1-COS(A)) +UX SIN(A)
016281,000939: 22,2647           62421                           BDSU     SL2                                   
016282,000940: 22,2650           77604                           BOVB                                           
016283,000941: 22,2651           31765                                    SIGNMPAC                              
016284,000942: 22,2652           02234                           STORE    KEL        +10D                       #  UY UZ (1-COS(A)) -UX SIN(A)
016285,000943: 22,2653           77616                           RVQ                                            
016286,000944: 
016287,000945: 
016288,000946:                                                                                                  #  DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE
016289,000947:                                                                                                  #  X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2)
016290,000948:                                                                                                  #  LEAVES CDU ANGLES SCALED 2PI IN V(MPAC)
016291,000949:                                                                                                  #  COS(MGA) WILL BE LEFT IN S1 (SCALED 1)
016292,000950: 
016293,000951:                                                                                                  #  THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS***
016294,000952: 
016295,000953:                                                                                                  #           C  =COS(THETA)COS(PSI)
016296,000954:                                                                                                  #            0
016297,000955:                                                                                                  #           C  =-COS(THETA)SIN(PSI)COS(PHI)+SI (THETA)SIN(PHI)
016298,000956:                                                                                                  #            1
016299,000957:                                                                                                  #           C  =COS(THETA)SIN(PSI)SIN(PHI) + S N(THETA)COS(PHI)
016300,000958:                                                                                                  #            2
016301,000959:                                                                                                  #           C  = SIN(PSI)
016302,000960:                                                                                                  #            3
016303,000961:                                                                                                  #           C  = COS(PSI)COS(PHI)
016304,000962:                                                                                                  #            4
016305,000963:                                                                                                  #           C  =-COS(PSI)SIN(PHI)
016306,000964:                                                                                                  #            5
016307,000965:                                                                                                  #           C  =-SIN(THETA)COS(PSI)
016308,000966:                                                                                                  #            6
016309,000967:                                                                                                  #           C  =SIN(THETA)SIN(PSI)COS(PHI)+COS THETA) SIN(PHI)
016310,000968:                                                                                                  #            7
016311,000969:                                                                                                  #           C  =-SIN(THETA)SIN(PSI)SIN(PHI)+CO (THETA)COS(PHI)
016312,000970:                                                                                                  #            8
016313,000971: 

Page 374

016315,000973: 
016316,000974:                                                                                                  #           WHERE PHI = OGA
016317,000975:                                                                                                  #                 THETA = IGA
016318,000976:                                                                                                  #                 PSI = MGA
016319,000977: 
016320,000978: 22,2654           67543        DCMTOCDU           DLOAD*   ARCSIN                                
016321,000979: 22,2655           00007                                    6,1                                   
016322,000980: 22,2656           71406                           PUSH     COS                                   #  PD +0         PSI
016323,000981: 22,2657           41152                           SL1      BOVB                                  
016324,000982: 22,2660           31765                                    SIGNMPAC                              
016325,000983: 22,2661           00051                           STORE    S1                                    
016326,000984: 22,2662           57543                           DLOAD*   DCOMP                                 
016327,000985: 22,2663           00015                                    12D,1                                 
016328,000986: 22,2664           67471                           DDV      ARCSIN                                
016329,000987: 22,2665           00051                                    S1                                    
016330,000988: 22,2666           51123                           PDDL*    BPL                                   #  PD +2  THETA
016331,000989: 22,2667           00001                                    0,1                                   #  MUST CHECK THE SIGN OF COS(THETA)
016332,000990: 22,2670           44702                                    OKTHETA                               #  TO DETERMINE THE PROPER QUADRANT
016333,000991: 22,2671           57545                           DLOAD    DCOMP                                 
016334,000992: 22,2672           43244                           BPL      DAD                                   
016335,000993: 22,2673           44677                                    SUHALFA                               
016336,000994: 22,2674           06503                                    DPHALF                                
016337,000995: 22,2675           77650                           GOTO                                           
016338,000996: 22,2676           44701                                    CALCPHI                               
016339,000997: 22,2677           77625        SUHALFA            DSU                                            
016340,000998: 22,2700           06503                                    DPHALF                                
016341,000999: 22,2701           77606        CALCPHI            PUSH                                           
016342,001000: 22,2702           57543        OKTHETA            DLOAD*   DCOMP                                 
016343,001001: 22,2703           00013                                    10D,1                                 
016344,001002: 22,2704           67471                           DDV      ARCSIN                                
016345,001003: 22,2705           00051                                    S1                                    
016346,001004: 22,2706           51123                           PDDL*    BPL                                   #  PUSH DOWN PHI
016347,001005: 22,2707           00011                                    8D,1                                  
016348,001006: 22,2710           44722                                    OKPHI                                 
016349,001007: 22,2711           57545                           DLOAD    DCOMP                                 #  PUSH UP PHI
016350,001008: 22,2712           43244                           BPL      DAD                                   
016351,001009: 22,2713           44717                                    SUHALFAP                              
016352,001010: 22,2714           06503                                    DPHALF                                
016353,001011: 22,2715           77650                           GOTO                                           
016354,001012: 22,2716           44723                                    VECOFANG                              
016355,001013: 22,2717           52025        SUHALFAP           DSU      GOTO                                  
016356,001014: 22,2720           06503                                    DPHALF                                
016357,001015: 22,2721           44723                                    VECOFANG                              
016358,001016: 22,2722           77745        OKPHI              DLOAD                                          #  PUSH UP PHI
016359,001017: 22,2723           43466        VECOFANG           VDEF     RVQ                                   
016360,001018: 

Page 375

016362,001020:                                                                                                  #  ROUTINES FOR TERMINATING THE AUTOMATIC MANEUVER AND RETURNING TO USER
016363,001021: 
016364,001022: 22,2724           77776        TOOBADF            EXIT                                           
016365,001023: 22,2725           05571                           TC       ALARM                                 
016366,001024: 22,2726           00401                           OCT      00401                                 
016367,001025: 
016368,001026: 22,2727           12732                           TCF      NOGO                                  #  DO NOT ZERO ATTITUDE ERRORS
016369,001027: 
016370,001028: 22,2730           04607                           TC       BANKCALL                              
016371,001029: 22,2731           40154                           CADR     ZATTEROR                              #  ZERO ATTITUDE ERRORS
016372,001030: 
016373,001031: 22,2732           04607        NOGO               TC       BANKCALL                              
016374,001032: 22,2733           40166                           CADR     STOPRATE                              #  STOP RATES
016375,001033: 
016376,001034: 22,2734           34743                           CAF      TWO                                   
016377,001035: 22,2735           00004                           INHINT                                         #  ALL RETURNS ARE NOW MADE VIA GOODEND
016378,001036: 22,2736           05205                           TC       WAITLIST                              
016379,001037: 22,2737  E6,1675                                  EBANK=   BCDU                                  
016380,001038: 22,2737           03234 44066                     2CADR    GOODMANU                              
016381,001039: 
016382,001040: 22,2741           15146                           TCF      ENDOFJOB                              
016383,001041: 
016384,001042: 22,2742           77776        TOOBADI            EXIT                                           
016385,001043: 22,2743           12732                           TCF      NOGO                                  

End of include-file ATTITUDE_MANEUVER_ROUTINE.agc.  Parent file is MAIN.agc