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