Source Code

042419,000001: # Copyright: Public domain. 042420,000002: # Filename: TVCRESTARTS.agc 042421,000003: # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. 042422,000004: # It is part of the source code for the Command Module's (CM) 042423,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 042424,000006: # Assembler: yaYUL 042425,000007: # Contact: Ron Burkey <info@sandroid.org>. 042426,000008: # Website: www.ibiblio.org/apollo. 042427,000009: # Pages: 956-960 042428,000010: # Mod history: 2009-05-13 RSB Adapted from the Colossus249/ file of the 042429,000011: # same name, using Comanche055 page images. 042430,000012: # 2009-05-20 RSB Corrections: TCF -> BZF in one place. 042431,000013: # 2009-05-21 RSB In PHSCHK2, CS TVCPHASE corrected to 042432,000014: # CCS TVCPHASE and CCS 4 corrected to CCS A. 042433,000015: # Page 924 corrected to 961. CORCOPY +2 042434,000016: # corrected to CORCOPY +1. 042435,000017: # 2010-08-24 JL Fixed page 958 number. Fixed some indentation. 042436,000018: 042437,000019: # This source code has been transcribed or otherwise adapted from digitized 042438,000020: # images of a hardcopy from the MIT Museum. The digitization was performed 042439,000021: # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many 042440,000022: # thanks to both. The images (with suitable reduction in storage size and 042441,000023: # consequent reduction in image quality as well) are available online at 042442,000024: # www.ibiblio.org/apollo. If for some reason you find that the images are 042443,000025: # illegible, contact me at info@sandroid.org about getting access to the 042444,000026: # (much) higher-quality images which Paul actually created. 042445,000027: 042446,000028: # Notations on the hardcopy document read, in part: 042447,000029: 042448,000030: # Assemble revision 055 of AGC program Comanche by NASA 042449,000031: # 2021113-051. 10:28 APR. 1, 1969 042450,000032: 042451,000033: # This AGC program shall also be referred to as 042452,000034: # Colossus 2A 042453,000035: 042454,000036: # Page 956 042455,000037: # NAME....TVCRESTART PACKAGE, CONSISTING OF REDOTVC, ENABL1, 2, CMDSOUT, PHSCHK2, ETC. 042456,000038: # LOG SECTION....TVCRESTARTS SUBROUTINE....DAPCSM 042457,000039: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968 042458,000040: 042459,000041: # FUNCTIONAL DESCRIPTION.... 042460,000042: 042461,000043: # *RESTART-PROCESS THE TVC DAPS, INCLUDING PITCHDAP, YAWDAP, 042462,000044: # TVCEXECUTIVE, ROLLDAP, TVCINIT4, TVCDAPON, AND CSM/.M V46 SWTCHOVR. 042463,000045: 042464,000046: # *TVC RESTARTS DESERVE SPECIAL CONSIDERATION IN SEVERAL AREAS. 042465,000047: # RESTART DOWN-TIME IS IMPORTANT BECAUSE OF THE TRANSIENTS INTRODUCED 042466,000048: # BY THE THRUST VECTOR RETURN TO THE ACTUATOR MECHANICAL NULLS 042467,000049: # FOLLOWING TVC- AND OPTICS-ERROR-COUNTER-DISENABLES (CHANNEL 12). 042468,000050: # TVC USES A MIXTURE OF WAITLIST, T5, T6, AND JOB CALLS. THERE IS 042469,000051: # FILTER MEMORY (UP TO 6TH ORDER) TO BE PROTECTED IF WILD TRANSIENTS 042470,000052: # ARE TO BE AVOIDED. COUNTERS ARE INVOLVED FOR ONE-SHOT 042471,000053: # CORRECTIONS AND GAIN UPDATES. THE GIMBAL TRIM ESTIMATORS AND THE 042472,000054: # BODY AXIS ATTITUDE ERROR INTEGRATORS INVOLVE DIGITAL SUMMATION. 042473,000055: # DIGITAL DIFFERENTIATORS ARE INVOLVED IN THE BODY AXIS RATE ESTIMA- 042474,000056: # TIONS AND IN THE OUTPUTTING OF ACTUATOR COMMANDS. THERE IS AN 042475,000057: # OFFSET-TRACKER-FILTER TO PROTECT. ETC., ETC. 042476,000058: 042477,000059: # *THOSE QUANTITIES WHICH MUST BE PROTECTED ARE STORED IN TEMPORARY 042478,000060: # REGISTERS AS THEY ARE COMPUTED, FOR UPDATING THE REAL REGISTERS 042479,000061: # DURING COPYCYCLES. 042480,000062: 042481,000063: # *THE SEVERAL COPYCYCLES ARE EACH PROTECTED BY PHASE POINTS AT THEIR 042482,000064: # BEGINNING AND AT THEIR TERMINATION. THE PHASE POINTS ARE SIMPLY 042483,000065: # "INCR" INSTRUCTIONS, EITHER "INCR TVCEXPHS" FOR COPYCYCLES 042484,000066: # IN THE TVCEXECUTIVE, OR "INCR TVCPHASE" FOR THE PITCH AND YAW 042485,000067: # COPYCYCLES. INDEXING ON EACH OF THESE POINTERS THEN PERMITS A 042486,000068: # RETURN TO THE APPROPRIATE RESTART POINTS. 042487,000069: 042488,000070: # *IF A RESTART OCCURS DURING EITHER COPYCYCLE, THAT COPYCYCLE IS 042489,000071: # COMPLETED. THEN THE NORMAL TVCINIT4....DAPINIT....PITCHDAP STARTUP 042490,000072: # SEQUENCE IS CALLED UPON TO GET THINGS GOING AGAIN. 042491,000073: 042492,000074: # *TVC-ENABLE AND OPTICS-ERROR-COUNTER ENABLE MUST BE SET ASAP 042493,000075: # (ALLOWING FOR PROCEDURAL DELAYS). THEN THE ENGINES ARE COMMANDED 042494,000076: # TO THE P,YACTOFF TRIM VALUES. THE DAPS ARE THEN READY TO GO ON THE 042495,000077: # AIR, WITH THE REGULAR STARTUP SEQUENCE, EITHER AT MRCLEAN FOR A 042496,000078: # COMPLETE INITIALIZATION OR AT TVCINIT4 FOR A PARTIAL INITIALIZATION. 042497,000079: 042498,000080: # *FOR RESTARTS PRIOR TO THE SETTING OF THE T5 BITS AT DOTVCON THE 042499,000081: # PRE40.6 SECTION OF S40.6 TAKES CARE OF RE-ESTABLISHING TRIMS. 042500,000082: 042501,000083: # *IF A RESTART OCCURS DURING THE TVCEXEC....TVCEXFIN SEQUENCE THE 042502,000084: # COMPUTATIONS WILL BE COMPLETED, STARTING AT THE APPROPRIATE RESTART 042503,000085: # POINT, AFTER THE DAPS ARE READY TO GO ON THE AIR. 042504,000086: 042505,000087: # *IF A RESTART OCCURS PRIOR TO TVCINIT4 (TVCPHAS = -1) E.G. DURING 042506,000088: # THE EARLY DAP INITIALIZATION PHASE, THE DAP STARTUP SEQUENCE IS 042507,000089: # ENTERED AT MRCLEAN FOR A FULL INITIALIZATION. 042508,000090: 042509,000091: # *FOR RESTARTS DURING CSM/LM V46 SWITCH-VER, TVCPHASE IS SET TO -2. 042510,000092: # AND THE RESTART LOGIC GOES BACK TO REDO SWITCH-OVER (AFTER THE 042511,000093: # NORMAL DAP RESTART SEQUENCE IS FOLLOWED.) 042512,000094: 042513,000095: # *RESTARTS ARE NOT CRITICAL TO THE ROLL DAP PERFORMANCES HENCE THE 042514,000096: # ROLL DAP IS MERELY RESTARTED. 042515,000097: 042516,000098: # *RESTARTS DURING A STROKE TEST (STROKER IS NON-ZERO) WILL CAUSE THE 042517,000099: # Page 957 042518,000100: # STROKE TEST TO BE TERMINATED. A NEW V68 ENTRY WILL BE REQUIRED 042519,000101: # TO GET IT GOING AGAIN (NO AUTOMATIC RESTART). 042520,000102: # 042521,000103: # *REDOTVC IS REACHED FOLLOWING ANY RESTART WHICH FINDS THE T5 BITS 042522,000104: # (BITS 15,14 OF FLAGWRD6) SET FOR TVC. DOTVCON TVCPHASE = -1 042523,000105: # AND TVC EXPHS = 0 JUST BEFORE SETTING THESE BITS, JUST BEFORE 042524,000106: # MAKING THE T5 CALL TO TVCDAPON. ON A NORMAL SHUTDOWN DOTVCRCS 042525,000107: # CALLS RCSDAPON, WHICH RESETS THE T5 BIT FOR RCS 042526,000108: 042527,000109: # CALLING SEQUENCE....T5, IN PARTICULAR BY ELRSKIP OF FRESH START/RESTART 042528,000110: 042529,000111: # NORMAL EXIT MODES....RESUME, NOQRSM, POSTJUMP (TO TVCINIT4 OR MRCLEAN) 042530,000112: 042531,000113: # ALARM OR ABORT EXIT MODES....NONE 042532,000114: 042533,000115: # SUBROUTINES CALLED.... 042534,000116: 042535,000117: # *PCOPY+1, YCOPY+1 (PITCH AND YAW COPYCYCLES) 042536,000118: # *ENABLE1,2, CMDSOUT (RE-ESTABLISH ACTUATOR TRIMS) 042537,000119: # *MRCLEAN OR TVCINIT4 (TVCDAP INITIALIZATIONS) 042538,000120: # *SWITCHOVR +5 (CSM/LM V46 SWITCH-OVER) 042539,000121: # *EXRSTRT AND TVCEXECUTIVE PHASE POINTS 1 THRU 6 042540,000122: # *WAITLIST, IBNKCALL, POSTJUMP, ISWCALL 042541,000123: 042542,000124: # OTHER INTERFACES....DOTVCON AND RCSDAPON (T5 BITS), ELRSKIP (CALLS IT) 042543,000125: 042544,000126: # ERASABLE ININTIALIZATION REQUIRED.... 042545,000127: 042546,000128: # *T5 BITS (1,0), TVCPHASE (-2,-1,0,1,2,3), TVCEXPHS (1 THRU 6) 042547,000129: # *TVC DAP VARIABLES 042548,000130: # *OPERATIONS PERFORMED BY REDOTVC ARE BASED ON THE ASSUMPTION THAT 042549,000131: # THE TVC DAPS ARE RUNNING NORMALLY 042550,000132: 042551,000133: # OUTPUT.... 042552,000134: 042553,000135: # *PITCH AND YAW TVC DAP COPYCYCLES COMPLETED IF INTERRUPTED 042554,000136: # *TVCEXECUTIVE COMPLETED IF INTERRUPTED 042555,000137: # *STROKE TEST TERMINATED IF INTERRUPTED 042556,000138: # *CSM/LM V46 SWITCH-OVER REPEATED IF INTERRUPTED 042557,000139: # *ACTUATOR TRIMS RE-ESTABLISHED (ACTUATORS BACK ON THE AIR) 042558,000140: # *TVC DAP INITIALIZATION AS REQUIRED 042559,000141: # *ALL TVC DAP OPERATIONS ON THE AIR 042560,000142: 042561,000143: # DEBRIS....TVC TEMPORARIES IN EBANK6 042562,000144: 042563,000145: # Page 958 042564,000146: 042565,000147: 16,3140 BANK 16 042566,000148: 16,2000 SETLOC DAPROLL 042567,000149: 16,2000 BANK 042568,000150: 16,3140 E6,1644 EBANK= TVCPHASE 042569,000151: 16,3140 COUNT* $$/RSRT 042570,000152: 042571,000153: 16,3140 22016 REDOTVC LXCH BANKRUPT # TVC RESTART PACKAGE 042572,000154: 16,3141 00006 EXTEND 042573,000155: 16,3142 22012 QXCH QRUPT # ("TCR" IN "FINCOPY") 042574,000156: 042575,000157: 16,3143 11651 EXECPHS CCS TVCEXPHS # CHECK TVCEXECUTIVE PHASE 042576,000158: 16,3144 13146 TCF +2 # MUST RESTART TVCEXECUTIVE 042577,000159: 16,3145 13152 TCF TVCDAPHS # NO NEED TO RESTART TVCEXECUTIVE 042578,000160: 042579,000161: 16,3146 34334 CAF NINE # 9CS DELAY TO FORCE EXRSTRT TO OCCUR 042580,000162: 16,3147 05245 TC WAITLIST # BEFORE PITCHDAP, AFTER CMDSOUT 042581,000163: 16,3150 E6,1651 EBANK= TVCEXPHS 042582,000164: 16,3150 03253 34066 2CADR EXRSTRT 042583,000165: 042584,000166: 16,3152 47700 TVCDAPHS CS OCT37776 # CHECK BITS 15 AND 1 OF TVCPHASE TO SEE 042585,000167: 16,3153 71644 MASK TVCPHASE # DAP RESTART LOCATION (-1,1,2,3) 042586,000168: 16,3154 10000 CCS A 042587,000169: 16,3155 13240 TCF FINCOPY # FINISH THE COPYCYCLE FIRST 042588,000170: 16,3156 13163 TCF ENABL1 # JUST PREPARE THE OUTCOUNTERS AND GO 042589,000171: 042590,000172: 16,3157 41644 CS TVCPHASE # TEST FOR TVCPHASE = -2 042591,000173: 16,3160 75016 MASK BIT2 # (THIS INDICATES RESTART OCCURRED 042592,000174: 16,3161 00006 EXTEND # DURING CSM/LM V46 SWITCH-OVER) 042593,000175: 16,3162 13244 BZF TRIM/CMD # NO. TVCPHASE = -1. RSTRT WAS IN TVCINIT 042594,000176: 042595,000177: 16,3163 35010 ENABL1 CAF BIT8 # TVC ENABLE, FOLLOWED BY 40 MS (MIN) WAIT 042596,000178: 16,3164 65005 AD BIT11 # SET BIT FOR OPTICS-DAC-ENABLE ALSO 042597,000179: 16,3165 00006 EXTEND # (ENABL1 ENTERED FROM TVCDAPHS / FINCOPY) 042598,000180: 16,3166 05012 WOR CHAN12 042599,000181: 16,3167 33257 CAF TVCADDR # WAIT, CALLING ENABL2 (BBCON THERE) 042600,000182: 16,3170 55312 TS T5LOC 042601,000183: 16,3171 33263 CAF TVCADDR +4 # 60 MS (TVCEXADR) 042602,000184: 16,3172 54030 TS TIME5 042603,000185: 042604,000186: 16,3173 15333 TCF RESUME 042605,000187: 042606,000188: 16,3174 22016 ENABL2 LXCH BANKRUPT # CONTINUE PREPARATION OF OUTCOUNTERS 042607,000189: 042608,000190: 16,3175 35016 CAF BIT2 # OPTICS ERROR CNTR ENABLE, 4MS MIN WAIT 042609,000191: 16,3176 00006 EXTEND 042610,000192: 16,3177 05012 WOR CHAN12 042611,000193: # Page 959 042612,000194: 16,3200 33261 CAF TVCADDR +2 # WAIT, CALLING CMDSOUT (BBCON THERE) 042613,000195: 16,3201 55312 TS T5LOC 042614,000196: 16,3202 37700 CAF OCT37776 # 20MS 042615,000197: 16,3203 54030 TS TIME5 042616,000198: 042617,000199: 16,3204 15335 TCF NOQRSM 042618,000200: 042619,000201: 16,3205 22016 CMDSOUT LXCH BANKRUPT # CONTNUE PREPARATION OF OUTCOUNTERS 042620,000202: 16,3206 00006 EXTEND 042621,000203: 16,3207 22012 QXCH QRUPT 042622,000204: 042623,000205: 16,3210 45021 CS ZERO # MOST RECENT ACTUATOR COMMANDS 042624,000206: 16,3211 61623 AD PCMD # (AVOID +0) 042625,000207: 16,3212 54054 TS TVCPITCH 042626,000208: 16,3213 45021 CS ZERO 042627,000209: 16,3214 61624 AD YCMD 042628,000210: 16,3215 54053 TS TVCYAW 042629,000211: 042630,000212: 16,3216 35062 CAF PRIO6 # RELEASE THE COUNTERS (BITS 11,12) 042631,000213: 16,3217 00006 EXTEND 042632,000214: 16,3220 05014 WOR CHAN14 042633,000215: 042634,000216: 16,3221 11644 PHSCHK2 CCS TVCPHASE # CHECK TVCPHASE AGAIN 042635,000217: 16,3222 13232 TCF CHKSTRK 042636,000218: 16,3223 13232 TCF CHKSTRK 042637,000219: 16,3224 10000 CCS A # A CONTAINS THE DIMINISHED ABSOLUTE OF 042638,000220: 16,3225 03230 TC +3 # TVCPHASE (-2 BECOMES +1. -1 BECOMES +0) 042639,000221: 042640,000222: 16,3226 04701 TC POSTJUMP # REPEAT TVC INITIALIZATION 042641,000223: 16,3227 36152 CADR MRCLEAN # (DO NOT RETURN) 042642,000224: 042643,000225: 16,3230 04740 +3 TC IBNKCALL # REPEAT CSM/LM V46 SWITCH-OVER 042644,000226: 16,3231 36361 CADR SWICHOVR +5 # (RETURN TO CHECK FOR STROKE TEST) 042645,000227: 042646,000228: 16,3232 11574 CHKSTRK CCS STROKER # CHECK FOR STROKE TEST IN PROGRESS 042647,000229: 16,3233 13250 TCF TSTINITJ # YES, KILL IT 042648,000230: 16,3234 13236 TCF +2 # NO, PROCEED 042649,000231: 16,3235 13250 TCF TSTINITJ # YES, KILL IT 042650,000232: 042651,000233: 16,3236 04701 +4 TC POSTJUMP # IF POSITIVE OR ZERO, RESTART AT 042652,000234: 16,3237 36324 CADR TVCINIT4 # TVCINIT4 (ZEROS TVCPHASE, AND 042653,000235: # CALLS TVC DAPS VIA DAPINIT) 042654,000236: 16,3240 51644 FINCOPY INDEX TVCPHASE # PICK UP THE APPROPRIATE COPYCYCLE 042655,000237: 16,3241 33257 CAF TVCCADR 042656,000238: 16,3242 04744 TCR ISWCALL # RE-ENTER THE COPYCYCLE, RETURN AT END 042657,000239: 16,3243 13163 TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS 042658,000240: 042659,000241: 16,3244 00006 TRIM/CMD EXTEND # TVCDAPON INITIALIZATION NOT COMPLETED, 042660,000242: # Page 960 042661,000243: 16,3245 31424 DCA PACTOFF # EG. P,YCMD MAY NOT BE SET. SET... 042662,000244: 16,3246 53624 DXCH PCMD 042663,000245: 16,3247 13163 TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS 042664,000246: 042665,000247: 16,3250 35021 TSTINITJ CAF ZERO # DISABLE STROKE TEST (-0 SHOWS PRIOR V68) 042666,000248: 16,3251 55574 TS STROKER # (+0 MEANS NEW V68 REQUIRED FOR STARTUP) 042667,000249: 042668,000250: 16,3252 13236 TCF CHKSTRK +4 042669,000251: 042670,000252: 16,3253 51651 EXRSTRT INDEX TVCEXPHS # TVCEXECUTIVE RESTARTS....GO TO 042671,000253: 16,3254 33263 CAF TVCEXADR # APPROPRIATE RESTART POINT 042672,000254: 16,3255 50000 INDEX A 042673,000255: 16,3256 10000 TCF 0 042674,000256: 042675,000257: # Page 961 042676,000258: # TVC RESTART TABLES.... ORDER IS REQUIRED. HI-ORDER WORDS ONLY, OF 2CADRS, SINCE BBCON IS ALREADY THERE. 042677,000259: 042678,000260: 16,3257 16,3257 TVCADDR = TVCCADR # TABLE OF CADRS, UNUSED LOCS FOR GENADRS 042679,000261: 16,3257 03174 TVCCADR GENADR ENABL2 # (FOR T5 CALL, UNUSED TABLE LOC) 042680,000262: 16,3260 40675 +1 CADR PCOPY +1 # PITCH COPYCYCLE 042681,000263: 16,3261 03205 +2 GENADR CMDSOUT # (FOR T5 CALL, UNUSED TABLE LOC) 042682,000264: 16,3262 41051 +3 CADR YCOPY +1 # YAW COPYCYCLE 042683,000265: 16,3263 37772 TVCEXADR OCT 37772 # (UNUSED TABLE LOC, FILL WITH 60MS, T5) 042684,000266: 16,3264 03003 +1 GENADR EXECCOPY +1 # TVCEXECUTIVE RESTART POINTS (ORDERED) 042685,000267: 16,3265 03011 +2 GENADR 1SHOTCHK 042686,000268: 16,3266 03040 +3 GENADR TEMPSET 042687,000269: 16,3267 03043 +4 GENADR CORSETUP 042688,000270: 16,3270 03121 +5 GENADR CORCOPY +1 042689,000271: 16,3271 03132 +6 GENADR CNTRCOPY End of include-file TVCRESTARTS.agc. Parent file is MAIN.agc