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. |
024742,000002: ## Copyright: Public domain.
024743,000003: ## Filename: TRIM_GIMBAL_CNTROL_SYSTEM.agc
024744,000004: ## Purpose: A module for revision 0 of BURST120 (Sunburst). It
024745,000005: ## is part of the source code for the Lunar Module's
024746,000006: ## (LM) Apollo Guidance Computer (AGC) for Apollo 5.
024747,000007: ## Assembler: yaYUL
024748,000008: ## Contact: Ron Burkey <info@sandroid.org>.
024749,000009: ## Website: www.ibiblio.org/apollo/index.html
024750,000010: ## Mod history: 2016-09-30 RSB Created draft version.
024751,000011: ## 2016-10-18 MAS Began.
024752,000012: ## 2016-10-19 MAS Completed transcription.
024753,000013: ## 2016-10-31 RSB Typos
024754,000014: ## 2016-12-06 RSB Comment-proofing with octopus/ProoferComments,
024755,000015: ## changes made.
024756,000016:
![]() |
Page 591 |
024758,000018: 21,2572 BANK 21
024759,000019: 21,2572 E6,1542 EBANK= DT
024760,000020: # CONTROL REACHES THIS POINT UNDER EITHER OF THE FOLLOWING TWO CONDITIONS ONCE THE DESCENT ENGINE AND THE DIGITAL
024761,000021: # AUTOPILOT ARE BOTH ON:
024762,000022: # A) THE TRIM GIMBAL CONTROL LAW WAS ON DURING THE PREVIOUS Q,R-AXIS TIME5 INTERRUPT (OR THE DAPIDLER
024763,000023: # INITIALIZATION WAS SET FOR TRIM GIMBAL CONTROL AND THIS IS THE FIRST PASS), OR
024764,000024: # B) THE Q,R-AXES RCS JET CONTROL LAW ATTITUDE STEERING MODE REDUCED THE ATTITUDE ERROR TO LESS THAN
024765,000025: # 1DEGREE ON EACH AXIS ON ITS LAST TIME5 INTERRUPT.
024766,000026:
024767,000027: # THE FOLLOWING T5RUPT ENTRY BEGINS THE TRIM GIMBAL CONTROL LAW. SINCE IT IS ASSUMED THAT THE LEM WILL REMAIN
024768,000028: # UNDER TRIM GIMBAL CONTROL, A KALMAN FILTER RUPT IS SET UP TO BEGIN 30 MS FROM THE TRIM GIMBAL RUPT.
024769,000029:
024770,000030: 21,2572 32402 GTS CAF MS30F # RESET TIMER IMMEDIATELY: DT = 30 MS
024771,000031: 21,2573 54030 TS TIME5
024772,000032:
024773,000033: 21,2574 22016 LXCH BANKRUPT # INTERRUPT LEAD IN (CONTINUED)
024774,000034: 21,2575 00006 EXTEND
024775,000035: 21,2576 22012 QXCH QRUPT
024776,000036:
024777,000037: 21,2577 00006 EXTEND
024778,000038: 21,2600 32411 DCA POSTPFIL
024779,000039: 21,2601 53001 DXCH T5ADR
024780,000040:
024781,000041: 21,2602 12674 TCF GTSTEST # SKIP OVER XFORMS UNTIL REORGANIZATION
024782,000042:
024783,000043: 21,2603 00006 GIMBAL EXTEND # GET D.P. FILTERED CDUY VALUE (ONES COMP)
024784,000044: 21,2604 31554 DCA CDUYFIL # SCALED AT 2PI RADIANS
024785,000045: 21,2605 02307 TC ONETOTWO # FORM S.P. VALUE IN TWOS COMPLEMENT AT PI
024786,000046: 21,2606 00006 EXTEND
024787,000047: 21,2607 20767 MSU CDUYD # FORM Y-AXIS ERROR IN ONES COMPLEMENT
024788,000048: 21,2610 55467 TS QDIFF # (SAVE IN Q-AXIS ERROR LOC: EFFICIENCY)
024789,000049:
024790,000050: 21,2611 00006 EXTEND # GET D.P. FILTERED CDUZ VALUE (ONES COMP)
024791,000051: 21,2612 31556 DCA CDUZFIL # SCALED AT 2PI RADIANS
024792,000052: 21,2613 02307 TC ONETOTWO # FORM S.P. VALUE IN TWOS COMPLEMENT AT PI
024793,000053: 21,2614 00006 EXTEND
024794,000054: 21,2615 20770 MSU CDUZD # FORM Z-AXIS ERROR IN ONES COMPLEMENT
024795,000055: 21,2616 55470 TS RDIFF # (SAVE IN R-AXIS ERROR LOC: EFFICIENCY)
024796,000056:
024797,000057: # TRANSFORM Y,Z CDU ERRORS TO THE Q,R-AXES.
024798,000058:
024799,000059: 21,2617 00006 EXTEND # GET BOTH Y AND Z CDU ERRORS AT PI RAD
024800,000060: 21,2620 31470 DCA QDIFF
024801,000061: 21,2621 03264 TC QTRANSF # FORM Q-ERROR IN A (SCALED AT PI RAD)
024802,000062: 21,2622 53470 DXCH QDIFF # STORE Q-ERROR, GET BOTH Y,Z CDU ERRORS
024803,000063: 21,2623 03274 TC RTRANSF # FORM R-ERROR IN A (SCALED AT PI RAD)
024804,000064: 21,2624 57470 XCH RDIFF # STORE R-ERROR
024805,000065:
024806,000066: # TRANSFORM THE FILTERED Y,Z RATES TO THE Q,R-AXES.
024807,000067: # (THESE MAY BE NEEDED FOR THE RATE DERIVATION FOR THE JETS IF THEY MUST BE USED.)
024808,000068:
![]() |
Page 592 |
024810,000070: 21,2625 31561 CAE DCDUZFIL # GET FILTERED Y,Z RATES
024811,000071: 21,2626 54001 TS L # SCALED AT PI/4 RADIANS/SECOND
024812,000072: 21,2627 31557 CAE DCDUYFIL
024813,000073: 21,2630 03264 TC QTRANSF # FOR Q-AXIS RATE
024814,000074: 21,2631 55416 TS OMEGAQ # STORED SCALED AT PI/4 RADIANS/SECOND
024815,000075:
024816,000076: 21,2632 31561 CAE DCDUZFIL # GET FILTERED Y,Z RATES
024817,000077: 21,2633 54001 TS L # SCALED AT PI/4 RADIANS/SECOND
024818,000078: 21,2634 31557 CAE DCDUYFIL
024819,000079: 21,2635 03274 TC RTRANSF # FOR R-AXIS RATE
024820,000080: 21,2636 55420 TS OMEGAR # STORED SCALED AT PI/4 RADIANS/SECOND
024821,000081:
024822,000082: # TRANSFORM THE FILTERED Y,Z ACCELERATIONS TO THE Q,R-AXES.
024823,000083: # (THESE MAY BE NEEDED TO CALCULATE TRIM GIMBAL OFF-TIMES IF ATTITUDE ERROR HAS GONE BEYOND TRIM GIMBAL CONTROL.)
024824,000084:
024825,000085: 21,2637 31565 CAE D2CDUZFL # GET FILTERED Y,Z ACCELERATIONS
024826,000086: 21,2640 54001 TS L # SCALED AT PI/8 RADIANS/SECOND(2)
024827,000087: 21,2641 31563 CAE D2CDUYFL
024828,000088: 21,2642 03264 TC QTRANSF # FORM Q-AXIS ACCELERATION
024829,000089: 21,2643 55417 TS ALPHAQ # STORE AT PI/8 RADIANS/SECOND(2)
024830,000090:
024831,000091: 21,2644 31565 CAE D2CDUZFL # GET FILTERED Y,Z ACCELERATIONS
024832,000092: 21,2645 54001 TS L # SCALED AT PI/8 RADIANS/SECOND(2)
024833,000093: 21,2646 31563 CAE D2CDUYFL
024834,000094: 21,2647 03274 TC RTRANSF # FORM R-AXIS ACCELERATION
024835,000095: 21,2650 55421 TS ALPHAR # STORE AT PI/8 RADIANS/SECOND(2)
024836,000096:
024837,000097: # EXTRAPOLATE THETA AND OMEGA OVER 100 MS PLUS THE 20 MS DELAY BETWEEN THE KALMAN FILTER AND TRIM GIMBAL
024838,000098: # CONTROL, REFLECTING MECHANICAL LAG.
024839,000099:
024840,000100: 21,2651 31416 CAE OMEGAQ
024841,000101: 21,2652 00006 EXTEND
024842,000102: 21,2653 72672 MP DTW
024843,000103: 21,2654 27467 ADS QDIFF
024844,000104:
024845,000105: 21,2655 31420 CAE OMEGAR
024846,000106: 21,2656 00006 EXTEND
024847,000107: 21,2657 72672 MP DTW
024848,000108: 21,2660 27470 ADS RDIFF
024849,000109:
024850,000110: 21,2661 31417 CAE ALPHAQ
024851,000111: 21,2662 00006 EXTEND
024852,000112: 21,2663 72673 MP DTA
024853,000113: 21,2664 27416 ADS OMEGAQ
024854,000114:
024855,000115: 21,2665 31421 CAE ALPHAR
024856,000116: 21,2666 00006 EXTEND
024857,000117: 21,2667 72673 MP DTA
024858,000118: 21,2670 27420 ADS OMEGAR
024859,000119:
![]() |
Page 593 |
024861,000121: 21,2671 15733 TCF RESUME
024862,000122:
024863,000123: 21,2672 00754 DTW OCT 00754 # 120 MS SCALED AT 4
024864,000124: 21,2673 01727 DTA OCT 01727 # 120 MS SCALED AT 2
024865,000125: # TEST TO SEE IF TRIM GIMBAL CONTROL LAW HAS KEPT BOTH ATTITUDE ERRORS BELOW THE 1 DEGREE BOUNDARY WITH THE REGION
024866,000126: # OF RCS CONTROL LAW DOMINANCE OR IS STILL REDUCING THE ERROR.
024867,000127:
024868,000128: 21,2674 37762 GTSTEST CAF TRYGIMBL # VERIFY THAT GTS IS STILL OPERATIVE.
024869,000129: 21,2675 70077 MASK DAPBOOLS
024870,000130: 21,2676 10000 CCS A
024871,000131: 21,2677 12731 TCF RCSCNTRL # GTS NOT OPERATIVE
024872,000132: # START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
024873,000133:
024874,000134: 21,2700 13736 INSERT21 TCF CHKCNTR # GO CHECK TRIMCNTR (AT END OF BANK 21).
024875,000135:
024876,000136: # **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
024877,000137:
024878,000138: 21,2701 54066 LOOPTEST TS QRCNTR
024879,000139: 21,2702 50066 INDEX QRCNTR
024880,000140: 21,2703 11467 CCS QDIFF # SCALED AT PI.
024881,000141: 21,2704 62727 AD -TGBND+1 # -2 DEG SCALED AT PI, + 1 BIT.
024882,000142: 21,2705 12707 TCF +2
024883,000143: 21,2706 62727 AD -TGBND+1
024884,000144: 21,2707 00006 EXTEND
024885,000145: 21,2710 62712 BZMF +2 # IS ERROR MAG LESS,EQUAL 2 DEG.
024886,000146: 21,2711 13715 TCF TESTPCTR # NO. MAY CONTINUE,THOUGH.
024887,000147: 21,2712 30066 CA QRCNTR # YES. TRY RATE MAGNITUDE.
024888,000148: 21,2713 60000 DOUBLE
024889,000149: 21,2714 50000 INDEX A
024890,000150:
024891,000151: # THIS TEST BYPASSES THE TEST IN WSFTEST. CHECK WSFTEST IF BOUND CHANGES.
024892,000152:
024893,000153: 21,2715 11416 CCS OMEGAQ # SCALED AT PI/4.
024894,000154: 21,2716 62730 AD -RATBD+1 # -.65 DEC/SEC SCALED AT PI/4 + 1 BIT
024895,000155: 21,2717 12721 TCF +2
024896,000156: 21,2720 62730 AD -RATBD+1
024897,000157: 21,2721 00006 EXTEND
024898,000158: 21,2722 62724 BZMF +2 # IS RATE MAG LESS,EQUAL .65 DEG/SEC.
024899,000159: 21,2723 13715 TCF TESTPCTR # NO. MAY CONTINUE,THOUGH.
024900,000160: 21,2724 10066 CCS QRCNTR # YES. THIS AXIS IS FINE. ARE BOTH DONE.
024901,000161: 21,2725 12701 TCF LOOPTEST # TRY THE Q AXIS NOW.
024902,000162: 21,2726 13000 TCF GTSRAXIS # USE TRIM GIMBAL CONTROL.
024903,000163: 21,2727 77512 -TGBND+1 OCT 77512 # -2 DEG SCALED AT PI, + 1 BIT.
024904,000164: 21,2730 77423 -RATBD+1 OCT 77423 # -.65 DEG/SEC SCALED AT PI/4 + 1 BIT
024905,000165: # ATTITUDE ERROR IS BEYOND TRIM GIMBAL CONTROL LAW RANGE. SET UP FOR RCS CONTROL LAW (Q,R-AXIS) AND CALCULATE
024906,000166: # TIMES TO TURN OFF THE GIMBAL DRIVES.
024907,000167:
024908,000168: 21,2731 00006 RCSCNTRL EXTEND # CHANGE LOCATION OF NEXT T5RUPT FROM FIL-
024909,000169: 21,2732 32756 DCA POSTQRFL # TER TO FILDUMMY. AHEM, DON'T FORGET
024910,000170: 21,2733 53001 DXCH T5ADR # THAT FILDUMMY MOVED TO BANK20, DICK GOSS
024911,000171:
![]() |
Page 594 |
024913,000173: 21,2734 00006 EXTEND # SET UP POST P-AXIS T5RUPT TO GO TO
024914,000174: 21,2735 32760 DCA QRJPFILT # DUMMYFIL INSTEAD OF FILTER. USE 2CADR
024915,000175: 21,2736 53573 DXCH PFILTADR # BECAUSE DUMMYFIL NOW IN BANK 16.
024916,000176:
024917,000177: 21,2737 00006 EXTEND # PREPARE FOR SEQUENCED RESUMPTION OF
024918,000178: 21,2740 30034 DCA CDUY # Q,R-AXIS RCS CONTROL RATE DERIVATION
024919,000179: 21,2741 53430 DXCH OLDYFORQ # BY PROVIDING OLD CDU READINGS
024920,000180:
024921,000181: 21,2742 00006 EXTEND # MOVE FILTERED AND TRANSFORMED ATTITUDE
024922,000182: 21,2743 31470 DCA QDIFF # ERRORS INTO ERASABLE FOR Q,R-AXIS RCS
024923,000183: 21,2744 57413 XCH ER # CONTROL URGENCY CALCULATIONS.
024924,000184: 21,2745 23411 LXCH E
024925,000185:
024926,000186: 21,2746 37763 CAF ONE
024927,000187: 21,2747 05663 TC WAITLIST
024928,000188: 21,2750 E6,1542 EBANK= DT
024929,000189: 21,2750 02763 42066 2CADR CHEKDRIV # DO TGOFF CALCULATION IN WAITLIST TASK
024930,000190:
024931,000191: 21,2752 00006 EXTEND # GO TO Q,R-AXES CONTROL IMMEDIATELY
024932,000192: 21,2753 32762 DCA TGENTRY
024933,000193: 21,2754 52006 DTCB
024934,000194:
024935,000195: 21,2755 E6,1471 EBANK= JTSONNOW # NO, SURELY YOU JEST, NOT EBANK 6, AGAIN?
024936,000196: 21,2755 03033 40066 POSTQRFL 2CADR FILDUMMY # WATCH OUT FOR BANK SWITCHING D. GOSS
024937,000197:
024938,000198: 21,2757 E6,1664 EBANK= AOSQTERM
024939,000199: 21,2757 03642 34066 QRJPFILT 2CADR DUMMYFIL # NECESSARY BECAUSE DUMMYFIL IN BANK 16.
024940,000200:
024941,000201: 21,2761 E6,1542 EBANK= DT
024942,000202: 21,2761 02715 36066 TGENTRY 2CADR STILLRCS
024943,000203:
024944,000204:
024945,000205: # START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
024946,000206:
024947,000207: 21,2763 11736 CHEKDRIV CCS PASSCTR # ENOUGH FILTER PASSES FOR DRIVE DONE?
024948,000208: 21,2764 12766 TCF COLDFILT # NO. JUST STOP DRIVES.
024949,000209: 21,2765 13745 TCF WARMFILT # YES. CALCULATE TIMES (END OF BANK).
024950,000210:
024951,000211: 21,2766 37767 COLDFILT CAF ZERO # FILTER NOT WARM YET. TURN OFF DRIVES.
024952,000212: 21,2767 55523 TS NEGUQ
024953,000213: 21,2770 55525 TS NEGUR
024954,000214: 21,2771 55533 TS QACCDOT
024955,000215: 21,2772 55535 TS RACCDOT
024956,000216: 21,2773 03243 TC WRCHN12
024957,000217: 21,2774 15727 TCF TASKOVER
024958,000218:
024959,000219: 21,2775 04736 TC CCSHOLE # FILLER (TO PRESERVE ADDRESSES)
024960,000220: 21,2776 04736 TC CCSHOLE # FILLER (TO PRESERVE ADDRESSES)
024961,000221: # **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
024962,000222:
![]() |
Page 595 |
024964,000224: # THE DRIVE SETTING ALGORITHM
024965,000225: # DEL = SGN(OMEGA.K + SGN(ALPHA)ALPHA(2)/2) ONLY +1/-1
024966,000226:
024967,000227: # NEGUSUM = ERROR.K(2) + DEL(OMEGA.K.DEL + ALPHA(2)/2)(3/2) + ALPHA(OMEGA.K.DEL + ALPHA(2)/3)
024968,000228:
024969,000229: # DRIVE = -SGN(NEGUSUM)
024970,000230:
024971,000231: 21,2777 76504 -.04266 DEC -.04266
024972,000232: 21,3000 37762 GTSRAXIS CAF TWO # SET INDEXER FOR R-AXIS CALCULATIONS
024973,000233: 21,3001 54066 TS QRCNTR
024974,000234: 21,3002 13712 TCF USUALXIT
024975,000235:
024976,000236: 21,3003 37767 GOQTRIMG CAF ZERO # SET INDEXER FOR Q-AXIS CALCULATIONS
024977,000237: 21,3004 54066 TS QRCNTR
024978,000238:
024979,000239: 21,3005 00006 GTSQAXIS EXTEND
024980,000240: 21,3006 50066 INDEX QRCNTR # PICK UP K AND K(2) FOR THIS AXIS
024981,000241: 21,3007 31527 DCA KQ
024982,000242: 21,3010 52062 DXCH KCENTRAL
024983,000243:
024984,000244: 21,3011 00006 EXTEND
024985,000245: 21,3012 50066 INDEX QRCNTR # PICK UP OMEGA AND ALPHA FOR THIS AXIS
024986,000246: 21,3013 31417 DCA OMEGAQ
024987,000247: 21,3014 52064 DXCH WCENTRAL
024988,000248:
024989,000249: 21,3015 10066 CCS QRCNTR # RDIFF IS STORED IMMEDIATELY FOLLOWING
024990,000250: 21,3016 50000 INDEX A # QDIFF, WITH NO SEPARATING CELL.
024991,000251: 21,3017 31467 CAE QDIFF
024992,000252:
024993,000253: # QDIFF IS LESS,EQUAL 2 DEG. AND IS SCALED AT 180 DEG. RESCALE AT 180/64 DEG. = 2 + 13/16 DEG. = PI/64 RADIANS.
024994,000254:
024995,000255: 21,3020 00006 EXTEND # RESCALE DIFFERENCE BY MULTIPLYING BY
024996,000256: 21,3021 77755 MP BIT7 # 2(6)
024997,000257: 21,3022 22071 LXCH ETHETA
024998,000258:
024999,000259: 21,3023 30061 CAE KCENTRAL # TEST ON MAGNITUDE OF ACCDOT
025000,000260: 21,3024 62777 AD -.04266
025001,000261: 21,3025 00006 EXTEND
025002,000262: 21,3026 63034 BZMF ACCDOTSM # BRANCH IF ACCDOT IS SMALL
025003,000263:
025004,000264: 21,3027 37746 ACCDOTLG CAF BIT14 # ACCDOT IS COMPARITIVELY LARGE
025005,000265: 21,3030 54072 TS SF1 # SET UP SCALE FACTORS
025006,000266: 21,3031 37750 CAF BIT12
025007,000267: 21,3032 54073 WSFTEST TS SF2
025008,000268:
025009,000269: # LOOPTEST CODING BYPASSES THE OMEGA MAGNITUDE TEST, BUT A CHANGE IN THE TEST BOUNDS COULD REQUIRE ITS USE AGAIN.
025010,000270:
025011,000271: # CCS WCENTRAL TEST ON MAGNITUDE OF OMEGA
025012,000272: # AD -.04438
025013,000273: # TCF +2
![]() |
Page 596 |
025015,000275: # AD -.04438
025016,000276: # EXTEND
025017,000277: # BZMF ASFTEST IF SMALL, GO TO ALPHA TEST
025018,000278: # TCF WLARGE
025019,000279: 21,3033 13050 TCF ASFTEST # OMEGA IS ALWAYS BOUNDED BY .65 DEG/SEC.
025020,000280: 21,3034 30061 ACCDOTSM CAE KCENTRAL # RESCALE IF ACCDOT IS SMALL
025021,000281: 21,3035 00006 EXTEND
025022,000282: 21,3036 77757 MP BIT5 # RESCALE K BY MULTIPLYING BY 2(4)
025023,000283: 21,3037 22061 LXCH KCENTRAL
025024,000284: 21,3040 30061 CAE KCENTRAL
025025,000285: 21,3041 00006 EXTEND
025026,000286: 21,3042 70000 SQUARE
025027,000287: 21,3043 54062 TS K2CNTRAL
025028,000288: 21,3044 37752 CAF BIT10 # SET UP VARIABLE SCALE FACTORS
025029,000289: 21,3045 54072 TS SF1
025030,000290: 21,3046 37760 CAF BIT4
025031,000291: 21,3047 13032 TCF WSFTEST # GO TEST ON MAGNITUDE OF OMEGA
025032,000292:
025033,000293: 21,3050 10064 ASFTEST CCS ACENTRAL # TEST ON MAGNITUDE OF ALPHA
025034,000294: 21,3051 63057 AD -.08882
025035,000295: 21,3052 13054 TCF +2
025036,000296: 21,3053 63057 AD -.08882
025037,000297: 21,3054 00006 EXTEND
025038,000298: 21,3055 63060 BZMF WARESCAL # IF SMALL, GO TO W,A RESCALING
025039,000299: 21,3056 13071 TCF WLARGE # IF LARGE, DO SAME AS IF W LARGE
025040,000300:
025041,000301: # -.04438 DEC -.04438
025042,000302: 21,3057 75120 -.08882 DEC -.08882
025043,000303:
025044,000304: 21,3060 30063 WARESCAL CAE WCENTRAL # RESCALE OMEGA BY MULTIPLYING BY 2(4)
025045,000305: 21,3061 00006 EXTEND
025046,000306: 21,3062 77757 MP BIT5
025047,000307: 21,3063 22063 LXCH WCENTRAL
025048,000308:
025049,000309: 21,3064 30064 CAE ACENTRAL # RESCALE ALPHA BY MULTIPLYING BY 2(3)
025050,000310: 21,3065 00006 EXTEND
025051,000311: 21,3066 77760 MP BIT4
025052,000312: 21,3067 22064 LXCH ACENTRAL
025053,000313:
025054,000314: 21,3070 13101 TCF ALGORTHM
025055,000315:
025056,000316: 21,3071 30072 WLARGE CAE SF1 # RESCALE VARIABLE SCALE FACTORS
025057,000317: 21,3072 00006 EXTEND
025058,000318: 21,3073 77747 MP BIT13 # SF1 = SF1*2(-2)
025059,000319: 21,3074 54072 TS SF1
025060,000320: 21,3075 30073 CAE SF2
025061,000321: 21,3076 00006 EXTEND
025062,000322: 21,3077 77756 MP BIT6 # SF2 = SF2*2(-9)
025063,000323: 21,3100 54073 TS SF2
025064,000324:
![]() |
Page 597 |
025066,000326: 21,3101 30071 ALGORTHM CAE ETHETA # GET RESCALED ERROR THETA
025067,000327: 21,3102 00006 EXTEND
025068,000328: 21,3103 70062 MP K2CNTRAL # FORM K(2)*THETA IN D.P.
025069,000329: 21,3104 00006 EXTEND
025070,000330: 21,3105 70073 MP SF2 # CALCULATE AND STORE
025071,000331: 21,3106 54070 TS K2THETA # K(2)*THETA*SF2 IN K2THETA
025072,000332:
025073,000333: 21,3107 30063 CA WCENTRAL # CALCULATE AND STORE
025074,000334: 21,3110 00006 EXTEND # K*OMEGA*SF1 IN OMEGA.K
025075,000335: 21,3111 70061 MP KCENTRAL
025076,000336: 21,3112 00006 EXTEND
025077,000337: 21,3113 70072 MP SF1
025078,000338: 21,3114 54061 TS OMEGA.K
025079,000339:
025080,000340: 21,3115 30064 CA ACENTRAL
025081,000341: 21,3116 00006 EXTEND # BY REDESIGNATION OF THE SCALE FACTOR,
025082,000342: 21,3117 70000 MP A # THIS PRODUCT BECOMES ALPHA(2)/2
025083,000343: 21,3120 54072 TS A2CNTRAL # INSTEAD OF ALPHA(2)
025084,000344:
025085,000345: 21,3121 10064 CCS ACENTRAL
025086,000346: 21,3122 30072 CA A2CNTRAL
025087,000347: 21,3123 13125 TCF +2
025088,000348: 21,3124 40072 CS A2CNTRAL # NOW THE A REGISTER CONTAINS
025089,000349: 21,3125 60061 AD OMEGA.K # K*OMEGA + ALPHA*ABS(ALPHA)/2
025090,000350:
025091,000351: 21,3126 10000 CCS A
025092,000352: 21,3127 37763 CA BIT1 # DEL = SIGNUM(A) , (ZERO WHEN A IS ZERO),
025093,000353: 21,3130 13132 TCF +2 # PLUS ONE OR MINUS ONE OTHERWISE.
025094,000354: 21,3131 47763 CS BIT1
025095,000355: 21,3132 54065 TS DEL
025096,000356:
025097,000357: 21,3133 10065 CCS DEL
025098,000358: 21,3134 30061 CA OMEGA.K
025099,000359: 21,3135 13137 TCF +2
025100,000360: 21,3136 40061 CS OMEGA.K # DEL*OMEGA.K REPLACES OMEGA.K
025101,000361: 21,3137 54061 TS OMEGA.K
025102,000362:
025103,000363: 21,3140 60072 AD A2CNTRAL # DEL*OMEGA.K + ALPHA(2)/2
025104,000364: 21,3141 57521 XCH FUNCTION # STORED IN FUNCTION
025105,000365:
025106,000366: 21,3142 30072 CA A2CNTRAL
025107,000367: 21,3143 00006 EXTEND # CALCULATE ALPHA(2)/3
025108,000368: 21,3144 73304 MP .66667
025109,000369: 21,3145 60061 AD OMEGA.K
025110,000370: 21,3146 00006 EXTEND
025111,000371: 21,3147 70064 MP ACENTRAL # K(2)*THETA+ALPHA*(DEL*OMEG.K+ALPHA(2)/3)
025112,000372: 21,3150 26070 ADS K2THETA # FIRST AND SECOND TERMS SUMMED HERE.
025113,000373:
025114,000374: # THE FOLLOWING SECTION CALCULATES .707*DEL*FUNCTION(3/2) AND ADDS IT TO THE OTHER TWO TERMS OF NEGUSUM.
025115,000375:
![]() |
Page 598 |
025117,000377: 21,3151 30021 CA SR # CALL SEQUENCE FOR SPROOT REQUIRES THAT
025118,000378: 21,3152 60000 AD A # SR BE PRESERVED BY THE CALLER.
025119,000379: 21,3153 57540 XCH STORCDUY # THE KALMAN FILTER STORES INTO THE CELL
025120,000380: 21,3154 31521 CA FUNCTION # STORCDUY BEFORE USING IT OTHERWISE.
025121,000381: 21,3155 05417 TC SPROOT
025122,000382: 21,3156 23540 LXCH STORCDUY
025123,000383: 21,3157 22021 LXCH SR
025124,000384:
025125,000385: 21,3160 00006 EXTEND
025126,000386: 21,3161 71521 MP FUNCTION
025127,000387: 21,3162 57540 XCH STORCDUY
025128,000388: 21,3163 10065 CCS DEL
025129,000389: 21,3164 33305 CA .707GTS # THIS CELL CONTAINS SQUARE ROOT OF 1/2
025130,000390: 21,3165 13167 TCF +2
025131,000391: 21,3166 43305 CS .707GTS
025132,000392: 21,3167 00006 EXTEND
025133,000393: 21,3170 71540 MP STORCDUY
025134,000394: 21,3171 60070 AD K2THETA # NEGUSUM IS COMPLETE.
025135,000395:
025136,000396: 21,3172 10000 CCS A # SIGNUM(NEGUSUM) IS NEGATIVE OF THE SIGN
025137,000397: 21,3173 37763 CA BIT1 # WHICH WILL BE ATTACHED TO THE NEW VALUE
025138,000398: 21,3174 13176 TCF POSDRIVE # OF Q(R)ACCDOT.
025139,000399: 21,3175 47763 CS BIT1
025140,000400:
025141,000401: 21,3176 50066 POSDRIVE INDEX QRCNTR # SIGN OF NEW Q(R)ACCDOT OPPOSES THIS SIGN
025142,000402: 21,3177 55523 TS NEGUQ
025143,000403:
025144,000404: 21,3200 40000 COM
025145,000405: 21,3201 00006 EXTEND # SEND BACK JERK TERM
025146,000406: 21,3202 50066 INDEX ITEMP6
025147,000407: 21,3203 71532 MP ACCDOTQ
025148,000408: 21,3204 50066 INDEX ITEMP6
025149,000409: 21,3205 23733 LXCH QACDOTMP # STORE FOR 100 MS, THEN RELEASE TO FILTER
025150,000410: 21,3206 10066 CCS QRCNTR # LOOP COUNTER
025151,000411: 21,3207 01737 TC SLECTLAW # 2ND PASS. (FOR Q-AXIS)
025152,000412: # TRANSFORM JERKS BACK TO GIMBAL AXES.
025153,000413:
025154,000414: 21,3210 41533 CS QACCDOT # SCALED AT PI/2(7), AND COMPLEMENTED.
025155,000415: 21,3211 00006 EXTEND
025156,000416: 21,3212 71400 MP MR12 # SCALED AT 2
025157,000417: 21,3213 55567 TS Y3DOT
025158,000418: 21,3214 41535 CS RACCDOT # SCALED AT PI/2(7), AND COMPLEMENTED.
025159,000419: 21,3215 00006 EXTEND
025160,000420: 21,3216 71402 MP MR13 # SCALED AT 2
025161,000421: 21,3217 27567 ADS Y3DOT
025162,000422: 21,3220 27567 ADS Y3DOT # SCALED AT PI/2(7)
025163,000423:
025164,000424: 21,3221 41533 CS QACCDOT # SCALED AT PI/2(7), AND COMPLEMENTED.
025165,000425: 21,3222 00006 EXTEND
025166,000426: 21,3223 71401 MP MR22 # SCALED AT 1
![]() |
Page 599 |
025168,000428: 21,3224 55571 TS Z3DOT
025169,000429: 21,3225 41535 CS RACCDOT # SCALED AT PI/2(7), AND COMPLEMENTED.
025170,000430: 21,3226 00006 EXTEND
025171,000431: 21,3227 71403 MP MR23 # SCALED AT 1
025172,000432: 21,3230 27571 ADS Z3DOT # SCALED AT PI/2(7)
025173,000433:
025174,000434: 21,3231 03243 TC WRCHN12 # SEND GIMBAL DRIVES TO SERVOS
025175,000435: 21,3232 15733 TCF RESUME # WAIT UNTIL NEXT TRIM GIMBAL RUPT
025176,000436:
025177,000437: # WAITLIST TASKS TO SET TRIM GIMBAL TURN OFF BITS.
025178,000438:
025179,000439: 21,3233 37767 OFFGIMQ CAF ZERO # SET Q-AXIS FLAG TO ZERO
025180,000440: 21,3234 55523 TS NEGUQ
025181,000441: 21,3235 13240 TCF +3
025182,000442: 21,3236 37767 OFFGIMR CAF ZERO # SET R-AXIS FLAG TO ZERO
025183,000443: 21,3237 55525 TS NEGUR
025184,000444: 21,3240 03243 TC WRCHN12 # FLAGS TO CHANNEL BITS
025185,000445: 21,3241 15727 TCF TASKOVER
025186,000446:
025187,000447: # THE WRCHN12 SUBROUTINE SETS BITS 9,10,11,12 OF CHANNEL 12 ON THE BASIS OF THE CONTENTS OF NEGUQ,NEGUR WHICH ARE
025188,000448: # THE NEGATIVES OF THE TRIM GIMBAL DESIRED DRIVES.
025189,000449:
025190,000450: 21,3242 07400 BGIM OCTAL 07400
025191,000451: 21,3243 0066 CHNL12 EQUALS ITEMP6
025192,000452:
025193,000453: 21,3243 11523 WRCHN12 CCS NEGUQ
025194,000454: 21,3244 37752 CAF BIT10
025195,000455: 21,3245 13247 TCF +2
025196,000456: 21,3246 37753 CAF BIT9
025197,000457: 21,3247 54066 TS CHNL12
025198,000458:
025199,000459: 21,3250 11525 CCS NEGUR
025200,000460: 21,3251 37750 CAF BIT12
025201,000461: 21,3252 13254 TCF +2
025202,000462: 21,3253 37751 CAF BIT11
025203,000463: 21,3254 26066 ADS CHNL12 # (STORED RESULT NOT USED AT PRESENT)
025204,000464:
025205,000465: 21,3255 43242 CS BGIM
025206,000466: 21,3256 00006 EXTEND
025207,000467: 21,3257 03012 WAND 12
025208,000468: 21,3260 30066 CA CHNL12
025209,000469: 21,3261 00006 EXTEND
025210,000470: 21,3262 05012 WOR 12
025211,000471:
025212,000472: 21,3263 00002 TC Q # SIMPLE RETURN ALWAYS
025213,000473:
025214,000474: # Q,R-TRANSF TRANSFORMS A Y,Z GIMBAL COORDINATE VARIABLE PAIR (IN A,L) TO PILOT COORDINATES (Q/R), RETURNED IN A.
025215,000475: # (THE MATRIX M FROM GIMBAL TO PILOT AXES IS ASSUMED TO BE DONE BY T4RUPT AND SCALED AT +1.)
025216,000476:
025217,000477: 21,3264 0066 QRERAS EQUALS ITEMP6
025218,000478:
![]() |
Page 600 |
025220,000480: 21,3264 22066 QTRANSF LXCH QRERAS # SAVE Z-AXIS VARIABLE
025221,000481: 21,3265 00006 EXTEND
025222,000482: 21,3266 71405 MP M21 # (Y-AXIS)*M21
025223,000483: 21,3267 56066 XCH QRERAS # SAVE, GET Z-AXIS VARIABLE
025224,000484: 21,3270 00006 EXTEND
025225,000485: 21,3271 71401 MP M22 # (Z-AXIS)*M22
025226,000486: 21,3272 60066 AD QRERAS # SUM = (Y-AXIS)*M21 + (Z-AXIS)*M22
025227,000487: 21,3273 00002 TC Q # RETURN WITH SUM IN A
025228,000488:
025229,000489: 21,3274 22066 RTRANSF LXCH QRERAS # SAVE Z-AXIS VARIABLE
025230,000490: 21,3275 00006 EXTEND
025231,000491: 21,3276 71406 MP M31 # (Y-AXIS)*M31
025232,000492: 21,3277 56066 XCH QRERAS # SAVE, GET Z-AXIS VARIABLE
025233,000493: 21,3300 00006 EXTEND
025234,000494: 21,3301 71403 MP M32 # (Z-AXIS)*M32
025235,000495: 21,3302 60066 AD QRERAS # SUM = (Y-AXIS)*M31 + (Z-AXIS)*M32
025236,000496: 21,3303 00002 TC Q # RETURN WITH SUM IN A
025237,000497:
025238,000498: 21,3304 25253 .66667 DEC .66667
025239,000499: 21,3305 26501 .707GTS DEC 0.70711
025240,000500: 21,3306 25253 (2/3) DEC 0.66667
025241,000501:
![]() |
Page 601 |
025243,000503: # SUBROUTINE: TGOFFCAL MOD. NO. 1 DATE: AUGUST 22, 1966
025244,000504:
025245,000505: # START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
025246,000506:
025247,000507: # PROGRAM DESIGN BY: RICHARD D. GOSS (MIT/IL)
025248,000508:
025249,000509: # PROGRAM IMPLEMENTATION BY: JONATHAN D. ADDELSTON (ADAMS ASSOCIATES)
025250,000510:
025251,000511: # MODIFIED 30 NOV 66, TO USE ACCDOTQ AND ACCDOTR. CRAIG WORK
025252,000512: # MODIFIED AUGUST '67 TO CHANGE CALLING SEQUENCE AND MAKE MAXTIME ERASABLE PETER WEISSMAN
025253,000513:
025254,000514: # THIS SUBROUTINE CALCULATES THE TRIM GIMBAL SHUTDOWN TIME FOR EITHER THE Q OR THE R AXIS (DEPENDING ON THE
025255,000515: # CALLING SEQUENCE). THIS TIME IS SCALED FOR IMMEDIATE USE BY A WAITLIST CALL AS SHOWN IN THE CALLING SEQUENCES.
025256,000516: # IF THE TIME-TO-GO IS MORE THAN 'DRIVELIM', IT IS LIMITED TO 'MAXTIME'. IF
025257,000517: # THE TIME-TO-GO IS LESS THAN TEN MILLISECONDS, THE SHUTDOWN IS PERFORMED IMMEDIATELY AND THE WAITLIST CALL IS
025258,000518: # BY-PASSED.
025259,000519:
025260,000520: # THESE TIME-TO-GO CALCULATIONS ARE DESIGNED TO DRIVE THE TRIM GIMBAL TO A POSITION WHERE THE DESCENT ENGINE WILL
025261,000521: # CAUSE NO ANGULAR ACCELERATION. THIS SUBROUTINE IS CALLED ONLY FROM THE WAITLIST TASK CHEKDRIV WHICH IS
025262,000522: # INITIATED ONLY WHEN THE TRIM GIMBAL CONTROL LAW HAS LOST CONTROL OF THE LEM VEHICLE ATTITUDE AND MUST RETURN TO
025263,000523: # THE USE OF REACTION CONTROL SYSTEM JETS.
025264,000524:
025265,000525: # CALLING SEQUENCES:
025266,000526:
025267,000527: # CAF ZERO INDEX FOR Q-AXIS.
025268,000528: # TC TGOFFCAL
025269,000529: # CAF NEGMAX RETURN HERE FOR NO Q DRIVE.
025270,000530: # TS (QTIME) RETURN HERE WITH TIME IN A (DECASECONDS)
025271,000531:
025272,000532: # CAF TWO INDEX FOR R-AXIS.
025273,000533: # TC TGOFFCAL
025274,000534: # CAF NEGMAX RETURN HERE FOR NO R DRIVE.
025275,000535: # TS (RTIME) RETURN HERE WITH TIME IN A (DECASECONDS)
025276,000536:
025277,000537: # SUBROUTINES CALLED: NONE, BUT WRCHNL12 IS CALLED AFTER BOTH TGOFFCALL CALLS.
025278,000538:
025279,000539: # NORMAL EXITS: TO WAITLIST CALL OR BEYOND 2CADR IN CALLING SEQUENCE AS SPECIFIED ABOVE.
025280,000540:
025281,000541: # ALARM OR ABORT EXIT MODES: NONE
025282,000542:
025283,000543: # INPUT: 1. THE AXIS INDEXER: 0 FOR Q, 2 FOR R (SEE CALLING SEQUENCES)
025284,000544: # 2. THE SIGNED TIME DERIVATIVE OF ACCELERATION (QACCDOT OR RACCDOT) SCALED AT PI/2(7) RAD/SEC(3).
025285,000545: # 3. THE ACCELERATION APPROXIMATION FROM THE DESCENT KALMAN FILTER TRANSFORMED TO PILOT AXES (ALPHAQ OR
025286,000546: # ALPHAR) SCALED AT PI/8 RAD/SEC(2).
025287,000547:
025288,000548: # 4. CHANNEL 12 CONTAINS THE GIMBAL DRIVES AND OTHER BITS.
025289,000549: # OUTPUT 5. THE NEGATIVE GIMBAL DRIVE FLAG (NEGUQ AND NEGUR) WHERE A +1 BIT REQUESTS POSITIVE GIMBAL DRIVE
025290,000550: # (ANGULAR ACCELERATION DECREASING), A -1 BIT REQUESTS NEGATIVE GIMBAL DRIVE (ANG. ACC. INCREASING).
025291,000551: # A ZERO INDICATES NO DRIVE.
025292,000552: # 6. TIME REQUIRED TO ZERO OFFSET, SCALED FOR Q(R)GIMTIMR.
025293,000553:
![]() |
Page 602 |
025295,000555: # ERASABLE STORAGE CONFIGURATION (NEEDED BY THE INDEXING METHODS):
025296,000556:
025297,000557: # NEGUQ ERASE +2 NEGATIVE OF Q-AXIS GIMBAL DRIVE
025298,000558: # (SPWORD) EQUALS NEGUQ +1 ANY S.P. ERASABLE NUMBER, NOW THRSTCMD
025299,000559: # NEGUR EQUALS NEGUQ +2 NEGATIVE OF R-AXIS GIMBAL DRIVE
025300,000560:
025301,000561: # ACCDOTQ ERASE +2 Q-JERK TERM SCALED AT PI/2(7) RAD/SEC(3)
025302,000562: # (SPWORD) EQUALS ACCDOTQ +1 ANY S.P. ERASABLE NUMBER NOW QACCDOT
025303,000563: # ACCDOTR EQUALS ACCDOTQ +2 R-JERK TERM SCALED AT PI/2(7) RAD/SEC(3)
025304,000564: # ACCDOTQ,ACCDOTR ARE MAGNITUDES.
025305,000565: # ALPHAQ ERASE +2 Q-AXIS ACCELERATION SCALED AT PI/8 R/S2
025306,000566: # (SPWORD) EQUALS ALPHAQ +1 ANY S.P. ERASABLE NUMBER, NOW OMEGAR
025307,000567: # ALPHAR EQUALS ALPHAQ +2 R-AXIS ACCELERATION SCALED AT PI/8 R/S2
025308,000568: # NOTE: NOW OMEGAP,OMEGAQ PRECEDE ALPHAQ
025309,000569:
025310,000570: # DEBRIS: L, Q, ITEMP1, ITEMP2, ITEMP6
025311,000571:
025312,000572:
025313,000573: 21,3307 54061 TGOFFCAL TS QRNDXER # Q OR R AXIS INDEXER
025314,000574: 21,3310 50061 INDEX QRNDXER # GET JERK TERM MAGNITUDE SCALED AT
025315,000575: 21,3311 31532 CAE ACCDOTQ # PI/2(7) IN RADIANS/SEC(3).
025316,000576: 21,3312 00006 EXTEND # UNLESS THETA TRIPLE-DOT MAGNITUDE IS NON
025317,000577: 21,3313 63373 BZMF TGOFFNOW # -ZERO, SET DRIVE TO ZERO NOW.
025318,000578: 21,3314 54062 TS NZACCDOT # SAVE NON-ZERO DENOMINATOR.
025319,000579: 21,3315 50061 INDEX QRNDXER # INITIALIZE THE AOSTERM WHICH WILL BE UP-
025320,000580: 21,3316 31417 CAE ALPHAQ # DATED IN THE DUMMYFIL CALCULATION FOR
025321,000581: 21,3317 00006 EXTEND # USE IN THE QRAXIS RATE DERIVATION. SET
025322,000582: 21,3320 73403 MP .1-.05K) # AOSTERM TO ALPHA*CSP*(1-.5*K), WHERE CSP
025323,000583: 21,3321 56001 XCH L # IS .1 SEC, K IS .5 THEN AOSTERM IS SET
025324,000584: 21,3322 10061 CCS QRNDXER # TO .075*ALPHA, SCALED AT PI/4,WHILE
025325,000585: 21,3323 50000 INDEX A # ALPHA IS SCALED AT PI/8( THE CONSTANT IS
025326,000586: 21,3324 23664 LXCH AOSQTERM # SCALED AT 2.
025327,000587: 21,3325 50061 INDEX QRNDXER # GET ACCELERATION SCALED AT PI/8
025328,000588: 21,3326 31417 CAE ALPHAQ # RAD/SEC(2).
025329,000589: 21,3327 00006 EXTEND # IF ACCELERATION IS ALREADY ZERO, EXIT.
025330,000590: 21,3330 13373 BZF TGOFFNOW # OTHERWISE, PROCEED WITH NON-ZERO ALPHA.
025331,000591: 21,3331 00006 EXTEND # SET NEGUQ TO THE SIGN OF ALPHA. THEN USE
025332,000592: 21,3332 63336 BZMF NEGALPH # THE MAGNITUDE OF ALPHA TO COMPUTE TIME
025333,000593: 21,3333 54066 TS ITEMP6
025334,000594: 21,3334 37763 CAF BIT1
025335,000595: 21,3335 13341 TCF +4
025336,000596: 21,3336 40000 NEGALPH CS A
025337,000597: 21,3337 54066 TS ITEMP6
025338,000598: 21,3340 47763 CS BIT1
025339,000599: 21,3341 50061 INDEX QRNDXER # STORE THE DRIVE DIRECTION FLAG
025340,000600: 21,3342 55523 TS NEGUQ # TIME = MAGNITUDE OF (ALPHA/ACCDOT),
025341,000601: # MINUS THE SIGN OF Q(R)ACCDOT LEFT IN A.
025342,000602: 21,3343 00006 EXTEND # STORE ACCDOT TO REFLECT THE CHANGE IN
025343,000603: 21,3344 50061 INDEX QRNDXER # GIMBAL DRIVE DIRECTION (POSSIBLE). THIS
![]() |
Page 603 |
025345,000605: 21,3345 71532 MP ACCDOTQ # CAN BE ESSENTIAL FOR DUMMYFIL, IN CASE
025346,000606: 21,3346 50061 INDEX QRNDXER # Q(R)ACCDOT IS NOT INITIALIZED BEFORE
025347,000607: 21,3347 23533 LXCH QACCDOT # EXECUTING DUMMYFIL.
025348,000608: 21,3350 30062 CAE NZACCDOT # WILL ALPHA/ACCDOT EXCEED MAX DRIVE TIME?
025349,000609: 21,3351 00006 EXTEND
025350,000610: 21,3352 71747 MP DRIVELIM # MAX DRIVE TIME AT 16 SEC (ERASABLE LOAD)
025351,000611: 21,3353 00006 EXTEND
025352,000612: 21,3354 60066 SU ITEMP6 # 15*ACCDOT - ABS(ALPHA) AT PI/8
025353,000613: 21,3355 00006 EXTEND
025354,000614: 21,3356 63370 BZMF USEMAX # LARGE T. USE MAX DRIVE TIME INSTEAD.
025355,000615:
025356,000616: 21,3357 30066 CAE ITEMP6 # DRIVE IME = ABS(ALPHA/ACCDOT)
025357,000617: 21,3360 00006 EXTEND # RESCALE QUOTIENT TO TIMER(ERASABLE LOAD)
025358,000618: 21,3361 50061 INDEX QRNDXER
025359,000619: 21,3362 71750 MP DRIVFACQ # (10 SCALED AT 2(10)) X (DAMPING FACTOR)
025360,000620: 21,3363 00006 EXTEND
025361,000621: 21,3364 10062 DV NZACCDOT
025362,000622:
025363,000623: 21,3365 00006 ZEROTEST EXTEND # BE SURE WAITLIST TIME IS GREATER THAN 0.
025364,000624: 21,3366 63373 BZMF TGOFFNOW
025365,000625:
025366,000626: 21,3367 13371 TCF +2 # IT IS, RETURN.
025367,000627:
025368,000628: 21,3370 31755 USEMAX CAE MAXTIME # USE MAXIMUM DRIVE TIME.
025369,000629: 21,3371 50002 +2 INDEX Q # RETURN TO Q+1 WITH TIME IN A.
025370,000630: 21,3372 00001 TC 1
025371,000631:
025372,000632: 21,3373 37767 TGOFFNOW CAF ZERO # MAKE SURE PLUS ZERO FOR DRIVE FLAG
025373,000633: 21,3374 50061 INDEX QRNDXER # TURN OFF DRIVE FLAG NOW
025374,000634: 21,3375 55523 TS NEGUQ
025375,000635: 21,3376 00002 TC Q # RETURN TO Q ( WITHOUT A DRIVE TIME).
025376,000636:
025377,000637: 21,3377 04736 TC CCSHOLE # (FILLER)
025378,000638:
025379,000639: # **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
025380,000640:
025381,000641: 21,3400 0061 QRNDXER EQUALS ITEMP1 # INDEXER FOR Q OR R AXIS
025382,000642: 21,3400 0062 NZACCDOT EQUALS ITEMP2 # TEMPORARY STORAGE FOR NON-ZERO ACCDOT
025383,000643: 21,3400 50437 -2MINWL DEC -12000 B-14 # - 2 MINUTES SCALED FOR WAITLIST
025384,000644: 21,3401 60777 -2MIN256 DEC -.46875 # - 2 MINUTES SCALED AT 256
025385,000645: 21,3402 31000 128/164 OCTAL 31000 # 128/163.84 CONVERTING 256 TO WAITLIST/2
025386,000646: 21,3403 01146 .1-.05K) OCTAL 01146 # .0375=.075 SCALED AT 2
025387,000647: # START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
025388,000648:
025389,000649: 21,3404 11764 TESTCNTR CCS SIMPCNTR # USE BIGBOX FOR PASSCTR INITIALIZATION
025390,000650: 21,3405 13410 TCF BIGLOAD # UNTIL SIMPCNTR IS +0. THEN USE COUNTBOX.
025391,000651:
025392,000652: 21,3406 31743 CAE COUNTBOX
025393,000653: 21,3407 13612 TCF LOADCNTR
![]() |
Page 604 |
025395,000655: 21,3410 31766 BIGLOAD CAE BIGBOX
025396,000656: 21,3411 13612 TCF LOADCNTR
025397,000657:
025398,000658: # **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
025399,000659:
025400,000660: # THE NEXT FIVE CELLS ARE LEFT IN FOR SPACING.
025401,000661:
025402,000662: 21,3412 27522 ADS FUNCTION +1 # MULTIPLIER AS C(A). MULTIPLY THESE AND
025403,000663: 21,3413 54001 TS L # USE ONLY HIGH ORDER PART OF PRODUCT.
025404,000664: 21,3414 13416 TCF +2 # ADD S.P. LOW PRODUCT TO LOW PART OF HIGH
025405,000665: 21,3415 27521 ADS FUNCTION # PRODUCT. CHECK OVERFLOW, CARRY, AND
025406,000666: 21,3416 00002 TC Q # RETURN.
End of include-file TRIM_GIMBAL_CONTROL_SYSTEM.agc. Parent file is MAIN.agc