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