Source Code
![]() |
These source-code files were obtained by digitally photographing the
Colossus 237 program listing from the private collection of original
AGC developer Fred Martin, and then modifying pre-existing Colossus 249
(Apollo 9) source files to incorporate changes. Note that the page images
presented online are of reduced quality, and that additional images
are available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 237 OF AGC PROGRAM COLOSSUS BY NASA 2021111-031 1:17 AUG. 24, 1968 |
039591,000002: # Copyright: Public domain.
039592,000003: # Filename: TVCRESTARTS.agc
039593,000004: # Purpose: Part of the source code for Colossus build 237.
039594,000005: # This is for the Command Module's (CM) Apollo Guidance
039595,000006: # Computer (AGC), we believe for Apollo 8.
039596,000007: # Assembler: yaYUL
039597,000008: # Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
039598,000009: # Website: www.ibiblio.org/apollo/index.html
039599,000010: # Page scans: www.ibiblio.org/apollo/ScansForConversion/Colossus237/
039600,000011: # Mod history: 2011-03-06 JL Adapted from corresponding Colossus 249 file.
039601,000012:
039602,000013: # # Page 913
039603,000014: # NAME....TVCRESTART PACKAGE, CONSISTING OF REDOTVC, ENABL1, 2, CMDSOUT, PHSCHK2, ETC.
039604,000015: # LOG SECTION....TVCRESTART PACKAGE SUBROUTINE....DAPCSM
039605,000016: # MOD BY ENGEL DATE....19 OCT, 1967
039606,000017:
039607,000018: # FUNCTIONAL DESCRIPTION....
039608,000019:
039609,000020: # *RESTART-PROOFS THE TVC DAPS, INCLUDING PITCHDAP, YAWDAP,
039610,000021: # TVCEXECUTIVE, ROLL DAP, TVCINIT4, TVCDAPON, AND STROKE TEST
039611,000022: # *TVC RESTARTS DESERVE SPECIAL CONSIDERATION IN SEVERAL AREAS.
039612,000023: # RESTART DOWN-TIME IS IMPORTANT BECAUSE OF THE TRANSIENTS INTRODUCED
039613,000024: # BY THE THRUST VECTOR RETURN TO THE ACTUATOR MECHANICAL NULLS
039614,000025: # FOLLOWING TVC- AND OPTICS-ERROR-COUNTER-DISENABLES (CHANNEL 12).
039615,000026: # TVC USES A MIXTURE OF WAITLIST, T5, T6, AND JOB CALLS. THERE IS
039616,000027: # FILTER MEMORY (UP TO 7TH ORDER) TO BE PROTECTED IF WILD TRANSIENTS
039617,000028: # ARE TO BE AVOIDED. SEVERAL COUNTERS ARE INVOLVED FOR TIMING TVC
039618,000029: # EVENTS SUCH AS SWITCHOVER AND STROKE TEST STARTUPS AND RE-STARTUPS.
039619,000030: # THE TVC GAINS ARE DECREMENTED. THE GIMBAL TRIM ESTIMATORS AND THE
039620,000031: # BODY AXIS ATTITUDE ERROR INTEGRATORS INVOLVE DIGITAL SUMMATION.
039621,000032: # DIGITAL DIFFERENTIATORS ARE INVOLVED IN THE BODY AXIS RATE ESTIMA-
039622,000033: # TIONS AND IN THE OUTPUTTING OF ACTUATOR COMMANDS. THERE IS AN
039623,000034: # OFFSET-TRACKER-FILTER TO PROTECT. ETC., ETC.
039624,000035: # *THOSE QUANTITIES WHICH MUST BE PROTECTED ARE STORED IN TEMPORARY
039625,000036: # REGISTERS AS THEY ARE COMPUTED, FOR UPDATING THE REAL REGISTERS
039626,000037: # DURING COPYCYCLES.
039627,000038: # *THE SEVERAL COPYCYCLES ARE EACH PROTECTED BY PHASE POINTS AT THEIR
039628,000039: # BEGINNING AND AT THEIR TERMINATION. THE PHASE POINTS ARE SIMPLY
039629,000040: # ..INCR.. INSTRUCTIONS, EITHER ..INCR TVCEXPHS.. FOR COPYCYCLES
039630,000041: # IN THE TVCEXECUTIVE, OR ..INCR TVCPHASE.. FOR THE PITCH AND YAW
039631,000042: # COPYCYCLES. INDEXING ON EACH OF THESE POINTERS THEN PERMITS A
039632,000043: # RETURN TO THE APPROPRIATE RESTART POINTS.
039633,000044: # *IF A RESTART OCCURS DURING EITHER COPYCYCLE, THAT COPYCYCLE IS
039634,000045: # COMPLETED. THEN THE NORMAL TVCINIT4....DAPINIT....PITCHDAP STARTUP
039635,000046: # SEQUENCE IS CALLED UPON TO GET THINGS GOING AGAIN.
039636,000047: # *TVC-ENABLE AND OPTICS-ERROR-COUNTER ENABLE MUST BE SET ASAP
039637,000048: # (ALLOWING FOR PROCEDURAL DELAYS). THEN THE ENGINES ARE COMMANDED
039638,000049: # TO THE P,YACTOFF TRIM VALUES. THE DAPS ARE THEN READY TO GO ON THE
039639,000050: # AIR, WITH THE REGULAR STARTUP SEQUENCE, EITHER AT MRCLEAN FOR A
039640,000051: # COMPLETE INITIALIZATION OR AT TVCINIT4 FOR A PARTIAL INITIALIZATION
039641,000052: # *FOR RESTARTS PRIOR TO THE SETTING OF THE T5 BITS IN IGNOVER THE
039642,000053: # PRE40.6 SECTION OF S40.6 TAKES CARE OF RE-ESTABLISHING TRIMS.
039643,000054: # *IF A RESTART OCCURS DURING THE TVCEXEC....TVCEXFIN SEQUENCE THE
039644,000055: # COMPUTATIONS WILL BE COMPLETED, STARTING AT THE APPROPRIATE RESTART
039645,000056: # POINT, AFTER THE DAPS ARE READY TO GO ON THE AIR.
039646,000057: # *IF A RESTART OCCURS PRIOR TO TVCINIT4 (TVCPHAS = -1) E.G. DURING
039647,000058: # THE EARLY DAP INITIALIZATION PHASE, THE DAP STARTUP SEQUENCE IS
039648,000059: # ENTERED AT MRCLEAN FOR A FULL INITIALIZATION.
039649,000060: # *RESTARTS ARE NOT CRITICAL TO THE ROLL DAP PERFORMANCES HENCE THE
039650,000061: # ROLL DAP IS MERELY RESTARTED.
039651,000062: # *RESTARTS DURING A STROKE TEST (STROKER IS NON-ZERO) WILL CAUSE THE
039652,000063: # STROKE TEST TO BE TERMINATED. A NEW V68 ENTRY WILL BE REQUIRED
039653,000064: # # Page 914
039654,000065: # TO GET IT GOING AGAIN (NO AUTOMATIC RESTART).
039655,000066: # *REDOTVC IS REACHED FOLLOWING ANY RESTART WHICH FINDS THE T5 BITS
039656,000067: # (BITS 15,14 OF FLAGWRD6) SET FOR TVC. IGNOVER PREPARES TVCPHASE =-1
039657,000068: # AND TVC EXPHS = 0 JUST BEFORE SETTING THESE BITS, JUST BEFORE
039658,000069: # MAKING THE T5 CALL TO TVCDAPON. T.V.N.G. TAKES OVER THE T5 CLOCK
039659,000070: # TO CALL RCSUP/RCSDAPON WHICH RESETS THE T5 BITS(FOR RCS) ON A
039660,000071: # NORMAL SHUTDOWN.
039661,000072:
039662,000073: # CALLING SEQUENCE....T5, IN PARTICULAR BY ELRSKIP OF FRESH START/RESTART
039663,000074:
039664,000075: # NORMAL EXIT MODES....RESUME, NOQRSM, POSTJUMP (TO TVCINIT4 OR MRCLEAN)
039665,000076:
039666,000077: # ALARM OR ABORT EXIT MODES....NONE
039667,000078:
039668,000079: # SUBROUTINES CALLED....
039669,000080:
039670,000081: # *PCOPY+1, YCOPY+1 (PITCH AND YAW COPYCYCLES)
039671,000082: # *ENABLE1,2, CMDSOUT (RE-ESTABLISH ACTUATOR TRIMS)
039672,000083: # *MRCLEAN OR TVCINIT4 (TVCDAP INITIALIZATIONS)
039673,000084: # *EXRSTRT AND TVCEXECUTIVE PHASE POINTS 1 THRU 9
039674,000085: # *WAITLIST, IBNKCALL, POSTJUMP, ISWCALL
039675,000086:
039676,000087: # OTHER INTERFACES....IGNOVER AND RCSDAPON (T5 BITS), ELRSKIP (CALLS IT)
039677,000088:
039678,000089: # ERASABLE ININTIALIZATION REQUIRED....
039679,000090:
039680,000091: # *T5 BITS, TVCPHASE, TVCEXPHS
039681,000092: # *TVC DAP VARIABLES
039682,000093: # *OPERATIONS PERFORMED BY REDOTVC ARE BASED ON THE ASSUMPTION THAT
039683,000094: # THE TVC DAPS ARE RUNNING NORMALLY
039684,000095:
039685,000096: # OUTPUT....
039686,000097:
039687,000098: # *PITCH AND YAW TVC DAP COPYCYCLES COMPLETED IF INTERUPTED
039688,000099: # *TVCEXECUTIVE COMPLETED IF INTERUPTED
039689,000100: # *STROKE TEST TERMINATED IF INTERRUPTED
039690,000101: # *ACTUATOR TRIMS RE-ESTABLISHED (ACTUATORS BACK ON THE AIR)
039691,000102: # *TVC DAP INITIALIZATION AS REQUIRED
039692,000103: # *ALL TVC DAP OPERATIONS ON THE AIR
039693,000104:
039694,000105: # DEBRIS....TVC TEMPORARIES IN EBANK6
039695,000106:
039696,000107:
039697,000108: 16,3165 BANK 16
039698,000109: 16,2000 SETLOC DAPROLL
039699,000110: 16,2000 BANK
039700,000111: 16,3165 E6,1654 EBANK= TVCPHASE
039701,000112:
039702,000113: 16,3165 COUNT* $$/RSRT
039703,000114: 16,3165 22016 REDOTVC LXCH BANKRUPT # TVC RESTART PACKAGE
039704,000115: # # Page 915
039705,000116: 16,3166 00006 EXTEND
039706,000117: 16,3167 22012 QXCH QRUPT # ( ..TCR.. IN ..FINCOPY.. )
039707,000118:
039708,000119: 16,3170 11661 EXECPHS CCS TVCEXPHS # CHECK TVCEXECUTIVE PHASE
039709,000120: 16,3171 13173 TCF +2 # MUST RESTART TVCEXECUTIVE
039710,000121: 16,3172 13177 TCF TVCDAPHS # NO NEED TO RESTART TVCEXECUTIVE
039711,000122:
039712,000123: 16,3173 34334 CAF NINE # 9CS DELAY TO FORCE EXRSTRT TO OCCUR
039713,000124: 16,3174 05140 TC WAITLIST # BEFORE PITCHDAP, AFTER CMDSOUT
039714,000125: 16,3175 E6,1661 EBANK= TVCEXPHS
039715,000126: 16,3175 03270 34066 2CADR EXRSTRT
039716,000127:
039717,000128:
039718,000129: 16,3177 47700 TVCDAPHS CS OCT37776 # CHECK BITS 15 AND 1 OF TVCPHASE TO SEE
039719,000130: 16,3200 71654 MASK TVCPHASE # DAP RESTART LOCATION (-1,1,2,3)
039720,000131: 16,3201 10000 CCS A
039721,000132: 16,3202 13255 TCF FINCOPY # FINISH THE COPYCYCLE FIRST
039722,000133: 16,3203 13205 TCF ENABL1 # JUST PREPARE THE OUTCOUNTERS AND GO
039723,000134: 16,3204 13261 TCF TRIM/CMD # (RE-)DO P,YCMD INITIALIZATION FIRST
039724,000135:
039725,000136:
039726,000137: 16,3205 34703 ENABL1 CAF BIT8 # TVC ENABLE, FOLLOWED BY 40 MS (MIN) WAIT
039727,000138: 16,3206 00006 EXTEND # (ENABL1 ENTRIES..+0,- CCS, FINCOPY)
039728,000139: 16,3207 05012 WOR CHAN12
039729,000140: 16,3210 33274 CAF TVCADDR # WAIT, CALLING ENABL2 (BBCON THERE)
039730,000141: 16,3211 55312 TS T5LOC
039731,000142: 16,3212 33300 CAF TVCADDR +4 # 60MS (TVCEXADR)
039732,000143: 16,3213 54030 TS TIME5
039733,000144:
039734,000145: 16,3214 15222 TCF RESUME
039735,000146:
039736,000147:
039737,000148: 16,3215 22016 ENABL2 LXCH BANKRUPT # CONTINUE PREPARATION OF OUTCOUNTERS
039738,000149:
039739,000150: 16,3216 34711 CAF BIT2 # OPTICS ERROR CNTR ENABLE, 4MS MIN WAIT
039740,000151: 16,3217 00006 EXTEND
039741,000152: 16,3220 05012 WOR CHAN12
039742,000153: 16,3221 33276 CAF TVCADDR +2 # WAIT, CALLING CMDSOUT (BBCON THERE)
039743,000154: 16,3222 55312 TS T5LOC
039744,000155: 16,3223 37700 CAF OCT37776 # 20MS
039745,000156: 16,3224 54030 TS TIME5
039746,000157:
039747,000158: 16,3225 15224 TCF NOQRSM
039748,000159:
039749,000160:
039750,000161: 16,3226 22016 CMDSOUT LXCH BANKRUPT # CONTNUE PREPARATION OF OUTCOUNTERS
039751,000162: 16,3227 00006 EXTEND
039752,000163: 16,3230 22012 QXCH QRUPT
039753,000164:
039754,000165: # # Page 916
039755,000166: 16,3231 44714 CS ZERO # MOST RECENT ACTUATOR COMMANDS
039756,000167: 16,3232 61631 AD PCMD # (AVOID +0)
039757,000168: 16,3233 54054 TS TVCPITCH
039758,000169: 16,3234 44714 CS ZERO
039759,000170: 16,3235 61632 AD YCMD
039760,000171: 16,3236 54053 TS TVCYAW
039761,000172:
039762,000173: 16,3237 34755 CAF PRIO6 # RELEASE THE COUNTERS (BITS 11,12)
039763,000174: 16,3240 00006 EXTEND
039764,000175: 16,3241 05014 WOR CHAN14
039765,000176:
039766,000177: 16,3242 41654 PHSCHK2 CS TVCPHASE # CHECK TVCPHASE AGAIN
039767,000178: 16,3243 00006 EXTEND
039768,000179: 16,3244 63247 BZMF +3
039769,000180: 16,3245 04574 TC POSTJUMP # IF NEGATIVE, RESTART AT MRCLEAN
039770,000181: 16,3246 36035 CADR MRCLEAN # FOR FULL INITIALIZATION
039771,000182:
039772,000183: 16,3247 11614 CHKSTRK CCS STROKER # CHECK FOR STROKE TEST IN PROGRESS
039773,000184: 16,3250 13265 TCF TSTINITJ # YES, KILL IT
039774,000185: 16,3251 13253 TCF +2 # NO, PROCEED
039775,000186: 16,3252 13265 TCF TSTINITJ # YES, KILL IT
039776,000187:
039777,000188: 16,3253 04574 +4 TC POSTJUMP # IF POSTIVE OR ZERO, RESTART AT
039778,000189: 16,3254 36162 CADR TVCINIT4 # TVCINIT4 (ZEROS TVCPHASE, AND
039779,000190: # CALLS TVC DAPS)
039780,000191:
039781,000192:
039782,000193: 16,3255 51654 FINCOPY INDEX TVCPHASE # PICK UP THE APPROPRIATE COPYCYCLE
039783,000194: 16,3256 33274 CAF TVCCADR
039784,000195: 16,3257 04637 TCR ISWCALL # RE-ENTER THE COPYCYCLE, RETURN AT END
039785,000196: 16,3260 13205 TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS
039786,000197:
039787,000198:
039788,000199: 16,3261 00006 TRIM/CMD EXTEND # TVCDAPON INITIALIZATION NOT COMPLETED,
039789,000200: 16,3262 31426 DCA PACTOFF # EG. P,YCMD MAY NOT BE SET. SET...
039790,000201: 16,3263 53632 DXCH PCMD
039791,000202: 16,3264 13205 TCF ENABL1 # NOW PREPARE THE OUTCOUNTERS
039792,000203:
039793,000204:
039794,000205: 16,3265 34714 TSTINITJ CAF ZERO # DISABLE STROKE TEST (-0 SHOWS PRIOR V68)
039795,000206: 16,3266 55614 TS STROKER # (+0 MEANS NEW V68 REQUIRED FOR STARTUP)
039796,000207:
039797,000208:
039798,000209: 16,3267 13253 TCF CHKSTRK +4
039799,000210:
039800,000211: 16,3270 51661 EXRSTRT INDEX TVCEXPHS # TVCEXECUTIVE RESTARTS....GO TO
039801,000212: 16,3271 33300 CAF TVCEXADR # APPROPRIATE RESTART POINT
039802,000213: 16,3272 50000 INDEX A
039803,000214: 16,3273 10000 TCF 0
039804,000215:
039805,000216: # # Page 917
039806,000217: # TVC RESTART TABLES.... ORDER IS REQUIRED. HI-ORDER WORDS ONLY, OF 2CADRS, SINCE BBCON IS ALREADY THERE.
039807,000218:
039808,000219: 16,3274 16,3274 TVCADDR = TVCCADR # TABLE OF CADRS, UNUSED LOCS FOR GENADRS
039809,000220: 16,3274 03215 TVCCADR GENADR ENABL2 # (FOR T5 CALL, UNUSED TABLE LOC)
039810,000221: 16,3275 40545 +1 CADR PCOPY +1 # PITCH COPYCYCLE
039811,000222: 16,3276 03226 +2 GENADR CMDSOUT # (FOR T5 CALL, UNUSED TABLE LOC)
039812,000223: 16,3277 41023 +3 CADR YCOPY +1 # YAW COPYCYCLE
039813,000224: 16,3300 37772 TVCEXADR OCT 37772 # (UNUSED TABLE LOC, FILL WITH 60MS, T5)
039814,000225: 16,3301 02742 +1 GENADR EXECCOPY +1 # TVCEXECUTIVE RESTART POINTS (ORDERED)
039815,000226: 16,3302 02750 +2 GENADR SWT/COR
039816,000227: 16,3303 03030 +3 GENADR SWTCOPY +1
039817,000228: 16,3304 03050 +4 GENADR TEMPSET
039818,000229: 16,3305 03053 +5 GENADR CORSETUP
039819,000230: 16,3306 03111 +6 GENADR CORCOPY +1
039820,000231: 16,3307 03122 +7 GENADR CNTRCOPY
039821,000232: 16,3310 03125 +8D GENADR STRKUP
039822,000233: 16,3311 03140 +9D GENADR STRKTCPY +1
End of include-file TVCRESTARTS.agc. Parent file is MAIN.agc