Source Code

040473,000001: # Copyright: Public domain. 040474,000002: # Filename: TVCRESTARTS.agc 040475,000003: # Purpose: Part of the source code for Colossus, build 249. 040476,000004: # It is part of the source code for the Command Module's (CM) 040477,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 040478,000006: # Assembler: yaYUL 040479,000007: # Reference: Starts on p. 920 of 1701.pdf. 040480,000008: # Contact: Ron Burkey <info@sandroid.org>. 040481,000009: # Website: www.ibiblio.org/apollo/index.html 040482,000010: # Mod history: 08/23/04 RSB. Began transcribing. 040483,000011: # 05/14/05 RSB Corrected website reference above. 040484,000012: # 2010-10-24 JL Indentation fixes. 040485,000013: 040486,000014: # The contents of the "Colossus249" files, in general, are transcribed 040487,000015: # from a scanned document obtained from MIT's website, 040488,000016: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 040489,000017: # document read, in part: 040490,000018: 040491,000019: # Assemble revision 249 of AGC program Colossus by NASA 040492,000020: # 2021111-041. October 28, 1968. 040493,000021: 040494,000022: # This AGC program shall also be referred to as 040495,000023: # Colossus 1A 040496,000024: 040497,000025: # Prepared by 040498,000026: # Massachusetts Institute of Technology 040499,000027: # 75 Cambridge Parkway 040500,000028: # Cambridge, Massachusetts 040501,000029: # under NASA contract NAS 9-4065. 040502,000030: 040503,000031: # Refer directly to the online document mentioned above for further information. 040504,000032: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 040505,000033: 040506,000034: # In some cases, where the source code for Luminary 131 overlaps that of 040507,000035: # Colossus 249, this code is instead copied from the corresponding Luminary 131 040508,000036: # source file, and then is proofed to incorporate any changes. 040509,000037: 040510,000038: # Page 920 040511,000039: # NAME....TVCRESTART PACKAGE, CONSISTING OF REDOTVC, ENABL1, 2, CMDSOUT, PHSCHK2, ETC. 040512,000040: # LOG SECTION....TVCRESTART PACKAGE SUBROUTINE....DAPCSM 040513,000041: # MOD BY ENGEL DATE....19 OCT, 1967 040514,000042: 040515,000043: # FUNCTIONAL DESCRIPTION.... 040516,000044: 040517,000045: # *RESTART-PROCESS THE TVC DAPS, INCLUDING PITCHDAP, YAWDAP, 040518,000046: # TVCEXECUTIVE, (?) DAP, TVCINIT4, TVCDAPON, AND STROKE TEST. 040519,000047: 040520,000048: # *TVC RESTARTS DESERVE SPECIAL CONSIDERATION IN SEVERAL AREAS. 040521,000049: # RESTART DOWN-TIME IS IMPORTANT BECAUSE OF THE TRANSIENTS INTRODUCED 040522,000050: # BY TEH THRUST VECTOR RETURN TO THE ACTUATOR MECHANICAL NULLS 040523,000051: # FOLLOWING TVC AND OPTICS-ERROR-COUNTER-DISENABLES (CHANNEL 12). 040524,000052: # TVC USES A MIXTURE OF WAITLIST, T5, T6, AND JOB CALLS. THERE IS 040525,000053: # FILTER MEMORY (UP TO 7TH ORDER) TO BE PROTECTED IF WILD TRANSIENTS 040526,000054: # ARE TO BE AVOIDED. SEVERAL COUNTERS ARE INVOLVED FOR TIMING TVC 040527,000055: # EVENTS SUCH AS SWITCHOVER AND STROKE TEST STARTUPS AND RE-STARTUPS. 040528,000056: # THE TVC GAINS ARE DECREMENTED. THE GIMBAL TRIM ESTIMATORS AND THE 040529,000057: # BODY AXIS ATTITUDE ERROR INTEGRATORS INVOLVE DIGITAL SUMMATION. 040530,000058: # DIGITAL DIFFERENTIATORS ARE INVOLVED IN THE BODY AXIS RATE ESTIMATIONS 040531,000059: # AND IN THE OUTPUTTING OF ACTUATOR COMMANDS. THERE IS AN 040532,000060: # OFFSET-TRACKER-FILTER TO PROTECT. ETC., ETC. 040533,000061: 040534,000062: # *THOSE QUANTITIES WHICH MUST BE PROTECTED ARE STORED IN TEMPORARY 040535,000063: # REGISTERS AS THEY ARE COMPUTED, FOR UPDATING THE REAL REGISTERS 040536,000064: # DURING COPYCYCLES. 040537,000065: 040538,000066: # *THE SEVERAL COPYCYCLES ARE EACH PROTECTED BY PHASE POINTS AT THEIR 040539,000067: # BEGINNING AND AT THEIR TERMINATION. THE PHASE POINTS ARE SIMPLY 040540,000068: # "INCR" INSTRUCTIONS, EITHER "INCR TVCEXPHS" FOR COPYCYCLES 040541,000069: # IN THE TVCEXECUTIVE, OR "INCR TVCPHASE" FOR THE PITCH AND YAW 040542,000070: # COPYCYCLES. INDEXING ON EACH OF THESE POINTERS THEN PERMITS A 040543,000071: # RETURN TO THE APPROPRIATE RESTART POINTS. 040544,000072: 040545,000073: # *IF A RESTART OCCURS DURING EITHER COPYCYCLE, THAT COPYCYCLE IS 040546,000074: # COMPLETED. THEN THE NORMAL TVCINIT4....DAPINIT....PITCHDAP STARTUP 040547,000075: # SEQUENCE IS CALLED UPON TO GET THINGS GOING AGAIN. 040548,000076: 040549,000077: # *TVC-ENABLE AND OPTICS-ERROR-COUNTER ENABLE MUST BE SET ASAP 040550,000078: # (ALLOWING FOR PROCEDURAL DELAYS). THEN THE ENGINES ARE COMMANDED 040551,000079: # TO THE P,YACTOFF TRIM VALUES. THE DAPS ARE THEN READY TO GO ON THE 040552,000080: # AIR, WITH THE REGULAR STARTUP SEQUENCE, EITHER AT MRCLEAN FOR A 040553,000081: # COMPLETE INITIALIZATION OR AT TVCIIT4 FOR A PARTIAL INITIALIZATION. 040554,000082: 040555,000083: # *FOR RESTARTS PRIOR TO THE SETTING OF THE T5 BITS IN IGNOVER THE 040556,000084: # PRE40.6 SECTION OF S40.6 TAKES CARE OF RE-ESTABLISHING TRIMS. 040557,000085: 040558,000086: # *IF A RESTART OCCURS DURING THE TVCEXEC....TVCEXFIN SEQUENCE THE 040559,000087: # COMPUTATIONS WILL BE COMPLETED, STARTING AT THE APPROPRIATE RESTART 040560,000088: # POINT, AFTER THE DAPS ARE READY TO GO ON THE AIR. 040561,000089: 040562,000090: # *IF A RESTART OCCURS PRIOR TO TVCINIT4 (TVCPHAS = -1) E.G. DURING 040563,000091: # THE EARLY DAP INITIALIZATION PHASE, THE DAP STARTUP SEQUENCE IS 040564,000092: # ENTERED AT MRCLEAN FOR A FULL INITIALIZATION. 040565,000093: 040566,000094: # *RESTARTS ARE NOT CRITICAL TO THE ROLL DAP PERFORMANCES HENCE THE 040567,000095: # ROLL DAP IS MERELY RESTARTED. 040568,000096: 040569,000097: # *RESTARTS DURING A STROKE TEST (STROKER IS NON-ZERO) WILL CAUSE THE 040570,000098: # STROKE TEST TO BE TERMINATED. A NEW V68 ENTRY WILL BE REQUIRED 040571,000099: # Page 921 040572,000100: # TO GET IT GOING AGAIN (NO AUTOMATIC RESTART). 040573,000101: # 040574,000102: # *REDOTVC IS REACHED FOLLOWING ANY RESTART WHICH FINDS THE T5 BITS 040575,000103: # (BITS 15,14 OF FLAGWRD6) SET FOR TVC. IGNOVER PREPARES TVCPHASE = -1 040576,000104: # AND TVC EXPHS = 0 JUST BEFORE SETTING THESE BITS, JUST BEFORE 040577,000105: # MAKING THE T5 CALL TO TVCDAPON. T.V.N.G. TAKES OVER THE T5 CLOCK 040578,000106: # TO CALL RCSUP/RCSDAPON WHICH RESETS THE T5 BITS (FOR RCS) ON A 040579,000107: # NORMAL SHUTDOWN. 040580,000108: 040581,000109: # CALLING SEQUENCE....T5, IN PARTICULAR BY ELRSKIP OF FRESH START/RESTART 040582,000110: 040583,000111: # NORMAL EXIT MODES....RESUME, NOQRSM, POSTJUMP (TO TVCINIT4 OR MRCLEAN) 040584,000112: 040585,000113: # ALARM OR ABORT EXIT MODES....NONE 040586,000114: 040587,000115: # SUBROUTINES CALLED.... 040588,000116: 040589,000117: # *PCOPY+1, YCOPY+1 (PITCH AND YAW COPYCYCLES) 040590,000118: 040591,000119: # *ENABLE1,2, CMDSOUT (RE-ESTABLISH ACTUATOR TRIMS) 040592,000120: 040593,000121: # *MRCLEAN OR TVCINIT4 (TVCDAP INITIALIZATIONS) 040594,000122: 040595,000123: # *EXRSTRT AND TVCEXECUTIVE PHASE POINTS 1 THRU 9 040596,000124: 040597,000125: # *WAITLIST, IBNKCALL, POSTJUMP, ISWCALL 040598,000126: 040599,000127: # OTHER INTERFACES....IGNOVER AND RCSDAPON (T5 BITS), ELRSKIP (CALLS IT) 040600,000128: 040601,000129: # ERASABLE ININTIALIZATION REQUIRED.... 040602,000130: 040603,000131: # *T5 BITS, TVCPHASE, TVCEXPHS 040604,000132: 040605,000133: # *TVC DAP VARIABLES 040606,000134: 040607,000135: # *OPERATIONS PERFORMED BY REDOTVC ARE BASED ON THE ASSUMPTION THAT 040608,000136: # THE TVC DAPS ARE RUNNING NORMALLY 040609,000137: 040610,000138: # OUTPUT.... 040611,000139: 040612,000140: # *PITCH AND YAW TVC DAP COPYCYCLES COMPLETED IF INTERRUPTED 040613,000141: 040614,000142: # *TVCEXECUTIVE COMPLETED IF INTERRUPTED 040615,000143: 040616,000144: # *STROKE TEST TERMINATED IF INTERRUPTED 040617,000145: 040618,000146: # *ACTUATOR TRIMS RE-ESTABLISHED (ACTUATORS BACK ON THE AIR) 040619,000147: 040620,000148: # *TVC DAP INITIALIZATION AS REQUIRED 040621,000149: 040622,000150: # *ALL TVC DAP OPERATIONS ON THE AIR 040623,000151: 040624,000152: # DEBRIS....TVC TEMPORARIES IN EBANK6 040625,000153: 040626,000154: 16,3165 BANK 16 040627,000155: 16,2000 SETLOC DAPROLL 040628,000156: 16,2000 BANK 040629,000157: 16,3165 E6,1654 EBANK= TVCPHASE 040630,000158: 040631,000159: 16,3165 COUNT* $$/RSRT 040632,000160: 16,3165 22016 REDOTVC LXCH BANKRUPT # TVC RESTART PACKAGE 040633,000161: # Page 922 040634,000162: 16,3166 00006 EXTEND 040635,000163: 16,3167 22012 QXCH QRUPT # ("TCR" IN "FINCOPY") 040636,000164: 040637,000165: 16,3170 11661 EXECPHS CCS TVCEXPHS # CHECK TVCEXECUTIVE PHASE 040638,000166: 16,3171 13173 TCF +2 # MUST RESTART TVCEXECUTIVE 040639,000167: 16,3172 13177 TCF TVCDAPHS # NO NEED TO RESTART TVCEXECUTIVE 040640,000168: 040641,000169: 16,3173 34334 CAF NINE # 9CS DELAY TO FORCE EXRSTRT TO OCCUR 040642,000170: 16,3174 05140 TC WAITLIST # BEFORE PITCHDAP, AFTER CMDSOUT 040643,000171: 16,3175 E6,1661 EBANK= TVCEXPHS 040644,000172: 16,3175 03271 34066 2CADR EXRSTRT 040645,000173: 040646,000174: 16,3177 47700 TVCDAPHS CS OCT37776 # CHECK BITS 15 AND 1 OF TVCPHASE TO SEE 040647,000175: 16,3200 71654 MASK TVCPHASE # DAP RESTART LOCATION (-1,1,2,3) 040648,000176: 16,3201 10000 CCS A 040649,000177: 16,3202 13256 TCF FINCOPY # FINISH THE COPYCYCLE FIRST 040650,000178: 16,3203 13205 TCF ENABL1 # JUST PREPARE THE OUTCOUNTERS AND GO 040651,000179: 16,3204 13262 TCF TRIM/CMD # (RE-)DO P,YCMD INITIALIZATION FIRST 040652,000180: 16,3205 34703 ENABL1 CAF BIT8 # TVC ENABLE, FOLLOWED BY 40 MS (MIN) WAIT 040653,000181: 16,3206 64700 AD BIT11 # OPTICS DAC DISENGAGE TOO 040654,000182: 16,3207 00006 EXTEND # (ENABL1 ENTRIES..+0,- CCS, FINCOPY) 040655,000183: 16,3210 05012 WOR CHAN12 040656,000184: 16,3211 33275 CAF TVCADDR # WAIT, CALLING ENABL2 (BBCON THERE) 040657,000185: 16,3212 55312 TS T5LOC 040658,000186: 16,3213 33301 CAF TVCADDR +4 # 60 MS (TVCEXADR) 040659,000187: 16,3214 54030 TS TIME5 040660,000188: 040661,000189: 16,3215 15222 TCF RESUME 040662,000190: 16,3216 22016 ENABL2 LXCH BANKRUPT # CONTINUE PREPARATION OF OUTCOUNTERS 040663,000191: 040664,000192: 16,3217 34711 CAF BIT2 # OPTICS ERROR CNTR ENABLE, 4MS MIN WAIT 040665,000193: 16,3220 00006 EXTEND 040666,000194: 16,3221 05012 WOR CHAN12 040667,000195: 16,3222 33277 CAF TVCADDR +2 # WAIT, CALLING CMDSOUT (BBCON THERE) 040668,000196: 16,3223 55312 TS T5LOC 040669,000197: 16,3224 37700 CAF OCT37776 # 20MS 040670,000198: 16,3225 54030 TS TIME5 040671,000199: 040672,000200: 16,3226 15224 TCF NOQRSM 040673,000201: 16,3227 22016 CMDSOUT LXCH BANKRUPT # CONTNUE PREPARATION OF OUTCOUNTERS 040674,000202: 16,3230 00006 EXTEND 040675,000203: 16,3231 22012 QXCH QRUPT 040676,000204: # Page 923 040677,000205: 16,3232 44714 CS ZERO # MOST RECENT ACTUATOR COMMANDS 040678,000206: 16,3233 61631 AD PCMD # (AVOID +0) 040679,000207: 16,3234 54054 TS TVCPITCH 040680,000208: 16,3235 44714 CS ZERO 040681,000209: 16,3236 61632 AD YCMD 040682,000210: 16,3237 54053 TS TVCYAW 040683,000211: 040684,000212: 16,3240 34755 CAF PRIO6 # RELEASE THE COUNTERS (BITS 11,12) 040685,000213: 16,3241 00006 EXTEND 040686,000214: 16,3242 05014 WOR CHAN14 040687,000215: 040688,000216: 16,3243 41654 PHSCHK2 CS TVCPHASE # CHECK TVCPHASE AGAIN 040689,000217: 16,3244 00006 EXTEND 040690,000218: 16,3245 63250 BZMF +3 040691,000219: 16,3246 04574 TC POSTJUMP # IF NEGATIVE, RESTART AT MRCLEAN 040692,000220: 16,3247 36033 CADR MRCLEAN # FOR FULL INITIALIZATION 040693,000221: 040694,000222: 16,3250 11614 CHKSTRK CCS STROKER # CHECK FOR STROKE TEST IN PROGRESS 040695,000223: 16,3251 13266 TCF TSTINITJ # YES, KILL IT 040696,000224: 16,3252 13254 TCF +2 # NO, PROCEED 040697,000225: 16,3253 13266 TCF TSTINITJ # YES, KILL IT 040698,000226: 040699,000227: 16,3254 04574 +4 TC POSTJUMP # IF POSTIVE OR ZERO, RESTART AT 040700,000228: 16,3255 36160 CADR TVCINIT4 # TVCINIT4 (ZEROS TVCPHASE, AND 040701,000229: # CALLS TVC DAPS) 040702,000230: 16,3256 51654 FINCOPY INDEX TVCPHASE # PICK UP THE APPROPRIATE COPYCYCLE 040703,000231: 16,3257 33275 CAF TVCCADR 040704,000232: 16,3260 04637 TCR ISWCALL # RE-ENTER THE COPYCYCLE, RETURN AT END 040705,000233: 16,3261 13205 TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS 040706,000234: 16,3262 00006 TRIM/CMD EXTEND # TVCDAPON INITIALIZATION NOT COMPLETED, 040707,000235: 16,3263 31426 DCA PACTOFF # EG. P,YCMD MAY NOT BE SET. SET... 040708,000236: 16,3264 53632 DXCH PCMD 040709,000237: 16,3265 13205 TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS 040710,000238: 16,3266 34714 TSTINITJ CAF ZERO # DISABLE STROKE TEST (-0 SHOWS PRIOR V68) 040711,000239: 16,3267 55614 TS STROKER # (+0 MEANS NEW V68 REQUIRED FOR STARTUP) 040712,000240: 16,3270 13254 TCF CHKSTRK +4 040713,000241: 040714,000242: 16,3271 51661 EXRSTRT INDEX TVCEXPHS # TVCEXECUTIVE RESTARTS....GO TO 040715,000243: 16,3272 33301 CAF TVCEXADR # APPROPRIATE RESTART POINT 040716,000244: 16,3273 50000 INDEX A 040717,000245: 16,3274 10000 TCF 0 040718,000246: 040719,000247: # Page 924 040720,000248: # TVC RESTART TABLES.... ORDER IS REQUIRED. HI-ORDER WORDS ONLY, OF 2CADRS, SINCE BBCON IS ALREADY THERE. 040721,000249: 040722,000250: 16,3275 16,3275 TVCADDR = TVCCADR # TABLE OF CADRS, UNUSED LOCS FOR GENADRS 040723,000251: 16,3275 03216 TVCCADR GENADR ENABL2 # (FOR T5 CALL, UNUSED TABLE LOC) 040724,000252: 16,3276 40561 +1 CADR PCOPY +1 # PITCH COPYCYCLE 040725,000253: 16,3277 03227 +2 GENADR CMDSOUT # (FOR T5 CALL, UNUSED TABLE LOC) 040726,000254: 16,3300 41037 +3 CADR YCOPY +1 # YAW COPYCYCLE 040727,000255: 16,3301 37772 TVCEXADR OCT 37772 # (UNUSED TABLE LOC, FILL WITH 60MS, T5) 040728,000256: 16,3302 02742 +1 GENADR EXECCOPY +1 # TVCEXECUTIVE RESTART POINTS (ORDERED) 040729,000257: 16,3303 02750 +2 GENADR SWT/COR 040730,000258: 16,3304 03030 +3 GENADR SWTCOPY +1 040731,000259: 16,3305 03050 +4 GENADR TEMPSET 040732,000260: 16,3306 03053 +5 GENADR CORSETUP 040733,000261: 16,3307 03111 +6 GENADR CORCOPY +1 040734,000262: 16,3310 03122 +7 GENADR CNTRCOPY 040735,000263: 16,3311 03125 +8D GENADR STRKUP 040736,000264: 16,3312 03140 +9D GENADR STRKTCPY +1 End of include-file TVCRESTARTS.agc. Parent file is MAIN.agc