# Copyright: Public domain. # Filename: ASCENT_GUIDANCE.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: Hartmuth Gutsche <hgutsche@xplornet.com>. # Website: www.ibiblio.org/apollo. # Pages: 843-856 # Mod history: 2009-05-23 HG Transcribed from page images. # 2009-06-05 RSB Fixed a couple of typos. # 2009-06-07 RSB Corrected a typo. # # 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-061 # 16:27 JULY 14, 1969
# Page 843 BANK34 SETLOC ASCFILT BANK
EBANK= DVCNTR
COUNT* $$/ASENT
ATMAG TC PHASCHNG OCT00035 TC INTPRET
BON
FLRCS
ASCENT DLOAD DSU
ABDVCONV
MINABDV
BMN CLEAR
ASCTERM4
SURFFLAG
CLEAR SLOAD
RENDWFLG
BIT3H
DDV EXIT
ABDVCONV DXCH MPAC DXCH1/DV3 DXCH1/DV2 DXCH1/DV1 DXCH1/DV0 TC INTPRET DLOAD DAD 1/DV0 1/DV1
DAD DAD 1/DV2 1/DV3
DMP DMP
VE 2SEC(9)
SL3 PDDL
TBUP
SR1 DAD
DSU 6SEC(18) STODL TBUP
VE
SR1 DDV
TBUP
STCALL AT # Page 844
ASCENT
BIT3H OCT4
# Page 845 BANK30 SETLOC ASENT BANK COUNT* $$/ASENT
ASCENT VLOAD ABVAL
R STOVL /R/MAG
ZAXIS1
DOT SL1
V # Z.V = ZDOT*2(-8). STOVL ZDOT # ZDOT*2(-7)
ZAXIS1
VXV VSL1
UNIT/R/ # Z X UR = LAXIS*2(-2) STORE LAXIS # LAXIS*2(-1)
DOT SL1
V # L.V = YDOT*2(-8).
STCALL YDOT # YDOT * 2(-7)
YCOMP
VLOAD
GDT1/2# LOAD GDT1/2*2(-7) M/CS.
V/SC DOT 2SEC(18)
UNIT/R/ # G.UR*2(9) = GR*2(9).
PDVL VXV # STORE IN PDL(0)
UNIT/R/ # LOAD UNIT/R/ *2(-1)
V # UR*2(-1) X V*2(-7) = H/R*2(-8).
VSQ DDV # H(2)/R(2)*2(-16).
/R/MAG # H(2)/R(3)*2(9).
SL1 DAD STADR STODL GEFF # GEFF*2(10)m/CS/CS.
ZDOTD
DSU
ZDOT STORE DZDOT # DZDOT = (ZDOTD - ZDOT) * 2(7) M/CS. VXSC PDDL
ZAXIS1
YDOTD
DSU
YDOT STORE DYDOT # DYDOT = (YDOTD - YDOT) *2(7) M/CS. VXSC PDDL
LAXIS
RDOTD # Page 846
DSU
RDOT STORE DRDOT # DRDOT = (RDOTD - RDOT) * 2(7) M/CS. VXSC VAD
UNIT/R/
VAD VSL1 STADR STORE VGVECT # VG = (DRDOT)R + (DVDOT)L + (DZDOT)Z. DLOAD DMP # LOAD TGO
TGO # TGO GEFF
GEFF VXSC VSL1
UNIT/R/ # TGO GEFF UR BVSU
VGVECT # COMPENSATED FOR GEFF STORE VGVECT # STORE FOR DOWNLINK
MXV VSL1 # GET VGBODY FOR N85 DISPLAY
XNBPIP STOVL VGBODY
VGVECT
ABVAL BOFF # MAGNITUDE OF VGVECT
FLRCS # IF FLRCS=0,D0 NORMAL GUIDANCE
MAINENG
DDV # USE TGO=VG/AT WITH RCS
AT/RCS
STCALL TGO # THIS WILL BE USED ON NEXT CYCLE
ASCTERM2
MAINENG DDV PUSH# VG/VE IN PDL(0) (2)
VE
DMP BDSU # 1 - KT VG/VE
KT1
NEARONE
DMP DMP # TBUP VG(1-KT VG/VE)/VE (0)
TBUP # = TGO
DSU # COMPENSATE FOR TAILOFF
TTO STORE TGO
SR DCOMP 11D STODL TTOGO # TGO *2(-28) CS
TGO
BON DSU
IDLEFLAG
T2TEST 4SEC(17) # ( TGO - 4 )*2(-17) CS.
BMN
ENGOFF
T2TEST DLOAD
TGO
DSU BMN # IF TGO - T2 NEG., GO TO CMPONENT # Page 847
T2A
CMPONENT DLOAD DSU
TBUP
TGO
DDV CALL# 1- TGO/TBUP
TBUP
LOGSUB
SL PUSH# -L IN PDL(0) (2) 5
BDDV BDSU # -TGO/L*2(-17)
TGO
TBUP # TBUP + TGO/L = D12*2(-17) PUSH BON # STORE IN PDL(2) (4)
FLPC # IF FLPC = 1, GO TO CONST
NORATES DLOAD DSU
TGO
T3
BPL SET # FLPC=1
RATES
FLPC
NORATES DLOAD
HI6ZEROS STORE PRATE # B = 0 STORE YRATE # D = 0
GOTO
CONST # GO TO CONST
RATES DLOAD DSU
TGO 02D # TGO - D12 = D21*2(-17) PUSH SL1 # IN PDL(4) (6)
BDSU SL3 # (1/2TGO - D21)*2(-13) = E * 2(-13)
TGO # (8)
PDDL DMP # IN PDL(6)
TGO
RDOT # RDOT TGO * 2(-24)
DAD DSU # R + RDOT TGO
/R/MAG # R + RDOT TGO - RCO
RCO # MPAC = -DR *2(-24).
PDDL DMP # -DR IN PDL(8) (10)
DRDOT 04D # D21 DRDOT*2(-24)
DAD SL2 # (D21 DRDOT-DR)*2(-22) (8)
DDV DDV 06D # (D21 DRDOT-DR)/E*2(-9)
TGO STORE PRATE # B * 2(8)
BMN DLOAD# B>0 NOT PERMITTED
CHKBMAG # Page 848
HI6ZEROS
STCALL PRATE
PROK
CHKBMAG SR4 DDV # B*2(4)
TBUP # (B / TAU) * 2(21)
DSU BPL
PRLIMIT # ( B / TAU ) = 2(21) MAX.
PROK DLOAD DMP
PRLIMIT
TBUP # B MAX. * 2(4)
SL4 # BMAX*2(8) STORE PRATE
PROK DLOAD
TGO
DMP DAD # YDOT TGO
YDOT
Y # Y + YDOT TGO
DSU PDDL # Y + YDOT TGO - YCO
YCO # MPAC = - DY*(-24.) IN PDL(8) (10)
DYDOT
DMP DAD # D21 DYDOT - DY (8) 04D
SL2 DDV # (D21 DYDOT - DY)/E*2(-9)
DDV SETPD # (D21 DYDOT - DY)/E TGO*2(8)
TGO # = D*2(8) 04 STORE YRATE
CONST DLOAD DMP # LOAD B*2(8)
PRATE # B D12*2(-9) 02D
PDDL DDV # D12 B IN PDL(4) (6)
DRDOT # LOAD DRDOT*2(-7) 00D # -DRDOT/L*2(-7)
SR2 DSU # (-DRDOT/L-D12 B)=A*2(-9) (4) STADR STODL PCONS
YRATE # D*2(8)
DMP PDDL # D12 D,EXCH WITH -L IN PDL(0) (2,2)
BDDV SR2 # -DYDOT/L*2(-9)
DYDOT
DSU # (-DYDOT/L-D12 D)=C*2(-9) 00D STORE YCONS
CMPONENT SETPD DLOAD 00D 100CS
DMP
PRATE # B(T-T0)*2(-9)
DAD DDV # (A+B(T-T0))*2(-9) # Page 849
PCONS # (A+B(T-T0))/TBUP*2(8)
TBUP
SL1 DSU
GEFF # ATR*2(9) STODL ATR 100CS
DMP DAD
YRATE
YCONS # (C+D(T-T0))*2(-9)
DDV SL1
TBUP STORE ATY # ATY*2(9) VXSC PDDL # ATY UY*2(8) (6)
LAXIS
ATR VXSC VAD
UNIT/R/
VSL1 PUSH# AH*2(9) IN PDL(0) (6)
ABVAL PDDL # AH(2) IN PDL(34)
AT # AHMAG IN PDL(6) (8)
DSQ DSU # (AT(2)-AH(2))*2(18) 34D # =ATP2*2(18)
PDDL PUSH# (12)
AT
DSQ DSU # (AT(2)KR(2)-AH(2))*2(18) (10) 34D # =ATP3*2(18)
BMN DLOAD# IF ATP3 NEG,GO TO NO-ATP
NO-ATP # LOAD ATP2, IF ATP3 POS 8D
SQRT GOTO # ATP*2(9)
AIMER
NO-ATP DLOAD BDDV # KR AT/AH = KH (8) 6D VXSC# KH AG*2(9) 00D STODL00D # STORE NEW AH IN PDL(0)
HI6ZEROS
AIMER SIGN
DZDOT STORE ATP VXSC
ZAXIS1 # ATP ZAXIS *2(8).
VSL1 VAD # AT*2(0) 00D STORE UNFC/2# WILL BE OVERWRITTEN IF IN VERT. RISE.
SETPD BON 00D
FLPI
P12RET
BON # Page 850
FLVR
CHECKALT
MAINLINE VLOAD VCOMP
UNIT/R/ STODL UNWC/2
TXO
DSU BPL
PIPTIME
ASCTERM
BON
ROTFLAG
ANG1CHEK
CLRXFLAG CLEAR CLEAR
NOR29FLG # START r29 IN ASCENT PHASE.
XOVINFLG # ALLOW X-AXIS OVERRIDE
ASCTERM EXIT CA FLAGWRD9 MASK FLRCSBIT CCS A TCF ASCTERM3 TC INTPRET CALL
FINDCDUW -2
ASCTERM1 EXIT
+1CA FLAGWRD9 # INSURE THAT THE NOUN 63 DISPLAY IS MASK FLRCSBIT # BYPASSED IF WE ARE IN THE RCS TRIMMING CCS A # MODE OF OPERATION TCF ASCTERM3 CA FLAGWRD8 # BYPASS DISPLAYS IF ENGINE FAILURE IS MASK FLUNDBIT # INDICATED. CCS A TCF ASCTERM3 CAF V06N63* TC BANKCALL CADR GODSPR TCF ASCTERM3
ASCTERM2 EXIT
ASCTERM3 TCF ENDOFJOB
ASCTERM4 EXIT INHINT TC IBNKCALL # NO GUIDANCE THIS CYCLE -- HENCE ZERO CADR ZATTEROR # THE DAP COMMANDED ERRORS. TCF ASCTERM1 +1
CHECKALT DLOAD DSU
/R/MAG
/LAND/
DSU BMN # IF H LT 25K CHECK Z AXIS ORIENTATION 25KFT
CHECKYAW # Page 851
EXITVR CLEAR BON
FLVR
ROTFLAG
MAINLINE DLOAD DAD
PIPTIME 10SECS
STCALL TXO
MAINLINE
EXITVR1 CLRGO
ROTFLAG
EXITVR
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.