1475 lines
31 KiB
ArmAsm
1475 lines
31 KiB
ArmAsm
# Copyright: Public domain.
|
|
# Filename: LUNAR_LANDING_GUIDANCE_EQUATIONS.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: 798-828
|
|
# Mod history: 2009-05-23 HG Transcribed from page images.
|
|
# 2009-06-05 RSB Fixed a goofy thing that was apparently
|
|
# legal in GAP but not in yaYUL. Eliminated
|
|
# a couple of lines of code that shouldn't
|
|
# have survived from Luminary 131 to here.
|
|
# 2009-06-07 RSB Fixed 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-61
|
|
# 16:27 JULY 14, 1969
|
|
|
|
# Page 798
|
|
EBANK= E2DPS
|
|
COUNT* $$/F2DPS
|
|
|
|
# ********************************************************
|
|
# LUNAR LANDING FLIGHT SEQUENCE TABLES
|
|
# ********************************************************
|
|
|
|
# FLIGHT SEQUENCE TABLES ARE ARRANGED BY FUNCTION. THEY ARE REFERENCED USING AS AN INDEX THE REGISTER WCHPHASE:
|
|
# WCHPHASE = -1 ---> IGNALG
|
|
# WCHPHASE = 0 ---> BRAKQUAD
|
|
# WCHPHASE = 1 ---> APPRQUAD
|
|
# WCHPHASE = 2 ---> VERTICAL
|
|
|
|
#*********************************************************
|
|
|
|
# ROUTINES FOR STARTING NEW GUIDANCE PHASES:
|
|
|
|
TCF TTFINCR # IGNALG
|
|
NEWPHASE TCF TTFINCR # BRAKQUAD
|
|
TCF STARTP64 # APPRQUAD
|
|
TCF P65START # VERTICAL
|
|
|
|
# PRE-GUIDANCE COMPUTATIONS:
|
|
|
|
TCF CALCRGVG # IGNALG
|
|
PREGUIDE TCF RGVGCALC # BRAKQUAD
|
|
TCF REDESIG # APPRQUAD
|
|
TCF RGVGCALC # VERTICAL
|
|
|
|
# GUIDANCE EQUATIONS:
|
|
|
|
TCF TTF/8CL # IGNALG
|
|
WHATGUID TCF TTF/8CL # BRAKQUAD
|
|
TCF TTF/8CL # APPRQUAD
|
|
TCF VERTGUID # VERTICAL
|
|
|
|
# POST GUIDANCE EQUATION COMPUTATIONS:
|
|
|
|
TCF CGCALC # IGNALG
|
|
AFTRGUID TCF CGCALC # BRAKQUAD
|
|
TCF CGCALC # APPRQUAD
|
|
TCF STEER? # VERTICAL
|
|
|
|
# Page 799
|
|
# WINDOW VECTOR COMPUTATIONS:
|
|
|
|
TCF EXGSUB # IGNALG
|
|
WHATEXIT TCF EXBRAK # BRAKQUAD
|
|
TCF EXNORM # APPRQUAD
|
|
|
|
# DISPLAY ROUTINES:
|
|
|
|
WHATDISP TCF P63DISPS # BRAKQUAD
|
|
TCF P64DISPS # APPRQUAD
|
|
TCF VERTDISP # VERTICAL
|
|
|
|
# ALARM ROUTINE FOR TTF COMPUTATION:
|
|
|
|
TCF 1406P00 # IGNALG
|
|
WHATALM TCF 1406ALM # BRAKQUAD
|
|
TCF 1406ALM # APPRQUAD
|
|
|
|
# INDICES FOR REFERENCING TARGET PARAMETERS
|
|
|
|
OCT 0 # IGNALG
|
|
TARGTDEX OCT 0 # BRAKQUAD
|
|
OCT 34 # APPRQUAD
|
|
|
|
#************************************************************************
|
|
# ENTRY POINTS: ?GUIDSUB FOR THE IGNITION ALGORITHM, LUNLAND FOR SERVOUT
|
|
#************************************************************************
|
|
|
|
# IGNITION ALGORITHM ENTRY: DELIVERS N PASSES OF QUADRATIC GUIDANCE
|
|
|
|
?GUIDSUB EXIT
|
|
CAF TWO # N = 3
|
|
TS NGUIDSUB
|
|
TCF GUILDRET +2
|
|
|
|
GUIDSUB TS NGUIDSUB # ON SUCCEEDING PASSES SKIP TTFINCR
|
|
TCF CALCRGVG
|
|
|
|
# NORMAL ENTRY: CONTROL COMES HERE FROM SERVOUT
|
|
|
|
LUNLAND TC PHASCHNG
|
|
OCT 00035 # GROUP 5: RETAIN ONLY PIPA TASK
|
|
TC PHASCHNG
|
|
OCT 05023 # GROUP 3: PROTECT GUIDANCE WITH PRIO 21
|
|
OCT 21000 # JUST HIGHER THAN SERVICER'S PRIORITY
|
|
|
|
# Page 800
|
|
#*******************************************************************
|
|
# GUILDENSTERN: AUTO-MODES MONITOR (R13)
|
|
#*******************************************************************
|
|
|
|
COUNT* $$/R13
|
|
|
|
# HERE IS THE PHILOSOPHY OF GUILDENSTERN: ON EVERY APPEARANCE OR DISAPPEARANCE OF THE MANUAL THROTTLE
|
|
# DISCRETE TO SELECT P67 OR P66 RESPECTIVELY: ON EVERY APPEARANCE OF THE ATTITUDE-HOLD DISCRETE TO SELECT P66
|
|
# UNLESS THE CURRENT PROGRAM IS P67 IN WHICH CASE THERE IS NO CHANGE
|
|
|
|
GUILDEN EXTEND # IS UN-AUTO-THROTTLE DISCRETE PRESENT?
|
|
# STERN # RSB 2009: Not originally a comment.
|
|
READ CHAN30
|
|
MASK BIT5
|
|
CCS A
|
|
TCF STARTP67 # YES
|
|
P67NOW? TC CHECKMM # NO: ARE WE IN P67 NOW?
|
|
DEC 67
|
|
TCF STABL? # NO
|
|
STARTP66 TC FASTCHNG # YES
|
|
TC NEWMODEX
|
|
DEC66 DEC 66
|
|
EXTEND
|
|
DCA HDOTDISP # SET DESIRED ALTITUDE RATE = CURRENT
|
|
DXCH VDGVERT # ALTITUDE RATE.
|
|
STRTP66A TC INTPRET
|
|
SLOAD PUSH
|
|
PBIASZ
|
|
SLOAD PUSH
|
|
PBIASY
|
|
SLOAD VDEF
|
|
PBIASX
|
|
VXSC SET
|
|
BIASFACT
|
|
RODFLAG
|
|
STOVL VBIAS
|
|
TEMX
|
|
VCOMP
|
|
STOVL OLDPIPAX
|
|
ZEROVECS
|
|
STODL DELVROD
|
|
RODSCALE
|
|
STODL RODSCAL1
|
|
PIPTIME
|
|
STORE LASTTPIP
|
|
EXIT
|
|
CAF ZERO
|
|
TS FCOLD
|
|
TS FWEIGHT
|
|
TS FWEIGHT +1
|
|
VRTSTART TS WCHVERT
|
|
# Page 801
|
|
CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
|
|
TS WCHPHOLD
|
|
TS WCHPHASE
|
|
TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE
|
|
CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE
|
|
TC DOWNFLAG # PERMIT X-AXIS OVERRIDE
|
|
ADRES XOVINFLG
|
|
TC DOWNFLAG
|
|
ADRES REDFLAG
|
|
TCF VERTGUID
|
|
|
|
STARTP67 TC NEWMODEX # NO HARM IN "STARTING" P67 OVER AND OVER
|
|
DEC 67 # SO NO NEED FOR A FASTCHNG AND NO NEED
|
|
CAF ZERO # TO SEE IF ALREADY IN P67.
|
|
TS RODCOUNT
|
|
CAF TEN
|
|
TCF VRTSTART
|
|
|
|
STABL? CAF BIT13 # IS UN-ATTITUDE-HOLD DISCRETE PRESENT?
|
|
EXTEND
|
|
RAND CHAN31
|
|
CCS A
|
|
TCF GUILDRET # YES ALL'S WELL
|
|
|
|
P66NOW? CS MODREG
|
|
AD DEC66
|
|
EXTEND
|
|
BZF RESTART?
|
|
|
|
CA RODCOUNT # NO. HAS THE ROD SWITCH BEEN "CLICKED"?
|
|
EXTEND
|
|
BZF GUILDRET # NO. CONTINUE WITH AUTOMATIC LANDING
|
|
TCF STARTP66 # YES. SWITCH INTO THE ROD MODE.
|
|
|
|
RESTART? CA FLAGWRD1 # HAS THERE BEEN A RESTART?
|
|
MASK RODFLBIT
|
|
EXTEND
|
|
BZF STRTP66A # YES. REINITIALIZE BUT LEAVE VDGVERT AS
|
|
# IS.
|
|
|
|
TCF VERTGUID # NO: CONTINUE WITH R.O.D.
|
|
|
|
# *******************************************************************************
|
|
# INITIALIZATION FOR THIS PASS
|
|
# *******************************************************************************
|
|
|
|
COUNT* $$/F2DPS
|
|
|
|
GUILDRET CAF ZERO
|
|
TS RODCOUNT
|
|
|
|
# Page 802
|
|
+2 EXTEND
|
|
DCA TPIP
|
|
DXCH TPIPOLD
|
|
|
|
TC FASTCHNG
|
|
|
|
EXTEND
|
|
DCA PIPTIME1
|
|
DXCH TPIP
|
|
|
|
EXTEND
|
|
DCA TTF/8
|
|
DXCH TTF/8TMP
|
|
|
|
CCS FLPASS0
|
|
TCF TTFINCR
|
|
|
|
BRSPOT1 INDEX WCHPHASE
|
|
TCF NEWPHASE
|
|
|
|
# ******************************************************************
|
|
# ROUTINES TO START NEW PHASES
|
|
# ******************************************************************
|
|
|
|
P65START TC NEWMODEX
|
|
DEC 65
|
|
CS TWO
|
|
TS WCHVERT
|
|
TC DOWNFLAG # PERMIT X-AXIS OVERRIDE
|
|
ADRES XOVINFLG
|
|
TCF TTFINCR
|
|
|
|
STARTP64 TC NEWMODEX
|
|
DEC 64
|
|
CA DELTTFAP # AUGMENT TTF/8
|
|
ADS TTF/8TMP
|
|
CA BIT12 # ENABLE RUPT10
|
|
EXTEND
|
|
WOR CHAN13
|
|
TC DOWNFLAG # INITIALIZE REDESIGNATION FLAG
|
|
ADRES REDFLAG
|
|
|
|
|
|
# (CONTINUE TO TTFINCR)
|
|
|
|
# *********************************************************************************
|
|
# INCREMENT TTF/8, UPDATE LAND FOR LUNAR ROTATION, DO OTHER USEFUL THINGS
|
|
# *********************************************************************************
|
|
#
|
|
# TTFINCR COMPUTATIONS ARE AS FOLLOWS --
|
|
# Page 803
|
|
# TTF/8 UPDATED FOR TIME SINCE LAST PASS:
|
|
# TTF/8 = TTF/8 + (TPIP - TPIPOLD)/8
|
|
# LANDING SITE VECTOR UPDATED FOR LUNAR ROTATION:
|
|
# ____ ____ ____ __
|
|
# LAND = /LAND/ UNIT(LAND - LAND(TPIP - TPIPOLD) * WM)
|
|
# SLANT RANGE TO LANDING SITE, FOR DISPLAY:
|
|
# ____ _
|
|
# RANGEDSP = ABVAL(LAND - R)
|
|
|
|
TTFINCR TC INTPRET
|
|
DLOAD DSU
|
|
TPIP
|
|
TPIPOLD
|
|
SLR PUSH # SHIFT SCALES DELTA TIME TO 2(17) CSECS
|
|
11D
|
|
VXSC VXV
|
|
LAND
|
|
WM
|
|
BVSU RTB
|
|
LAND
|
|
NORMUNIT
|
|
VXSC VSL1
|
|
/LAND/
|
|
STODL LANDTEMP
|
|
EXIT
|
|
|
|
DXCH MPAC
|
|
DAS TTF/8TMP # NOW HAVE INCREMENTED TTF/8 IN TTF/8TMP
|
|
|
|
TC FASTCHNG
|
|
|
|
EXTEND
|
|
DCA TTF/8TMP
|
|
DXCH TTF/8
|
|
|
|
EXTEND
|
|
DCA LANDTEMP
|
|
DXCH LAND
|
|
EXTEND
|
|
DCA LANDTEMP +2
|
|
DXCH LAND +2
|
|
EXTEND
|
|
DCA LANDTEMP +4
|
|
DXCH LAND +4
|
|
|
|
# Page 804
|
|
TC TDISPSET
|
|
TC FASTCHNG # SINCE REDESIG MAY CHANGE LANDTEMP
|
|
|
|
BRSPOT2 INDEX WCHPHASE
|
|
TCF PREGUIDE
|
|
|
|
# *********************************************************************
|
|
# LANDING SITE PERTURBATION EQUATIONS
|
|
# *********************************************************************
|
|
|
|
REDESIG CA FLAGWRD6 # IS REDFLAG SET?
|
|
MASK REDFLBIT
|
|
EXTEND
|
|
BZF RGVGCALC # NO: SKIP REDESIGNATION LOGIC
|
|
|
|
CA TREDES # YES: HAS TREDES REACHED ZERO?
|
|
EXTEND
|
|
BZF RGVGCALC # YES: SKIP REDESIGNATION LOGIC
|
|
|
|
INHINT
|
|
CA ELINCR1
|
|
TS ELINCR
|
|
CA AZINCR1
|
|
TS AZINCR
|
|
TC FASTCHNG
|
|
|
|
CA ZERO
|
|
TS ELINCR1
|
|
TS AZINCR1
|
|
TS ELINCR +1
|
|
TS AZINCR +1
|
|
|
|
CA FIXLOC # SET PD TO 0
|
|
TS PUSHLOC
|
|
|
|
TC INTPRET
|
|
VLOAD VSU
|
|
LAND
|
|
R # ____ _
|
|
RTB PUSH # PUSH DOWN UNIT (LAND - R)
|
|
NORMUNIT
|
|
VXV VSL1
|
|
YNBPIP # ___ ____ _
|
|
VXSC PDDL # PUSH DOWN - ELINCR(YNB * UNIT(LAND - R))
|
|
ELINCR
|
|
AZINCR
|
|
VXSC VSU
|
|
YNBPIP
|
|
VAD PUSH # RESULTING VECTOR IS 1/2 REAL SIZE
|
|
|
|
# Page 805
|
|
|
|
DLOAD DSU # MAKE SURE REDESIGNATION IS NOT
|
|
0 # TOO CLOSE TO THE HORIZON.
|
|
DEPRCRIT
|
|
BMN DLOAD
|
|
REDES1
|
|
DEPRCRIT
|
|
STORE 0
|
|
REDES1 DLOAD DSU
|
|
LAND
|
|
R
|
|
DDV VXSC
|
|
0
|
|
VAD UNIT
|
|
R
|
|
VXSC VSL1
|
|
/LAND/
|
|
STORE LANDTEMP
|
|
EXIT # LOOKANGL WILL BE COMPUTED AT RGVGCALC
|
|
|
|
TC FASTCHNG
|
|
|
|
EXTEND
|
|
DCA LANDTEMP
|
|
DXCH LAND
|
|
EXTEND
|
|
DCA LANDTEMP +2
|
|
DXCH LAND +2
|
|
EXTEND
|
|
DCA LANDTEMP +4
|
|
DXCH LAND +4
|
|
|
|
TCF RGVGCALC
|
|
|
|
# *********************************************************************
|
|
# COMPUTE STATE IN GUIDANCE COORDINATES
|
|
# *********************************************************************
|
|
#
|
|
# RGVGCALC COMPUTATIONS ARE AS FOLLOWS:--
|
|
# VELOCITY RELATIVE TO THE SURFACE:
|
|
# _______ _ _ __
|
|
# ANGTERM = V + R * WM
|
|
# STATE IN GUIDANCE COORDINATES:
|
|
# ___ * _ ____
|
|
# RGU = CG (R - LAND)
|
|
# ___ * _ __ _
|
|
# VGU = CG (V - WM * R)
|
|
# Page 806 actually starts one line earlier but that would separate the markers from their variables
|
|
#
|
|
# HORIZONTAL VELOCITY FOR DISPLAY
|
|
#
|
|
# VHORIZ = 8 ABVAL (0, VG , VG )
|
|
# 2 1
|
|
# DEPRESSION ANGLE FOR DISPLAY:
|
|
# _ ____ ______
|
|
# LOOKANGL = ARCSIN(UNIT(R - LAND).XMBPIP)
|
|
|
|
CALCRGVG TC INTPRET # IN IGNALG, COMPUTE V FROM INTEGRATION
|
|
VLOAD MXV # OUTPUT AND TRIM CORRECTION TERM
|
|
VATT1 # COMPUTED LAST PASS AND LEFT IN UNFC/2
|
|
REFSMMAT
|
|
VSR1 VAD
|
|
UNFC/2
|
|
STORE V
|
|
EXIT
|
|
|
|
RGVGCALC TC INTPRET # ENTER HERE TO RECOMPUTE RG AND VG
|
|
VLOAD VXV
|
|
R
|
|
WM
|
|
VAD VSR2 # RESCALE TO UNITS OF 2(9) M/CS
|
|
V
|
|
STORE ANGTERM
|
|
MXV
|
|
CG # NO SHIFT SINCE ANGTERM IS DOUBLE SIZED
|
|
STORE VGU
|
|
PDDL VDEF # FORM (0,VG ,VG ) IN UNITS OF 2(10) M/CS
|
|
ZEROVECS # 2 1
|
|
ABVAL SL3
|
|
STOVL VHORIZ # VHORIZ FOR DISPLAY DURING P65.
|
|
R # _ ____
|
|
VSU PUSH # PUSH DOWN R - LAND
|
|
LAND
|
|
MXV VSL1
|
|
CG
|
|
STORE RGU
|
|
ABVAL
|
|
STOVL RANGEDSP
|
|
RTB DOT # NOW IN MPAC IS SINE(LOOKANGL)/4
|
|
NORMUNIT
|
|
XNBPIP
|
|
EXIT
|
|
|
|
CA FIXLOC # RESET PUSH DOWN POINTER
|
|
TS PUSHLOC
|
|
|
|
# Page 807
|
|
CA MPAC # COMPUTE LOOKANGLE ITSELF
|
|
DOUBLE
|
|
TC BANKCALL
|
|
CADR SPARCSIN -1
|
|
AD 1/2DEG
|
|
EXTEND
|
|
MP 180DEGS
|
|
TS LOOKANGL # LOOKANGL FOR DISPLAY DURING P64
|
|
|
|
BRSPOT3 INDEX WCHPHASE
|
|
TCF WHATGUID
|
|
|
|
# **************************************************************************
|
|
# TTF/8 COMPUTATION
|
|
# **************************************************************************
|
|
|
|
TTF/8CL TC INTPRETX
|
|
DLOAD*
|
|
JDG2TTF,1
|
|
STODL* TABLTTF +6 # A(3) = 8 JDG TO TABLTTF
|
|
ADG2TTF,1 # 2
|
|
STODL TABLTTF +4 # A(2) = 6 ADG TO TABLTTF
|
|
VGU +4 # 2
|
|
DMP DAD*
|
|
3/4DP
|
|
VDG2TTF,1
|
|
STODL* TABLTTF +2 # A(1) = (6 VGU + 18 VDG )/8 TO TABLTTF
|
|
RDG +4,1 # 2 2
|
|
DSU DMP
|
|
RGU +4
|
|
3/8DP
|
|
STORE TABLTTF # A(0) = -24 (RGU - RDG )/64 TO TABLTTF
|
|
EXIT # 2 2
|
|
|
|
CA BIT8
|
|
TS TABLTTF +10 # FRACTIONAL PRECISION FOR TTF TO TABLE
|
|
|
|
EXTEND
|
|
DCA TTF/8
|
|
DXCH MPAC # LOADS TTF/8 (INITIAL GUESS) INTO MPAC
|
|
CAF TWO # DEGREE - ONE
|
|
TS L
|
|
CAF TABLTTFL
|
|
TC ROOTPSRS # YIELDS TTF/8 IN MPAC
|
|
INDEX WCHPHASE
|
|
TCF WHATALM
|
|
|
|
EXTEND # GOOD RETURN
|
|
DCA MPAC # FETCH TTF/8 KEEPING IT IN MPAC
|
|
DXCH TTF/8 # CORRECTED TTF/8
|
|
|
|
# Page 808
|
|
TC TDISPSET
|
|
|
|
# (CONTINUE TO QUADGUID)
|
|
|
|
# *********************************************************************************
|
|
# MAIN GUIDANCE EQUATION
|
|
# *********************************************************************************
|
|
#
|
|
# AS PUBLISHED --
|
|
# ___ __ ___ __
|
|
# ___ ___ 6(VDG + VG) 12(RDG - RG)
|
|
# ACG = ADG + ----------- + ------------
|
|
# TTF (TTF)(TTF)
|
|
# AS HERE PROGRAMMED --
|
|
# ___ __
|
|
# 3 (1/4(RDG - RG) ___ __)
|
|
# - (------------- + VDG + VG)
|
|
# ___ 4 ( TTF/8 ) ___
|
|
# ACG = ---------------------------- + ADG
|
|
# TTF/8
|
|
|
|
QUADGUID CS TTF/8
|
|
AD LEADTIME # LEADTIME IS A NEGATIVE NUMBER
|
|
AD POSMAX # SAFEGUARD THE COMPUTATIONS THAT FOLLOW
|
|
TS L # BY FORCING -TTF*LEADTIME > OR = ZERO
|
|
CS L
|
|
AD L
|
|
ZL
|
|
EXTEND
|
|
DV TTF/8
|
|
TS BUF # - RATIO OF LAG-DIMINISHED TTF TO TTF
|
|
EXTEND
|
|
SQUARE
|
|
TS BUF +1
|
|
AD BUF
|
|
XCH BUF +1 # RATIO SQUARED - RATIO
|
|
AD BUF +1
|
|
TS MPAC # COEFFICIENT FOR VGU TERM
|
|
AD BUF +1
|
|
INDEX FIXLOC
|
|
TS 26D # COEFFICIENT FOR RDG-RGU TERM
|
|
AD BUF +1
|
|
INDEX FIXLOC
|
|
TS 28D # COEFFICIENT FOR VDG TERM
|
|
AD BUF
|
|
AD POSMAX
|
|
# Page 809
|
|
AD BUF +1
|
|
AD BUF +1
|
|
INDEX FIXLOC
|
|
TS 30D # COEFFICIENT FOR ADG TERM
|
|
|
|
CAF ZERO
|
|
TS MODE
|
|
|
|
TC INTPRETX
|
|
VXSC PDDL
|
|
VGU
|
|
28D
|
|
VXSC* PDVL*
|
|
VDG,1
|
|
RDG,1
|
|
VSU V/SC
|
|
RGU
|
|
TTF/8
|
|
VSR2 VXSC
|
|
26D
|
|
VAD VAD
|
|
V/SC VXSC
|
|
TTF/8
|
|
3/4DP
|
|
PDDL VXSC*
|
|
30D
|
|
ADG,1
|
|
VAD
|
|
AFCCALC1 VXM VSL1 # VERGUID COMES HERE
|
|
CG
|
|
PDVL V/SC
|
|
GDT/2
|
|
GSCALE
|
|
BVSU STADR
|
|
STORE UNFC/2 # UNFC/2 NEED NOT BE UNITIZED
|
|
ABVAL
|
|
AFCCALC2 STODL /AFC/ # MAGNITUDE OF AFC FOR THROTTLE
|
|
UNFC/2 # VERTICAL COMPONENT
|
|
DSQ PDDL
|
|
UNFC/2 +2 # OUT-OF-PLANE
|
|
DSQ PDDL
|
|
HIGHESTF
|
|
DDV DSQ
|
|
MASS # 2 2 2
|
|
DSU DSU # AMAXHORIZ = SQRT(ATOTAL - A - A )
|
|
BPL DLOAD # 1 0
|
|
AFCCALC3
|
|
ZEROVECS
|
|
AFCCALC3 SQRT DAD
|
|
UNFC/2 +4
|
|
# Page 810
|
|
BPL BDSU
|
|
AFCCLEND
|
|
UNFC/2 +4
|
|
STORE UNFC/2 +4
|
|
AFCCLEND EXIT
|
|
TC FASTCHNG
|
|
|
|
CA WCHPHASE # PREPARE FOR PHASE SWITCHING LOGIC
|
|
TS WCHPHOLD
|
|
INCR FLPASS0 # INCREMENT PASS COUNTER
|
|
|
|
BRSPOT4 INDEX WCHPHASE
|
|
TCF AFTRGUID
|
|
|
|
# ***********************************************************************
|
|
# ERECT GUIDANCE-STABLE MEMBER TRANSFORMATION MATRIX
|
|
# ***********************************************************************
|
|
|
|
CGCALC CAF EBANK5
|
|
TS EBANK
|
|
EBANK= TCGIBRAK
|
|
EXTEND
|
|
INDEX WCHPHASE
|
|
INDEX TARGTDEX
|
|
DCA TCGFBRAK
|
|
INCR BBANK
|
|
INCR BBANK
|
|
EBANK= TTF/8
|
|
AD TTF/8
|
|
XCH L
|
|
AD TTF/8
|
|
CCS A
|
|
CCS L
|
|
TCF EXTLOGIC
|
|
TCF EXTLOGIC
|
|
NOOP
|
|
|
|
TC INTPRETX
|
|
VLOAD UNIT
|
|
LAND
|
|
STODL CG
|
|
TTF/8
|
|
DMP* VXSC
|
|
GAINBRAK,1 # NUMERO MYSTERIOSO
|
|
ANGTERM
|
|
VAD
|
|
LAND
|
|
VSU RTB
|
|
R
|
|
NORMUNIT
|
|
# Page 811
|
|
VXV RTB
|
|
LAND
|
|
NORMUNIT
|
|
STOVL CG +6 # SECOND ROW
|
|
CG
|
|
VXV VSL1
|
|
CG +6
|
|
STORE CG +14
|
|
EXIT
|
|
|
|
# (CONTINUE TO EXTLOGIC)
|
|
#
|
|
# ***********************************************************************
|
|
# PREPARE TO EXIT
|
|
# ***********************************************************************
|
|
#
|
|
# DECIDE (1) HOW TO EXIT, AND (2) WHETHER TO SWITCH PHASES
|
|
#
|
|
EXTLOGIC INDEX WCHPHASE # WCHPHASE = 1 APPRQUAD
|
|
CA TENDBRAK # WCHPHASE = 0 BRAKQUAD
|
|
AD TTF/8
|
|
|
|
EXSPOT1 EXTEND
|
|
INDEX WCHPHASE
|
|
BZMF WHATEXIT
|
|
|
|
TC FASTCHNG
|
|
|
|
CA WCHPHOLD
|
|
AD ONE
|
|
TS WCHPHASE
|
|
CA ZERO
|
|
TS FLPASS0 # RESET FLPASS0
|
|
|
|
INDEX WCHPHOLD
|
|
TCF WHATEXIT
|
|
|
|
# ***********************************************************************
|
|
# ROUTINES FOR EXITING FROM LANDING GUIDANCE
|
|
# ***********************************************************************
|
|
#
|
|
# 1. EXGSUB IS THE RETURN WHEN GUIDSUB IS CALLED BY THE IGNITION ALGORITHM.
|
|
# 2. EXBRAK IN THE EXIT USED DURING THE BRAKING PHASE. IN THIS CASE UNIT(R) IS THE WINDOW POINTING VECTOR.
|
|
# 3. EXNORM IS THE EXIT USED AT OTHER TIMES DURING THE BURN.
|
|
# (EXOVFLOW IS A SUBROUTINE OF EXBRAK AND EXNORM CALLED WHEN OVERFLOW OCCURRED ANYWHERE IN GUIDANCE.)
|
|
|
|
EXGSUB TC INTPRET # COMPUTE TRIM VELOCITY CORRECTION TERM.
|
|
# Page 812
|
|
VLOAD RTB
|
|
UNFC/2
|
|
NORMUNIT
|
|
VXSC VXSC
|
|
ZOOMTIME
|
|
TRIMACCL
|
|
STORE UNFC/2
|
|
EXIT
|
|
|
|
CCS NGUIDSUB
|
|
TCF GUIDSUB
|
|
CCS NIGNLOOP
|
|
TCF +3
|
|
TC ALARM
|
|
OCT 01412
|
|
|
|
+3 TC POSTJUMP
|
|
CADR DDUMCALC
|
|
|
|
EXBRAK TC INTPRET
|
|
VLOAD
|
|
UNIT/R/
|
|
STORE UNWC/2
|
|
EXIT
|
|
TCF STEER?
|
|
|
|
EXNORM TC INTPRET
|
|
VLOAD VSU
|
|
LAND
|
|
R
|
|
RTB
|
|
NORMUNIT
|
|
STORE UNWC/2 # UNIT(LAND - R) IS TENTATIVE CHOICE
|
|
VXV DOT
|
|
XNBPIP
|
|
CG +6
|
|
EXIT # WITH PROJ IN MPAC 1/8 REAL SIZE
|
|
|
|
CS MPAC # GET COEFFICIENT FOR CG +14
|
|
AD PROJMAX
|
|
AD POSMAX
|
|
TS BUF
|
|
CS BUF
|
|
ADS BUF # RESULT IS 0 IF PROJMAX - PROJ NEGATIVE
|
|
|
|
CS PROJMIN # GET COEFFICIENT FOR UNIT(LAND - R)
|
|
AD MPAC
|
|
AD POSMAX
|
|
TS BUF +1
|
|
CS BUF +1
|
|
# Page 813
|
|
ADS BUF +1 # RESULT IS 0 IF PROJ - PROJMIN NEGATIVE
|
|
|
|
CAF FOUR
|
|
UNWCLOOP MASK SIX
|
|
TS Q
|
|
CA EBANK5
|
|
TS EBANK
|
|
EBANK= CG
|
|
CA BUF
|
|
EXTEND
|
|
INDEX Q
|
|
MP CG +14
|
|
INCR BBANK
|
|
EBANK= UNWC/2
|
|
INDEX Q
|
|
DXCH UNWC/2
|
|
EXTEND
|
|
MP BUF +1
|
|
INDEX Q
|
|
DAS UNWC/2
|
|
CCS Q
|
|
TCF UNWCLOOP
|
|
|
|
INCR BBANK
|
|
EBANK= PIF
|
|
|
|
STEER? CA FLAGWRD2 # IF STEERSW DOWN NO OUTPUTS
|
|
MASK STEERBIT
|
|
EXTEND
|
|
BZF RATESTOP
|
|
|
|
EXVERT CA OVFIND # IF OVERFLOW ANYWHERE IN GUIDANCE
|
|
EXTEND # DON'T CALL THROTTLE OR FINDCDUW
|
|
BZF +13
|
|
|
|
EXOVFLOW TC ALARM # SOUND THE ALARM NON-ABORTIVELY
|
|
OCT 01410
|
|
|
|
RATESTOP CAF BIT13 # ARE WE IN ATTITUDE-HOLD?
|
|
EXTEND
|
|
RAND CHAN31
|
|
EXTEND
|
|
BZF DISPEXIT # YES
|
|
|
|
TC BANKCALL # NO: DO A STOPRATE
|
|
CADR STOPRATE
|
|
|
|
TCF DISPEXIT
|
|
|
|
GDUMP1 TC THROTTLE
|
|
# Page 814
|
|
TC INTPRET
|
|
CALL
|
|
FINDCDUW -2
|
|
EXIT
|
|
|
|
# (CONTINUE TO DISPEXIT)
|
|
|
|
# ***********************************************************************
|
|
# GUIDANCE LOOP DISPLAYS
|
|
# ***********************************************************************
|
|
|
|
DISPEXIT EXTEND # KILL GROUP 3: DISPLAYS WILL BE
|
|
DCA NEG0 # RESTORED BY NEXT GUIDANCE CYCLE.
|
|
DXCH -PHASE3
|
|
|
|
+3 CS FLAGWRD8 # IF FLUNDISP IS SET, NO DISPLAY THIS PASS
|
|
MASK FLUNDBIT
|
|
EXTEND
|
|
BZF ENDLLJOB # TO PICK UP THE TAG
|
|
|
|
INDEX WCHPHOLD
|
|
TCF WHATDISP
|
|
|
|
-2 TC PHASCHNG # KILL GROUP 5
|
|
OCT 00035
|
|
|
|
P63DISPS CAF V06N63
|
|
DISPCOMN TC BANKCALL
|
|
CADR REGODSPR
|
|
|
|
ENDLLJOB TCF ENDOFJOB
|
|
|
|
P64DISPS CA TREDES # HAS TREDES REACHED ZERO?
|
|
EXTEND
|
|
BZF RED-OVER # YES: CLEAR REDESIGNATION FLAG
|
|
|
|
CS FLAGWRD6 # NO: IS REDFLAG SET?
|
|
MASK REDFLBIT
|
|
EXTEND
|
|
BZF REDES-OK # YES: DO STATIC DISPLAY
|
|
|
|
CAF V06N64 # OTHERWISE USE FLASHING DISPLAY
|
|
TC BANKCALL
|
|
CADR REFLASHR
|
|
TCF GOTOP00H # TERMINATE
|
|
TCF P64CEED # PROCEED PERMIT REDESIGNATIONS
|
|
TCF P64DISPS # RECYCLE
|
|
# Page 815
|
|
TCF ENDLLJOB
|
|
|
|
P64CEED CAF ZERO
|
|
TS ELINCR1
|
|
TS AZINCR1
|
|
|
|
TC UPFLAG # ENABLE REDESIGNATION LOGIC
|
|
ADRES REDFLAG
|
|
|
|
TCF ENDOFJOB
|
|
|
|
RED-OVER TC DOWNFLAG
|
|
ADRES REDFLAG
|
|
REDES-OK CAF V06N64
|
|
TCF DISPCOMN
|
|
|
|
|
|
VERTDISP CAF V06N60
|
|
TCF DISPCOMN
|
|
|
|
|
|
# **************************************************************************
|
|
# GUIDANCE FOR P65
|
|
# **************************************************************************
|
|
|
|
VERTGUID CCS WCHVERT
|
|
TCF P67VERT # POSITIVE NON-ZERO ---> P67
|
|
TCF P66VERT # +0
|
|
#
|
|
# THE P65 GUIDANCE EQUATION IS AS FOLLOWS --
|
|
# ____ ___
|
|
# V2FG - VGU
|
|
# ACG = ----------
|
|
# TAUVERT
|
|
|
|
P65VERT TC INTPRET
|
|
VLOAD VSU
|
|
V2FG
|
|
VGU
|
|
V/SC GOTO
|
|
TAUVERT
|
|
AFCCALC1
|
|
# Page 816
|
|
# **********************************************************
|
|
# GUIDANCE FOR P66
|
|
# **********************************************************
|
|
|
|
P66VERT TC POSTJUMP
|
|
CADR P66VERTA
|
|
|
|
P67VERT TC PHASCHNG # TERMINATE GROUP 3.
|
|
OCT 00003
|
|
|
|
TC INTPRET
|
|
VLOAD GOTO
|
|
V
|
|
VHORCOMP
|
|
|
|
SETLOC P66LOC
|
|
BANK
|
|
COUNT* $$/F2DPS
|
|
|
|
RODTASK CAF PRIO22
|
|
TC FINDVAC
|
|
EBANK= DVCNTR
|
|
2CADR RODCOMP
|
|
|
|
TCF TASKOVER
|
|
|
|
P66VERTA TC PHASCHNG # TERMINATE GROUP 3.
|
|
OCT 00003
|
|
|
|
CAF 1SEC
|
|
TC TWIDDLE
|
|
ADRES RODTASK
|
|
|
|
RODCOMP INHINT
|
|
CAF ZERO
|
|
XCH RODCOUNT
|
|
EXTEND
|
|
MP RODSCAL1
|
|
DAS VDGVERT # UPDATE DESIRED ALTITUDE RATE.
|
|
|
|
EXTEND # SET OLDPIPAX,Y,Z = PIPAX,Y,Z
|
|
DCA PIPAX
|
|
DXCH OLDPIPAX
|
|
DXCH RUPTREG1 # SET RUPTREG1,2,3 = OLDPIPAX,Y,Z
|
|
CA PIPAZ
|
|
XCH OLDPIPAZ
|
|
XCH RUPTREG3
|
|
|
|
EXTEND # SNAPSHOT TIME OF PIPA READING.
|
|
DCA TIME2
|
|
# Page 817
|
|
DXCH THISTPIP
|
|
|
|
CA OLDPIPAX
|
|
AD PIPATMPX
|
|
TS MPAC # MPAC(X) = PIPAX + PIPATMPX
|
|
CA OLDPIPAY
|
|
AD PIPATMPY
|
|
TS MPAC +3 # MPAC(Y) = PIPAY + PIPATMPY
|
|
CA OLDPIPAZ
|
|
AD PIPATMPZ
|
|
TS MPAC +5 # MPAC(Z) = PIPAZ + PIPATMPZ
|
|
|
|
CS OLDPIPAX
|
|
AD TEMX
|
|
AD RUPTREG1
|
|
TS DELVROD
|
|
CS OLDPIPAY
|
|
AD TEMY
|
|
AD RUPTREG2
|
|
TS DELVROD +2
|
|
CS OLDPIPAZ
|
|
AD TEMZ
|
|
AD RUPTREG3
|
|
TS DELVROD +4
|
|
|
|
CAF ZERO
|
|
TS MPAC +1 # ZERO LO-ORDER MPAC COMPONENTS
|
|
TS MPAC +4
|
|
TS MPAC +6
|
|
TS TEMX # ZERO TEMX, TEMY, AND TEMZ SO WE WILL
|
|
TS TEMY # KNOW WHEN READACCS CHANGES THEM.
|
|
TS TEMZ
|
|
CS ONE
|
|
TS MODE
|
|
TC INTPRET
|
|
ITRPNT1 VXSC PDDL # SCALE MPAC TO M/CS *2(-7) AND PUSH (6)
|
|
KPIP1
|
|
THISTPIP
|
|
DSU
|
|
PIPTIME
|
|
STORE 30D # 30-31D CONTAINS TIME IN CS SINCE PIPTIME
|
|
DDV PDVL # (8)
|
|
4SEC(28)
|
|
GDT/2
|
|
VSU VXSC # (6)
|
|
VBIAS
|
|
VSL2 VAD
|
|
V
|
|
VAD STADR # (0)
|
|
STOVL 24D # STORE UPDATED VELOCITY IN 24-29D
|
|
# Page 818
|
|
R
|
|
UNIT
|
|
STORE 14D
|
|
DOT SL1
|
|
24D
|
|
STODL HDOTDISP # UPDATE HDOTDISP RATE FOR NOUN 63.
|
|
30D
|
|
SL DMP
|
|
11D
|
|
HDOTDISP
|
|
DAD DSU
|
|
36D
|
|
/LAND/
|
|
STODL HCALC1 # UPDATE HCALC1 FOR NOUN 63.
|
|
HDOTDISP
|
|
BDSU DDV
|
|
VDGVERT
|
|
TAUROD
|
|
PDVL ABVAL # (2)
|
|
GDT/2
|
|
DDV SR2
|
|
GSCALE
|
|
STORE 20D
|
|
DAD # (0)
|
|
PDVL CALL # (2)
|
|
UNITX
|
|
CDU*NBSM
|
|
DOT
|
|
14D
|
|
STORE 22D
|
|
BDDV STADR # (0)
|
|
STOVL /AFC/
|
|
DELVROD
|
|
VXSC VAD
|
|
KPIP1
|
|
VBIAS
|
|
ABVAL PDDL # (2)
|
|
THISTPIP
|
|
DSU PDDL # (4)
|
|
LASTTPIP
|
|
THISTPIP
|
|
STODL LASTTPIP # (2)
|
|
DDV BDDV # (0)
|
|
SHFTFACT
|
|
PDDL DMP # (2)
|
|
FWEIGHT
|
|
BIT1H
|
|
DDV DDV
|
|
MASS
|
|
SCALEFAC
|
|
# Page 819
|
|
DAD PDDL # (4)
|
|
0D
|
|
20D
|
|
DDV DSU # (2)
|
|
22D
|
|
DMP DAD
|
|
LAG/TAU
|
|
/AFC/
|
|
PDDL DDV # (4)
|
|
MAXFORCE
|
|
MASS
|
|
PDDL DDV # (6)
|
|
MINFORCE
|
|
MASS
|
|
PUSH BDSU # (8)
|
|
2D
|
|
BMN DLOAD # (6)
|
|
AFCSPOT
|
|
DLOAD PUSH # (6)
|
|
BDSU BPL
|
|
2D
|
|
AFCSPOT
|
|
DLOAD # (4)
|
|
AFCSPOT DLOAD # (2), (4), OR (6)
|
|
SETPD # (2)
|
|
2D
|
|
STODL /AFC/ # (0)
|
|
ITRPNT2 EXIT
|
|
DXCH MPAC # MPAC = MEASURED ACCELERATION.
|
|
TC BANKCALL
|
|
CADR THROTTLE +3
|
|
TC INTPRET
|
|
VLOAD # PICK UP UPDATED VELOCITY VECTOR.
|
|
24D
|
|
VHORCOMP VSL2 VAD
|
|
DELVS
|
|
VSR2 PDVL
|
|
R
|
|
UNIT VXSC
|
|
HDOTDISP
|
|
VSL1 BVSU
|
|
ABVAL
|
|
STORE VHORIZ
|
|
EXIT
|
|
TC BANKCALL # PUT UP V06N60 DISPLAY BUT AVOID PHASCHNG
|
|
CADR DISPEXIT +3
|
|
|
|
BIT1H OCT 00001
|
|
SHFTFACT 2DEC 1 B-17
|
|
# Page 820
|
|
BIASFACT 2DEC 655.36 B-28
|
|
|
|
# *********************************************************************************
|
|
# REDESIGNATOR TRAP
|
|
# *********************************************************************************
|
|
|
|
BANK 11
|
|
SETLOC F2DPS*11
|
|
BANK
|
|
|
|
COUNT* $$/F2DPS
|
|
|
|
PITFALL XCH BANKRUPT
|
|
EXTEND
|
|
QXCH QRUPT
|
|
|
|
TC CHECKMM # IF NOT IN P64, NO REASON TO CONTINUE
|
|
DEC 64
|
|
TCF RESUME
|
|
|
|
EXTEND
|
|
READ CHAN31
|
|
COM
|
|
MASK ALL4BITS
|
|
TS ELVIRA
|
|
CAF TWO
|
|
TS ZERLINA
|
|
CAF FIVE
|
|
TC TWIDDLE
|
|
ADRES REDESMON
|
|
TCF RESUME
|
|
|
|
# REDESIGNATOR MONITOR (INITIATED BY PITFALL)
|
|
|
|
PREMON1 TS ZERLINA
|
|
PREMON2 CAF SEVEN
|
|
TC VARDELAY
|
|
REDESMON EXTEND
|
|
READ 31
|
|
COM
|
|
MASK ALL4BITS
|
|
XCH ELVIRA
|
|
TS L
|
|
CCS ELVIRA # DO ANY BITS APPEAR THIS PASS?
|
|
TCF PREMON2 # Y: CONTINUE MONITOR
|
|
|
|
CCS L # N: ANY LAST PASS?
|
|
TCF COUNT'EM # Y: COUNT 'EM, RESET RUPT, TERMINATE
|
|
# Page 821
|
|
CCS ZERLINA # N: HAS ZERLINA REACHED ZERO YET?
|
|
TCF PREMON1 # N: DIMINISH ZERLINA, CONTINUE
|
|
RESETRPT CAF BIT12 # Y: RESET RUPT. TERMINATE
|
|
EXTEND
|
|
WOR CHAN13
|
|
TCF TASKOVER
|
|
|
|
COUNT'EM CAF BIT13 # ARE WE IN ATTITUDE-HOLD?
|
|
EXTEND
|
|
RAND CHAN31
|
|
EXTEND
|
|
BZF RESETRPT # YES: SKIP REDESIGNATION LOGIC.
|
|
|
|
CA L # NO.
|
|
MASK -AZBIT
|
|
CCS A
|
|
-AZ CS AZEACH
|
|
ADS AZINCR1
|
|
CA L
|
|
MASK +AZBIT
|
|
CCS A
|
|
+AZ CA AZEACH
|
|
ADS AZINCR1
|
|
CA L
|
|
MASK -ELBIT
|
|
CCS A
|
|
-EL CS ELEACH
|
|
ADS ELINCR1
|
|
CA L
|
|
MASK +ELBIT
|
|
CCS A
|
|
+EL CA ELEACH
|
|
ADS ELINCR1
|
|
TCF RESETRPT
|
|
|
|
# THESE EQUIVALENCES ARE BASED ON GSOP CHAPTER 4, REVISION 16 OF P64LM
|
|
|
|
+ELBIT = BIT2 # -PITCH
|
|
-ELBIT = BIT1 # +PITCH
|
|
+AZBIT = BIT5
|
|
-AZBIT = BIT6
|
|
|
|
# Page 822
|
|
ALL4BITS OCT 00063
|
|
AZEACH DEC .03491 # 2 DEGREES
|
|
ELEACH DEC .00873 # 1/2 DEGREE
|
|
|
|
# ****************************************************************
|
|
# R.O.D. TRAP
|
|
# ****************************************************************
|
|
|
|
BANK 20
|
|
SETLOC RODTRAP
|
|
BANK
|
|
COUNT* $$/F2DPS # ************************
|
|
|
|
DESCBITS MASK BIT7 # COME HERE FROM MARKRUPT CODING WITH BIT
|
|
CCS A # 7 OR 6 OF CHANNEL 16 IN A; BIT 7 MEANS
|
|
CS TWO # - RATE INCREMENT, BIT 6 + INCREMENT.
|
|
AD ONE
|
|
ADS RODCOUNT
|
|
TCF RESUME # TRAP IS RESET WHEN SWITCH IS RELEASED
|
|
|
|
BANK 31
|
|
SETLOC F2DPS*31
|
|
BANK
|
|
|
|
COUNT* $$/F2DPS
|
|
|
|
# ***********************************************************************************
|
|
# DOUBLE PRECISION ROOT FINDER SUBROUTINE (BY ALLAN KLUMPP)
|
|
# ***********************************************************************************
|
|
#
|
|
# N N-1
|
|
# ROOTPSRS FINDS ONE ROOT OF THE POWER SERIES A X + A X + ... + A X + A
|
|
# N N-1 1 0
|
|
# USING NEWTON'S METHOD STARTING WITH AN INITIAL GUESS FOR THE ROOT. THE ENTERING DATA MUST BE AS FOLLOWS:
|
|
# A SP LOC-3 ADRES FOR REFERENCING PWR COF TABL
|
|
# L SP N-1 N IS THE DEGREE OF THE POWER SERIES
|
|
# MPAC DP X INITIAL GUESS FOR ROOT
|
|
#
|
|
# LOC-2N DP A(0)
|
|
# ...
|
|
# LOC DP A(N)
|
|
# LOC+2 SP PRECROOT PREC RQD OF ROOT (AS FRACT OF 1ST GUESS)
|
|
#
|
|
# Page 823
|
|
# THE DP RESULT IS LEFT IN MPAC UPON EXIT, AND A SP COUNT OF THE ITERATIONS TO CONVERGENCE IS LEFT IN MPAC+2.
|
|
# RETURN IS NORMALLY TO LOC(TC ROOTPSRS)+3. IF ROOTPSRS FAILS TO CONVERGE TO IN 8 PASSES, RETURN IS TO LOC+1 AND
|
|
# OUTPUTS ARE NOT TO BE TRUSTED.
|
|
#
|
|
# PRECAUTION: ROOTPSRS MAKES NO CHECKS FOR OVERFLOW OR FOR IMPROPER USAGE. IMPROPER USAGE COULD
|
|
# PRECLUDE CONVERGENCE OR REQUIRE EXCESSIVE ITERATIONS. AS A SPECIFIC EXAMPLE, ROOTPSRS FORMS A DERIVATIVE
|
|
# COEFFICIENT TABLE BY MULTIPLYING EACH A(I) BY I, WHERE I RANGES FROM 1 TO N. IF AN ELEMENT OF THE DERIVATIVE
|
|
# COEFFICIENT TABLE = 1 OR >1 IN MAGNITUDE, ONLY THE EXCESS IS RETAINED. ROOTPSRS MAY CONVERGE ON THE CORRECT
|
|
# ROOT NONETHELESS, BUT IT MAY TAKE AN EXCESSIVE NUMBER OF ITERATIONS. THEREFORE THE USER SHOULD RECOGNIZE:
|
|
# 1. USER'S RESPONSIBILITY TO ASSUR THAT I X A(I) < 1 IN MAGNITUDE FOR ALL I.
|
|
# 2. USER'S RESPONSIBILITY TO ASSURE OVERFLOW WILL NOT OCCUR IN EVALUATING EITHER THE RESIDUAL OR THE DERIVATIVE
|
|
# POWER SERIES. THIS OVERFLOW WOULD BE PRODUCED BY SUBROUTINE POWRSERS, CALLED BY ROOTPSRS, AND MIGHT NOT
|
|
# PRECLUDE EVENTUAL CONVERGENCE.
|
|
# 3. AT PRESENT, ERASABLE LOCATIONS ARE RESERVED ONLY FOR N UP TO 5. AN N IN EXCESS OF 5 WILL PRODUCE CHAOS.
|
|
# ALL ERASABLES USED BY ROOTPSRS ARE UNSWITCHED LOCATED IN THE REGION FROM MPAC-33 OCT TO MPAC+7.
|
|
# 4. THE ITERATION COUNT RETURNED IN MPAC+2 MAY BE USED TO DETECT ABNORMAL PERFORMANCE.
|
|
|
|
# STORE ENTERING DATA, INITIALIZE ERASABLES
|
|
ROOTPSRS EXTEND
|
|
QXCH RETROOT # RETURN ADRES
|
|
TS PWRPTR # PWR TABLE POINTER
|
|
DXCH MPAC +3 # PWR TABLE ADRES, N-1
|
|
CA DERTABLL
|
|
TS DERPTR # DER TABL POINTER
|
|
TS MPAC +5 # DER TABL ADRES
|
|
CCS MPAC +4 # NO POWER SERIES DEGREE 1 OR LESS
|
|
TS MPAC +6 # N-2
|
|
CA ZERO # MODE USED AS ITERATION COUNTER. MODE
|
|
TS MODE # MUST BE POS SO ABS WON'T COMP MPAC+3 ETC.
|
|
|
|
# COMPUTE CRITERION TO STOP ITERATING
|
|
EXTEND
|
|
DCA MPAC # FETCH ROOT GUESS, KEEPING IT IN MPAC
|
|
DXCH ROOTPS # AND IN ROOTPS
|
|
INDEX MPAC +3 # PWR TABLE ADRES
|
|
CA 5 # PRECROOT TO A
|
|
TC SHORTMP # YIELDS DP PRODUCT IN MPAC
|
|
TC USPRCADR
|
|
CADR ABS # YIELDS ABVAL OF CRITERION ON DX IN MPAC
|
|
DXCH MPAC
|
|
DXCH DXCRIT # CRITERION
|
|
|
|
# SET UP DER COF TABL
|
|
# Page 824
|
|
EXTEND
|
|
INDEX PWRPTR
|
|
DCA 3
|
|
DXCH MPAC # A(N) TO MPAC
|
|
|
|
CA MPAC +4 # N-1 TO A
|
|
|
|
DERCLOOP TS PWRCNT # LOOP COUNTER
|
|
AD ONE
|
|
TC DMPNSUB # YIELDS DERCOF = I X A(I) IN MPAC
|
|
EXTEND
|
|
INDEX PWRPTR
|
|
DCA 1
|
|
DXCH MPAC # (I-1) TO MPAC, FETCHING DERCOF
|
|
INDEX DERPTR
|
|
DXCH 3 # DERCOF TO DER TABLE
|
|
CS TWO
|
|
ADS PWRPTR # DECREMENT PWR POINTER
|
|
CS TWO
|
|
ADS DERPTR # DECREMENT DER POINTER
|
|
CCS PWRCNT
|
|
TCF DERCLOOP
|
|
|
|
# CONVERGE ON ROOT
|
|
ROOTLOOP EXTEND
|
|
DCA ROOTPS # FETCH CURRENT ROOT
|
|
DXCH MPAC # LEAVE IN MPAC
|
|
EXTEND
|
|
DCA MPAC +5 # LOAD A, L WITH DER TABL ADRES, N-2
|
|
TC POWRSERS # YIELDS DERIVATIVE IN MPAC
|
|
|
|
EXTEND
|
|
DCA ROOTPS
|
|
DXCH MPAC # CURRENT ROOT TO MPAC, FETCHING DERIVATIVE
|
|
DXCH BUF # LEAVE DERIVATIVE IN BUF AS DIVISOR
|
|
EXTEND
|
|
DCA MPAC +3 # LOAD A, L WITH PWR TABL ADRES, N-1
|
|
TC POWRSERS # YIELDS RESIDUAL IN MPAC
|
|
|
|
TC USPRCADR
|
|
CADR DDV/BDDV # YIELDS -DX IN MPAC
|
|
|
|
EXTEND
|
|
DCS MPAC # FETCH DX, LEAVING -DX IN MPAC
|
|
DAS ROOTPS # CORRECTED ROOT NOW IN ROOTPS
|
|
|
|
TC USPRCADR
|
|
CADR ABS # YIELDS ABS(DX) IN MPAC
|
|
EXTEND
|
|
# Page 825
|
|
DCS DXCRIT
|
|
DAS MPAC # ABS(DX)-ABS(DXCRIT) IN MPAC
|
|
|
|
CA MODE
|
|
MASK BIT4 # KLUMPP SAYS GIVE UP AFTER EIGHT PASSES
|
|
CCS A
|
|
BADROOT TC RETROOT
|
|
|
|
INCR MODE # INCREMENT ITERATION COUNTER
|
|
CCS MPAC # TEST HI ORDER DX
|
|
TCF ROOTLOOP
|
|
TCF TESTLODX
|
|
TCF ROOTSTOR
|
|
TESTLODX CCS MPAC +1 # TEST LO ORDER DX
|
|
TCF ROOTLOOP
|
|
TCF ROOTSTOR
|
|
TCF ROOTSTOR
|
|
ROOTSTOR DXCH ROOTPS
|
|
DXCH MPAC
|
|
CA MODE
|
|
TS MPAC +2 # STORE SP ITERATION COUNT IN MPAC+2
|
|
INDEX RETROOT
|
|
TCF 2
|
|
|
|
DERTABLL ADRES DERCOFN -3
|
|
|
|
# ****************************************************************************
|
|
# TRASHY LITTLE SUBROUTINES
|
|
# ****************************************************************************
|
|
|
|
INTPRETX INDEX WCHPHASE # SET X1 ON THE WAY TO THE INTERPRETER
|
|
CS TARGTDEX
|
|
INDEX FIXLOC
|
|
TS X1
|
|
TCF INTPRET
|
|
|
|
TDISPSET CA TTF/8
|
|
EXTEND
|
|
MP TSCALINV
|
|
DXCH TTFDISP
|
|
|
|
CA EBANK5 # TREDES BECOMES ZERO TWO PASSES
|
|
TS EBANK # BEFORE TCGFAPPR IS REACHED
|
|
EBANK= TCGFAPPR
|
|
CA TCGFAPPR
|
|
INCR BBANK
|
|
INCR BBANK
|
|
EBANK= TTF/8
|
|
# Page 826
|
|
AD TTF/8
|
|
EXTEND
|
|
MP TREDESCL
|
|
AD -DEC103
|
|
AD NEGMAX
|
|
TS L
|
|
CS L
|
|
AD L
|
|
AD +DEC99
|
|
AD POSMAX
|
|
TS TREDES
|
|
CS TREDES
|
|
ADS TREDES
|
|
TC Q
|
|
|
|
1406P00 TC P00DOO
|
|
OCT 01406
|
|
1406ALM TC ALARM
|
|
OCT 01406
|
|
TCF RATESTOP
|
|
|
|
# *********************************************************************
|
|
# SPECIALIZED "PHASCHNG" SUBROUTINE
|
|
# *********************************************************************
|
|
|
|
EBANK= PHSNAME2
|
|
FASTCHNG CA EBANK3 # SPECIALIZED 'PHASCHNG' ROUTINE
|
|
XCH EBANK
|
|
DXCH L
|
|
TS PHSNAME3
|
|
LXCH EBANK
|
|
EBANK= E2DPS
|
|
TC A
|
|
|
|
# *************************************************************************************
|
|
# PARAMETER TABLE INDIRECT ADDRESSES
|
|
# *************************************************************************************
|
|
|
|
RDG = RBRFG
|
|
VDG = VBRFG
|
|
ADG = ABRFG
|
|
VDG2TTF = VBRFG*
|
|
ADG2TTF = ABRFG*
|
|
JDG2TTF = JBRFG*
|
|
|
|
# *************************************************************************************
|
|
# LUNAR LANDING CONSTANTS
|
|
# *************************************************************************************
|
|
|
|
# Page 827
|
|
TABLTTFL ADRES TABLTTF +3 # ADDRESS FOR REFERENCING TTF TABLE
|
|
TTFSCALE = BIT12
|
|
TSCALINV = BIT4
|
|
-DEC103 DEC -103
|
|
+DEC99 DEC +99
|
|
TREDESCL DEC -.08
|
|
180DEGS DEC +180
|
|
1/2DEG DEC +.00278
|
|
PROJMAX DEC .42262 B-3 # SIN(25')/8 TO COMPARE WITH PROJ
|
|
PROJMIN DEC .25882 B-3 # SIN(15')/8 TO COMPARE WITH PROJ
|
|
V06N63 VN 0663 # P63
|
|
V06N64 VN 0664 # P64
|
|
V06N60 VN 0660 # P65, P66, P67
|
|
|
|
BANK 22
|
|
SETLOC LANDCNST
|
|
BANK
|
|
COUNT* $$/F2DPS
|
|
|
|
HIGHESTF 2DEC 4.34546769 B-12
|
|
GSCALE 2DEC 100 B-11
|
|
3/8DP 2DEC .375
|
|
3/4DP 2DEC .750
|
|
DEPRCRIT 2DEC -.02 B-1
|
|
|
|
# Page 828
|
|
# **************************************************************************
|
|
# **************************************************************************
|