Raw File
SECOND_DPS_GUIDANCE.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    SECOND_DPS_GUIDANCE.agc
## Purpose:     A section of Sunburst revision 37, or Shepatin revision 0.
##              It is part of an early development version of the software
##              for Apollo Guidance Computer (AGC) on the unmanned Lunar
##              Module (LM) flight Apollo 5. Sunburst 37 was the program
##              upon which Don Eyles's offline development program Shepatin
##              was based; the listing herein transcribed was actually for
##              the equivalent revision 0 of Shepatin.
##              This file is intended to be a faithful transcription, except
##              that the code format has been changed to conform to the
##              requirements of the yaYUL assembler rather than the
##              original YUL assembler.
## Reference:   pp. 814-850
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2017-05-24 MAS  Created from Sunburst 120.
##              2017-06-13 HG   Transcribed
##              2017-06-15 HG   Fix interpretive operand /AFC/ -> /ACF/
##              2017-06-17 MAS  Added a workaround for yaYUL calculating a
##                              fractional number off by one.
##		2017-06-23 RSB	Proofed comment text with
##				octopus/ProoferComments.
##              2021-05-30 ABS  2DEC* -> DEC for non extended address fields.

## Page 814

# PROGRAM NAME - SECOND DPS GUIDANCE

# MOD NO. - 0

# MODIFICATION BY - KLUMPP AND EYLES

# FUNCTIONAL DESCRIPTION -

#      THERE ARE TWO MODES OF OPERATION OF THE SECOND DPS GUIDANCE PROGRAM (2DPS).  PRIOR TO THE IGNITION
# SEQUENCE 2DPS IS OPERATED IN THE PRE-IGNITION MODE FOR THE PURPOSE OF PROVIDING, FOR THE IGNITION
# SEQUENCE, THE TIME OF INITIATION AND THE DIRECTION OF THRUST.  IMMEDIATELY AFTER THE IGNITION SEQUENCE
# IS COMPLETED, INCLUDING THE COMMAND OF MAXIMUM THRUST, 2DPS IS ENGAGED IN THE THRUSTING MODE FOR THE

# PURPOSE OF PROVIDING THRUST ACCELERATION MAGNITUDE AND DIRECTION COMMANDS NECESSARY TO CONDUCT THE
# SIMULATED POWERED LANDING MANEUVER.

#      PRIOR TO LAUNCH, ERASABLE MEMORY MUST BE LOADED WITH THE SEMI-UNIT NORMAL TO THE PLANE OF THE
# REQUIRED ORBIT CPT6/2, AND DATA WHICH INDIRECTLY SPECIFICIES THE NOMINAL IGNITION TIME TIGNOM.  THESE
# DATA MAY BE ADJUSTED, AS A GROUP, VIA THE UPLINK, UNTIL 200 SECONDS PRIOR TO THE TIGNOM IMPLIED BY THE
# PRE-LAUNCH LOAD OR IMPLIED BY THE UPLINK DATA, WHICHEVER IS EARLIER.  A DESCRIPTION OF THE METHOD OF
# UPDATING TIGNOM IS IN THE PROVINCE OF THE MISSION CONTROL PROGRAM (MCP) MISSION PHASE 11 -
# DPS2/FITH/APS1.  THE TARGETING IS CONTROLLED BY THE SEMI-UNIT VECTOR CPT6/2 AS DESCRIBED IN THE 206 GSOP.


#      AT APPROXIMATELY 180 SECONDS PRIOR TO TIGNOM, THE MCP ENGAGES 2DPS IN THE PRE-IGNITION MODE BY
# PROVIDING AN EXTRAPOLATED TIME AND STATE IN THE REGISTERS TET, RIGNTION, VIGNTION, AND TRANSFERRING
# CONTROL TO LOCATION PREBURN IN 2DPS.  THIS TIME AND STATE ARE AT APPROXIMATELY 50 SECONDS PRIOR TO
# TIGNOM.  (THE NAMES RIGNTION, VIGNTION, CHOSEN TO INDICATE USAGE WITH OTHER GUIDANCE PROGRAMS, ARE
# MISLEADING WITH 2DPS IN THAT THE EXTRAPOLATED STATE PROVIDED IN THESE REGISTERS IS NOT THAT EXPECTED AT
# IGNITION BUT RATHER AT 50 SECONDS PRIOR TO IGNITION.)  2DPS TRANSFERS THE CONTENTS OF TET TO PIPTIME
# AND CALLS SUBROUTINE VPATCHER WHICH TRANSFERS THE STATE TO RN, VN AND INITIALIZES FOR CALCRVG.
# USING CALCRVG AS A SUBROUTINE, AND INTERNAL SUBROUTINES IGNITN1 AND IGNITN2, 2DPS MOVES THE TIME AND
# STATE FORWARD TO A TIME GREATER THAN OR EQUAL TO TULLG-6 SECONDS AND LESS THAN OR EQUAL TO TULLG-3.8 SECONDS,
# LEAVING THIS CONSISTENT SET IN PIPTIME, RN, VN, WHERE TULLG IS THE PRECISE TIME FOR ULLAGE TO BE INITIATED
# AND IS LEFT IN THE REGISTER OF THAT NAME.  2DPS LEAVES A SEMI-UNIT VECTOR IN THE DIRECTION IN WHICH
# THRUST IS TO BE COMMANDED DURING THE IGNITION SEQUENCE IN THE REGISTER POINTVSM AND BRANCHES TO

# LOCATION RETPREB IN THE MISSION CONTROL PROGRAM.

#      USING THE DATA LEFT BY THE PRE-IGNITION MODE OF 2DPS, THE MCP ENGAGES KALCMANU TO PROPERLY
# ORIENT THE SPACECRAFT FOR THE IGNITION SEQUENCE, AND ISSUES THE WAITLIST CALLS WHICH CAUSE THE
# READACCS, SERVICER, PGNCSMON LOOP TO BE ESTABLISHED (WITH 2DPS NOT IN THE LOOP) AND PRODUCE ULLAGE,
# ENGINE IGNITION, AND FINALLY MAXIMUM THRUST.  IMMEDIATELY AFTER MAXIMUM THRUST IS COMMANDED, THE MCP
# PLACES THE 2BCADR OF BURN (EBANK= E2DPS) IN THE AVGEXIT WHICH CAUSES 2DPS TO BE ADDED TO THE READACCS,
# SERVICER, PGNCSMON LOOP IMMEDIATELY FOLLOWING CALCRVG.

#      WHEN CONTROL IS GIVEN TO 2DPS WITH THE 2BCADR OF BURN IN AVGEXIT, 2DPS OPERATES IN THE THRUSTING

# MODE.  IT GENERATES THE SEQUENCING REQUIRED TO CONDUCT THE SIMULATED POWERED LANDING MANEUVER AND ISSUES
# THE THRUST ACCELERATION MAGNITUDE AND DIRECTION COMMANDS.

#      2DPS GENERATES THE SEQUENCING BY INCREMENTING THE HIGH ORDER PART OF AVGEXIT, BY AN APPROPRIATE
# INTEGER, TO ACCOMPLISH EACH CHANGE OF 2DPS PHASE.  THE INCREMENTING OF AVGEXIT CAUSES, ON THE SUBSEQUENT

## Page 815
# PASS THROUGH 2DPS, CONTROL TO BEGIN AT A NEW POINT IN THE SECOND DPS FLITE SEQUENCE TABLE, AND
# CONSEQUENTLY THE CORRESPONDING 2DPS MODING TO BE ESTABLISHED.

#      2DPS GENERATES THE THRUST ACCELERATION MAGNITUDE AND DIRECTION COMMANDS ON THE BASIS OF THE
# CONTENTS OF PIPTIME, RN, VN, AT THE BEGINNING OF THE PASS.  TO ISSUE THE THRUST ACCELERATION DIRECTION
# COMMAND, 2DPS PLACES A SEMI-UNIT VECTOR IN THE REQUIRED DIRECTION IN THE REGISTER AXISD AND CALLS

# FINDCDUD AS A SUBROUTINE.  TO ISSUE THE MAGNITUDE COMMAND, 2DPS PLACES THE REQUIRED MAGNITUDE IN THE
# REGISTER /ACF/ AND CALLS THROTCON AS A SUBROUTINE.

#      BEFORE BUT NOT INCLUDING THE LAST PASS, 2DPS TERMINATES THE JOB PERIODICALLY STARTED BY READACCS
# BY BRANCHING TO ENDOFJOB.

#      ON THE LAST PASS 2DPS PLACES THE SEMI-UNIT VECTOR ALONG THE NORMAL TO THE DESIRED ORBITAL PLANE,
# CPT6/2, IN THE REGISTER AXISD, CALLS FINDCDUD, AND BRANCHES TO LOCATION RETBURN IN THE MCP.  THE MCP
# REMOVES 2DPS FROM THE READACCS, SERVICER, PGNCSMON LOOP AND ISSUES THE WAITLIST CALLS WHICH PRODUCE THE
# RANDOM THROTTLING.  THE MCP DOES NOT CHANGE THE CONTENTS OF AXISD SUPPLIED BY 2DPS.  CONSEQUENTLY THE
# THRUST ACCELERATION DURING RANDOM THROTTLING IS NORMAL TO THE ORBITAL PLANE.

## Page 816
# INTERFACE SPECIFICATIONS -

# SPECIFICATION           PRE-IGNITION MODE          THRUSTING MODE

# CALLING SEQUENCE -      DTCB TO PREBURN            DTCB TO BURN
#                         (EBANK= E2DPS)             (EBANK= E2DPS)

# NORMAL EXITS -          DTCB TO LOCATION           PRIOR TO LAST PASS -
#                         RETPREB (EBANK=            TC TO ENDOFJOB
#                         EMP11JOB) IN MISSION
#                         CONTROL PROGRAM.           LAST PASS -
#                                                    DTCB TO LOCATION

#                                                    RETBURN (EBANK=
#                                                    EMP11JOB) IN MISSION
#                                                    CONTROL PROGRAM

# ALARM OR ABORT EXITS -  NONE                       NONE

# ERASABLE                
#    INITIALIZATION -     CPT6/2 (IMU COORDS)        2BCADR OF BURN
#			  OTHER INITIALIZATION       (EBANK= E2DPS) MUST
#                         DONE INTERNALLY            BE IN AVGEXIT.  OTHER
#                                                    INITIALIZATION DONE IN
#                                                                         N PRE-

#                                                    IGNITION MODE.

# INPUTS -                TET                        PIPTIME
#                         RIGNTION                   RN
#                         VIGNTION                   VN

# OUTPUTS -               PIPTIME                    AXISD
#                         RN                         /ACF/
#                         VN
#                         TULLG

#                         POINTVSM

# ERASABLES -             AMEMORY THROUGH            SAME
#                         AMEMORY +217 OCT
#                         PLUS 6 FOR CPT6/2 (NOT
#                         YET ASSIGNED)

# SUBROUTINES CALLED -    ROOTPSRS                   ROOTPSRS
#                         VPATCHER                   FINDCDUD
#                         CALCRVG                    THROTCON

## Page 817
                BANK            22
                EBANK=          E2DPS
# ************************************************************************
# INITIALIZATION OF SECOND DPS GUIDANCE - PREBURN
# ************************************************************************

PREBURN         =               INIT2DPS
INIT2DPS        TC              PRETINIT                # INITIALIZES INTERPRETER


# CLEAR ORBITAL INTEGRATION VARIABLES FROM REGISTERS IN COMMON WITH 2DPS

                TC              INTPRET
                DLOAD
                                TET                     # EXTRAPOLATED TIME FROM ORBITAL INTEGRATN
                STCALL          PIPTIME                 # TIME REGISTER OF PIPASR
                                VPATCHER                # TRANSFERS RIGNTION, VIGNTION TO RN, VN,
                EXIT                                    # AND DUPLICATES FUNCTIONS OF NORMLIZE
                TC              PHASCHNG                # PREVENTS REREADING ORBITAL INTEGRATION

 +402           OCT             04022                   # VARIABLES AFTER WRITING OVER THEM

# COMMON REGISTERS ARE CLEARED

                TC              INTPRET
                DLOAD
                                IGNALGL
                STOVL           AVGEXIT                 # SET UP RETURN ADDRESS IN AVGEXIT
                                ZEROPOS
                STORE           GDOTM1                  # DERIVATIVE OF G FOR USE BY IGNITN1
                STODL           UNAFC/2
                                ZEROPOS

                STORE           TTF/4TMP                # ZERO AS IF COMING FROM PREVIOUS PHASE
                EXIT
                CA              ZEROPOS
                TS              FLPASS0                 # SHOWS THIS IS INITIAL PASS THIS PHASE
                TC              XTRTPIP                 # SETS TPIP EXTRAPOLATED
                CA              POSMAX
                TS              /AFC/                   # FORCES INITIALIZATION OF COUNTFC
                TS              /AFC/           +1      # ONLY REASON: TO ASSURE GOOD PARITY
                TS              COUNTFCT                # ONLY REASON: TO ASSURE GOOD PARITY
                TC              AVGEXIT                 # RETURNS TO APPROPRIATE LOCATION IN 2DPS

## Page 818
# ************************************************************************
# SECOND DPS FLITE SEQUENCE TABLE
# ************************************************************************

# INDIRECT ADDRESSES

BURN            =               QUAD0X
BRTTFNU         =               1
PARL            =               2
TBRL            =               3
TTF/4CR         =               4
BRXEND          =               5

IGNALG          TCF             TTFINCR
                TCF             ADTTFNU                 # AS IF COMING FROM PREVIOUS PHASE
                OCT             00000
                ADRES           TBRIGAL
                DEC             -1.5            E2 B-15 # -1.5 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXIGEND

QUAD0X          TCF             TTFINCR
                TCF             RETTTFNU                # AS IF CONTINUING PREBURN PHASE
                OCT             00000

                ADRES           TBRQUAD
                DEC             -045            E2 B-15 # -045 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXQDLIN

QUAD0F          TCF             TTFINCR
                TCF             ADTTFNU
                OCT             00027
                ADRES           TBRQUAD
                DEC             -3.0            E2 B-15 # -3.0 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXQDLIN

LING0F          TCF             LSETEVN

                TCF             RETTTFNU
                OCT             00027
                ADRES           TBRLING
                DEC             -.50            E2 B-15 # -.50 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXQDLIN

LING1F          TCF             LSETODD
                TCF             ADTTFNU
                OCT             00056
                ADRES           TBRLING

                DEC             -.50            E2 B-15 # -.50 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXQDLIN

QUAD2F          TCF             TTFINCR
                TCF             ADTTFNU

## Page 819
                OCT             00065
                ADRES           TBRQUAD
                DEC             -3.0            E2 B-15 # -3.0 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXQDLIN

LING2F          TCF             LSETEVN

                TCF             RETTTFNU
                OCT             00065
                ADRES           TBRLING
                DEC             -.50            E2 B-15 # -.50 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXQDLIN

LING3F          TCF             LSETODD
                TCF             ADTTFNU
                OCT             00114
                ADRES           TBRLING
## The following line is supposed to read "DEC -.25 E2 B-15", which is supposed to
## assemble to the octal 77763 ... but actually assembles to 77762.  For the present,
## it is being hard-coded as "OCT 77763" as a workaround.
                OCT             77763                   # -.25 SECONDS, TTF UNITS, COMPARES TTF/4
                TCF             EXFINAL




# ************************************************************************
# SECOND DPS ROAD MAPS (BRANCH TABLES)
# ************************************************************************

# INDIRECT ADDRESSES

BRIGN1          =               0

BRLING          =               1
BRIGN2          =               2
BRXMID          =               3

TBRIGAL         TCF             IGNITN1
                TCF             TTF/4CL
                TCF             IGNITN2
                TCF             EXIGMID

TBRQUAD         TCF             RETIGN1
                TCF             TTF/4CL
                TCF             RETIGN2

                TCF             EXQDLIN

TBRLING         TCF             RETIGN1
                TCF             LINGUID
                TCF             RETIGN2
                TCF             EXQDLIN

## Page 820
# ************************************************************************
# INITIALIZATION FOR EACH PASS
# ************************************************************************

# NTLZPASS SETS INDICES, FILLS TPIPOLD, TPIP, R, V EVERY PASS; BRANCHES TO IGNITN1, ADTTFNU WHEN APPROPRIATE.

NTLZPASS        EXTEND
                QXCH            RETNTLZ

                TC              PRETINIT                # INITIALIZES INTERPRETER
# SET INDICES

                EXTEND
                INDEX           AVGEXIT
                DCA             PARL                    # LOADS ADRESES OF PARMTR AND BRANCH TABLS
                DXCH            NDX2DPS
                EXTEND
                DCS             NDX2DPS
                INDEX           FIXLOC
                DXCH            X1                      # LOADS BOTH INTRP NDX REGS, NEEDED OR NOT

# FILL TPIPOLD AND TPIP

                EXTEND
                DCA             TPIP

                DXCH            TPIPOLD
                TC              PHASCHNG                # PROTECT TPIPOLD AND
 +402           OCT             04022                   # PREVENT RETURNING TO PREVIOUS PROGRAM
                EXTEND
                DCA             PIPTIME
                DXCH            TPIP

# FILL R AND V

                TC              INTPRET

                VLOAD
                                RN
                STOVL           R                       # RN TO R WITHOUT RESCALING
                                VN
                VSR2
                STORE           V                       # VN TO V WITH SCALING ADJUSTMENT
                EXIT

# IGNITN1 AND ADTTFNU BRANCH DECISIONS

                INDEX           NDXBR
                TCF             BRIGN1                  # TO IGNITN1 WHEN APPROPRIATE

RETIGN1         TC              PHASCHNG                # RETURN HERE WHETHER OR NOT DO IGNITN1.
 +402           OCT             04022                   # PROTECT TTF/4TMP AS USED BY IGNITN1 FROM

## Page 821
                                                        # WIPEOUT BY ADTTFNU AND TTFINCR. ALSO
                                                        # PROTECT RTEMP, VTEMP FROM RS, VS (SHARE)

                CCS             FLPASS0
                TCF             TTFINCR         +1      # ON OTHER THAN FIRST PASS IN ANY PHASE.
                INDEX           AVGEXIT
                TCF             BRTTFNU                 # TO ADTTFNU WHEN APPROPRIATE


# ADD TTF/4NU TO TTF/4 FROM LAST PASS

ADTTFNU         EXTEND
                DCA             TTF/4
                DXCH            TTF/4TMP
                INDEX           NDX2DPS
                CA              TTF/4NU
                ADS             TTF/4TMP
                TC              PHASCHNG                # PROTECT TTF/4
 +402           OCT             04022

                EXTEND
                DCA             TTF/4TMP
                DXCH            TTF/4                   # RENEWED TTF/4

                TC              PHASCHNG                # PROTECT TTF/4TMP FROM WIPEOUT BY TTFINCR
 +402           OCT             04022
RETTTFNU        TC              RETNTLZ



# ************************************************************************
# INCREMENT TTF/4

# ************************************************************************

TTFINCR         TC              NTLZPASS
 +1             EXTEND
                DCS             TPIPOLD
                DXCH            MPAC
                EXTEND
                DCA             TPIP
                DAS             MPAC
                CA              TSCALE

                TC              DMPNSUB                 # (TPIP-TPIPOLD)/4 TO MPAC, TTF UNITS

                EXTEND
                DCA             TTF/4
                DAS             MPAC                    # YIELDS INCREMENTED TTF/4 IN MPAC
                DXCH            MPAC
                DXCH            TTF/4TMP
                TC              PHASCHNG                # PROTECT TTF/4
 +402           OCT             04022
                EXTEND

## Page 822
                DCA             TTF/4TMP

                DXCH            TTF/4                   # INCREMENTED TTF/4



# ************************************************************************
# SET UP STATE IN LOCAL, PLANE, SPHERICAL COORDINATES
# ************************************************************************

STUP2DPS        TC              INTPRET
                VLOAD           UNIT
                                R
                STOVL           CLT/2                   # DEFINITION OF MATRIX CLT/2

                                CPT6/2
                VXV             UNIT
                                CLT/2
                STOVL           CLT/2           +6
                                CLT/2
                VXV             VSL1
                                CLT/2           +6
                STOVL           CLT/2           +14
                                V
                MXV             VSL1

                                CLT/2                   # -      *     -
                STOVL           VL                      # VL = 2 CLT/2 V
                                R
                DOT             SL1
                                CPT6/2                  #         - -
                STOVL           RP2                     # RP2 = 2 R.CPT6/2
                                R
                VXV             DOT
                                V
                                CPT6/2
                SL1                                     #          - - -
                STOVL           MAP2                    # MAP2 = 2 R*V.CPT6/2

                                R
                ABVAL                                   #                 -
                STODL           RLENGTH                 # RLENGTH = ABVAL(R)
                                RP2
                DSQ             PDDL
                                RLENGTH
                DSQ             DSU
                SQRT                                    #                  2    2
                STODL           RC                      # RC = SQRT(RLENGTH -RP2 )
                                RLENGTH                 #               -

                STODL           RS                      # DEFINITION OF RS, FIRST COMPONENT
                                RC
                DDV
                                RLENGTH
                STODL           CRS2                    # COSINE (RS2) = RC/RLENGTH

## Page 823
                                RP2
                DDV
                                RLENGTH
                STODL           SRS2                    # SINE (RS2) = RP2/RLENGTH
                                RP2
                DDV

                                RC
                STODL           TRS2                    # TANGENT (RS2) = RP2/RC
                                SRS2
                SR1             ARCSIN
                DMP             SL3
                                PI/4                    #               -
                STODL           RS              +4      # DEFINITION OF RS, THIRD COMPONENT
                                VL              +4
                DDV             PDDL                    # THIS PUSH DOWN IS FOR 3RD COMP OF VS.
                                RLENGTH
                                VL              +2
                DDV             PDDL                    # THIS PUSH DOWN IS FOR 2ND COMP OF VS.

                                RC
                                VL
                VDEF                                    # DEFINITION OF SPHERICAL VELOCITY VECTOR
                STODL           VS
                                VS              +2
                DSQ
                DMP             DMP
                                SRS2
                                CRS2
                PDDL            DMP

                                VS              +4
                                VS
                DDV             SL1
                                RLENGTH
                DAD             DCOMP
                PDDL            DMP                     # THIS PUSH DOWN IS FOR 3RD COMP OF ASPRT.
                                VS              +2
                                VS
                DDV
                                RLENGTH
                PDDL            DMP
                                TRS2

                                VS              +4
                DMP
                                VS              +2
                DSU             SL1
                PDDL            DSQ                     # THIS PUSH DOWN IS FOR 2ND COMP OF ASPRT.
                                RLENGTH
                BDDV
                                MUEARTH
                PDDL            DSQ
                                VS              +4

## Page 824
                DMP                                     #                    -
                                RLENGTH                 #       THIS MONSTER ASPRT REPRESENTS

                PDDL            DSQ                     #       INCIDENTAL ACCELERATIONS; DUE
                                CRS2                    #       TO GRAVITY, CORIOLIS FORCES,
                PDDL            DSQ                     #       AND SO FORTH.
                                VS              +2
                DMP             DMP
                                RLENGTH
                DAD             DSU
                VDEF                                    # DEFINITION OF ASPRT
                STORE           ASPRT
                EXIT

                CA              ZERO                    #       SECOND COMPONENTS
                TS              RS              +2      #       OF RS AND VS ARE
                TS              RS              +3      #       ZEROED HERE TO PREVENT
                TS              VS              +2      #       OVERFLOW TROUBLE IN
                TS              VS              +3      #       THE ACS EQUATION.
                TC              PHASCHNG                # TIME ONLY?
 +402           OCT             04022
                INDEX           NDXBR
                TCF             BRLING                  # POSSIBLE BRANCH TO LINEAR GUIDANCE

## Page 825
# ************************************************************************
# TTF/4 COMPUTATION
# ************************************************************************

TTF/4CL         EXTEND
                INDEX           NDX2DPS
                DCA             JDS2
                DXCH            TABLTTF         +6      # A(3) = JDS2 TO TABLTTF

                EXTEND
                INDEX           NDX2DPS
                DCA             ADS             +4
                DDOUBL
                DXCH            MPAC
                CA              SP3/4
                TC              SHORTMP                 # LEAVING  A(2) IN MPAC
                DXCH            MPAC
                DXCH            TABLTTF         +4      # A(2) = (6 ADS2)/4 TO TABLTTF
                CA              BIT8

                TS              TABLTTF         +10     # FRACTIONAL PRECISION FOR TTF TO TABLE
                EXTEND
                DCA             VS              +4
                DXCH            MPAC
                CA              SP3/8
                TC              SHORTMP                 # YIELDS 6/16 VS2 IN MPAC
                EXTEND
                INDEX           NDX2DPS
                DCA             VDS             +4
                DDOUBL
                DXCH            MPAC
                DXCH            TABLTTF         +2      # STORE 6/16 VS2 IN TABLTTF

                CA              SP9/16
                TC              SHORTMP                 # YIELDS 18/16 VDS2 IN MPAC
                EXTEND
                DCS             RS              +4
                DXCH            MPAC                    # -RS2 TO MPAC, FETCHING 18/16 VDS2
                DAS             TABLTTF         +2      # A(1) = (6 VS2+18 VDS2)/16

                EXTEND
                INDEX           NDX2DPS
                DCA             RDS             +4

                DAS             MPAC                    # YIELDS -RS2+RDS2 IN MPAC
                CA              SP3/8
                TC              SHORTMP
                EXTEND
                DCA             MPAC
                DXCH            TABLTTF                 # A(0)  =-24(RS2-RDS2)/64

                INHINT                                  # SET INHIBITED LOOP TO STORE FOR DWNLINK
                CAF             ELEVEN                  # INITIALIZE INDEX TO DEC 11
RVSTOR          TS              RUPTREG1

## Page 826
                INDEX           RUPTREG1

                CA              RN1
                INDEX           RUPTREG1
                TS              RN                      # STORE UPDATED RN, VN
                CCS             RUPTREG1
                TCF             RVSTOR
                EXTEND
                DCA             PIPTIMET
                DXCH            PIPTIME                 # UPDATED PIPTIME
                EXTEND
                DCA             PIPTIME
                DXCH            STATIME                 # STATE TIME FOR DWNLINK
                RELINT

                TC              PHASCHNG                # TIME ONLY?
 +402           OCT             04022



# ************************************************************************
# QUADRATIC GUIDANCE - SPHERICAL ACCELERATION AS QUADRATIC TIME FUNCTION
# ************************************************************************

                                                        #  -
                                                        #  ACS EQUATION IS PROGRAMMED LIKE THIS:
                                                        #                        -  -
                                                        #          -  -      1/2(RS-RDS)
                                                        #         (VS+VDS) - -----------
                                                        #   -                   TTF/4      -
                                                        #   ACS = ---------------------- + ADS
                                                        #               2/3(TTF/4)

                TC              INTPRET
                DLOAD           DMP
                                TTF/4
                                2DPS2/3

                PDVL            VSU*
                                RS
                                RDS,1
                VSR1            V/SC
                                TTF/4
                PDVL            VAD*
                                VS
                                VDS,1
                VSU             V/SC
                VAD*
                                ADS,1
                STORE           ACS                     # BEHOLD, UNWORTHY MORTAL
                VSU
                                ASPRT                   # -      -     -
                STODL           AFCS                    # AFCS = ACS - ASPRT

## Page 827
                                RC
                DSQ             DMP
                                TTF/4
                PDDL            DSU
                                MAP2
                                MADP2

                SR2
                DDV             STADR                   #                           2
                STODL           AFCS            +2      # AFCS  = 1/4(MAP -MADP )/RC (TTF/4)
                                AFCS            +4      #     1          2     2



# ************************************************************************
# THRUST ACCEL POINTING AND MAGNITUDE COMMANDS - DUE TO QUAD OR LINR GUID
# ************************************************************************

AFCCALC         DMP             PDDL                    # COMES HERE FROM LINGUID.

                                RLENGTH
                                AFCS            +2
                DMP             PDDL
                                RC
                                AFCS
                VDEF            VXM
                                CLT/2
                VSL1                                    # -                                     *
                STORE           AFC                     # AFC = 2(AFCS , RC AFCS ,RLENGTH AFCS )CLT/2
                UNIT                                    #             0         1             2

                STODL           UNAFC/2
                                36D                     # MAGNITUDE OF AFC, /AFC/
                STORE           /AFC/                   # FOR IGNITION ALGORITHM
                SR1R                                    # CONVERTS /AFC/ TO THROTCON UNITS, /ACF/
                STORE           /ACF/                   # FOR THROTTLE CONTROL SUBR THROTCON
                EXIT
                INDEX           NDXBR
                TCF             BRIGN2

 -3             TS              OVFIND                  # RETURN FROM TTF/4 OVERFLOW
 -2             CA              FIVE                    # RETURN RESETTING COUNTFC
 -1             TS              COUNTFCT                # RETURN DECREMENTING COUNTFC

RETIGN2         TC              PHASCHNG                # RETURN (NORMAL) FROM IGNITN2
 +402           OCT             04022                   # PREVENT GOING FAR BACK IN 2DPS AFTR EXIT



# ************************************************************************
# PREPARE TO EXIT
# ************************************************************************

                INCR            FLPASS0                 # INCR FIRST PASS FLAG. REPEATS ARE OK.

## Page 828
                INDEX           AVGEXIT
                CS              TTF/4CR

                AD              TTF/4
                EXTEND
                INDEX           NDXBR
                BZMF            BRXMID                  # CONTINUE PRESENT PHASE

                CA              AVGEXIT                 # PREPARE FOR NEW PHASE
                TS              AVGXTEMP                # TEMPORARY PROTECTION FOR AVGEXIT
                TC              PHASCHNG                # PROTECT AVGEXIT
 +402           OCT             04022
                CA              AVGXTEMP

                AD              SIX
                TS              AVGEXIT
                CA              ZERO
                TS              FLPASS0                 # RESET FLAG INDICATING PASS ZERO (FIRST)
                INDEX           AVGXTEMP
                TCF             BRXEND

## Page 829
# ************************************************************************
# ROUTINES FOR EXITING FROM SECOND DPS GUIDANCE. THESE ARE:
# ************************************************************************

# 1.       EXIGMID CALLS CALCRVG AS AN INTERPRETIVE SUBROUTINE UP UNTIL BUT NOT INCLUDING THE LAST PASS DURING
#          THE PREBURN PHASE. UPON RETURN EXIGMID RESTARTS 2DPS.

# 2.       EXIGEND IS USED ON THE LAST PASS DURING PREBURN. IT SETS UP FOR KALCMANU, FOR THE SUBSEQUENT 2DPS

#          BURN, AND EXITS TO THE MISSION CONTROL PROGRAM.

# 3.       EXQDLIN IS USED TO TERMINATE EACH PASS UP UNTIL BUT NOT INCLUDING THE LAST PASS ON ALL 2DPS BURN
#          PHASES. EXQDLIN OBTAINS ATTITUDE AND THROTTLE CONTROL AND TERMINATES THE JOB.

# 4.       EXFINAL IS THE FINAL 2DPS EXIT. IT SETS UP THE ATTITUDE COMMAND FOR RANDOM THROTTLING, OBTAINS
#          ATTITUDE AND THROTTLE CONTROL, AND EXITS TO THE MISSION CONTROL PROGRAM.



# EXIGMID SETS UP FOR CALCRVG TO MOVE STATE FORWARD A SPECIFIED TIME, INITIALIZES THE INTERPRETER, CALLS CALCRVG
# AS AN INTERPRETIVE SUBROUTINE, AND UPON RETURN SETS UP FOR IGNALG AND BRANCHES INDIRECTLY THERETO.

EXIGMID         TC              PRETINIT                # INITIALIZES INTERPRETER FOR CALCRVG
                                                        # SUCCEEDING CODING MUST NOT UNDO

                TC              INTPRET
                DLOAD           DAD
                                PIGNALG
                                PIPTIME
                STOVL           PIPTIMET                # UPDATED PIPTIME TEMPORARY STORAGE
                                ZEROPOS
                STCALL          DELV                    # DELV = 0

                                CALCRVG                 # STEPS FORWARD IN TIME LEAVING RN1, VN1
                EXIT

                CA              E2DPSL                  # ASSURE CORRECT EBANK BEFORE
                TS              EBANK                   # DOING PHASCHNG
                TC              PHASCHNG                # PROTECT PIPTIME. PREVENT REDOING CALCRVG
 +402           OCT             04022
                TC              INTPRET
                DLOAD
                                PIPTIMET

                STOVL           PIPTIME                 # UPDATED PIPTIME
                                RN1
                STOVL           RN                      # UPDATED POSITION
                                VN1
                STORE           VN                      # UPDATED VELOCITY
                EXIT
                TC              AVGEXIT                 # RETURNS TO APPROPRIATE LOCATION IN 2DPS.

## Page 830

# EXIGEND EXTRAPOLATES UNAFC/2 TO TTF/4 = 0, SETS UP FOR MISSION CONTROL PROGRAM, SETS UP FOR THE SUCCEEDING

# BRAKING PHASE, AND EXITS TO THE MISSION CONTROL PROGRAM.

# EXTRAPOLATE UNAFC/2

# UNAFC/2 = UNAFC/2+(UNAFC/2-UNAFC/2O)(TTF)/(TPIPOLD-TPIP)

EXIGEND         EXTEND
                DCA             TPIPOLD
                DXCH            MPAC
                EXTEND
                DCS             TPIP
                DAS             MPAC

                CA              TSCALE
                EXTEND
                MP              BIT3                    # MULTIPLIES BY N = 4 LEAVING RESULT IN L
                CA              L                       # ASSUMES N(TPIPOLD-TPIP)/4>TTF/4 IN MAGN.
                TC              DMPNSUB                 # N(TPIPOLD-TPIP)/4 TO MPAC, TTF UNITS
                EXTEND
                DCA             TTF/4
                DXCH            MPAC                    # DIVIDEND TO MPAC
                DXCH            BUF                     # DIVISOR TO BUF
                TC              USPRCADR

                CADR            DDV/BDDV                # (TTF/4)/(N(TPIPOLD-TPIP)/4) TO MPAC

                CA              ZERO
                TS              MODE                    # TO INDICATE DP IN MPAC

                TC              INTPRET
                PDVL            VSU
                                UNAFC/2
                                UNAFC/20
                VSL2            VXSC                    # VSL2 UNDOES MP BIT3 PRECEDING
                                UNAFC/2
                VAD

                                UNAFC/2                 # YIELDS EXTRAPOLATED UNAFC/2

# SET UP FOR MISSION CONTROL PROGRAM

                STODL           POINTVSM                # STORE FOR KALCMANU
                                TTF/4
                DCOMP           DMP
                                TSCALINV
                DAD
                                PIPTIME

                STORE           TULLG                   # TIME AT WHICH ULLAGE IS TO START

# SET UP FOR BRAKING PHASE

                EXIT

## Page 831
                TC              PHASCHNG                # PROTECT TTF/4 AND PREVENT REREADING REG-
 +402           OCT             04022                   # ISTERS REWRITTEN BY MISN CONT PROGRAM
                EXTEND
                DCA             TTF/4TMP
                DXCH            TTF/4

# RETURN TO MISSION CONTROL PROGRAM

                TC              PRETINIT                # INITIALIZES INTERPRETER
                EXTEND
                DCA             RETPREBL
                DTCB

## Page 832
# EXQDLIN STORES THE SEMI-UNIT VECTOR DEFINING THE DIRECTION OF COMMANDED THRUST ACCELERATION (UNAFC/2) IN THE
# APPROPRIATE REGISTERS OF FINDCDUD (AXISD) AND CALLS FINDCDUD AS A SUBROUTINE.

# THEN EXQDLIN TRANSFERS THE COMMANDED THRUST ACCELERATION MAGNITUDE (/AFC/) TO THE APPROPRIATE REGISTERS OF
# THROTCON, (/ACF/), CHANGING SCALING, AND CALLS THROTCON AS A SUBROUTINE.
# FINALLY EXQDLIN TERMINATES THE JOB.

EXQDLIN         TC              INTPRET
                VLOAD
                                UNAFC/2
                STCALL          AXISD
                                FINDCDUD                # ATTITUDE CONTROL
                EXIT


                EXTEND
                DCA             THROTCOL
                DTCB                                    # THROTTLE CONTROL
                TC              ENDOFJOB                # TERMINATES THE JOB PERIODICALLY STARTED
                                                        # BY A WAITLIST CALL FROM READACCS



# EXFINAL IS THE FINAL EXIT FROM 2DPS. FIRST EXFINAL PLACES THE SEMI-UNIT NORMAL TO THE ORBITAL PLANE (CPT6/2)
# IN AXISD AND CALLS FINDCDUD AS A SUBROUTINE. THIS CAUSES FURTHER THRUSTING TO BE NORMAL TO THE ORBITAL PLANE.
# THEN EXFINAL TRANSFERS THE COMMANDED THRUST ACCELERATION MAGNITUDE (/AFC/) TO THE APPROPRIATE REGISTERS OF

# THROTCON, (/ACF/), CHANGING SCALING, AND CALLS THROTCON AS A SUBROUTINE.
# FINALLY EXFINAL RETURNS TO THE MISSION CONTROL PROGRAM WHICH EXECUTES THE RANDOM THROTTLING.

EXFINAL         TC              INTPRET
                VLOAD
                                CPT6/2
                STCALL          AXISD
                                FINDCDUD                # ATTITUDE CONTROL
                EXIT

                EXTEND
                DCA             THROTCOL
                DTCB                                    # THROTTLE CONTROL
                TC              PRETINIT                # INITIALIZES INTERPRETER
                EXTEND
                DCA             RETBURNL
                DTCB

## Page 833
# ************************************************************************
# SPECIAL PURPOSE SUBROUTINES OF SECOND DPS GUIDANCE
# ************************************************************************

# ************************************************************************
# IGNITION ALGORITHM
# ************************************************************************


# IGNITN1 EXTRAPOLATES THE GIVEN STATE FORWARD THROUGH THE TIME INTERVAL REQUIRED TO ACCOMPLISH ULLAGE AND TO
# LITE AT LOW THRUST AND TRIM THE ENGINE. THE EXTRAPOLATION ENDS AT THE TIME MAXIMUM THRUST WOULD BE COMMANDED
# IF THE LITEUP PROCEDURE WERE INITIATED AT THE CURRENT GIVEN TIME. (THE GIVEN TIME IS NOT TRUE. ALL GIVEN
# CONDITIONS INCLUDE A FREE-FALL EXTRAPOLATION OF THE ACTUAL ORBIT.) THE EXTRAPOLATION PERFORMED BY IGNITN1
# INCLUDES ALL EFFECTS OF ENGINE THRUST DURING THE LITEUP PROCEDURE, AND IT USES THE
# THRUST POINTING DIRECTION WHICH WILL BE COMMANDED AT THE INITIATION OF MAXIMUM THRUST.
# THIS EXTRAPOLATED STATE IS THEN FED TO THE GUIDANCE EQUATIONS, WHICH COMPUTE THE THRUST POINTING
# DIRECTION (UNAFC/2) AND THE THRUST ACCELERATION MAGNITUDE COMMAND (/AFC/).

# IGNITN2 THEN RECEIVES THIS OUTPUT DATA FROM THE GUIDANCE EQUATIONS AND DETERMINES WHETHER THE THRUST

# ACCELERATION MAGNITUDE COMMAND IS MONOTONICALLY INCREASING. WHEN IT IS, IGNITN2 USES THE PRESENT AND PREVIOUS
# VALUES TO COMPUTE ONE QUARTER OF THE PRESENT TIME (TTF/4) RELATIVE TO THE TIME AT WHICH THE THRUST
# ACCELERATION MAGNITUDE COMMAND WILL REACH THE CRITERION VALUE (/AFC/CR) WHICH CORRESPONDS TO MAXIMUM THROTTLE.
# WHEN TTF/4 SO COMPUTED REACHES THE TIME CRITERION FOR TERMINATING THE PREBURN PHASE (TTF/4CR),
# EXIGEND IS PROCESSED, TERMINATING THE PHASE AND RETURNING CONTROL TO THE MISSION CONTROL PROGRAM.
# THE MISSION CONTROL PROGRAM EXECUTES THE COMPUTED IGNITION SEQUENCE. IGNITN2 MUST ALSO, ON EACH PASS,
# REESTABLISH CERTAIN DATA REQUIRED FOR THE SUBSEQUENT PASS.

# IGNITION ALGORITHM PART 1
# ************************************************************************

# DO TEMPORARY STORAGE

IGNITN1         TC              INTPRET
                DLOAD
                                /AFC/
                STOVL           /AFC/OLD                # OLD VALUE OF /AFC/ FOR USE BY IGNITN2

                                UNAFC/2
                STOVL           UNAFC/20                # OLD VALUE OF UNAFC/2

# EXTRAPOLATE STATE


                                R
                STOVL           RDUM
                                V
                STOVL           VDUM
                                GDOTM1
                STODL           JDUM
                                PFCULLG                 # ULLAGE PERIOD
                STODL           PDUM                    # DUMMY PERIOD
                                AFULLG                  # LEAVE AFULLG IN MPAC

## Page 834
                CALL                                    # EXTRAPOLATES DUMMY STATE AND

                                XTRIGN1                 # LEAVES INITIAL GRAVITY IN GDUM

                VLOAD
                                GDUM
                STODL           GDUMPRES                # SAVE INITL GRAVITY FOR COMPUTING GDOTM1

                                PFCLITE                 # LITEUP PERIOD
                STODL           PDUM
                                AFLITE                  # LEAVE AFLITE IN MPAC
                CALL
                                XTRIGN1                 # EXTRAPOLATE


                DLOAD
                                PFCTRIM                 # TRIM PERIOD
                STODL           PDUM
                                AFTRIM                  # LEAVE AFTRIM IN MPAC
                CALL
                                XTRIGN1                 # YIELDS FINAL EXTRAPOLATED STATE

                VLOAD
                                RDUM
                STOVL           RTEMP                   # RESTART PROTECTION FOR EXTRAPOLATED R

                                VDUM
                STCALL          VTEMP                   # RESTART PROTECTION FOR EXTRAPOLATED V

# COMPUTE DERIVATIVE OF GRAVITY

                                GDUMCL                  # YIELDS FINAL GRAVITY IN MPAC AND GDUM
                VSU             V/SC
                                GDUMPRES
                                PPHM1                   # COMPLETES COMPUTATION OF DERIV OF G
                STORE           GDOTM1                  # FOR USE NEXT PASS. PROTECTION NOT RQD.
                EXIT


# GENERATION OF EXTRAPOLATED DATA COMPLETE. PROTECT AND TRANSFER TO STORAGE.

                TC              PHASCHNG                # PROTECT R, V
 +402           OCT             04022
                TC              INTPRET
                DLOAD
                                TTF/4TMP
                STOVL           TTF/4                   # RESTORES TTF/4 TO LAST VALUE BY GUIDANCE
                                RTEMP
                STOVL           R                       # EXTRAPOLATED R

                                VTEMP
                STORE           V                       # EXTRAPOLATED V
                EXIT
                CA              COUNTFCT
                TS              COUNTFC                 # FOR IGNITN2

## Page 835
                TC              XTRTPIP                 # YIELDS TPIP EXTRAPOLATED
                TCF             RETIGN1



# IGNITION ALGORITHM PART 2

# ************************************************************************

IGNITN2         EXTEND
                DCA             TTF/4
                DXCH            TTF/4TMP                # SAVE TTF/4 FOR NEXT PASS
                TC              PHASCHNG                # PROTECT TTF/4
 +402           OCT             04022
                CS              POSMAX
                TS              TTF/4                   # PREVENT PREMATURE TERMINATION OF PREBURN

# TEST WHETHER /AFC/ > /AFC/OLD, IF SO TEST WHETHER COUNTFC = 0.

                EXTEND
                DCA             /AFC/
                DXCH            MPAC
                EXTEND
                DCS             /AFC/OLD
                DAS             MPAC                    # /AFC/-/AFC/OLD IN MPAC

                CCS             MPAC                    # TEST HI ORDER
                TCF             TCOUNTFC
                TCF             TSTLOAFC

                TCF             RETIGN2         -2      # RESET COUNTFC
TSTLOAFC        CA              MPAC            +1      # TEST LO ORDER
                EXTEND
                BZMF            RETIGN2         -2      # RESET COUNTFC
TCOUNTFC        CCS             COUNTFC
                TCF             RETIGN2         -1      # DECREMENT COUNTFC

# RESET TTF/4 BY EXTRAPOLATING /AFC/

# TTF/4 = (1/4)(TPIPOLD-TPIP)(/AFC/-/AFC/CR)/(/AFC/OLD-/AFC/)

                EXTEND

                DCA             TPIPOLD
                DXCH            MPAC
                EXTEND
                DCS             TPIP
                DAS             MPAC
                CA              TSCALE
                TC              DMPNSUB                 # (1/4)(TPIPOLD-TPIP) TO MPAC, TTF UNITS

                EXTEND
                DCA             /AFC/

## Page 836
                DXCH            MPAC            +3
                EXTEND

                DCS             /AFC/CR
                DAS             MPAC            +3
                TC              DMP
                GENADR          MPAC            +3

                EXTEND
                DCA             /AFC/OLD
                DXCH            BUF
                EXTEND
                DCS             /AFC/

                DAS             BUF
                TC              USPRCADR
                CADR            DDV/BDDV                # YIELDS TTF/4 IN MPAC

                CCS             OVFIND
                TCF             RETIGN2         -3      # IF TTF/4 OVFL. RESETS OVFIND, COUNTFC.

                DXCH            MPAC
                DXCH            TTF/4
                TCF             RETIGN2



# ************************************************************************
# SPECIAL PURPOSE STATE EXTRAPOLATION SUBROUTINE FOR IGNITN1
# ************************************************************************

# XTRIGN1 RECEIVES THE EXTRAPOLATION PERIOD IN PDUM; THE INITIAL STATE IN RDUM, VDUM; THE THRUST ACCELERATION
# MAGNITUDE IN MPAC, DIRECTION IN UNAFC/2; AND JERK IN JDUM.

# IT LEAVES GRAVITY IN GDUM, THE TOTAL INITIAL ACCELERATION IN ADUM, AND THE EXTRAPOLATED STATE IN RDUM, VDUM.

# PRESENTLY THE DUM REGISTERS OCCUPY LOCATIONS FIXLOC +6 THRU FIXLOC +45 OCTAL.

XTRIGN1         STQ
                                RETXIGN1                # SAVE QPRET
                SL1             VXSC
                                UNAFC/2
                PUSH            CALL                    # PUSHES AF UNAFC
                                GDUMCL                  # YIELDS GRAVITY IN MPAC AND GDUM
                VAD             STADR
                STORE           ADUM                    # ADUM = AF UNAFC+G
                CALL
                                XTRDUMST                # EXTRAPOLATES RDUM, VDUM
                GOTO
                                RETXIGN1

## Page 837
# ************************************************************************
# LINEAR GUIDANCE - SPHERICAL ACCELERATION AS LINEAR TIME FUNCTION
# ************************************************************************

# SET LINEAR GUIDANCE COEFFICIENTS IN EVEN NUMBERED PHASES
# ************************************************************************

LSETEVN         TC              NTLZPASS

                TC              INTPRET
                VLOAD*
                                ADS,1                   # -       -
                STODL           ALINS                   # ALINS = ADS
                                AFCS            +2
                DAD
                                ASPRT           +2
                STORE           ACS             +2
                STOVL           ALINS           +2      # ALINS  = ACS  = AFCS  + ASPRT
                                ALINS                   #      2      2       2        2
                GOTO
                                LINSET

# SET LINEAR GUIDANCE COEFFICIENTS IN ODD NUMBERED PHASES
# ************************************************************************

LSETODD         TC              NTLZPASS
                TC              INTPRET
                VLOAD*
                                ADS,1                   # -       -
                STORE           ALINS                   # ADINS = ADS


# COMMON PARTS OF LSETEVN AND LSETODD
# ************************************************************************

LINSET          BVSU
                                ACS
                VSR2            V/SC
                                TTF/4                   # -            -     -
                STORE           JLINS                   # JLINS = 1/4 (ACS - ALINS)/(TTF/4)
                EXIT
                TCF             TTFINCR         +1

# LINEAR GUIDANCE EQUATIONS
# ************************************************************************

LINGUID         TC              INTPRET
                VLOAD           VXSC
                                JLINS
                                TTF/4
                VSL2
                VAD             VSU

## Page 838
                                ALINS

                                ASPRT                   # -        -               -       -
                STODL           AFCS                    # AFCS = 4 JLINS/(TTF/4) + ALINS - ASPRT
                                AFCS            +4
                GOTO
                                AFCCALC



# ************************************************************************
# SUBROUTINE TO SET TPIP EXTRAPOLATED
# ************************************************************************

XTRTPIP         EXTEND
                DCA             PIPTIME
                DXCH            TPIP
                EXTEND
                DCA             PPHM1CS
                DAS             TPIP
                TC              Q

## Page 839
# ************************************************************************
# GENERAL PURPOSE SUBROUTINES CONTRIBUTED BY SECOND DPS GUIDANCE
# ************************************************************************

# ************************************************************************
# DOUBLE PRECISION ROOT FINDER SUBROUTINE
# ************************************************************************

#                                                         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)

# 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 TO LOC(TC POWRSERS)+1.

#          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 ASSURE 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, INITLIZE ERASABLES

ROOTPSRS        EXTEND
                QXCH            RETROOT                 # RETURN ADRES
                TS              PWRPTR                  # PWR TABL POINTER
                DXCH            MPAC            +3      # PWR TABL ADRES, N-1
                CA              DERTABLL

## Page 840
                TS              DERPTR                  # DER TABL POINTER
                TS              MPAC            +5      # DER TABL ADRES

                CCS             MPAC            +4      # NO POWER SERIES OF 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 TABL 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

                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                    # A(I-1) TO MPAC, FETCHING DERCOF
                INDEX           DERPTR
                DXCH            3                       # DERCOF TO DER TABL
                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

## Page 841
                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 DERIVTIVE
                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
                DCS             DXCRIT
                DAS             MPAC                    # ABS(DX)-ABS(DXCRIT) IN MPAC

                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                    # STORE DP ROOT IN MPAC, MPAC+1
                CA              MODE
                TS              MPAC            +2      # STORE SP ITERATION COUNT IN MPAC+2
                TC              RETROOT

DERTABLL        ADRES           DERCOFN         -3

## Page 842
# ************************************************************************
# GENERAL PURPOSE SUBROUTINE FOR EXTRAPOLATING DUMMY STATE RDUM, VDUM
# ************************************************************************

# XTRDUMST REQUIRES THE EXTRAPOLATION PERIOD, INITIAL POSITION, INITIAL VELOCITY, INITIAL ACCELERATION, JERK
# TO ARRIVE IN PDUM, RDUM, VDUM, ADUM, JDUM.

# IT LEAVES THE EXTRAPOLATED STATE IN RDUM, VDUM.

# PRESENTLY THE DUM REGISTERS ARE LOCATIONS FIXLOC +6 THRU FIXLOC +31 OCTAL, AND FIXLOC +40 OCTAL THRU
# FIXLOC +45 OCTAL.

#                                             2            3
# THE EQNS ARE RDUM = RDUM+VDUM PDUM+ADUM PDUM /2+JDUM PDUM /6,

#                                             2
#              VDUM = VDUM+ADUM PDUM+JDUM PDUM /2.

# THEY ARE PROGRAMMED AS RDUM = ((JDUM PDUM/3+ADUM)PDUM/2+VDUM)PDUM+RDUM

#                        VDUM = (JDUM PDUM/2+ADUM)PDUM+VDUM

XTRDUMST        DLOAD
                                PDUM
                DMP             VXSC

                                1/3DP
                                JDUM
                VAD             VXSC
                                ADUM
                                PDUM
                VSR1            VAD
                                VDUM
                VXSC            VAD
                                PDUM
                                RDUM
                STODL           RDUM                    # EXTRAPOLATED RDUM. NO RESTART PROTECTION


                                PDUM
                SR1R            VXSC
                                JDUM
                VAD             VXSC
                                ADUM
                                PDUM
                VAD
                                VDUM
                STORE           VDUM                    # EXTRAPOLATED VDUM. NO RESTART PROTECTION
                RVQ

## Page 843
# ************************************************************************
# DUMMY GRAVITY SUBROUTINE
# ************************************************************************

# GDUMCL COMPUTES GRAVITY GIVEN POSITION IN RDUM, LEAVING RESULT IN MPAC AND GDUM.

#                                         2
# GDUM =-MUEARTH UNIT(RDUM)/((ABVAL(RDUM)) )

GDUMCL          VLOAD           VCOMP
                                RDUM
                UNIT            VXSC
                                MUEARTH
                V/SC            VSL1                    # SHIFT COMPENSATES FOR SEMI-UNIT
                                42
                STORE           GDUM
                RVQ



# ************************************************************************
# INTERPRETER INITIALIZATION SUBROUTINE
# ************************************************************************

PRETINIT        CA              FIXLOC
                TS              PUSHLOC
                CA              ZERO
                TS              OVFIND
                TC              Q

## Page 844
# ************************************************************************
# SECOND DPS TARGET PARAMETERS

# ************************************************************************

# PARAMETER TABLE INDIRECT ADDRESSES

TTF/4NU         =               TTF/4N0X
ADS             =               A0XS
RDS             =               R0XS
VDS             =               V0XS
JDS2            =               J0XS2
MADP2           =               MA0XP2

#
# A CONSISTENT SET OF UNITS IS USED THRUOUT THE SECOND DPS GUIDANCE. THESE UNITS ARE:
# TIME 2(  15)CS; LENGTH 2(  24)M; ANGLE 2(   0)RAD.

# IGNITION ALGORITHM - PREBURN PARAMETERS
# ************************************************************************

PPHM1           2DEC*           +3.350000000    E+3  B-15*

PPHM1CS         2DEC*           +3.350000000    E+3  B-28*

/AFC/CR         2DEC*           +2.965861098    E-4  B+6*


PFCULLG         2DEC*           +7.500000000    E+2  B-15*

AFULLG          2DEC*           +6.074952094    E-6  B+6*

PFCLITE         2DEC*           +3.000000000    E+2  B-15*

AFLITE          2DEC*           +3.198162867    E-5  B+6*

PFCTRIM         2DEC*           +2.300000000    E+3  B-15*


AFTRIM          2DEC*           +3.202931538    E-5  B+6*

## Page 845
# PARAMETER TABLE FOR BURN PHASES
# ************************************************************************

TTF/4N0X        DEC*            -1.125000000    E+4  B-15*

A0XS            2DEC*           -8.572092116    E-5  B+6*

                2DEC            0


                2DEC*           +7.269884947    E-11 B+30*

R0XS            2DEC*           +6.713370537    E+6  B-24*

                2DEC            0

                2DEC*           +1.056080555    E-2  B-0*

V0XS            2DEC*           -1.071382748    E+0  B-9*


                2DEC            0

                2DEC*           -9.160545259    E-7  B+15*

J0XS2           2DEC*           +1.194804087    E-15 B+45*

MA0XP2          2DEC*           +5.156859816    E+8  B-33*

## Page 846
TTF/4N0F        DEC*            -2.500000000    E+3  B-15*


A0FS            2DEC*           -5.038447857    E-5  B+6*

                2DEC            0

                2DEC*           +4.273045103    E-11 B+30*

R0FS            2DEC*           +6.700335070    E+6  B-24*

                2DEC            0

                2DEC*           +3.369214099    E-3  B-0*


V0FS            2DEC*           -1.545589897    E+0  B-9*

                2DEC            0

                2DEC*           -5.138853270    E-7  B+15*

J0FS2           2DEC*           +5.027062289    E-16 B+45*

MA0FP2          2DEC*           +5.156859816    E+8  B-33*



TTF/4NU1        DEC*            -1.000000000    E+2  B-15*

A1FS            2DEC*           +5.044035031    E-5  B+6*

                2DEC            0

                2DEC*           +4.277783493    E-11 B+30*

## Page 847
## Workaround: the following line has been changed to OCT because yaYUL produces
##             slightly different numerical results. The original was as follows:
## TTF/4NU2        DEC*            -3.375000000    E+3  B-15*
TTF/4NU2        OCT             74550

A2FS            2DEC*           +1.331951587    E-4  B+6*

                2DEC            0


                2DEC*           +1.991810043    E-11 B+30*

R2FS            2DEC*           +6.687217073    E+6  B-24*

                2DEC            0

                2DEC*           +1.144811884    E-5  B-0*

V2FS            2DEC*           -1.198407174    E-1  B-9*

                2DEC            0

                2DEC*           -2.215170344    E-8  B+15*

J2FS2           2DEC*           -3.386627333    E-15 B+45*

MA2FP2          2DEC*           +5.156859816    E+8  B-33*



TTF/4NU3        DEC*            -2.500000000    E+2  B-15*

A3FS            2DEC*           +1.536879692    E-13 B+6*

                2DEC            0

                2DEC*           +2.438530673    E-11 B+30*

## Page 848
# ************************************************************************
# SECOND DPS CONSTANTS

# ************************************************************************

# ADDRESS CONSTANTS

E2DPSL          ECADR           E2DPS                   # FOR ACCESSING EBANK OF 2DPS
                EBANK=          E2DPS
IGNALGL         2BCADR          IGNALG


                                                        # THE NEXT TWO CONSTANTS MUST BE KEPT
                                                        # IN ORDER AND ADJACENT
TABLTTFL        ADRES           TABLTTF         +3      # ADRES TO REF TTF TABL
DEGTTF-1        OCT             2                       # DEGREE-1 OF TTF POWER SERIES

                EBANK=          EMP11JOB
RETPREBL        2BCADR          RETPREB

                EBANK=          EMP11JOB
RETBURNL        2BCADR          RETBURN

                EBANK=          ETHROT
THROTCOL        2BCADR          THROTCON


# ARITHMETIC FRACTIONS AND INTEGERS

TSCALE          =               BIT12

TSCALINV        OCT             00010
ZEROPOS         OCT             00000                   # LO ORDER PART OF TSCALINV, AND
                OCT             00000                   # FIRST COMPONENT OF ZERO VECTOR
ZERONEG         OCT             77777

                OCT             77777
                OCT             00000                   # LAST COMPONENT OF ZERO VECTOR, AND
PIGNALG         OCT             00000                   # HI ORDER PART OF PIGNALG, TPIP UNITS
                DEC             +2              E+2B-14 # LO ORDER PART OF PIGNALG, TPIP UNITS

1/3DP           2DEC            .3333333333

## The following line is "SP3/8 OCT .3 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
SP3/8           DEC             .375            B14
## The following line is "SP9/16 OCT .44 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
SP9/16          DEC             .5625           B14
2/3DP           2DEC            .6666666667

2DPS2/3         =               2/3DP
## The following line is "SP3/4 OCT .6 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
SP3/4           DEC             .75             B14
PI/4            2DEC            +3.14159265     B-2


## Page 849

# ************************************************************************
# VARIOUS TEMPORARY TEST ROUTINES FOR SUBROUTINES CONTRIBUTED BY 2DPS
# ************************************************************************

# TEST ROOTPSRS ON 5TH DEGREE POWER SERIES

RUTTEST         EXTEND
                DCA             RUTINIT

                DXCH            MPAC

                EXTEND
                DCA             RUTTABLL
                TC              ROOTPSRS

# TEST POLY ON SIN 30 DEGREES

POLYTEST        TC              INTPRET
                DLOAD           SIN

                                QTSTPOLY

# TEST USEPRET ON V/SC

                STOVL           RC
                                A2FS
                STORE           RS
                EXIT
                CA              OCT1/2L
                TS              ADDRWD
                TC              USEPRET
                TC              V/SC

                TC              INTPRET
                STORE           VS
                EXIT
END2DPST        CA              ONE

# TEMP CONSTANTS FOR TESTS
## The following line is "RTUNIT OCT .6 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
RUTINIT         DEC             .75              B14
                OCT             0

                OCT             0
                OCT             0

## The following line is "OCT +.001 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
                DEC             1.953125        E-3 B14
                OCT             0

                OCT             0
                OCT             0

## The following line is "OCT -.024 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
                DEC             -3.90625        E-2 B14

## Page 850
                OCT             0

                OCT             0
                OCT             0

## The following line is "RUTTABL OCT +.100 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
RUTTABL         DEC             +.125           B14
                OCT             0

RUTPREC         OCT             1

RUTTABLL        ADRES           RUTTABL         -3
                OCT             4

QTSTPOLY        2DEC            .083333333

## The following line is "OCT1/2 OCT .4 B14" in the original program listing, but the yaYUL
## assembler does not syntactically support this syntax for OCT, so it has been replaced
## by a numerical equivalent that the assembler does support.
OCT1/2          DEC             .5              B14
                OCT             0
OCT1/2L         ADRES           OCT1/2
back to top