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. |
041214,000002: ## Copyright: Public domain.
041215,000003: ## Filename: TVCEXECUTIVE.agc
041216,000004: ## Purpose: A section of Comanche revision 051.
041217,000005: ## It is part of the reconstructed source code for the
041218,000006: ## original release of the flight software for the Command
041219,000007: ## Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11.
041220,000008: ## The code has been recreated from a copy of Comanche 055. It
041221,000009: ## has been adapted such that the resulting bugger words
041222,000010: ## exactly match those specified for Comanche 51 in NASA drawing
041223,000011: ## 2021153D, which gives relatively high confidence that the
041224,000012: ## reconstruction is correct.
041225,000013: ## Reference: pp. 945-950
041226,000014: ## Assembler: yaYUL
041227,000015: ## Contact: Ron Burkey <info@sandroid.org>.
041228,000016: ## Website: www.ibiblio.org/apollo/index.html
041229,000017: ## Mod history: 2019-07-30 MAS Created from Comanche 55.
041230,000018:
|
Page 945 |
041232,000020: # PROGRAM NAME.... TVCEXECUTIVE, CONSISTING OF TVCEXEC, NEEDLEUP, VARGAINS
041233,000021: # 1SHOTCHK, REPCHEK, CG.CORR, COPYCYCLES, ETC.
041234,000022: # LOG SECTION... TVCEXECUTIVE SUBROUTINE...DAPCSM
041235,000023: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968
041236,000024:
041237,000025: # FUNCTIONAL DESCRIPTION....
041238,000026: # *A SELF-PERPETUATING WAITLIST TASK AT 1/2 SECOND INTERVALS WHICH:
041239,000027: # PREPARES THE ROLL DAP WITH OGA (CDUX)
041240,000028: # PREPARES THE ROLL FDAI NEEDLE (FLY-TO OGA ERROR)
041241,000029: # PREPARES THE ROLL PHASE PLANE OGAERR (FLY-FROM OGA ERROR)
041242,000030: # PREPARES THE TVC ROLLDAP TASK WAITLIST CALL (3 CS DELAY)
041243,000031: # UPDATES THE NEEDLES DISPLAY
041244,000032: # UPDATES VEHICLE MASS AND CALLS MASSPROP TO UPDATE INERTIA DATA
041245,000033: # UPDATES PITCH, YAW, AND ROLL DAP GAINS FROM MASSPROP DATA
041246,000034: # PERFORMS ONE-SHOT CORRECTION FOR TMC LOOP 0-3 SEC AFTER IGNITION
041247,000035: # PERFORMS REPETITIVE UPDATES FOR TMC LOOP AFTER THE ONE-SHOT CORR.
041248,000036:
041249,000037: # CALLING SEQUENCE....
041250,000038: # *TVCEXEC CALLED AS A WAITLIST TASK, IN PARTICULAR BY TVCINIT4 AND BY
041251,000039: # ITSELF, BOTH AT 1/2 SECOND INTERVALS
041252,000040:
041253,000041: # NORMAL EXIT MODE.... TASKOVER
041254,000042:
041255,000043: # ALARM OR ABORT EXIT MODES.... NONE
041256,000044:
041257,000045: # SUBROUTINES CALLED....NEEDLER, S40.15, MASSPROP, TASKOVER, IBNKCALL
041258,000046:
041259,000047: # OTHER INTERFACES....
041260,000048: # *TVCRESTART PACKAGE FOR RESTARTS
041261,000049: # *PITCHDAP, YAWDAP FOR VARIABLE GAINS AND ENGINE TRIM ANGLES
041262,000050:
041263,000051: # ERASABLE INITIALIZATION REQUIRED....
041264,000052: # *SEE TVCDAPON....TVCINIT4
041265,000053: # *VARK AND 1/CONACC (S40.15 OF TVCINITIALIZE)
041266,000054: # *PAD LOAD EREPFRAC
041267,000055: # *BITS 15,14 OF FLAGWRD6 (T5 BITS)
041268,000056: # *TVCEXPHS FOR RESTARTS
041269,000057: # *ENGINE-ON BIT (11.13) FOR RESTARTS
041270,000058: # *CDUX, OGAD
041271,000059:
041272,000060: # OUTPUT....
041273,000061: # *ROLL DAP OGANOW, FDAI NEEDLE (AK). AND PHASE PLANE OGAERR
041274,000062: # *VARIABLE GAINS FOR PITCH/YAW AND ROLL TVC DAPS
041275,000063: # *SINGLE-SHOT AND REPETITIVE CORRECTIONS TO ENGINE TRIM ANGLES
041276,000064: # PACTOFF AND YACTOFF
041277,000065:
041278,000066: # DEBRIS.... MUCH, BUT SHAREABLE WITH RCS/ENTRY, ALL IN EBANK6
041279,000067:
|
Page 946 |
041281,000069: 16,2720 BANK 16
041282,000070: 16,2000 SETLOC DAPROLL
041283,000071: 16,2000 BANK
041284,000072: 16,2720 E6,1702 EBANK= BZERO
041285,000073: 16,2720 COUNT* $$/TVCX
041286,000074:
041287,000075: 16,2720 40102 TVCEXEC CS FLAGWRD6 # CHECK FOR TERMINATION (BITS 15,14 READ
041288,000076: 16,2721 74105 MASK OCT60000 # 10 FROM TVCDAPON TO RCSDAPON)
041289,000077: 16,2722 00006 EXTEND
041290,000078: 16,2723 63134 BZMF TVCEXFIN # TERMINATE
041291,000079:
041292,000080: 16,2724 35036 CAF .5SEC # W.L. CALL TO PERPETUATE TVCEXEC
041293,000081: 16,2725 05245 TC WAITLIST
041294,000082: 16,2726 E6,1702 EBANK= BZERO
041295,000083: 16,2726 02720 34066 2CADR TVCEXEC
041296,000084:
041297,000085: 16,2730 30032 ROLLPREP CAE CDUX # UPDATE ROLL LADDERS (NO NEED TO RESTART-
041298,000086: 16,2731 57662 XCH OGANOW # PROTECT, SINCE ROLL DAPS RE-START)
041299,000087: 16,2732 57663 XCH OGAPAST
041300,000088:
041301,000089: 16,2733 31450 CAE OGAD # PREPARE ROLL FDAI NEEDLE WITH FLY-TO
041302,000090: 16,2734 00006 EXTEND # ERROR (COMMAND - MEASURED)
041303,000091: 16,2735 21662 MSU OGANOW
041304,000092: 16,2736 55476 TS AK # FLY-TO OGA ERROR, SC.AT B-1 REVS
041305,000093:
041306,000094: 16,2737 00006 EXTEND # PREPARE ROLL DAP PHASE PLANE OGAERR
041307,000095: 16,2740 77705 MP -BIT14
041308,000096: 16,2741 55664 TS OGAERR # PHASE-PLANE (FLY-FROM) OGAERROR,
041309,000097: # SC.AT B+0 REVS
041310,000098:
041311,000099: 16,2742 36214 CAF THREE # SET UP ROLL DAP TASK (ALLOW SOME TIME)
041312,000100: 16,2743 05245 TC WAITLIST
041313,000101: 16,2744 E6,1702 EBANK= BZERO
041314,000102: 16,2744 03272 34066 2CADR ROLLDAP
041315,000103:
041316,000104: 16,2746 04740 NEEDLEUP TC IBNKCALL # DO A NEEDLES UPDATE (RETURNS AFTER CADR)
041317,000105: 16,2747 42420 CADR NEEDLER # (NEEDLES RESTARTS ITSELF)
041318,000106:
041319,000107: 16,2750 35003 VARGAINS CAF BIT13 # CHECK ENGINE-ON BIT TO INHIBIT VARIABLE
041320,000108: 16,2751 00006 EXTEND # GAINS AND MASS IF ENGINE OFF
041321,000109: 16,2752 02011 RAND DSALMOUT # CHANNEL 11
041322,000110: 16,2753 10000 CCS A
041323,000111: 16,2754 12760 TCF +4 # ON, SO OK TO UPDATE GAINS AND MASS
041324,000112: 16,2755 35016 +5 CAF TWO # OFF, SO BYPASS MASS/GAIN UPDATES,
041325,000113: 16,2756 55651 TS TVCEXPHS # ALSO ENTRY FROM CCS BELOW WITH
041326,000114: 16,2757 13011 TCF 1SHOTCHK # VCNTR = -0 (V97 R40 ENGFAIL)
041327,000115: 16,2760 11643 CCS VCNTR # TEST FOR GAIN UPDATE TIME
041328,000116: 16,2761 12765 TCF +4 # NOT YET
|
Page 947 |
041330,000118: 16,2762 12771 TCF GAINCHNG # NOW
041331,000119: 16,2763 12763 TCF +0 # NOT USED
041332,000120: 16,2764 12755 TCF VARGAINS +5 # NO, LOTHRUST (S40.8 R40)
041333,000121:
041334,000122: 16,2765 55653 +4 TS VCNTRTMP # PROTECT VCNTR AND
041335,000123: 16,2766 31474 CAE CSMMASS # CSMMASS DURING AN IMPULSIVE BURN
041336,000124: 16,2767 55652 TS MASSTMP
041337,000125: 16,2770 13002 TCF EXECCOPY
041338,000126:
041339,000127: 16,2771 04740 GAINCHNG TC IBNKCALL # UPDATE IXX, IAVG, IAVG/TLX
041340,000128: 16,2772 13422 CADR FIXCW # MASSPROP ENTRY (ALREADY INITIALIZED)
041341,000129: 16,2773 04740 TC IBNKCALL # UPDATE 1/CONACC, VARK
041342,000130: 16,2774 36462 CADR S40.15 # (S40.15 IS IN TVCINITIALIZE)
041343,000131: 16,2775 41637 CS TENMDOT # UPDATE MASS FOR NEXT 10 SEC. OF BURN
041344,000132: 16,2776 61474 AD CSMMASS
041345,000133: 16,2777 55652 TS MASSTMP # KG B+16
041346,000134:
041347,000135: 16,3000 34374 CAF NINETEEN # RESET THE VARIABLE-GAIN UPDATE COUNTER
041348,000136: 16,3001 55653 TS VCNTRTMP
041349,000137:
041350,000138: 16,3002 25651 EXECCOPY INCR TVCEXPHS # RESTART-PROTECT THE COPYCYCLE (1)
041351,000139:
041352,000140: 16,3003 31652 CAE MASSTMP # CSMMASS KG B+16
041353,000141: 16,3004 55474 TS CSMMASS
041354,000142:
041355,000143: 16,3005 31653 CAE VCNTRTMP # VCNTR
041356,000144: 16,3006 55643 TS VCNTR
041357,000145: 16,3007 55444 TS V97VCNTR # FOR ENGFAIL (R41) MASS UPDATES AT SPSOFF
041358,000146:
041359,000147: 16,3010 25651 INCR TVCEXPHS # COPYCYCLE OVER (2)
041360,000148:
041361,000149: 16,3011 11447 1SHOTCHK CCS CNTR # CHECK TIME FOR ONE-SHOT OR REPCORR
041362,000150: 16,3012 13016 TCF +4 # NOT YET
041363,000151: 16,3013 13031 TCF 1SHOTOK # NOW
041364,000152: 16,3014 13022 TCF REPCHEK # ONE-SHOT OVER, ON TO REPCORR
041365,000153: 16,3015 13031 TCF 1SHOTOK # NOW (ONE-SHOT ONLY, NO REPCORR)
041366,000154:
041367,000155: 16,3016 55676 +4 TS CNTRTMP # COUNT DOWN
041368,000156: 16,3017 36211 CAF SIX # SETUP TVCEXPHS FOR ENTRY AT CNTRCOPY
041369,000157: 16,3020 55651 TS TVCEXPHS
041370,000158: 16,3021 13132 TCF CNTRCOPY
041371,000159:
041372,000160: 16,3022 31642 REPCHEK CAE REPFRAC # CHECK FOR REPETITIVE UPDATES
041373,000161: 16,3023 00006 EXTEND
041374,000162: 16,3024 63134 BZMF TVCEXFIN # NO, OVER-AND-OUT
041375,000163: 16,3025 55446 TS TEMPDAP +1 # YES, SET UP CORRECTION FRACTION
041376,000164: 16,3026 35015 CAF FOUR # SET UP TVCEXPHS FOR ENTRY AT CORSETUP
041377,000165: 16,3027 55651 TS TVCEXPHS
041378,000166: 16,3030 13043 TCF CORSETUP
|
Page 948 |
041380,000168: 16,3031 35003 1SHOTOK CAF BIT13 # CHECK ENGINE-ON BIT, NOT PERMITTING
041381,000169: 16,3032 00006 EXTEND # ONE-SHOT DURING ENGINE-SHUTDOWN
041382,000170: 16,3033 02011 RAND DSALMOUT
041383,000171: 16,3034 10000 CCS A
041384,000172: 16,3035 13037 TCF +2 # ONE-SHOT OK
041385,000173: 16,3036 13134 TCF TVCEXFIN # NO, TERMINATE
041386,000174:
041387,000175: 16,3037 25651 INCR TVCEXPHS # (3)
041388,000176:
041389,000177: 16,3040 33137 TEMPSET CAF FCORFRAC # SET UP CORRECTION FRACTION
041390,000178: 16,3041 55446 TS TEMPDAP +1
041391,000179:
041392,000180: 16,3042 25651 INCR TVCEXPHS # ENTRY FROM REPCHEK AT NEXT LOCATION (4)
041393,000181:
041394,000182: 16,3043 31466 CORSETUP CAE DAPDATR1 # CHECK FOR LEM-OFF/ON
041395,000183: 16,3044 75003 MASK BIT13 # (NOTE, SHOWS LEM-OFF)
041396,000184: 16,3045 00006 EXTEND
041397,000185: 16,3046 13050 BZF +2 # LEM IS ON, PICK UP TEMPDAP+1
041398,000186: 16,3047 31446 CAE TEMPDAP +1 # LEM IS OFF, PICK UP 2(TEMPDAP+1)
041399,000187: 16,3050 61446 AD TEMPDAP +1
041400,000188: 16,3051 55445 TS TEMPDAP # CG.CORR USES TEMPDAP
041401,000189:
041402,000190: 16,3052 37716 CAF NEGONE # SET UP FOR CNTR = -1 (ONE-SHOT DONE)
041403,000191: 16,3053 55676 TS CNTRTMP # (COPYCYCLE AT .CNTRCOPY.)
041404,000192:
041405,000193: 16,3054 00006 CG.CORR EXTEND # PITCH TMC LOOP
041406,000194: 16,3055 31606 DCA PDELOFF
041407,000195: 16,3056 53673 DXCH PACTTMP
041408,000196: 16,3057 00006 EXTEND
041409,000197: 16,3060 41606 DCS PDELOFF
041410,000198: 16,3061 20001 DDOUBL
041411,000199: 16,3062 20001 DDOUBL
041412,000200: 16,3063 53612 DXCH TTMP1
041413,000201: 16,3064 00006 EXTEND
041414,000202: 16,3065 31602 DCA DELPBAR
041415,000203: 16,3066 20001 DDOUBL
041416,000204: 16,3067 20001 DDOUBL
041417,000205: 16,3070 21612 DAS TTMP1
041418,000206: 16,3071 00006 EXTEND
041419,000207: 16,3072 31612 DCA TTMP1
041420,000208: 16,3073 00006 EXTEND
041421,000209: 16,3074 71445 MP TEMPDAP
041422,000210: 16,3075 21673 DAS PACTTMP
041423,000211:
041424,000212: 16,3076 00006 EXTEND # YAW TMC LOOP
041425,000213: 16,3077 31610 DCA YDELOFF
041426,000214: 16,3100 53675 DXCH YACTTMP
041427,000215: 16,3101 00006 EXTEND
041428,000216: 16,3102 41610 DCS YDELOFF
041429,000217: 16,3103 20001 DDOUBL
|
Page 949 |
041431,000219: 16,3104 20001 DDOUBL
041432,000220: 16,3105 53612 DXCH TTMP1
041433,000221: 16,3106 00006 EXTEND
041434,000222: 16,3107 31604 DCA DELYBAR
041435,000223: 16,3110 20001 DDOUBL
041436,000224: 16,3111 20001 DDOUBL
041437,000225: 16,3112 21612 DAS TTMP1
041438,000226: 16,3113 00006 EXTEND
041439,000227: 16,3114 31612 DCA TTMP1
041440,000228: 16,3115 00006 EXTEND
041441,000229: 16,3116 71445 MP TEMPDAP
041442,000230: 16,3117 21675 DAS YACTTMP
041443,000231:
041444,000232: 16,3120 25651 CORCOPY INCR TVCEXPHS # RESTART PROTECT THE COPYCYCLE (5)
041445,000233:
041446,000234: 16,3121 00006 EXTEND # TRIM-ESTIMATES, AND
041447,000235: 16,3122 31673 DCA PACTTMP
041448,000236: 16,3123 55423 TS PACTOFF # TRIMS
041449,000237: 16,3124 53606 DXCH PDELOFF
041450,000238:
041451,000239: 16,3125 00006 EXTEND
041452,000240: 16,3126 31675 DCA YACTTMP
041453,000241: 16,3127 55424 TS YACTOFF
041454,000242: 16,3130 53610 DXCH YDELOFF
041455,000243:
041456,000244: 16,3131 25651 INCR TVCEXPHS # ENTRY FROM 1SHOTCHK AT NEXT LOCATION (6)
041457,000245:
041458,000246: 16,3132 31676 CNTRCOPY CAE CNTRTMP # UPDATE CNTR (RESTARTS OK, FOLLOWS CPYCY)
041459,000247: 16,3133 55447 TS CNTR
041460,000248:
041461,000249: 16,3134 35021 TVCEXFIN CAF ZERO # RESET TVCEXPHS
041462,000250: 16,3135 55651 TS TVCEXPHS
041463,000251: 16,3136 15324 TCF TASKOVER # TVCEXECUTIVE FINISHED
041464,000252:
041465,000253: 16,3137 10000 FCORFRAC OCT 10000 # ONE-SHOT CORRECTION FRACTION
041466,000254:
|
Page 950 This page is empty. |
041469,000257:
041470,000258:
End of include-file TVCEXECUTIVE.agc. Parent file is MAIN.agc