https://github.com/virtualagc/virtualagc
Revision 3577d0b1de1ac147c1710524517c563b2bfe231c authored by Ronald Burkey on 30 May 2021, 19:14:00 UTC, committed by GitHub on 30 May 2021, 19:14:00 UTC
Issue 1143: Fix various symbol name and other minor typos
2 parent s bc21d6b + 8d274f6
Raw File
Tip revision: 3577d0b1de1ac147c1710524517c563b2bfe231c authored by Ronald Burkey on 30 May 2021, 19:14:00 UTC
Merge pull request #1147 from smithery1/Issue/1143
Tip revision: 3577d0b
PLANETARY_INERTIAL_ORIENTATION.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    PLANETARY_INERTIAL_ORIENTATION.agc
## Purpose:     The main source file for Luminary revision 069.
##              It is part of the source code for the original release
##              of the flight software for the Lunar Module's (LM) Apollo
##              Guidance Computer (AGC) for Apollo 10. The actual flown
##              version was Luminary 69 revision 2, which included a
##              newer lunar gravity model and only affected module 2.
##              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. 1135-1143
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2016-12-13 MAS  Created from Luminary 99.
##              2016-12-18 MAS  Updated from comment-proofed Luminary 99 version.
##              2016-12-24 RRB  Updated for Luminary 69.
##              2017-01-22 HG   Fix operand PLANTIN1 -> PLANTIN
##              2017-01-23 HG   Fix operand LO6ZEROS -> HI6ZEROS
##		2017-01-28 RSB	Proofed comment text using octopus/prooferComments
##				and fixed errors found.

## Page 1135
# ..... RP-TO-R SUBROUTINE .....
# SUBROUTINE TO CONVERT RP (VECTOR IN PLANETARY COORDINATE SYSTEM, EITHER
#  EARTH-FIXED OR MOON-FIXED) TO R (SAME VECTOR IN THE BASIC REF. SYSTEM)
#
#       R = MT(T)*(RP + LP X RP)        MT = M MATRIX TRANSPOSE
#
# CALLING SEQUENCE
#       L       CALL
#       L+1             RP-TO-R
#
# SUBROUTINES USED
#       EARTHMX,MOONMX,EARTHL
#
#       ITEMS AVAILABLE FROM LAUNCH DATA
#               504LM = THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED
#                       IN THE MOON-FIXED COORD. SYSTEM         RADIANS B0
#
#       ITEMS NECESSARY FOR SUBR. USED (SEE DESCRIPTION OF SUBR.)
#
# INPUT
#       MPAC= 0 FOR EARTH, NON-ZERO FOR MOON
#       0-5D= RP VECTOR
#       6-7D= TIME
#
# OUTPUT
#       MPAC = R VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON

                SETLOC  PLANTIN
                BANK

                COUNT*  $$/LUROT

RP-TO-R         STQ     BHIZ
                        RPREXIT
                        RPTORA
                CALL                    # COMPUTE M MATRIX FOR MOON
                        MOONMX          # LP=LM FOR MOON  RADIANS B0
                VLOAD
                        504LM
RPTORB          VXV     VAD
                        504RPR
                        504RPR
                VXM     GOTO
                        MMATRIX         # MPAC=R=MT(T)*(RP+LPXRP)
                        RPRPXXXX        # RESET PUSHLOC TO 0 BEFORE EXITING
RPTORA          CALL                    # EARTH COMPUTATIONS
                        EARTHMX         # M MATRIX B-1
                CALL
                        EARTHL          # L VECTOR RADIANS B0
                MXV     VSL1            # LP=M(T)*L  RAD B-0
                        MMATRIX
## Page 1136
                GOTO
                        RPTORB

## Page 1137
# ..... R-TO-RP SUBROUTINE .....
# SUBROUTINE TO CONVERT R (VECTOR IN REFERENCE COORD. SYSTEM) TO RP
# (VECTOR IN PLANETARY COORD SYSTEM) EITHER EARTH-FIXED OR MOON-FIXED
#
#       RP = M(T)*(R - L X R)
#
# CALLING SEQUENCE
#       L       CALL
#       L+1             R-TO-RP
#
# SUBROUTINES USED
#       EARTHMX,MOONMX,EARTHL
#
# INPUT
#       MPAC= 0 FOR EARTH,NON-ZERO FOR MOON
#       0-5D= R VECTOR
#       6-7D= TIME
#
#       ITEMS AVAILABLE FROM LAUNCH DATA
#               504LM = THE LIBRATION VECTOR L OF THE MOON AT TIME TIMSUBL,EXPRESSED
#                       IN THE MOON-FIXED COORD. SYSTEM   RADIANS B0
#
#       ITEMS NECESSARY FOR SUBROUTINES USED (SEE DESCRIPTION OF SUBR.)
#
# OUTPUT
#       MPAC = RP VECTOR METERS B-29 FOR EARTH, B-27 FOR MOON

R-TO-RP         STQ     BHIZ
                        RPREXIT
                        RTORPA
                CALL
                        MOONMX
                VLOAD   VXM
                        504LM           # LP=LM
                        MMATRIX
                VSL1                    #  L=MT(T)*LP  RADIANS B0
RTORPB          VXV     BVSU
                        504RPR
                        504RPR
                MXV                     # M(T)*(R-LXR) B-2
                        MMATRIX
RPRPXXXX        VSL1    SETPD
                        0D
                GOTO
                        RPREXIT
RTORPA          CALL                    # EARTH COMPUTATIONS
                        EARTHMX
                CALL
                        EARTHL
                GOTO                    # MPAC=L=(-AX,-AY,0) RAD B-0
                        RTORPB

## Page 1138
# ..... MOONMX SUBROUTINE .....
# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE MOON
#
# CALLING SEQUENCE
#       L       CALL
#       L+1             MOONMX
#
# SUBROUTINES USED
#       NEWANGLE
#
# INPUT
#       6-7D= TIME
#
#       ITEMS AVAILABLE FROM LAUNCH DATA
#               BSUBO,BDOT
#               TIMSUBO,NODIO,NODDOT,FSUBO,FDOT
#               COSI= COS(I)    B-1
#               SINI= SIN(I)    B-1
#                 I IS THE ANGLE BETWEEN THE MEAN LUNAR EQUATORIAL PLANE AND THE
#                 PLANE OF THE ECLIPTIC (1 DEGREE 32.1 MINUTES)
#
# OUTPUT
#       MMATRIX= 3X3 M MATRIX B-1       (STORED IN VAC AREA)

MOONMX          STQ     SETPD
                        EARTHMXX
                        8D
                AXT,1                   # B REQUIRES SL 0, SL 5 IN NEWANGLE
                        5
                DLOAD   PDDL            # PD 10D        8-9D=BSUBO
                        BSUBO           #               10-11D=BDOT
                        BDOT
                PUSH    CALL            # PD 12D
                        NEWANGLE        # EXIT WITH PD 8D AND MPAC= B   REVS B0
                PUSH    COS             # PD 10D
                STODL   COB             # PD 8D         COS(B) B-1
                SIN                     #               SIN(B) B-1
                STODL   SOB             # SETUP INPUT FOR NEWANGLE
                        FSUBO           #                       8-9D=FSUBO
                PDDL    PUSH            # PD 10D THEN 12D       10-11D=FDOT
                        FDOT
                AXT,1   CALL            # F REQUIRES SL 1, SL 6 IN NEWANGLE
                        4
                        NEWANGLE        # EXIT WITH PD 8D AND MPAC= F REVS B0
                STODL   AVECTR +2       # SAVE F TEMP
                        NODIO           #                       8-9D=NODIO
                PDDL    PUSH            # PD 10D THEN 12D       10-11D=NODDOT
                        NODDOT          #                       MPAC=T
                AXT,1   CALL            # NODE REQUIRES SL 0, SL 5 IN NEWANGLE
                        5
                        NEWANGLE        # EXIT WITH PD 8D AND MPAC= NODI REVS B0
## Page 1139
                PUSH    COS             # PD 10D        8-9D= NODI REVS B0
                PUSH                    # PD 12D        10-11D= COS(NODI) B-1
                STORE   AVECTR
                DMP     SL1R
                        COB             #                        COS(NODI) B-1
                STODL   BVECTR +2       # PD 10D  20-25D=AVECTR= COB*SIN(NODI)
                DMP     SL1R            #                        SOB*SIN(NODI)
                        SOB
                STODL   BVECTR +4       # PD 8D
                SIN     PUSH            # PD 10D                -SIN(NODI) B-1
                DCOMP                   #         26-31D=BVECTR= COB*COS(NODI)
                STODL   BVECTR          # PD 8D                  SOB*COS(NODI)
                        AVECTR +2       # MOVE F FROM TEMP LOC. TO 504F
                STODL   504F
                DMP     SL1R
                        COB
                STODL   AVECTR +2
                        SINNODI         # 8-9D=SIN(NODI) B-1
                DMP     SL1R
                        SOB
                STODL   AVECTR +4       #                        0
                        HI6ZEROS        #       8-13D= CVECTR= -SOB  B-1
                PDDL    DCOMP           # PD 10D                COB
                        SOB
                PDDL    PDVL            # PD 12D THEN PD 14D
                        COB
                        BVECTR
                VXSC    PDVL            # PD 20D        BVECTR*SINI  B-2
                        SINI
                        CVECTR
                VXSC    VAD             # PD 14D        CVECTR*COSI  B-2
                        COSI
                VSL1
                STOVL   MMATRIX +12D    # PD 8D  M2=BVECTR*SINI+CVECTR*COSI  B-1
                VXSC    PDVL            # PD 14D
                        SINI            #               CVECTR*SINI  B-2
                        BVECTR
                VXSC    VSU             # PD 8D         BVECTR*COSI  B-2
                        COSI
                VSL1    PDDL            # PD 14D
                        504F            # 8-13D=DVECTR=BVECTR*COSI-CVECTR*SINI  B-1
                COS     VXSC
                        DVECTR
                PDDL    SIN             # PD 20D  14-19D= DVECTR*COSF  B-2
                        504F
                VXSC    VSU             # PD 14D          AVECTR*SINF  B-2
                        AVECTR
                VSL1
                STODL   MMATRIX +6      # M1= AVECTR*SINF-DVECTR*COSF  B-1
                        504F
## Page 1140
                SIN     VXSC            # PD 8D
                PDDL    COS             # PD 14D  8-13D=DVECTR*SINF B-2
                        504F
                VXSC    VAD             # PD 8D         AVECTR*COSF B-2
                        AVECTR
                VSL1    VCOMP
                STCALL  MMATRIX         # M0= -(AVECTR*COSF+DVECTR*SINF)  B-1
                        EARTHMXX

# COMPUTE X=X0+(XDOT)(T+T0)
# 8-9D= XO (REVS B-0), PUSHLOC SET AT 12D
# 10-11D=XDOT (REVS/CSEC) SCALED B+23 FOR WEARTH,B+28 FOR NODDOT AND BDOT
#                       AND B+27 FOR FDOT
#  X1=DIFFERENCE IN 23 AND SCALING OF XDOT,=0 FOR WEARTH,5 FOR NODDOT AND
#                                       BDOT AND 4 FOR FDOT
# 6-7D=T (CSEC B-28), TIMSUBO= (CSEC B-42 TRIPLE PREC.)

NEWANGLE        DLOAD   SR              # ENTER PD 12D
                        6D
                        14D
                TAD     TLOAD           # CHANGE MODE TO TP
                        TIMSUBO
                        MPAC
                STODL   TIMSUBM         # T+T0 CSEC B-42
                        TIMSUBM +1
                DMP                     # PD 10D        MULT BY XDOT IN 10-11D
                SL*     DAD             # PD 8D         ADD XO IN 8-9D AFTER SHIFTING
                        5,1             #               SUCH THAT SCALING IS B-0
                PUSH    SLOAD           # PD 10D  SAVE PARTIAL (X0+XDOT*T) IN 8-9D
                        TIMSUBM
                SL      DMP
                        9D
                        10D             # XDOT
                SL*     DAD             # PD 8D         SHIFT SUCH THAT THIS PART OF X
                        10D,1           #               IS SCALED REVS/CSEC B-0
                BOV                     # TURN OFF OVERFLOW IF SET BY SHIFT
                        +1              # INSTRUCTION BEFORE EXITING
                RVQ                     # MPAC=X= X0+(XDOT)(T+T0)  REVS B0

## Page 1141
# ..... EARTHMX SUBROUTINE .....
# SUBROUTINE TO COMPUTE THE TRANSFORMATION MATRIX M FOR THE EARTH
#
# CALLING SEQUENCE
#       L       CALL
#       L+1             EARTHMX
#
# SUBROUTINES USED
#       NEWANGLE
#
# INPUT
#       INPUT AVAILABLE FROM LAUNCH DATA        AZO  REVS B-0
#                                               TEPHEM  CSEC B-42
#       6-7D= TIME CSEC B-28
#
# OUTPUT
#       MMATRIX= 3X3 M MATRIX B-1       (STORED IN VAC AREA)

                BANK    26
                SETLOC  PLANTIN1
                BANK
                COUNT*  $$/LUROT

EARTHMX         STQ     SETPD           # SET 8-9D=AZO
                        EARTHMXX
                        8D              # 10-11D=WEARTH
                AXT,1                   # FOR SL 5, AND SL 10 IN NEWANGLE
                        0
                DLOAD   PDDL            # LEAVING PD SET AT 12D FOR NEWANGLE
                        AZO
                        WEARTH
                PUSH    CALL
                        NEWANGLE
                SETPD   PUSH            # 18-19D=504AZ
                        18D             #                        COS(AZ)   SIN(AZ)     0
                COS     PDDL            # 20-37D=  MMATRIX=     -SIN(AZ)   COS(AZ)     0    B-1
                        504AZ           #                           0         0        1
                SIN     PDDL
                        HI6ZEROS
                PDDL    SIN
                        504AZ
                DCOMP   PDDL
                        504AZ
                COS     PDVL
                        HI6ZEROS
                PDDL    PUSH
                        HIDPHALF
                GOTO
                        EARTHMXX

## Page 1142
# ..... EARTHL SUBROUTINE .....
# SUBROUTINE TO COMPUTE L VECTOR FOR EARTH
#
# CALLING SEQUENCE
#       L       CALL
#       L+1             EARTHL
#
# INPUT
#       AXO,AYO SET AT LAUNCH TIME WITH AYO IMMEDIATELY FOLLOWING AXO IN CORE
#
# OUTPUT
#               -AX
#       MPAC=   -AY     RADIANS B-0
#                 0

EARTHL          DLOAD   DCOMP
                        AXO
                STODL   504LPL
                        -AYO
                STODL   504LPL +2
                        HI6ZEROS
                STOVL   504LPL +4
                        504LPL
                RVQ

## Page 1143
# CONSTANTS AND ERASABLE ASSIGNMENTS

1B1             =       DP1/2           # 1  SCALED B-1
RPREXIT         =       S1              # R-TO-RP AND RP-TO-R SUBR EXIT
EARTHMXX        =       S2              # EARTHMX,MOONMX SUBR. EXITS
504RPR          =       0D              # 6 REGS        R OR RP VECTOR
SINNODI         =       8D              # 2             SIN(NODI)
DVECTR          =       8D              # 6             D VECTOR MOON
CVECTR          =       8D              # 6             C VECTR MOON
504AZ           =       18D             # 2            AZ
TIMSUBM         =       14D             # 3             TIME SUB M (MOON) T+T0 IN GETAZ
504LPL          =       14D             # 6             L OR LP VECTOR
AVECTR          =       20D             # 6             A VECTOR (MOON)
BVECTR          =       26D             # 6             B VECTOR (MOON)
MMATRIX         =       20D             # 18            M MATRIX
COB             =       32D             # 2             COS(B) B-1
SOB             =       34D             # 2             SIN(B) B-1
504F            =       6D              # 2             F(MOON)

back to top