Raw File
P51-P53.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    P51-P53.agc
## Purpose:     A section of a reconstructed, mixed version of Sundance
##              It is part of the reconstructed source code for the Lunar
##              Module's (LM) Apollo Guidance Computer (AGC) for Apollo 9.
##              No original listings of this program are available;
##              instead, this file was created via disassembly of dumps
##              of various revisions of Sundance core rope modules.
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2020-06-17 MAS  Created from Luminary 69.

## Sundance 302

# PROGRAM NAME- PROG52                                                                   DATE- JAN 9, 1967
# MOD NO- 0                                                                              LOG SECTION- P51-P53
# MODIFICATION BY- LONSKE                                                                ASSEMBLY- SUNDANCE REV 46

# FUNCTIONAL DESCRIPTION-

#      ALIGNS THE IMU TO ONE OF THREE ORIENTATIONS SELECTED BY THE ASTRONAUT. THE PRESENT IMU ORIENTATION IS KNOWN
# AND IS STORED IN REFSMMAT. THE THREE POSSIBLE ORIENTATIONS MAY BE_

#      (A) PREFERRED ORIENTATION

#       AN OPTIMUM ORIENTATION FOR A PREVIOUSLY CALCULATED MANUEVER. THIS ORIENTATION MUST BE CALCULATED AND
#      STORED BY A PREVIOUSLY SELECTED PROGRAM.

#      (B) NOMINAL ORIENTATION
#
#          X   =  UNIT ( R )
#          -SM

#          Y  =  UNIT (V X R)
#           SM

#          Z   =  UNIT (X   X  Y  )
#           SM           SM     SM

#          WHERE_
#           R = THE GEOCENTRIC RADIUS VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT
#           -

#           V = THE INERTIAL VELOCITY VECTOR AT TIME T(ALIGN) SELECTED BY THE ASTRONAUT
#           -

#      (C) REFSMMAT ORIENTATION

#          (D)  LANDING SITE - THIS IS NOT AVAILIBLE IN SUNDANCE

#       THIS SELECTION CORRECTS THE PRESENT IMU ORIENTATION. THE PRESENT ORIENTATION DIFFERS FROM THAT TO WHICH IT
#      WAS LAST ALIGNED ONLY DUE TO GYRO DRIFT(I.E. NEITHER GIMBAL LOCK NOR IMU POWER INTERRUPTION HAS OCCURED
#      SINCE THE LAST ALIGNMENT).

#      AFTER A IMU ORIENTATION HAS BEEN SELECTED ROUTINE S52.2 IS OPERATED TO COMPUTE THE GIMBAL ANGLES USING THE
# NEW ORIENTATION AND THE PRESENT VEHICLE ATTITUDE. CAL52A THEN USES THESE ANGLES, STORED IN THETAD,+1,+2, TO
# COARSE ALIGN THE IMU. THE STAR SELECTION ROUTINE, R56, IS THEN OPERATED. IF 2 STARS ARE NOT AVAILABLE AN ALARM
# IS FLASHED TO NOTIFY THE ASTRONAUT. AT THIS POINT THE ASTRONAUT WILL MANUEVER THE VEHICLE AND SELECT 2 STARS
# EITHER MANUALLY OR AUTOMATICALLY. AFTER 2 STARS HAVE BEEN SELECTED THE IMU IS FINE ALIGNED USING ROUTINE R51. IF
# THE RENDEZVOUS NAVIGATION PROCESS IS OPERATING(INDICATED BY RNDVZFLG) P20 IS DISPLAYED. OTHERWISE P00 IS
# REQUESTED.

# CALLING SEQUENCE-

#      THE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY.

# SUBROUTINES CALLED-

#     1. FLAGDOWN      7. S52.2           13. NEWMODEX
#     2. R02BOTH       8. CAL53A          14. PRIOLARM
#     3. GOPERF4       9. FLAGUP
#     4. MATMOVE      10. R56
#     5. GOFLASH      11. R51
#     6. S52.3        12. GOPERF3

# NORMAL EXIT MODES-

#     EXITS TO ENDOFJOB

# ALARM OR ABORT EXIT MODES-

#     NONE

# OUTPUT-

#     THE FOLLOWING MAY BE FLASHED ON THE DSKY
#        1. IMU ORIENTATION CODE
#        2. ALARM CODE 215 -PREFERRED IMU ORIENTATION NOT SPECIFIED
#        3. TIME OF NEXT IGNITION
#        4. GIMBAL ANGLES
#        5. ALARM CODE 405 -TWO STARS NOT AVAILABLE
#        6. PLEASE PERFORM P00
#     THE MODE DISPLAY MAY BE CHANGED TO 20

# ERASABLE INITIALIZATION REQUIRED-

#     PFRATFLG SHOULD BE SET IF A PREFERRED ORIENTATION HAS BEEN COMPUTED.IF IT HAS BEEN COMPUTED IT IS STORED IN
#     XSMD,YSMD,ZSMD.
#     RNDVZFLG INDICATES WHETHER THE RENDEZVOUS NAVIGATION PROCESS IS OPERATING.

# DEBRIS-

#     WORK AREA
                BANK            33
                SETLOC          P50S
                BANK

                EBANK=          BESTI
                COUNT*          $$/P52
PROG52          TC              BANKCALL
                CADR            R02BOTH                 # IMU STATUS CHECK
                CAF             PFRATBIT
                MASK            FLAGWRD2                # IS PFRATFLG SET?
                CCS             A

                TC              P52A                    # YES
                CAF             BIT2                    # NO
                TC              P52A            +1
P52A            CAF             BIT1
                TS              OPTION2
P52B            CAF             BIT1
                TC              BANKCALL                # FLASH OPTION CODE AND ORIENTATION CODE
                CADR            GOPERF4R                # FLASH V04N06
                TC              GOTOPOOH
                TCF             +5                      # V33-PROCEED
                TC              P52B                    # NEW CODE - NEW ORIENTATION CODE INPUT
                TC              PHASCHNG                # DISPLAY RETURN
                OCT             00014
                TC              ENDOFJOB

                CA              OPTION2
                MASK            THREE
                INDEX           A
                TC              +1
                TC              P52T
                TC              P52J
                TC              P52T
P52E            TC              INTPRET
                GOTO
                                P52F
P52T            EXTEND
                DCA             NEG0
                DXCH            DSPTEM1
                CAF             V06N34*
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH
                TC              +2
                TC              -5
                CCS             DSPTEM1
                TCF             P52V
                TCF             +2                      # IF TIME ZERO OR NEG USE TIME2
                TCF             +1
                EXTEND
                DCA             TIME2
                DXCH            DSPTEM1
P52V            CA              OPTION2
                MASK            BIT2
                CCS             A
                TC              P52W

LSDISP          CAF             V06N89*                 # DISPLAY LAT,LONG/2, ALT
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH                # VB34 TERMINATE
                TC              +2                      # VB33 PROCEED
                TC              LSDISP                  # VB32 RECYCLE

                TC              INTPRET                 # OPTION 4 - GET LS ORIENTATION
                SET             SET
                                ERADFLAG
                                LUNAFLAG
                DLOAD           CALL
                                DSPTEM1
                                LALOTORV
                VLOAD           UNIT                    # COMPUTE LANDING SITE ORIENT (XSMD)
                                ALPHAV
                STCALL          XSMD
                                LSORIENT
                GOTO
                                P52D

# START ALIGNMENT

P52W            TC              INTPRET
                DLOAD
                                DSPTEM1                 # PICK UP ALIGN TIME
                CALL                                    # COMPUTE NOMINAL IMU
                                S52.3                   #  ORIENTATION
P52D            CALL                                    # READ VEHICLE ATTITUDE AND
                                S52.2                   #  COMPUTE GIMBAL ANGLES
                EXIT
                CAF             V06N22*
                TC              BANKCALL                # DISPLAY GIMBAL ANGLES
                CADR            GOFLASH
                TC              GOTOPOOH
                TC              REGCOARS                # V33-PROCEED, SEE IF GYRO TORQUE COARSE
                TC              INTPRET                 # RECYCLE - VEHICLE HAS BEEN MANUEVERED
                GOTO
                                P52D
REGCOARS        TC              INTPRET
                CALL                                    # DO COARSE ALIGN
                                CAL53A                  #  ROUTINE
                SET             CLEAR
                                REFSMFLG
                                PFRATFLG
P52F            CALL
                                R51
P52OUT          EXIT
                TC              GOTOPOOH
P52J            CAF             PFRATBIT
                MASK            FLAGWRD2
                CCS             A
                TC              P52H

                TC              ALARM
                OCT             215
                CAF             VB05N09
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH
                TC              -4
                TC              P52B

P52H            TC              INTPRET                 # PREFERRED OPTION, GO COMPUTE GIMBALS
                GOTO
                                P52D

VB05N09         =               V05N09
V06N22*         VN              00622
V06N34*         VN              634

V06N89*         VN              0689

# NAME -S50 ALIAS  LOCSAM
# BY
# VINCENT
# FUNCTION - COMPUTE INPUTS FOR PICAPAR  AND PLANET

#          DEFINE

#
#          U    = UNIT( SUN WRT EARTH)
#           ES

#          U    =UNIT( MOON WRT EARTH)
#           EM

#          R    =POSITION VECTOR OF LEM
#           L

#          R    =MEAN DISTANCE (384402KM) BETWEEN EARTH AND MOON
#           EM

#          P    =RATIO   R   /(DISTANCE SUN TO EARTH)    >.00257125
#                          EM

#          R    =EQUATORIAL RADIUSS (6378.166KM) OF EARTH
#           E

#          LOCSAM  COMPUTES IN EARTH INFLUENCE
#

#      VSUN   =   U
#                  ES

#     VEARTH  =   -UNIT( R  )
#                         L

#     VMOON   =    UNIT(R  .U   - R  )
#                        EM  EM    L

#     CSUN    =   COS 90

#     CEARTH  =    COS(5 + ARCSIN(R /MAG(R )))
#                                  E      L

#     CMOON   =    COS 5

#
# INPUT -  TIME IN MPAC
# OUTPUT - LISTED ABOVE
# SUBROUTINES -LSPOS,LEMPREC
# DEBRIS - VAC AREA ,TSIGHT

                SETLOC          P50S1
                BANK
                EBANK=          XSM

                COUNT*          $$/LOSAM

S50             =               LOCSAM
LOCSAM          STQ
                                QMIN
                STCALL          TSIGHT
                                LSPOS
                DLOAD
                                TSIGHT
                STCALL          TDEC1
                                LEMPREC
                SSP             TIX,2
                                S2
                                0
                                MOONCNTR
EARTCNTR        VLOAD           VXSC
                                VMOON
                                RSUBEM
                VSL1            VSU
                                RATT
                UNIT
                STOVL           VMOON
                                RATT
                UNIT            VCOMP
                STODL           VEARTH
                                RSUBE
                CALL
                                OCCOS
                STODL           CEARTH
                                CSS5
                STCALL          CMOON
                                ENDSAM
MOONCNTR        VLOAD           VXSC
                                VMOON
                                ROE
                BVSU            UNIT
                                VSUN
                STOVL           VSUN
                                VMOON
                VXSC            VAD
                                RSUBEM
                                RATT
                UNIT            VCOMP
                STOVL           VEARTH
                                RATT
                UNIT            VCOMP

                STODL           VMOON
                                RSUBM
                CALL
                                OCCOS
                STODL           CMOON
                                CSS5
                STORE           CEARTH
ENDSAM          DLOAD
                                CSSUN
                STORE           CSUN
                GOTO
                                QMIN
OCCOS           DDV             SR1
                                36D
                ASIN            DAD
                                5DEGREES
                COS             SR1
                RVQ
CEARTH          =               14D
CSUN            =               16D
CMOON           =               18D
CSS5            2DEC            .2490475                # (COS 5)/4
CSSUN           2DEC            .125                    # (COS 60)/4
5DEGREES        2DEC            .013888889              #    SCALED IN REVS

ROE             2DEC            .00257125
RSUBEM          2DEC            384402000       B-29
RSUBM           2DEC            1738090         B-29
RSUBE           2DEC            6378166         B-29

# PROGRAM NAME - R56              DATE  DEC 20 66
# MOD 1                           LOG SECTION P51-P53
#                                 ASSEMBLY  SUNDISK  REV40
# BY KEN VINCENT
#
# FUNCTION
#   THIS PROGRAM READ THE IMU-CDUS AND COMPUTES THE VEHICLE ORIENTATION
# WITH RESPECT TO INERTIAL SPACE. IT THEN COMPUTES THE SHAFT AXIS (SAX)
# WITH RESPECT TO REFERENCE INERTIAL. EACH STAR IN THE CATALOG IS TESTED
# TO DETERMINE IF IT IS OCCULTED BY EITHER THE EARTH,SUN OR MOON. IF A
# STAR IS NOT OCCULTED  THEN IT IS PAIRED WITH ALL STAR OF LOWER INDEX.
# THE PAIRED STAR  IS TESTED FOR OCCULTATION. PAIRS OF STARS THAT PASS
# THE OCCULTATION TESTS ARE TESTED FOR GOOD SEPARATION.A PAIR OF STARS
# HAVE GOOD SEPERATION IF THE ANGLE BETWEEN THEM IS LESS THAN 100 DEGREES
# AND MORE THAN 50 DEGREES. THOSE PAIRS WITH GOOD SEPARATION
# ARE THEN TESTED TO SEE IF THEY LIE IN CURRENT FIELD OF VIEW.(WITHIN
# 50 DEGREESOF SAX).THE PAIR WITH MAX SEPARATION IS CHOSEN FROM
# THOSE WITH GOOD SEPARATION,AND     IN FIELD OF VIEW.
#
# CALLING SEQUENCE
# L        TC     BANKCALL
# L+1      CADR   R56
# L+2      ERROR RETURN - NO STARS IN FIELD OF VIEW
# L+3      NORMAL RETURN
#
# OUTPUT
# BESTI,BESTJ -SINGLE PREC,INTEGERS,STAR NUMBERS TIMES 6
# VFLAG - FLAG BIT  SET IMPLIES NO STARS IN FIELD OF VIEW
#
# INITIALIZATION
# 1)A CALL TO LOCSAM MUST BE MADE
#
# DEBRIS
# WORK AREA
# X,Y,ZNB
# SINCDU,COSCDU
# STARAD - STAR +5
R56             =               PICAPAR
                COUNT*          $$/R56
PICAPAR         TC              MAKECADR
                TS              QMIN
                TC              INTPRET
                CALL
                                CDUTRIG
                CALL
                                CALCSMSC
                SETPD
                                0
                SET             DLOAD                   # VFLAG = 1
                                VFLAG

                                DPZERO
                STOVL           BESTI
                                XNB
                VXSC            PDVL
                                HALFDP
                                ZNB
                AXT,1           VXSC
                                228D                    # X1 = 37 X 6 + 6
                                HALFDP
                VAD
                VXM             UNIT
                                REFSMMAT
                STORE           SAX                     # SAX = SHAFT AXIS
                SSP             SSP                     # S1=S2=6
                                S1
                                6
                                S2
                                6
PIC1            TIX,1           GOTO                    # MAJOR STAR
                                PIC2
                                PICEND
PIC2            VLOAD*          DOT
                                CATLOG,1
                                SAX
                DSU             BMN
                                CSS33
                                PIC1
                LXA,2
                                X1
PIC3            TIX,2           GOTO
                                PIC4
                                PIC1
PIC4            VLOAD*          DOT
                                CATLOG,2
                                SAX
                DSU             BMN
                                CSS33
                                PIC3
                VLOAD*          DOT*
                                CATLOG,1
                                CATLOG,2
                DSU             BPL
                                CSS40
                                PIC3
                VLOAD*          CALL
                                CATLOG,1
                                OCCULT
                BON
                                CULTFLAG
                                PIC1

                VLOAD*          CALL
                                CATLOG,2
                                OCCULT
                BON
                                CULTFLAG
                                PIC3
STRATGY         BONCLR
                                VFLAG
                                NEWPAR
                XCHX,1          XCHX,2
                                BESTI
                                BESTJ
STRAT           VLOAD*          DOT*
                                CATLOG,1
                                CATLOG,2
                PUSH            BOFINV
                                VFLAG
                                STRAT           -3
                DLOAD           DSU
                BPL
                                PIC3
NEWPAR          SXA,1           SXA,2
                                BESTI
                                BESTJ
                GOTO
                                PIC3
OCCULT          MXV             BVSU
                                CULTRIX
                                CSS
                BZE
                                CULTED
                BMN             SIGN
                                CULTED
                                MPAC            +3
                BMN             SIGN
                                CULTED
                                MPAC            +5
                BMN             CLRGO
                                CULTED
                                CULTFLAG
                                QPRET
CULTED          SETGO
                                CULTFLAG
                                QPRET
CSS             =               CEARTH
CSS40           2DEC            .16070                  # COS 50 / 4
CSS33           2DEC            .16070                  #  COS 50 / 4
PICEND          BOFF            EXIT

                                VFLAG
                                PICGXT
                TC              PICBXT
PICGXT          LXA,1           LXA,2
                                BESTI
                                BESTJ
                VLOAD           DOT*
                                SAX
                                CATLOG,1
                PDVL            DOT*
                                SAX
                                CATLOG,2
                DSU
                BPL             SXA,1
                                PICNSWP
                                BESTJ
                SXA,2
                                BESTI
PICNSWP         EXIT
                INCR            QMIN
PICBXT          CA              QMIN
                TC              SWCALL
VPD             =               0D
V0              =               6D
V1              =               12D
V2              =               18D
V3              =               24D
DP0             =               30D
DP1             =               32D

# NAME-R51  FINE ALIGN
# FUNCTION-TO ALIGN THE STABLE MEMBER TO REFSMMAT
# CALLING SEQ- CALL  R51
# INPUT -  REFSMMAT
# OUTPUT- GYRO TORQUE PULSES
# SUBROUTINES -LOCSAM,PICAPAR,R52,R53,R54,R55
                COUNT*          $$/R51
R51             STQ
                                QMAJ
R51.1           EXIT
R51C            CAF             OCT15
                TC              BANKCALL
                CADR            GOPERF1
                TC              GOTOPOOH
                TC              +2                      # V33E
                TC              R51E                    # ENTER
                TC              INTPRET
                RTB             DAD
                                LOADTIME
                                TSIGHT1
                CALL
                                LOCSAM
                EXIT
                TC              BANKCALL
                CADR            R56
                TC              R51I
R51F            TC              R51E
R51I            TC              ALARM
                OCT             405
                CAF             VB05N09
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH
                TC              R51E
                TC              R51C
R51E            CAF             ZERO
                TS              STARIND
R51.2           TC              INTPRET
R51.3           EXIT
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              INTPRET
                CALL
                                R52                     # AOP WILL MAKE CALLS TO SIGHTING
                EXIT
                TC              BANKCALL
                CADR            AOTMARK
                TC              BANKCALL
                CADR            OPTSTALL

                TC              CURTAINS
                CCS             STARIND
                TCF             +2
                TC              R51.4
                TC              INTPRET
                VLOAD
                                STARAD          +6
                STORE           STARSAV2
                EXIT
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              INTPRET
                DLOAD           CALL
                                TSIGHT
                                PLANET
                MXV             UNIT
                                REFSMMAT
                STOVL           STARAD          +6
                                PLANVEC
                MXV             UNIT
                                REFSMMAT
                STOVL           STARAD
                                STARSAV1
                STOVL           6D
                                STARSAV2
                STCALL          12D
                                R54                     # STAR DATA TEST
                BOFF            CALL
                                FREEFLAG
                                R51K
                                AXISGEN
                CALL
                                R55                     # GYRO TORQUE
                CLEAR
                                PFRATFLG
R51K            EXIT
R51P63          CAF             OCT14
                TC              BANKCALL
                CADR            GOPERF1
                TC              GOTOPOOH
                TC              R51C
                TC              INTPRET
                GOTO
                                QMAJ
R51.4           TC              INTPRET
                VLOAD
                                STARAD          +6
                STORE           STARSAV1
                DLOAD           CALL

                                TSIGHT
                                PLANET
                STORE           PLANVEC
                SSP
                                STARIND
                                1
                GOTO
                                R51.3
TSIGHT1         2DEC            36000                   # 6 MIN TO MARKING

# R55  GYRO TORQUE
# FUNCTION-COMPUTE AND SEND GYRO PULSES
# CALLING SEQ- CALL R55
# INPUT- X,Y,ZDC- REFSMMAT WRT PRESENT STABLE MEMBER
# OUTPUT- GYRO PULSES
# SUBROUTINES- CALCGTA,GOFLASH,GODSPR,IMUFINE, IMUPULSE,GOPERF1
                COUNT*          $$/R55
R55             STQ
                                QMIN
                CALL
                                CALCGTA
PULSEM          EXIT
R55.1           CAF             V06N93
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH
                TC              R55.2
                TC              R55RET
R55.2           TC              PHASCHNG
                OCT             00214
                CA              R55CDR
                TC              BANKCALL
                CADR            IMUPULSE
                TC              BANKCALL
                CADR            IMUSTALL
                TC              CURTAINS
                TC              PHASCHNG
                OCT             05024
                OCT             13000
R55RET          TC              INTPRET
                GOTO
                                QMIN
V06N93          VN              0693
R55CDR          ECADR           OGC
R54             =               CHKSDATA
# ROUTINE NAME- CHKSDATA                                                                 DATE- JAN 9, 1967
# MOD NO- 0                                                                              LOG SECTION- P51-P53
# MODIFICATION BY- LONSKE                                                                ASSEMBLY-

# FUNCTIONAL DESCRIPTION - CHECKS THE VALIDITY OF A PAIR OF STAR SIGHTINGS. WHEN A PAIR OF STAR SIGHTINGS ARE MADE
# BY THE ASTRONAUT THIS ROUTINE OPERATES AND CHECKS THE OBSERVED SIGHTINGS AGAINST STORED STAR VECTORS IN THE
# COMPUTER TO INSURE A PROPER SIGHTING WAS MADE. THE FOLLOWING COMPUTATIONS ARE PERFORMED_

#                 OS1 = OBSERVED STAR 1 VECTOR
#                 OS2 = OBSERVED STAR 2 VECTOR
#                 SS1 = STORED STAR 1 VECTOR
#                 SS2 = STORED STAR 2 VECTOR
#                 A1  = ARCCOS(OS1 - OS2)
#                 A2  = ARCCOS(SS1 - SS2)
#                 A   = ABS(2(A1 - A2))

# THE ANGULAR DIFFERENCE IS DISPLAYED FOR ASTRONAUT ACCEPTENCE
# EXIT MODE 1. FREEFLAG SET  IMPLIES  ASTRONAUT WANTS TO PROCEED
#           2. FREEFLAG RESET IMPLIES ASTRONAUT WANTS TO RECYCLE          ERANCE)
# OUTPUT - 1.VERB 6,NOUN 3- DISPLAYS ANGULAR DIFFERENCE BETWEEN 2 SETS OF STARS.
#          2.STAR VECTORS FROM STAR CATALOG ARE LEFT IN 6D AND 12D.

# ERASABLE INITIALIZATION REQUIRED -
#          1.MARK VECTORS ARE STORED IN STARAD AND STARAD +6.
#          2.CATALOG VECTORS ARE STORED IN 6D AND 12D.
# DEBRIS -
                COUNT*          $$/R54
CHKSDATA        STQ             SET
                                QMIN
                                FREEFLAG
CHKSAB          AXC,1                                   # SET X1 TO STORE EPHEMERIS DATA
                                STARAD

CHKSB           VLOAD*          DOT*                    # CAL. ANGLE THETA
                                0,1
                                6,1
                SL1             ACOS
                STORE           THETA
                BOFF            INVERT                  # BRANCH TO CHKSD IF THIS IS 2ND PASS
                                FREEFLAG
                                CHKSD
                                FREEFLAG                # CLEAR FREEFLAG
                AXC,1           DLOAD                   # SET X1 TO MARK ANGLES
                                6D
                                THETA
                STORE           18D
                GOTO
                                CHKSB                   # RETURN TO CAL. 2ND ANGLE
CHKSD           DLOAD           DSU
                                THETA
                                18D
                ABS             RTB                     # COMPUTE POS DIFF
                                SGNAGREE
                STORE           NORMTEM1
                SET             EXIT
                                FREEFLAG
                CAF             VB6N5
                TC              BANKCALL
                CADR            GOFLASH
                TCF             GOTOPOOH
                TC              CHKSDA                  # PROCEED
                TC              INTPRET
                CLEAR           GOTO
                                FREEFLAG
                                QMIN
CHKSDA          TC              INTPRET

                GOTO
                                QMIN
VB6N5           VN              605
# NAME - CAL53A
# FUNCTION -COMPUTE DESIRED GIMBAL ANGLES AND COARSE ALIGN IF NECESSARY
# CALLING SEQUENCE - CALL CAL53A
# INPUT - X,Y,ZSMD ,CDUX,Y,Z
#         DESIRED GIMBAL ANGLES - THETAD,+1,+2
# OUTPUT - THE IMU COORDINATES ARE STORED IN REFSMMAT
# SUBROUTINES - S52.2, IMUCOARSE , IMUFINE
                COUNT*          $$/R50
CAL53A          STQ             CALL
                                29D
                                S52.2                   # MAKE ONE FINAL COMP OF GIMBLE ANGLES
                RTB             SSP
                                RDCDUS                  # READ CDUS
                                S1
                                1
                AXT,1           SETPD
                                3
                                4
CALOOP          DLOAD*          SR1
                                THETAD          +3D,1
                PDDL*           SR1
                                4,1
                DSU             ABS
                PUSH            DSU
                                DEGREE1
                BMN             DLOAD
                                CALOOP1
                DSU             BPL
                                DEG359
                                CALOOP1
COARFINE        CALL
                                COARSE
                CALL
                                NCOARSE
                GOTO
                                FINEONLY
CALOOP1         TIX,1
                                CALOOP
FINEONLY        AXC,1           AXC,2
                                XSM
                                REFSMMAT
                CALL
                                MATMOVE
                GOTO
                                29D
MATMOVE         VLOAD*                                  # TRANSFER MATRIX
                                0,1

                STORE           0,2
                VLOAD*
                                6D,1
                STORE           6D,2
                VLOAD*
                                12D,1
                STORE           12D,2
                RVQ
DEGREE1         DEC             46                      # 1 DEG SCALED CDU/2
DEG359          DEC             16338                   # 359 DEG SCALED CDU/2
RDCDUS          INHINT                                  # READ CDUS
                CA              CDUX
                INDEX           FIXLOC
                TS              1
                CA              CDUY
                INDEX           FIXLOC
                TS              2
                CA              CDUZ
                INDEX           FIXLOC
                TS              3
                RELINT
                TC              DANZIG                  #                                       +
                COUNT*          $$/INFLT
CALCSMSC        AXC,1
                                XNB

XNBNDX          DLOAD           DMP
                                SINCDUY
                                COSCDUZ
                DCOMP
                PDDL            SR1
                                SINCDUZ
                PDDL            DMP
                                COSCDUY
                                COSCDUZ
                VDEF            VSL1
                STORE           0,1
                DLOAD           DMP
                                SINCDUX
                                SINCDUZ
                SL1
                STORE           26D
                DMP
                                SINCDUY
                PDDL            DMP
                                COSCDUX
                                COSCDUY
                DSU
                PDDL            DMP
                                SINCDUX

                                COSCDUZ
                DCOMP
                PDDL            DMP
                                COSCDUX
                                SINCDUY
                PDDL            DMP
                                COSCDUY
                                26D
                DAD             VDEF
                VSL1
                STORE           14,1
                VXV*            VSL1
                                0,1
                STORE           6,1
                RVQ

# NAME - P51 - IMU ORIENTATION DETERMINATION
#          MOD.NO.1  23 JAN 67                                                             LOG SECTION - P51-P53
# MOD BY STURLAUGSON                                                                      ASSEMBLY SUNDANCE REV56

# FUNCTIONAL DESCRIPTION

#      DETERMINES THE INERTIAL ORIENTATION OF THE IMU. THE PROGRAM IS SELECTED BY DSKY ENTRY. THE SIGHTING
# (AOTMARK)ROUTINE IS CALLED TO COLLECT AND PROCESS MARKED-STAR DATA. AOTMARK(R53) RETURNS THE STAR NUMBER AND THE
# STAR LOS VECTOR IN STARAD+6. TWO STARS ARE THUS SIGHTED. THE ANGLE BETWEEN THE TWO STARS IS THEN CHECKED AT
# CHKSDATA(R54). REFSMMAT IS THEN COMPUTED AT AXISGEN.

# CALLING SEQUENCE

#   THE PROGRAM IS CALLED BY THE ASTRONAUT BY DSKY ENTRY.

# SUBROUTINES CALLED.

#      GOPERF3
#      GOPERF1
#      GODSPR
#      IMUCOARS
#      IMUFIN20
#      AOTMARK(R53)
#      CHKSDATA(R54)
#      MKRELEAS
#      AXISGEN
#      MATMOVE

# ALARMS

#      NONE.

# ERASABLE INITIALIZATION

#      IMU ZERO FLAG SHOULD BE SET.

# OUTPUT

#      REFSMMAT
#      REFSMFLG

# DEBRIS

#      WORK AREA
#      STARAD
#      STARIND
#      BESTI
#      BESTJ

                COUNT*          $$/P51
P51             TC              BANKCALL                # IS ISS ON - IF NOT, IMUCHK WILL SEND
                CADR            IMUCHK                  # ALARM CODE 210 AND EXIT VIA GOTOPOOH.

                CAF             PRFMSTAQ
                TC              BANKCALL
                CADR            GOPERF1
                TC              GOTOPOOH                # TERM.
                TCF             P51B                    # V33
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                CAF             P51ZERO
                TS              THETAD                  # ZERO THE GIMBALS
                TS              THETAD          +1
                TS              THETAD          +2
                CAF             V6N22
                TC              BANKCALL
                CADR            GODSPRET
                CAF             V41K                    # NOW DISPLAY COARSE ALIGN VERB 41
                TC              BANKCALL
                CADR            GODSPRET
                TC              INTPRET
                CALL
                                COARSE
                EXIT
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TCF             P51 +2

P51B            TC              PHASCHNG
                OCT             00014
                TC              INTPRET
                CALL
                                NCOARSE
                SSP             SETPD
                                STARIND                 # INDEX-STAR 1 OR 2
                                0
                                0
P51C            EXIT
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              BANKCALL
                CADR            AOTMARK                 # R53
                TC              BANKCALL
                CADR            AOTSTALL
                TC              CURTAINS
                CCS             STARIND
                TCF             P51D            +1

                TC              INTPRET
                VLOAD
                                STARAD          +6
                STORE           STARSAV1
P51D            EXIT
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                CCS             STARIND
                TCF             P51E
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              INTPRET
                DLOAD           CALL
                                TSIGHT
                                PLANET
                STORE           PLANVEC
                EXIT
                CAF             BIT1
                TS              STARIND
                TCF             P51C            +1      # DO SECOND STAR
P51E            TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              INTPRET
                DLOAD           CALL
                                TSIGHT
                                PLANET
                STOVL           12D
                                PLANVEC
                STOVL           6D
                                STARSAV1
                STOVL           STARAD
                                STARSAV2
                STCALL          STARAD          +6
                                CHKSDATA                # CHECK STAR ANGLES IN STARAD AND
                BON             EXIT
                                FREEFLAG
                                P51G
                TC              P51             +2
P51G            CALL
                                AXISGEN                 # COME BACK WITH REFSMMAT IN XDC
                AXC,1           AXC,2
                                XDC
                                REFSMMAT
                CALL
                                MATMOVE
                SET
                                REFSMFLG

                EXIT
                TC              GOTOPOOH                # FINIS
PRFMSTAQ        =               OCT15
P51ZERO         =               ZERO
P51FIVE         =               FIVE
V6N22           VN              0622
V41K            VN              4100
COARSE          EXIT
                TC              BANKCALL
                CADR            IMUCOARS
                TC              BANKCALL
                CADR            IMUSTALL
                TC              CURTAINS
                TC              BANKCALL
                CADR            IMUFINE
                TC              BANKCALL
                CADR            IMUSTALL
                TC              CURTAINS
                TC              INTPRET
                RVQ
NCOARSE         EXIT
                CA              TIME1
                TS              1/PIPADT
                TC              INTPRET
                VLOAD
                                ZEROVEC
                STORE           GCOMP
                SET             RVQ
                                DRIFTFLG

# NAME-S52.2
# FUNCTION-COMPUTE GIMBAL ANGLES FOR DESIRED SM AND PRESENT VEHICLE
# CALL-  CALL  S52.2
# INPUT- X,Y,ZSMD
# OUTPUT- OGC,IGC,MGC,THETAD,+1,+2
# SUBROUTINES-CDUTRIG,CALCSMSC,MATMOVE,CALCGA
                COUNT*          $$/S52.1
S52.2           STQ
                                QMAJ
                CALL
                                CDUTRIG
                CALL
                                CALCSMSC
                AXT,1           SSP
                                18D
                                S1
                                6D
S52.2A          VLOAD*          VXM
                                XNB             +18D,1
                                REFSMMAT
                UNIT
                STORE           XNB             +18D,1
                TIX,1
                                S52.2A
S52.2.1         AXC,1           AXC,2
                                XSMD
                                XSM
                CALL
                                MATMOVE
                CALL
                                CALCGA
                GOTO
                                QMAJ

# NAME-S52.3
# FUNCTION  XSMD= UNIT R
#           YSMD= UNIT(V X R)
#           ZSMD= UNIT(XSMD X YSMD)
# CALL     DLOAD  CALL
#                 TALIGN
#                 S52.3
# INPUT-   TIME OF ALIGNMENT IN MPAC
# OUTPUT-  X,Y,ZSMD
# SUBROUTINES- CSMCONIC
                COUNT*          $$/S52.3
S52.3           STQ
                                QMAJ
                STCALL          TDEC1
                                LEMCONIC
                SETPD
                                0
                VLOAD           UNIT
                                RATT
                STOVL           XSMD
                                VATT
                VXV             UNIT
                                RATT
                STOVL           YSMD
                                XSMD
                VXV             UNIT
                                YSMD
                STCALL          ZSMD
                                QMAJ

# NAME    -R52 (AUTOMATIC OPTICS POSITIONING ROUTINE)

# FUNCTION-POINT THE AOT OPTIC AXIS BY MANEUVERING THE LEM TO A NAVIGATION
#          STAR SELECTED BY ALIGNMENT PROGRAMS OR DSKY INPUT

# CALLING -CALL R52

# INPUT   -BESTI AND BESTJ (STAR CODES TIMES 6)
# OUTPUT  -STAR CODE IN BITS1-6, DETENT CODE IN BITS 7-9
#          (NO CHECK IS MADE TO INSURE THE DETENT  CODE TO BE VALID)
#          POINTVSM-1/2 UNIT NAV STAR VEC IN SM
#          SCAXIS-AOT OPTIC AXIS VEC IN NB X-Z PLANE

# SUBROUT -R60LEM

                COUNT*          $$/R52
R52             STQ             EXIT
                                SAVQR52
                INDEX           STARIND
                CA              BESTI                   # PICK UP STARCODE DETERMINED BY R56
                EXTEND
                MP              1/6TH
                AD              BIT8                    # SET DETENT POSITION 2
                TS              STARCODE                # SCALE AND STORE IN STARCODE

R52A            CAF             V01N70
                TC              BANKCALL
                CADR            GOFLASH                 # DISPLAY STARCODE AND WAIT FOR RESPONSE
                TC              GOTOPOOH                # V34-TERMINATE
                TCF             R52B                    # V33-PROCEED TO ORIENT LEM
                TCF             R52A                    # ENTER-SELECT NEW STARCODE-RECYCLE

R52B            TC              DOWNFLAG
                ADRES           3AXISFLG                # BIT6 OF FLAGWRD5 ZERO TO ALLOW VECPOINT
                CA              STARCODE                # GRAB DETENT CODE
                MASK            HIGH9
                EXTEND
                BZMF            R52A                    # DONT ALLOW ZERO CODE-RECYCLE
                MASK            BIT9                    # SEE IF CODE 4 OR 5
                CCS             A
                TCF             GETAZEL                 # CODE 4 OR 5-GET CALIBRATION AZ EL
                EBANK=          XYMARK
                CA              EBANK7
                TS              EBANK
                CAF             HIGH9                   # FORWARD DETENT, INDEX DETENT AND GRAB
                MASK            STARCODE                # AZIMUTH  ANGLE AND ELV = 45 DEG
                EXTEND
                MP              BIT9                    # SHIFT DETENT TO BITS1-2 FOR INDEX
                INDEX           A
                CA              AOTAZ           -1      # PICK UP AZ CORRESPONDING TO DETENT

                TS              L
                EBANK=          XSM
                CA              EBANK5                  # CHANGE TO EBANK5 BUT DONT DISTURB L
                TS              EBANK
                CA              BIT13                   # SET ELV TO 45 DEG
                XCH             L                       # SET C(A)=AZ, C(L)=45 DEG
                TCF             AZEL                    # GO COMP OPTIC AXIS

GETAZEL         CAF             V06N87                  # CODE 4 OR 5-GET AZ AND EL FROM ASTRO
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH                # V34-TERMINATE
                TCF             +2                      # PROCEED-CALC OPTIC AXIS
                TCF             GETAZEL                 # ENTER-RECYCLE

                EXTEND
                DCA             AZ                      # PICK UP AZ AND EL IN SP 2S COMP
AZEL            INDEX           FIXLOC                  # JAM AZ AND EL IN 8 AND 9 OF VAC
                DXCH            8D
                TC              INTPRET
                CALL                                    # GO COMPUTE OPTIC AXIS AND STORE IN
                                OANB                    # SCAXIS IN NB COORDS
                RTB             CALL
                                LOADTIME
                                PLANET
                MXV             UNIT
                                REFSMMAT
                STORE           POINTVSM                # STORE FOR VECPOINT

                EXIT
                TC              BANKCALL
                CADR            R60LEM                  # GO TORQUE LEM OPTIC AXIS TO STAR LOS

                TC              INTPRET                 # RETURN FROM KALCMANU
                GOTO
                                SAVQR52                 # RETURN TO CALLER

1/6TH           DEC             .1666667
V01N70          VN              0170
V06N87          VN              687

# NAME -    PLANET
# FUNCTION -TO PROVIDE THE REFERENCE VECTOR FOR THE SIGHTED CELESTIAL
#           BODY. STARS ARE FETCHED FROM THE CATALOG,SUN,EARTH AND
#           MOON ARE COMPUTED BY LOCSAM,PLANET VECTORS ARE ENTERED
#           BY DSDY INPUT
# CALL  -  CALL
#                 PLANET
# INPUT -  TIME IN MPAC
# OUTPUT - VECTOR  IN MPAC
# SUBROUTINES - LOCSAM
# DEBRIS - VAC ,STARAD - STARAD +17

                SETLOC          P50S
                BANK
                COUNT*          $$/P51

PLANET          STORE           TSIGHT
                STQ             EXIT
                                GCTR
                CS              HIGH9
                MASK            AOTCODE
                EXTEND
                MP              REVCNT
                XCH             L
                INDEX           STARIND
                TS              BESTI
                CCS             A
                TCF             NOTPLAN
                CAF             VNPLANV
                TC              BANKCALL
                CADR            GOFLASH
                TC              -3
                TC              +2
                TC              -5
                TC              INTPRET
                VLOAD           UNIT
                                STARAD
                GOTO
                                GCTR
NOTPLAN         CS              A
                AD              DEC227
                EXTEND
                BZMF            CALSAM1
                INDEX           STARIND
                CA              BESTI
                INDEX           FIXLOC
                TS              X1
                TC              INTPRET
                VLOAD*          GOTO
                                CATLOG,1

                                GCTR
CALSAM1         TC              INTPRET
CALSAM          DLOAD           CALL
                                TSIGHT
                                LOCSAM
                LXC,1           VLOAD
                                STARIND
                                VEARTH
                STOVL           0D
                                VSUN
                STOVL           VEARTH
                                0D
                STORE           VSUN
                DLOAD*          LXC,1
                                BESTI,1
                                MPAC
                VLOAD*          GOTO
                                STARAD          -228D,1
                                GCTR
DEC227          DEC             227
VNPLANV         VN              0688
PIPSRINE        =               PIPASR          +3      # EBANK NOT 4 SO DONT LOAD PIPTIME1

# GRAVITY VECTOR DETERMINATION ROUTINE
# BY KEN VINCENT
# FOR DETAILED DESCRIPTION SEE 504GSOP 5.6.3.2.5
# THIS PROGRAM FINDS THE DIRECTION OF THE MOONS GRAVITY
# WHILE THE LM IS ON THE MOONS SURFACE. IT WILL BE USED
# FOR LUNAR SURFACE ALIGNMENT. THE GRAVITY VECTOR IS
# DETERMINED BY READING THE PIPAS WITH THE IMU AT TWO
# PARTICULAR ORIONTATIONS. THE TWO READINGS ARE AVERAGED
# AND UNITIZED AND TRANSFORMED TO NB COORDINATES. THE TWO
# ORIENTATION WERE CHOSEN TO REDUCE BIAS ERRORS IN THE
# READINGS.
#
# CALL-
#          TC     BANKCALL
#          CADR   GVDETER
# INPUTS-
#          PIPAS,CDUS
# OUTPUTS-
#          STARSAV1 = UNIT GRAVITY
#          GSAV     =   DITTO
#          GRAVBIT  = 1
# SUBROUTINES-
#          PIPASR,IMUCOARS,IMUFINE,IMUSTALL,1/PIPA,DELAYJOB,CDUTRIG,
#          *NBSM* ,*SNMB*, CALCGA,FOFLASH
# DEBRIS-
#          VAC,SAC,STARAD,XSM,XNB,THETAD,DELV,COSCDU,SINCDU
GVDETER         CS              BIT3                    # JAM 45 DEG IN DESIRED GIMBAL ANGLES
                TS              THETAD          +1
                COM
                TS              THETAD          +2
                TS              THETAD
                TC              INTPRET
                CLEAR           CALL
                                REFSMFLG
                                LUNG
# FIND  GIMBAL ANGLES WHICH ROTATE SM 180DEG  ABOUT  G VEC
#
#  DEFINE G COOR SYS
#                      -
#                      X    UNIT G
#                  *   -               -
#                  M=  Y =  UNITEZSM * X )
#                      -         -     -
#                      Z    UNIT(X   * Y )
#  THEN   ROTATED  SM WRT  PRESENT IS
#
#
#                     1,  0 , 0
#           *      *T            *          *         *
#          XSM =   M  0, -1 , 0  M  = 2  (X X ) - 1/2 I  *

#                                          I J
#                     0,  0 ,-1
#
#  ALSO   NB WRT PRES SM  IS
#
#                *      *   *
#               XNB = NBSM  I
#                            *     *
#  GIMBAL ANGLES  = CALCGA( XSM , XNB )

                SETLOC          P50S
                BANK
                COUNT*          $$/P57
                AXT,1           SSP                     # X1=18
                                18D                     # S1= 6
                                S1                      # X2, -2
                                6D
                LXC,2
                                S1
GRAVEL          VLOAD*          CALL
                                XUNIT           -6,2
                                *NBSM*                  # SIN AND COS COMPUTED IN LUNG
                STORE           XNB             +18D,1
                VLOAD
                                STAR
                LXC,2           VXSC*                   # COMPLEMENT- UNITX  ARE BACKWARD -
                                X2
                                STAR            +6,2    # OUTER PRODUCT
                VSL2            LXC,2
                                X2
                VSU*            INCR,2
                                XUNIT           -6,2
                                2D
                STORE           XSM             +18D,1
                TIX,1           CALL
                                GRAVEL
                                CALCGA
                VLOAD           VSR1
                                GOUT
                STCALL          STARAD          +12D
                                LUNG
                VLOAD           VSR1
                                GOUT
                VAD             UNIT
                                STARAD          +12D
                STORE           STARSAV1
                DOT
                                GSAV
                SL1             ACOS
                STORE           DSPTEM1

                EXIT

                CA              DISGRVER
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH
                TC              PROGRAV                 # VB33-PROCEED
                TC              -5                      # VB32-RECYCLE

PROGRAV         TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              INTPRET
                VLOAD
                                STARSAV1
                STORE           GSAV
                EXIT
                TC              P57OPT3

LUNG            STQ             VLOAD
                                QMIN
                                ZEROVEC
                STORE           GACC
                EXIT
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              BANKCALL
                CADR            IMUCOARS
                TC              BANKCALL
                CADR            IMUSTALL
                TC              CURTAINS
                TC              BANKCALL
                CADR            IMUFINE
                TC              BANKCALL
                CADR            IMUSTALL
                TC              CURTAINS
                CA              T/2SEC
                TS              GCTR
                CA              PRIO31
                TS              1/PIPADT
                TC              BANKCALL
                CADR            GCOMPZER                # INITIALIZE COMPENSATION

                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              BANKCALL                #  DONT NEED TO INHINY  THIS USED TO
                CADR            PIPSRINE                # INITIALIZE PIPAS  DONT USE DATA

GREED           EXIT                                    # = MASK 7776 IN BASIC SO DONT CARE
                CAF             2SECS
                TC              BANKCALL                # SET UP 2 SEC TASK TO READ PIPAS
                CADR            DELAYJOB

                INCR            GCTR
                INHINT
                TC              BANKCALL
                CADR            PIPSRINE
                RELINT
                TC              BANKCALL
                CADR            1/PIPA
                TC              INTPRET
                VLOAD           VAD
                                DELV
                                GACC
                STORE           GACC                    # ACCUMULATE G VECTOR
                SLOAD           BMN
                                GCTR
                                GREED
                VLOAD           UNIT
                                GACC
                STCALL          STAR
                                CDUTRIG                 # TRANSFORM IN NB COOR  AND  STORE
                CALL                                    #  IN OUTPUT
                                *SMNB*
                STORE           GOUT
                EXIT
                TC              PHASCHNG
                OCT             05024
                OCT             13000
                TC              INTPRET
                GOTO
                                QMIN
T/2SEC          DEC             -22
DISGRVER        VN              0605

# NAME  GYROTRIM
#
# THIS PROGRAM COMPUTES AND SENDS GYRO COMMANDS WHICH CAUSE THE CDUS
#   TO ATTAIN A PRESCRIBED SET OF ANGLES. THIS ROUTINE ASSUMES THE
#   VEHICLES ATTITUDE REMAINS STATIONARY DURING ITS OPERATION.
#
# CALL     CALL
#                 GYROTRIM
#
# INPUT    THETAD,+1,+2 = DESIRED CDU ANGLES
#          CDUX,CDUY,CDUZ
#
# OUTPUT - GYRO TORQUE PULSES
#
# SUBROUTINES- TRG*NBSM,*NBSM*,CDUTRIG,AXISGEN,CALCGTA,IMUFINE
#              IMPULSE,IMUSTALL
#            -         -        -        *           *     -
# DEBRIS -  CDUSPOT ,SINCDU ,COSCDU , STARAD ,VAC , XDC , OGC
                COUNT*          $$/P57
GYROTRIM        STQ             DLOAD
                                QMIN
                                THETAD
                PDDL            PDDL
                                THETAD          +2
                                THETAD          +1
                VDEF
                STOVL           CDUSPOT
                                XUNIT
                CALL
                                TRG*NBSM
                STOVL           STARAD
                                YUNIT
                CALL
                                *NBSM*
                STCALL          STARAD          +6
                                CDUTRIG
                CALL
                                CALCSMSC
                VLOAD
                                XNB
                STOVL           6D
                                YNB
                STCALL          12D
                                AXISGEN
                CALL
                                CALCGTA
                EXIT
JUSTTRIM        TC              BANKCALL
                CADR            IMUFINE
                TC              BANKCALL

                CADR            IMUSTALL
                TC              CURTAINS
                CA              GYRCDR
                TC              BANKCALL
                CADR            IMUPULSE
                TC              BANKCALL
                CADR            IMUSTALL
                TC              CURTAINS
                TC              INTPRET
                GOTO
                                QMIN
GYRCDR          ECADR           OGC

V16N20          VN              1620
V06N05*         VN              0605
V06N23          VN              0623
V06N20          VN              0620

# PERFORM STAR AQUISITION AND STAR SIGHTINGS

2STARS          CAF             BIT1                    # INITALIZE STARIND
                TC              +2                      # ONE FOR 1ST STAR, ZERO FOR 2ND STAR
1STAR           CAF             ZERO
                TS              STARIND

                TC              BANKCALL                # GO TO AOTMARK FOR SIGHTING
                CADR            AOTMARK
                TC              BANKCALL
                CADR            AOTSTALL                # SLEEP TILL SIGHTING DONE
                TC              CURTAINS                # BADEND RETURN FROM AOTMARK

                CS              HIGH9                   # GRAB STARCODE FOR INDEX
                MASK            AOTCODE
                EXTEND
                MP              REVCNT                  # JUST 6
                INDEX           FIXLOC
                TS              X1                      # CODE X 6 FOR CATLOG STAR INDEX
                INDEX           STARIND
                TS              BESTI

                CCS             STARIND
                TC              ASTAR
                TC              INTPRET
                VLOAD*
                                CATLOG,1
                STOVL           VEC2                    # STORE 2ND CATALOG VEC (REF)
                                STARAD          +6
                STORE           STARSAV2                # 2ND STAR IN SM
                EXIT

                TC              SURFLINE

ASTAR           TC              INTPRET
                VLOAD*
                                CATLOG,1
                STOVL           VEC1
                                STARAD          +6
                STORE           STARSAV1                # 1ST OBSERVED STAR (SM)
                EXIT
                TC              1STAR                   # GO GET 2ND STAR SIGHTING

# DO FINE OR COARSE ALIGNMENT OF IMU

SURFLINE        CAF             ZERO
                TS              STARIND
                TC              INTPRET
                SSP             AXT,2
                                S2
                                6
                                12D
WRTDESIR        VLOAD*          RTB
                                VEC1            +12D,2  # PICK UP VEC IN REF, TRANS TO DESIRED SH
                                UPDATFRF
                BON
                                FREEFLAG
                                MFREF
WRTDSBAK        MXV             UNIT
                                XSMD
                STORE           STARAD          +12D,2  # VEC IN SM
                TIX,2
                                WRTDESIR
                AXT,2
                                12D
WRTDESR2        VLOAD*          RTB
                                STARSAV1 +12D,2
                                UPDATFRF
                BON
                                FREEFLAG
                                CALCANG
DOALIGN         STORE           18D,2
                TIX,2           CALL
                                WRTDESR2
                                R54                     # DO CHKSDATA
                CALL
                                AXISGEN
                CALL
                                CALCGTA
5DEGTEST        VLOAD           BOV                     # IF ANGLES GREATER THAN 5 DEGS, DO COARSE
                                OGC
                                SURFSUP
SURFSUP         STORE           OGCT
                V/SC            BOV
                                5DEGREES
                                COATRIM
                SSP             GOTO
                                QMIN
                                SURFDISP
                                JUSTTRIM                # ANGLES LESS THAN 5 DEG, DO GYRO TORQ

SURFDISP        EXIT
                TC              PHASCHNG
                OCT             05024                   # STORE REFSMMAT ,SET REFSMFLG   AND
                OCT             13000                   # DISPLAY ORIGINAL  TORQ ANGLES
                TC              INTPRET
                AXC,1           AXC,2
                                XSMD
                                REFSMMAT
                SET             CALL
                                REFSMFLG
                                MATMOVE
                SETPD           CALL
                                0D
                                CDUTRIG
                AXT,2           CALL
                                12D
                                CALCSMSC
REFMF           VLOAD*          VXM
                                STARAD,2
                                REFSMMAT
                UNIT
                PUSH            RTB
                                LOADTIME
                PUSH            CALL
                                R-TO-RP
                SSP
                                S2
                                6
                STORE           STARVSAV,2
                TIX,2           VLOAD
                                REFMF
                                OGCT
                STORE           OGC
                EXIT

                CAF             DISPGYRO                # DISPLAY GYRO TORQ ANGLES V 06N93
                TC              BANKCALL
                CADR            GOFLASH
                TC              GOTOPOOH                # V34-TERMINATE
                TC              GOTOPOOH                # VB33-PROCEED TO COARSE OR FINE
                CS              OPTION1                 # VB32-RECYCLE, MAYBE RE-ALIGN
                MASK            BIT2
                CCS             A
                TC              GOTOPOOH                # IF OPTION ZERO DO FINISHH
                CA              OPTION1
                MASK            BIT1
                CCS             A
                TC              1STAR
                TC              2STARS

# COARSE AND FINE ALIGN IMU
COATRIM         AXC,1           AXC,2
                                XDC
                                XSM
                CALL
                                MATMOVE
                CALL
                                CDUTRIG
                CALL
                                CALCSMSC
                CALL
                                CALCGA
                CALL
                                COARSE
                CALL
                                GYROTRIM
                GOTO
                                SURFDISP

UPDATFRF        CS              FREEFBIT
                MASK            FLAGWRD0
                TS              FLAGWRD0
                
                CAF             REFSMBIT
                MASK            FLAGWRD3
                CCS             A
                CAF             BIT3
                AD              OPTION1
                INDEX           A
                CAF             BIT8
                INDEX           STARIND
                MASK            FREEFTAB
                CCS             A
                TC              +4
                CAF             FREEFBIT
                AD              FLAGWRD0
                TS              FLAGWRD0

                INCR            STARIND
                TCF             DANZIG

FREEFTAB        OCT             00052
                OCT             00077
                OCT             00042
                OCT             00063

MFREF           SETPD           PUSH
                                0
                RTB             PUSH
                                LOADTIME
                CALL
                                RP-TO-R
                GOTO
                                WRTDSBAK

CALCANG         CALL
                                CDUTRIG
                CALL
                                *NBSM*
                GOTO
                                DOALIGN

DISPGYRO        VN              0693

# LUNAR SURFACE IMU ALIGNMENT PROGRAM

P57             TC              BANKCALL                # IS ISS ON - IF NOT, IMUCHK WILL SEND
                CADR            IMUCHK                  # ALARM CODE 210 AND EXIT VIA GOTOPOOH.

                TC              INTPRET
                DLOAD           BOFF
                                ZEROVEC                 # LOAD ZERO FOR DISPLAY IF ASCNTFLG IS
                                ASCNTFLG                # NOT SET
                                P57A
                DLOAD
                                TIG                     # LOAD ASCENT TIME FOR DISPLAY
P57A            STORE           DSPTEM1
                EXIT
P57AA           CAF             V06N34                  # DISPLAY TALIGN, TALIGN : DSPTEM1
                TC              BANKCALL
                CADR            GOFLASH
                TC              P57AA                   # V34-TERMINATE
                TC              +2                      # V33-PROCEED
                TC              P57AA                   # VB32-RECYCLE

                TC              INTPRET
                DLOAD           BHIZ
                                DSPTEM1
                                P57B
                GOTO
                                P57D
P57B            RTB
                                LOADTIME                # LOAD CURRENT TIME
                STORE           DSPTEM1
P57D            STCALL          TDEC1
                                LEMPREC                 # COMPUTE DESIRED IMU ORIENTATION STORE
                VLOAD           UNIT                    # IN  X,Y,ZSMD
                                RATT
                STCALL          XSMD
                                LSORIENT
PACKOPTN        AXT,1           BOFF                    # PACK FLAG BITS FOR OPTION DISPLAY
                                0
                                REFSMFLG                # REFSMFLG
                                +3                      # CLEAR-JUST ZERO
                INCR,1                                  # SET
                                100
                BOFF            INCR,1
                                ATTFLAG                 # ATTFLG
                                +2                      # CLEAR-JUST ZERO
                                10                      # SET
                BOFF            INCR,1
                                ASCNTFLG                # ASCNTFLG
                                +2                      # CLEAR-JUST ZERO
                                1                       # SET
                SXA,1           EXIT
                                OPTION1         +1

                CAF             ZERO
                TS              OPTION1                 # JAM 00000 IN OPTION1 FOR CHECK LIST

DSPOPTN         CAF             VB04N06                 # DISPLAY OPTION CODE AND FLAG BITS
                TC              BANKCALL
                CADR            GOFLASH
                TC              DSPOPTN                 # VB34-TERMINATE
                TC              +2                      # V33-PROCEED
                TC              DSPOPTN                 # V32-RECYCLE

                TC              PHASCHNG
                OCT             05024
                OCT             13000
                CA              OPTION1                 # SEE IF OPTION 2 OR 3
                MASK            BIT2
                CCS             A
                TC              BYLMATT

                TC              INTPRET
                BON             BON
                                REFSMFLG
                                GETLMATT                # SET, GO COMPUTE LM ATTITUDE
                                ATTFLAG                 # CLEAR-CHECK ATTFLAG FOR STORED ATTITUDE.
                                P57OPT0                 # ALLFLG SET
                EXIT
BADOPTN         CAF             BADOPT
                TC              BANKCALL
                CADR            PRIOLARM
                TC              BADOPTN
                TC              BADOPTN
                TC              DSPOPTN
                TC              ENDOFJOB

# BRANCH TO ALIGNMENT OPTION

GETLMATT        CALL
                                CDUTRIG                 # GET SIN AND COS OF CDUS
                CALL
                                CALCSMSC                # GET YNB IN SM
                VLOAD           VXM
                                YNB
                                REFSMMAT                #  YNB TO REF
                UNIT
                STOVL           YNBSAV
                                ZNB
                VXM             UNIT
                                REFSMMAT                # ZNB TO REF
                STORE           ZNBSAV

P57OPT0         VLOAD
                                YNBSAV                  # Y ATTITUDE VEC
                STOVL           VEC1
                                ZNBSAV                  # Z ATTITUDE VEC
                STOVL           VEC2
                                YUNIT
                STOVL           STARSAV1
                                ZUNIT
                STORE           STARSAV2
                EXIT
                CS              OPTION1
                MASK            BIT1                    # SEE IF OPTION 1 OR 3
                CCS             A
                TC              SURFLINE

BYLMATT         CS              OPTION1                 # SEE IF OPTION 1 OR 3
                MASK            BIT1
                CCS             A
                TC              2STARS
                TC              GVDETER

# OPTION 3, GET LANDING SITE VEC AND ONE STAR SIGHTING

P57OPT3         TC              INTPRET
                VLOAD           VCOMP
                                RLS                     # LANDING SITE VEC
                UNIT
                STORE           VEC1
                EXIT
                CA              OPTION1
                MASK            BIT2
                TC              1STAR
                TC              SURFLINE

BADOPT          OCT             00701                   # **** TEMP ****
VB04N06         VN              406
V06N34          VN              634

# CHECK IMODES30 TO VARIFY IMU IS ON

IMUCHK          CS              IMODES30
                MASK            BIT9
                CCS             A                       # IS IMU ON
                TCF             +4                      # YES

                TC              ALARM                   # NO, SEND ALARM AND EXIT
                OCT             210
                TC              GOTOPOOH

                TC              UPFLAG
                ADRES           IMUSE                   # SET IMUSE FLAG

                TC              SWRETURN

LSORIENT        STQ             DLOAD
                                QMAJ
                                DSPTEM1
                STCALL          TDEC1
                                CSMPREC
                VLOAD           VXV
                                0D
                                6D
                VXV             UNIT
                                XSMD
                STORE           ZSMD
                VXV             UNIT
                                XSMD
                STCALL          YSMD
                                QMAJ
back to top