Source Code
These source-code files are part of a reconstructed copy of Comanche 51, the
initial release (though not the final mission release) of the Apollo 11
Command Module (CM) Apollo Guidance Computer (AGC) software. The flown, final
release was Comanche 55. The reconstruction is believed to be exactly accurate,
but in the absence of an actual Apollo-era listing of Comanche 51, some
explanation of the reconstruction process is needed to insure confidence in
that accuracy.
The starting point was the source code of Comanche 55, whose original source code is available. Comanche 55 source code was then modified by undoing changes known to have been made between revisions 51 and 55. The most-significant steps involved reverting changes related to the R-2 lunar potential model, the details of which were known from the previous, separate, independent reconstruction of the Apollo 10 Lunar Module software Luminary 69/2. The now-reconstructed Comanche 51 source code was verified by assembling it and checking that the assembled code had the expected known-correct memory-bank checksums. Note that page numbers in the reconstructed code match those on the Comanche 55 or Luminary 69 printouts, although the source code would likely have different page numbers in a contemporary Comanche 51 listing. Annotations that were not present in the contemporary source code have been added to the reconstructed code to justify each change relative to Comanche 55. Here's a guide to some of the Apollo documentation relevant to those annotations:
Comments expected to have been present in the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC Project's GitHub repository. |
041994,000002: ## Copyright: Public domain.
041995,000003: ## Filename: TVCDAPS.agc
041996,000004: ## Purpose: A section of Comanche revision 051.
041997,000005: ## It is part of the reconstructed source code for the
041998,000006: ## original release of the flight software for the Command
041999,000007: ## Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11.
042000,000008: ## The code has been recreated from a copy of Comanche 055. It
042001,000009: ## has been adapted such that the resulting bugger words
042002,000010: ## exactly match those specified for Comanche 51 in NASA drawing
042003,000011: ## 2021153D, which gives relatively high confidence that the
042004,000012: ## reconstruction is correct.
042005,000013: ## Reference: pp. 961-978
042006,000014: ## Assembler: yaYUL
042007,000015: ## Contact: Ron Burkey <info@sandroid.org>.
042008,000016: ## Website: www.ibiblio.org/apollo/index.html
042009,000017: ## Mod history: 2019-07-30 MAS Created from Comanche 55.
042010,000018:
Page 961 |
042012,000020: # PROGRAM NAME....TVCDAP, CONSISTING OF PITCHDAP, YAWDAP, ETC.
042013,000021: # LOG SECTION...TVCDAPS SUBROUTINE...DAPCSM
042014,000022: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968
042015,000023:
042016,000024: # FUNCTIONAL DESCRIPTION....
042017,000025:
042018,000026: # SELF-PERPETUATING T5 TASKS WHICH GENERATE THE COMMAND SIGNALS
042019,000027: # FOR THE PITCH AND YAW SPS GIMBAL ACTUATORS DURING TVC (SPS) BURNS,
042020,000028: # IN RESPONSE TO BODY-AXIS RATE COMMANDS FROM CROSS-PRODUCT STEERING
042021,000029: # (S40.8). IF NO STEERING (IMPULSIVE BURNS) MAINTAINS ATTITUDE-HOLD
042022,000030: # ABOUT THE REFERENCE (INITIAL) DIRECTIONS (ZERO RATE COMMANDS).
042023,000031:
042024,000032: # THE PITCH AND YAW LOOPS ARE SEPARATE, BUT STRUCTURED IDENTICALLY.
042025,000033: # EACH ATTITUDE-RATE LOOP INCLUDES GIMBAL ANGLE RATE DERIVATION,
042026,000034: # GIMBAL/BODY AXIS TRANSFORMATION, BODY-AXIS ATTITUDE ERROR
042027,000035: # INTEGRATION WITH ERROR LIMITING, THE GENERALIZED 6TH-ORDER FILTER
042028,000036: # FOR CSM OR CSM/LM OPERATION, A FILTER OUTPUT LIMITER,
042029,000037: # CG-OFFSET TRACKER FILTER, AND THE CG-TRACKER MINOR LOOP.
042030,000038:
042031,000039: # THE DAPS ARE CYCLIC, CALLING EACH OTHER AT 1/2 THE DAP SAMPLE
042032,000040: # TIME, AS DETERMINED BY T5TVCDT. THE ACTUATOR COMMANDS ARE
042033,000041: # REGENERATED AS ANALOG VOLTAGES BY THE OPTICS ERROR COUNTERS, WHICH
042034,000042: # TRANSMIT THE SIGNAL TO THE ACTUATOR SERVOS WHEN THERE IS PROPER CDU
042035,000043: # MODING.
042036,000044:
042037,000045: # CALLING SEQUENCE.... (TYPICALLY)
042038,000046:
042039,000047: # T5 CALL OF TVCDAPON (TVCINITIALIZE) BY DOTVCON (P40)
042040,000048: # T5 CALL OF DAPINIT (TVCDAPS) BY TVCINIT4 (TVCINITIALIZE)
042041,000049: # T5 CALL OF PITCHDAP BY DAPINIT
042042,000050: # T5 CALL OF YAWDAP BY PITCHDAP
042043,000051: # T5 CALL OF PITCHDAP BY YAWDAP
042044,000052: # ETC.
042045,000053: # (AUTOMATIC SEQUENCING FROM TVCDAPON)
042046,000054:
042047,000055: # NORMAL EXIT MODE....RESUME
042048,000056:
042049,000057: # ALARM OR ABORT EXIT MODES....NONE
042050,000058:
042051,000059: # SUBROUTINES CALLED....
042052,000060:
042053,000061: # HACK FOR STROKE TEST (V68) WAVEFORM GENERATION
042054,000062: # PCOPY, YCOPY FOR COPY-CYCLES (USED ALSO BY TVC RESTART PACKAGE)
042055,000063: # DAPINIT FOR INITIAL CDUS FOR RATE MEASUREMENTS
042056,000064: # ERRORLIM, ACTLIM FOR INPUT (ATTITUDE-ERROR INTEGRATION) AND
042057,000065: # OUTPUT (ACTUATOR COMMAND) LIMITING, COMMON TO PITCH AND
042058,000066: # YAW DAPS
042059,000067: # FWDFLTR (INCLUDING OPTVARK) AND PRECOMP, TO COMPUTE FILTER
042060,000068: # OUTPUTS AND STORAGE VALUES
042061,000069: # RESUME
042062,000070:
Page 962 |
042064,000072: # OTHER INTERFACES....
042065,000073:
042066,000074: # S40.8 CROSS-PRODUCT STEERING FOR BODY AXIS RATE COMMANDS OMEGAY,ZC
042067,000075: # S40.15 FOR THE INITIAL DAP GAINS VARK AND 1/CONACC
042068,000076: # TVCEXECUTIVE FOR DAP GAIN UPDATES AND TMC LOOP OPERATIONS
042069,000077: # TVCRESTART PACKAGE FOR TVC RESTART PROTECTION.
042070,000078:
042071,000079: # ERASABLE INITIALIZATION REQUIRED....
042072,000080:
042073,000081: # PAD-LOAD ERASABLES (SEE ERASABLE ASSIGNMENTS)
042074,000082: # CONFIGURATION BITS (14, 13) OF DAPDATR1 AS IN R03
042075,000083: # ENGINE-ON BIT (11.13) FOR RESTARTS
042076,000084: # TVCPHASE FOR RESTARTS (SEE DOTVCON, AND TVCINIT4)
042077,000085: # T5 BITS (15,14 OF FLAGWRD6) FOR RESTARTS
042078,000086: # MISCELLANEOUS VARIABLES SET UP OR COMPUTED BY TVCDAPON....TVCINIT4,
042079,000087: # INCLUDING THE ZEROING OF TEMPORARIES BY MRCLEAN
042080,000088: # CDUX,Y,Z AND SINCDUX.... COSCDUZ AS PREPARED BY QUICTRIG (WITH
042081,000089: # UPDATES EVERY 1/2 SECOND)
042082,000090: # ALSO G+N PRIMARY, TVC ENABLE, AND OPTICS ERROR COUNTER ENABLE
042083,000091: # UNLESS BENCH-TESTING.
042084,000092:
042085,000093: # OUTPUT....
042086,000094:
042087,000095: # TVCPITCH AND TVCYAW WITH COUNTER RELEASE (11.14 AND 11.13 INCREMEN-
042088,000096: # TAL COMMANDS TO OPTICS ERROR COUNTERS), FILTER NODES, BODY-
042089,000097: # AXIS ATTITUDE ERROR INTEGRATOR, TOTAL ACTUATOR COMMANDS,
042090,000098: # OFFSET-TRACKER-FILTER OUTPUTS, ETC.
042091,000099:
042092,000100: # DEBRIS....
042093,000101:
042094,000102: # MUCH, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
042095,000103:
042096,000104: 17,2552 BANK 17
042097,000105: 20,2000 SETLOC DAPS2
042098,000106: 20,2000 BANK
042099,000107:
042100,000108: 20,2530 E6,1702 EBANK= BZERO
042101,000109:
042102,000110: 20,2530 COUNT* $$/DAPS
042103,000111:
Page 963 |
042105,000113: # PITCH TVCDAP STARTS HERE....(INCORPORATES CSM/LEM DAP FILTER, MODOR DESIGN)
042106,000114:
042107,000115: 20,2530 22016 PITCHDAP LXCH BANKRUPT # T5 ENTRY, NORMAL OR VIA DAPINIT
042108,000116: 20,2531 00006 EXTEND
042109,000117: 20,2532 22012 QXCH QRUPT
042110,000118:
042111,000119: 20,2533 33475 CAF YAWT5 # SET UP T5 CALL FOR YAW AUTOPILOT (LOW-
042112,000120: 20,2534 55312 TS T5LOC # ORDER PART OF 2CADR ALREADY THERE)
042113,000121: 20,2535 31625 CAE T5TVCDT
042114,000122: 20,2536 54030 TS TIME5
042115,000123:
042116,000124: 20,2537 11574 PSTROKER CCS STROKER # (STRKFLG) CHECK FOR STROKE TEST
042117,000125: 20,2540 03533 TC HACK # TEST-START OR TEST-IN-PROGRESS
042118,000126: 20,2541 12543 TCF +2 # NO-TEST
042119,000127: 20,2542 03533 TC HACK # TEST-IN-PROGRESS
042120,000128:
042121,000129: 20,2543 30033 PCDUDOTS CAE CDUY # COMPUTE CDUYDOT (USED BY PITCH AND YAW)
042122,000130: 20,2544 57645 XCH PCDUYPST
042123,000131: 20,2545 00006 EXTEND
042124,000132: 20,2546 21645 MSU PCDUYPST
042125,000133: 20,2547 02560 TCR RLIMTEST # RATE TEST
042126,000134: 20,2550 55647 TS MCDUYDOT # (MINUS, SC.AT 1/2TVCDT REVS/SEC)
042127,000135:
042128,000136: 20,2551 30034 CAE CDUZ # COMPUTE CDUZDOT (USED BY PITCH AND YAW)
042129,000137: 20,2552 57646 XCH PCDUZPST
042130,000138: 20,2553 00006 EXTEND
042131,000139: 20,2554 21646 MSU PCDUZPST
042132,000140: 20,2555 02560 TCR RLIMTEST # RATE TEST
042133,000141: 20,2556 55650 TS MCDUZDOT # (MINUS, SC.AT 1/2TVCDT REVS/SEC)
042134,000142: 20,2557 12571 TCF PINTEGRL
042135,000143:
042136,000144: 20,2560 55611 RLIMTEST TS TTMP1 # TEST FOR EXCESSIVE CDU RATES (GREATER
042137,000145: 20,2561 00006 EXTEND # THAN 2.33 DEG IN ONE SAMPLE PERIOD)
042138,000146: 20,2562 73476 MP 1/RTLIM
042139,000147: 20,2563 00006 EXTEND
042140,000148: 20,2564 12567 BZF +3
042141,000149: 20,2565 35021 CAF ZERO
042142,000150: 20,2566 55611 TS TTMP1
042143,000151: 20,2567 31611 CAE TTMP1
042144,000152: 20,2570 00002 TC Q
042145,000153:
042146,000154: 20,2571 00006 PINTEGRL EXTEND # COMPUTE INTEGRAL OF BODY-AXIS PITCH-RATE
042147,000155: 20,2572 31576 DCA PERRB # ERROR, SC.AT B-1 REVS
042148,000156: 20,2573 53703 DXCH ERRBTMP
042149,000157:
042150,000158: 20,2574 00006 EXTEND
042151,000159: 20,2575 31530 DCA OMEGAYC
042152,000160: 20,2576 21703 DAS ERRBTMP
042153,000161:
Page 964 |
042155,000163: 20,2577 40746 CS COSCDUZ # PREPARE BODY-AXIS PITCH RATE, OMEGAYB
042156,000164: 20,2600 00006 EXTEND
042157,000165: 20,2601 70750 MP COSCDUX
042158,000166: 20,2602 20001 DDOUBL
042159,000167: 20,2603 00006 EXTEND
042160,000168: 20,2604 71647 MP MCDUYDOT
042161,000169: 20,2605 20001 DDOUBL
042162,000170: 20,2606 53536 DXCH OMEGAYB
042163,000171:
042164,000172: 20,2607 41650 CS MCDUZDOT
042165,000173: 20,2610 00006 EXTEND
042166,000174: 20,2611 70742 MP SINCDUX
042167,000175: 20,2612 20001 DDOUBL
042168,000176: 20,2613 21536 DAS OMEGAYB # (COMPLETED OMEGAYB, SC.AT 1/2TVCDT REVS)
042169,000177:
042170,000178: 20,2614 00006 EXTEND # PICK UP -OMEGAYB (SIGN CHNG, INTEGRATE)
042171,000179: 20,2615 41536 DCS OMEGAYB
042172,000180: 20,2616 21703 DAS ERRBTMP
042173,000181:
042174,000182: 20,2617 03124 PERORLIM TCR ERRORLIM # PITCH BODY-AXIS-ERROR INPUT LIMITER
042175,000183:
042176,000184: 20,2620 00006 PFORWARD EXTEND # PREPARE THE FILTER STORAGE LOCATIONS
042177,000185: 20,2621 31542 DCA PTMP1 # FOR THE PITCH CHANNEL
042178,000186: 20,2622 53707 DXCH TMP1
042179,000187: 20,2623 00006 EXTEND
042180,000188: 20,2624 31546 DCA PTMP3
042181,000189: 20,2625 53713 DXCH TMP3
042182,000190: 20,2626 00006 EXTEND
042183,000191: 20,2627 31552 DCA PTMP5
042184,000192: 20,2630 53717 DXCH TMP5
042185,000193:
042186,000194: 20,2631 03156 TCR FWDFLTR # GO COMPUTE PRESENT OUTPUT
042187,000195: # (INCLUDES VARIABLE GAIN PACKAGE)
042188,000196:
042189,000197: 20,2632 00006 POFFSET EXTEND
042190,000198: 20,2633 31606 DCA PDELOFF
042191,000199: 20,2634 21705 DAS CMDTMP # NOW SCALED AT B+0 ASCREV
042192,000200:
042193,000201: 20,2635 03137 PACLIM TCR ACTLIM # ROUND OFF & LIMIT PITCH ACTUATOR COMMAND
042194,000202:
042195,000203: 20,2636 41623 POUT CS PCMD # INCREMENTAL PITCH COMMAND
042196,000204: 20,2637 61704 AD CMDTMP
042197,000205: 20,2640 26054 ADS TVCPITCH # UPDATE THE ERROR COUNTER (NO RESTART-
042198,000206: # PROTECT, SINCE ERROR CNTR ZEROED)
042199,000207:
042200,000208: 20,2641 35005 CAF BIT11 # BIT FOR TVCPITCH COUNT RELEASE
042201,000209: 20,2642 00006 EXTEND
042202,000210: 20,2643 05014 WOR CHAN14
042203,000211:
042204,000212: 20,2644 00006 PPRECOMP EXTEND # PREPARE THE FILTER STORAGE FOR PITCH
Page 965 |
042206,000214: 20,2645 31544 DCA PTMP2
042207,000215: 20,2646 53711 DXCH TMP2
042208,000216: 20,2647 00006 EXTEND
042209,000217: 20,2650 31550 DCA PTMP4
042210,000218: 20,2651 53715 DXCH TMP4
042211,000219: 20,2652 00006 EXTEND
042212,000220: 20,2653 31554 DCA PTMP6
042213,000221: 20,2654 53721 DXCH TMP6
042214,000222:
042215,000223: 20,2655 03247 TCR PRECOMP # TO THE FILTER FOR PRECOMPUTATION
042216,000224:
042217,000225: 20,2656 31602 DELBARP CAE DELPBAR +1 # UPDATE PITCH OFFSET-TRACKER-FILTER
042218,000226: 20,2657 00006 EXTEND
042219,000227: 20,2660 73500 MP E(-AT)
042220,000228: 20,2661 55701 TS DELBRTMP +1
042221,000229: 20,2662 31601 CAE DELPBAR
042222,000230: 20,2663 00006 EXTEND
042223,000231: 20,2664 73500 MP E(-AT)
042224,000232: 20,2665 21701 DAS DELBRTMP
042225,000233: 20,2666 31704 CAE CMDTMP
042226,000234: 20,2667 00006 EXTEND
042227,000235: 20,2670 73477 MP 1-E(-AT)
042228,000236: 20,2671 21701 DAS DELBRTMP
042229,000237:
042230,000238: 20,2672 02674 PCOPYCYC TCR PCOPY # PITCH COPYCYCLE
042231,000239:
042232,000240: 20,2673 15333 PDAPEND TCF RESUME # PITCH DAP COMPLETED
Page 966 |
042234,000242: # PITCH TVCDAP COPYCYCLE SUBROUTINE (CALLED VIA PITCH TVCDAP OR TVC RESTART PACKAGE)
042235,000243:
042236,000244: 20,2674 25644 PCOPY INCR TVCPHASE # RESTART-PROTECT THE COPYCYCLE. (1)
042237,000245: # NOTE POSSIBLE RE-ENTRY FROM RESTART
042238,000246: # PACKAGE, SHOULD A RESTART OCCUR
042239,000247: # DURING PITCH COPYCYCLE.
042240,000248:
042241,000249: 20,2675 00006 EXTEND
042242,000250: 20,2676 31707 DCA TMP1
042243,000251: 20,2677 53542 DXCH PTMP1
042244,000252: 20,2700 00006 EXTEND
042245,000253: 20,2701 31711 DCA TMP2
042246,000254: 20,2702 53544 DXCH PTMP2
042247,000255: 20,2703 00006 EXTEND
042248,000256: 20,2704 31713 DCA TMP3
042249,000257: 20,2705 53546 DXCH PTMP3
042250,000258: 20,2706 00006 EXTEND
042251,000259: 20,2707 31715 DCA TMP4
042252,000260: 20,2710 53550 DXCH PTMP4
042253,000261: 20,2711 00006 EXTEND
042254,000262: 20,2712 31717 DCA TMP5
042255,000263: 20,2713 53552 DXCH PTMP5
042256,000264: 20,2714 00006 EXTEND
042257,000265: 20,2715 31721 DCA TMP6
042258,000266: 20,2716 53554 DXCH PTMP6
042259,000267:
042260,000268: 20,2717 00006 PMISC EXTEND # MISC....PITCH-RATE-ERROR INTEGRATOR
042261,000269: 20,2720 31703 DCA ERRBTMP
042262,000270: 20,2721 55477 TS AK1 # FOR PITCH NEEDLES, SC.AT B-1 REVS
042263,000271: 20,2722 53576 DXCH PERRB
042264,000272:
042265,000273: 20,2723 31704 CAE CMDTMP # PITCH ACTUATOR COMMAND
042266,000274: 20,2724 55623 TS PCMD
042267,000275:
042268,000276: 20,2725 00006 EXTEND # PITCH OFFSET-TRACKER-FILTER
042269,000277: 20,2726 31701 DCA DELBRTMP
042270,000278: 20,2727 53602 DXCH DELPBAR
042271,000279:
042272,000280: 20,2730 25644 INCR TVCPHASE # PITCH COPYCYCLE COMPLETED (2)
042273,000281:
042274,000282: 20,2731 00002 TC Q
042275,000283:
Page 967 |
042277,000285: # YAW TVCDAP STARTS HERE....(INCORPORATES CSM/LEM DAP FILTER, MODOR DESIGN)
042278,000286:
042279,000287: 20,2732 22016 YAWDAP LXCH BANKRUPT # T5 ENTRY, NORMAL
042280,000288: 20,2733 00006 EXTEND
042281,000289: 20,2734 22012 QXCH QRUPT
042282,000290:
042283,000291: 20,2735 33473 CAF PITCHT5 # SET UP T5 CALL FOR PITCH AUTOPILOT (LOW-
042284,000292: 20,2736 55312 TS T5LOC # ORDER PART OF 2CADR ALREADY THERE)
042285,000293: 20,2737 31625 CAE T5TVCDT
042286,000294: 20,2740 54030 TS TIME5
042287,000295:
042288,000296: 20,2741 11574 YSTROKER CCS STROKER # (STRKFLG) CHECK FOR STROKE TEST
042289,000297: 20,2742 03533 TC HACK # TEST-START OR TEST-IN-PROGRESS
042290,000298: 20,2743 12745 TCF +2 # NO-TEST
042291,000299: 20,2744 03533 TC HACK # TEST-IN-PROGRESS
042292,000300:
042293,000301: # USE BODY RATES FROM PITCHDAP (PCDUDOTS)
042294,000302:
042295,000303: 20,2745 00006 YINTEGRL EXTEND # COMPUTE INTEGRAL OF BODY-AXIS YAW-RATE
042296,000304: 20,2746 31600 DCA YERRB # ERROR, SC.AT B-1 REVS
042297,000305: 20,2747 53703 DXCH ERRBTMP
042298,000306:
042299,000307: 20,2750 00006 EXTEND
042300,000308: 20,2751 31532 DCA OMEGAZC
042301,000309: 20,2752 21703 DAS ERRBTMP
042302,000310:
042303,000311: 20,2753 30746 CAE COSCDUZ # PREPARE BODY-AXIS YAW-RATE, OMEGAZB
042304,000312: 20,2754 00006 EXTEND
042305,000313: 20,2755 70742 MP SINCDUX
042306,000314: 20,2756 20001 DDOUBL
042307,000315: 20,2757 00006 EXTEND
042308,000316: 20,2760 71647 MP MCDUYDOT
042309,000317: 20,2761 20001 DDOUBL
042310,000318: 20,2762 53540 DXCH OMEGAZB
042311,000319:
042312,000320: 20,2763 41650 CS MCDUZDOT
042313,000321: 20,2764 00006 EXTEND
042314,000322: 20,2765 70750 MP COSCDUX
042315,000323: 20,2766 20001 DDOUBL
042316,000324: 20,2767 21540 DAS OMEGAZB # (COMPLETED OMEGAZB, SC.AT 1/2TVCDT REVS)
042317,000325:
042318,000326: 20,2770 00006 EXTEND # PICK UP -OMEGAZB (SIGN CHNG, INTEGRATE)
042319,000327: 20,2771 41540 DCS OMEGAZB
042320,000328: 20,2772 21703 DAS ERRBTMP
042321,000329:
042322,000330: 20,2773 03124 YERORLIM TCR ERRORLIM # YAW BODY-AXIS-ERROR INPUT LIMITER
042323,000331:
042324,000332: 20,2774 00006 YFORWARD EXTEND # PREPARE THE FILTER STORAGE LOCATIONS
042325,000333: 20,2775 31556 DCA YTMP1 # FOR THE YAW CHANNEL
Page 968 |
042327,000335: 20,2776 53707 DXCH TMP1
042328,000336: 20,2777 00006 EXTEND
042329,000337: 20,3000 31562 DCA YTMP3
042330,000338: 20,3001 53713 DXCH TMP3
042331,000339: 20,3002 00006 EXTEND
042332,000340: 20,3003 31566 DCA YTMP5
042333,000341: 20,3004 53717 DXCH TMP5
042334,000342:
042335,000343: 20,3005 03156 TCR FWDFLTR # GO COMPUTE PRESENT OUTPUT
042336,000344: # (INCLUDES VARIABLE GAIN PACKAGE)
042337,000345:
042338,000346: 20,3006 00006 YOFFSET EXTEND
042339,000347: 20,3007 31610 DCA YDELOFF
042340,000348: 20,3010 21705 DAS CMDTMP # NOW SCALED AT B+0 ASCREV
042341,000349:
042342,000350: 20,3011 03137 YACLIM TCR ACTLIM # ROUND OFF & LIMIT YAW ACTUATOR COMMAND
042343,000351:
042344,000352: 20,3012 41624 YOUT CS YCMD # INCREMENTAL YAW COMMAND
042345,000353: 20,3013 61704 AD CMDTMP
042346,000354: 20,3014 26053 ADS TVCYAW # UPDATE THE ERROR COUNTER (NO RESTART-
042347,000355: # PROTECT, SINCE ERROR CNTR ZEROED)
042348,000356:
042349,000357: 20,3015 35004 CAF BIT12 # BIT FOR TVCYAW COUNT RELEASE
042350,000358: 20,3016 00006 EXTEND
042351,000359: 20,3017 05014 WOR CHAN14
042352,000360:
042353,000361: 20,3020 00006 YPRECOMP EXTEND # PREPARE THE FILTER STORAGE FOR YAW
042354,000362: 20,3021 31560 DCA YTMP2
042355,000363: 20,3022 53711 DXCH TMP2
042356,000364: 20,3023 00006 EXTEND
042357,000365: 20,3024 31564 DCA YTMP4
042358,000366: 20,3025 53715 DXCH TMP4
042359,000367: 20,3026 00006 EXTEND
042360,000368: 20,3027 31570 DCA YTMP6
042361,000369: 20,3030 53721 DXCH TMP6
042362,000370:
042363,000371: 20,3031 03247 TCR PRECOMP # TO THE FILTER FOR PRECOMPUTATION
042364,000372:
042365,000373: 20,3032 31604 DELBARY CAE DELYBAR +1 # UPDATE YAW OFFSET-TRACKER-FILTER
042366,000374: 20,3033 00006 EXTEND
042367,000375: 20,3034 73500 MP E(-AT)
042368,000376: 20,3035 55701 TS DELBRTMP +1
042369,000377: 20,3036 31603 CAE DELYBAR
042370,000378: 20,3037 00006 EXTEND
042371,000379: 20,3040 73500 MP E(-AT)
042372,000380: 20,3041 21701 DAS DELBRTMP
042373,000381: 20,3042 31704 CAE CMDTMP
042374,000382: 20,3043 00006 EXTEND
042375,000383: 20,3044 73477 MP 1-E(-AT)
042376,000384: 20,3045 21701 DAS DELBRTMP
042377,000385:
Page 969 |
042379,000387: 20,3046 03050 YCOPYCYC TCR YCOPY # YAW COPYCYCLE
042380,000388:
042381,000389: 20,3047 15333 YDAPEND TCF RESUME # YAW DAP COMPLETED
042382,000390:
Page 970 |
042384,000392: # YAW TVCDAP COPYCYCLE SUBROUTINE (CALLED VIA YAW TVCDAP OR TVC RESTART PACKAGE)
042385,000393:
042386,000394: 20,3050 25644 YCOPY INCR TVCPHASE # RESTART-PROTECT THE COPYCYCLE. (3)
042387,000395: # NOTE POSSIBLE RE-ENTRY FROM RESTART
042388,000396: # PACKAGE, SHOULD A RESTART OCCUR
042389,000397: # DURING YAW COPYCYCLE.
042390,000398:
042391,000399: 20,3051 00006 EXTEND
042392,000400: 20,3052 31707 DCA TMP1
042393,000401: 20,3053 53556 DXCH YTMP1
042394,000402: 20,3054 00006 EXTEND
042395,000403: 20,3055 31711 DCA TMP2
042396,000404: 20,3056 53560 DXCH YTMP2
042397,000405: 20,3057 00006 EXTEND
042398,000406: 20,3060 31713 DCA TMP3
042399,000407: 20,3061 53562 DXCH YTMP3
042400,000408: 20,3062 00006 EXTEND
042401,000409: 20,3063 31715 DCA TMP4
042402,000410: 20,3064 53564 DXCH YTMP4
042403,000411: 20,3065 00006 EXTEND
042404,000412: 20,3066 31717 DCA TMP5
042405,000413: 20,3067 53566 DXCH YTMP5
042406,000414: 20,3070 00006 EXTEND
042407,000415: 20,3071 31721 DCA TMP6
042408,000416: 20,3072 53570 DXCH YTMP6
042409,000417:
042410,000418: 20,3073 00006 YMISC EXTEND # MISC....YAW-RATE-ERROR INTEGRATOR
042411,000419: 20,3074 31703 DCA ERRBTMP
042412,000420: 20,3075 55500 TS AK2 # FOR YAW NEEDLES, SC.AT B-1 REVS
042413,000421: 20,3076 53600 DXCH YERRB
042414,000422:
042415,000423: 20,3077 31704 CAE CMDTMP
042416,000424: 20,3100 55624 TS YCMD
042417,000425:
042418,000426: 20,3101 00006 EXTEND
042419,000427: 20,3102 31701 DCA DELBRTMP
042420,000428: 20,3103 53604 DXCH DELYBAR
042421,000429:
042422,000430: 20,3104 35021 CAF ZERO # YAW COPYCYCLE COMPLETED
042423,000431: 20,3105 55644 TS TVCPHASE # RESET TVCPHASE
042424,000432:
042425,000433: 20,3106 00002 TC Q
042426,000434:
Page 971 |
042428,000436: # SUBROUTINES COMMON TO BOTH PITCH AND YAW DAPS....
042429,000437:
042430,000438: # INITIALIZATION PACKAGE FOR CDURATES....
042431,000439:
042432,000440: 20,3107 22016 DAPINIT LXCH BANKRUPT # T5 RUPT ENTRY (CALLED BY TVCINT4)
042433,000441:
042434,000442: 20,3110 37716 CAF NEGONE # SET UP
042435,000443: 20,3111 61625 AD T5TVCDT # T5 CALL FOR PITCHDAP IN TVCDT SECS
042436,000444: 20,3112 65001 AD NEGMAX # (T5TVCDT = POSMAX - TVCDT/2 +1)
042437,000445: 20,3113 61625 AD T5TVCDT
042438,000446: 20,3114 54030 TS TIME5
042439,000447: 20,3115 33473 CAF PITCHT5 # (BBCON ALREADY THERE)
042440,000448: 20,3116 55312 TS T5LOC
042441,000449:
042442,000450: 20,3117 30033 CAE CDUY # READ AND STORE CDUS FOR DIFFERENTIATOR
042443,000451: 20,3120 55645 TS PCDUYPST # PAST-VALUES
042444,000452: 20,3121 30034 CAE CDUZ
042445,000453: 20,3122 55646 TS PCDUZPST
042446,000454:
042447,000455: 20,3123 15335 TCF NOQRSM
042448,000456:
042449,000457: # BODY-AXIS-ERROR INPUT LIMITER PACKAGE....
042450,000458:
042451,000459: 20,3124 31702 ERRORLIM CAE ERRBTMP # CHECK FOR INPUT-ERROR LIMIT
042452,000460: 20,3125 00006 EXTEND # CHECKS UPPER WORD ONLY
042453,000461: 20,3126 75015 MP 1/ERRLIM
042454,000462: 20,3127 00006 EXTEND
042455,000463: 20,3130 13136 BZF +6
042456,000464: 20,3131 11702 CCS ERRBTMP
042457,000465: 20,3132 35003 CAF ERRLIM
042458,000466: 20,3133 13135 TCF +2
042459,000467: 20,3134 45003 CS ERRLIM
042460,000468: 20,3135 55702 TS ERRBTMP # LIMIT WRITES OVER UPPER WORD ONLY
042461,000469:
042462,000470: 20,3136 00002 TC Q
042463,000471:
042464,000472: # ACTUATOR-COMMAND LIMITER PACKAGE....
042465,000473:
042466,000474: 20,3137 31705 ACTLIM CAE CMDTMP +1 # ROUND UP FOR OUTPUT
042467,000475: 20,3140 60000 DOUBLE
042468,000476: 20,3141 54001 TS L
042469,000477: 20,3142 35021 CAF ZERO
042470,000478: 20,3143 61704 AD CMDTMP
042471,000479:
042472,000480: 20,3144 00006 EXTEND # CHECK FOR ACTUATOR COMMAND LIMIT
042473,000481: 20,3145 73472 MP 1/ACTSAT
042474,000482: 20,3146 00006 EXTEND
Page 972 |
042476,000484: 20,3147 13155 BZF +6
042477,000485: 20,3150 11704 CCS CMDTMP # APPLY LIMITS
042478,000486: 20,3151 33471 CAF ACTSAT
042479,000487: 20,3152 13154 TCF +2
042480,000488: 20,3153 43471 CS ACTSAT
042481,000489: 20,3154 55704 TS CMDTMP # LIMITS WRITE OVER CMDTMP
042482,000490:
042483,000491: 20,3155 00002 TC Q
042484,000492:
042485,000493: # FILTER COMPUTATIONS FOR PRESENT OUTPUT................
042486,000494:
042487,000495: 20,3156 35021 FWDFLTR CAF ZERO
042488,000496: 20,3157 55615 TS DAP1
042489,000497: 20,3160 55617 TS DAP2
042490,000498: 20,3161 55621 TS DAP3
042491,000499: 20,3162 55704 TS CMDTMP
042492,000500:
042493,000501: 20,3163 55700 TS DELBRTMP
042494,000502:
042495,000503: 20,3164 31703 1DAPCAS CAE ERRBTMP +1 # FIRST DAP CASCADE
042496,000504: 20,3165 00006 EXTEND
042497,000505: 20,3166 71723 MP N10 # N10
042498,000506: 20,3167 55616 TS DAP1 +1
042499,000507: 20,3170 31702 CA ERRBTMP
042500,000508: 20,3171 00006 EXTEND
042501,000509: 20,3172 71723 MP N10 # N10
042502,000510: 20,3173 21616 DAS DAP1
042503,000511: 20,3174 53707 DXCH TMP1
042504,000512: 20,3175 21616 DAS DAP1
042505,000513:
042506,000514: 20,3176 31616 2DAPCAS CAE DAP1 +1 # SECOND DAP CASCADE
042507,000515: 20,3177 00006 EXTEND
042508,000516: 20,3200 71730 MP N10 +5 # N20
042509,000517: 20,3201 55620 TS DAP2 +1
042510,000518: 20,3202 31615 CA DAP1
042511,000519: 20,3203 00006 EXTEND
042512,000520: 20,3204 71730 MP N10 +5 # N20
042513,000521: 20,3205 21620 DAS DAP2
042514,000522: 20,3206 53713 DXCH TMP3
042515,000523: 20,3207 21620 DAS DAP2
042516,000524:
042517,000525: 20,3210 31466 CAE DAPDATR1 # TEST FOR LEM ON OR OFF
042518,000526: 20,3211 75002 MASK BIT14
042519,000527: 20,3212 10000 CCS A
042520,000528: 20,3213 13220 TCF 3DAPCAS # LEM ON
042521,000529: 20,3214 00006 EXTEND # LEM OFF
042522,000530: 20,3215 31620 DCA DAP2
042523,000531: 20,3216 53622 DXCH DAP3
042524,000532: 20,3217 13232 TCF OPTVARK
042525,000533:
Page 973 |
042527,000535: 20,3220 31620 3DAPCAS CAE DAP2 +1 # THIRD DAP CASCADE
042528,000536: 20,3221 00006 EXTEND
042529,000537: 20,3222 71735 MP N10 +10D # N30
042530,000538: 20,3223 55622 TS DAP3 +1
042531,000539: 20,3224 31617 CA DAP2
042532,000540: 20,3225 00006 EXTEND
042533,000541: 20,3226 71735 MP N10 +10D # N30
042534,000542: 20,3227 21622 DAS DAP3
042535,000543: 20,3230 53717 DXCH TMP5
042536,000544: 20,3231 21622 DAS DAP3
042537,000545:
042538,000546: 20,3232 41622 OPTVARK CS DAP3 +1 # VARIABLE GAIN PACKAGE
042539,000547: 20,3233 00006 EXTEND # (ALSO, SIGN CHANGE IN FORWARD LOOP)
042540,000548: 20,3234 71641 MP VARK # SCALED AT 1/(8 ASCREV) OF ACTUAL VALUE
042541,000549: 20,3235 55705 TS CMDTMP +1
042542,000550: 20,3236 41621 CS DAP3
042543,000551: 20,3237 00006 EXTEND
042544,000552: 20,3240 71641 MP VARK
042545,000553: 20,3241 21705 DAS CMDTMP
042546,000554:
042547,000555: 20,3242 53705 DXCH CMDTMP # FIX UP SCALING - SCALED B+3 ASCREVS
042548,000556: 20,3243 20001 DDOUBL
042549,000557: 20,3244 20001 DDOUBL
042550,000558: 20,3245 53705 DXCH CMDTMP # - SCALED B+1 ASCREVS
042551,000559: # NOTE - THERE IS AN INHERANT GAIN OF
042552,000560: # (B+1 ASCREVS) ON THE OUTPUT DACS.
042553,000561:
042554,000562: 20,3246 00002 TC Q
042555,000563:
042556,000564: # FILTER PRECOMPUTATIONS FOR NEXT PASS...................
042557,000565:
042558,000566: 20,3247 35021 PRECOMP CAF ZERO # ***** FIRST CASCADE FILTER **********
042559,000567: 20,3250 55611 TS TTMP1
042560,000568: 20,3251 55613 TS TTMP2
042561,000569:
042562,000570: 20,3252 31703 CA ERRBTMP +1 # MULTIPLY INPUT BY
042563,000571: 20,3253 00006 EXTEND
042564,000572: 20,3254 71724 MP N10 +1 # N11/2
042565,000573: 20,3255 55612 TS TTMP1 +1
042566,000574: 20,3256 31702 CA ERRBTMP
042567,000575: 20,3257 00006 EXTEND
042568,000576: 20,3260 71724 MP N10 +1 # N11/2
042569,000577: 20,3261 21612 DAS TTMP1
042570,000578:
042571,000579: 20,3262 41616 CS DAP1 +1 # MULTIPLY OUTPUT BY
042572,000580: 20,3263 00006 EXTEND
042573,000581: 20,3264 71726 MP N10 +3 # D11/2
042574,000582: 20,3265 55614 TS TTMP2 +1
042575,000583: 20,3266 41615 CS DAP1
042576,000584:
Page 974 |
042578,000586: 20,3267 00006 EXTEND
042579,000587: 20,3270 71726 MP N10 +3 # D11/2
042580,000588: 20,3271 21614 DAS TTMP2
042581,000589:
042582,000590: 20,3272 53614 DXCH TTMP2
042583,000591: 20,3273 21612 DAS TTMP1
042584,000592: 20,3274 53612 DXCH TTMP1
042585,000593: 20,3275 20001 DDOUBL
042586,000594: 20,3276 21711 DAS TMP2
042587,000595:
042588,000596: 20,3277 53711 DXCH TMP2
042589,000597: 20,3300 53707 DXCH TMP1
042590,000598:
042591,000599: 20,3301 35021 CAF ZERO
042592,000600: 20,3302 55611 TS TTMP1
042593,000601: 20,3303 55710 TS TMP2
042594,000602:
042595,000603: 20,3304 31703 CA ERRBTMP +1 # MULTIPLY INPUT BY
042596,000604: 20,3305 00006 EXTEND # SECOND-ORDER NUMERATOR COEFF.
042597,000605: 20,3306 71725 MP N10 +2 # N12
042598,000606: 20,3307 55612 TS TTMP1 +1
042599,000607: 20,3310 31702 CA ERRBTMP
042600,000608: 20,3311 00006 EXTEND
042601,000609: 20,3312 71725 MP N10 +2 # N12
042602,000610: 20,3313 21612 DAS TTMP1
042603,000611:
042604,000612: 20,3314 41616 CS DAP1 +1 # MULTIPLY OUTPUT BY
042605,000613: 20,3315 00006 EXTEND
042606,000614: 20,3316 71727 MP N10 +4 # D12
042607,000615: 20,3317 55711 TS TMP2 +1
042608,000616: 20,3320 41615 CS DAP1
042609,000617: 20,3321 00006 EXTEND
042610,000618: 20,3322 71727 MP N10 +4 # D12
042611,000619: 20,3323 21711 DAS TMP2
042612,000620:
042613,000621: 20,3324 53612 DXCH TTMP1
042614,000622: 20,3325 21711 DAS TMP2
042615,000623:
042616,000624: 20,3326 35021 2CASFLTR CAF ZERO # ***** SECOND CASCADE FILTER *****
042617,000625: 20,3327 55611 TS TTMP1
042618,000626: 20,3330 55613 TS TTMP2
042619,000627:
042620,000628: 20,3331 31616 CA DAP1 +1 # MULTIPLY INPUT BY
042621,000629: 20,3332 00006 EXTEND
042622,000630: 20,3333 71731 MP N10 +6 # N21/2
042623,000631: 20,3334 55612 TS TTMP1 +1
042624,000632: 20,3335 31615 CA DAP1
042625,000633: 20,3336 00006 EXTEND
042626,000634: 20,3337 71731 MP N10 +6 # N21/2
Page 975 |
042628,000636: 20,3340 21612 DAS TTMP1
042629,000637:
042630,000638: 20,3341 41620 CS DAP2 +1 # MULTIPLY OUTPUT BY
042631,000639: 20,3342 00006 EXTEND
042632,000640: 20,3343 71733 MP N10 +8D # D21/2
042633,000641: 20,3344 55614 TS TTMP2 +1
042634,000642: 20,3345 41617 CS DAP2
042635,000643: 20,3346 00006 EXTEND
042636,000644: 20,3347 71733 MP N10 +8D # D21/2
042637,000645: 20,3350 21614 DAS TTMP2
042638,000646:
042639,000647: 20,3351 53614 DXCH TTMP2
042640,000648: 20,3352 21612 DAS TTMP1
042641,000649: 20,3353 53612 DXCH TTMP1
042642,000650: 20,3354 20001 DDOUBL
042643,000651: 20,3355 21715 DAS TMP4
042644,000652:
042645,000653: 20,3356 53715 DXCH TMP4
042646,000654: 20,3357 53713 DXCH TMP3
042647,000655:
042648,000656: 20,3360 35021 CAF ZERO
042649,000657: 20,3361 55611 TS TTMP1
042650,000658: 20,3362 55714 TS TMP4
042651,000659:
042652,000660: 20,3363 31616 CA DAP1 +1 # MULTIPLY INPUT BY
042653,000661: 20,3364 00006 EXTEND
042654,000662: 20,3365 71732 MP N10 +7 # N22
042655,000663: 20,3366 55612 TS TTMP1 +1
042656,000664: 20,3367 31615 CA DAP1
042657,000665: 20,3370 00006 EXTEND
042658,000666: 20,3371 71732 MP N10 +7 # N22
042659,000667: 20,3372 21612 DAS TTMP1
042660,000668:
042661,000669: 20,3373 41620 CS DAP2 +1 # MULTIPLY OUTPUT BY
042662,000670: 20,3374 00006 EXTEND
042663,000671: 20,3375 71734 MP N10 +9D # D22
042664,000672: 20,3376 55715 TS TMP4 +1
042665,000673: 20,3377 41617 CS DAP2
042666,000674: 20,3400 00006 EXTEND
042667,000675: 20,3401 71734 MP N10 +9D # D22
042668,000676: 20,3402 21715 DAS TMP4
042669,000677:
042670,000678: 20,3403 53612 DXCH TTMP1
042671,000679: 20,3404 21715 DAS TMP4
042672,000680:
042673,000681: 20,3405 31466 CAE DAPDATR1 # TEST FOR LEM ON OR OFF
042674,000682: 20,3406 75003 MASK BIT13
042675,000683: 20,3407 10000 CCS A
042676,000684: 20,3410 00002 TC Q # EXIT IF LEM OFF
042677,000685:
Page 976 |
042679,000687: 20,3411 35021 3CASFLTR CAF ZERO # ***** THIRD CASCADE FILTER *****
042680,000688: 20,3412 55611 TS TTMP1
042681,000689: 20,3413 55613 TS TTMP2
042682,000690:
042683,000691: 20,3414 31620 CA DAP2 +1 # MULTIPLY INPUT BY (1/2)
042684,000692: 20,3415 00006 EXTEND
042685,000693: 20,3416 71736 MP N10 +11D # N31/2
042686,000694: 20,3417 55612 TS TTMP1 +1
042687,000695: 20,3420 31617 CA DAP2
042688,000696: 20,3421 00006 EXTEND
042689,000697: 20,3422 71736 MP N10 +11D # N31/2
042690,000698: 20,3423 21612 DAS TTMP1
042691,000699:
042692,000700: 20,3424 41622 CS DAP3 +1
042693,000701: 20,3425 00006 EXTEND
042694,000702: 20,3426 71740 MP N10 +13D # D31/2
042695,000703: 20,3427 55614 TS TTMP2 +1
042696,000704: 20,3430 41621 CS DAP3
042697,000705: 20,3431 00006 EXTEND
042698,000706: 20,3432 71740 MP N10 +13D # D31/2
042699,000707: 20,3433 21614 DAS TTMP2
042700,000708:
042701,000709: 20,3434 53614 DXCH TTMP2
042702,000710: 20,3435 21612 DAS TTMP1
042703,000711: 20,3436 53612 DXCH TTMP1
042704,000712: 20,3437 20001 DDOUBL
042705,000713: 20,3440 21721 DAS TMP6
042706,000714:
042707,000715: 20,3441 53721 DXCH TMP6
042708,000716: 20,3442 53717 DXCH TMP5
042709,000717:
042710,000718: 20,3443 35021 CAF ZERO
042711,000719: 20,3444 55611 TS TTMP1
042712,000720: 20,3445 55720 TS TMP6
042713,000721:
042714,000722: 20,3446 31620 CA DAP2 +1 # MULTIPLY INPUT BY
042715,000723: 20,3447 00006 EXTEND
042716,000724: 20,3450 71737 MP N10 +12D # N32
042717,000725: 20,3451 55612 TS TTMP1 +1
042718,000726: 20,3452 31617 CA DAP2
042719,000727: 20,3453 00006 EXTEND
042720,000728: 20,3454 71737 MP N10 +12D # N32
042721,000729: 20,3455 21612 DAS TTMP1
042722,000730:
042723,000731: 20,3456 41622 CS DAP3 +1
042724,000732: 20,3457 00006 EXTEND
042725,000733: 20,3460 71741 MP N10 +14D # D32
042726,000734: 20,3461 55721 TS TMP6 +1
042727,000735: 20,3462 41621 CS DAP3
042728,000736: 20,3463 00006 EXTEND
Page 977 |
042730,000738: 20,3464 71741 MP N10 +14D # D32
042731,000739: 20,3465 21721 DAS TMP6
042732,000740:
042733,000741: 20,3466 53612 DXCH TTMP1
042734,000742: 20,3467 21721 DAS TMP6
042735,000743:
042736,000744: 20,3470 00002 TC Q
042737,000745:
Page 978 |
042739,000747: # CONSTANTS FOR AUTOPILOTS
042740,000748:
042741,000749: # NOTE....1 ASCREV (ACTUATOR CMD SCALING) = 85.41 ARCSEC/BIT OR 1.07975111 REVS (85.41X16384/3600/360)
042742,000750: # 1 SPASCREV (SPECIAL ACTUATOR CMD SCALING) = 1.04620942 REVS
042743,000751:
042744,000752: 20,3471 00375 ACTSAT DEC 253 B-14 # ACTUATOR LIMIT (6 DEG), SC.AT 1ASCREV
042745,000753: 20,3472 00101 1/ACTSAT DEC .0039525692 # RECIPROCAL (1/253)
042746,000754:
042747,000755: 20,3473 5003 ERRLIM EQUALS BIT13 # FILTER INPUT LIMIT....B-3 REVS (45DEG),
042748,000756: 20,3473 5015 1/ERRLIM EQUALS BIT3 # SC.AT B-1 REV, AND ITS RECIPROCAL
042749,000757:
042750,000758: 20,3473 02530 PITCHT5 GENADR PITCHDAP # UPPER WORDS OF T5 2CADRS, LOWER WORDS
042751,000759: 20,3474 03107 DAPT5 GENADR DAPINIT # (BBCON) ALREADY THERE. ORDER IS
042752,000760: 20,3475 02732 YAWT5 GENADR YAWDAP # REQUIRED.
042753,000761:
042754,000762: 20,3476 00115 1/RTLIM DEC 0.004715 # .004715(CDUDIF) = 0 IF CDUDIF < 2.33 DEG
042755,000763: 20,3477 00243 1-E(-AT) OCT 00243 # AT = .01SEC....EITHER(1/A=4SEC, T=40MS),
042756,000764: 20,3500 37535 E(-AT) OCT 37535 # OR(1/A=8SEC, T=80MS)
042757,000765:
End of include-file TVCDAPS.agc. Parent file is MAIN.agc