Source Code

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