Apollo-11/Luminary099/P51-P53.agc
Andrew Scheller 755e658332
Common fixes (#691)
* LYM99 -> LMY99

* 2021112-61 -> 2021112-061
2020-08-04 02:09:29 +01:00

2342 lines
43 KiB
Plaintext

# Copyright: Public domain.
# Filename: P51-P53.agc
# Purpose: Part of the source code for Luminary 1A build 099.
# It is part of the source code for the Lunar Module's (LM)
# Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler: yaYUL
# Contact: Hartmuth Gutsche <hgutsche@xplornet.com>.
# Website: www.ibiblio.org/apollo.
# Pages: 926-983
# Mod history: 2009-05-31 HG Transcribed from page images.
# 2009-06-07 RSB Corrected a typo.
#
# This source code has been transcribed or otherwise adapted from
# digitized images of a hardcopy from the MIT Museum. The digitization
# was performed by Paul Fjeld, and arranged for by Deborah Douglas of
# the Museum. Many thanks to both. The images (with suitable reduction
# in storage size and consequent reduction in image quality as well) are
# available online at www.ibiblio.org/apollo. If for some reason you
# find that the images are illegible, contact me at info@sandroid.org
# about getting access to the (much) higher-quality images which Paul
# actually created.
#
# Notations on the hardcopy document read, in part:
#
# Assemble revision 001 of AGC program LMY99 by NASA 2021112-061
# 16:27 JULY 14, 1969
# Page 926
# 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 MANEUVER. 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) RERSMMAT ORIENTATION
#
# (D) LANDING SITE -- THIS IS NOT AVAILABLE 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 OCCURRED
# 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 STARS 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 MANEUVER 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 --
#
# Page 927
# 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
# Page 928
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
TCF OPT4 # OPTION 4 LANDING SITE
TCF P52H # OPTION 1 PREFERRED
TCF P52T # OPTION 2 NOMINAL
P52E TC INTPRET # OPTION 3 REFSMMAT
GOTO
P52F # GO DO R51
OPT4 EXTEND
DCA TLAND # IF OPTION 4 DISPLAY TLAND
TCF P52T +2
P52T EXTEND
DCA NEG0
DXCH DSPTEM1
CAF V06N34*
TC BANKCALL
CADR GOFLASH
TC GOTOPOOH
TC +2
TC -5
DXCH DSPTEM1
EXTEND
BZMF +2 # IF TIME ZERO OR NEG USE TIME2
TCF +3
EXTEND
DCA TIME2
DXCH TALIGN
P52V CA OPTION2
MASK BIT2
CCS A
TC P52W
# Page 929
TC INTPRET # OPTION 4 -- GET LS ORIENTATION
GOTO
P52LS
# Page 930
P52W TC INTPRET
DLOAD CALL # PICK UP ALIGN TIME
TALIGN # COMPUTED 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
TCF COARSTYP # V33 -- PROCEED, SEE IF GYRO TORQUE COARSE
P52H TC INTPRET
GOTO
P52D
REGCOARS TC INTPRET
CALL # DO COARSE ALIGN
CAL53A # ROUTINE
COARSRET SET CLEAR
REFSMFLG
PFRATFLG
P52F CALL
R51
P52OUT EXIT
TC GOTOPOOH
VB05N09 = V05N09
V06N34* VN 634
# Page 931
# CHECK FOR GYRO TORQUE COARSE ALIGNMENT
COARSTYP CAF OCT13
TC BANKCALL # DISPLAY V 50N25 WITH COARSE ALIGN OPTION
CADR GOPERF1
TCF GOTOPOOH # V34 -- TERMIN&OE
TCF REGCOARS # V33 -- NORMAL COARSE
TC INTPRET # V32 -- GYRO TORQUE COARSE
VLOAD MXV
XSMD # GET SM(DESIRED) WRT SM(PRESENT)
REFSMMAT
UNIT
STOVL XDC
YSMD
MXV UNIT
REFSMMAT
STOVL YDC
ZSMD
MXV UNIT
REFSMMAT
STCALL ZDC
GYCOARS
GOTO
P52OUT
OCT13 OCT 13
# Page 932
# COMPUTE LANDING ORIENTATION FOR OPTION 4
P52LS SET CLEAR # GET LANDING SITE ORIENTATION
LUNAFLAG
ERADFLAG # TO PICK UP RLS
SETPD VLOAD
0
RLS # PICK UP LANDING SITE VEC IN MF
PDDL PUSH # RLS PD 0-5
TALIGN
STCALL TLAND # JAM ALIGN TIME IN TLAND FOR OPTION 4
RP-TO-R # TRANS RLS TO REF
VSR2
STODL ALPHAV # INPUT TO LAT-LONG
TALIGN
CALL
N89DISP
VLOAD UNIT # COMPUTE LANDING SITE ORIENT (XSMD)
ALPHAV
STCALL XSMD
LSORIENT
GOTO
P52D # NOW GO COMPUTE GIMBAL ANGLES.
# Page 933
# SUBROUTINE TO CALCULATE AND DISPLAY THE LUNAR LANDING SITE
SETLOC P50S1
BANK
EBANK= XSM
N89DISP STQ
QMAJ
STCALL GDT/2 +4 # TEMP STORE TIME
LAT-LONG
DLOAD SR1
LONG
STODL LANDLONG
ALT
STODL LANDALT
LAT
STODL LANDLAT
EXIT
LSDISP CAF V06N89* # DISPLAY LAT,LONG/2,ALT
TC BANKCALL
CADR GOFLASH
TCF GOTOPOOH # V34 -- TERMINATE -- EXIT P57
TCF +2 # V33 -- PROCEED -- ACCEPT LS DATA
TCF LSDISP # V32 OR E -- LOOK AGAIN AND/OR LOAD NEW LS
TC INTPRET
DLOAD SL1
LANDLONG
STODL LONG
LANDALT
STODL ALT
LANDLAT
STODL LAT
GDT/2 +4 # PICK UP TIME
CALL # GET RLS BACK FROM LAT,LONG,ALT
LALOTORV # RLS B-29 IN MPAC AND ALPHAV
GOTO
QMAJ
V06N89* VN 689
# Page 934
# 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 RADIUS (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
# Page 935
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
# Page 936
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
# Page 937
# PROGRAM NAME -- R56 DATE: DEC 20 66
# MOD 1 LOG SECTION: P51-P53
# ASSEMBLY: SUNDISK REV4D
# BY KEN VINCENT
#
# FUNCTION
# THIS PROGRAM READS THE IMU-CDUS AND COMPUTES THE VEHICLE ORIENTATION
# WITH RESPECT TO INERTIAL SPACE. IT THEN COMPUTES THE SHAFT AXIS (SAX)
# WITH RESPECT TO REFERENCE INTERTIAL. EACH STAR IN THE CATALOG IS TESTED
# TO DETERMIN IF IT IS OCCULTED BY EITHER EARTH, SUN OR MOON. IF A
# STAR IS NOT OCCULTED THEN IT IS PAIRED WITH ALL STARS 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 SEPARATION 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 DEGREES OF 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
# WORKAREA
# 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
# Page 938
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
# Page 939
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
# Page 940
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
# Page 941
# NAME -- R51 FINE ALIGN
# FUNCTION -- TO ALIGN THE STABLE MEMBER TO REFSSMAT
# 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
TC PHASCHNG
OCT 04024
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 04024
TC INTPRET
CALL
R52 # AOP WILL MAKE CALLS TO SIGHTING
EXIT
TC BANKCALL
# Page 942
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 04024
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
# Page 943
STARAD +6
STORE STARSAV1
DLOAD CALL
TSIGHT
PLANET
STORE PLANVEC
SSP
STARIND
1
GOTO
R51.3
TSIGHT1 2DEC 36000 # 6 MIN TO MARKING
# Page 944
# GYRO TORQUE COARSE ALGNMENT
GYCOARS STQ CALL
QMAJ
CALCGTA
CLEAR CLEAR
DRIFTFLG
REFSMFLG
EXIT
CAF V16N20 # MONITOR GIMBALS
TC BANKCALL
CADR GODSPR
CA R55CDR
TC BANKCALL
CADR IMUPULSE
TC BANKCALL
CADR IMUSTALL
TC CURTAINS
TC PHASCHNG
OCT 04024
TC INTPRET
AXC,1 AXC,2
XSMD
REFSMMAT
CALL # STORE DESIRED REFSMMAT
MATMOVE
CLEAR SET
PFRATFLG
REFSMFLG
CALL
NCOARSE # SET DRIFT AND INITIALIZE 1/PIPADT
GOTO
R51K
V16N20 VN 1620
# Page 945
# 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 04024
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))
# Page 946
# THE ANGULAR DIFFERENCE IS DISPLAYED FOR ASTRONAUT ACCEPTANCE.
#
# EXIT MODE -- 1. FREEFLAG SET IMPLIES ASTRONAUT WANTS TO PROCEED
# 2. FREEFLAG RESET IMPLIES ASTRONAUT WANTS TO RECYCLE
#
# 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
# Page 947
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 AT STORED IN REFSMMAT
# SUBROUTINES -- S52.2, IMUCOARSE, IMUFINE
COUNT* $$/R50
CAL53A CALL
S52.2 # MAKE ONE FINAL COMP OF GIMBAL 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
EXIT
TC PHASCHNG
OCT 04024
TC INTPRET
COARFINE CALL
COARSE
CALL
NCOARSE
GOTO
FINEONLY
CALOOP1 TIX,1
CALOOP
FINEONLY AXC,1 AXC,2
XSM
REFSMMAT
CALL
MATMOVE
# Page 948
GOTO
COARSRET
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
# Page 949
# 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
# Page 950
P51 TC BANKCALL # IS ISS ON - IF NOT, IMUCHK WILL SEND
CADR IMUCHK # ALARM CODE 210 AND EXIT VIA GOTOPOOH.
CAF OCT15
TC BANKCALL
CADR GOPERF1
TC GOTOPOOH # TERM.
TCF P51B # V33
TC PHASCHNG
OCT 04024
CAF ZERO
TS THETAD # ZERO THE GIMBALS
TS THETAD +1
TS THETAD +2
CAF V06N22
TC BANKCALL
CADR GODSPRET
CAF V41K # NOW DISPLAY COARSE ALIGN VERB 41
TC BANKCALL
CADR GODSPRET
TC INTPRET
CALL
COARSE
EXIT
TC PHASCHNG
OCT 04024
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 04024
TC BANKCALL
CADR AOTMARK # R53
TC BANKCALL
CADR AOTSTALL
TC CURTAINS
CCS STARIND
TCF P51D +1
TC INTPRET
# Page 951
VLOAD
STARAD +6
STORE STARSAV1
P51D EXIT
TC PHASCHNG
OCT 04024
CCS STARIND
TCF P51E
TC PHASCHNG
OCT 04024
TC INTPRET
DLOAD CALL
TSIGHT
PLANET
STORE PLANVEC
EXIT
CAF BIT1
TS STARIND
TCF P51C +1 # DO SECOND STAR
P51E TC PHASCHNG
OCT 04024
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 EXIT
REFSMFLG
TC GOTOPOOH # FINIS
# Page 952
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
CS ZERO
TS PIPAX
TS PIPAY
TS PIPAZ
TC INTPRET
VLOAD
ZEROVEC
STORE GCOMP
SET RVQ
DRIFTFLG
# Page 953
# 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 CALL
QMAJ
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
# Page 954
# 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
VLOAD UNIT
RATT
STOVL XSMD
VATT
VXV UNIT
RATT
STOVL YSMD
XSMD
VXV UNIT
YSMD
STCALL ZSMD
QMAJ
# Page 955
# NAME -- R52 (AUTOMATIC OPTICS POSITIONING ROUTINE)
#
# FUNCTION -- POINT THE AOT APTICS 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 BITS 1-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
MP BIT9
TS L # TEMP STORE DETENT
EXTEND
BZMF GETAZEL # CODE 0, COAS CALIBRATION
AD NEG7
EXTEND
BZF GETAZEL # CODE 7, COAS SIGHTING
EBANK= XYMARK
CA EBANK7
TS EBANK
# Page 956
INDEX L
CA AOTAZ -1 # PICK UP AZ CORRESPONDING TO DETENT
TS L
EBANK= XSM
CA EBANK5 # CHANGE TO EBANK5 BUT DON'T 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 0 OR 7, GET AZ AND EL KEY IN
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 2'S 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
CAF HIGH9 # IF COAS CALIBRATION CODE 0. RECYCLE
MASK STARCODE
EXTEND
BZF R52A
TC INTPRET # RETURN FROM KALCMANU
GOTO
SAVQR52 # RETURN TO CALLER
1/6TH DEC .1666667
V01N70 VN 0170
V06N87 VN 687
# Page 957
# LUNAR SURFACE STAR ACQUISITION
BANK 15
SETLOC P50S
BANK
COUNT* $$/R59
R59 CS FLAGWRD3
MASK REFSMBIT # IF REFSMMAT FLAG CLEAR BYPASS STAR ACQUIRE
CCS A
TCF R59OUT # NO REFSMMAT GO TO AOTMARK
CAF V01N70* # SELECT STAR CODE FOR ACQUISITION
TC BANKCALL
CADR GOFLASH
TC GOTOPOOH # V34 -- TERMINATE
TCF R59A # V33 -- PROCEED
TCF R59 # V32 -- RECYCLE
R59A CS HIGH9 # GRAB STARCODE FOR INDEX
MASK AOTCODE
EXTEND
MP REVCNT # JUST 6
XCH L
INDEX STARIND
TS BESTI
INDEX FIXLOC
TS X1 # CODE X 6 FOR CATLOG STAR INDEX
EXTEND
BZF R59OUT # BYPASS ACQUISITION IF NOT CATLOG STAR
COM
AD DEC227
EXTEND
BZMF R59OUT
TC INTPRET
VLOAD* MXV
CATLOG,1 # GRAB STAR VECTOR
REFSMMAT # TRANSFORM TO SM
UNIT CALL
CDU*SMNB
STORE STAR # TEMP STORE STAR VEC(NB)
EXIT
CAF BIT1 # INITIALIZE AZ POSITION COD TO 1 (-60)
TS POSCODE
EBANK= XYMARK
INCAZ CA EBANK7
TS EBANK
# Page 958
INDEX POSCODE
CA AOTAZ -1 # PICK UP AZ CORRESPONDING TO POSCODE
TS L
EBANK= XSM
CA EBANK5
TS EBANK
CA BIT13 # SET ELV TO 45 DEG
XCH L # SET C(A)=AZ, C(L)=45 DEG
TS QMIN # STORE QMIN=AZ FOR LATER
INDEX FIXLOC
DXCH 8D # JAM AZ IN 8D, 45 DEG IN 9D FOR OANB
TC INTPRET
CALL
OANB # GO CALC OPTIC AXIS WRT NB
VLOAD DOT
STAR # DOT STAR WITH OA
SCAXIS
SL1 ARCCOS
STORE 24D # TEMP STORE ARCCOS(STAR.OPTAXIS)
DSU BPL
DEG30 # SEE IF STAR IN AOT FIELD-OF-VIEW
NXAX # NOT IN FIELD -- TRY NEXT POSITION
DLOAD DSU # SEE IF STAR AT FIELD CENTER
24D
DEG.5
BMN DLOAD # CALC SPIRAL AND CURSOR
ZSPCR # GO ZERO CURSOR AND SPIRAL
24D # GET SPIRAL
DMP SL4
3/4 # 12 SCALED AT 16
STOVL 24D # 12(ARCCOS(AO.STAR)) SCALED IN REVS
SCAXIS # OA
VXV UNIT
XUNIT
PUSH VXV # OA X UNITX PD 0-5
SCAXIS
VCOMP
UNIT PDVL # UNIT(OA X (OA X UNITX)) PD 6-11
SCAXIS
VXV UNIT
STAR
PUSH DOT # 1/2(OA X STAR) PD 12-17
0 # DOT WITH 1/2(OA X UNITX) FOR YROT
SL1 ARCCOS
STOVL 26D # STORE THET SCALED IN REVS
# Page 959
DOT # UP 12-17, UP 6-11 FOR C2
BPL DLOAD # IF THET NEG -- GET 360-THET
R59D
ABOUTONE
DSU
26D
STORE 26D # 360-THET SCALED IN REVS
R59D SLOAD SR1
QMIN # RESCALE AZ(N) TO REVS
DAD PUSH # PUSH YROT + AZ(N) REVS
26D
RTB
1STO2S
STODL CURSOR # YROT IN 1/2 REVS
24D # LOAD SROT IN REVS
DAD # 12(SEP) + YROT
RTB
1STO2S
STORE SPIRAL # SROT IN 1/2 REVS
EXIT
TCF 79DISP # GO DISPLAY CURSOR-SPIRAL-POS CODE
ZSPCR EXIT
CAF ZERO # STAR ALMOST OPTIC AXIS, ZERO CURSOR
TS CURSOR # AND SPIRAL ANGLES
TS SPIRAL
TCF 79DISP
NXAX EXIT
INCR POSCODE
CS POSCODE
AD SEVEN
EXTEND
BZMF R59ALM # THIS STAR NOT AT ANY POSITION
TCF INCAZ
R59ALM TC ALARM # THIS STAR CAN'T BE LOCATED IN AOT FIELD
OCT 404
CAF VB05N09 # DISPLAY ALARM
TC BANKCALL
CADR GOFLASH
TCF GOTOPOOH # VB34 -- TERMINATE
TCF R59OUT # VB33 -- PROCEED, GO WITHOUT ACQUIRE
TCF R59 # VB32 -- RECYCLE AND TRY ANOTHER STAR
79DISP CAF V06N79 # DISPLAY CURSOR, SPIRAL AND POS CODE
TC BANKCALL
CADR GOFLASH
TCF GOTOPOOH # V34 -- TERMINATE
# Page 960
TCF R59E # V33 -- PROCEED TO MARK ROUTINE
TCF R59 # V32 -- RECYCLE TO TOP OF R59 AGAIN
R59E CAF SEVEN # GET DETENT CODE CORRESPONDING TO POSCODE
MASK POSCODE
EXTEND
MP BIT7 # DETEND CODE NOW IN L
CS HIGH9
MASK AOTCODE # ISOLATE STAR NO BIT 1-6
AD L
TS AOTCODE # STORE DETENT 7-9
R59OUT TC BANKCALL # GO TO AOTMARK FOR SIGHTING
CADR AOTMARK
TC BANKCALL
CADR AOTSTALL # SLEEP TILL SIGHTING DONE
TC CURTAINS # BADEND RETURN FROM AOTMARK
TCF R59RET # RETURN TO 1 STAR OR 2STAR
V01N70* VN 170
V06N79 VN 679
DEG30 2DEC .083333333 # 30 DEGREES
DEG.5 2DEC .00138888 # .5 DEGREES SCALED IN REVS.
DEG60 OCT 12525 # 60 DEG CDU SCALING
CURSOR EQUALS GDT/2
SPIRAL EQUALS GDT/2 +2
POSCODE EQUALS GDT/2 +4
# Page 961
# 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 DSKY 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 STOVL TSIGHT
ZEROVEC
STORE STARAD
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
# Page 962
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 DON'T LOAD PIPTIME1
# Page 963
# GRAVITY VECTOR DETERMINATION ROUTINE
# BY KEN VINCENT
#
# FOR DETAILED DESCRIPTION SEE 504GSOP 5.6.3.2.5.
#
# THIS PROGRAM FINDS THE DIRECTION OF THE MOON'S GRAVITY
# WHILE THE LM IS IN THE MOON'S SURFACE. IT WILL BE USED
# FOR LUNAR SURFACE ALIGNMENT. THE GRAVITY VECTOR IS
# DETERMINED BY READING THE PIPAS WITH THE IMU AT TWO
# PARTICULAR ORIENTATIONS. THE TWO READINGS ARE AVERAGED
# AND UNITIZED AND TRANSFORMED TO NB COORDINATES. THE TWO
# ORIENTATIONS 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, GOFLASH
#
# DEBRIS --
# VAC, SAC, STARAD, XSM, XNB, THETAD, DELV, COSCDU, SINCDU
GVDETER CAF 42DEG
TS THETAD
COM
TS THETAD +1
CAF 35DEG
TS THETAD +2
TC INTPRET
CLEAR CALL
REFSMFLG
LUNG
# FIND GIMBAL ANGLES WHICH ROTATE SM 180 DEG ABOUT G VEC
#
# DEFINE G COOR SYS
# _
# [ X ] [ UNIT G ]
# * [ _ ] [ _ ]
# M = [ Y ] = [ UNITEZSM * X ]
# [ _ ] [ _ _ ]
# [ Z ] [ UNIT( X * Y )]
#
# THEN ROTATED SM WRT PRESENT IS
#
# Page 964
# [ 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
# Page 965
STORE DSPTEM1
EXIT
TC DOWNFLAG # CLAR FREEFLAG IN CASE OF RECYCLE
ADRES FREEFLAG
CA DISGRVER
TC BANKCALL
CADR GOFLASH
TC GOTOPOOH
TCF PROGRAV # VB33 -- PROCEED
TC UPFLAG # VB32 -- RECYCLE -- STORE GRAV AND DO IT AGAIN
ADRES FREEFLAG # AND SET FREEFLAG TO SHOW RECYCLE
PROGRAV TC PHASCHNG
OCT 04024
TC INTPRET
VLOAD
STARSAV1
STORE GSAV
EXIT
CAF FREEFBIT # IF FREEFLAG SET, RE-COMPUTE GRAVITY
MASK FLAGWRD0
CCS A
TCF GVDETER # SET
TCF ATTCHK # EXIT FROM GVDETER
LUNG STQ VLOAD
QMIN
ZEROVEC
STORE GACC
EXIT
TC PHASCHNG
OCT 04024
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
# Page 966
CADR GCOMPZER # INITIALIZE COMPENSATION
TC PHASCHNG
OCT 04024
TC BANKCALL # DON'T NEED TO INHINT. THIS USED TO
CADR PIPSRINE # INITIALIZE PIPAS. DON'T USE DATA
TC INTPRET
GREED EXIT # = MASK 7776 IN BASIC SO DON'T CARE
CAF 2SECS
TC TWIDDLE # SET UP 2 SEC TASK TO READ PIPAS
ADRES GRABGRAV
TC ENDOFJOB
GRABGRAV TC IBNKCALL
CADR PIPSRINE
CAF PRIO13 # RE-ESTABLISH MAINLINE JOB
TC FINDVAC
EBANK= STARAD
2CADR ADDGRAV
TC TASKOVER
ADDGRAV TC BANKCALL
CADR 1/PIPA
INCR GCTR
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 04024
QMINEXIT TC INTPRET
GOTO
QMIN
T/2SEC DEC -20
# Page 967
DISGRVER VN 0604
42DEG OCT 07357
35DEG OCT 06211
# Page 968
# 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
JUSTTRIM EXIT
TC BANKCALL
CADR IMUFINE
TC BANKCALL
# Page 969
CADR IMUSTALL
TC CURTAINS
CA GYRCDR
TC BANKCALL
CADR IMUPULSE
TC BANKCALL
CADR IMUSTALL
TC CURTAINS
TCF QMINEXIT
GYRCDR ECADR OGC
# Page 970
# PERFORM STAR ACQUISITION AND STAR SIGHTINGS
2STARS CAF ZERO # INITIALIZE STARIND
TCF +2 # ZERO FOR 1ST STAR, ONE FOR 2ND STAR
1STAR CAF BIT1
TS STARIND
TC PHASCHNG
OCT 04024
TCF R59 # GO DO STAR ACQUIRE AND AOTMARK
R59RET CA STARIND # BACK FROM SURFACE MARKING
EXTEND
BZF ASTAR # 1ST STAR MARKED
TC PHASCHNG
OCT 04024
TC INTPRET
DLOAD CALL
TSIGHT # TIME OF 2ND MARK
PLANET
STCALL VEC2 # STORE 2ND CATALOG VEC (REF)
SURFLINE
ASTAR TC INTPRET
VLOAD
STARAD +6
STORE STARSAV1 # 1ST OBSERVED STAR (SM)
DLOAD CALL
TSIGHT # TIME OF 1ST MARK
PLANET
STORE VEC1 # STORE 1ST CATALOG VEC (REF)
EXIT
TCF 1STAR # GO GET 2ND STAR SIGHTING
# Page 971
# DO FINE OR COARSE ALIGNMENT OF IMU
SURFLINE SSP AXT,2
S2
6
12D
WRTDESIR VLOAD* MXV
VEC1 +12D,2 # PICK UP VEC IN REF, TRANS TO DESIRED SH
XSMD
UNIT
STORE STARAD +12D,2 # VEC IN SM
VLOAD*
STARSAV1 +12D,2 # PICK UP VEC IN PRESENT SM
STORE 18D,2
TIX,2 BON
WRTDESIR
INITALGN # IF INITIAL PASS (OPTION 0) BYPASS R54
INITBY
DOALIGN CALL
R54 # DO CHKSDATA
BOFF
FREEFLAG
P57POST # ASTRO DOES NOT LIKE DATA TEST RESULTS
INITBY CALL
AXISGEN # GET DESIRED ORIENT WRT PRES. XDC,YDC,ZDC
CALL
CALCGTA # GET GYRO TORQ ANGLES, OGC,IGC,MGC
EXIT
CAF INITABIT # IF INITIAL PASS BYPASS NOUN 93 DISPLAY
MASK FLAGWRD8
CCS A
TCF 5DEGTEST
CAF DISPGYRO # DISPLAY GYRO TORQ ANGLES V 06N93
TC BANKCALL
CADR GOFLASH
TC GOTOPOOH # V34 -- TERMINATE
TCF 5DEGTEST # VB33 -- PROCEED TO COARSE OR FINE
TCF P57POST +1 # VB32 -- RECYCLE, MAYBE RE-ALIGN
5DEGTEST TC INTPRET # IF ANGLES GREATER THAN 5 DEGS, DO COARSE
VLOAD BOV
OGC
SURFSUP
SURFSUP STORE OGCT
V/SC BOV
5DEGREES
COATRIM
SSP GOTO
QMIN
SURFDISP
# Page 972
JUSTTRIM # ANGLES LESS THAN 5 DEG, DO GYRO TORQ
SURFDISP EXIT
TC PHASCHNG
OCT 04024
TC INTPRET
AXC,1 AXC,2
XSMD
REFSMMAT
SET CALL
REFSMFLG
MATMOVE
EXIT
CCS OPTION2 # IF OPTION ZERO DO FINISH
TCF B2F8
TCF P57POST +1
B2F8 CAF INITABIT # IF INITIAL FLAG SET, RE-CYCLE.
MASK FLAGWRD8
CCS A
TCF P57JUMP # IT'S SET
TC INTPRET
CALL
REFMF # GO GET ATTITUDE VEC IN MF(YNBSAV,XNBSAV)
P57POST EXIT
CAF OCT14 # DISPLAY V50N25 CHK CODE 14
TC BANKCALL
CADR GOPERF1
TCF GOTOPOOH # VB34 -- TERMINATE
TCF P57JUMP # VB33 -- PROCEED TO RE-ALIGN
CS BIT2 # TEST TO SEE IF ALIGNED BY OPTION 2
AD OPTION2
EXTEND
BZF +2 # YES -- GO CALCULATE LANDING SITE
TCF GOTOPOOH # NO -- EXIT P57
TC PHASCHNG # RESTART PLACE
OCT 04024
TC INTPRET
VLOAD CALL # USE GNB
GSAV
CDU*NBSM # GO TO SM COORDS
VXM SET # ON MOON SO SET LUNAFLAG
REFSMMAT # G(REF) = (REFSMMAT)T (NBSM)GNB
LUNAFLAG
PDVL ABVAL
RLS
VXSC STADR
STORE ALPHAV # ALPHAV = RLSMAG * G(REF)
CLEAR RTB
# Page 973
ERADFLAG
LOADTIME
CALL
N89DISP # SUBROUTINE TO CALC LS AND GIVE RLS BACK
STORE RN # RN=RLS B-29 = LM POSITION
VSL2 PDDL # R-TO-RP GETS RLS B-27 AT 0-50 IN PDLIST
GDT/2 +4 # TIME TEMP STORED IN N89DISP
PUSH # TIME AT 6-7 IN PDLIST
STCALL PIPTIME # PIPTIME = LM STATE TIME
R-TO-RP
STORE RLS # RLS IN MOON-FIXED COORDS
EXIT
TCF GOTOPOOH # EXIT P57
# Page 974
# COARSE AND FINE ALIGN IMU
COATRIM AXC,1 AXC,2
XDC
XSM
CALL
MATMOVE
CALL
CDUTRIG
CALL
CALCSMSC
CALL
CALCGA
BOFF EXIT
INITALGN # IF INITIAL ALIGNMENT DISPLAY FINAL
CORSIT # GIMBAL ANGLES IF COARSE ANGLES GREATER
CAF V06N22 # THAN 5 DEGREES
TC BANKCALL
CADR GOFLASH
TC GOTOPOOH
TCF +2
TCF -5
TC PHASCHNG
OCT 04024
TC INTPRET
CORSIT CALL
COARSE
CALL
NCOARSE
CALL
GYROTRIM
GOTO
SURFDISP
DISPGYRO VN 0693
# Page 975
# 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
CAF THREE # JAM REFSMMAT OPTION 3 FOR INITIAL DISP.
TS OPTION2
P57OPT CAF BIT1
TC BANKCALL
CADR GOPERF4R # FLASH V04N06 FOR ALIGNMENT CODE
TC GOTOPOOH # V34 TERMINATE
TCF ALIGNOPT # V33 PROCEED
TCF P57OPT # V32 RECYCLE
TC PHASCHNG
OCT 00014
TC ENDOFJOB
ALIGNOPT CA OPTION2
MASK THREE
INDEX A
TCF +1
TCF TDISP # OPTION 4 LS ORIENTATION
TCF PACKOPTN # OPTION 1 PREFERRED
TCF P57OPT # OPTION 2 INVALID IN P57, RECYCLE
TC INTPRET # OPTION 3 REFSMMAT
AXC,1 AXC,2 # JAM REFSMMAT IN XSMD LOC
REFSMMAT
XSMD
CALL
MATMOVE
GOTO
PACKOPTN -1
TDISP TC INTPRET
DLOAD
TIG # LOAD ASCENT TIME FOR DISPLAY
P57A STORE DSPTEM1
EXIT
P57AA CAF V06N34* # DISPLAY TALIGN, TALIGN : DSPTEM1
TC BANKCALL
CADR GOFLASH
TCF GOTOPOOH # V34 -- TERMINATE
TCF +2
TCF P57AA # VB32 -- RECYCLE
TC INTPRET
RTB PDDL
LOADTIME # PUSH CURRENT TIME AND PICK UP KEY IN
DSPTEM1
# Page 976
BZE PDDL
P57C # IF KEY IN TIME ZERO - TALIGN=CURRENT TIME
DSU BPL # NOT ZERO SO EXCHANGE PD WITH DSPTEM1
DSPTEM1
P57C
DLOAD STADR # IF KEYIN TIME GREATER THAN CURRENT TIME
STORE TIG # STORE IT IN TIG
STCALL TALIGN
P57D
P57C DLOAD STADR
STORE TALIGN
P57D STCALL TDEC1
LEMPREC # COMPUTE DESIRED IMU ORIENTATION STORE
VLOAD UNIT # IN X,Y,ZSMD
RATT
STCALL XSMD
LSORIENT
EXIT
PACKOPTN CAF ZERO # PACK FLAG BITS FOR OPTION DISPLAY
TS OPTION1 +1 # JAM ZERO IN ALIGNMENT OPTION
TS OPTION1 +2 # INITIALIZE FLAG BIT CONFIGURATION
CAF REFSMBIT
MASK FLAGWRD3 # REFSMFLG
CCS A
CAF BIT7 # SET
ADS OPTION1 +2 # CLEAR -- JUST ZERO
CAF ATTFLBIT
MASK FLAGWRD6 # ATTFLG
CCS A
CAF BIT4 # SET
ADS OPTION1 +2 # CLEAR -- ZERO IN A
CAF BIT4
TS OPTION1 # JAM 00010 IN OPTION1 FOR CHECK LIST
DSPOPTN CAF VB05N06 # DISPLAY OPTION CODE AND FLAG BITS
TC BANKCALL
CADR GOFLASH
TCF GOTOPOOH # VB34 -- TERMINATE
TCF +2 # V33 -- PROCEED
TCF DSPOPTN # V32 -- RECYCLE
CAF REFSMBIT
MASK FLAGWRD3
CCS A
TCF GETLMATT # SET, GO COMPUTE LM ATTITUDE
CAF ATTFLBIT # CLEAR -- CHECK ATTFLAG FOR STORED ATTITUDE.
MASK FLAGWRD6
CCS A
TCF BYLMATT # ALLFLG SET, CHK OPTION FOR GRAVITY COMP
CAF BIT2 # SEE IF OPTION 2 OR 3
# Page 977
MASK OPTION2
CCS A
TCF BYLMATT # OPTION 2 OR 3 BUT DON'T HAVE ATTITUDE
TC ALARM # OPTION INCONSISTENT WITH FLAGS -- ALARM 701
OCT 701
CAF VB05N09 # DISPLAY ALARM FOR ACTION
TC BANKCALL
CADR GOFLASH
TCF GOTOPOOH # VB34 -- TERMINATE
TCF DSPOPTN # V33 -- PROCEED *********TEMPORARY
TCF DSPOPTN # VB32 -- RECYCLE TO OPTION DISPLAY V 05N06
# Page 978
# TRANSFORM VEC1,2 FROM MOON FIXED TO REF AND JAM BACK IN VEC1,2
MFREF STQ SETPD
QMAJ
0
RTB
LOADTIME
STOVL TSIGHT
VEC1
PDDL PUSH
TSIGHT
CALL
RP-TO-R
STOVL VEC1
VEC2
SETPD PDDL
0
TSIGHT
PUSH CALL
RP-TO-R
STCALL VEC2
QMAJ
# Page 979
# COMPUTE LM ATTITUDE IN MOON FIXED COORDINATES USING REFSMMAT AND
# STORE IN YNBSAV AND ZNBSAV.
REFMF STQ CALL
QMAJ
CDUTRIG # GET SIN AND COS OF CDUS
RTB SETPD
LOADTIME
0
STCALL TSIGHT
CALCSMSC # GET YNB IN SM
VLOAD VXM
YNB
REFSMMAT # YNB TO REF
UNIT PDDL
TSIGHT
PUSH CALL
R-TO-RP
STOVL YNBSAV # YNB TO MF
ZNB
VXM UNIT
REFSMMAT # ZNB TO REF
PDDL PUSH
TSIGHT
CALL
R-TO-RP # ZNB TO MF
STORE ZNBSAV
SETGO
ATTFLAG
QMAJ
# Page 980
# BRANCH TO ALIGNMENT OPTION
GETLMATT TC INTPRET
CALL
REFMF # GO TRANSFORM TO MF IN YNBSAV, ZNBSAV
EXIT
BYLMATT TC UPFLAG # SET INITIAL ALIGN FLAG
ADRES INITALGN
CAF BIT1
MASK OPTION2 # SEE IF OPTION 1 OR 3
CCS A
TCF GVDETER # OPTION 1 OR 2, GET GRAVITY
ATTCHK TC PHASCHNG
OCT 04024
CAF ATTFLBIT # NOT 1 OR 3, CHECK ATTFLAG
MASK FLAGWRD6
CCS A
TCF P57OPT0 # GET ALIGNMENT VECS FOR OPTION 0
P57JUMP TC PHASCHNG
OCT 04024
TC DOWNFLAG # ATTFLG CLEAR -- RESET INTALIGN FLAG
ADRES INITALGN
CAF THREE
MASK OPTION2 # BRANCH ON OPTION CODE
INDEX A
TCF +1
TCF P57OPT0 # OPTION IS 0
TCF P57OPT1 # OPTION IS 1
TCF P57OPT2 # OPTION IS 2
TCF P57OPT3 # OPTION IS 3
# Page 981
# OPTION 0, GET TWO ATTITUDE VECS
P57OPT0 TC INTPRET
VLOAD
YNBSAV # Y AND Z ATTITUDE WILL BE PUT IN REF
STOVL VEC1
ZNBSAV
STCALL VEC2
CDUTRIG
CALL
CALCSMSC # COMPUTE SC AXIS WRT PRESENT SM
VLOAD
YNB
SAMETYP STOVL STARSAV1 # Y SC AXIS WRT PRESENT SM
ZNB
STCALL STARSAV2 # Z SC AXIS WRT PRESENT SM
MFREF # TRANSFORM VEC1,2 FROM MF TO REF
GOTO
SURFLINE
# OPTION 1, GET LANDING SITE AND Z-ATTITUDE VEC
P57OPT1 TC INTPRET
VLOAD UNIT
RLS # LANDING SITE VEC
STOVL VEC1
ZNBSAV # Z ATTITUDE VEC
STCALL VEC2
CDUTRIG
CALL
CALCSMSC # GET ZNB AXIS WRT PRES SM FOR STARSAV2
VLOAD CALL
GSAV # TRANS GSAV FROM NB TO SM FOR STARSAV1
CDU*NBSM
GOTO
SAMETYP # NOW DO SAME AS OPTION 0
# Page 982
# OPTION 2, GET TWO STAR SIGHTINGS
P57OPT2 TCF 2STARS # DO SIGHTING ON 2 STARS
# OPTION 3, GET LANDING SITE VEC AND ONE STAR SIGHTING
P57OPT3 TC INTPRET
VLOAD UNIT
RLS # LANDING SITE VEC
STORE VEC1
STOVL VEC2 # DUMMY VEC2 FOR 2ND CATALOG STAR
GSAV # GRAVITY VEC NB
CALL
CDU*NBSM # TRANS GSAV FROM NB TO SM FOR STARSAV1
STCALL STARSAV1
MFREF # STARSAV2 IS STORED AS 2ND OBSERVED STAR
EXIT
TCF 1STAR # 1STAR GET VEC2, STARSAV2 GOES TO SURFLINE.
VB05N06 VN 506
# Page 983
# CHECK IMODES30 TO VERIFY 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
BANK 04
SETLOC AOTMARK2
BANK
COUNT* $$/P57
LSORIENT STQ VLOAD
QMAJ
RRECTCSM
VXV VXV
VRECTCSM
XSMD
UNIT
STORE ZSMD
VXV UNIT
XSMD
STCALL YSMD
QMAJ