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