Source Code

These source-code files were transcribed from scans made from Don Eyles's personal copy of BURST120 (SUNBURST 120). They were scanned at archive.org's Boston facility, and the scanning was sponsored by Mike Stewart. The code was transcribed from these scans by a team of volunteers who are referenced in the program comments. Comments from the original source code are in ALL-CAPS, whereas comments added later in transcription are in Mixed-Case. In some cases, where similar code blocks exist in previously-transcribed AGC programs (primarily Luminary 99, from Apollo 11) those code blocks were used as a starting point and then corrected to agree with the BURST120 scans. The full scans are available at the Virtual AGC project's collection at archive.org, while more-convenient reduced-size (but reduced-quality) images are available at the main Virtual AGC website. Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository. Notations on the program listing read, in part:

	YUL SYSTEM FOR AGC: REVISION 0 OF PROGRAM BURST120 
	BY NASA 2021106-031 DEC 7, 1967

	THIS LISTING IS A COPY OF A VERSION OF THE PROGRAM INTENDED 
	FOR USE IN THE ON-BOARD PRIMARY GUIDANCE COMPUTER IN THE 
	UNMANNED FLIGHT OF APOLLO LUNAR MODULE 1 --- THE AS206 MISSION.
Note that the date is the date of the printout, not the date of the program revision.

026694,000002:                                                                                                  ## Copyright:   Public domain.
026695,000003:                                                                                                  ## Filename:    ATTITUDE_MANEUVER_ROUTINE.agc
026696,000004:                                                                                                  ## Purpose:     A module for revision 0 of BURST120 (Sunburst). It 
026697,000005:                                                                                                  ##              is part of the source code for the Lunar Module's
026698,000006:                                                                                                  ##              (LM) Apollo Guidance Computer (AGC) for Apollo 5.
026699,000007:                                                                                                  ## Assembler:   yaYUL
026700,000008:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
026701,000009:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
026702,000010:                                                                                                  ## Mod history: 2016-09-30 RSB  Created draft version.
026703,000011:                                                                                                  ##              2016-10-20 MAS  Began adapting from Luminary 099.
026704,000012:                                                                                                  ##              2016-10-21 MAS  Completed adapting/transcribing.
026705,000013:                                                                                                  ##              2016-10-31 RSB  Typos.
026706,000014:                                                                                                  ##              2016-11-01 RSB  More typos.
026707,000015:                                                                                                  ##              2016-11-02 RSB  More typos.
026708,000016:                                                                                                  ##              2016-12-06 RSB  Comment-proofing with octopus/ProoferComments,
026709,000017:                                                                                                  ##                              changes made.
026710,000018:                                                                                                  ##              2017-03-07 RSB  Comment-text fixes noted in proofing Luminary 116.
026711,000019:                                                                                                  ##              2017-03-15 RSB  Comment-text fixes identified in 6-way
026712,000020:                                                                                                  ##                              side-by-side diff of Sunburst 120 and 
026713,000021:                                                                                                  ##                              Luminary 69/99/116/131/210.
026714,000022: 

Page 636

026716,000024:                                                                                                  #  BLOCK 2 LGC ATTITUDE MANEUVER ROUTINE-KALCMANU
026717,000025: 
026718,000026: 
026719,000027: 
026720,000028:                                                                                                  #  MOD 1                          DATE  11/7/66       BY  DON KEENE
026721,000029:                                                                                                  #  PROGRAM DESCRIPTION
026722,000030: 
026723,000031:                                                                                                  #       KALCMANU IS A ROUTINE WHICH GENERATES COMMANDS FOR THE LM DAP TO CHANGE THE ATTITUDE OF THE SPACECRAFT
026724,000032:                                                                                                  #  DURING FREE FALL.  IT IS DESIGNED TO MANEUVER THE SPACECRAFT FROM ITS INITIAL ORIENTATION TO SOME DESIRED
026725,000033:                                                                                                  #  ORIENTATION SPECIFIED BY THE PROGRAM WHICH CALLS KALCMANU, AVOIDING GIMBAL LOCK IN THE PROCESS.  IN THE 
026726,000034:                                                                                                  #  MOD 1 VERSION, THIS DESIRED ATTITUDE CAN BE SPECIFIED IN ONE OF TWO WAYS
026727,000035: 
026728,000036:                                                                                                  #       A) BY A SET OF THREE COMMANDED CDU ANGLES
026729,000037: 
026730,000038:                                                                                                  #       B) BY A VECTOR IN STABLE MEMBER COORDINATES ALONG WHICH THE THRUST VECTOR (GIVEN IN SPACECRAFT
026731,000039:                                                                                                  #          COORDINATES IS TO BE ALIGNED.
026732,000040: 
026733,000041:                                                                                                  #       IF THE FIRST METHOD IS USED, THE THREE DESIRED CDU ANGLES MUST BE STORED AS 2:S COMPLEMENT SINGLE
026734,000042:                                                                                                  #  PRECISION ANGLES IN THE THREE CONSECUTIVE LOCATIONS, CPHI, CTHETA, CPSI, WHERE
026735,000043: 
026736,000044:                                                                                                  #       CPHI = COMMANDED OUTER GIMBAL ANGLE
026737,000045:                                                                                                  #       CTHETA = COMMANDED INNER GIMBAL ANGLE
026738,000046:                                                                                                  #       CPSI = COMMANDED MIDDLE GIMBAL ANGLE
026739,000047: 
026740,000048:                                                                                                  #  THE ENTRY POINT IN KALCMANU FOR THIS METHOD IS KALCMAN3 (SEE SECTION 4)
026741,000049: 
026742,000050:                                                                                                  #       THE SECOND METHOD MAY BE USED FOR POINTING THE THRUST AXIS OF THE SPACECRAFT.  IN THIS CASE THE AXIS TO
026743,000051:                                                                                                  #  BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY
026744,000052:                                                                                                  #  BEGINNING WITH THE LOCATION CALLED SCAXIS. THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES.
026745,000053:                                                                                                  #  THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN
026746,000054:                                                                                                  #  SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM.  THE COMPONENTS OF
026747,000055:                                                                                                  #  THIS VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES.
026748,000056: 
026749,000057:                                                                                                  #                                                                             -
026750,000058:                                                                                                  #       KALCMANU DETERMINES THE DIRECTION OF THE SINGLE EQUIVALENT ROTATION (COF ALTERNATELY TERMED U) AND THE
026751,000059:                                                                                                  #  MAGNITUDE OF THE ROTATION (AM) TO BRING THE S/C FROM ITS INITIAL ORIENTATION TO ITS FINAL ORIENTATION.
026752,000060:                                                                                                  #  THIS DIRECTION REMAINS FIXED BOTH IN INERTIAL COORDINATES AND IN COMMANDED S/C AXES THROUGHOUT THE 
026753,000061:                                                                                                  #                   -
026754,000062:                                                                                                  #  MANEUVER.  ONCE COF AND AM HAVE BEEN DETERMINED, KALCMANU THEN EXAMINES THE MANEUVER TO SEE IF IT WILL BRING
026755,000063:                                                                                                  #                                        -
026756,000064:                                                                                                  #  THE S/C THROUGH GIMBAL LOCK.  IF SO, COF AND AM ARE READJUSTED SO THAT THE S/C WILL JUST SKIM THE GIMBAL
026757,000065:                                                                                                  #  LOCK ZONE AND ALIGN THE X-AXIS.  IN GENERAL A FINAL YAW  ABOUT X WILL BE NECESSARY TO COMPLETE THE MANEUVER.
026758,000066:                                                                                                  #  NEEDLESS TO SAY, NEITHER THE INITIAL NOR THE FINAL ORIENTATION CAN BE IN GIMBAL LOCK.
026759,000067: 
026760,000068:                                                                                                  #       FOR PROPER ATTITUDE CONTROL THE DIGITAL AUTOPILOT MUST BE GIVEN AN ATTITUDE REFERENCE WHICH IT CAN TRACK.
026761,000069:                                                                                                  #  KALCMANU DOES THIS BY GENERATING A REFERENCE OF DESIRED GIMBAL ANGLES (CDUXD, CDUYD, CDUZD) WHICH ARE UPDATED
026762,000070:                                                                                                  #  EVERY ONE SECOND DURING THE MANEUVER.  TO ACHIEVE A SMOOTHER SEQUENCE OF COMMANDS BETWEEN SUCCESSIVE UPDATES,
026763,000071:                                                                                                  #  THE PROGRAM ALSO GENERATES A SET OF INCREMENTAL CDU ANGLES (DELDCDU) TO BE ADDED TO CDU DESIRED BY THE DIGITAL
026764,000072:                                                                                                  #  AUTOPILOT.  KALCMANU ALSO CALCULATES THE COMPONENT MANEUVER RATES (OMEGAPD, OMEGAQD, OMEGARD), WHICH CAN
026765,000073:                                                                                                  #                                       -

Page 637

026767,000075:                                                                                                  #  BE DETERMINED SIMPLY BY MULTIPLYING COF BY SOME SCALAR (ARATE) CORRESPONDING TO THE DESIRED ROTATIONAL RATE.
026768,000076: 
026769,000077:                                                                                                  #       AUTOMATIC MANEUVERS ARE TIMED WITH THE HELP OF WAITLIST SO THAT AFTER A SPECIFIED INTERVAL THE Y AND Z
026770,000078:                                                                                                  #  DESIRED RATES ARE SET TO ZERO AND THE DESIRED CDU ANGLES (CDUYD, CDUZD) ARE SET EQUAL TO THE FINAL DESIRED CDU
026771,000079:                                                                                                  #  ANGLES (CTHETA, CPSI).  IF ANY YAW  REMAINS DUE TO GIMBAL LOCK AVOIDANCE, THE FINAL YAW  MANEUVER IS
026772,000080:                                                                                                  #  CALCULATED AND THE DESIRED YAW  RATE SET TO SOME FIXED VALUE (ROLLRATE = + OR - 2 DEGREES PER SEC).
026773,000081:                                                                                                  #  IN THIS CASE ONLY AN INCREMENTAL CDUX ANGLE (DELFROLL) IS SUPPLIED TO THE DAP.  AT THE END OF THE YAW
026774,000082:                                                                                                  #  MANEUVER OR IN THE EVENT THAT THERE WAS NO FINAL YAW,  CDUXD IS SET EQUAL TO CPHI AND THE X-AXIS DESIRED
026775,000083:                                                                                                  #  RATE SET TO ZERO.  THUS, UPON COMPLETION OF THE MANEUVER THE S/C WILL FINISH UP IN A LIMIT CYCLE ABOUT THE
026776,000084:                                                                                                  #  DESIRED FINAL GIMBAL ANGLES.
026777,000085: 
026778,000086: 
026779,000087: 
026780,000088:                                                                                                  #  PROGRAM LOGIC FLOW
026781,000089: 
026782,000090:                                                                                                  #       KALCMANU IS CALLED AS A HIGH PRIORITY JOB WITH ENTRY POINTS AT KALCMAN3 AND VECPOINT.  IT FIRST PICKS
026783,000091:                                                                                                  #  UP THE CURRENT CDU ANGLES TO BE USED AS THE BASIS FOR ALL COMPUTATIONS INVOLVING THE INITIAL S/C ORIENTATION.
026784,000092:                                                                                                  #  IT THEN DETERMINES THE DIRECTION COSINE MATRICES RELATING BOTH THE INITIAL AND FINAL S/C ORIENTATION TO STABLE
026785,000093:                                                                                                  #                *    *                                                                               *
026786,000094:                                                                                                  #  MEMBER AXES (MIS, MFS).  IT ALSO COMPUTES THE MATRIX RELATING FINAL S/C AXES TO INITIAL S/C AXES (MFI).  THE
026787,000095:                                                                                                  #  ANGLE OF ROTATION (AM) IS THEN EXTRACTED FROM THIS MATRIX, AND TESTS ARE MADE TO DETERMINE IF
026788,000096: 
026789,000097:                                                                                                  #       A)  AM LESS THAN .25 DEGREES (MINANG)
026790,000098:                                                                                                  #       B)  AM GREATER THAN 170 DEGREES (MAXANG)
026791,000099: 
026792,000100:                                                                                                  #       IF AM LESS THAN .25 DEGREES, NO COMPLICATED AUTOMATIC MANEUVERING IS NECESSARY.  THEREFORE WE CAN SIMPLY
026793,000101:                                                                                                  #  SET CDU DESIRED EQUAL TO THE FINAL CDU DESIRED ANGLES AND TERMINATE THE JOB.
026794,000102: 
026795,000103:                                                                                                  #       IF AM IS GREATER THAN .25 DEGREES BUT LESS THAN 170 DEGREES, THE AXES OF THE SINGLE EQUIVALENT ROTATION
026796,000104:                                                                                                  #    -                                                       *
026797,000105:                                                                                                  #  (COF) IS EXTRACTED FROM THE SKEW SYMMETRIC COMPONENTS OF MFI.                            *     *
026798,000106:                                                                                                  #       IF AM GREATER THAN 170 DEGREES AN ALTERNATE METHOD EMPLOYING THE SYMMETRIC PART OF MFI (MFISYM) IS USED
026799,000107:                                                                                                  #                -
026800,000108:                                                                                                  #  TO DETERMINE COF.
026801,000109: 
026802,000110:                                                                                                  #       THE PROGRAM THEN CHECKS TO SEE IF THE MANEUVER AS COMPUTED WILL BRING THE S/C THROUGH GIMBAL LOCK.  IF
026803,000111:                                                                                                  #  SO, A NEW MANEUVER IS CALCULATED WHICH WILL JUST SKIM THE GIMBAL LOCK ZONE AND ALIGN THE S/C X-AXIS.  THIS
026804,000112:                                                                                                  #  METHOD ASSURES THAT THE ADDITIONAL MANEUVERING TO AVOID GIMBAL LOCK WILL BE KEPT TO A MINIMUM.  SINCE A FINAL
026805,000113:                                                                                                  #  P AXIS YAW WILL BE NECESSARY, A SWITCH IS RESET (STATE SWITCH 31) TO ALLOW FOR THE COMPUTATION OF THIS FINAL
026806,000114:                                                                                                  #  YAW.
026807,000115: 
026808,000116:                                                                                                  #       AS STATED PREVIOUSLY KALCMANU GENERATES A SEQUENCE OF DESIRED GIMBAL ANGLES WHICH ARE UPDATED EVERY 
026809,000117:                                                                                                  #                                                                                               -
026810,000118:                                                                                                  #  SECOND.  THIS IS ACCOMPLISHED BY A SMALL ROTATION OF THE DESIRED S/C FRAME ABOUT THE VECTOR COF.  THE NEW
026811,000119:                                                                                                  #  DESIRED REFERENCE MATRIX IS THEN,
026812,000120: 
026813,000121:                                                                                                  #                   *              *         *
026814,000122:                                                                                                  #                  MIS       =    MIS       DEL
026815,000123:                                                                                                  #                     N+1            N

Page 638

026817,000125:                                                                                                  #         *
026818,000126:                                                                                                  #  WHERE DEL IS THE MATRIX CORRESPONDING TO THIS SMALL ROTATION.  THE NEW CDU ANGLES CAN THEN BE EXTRACTED
026819,000127:                                                                                                  #        *
026820,000128:                                                                                                  #  FROM MIS.
026821,000129: 
026822,000130:                                                                                                  #       AT THE BEGINNING OF THE MANEUVER THE AUTOPILOT DESIRED RATES (OMEGAPD, OMEGAQD, OMEGARD) AND THE 
026823,000131:                                                                                                  #  MANEUVER TIMINGS ARE ESTABLISHED.  ON THE FIRST PASS AND ON ALL SUBSEQUENT UPDATES THE CDU DESIRED
026824,000132:                                                                                                  #  ANGLES ARE LOADED WITH THE APPROPRIATE VALUES AND THE INCREMENTAL CDU ANGLES ARE COMPUTED.  THE AGC CLOCKS
026825,000133:                                                                                                  #  (TIME1 AND TIME2) ARE THAN CHECKED TO SEE IF THE MANEUVER WILL TERMINATE BEFORE THE NEXT UPDATE.  IF
026826,000134:                                                                                                  #  NOT, KALCMANU CALLS FOR ANOTHER UPDATE (RUN AS A JOB WITH PRIORITY TBD) IN ONE SECOND.  ANY DELAYS IN THIS
026827,000135:                                                                                                  #  CALLING SEQUENCE ARE AUTOMATICALLY COMPENSATED IN CALLING FOR THE NEXT UPDATE.
026828,000136: 
026829,000137:                                                                                                  #       IF IT IS FOUND THAT THE MANEUVER IS TO TERMINATE BEFORE THE NEXT UPDATE A ROUTINE IS CALLED (AS A WAIT-
026830,000138:                                                                                                  #  LIST TASK) TO STOP THE MANEUVER AT THE APPROPRIATE TIME AS EXPLAINED ABOVE.
026831,000139: 
026832,000140: 
026833,000141: 
026834,000142:                                                                                                  #  CALLING SEQUENCE
026835,000143: 
026836,000144:                                                                                                  #       THE ENTRY POINT IN KALCMANU FOR POINTING THE THRUST AXIS OF THE SPACECRAFT IS VECPOINT
026837,000145: 
026838,000146:                                                                                                  #       CAF        PRIO XX
026839,000147:                                                                                                  #                       --
026840,000148:                                                                                                  #       INHINT
026841,000149:                                                                                                  #       TC         FINDVAC
026842,000150:                                                                                                  #       2CADR      VECPOINT
026843,000151:                                                                                                  #       RELINT
026844,000152: 
026845,000153:                                                                                                  #       THE CALLING PROGRAM MUST ALSO SPECIFY THE DESIRED MANEUVERING RATES, PRESENTLY IN THE FORM OF A SINGLE
026846,000154:                                                                                                  #  PRECISION NUMBER (RATEINDEX), WHICH IS LOADED WITH ONE OF FOUR VALUES 0, 2, 4, OR 6, CORRESPONDING TO ANGULAR
026847,000155:                                                                                                  #  RATES OF .5, 2, 5, 10 DEGREES/SEC.  THERE IS ALSO A STATE SWITCH (33) WHICH MAY BE SET TO IGNORE ANY FINAL YAW
026848,000156:                                                                                                  #  INCURRED BY AVOIDING GIMBAL LOCK.
026849,000157: 
026850,000158:                                                                                                  #       WITH THIS INFORMATION KALCMANU WILL THEN GENERATE A SEQUENCE OF THREE CDU DESIRED ANGLES (CDUXD, CDUYD,
026851,000159:                                                                                                  #  CDUZD), AND THREE INCREMENTAL ANGLES (DELDCDU, DELDCDU1, DELDCDU2) AS WELL AS THE COMPONENT MANEUVER RATES
026852,000160:                                                                                                  #  (IN S/C AXES) TO BE USED BY THE LEM DAP IN PERFORMING THE AUTOMATIC MANEUVER.
026853,000161: 
026854,000162:                                                                                                  #       THERE ARE TWO WAYS IN WHICH KALCMANU MAY BE INITIATED CORRESPONDING TO THE TWO METHODS OF SPECIFYING THE
026855,000163:                                                                                                  #  DESIRED ATTITUDE OF THE SPACECRAFT.  IF METHOD 1 IS USED, THE COMMANDED GIMBAL ANGLES MUST BE PRECOMPUTED AND
026856,000164:                                                                                                  #  STORED IN LOCATIONS CPHI, CTHETA, CPSI.  THE USER:S PROGRAM MUST THEN CLEAR STATE SWITCH NO 33 TO ALLOW THE 
026857,000165:                                                                                                  #  ATTITUDE MANEUVER ROUTINE TO PERFORM ANY FINAL P-AXIS YAW INCURRED BY AVOIDING GIMBAL LOCK.  THE MANEUVER IS
026858,000166:                                                                                                  #  THEN INITIATED BY ESTABLISHING THE FOLLOWING EXECUTIVE JOB
026859,000167: 
026860,000168:                                                                                                  #                         *
026861,000169:                                                                                                  #       CAF     PRIO    XX
026862,000170:                                                                                                  #                       --
026863,000171:                                                                                                  #       INHINT
026864,000172:                                                                                                  #       TC         FINDVAC
026865,000173:                                                                                                  #       2CADR      KALCMAN3
026866,000174:                                                                                                  #       RELINT
026867,000175: 

Page 639

026869,000177:                                                                                                  #  THE USER:S PROGRAM MAY EITHER CONTINUE OR WAIT FOR THE TERMINATION OF THE MANEUVER.  IF THE USER WISHES TO
026870,000178:                                                                                                  #  WAIT, HE MAY PUT HIS JOB TO SLEEP WITH THE FOLLOWING INSTRUCTIONS
026871,000179: 
026872,000180:                                                                                                  #       L          TC        BANKCALL
026873,000181:                                                                                                  #       L+1        CADR      ATTSTALL
026874,000182:                                                                                                  #       L+2        (BAD      RETURN)
026875,000183:                                                                                                  #       L+3        (GOOD     RETURN)
026876,000184: 
026877,000185:                                                                                                  #       UPON COMPLETION OF THE MANEUVER, THE PROGRAM WILL BE AWAKENED AT L+3 IF THE MANEUVER WAS COMPLETED
026878,000186:                                                                                                  #  SUCCESSFULLY, OR AT L+2 IF THE MANEUVER WAS ABORTED.  THIS ABORT WOULD OCCUR IF THE INITIAL OR FINAL ATTITUDE
026879,000187:                                                                                                  #  WAS IN GIMBAL LOCK.
026880,000188:                                                                                                  #                                                                   -
026881,000189:                                                                                                  #       IF THE SECOND METHOD IS USED, THE DESIRED THRUST DIRECTION, V , MUST BE COMPUTED AND STORED IN THE SIX
026882,000190:                                                                                                  #                                                                    F
026883,000191:                                                                                                  #  ERASABLE LOCATIONS BEGINNING WITH THE ADDRESS POINTVSM.  THE THRUST AXIS MUST BE LOADED INTO THE SIX ERASABLE
026884,000192:                                                                                                  #  LOCATIONS BEGINNING WITH SC AXIS.  THE CALLER MUST THEN CLEAR (OR SET) STATE SWITCH NO 33 AND SPECIFY THE
026885,000193:                                                                                                  #  DESIRED MANEUVERING RATE AS BEFORE.  THE MANEUVER IS THEN INITIATED BY THE EXECUTIVE CALL.
026886,000194: 
026887,000195: 
026888,000196: 
026889,000197:                                                                                                  #  SUBROUTINES
026890,000198: 
026891,000199:                                                                                                  #       KALCMANU USES A NUMBER OF INTERPRETIVE SUBROUTINES WHICH MAY BE OF GENERAL INTEREST.  SINCE THESE ROUTINES
026892,000200:                                                                                                  #  WERE PROGRAMMED EXCLUSIVELY FOR KALCMANU, THEY ARE NOT, AS YET, GENERALLY AVAILABLE FOR USE BY OTHER PROGRAMS.
026893,000201: 
026894,000202:                                                                                                  #       MXM3
026895,000203:                                                                                                  #       ----
026896,000204: 
026897,000205:                                                                                                  #       THIS SUBROUTINE MULTIPLIES TWO 3X3 MATRICES AND LEAVES THE RESULT IN THE FIRST 18 LOCATIONS OF THE PUSH
026898,000206:                                                                                                  #  DOWN LIST, I.E.,
026899,000207: 
026900,000208:                                                                                                  #                 (M    M    M )
026901,000209:                                                                                                  #                 ( 0    1    2)
026902,000210:                                                                                                  #        *        (            )       *         *
026903,000211:                                                                                                  #        M    =   (M    M    M )  =    M1   X    M2
026904,000212:                                                                                                  #                 ( 3    4    5)
026905,000213:                                                                                                  #                 (            )
026906,000214:                                                                                                  #                 (M    M    M )
026907,000215:                                                                                                  #                 ( 6    7    8)
026908,000216: 
026909,000217:                                                                                                  #                                                                                        *
026910,000218:                                                                                                  #       INDEX REGISTER X1 MUST BE LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M1, AND X2 MUST BE
026911,000219:                                                                                                  #                                                         *
026912,000220:                                                                                                  #  LOADED WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M2.   THE ROUTINE USES THE FIRST 20 LOCATIONS OF THE PUSH
026913,000221:                                                                                                  #  DOWN LIST.  THE FIRST ELEMENT OF THE MATRIX APPEARS IN PDO.  PUSH UP FOR M .
026914,000222:                                                                                                  #                                                                            8
026915,000223: 
026916,000224:                                                                                                  #       TRANSPOS
026917,000225:                                                                                                  #       --------

Page 640

026919,000227:                                                                                                  #       THIS ROUTINE TRANSPOSES A 3X3 MATRIX AND LEAVES THE RESULT IN THE PUSH DOWN LIST, I.E.,
026920,000228:                                                                                                  #  
026921,000229:                                                                                                  #        *         * T
026922,000230:                                                                                                  #        M    =    M1
026923,000231: 
026924,000232:                                                                                                  #  INDEX REGISTER X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M1.  PUSH UP FOR THE FIRST AND SUB-
026925,000233:                                                                                                  #                        *
026926,000234:                                                                                                  #  SEQUENT COMPONENTS OF M.   THIS SUBROUTINE ALSO USES THE FIRST 20 LOCATIONS OF THE PUSH DOWN LIST.
026927,000235: 
026928,000236:                                                                                                  #       CDU TO DCM
026929,000237:                                                                                                  #       ----------
026930,000238: 
026931,000239:                                                                                                  #       THIS SUBROUTINE CONVERTS THREE CDU ANGLES IN T(MPAC) TO A DIRECTION COSINE MATRIX (SCALED BY 2) RELATING
026932,000240:                                                                                                  #  THE CORRESPONDING S/C ORIENTATIONS TO THE STABLE MEMBER FRAME.  THE FORMULAS FOR THIS CONVERSION ARE
026933,000241: 
026934,000242:                                                                                                  #        M    =    COSY  COSZ
026935,000243:                                                                                                  #         0
026936,000244: 
026937,000245:                                                                                                  #        M    =    -COSY  SINZ  COSX  +  SINY  SINX
026938,000246:                                                                                                  #         1
026939,000247: 
026940,000248:                                                                                                  #        M    =    COSY  SINZ  SINX  +  SINY  COSX
026941,000249:                                                                                                  #         2
026942,000250: 
026943,000251:                                                                                                  #        M    =    SINZ
026944,000252:                                                                                                  #         3
026945,000253: 
026946,000254:                                                                                                  #        M    =    COSZ  COSX
026947,000255:                                                                                                  #         4
026948,000256: 
026949,000257:                                                                                                  #        M    =    -COSZ  SINX
026950,000258:                                                                                                  #         5
026951,000259: 
026952,000260:                                                                                                  #        M    =    -SINY  COSZ
026953,000261:                                                                                                  #         6
026954,000262: 
026955,000263:                                                                                                  #        M    =    SINY  SINZ  COSX  +  COSY  SINX
026956,000264:                                                                                                  #         7
026957,000265: 
026958,000266:                                                                                                  #        M    =    -SINY  SINZ  SINX  +  COSY  COSX
026959,000267:                                                                                                  #         8
026960,000268: 
026961,000269:                                                                                                  #  WHERE      X    =    OUTER GIMBAL ANGLE
026962,000270:                                                                                                  #             Y    =    INNER GIMBAL ANGLE
026963,000271:                                                                                                  #             Z    =    MIDDLE GIMBAL ANGLE
026964,000272: 
026965,000273:                                                                                                  #       THE INTERPRETATION OF THIS MATRIX IS AS FOLLOWS
026966,000274: 
026967,000275:                                                                                                  #       IF A , A , A  REPRESENT THE COMPONENTS OF A VECTOR IN S/C AXES THEN THE COMPONENTS OF THE SAME VECTOR IN
026968,000276:                                                                                                  #           X   Y   Z

Page 641

026970,000278:                                                                                                  #  STABLE MEMBER AXES (B , B , B ) ARE
026971,000279:                                                                                                  #                       X   Y   Z
026972,000280: 
026973,000281:                                                                                                  #             (B )                (A )
026974,000282:                                                                                                  #             ( X)                ( X)
026975,000283:                                                                                                  #             (  )                (  )
026976,000284:                                                                                                  #             (  )           *    (  )
026977,000285:                                                                                                  #             (B )      =    M    (A )
026978,000286:                                                                                                  #             ( Y)                ( Y)
026979,000287:                                                                                                  #             (  )                (  )
026980,000288:                                                                                                  #             (B )                (A )
026981,000289:                                                                                                  #             ( Z)                ( Z)
026982,000290: 
026983,000291:                                                                                                  #      THE SUBROUTINE WILL STORE THIS MATRIX IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY AS SPECIFIED BY THE CALLING
026984,000292:                                                                                                  #                                                                                                              *
026985,000293:                                                                                                  #  PROGRAM.  TO DO THIS THE CALLING PROGRAM MUST FIRST LOAD X2 WITH THE COMPLEMENT OF THE STARTING ADDRESS FOR M.
026986,000294: 
026987,000295:                                                                                                  #       INTERNALLY, THE ROUTINE USES THE FIRST 16 LOCATIONS OF THE PUSH DOWN LIST, ALSO STEP REGISTER S1 AND INDEX
026988,000296:                                                                                                  #  REGISTER X2.
026989,000297: 
026990,000298: 
026991,000299: 
026992,000300:                                                                                                  #       DCM TO CDU
026993,000301:                                                                                                  #       ----------
026994,000302:                                                                                                  #                                                                            *
026995,000303:                                                                                                  #       THIS ROUTINE EXTRACTS THE CDU ANGLES FROM A DIRECTION COSINE MATRIX (M SCALED BY 2) RELATING S/C AXIS TO
026996,000304:                                                                                                  #                                                                                  *
026997,000305:                                                                                                  #  STABLE MEMBER AXES.  X1 MUST CONTAIN THE COMPLEMENT OF THE STARTING ADDRESS FOR M.  THE SUBROUTINE LEAVES THE
026998,000306:                                                                                                  #  CORRESPONDING GIMBAL ANGLES IN V(MPAC) AS DOUBLE PRECISION 1:S COMPLEMENT ANGLES SCALED BY 2PI.  THE FORMULAS
026999,000307:                                                                                                  #  FOR THIS CONVERSION ARE
027000,000308: 
027001,000309:                                                                                                  #        Z    =    ARCSIN (M  )
027002,000310:                                                                                                  #                            3
027003,000311: 
027004,000312:                                                                                                  #        Y    =    ARCSIN (-M /COSZ)
027005,000313:                                                                                                  #                            6
027006,000314: 
027007,000315:                                                                                                  #  IF M  IS NEGATIVE, Y IS REPLACED BY PI SGN Y - Y
027008,000316:                                                                                                  #      0
027009,000317: 
027010,000318:                                                                                                  #        X    =    ARCSIN (-M /COSZ)
027011,000319:                                                                                                  #                            5
027012,000320: 
027013,000321:                                                                                                  #  IF M  IS NEGATIVE X IS REPLACED BY PI SGN X - X
027014,000322:                                                                                                  #      4
027015,000323: 
027016,000324:                                                                                                  #       THIS ROUTINE DOES NOT SET THE PUSH DOWN POINTER, BUT USES THE NEXT 8 LOCATIONS OF THE PUSH DOWN LIST AND
027017,000325:                                                                                                  #  RETURNS THE POINTER TO ITS ORIGINAL SETTING.  THIS PROCEDURE ALLOWS THE CALLER TO STORE THE MATRIX AT THE TOP OF
027018,000326:                                                                                                  #  THE PUSH DOWN LIST.
027019,000327: 

Page 642

027021,000329:                                                                                                  #       DELCOMP
027022,000330:                                                                                                  #       -------
027023,000331: 
027024,000332:                                                                                                  #                                                           *
027025,000333:                                                                                                  #       THIS ROUTINE COMPUTES THE DIRECTION COSINE MATRIX (DEL) RELATING ON
027026,000334:                                                                                                  #                                                                           -
027027,000335:                                                                                                  #  IS ROTATED WITH RESPECT TO THE FIRST BY AN ANGLE, A, ABOUT A UNIT VECTOR, U.  THE FORMULA FOR THIS MATRIX IS
027028,000336: 
027029,000337:                                                                                                  #        *         *           --T           *
027030,000338:                                                                                                  #        DEL  =    I  COSA  +  UU (1-COSA) + V SINA
027031,000339:                                                                                                  #                                             X
027032,000340: 
027033,000341:                                                                                                  #  WHERE      *         (1   0    0)
027034,000342:                                                                                                  #             I    =    (0   1    0)
027035,000343:                                                                                                  #                       (0   0    1)
027036,000344: 
027037,000345: 
027038,000346:                                                                                                  #                          2                              
027039,000347:                                                                                                  #                       (U        U U       U U )
027040,000348:                                                                                                  #                       ( X        X Y       X Z)
027041,000349:                                                                                                  #                       (                       )
027042,000350:                                                                                                  #             --T       (           2           )
027043,000351:                                                                                                  #             UU   =    (U U      U         U U )
027044,000352:                                                                                                  #                       ( Y X      Y         Y Z)
027045,000353:                                                                                                  #                       (                       )
027046,000354:                                                                                                  #                       (                     2 )
027047,000355:                                                                                                  #                       (U U      U U       U  )
027048,000356:                                                                                                  #                       ( Z X      Z Y       Z  )
027049,000357: 
027050,000358: 
027051,000359:                                                                                                  #                       (0        -U        U  )
027052,000360:                                                                                                  #                       (           Z        Y )
027053,000361:                                                                                                  #             *         (                      )
027054,000362:                                                                                                  #             V    =    (U        0         -U )
027055,000363:                                                                                                  #              X        ( Z                   X)
027056,000364:                                                                                                  #                       (                      )
027057,000365:                                                                                                  #                       (-U       U         0  )
027058,000366:                                                                                                  #                       (  Y       X           )
027059,000367: 
027060,000368:                                                                                                  #             -
027061,000369:                                                                                                  #             U    =    UNIT ROTATION VECTOR RESOLVED INTO S/C AXES
027062,000370:                                                                                                  #             A    =    ROTATION ANGLE
027063,000371: 
027064,000372:                                                                                                  #                              *
027065,000373:                                                                                                  #       THE INTERPRETATION OF DEL IS AS FOLLOWS
027066,000374: 
027067,000375:                                                                                                  #       IF A , A , A  REPRESENT THE COMPONENT OF A VECTOR IN THE ROTATED FRAME, THEN THE COMPONENTS OF THE SAME
027068,000376:                                                                                                  #           X   Y   Z
027069,000377:                                                                                                  #  VECTOR IN THE ORIGINAL S/C AXES (B , B , B ) ARE
027070,000378:                                                                                                  #                                    X   Y   Z

Page 643

027072,000380:                                                                                                  #             (B )                     (A )
027073,000381:                                                                                                  #             ( X)                     ( X)
027074,000382:                                                                                                  #             (  )              *      (  )
027075,000383:                                                                                                  #             (B )      =    DEL       (A )
027076,000384:                                                                                                  #             ( Y)                     ( Y)
027077,000385:                                                                                                  #             (  )                     (  )
027078,000386:                                                                                                  #             (B )                     (A )
027079,000387:                                                                                                  #             ( Z)                     ( Z)
027080,000388: 
027081,000389:                                                                                                  #       THE ROUTINE WILL STORE THIS MATRIX (SCALED UNITY) IN SEQUENTIAL LOCATIONS OF ERASABLE MEMORY BEGINNING WITH
027082,000390:                                                                                                  #                                                                                              -
027083,000391:                                                                                                  #  THE LOCATION CALLED DEL.  IN ORDER TO USE THE ROUTINE, THE CALLING PROGRAM MUST FIRST STORE U (A HALF UNIT
027084,000392:                                                                                                  #  DOUBLE PRECISION VECTOR) IN THE SET OF ERASABLE LOCATIONS BEGINNING WITH THE ADDRESS CALLED COF.  THE ANGLE, A,
027085,000393:                                                                                                  #  MUST THEN BE LOADED INTO D(MPAC).
027086,000394:                                                                                                  #  
027087,000395:                                                                                                  #       INTERNALLY, THE PROGRAM ALSO USES THE FIRST 10 LOCATIONS OF THE PUSH DOWN LIST.
027088,000396: 
027089,000397: 
027090,000398: 
027091,000399:                                                                                                  #       READCDUK
027092,000400:                                                                                                  #       --------
027093,000401: 
027094,000402:                                                                                                  #       THIS BASIC LANGUAGE SUBROUTINE LOADS T(MPAC) WITH THE THREE CDU ANGLES.
027095,000403: 
027096,000404: 
027097,000405: 
027098,000406:                                                                                                  #       SIGNMPAC
027099,000407:                                                                                                  #       --------
027100,000408: 
027101,000409:                                                                                                  #       THIS IS A BASIC LANGUAGE SUBROUTINE WHICH LIMITS THE MAGNITUDE OF D(MPAC) TO + OR - DPOSMAX ON OVERFLOW.
027102,000410: 
027103,000411: 
027104,000412: 
027105,000413:                                                                                                  #       PROGRAM STORAGE ALLOCATION
027106,000414: 
027107,000415:                                                                                                  #             1)   FIXED MEMORY                       1059 WORDS
027108,000416:                                                                                                  #             2)   ERASABLE MEMORY                      98
027109,000417:                                                                                                  #             3)   STATE SWITCHES                        3
027110,000418:                                                                                                  #             4)   FLAGS                                 1
027111,000419: 
027112,000420: 
027113,000421: 
027114,000422:                                                                                                  #       JOB PRIORITIES
027115,000423: 
027116,000424:                                                                                                  #             1)   KALCMANU                            TBD
027117,000425:                                                                                                  #             2)   ONE SECOND UPDATE                   TBD
027118,000426: 
027119,000427: 
027120,000428: 
027121,000429: 
027122,000430:                                                                                                  #  SUMMARY OF STATE SWITCHES AND FLAGWORDS USED BY KALCMANU.

Page 644

027124,000432:                                                                                                  #  STATE                FLAGWRD 2      SETTING             MEANING
027125,000433:                                                                                                  #  SWITCH NO.            BIT NO.
027126,000434: 
027127,000435:                                                                                                  #    *
027128,000436:                                                                                                  #  31                      14            0       MANEUVER WENT THROUGH GIMBAL LOCK
027129,000437:                                                                                                  #                                        1       MANEUVER DID NOT GO THROUGH GIMBAL LOCK
027130,000438: 
027131,000439:                                                                                                  #    *
027132,000440:                                                                                                  #  32                      13            0       CONTINUE UPDATE PROCESS
027133,000441:                                                                                                  #                                        1       START UPDATE PROCESS
027134,000442: 
027135,000443:                                                                                                  #  33                      12            0       PERFORM FINAL P-AXIS YAW IF REQUIRED
027136,000444:                                                                                                  #                                        1       IGNORE ANY FINAL P-AXIS YAW
027137,000445: 
027138,000446:                                                                                                  #  34                      11            0       SIGNAL END OF KALCMANU
027139,000447:                                                                                                  #                                        1       KALCMANU IN PROCESS       USER MUST SET SWITCH BEFORE INITIATING
027140,000448: 
027141,000449: 
027142,000450:                                                                                                  #          *  INTERNAL TO KALCMANU
027143,000451: 
027144,000452: 
027145,000453: 
027146,000454:                                                                                                  #       SUGGESTIONS FOR PROGRAM INTEGRATION
027147,000455: 
027148,000456:                                                                                                  #       THE FOLLOWING VARIABLES SHOULD BE ASSIGNED TO UNSWITCH ERASABLE
027149,000457: 
027150,000458:                                                                                                  #                       CPHI
027151,000459:                                                                                                  #                       CTHETA
027152,000460:                                                                                                  #                       CPSI
027153,000461:                                                                                                  #                       POINTVSM  +5
027154,000462:                                                                                                  #                       SCAXIS    +5
027155,000463:                                                                                                  #                       DELDCDU
027156,000464:                                                                                                  #                       DELDCDU1
027157,000465:                                                                                                  #                       DELDCDU2
027158,000466:                                                                                                  #                       RATEINDX
027159,000467: 
027160,000468:                                                                                                  #       THE FOLLOWING SUBROUTINES MAY BE PUT IN A DIFFERENT BANK
027161,000469: 
027162,000470:                                                                                                  #                       MXM3
027163,000471:                                                                                                  #                       TRANSPOS
027164,000472:                                                                                                  #                       SIGNMPAC
027165,000473:                                                                                                  #                       READCDUK
027166,000474:                                                                                                  #                       CDUTODCM
027167,000475: 

Page 645

027169,000477: 34,2000                                           BANK     34                                    
027170,000478: 34,2000  E3,1535                                  EBANK=   MIS                                   
027171,000479: 34,2000           12001                           NOOP                                           
027172,000480: 34,2001           06112        VECPOINT           TC       INTPRET                               
027173,000481: 34,2002           77634                           RTB                                            
027174,000482: 34,2003           73513                                    READCDUK                              #  READ THE PRESENT CDU ANGLES
027175,000483: 34,2004           01533                           STORE    BCDU                                  
027176,000484: 34,2005           45164                           AXC,2    CALL                                  #  COMPUTE THE TRANSFORMATION FROM INITIAL
027177,000485: 34,2006           01535                                    MIS                                   #  S/C AXES TO STABLE MEMBER AXES (MIS)
027178,000486: 34,2007           70445                                    CDUTODCM                              
027179,000487: 34,2010           61375                           VLOAD    VXM                                   #                                 -
027180,000488: 34,2011           01656                                    POINTVSM                              #  RESOLVE THE POINTING DIRECTION VS INTO
027181,000489: 34,2012           01536                                    MIS                                   #  INITIAL S/C AXES
027182,000490: 34,2013           41456                           UNIT     PUSH                                  
027183,000491: 34,2014           53435                           VXV      UNIT                                  #  TAKE THE CROSS PRODUCT VF X VI
027184,000492: 34,2015           01664                                    SCAXIS                                #  WHERE VI = SCAXIS
027185,000493: 34,2016           57400                           BOV      VCOMP                                 
027186,000494: 34,2017           70042                                    PICKAXIS                              
027187,000495: 34,2020           25624                           STOVL    COF                                   
027188,000496: 34,2021           01664                                    SCAXIS                                
027189,000497: 34,2022           72441                           DOT      SL1                                   
027190,000498: 34,2023           77726                           ARCCOS                                         
027191,000499: 34,2024           77624        COMPMATX           CALL                                           #  NOW COMPUTE THE TRANSFORMATION FROM
027192,000500: 34,2025           70564                                    DELCOMP                               #  FINAL S/C AXES TO INITIAL S/C AXES = MFI
027193,000501: 34,2026           75160                           AXC,1    AXC,2                                 #  COMPUTE THE TRANSFORMATION FROM FINAL
027194,000502: 34,2027           01535                                    MIS                                   #  S/C AXES TO STABLE MEMBER AXES
027195,000503: 34,2030           01557                                    KEL                                   
027196,000504: 34,2031           77624                           CALL                                           
027197,000505: 34,2032           73417                                    MXM3                                  #  MFS IN PD LIST
027198,000506: 34,2033           45160                           AXC,1    CALL                                  
027199,000507: 34,2034           00000                                    0                                     #  EXTRACT THE CDU ANGLES FROM THIS MATRIX
027200,000508: 34,2035           70711                                    DCMTOCDU                              
027201,000509: 34,2036           77634                           RTB                                            
027202,000510: 34,2037           33526                                    V1STO2S                               #  AND USE THEM AS THE COMMANDED CDU ANGLES
027203,000511: 34,2040           35632                           STCALL   CPHI                                  
027204,000512: 34,2041           70070                                    KALCMAN3   +1                         #  PROCEED AS IF WE HAD BEEN GIVEN COMMAND
027205,000513:                                                                                                  #  CDU ANGLES
027206,000514: 34,2042           50375        PICKAXIS           VLOAD    DOT                                   #  IF VF X VI = 0. PUSH UP FOR VF
027207,000515: 34,2043           01664                                    SCAXIS                                #  FIND VF . VI
027208,000516: 34,2044           72240                           BMN      TLOAD                                 #  IF ANTIPARALLEL
027209,000517: 34,2045           70051                                    ROT180                                
027210,000518: 34,2046           01533                                    BCDU                                  
027211,000519: 34,2047           35632                           STCALL   CPHI                                  #  IF VF + VI
027212,000520: 34,2050           70070                                    KALCMAN3   +1                         
027213,000521: 
027214,000522: 34,2051           47375        ROT180             VLOAD    VXV                                   #  180 DEG ROTATION IS REQUIRED
027215,000523: 34,2052           01544                                    MIS        +6                         #  Y STABLE MEMBER AXIS IN INITIAL S/C AXES
027216,000524: 34,2053           30414                                    HALFA                                 
027217,000525: 34,2054           47256                           UNIT     VXV                                   #  FIND Y(SM) X X(I)
027218,000526: 34,2055           01664                                    SCAXIS                                #  FIND UNIT (VI X UNIT(Y(SM) X X(I)))

Page 646

027220,000528: 34,2056           40056                           UNIT     BOV                                   #  PICK A VECTOR PERPENDICULAR TO VI IN THE
027221,000529: 34,2057           70064                                    PICKX                                 #  PLANE CONTAINING Y(SM) AND X(I) SO THAT
027222,000530: 34,2060           15624        XROT               STODL    COF                                   #  MANEUVER DOES NOT GO THRU GIMBAL LOCK
027223,000531: 34,2061           30414                                    HALFA                                 
027224,000532: 34,2062           77650                           GOTO                                           
027225,000533: 34,2063           70024                                    COMPMATX                              
027226,000534: 34,2064           52175        PICKX              VLOAD    GOTO                                  #  PICK THE X AXIS IN THIS CASE
027227,000535: 34,2065           30414                                    HALFA                                 
027228,000536: 34,2066           70060                                    XROT                                  
027229,000537: 
027230,000538:                                                                                                  #  FIRST ENTRY POINT- KALCMAN3
027231,000539: 
027232,000540:                                                                                                  #  THE THREE DESIRED CDU ANGLES MUST BE STORED AS SINGLE PRECISION TWOS COMPLEMENT ANGLES IN THE THREE SUCCESSIVE
027233,000541:                                                                                                  #  LOCATIONS, CPHI, CTHETA, CPSI.
027234,000542: 
027235,000543: 34,2067           06112        KALCMAN3           TC       INTPRET                               #  PICK UP THE CURRENT CDU ANGLES AND
027236,000544: 34,2070           77634                           RTB                                            #    COMPUTE THE MATRIX FROM INITIAL S/C
027237,000545: 34,2071           73513                                    READCDUK                              #    AXES TO FINAL S/C AXES
027238,000546: 34,2072           01533                           STORE    BCDU                                  #  STORE INITIAL S/C ANGLES
027239,000547: 34,2073           51535                           SLOAD    ABS                                   
027240,000548: 34,2074           01535                                    BCDU       +2                         #  CHECK MAGNITUDE OF MIDDLE GIMBAL ANGLE
027241,000549: 34,2075           51025                           DSU      BPL                                   
027242,000550: 34,2076           30444                                    LOCKANGL                              #  IF GREATER THAN 60 DEG, ABORT MANEUVER
027243,000551: 34,2077           70771                                    TOOBAD                                
027244,000552: 34,2100           72364                           AXC,2    TLOAD                                 
027245,000553: 34,2101           01535                                    MIS                                   
027246,000554: 34,2102           01533                                    BCDU                                  
027247,000555: 34,2103           77624                           CALL                                           #  COMPUTE THE TRANSFORMATION FROM INITIAL
027248,000556: 34,2104           70445                                    CDUTODCM                              #  S/C AXES TO STABLE MEMBER AXES
027249,000557: 34,2105           51535                           SLOAD    ABS                                   #  CHECK THE MAGNITUDE OF THE DESIRED
027250,000558: 34,2106           01634                                    CPSI                                  #  MIDDLE GIMBAL ANGLE
027251,000559: 34,2107           51025                           DSU      BPL                                   
027252,000560: 34,2110           30444                                    LOCKANGL                              #  IF GREATER THAN 60 DEG, ABORT MANEUVER
027253,000561: 34,2111           70771                                    TOOBAD                                
027254,000562: 34,2112           72364                           AXC,2    TLOAD                                 
027255,000563: 34,2113           01557                                    MFS                                   #  PREPARE TO CALCULATE ARRAY MFS
027256,000564: 34,2114           01632                                    CPHI                                  
027257,000565: 34,2115           77624                           CALL                                           
027258,000566: 34,2116           70445                                    CDUTODCM                              
027259,000567: 34,2117           45160        SECAD              AXC,1    CALL                                  #  MIS AND MFS ARRAYS CALCULATED        $2
027260,000568: 34,2120           01535                                    MIS                                   
027261,000569: 34,2121           73447                                    TRANSPOS                              
027262,000570: 34,2122           77775                           VLOAD                                          
027263,000571: 34,2123           77626                           STADR                                          
027264,000572: 34,2124           52161                           STOVL    TMIS       +12D                       
027265,000573: 34,2125           77626                           STADR                                          
027266,000574: 34,2126           52167                           STOVL    TMIS       +6                         
027267,000575: 34,2127           77626                           STADR                                          
027268,000576: 34,2130           76175                           STORE    TMIS                                  #  TMIS = TRANSPOSE(MIS) SCALED BY 2
027269,000577: 34,2131           75160                           AXC,1    AXC,2                                 

Page 647

027271,000579: 34,2132           01601                                    TMIS                                  
027272,000580: 34,2133           01557                                    MFS                                   
027273,000581: 34,2134           77624                           CALL                                           
027274,000582: 34,2135           73417                                    MXM3                                  
027275,000583: 34,2136           45575                           VLOAD    STADR                                 
027276,000584: 34,2137           52203                           STOVL    MFI        +12D                       
027277,000585: 34,2140           77626                           STADR                                          
027278,000586: 34,2141           52211                           STOVL    MFI        +6                         
027279,000587: 34,2142           77626                           STADR                                          
027280,000588: 34,2143           76217                           STORE    MFI                                   #  MFI = TMIS MFS (SCALED BY 4)
027281,000589: 34,2144           45001                           SETPD    CALL                                  #  TRANSPOSE MFI IN PD LIST
027282,000590: 34,2145           00023                                    18D                                   
027283,000591: 34,2146           73456                                    TRNSPSPD                              
027284,000592: 34,2147           45575                           VLOAD    STADR                                 
027285,000593: 34,2150           52161                           STOVL    TMFI       +12D                       
027286,000594: 34,2151           77626                           STADR                                          
027287,000595: 34,2152           52167                           STOVL    TMFI       +6                         
027288,000596: 34,2153           77626                           STADR                                          
027289,000597: 34,2154           76175                           STORE    TMFI                                  #  TMFI = TRANSPOSE (MFI)  SCALED BY 4
027290,000598: 
027291,000599:                                                                                                  #  CALCULATE COFSKEW AND MFISYM
027292,000600: 
027293,000601: 34,2155           45345                           DLOAD    DSU                                   
027294,000602: 34,2156           01604                                    TMFI       +2                         
027295,000603: 34,2157           01562                                    MFI        +2                         
027296,000604: 34,2160           45325                           PDDL     DSU                                   #  CALCULATE COF SCALED BY 2/SIN(AM)
027297,000605: 34,2161           01564                                    MFI        +4                         
027298,000606: 34,2162           01606                                    TMFI       +4                         
027299,000607: 34,2163           45325                           PDDL     DSU                                   
027300,000608: 34,2164           01614                                    TMFI       +10D                       
027301,000609: 34,2165           01572                                    MFI        +10D                       
027302,000610: 34,2166           77666                           VDEF                                           
027303,000611: 34,2167           01635                           STORE    COFSKEW                               #  EQUALS MFISKEW
027304,000612: 
027305,000613:                                                                                                  #  CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE
027306,000614: 
027307,000615: 34,2170           43345                           DLOAD    DAD                                   
027308,000616: 34,2171           01560                                    MFI                                   
027309,000617: 34,2172           01600                                    MFI        +16D                       
027310,000618: 34,2173           43225                           DSU      DAD                                   
027311,000619: 34,2174           30426                                    QUARTA                                
027312,000620: 34,2175           01570                                    MFI        +8D                        
027313,000621: 34,2176           01645                           STORE    CAM                                   #  CAM = (MFI0+MFI4+MFI8-1)/2 HALF SCALE
027314,000622: 34,2177           77726                           ARCCOS                                         
027315,000623: 34,2200           01643                           STORE    AM                                    #  AM=ARCCOS(CAM)  (AM SCALED BY 2)
027316,000624: 34,2201           51025                           DSU      BPL                                   
027317,000625: 34,2202           30410                                    MINANG                                
027318,000626: 34,2203           70214                                    CHECKMAX                              
027319,000627: 34,2204           77751                           TLOAD                                          #  MANEUVER LESS THAN .25 DEGREES
027320,000628: 34,2205           01632                                    CPHI                                  #  GO DIRECTLY INTO ATTITUDE HOLD

Page 648

027322,000630: 34,2206           00767                           STORE    CDUXD                                 #  ABOUT COMMANDED ANGLES
027323,000631: 34,2207           77751                           TLOAD                                          
027324,000632: 34,2210           30416                                    NIL                                   
027325,000633: 34,2211           00775                           STORE    OMEGAPD                               #  ZERO DESIRED RATES
027326,000634: 34,2212           34772                           STCALL   DELDCDU                               #  PREPARE TO END MANEUVER ON GOOD RETURN
027327,000635: 34,2213           70761                                    ENDMANU                               
027328,000636: 34,2214           45345        CHECKMAX           DLOAD    DSU                                   
027329,000637: 34,2215           01643                                    AM                                    
027330,000638: 34,2216           30412                                    MAXANG                                
027331,000639: 34,2217           77244                           BPL      VLOAD                                 
027332,000640: 34,2220           70226                                    ALTCALC                               #  UNIT
027333,000641: 34,2221           01635                                    COFSKEW                               #  COFSKEW
027334,000642: 34,2222           77656                           UNIT                                           
027335,000643: 34,2223           01624                           STORE    COF                                   #  COF IS THE MANEUVER AXIS
027336,000644: 34,2224           77650                           GOTO                                           #  SEE IF MANEUVER GOES THRU GIMBAL LOCK
027337,000645: 34,2225           71006                                    LOCSKIRT                              
027338,000646: 34,2226           53375        ALTCALC            VLOAD    VAD                                   #  IF AM GREATER THAN 170 DEGREES
027339,000647: 34,2227           01560                                    MFI                                   
027340,000648: 34,2230           01602                                    TMFI                                  
027341,000649: 34,2231           77762                           VSR1                                           
027342,000650: 34,2232           25602                           STOVL    MFISYM                                
027343,000651: 34,2233           01566                                    MFI        +6                         
027344,000652: 34,2234           74455                           VAD      VSR1                                  
027345,000653: 34,2235           01610                                    TMFI       +6                         
027346,000654: 34,2236           25610                           STOVL    MFISYM     +6                         
027347,000655: 34,2237           01574                                    MFI        +12D                       
027348,000656: 34,2240           74455                           VAD      VSR1                                  
027349,000657: 34,2241           01616                                    TMFI       +12D                       
027350,000658: 34,2242           01616                           STORE    MFISYM     +12D                       #  MFISYM=(MFI+TMFI)/2   SCALED BY 4
027351,000659: 
027352,000660:                                                                                                  #  CALCULATE COF
027353,000661: 
027354,000662: 34,2243           70545                           DLOAD    SR1                                   
027355,000663: 34,2244           01645                                    CAM                                   
027356,000664: 34,2245           45325                           PDDL     DSU                                   #  PDO CAM                               $4
027357,000665: 34,2246           30414                                    HALFA                                 
027358,000666: 34,2247           01645                                    CAM                                   
027359,000667: 34,2250           65204                           BOVB     PDDL                                  #  PD2 1 - CAM                           $2
027360,000668: 34,2251           73501                                    SIGNMPAC                              
027361,000669: 34,2252           01622                                    MFISYM     +16D                       
027362,000670: 34,2253           56225                           DSU      DDV                                   
027363,000671: 34,2254           00001                                    0                                     
027364,000672: 34,2255           00003                                    2                                     
027365,000673: 34,2256           65366                           SQRT     PDDL                                  #  COFZ = SQRT(MFISYM8-CAM)/1-CAM)
027366,000674: 34,2257           01612                                    MFISYM     +8D                        #                                $ ROOT 2
027367,000675: 34,2260           56225                           DSU      DDV                                   
027368,000676: 34,2261           00001                                    0                                     
027369,000677: 34,2262           00003                                    2                                     
027370,000678: 34,2263           65366                           SQRT     PDDL                                  #  COFY = SQRT(MFISYM4-CAM)/(1-CAM)  $ROOT2

Page 649

027372,000680: 34,2264           01602                                    MFISYM                                
027373,000681: 34,2265           56225                           DSU      DDV                                   
027374,000682: 34,2266           00001                                    0                                     
027375,000683: 34,2267           00003                                    2                                     
027376,000684: 34,2270           55566                           SQRT     VDEF                                  #  COFX = SQRT(MFISYM-CAM)/(1-CAM)  $ROOT 2
027377,000685: 34,2271           77656                           UNIT                                           
027378,000686: 34,2272           01624                           STORE    COF                                   
027379,000687: 
027380,000688:                                                                                                  #  DETERMINE LARGEST COF AND ADJUST ACCORDINGLY
027381,000689: 
027382,000690: 34,2273           45345        COFMAXGO           DLOAD    DSU                                   
027383,000691: 34,2274           01624                                    COF                                   
027384,000692: 34,2275           01626                                    COF        +2                         
027385,000693: 34,2276           71240                           BMN      DLOAD                                 #  COFY G COFX
027386,000694: 34,2277           70306                                    COMP12                                
027387,000695: 34,2300           01624                                    COF                                   
027388,000696: 34,2301           50025                           DSU      BMN                                   
027389,000697: 34,2302           01630                                    COF        +4                         
027390,000698: 34,2303           70363                                    METHOD3                               #  COFZ G COFX OR COFY
027391,000699: 34,2304           77650                           GOTO                                           
027392,000700: 34,2305           70337                                    METHOD1                               #  COFX G COFY OR COFZ
027393,000701: 34,2306           45345        COMP12             DLOAD    DSU                                   
027394,000702: 34,2307           01626                                    COF        +2                         
027395,000703: 34,2310           01630                                    COF        +4                         
027396,000704: 34,2311           77640                           BMN                                            
027397,000705: 34,2312           70363                                    METHOD3                               #  COFZ G COFY OR COFX
027398,000706: 
027399,000707: 34,2313           51145        METHOD2            DLOAD    BPL                                   #  COFY MAX
027400,000708: 34,2314           01637                                    COFSKEW    +2                         #  UY
027401,000709: 34,2315           70321                                    U2POS                                 
027402,000710: 34,2316           57575                           VLOAD    VCOMP                                 
027403,000711: 34,2317           01624                                    COF                                   
027404,000712: 34,2320           01624                           STORE    COF                                   
027405,000713: 34,2321           51145        U2POS              DLOAD    BPL                                   
027406,000714: 34,2322           01604                                    MFISYM     +2                         #  UX UY
027407,000715: 34,2323           70327                                    OKU21                                 
027408,000716: 34,2324           57545                           DLOAD    DCOMP                                 #  SIGN OF UX OPPOSITE TO UY
027409,000717: 34,2325           01624                                    COF                                   
027410,000718: 34,2326           01624                           STORE    COF                                   
027411,000719: 34,2327           51145        OKU21              DLOAD    BPL                                   
027412,000720: 34,2330           01614                                    MFISYM     +10D                       #  UY UZ
027413,000721: 34,2331           71006                                    LOCSKIRT                              
027414,000722: 34,2332           57545                           DLOAD    DCOMP                                 #  SIGN OF UZ OPPOSITE TO UY
027415,000723: 34,2333           01630                                    COF        +4                         
027416,000724: 34,2334           01630                           STORE    COF        +4                         
027417,000725: 34,2335           77650                           GOTO                                           
027418,000726: 34,2336           71006                                    LOCSKIRT                              
027419,000727: 34,2337           51145        METHOD1            DLOAD    BPL                                   #  COFX MAX
027420,000728: 34,2340           01635                                    COFSKEW                               #  UX
027421,000729: 34,2341           70345                                    U1POS                                 

Page 650

027423,000731: 34,2342           57575                           VLOAD    VCOMP                                 
027424,000732: 34,2343           01624                                    COF                                   
027425,000733: 34,2344           01624                           STORE    COF                                   
027426,000734: 34,2345           51145        U1POS              DLOAD    BPL                                   
027427,000735: 34,2346           01604                                    MFISYM     +2                         #  UX UY
027428,000736: 34,2347           70353                                    OKU12                                 
027429,000737: 34,2350           57545                           DLOAD    DCOMP                                 
027430,000738: 34,2351           01626                                    COF        +2                         #  SIGN OF UY OPPOSITE TO UX
027431,000739: 34,2352           01626                           STORE    COF        +2                         
027432,000740: 34,2353           51145        OKU12              DLOAD    BPL                                   
027433,000741: 34,2354           01606                                    MFISYM     +4                         #  UX UZ
027434,000742: 34,2355           71006                                    LOCSKIRT                              
027435,000743: 34,2356           57545                           DLOAD    DCOMP                                 #  SIGN OF UZ OPPOSITE TO UY
027436,000744: 34,2357           01630                                    COF        +4                         
027437,000745: 34,2360           01630                           STORE    COF        +4                         
027438,000746: 34,2361           77650                           GOTO                                           
027439,000747: 34,2362           71006                                    LOCSKIRT                              
027440,000748: 34,2363           51145        METHOD3            DLOAD    BPL                                   #  COFZ MAX
027441,000749: 34,2364           01641                                    COFSKEW    +4                         #  UZ
027442,000750: 34,2365           70371                                    U3POS                                 
027443,000751: 34,2366           57575                           VLOAD    VCOMP                                 
027444,000752: 34,2367           01624                                    COF                                   
027445,000753: 34,2370           01624                           STORE    COF                                   
027446,000754: 34,2371           51145        U3POS              DLOAD    BPL                                   
027447,000755: 34,2372           01606                                    MFISYM     +4                         #  UX UZ
027448,000756: 34,2373           70377                                    OKU31                                 
027449,000757: 34,2374           57545                           DLOAD    DCOMP                                 
027450,000758: 34,2375           01624                                    COF                                   #  SIGN OF UX OPPOSITE TO UZ
027451,000759: 34,2376           01624                           STORE    COF                                   
027452,000760: 34,2377           51145        OKU31              DLOAD    BPL                                   
027453,000761: 34,2400           01614                                    MFISYM     +10D                       #  UY UZ
027454,000762: 34,2401           71006                                    LOCSKIRT                              
027455,000763: 34,2402           57545                           DLOAD    DCOMP                                 
027456,000764: 34,2403           01626                                    COF        +2                         #  SIGN OF UY OPPOSITE TO UZ
027457,000765: 34,2404           01626                           STORE    COF        +2                         
027458,000766: 34,2405           77650                           GOTO                                           
027459,000767: 34,2406           71006                                    LOCSKIRT                              
027460,000768: 

Page 651

027462,000770:                                                                                                  #  MATRIX OPERATIONS
027463,000771: 
027464,000772: 35,3417                                           BANK     35                                    
027465,000773: 35,3417  E3,1535                                  EBANK=   MIS                                   
027466,000774: 
027467,000775: 35,3417           77601        MXM3               SETPD                                          #  MXM3 MULTIPLIES 2 3X3 MATRICES
027468,000776: 35,3420           00001                                    0                                     #  AND LEAVES RESULT IN PD LIST
027469,000777: 35,3421           64743                           DLOAD*   PDDL*                                 #  ADDRESS OF 1ST MATRIX IN XR1
027470,000778: 35,3422           77762                                    12D,2                                 #  ADDRESS OF 2ND MATRIX IN XR2
027471,000779: 35,3423           77770                                    6,2                                   
027472,000780: 35,3424           55523                           PDDL*    VDEF                                  #  DEFINE VECTOR M2(COL 1)
027473,000781: 35,3425           77776                                    0,2                                   
027474,000782: 35,3426           64717                           MXV*     PDDL*                                 #  M1XM2(COL 1) IN PD
027475,000783: 35,3427           00001                                    0,1                                   
027476,000784: 35,3430           77760                                    14D,2                                 
027477,000785: 35,3431           64723                           PDDL*    PDDL*                                 
027478,000786: 35,3432           77766                                    8D,2                                  
027479,000787: 35,3433           77774                                    2,2                                   
027480,000788: 35,3434           63666                           VDEF     MXV*                                  #  DEFINE VECTOR M2(COL 2)
027481,000789: 35,3435           00001                                    0,1                                   
027482,000790: 35,3436           64723                           PDDL*    PDDL*                                 #  M1XM2(COL 2) IN PD
027483,000791: 35,3437           77756                                    16D,2                                 
027484,000792: 35,3440           77764                                    10D,2                                 
027485,000793: 35,3441           55523                           PDDL*    VDEF                                  #  DEFINE VECTOR M2(COL 3)
027486,000794: 35,3442           77772                                    4,2                                   
027487,000795: 35,3443           41517                           MXV*     PUSH                                  #  M1XM2(COL 3) IN PD
027488,000796: 35,3444           00001                                    0,1                                   
027489,000797: 35,3445           77650                           GOTO                                           
027490,000798: 35,3446           73456                                    TRNSPSPD                              #  REVERSE ROWS AND COLS IN PD AND 
027491,000799:                                                                                                  #                                  RETURN WITH M1XM2 IN PD LIST
027492,000800: 
027493,000801: 35,3447           76601        TRANSPOS           SETPD    VLOAD*                                #  TRANSPOS TRANSPOSES A 3X3 MATRIX
027494,000802: 35,3450           00001                                    0                                     #   AND LEAVES RESULT IN PD LIST
027495,000803: 35,3451           00001                                    0,1                                   #  MATRIX ADDRESS IN XR1
027496,000804: 35,3452           62713                           PDVL*    PDVL*                                 
027497,000805: 35,3453           00007                                    6,1                                   
027498,000806: 35,3454           00015                                    12D,1                                 
027499,000807: 35,3455           77606                           PUSH                                           #  MATRIX IN PD
027500,000808: 35,3456           65345        TRNSPSPD           DLOAD    PDDL                                  #  ENTER WITH MATRIX IN PD LIST
027501,000809: 35,3457           00003                                    2                                     
027502,000810: 35,3460           00007                                    6                                     
027503,000811: 35,3461           14003                           STODL    2                                     
027504,000812: 35,3462           77626                           STADR                                          
027505,000813: 35,3463           63770                           STODL    6                                     
027506,000814: 35,3464           00005                                    4                                     
027507,000815: 35,3465           77725                           PDDL                                           
027508,000816: 35,3466           00015                                    12D                                   
027509,000817: 35,3467           14005                           STODL    4                                     
027510,000818: 35,3470           77626                           STADR                                          
027511,000819: 35,3471           63762                           STODL    12D                                   

Page 652

027513,000821: 35,3472           00013                                    10D                                   
027514,000822: 35,3473           77725                           PDDL                                           
027515,000823: 35,3474           00017                                    14D                                   
027516,000824: 35,3475           14013                           STODL    10D                                   
027517,000825: 35,3476           77626                           STADR                                          
027518,000826: 35,3477           77760                           STORE    14D                                   
027519,000827: 35,3500           77616                           RVQ                                            #  RETURN WITH TRANSPOSED MATRIX IN PD LIST
027520,000828: 

Page 653

027522,000830: 34,2407                                           BANK     34                                    
027523,000831: 34,2407  E3,1535                                  EBANK=   MIS                                   
027524,000832: 
027525,000833: 34,2407           00013 13563  MINANG             2DEC     0.00069375                            
027526,000834: 
027527,000835: 34,2411           17070 34343  MAXANG             2DEC     0.472222222                            
027528,000836: 
027529,000837: 34,2413           20000 00000  HALFA              2DEC     0.5                                   
027530,000838: 
027531,000839: 34,2415           00000 00000  NIL                2DEC     0.0                                   
027532,000840: 
027533,000841: 34,2417           00000 00000                     2DEC     0.0                                   
027534,000842: 
027535,000843: 34,2421           00000 00000                     2DEC     0.0                                   
027536,000844: 
027537,000845: 34,2423           20000 00000                     2DEC     0.5                                   
027538,000846: 
027539,000847: 34,2425           10000 00000  QUARTA             2DEC     .25                                   
027540,000848:                                                                                                  #           GIMBAL LOCK CONSTANTS
027541,000849: 
027542,000850:                                                                                                  #  D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES
027543,000851:                                                                                                  #           NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES
027544,000852: 
027545,000853: 34,2427           15666 20443  SD                 2DEC     .433015                               #  = SIN(D)                      $2
027546,000854: 
027547,000855: 34,2431           33555 01106  K3S1               2DEC     .86603                                #  = SIN(D)                      $1
027548,000856: 
027549,000857: 34,2433           67777 77777  K4                 2DEC     -.25                                  #  = -COS(D)                     $2
027550,000858: 
027551,000859: 34,2435           04000 00000  K4SQ               2DEC     .125                                  #  = COS(D)COS(D)                $2
027552,000860: 
027553,000861: 34,2437           00216 36323  SNGLCD             2DEC     .008725                               #  = SIN(NGL)COS(D)              $2
027554,000862: 
027555,000863: 34,2441           17773 00057  CNGL               2DEC     .499695                               #  COS(NGL)                      $2
027556,000864: 
027557,000865: 34,2443           12525 12525  LOCKANGL           2DEC     .3333333333                            #  $60DEGG
027558,000866: 
027559,000867: 35,3501                                           BANK     35                                    
027560,000868: 35,3501  E3,1535                                  EBANK=   MIS                                   
027561,000869:                                                                                                  #  ROUTINE FOR LIMITING THE SIZE OF MPAC ON OVERFLOW TO OP POSMAX OR DP NEGMAX
027562,000870: 
027563,000871: 35,3501           00006        SIGNMPAC           EXTEND                                         
027564,000872: 35,3502           37743                           DCA      DPOSMAX                               
027565,000873: 35,3503           52145                           DXCH     MPAC                                  
027566,000874: 35,3504           10000                           CCS      A                                     
027567,000875: 35,3505           37767                           CAF      ZERO                                  
027568,000876: 35,3506           16544                           TCF      SLOAD2     +2                         
027569,000877: 35,3507           13510                           TCF      +1                                    
027570,000878: 35,3510           00006                           EXTEND                                         

Page 654

027572,000880: 35,3511           47743                           DCS      DPOSMAX                               
027573,000881: 35,3512           16542                           TCF      SLOAD2                                
027574,000882: 
027575,000883: 
027576,000884: 
027577,000885:                                                                                                  #  INTERPRETIVE SUBROUTINE TO READ THE CDU ANGLES
027578,000886: 
027579,000887: 35,3513           30034        READCDUK           CA       CDUZ                                  #  LOAD T(MPAC) WITH CDU ANGLES
027580,000888: 35,3514           54146                           TS       MPAC       +2                         
027581,000889: 35,3515           00006                           EXTEND                                         
027582,000890: 35,3516           30033                           DCA      CDUX                                  #  AND CHANGE MODE TO TRIPLE PRECISION
027583,000891: 35,3517           16554                           TCF      TLOAD      +6                         
027584,000892: 
027585,000893: 
027586,000894: 
027587,000895: 34,2445                                           BANK     34                                    
027588,000896: 34,2445  E3,1535                                  EBANK=   MIS                                   
027589,000897: 34,2445           66370        CDUTODCM           AXT,1    SSP                                   
027590,000898: 34,2446           00003                           OCT      3                                     
027591,000899: 34,2447           00051                                    S1                                    
027592,000900: 34,2450           00001                           OCT      1                                     #  SET XR1, S1, AND PD FOR LOOP
027593,000901: 34,2451           00010                           STORE    7                                     
027594,000902: 34,2452           77601                           SETPD                                          
027595,000903: 34,2453           00001                                    0                                     
027596,000904: 34,2454           47133        LOOPSIN            SLOAD*   RTB                                   
027597,000905: 34,2455           00013                                    10D,1                                 
027598,000906: 34,2456           33457                                    CDULOGIC                              
027599,000907: 34,2457           00013                           STORE    10D                                   #  LOAD PD WITH 0 SIN(PHI)
027600,000908: 34,2460           65356                           SIN      PDDL                                  #               2 COS(PHI)
027601,000909: 34,2461           00013                                    10D                                   #               4 SIN(THETA)
027602,000910: 34,2462           41546                           COS      PUSH                                  #               6 COS(THETA)
027603,000911: 34,2463           71300                           TIX,1    DLOAD                                 #               8 SIN(PSI)
027604,000912: 34,2464           70454                                    LOOPSIN                               #              10 COS(PSI)
027605,000913: 34,2465           00007                                    6                                     
027606,000914: 34,2466           72405                           DMP      SL1                                   
027607,000915: 34,2467           00013                                    10D                                   
027608,000916: 34,2470           10001                           STORE    0,2                                   #  C0=COS(THETA)COS(PSI)
027609,000917: 34,2471           41345                           DLOAD    DMP                                   
027610,000918: 34,2472           00005                                    4                                     
027611,000919: 34,2473           00001                                    0                                     
027612,000920: 34,2474           41325                           PDDL     DMP                                   #  (PD6 SIN(THETA)SIN(PHI))
027613,000921: 34,2475           00007                                    6                                     
027614,000922: 34,2476           00011                                    8D                                    
027615,000923: 34,2477           72405                           DMP      SL1                                   
027616,000924: 34,2500           00003                                    2                                     
027617,000925: 34,2501           72421                           BDSU     SL1                                   
027618,000926: 34,2502           00015                                    12D                                   
027619,000927: 34,2503           10003                           STORE    2,2                                   #  C1=-COS(THETA)SIN(PSI)COS(PHI)
027620,000928: 34,2504           41345                           DLOAD    DMP                                   
027621,000929: 34,2505           00003                                    2                                     

Page 655

027623,000931: 34,2506           00005                                    4                                     
027624,000932: 34,2507           41325                           PDDL     DMP                                   #  (PD7 COS(PHI)SIN(THETA)) SCALED 4
027625,000933: 34,2510           00007                                    6                                     
027626,000934: 34,2511           00011                                    8D                                    
027627,000935: 34,2512           72405                           DMP      SL1                                   
027628,000936: 34,2513           00001                                    0                                     
027629,000937: 34,2514           72415                           DAD      SL1                                   
027630,000938: 34,2515           00017                                    14D                                   
027631,000939: 34,2516           10005                           STORE    4,2                                   #  C2=COS(THETA)SIN(PSI)SIN(PHI)
027632,000940: 34,2517           77745                           DLOAD                                          
027633,000941: 34,2520           00011                                    8D                                    
027634,000942: 34,2521           10007                           STORE    6,2                                   #  C3=SIN(PSI)
027635,000943: 34,2522           77745                           DLOAD                                          
027636,000944: 34,2523           00013                                    10D                                   
027637,000945: 34,2524           72405                           DMP      SL1                                   
027638,000946: 34,2525           00003                                    2                                     
027639,000947: 34,2526           10011                           STORE    8D,2                                  #  C4=COS(PSI)COS(PHI)
027640,000948: 34,2527           41345                           DLOAD    DMP                                   
027641,000949: 34,2530           00013                                    10D                                   
027642,000950: 34,2531           00001                                    0                                     
027643,000951: 34,2532           72476                           DCOMP    SL1                                   
027644,000952: 34,2533           10013                           STORE    10D,2                                 #  C5=-COS(PSI)SIN(PHI)
027645,000953: 34,2534           41345                           DLOAD    DMP                                   
027646,000954: 34,2535           00005                                    4                                     
027647,000955: 34,2536           00013                                    10D                                   
027648,000956: 34,2537           72476                           DCOMP    SL1                                   
027649,000957: 34,2540           10015                           STORE    12D,2                                 #  C6=-SIN(THETA)COS(PSI)
027650,000958: 34,2541           77745                           DLOAD                                          
027651,000959: 34,2542           72405                           DMP      SL1                                   #   (PUSH UP 7)
027652,000960: 34,2543           00011                                    8D                                    
027653,000961: 34,2544           41325                           PDDL     DMP                                   #   (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE 4
027654,000962: 34,2545           00007                                    6                                     
027655,000963: 34,2546           00001                                    0                                     
027656,000964: 34,2547           72415                           DAD      SL1                                   #   (PUSH UP 7)
027657,000965: 34,2550           77626                           STADR                                          #  C7=COS(PHI)SIN(THETA)SIN(PSI)
027658,000966: 34,2551           67760                           STORE    14D,2                                 #   +COS(THETA)SIN(PHI)
027659,000967: 34,2552           77745                           DLOAD                                          
027660,000968: 34,2553           72405                           DMP      SL1                                   #   (PUSH UP 6)
027661,000969: 34,2554           00011                                    8D                                    
027662,000970: 34,2555           41325                           PDDL     DMP                                   #   (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE 4
027663,000971: 34,2556           00007                                    6                                     
027664,000972: 34,2557           00003                                    2                                     
027665,000973: 34,2560           72425                           DSU      SL1                                   #   (PUSH UP 6)
027666,000974: 34,2561           77626                           STADR                                          
027667,000975: 34,2562           67756                           STORE    16D,2                                 #  C8=-SIN(THETA)SIN(PHI)SIN(PSI)
027668,000976: 34,2563           77616                           RVQ                                            #   +COS(THETA)COS(PHI)
027669,000977: 
027670,000978:                                                                                                  #  CALCULATION OF THE MATRIX DEL......
027671,000979: 
027672,000980:                                                                                                  #           *      *               --T           *

Page 656

027674,000982:                                                                                                  #           DEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A)         SCALED 1
027675,000983:                                                                                                  #                 -
027676,000984:                                                                                                  #           WHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION.
027677,000985:                                                                                                  #           A IS THE ANGLE OF ROTATION (DP SCALED 2)
027678,000986:                                                                                                  #                                              -
027679,000987:                                                                                                  #           UPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC
027680,000988: 
027681,000989: 34,2564           41401        DELCOMP            SETPD    PUSH                                  #  MPAC CONTAINS THE ANGLE A
027682,000990: 34,2565           00001                                    0                                     
027683,000991: 34,2566           65356                           SIN      PDDL                                  #  PD0 = SIN(A)
027684,000992: 34,2567           41546                           COS      PUSH                                  #  PD2 = COS(A)
027685,000993: 34,2570           65302                           SR2      PDDL                                  #  PD2 = COS(A)                          $8
027686,000994: 34,2571           41021                           BDSU     BOVB                                  
027687,000995: 34,2572           30414                                    HALFA                                 
027688,000996: 34,2573           73501                                    SIGNMPAC                              
027689,000997: 34,2574           77725                           PDDL                                           #  PD4 = 1-COS(A)
027690,000998: 
027691,000999:                                                                                                  #  COMPUTE THE DIAGONAL COMPONENTS OF DEL
027692,001000: 
027693,001001: 34,2575           01624                                    COF                                   
027694,001002: 34,2576           41316                           DSQ      DMP                                   
027695,001003: 34,2577           00005                                    4                                     
027696,001004: 34,2600           52415                           DAD      SL3                                   #  UXUX(1-COS(A))                        $8
027697,001005: 34,2601           00003                                    2                                     
027698,001006: 34,2602           77604                           BOVB                                           
027699,001007: 34,2603           73501                                    SIGNMPAC                              
027700,001008: 34,2604           15560                           STODL    KEL                                   #  UX UX(1-COS(A)) +COS(A)                $1
027701,001009: 34,2605           01626                                    COF        +2                         
027702,001010: 34,2606           41316                           DSQ      DMP                                   
027703,001011: 34,2607           00005                                    4                                     
027704,001012: 34,2610           52415                           DAD      SL3                                   #  UYUY(1-COS(A))                        $8
027705,001013: 34,2611           00003                                    2                                     
027706,001014: 34,2612           77604                           BOVB                                           
027707,001015: 34,2613           73501                                    SIGNMPAC                              
027708,001016: 34,2614           15570                           STODL    KEL        +8D                        #  UY UY(1-COS(A)) +COS(A)                $1
027709,001017: 34,2615           01630                                    COF        +4                         
027710,001018: 34,2616           41316                           DSQ      DMP                                   
027711,001019: 34,2617           00005                                    4                                     
027712,001020: 34,2620           52415                           DAD      SL3                                   #  UZUZ(1-COS(A))                        $8
027713,001021: 34,2621           00003                                    2                                     
027714,001022: 34,2622           77604                           BOVB                                           
027715,001023: 34,2623           73501                                    SIGNMPAC                              
027716,001024: 34,2624           01600                           STORE    KEL        +16D                       #  UZ UZ(1-COS(A)) +COS(A)                $1
027717,001025: 
027718,001026:                                                                                                  #  COMPUTE THE OFF DIAGONAL TERMS OF DEL
027719,001027: 
027720,001028: 34,2625           41345                           DLOAD    DMP                                   
027721,001029: 34,2626           01624                                    COF                                   
027722,001030: 34,2627           01626                                    COF        +2                         

Page 657

027724,001032: 34,2630           72405                           DMP      SL1                                   
027725,001033: 34,2631           00005                                    4                                     
027726,001034: 34,2632           41325                           PDDL     DMP                                   #  D6  UX UY (1-COS A)                $ 4
027727,001035: 34,2633           01630                                    COF        +4                         
027728,001036: 34,2634           00001                                    0                                     
027729,001037: 34,2635           43206                           PUSH     DAD                                   #  D8  UZ SIN A                       $ 4
027730,001038: 34,2636           00007                                    6                                     
027731,001039: 34,2637           41112                           SL2      BOVB                                  
027732,001040: 34,2640           73501                                    SIGNMPAC                              
027733,001041: 34,2641           15566                           STODL    KEL        +6                         
027734,001042: 34,2642           62421                           BDSU     SL2                                   
027735,001043: 34,2643           77604                           BOVB                                           
027736,001044: 34,2644           73501                                    SIGNMPAC                              
027737,001045: 34,2645           15562                           STODL    KEL        +2                         
027738,001046: 34,2646           01624                                    COF                                   
027739,001047: 34,2647           41205                           DMP      DMP                                   
027740,001048: 34,2650           01630                                    COF        +4                         
027741,001049: 34,2651           00005                                    4                                     
027742,001050: 34,2652           65352                           SL1      PDDL                                  #  D6  UX UZ (1-COS A )                $ 4
027743,001051: 34,2653           01626                                    COF        +2                         
027744,001052: 34,2654           41405                           DMP      PUSH                                  #  D8  UY SIN(A)
027745,001053: 34,2655           00001                                    0                                     
027746,001054: 34,2656           62415                           DAD      SL2                                   
027747,001055: 34,2657           00007                                    6                                     
027748,001056: 34,2660           77604                           BOVB                                           
027749,001057: 34,2661           73501                                    SIGNMPAC                              
027750,001058: 34,2662           15564                           STODL    KEL        +4                         #  UX UZ (1-COS(A))+UY SIN(A)
027751,001059: 34,2663           62421                           BDSU     SL2                                   
027752,001060: 34,2664           77604                           BOVB                                           
027753,001061: 34,2665           73501                                    SIGNMPAC                              
027754,001062: 34,2666           15574                           STODL    KEL        +12D                       #  UX UZ (1-COS(A))-UY SIN(A)
027755,001063: 34,2667           01626                                    COF        +2                         
027756,001064: 34,2670           41205                           DMP      DMP                                   
027757,001065: 34,2671           01630                                    COF        +4                         
027758,001066: 34,2672           00005                                    4                                     
027759,001067: 34,2673           65352                           SL1      PDDL                                  #  D6  UY UZ (1-COS(A))                $ 4
027760,001068: 34,2674           01624                                    COF                                   
027761,001069: 34,2675           41405                           DMP      PUSH                                  #  D8  UX SIN(A)
027762,001070: 34,2676           00001                                    0                                     
027763,001071: 34,2677           62415                           DAD      SL2                                   
027764,001072: 34,2700           00007                                    6                                     
027765,001073: 34,2701           77604                           BOVB                                           
027766,001074: 34,2702           73501                                    SIGNMPAC                              
027767,001075: 34,2703           15576                           STODL    KEL        +14D                       #  UY UZ(1-COS(A)) +UX SIN(A)
027768,001076: 34,2704           62421                           BDSU     SL2                                   
027769,001077: 34,2705           77604                           BOVB                                           
027770,001078: 34,2706           73501                                    SIGNMPAC                              
027771,001079: 34,2707           01572                           STORE    KEL        +10D                       #  UY UZ (1-COS(A)) -UX SIN(A)
027772,001080: 34,2710           77616                           RVQ                                            
027773,001081: 

Page 658

027775,001083:                                                                                                  #  DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE
027776,001084:                                                                                                  #  X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2)
027777,001085:                                                                                                  #  LEAVES CDU ANGLES SCALED 2PI IN V(MPAC)
027778,001086:                                                                                                  #  COS(MGA) WILL BE LEFT IN S1 (SCALED 1)
027779,001087: 
027780,001088:                                                                                                  #  THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS***
027781,001089: 
027782,001090:                                                                                                  #           C =COS(THETA)COS(PSI)
027783,001091:                                                                                                  #            0
027784,001092: 
027785,001093:                                                                                                  #           C =-COS(THETA)SIN(PSI)COS(PHI)+SI (THETA)SIN(PHI)
027786,001094:                                                                                                  #            1
027787,001095: 
027788,001096:                                                                                                  #           C =COS(THETA)SIN(PSI)SIN(PHI) + S N(THETA)COS(PHI)
027789,001097:                                                                                                  #            2
027790,001098: 
027791,001099:                                                                                                  #           C =SIN(PSI)
027792,001100:                                                                                                  #            3
027793,001101: 
027794,001102:                                                                                                  #           C =COS(PSI)COS(PHI)
027795,001103:                                                                                                  #            4
027796,001104: 
027797,001105:                                                                                                  #           C =-COS(PSI)SIN(PHI)
027798,001106:                                                                                                  #            5
027799,001107: 
027800,001108:                                                                                                  #           C =-SIN(THETA)COS(PSI)
027801,001109:                                                                                                  #            6
027802,001110: 
027803,001111:                                                                                                  #           C =SIN(THETA)SIN(PSI)COS(PHI)+COS THETA)SIN(PHI)
027804,001112:                                                                                                  #            7
027805,001113: 
027806,001114:                                                                                                  #           C =-SIN(THETA)SIN(PSI)SIN(PHI)+CO (THETA)COS(PHI)
027807,001115:                                                                                                  #            8
027808,001116: 
027809,001117:                                                                                                  #           WHERE PHI = OGA
027810,001118:                                                                                                  #                 THETA = IGA
027811,001119:                                                                                                  #                 PSI = MGA
027812,001120: 
027813,001121: 34,2711           67543        DCMTOCDU           DLOAD*   ARCSIN                                
027814,001122: 34,2712           00007                                    6,1                                   
027815,001123: 34,2713           71406                           PUSH     COS                                   #  PD +0   PSI
027816,001124: 34,2714           41152                           SL1      BOVB                                  
027817,001125: 34,2715           73501                                    SIGNMPAC                              
027818,001126: 34,2716           00051                           STORE    S1                                    
027819,001127: 34,2717           57543                           DLOAD*   DCOMP                                 
027820,001128: 34,2720           00015                                    12D,1                                 
027821,001129: 34,2721           67471                           DDV      ARCSIN                                
027822,001130: 34,2722           00051                                    S1                                    
027823,001131: 34,2723           51123                           PDDL*    BPL                                   #  PD +2  THETA
027824,001132: 34,2724           00001                                    0,1                                   #  MUST CHECK THE SIGN OF COS(THETA)
027825,001133: 34,2725           70737                                    OKTHETA                               #  TO DETERMINE THE PROPER QUADRANT
027826,001134: 34,2726           57545                           DLOAD    DCOMP                                 
027827,001135: 34,2727           43244                           BPL      DAD                                   
027828,001136: 34,2730           70734                                    SUHALFA                               
027829,001137: 34,2731           30414                                    HALFA                                 
027830,001138: 34,2732           77650                           GOTO                                           
027831,001139: 34,2733           70736                                    CALCPHI                               
027832,001140: 34,2734           77625        SUHALFA            DSU                                            

Page 659

027834,001142: 34,2735           30414                                    HALFA                                 
027835,001143: 34,2736           77606        CALCPHI            PUSH                                           
027836,001144: 34,2737           57543        OKTHETA            DLOAD*   DCOMP                                 
027837,001145: 34,2740           00013                                    10D,1                                 
027838,001146: 34,2741           67471                           DDV      ARCSIN                                
027839,001147: 34,2742           00051                                    S1                                    
027840,001148: 34,2743           51123                           PDDL*    BPL                                   #  PUSH DOWN PHI
027841,001149: 34,2744           00011                                    8D,1                                  
027842,001150: 34,2745           70757                                    OKPHI                                 
027843,001151: 34,2746           57545                           DLOAD    DCOMP                                 #  PUSH UP PHI
027844,001152: 34,2747           43244                           BPL      DAD                                   
027845,001153: 34,2750           70754                                    SUHALFAP                              
027846,001154: 34,2751           30414                                    HALFA                                 
027847,001155: 34,2752           77650                           GOTO                                           
027848,001156: 34,2753           70760                                    VECOFANG                              
027849,001157: 34,2754           52025        SUHALFAP           DSU      GOTO                                  
027850,001158: 34,2755           30414                                    HALFA                                 
027851,001159: 34,2756           70760                                    VECOFANG                              
027852,001160: 34,2757           77745        OKPHI              DLOAD                                          #  PUSH UP PHI
027853,001161: 34,2760           43466        VECOFANG           VDEF     RVQ                                   
027854,001162: 

Page 660

027856,001164:                                                                                                  #  ROUTINES FOR TERMINATING THE AUTOMATIC MANEUVER AND RETURNING TO USER
027857,001165: 
027858,001166: 34,2761           77776        ENDMANU            EXIT                                           
027859,001167: 34,2762           37762                           CAF      TWO                                   
027860,001168: 34,2763           00004                           INHINT                                         
027861,001169: 34,2764           05663                           TC       WAITLIST                              #  PREPARE FOR A GOOD (NORMAL) RETURN VIA
027862,001170: 34,2765  E3,1535                                  EBANK=   MIS                                   
027863,001171: 34,2765           03710 70063                     2CADR    GOODMANU                              #  GOODEND
027864,001172: 
027865,001173: 34,2767           00003                           RELINT                                         
027866,001174: 34,2770           05567                           TC       ENDOFJOB                              
027867,001175: 
027868,001176: 34,2771           77776        TOOBAD             EXIT                                           #  INITIAL OR FINAL GIMBAL ANGLES IN
027869,001177: 34,2772           37762                           CAF      TWO                                   #  GIMBAL LOCK
027870,001178: 34,2773           00004                           INHINT                                         
027871,001179: 34,2774           05663                           TC       WAITLIST                              
027872,001180: 34,2775  E3,1535                                  EBANK=   MIS                                   
027873,001181: 34,2775           03001 70063                     2CADR    NOGO                                  #  PREPARE FOR A BAD RETURN VIA BADEND
027874,001182: 
027875,001183: 34,2777           00003                           RELINT                                         
027876,001184: 34,3000           05567                           TC       ENDOFJOB                              
027877,001185: 
027878,001186: 34,3001           06076        NOGO               TC       FLAG2DWN                              #  RESET BIT 11 OF FLAGWRD2 TO SIGNAL END
027879,001187: 34,3002           02000                           OCT      2000                                  #  OF KALCMANU
027880,001188: 34,3003           36311                           CAF      THREE                                 
027881,001189: 34,3004           05225                           TC       POSTJUMP                              #  RETURN UNDER WAITLIST VIA BADEND
027882,001190: 34,3005           26715                           CADR     BADEND                                #  AND WAKE UP USER

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