Source Code

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