Source Code
![]() |
These source-code files were transcribed from scans made from Don Eyles's personal
copy of Luminary 069. They were scanned at archive.org's Boston
facility, and the scanning was sponsored by Onno Hommes. The code was transcribed
from these scans by a team of volunteers who are referenced in the program
comments. Comments from the original source code are prefixed with a single '#' symbol,
whereas comments added later are prefixed by "##" or "###". In some cases, where
similar code blocks exist in previously-transcribed AGC programs (primarily
Luminary 99, from Apollo 11) those code blocks were used as a starting point and
then corrected to agree with the Luminary 69 scans. The full scans are available
at the Virtual AGC
project's collection at archive.org, while more-convenient reduced-size (but reduced-quality)
images are available at
the main Virtual AGC website. Report any errors noted by creating an
issue report at the Virtual AGC
project's GitHub repository. Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 069 OF AGC PROGRAM LUMINARY BY NASA 2021112-011 19:02 NOV. 25,1968Note that the date is the date of the printout, not the date of the program revision. |
009520,000002: ## Copyright: Public domain.
009521,000003: ## Filename: AGS_INITIALIZATION.agc
009522,000004: ## Purpose: The main source file for Luminary revision 069.
009523,000005: ## It is part of the source code for the original release
009524,000006: ## of the flight software for the Lunar Module's (LM) Apollo
009525,000007: ## Guidance Computer (AGC) for Apollo 10. The actual flown
009526,000008: ## version was Luminary 69 revision 2, which included a
009527,000009: ## newer lunar gravity model and only affected module 2.
009528,000010: ## This file is intended to be a faithful transcription, except
009529,000011: ## that the code format has been changed to conform to the
009530,000012: ## requirements of the yaYUL assembler rather than the
009531,000013: ## original YUL assembler.
009532,000014: ## Reference: pp. 221-225
009533,000015: ## Assembler: yaYUL
009534,000016: ## Contact: Ron Burkey <info@sandroid.org>.
009535,000017: ## Website: www.ibiblio.org/apollo/index.html
009536,000018: ## Mod history: 2016-12-13 MAS Created from Luminary 99.
009537,000019: ## 2017-01-08 HG Transcribed
009538,000020: ## 2017-01-25 RSB Proofed comment text using octopus/prooferComments
009539,000021: ## but no errors found.
009540,000022:
![]() |
Page 221 |
009542,000024:
009543,000025: # PROGRAM NAME: AGS INITIALIZATION (R47)
009544,000026:
009545,000027: # WRITTEN BY : RHODE/KILROY/FOLLETT
009546,000028:
009547,000029: # MOD NO. : 0
009548,000030: # DATE : 23 MARCH 1967
009549,000031: # MOD BY : KILROY
009550,000032:
009551,000033: # MOD NO. : 1
009552,000034: # DATE : 28 OCTOBER 1967
009553,000035: # MOD BY : FOLLETT
009554,000036:
009555,000037: # FUNCT. DESC.: (1) TO PROVIDE THE AGS ABORT ELECTRONICS ASSEMBLY(AEA) WITH THE LEM AND CSM STATE VECTORS
009556,000038: # (POSITION,VELOCITY,TIME) IN LEM IMU COORDINATES BY MEANS OF THE LGC DIGITAL DOWNLINK.
009557,000039:
009558,000040: # (2) TO ZERO THE ICDU, LGC AND AEA GIMBAL ANGLE COUNTERS SIMULTANEOUSLY IN ORDER TO ESTABLISH A
009559,000041: # COMMON ZERO REFERENCE FOR THE MEASUREMENT OF GIMBAL(EULER) ANGLES WHICH DEFINE LEM ATTITUDE
009560,000042: # (3) TO ESTABLISH THE GROUND ELAPSED TIME OF AEA CLOCK ZERO.(IF AN AEA CLOCK ZERO IS
009561,000043: # REQUESTED DURING THIS PROGRAM
009562,000044:
009563,000045: # LOG SECTION : AGS INITIALIZATION
009564,000046:
009565,000047: # CALLING SEQ : PROGRAM IS ENTERED WHEN ASTRONAUT KEYS V47E ON DSKY.
009566,000048: # R47 MAY BE CALLED AT ANY TIME EXCEPT WHEN ANOTHER EXTENDED VERB IS IN PROGRESS
009567,000049:
009568,000050: # SUBROUTINES
009569,000051: # CALLED :
009570,000052:
009571,000053: # NORMAL EXIT : ENDEXT
009572,000054:
009573,000055: # ALARM/ABORT : ALARM - BAD REFSMMAT - CODE:220
009574,000056: # OPERATOR ERROR IF V47 SELECTED DURING ANOTHER EXTENDED VERB.
009575,000057:
009576,000058: # ERASABLES
009577,000059: # USED : SAMPTIME (2) TIME OF :ENTER: KEYSTROKE
009578,000060: # AGSK (2) GROUND ELAPSED TIME OF THE AEA CLOCK :ZERO:
009579,000061: # AGSBUFF (140) CONTAINS AGS INITIALIZATION DATA (SEE :OUTPUT: BELOW)
009580,000062: # AGSWORD (1) PREVIOUS DOWNLIST SAVED HERE
009581,000063:
009582,000064: 05,2447 E4,1604 EBANK= AGSBUFF
009583,000065:
009584,000066: 40,2000 BANK 40
009585,000067: 32,2000 SETLOC R47
009586,000068: 32,2000 BANK
009587,000069:
009588,000070: 32,2015 COUNT* $$/R47
009589,000071:
009590,000072: 32,2015 34737 AGSINIT CAF REFSMBIT
009591,000073: 32,2016 70077 MASK FLAGWRD3 # CHECK REFSMFLG.
009592,000074: 32,2017 10000 CCS A
009593,000075:
![]() |
Page 222 |
009595,000077: 32,2020 02027 TC REDSPTEM # REFSMMAT IS OK
009596,000078: 32,2021 05567 TC ALARM # REFSMMAT IS BAD
009597,000079: 32,2022 00220 OCT 220
009598,000080: 32,2023 05472 TC ENDEXT
009599,000081:
009600,000082: 32,2024 00006 NEWAGS EXTEND
009601,000083: 32,2025 30014 DCA SAMPTIME # TIME OF THE :ENTER: KEYSTROKE
009602,000084: 32,2026 53421 DXCH AGSK # BECOMES NEW AEA CLOCK :ZERO:
009603,000085:
009604,000086: 32,2027 00006 REDSPTEM EXTEND
009605,000087: 32,2030 31421 DCA AGSK
009606,000088: 32,2031 53052 DXCH DSPTEMX
009607,000089: 32,2032 32202 AGSDISPK CAF V06N16
009608,000090: 32,2033 04616 TC BANKCALL # R1 = 00XXX. HRS., R2 = 000XX MIN.,
009609,000091: 32,2034 20212 CADR GOMARKF # R3 = 0XX.XX SEC.
009610,000092: 32,2035 05472 TC ENDEXT # TERMINATE RETURN
009611,000093: 32,2036 02046 TC AGSVCALC # PROCEED RETURN
009612,000094: 32,2037 44746 CS BIT6 # IS ENTER VIA A V32
009613,000095: 32,2040 60154 AD MPAC
009614,000096: 32,2041 00006 EXTEND
009615,000097: 32,2042 12024 BZF NEWAGS # YES, USE KEYSTROKE TIME FOR NEW AGSK
009616,000098:
009617,000099: 32,2043 00006 EXTEND # NO, NEW AGSK LOADED VIA V25
009618,000100: 32,2044 31052 DCA DSPTEMX # LOADED INTO DSPTEMX BY KEYING
009619,000101: 32,2045 02026 TC REDSPTEM -1 # V25E FOLLOWED BY HRS.,MINS.,SECS.
009620,000102: # DISPLAY THE NEW K
009621,000103:
009622,000104: 32,2046 06036 AGSVCALC TC INTPRET
009623,000105: 32,2047 77614 SET
009624,000106: 32,2050 01076 NODOFLAG # DONT ALLOW V37
009625,000107: 32,2051 77414 SET EXIT
009626,000108: 32,2052 02076 XDSPFLAG
009627,000109:
009628,000110: 32,2053 32202 CAF V06N16
009629,000111: 32,2054 04616 TC BANKCALL
009630,000112: 32,2055 20473 CADR EXDSPRET
009631,000113:
009632,000114: 32,2056 06036 TC INTPRET # EXTRAPOLATE LEM AND CSM STATE VECTORS
009633,000115: 32,2057 77634 RTB # TO THE PRESENT TIME
009634,000116: 32,2060 21462 LOADTIME # LOAD MPAC WITH TIME2,TIME1
009635,000117: 32,2061 34041 STCALL TDEC1 # CALCULATE LEM STATE VECTOR
009636,000118: 32,2062 27057 LEMPREC
009637,000119: 32,2063 77624 CALL # CALL ROUTINE TO CONVERT TO SM COORDS AND
009638,000120: 32,2064 64142 SCALEVEC # PROVIDE PROPER SCALING
009639,000121: 32,2065 16205 STODL AGSBUFF # (LEMPREC AND CSMPREC LEAVE TDEC1 IN TAT)
009640,000122: 32,2066 00015 TAT # TAT = TIME TO WHICH RATT1 AND VATT1 ARE
009641,000123: 32,2067 34041 STCALL TDEC1 # COMPUTED(CSEC SINCE CLOCK START B-28).
009642,000124: 32,2070 27043 CSMPREC # CALCULATE CSM STATE VECTOR FOR SAME TIME
009643,000125: 32,2071 77624 CALL
009644,000126: 32,2072 64142 SCALEVEC
009645,000127:
![]() |
Page 223 |
009647,000129: 32,2073 16213 STODL AGSBUFF +6
009648,000130: 32,2074 00015 TAT
009649,000131: 32,2075 56225 DSU DDV # CALCULATE AND STORE THE TIME
009650,000132: 32,2076 02021 AGSK
009651,000133: 32,2077 24205 TSCALE
009652,000134: 32,2100 02221 STORE AGSBUFF +12D
009653,000135: 32,2101 77776 EXIT
009654,000136:
009655,000137: 32,2102 34753 CAF LAGSLIST
009656,000138: 32,2103 54332 TS DNLSTCOD
009657,000139:
009658,000140: 32,2104 32206 CAF 20SEC # DELAY FOR 20 SEC WHILE THE AGS
009659,000141: 32,2105 04616 TC BANKCALL # DOWNLIST IS TRANSMITTED
009660,000142: 32,2106 01735 CADR DELAYJOB
009661,000143:
009662,000144: 32,2107 31324 CA AGSWORD
009663,000145: 32,2110 54332 TS DNLSTCOD # RETURN TO THE OLD DOWNLIST
009664,000146: 32,2111 34744 CAF IMUSEBIT
009665,000147: 32,2112 70074 MASK FLAGWRD0 # CHECK IMUSE FLAG.
009666,000148: 32,2113 10000 CCS A
009667,000149: 32,2114 02132 TC AGSEND # IMU IS BEING USED - DO NOT ZERO
009668,000150: 32,2115 11304 CKSTALL CCS IMUCADR # CHECK FOR IMU USAGE WHICH AVOIDS THE
009669,000151: 32,2116 12121 TCF +3 # IMUSE BIT: I.E., IMU COMPENSATION.
009670,000152: 32,2117 12125 TCF +6 # FREE. GO AHEAD WITH THE IMU ZERO.
009671,000153: 32,2120 12121 TCF +1
009672,000154: 32,2121 34363 +3 CAF TEN # WAIT .1 SEC AND TRY AGAIN.
009673,000155: 32,2122 04616 TC BANKCALL
009674,000156: 32,2123 01735 CADR DELAYJOB
009675,000157: 32,2124 12115 TCF CKSTALL
009676,000158:
009677,000159: 32,2125 04616 +6 TC BANKCALL # IMU IS NOT IN USE
009678,000160: 32,2126 16667 CADR IMUZERO # SET IMU ZERO DISCRETE FOR 320MSECS
009679,000161: 32,2127 04616 TC BANKCALL # WAIT 3 SEC FOR COUNTERS TO INCREMENT
009680,000162: 32,2130 17671 CADR IMUSTALL
009681,000163: 32,2131 02132 TC AGSEND
009682,000164: 32,2132 05516 AGSEND TC DOWNFLAG # ALLOW V37
009683,000165: 32,2133 00054 ADRES NODOFLAG
009684,000166:
009685,000167: 32,2134 32203 CAF V50N16
009686,000168: 32,2135 04616 TC BANKCALL
009687,000169: 32,2136 20220 CADR GOMARK3
009688,000170: 32,2137 15472 TCF ENDEXT
009689,000171: 32,2140 15472 TCF ENDEXT
009690,000172: 32,2141 05472 TC ENDEXT
009691,000173:
009692,000174: 32,2142 64375 SCALEVEC VLOAD MXV
009693,000175: 32,2143 00025 VATT1
009694,000176: 32,2144 01734 REFSMMAT
009695,000177: 32,2145 72561 VXSC VSL2
009696,000178: 32,2146 24212 VSCALE
009697,000179:
![]() |
Page 224 |
009699,000181: 32,2147 53255 VAD VAD # THIS SECTION ROUNDS THE VECTOR, AND
009700,000182: 32,2150 24214 AGSRND1 # CORRECTS FOR THE FACT THAT THE AGS
009701,000183: 32,2151 24222 AGSRND2 # IS A 2 S COMPLIMENT MACHINE WHILE THE
009702,000184: 32,2152 77634 RTB # LGC IS A 1 S COMPLIMENT MACHINE.
009703,000185: 32,2153 21744 VECSGNAG
009704,000186: 32,2154 24025 STOVL VATT1
009705,000187: 32,2155 00017 RATT1
009706,000188: 32,2156 74321 MXV VXSC
009707,000189: 32,2157 01734 REFSMMAT
009708,000190: 32,2160 24210 RSCALE
009709,000191: 32,2161 53212 VSL8 VAD # AGAIN THIS SECTION ROUNDS. TWO VECTORS
009710,000192: 32,2162 24214 AGSRND1 # ARE ADDED TO DEFEAT ALSIGNAG IN THE
009711,000193: 32,2163 47055 VAD RTB # CASE OF A HIGH-ORDER ZERO COUPLED WITH
009712,000194: 32,2164 24222 AGSRND2 # A LOW ORDER NEGATIVE PART.
009713,000195: 32,2165 21744 VECSGNAG
009714,000196: 32,2166 77750 LXA,1
009715,000197: 32,2167 00024 VATT1
009716,000198: 32,2170 72130 SXA,1 LXA,1
009717,000199: 32,2171 00155 MPAC +1
009718,000200: 32,2172 00026 VATT1 +2
009719,000201: 32,2173 72130 SXA,1 LXA,1
009720,000202: 32,2174 00160 MPAC +4
009721,000203: 32,2175 00030 VATT1 +4
009722,000204: 32,2176 43530 SXA,1 RVQ
009723,000205: 32,2177 00162 MPAC +6
009724,000206:
009725,000207: 32,2200 4753 LAGSLIST = ONE
009726,000208: 32,2200 00216 V01N14 VN 0114
009727,000209: 32,2201 14400 V50N00A VN 5000
009728,000210: 32,2202 6010 V00N25 EQUALS OCT31
009729,000211: 32,2202 01420 V06N16 VN 0616
009730,000212: 32,2203 4242 V00N34 EQUALS 34DEC
009731,000213: 32,2203 14420 V50N16 VN 5016
009732,000214: 32,2204 03100 00000 TSCALE 2DEC 100 B-10 # CSEC TO SEC SCALE FACTOR
009733,000215: 32,2206 03720 20SEC DEC 2000 B-14
009734,000216: 32,2207 15077 05041 RSCALE 2DEC 3.280839 B-3 # METERS TO FEET SCALE FACTOR
009735,000217: 32,2211 24402 25724 VSCALE 2DEC 3.280839 E2 B-9 # METERS/CS TO FEET/SEC SCALE FACTOR
009736,000218: 32,2213 00000 60000 AGSRND1 2OCT 0000060000
009737,000219: 32,2215 00000 60000 2OCT 0000060000
009738,000220: 32,2217 00000 60000 2OCT 0000060000
009739,000221: 32,2221 00000 37777 AGSRND2 2OCT 0000037777
009740,000222: 32,2223 00000 37777 2OCT 0000037777
009741,000223:
![]() |
Page 225 |
009743,000225: 32,2225 00000 37777 2OCT 0000037777
009744,000226:
009745,000227: 32,2227 30,2000 SBANK= LOWSUPER # FOR SUBSEQUENT LOW 2CADRS.
End of include-file AGS_INITIALIZATION.agc. Parent file is MAIN.agc