Raw File
P34-P35,_P74-P75.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    P34-P35,_P74-P75.agc
## Purpose:     A section of an attempt to reconstruct Sundance revision 306
##              as closely as possible with available information. Sundance
##              306 is the source code for the Lunar Module's (LM) Apollo
##              Guidance Computer (AGC) for Apollo 9. This program was created
##              using the mixed-revision SundanceXXX as a starting point, and
##              pulling back features from Luminary 69 believed to have been
##              added based on memos, checklists, observed address changes,
##              or the Sundance GSOPs.
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2020-07-24 MAS  Created from SundanceXXX.
##              2020-07-29 MAS  Doubled some units in R36, and added a call
##                              to SETXDSP to it. Also changed the P35/P75
##                              leadin to match Luminary 69, and added CENTANG
##                              initialization to P34/P74.



# TRANSFER PHASE INITIATION (TPI) PROGRAMS (P34 AND P74)

# MOD NO -1                     LOG SECTION - P32-P35, P72-P75
# MOD BY WHITE.P                DATE  1JUNE67
#
# PURPOSE
#
#       (1)     TO CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL CONDITIONS
#               REQUIRED BY THE ACTIVE VEHICLE FOR EXECUTION OF THE TRANSFER
#               PHASE INITIATION (TPI) MANEUVER, GIVEN -

#               (A)     TIME OF IGNITION TIG (TPI) OR THE ELEVATION ANGLE (E) OF
#                       THE ACTIVE/PASSIVE VEHICLE LOS AT TIG (TPI).

#               (B)     CENTRAL ANGLE OF TRANSFER (CENTANG) FROM TIG (TPI) TO
#                       INTERCEPT TIME (TIG (TPF)).

#       (2)     TO CALCULATE TIG (TPI) GIVEN E OR E GIVEN TIG (TPI).

#       (3)     TO CALCULATE THESE PARAMETERS BASED UPON MANEUVER DATA
#               APPROVED AND KEYED INTO THE DSKY BY THE ASTRONAUT.

#       (4)     TO DISPLAY TO THE ASTRONAUT AND THE GROUND CERTAIN DEPENDENT
#               VARIABLES ASSOCIATED WITH THE MANEUVER FOR APPROVAL BY THE
#               ASTRONAUT/GROUND.

#       (5)     TO STORE THE TPI TARGET PARAMETERS FOR USE BY THE DESIRED
#               THRUSTING PROGRAM.
#
# ASSUMPTIONS

#       (1)     LM ONLY - THIS PROGRAM IS BASED UPON PREVIOUS COMPLETION OF
#               THE CONSTANT DELTA ALTITUDE (CDH) PROGRAM (P33/P73).
#               THEREFORE -

#               (A)     AT A SELECTED TPI TIME (NOW IN STORAGE) THE LINE OF SIGHT
#                       BETWEEN THE ACTIVE AND PASSIVE VEHICLES WAS SELECTED TO BE
#                       A PRESCRIBED ANGLE (E) (NOW IN STORAGE) FROM THE
#                       HORIZONTAL PLANE DEFINED BY THE ACTIVE VEHICLE POSITION.

#               (B)     THE TIME BETWEEN CDH IGNITION AND TPI IGNITION WAS
#                       COMPUTED TO BE GREATER THAN 10 MINUTES.

#               (C)     THE VARIATION OF THE ALTITUDE DIFFERENCE BETWEEN THE
#                       ORBITS WAS MINIMIZED.

#               (D)     THE PERICENTER ALTITUDES OF ORBITS FOLLOWING CSI AND
#                       CDH WERE COMPUTED TO BE GREATER THAN 35,000 FT FOR LUNAR
#                       ORBIT OR 85 NM FOR EARTH ORBIT.

#               (E)     THE CSI AND CDH MANEUVERS WERE ASSUMED TO BE PARALLEL TO
#                       THE PLANE OF THE PASSIVE VEHICLE ORBIT.  HOWEVER, CREW
#                       MODIFICATION OF DELTA V (LV) COMPONENTS MAY HAVE RESULTED
#                       IN AN OUT-OF-PLANE MANEUVER.

#       (2)     STATE VECTOR UPDATED BY P27 ARE DISALLOWED DURING AUTOMATIC
#               STATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION (4)).

#       (3)     THIS PROGRAM MUST BE DONE OVER A TRACKING STATION FOR REAL
#               TIME GROUND PARTICIPATION IN DATA INPUT AND OUTPUT.  COMPUTED
#               VARIABLES MAY BE STORED FOR LATER VERIFICATION BY THE GROUND.
#               THESE STORAGE CAPABILITIES ARE LIMITED ONLY TO THE PARAMETERS
#               FOR ONE THRUSTING MANEUVER AT A TIME EXCEPT FOR CONCENTRIC
#               FLIGHT PLAN MANEUVER SEQUENCES.

#       (4)     THE RENDEZVOUS RADAR MAY OR MAY NOT BE USED TO UPDATE THE LM
#               OR CSM STATE VECTORS FOR THIS PROGRAM.  IF RADAR USE IS
#               DESIRED THE RADAR WAS TURNED ON AND LOCKED ON THE CSM BY
#               PREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS WILL BE MADE
#               AUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN ENABLED BY THE
#               TRACK AND UPDATE FLAGS (SEE P20).  THE RENDEZVOUS TRACKING
#               MARK COUNTER IS ZEROED BY THE SELECTION OF P20 AND AFTER EACH
#               THRUSTING MANEUVER.

#       (5)     THE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.

#       (6)     THE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS -
#
#                       ACTIVE VEHICLE FLAG - DESIGNATES THE VEHICLE WHICH IS
#                       DOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH
#                       CALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF
#                       EACH RENDEZVOUS PRE-THRUSTING PROGRAM.
#
#                       FINAL FLAG - SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS
#                       SELECTED THE FINAL MANEUVER COMPUTATION CYCLE.
#
#                       EXTERNAL DELTA V FLAG - DESIGNATES THE TYPE OF STEERING
#                       REQUIRED FOR EXECUTION OF THIS MANEUVER BY THE THRUSTING
#                       PROGRAM SELECTED AFTER COMPLETION OF THIS PROGRAM.
#
#       (7)     ONCE THE PARAMETWRS REQUIRED FOR COMPUTION OF THE MANEUVER
#               HAVE BEEN COMPLETELY SPECIFIED, THE VALUE OF THE ACTIVE
#               VEHICLE CENTRAL ANGLE OF TRANSFER IS COMPUTED AND STORED.
#               THIS NUMBER WILL BE AVAILABLE FOR DISPLAY TO THE ASTRONAUT
#               THROUGH THE USE OF V06N52.
#
#               THE ASTRONAUT WILL CALL THIS DISPLAY TO VERIFY THAT THE
#               CENTRAL ANGLE OF TRANSFER OF THE ACTIVE VEHICLE IS NOT WITHIN
#               170 TO 190 DEGREES.  IF THE ANGLE IS WITHIN THIS ZONE THE
#               ASTRONAUT SHOULD REASSESS THE INPUT TARGETING PARAMETERS BASED
#               UPON DELTA V AND EXPECTED MANEUVER TIME.
#
#       (8)     THIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY -
#
#                       P34 IF THIS VEHICLE IS ACTIVE VEHICLE.
#
#                       P74 IF THIS VEHICLE IS PASSIVE VEHICLE.
#
# INPUT
#
#       (1)     TTPI    TIME OF THE TPI MANEUVER
#       (2)     ELEV    DESIRED LOS ANGLE AT TPI
#       (3)     CENTANG ORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE DURING
#                       TRANSFER FROM TPI TO TIME OF INTERCEPT
#
# OUTPUT
#
#       (1)     TRKMKCNT        NUMBER OF MARKS
#       (2)     TTOGO           TIME TO GO
#       (3)     +MGA            MIDDLE GIMBAL ANGLE
#       (4)     TTPI            COMPUTED TIME OF TPI MANEUVER
#                OR
#               ELEV            COMPUTED LOS ANGLE AT TPI
#       (5)     POSTTPI         PERIGEE ALTITUDE AFTER THE TPI MANEUVER
#       (6)     DELVTPI         MAGNITUDE OF DELTA V AT TPI
#       (7)     DELVTPF         MAGNITUDE OF DELTA V AT INTERCEPT
#       (8)     DVLOS           DELTA VELOCITY AT TPI - LINE OF SIGHT
#       (9)     DELVLVC         DELTA VELOCITY AT TPI - LOCAL VERTICAL COORDINATES
#
# DOWNLINK
#
#       (1)     TTPI            TIME OF THE TPI MANEUVER
#       (2)     TIG             TIME OF THE TPI MANEUVER
#       (3)     ELEV            DESIRED LOS ANGLE AT TPI
#       (4)     CENTANG         ORBITAL CENTRAL ANGLE OF THE PASSIVE VEHICLE DURING
#                               TRANSFER FROM TPI TO TIME OF INTERCEPT
#       (5)     DELVEET3        DELTA VELOCITY AT TPI - REFERENCE COORDINATES
#       (6)     TPASS4          TIME OF INTERCEPT
#
# COMMUNICATION TO THRUSTING PROGRAMS
#
#       (1)     TIG             TIME OF THE TPI MANEUVER
#       (2)     RTARG           OFFSET TARGET POSITION
#       (3)     TPASS4          TIME OF INTERCEPT
#       (4)     XDELVFLG        RESET TO INDICATE LAMBERT (AIMPOINT) VG COMPUTATION
#
# SUBROUTINES USED
#
#       AVFLAGA
#       AVFLAGP
#       VNPOOH
#       DISPLAYE
#       SELECTMU
#       PRECSET
#       S33/34.1
#       ALARM
#       BANKCALL
#       GOFLASH
#       GOTOPOOH
#       TIMETHET
#       S34/35.2
#       PERIAPO1
#       SHIFTR1
#       S34/35.5
#       VN1645

                SETLOC  CSI/CDH
                BANK
                EBANK=  SUBEXIT
                COUNT*  $$/P3474
P34             TC      AVFLAGA
                TC      P34/P74A
P74             TC      AVFLAGP
P34/P74A        CAF     V06N37          # TTPI
                TC      VNPOOH
## The following three instructions may have been added in Sundance 302.
                EXTEND
                DCA     130DEG
                DXCH    CENTANG
                TC      DISPLAYE        # ELEV AND CENTANG
                TC      INTPRET
                CLEAR   DLOAD
                        ETPIFLAG
                        TTPI
                STODL   TIG
                        ELEV
                BZE     SET
                        P34/P74B
                        ETPIFLAG
P34/P74B        CALL
                        SELECTMU
DELELO          EQUALS  26D
P34/P74C        DLOAD   SET
                        ZEROVECS
                        ITSWICH
                BON     CLEAR
                        ETPIFLAG
                        SWCHSET
                        ITSWICH
SWCHSET         STORE   NOMTPI
INTLOOP         DLOAD   DAD
                        TTPI
                        NOMTPI
                STCALL  TDEC1
                        PRECSET
                CALL
                        S33/34.1
                BZE     EXIT
                        SWCHCLR
                TC      ALARM
                OCT     611
                CAF     V05N09
                TC      BANKCALL
                CADR    GOFLASH
                TC      GOTOPOOH
                TC      P34/P74A        # PROCEED
                TC      -7              # V32

SWCHCLR         BONCLR  BON
                        ITSWICH
                        INTLOOP
                        ETPIFLAG
                        P34/P74D        # DISPLAY TTPI
                EXIT
                TC      DISPLAYE        # DISPLAY ELEV AND CENTANG
                TC      P34/P74E
P34/P74D        EXIT
                CAF     V06N37          # TTPI
                TC      VNPOOH
P34/P74E        TC      INTPRET
                SETPD   DLOAD
                        0D
                        RTX1
                STODL   X1
                        CENTANG
                PUSH    COS
                STODL   CSTH
                SIN
                STOVL   SNTH
                        RPASS3
                VSR*
                        0,2
                STOVL   RVEC
                        VPASS3
                VSR*    SET
                        0,2
                        RVSW
                STCALL  VVEC
                        TIMETHET
                DLOAD
                        TTPI
                STORE   INTIME          # FOR INITVEL
                DAD
                        T               # RENDEZVOUS TIME
                STCALL  TPASS4          # FOR INITVEL
                        S34/35.2
                VLOAD   ABVAL
                        DELVEET3
                STOVL   DELVTPI
                        VPASS4
                VSU     ABVAL
                        VTPRIME
                STOVL   DELVTPF
                        RACT3
                PDVL    CALL
                        VIPRIME
                        PERIAPO1
                CALL
                        SHIFTR1
                STODL   POSTTPI
                        TTPI
                STORE   TIG
                EXIT
                CAF     V06N58
                TC      VNPOOH
                TC      INTPRET
                CALL
                        S34/35.5
                CALL
                        VN1645
                GOTO
                        P34/P74C
# RENDEZVOUS MID-COURSE MANEUVER PROGRAMS (P35 AND P75)

# MOD NO -1                     LOG SECTION - P32-P35, P72-P75
# MOD BY WHITE.P                DATE  1JUNE67
#
# PURPOSE
#
#       (1)     TO CALCULATE THE REQUIRED DELTA V AND OTHER INITIAL CONDITIONS
#               REQUIRED BY THE ACTIVE VEHICLE FOR EXECUTION OF THE NEXT
#               MIDCOURSE CORRECTION OF THE TRANSFER PHASE OF AN ACTIVE
#               VEHICLE RENDEZVOUS.
#
#       (2)     TO DISPLAY TO THE ASTRONAUT AND THE GROUND CERTAIN DEPENDENT
#               VARIABLES ASSOCIATED WITH THE MANEUVER FOR APPROVAL BY THE
#               ASTRONAUT/GROUND.
#
#       (3)     TO STORE THE TPM TARGET PARAMETERS FOR USE BY THE DESIRED
#               THRUSTING PROGRAM.
#
# ASSUMPTIONS
#
#       (1)     THE ISS NEED NOT BE ON TO COMPLETE THIS PROGRAM.
#
#       (2)     STATE VECTOR UPDATES BY P27 ARE DISALLOWED DURING AUTOMATIC
#               STATE VECTOR UPDATING INITIATED BY P20 (SEE ASSUMPTION (3)).
#
#       (3)     THE RENDEZVOUS RADAR IS ON AND IS LOCKED ON THE CSM.  THIS WAS
#               DONE DURING PREVIOUS SELECTION OF P20.  RADAR SIGHTING MARKS
#               WILL BE MADE AUTOMATICALLY APPROXIMATELY ONCE A MINUTE WHEN
#               ENABLED BY THE TRACK AND UPDATE FLAGS (SEE P20).  THE
#               RENDEZVOUS TRACKING MARK COUNTER IS ZEROED BY THE SELECTION OF
#               P20 AND AFTER EACH THRUSTING MANEUVER.
#
#       (4)     THE OPERATION OF THE PROGRAM UTILIZES THE FOLLOWING FLAGS -
#
#                       ACTIVE VEHICLE FLAG - DESIGNATES THE VEHICLE WHICH IS
#                       DOING RENDEZVOUS THRUSTING MANEUVERS TO THE PROGRAM WHICH
#                       CALCULATES THE MANEUVER PARAMETERS.  SET AT THE START OF
#                       EACH RENDEZVOUS PRE-THRUSTING PROGRAM.
#
#                       FINAL FLAG - SELECTS FINAL PROGRAM DISPLAYS AFTER CREW HAS
#                       SELECTED THE FINAL MANEUVER COMPUTATION CYCLE.
#
#                       EXTERNAL DELTA V FLAG - DESIGNATES THE TYPE OF STEERING
#                       REQUIRED FOR EXECUTION OF THIS MANEUVER BY THE THRUSTING
#                       PROGRAM SELECTED AFTER COMPLETION OF THIS PROGRAM.
#
#       (5)     THE TIME OF INTERCEPT (T(INT)) WAS DEFINED BY PREVIOUS
#               COMPLETION OF THE TRANSFER PHASE INITIATION (TPI) PROGRAM
#               (P34/P74) AND IS PRESENTLY AVAILABLE IN STORAGE.
#
#       (6)     ONCE THE PARAMETERS REQUIRED FOR COMPUTION OF THE MANEUVER
#               HAVE BEEN COMPLETELY SPECIFIED, THE VALUE OF THE ACTIVE
#               VEHICLE CENTRAL ANGLE OF TRANSFER IS COMPUTED AND STORED.
#               THIS NUMBER WILL BE AVAILABLE FOR DISPLAY TO THE ASTRONAUT
#               THROUGH THE USE OF V06N52.
#
#               THE ASTRONAUT WILL CALL THIS DISPLAY TO VERIFY THAT THE
#               CENTRAL ANGLE OF TRANSFER OF THE ACTIVE VEHICLE IS NOT WITHIN
#               170 TO 190 DEGREES.  IF THE ANGLE IS WITHIN THIS ZONE THE
#               ASTRONAUT SHOULD REASSESS THE INPUT TARGETING PARAMETERS BASED
#               UPON DELTA V AND EXPECTED MANEUVER TIME.
#
#       (7)     THIS PROGRAM IS SELECTED BY THE ASTRONAUT BY DSKY ENTRY -
#
#                       P35 IF THIS VEHICLE IS ACTIVE VEHICLE.
#
#                       P75 IF THIS VEHICLE IS PASSIVE VEHICLE.
#
# INPUT
#
#       (1)     TPASS4          TIME OF INTERCEPT - SAVED FROM P34/P74
# OUTPUT
#
#       (1)     TRKMKCNT        NUMBER OF MARKS
#       (2)     TTOGO           TIME TO GO
#       (3)     +MGA            MIDDLE GIMBAL ANGLE
#       (4)     DVLOS           DELTA VELOCITY AT MID - LINE OF SIGHT
#       (5)     DELVLVC         DELTA VELOCITY AT MID - LOCAL VERTICAL COORDINATES
#
# DOWNLINK
#
#       (1)     TIG             TIME OF THE TPM MANEUVER
#       (2)     DELVEET3        DELTA VELOCITY AT TPM - REFERENCE COORDINATES
#       (3)     TPASS4          TIME OF INTERCEPT
# COMMUNICATION TO THRUSTING PROGRAMS
#
#       (1)     TIG             TIME OF THE TPM MANEUVER
#       (2)     RTARG           OFFSET TARGET POSITION
#       (3)     TPASS4          TIME OF INTERCEPT
#       (4)     XDELVFLG        RESET TO INDICATE LAMBERT (AIMPOINT) VG COMPUTATION
#
# SUBROUTINES USED
#
#       AVFLAGA
#       AVFLAGP
#       LOADTIME
#       SELECTMU
#       PRECSET
#       S34/35.1
#       S34/35.2
#       S34/35.5
#       VN1645

                COUNT*  $$/P3575
                EBANK=  KT

P35             TC      AVFLAGA
                EXTEND
                DCA     ATIGINC
                TC      P35/P75A
P75             TC      AVFLAGP
                EXTEND
                DCA     PTIGINC
P35/P75A        DXCH    KT
                TC      INTPRET
                CALL
                        SELECTMU
P35/P75B        RTB
                        LOADTIME
                STORE   TSTRT
                DAD
                        KT
                STORE   TIG
                STORE   INTIME          # FOR INITVEL
                STCALL  TDEC1
                        PRECSET         # ADVANCE BOTH VEHICLES
                CALL
                        S34/35.1        # GET NORM AND LOS FOR TRANSFORM
                CALL
                        S34/35.2        # GET DELTA V(LV)
                CALL
                        S34/35.5
                CALL
                        VN1645
                GOTO
                        P35/P75B
# ..... S33/34.1 .....

S33/34.1        STQ     SSP
                        NORMEX
                        TITER
                OCT     40000
                DLOAD   SETPD
                        MAX250
                        0D
                STOVL   SECMAX
                        RACT3
                STOVL   RAPREC
                        VACT3
                STOVL   VAPREC
                        RPASS3
                STOVL   RPPREC
                        VPASS3
                STORE   VPPREC
ELCALC          CALL
                        S34/35.1        # NORMAL AND LOS
                VXV     PDVL
                        RACT3           # (RA*VA)*RA 0D
                PDVL    UNIT            # ULOS AT 6D
                        RACT3
                PDVL    VPROJ           # XCHNJ AND UP
                VSL2    BVSU
                        ULOS
                UNIT    PDVL            # UP AT 0D
                DOT     PDVL            # UP.UN*RA AT 0D
                        0D              # UP IN MPAC
                DOT     SIGN
                        ULOS
                SL1     ACOS
                PDVL    DOT             # EA AT 0D
                        ULOS
                        RACT3
                BPL     DLOAD
                        TESTY
                        DPPOSMAX
                DSU     PUSH
TESTY           BOFF    DLOAD
                        ITSWICH
                        ELEX
                        DELEL
                STODL   DELELO
                DSU
                        ELEV
                STORE   DELEL
                ABS     DSU
                        ELEPS
                BMN
                        TIMEX           # COMMERCIALS EVERYWHERE
FIGTIME         SLOAD   SR1
                        TITER
                BHIZ    LXA,1
                        NORMEX          # TOO MANY ITERATIONS
                        MPAC
                SXA,1   VLOAD
                        TITER
                        RPASS3
                UNIT    PDDL
                        36D
                PDVL    UNIT
                        RACT3
                PDDL
                PDDL    PUSH
                        36D
                BDSU
                        12D
                STODL   30D             # RP - RA MAGNITUDES
                        DPHALF
                DSU     PUSH
                        ELEV
                SIGN    BMN
                        30D
                        NORMEX
                DLOAD   COS
                DMP     DDV
                        14D
                        12D
                DCOMP                   # SINCE COS(180-A)=-COS A
                STORE   28D
                ABS     BDSU
                        DPHALF
                BMN     VLOAD
                        NORMEX
                        UNRM
                VXV     UNIT
                        6D              # UN*RA
                DOT     DMP
                        VACT3
                        12D
                PDVL    VXV
                        0D
                        VPASS3
                VXV     UNIT
                        0D              # (RP*VP)*RP
                DOT     DMP
                        VPASS3
                        14D
                BDSU
                NORM    PDVL            # NORMALIZED WA - WP 12D
                        X1
                        6D
                VXV     DOT
                        0D
                        UNRM            # RA*RP.UN 14D
                PDVL    DOT
                        0D
                        6D
                SL1     ACOS
                SIGN
                DSU     DAD             # ALPHA PI
                        DPHALF
                        ELEV
                PDDL    ACOS
                        28D
                BDSU    SIGN
                        DPHALF
                        30D             # CONTAINS RP-RA
                DAD
                DMP     DDV
                        TWOPI
                DMP
                SL*     DMP
                        0       -3,1
                PUSH    ABS
                DSU     BMN
                        SECMAX
                        OKMAX
                DLOAD   SIGN            # REPLACE TIME WITH MAX TIME SIGNED
                        SECMAX
                PUSH
OKMAX           SLOAD   BPL             # TEST FIRST ITERATION
                        TITER
                        REPETE
                SSP     DLOAD
                        TITER
                OCT     37777
                GOTO
                        STORDELT
REPETE          DLOAD   DMP
                        DELEL
                        DELELO
                BPL     DLOAD
                        NEXTES
                        SECMAX
                DMP
                        THIRD
                STODL   SECMAX
                ABS     SR1             # CROSSED OVER SOLUTION
                DCOMP   GOTO            # DT=(-SIGN(DTO)//DT//)/2
                        RESIGN
NEXTES          DLOAD   ABS
                        DELEL
                PDDL    ABS
                        DELELO
                DSU
                BMN     DLOAD
                        REVERS          # WRONG DIRECTION
                ABS
RESIGN          SIGN    GOTO
                        DELTEEO
                        STORDELT
REVERS          DLOAD   DCOMP
                        DELTEEO
                PUSH    SR1
                STORE   DELTEEO
                DAD
                GOTO
                        ADTIME
STORDELT        STORE   DELTEEO
ADTIME          DAD
                        NOMTPI          # SUM OF DELTA T:S
                STORE   NOMTPI
                VLOAD   PDVL
                        VAPREC
                        RAPREC
                CALL
                        GOINT
                CALL
                        ACTIVE          # STORE NEW RACT3 VACT3
                VLOAD   PDVL
                        VPPREC
                        RPPREC
                CALL
                        GOINT
                CALL
                        PASSIVE         # STORE NEW RPASS3 VPASS3
                GOTO
                        ELCALC
ELEX            DLOAD   DAD
                        TTPI
                        NOMTPI
                STODL   TTPI
                BON
                        ETPIFLAG
                        TIMEX
                STORE   ELEV
TIMEX           DLOAD   GOTO
                        ZEROVECS
                        NORMEX

# ..... S34/35.1 .....

# COMPUTE UNIT NORMAL AND LINE OF SIGHT VECTORS GIVEN THE ACTIVE AND
# PASSIVE POS AND VEL AT TIME T3

S34/35.1        VLOAD   VSU
                        RPASS3
                        RACT3
                UNIT    PUSH
                STOVL   ULOS
                        RACT3
                VXV     UNIT
                        VACT3
                STORE   UNRM
                RVQ

# ..... S34/35.2 .....

# ADVANCE PASSIVE VEH TO RENDEZVOUS TIME AND GET REQ VEL FROM LAMBERT

S34/35.2        STQ     VLOAD
                        NORMEX
                        VPASS3
                PDVL    PDDL
                        RPASS3
                        INTIME
                PDDL    PDDL
                        TPASS4
                        ZEROVECS
                PUSH    CALL
                        INTINT          # GET TARGET VECTOR
S3435.25        STOVL   RTARG
                        VATT
                STOVL   VPASS4
                        RTARG
# COMPUTE PHI = PI + (ACOS(UNIT RA.UNIT RP) - PI)SIGN(RA*RP.U)
                UNIT    PDVL            # UNIT RP
                        RACT3
                UNIT    PUSH            # UNIT RA
                VXV     DOT
                        0D
                        UNRM            # RA*RP.U
                PDVL
                DOT     SL1             # UNIT RA.UNIT RP
                        0D
                ACOS    SIGN
                BPL     DAD
                        NOPIE
                        DPPOSMAX        # REASONABLE TWO PI
NOPIE           STODL   ACTCENT
                        TPASS4
                DSU
                        INTIME
                STORE   DELLT4
                SLOAD   CALL
                        DECTWO
                        PREINITV
                CALL
                        LOMAT
                VLOAD   MXV
                        DELVEET3
                        0D
                VSL1
                STCALL  DELVLVC
                        NORMEX

# ..... S34/35.3 .....

S34/35.3        STQ     CALL
                        NORMEX
                        LOMAT           # GET MATRIX IN PUSH LIST
                VLOAD   VXM
                        DELVLVC         # NEW DEL V TPI
                        0D
                VSL1
                STORE   DELVEET3        # SAVE FOR TRANSFORM
                VAD     PDVL
                        VACT3           # NEW V REQ
                        RACT3
                PDDL    PDDL
                        TIG
                        TPASS4
                PDDL    PUSH
                        DPPOSMAX
                CALL                    # INTEG. FOR NEW TARGET VEC
                        INTINT
                VLOAD
                        RATT
                STORE   RTARG
NOVRWRT         VLOAD   PUSH
                        ULOS
                VXV     VCOMP
                        UNRM
                UNIT    PUSH
                VXV     VSL1
                        ULOS
                PDVL
                PDVL    MXV
                        DELVEET3
                        0D
                VSL1
                STCALL  DVLOS
                        NORMEX

# ..... S34/35.4 .....

S34/35.4        STQ     SETPD           # NO ASTRONAUT OVERWRITE
                        NORMEX
                        0D
                GOTO
                        NOVRWRT

# ..... LOMAT     .....

LOMAT           VLOAD   VCOMP
                        UNRM
                STOVL   6D              # Y
                        RACT3
                UNIT    VCOMP
                STORE   12D
                VXV     VSL1
                        UNRM            # Z*-Y
                STORE   0D
                SETPD   RVQ
                        18D
GOINT           PDDL    PDDL            # DO
                        ZEROVECS        #       NOT
                        NOMTPI          #
                PUSH    PUSH            #               ORDER OR INSERT BEFORE INTINT
INTINT          STQ     CALL
                        RTRN
                        INTSTALL
                CLEAR   DLOAD
                        INTYPFLG
                BZE     SET
                        +2
                        INTYPFLG
                DLOAD   STADR
                STODL   TDEC1
                SET     LXA,2
                        MOONFLAG
                        RTX2
                BON     CLEAR
                        CMOONFLG
                        ALLSET
                        MOONFLAG
ALLSET          STOVL   TET
                VSR*
                        0,2
                STOVL   RCV
                VSR*
                        0,2
                STCALL  VCV
                        INTEGRVS
                VLOAD   GOTO
                        RATT
                        RTRN

# ..... S34/35.5 .....
# SUBROUTINES USED
#       BANKCALL
#       GOFLASH
#       GOTOPOOH
#       S34/35.3
#       S34/35.4
#       VNPOOH

S34/35.5        STQ     BON
                        SUBEXIT
                        FINALFLG
                        FLAGON
                SET     GOTO
                        UPDATFLG
                        FLAGOFF
FLAGON          CLEAR   EXIT
                        NTARGFLG
 +2             CAF     V06N81
                TC      BANKCALL
                CADR    GOFLASH
                TC      GOTOPOOH
                TC      +5              # PRO
                TC      INTPRET
                SET     EXIT
                        NTARGFLG
                TC      FLAGON +2

                TC      INTPRET
                BOFF    CALL
                        NTARGFLG
                        NOCHG
                        S34/35.3
NOCHG           CLEAR   VLOAD
                        XDELVFLG
                        DELVEET3
                STORE   DELVSIN
FLAGOFF         CALL
                        S34/35.4
                EXIT
                CAF     V06N59
                TC      VNPOOH
                TC      INTPRET
                GOTO
                        SUBEXIT

# ..... VN1645    .....
#
# SUBROUTINES USED
#       P3XORP7X
#       GET+MGA
#       BANKCALL
#       DELAYJOB
#       COMPTGO
#       GOFLASHR
#       GOTOPOOH
#       FLAGUP

VN1645          STQ     DLOAD
                        SUBEXIT
                        DP-.01
                STORE   +MGA            # MGA = -.01
                BOFF    DLOAD
                        FINALFLG
                        GET45
                        DP-.01
                DAD
                        DP-.01
                STORE   +MGA            # MGA = -.02
                BOFF    EXIT
                        REFSMFLG
                        GET45
                TC      P3XORP7X
                TC      +2              # P3X
                TC      GET45   +1      # P7X
                TC      INTPRET
                VLOAD   PUSH
                        DELVSIN
                CALL                    # COMPUTE MGA
                        GET+MGA
GET45           EXIT
                TC      COMPTGO         # INITIATE TASK TO UPDATE TTOGO
                CA      SUBEXIT
                TS      QSAVED
                CAF     1SEC
                TC      BANKCALL
                CADR    DELAYJOB
                CAF     V16N45          # TRKMKCNT, TTOGO, +MGA
                TC      BANKCALL
                CADR    GOFLASH
                TC      KILCLOCK        # TERMINATE
                TC      N45PROC         # PROCEED
                TC      CLUPDATE        # RECYCLE - RETURN FOR INITIAL COMPUTATION
KILCLOCK        CA      TWOPI
                TS      DISPDEX
                TC      GOTOPOOH
N45PROC         CS      FLAGWRD2
                MASK    BIT6
                EXTEND
                BZF     KILCLOCK        # FINALFLG IS SET-FLASH V37-AWAIT NEW PGM
                TC      PHASCHNG
                OCT     04024
                TC      UPFLAG          # SET
                ADRES   FINALFLG        # FINALFLG
CLUPDATE        CA      TWOPI
                TS      DISPDEX
                TC      PHASCHNG
                OCT     04024
                TC      INTPRET
                CLEAR   GOTO
                        UPDATFLG
                        QSAVED

# ..... DISPLAYE  .....
#
# SUBROUTINES USED
#       BANKCALL
#       GOFLASHR
#       GOTOPOOH
#       BLANKET
#       ENDOFJOB

DISPLAYE        EXTEND
                QXCH    NORMEX
                CAF     V06N55
                TCR     BANKCALL
                CADR    GOFLASHR
                TCF     GOTOPOOH
                TC      NORMEX
                TCF     -5
                CAF     BIT1            # BLANK R1
                TCR     BLANKET
                TCF     ENDOFJOB

# ..... P3XORP7X  .....

P3XORP7X        CAF     HIGH9
                MASK    MODREG
                EXTEND
                BZF     +2
                INCR    Q
                RETURN

# ..... VNPOOH   .....
#
# SUBROUTINES USED
#       BANKCALL
#       GOFLASH
#       GOTOPOOH

VNPOOH          EXTEND
                QXCH    RTRN
                TS      VERBNOUN
                CA      VERBNOUN
                TCR     BANKCALL
                CADR    GOFLASH
                TCF     GOTOPOOH
                TC      RTRN
                TCF     -5

# ..... CONSTANTS .....

V06N37          VN      0637
V06N55          VN      0655
V06N58          VN      0658
V06N59          VN      0659
V06N81          VN      0681
V16N45          VN      1645
TWOPI           2DEC    6.283185307 B-4

MAX250          2DEC    25 E3

THIRD           2DEC    .333333333

ELEPS           2DEC    .27777777 E-3
DECTWO          OCT     2
DP-.01          OCT     77777           # CONSTANTS
                OCT     61337           # ADJACENT      -.01 FOR MGA DSP

## The following constant may have been added in Sundance 302.
130DEG          2DEC    .3611111111


# ..... INITVEL .....

# MOD NO -1                     LOG SECTION - P34-P35, P74-P75
# MOD BY WHITE.P                DATE  21NOV67
#
# FUNCTIONAL DESCRIPTION
#
#       THIS SUBROUTINE COMPUTES THE REQUIRED INITIAL VELOCITY VECTOR FOR
#       A TRAJECTORY OF SPECIFIED TRANSFER TIME BETWEEN SPECIFIED INITIAL
#       AND TARGET POSITIONS.  THE TRAJECTORY MAY BE EITHER CONIC OR
#       PRECISION DEPENDING ON AN INPUT PARAMETER (NAMELY, NUMBER OF
#       OFFSETS).  IN ADDITION, IN THE PRECISION TRAJECTORY CASE, THE
#       SUBROUTINE ALSO COMPUTES AN OFFSET TARGET VECTOR, TO BE USED
#       DURING PURE-CONIC CROSS-PRODUCT STEERING.  THE OFFSET TARGET
#       VECTOR IS THE TERMINAL POSITION VECTOR OF A CONIC TRAJECTORY WHICH
#       HAS THE SAME INITIAL STATE AS A PRECISION TRAJECTORY WHOSE
#       TERMINAL POSITION VECTOR IS THE SPECIFIED TARGET VECTOR.
#
#       IN ORDER TO AVOID THE INHERENT SINGULARITIES IN THE 180 DEGREE
#       TRANSFER CASE WHEN THE (TRUE OR OFFSET) TARGET VECTOR MAY BE
#       SLIGHTLY OUT OF THE ORBITAL PLANE, THIS SUBROUTINE ROTATES THIS
#       VECTOR INTO A PLANE DEFINED BY THE INPUT INITIAL POSITION VECTOR
#       AND ANOTHER INPUT VECTOR (USUALLY THE INITIAL VELOCITY VECTOR),
#       WHENEVER THE INPUT TARGET VECTOR LIES INSIDE A CONE WHOSE VERTEX
#       IS THE ORIGIN OF COORDINATES, WHOSE AXIS IS THE 180 DEGREE
#       TRANSFER DIRECTION, AND WHOSE CONE ANGLE IS SPECIFIED BY THE USER.
#
#       THE LAMBERT SUBROUTINE IS UTILIZED FOR THE CONIC COMPUTATIONS AND
#       THE COASTING INTEGRATION SUBROUTINE IS UTILIZED FOR THE PRECISION
#       TRAJECTORY COMPUTATIONS.
#
# CALLING SEQUENCE
#
#       L       CALL
#       L+1             INITVEL
#       L+2     (RETURN - ALWAYS)
#
# INPUT
#
#       (1)     RINIT           INITIAL POSITION RADIUS VECTOR
#       (2)     VINIT           INITIAL POSITION VELOCITY VECTOR
#       (3)     RTARG           TARGET POSITION RADIUS VECTOR
#       (4)     DELLT4          DESIRED TIME OF FLIGHT FROM RINIT TO RTARG
#       (5)     INTIME          TIME OF RINIT
#       (6)     0D              NUMBER OF ITERATIONS OF LAMBERT/INTEGRVS
#       (7)     2D              ANGLE TO 180 DEGREES WHEN ROTATION STARTS
#       (8)     X1              -2 FOR EARTH, -10D FOR LUNAR
#       (9)     B29FLAG         CLEAR IF EARTH IS CENTRAL BODY
#       PUSHLOC SET AT 4D
#
# OUTPUT
#
#       (1)     RTARG           OFFSET TARGET POSITION VECTOR
#       (2)     VIPRIME         MANEUVER VELOCITY REQUIRED
#       (3)     VTPRIME         VELOCITY AT TARGET AFTER MANEUVER
#       (4)     DELVEET3        DELTA VELOCITY REQUIRED FOR MANEUVER
#
# SUBROUTINES USED
#
#       LAMBERT
#       INTSTALL
#       INTEGRVS

                SETLOC  INTVEL
                BANK

                COUNT*  $$/INITV
EPSFOUR         2DEC    .0416666666

PREINITV        SETPD   CLEAR
                        0
                        B29FLAG
                PDDL    PDVL
                        EPSFOUR
                        RACT3
                STOVL   RINIT
                        VACT3
                STORE   VINIT
                AXC,1   BOFF
                        2D
                        CMOONFLG
                        INITVEL
                SET     AXC,1
                        B29FLAG
                        10D

INITVEL         SET                     # COGA GUESS NOT AVAILABLE
                        GUESSW
HAVEGUES        STQ
                        RTRN
                SXA,1   BOFF
                        X1INPUT
                        B29FLAG
                        INITVEL1
                VLOAD   VSL2
                        RINIT           # B29
                STOVL   RINIT           # B27
                        VINIT           # B7
                VSL2
                STOVL   VINIT           # B5
                        RTARG
                VSL2
                STORE   RTARG
# INITIALIZATION

INITVEL1        SSP     DLOAD           # SET ITCTR TO -1,LOAD MPAC WITH E4 (PL 2D)
                        ITCTR
                        0 -1
                COSINE  SR1             # CALCULATE COSINE (E4)   (+2)
                STODL   COZY4           # SET COZY4 TO COSINE (E4)          (PL 0D)
                LXA,2   SXA,2
                        MPAC
                        VTARGTAG        # SET VTARGTAG TO 0D (SP)
                VLOAD
                        RINIT
                STOVL   R1VEC           # R1VEC EQ RINIT
                        RTARG
                STODL   R2VEC           # R2VEC EQ RTARG
                        DELLT4
                STORE   TDESIRED        # TDESIRED EQ DELLT4
                SETPD   VLOAD
                        0D              # INITIALIZE PL TO 0D
                        RINIT           # MPAC EQ RINIT (+29)
                UNIT    PUSH            # UNIT(RI) (+1)                     (PL 6D)
                VXV     UNIT
                        VINIT           # MPAC EQ UNIT(RI) X VI   (+8)
                STOVL   UN
                        RTARG
                UNIT    DOT             # TEMP=URT.URI (+2)                 (PL 0D)
                DAD     CLEAR
                        COZY4
                        NORMSW
                STORE   COZY4
INITVEL2        BPL     SET
                        INITVEL3        # UN CALCULATED IN LAMBERT
                        NORMSW

# ROTATE RC INTO YC PLANE - SET UNIT NORMAL TO YC

                VLOAD   PUSH            #                                   (PL 6D)
                        R2VEC           # RC TO 6D (+29)
                ABVAL   PDVL            # RC TO MPAC, ABVAL(RC) (+29) TO OD (PL 2D)
                PUSH    VPROJ           #                                   (PL 8D)
                        UN
                VSL2    BVSU
                UNIT    VXSC            #                                   (PL 0D)
                VSL1
                STORE   R2VEC
                TLOAD   SLOAD
                        ZEROVEC
                        ITCTR
                BPL     VLOAD
                        INITVEL3
                        R2VEC
                STORE   RTARG
INITVEL3        DLOAD   PDVL            #                                   (PL 2D)
                        EPSFOUR         # POSITIVE VALUE
                        UN
                VXV     DOT             #                                   (PL 2D)
                        R1VEC
                        R2VEC
                BPL     DLOAD           #                                   (PL 0D)
                        INITVEL4
                DCOMP   PUSH            #                                   (PL 2D)
INITVEL4        LXA,2   SXA,2
                        0D
                        GEOMSGN
# SET INPUTS UP FOR LAMBERT

                SSP     BOFF
                        ITERCTR
                        20D
                        AVEGFLAG
                        +4
                SSP
                        ITERCTR
                        5
                LXA,1   CALL
                        X1INPUT
#  OPERATE THE LAMBERT CONIC ROUTINE (COASTFLT SUBROUTINE)

                        LAMBERT

#       DELETE THRU 4521
# ARRIVED AT SOLUTION IS GOOD ENOUGH ACCORDING TO SLIGHTLY WIDER BOUNDS.

                CLEAR   VLOAD
                        GUESSW
                        VVEC

# STORE CALCULATED INITIAL VELOCITY REQUIRED IN VIPRIME

                STODL   VIPRIME         # INITIAL VELOCITY REQUIRED (+7)

#    IF NUMIT IS ZERO, CONTINUE AT INITVELB, OTHERWISE
# SET UP INPUTS FOR ENCKE INTEGRATION (INTEGRVS).

                        VTARGTAG
                BHIZ    CALL
                        INITVEL7
                        INTSTALL

                LXA,2   INCR,2
                        X1INPUT
                        2D
                SLOAD   CLEAR
                        X2
                        MOONFLAG
                BHIZ    SET
                        INITVEL5
                        MOONFLAG
INITVEL5        VLOAD
                        RINIT
                STORE   R1VEC
                STOVL   RCV
                        VIPRIME
                STODL   VCV
                        INTIME
                STORE   TET
                DAD     CLEAR
                        DELLT4
                        INTYPFLG
                STCALL  TDEC1
                        INTEGRVS
                VLOAD
                        VATT1
                STORE   VTARGET
# IF ITERATION COUNTER (ITCTR) EQ NO. ITERATIONS (NUMIT), CONTINUE AT
# INITVELC, OTHERWISE REITERATE LAMBERT AND ENCKE

                LXA,2   INCR,2
                        ITCTR
                        1D              # INCREMENT ITCTR
                SXA,2   XSU,2
                        ITCTR
                        VTARGTAG
                SLOAD   BHIZ            # IF SP(MPAC) EQ 0, CONTINUE AT INITVELC
                        X2
                        INITVEL6

# OFFSET CONIC TARGET VECTOR

                VLOAD   VSU
                        RTARG
                        RATT1
                VAD
                        R2VEC
                STODL   R2VEC
                        COZY4
                GOTO
                        INITVEL2        # CONTINUE ITERATING AT INITVEL2
# COMPUTE THE DELTA VELOCITY

INITVEL6        VLOAD
                        R2VEC
                STORE   RTARG
INITVEL7        VLOAD   VSU
                        VIPRIME
                        VINIT
                STOVL   DELVEET3        # DELVEET3 = VIPRIME-VINIT (+7)
                        VTARGET
                STORE   VTPRIME
                BOFF    VSR2
                        B29FLAG
                        INITVELX
                STOVL   VTPRIME
                        VIPRIME
                VSR2
                STOVL   VIPRIME
                        RTARG
                VSR2
                STOVL   RTARG
                        DELVEET3
                VSR2
                STORE   DELVEET3
INITVELX        SETPD   LXA,1
                        0D
                        X1INPUT
                GOTO
                        RTRN

# ..... END OF INITVEL ROUTINE .....

# ..... MIDGIM .....

# MOD NO. 0, BY WILLMAN, SUBROUTINE RENDGUID, LOG P34-P35, P74-P75
#  REVISION 03, 17 FEB 67
#
# IF THE ACTIVE VEHICLE IS DOING THE COMPUTATION, MIDGIM COMPUTES
# THE POSITIVE MIDDLE GIMBAL ANGLE OF THE ACTIVE VEHICLE TO THE INPUT
# DELTA VELOCITY VECTOR (0D IN PUSH LIST), OTHERWISE
# MIDGIM CONVERTS THE INPUT DELTA VELOCITY VECTOR FROM INERTIAL COORDIN-
# ATES TO LOCAL VERTICAL COORDINATES OF THE ACTIVE VEHICLE.
#
# .. INPUTS ..
#
#       NAME    MEANING                                         UNITS/SCALING/MODE
#
#       AVFLAG  INT FLAG - 0 IS CSM ACTIVE, 1 IS LEM ACTIVE                     BIT
#      COMPUTER INT FLAG - 0 IS LEM COMPUTER, 1 IS CSM COMPUTER                 BIT
#       RINIT   ACTIVE VEHICLE RADIUS VECTOR                    METERS/CSEC (+7) VT
#       VINIT   ACTIVE VEHICLE VELOCITY VECTOR                  METERS/CSEC (+7) VT
#       0D(PL)  ACTIVE VEHICLE DELTA VELOCITY VECTOR            METERS/CSEC (+7) VT
#
# .. OUTPUTS ..
#
#    NAME       MEANING                                         UNITS/SCALING/MODE
#
#    +MGA       + MIDDLE GIMBAL ANGLE                           REVOLUTIONS (+0) DP
#    DELVLVC    DELTA VELOCITY VECTOR IN LV COORD.              METERS/CSEC (+7) VT
#    MGLVFLAG   INT FLAG - 0 IS +MGA COMPUTED, 1 IS DELVLVC COMP.       -       BIT
#
# .. CALLING SEQUENCE ..
#
#       L       CALL
#       L+1             MIDGIM
#       L+2     (RETURN - ALWAYS)
#
# .. NO SUBROUTINES CALLED ..
#
# .. DEBRIS - ERASEABLE TEMPORARY USAGE
#
#       A,Q,L, PUSH LIST, MPAC.
#
# .. ALARMS - NONE ..

# MIDDLE GIMBAL ANGLE COMPUTATION.

                SETLOC  MIDDGIM
                BANK

                COUNT*  $$/MIDG

HALFREV         2DEC    1 B-1

MIDGIM          BON     BOFF    
                        AVFLAG
                        MIDGIM1
                        COMPUTER
                        GET.LVC
# COMPUTE +MGA IF AVFLAG AND COMPUTER HAVE OPPOSITE VALUES.
GET+MGA         VLOAD   UNIT            # (PL 0D) V (+7) TO MPAC, UNITIZE  UV (+1)
                DOT     SL1             # DOT UV WITH Y(STABLE MEMBER) AND RESCALE
                        REFSMMAT +6     #  FROM +2 TO +1 FOR ASIN ROUTINE
                ARCSIN  BPL
                        SETMGA
                DAD     DAD             # CONVERT -MGA TO +MGA BY
                        HALFREV         # ADDING ONE REVOLUTION
                        HALFREV
SETMGA          STORE   +MGA
                CLR     RVQ             # CLEAR MGLVFLAG TO INDICATE +MGA CALC
                        MGLVFLAG        #     AND EXIT
MIDGIM1         BOFF
                        COMPUTER
                        GET+MGA
# COMPUTE DELVLVC IF AVFLAG AND COMPUTER HAVE SAME VALUES.
GET.LVC         VLOAD   UNIT            # (PL 6D) R (+29) IN MPAC, UNITIZE UR
                        RINIT
                VCOMP                   # U(-R)
                STORE   18D             # U(-R) TO 18D
                VXV     UNIT            # U(-R)*V EQ V*U(R), U(V*R)
                        VINIT
                STORE   12D             # U(V*R) TO 12D
                VXV     UNIT            # U(V*R)*U(-R), U((V*R)*(-R))
                        18D
                STOVL   6D              # TRANSFORMATION MATRIX IS IN 6D (+1)
                        0D              # DELTA V (+7) IN 0D
                MXV     VSL1            # CONVERT FROM INER COOR TO LV COOR (+8)
                        6D              # AND SCALE +7 IN MPAC
                STORE   DELVLVC         # STORE IN DELVLVC (+7)
                SET     RVQ             # SET MGLVFLAG TO INDICATE LVC CALC
                        MGLVFLAG        # AND EXIT

# ..... END OF MIDGIM ROUTINE .....


SELECTMU        AXC,1   AXT,2
                        2D
                        0D
                BOFF
                        CMOONFLG
                        SETMUER
                AXC,1   AXT,2
                        10D
                        2D
SETMUER         DLOAD*  SXA,1
                        MUTABLE +4,1
                        RTX1
                STODL*  RTSR1/MU
                        MUTABLE -2,1
                BOFF    SR
                        CMOONFLG
                        RTRNMU
                        6D
RTRNMU          STORE   RTMU
                SXA,2   CLEAR
                        RTX2
                        FINALFLG
                SET     SET
                        UPDATFLG
                        TRACKFLG
                GOTO
                        VN1645

# ..... PERIAPO .....
#
# MOD NO -1                     LOG SECTION - P34-P35, P74-P75
# MOD BY WHITE.P                DATE 18JAN68
#
# FUNCTIONAL DESCRIPTION
#
#       THIS SUBROUTINE COMPUTES THE TWO BODY APOCENTER AND PERICENTER
#       ALTITUDES GIVEN THE POSITION AND VELOCITY VECTORS FOR A POINT ON
#       THE TRAJECTORY AND THE PRIMARY BODY.
#
#       SETRAD IS CALLED TO  DETERMINE THE RADIUS OF THE PRIMARY BODY.
#
#       APSIDES IS CALLED TO SOLVE FOR THE TWO BODY RADII OF APOCENTER AND
#       PERICENTER AND THE ECCENTRICITY OF THE TRAJECTORY.
#
# CALLING SEQUENCE
#
#       L       CALL
#       L+1             PERIAPO
#       L+2     (RETURN - ALWAYS)
#
# INPUT
#
#       (1)     RVEC    POSITION VECTOR IN METERS
#                       SCALE FACTOR - EARTH +29, MOON +27
#       (2)     VVEC    VELOCITY VECTOR IN METERS/CENTISECOND
#                       SCALE FACTOR - EARTH +7, MOON +5
#       (3)     X1      PRIMARY BODY INDICATOR
#                       EARTH -2, MOON -10
#
# OUTPUT
#
#       (1)     2D      APOCENTER RADIUS IN METERS
#                       SCALE FACTOR - EARTH +29, MOON +27
#       (2)     4D      APOCENTER ALTITUDE IN METERS
#                       SCALE FACTOR - EARTH +29, MOON P27
#       (3)     6D      PERICENTER RADIUS IN METERS
#                       SCALE FACTOR - EARTH +29, MOON +27
#       (4)     8D      PERICENTER ALTITUDE IN METERS
#                       SCALE FACTOR - EARTH +29, MOON +27
#       (5)     ECC     ECCENTRICITY OF CONIC TRAJECTORY
#                       SCALE FACTOR - +3
#       (6)     XXXALT  RADIUS OF THE PRIMARY BODY IN METERS
#                       SCALE FACTOR - EARTH +29, MOON +27
#       (7)     PUSHLOC EQUALS 10D
#
# SUBROUTINES USED
#
#       SETRAD
#       APSIDES

                SETLOC  APOPERI
                BANK

                COUNT*  $$/PERAP

RPAD            2DEC    6373338 B-29    # STANDARD RADIUS OF PAD 37-B.
                                        # = 20 909 901.57 FT

PERIAPO1        LXA,2   VSR*
                        RTX2
                        0,2
                STOVL   VVEC
                LXA,1   VSR*
                        RTX1
                        0,2
                STORE   RVEC
PERIAPO         STQ     CALL
                        NORMEX
                        SETRAD
                STCALL  XXXALT
                        APSIDES
                SETPD   PUSH            # 2D = APOCENTER RADIUS         B29 OR B27
                        2D
                DSU     PDDL            # 4D = APOGEE ALTITUDE          B29 OR B27
                        XXXALT
                        0D
                PUSH    DSU             # 6D = PERICENTER RADIUS        B29 OR B27
                        XXXALT
                PUSH    GOTO            # 8D = PERIGEE ALTITUDE         B29 OR B27
                        NORMEX

# SETRAD

SETRAD          DLOAD   PUSH
                        RPAD
                SXA,1   INCR,2
                        X2
                        2D
                SLOAD   BHIZ
                        X2
                        SETRADX
                VLOAD   ABVAL
                        RLS
                PDDL
SETRADX         DLOAD   RVQ

# PRECSET

PRECSET         STQ
                        NORMEX
                STCALL  TDEC2
                        LEMPREC
                CALL
                        LEMSTORE
                DLOAD
                        TDEC2
                STCALL  TDEC1
                        CSMPREC
                CALL
                        CSMSTORE
                GOTO
                        NORMEX
LEMSTORE        VLOAD   BOFF
                        RATT
                        AVFLAG
                        PASSIVE
ACTIVE          STOVL   RACT3
                        VATT
                STORE   VACT3
                RVQ
CSMSTORE        VLOAD   BOFF
                        RATT
                        AVFLAG
                        ACTIVE
PASSIVE         STOVL   RPASS3
                        VATT
                STORE   VPASS3
                RVQ

# VECSHIFT 
VECSHIFT        LXA,2   VSR*
                        RTX2
                        0,2
                LXA,1   PDVL
                        RTX1
                VSR*    PDVL
                        0,2
                RVQ

# SHIFTR1

SHIFTR1         LXA,2   SL*
                        RTX2
                        0,2
                RVQ


# PROGRAM DESCRIPTION
# SUBROUTINE NAME       R36     OUT-OF-PLANE RENDEZVOUS ROUTINE
# MOD NO. 0             DATE    22 DECEMBER 67
# MOD BY N.M.NEVILLE    LOG SECTION EXTENDED VERBS
# FUNCTIONAL DESCRIPTION
#
# TO DISPLAY AT ASTRONAUT REQUEST LGC CALCULATED RENDEZVOUS
# OUT-OF-PLANE PARAMETERS (Y , YDOT , PSI). (REQUESTED BY DSKY).
#
# CALLING SEQUENCE
#
# ASTRONAUT REQUEST THROUGH DSKY V 90 E
#
# SUBROUTINES CALLED
#
# EXDSPRET
# GOMARKF
# CSMPREC
# LEMPREC
# SGNAGREE
# LOADTIME
#
# NORMAL EXIT MODES
#
# ASTRONAUT REQUEST THROUGH DSKY TO TERMINATE PROGRAM V 34 E
#
# ALARM OR ABORT EXIT MODES
#
# NONE
#
# OUTPUT
#
# DECIMAL DISPLAY OF TIME , Y , YDOT AND PSI
#
# DISPLAYED VALUES Y , YDOT , AND PSI , ARE STORED IN ERASABLE
# REGISTERS RANGE , RRATE AND RTHETA RESPECTIVELY.
#
# ERASABLE INITIALIZATION REQUIRED
#
# CSM AND LEM STATE VECTORS
#
# DEBRIS
#
# CENTRALS A,Q,L
# OTHER THOSE USED BY THE ABOVE LISTED SUBROUTINES

                BANK    20
                SETLOC  R36LM
                BANK
                EBANK=  RPASS36

                COUNT*  $$/R36

## The following call to SETXDSP may have been added in Sundance 302. Whether it was,
## and where exactly it was, is currently unclear. Our current thinking is that it
## occurred here, right at the beginning, since this is similar to what R32 does.
R36             TC      SETXDSP
                ZL
                CAF     ZERO            # SET TIME OF EVENT TO ZERO FOR FIRST
                DXCH    DSPTEMX         # DISPLAY
                CAF     V06N16N
                TC      BANKCALL
                CADR    GOMARKF
                TCF     ENDEXT          # TERMINATE
                TCF     +2              # PROCEED
                TCF     -5              # RECYCLE FOR ASTRONAUT INPUT TIME
                DXCH    DSPTEMX
                EXTEND
                BZF     LREGCHK         # A-REG ZERO GOTO CHECK L-REG FOR ZERO
ASTROTIM        DXCH    MPAC            # A-REG NON-ZERO, TIME = ASTRO INPUT TIME
                TC      INTPRET
                RTB
                        DPMODE
R36INT          STCALL  TDEC1
                        OTHPREC
                VLOAD   PDVL
                        VATT
                        RATT            # -
                STORE   RPASS36         # R
                UNIT    PDVL            #  P
                VXV     UNIT            # -
                STADR
                STODL   UNP36           # U
                        TAT
                STCALL  TDEC1
                        THISPREC
                VLOAD   PDVL            #                 -
                        VATT            # VELOCITY VECTOR V             00D
                        RATT            #                  A
                PDDL
                        TAT             # SAVE TIME IN LOCATION 30D FOR REDISPLAY
                STOVL   30D             #                 -
                PUSH    PUSH            # POSITION VECTOR R  IN 06D AND 12D
                BVSU    PDVL            #                  A   -   -
                        RPASS36         # LINE OF SIGHT VECTOR R - R    12D
                DOT     SL1             #                       P   A
                        UNP36           #     -   -
                STOVL   RANGE           # Y = U . R
                        00D             #          A
                DOT     SL1
                        UNP36           # .   -   -
                STOVL   RRATE           # Y = U . V
                        06D             # -        A  -
                UNIT    PUSH            # U  = UNIT ( R  )              18D
                VXV     VXV             #  RA          A
                        00D             #  -    -     -     -
                        18D             # (U  X V ) X U   = U
                VSL2    UNIT            #   RA   A     RA    A
## The following UNIT was added in Sundance 302.
                UNIT
                STOVL   00D             # UNIT HORIZONTAL IN FORWARD DIR. 00D
                        18D
                DOT     VXSC            # -
                        12D             # U
                VSL2                    #  L
                BVSU    UNIT
## The following UNIT was added in Sundance 302.
                UNIT
                PUSH    DOT             # LOS PROJECTED INTO HORIZONTAL  12D
                        00D             # PLANE
                SL1     ARCCOS          #              -   -
                STOVL   RTHETA          # PSI = ARCCOS(U . U )
                VXV     DOT             #               A   L
                        00D
                BPL     DLOAD
                        R36TAG2
                        LODPMAX
                DSU
                        RTHETA
                STORE   RTHETA
R36TAG2         DLOAD   RTB
                        30D
                        SGNAGREE
                STORE   DSPTEMX
                EXIT
                CAF     V06N90N         #  DISPLAY Y , YDOT , AND PSI
                TC      BANKCALL
                CADR    GOMARKF
                TCF     ENDEXT          # TERMINATE
                TCF     ENDEXT          # PROCEED , END OF PROGRAM
                TCF     R36     +3      # REDISPLAY OUTPUT
LREGCHK         XCH     L
                EXTEND
                BZF     ENTTIM2         # L-REG ZERO, SET TIME = PRESENT TIME
                XCH     L               # L-REG NON ZERO, TIME = ASTRO INPUT TIME
                TCF     ASTROTIM
ENTTIM2         TC      INTPRET
                RTB     GOTO
                        LOADTIME
                        R36INT
V06N16N         VN      00616
V06N90N         VN      00690
back to top