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.

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

Page 636

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

Page 637

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

Page 638

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

Page 639

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

Page 640

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

Page 641

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

Page 642

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

Page 643

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

Page 644

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

Page 645

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

Page 646

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

Page 647

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

Page 648

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

Page 649

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

Page 650

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

Page 651

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

Page 652

027525,000823: 35,3472           00013                                    10D                                   
027526,000824: 35,3473           77725                           PDDL                                           
027527,000825: 35,3474           00017                                    14D                                   
027528,000826: 35,3475           14013                           STODL    10D                                   
027529,000827: 35,3476           77626                           STADR                                          
027530,000828: 35,3477           77760                           STORE    14D                                   
027531,000829: 35,3500           77616                           RVQ                                            #  RETURN WITH TRANSPOSED MATRIX IN PD LIST
027532,000830: 

Page 653

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

Page 654

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

Page 655

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

Page 656

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

Page 657

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

Page 658

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

Page 659

027846,001144: 34,2735           30414                                    HALFA                                 
027847,001145: 34,2736           77606        CALCPHI            PUSH                                           
027848,001146: 34,2737           57543        OKTHETA            DLOAD*   DCOMP                                 
027849,001147: 34,2740           00013                                    10D,1                                 
027850,001148: 34,2741           67471                           DDV      ARCSIN                                
027851,001149: 34,2742           00051                                    S1                                    
027852,001150: 34,2743           51123                           PDDL*    BPL                                   #  PUSH DOWN PHI
027853,001151: 34,2744           00011                                    8D,1                                  
027854,001152: 34,2745           70757                                    OKPHI                                 
027855,001153: 34,2746           57545                           DLOAD    DCOMP                                 #  PUSH UP PHI
027856,001154: 34,2747           43244                           BPL      DAD                                   
027857,001155: 34,2750           70754                                    SUHALFAP                              
027858,001156: 34,2751           30414                                    HALFA                                 
027859,001157: 34,2752           77650                           GOTO                                           
027860,001158: 34,2753           70760                                    VECOFANG                              
027861,001159: 34,2754           52025        SUHALFAP           DSU      GOTO                                  
027862,001160: 34,2755           30414                                    HALFA                                 
027863,001161: 34,2756           70760                                    VECOFANG                              
027864,001162: 34,2757           77745        OKPHI              DLOAD                                          #  PUSH UP PHI
027865,001163: 34,2760           43466        VECOFANG           VDEF     RVQ                                   
027866,001164: 

Page 660

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

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