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.

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

Page 354

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

Page 355

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

Page 356

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

Page 357

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

Page 358

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

Page 359

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

Page 360

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

Page 361

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

Page 362

015767,000431:                                                                                                  #                         TRANSPOS
015768,000432:                                                                                                  #                         SIGNMPAC
015769,000433:                                                                                                  #                         READCDUK
015770,000434:                                                                                                  #                         CDUTODCM
015771,000435: 

Page 363

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

Page 364

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

Page 365

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

Page 366

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

Page 367

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

Page 368

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

Page 369

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

Page 370

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

Page 371

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

Page 372

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

Page 373

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

Page 374

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

Page 375

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

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