Raw File
P51-P53.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    P51-P53.agc
## Purpose:     A section of Luminary revision 210.
##              It is part of the source code for the Lunar Module's (LM)
##              Apollo Guidance Computer (AGC) for Apollo 15-17.
##              This file is intended to be a faithful transcription, except
##              that the code format has been changed to conform to the
##              requirements of the yaYUL assembler rather than the
##              original YUL assembler.
## Reference:   pp. 923-981
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2016-11-17 JL   Created from Luminary131 version.
##              2016-12-07 MAS  Began transcription.
##              2016-12-08 MAS  Finished updates for Luminary 210.
##              2016-12-11 HG   Fix operand FLT69FLG -> FLT59FLG
##                                  Operator TCF GOTOPOOH -> TC GOTOPOOH   
##                                           TC	 CHKOUT   -> TCF CHKOUT   
##		2016-12-26 RSB	Comment-text proofed using ProoferComments
##				and corrected errors found.
##		2017-03-16 RSB	Comment-text fixes identified in 5-way
##				side-by-side diff of Luminary 69/99/116/131/210.

## Page 923
# 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-
## Page 924
#      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
		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
## Page 925
		CAF	THREE		# DISPLAY REFSMMAT OPTION 3
		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		CAF	EBANK4		# SET EBANK TO USE TLAND
		TS	EBANK
		EBANK=	TLAND
		EXTEND
		DCA	TLAND		# IF OPTION 4 DISPLAY TLAND
		TCF	P52T +2

P52T		EXTEND
		DCA	NEG0
		DXCH	DSPTEM1
		CAF	EBANK5		# RESTORE EBANK AFTER USE OF TLAND
		TS	EBANK
		EBANK=	TALIGN
		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
## Page 926
		DXCH	TALIGN
P52V		CA	OPTION2
		MASK	BIT2
		CCS	A
		TC	P52W
		TC	INTPRET		# OPTION 4 - GET LS ORIENTATION
		GOTO
			P52LS

## Page 927
# START ALIGNMENT 

P52W		TC	INTPRET
		DLOAD	CALL		# PICK UP ALIGN TIME
			TALIGN		# 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
		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 928
# CHECK FOR GRRO 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 929
# 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

		SETLOC	P50S2
		BANK

MATMOVE		VLOAD*
			0,1
		STORE	0,2
		VLOAD*
			6D,1
		STORE	6D,2
		VLOAD*
			12D,1
		STORE	12D,2
		RVQ

## Page 930
# SUBROUTINE TO CALCULATE AND DISPLAY THE LUNAR LANDING SITE

		SETLOC	P50S1
		BANK
		EBANK=	XSM

N89DISP		STQ
			QMAJ
		STCALL	SITIME		# STORE TIME
			LAT-LONG
		DLOAD	SR1
			LONG
		STODL	LANDLONG
			ALT
		STODL	LANDALT
			LAT
		STORE	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
			SITIME		# 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 931
# 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

## Page 932
		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 933
		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		# (COS60)/4

5DEGREES	2DEC	.013888889	#    SCALED IN REVS

## Page 934
# 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
		SET	CALL
			VFLAG
			CDUTRIG
		CALL
			CALCSMSC
		SETPD	DLOAD
			0
			DPZERO
## Page 935
		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
## Page 936
			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
## Page 937
			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 938
# 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
		TC	PHASCHNG
		OCT	04024

R51C		TC	DOWNFLAG
		ADRES	FLT59FLG
		
		CAF	OCT15
		TC	BANKCALL
		CADR	GOPERF1
		TC	GOTOPOOH
		TC	DOSAM
		CS	BIT6
		MASK	MPAC
		CCS	A
		TCF	R51E		# ENTER
		TC	UPFLAG		# V32-SET FLT59FLG
		ADRES	FLT59FLG
		TCF	R51E

DOSAM		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
## Page 939
R51.2		TC	INTPRET
R51.3		EXIT
		TC	PHASCHNG
		OCT	04024

		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	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
## Page 940
		TC	INTPRET
		GOTO
			QMAJ
R51.4		TC	INTPRET
		VLOAD
			STARSAV2
		STORE	STARSAV1
		DLOAD	CALL
			TSIGHT
			PLANET
		STORE	PLANVEC
		SSP	GOTO
			STARIND
			1
			R51.3

TSIGHT1		2DEC	36000		# 6  MIN  TO  MARKING

## Page 941
# GYRO TORQUE COARSE ALIGNMENT
GYCOARS		STQ	CALL
			QMAJ
			CALCGTA
## The first CLEAR and DRIFTFLG below are circled.
		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 942
# 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	CALL
			QMIN
			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

## Page 943
# CHKSDATA                                                                               DATE- JAN 9, 1967
# 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	VLOAD	DOT
			STARAD		# 1ST CATALOG STAR
			STARAD +6	# 2ND CATALOG STAR
		SL1	ACOS
		STOVL	THETA
			6		# 1ST OBSERVED STAR
		DOT	SL1
			12D		# 2ND OBSERVED STAR
		ACOS	DSU
			THETA
		RTB
			SGNAGREE
		STORE	NORMTEM1	# OBSERVED DIF - CATALOG DIF
		SET	EXIT
			FREEFLAG
		CAF	VB6N5
		TC	BANKCALL
		CADR	GOFLASH
		TC	GOTOPOOH	# V34
		TCF	CHKOUT		# V33-PROCEED
		TC	DOWNFLAG	# V32-REJECT DATA-CLEAR FLAG
		ADRES	FREEFLAG
CHKOUT		TC	INTPRET
		RVQ

VB6N5		VN	605

## Page 944
# 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		CALL
			S52.2		# MAKE ONE FINAL COMP OF GIMBALE 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
		GOTO
			COARSRET
DEGREE1		DEC	46		# 1 DEG SCALED CDU/2
## Page 945
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 946
# 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 947
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 948
		VLOAD
			STARSAV2
		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 949
V41K		VN	4100
COARSE		EXIT
 +1		CA	MODECADR	# SEE IF IMU DEVICE IS IN USE.
 		EXTEND
		BZF	DOCORS		# NOT IN USE, DO COARSE ALIGN
		CAF	1SEC		# IN USE, DELAY ONE SEC
		TC	BANKCALL
		CADR	DELAYJOB
		TCF	COARSE +1
DOCORS		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 and DRIFTFLG below are circled.
		SET	RVQ
			DRIFTFLG

## Page 950
# 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
		SETLOC	P50S3
		BANK

		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 951
# 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 952
# 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

		SETLOC	P50S1
		BANK

		COUNT*	$$/R52
R52		STQ	EXIT
			SAVQR52
		CAF	BIT4
		MASK	FLAGWRD9
		EXTEND
		BZF	DOR52
		TC	BANKCALL
		CADR	R59

DOR52		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

## Page 953
		EXTEND
		BZMF	GETAZEL		# CODE 0, COAS CALIBRATION

		AD	NEG7
		EXTEND 
		BZF	GETAZEL		# CODE 7, COAS SIGHTING

		EBANK=	XYMARK
		CA	EBANK7
		TS	EBANK

		INDEX	L
		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 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 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

		CAF	HIGH9		# IF COAS CALIBRATION CODE 0, RECYCLE
		MASK	STARCODE
		EXTEND
		BZF	R52A

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

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

## Page 955
# LUNAR SURFACE STAR AQUISITION

		SETLOC	P50S
		BANK
		COUNT*	$$/R59

R59 		CS	FLAGWRD3
		MASK	REFSMBIT	# IF REFSMMAT FLAG CLEAR BYPASS STAR AQUIR
		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		TC	INTPRET
		RTB	CALL
			LOADTIME
			PLANET		# GO GET CELESTRIAL BODY IN REF COORDS.
		MXV	UNIT
			REFSMMAT	# TRANSFORM TO NB COORDS.
		CALL
			CDU*SMNB
		STORE	STAR		# TEMP STORE STAR VEC(NB)
		EXIT

		CAF	BIT1		# INITIALIZE AZ POSITION CODE TO 1 (-60)
		TS	POSCODE

		EBANK=	XYMARK
INCAZ		CA	EBANK7
		TS	EBANK

		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

## Page 956
		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

		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
## Page 957
			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

NXAX		EXIT
		INCR	POSCODE
		CS	POSCODE
		AD	SEVEN
		EXTEND
		BZMF	R59ALM		# THIS STAR NOT AT ANY POSITION
		TCF	INCAZ

R59ALM		TC	ALARM		# THIS STAR CANT 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 AQUIRE
		TCF	R59		# VB32-RECYCLE AND TRY ANOTHER STAR

ZSPCR		EXIT
		CAF	ZERO
		TS	CURSOR
		TS	SPIRAL

79DISP		CAF	V06N79		# DISPLAY CURSOR, SPIRAL AND POS CODE
		TC	BANKCALL
		CADR	GOFLASH
		TCF	GOTOPOOH	# V34-TERMINATE
		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		# DETENT CODE NOW IN L
		CS	HIGH9
		MASK	AOTCODE		# ISOLATE STAR NO IN BIT 1-6
		AD	L
		TS	AOTCODE		# STORE DETENT 7-9

R59OUT		TC	INTPRET
		BON	EXIT
## Page 958
			FLT59FLG	# IF FLT59FLG SET GO BACK TO R51 TO
			SAVQR52		# DO AOTMARK
		TC	BANKCALL
		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 DEGRESS

DEG.5		2DEC	.00138888	# .5 DEGRESS SCALED IN REVS

DEG60		OCT	12525		# 60 DEG CDU SCALING

## Page 959
# 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	AOTMARK1
		BANK
		COUNT*	$$/R58

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	VXSC
			STARAD
			1/SQR3
		UNIT	GOTO
			GCTR

NOTPLAN		CS	A
		AD	DEC227
		EXTEND
		BZMF	CALSAM1
		INDEX	STARIND
		CA	BESTI
		INDEX	FIXLOC
		TS	X1
		TC	INTPRET
## Page 960
		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
1/SQR3		2DEC	.57735021

## Page 961
# 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
		SETLOC	P50S
		BANK
		COUNT*	$$/P57

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 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
## Page 962
#                     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
## Page 963
		STORE	STARSAV1
		DOT
			GSAV
		SL1	ACOS
		STORE	DSPTEM1
		EXIT
		TC	DOWNFLAG	# CLEAR 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	INTPRET
		CALL
			COARSE
		EXIT
		CA	T/2SEC
		TS	GCTR
		CA	PRIO31
		TS	1/PIPADT
		TC	BANKCALL
		CADR	GCOMPZER	# INITIALIZE  COMPENSATION
		TC	PHASCHNG
## Page 964
		OCT	04024

		TC	BANKCALL	#  DONT NEED TO INHINY  THIS USED TO
		CADR	PIPSRINE	# INITIALIZE PIPAS  DONT USE DATA
		TC	INTPRET
GREED		EXIT			# = MASK 7776 IN BASIC SO DONT 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
DISGRVER	VN	0604
42DEG		OCT	07357
## Page 965
35DEG		OCT	06211

## Page 966
# 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
		CA	GYRCDR
		TC	BANKCALL
		CADR	IMUPULSE
## Page 967
		TC	BANKCALL
		CADR	IMUSTALL
		TC	CURTAINS
		TCF	QMINEXIT

GYRCDR		ECADR	OGC

## Page 968
# PERFORM STAR AQUISITION AND STAR SIGHTINGS

2STARS		CAF	ZERO		# INITALIZE 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 AQUIRE 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
			STARSAV2
		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 969
# 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 970
			JUSTTRIM	# ANGLES LESS THAN 5DEG, 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		# ITS 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 SE 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 971
			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-5D IN PDLIST
			SITIME		# TIME 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 972
# COARSE AND FINE ALIGN IMU
		SETLOC	P50S1
		BANK

		COUNT*	$$/P57

COATRIM		AXC,1	AXC,2
			XDC
			XSM
		CALL
			MATMOVE
		CALL
			CDUTRIG
		CALL
			CALCSMSC
		CALL
			CALCGA
		BOFF	EXIT
			INITALGN	# IF INITIAL ALGNMENT 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
		SETLOC	P50S
		BANK
		COUNT*	$$/P57

DISPGYRO	VN	0693

## Page 973
# 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	DOWNFLAG
		ADRES	FLT59FLG

		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
## Page 974
		RTB	PDDL
			LOADTIME	# PUSH CURRENT TIME AND PICK UP KEY IN
			DSPTEM1
		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
## Page 975
		CCS	A
		TCF	BYLMATT		# ALLFLG SET, CHK OPTION FOR GRAVITY COMP
		CAF	BIT2		# SEE IF OPTION 2 OR 3
		MASK	OPTION2
		CCS	A
		TCF	BYLMATT		# OPTION 2 OR 3 BUT DONT HAVE ATTITUDE
		TC	ALARM		# OPTION INCONSISTANT 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 976
# 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 977
# 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 978
# 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 979
# 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 980
# 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 981
# 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

		SETLOC	AOTMARK2
		BANK
		COUNT*	$$/P57

LSORIENT	STQ	VLOAD
			QMAJ
			RRECTCSM
		VXV	VXV
			VRECTCSM
			XSMD
		UNIT
		STORE	ZSMD
		VXV	UNIT
			XSMD
		STCALL	YSMD
			QMAJ
back to top