Created
February 10, 2019 00:53
-
-
Save weallwegot/4cd97a8c775f5c81d52b626df657301c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright: Public domain. | |
# Filename: INFLIGHT_ALIGNMENT_ROUTINES.agc | |
# Purpose: Part of the source code for Luminary 1A build 099. | |
# It is part of the source code for the Lunar Module's (LM) | |
# Apollo Guidance Computer (AGC), for Apollo 11. | |
# Assembler: yaYUL | |
# Contact: Ron Burkey <info@sandroid.org>. | |
# Website: www.ibiblio.org/apollo. | |
# Pages: 1249-1258 | |
# Mod history: 2009-05-26 RSB Adapted from the corresponding | |
# Luminary131 file, using page | |
# images from Luminary 1A. | |
# | |
# This source code has been transcribed or otherwise adapted from | |
# digitized images of a hardcopy from the MIT Museum. The digitization | |
# was performed by Paul Fjeld, and arranged for by Deborah Douglas of | |
# the Museum. Many thanks to both. The images (with suitable reduction | |
# in storage size and consequent reduction in image quality as well) are | |
# available online at www.ibiblio.org/apollo. If for some reason you | |
# find that the images are illegible, contact me at info@sandroid.org | |
# about getting access to the (much) higher-quality images which Paul | |
# actually created. | |
# | |
# Notations on the hardcopy document read, in part: | |
# | |
# Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 | |
# 16:27 JULY 14, 1969 | |
# Page 1249 | |
BANK 22 | |
SETLOC INFLIGHT | |
BANK | |
EBANK= XSM | |
# CALCGTA COMPUTES THE GYRO TORQUE ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION. | |
# | |
# THE INPUT IS THE DESIRED STABLE MEMBER COORDINATES REFERRED TO PRESENT STABLE MEMBER COORDINATES. THE THREE | |
# HALF-UNIT VECTORS ARE STORED AT XDC, YDC, AND ZDC. | |
# | |
# THE OUTPUTS ARE THE THREE GYRO TORQUE ANGLES TO BE APPLIED TO THE Y, Z, AND X GYROS AND ARE STORED DP AT IGC, | |
# MGC, AND OGC RESPECTIVELY. | |
COUNT* $$/INFLT | |
CALCGTA ITA DLOAD # PUSHDOWN 00-03, 16D-27D, 34D-37D | |
S2 # XDC = (XD1 XD2 XD3) | |
XDC # YDC = (YD1 YD2 YD3) | |
PDDL PDDL # ZDC = (ZD1 ZD2 ZD3) | |
HI6ZEROS | |
XDC +4 | |
DCOMP VDEF | |
UNIT | |
STODL ZPRIME # ZP = UNIT(-XD3 0 XD1) = (ZP1 ZP2 ZP3) | |
ZPRIME | |
SR1 | |
STODL SINTH # SIN(IGC) = ZP1 | |
ZPRIME +4 | |
SR1 | |
STCALL COSTH # COS(IGC) = ZP3 | |
ARCTRIG | |
STODL IGC # Y GYRO TORQUING ANGLE FRACTION OF REV. | |
XDC +2 | |
SR1 | |
STODL SINTH # SIN(MGC) = XD2 | |
ZPRIME | |
DMP PDDL | |
XDC +4 # PD00 = (ZP1)(XD3) | |
ZPRIME +4 | |
DMP DSU | |
XDC # MPAC = (ZP3)(XD1) | |
STADR | |
STCALL COSTH # COS(MGC) = MPAC - PD00 | |
ARCTRIG | |
# Page 1250 | |
STOVL MGC # Z GYRO TORQUING ANGLE FRACTION OF REV. | |
ZPRIME | |
DOT | |
ZDC | |
STOVL COSTH # COS(OGC) = ZP . ZDC | |
ZPRIME | |
DOT | |
YDC | |
STCALL SINTH # SIN(OGC) = ZP . YDC | |
ARCTRIG | |
STCALL OGC # X GYRO TORQUING ANGLE FRACTION OF REV. | |
S2 | |
# Page 1251 | |
# ARCTRIG COMPUTES AN ANGLE GIVEN THE SINE AND COSINE OF THIS ANGLE. | |
# | |
# THE INPUTS ARE SIN/4 AND COS/4 STORED UP AT SINTH AND COSTH. | |
# | |
# THE OUTPUT IS THE CALCULATED ANGLE BETWEEN +.5 AND -.5 REVOLUTIONS AND STORED AT THETA. THE OUTPUT IS ALSO | |
# AVAILABLE AT MPAC. | |
ARCTRIG DLOAD ABS # PUSHDOWN 16D-21D | |
SINTH | |
DSU BMN | |
QTSN45 # ABS(SIN/4) - SIN(45)/4 | |
TRIG1 # IF (-45,45) OR (135,-135) | |
DLOAD SL1 # (45,135) OR (-135,-45) | |
COSTH | |
ACOS SIGN | |
SINTH | |
STORE THETA # X = ARCCOS(COS) WITH SIGN(SIN) | |
RVQ | |
TRIG1 DLOAD SL1 # (-45,45) OR (135,-135) | |
SINTH | |
ASIN | |
STODL THETA # X = ARCSIN(SIN) WITH SIGN(SIN) | |
COSTH | |
BMN | |
TRIG2 # IF (135,-135) | |
DLOAD RVQ | |
THETA # X = ARCSIN(SIN) (-45,45) | |
TRIG2 DLOAD SIGN # (135,-135) | |
HIDPHALF | |
SINTH | |
DSU | |
THETA | |
STORE THETA # X = .5 WITH SIGN(SIN) - ARCSIN(SIN) | |
RVQ # (+) - (+) OR (-) - (-) | |
# Page 1252 | |
# SMNB, NBSM, AND AXISROT, WHICH USED TO APPEAR HERE, HAVE BEEN | |
# COMBINED IN A ROUTINE CALLED AX*SR*T, WHICH APPEARS AMONG THE POWERED | |
# FLIGHT SUBROUTINES. | |
# Page 1253 | |
# CALCGA COMPUTES THE CDU DRIVING ANGLES REQUIRED TO BRING THE STABLE MEMBER INTO THE DESIRED ORIENTATION. | |
# | |
# THE INPUTS ARE 1) THE NAVIGATION BASE COORDINATES REFERRED TO ANY COORDINATE SYSTEM. THE THREE HALF-UNIT | |
# VECTORS ARE STORED AT XNB, YNB, AND ZNB. 2) THE DESIRED STABLE MEMBER COORDINATES REFERRED TO THE SAME | |
# COORDINATE SYSTEM ARE STORED AT XSM, YSM, AND ZSM. | |
# | |
# THE OUTPUTS ARE THE THREE CDU DRIVING ANGLES AND ARE STORED SP AT THETAD, THETAD +1, AND THETAD +2. | |
CALCGA SETPD # PUSHDOWN 00-05, 16D-21D, 34D-37D | |
0 | |
VLOAD VXV | |
XNB # XNB = OGA (OUTER GIMBAL AXIS) | |
YSM # YSM = IGA (INNER GIMBAL AXIS) | |
UNIT PUSH # PD0 = UNIT(OGA X IGA) = MGA | |
DOT ITA | |
ZNB | |
S2 | |
STOVL COSTH # COS(OG) = MGA . ZNB | |
0 | |
DOT | |
YNB | |
STCALL SINTH # SIN(OG) = MGA . YNB | |
ARCTRIG | |
STOVL OGC | |
0 | |
VXV DOT # PROVISION FOR MG ANGLE OF 90 DEGREES | |
XNB | |
YSM | |
SL1 | |
STOVL COSTH # COS(MG) = IGA . (MGA X OGA) | |
YSM | |
DOT | |
XNB | |
STCALL SINTH # SIN(MG) = IGA . OGA | |
ARCTRIG | |
STORE MGC | |
ABS DSU | |
.166... | |
BPL | |
GIMLOCK1 # IF ANGLE GREATER THAN 60 DEGREES | |
CALCGA1 VLOAD DOT | |
ZSM | |
0 | |
STOVL COSTH # COS(IG) = ZSM . MGA | |
XSM | |
# Page 1254 | |
DOT STADR | |
STCALL SINTH # SIN(IG) = XSM . MGA | |
ARCTRIG | |
STOVL IGC | |
OGC | |
RTB | |
V1STO2S | |
STCALL THETAD | |
S2 | |
GIMLOCK1 EXIT | |
TC ALARM | |
OCT 00401 | |
TC UPFLAG # GIMBAL LOCK HAS OCCURRED | |
ADRES GLOKFAIL | |
TC INTPRET | |
GOTO | |
CALCGA1 | |
# Page 1255 | |
# AXISGEN COMPUTES THE COORDINATES OF ONE COORDINATE SYSTEM REFERRED TO ANOTHER COORDINATE SYSTEM. | |
# | |
# THE INPUTS ARE 1) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM A STORED AT STARAD. 2) THE STAR2 VECTOR | |
# REFERRED TO COORDINATE SYSTEM A STORED AT STARAD +6. 3) THE STAR1 VECTOR REFERRED TO COORDINATE SYSTEM B STORED | |
# AT LOCATION 6 OF THE VAC AREA. 4) THE STAR2 VECTOR REFERRED TO COORDINATE SYSTEM B STORED AT LOCATION 12D OF | |
# THE VAC AREA. | |
# | |
# THE OUTPUT DEFINES COORDINATE SYSTEM A REFERRED TO COORDINATE SYSTEM B. THE THREE HALF-UNIT VECTORS ARE STORED | |
# AT LOCATIONS XDC, XDC +6, XDC +12D, AND STARAD, STARAD +6, STARAD +12D. | |
AXISGEN AXT,1 SSP # PUSHDOWN 00-30D, 34D-37D | |
STARAD +6 | |
S1 | |
STARAD -6 | |
SETPD | |
0 | |
AXISGEN1 VLOAD* VXV* # 06D UA = S1 | |
STARAD +12D,1 # STARAD +00D UB = S1 | |
STARAD +18D,1 | |
UNIT # 12D VA = UNIT(S1 X S2) | |
STORE STARAD +18D,1 # STARAD +06D VB = UNIT(S1 X S2) | |
VLOAD* | |
STARAD +12D,1 | |
VXV* VSL1 | |
STARAD +18D,1 # 18D WA = UA X VA | |
STORE STARAD +24D,1 # STARAD +12D WB = UB X VB | |
TIX,1 | |
AXISGEN1 | |
AXC,1 SXA,1 | |
6 | |
30D | |
AXT,1 SSP | |
18D | |
S1 | |
6 | |
AXT,2 SSP | |
6 | |
S2 | |
2 | |
AXISGEN2 XCHX,1 VLOAD* | |
30D # X1=-6 X2=+6 X1=-6 X2=+4 X1=-6 X2=+2 | |
0,1 | |
# Page 1256 | |
VXSC* PDVL* # J=(UA)(UB1) J=(UA)(UB2) J=(UA)(UB3) | |
STARAD +6,2 | |
6,1 | |
VXSC* | |
STARAD +12D,2 | |
STOVL* 24D # K=(VA)(VB1) J=(VA)(VB2) J=(VA)(VB3) | |
12D,1 | |
VXSC* VAD | |
STARAD +18D,2 # L=(WA)(WB1) J=(WA)(WB2) J=(WA)(WB3) | |
VAD VSL1 | |
24D | |
XCHX,1 UNIT | |
30D | |
STORE XDC +18D,1 # XDC = L+J+K YDC = L+J+K ZDC = L+J+K | |
TIX,1 | |
AXISGEN3 | |
AXISGEN3 TIX,2 | |
AXISGEN2 | |
VLOAD | |
XDC | |
STOVL STARAD | |
YDC | |
STOVL STARAD +6 | |
ZDC | |
STORE STARAD +12D | |
RVQ | |
# Page 1257 | |
QTSN45 2DEC .1768 | |
.166... 2DEC .1666666667 | |
# Page 1258 (empty page) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment