Source Code
These source-code files are part of a reconstructed copy of Luminary 97, the
second release of the Apollo 11 Lunar Module (LM) Apollo Guidance Computer
(AGC) software. It was created to fix two incorrect ephemeris constants in
Luminary 96, as described by anomaly report LNY-59.
The reconstruction began with source code of Luminary 99 revision 1 previously transcribed from a digitized copy of that program. The code was then updated by undoing changes described in original Luminary memos 83 and 85, using asterisks indicating changed lines in the listing as a guide. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021152D. Note that page numbers in the reconstructed code match those on the Luminary 099 revision 001 printout, although the added code would likely have changed page numbers for a real Luminary 97 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. |
008155,000002: ## Copyright: Public domain.
008156,000003: ## Filename: AGS_INITIALIZATION.agc
008157,000004: ## Purpose: A section of Luminary revision 97.
008158,000005: ## It is part of the reconstructed source code for the
008159,000006: ## second release of the flight software for the Lunar
008160,000007: ## Module's (LM) Apollo Guidance Computer (AGC) for Apollo 11.
008161,000008: ## It was created to fix two incorrect ephemeris constants in
008162,000009: ## Luminary 96, as described by anomaly report LNY-59.
008163,000010: ## The code has been recreated from a copy of Luminary 99
008164,000011: ## revision 001, using asterisks indicating changed lines in
008165,000012: ## the listing and Luminary Memos #83 and #85, which list
008166,000013: ## changes between Luminary 97 and 98, and 98 and 99. The
008167,000014: ## code has been adapted such that the resulting bugger words
008168,000015: ## exactly match those specified for Luminary 97 in NASA drawing
008169,000016: ## 2021152D, which gives relatively high confidence that the
008170,000017: ## reconstruction is correct.
008171,000018: ## Reference: pp. 206-210
008172,000019: ## Assembler: yaYUL
008173,000020: ## Contact: Ron Burkey <info@sandroid.org>.
008174,000021: ## Website: www.ibiblio.org/apollo/index.html
008175,000022: ## Mod history: 2019-07-28 MAS Created from Luminary 99.
008176,000023:
Page 206 |
008178,000025:
008179,000026: # PROGRAM NAME: AGS INITIALIZATION (R47)
008180,000027:
008181,000028: # WRITTEN BY: RHODE/KILROY/FOLLETT
008182,000029:
008183,000030: # MOD NO. : 0
008184,000031: # DATE: 23 MARCH 1967
008185,000032: # MOD BY: KILROY
008186,000033:
008187,000034: # MOD NO.: 1
008188,000035: # DATE: 28 OCTOBER 1967
008189,000036: # MOD BY: FOLLETT
008190,000037:
008191,000038: # FUNCT. DESC.: (1) TO PROVIDE THE AGS ABORT ELECTRONICS ASSEMBLY (AEA) WITH THE LEM AND CSM STATE VECTORS
008192,000039: # (POSITION,VELOCITY,TIME) IN LEM IMU COORDINATES BY MEANS OF THE LGC DIGITAL DOWNLINK.
008193,000040:
008194,000041: # (2) TO ZERO THE ICDU, LGC AND AEA GIMBAL ANGLE COUNTERS SIMULTANEOUSLY IN ORDER TO ESTABLISH A
008195,000042: # COMMON ZERO REFERENCE FOR THE MEASUREMENT OF GIMBAL (EULER) ANGLES WHICH DEFINE LEM ATTITUDE
008196,000043:
008197,000044: # (3) TO ESTABLISH THE GROUND ELAPSED TIME OF AEA CLOCK ZERO. (IF AN AEA CLOCK ZERO IS
008198,000045: # REQUESTED DURING THIS PROGRAM
008199,000046:
008200,000047: # LOG SECTION: AGS INITIALIZATION
008201,000048:
008202,000049: # CALLING SEQ: PROGRAM IS ENTERED WHEN ASTRONAUT KEYS V47E ON DSKY.
008203,000050: # R47 MAY BE CALLED AT ANY TIME EXCEPT WHEN ANOTHER EXTENDED VERB IS IN PROGRESS
008204,000051:
008205,000052: # SUBROUTINES
008206,000053: # CALLED:
008207,000054:
008208,000055: # NORMAL EXIT: ENDEXT
008209,000056:
008210,000057: # ALARM/ABORT: ALARM - BAD REFSMMAT - CODE:220
008211,000058: # OPERATOR ERROR IF V47 SELECTED DURING ANOTHER EXTENDED VERB.
008212,000059:
008213,000060: # ERASABLES
008214,000061: # USED: SAMPTIME (2) TIME OF :ENTER: KEYSTROKE
008215,000062: # AGSK (2) GROUND ELAPSED TIME OF THE AEA CLOCK :ZERO:
008216,000063: # AGSBUFF (140) CONTAINS AGS INITIALIZATION DATA (SEE :OUTPUT: BELOW)
008217,000064: # AGSWORD (1) PREVIOUS DOWNLIST SAVED HERE
008218,000065:
008219,000066: 05,2447 E4,1600 EBANK= AGSBUFF
008220,000067:
008221,000068: 40,2000 BANK 40
008222,000069: 32,2000 SETLOC R47
008223,000070: 32,2000 BANK
008224,000071:
008225,000072: 32,2005 COUNT* $$/R47
008226,000073:
008227,000074: 32,2005 34737 AGSINIT CAF REFSMBIT
008228,000075: 32,2006 70077 MASK FLAGWRD3 # CHECK REFSMFLG.
008229,000076: 32,2007 10000 CCS A
Page 207 |
008231,000078: 32,2010 02017 TC REDSPTEM # REFSMMAT IS OK
008232,000079: 32,2011 05567 TC ALARM # REFSMMAT IS BAD
008233,000080: 32,2012 00220 OCT 220
008234,000081: 32,2013 05472 TC ENDEXT
008235,000082:
008236,000083: 32,2014 00006 NEWAGS EXTEND
008237,000084: 32,2015 30014 DCA SAMPTIME # TIME OF THE :ENTER: KEYSTROKE
008238,000085: 32,2016 53421 DXCH AGSK # BECOMES NEW AEA CLOCK :ZERO:
008239,000086:
008240,000087: 32,2017 00006 REDSPTEM EXTEND
008241,000088: 32,2020 31421 DCA AGSK
008242,000089: 32,2021 53052 DXCH DSPTEMX
008243,000090: 32,2022 32172 AGSDISPK CAF V06N16
008244,000091: 32,2023 04616 TC BANKCALL # R1 = 00XXX. HRS., R2 = 000XX MIN.,
008245,000092: 32,2024 20334 CADR GOMARKF # R3 = 0XX.XX SEC.
008246,000093: 32,2025 05472 TC ENDEXT # TERMINATE RETURN
008247,000094: 32,2026 02036 TC AGSVCALC # PROCEED RETURN
008248,000095: 32,2027 44746 CS BIT6 # IS ENTER VIA A V32
008249,000096: 32,2030 60154 AD MPAC
008250,000097: 32,2031 00006 EXTEND
008251,000098: 32,2032 12014 BZF NEWAGS # YES, USE KEYSTROKE TIME FOR NEW AGSK
008252,000099:
008253,000100: 32,2033 00006 EXTEND # NO, NEW AGSK LOADED VIA V25
008254,000101: 32,2034 31052 DCA DSPTEMX # LOADED INTO DSPTEMX BY KEYING
008255,000102: 32,2035 02016 TC REDSPTEM -1 # V25E FOLLOWED BY HRS.,MINS.,SECS.
008256,000103: # DISPLAY THE NEW K
008257,000104:
008258,000105: 32,2036 06037 AGSVCALC TC INTPRET
008259,000106: 32,2037 77614 SET
008260,000107: 32,2040 01076 NODOFLAG # DONT ALLOW V37
008261,000108: 32,2041 77414 SET EXIT
008262,000109: 32,2042 02076 XDSPFLAG
008263,000110:
008264,000111: 32,2043 32172 CAF V06N16
008265,000112: 32,2044 04616 TC BANKCALL
008266,000113: 32,2045 20620 CADR EXDSPRET
008267,000114:
008268,000115: 32,2046 06037 TC INTPRET # EXTRAPOLATE LEM AND CSM STATE VECTORS
008269,000116: 32,2047 77634 RTB # TO THE PRESENT TIME
008270,000117: 32,2050 21573 LOADTIME # LOAD MPAC WITH TIME2,TIME1
008271,000118: 32,2051 34041 STCALL TDEC1 # CALCULATE LEM STATE VECTOR
008272,000119: 32,2052 27057 LEMPREC
008273,000120: 32,2053 77624 CALL # CALL ROUTINE TO CONVERT TO SM COORDS AND
008274,000121: 32,2054 64132 SCALEVEC # PROVIDE PROPER SCALING
008275,000122: 32,2055 16201 STODL AGSBUFF # (LEMPREC AND CSMPREC LEAVE TDEC1 IN TAT)
008276,000123: 32,2056 00015 TAT # TAT = TIME TO WHICH RATT1 AND VATT1 ARE
008277,000124: 32,2057 34041 STCALL TDEC1 # COMPUTED (CSEC SINCE CLOCK START B-28).
008278,000125: 32,2060 27043 CSMPREC # CALCULATE CSM STATE VECTOR FOR SAME TIME
008279,000126: 32,2061 77624 CALL
008280,000127: 32,2062 64132 SCALEVEC
Page 208 |
008282,000129: 32,2063 16207 STODL AGSBUFF +6
008283,000130: 32,2064 00015 TAT
008284,000131: 32,2065 56225 DSU DDV # CALCULATE AND STORE THE TIME
008285,000132: 32,2066 02021 AGSK
008286,000133: 32,2067 24175 TSCALE
008287,000134: 32,2070 02215 STORE AGSBUFF +12D
008288,000135: 32,2071 77776 EXIT
008289,000136:
008290,000137: 32,2072 34753 CAF LAGSLIST
008291,000138: 32,2073 54332 TS DNLSTCOD
008292,000139:
008293,000140: 32,2074 32176 CAF 20SEC # DELAY FOR 20 SEC WHILE THE AGS
008294,000141: 32,2075 04616 TC BANKCALL # DOWNLIST IS TRANSMITTED
008295,000142: 32,2076 01735 CADR DELAYJOB
008296,000143:
008297,000144: 32,2077 31324 CA AGSWORD
008298,000145: 32,2100 54332 TS DNLSTCOD # RETURN TO THE OLD DOWNLIST
008299,000146: 32,2101 34744 CAF IMUSEBIT
008300,000147: 32,2102 70074 MASK FLAGWRD0 # CHECK IMUSE FLAG.
008301,000148: 32,2103 10000 CCS A
008302,000149: 32,2104 02122 TC AGSEND # IMU IS BEING USED - DO NOT ZERO
008303,000150: 32,2105 11304 CKSTALL CCS IMUCADR # CHECK FOR IMU USAGE WHICH AVOIDS THE
008304,000151: 32,2106 12111 TCF +3 # IMUSE BIT: I.E., IMU COMPENSATION.
008305,000152: 32,2107 12115 TCF +6 # FREE. GO AHEAD WITH THE IMU ZERO.
008306,000153: 32,2110 12111 TCF +1
008307,000154: 32,2111 34363 +3 CAF TEN # WAIT .1 SEC AND TRY AGAIN.
008308,000155: 32,2112 04616 TC BANKCALL
008309,000156: 32,2113 01735 CADR DELAYJOB
008310,000157: 32,2114 12105 TCF CKSTALL
008311,000158:
008312,000159: 32,2115 04616 +6 TC BANKCALL # IMU IS NOT IN USE
008313,000160: 32,2116 16714 CADR IMUZERO # SET IMU ZERO DISCRETE FOR 320MSECS
008314,000161: 32,2117 04616 TC BANKCALL # WAIT 3 SEC FOR COUNTERS TO INCREMENT
008315,000162: 32,2120 17716 CADR IMUSTALL
008316,000163: 32,2121 02122 TC AGSEND
008317,000164: 32,2122 05516 AGSEND TC DOWNFLAG # ALLOW V37
008318,000165: 32,2123 00054 ADRES NODOFLAG
008319,000166:
008320,000167: 32,2124 32173 CAF V50N16
008321,000168: 32,2125 04616 TC BANKCALL
008322,000169: 32,2126 20342 CADR GOMARK3
008323,000170: 32,2127 15472 TCF ENDEXT
008324,000171: 32,2130 15472 TCF ENDEXT
008325,000172: 32,2131 05472 TC ENDEXT
008326,000173:
008327,000174: 32,2132 64375 SCALEVEC VLOAD MXV
008328,000175: 32,2133 00025 VATT1
008329,000176: 32,2134 01734 REFSMMAT
008330,000177: 32,2135 72561 VXSC VSL2
008331,000178: 32,2136 24202 VSCALE
Page 209 |
008333,000180: 32,2137 53255 VAD VAD # THIS SECTION ROUNDS THE VECTOR, AND
008334,000181: 32,2140 24204 AGSRND1 # CORRECTS FOR THE FACT THAT THE AGS
008335,000182: 32,2141 24212 AGSRND2 # IS A 2 S COMPLIMENT MACHINE WHILE THE
008336,000183: 32,2142 77634 RTB # LGC IS A 1 S COMPLIMENT MACHINE.
008337,000184: 32,2143 21772 VECSGNAG
008338,000185: 32,2144 24025 STOVL VATT1
008339,000186: 32,2145 00017 RATT1
008340,000187: 32,2146 74321 MXV VXSC
008341,000188: 32,2147 01734 REFSMMAT
008342,000189: 32,2150 24200 RSCALE
008343,000190: 32,2151 53212 VSL8 VAD # AGAIN THIS SECTION ROUNDS. TWO VECTORS
008344,000191: 32,2152 24204 AGSRND1 # ARE ADDED TO DEFEAT ALSIGNAG IN THE
008345,000192: 32,2153 47055 VAD RTB # CASE OF A HIGH-ORDER ZERO COUPLED WITH
008346,000193: 32,2154 24212 AGSRND2 # A LOW ORDER NEGATIVE PART.
008347,000194: 32,2155 21772 VECSGNAG
008348,000195: 32,2156 77750 LXA,1
008349,000196: 32,2157 00024 VATT1
008350,000197: 32,2160 72130 SXA,1 LXA,1
008351,000198: 32,2161 00155 MPAC +1
008352,000199: 32,2162 00026 VATT1 +2
008353,000200: 32,2163 72130 SXA,1 LXA,1
008354,000201: 32,2164 00160 MPAC +4
008355,000202: 32,2165 00030 VATT1 +4
008356,000203: 32,2166 43530 SXA,1 RVQ
008357,000204: 32,2167 00162 MPAC +6
008358,000205:
008359,000206: 32,2170 4753 LAGSLIST = ONE
008360,000207: 32,2170 00216 V01N14 VN 0114
008361,000208: 32,2171 14400 V50N00A VN 5000
008362,000209: 32,2172 6010 V00N25 EQUALS OCT31
008363,000210: 32,2172 01420 V06N16 VN 0616
008364,000211: 32,2173 4242 V00N34 EQUALS 34DEC
008365,000212: 32,2173 14420 V50N16 VN 5016
008366,000213: 32,2174 03100 00000 TSCALE 2DEC 100 B-10 # CSEC TO SEC SCALE FACTOR
008367,000214: 32,2176 03720 20SEC DEC 2000 B-14
008368,000215: 32,2177 15077 05041 RSCALE 2DEC 3.280839 B-3 # METERS TO FEET SCALE FACTOR
008369,000216: 32,2201 24402 25724 VSCALE 2DEC 3.280839 E2 B-9 # METERS/CS TO FEET/SEC SCALE FACTOR
008370,000217: 32,2203 00000 60000 AGSRND1 2OCT 0000060000
008371,000218: 32,2205 00000 60000 2OCT 0000060000
008372,000219: 32,2207 00000 60000 2OCT 0000060000
008373,000220: 32,2211 00000 37777 AGSRND2 2OCT 0000037777
008374,000221: 32,2213 00000 37777 2OCT 0000037777
Page 210 |
008376,000223: 32,2215 00000 37777 2OCT 0000037777
008377,000224:
008378,000225: 32,2217 30,2000 SBANK= LOWSUPER # FOR SUBSEQUENT LOW 2CADRS.
008379,000226:
End of include-file AGS_INITIALIZATION.agc. Parent file is MAIN.agc