Source Code
|
These source-code files are part of a reconstructed copy of LUM69 Revision 2, the
flown Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction began with source code of Luminary 69 revision 0 previously transcribed from a digitized copy of that program. The code was then updated by back-porting the R-2 lunar potential model from previously-transcribed source code of Luminary 99. These required changes were described in the original Luminary memos 75 and 78. The reconstructed code was verified by matching memory-bank checksums to those listed in drawing 2021152G. Note that page numbers in the reconstructed code match those on the Luminary 069 printout, although the added code would likely have changed page numbers for a real LUM69 Revision 2 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. |
009477,000002: ## Copyright: Public domain.
009478,000003: ## Filename: AGS_INITIALIZATION.agc
009479,000004: ## Purpose: A section of LUM69 revision 2.
009480,000005: ## It is part of the reconstructed source code for the flown
009481,000006: ## version of the flight software for the Lunar Module's (LM)
009482,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
009483,000008: ## been recreated from a copy of Luminary revsion 069, using
009484,000009: ## changes present in Luminary 099 which were described in
009485,000010: ## Luminary memos 75 and 78. The code has been adapted such
009486,000011: ## that the resulting bugger words exactly match those specified
009487,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
009488,000013: ## relatively high confidence that the reconstruction is correct.
009489,000014: ## Reference: pp. 221-225
009490,000015: ## Assembler: yaYUL
009491,000016: ## Contact: Ron Burkey <info@sandroid.org>.
009492,000017: ## Website: www.ibiblio.org/apollo/index.html
009493,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
009494,000019:
|
Page 221 |
009496,000021:
009497,000022: # PROGRAM NAME: AGS INITIALIZATION (R47)
009498,000023:
009499,000024: # WRITTEN BY : RHODE/KILROY/FOLLETT
009500,000025:
009501,000026: # MOD NO. : 0
009502,000027: # DATE : 23 MARCH 1967
009503,000028: # MOD BY : KILROY
009504,000029:
009505,000030: # MOD NO. : 1
009506,000031: # DATE : 28 OCTOBER 1967
009507,000032: # MOD BY : FOLLETT
009508,000033:
009509,000034: # FUNCT. DESC.: (1) TO PROVIDE THE AGS ABORT ELECTRONICS ASSEMBLY(AEA) WITH THE LEM AND CSM STATE VECTORS
009510,000035: # (POSITION,VELOCITY,TIME) IN LEM IMU COORDINATES BY MEANS OF THE LGC DIGITAL DOWNLINK.
009511,000036:
009512,000037: # (2) TO ZERO THE ICDU, LGC AND AEA GIMBAL ANGLE COUNTERS SIMULTANEOUSLY IN ORDER TO ESTABLISH A
009513,000038: # COMMON ZERO REFERENCE FOR THE MEASUREMENT OF GIMBAL(EULER) ANGLES WHICH DEFINE LEM ATTITUDE
009514,000039: # (3) TO ESTABLISH THE GROUND ELAPSED TIME OF AEA CLOCK ZERO.(IF AN AEA CLOCK ZERO IS
009515,000040: # REQUESTED DURING THIS PROGRAM
009516,000041:
009517,000042: # LOG SECTION : AGS INITIALIZATION
009518,000043:
009519,000044: # CALLING SEQ : PROGRAM IS ENTERED WHEN ASTRONAUT KEYS V47E ON DSKY.
009520,000045: # R47 MAY BE CALLED AT ANY TIME EXCEPT WHEN ANOTHER EXTENDED VERB IS IN PROGRESS
009521,000046:
009522,000047: # SUBROUTINES
009523,000048: # CALLED :
009524,000049:
009525,000050: # NORMAL EXIT : ENDEXT
009526,000051:
009527,000052: # ALARM/ABORT : ALARM - BAD REFSMMAT - CODE:220
009528,000053: # OPERATOR ERROR IF V47 SELECTED DURING ANOTHER EXTENDED VERB.
009529,000054:
009530,000055: # ERASABLES
009531,000056: # USED : SAMPTIME (2) TIME OF :ENTER: KEYSTROKE
009532,000057: # AGSK (2) GROUND ELAPSED TIME OF THE AEA CLOCK :ZERO:
009533,000058: # AGSBUFF (140) CONTAINS AGS INITIALIZATION DATA (SEE :OUTPUT: BELOW)
009534,000059: # AGSWORD (1) PREVIOUS DOWNLIST SAVED HERE
009535,000060:
009536,000061: 05,2447 E4,1604 EBANK= AGSBUFF
009537,000062:
009538,000063: 40,2000 BANK 40
009539,000064: 32,2000 SETLOC R47
009540,000065: 32,2000 BANK
009541,000066:
009542,000067: 32,2015 COUNT* $$/R47
009543,000068:
009544,000069: 32,2015 34737 AGSINIT CAF REFSMBIT
009545,000070: 32,2016 70077 MASK FLAGWRD3 # CHECK REFSMFLG.
009546,000071: 32,2017 10000 CCS A
009547,000072:
|
Page 222 |
009549,000074: 32,2020 02027 TC REDSPTEM # REFSMMAT IS OK
009550,000075: 32,2021 05567 TC ALARM # REFSMMAT IS BAD
009551,000076: 32,2022 00220 OCT 220
009552,000077: 32,2023 05472 TC ENDEXT
009553,000078:
009554,000079: 32,2024 00006 NEWAGS EXTEND
009555,000080: 32,2025 30014 DCA SAMPTIME # TIME OF THE :ENTER: KEYSTROKE
009556,000081: 32,2026 53421 DXCH AGSK # BECOMES NEW AEA CLOCK :ZERO:
009557,000082:
009558,000083: 32,2027 00006 REDSPTEM EXTEND
009559,000084: 32,2030 31421 DCA AGSK
009560,000085: 32,2031 53052 DXCH DSPTEMX
009561,000086: 32,2032 32202 AGSDISPK CAF V06N16
009562,000087: 32,2033 04616 TC BANKCALL # R1 = 00XXX. HRS., R2 = 000XX MIN.,
009563,000088: 32,2034 20212 CADR GOMARKF # R3 = 0XX.XX SEC.
009564,000089: 32,2035 05472 TC ENDEXT # TERMINATE RETURN
009565,000090: 32,2036 02046 TC AGSVCALC # PROCEED RETURN
009566,000091: 32,2037 44746 CS BIT6 # IS ENTER VIA A V32
009567,000092: 32,2040 60154 AD MPAC
009568,000093: 32,2041 00006 EXTEND
009569,000094: 32,2042 12024 BZF NEWAGS # YES, USE KEYSTROKE TIME FOR NEW AGSK
009570,000095:
009571,000096: 32,2043 00006 EXTEND # NO, NEW AGSK LOADED VIA V25
009572,000097: 32,2044 31052 DCA DSPTEMX # LOADED INTO DSPTEMX BY KEYING
009573,000098: 32,2045 02026 TC REDSPTEM -1 # V25E FOLLOWED BY HRS.,MINS.,SECS.
009574,000099: # DISPLAY THE NEW K
009575,000100:
009576,000101: 32,2046 06036 AGSVCALC TC INTPRET
009577,000102: 32,2047 77614 SET
009578,000103: 32,2050 01076 NODOFLAG # DONT ALLOW V37
009579,000104: 32,2051 77414 SET EXIT
009580,000105: 32,2052 02076 XDSPFLAG
009581,000106:
009582,000107: 32,2053 32202 CAF V06N16
009583,000108: 32,2054 04616 TC BANKCALL
009584,000109: 32,2055 20473 CADR EXDSPRET
009585,000110:
009586,000111: 32,2056 06036 TC INTPRET # EXTRAPOLATE LEM AND CSM STATE VECTORS
009587,000112: 32,2057 77634 RTB # TO THE PRESENT TIME
009588,000113: 32,2060 21462 LOADTIME # LOAD MPAC WITH TIME2,TIME1
009589,000114: 32,2061 34041 STCALL TDEC1 # CALCULATE LEM STATE VECTOR
009590,000115: 32,2062 27057 LEMPREC
009591,000116: 32,2063 77624 CALL # CALL ROUTINE TO CONVERT TO SM COORDS AND
009592,000117: 32,2064 64142 SCALEVEC # PROVIDE PROPER SCALING
009593,000118: 32,2065 16205 STODL AGSBUFF # (LEMPREC AND CSMPREC LEAVE TDEC1 IN TAT)
009594,000119: 32,2066 00015 TAT # TAT = TIME TO WHICH RATT1 AND VATT1 ARE
009595,000120: 32,2067 34041 STCALL TDEC1 # COMPUTED(CSEC SINCE CLOCK START B-28).
009596,000121: 32,2070 27043 CSMPREC # CALCULATE CSM STATE VECTOR FOR SAME TIME
009597,000122: 32,2071 77624 CALL
009598,000123: 32,2072 64142 SCALEVEC
009599,000124:
|
Page 223 |
009601,000126: 32,2073 16213 STODL AGSBUFF +6
009602,000127: 32,2074 00015 TAT
009603,000128: 32,2075 56225 DSU DDV # CALCULATE AND STORE THE TIME
009604,000129: 32,2076 02021 AGSK
009605,000130: 32,2077 24205 TSCALE
009606,000131: 32,2100 02221 STORE AGSBUFF +12D
009607,000132: 32,2101 77776 EXIT
009608,000133:
009609,000134: 32,2102 34753 CAF LAGSLIST
009610,000135: 32,2103 54332 TS DNLSTCOD
009611,000136:
009612,000137: 32,2104 32206 CAF 20SEC # DELAY FOR 20 SEC WHILE THE AGS
009613,000138: 32,2105 04616 TC BANKCALL # DOWNLIST IS TRANSMITTED
009614,000139: 32,2106 01735 CADR DELAYJOB
009615,000140:
009616,000141: 32,2107 31324 CA AGSWORD
009617,000142: 32,2110 54332 TS DNLSTCOD # RETURN TO THE OLD DOWNLIST
009618,000143: 32,2111 34744 CAF IMUSEBIT
009619,000144: 32,2112 70074 MASK FLAGWRD0 # CHECK IMUSE FLAG.
009620,000145: 32,2113 10000 CCS A
009621,000146: 32,2114 02132 TC AGSEND # IMU IS BEING USED - DO NOT ZERO
009622,000147: 32,2115 11304 CKSTALL CCS IMUCADR # CHECK FOR IMU USAGE WHICH AVOIDS THE
009623,000148: 32,2116 12121 TCF +3 # IMUSE BIT: I.E., IMU COMPENSATION.
009624,000149: 32,2117 12125 TCF +6 # FREE. GO AHEAD WITH THE IMU ZERO.
009625,000150: 32,2120 12121 TCF +1
009626,000151: 32,2121 34363 +3 CAF TEN # WAIT .1 SEC AND TRY AGAIN.
009627,000152: 32,2122 04616 TC BANKCALL
009628,000153: 32,2123 01735 CADR DELAYJOB
009629,000154: 32,2124 12115 TCF CKSTALL
009630,000155:
009631,000156: 32,2125 04616 +6 TC BANKCALL # IMU IS NOT IN USE
009632,000157: 32,2126 16667 CADR IMUZERO # SET IMU ZERO DISCRETE FOR 320MSECS
009633,000158: 32,2127 04616 TC BANKCALL # WAIT 3 SEC FOR COUNTERS TO INCREMENT
009634,000159: 32,2130 17671 CADR IMUSTALL
009635,000160: 32,2131 02132 TC AGSEND
009636,000161: 32,2132 05516 AGSEND TC DOWNFLAG # ALLOW V37
009637,000162: 32,2133 00054 ADRES NODOFLAG
009638,000163:
009639,000164: 32,2134 32203 CAF V50N16
009640,000165: 32,2135 04616 TC BANKCALL
009641,000166: 32,2136 20220 CADR GOMARK3
009642,000167: 32,2137 15472 TCF ENDEXT
009643,000168: 32,2140 15472 TCF ENDEXT
009644,000169: 32,2141 05472 TC ENDEXT
009645,000170:
009646,000171: 32,2142 64375 SCALEVEC VLOAD MXV
009647,000172: 32,2143 00025 VATT1
009648,000173: 32,2144 01734 REFSMMAT
009649,000174: 32,2145 72561 VXSC VSL2
009650,000175: 32,2146 24212 VSCALE
009651,000176:
|
Page 224 |
009653,000178: 32,2147 53255 VAD VAD # THIS SECTION ROUNDS THE VECTOR, AND
009654,000179: 32,2150 24214 AGSRND1 # CORRECTS FOR THE FACT THAT THE AGS
009655,000180: 32,2151 24222 AGSRND2 # IS A 2 S COMPLIMENT MACHINE WHILE THE
009656,000181: 32,2152 77634 RTB # LGC IS A 1 S COMPLIMENT MACHINE.
009657,000182: 32,2153 21744 VECSGNAG
009658,000183: 32,2154 24025 STOVL VATT1
009659,000184: 32,2155 00017 RATT1
009660,000185: 32,2156 74321 MXV VXSC
009661,000186: 32,2157 01734 REFSMMAT
009662,000187: 32,2160 24210 RSCALE
009663,000188: 32,2161 53212 VSL8 VAD # AGAIN THIS SECTION ROUNDS. TWO VECTORS
009664,000189: 32,2162 24214 AGSRND1 # ARE ADDED TO DEFEAT ALSIGNAG IN THE
009665,000190: 32,2163 47055 VAD RTB # CASE OF A HIGH-ORDER ZERO COUPLED WITH
009666,000191: 32,2164 24222 AGSRND2 # A LOW ORDER NEGATIVE PART.
009667,000192: 32,2165 21744 VECSGNAG
009668,000193: 32,2166 77750 LXA,1
009669,000194: 32,2167 00024 VATT1
009670,000195: 32,2170 72130 SXA,1 LXA,1
009671,000196: 32,2171 00155 MPAC +1
009672,000197: 32,2172 00026 VATT1 +2
009673,000198: 32,2173 72130 SXA,1 LXA,1
009674,000199: 32,2174 00160 MPAC +4
009675,000200: 32,2175 00030 VATT1 +4
009676,000201: 32,2176 43530 SXA,1 RVQ
009677,000202: 32,2177 00162 MPAC +6
009678,000203:
009679,000204: 32,2200 4753 LAGSLIST = ONE
009680,000205: 32,2200 00216 V01N14 VN 0114
009681,000206: 32,2201 14400 V50N00A VN 5000
009682,000207: 32,2202 6010 V00N25 EQUALS OCT31
009683,000208: 32,2202 01420 V06N16 VN 0616
009684,000209: 32,2203 4242 V00N34 EQUALS 34DEC
009685,000210: 32,2203 14420 V50N16 VN 5016
009686,000211: 32,2204 03100 00000 TSCALE 2DEC 100 B-10 # CSEC TO SEC SCALE FACTOR
009687,000212: 32,2206 03720 20SEC DEC 2000 B-14
009688,000213: 32,2207 15077 05041 RSCALE 2DEC 3.280839 B-3 # METERS TO FEET SCALE FACTOR
009689,000214: 32,2211 24402 25724 VSCALE 2DEC 3.280839 E2 B-9 # METERS/CS TO FEET/SEC SCALE FACTOR
009690,000215: 32,2213 00000 60000 AGSRND1 2OCT 0000060000
009691,000216: 32,2215 00000 60000 2OCT 0000060000
009692,000217: 32,2217 00000 60000 2OCT 0000060000
009693,000218: 32,2221 00000 37777 AGSRND2 2OCT 0000037777
009694,000219: 32,2223 00000 37777 2OCT 0000037777
009695,000220:
|
Page 225 |
009697,000222: 32,2225 00000 37777 2OCT 0000037777
009698,000223:
009699,000224: 32,2227 30,2000 SBANK= LOWSUPER # FOR SUBSEQUENT LOW 2CADRS.
End of include-file AGS_INITIALIZATION.agc. Parent file is MAIN.agc