Source Code
|
These source-code files are part of a reconstructed copy of Artemis 071, the
first release of the Apollo 15 through 17 Command Module (CM) Apollo Guidance
Computer (AGC) software.
The reconstruction began with source code of Artemis 072 previously transcribed from a digitized copy of that program. The code was then updated by undoing changes between the two versions. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021154-. Note that page numbers in the reconstructed code match those on the Artemis 072 printout, although the changed code would likely have changed page numbers for a real Artemis 071 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. |
018474,000002: ## Copyright: Public domain.
018475,000003: ## Filename: KALCMANU_STEERING.agc
018476,000004: ## Purpose: A section of Artemis revision 071.
018477,000005: ## It is part of the reconstructed source code for the first
018478,000006: ## release of the flight software for the Command Module's
018479,000007: ## (CM) Apollo Guidance Computer (AGC) for Apollo 15 through
018480,000008: ## 17. The code has been recreated from a copy of Artemis 072.
018481,000009: ## It has been adapted such that the resulting bugger words
018482,000010: ## exactly match those specified for Artemis 071 in NASA
018483,000011: ## drawing 2021154-, which gives relatively high confidence
018484,000012: ## that the reconstruction is correct.
018485,000013: ## Reference: 418
018486,000014: ## Assembler: yaYUL
018487,000015: ## Contact: Ron Burkey <info@sandroid.org>.
018488,000016: ## Website: www.ibiblio.org/apollo/index.html
018489,000017: ## Mod history: 2019-08-14 MAS Created from Artemis 072.
018490,000018:
|
Page 418 |
018492,000020:
018493,000021: # GENERATION OF STEERING COMMANDS FOR DIGITAL AUTOPILOT FREE FALL MANEUVERS
018494,000022:
018495,000023: # NEW COMMANDS WILL BE GENERATED EVERY ONE SECOND DURING THE MANEUVER
018496,000024:
018497,000025: 22,2000 SETLOC KALCMON1
018498,000026: 22,2000 BANK
018499,000027:
018500,000028: 22,3037 E6,1661 EBANK= BCDU
018501,000029:
018502,000030: 22,3037 COUNT* $$/KALC
018503,000031: 22,3037 34767 NEWDELHI CAF R67BIT
018504,000032: 22,3040 70104 MASK FLAGWRD8
018505,000033: 22,3041 00006 EXTEND
018506,000034: 22,3042 13047 BZF NEWANGL -3 # NON-R67 SEQUENCE
018507,000035:
018508,000036: 22,3043 34764 CAF TRACKBIT
018509,000037: 22,3044 70075 MASK FLAGWRD1
018510,000038: 22,3045 00006 EXTEND # CHECK TRACKFLAG
018511,000039: 22,3046 13161 BZF MYSTEND # IF OFF DO MYSTEND
018512,000040:
018513,000041: 22,3047 41340 -3 CS HOLDFLAG
018514,000042: 22,3050 00006 EXTEND # CHECK HOLDFLAG
018515,000043: 22,3051 62720 BZMF NOGOM2 # IF POS, DO STOPRATE
018516,000044:
018517,000045: 22,3052 06006 NEWANGL TC INTPRET
018518,000046: 22,3053 75160 +1 AXC,1 AXC,2
018519,000047: 22,3054 03320 MIS # COMPUTE THE NEW MATRIX FROM S/C TO
018520,000048: 22,3055 03425 DEL # STABLE MEMBER AXES
018521,000049: 22,3056 77624 CALL
018522,000050: 22,3057 44304 MXM3
018523,000051: 22,3060 45575 VLOAD STADR
018524,000052: 22,3061 50442 STOVL MIS +12D # CALCULATE NEW DESIRED CDU ANGLES
018525,000053: 22,3062 77626 STADR
018526,000054: 22,3063 50450 STOVL MIS +6D
018527,000055: 22,3064 77626 STADR
018528,000056: 22,3065 74456 STORE MIS
018529,000057: 22,3066 45160 AXC,1 CALL
018530,000058: 22,3067 03320 MIS
018531,000059: 22,3070 44647 DCMTOCDU # PICK UP THE NEW CDU ANGLES FROM MATRIX
018532,000060: 22,3071 77634 RTB
018533,000061: 22,3072 45644 V1STO2S
018534,000062: 22,3073 03267 NWNGL17D STORE NCDU # NEW CDU ANGLES (TAG IS USED BY EDIT)
018535,000063: 22,3074 77414 BONCLR EXIT
018536,000064: 22,3075 01215 CALCMAN2
018537,000065: 22,3076 40064 MANUSTAT # TO START MANEUVER
018538,000066: 22,3077 34767 -1 CAF TWO # +0 OTHERWISE
018539,000067: 22,3100 55664 INCRDCDU TS KSPNDX
018540,000068: 22,3101 60000 DOUBLE
018541,000069: 22,3102 55665 TS KDPNDX
018542,000070: 22,3103 51664 INDEX KSPNDX
|
Page 419 |
018544,000072: 22,3104 31666 CA NCDU # NEW DESIRED CDU ANGLES
018545,000073: 22,3105 00006 EXTEND
018546,000074: 22,3106 51664 INDEX KSPNDX
018547,000075: 22,3107 21661 MSU BCDU # INITIAL S/C ANGLE OR PREVIOUS DESIRED
018548,000076: 22,3110 00006 EXTEND # CDU ANGLES
018549,000077: 22,3111 73013 MP QUADROT
018550,000078: 22,3112 51665 INDEX KDPNDX
018551,000079: 22,3113 53576 DXCH DELCDUX # ANGLE INCREMENTS TO BE ADDED TO
018552,000080: 22,3114 51664 INDEX KSPNDX # DCDU EVERY TENTH SEC
018553,000081: 22,3115 31666 CA NCDU # BY LEM DAP
018554,000082: 22,3116 51664 INDEX KSPNDX
018555,000083: 22,3117 57661 XCH BCDU
018556,000084: 22,3120 51665 INDEX KDPNDX
018557,000085: 22,3121 55646 TS CDUXD
018558,000086: 22,3122 11664 CCS KSPNDX
018559,000087: 22,3123 13100 TCF INCRDCDU # LOOP FOR THREE AXES
018560,000088:
018561,000089: 22,3124 00003 RELINT
018562,000090:
018563,000091: # COMPARE PRESENT TIME WITH TIME TO TERMINATE MANEUVER
018564,000092:
018565,000093: 22,3125 03135 TMANUCHK TC TIMECHK
018566,000094: 22,3126 04655 TC POSTJUMP
018567,000095: 22,3127 40143 CADR CONTMANU
018568,000096:
018569,000097: 22,3130 34770 CAF ONE
018570,000098: 22,3131 05233 MANUSTAL TC WAITLIST
018571,000099: 22,3132 E6,1661 EBANK= BCDU
018572,000100: 22,3132 02303 20066 2CADR MANUSTOP
018573,000101:
018574,000102: 22,3134 15205 TCF ENDOFJOB
018575,000103:
018576,000104:
018577,000105: 22,3135 00006 TIMECHK EXTEND
018578,000106: 22,3136 40025 DCS TIME2
018579,000107: 22,3137 53673 DXCH TTEMP
018580,000108: 22,3140 00006 EXTEND
018581,000109: 22,3141 31717 DCA TM
018582,000110: 22,3142 21673 DAS TTEMP
018583,000111: 22,3143 11672 CCS TTEMP
018584,000112: 22,3144 00002 TC Q
018585,000113: 22,3145 13147 TCF +2
018586,000114: 22,3146 13157 TCF 2NDRETRN
018587,000115: 22,3147 11673 CCS TTEMP +1
018588,000116: 22,3150 00002 TC Q
018589,000117: 22,3151 13153 TCF MANUOFF
018590,000118: 22,3152 40000 COM
018591,000119: 22,3153 65016 MANUOFF AD 1SEC
018592,000120: 22,3154 00006 EXTEND
018593,000121: 22,3155 63157 BZMF 2NDRETRN
018594,000122: 22,3156 24002 INCR Q
|
Page 420 |
018596,000124: 22,3157 24002 2NDRETRN INCR Q
018597,000125: 22,3160 16706 TCF Q+1
018598,000126: 22,3161 04655 MYSTEND TC POSTJUMP
018599,000127: 22,3162 74416 CADR FIXDB
018600,000128:
018601,000129: 20,2000 SETLOC MANUSTUF
018602,000130: 20,2000 BANK
018603,000131:
018604,000132: 20,2064 COUNT* $$/KALC
018605,000133: 20,2064 77776 MANUSTAT EXIT # INITIALIZATION ROUTINE FOR AUTO
018606,000134: 20,2065 34767 CAF R67BIT # MANEUVERS
018607,000135: 20,2066 70104 MASK FLAGWRD8
018608,000136: 20,2067 00006 EXTEND
018609,000137: 20,2070 12075 BZF +5
018610,000138: 20,2071 00006 EXTEND # R67 RUNNING
018611,000139: 20,2072 34750 DCA DPOSMAX
018612,000140: 20,2073 53717 DXCH TM
018613,000141: 20,2074 12104 TCF TMDON
018614,000142: 20,2075 00006 EXTEND # NON-R67 PROGRAM
018615,000143: 20,2076 30025 DCA TIME2
018616,000144: 20,2077 21717 DAS TM # TM+T0 MANEUVER COMPLETION TIME
018617,000145: 20,2100 45016 CS 1SEC
018618,000146: 20,2101 54001 TS L
018619,000147: 20,2102 44772 CS ZERO
018620,000148: 20,2103 21717 DAS TM # (TM+T0)-1
018621,000149: 20,2104 00004 TMDON INHINT
018622,000150: 20,2105 44770 CS ONE # ENABLE AUTOPILOT TO PERFORM
018623,000151: 20,2106 55340 TS HOLDFLAG # AUTOMATIC MANEUVERS
018624,000152: 20,2107 40774 CS RATEINDX # SEE IF MANEUVERING AT HIGH RATE
018625,000153: 20,2110 66211 AD SIX
018626,000154: 20,2111 00006 EXTEND
018627,000155: 20,2112 62114 BZMF HIGHGAIN
018628,000156: 20,2113 12117 TCF +4
018629,000157: 20,2114 41501 HIGHGAIN CS RCSFLAGS # IF SO, SET HIGH RATE FLAG (BIT 15 OF
018630,000158: 20,2115 74752 MASK BIT15 # RCSFLAGS)
018631,000159: 20,2116 27501 ADS RCSFLAGS
018632,000160: 20,2117 00006 EXTEND
018633,000161: 20,2120 31711 DCA BRATE # X-AXIS MANEUVER RATE
018634,000162: 20,2121 53526 DXCH WBODY
018635,000163: 20,2122 00006 EXTEND
018636,000164: 20,2123 31713 DCA BRATE +2 # Y-AXIS MANEUVER RATE
018637,000165: 20,2124 53530 DXCH WBODY1
018638,000166: 20,2125 00006 EXTEND
018639,000167: 20,2126 31715 DCA BRATE +4 # Z-AXIS MANEUVER RATE
018640,000168: 20,2127 53532 DXCH WBODY2
018641,000169: 20,2130 31675 CA BIASTEMP +1 # INSERT ATTITUDE ERROR BIASES
018642,000170: 20,2131 55564 TS BIAS # INTO AUTOPILOT
018643,000171: 20,2132 31677 CA BIASTEMP +3
018644,000172: 20,2133 55565 TS BIAS1
018645,000173: 20,2134 31701 CA BIASTEMP +5
|
Page 421 |
018647,000175: 20,2135 55566 TS BIAS2
018648,000176: 20,2136 30025 CA TIME1
018649,000177: 20,2137 65016 AD 1SEC
018650,000178: 20,2140 57671 XCH NEXTIME
018651,000179: 20,2141 04655 TC POSTJUMP
018652,000180: 20,2142 45077 CADR INCRDCDU -1
018653,000181:
018654,000182: 20,2143 00004 CONTMANU INHINT # CONTINUE WITH UPDATE PROCESS
018655,000183: 20,2144 40025 CS TIME1
018656,000184: 20,2145 61671 AD NEXTIME
018657,000185: 20,2146 10000 CCS A
018658,000186: 20,2147 64770 AD ONE
018659,000187: 20,2150 12153 TCF MANUCALL
018660,000188: 20,2151 64752 AD NEGMAX
018661,000189: 20,2152 40000 COM
018662,000190: 20,2153 05223 MANUCALL TC TWIDDLE
018663,000191: 20,2154 02161 ADRES UPDTCALL
018664,000192: 20,2155 00003 RELINT
018665,000193: 20,2156 35016 CAF 1SEC # INCREMENT TIME FOR NEXT UPDATE
018666,000194: 20,2157 27671 ADS NEXTIME
018667,000195: 20,2160 15205 TCF ENDOFJOB
018668,000196:
018669,000197: 20,2161 34767 UPDTCALL CAF R67BIT
018670,000198: 20,2162 70104 MASK FLAGWRD8
018671,000199: 20,2163 00006 EXTEND
018672,000200: 20,2164 12171 BZF +5
018673,000201:
018674,000202: 20,2165 11774 CCS R61CNTR
018675,000203: 20,2166 12170 TCF +2
018676,000204: 20,2167 12176 TCF DOREMIS
018677,000205: 20,2170 55774 TS R61CNTR
018678,000206:
018679,000207: 20,2171 37650 CAF PRIO26
018680,000208: 20,2172 05135 TC FINDVAC # OF STEERING COMMANDS
018681,000209: 20,2173 E6,1661 EBANK= BCDU
018682,000210: 20,2173 03037 44066 2CADR NEWDELHI
018683,000211:
018684,000212: 20,2175 05314 TC TASKOVER
018685,000213:
018686,000214: 20,2176 37650 DOREMIS CAF PRIO26
018687,000215: 20,2177 05135 TC FINDVAC
018688,000216: 20,2200 E6,1661 EBANK= BCDU
018689,000217: 20,2200 02374 74066 2CADR R67RSTRT # MAKE SURE MIS DOES DEGRADE
018690,000218:
018691,000219: 20,2202 05314 TC TASKOVER
018692,000220:
|
Page 422 |
018694,000222: # ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS
018695,000223:
018696,000224: 10,2000 SETLOC KALCMON3
018697,000225: 10,2000 BANK
018698,000226:
018699,000227: 10,2303 COUNT* $$/KALC
018700,000228: 10,2303 04474 MANUSTOP TC STOPYZ
018701,000229: 10,2304 04714 TC IBNKCALL
018702,000230: 10,2305 45165 CADR LOADYZ
018703,000231:
018704,000232: 10,2306 31307 ENDROLL CA CPHI
018705,000233: 10,2307 55646 TS CDUXD # SET CDUXD TO THE COMMANDED OUTER GIMBAL
018706,000234: 10,2310 04463 TC STOPRATE
018707,000235: 10,2311 35053 ENDMANU CAF PRIO14
018708,000236: 10,2312 05135 TC FINDVAC
018709,000237: 10,2313 E6,1774 EBANK= R61CNTR
018710,000238: 10,2313 02141 56066 2CADR ENDMANUV
018711,000239:
018712,000240: 10,2315 05314 TC TASKOVER
018713,000241:
018714,000242: 4000 SETLOC STOPRAT
018715,000243: 4000 BANK
018716,000244: 4463 COUNT* $$/KALC
018717,000245: 4463 34772 STOPRATE CAF ZERO
018718,000246: 4464 55575 TS DELCDUX
018719,000247: 4465 55576 TS DELCDUX +1 # ZERO ROLL INCREMENTAL ANGLES
018720,000248: 4466 55525 TS WBODY # RATE
018721,000249: 4467 55526 TS WBODY +1
018722,000250: 4470 55564 TS BIAS # BIAS
018723,000251:
018724,000252: 4471 44752 CS BIT15 # MAKE SURE HIGH RATE FLAG (BIT 15 OF
018725,000253: 4472 71501 MASK RCSFLAGS # RCSFLAGS) IS RESET.
018726,000254: 4473 55501 TS RCSFLAGS
018727,000255:
018728,000256: 4474 34772 STOPYZ CAF ZERO
018729,000257: 4475 55577 TS DELCDUY # ZERO PITCH, YAW
018730,000258: 4476 55600 TS DELCDUY +1 # INCREMENTAL ANGLES
018731,000259: 4477 55601 TS DELCDUZ
018732,000260: 4500 55602 TS DELCDUZ +1
018733,000261: 4501 55527 TS WBODY1 # RATES
018734,000262: 4502 55530 TS WBODY1 +1
018735,000263: 4503 55531 TS WBODY2
018736,000264: 4504 55532 TS WBODY2 +1
018737,000265: 4505 55565 TS BIAS1 # BIASES
018738,000266: 4506 55566 TS BIAS2
018739,000267: 4507 00002 TC Q
018740,000268:
018741,000269: 20,2000 SETLOC MANUSTUF
018742,000270: 20,2000 BANK
018743,000271:
|
Page 423 |
018745,000273: 20,2203 COUNT* $$/KALC
018746,000274: 20,2203 30032 ZEROEROR CA CDUX # PICK UP CDU ANGLES AND STORE IN
018747,000275: 20,2204 55646 TS CDUXD # CDU DESIRED
018748,000276: 20,2205 30033 CA CDUY
018749,000277: 20,2206 55650 TS CDUYD
018750,000278: 20,2207 30034 CA CDUZ
018751,000279: 20,2210 55652 TS CDUZD
018752,000280: 20,2211 00002 TC Q
018753,000281:
018754,000282: 22,2000 SETLOC KALCMON1
018755,000283: 22,2000 BANK
018756,000284:
018757,000285: 22,3163 COUNT* $$/KALC
018758,000286: 22,3163 31307 LOADCDUD CA CPHI # STORE TERMINAL ANGLES INTO
018759,000287: 22,3164 55646 TS CDUXD # COMMAND ANGLES
018760,000288: 22,3165 31310 LOADYZ CA CTHETA
018761,000289: 22,3166 55650 TS CDUYD
018762,000290: 22,3167 31311 CA CPSI
018763,000291: 22,3170 55652 TS CDUZD
018764,000292: 22,3171 00002 TC Q
End of include-file KALCMANU_STEERING.agc. Parent file is MAIN.agc