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. |
017745,000002: ## Copyright: Public domain.
017746,000003: ## Filename: KALCMANU_STEERING.agc
017747,000004: ## Purpose: A section of Comanche revision 051.
017748,000005: ## It is part of the reconstructed source code for the
017749,000006: ## original release of the flight software for the Command
017750,000007: ## Module's (CM) Apollo Guidance Computer (AGC) for Apollo 11.
017751,000008: ## The code has been recreated from a copy of Comanche 055. It
017752,000009: ## has been adapted such that the resulting bugger words
017753,000010: ## exactly match those specified for Comanche 51 in NASA drawing
017754,000011: ## 2021153D, which gives relatively high confidence that the
017755,000012: ## reconstruction is correct.
017756,000013: ## Reference: pp. 414-419
017757,000014: ## Assembler: yaYUL
017758,000015: ## Contact: Ron Burkey <info@sandroid.org>.
017759,000016: ## Website: www.ibiblio.org/apollo/index.html
017760,000017: ## Mod history: 2019-07-30 MAS Created from Comanche 55.
017761,000018:
|
Page 414 |
017763,000020: # GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
017764,000021:
017765,000022: # NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
017766,000023:
017767,000024: 15,2000 BANK 15
017768,000025:
017769,000026: 22,2000 SETLOC KALCMON1
017770,000027: 22,2000 BANK
017771,000028:
017772,000029: 22,3026 E6,1661 EBANK= BCDU
017773,000030:
017774,000031: 22,3026 COUNT 22/KALC
017775,000032:
017776,000033: 22,3026 41332 NEWDELHI CS HOLDFLAG # SEE IF MANEUVER HAS BEEN INTERRUPTED
017777,000034: 22,3027 00006 EXTEND # BY ASTRONAUT
017778,000035: 22,3030 62726 BZMF NOGO -2 # IF SO, TERMINATE KALCMANU
017779,000036: 22,3031 06006 NEWANGL TC INTPRET
017780,000037: 22,3032 75160 AXC,1 AXC,2
017781,000038: 22,3033 03320 MIS # COMPUTE THE NEW MATRIX FROM S/C TO
017782,000039: 22,3034 03425 DEL # STABLE MEMBER AXES
017783,000040: 22,3035 77624 CALL
017784,000041: 22,3036 44304 MXM3
017785,000042: 22,3037 45575 VLOAD STADR
017786,000043: 22,3040 50442 STOVL MIS +12D # CALCULATE NEW DESIRED CDU ANGLES
017787,000044: 22,3041 77626 STADR
017788,000045: 22,3042 50450 STOVL MIS +6D
017789,000046: 22,3043 77626 STADR
017790,000047: 22,3044 74456 STORE MIS
017791,000048: 22,3045 45160 AXC,1 CALL
017792,000049: 22,3046 03320 MIS
017793,000050: 22,3047 44655 DCMTOCDU # PICK UP THE NEW CDU ANGLES FROM MATRIX
017794,000051: 22,3050 77634 RTB
017795,000052: 22,3051 45552 V1STO2S
017796,000053: 22,3052 03267 STORE NCDU # NEW CDU ANGLES
017797,000054: 22,3053 77414 BONCLR EXIT
017798,000055: 22,3054 01215 CALCMAN2
017799,000056: 22,3055 40065 MANUSTAT # TO START MANEUVER
017800,000057: 22,3056 35016 CAF TWO # +0 OTHERWISE
017801,000058: 22,3057 55664 INCRDCDU TS KSPNDX
017802,000059: 22,3060 60000 DOUBLE
017803,000060: 22,3061 55665 TS KDPNDX
017804,000061: 22,3062 51664 INDEX KSPNDX
017805,000062: 22,3063 31666 CA NCDU # NEW DESIRED CDU ANGLES
017806,000063: 22,3064 00006 EXTEND
017807,000064: 22,3065 51664 INDEX KSPNDX
017808,000065: 22,3066 21661 MSU BCDU # INITIAL S/C ANGLE OR PREVIOUS DESIRED
017809,000066: 22,3067 00006 EXTEND # CDU ANGLES
017810,000067: 22,3070 73002 MP QUADROT
017811,000068: 22,3071 51665 INDEX KDPNDX
017812,000069: 22,3072 53576 DXCH DELCDUX # ANGLE INCREMENTS TO BE ADDED TO
|
Page 415 |
017814,000071: 22,3073 51664 INDEX KSPNDX # DCDU EVERY TENTH SEC
017815,000072: 22,3074 31666 CA NCDU # BY LEM DAP
017816,000073: 22,3075 51664 INDEX KSPNDX
017817,000074: 22,3076 57661 XCH BCDU
017818,000075: 22,3077 51665 INDEX KDPNDX
017819,000076: 22,3100 55646 TS CDUXD
017820,000077: 22,3101 11664 CCS KSPNDX
017821,000078: 22,3102 13057 TCF INCRDCDU # LOOP FOR THREE AXES
017822,000079:
017823,000080: 22,3103 00003 RELINT
017824,000081: # COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER
017825,000082:
017826,000083: 22,3104 03115 TMANUCHK TC TIMECHK
017827,000084: 22,3105 04701 TC POSTJUMP
017828,000085: 22,3106 40131 CADR CONTMANU
017829,000086:
017830,000087: 22,3107 35017 CAF ONE
017831,000088: 22,3110 05245 MANUSTAL TC WAITLIST
017832,000089: 22,3111 E6,1661 EBANK= BCDU
017833,000090: 22,3111 02000 42066 2CADR MANUSTOP
017834,000091:
017835,000092: 22,3113 00003 RELINT
017836,000093: 22,3114 15217 TCF ENDOFJOB
017837,000094:
017838,000095:
017839,000096: 22,3115 00006 TIMECHK EXTEND
017840,000097: 22,3116 40025 DCS TIME2
017841,000098: 22,3117 53673 DXCH TTEMP
017842,000099: 22,3120 00006 EXTEND
017843,000100: 22,3121 31717 DCA TM
017844,000101: 22,3122 21673 DAS TTEMP
017845,000102: 22,3123 11672 CCS TTEMP
017846,000103: 22,3124 00002 TC Q
017847,000104: 22,3125 13127 TCF +2
017848,000105: 22,3126 13137 TCF 2NDRETRN
017849,000106: 22,3127 11673 CCS TTEMP +1
017850,000107: 22,3130 00002 TC Q
017851,000108: 22,3131 13133 TCF MANUOFF
017852,000109: 22,3132 40000 COM
017853,000110: 22,3133 65041 MANUOFF AD 1SEC
017854,000111: 22,3134 00006 EXTEND
017855,000112: 22,3135 63137 BZMF 2NDRETRN
017856,000113: 22,3136 24002 INCR Q
017857,000114: 22,3137 24002 2NDRETRN INCR Q
017858,000115: 22,3140 24002 INCR Q
017859,000116: 22,3141 00002 TC Q
017860,000117:
017861,000118: 20,2000 SETLOC MANUSTUF
017862,000119: 20,2000 BANK
|
Page 416 |
017864,000121: 20,2065 77776 MANUSTAT EXIT # INITIALIZATION ROUTINE
017865,000122: 20,2066 00006 EXTEND # FOR AUTOMATIC MANEUVERS
017866,000123: 20,2067 30025 DCA TIME2
017867,000124: 20,2070 21717 DAS TM # TM+T0 MANEUVER COMPLETION TIME
017868,000125: 20,2071 45041 CS 1SEC
017869,000126: 20,2072 54001 TS L
017870,000127: 20,2073 45021 CS ZERO
017871,000128: 20,2074 21717 DAS TM # (TM+T0)-1
017872,000129: 20,2075 00004 INHINT
017873,000130: 20,2076 45017 CS ONE # ENABLE AUTOPILOT TO PERFORM
017874,000131: 20,2077 55332 TS HOLDFLAG # AUTOMATIC MANEUVERS
017875,000132: 20,2100 41130 CS RATEINDX # SEE IF MANEUVERING AT HIGH RATE
017876,000133: 20,2101 66211 AD SIX
017877,000134: 20,2102 00006 EXTEND
017878,000135: 20,2103 62105 BZMF HIGHGAIN
017879,000136: 20,2104 12110 TCF +4
017880,000137: 20,2105 41501 HIGHGAIN CS RCSFLAGS # IF SO, SET HIGH RATE FLAG (BIT 15 OF
017881,000138: 20,2106 75001 MASK BIT15 # RCSFLAGS)
017882,000139: 20,2107 27501 ADS RCSFLAGS
017883,000140: 20,2110 53711 DXCH BRATE # X-AXIS MANEUVER RATE
017884,000141: 20,2111 53526 DXCH WBODY
017885,000142: 20,2112 53713 DXCH BRATE +2 # Y-AXIS MANEUVER RATE
017886,000143: 20,2113 53530 DXCH WBODY1
017887,000144: 20,2114 53715 DXCH BRATE +4 # Z-AXIS MANEUVER RATE
017888,000145: 20,2115 53532 DXCH WBODY2
017889,000146: 20,2116 31675 CA BIASTEMP +1 # INSERT ATTITUDE ERROR BIASES
017890,000147: 20,2117 55564 TS BIAS # INTO AUTOPILOT
017891,000148: 20,2120 31677 CA BIASTEMP +3
017892,000149: 20,2121 55565 TS BIAS1
017893,000150: 20,2122 31701 CA BIASTEMP +5
017894,000151: 20,2123 55566 TS BIAS2
017895,000152: 20,2124 30025 CA TIME1
017896,000153: 20,2125 65041 AD 1SEC
017897,000154: 20,2126 57671 XCH NEXTIME
017898,000155: 20,2127 04701 TC POSTJUMP
017899,000156: 20,2130 45056 CADR INCRDCDU -1
017900,000157:
017901,000158: 20,2131 00004 CONTMANU INHINT # CONTINUE WITH UPDATE PROCESS
017902,000159: 20,2132 40025 CS TIME1
017903,000160: 20,2133 61671 AD NEXTIME
017904,000161: 20,2134 10000 CCS A
017905,000162: 20,2135 65017 AD ONE
017906,000163: 20,2136 12141 TCF MANUCALL
017907,000164: 20,2137 65001 AD NEGMAX
017908,000165: 20,2140 40000 COM
017909,000166: 20,2141 05245 MANUCALL TC WAITLIST
017910,000167: 20,2142 E6,1661 EBANK= BCDU
017911,000168: 20,2142 02150 40066 2CADR UPDTCALL
017912,000169:
017913,000170: 20,2144 00003 RELINT
|
Page 417 |
017915,000172: 20,2145 35041 CAF 1SEC # INCREMENT TIME FOR NEXT UPDATE
017916,000173: 20,2146 27671 ADS NEXTIME
017917,000174: 20,2147 15217 TCF ENDOFJOB
017918,000175:
017919,000176:
017920,000177: 20,2150 37663 UPDTCALL CAF PRIO26 # CALL FOR UPDATE
017921,000178: 20,2151 05147 TC FINDVAC # OF STEERING COMMANDS
017922,000179: 20,2152 E6,1661 EBANK= BCDU
017923,000180: 20,2152 03026 44066 2CADR NEWDELHI
017924,000181:
017925,000182: 20,2154 05324 TC TASKOVER
017926,000183:
|
Page 418 |
017928,000185: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
017929,000186:
017930,000187: 21,2000 SETLOC KALCMON3
017931,000188: 21,2000 BANK
017932,000189:
017933,000190: 21,2000 04537 MANUSTOP TC STOPYZ
017934,000191: 21,2001 04740 TC IBNKCALL
017935,000192: 21,2002 45144 CADR LOADYZ
017936,000193:
017937,000194: 21,2003 31155 ENDROLL CA CPHI
017938,000195: 21,2004 55646 TS CDUXD # SET CDUXD TO THE COMMANDED OUTER GIMBAL
017939,000196: 21,2005 04526 TC STOPRATE
017940,000197: 21,2006 31327 ENDMANU CA ATTPRIO # RESTORE USERS PRIORITY
017941,000198: 21,2007 54063 TS NEWPRIO
017942,000199:
017943,000200: 21,2010 35021 CA ZERO # ZERO ATTCADR
017944,000201: 21,2011 53326 DXCH ATTCADR
017945,000202:
017946,000203: 21,2012 05160 TC SPVAC # RETURN TO USER OF GOMANUR
017947,000204:
017948,000205: 21,2013 05324 TC TASKOVER
017949,000206:
017950,000207: 4000 SETLOC STOPRAT
017951,000208: 4000 BANK
017952,000209: 4526 35021 STOPRATE CAF ZERO
017953,000210: 4527 55575 TS DELCDUX
017954,000211: 4530 55576 TS DELCDUX +1 # ZERO ROLL INCREMENTAL ANGLES
017955,000212: 4531 55525 TS WBODY # RATE
017956,000213: 4532 55526 TS WBODY +1
017957,000214: 4533 55564 TS BIAS # BIAS
017958,000215:
017959,000216: 4534 45001 CS BIT15 # MAKE SURE HIGH RATE FLAG (BIT 15 OF
017960,000217: 4535 71501 MASK RCSFLAGS # RCSFLAGS) IS RESET.
017961,000218: 4536 55501 TS RCSFLAGS
017962,000219:
017963,000220: 4537 35021 STOPYZ CAF ZERO
017964,000221: 4540 55577 TS DELCDUY # ZERO PITCH, YAW
017965,000222: 4541 55600 TS DELCDUY +1 # INCREMENTAL ANGLES
017966,000223: 4542 55601 TS DELCDUZ
017967,000224: 4543 55602 TS DELCDUZ +1
017968,000225: 4544 55527 TS WBODY1 # RATES
017969,000226: 4545 55530 TS WBODY1 +1
017970,000227: 4546 55531 TS WBODY2
017971,000228: 4547 55532 TS WBODY2 +1
017972,000229: 4550 55565 TS BIAS1 # BIASES
017973,000230: 4551 55566 TS BIAS2
017974,000231: 4552 00002 TC Q
017975,000232:
017976,000233: 20,2000 SETLOC MANUSTUF
017977,000234: 20,2000 BANK
017978,000235:
|
Page 419 |
017980,000237: 20,2155 30032 ZEROERROR CA CDUX # PICK UP CDU ANGLES AND STORE IN
017981,000238: 20,2156 55646 TS CDUXD # CDU DESIRED
017982,000239: 20,2157 30033 CA CDUY
017983,000240: 20,2160 55650 TS CDUYD
017984,000241: 20,2161 30034 CA CDUZ
017985,000242: 20,2162 55652 TS CDUZD
017986,000243: 20,2163 00002 TC Q
017987,000244:
017988,000245: 22,2000 SETLOC KALCMON1
017989,000246: 22,2000 BANK
017990,000247:
017991,000248: 22,3142 31155 LOADCDUD CA CPHI # STORE TERMINAL ANGLES INTO
017992,000249: 22,3143 55646 TS CDUXD # COMMAND ANGLES
017993,000250: 22,3144 31156 LOADYZ CA CTHETA
017994,000251: 22,3145 55650 TS CDUYD
017995,000252: 22,3146 31157 CA CPSI
017996,000253: 22,3147 55652 TS CDUZD
017997,000254: 22,3150 00002 TC Q
End of include-file KALCMANU_STEERING.agc. Parent file is MAIN.agc