Source Code

041951,000001: # Copyright: Public domain. 041952,000002: # Filename: TVCEXECUTIVE.agc 041953,000003: # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. 041954,000004: # It is part of the source code for the Command Module's (CM) 041955,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 041956,000006: # Assembler: yaYUL 041957,000007: # Contact: Ron Burkey <info@sandroid.org>. 041958,000008: # Website: www.ibiblio.org/apollo. 041959,000009: # Pages: 945-950 041960,000010: # Mod history: 2009-05-12 RSB Adapted from the Colossus249/ file of the 041961,000011: # same name, using Comanche055 page images. 041962,000012: # 2009-05-20 RSB Corrections: CAE -> CAF in one place. 041963,000013: # 2009-05-21 RSB In 1SHOTCHK, a CAF SEVEN was corrected to 041964,000014: # CAF SIX. 041965,000015: 041966,000016: # This source code has been transcribed or otherwise adapted from digitized 041967,000017: # images of a hardcopy from the MIT Museum. The digitization was performed 041968,000018: # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many 041969,000019: # thanks to both. The images (with suitable reduction in storage size and 041970,000020: # consequent reduction in image quality as well) are available online at 041971,000021: # www.ibiblio.org/apollo. If for some reason you find that the images are 041972,000022: # illegible, contact me at info@sandroid.org about getting access to the 041973,000023: # (much) higher-quality images which Paul actually created. 041974,000024: 041975,000025: # Notations on the hardcopy document read, in part: 041976,000026: 041977,000027: # Assemble revision 055 of AGC program Comanche by NASA 041978,000028: # 2021113-051. 10:28 APR. 1, 1969 041979,000029: 041980,000030: # This AGC program shall also be referred to as 041981,000031: # Colossus 2A 041982,000032: 041983,000033: # Page 945 041984,000034: # PROGRAM NAME.... TVCEXECUTIVE, CONSISTING OF TVCEXEC, NEEDLEUP, VARGAINS 041985,000035: # 1SHOTCHK, REPCHEK, CG.CORR, COPYCYCLES, ETC. 041986,000036: # LOG SECTION.... TVCEXECUTIVE SUBROUTINE ....DAPCSM 041987,000037: # MOD BY SCHLUNDT 21 OCTOBER 1968 041988,000038: 041989,000039: # FUNCTIONAL DESCRIPTION.... 041990,000040: # *A SELF-PERPETUATING WAITLIST TASK AT 1/2 SECOND INTERVALS WHICH: 041991,000041: # PREPARES THE ROLL WITH OGA (CDUX) 041992,000042: # PREPARES THE ROLL FDAI NEEDLE (FLY-TO OGA ERROR) 041993,000043: # PREPARES THE ROLL PHASE PLANE OGAERR (FLY-FROM OGA ERROR) 041994,000044: # PREPARES THE TVC ROLLDAP TASK WAITLIST CALL (3 CS DELAY) 041995,000045: # UPDATES THE NEEDLES DISPLAY 041996,000046: # UPDATES THE VEHICLE MASS AND CALLS MASSPROP TO UPDATE INERTIA DATA 041997,000047: # UPDATES PITCH, YAW, AND ROLL DAP GAINS FROM MASSPROP DATA 041998,000048: # PERFORMS ONE-SHOT CORRECTION FOR TMC LOOP 0-3 SEC AFTER IGNITION 041999,000049: # PERFORMS REPETITIVE UPDATES FOR THE TMC LOOP AFTER THE ONE-SHOT CORR. 042000,000050: 042001,000051: # CALLING SEQUENCE.... 042002,000052: # *TVCEXEC CALLED AS A WAITLIST TASK, IN PARTICULAR BY TVCINIT4 AND BY 042003,000053: # ITSELF, BOTH AT 1/2 SECOND INTERVALS 042004,000054: 042005,000055: # NORMAL EXIT MODE.... TASKOVER 042006,000056: 042007,000057: # ALARM OR ABORT EXIT MODES.... NONE 042008,000058: 042009,000059: # SUBROUTINES CALLED....NEEDLER, S40.15, MASSPROP, TASKOVER, IBNKCALL 042010,000060: 042011,000061: # OTHER INTERFACES.... 042012,000062: # *TVCRESTART PACKAGE FOR RESTARTS 042013,000063: # *PITCHDAP, YAWDAP FOR VARIABLE GAINS AND ENGINE TRIM ANGLES 042014,000064: 042015,000065: # ERASABLE INITIALIZATION REQUIRED.... 042016,000066: # *SEE TVCDAPON....TVCINIT4 042017,000067: # *VARK AND 1/CONACC (S40.15 OF R03) 042018,000068: # *PAD LOAD EREPFRAC 042019,000069: # *BITS 15,14 OF FLAGWRD6 (T5 BITS) 042020,000070: # *TVCEXPHS FOR RESTARTS 042021,000071: # *ENGINE-ON BIT (11.13) FOR RESTARTS 042022,000072: # *CDUX, OGAD 042023,000073: 042024,000074: # OUTPUT.... 042025,000075: # *ROLL DAP OGANOW, FDAI NEEDLE= (AK). AND PHASE PLANE OGAERR 042026,000076: # *VARIABLE GAINS FOR PITCH/YAW AND ROLL TVC DAPS 042027,000077: # *SINGLE-SHOT AND REPETITIVE CORRECTIONS TO ENGINE TRIM ANGLES 042028,000078: # PACTOFF AND YACTOFF 042029,000079: 042030,000080: # DEBRIS.... MUCH, BUT SHAREABLE WITH RCS/ENTRY, ALL IN EBANK6 042031,000081: 042032,000082: # Page 946 042033,000083: 16,2720 BANK 16 042034,000084: 16,2000 SETLOC DAPROLL 042035,000085: 16,2000 BANK 042036,000086: 16,2720 E6,1702 EBANK= BZERO 042037,000087: 16,2720 COUNT* $$/TVCX 042038,000088: 042039,000089: 16,2720 40102 TVCEXEC CS FLAGWRD6 # CHECK FOR TERMINATION (BITS 15,14 READ 042040,000090: 16,2721 74105 MASK OCT60000 # 10 FROM TVCDAPON TO RCSDAPON) 042041,000091: 16,2722 00006 EXTEND 042042,000092: 16,2723 63134 BZMF TVCEXFIN # TERMINATE 042043,000093: 042044,000094: 16,2724 35036 CAF .5SEC # W.L. CALL TO PERPETUATE TVCEXEC 042045,000095: 16,2725 05245 TC WAITLIST 042046,000096: 16,2726 E6,1702 EBANK= BZERO 042047,000097: 16,2726 02720 34066 2CADR TVCEXEC 042048,000098: 042049,000099: 16,2730 30032 ROLLPREP CAE CDUX # UPDATE ROLL LADDERS (NO NEED TO RESTART- 042050,000100: 16,2731 57662 XCH OGANOW # PROTECT, SINCE ROLL DAPS RE-START) 042051,000101: 16,2732 57663 XCH OGAPAST 042052,000102: 042053,000103: 16,2733 31450 CAE OGAD # PREPARE ROLL FDAI NEEDLE WTIH FLY-TO 042054,000104: 16,2734 00006 EXTEND # ERROR (COMMAND - MEASURED) 042055,000105: 16,2735 21662 MSU OGANOW 042056,000106: 16,2736 55476 TS AK # FLY-TO OGA ERROR, SC.AT B-1 REVS 042057,000107: 042058,000108: 16,2737 00006 EXTEND # PREPARE ROLL DAP PHASE PLANE OGAERR 042059,000109: 16,2740 77705 MP -BIT14 042060,000110: 16,2741 55664 TS OGAERR # PHASE-PLANE (FLY-FROM) OGAERROR, 042061,000111: # SC.AT B+0 REVS 042062,000112: 042063,000113: 16,2742 36214 CAF THREE # SET UP ROLL DAP TASK (ALLOW SOME TIME) 042064,000114: 16,2743 05245 TC WAITLIST 042065,000115: 16,2744 E6,1702 EBANK= BZERO 042066,000116: 16,2744 03272 34066 2CADR ROLLDAP 042067,000117: 042068,000118: 16,2746 04740 NEEDLEUP TC IBNKCALL # DO A NEEDLES UPDATE (RETURNS AFTER CADR) 042069,000119: 16,2747 42420 CADR NEEDLER # (NEEDLES RESTARTS ITSELF) 042070,000120: 042071,000121: 16,2750 35003 VARGAINS CAF BIT13 # CHECK ENGINE-ON BIT TO INHIBIT VARIABLE 042072,000122: 16,2751 00006 EXTEND # GAINS AND MASS IF ENGINE OFF 042073,000123: 16,2752 02011 RAND DSALMOUT # CHANNEL 11 042074,000124: 16,2753 10000 CCS A 042075,000125: 16,2754 12760 TCF +4 # ON, SO OK TO UPDATE GAINS AND MASS 042076,000126: 16,2755 35016 +5 CAF TWO # OFF, SO BYPASS MASS/GAIN UPDATES, 042077,000127: 16,2756 55651 TS TVCEXPHS # ALSO ENTRY FROM CCS BELOW WITH 042078,000128: 16,2757 13011 TCF 1SHOTCHK # VCNTR = -0 (V97 R40 ENGFAIL) 042079,000129: 16,2760 11643 CCS VCNTR # TEST FOR GAIN OF UPDATE TIME 042080,000130: 16,2761 12765 TCF +4 # NOT YET 042081,000131: # Page 947 042082,000132: 16,2762 12771 TCF GAINCHNG # NOW 042083,000133: 16,2763 12763 TCF +0 # NOT USED 042084,000134: 16,2764 12755 TCF VARGAINS +5 # NO, LOTHRUST (S40.6 R40) 042085,000135: 042086,000136: 16,2765 55653 +4 TS VCNTRTMP # PROTECT VCNTR AND 042087,000137: 16,2766 31474 CAE CSMMASS # CSMMASS DURING AN IMPULSIVE BURN 042088,000138: 16,2767 55652 TS MASSTMP 042089,000139: 16,2770 13002 TCF EXECCOPY 042090,000140: 042091,000141: 16,2771 04740 GAINCHNG TC IBNKCALL # UPDATE IXX, IAVG, IAVG/TLX 042092,000142: 16,2772 13422 CADR FIXCW # MASSPROP ENTRY (ALREADY INITIALIZED) 042093,000143: 16,2773 04740 TC IBNKCALL # UPDATE 1/CONACC, VARK 042094,000144: 16,2774 36462 CADR S40.15 # (S40.15 IS IN TVCINITIALIZE) 042095,000145: 16,2775 41637 CS TENMDOT # UPDATE MASS FOR NEXT 10 SEC. OF BURN 042096,000146: 16,2776 61474 AD CSMMASS 042097,000147: 16,2777 55652 TS MASSTMP # KG B+16 042098,000148: 042099,000149: 16,3000 34374 CAF NINETEEN # RESET THE VARIABLE-GAIN UPDATE COUNTER 042100,000150: 16,3001 55653 TS VCNTRTMP 042101,000151: 042102,000152: 16,3002 25651 EXECCOPY INCR TVCEXPHS # RESTART-PROTECT TEH COPYCYCLE (1) 042103,000153: 042104,000154: 16,3003 31652 CAE MASSTMP # CSMMASS KG B+16 042105,000155: 16,3004 55474 TS CSMMASS 042106,000156: 042107,000157: 16,3005 31653 CAE VCNTRTMP # VCNTR 042108,000158: 16,3006 55643 TS VCNTR 042109,000159: 16,3007 55444 TS V97VCNTR # FOR ENGFAIL (R41) MASS UPATES AT SPSOFF 042110,000160: 042111,000161: 16,3010 25651 INCR TVCEXPHS # COPYCYCLE OVER (2) 042112,000162: 042113,000163: 16,3011 11447 1SHOTCHK CCS CNTR # CHECK FOR ONE-SHOT OR REPCORR 042114,000164: 16,3012 13016 TCF +4 # NOT YET 042115,000165: 16,3013 13031 TCF 1SHOTOK # NOW 042116,000166: 16,3014 13022 TCF REPCHEK # ONE-SHOT OVER, ON TO REPCORR 042117,000167: 16,3015 13031 TCF 1SHOTOK # NOW (ONE-SHOT ONLY, NO REPCORR) 042118,000168: 042119,000169: 16,3016 55676 +4 TS CNTRTMP # COUNT DOWN 042120,000170: 16,3017 36211 CAF SIX # SETUP TVCEXPHS FOR ENTRY AT CNTRCOPY 042121,000171: 16,3020 55651 TS TVCEXPHS 042122,000172: 16,3021 13132 TCF CNTRCOPY 042123,000173: 042124,000174: 16,3022 31642 REPCHEK CAE REPFRAC # CHECK FOR REPETITIVE UPDATES 042125,000175: 16,3023 00006 EXTEND 042126,000176: 16,3024 63134 BZMF TVCEXFIN # NO (NEG OR +-ZERO) 042127,000177: 16,3025 55446 TS TEMPDAP +1 # YES, SET UP CORRECTION FUNCTION 042128,000178: 16,3026 35015 CAF FOUR # SET UP TVCEXPHS FOR ENTRY AT CORSETUP 042129,000179: 16,3027 55651 TS TVCEXPHS 042130,000180: 16,3030 13043 TCF CORSETUP 042131,000181: # Page 948 042132,000182: 16,3031 35003 1SHOTOK CAF BIT13 # CHECK ENGINE-ON BIT, NOT PERMITTING 042133,000183: 16,3032 00006 EXTEND # SWITCHOVER DURING ENGINE-SHUTDOWN 042134,000184: 16,3033 02011 RAND DSALMOUT 042135,000185: 16,3034 10000 CCS A 042136,000186: 16,3035 13037 TCF +2 # ONE-SHOT OK 042137,000187: 16,3036 13134 TCF TVCEXFIN # NO, TERMINATE 042138,000188: 042139,000189: 16,3037 25651 INCR TVCEXPHS # (3) 042140,000190: 042141,000191: # RSB 2009. The following instruction was previously "CAE FCORFRAC", but FCORFRAC 042142,000192: # is not in erasable memory as implied by the use of CAE. I've accordingly changed 042143,000193: # it to CAF instead to indicate fixed memory. 042144,000194: 16,3040 33137 TEMPSET CAF FCORFRAC # SET UP CORRECTION FRACTION 042145,000195: 16,3041 55446 TS TEMPDAP +1 042146,000196: 042147,000197: 16,3042 25651 INCR TVCEXPHS # ENTRY FROM REPCHECK AT NEXT LOCATION (4) 042148,000198: 042149,000199: 16,3043 31466 CORSETUP CAE DAPDATR1 # CHECK FOR LEM-OFF/ON 042150,000200: 16,3044 75003 MASK BIT13 # (NOTE, SHOWS LEM-OFF) 042151,000201: 16,3045 00006 EXTEND 042152,000202: 16,3046 13050 BZF +2 # LEM IS ON, PICK UP TEMPDAP+1 042153,000203: 16,3047 31446 CAE TEMPDAP +1 # LEM IS OFF, PICK UP 2(TEMPDAP+1) 042154,000204: 16,3050 61446 AD TEMPDAP +1 042155,000205: 16,3051 55445 TS TEMPDAP # CG.CORR USES TEMPDAP 042156,000206: 042157,000207: 16,3052 37716 CAF NEGONE # SET UP FOR CNTR = -1 (SWTCHOVR DONE) 042158,000208: 16,3053 55676 TS CNTRTMP # (COPYCYCLE AT "CNTRCOPY") 042159,000209: 042160,000210: 16,3054 00006 CG.CORR EXTEND # PITCH TMC LOOP 042161,000211: 16,3055 31606 DCA PDELOFF 042162,000212: 16,3056 53673 DXCH PACTTMP 042163,000213: 16,3057 00006 EXTEND 042164,000214: 16,3060 41606 DCS PDELOFF 042165,000215: 16,3061 20001 DDOUBL 042166,000216: 16,3062 20001 DDOUBL 042167,000217: 16,3063 53612 DXCH TTMP1 042168,000218: 16,3064 00006 EXTEND 042169,000219: 16,3065 31602 DCA DELPBAR 042170,000220: 16,3066 20001 DDOUBL 042171,000221: 16,3067 20001 DDOUBL 042172,000222: 16,3070 21612 DAS TTMP1 042173,000223: 16,3071 00006 EXTEND 042174,000224: 16,3072 31612 DCA TTMP1 042175,000225: 16,3073 00006 EXTEND 042176,000226: 16,3074 71445 MP TEMPDAP 042177,000227: 16,3075 21673 DAS PACTTMP 042178,000228: 042179,000229: 16,3076 00006 EXTEND # YAW TMC LOOP 042180,000230: 16,3077 31610 DCA YDELOFF 042181,000231: 16,3100 53675 DXCH YACTTMP 042182,000232: 16,3101 00006 EXTEND 042183,000233: 16,3102 41610 DCS YDELOFF 042184,000234: 16,3103 20001 DDOUBL 042185,000235: # Page 949 042186,000236: 16,3104 20001 DDOUBL 042187,000237: 16,3105 53612 DXCH TTMP1 042188,000238: 16,3106 00006 EXTEND 042189,000239: 16,3107 31604 DCA DELYBAR 042190,000240: 16,3110 20001 DDOUBL 042191,000241: 16,3111 20001 DDOUBL 042192,000242: 16,3112 21612 DAS TTMP1 042193,000243: 16,3113 00006 EXTEND 042194,000244: 16,3114 31612 DCA TTMP1 042195,000245: 16,3115 00006 EXTEND 042196,000246: 16,3116 71445 MP TEMPDAP 042197,000247: 16,3117 21675 DAS YACTTMP 042198,000248: 042199,000249: 16,3120 25651 CORCOPY INCR TVCEXPHS # RESTART-PROTECT THE COPYCYCLE (5) 042200,000250: 042201,000251: 16,3121 00006 EXTEND # TRIM-ESTIMATES, AND 042202,000252: 16,3122 31673 DCA PACTTMP 042203,000253: 16,3123 55423 TS PACTOFF # TRIMS 042204,000254: 16,3124 53606 DXCH PDELOFF 042205,000255: 042206,000256: 16,3125 00006 EXTEND 042207,000257: 16,3126 31675 DCA YACTTMP 042208,000258: 16,3127 55424 TS YACTOFF 042209,000259: 16,3130 53610 DXCH YDELOFF 042210,000260: 042211,000261: 16,3131 25651 INCR TVCEXPHS # ENTRY FROM 1SHOTCHK AT NEXT LOCATION (6) 042212,000262: 042213,000263: 16,3132 31676 CNTRCOPY CAE CNTRTMP # UPDATE CNTR (RESTARTS OK, FOLLOWS CPYCY) 042214,000264: 16,3133 55447 TS CNTR 042215,000265: 042216,000266: 16,3134 35021 TVCEXFIN CAF ZERO # RESET TVCEXPHS 042217,000267: 16,3135 55651 TS TVCEXPHS 042218,000268: 16,3136 15324 TCF TASKOVER # TVCEXECUTIVE FINISHED 042219,000269: 042220,000270: 16,3137 10000 FCORFRAC OCT 10000 # ONE-SHOT CORRECTION FRACTION 042221,000271: 042222,000272: # Page 950 (page is empty) 042223,000273: End of include-file TVCEXECUTIVE.agc. Parent file is MAIN.agc