Source Code

These source-code files are part of a reconstructed copy of Comanche 051, the original release of the Apollo 11 Command Module (CM) Apollo Guidance Computer (AGC) software.

The reconstruction began with source code of Comanche 055 previously transcribed from a digitized copy of that program. The code was then updated by undoing changes related to the R-2 lunar potential model, using hints from program comments and change-indicating asterisks in the Comanche 055 listing as a guide. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021153D. Note that page numbers in the reconstructed code match those on the Comanche 055 printout, although the added code would likely have changed page numbers for a real Comanche 051 listing.

Comments from the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository.

041702,000002:                                                                                                  ## Copyright:   Public domain.
041703,000003:                                                                                                  ## Filename:    TVCRESTARTS.agc
041704,000004:                                                                                                  ## Purpose:     A section of Comanche revision 051.
041705,000005:                                                                                                  ##              It is part of the reconstructed source code for the
041706,000006:                                                                                                  ##              original release of the flight software for the Command
041707,000007:                                                                                                  ##              Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11.
041708,000008:                                                                                                  ##              The code has been recreated from a copy of Comanche 055. It
041709,000009:                                                                                                  ##              has been adapted such that the resulting bugger words
041710,000010:                                                                                                  ##              exactly match those specified for Comanche 51 in NASA drawing
041711,000011:                                                                                                  ##              2021153D, which gives relatively high confidence that the
041712,000012:                                                                                                  ##              reconstruction is correct.
041713,000013:                                                                                                  ## Reference:   pp. 956-960
041714,000014:                                                                                                  ## Assembler:   yaYUL
041715,000015:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
041716,000016:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
041717,000017:                                                                                                  ## Mod history: 2019-07-30 MAS  Created from Comanche 55.
041718,000018: 

Page 956

041720,000020:                                                                                                  #  NAME....TVCRESTART PACKAGE, CONSISTING OF REDOTVC, ENABL1, 2, CMDSOUT, PHSCHK2, ETC.
041721,000021:                                                                                                  #  LOG SECTION...TVCRESTARTS                     SUBROUTINE...DAPCSM
041722,000022:                                                                                                  #  MODIFIED BY SCHLUNDT                          21 OCTOBER 1968
041723,000023: 
041724,000024:                                                                                                  #  FUNCTIONAL DESCRIPTION....
041725,000025: 
041726,000026:                                                                                                  #       *RESTART-PROOFS THE TVC DAPS, INCLUDING PITCHDAP, YAWDAP,
041727,000027:                                                                                                  #        TVCEXECUTIVE, ROLLDAP, TVCINIT4, TVCDAPON, AND CSM/.M V46 SWTCHOVR.
041728,000028: 
041729,000029:                                                                                                  #       *TVC RESTARTS DESERVE SPECIAL CONSIDERATION IN SEVERAL AREAS.
041730,000030:                                                                                                  #        RESTART DOWN-TIME IS IMPORTANT BECAUSE OF THE TRANSIENTS INTRODUCED
041731,000031:                                                                                                  #        BY THE THRUST VECTOR RETURN TO THE ACTUATOR MECHANICAL NULLS
041732,000032:                                                                                                  #        FOLLOWING TVC- AND OPTICS-ERROR-COUNTER-DISENABLES (CHANNEL 12).
041733,000033:                                                                                                  #        TVC USES A MIXTURE OF WAITLIST, T5, T6, AND JOB CALLS.  THERE IS
041734,000034:                                                                                                  #        FILTER MEMORY (UP TO 6TH ORDER) TO BE PROTECTED IF WILD TRANSIENTS
041735,000035:                                                                                                  #        ARE TO BE AVOIDED.  COUNTERS ARE INVOLVED FOR ONE-SHOT
041736,000036:                                                                                                  #        CORRECTIONS AND GAIN UPDATES.  THE GIMBAL TRIM ESTIMATORS AND THE
041737,000037:                                                                                                  #        BODY AXIS ATTITUDE ERROR INTEGRATORS INVOLVE DIGITAL SUMMATION.
041738,000038:                                                                                                  #        DIGITAL DIFFERENTIATORS ARE INVOLVED IN THE BODY AXIS RATE ESTIMA-
041739,000039:                                                                                                  #        TIONS AND IN THE OUTPUTTING OF ACTUATOR COMMANDS.  THERE IS AN
041740,000040:                                                                                                  #        OFFSET-TRACKER-FILTER TO PROTECT.  ETC., ETC.
041741,000041: 
041742,000042:                                                                                                  #       *THOSE QUANTITIES WHICH MUST BE PROTECTED ARE STORED IN TEMPORARY
041743,000043:                                                                                                  #        REGISTERS AS THEY ARE COMPUTED, FOR UPDATING THE REAL REGISTERS
041744,000044:                                                                                                  #        DURING COPYCYCLES.
041745,000045: 
041746,000046:                                                                                                  #       *THE SEVERAL COPYCYCLES ARE EACH PROTECTED BY PHASE POINTS AT THEIR
041747,000047:                                                                                                  #        BEGINNING AND AT THEIR TERMINATION.  THE PHASE POINTS ARE SIMPLY
041748,000048:                                                                                                  #        ..INCR.. INSTRUCTIONS, EITHER ..INCR TVCEXPHS.. FOR COPYCYCLES
041749,000049:                                                                                                  #        IN THE TVCEXECUTIVE, OR ..INCR TVCPHASE.. FOR THE PITCH AND YAW
041750,000050:                                                                                                  #        COPYCYCLES.  INDEXING ON EACH OF THESE POINTERS THEN PERMITS A
041751,000051:                                                                                                  #        RETURN TO THE APPROPRIATE RESTART POINTS.
041752,000052: 
041753,000053:                                                                                                  #       *IF A RESTART OCCURS DURING EITHER COPYCYCLE, THAT COPYCYCLE IS
041754,000054:                                                                                                  #        COMPLETED.  THEN THE NORMAL TVCINIT4....DAPINIT....PITCHDAP STARTUP
041755,000055:                                                                                                  #        SEQUENCE IS CALLED UPON TO GET THINGS GOING AGAIN.
041756,000056: 
041757,000057:                                                                                                  #       *TVC-ENABLE AND OPTICS-ERROR-COUNTER ENABLE MUST BE SET ASAP
041758,000058:                                                                                                  #        (ALLOWING FOR PROCEDURAL DELAYS).  THEN THE ENGINES ARE COMMANDED
041759,000059:                                                                                                  #        TO THE P,YACTOFF TRIM VALUES.  THE DAPS ARE THEN READY TO GO ON THE
041760,000060:                                                                                                  #        AIR, WITH THE REGULAR STARTUP SEQUENCE, EITHER AT MRCLEAN FOR A
041761,000061:                                                                                                  #        COMPLETE INITIALIZATION OR AT TVCINIT4 FOR A PARTIAL INITIALIZATION
041762,000062: 
041763,000063:                                                                                                  #       *FOR RESTARTS PRIOR TO THE SETTING OF THE T5 BITS AT DOTVCON THE
041764,000064:                                                                                                  #        PRE40.6 SECTION OF S40.6 TAKES CARE OF RE-ESTABLISHING TRIMS.
041765,000065: 
041766,000066:                                                                                                  #       *IF A RESTART OCCURS DURING THE TVCEXEC....TVCEXFIN SEQUENCE THE
041767,000067:                                                                                                  #        COMPUTATIONS WILL BE COMPLETED, STARTING AT THE APPROPRIATE RESTART
041768,000068:                                                                                                  #        POINT, AFTER THE DAPS ARE READY TO GO ON THE AIR.
041769,000069: 
041770,000070:                                                                                                  #       *IF A RESTART OCCURS PRIOR TO TVCINIT4 (TVCPHASE = -1) E.G. DURING
041771,000071:                                                                                                  #        THE EARLY DAP INITIALIZATION PHASE, THE DAP STARTUP SEQUENCE IS
041772,000072:                                                                                                  #        ENTERED AT MRCLEAN FOR A FULL INITIALIZATION.
041773,000073: 
041774,000074:                                                                                                  #       *FOR RESTARTS DURING CSM/LM V46 SWITCH-OVER, TVCPHASE IS SET TO -2.
041775,000075:                                                                                                  #        AND THE RESTART LOGIC GOES BACK TO REDO SWITCH-OVER (AFTER THE
041776,000076:                                                                                                  #        NORMAL DAP RESTART SEQUENCE IS FOLLOWED).
041777,000077: 
041778,000078:                                                                                                  #       *RESTARTS ARE NOT CRITICAL TO THE ROLL DAP PERFORMANCES HENCE THE
041779,000079:                                                                                                  #        THE ROLL DAP IS MERELY RESTARTED.
041780,000080: 
041781,000081:                                                                                                  #       *RESTARTS DURING A STROKE TEST (STROKER IS NON-ZERO) WILL CAUSE THE

Page 957

041783,000083:                                                                                                  #        STROKE TEST TO BE TERMINATED.  A NEW V68 ENTRY WILL BE REQUIRED
041784,000084:                                                                                                  #        TO GET IT GOING AGAIN (NO AUTOMATIC RESTART).
041785,000085:                                                                                                  #   
041786,000086:                                                                                                  #       *REDOTVC IS REACHED FOLLOWING ANY RESTART WHICH FINDS THE T5 BITS
041787,000087:                                                                                                  #        (BITS 15,14 OF FLAGWRD6) SET FOR TVC.  DOTVCON SETS TVCPHASE = -1
041788,000088:                                                                                                  #        AND TVC EXPHS = 0 JUST BEFORE SETTING THESE BITS, JUST BEFORE
041789,000089:                                                                                                  #        MAKING THE T5 CALL TO TVCDAPON.  ON A NORMAL SHUTDOWN DOTVCRCS
041790,000090:                                                                                                  #        CALLS RCSDAPON, WHICH RESETS THE T5 BITS FOR RCS.
041791,000091: 
041792,000092:                                                                                                  #  CALLING SEQUENCE....T5, IN PARTICULAR BY ELRSKIP OF FRESH START/RESTART
041793,000093: 
041794,000094:                                                                                                  #  NORMAL EXIT MODES....RESUME, NOQRSM, POSTJUMP (TO TVCINIT4 OR MRCLEAN)
041795,000095: 
041796,000096:                                                                                                  #  ALARM OR ABORT EXIT MODES....NONE
041797,000097: 
041798,000098:                                                                                                  #  SUBROUTINES CALLED....
041799,000099: 
041800,000100:                                                                                                  #       *PCOPY+1, YCOPY+1 (PITCH AND YAW COPYCYCLES)
041801,000101:                                                                                                  #       *ENABLE1,2, CMDSOUT (RE-ESTABLISH ACTUATOR TRIMS)
041802,000102:                                                                                                  #       *MRCLEAN OR TVCINIT4 (TVCDAP INITIALIZATIONS)
041803,000103:                                                                                                  #       *SWICHOVR +5 (CSM/LM V46 SWITCH-OVER)
041804,000104:                                                                                                  #       *EXRSTRT AND TVCEXECUTIVE PHASE POINTS 1 THRU 6
041805,000105:                                                                                                  #       *WAITLIST, IBNKCALL, POSTJUMP, ISWCALL
041806,000106: 
041807,000107:                                                                                                  #  OTHER INTERFACES....DOTVCON AND RCSDAPON (T5 BITS), ELRSKIP (CALLS IT)
041808,000108: 
041809,000109:                                                                                                  #  ERASABLE INITIALIZATION REQUIRED....
041810,000110: 
041811,000111:                                                                                                  #       *T5 BITS (1,0), TVCPHASE (-2,-1,0,1,2,3), TVCEXPHS (1 THRU 6)
041812,000112:                                                                                                  #       *TVC DAP VARIABLES
041813,000113:                                                                                                  #       *OPERATIONS PERFORMED BY REDOTVC ARE BASED ON THE ASSUMPTION THAT
041814,000114:                                                                                                  #        THE TVC DAPS ARE RUNNING NORMALLY
041815,000115: 
041816,000116:                                                                                                  #  OUTPUT....
041817,000117: 
041818,000118:                                                                                                  #       *PITCH AND YAW TVC DAP COPYCYCLES COMPLETED IF INTERUPTED
041819,000119:                                                                                                  #       *TVCEXECUTIVE COMPLETED IF INTERUPTED
041820,000120:                                                                                                  #       *STROKE TEST TERMINATED IF INTERRUPTED
041821,000121:                                                                                                  #       *CSM/LM V46 SWITCH-OVER REPEATED IF INTERRUPTED
041822,000122:                                                                                                  #       *ACTUATOR TRIMS RE-ESTABLISHED (ACTUATORS BACK ON THE AIR)
041823,000123:                                                                                                  #       *TVC DAP INITIALIZATION AS REQUIRED
041824,000124:                                                                                                  #       *ALL TVC DAP OPERATIONS ON THE AIR
041825,000125: 
041826,000126:                                                                                                  #  DEBRIS....TVC TEMPORARIES IN EBANK6
041827,000127: 

Page 958

041829,000129: 
041830,000130: 16,3140                                           BANK     16                                    
041831,000131: 16,2000                                           SETLOC   DAPROLL                               
041832,000132: 16,2000                                           BANK                                           
041833,000133: 16,3140  E6,1644                                  EBANK=   TVCPHASE                              
041834,000134: 16,3140                                           COUNT*   $$/RSRT                               
041835,000135: 
041836,000136: 16,3140           22016        REDOTVC            LXCH     BANKRUPT                              #  TVC RESTART PACKAGE
041837,000137: 16,3141           00006                           EXTEND                                         
041838,000138: 16,3142           22012                           QXCH     QRUPT                                 #  (..TCR.. IN ..FINCOPY..)
041839,000139: 
041840,000140: 16,3143           11651        EXECPHS            CCS      TVCEXPHS                              #  CHECK TVCEXECUTIVE PHASE
041841,000141: 16,3144           13146                           TCF      +2                                    #        MUST RESTART TVCEXECUTIVE
041842,000142: 16,3145           13152                           TCF      TVCDAPHS                              #        NO NEED TO RESTART TVCEXECUTIVE
041843,000143: 
041844,000144: 16,3146           34334                           CAF      NINE                                  #  9CS DELAY TO FORCE EXRSTRT TO OCCUR
041845,000145: 16,3147           05245                           TC       WAITLIST                              #        BEFORE PITCHDAP, AFTER CMDSOUT
041846,000146: 16,3150  E6,1651                                  EBANK=   TVCEXPHS                              
041847,000147: 16,3150           03253 34066                     2CADR    EXRSTRT                               
041848,000148: 
041849,000149: 16,3152           47700        TVCDAPHS           CS       OCT37776                              #  CHECK BITS 15 AND 1 OF TVCPHASE TO SEE
041850,000150: 16,3153           71644                           MASK     TVCPHASE                              #        DAP RESTART LOCATION (-1,1,2,3)
041851,000151: 16,3154           10000                           CCS      A                                     
041852,000152: 16,3155           13240                           TCF      FINCOPY                               #        FINISH THE COPYCYCLE FIRST
041853,000153: 16,3156           13163                           TCF      ENABL1                                #        JUST PREPARE THE OUTCOUNTERS AND GO
041854,000154: 
041855,000155: 16,3157           41644                           CS       TVCPHASE                              #  TEST FOR TVCPHASE = -2
041856,000156: 16,3160           75016                           MASK     BIT2                                  #        (THIS INDICATES RESTART OCCURRED
041857,000157: 16,3161           00006                           EXTEND                                         #         DURING CSM/LM V46 SWITCH-OVER)
041858,000158: 16,3162           13244                           BZF      TRIM/CMD                              #  NO, TVCPHASE = -1, RSTRT WAS IN TVCINIT
041859,000159: 
041860,000160: 16,3163           35010        ENABL1             CAF      BIT8                                  #  TVC ENABLE, FOLLOWED BY 40 MS (MIN) WAIT
041861,000161: 16,3164           65005                           AD       BIT11                                 #        SET BIT FOR OPTICS-DAC-ENABLE ALSO
041862,000162: 16,3165           00006                           EXTEND                                         #        (ENABL1 ENTERED FROM TVCDAPHS / FINCOPY)
041863,000163: 16,3166           05012                           WOR      CHAN12                                
041864,000164: 16,3167           33257                           CAF      TVCADDR                               #  WAIT, CALLING ENABL2 (BBCON THERE)
041865,000165: 16,3170           55312                           TS       T5LOC                                 
041866,000166: 16,3171           33263                           CAF      TVCADDR    +4                         #        60 MS (TVCEXADR)
041867,000167: 16,3172           54030                           TS       TIME5                                 
041868,000168: 
041869,000169: 16,3173           15333                           TCF      RESUME                                
041870,000170: 
041871,000171: 16,3174           22016        ENABL2             LXCH     BANKRUPT                              #  CONTINUE PREPARATION OF OUTCOUNTERS
041872,000172: 
041873,000173: 16,3175           35016                           CAF      BIT2                                  #  OPTICS ERROR CNTR ENABLE, 4MS MIN WAIT
041874,000174: 16,3176           00006                           EXTEND                                         
041875,000175: 16,3177           05012                           WOR      CHAN12                                

Page 959

041877,000177: 16,3200           33261                           CAF      TVCADDR    +2                         #  WAIT, CALLING CMDSOUT (BBCON THERE)
041878,000178: 16,3201           55312                           TS       T5LOC                                 
041879,000179: 16,3202           37700                           CAF      OCT37776                              #        20MS
041880,000180: 16,3203           54030                           TS       TIME5                                 
041881,000181: 
041882,000182: 16,3204           15335                           TCF      NOQRSM                                
041883,000183: 
041884,000184: 16,3205           22016        CMDSOUT            LXCH     BANKRUPT                              #  CONTINUE PREPARATION OF OUTCOUNTERS
041885,000185: 16,3206           00006                           EXTEND                                         
041886,000186: 16,3207           22012                           QXCH     QRUPT                                 
041887,000187: 
041888,000188: 16,3210           45021                           CS       ZERO                                  #  MOST RECENT ACTUATOR COMMANDS
041889,000189: 16,3211           61623                           AD       PCMD                                  #        (AVOID +0)
041890,000190: 16,3212           54054                           TS       TVCPITCH                              
041891,000191: 16,3213           45021                           CS       ZERO                                  
041892,000192: 16,3214           61624                           AD       YCMD                                  
041893,000193: 16,3215           54053                           TS       TVCYAW                                
041894,000194: 
041895,000195: 16,3216           35062                           CAF      PRIO6                                 #  RELEASE THE COUNTERS (BITS 11,12)
041896,000196: 16,3217           00006                           EXTEND                                         
041897,000197: 16,3220           05014                           WOR      CHAN14                                
041898,000198: 
041899,000199: 16,3221           11644        PHSCHK2            CCS      TVCPHASE                              #  CHECK TVCPHASE AGAIN
041900,000200: 16,3222           13232                           TCF      CHKSTRK                               
041901,000201: 16,3223           13232                           TCF      CHKSTRK                               
041902,000202: 16,3224           10000                           CCS      A                                     #  A CONTAINS THE DIMINISHED ABSOLUTE OF
041903,000203: 16,3225           03230                           TC       +3                                    #  TVCPHASE (-2 BECOMES +1. -1 BECOMES +0)
041904,000204: 
041905,000205: 16,3226           04701                           TC       POSTJUMP                              #        REPEAT TVC INITIALIZATION
041906,000206: 16,3227           36152                           CADR     MRCLEAN                               #        (DO NOT RETURN)
041907,000207: 
041908,000208: 16,3230           04740                 +3        TC       IBNKCALL                              #        REPEAT CSM/LM V46 SWITCH-OVER
041909,000209: 16,3231           36361                           CADR     SWICHOVR   +5                         #        (RETURN TO CHECK FOR STROKE TEST)
041910,000210: 
041911,000211: 16,3232           11574        CHKSTRK            CCS      STROKER                               #  CHECK FOR STROKE TEST IN PROGRESS
041912,000212: 16,3233           13250                           TCF      TSTINITJ                              #  YES, KILL IT
041913,000213: 16,3234           13236                           TCF      +2                                    #  NO, PROCEED
041914,000214: 16,3235           13250                           TCF      TSTINITJ                              #  YES, KILL IT
041915,000215: 
041916,000216: 16,3236           04701                 +4        TC       POSTJUMP                              #        IF POSITIVE OR ZERO, RESTART AT
041917,000217: 16,3237           36324                           CADR     TVCINIT4                              #                TVCINIT4 (ZEROS TVCPHASE, AND
041918,000218:                                                                                                  #                CALLS TVC DAPS VIA DAPINIT)
041919,000219: 16,3240           51644        FINCOPY            INDEX    TVCPHASE                              #  PICK UP THE APPROPRIATE COPYCYCLE
041920,000220: 16,3241           33257                           CAF      TVCCADR                               
041921,000221: 16,3242           04744                           TCR      ISWCALL                               #  RE-ENTER THE COPYCYCLE, RETURN AT END
041922,000222: 16,3243           13163                           TCF      ENABL1                                #  NOW PREPARE THE OUTCOUNTERS
041923,000223: 
041924,000224: 16,3244           00006        TRIM/CMD           EXTEND                                         #  TVCDAPON INITIALIZATION NOT COMPLETED,

Page 960

041926,000226: 16,3245           31424                           DCA      PACTOFF                               #        EG. P,YCMD MAY NOT BE SET.  SET...
041927,000227: 16,3246           53624                           DXCH     PCMD                                  
041928,000228: 16,3247           13163                           TCF      ENABL1                                #  NOW PREPARE THE OUTCOUNTERS
041929,000229: 
041930,000230: 16,3250           35021        TSTINITJ           CAF      ZERO                                  #  DISABLE STROKE TEST (-0 SHOWS PRIOR V68)
041931,000231: 16,3251           55574                           TS       STROKER                               #  (+0 MEANS NEW V68 REQUIRED FOR STARTUP)
041932,000232: 
041933,000233: 16,3252           13236                           TCF      CHKSTRK    +4                         
041934,000234: 
041935,000235: 16,3253           51651        EXRSTRT            INDEX    TVCEXPHS                              #  TVCEXECUTIVE RESTARTS....GO TO
041936,000236: 16,3254           33263                           CAF      TVCEXADR                              #        APPROPRIATE RESTART POINT
041937,000237: 16,3255           50000                           INDEX    A                                     
041938,000238: 16,3256           10000                           TCF      0                                     
041939,000239: 
041940,000240:                                                                                                  #  TVC RESTART TABLES.... ORDER IS REQUIRED.  HI-ORDER WORDS ONLY, OF 2CADRS, SINCE BBCON IS ALREADY THERE.
041941,000241: 
041942,000242: 16,3257  16,3257               TVCADDR            =        TVCCADR                               #  TABLE OF CADRS, UNUSED LOCS FOR GENADRS
041943,000243: 16,3257           03174        TVCCADR            GENADR   ENABL2                                #  (FOR T5 CALL, UNUSED TABLE LOC)
041944,000244: 16,3260           40675                 +1        CADR     PCOPY      +1                         #  PITCH COPYCYCLE
041945,000245: 16,3261           03205                 +2        GENADR   CMDSOUT                               #  (FOR T5 CALL, UNUSED TABLE LOC)
041946,000246: 16,3262           41051                 +3        CADR     YCOPY      +1                         #  YAW COPYCYCLE
041947,000247: 16,3263           37772        TVCEXADR           OCT      37772                                 #  (UNUSED TABLE LOC, FILL WITH 60MS, T5)
041948,000248: 16,3264           03003                 +1        GENADR   EXECCOPY   +1                         #  TVCEXECUTIVE RESTART POINTS (ORDERED)
041949,000249: 16,3265           03011                 +2        GENADR   1SHOTCHK                              
041950,000250: 16,3266           03040                 +3        GENADR   TEMPSET                               
041951,000251: 16,3267           03043                 +4        GENADR   CORSETUP                              
041952,000252: 16,3270           03121                 +5        GENADR   CORCOPY    +1                         
041953,000253: 16,3271           03132                 +6        GENADR   CNTRCOPY                              

End of include-file TVCRESTARTS.agc.  Parent file is MAIN.agc