# Copyright:	Public domain.
# Filename:	R60_R62.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:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Pages:	472-485
# Mod history:	2009-05-17 RSB	Adapted from the corresponding 
#				Luminary131 file, using page 
#				images from Luminary 1A.
#
# 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-61
#	16:27 JULY 14, 1969 

# Page 472
# MOD NO: 0				DATE: 1 MAY 1968
# MOD BY: DIGITAL DEVEL GROUP		LOG SECTION R60,R62
#
# FUNCTIONAL DESCRIPTION:
#
# CALLED AS A GENERAL SUBROUTINE TO MANEUVER THE LM TO A SPECIFIED
# ATTITUDE.
#
# 1. IF THE 3-AXIS FLAG IS NOT SET THE FINAL CDU ANGLES ARE
# CALCULATED (VECPOINT).
#
# 2. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).
#
# 3. REQUEST FLASHING DISPLAY V50 N18 PLEASE PERFORM AUTO MANEUVER.
#
# 4. IF PRIORITY DISPLAY FLAG IS SET DO A PHASECHANGE.  THEN AWAIT
# ASTRONAUT RESPONSE.
#
# 5. DISPLAY RESPONSE RETURNS.
#
#	A. 	ENTER -- RESET 3-AXIS FLAG AND RETURN TO CLIENT.
#
#	B.	TERMINATE -- IF IN P00 GO TO STEP 5A.  OTHERWISE CHECK IF R61 IS
#		THE CALLING PROGRAM.  IF IN R61 AN EXIT IS MADE TO GOTOV56.  IF
#		NOT IN R61 AN EXIT IS DONE VIA GOTOP00H.
#
#	C.	PROCEED -- CONTINUE WITH PROGRAM AT STEP 6.
#
# 6. IF THE 3-AXISFLAG IS NOT SET, THE FINAL CDU ANGLES ARE CALCULATED
# (VECPOINT).
#
# 7. THE FDAI BALL ANGLES (NOUN 18) ARE CALCULATED (BALLANGS).
#
# 8. IF THE G+N SWITCH IS NOT SET GO BACK TO STEP 3.
# 
# 9. IF THE AUTO SWITCH IS NOT SET GO BACK TO STEP 3.
#
# 10. NON-FLASHING DISPLAY V06N18 (FDAI ANGLES).
#
# 11. DO A PHASE-CHANGE.
#
# 12. DO A MANEUVER CALCULATION AND ICDU DRIVE ROUTINE TO ACHIEVE FINAL
# GIMBAL ANGLES (GOMANUR).
#
# 13. AT END OF MANEUVER TO TO STEP 3.
#
#	IF SATISFACTORY MANEUVER STEP 5A EXITS R60.
#	FOR FURTHER ADJUSTMENT OF THE VEHICLE ATTITUDE ABOUT THE
#	DESIRED VECTOR, THE ROUTINE MAY BE PERFORMED AGAIN STARTING AT
# Page 473
#	STEP 5C.
#
# CALLING SEQUENCE:	TC	BANKCALL
#			CADR	R60LEM
#
# ERASABLE INITIALIZATION REQUIRED:	SCAXIS, POINTVSM (FOR VECPOINT)
#					3AXISFLG.
#
# SUBROUTINES CALLED:	VECPOINT, BALLANGS, GOPERF24, LINUS, GODSPER,
#			GOMANUR, DOWNFLAG, PHASCHNG, UPFLAG
#
# NORMAL EXIT MODES:	CAE	TEMPR60		(CALLER'S RETURN ADDRESS)
#			TC	BANKJUMP
#
# ALARMS: NONE
#
# OUTPUT: NONE
#
# DEBRIS: CPHI, CTHETA, CPSI, 3AXISFLG, TBASE2

		BANK	34
		SETLOC	MANUVER
		BANK
		
		EBANK=	TEMPR60
		
		COUNT*	$$/R06
R60LEM		TC	MAKECADR
		TS	TEMPR60
		
REDOMANN	CAF	3AXISBIT
		MASK	FLAGWRD5	# IS 3-AXIS FLAG SET
		CCS	A
		TCF	TOBALL		# YES
		TC	INTPRET
		CALL
			VECPOINT	# TO COMPUTE FINAL ANGLES
		STORE	CPHI		# STORE FINAL ANGLES -- CPHI, CTHETA, CPSI
		EXIT
		
TOBALL		TC	BANKCALL
		CADR	BALLANGS	# TO CONVERT ANGLES TO FDAI
TOBALLA		CAF	V06N18
		TC	BANKCALL
		CADR	GOPERF2R	# DISPLAY PLEASE PERFORM AUTO MANEUVER
		TC	R61TEST
		TC	REDOMANC	# PROCEED
		TC	ENDMANU1	# ENTER I.E., FINISHED WITH R60
# Page 474
		TC	CHKLINUS	# TO CHECK FOR PRIORITY DISPLAYS
		TC	ENDOFJOB
		
REDOMANC	CAF	3AXISBIT
		MASK	FLAGWRD5	# IS 3-AXIS FLAG SET
		CCS	A
		TCF	TOBALLC		# YES
		TC	INTPRET
		CALL
			VECPOINT	# TO COMPUTE FINAL ANGLES
		STORE	CPHI		# STORE ANGLES
		EXIT
		
TOBALLC		TC	BANKCALL
		CADR	BALLANGS	# TO CONVERT ANGLES TO FDAI
		TC	G+N,AUTO	# CHECK AUTO MODE
		CCS	A
		TCF	TOBALLA		# NOT AUTO, GO REREQUEST AUTO MANEUVER.
		
AUTOMANV	CAF	V06N18		# STATIC DISPLAY DURING AUTO MANEUVER
		TC	BANKCALL
		CADR	GODSPR
		TC	CHKLINUS	# TO CHECK FOR PRIORITY DISPLAYS
		
STARTMNV	TC	BANKCALL	# PERFORM MANEUVER VIA KALCMANU
		CADR	GOMANUR
		
ENDMANUV	TCF	TOBALLA		# FINISHED MANEUVER.
ENDMANU1	TC	DOWNFLAG	# RESET 3-AXIS FLAG
		ADRES	3AXISFLG
		CAE	TEMPR60
		TC	BANKJUMP
		
CHKLINUS	CS	FLAGWRD4
		MASK	PDSPFBIT	# IS PRIORITY DISPLAY FLAG SET?
		CCS	A
		TC	Q		# NO -- EXIT
		CA	Q
		TS	MPAC +2		# SAVE RETURN
		CS	THREE		# OBTAIN LOCATION FOR RESTART
		AD	BUF2		# HOLD Q OF LAST DISPLAY
		TS	TBASE2
		
		TC	PHASCHNG
		OCT	00132
		
		CAF	BIT7
		TC	LINUS		# GO SET BITS FOR PRIORITY DISPLAY
		TC	MPAC +2
		
# Page 475		
RELINUS		CAF	PRIO26		# RESTORE ORIGINAL PRIORITY
		TC	PRIOCHNG
		
		CAF	TRACKBIT	# DON'T CONTINUE R60 UNLESS TRACKFLAG ON.
		MASK	FLAGWRD1
		CCS	A
		TCF	RER60
		
		CAF	RNDVZBIT	# IS IT P20?
		MASK	FLAGWRD0
		CCS	A
		TC	+4		# YES
		TC	PHASCHNG	# NO, MUST BE P25, SET 2.11 SPOT
		OCT	40112
		
		TC	ENDOFJOB
		
		TC	PHASCHNG	# SET 2.7 SPOT FOR P20
		OCT	40072
		
		TC 	ENDOFJOB
		
RER60		TC	UPFLAG		# SET PRIO DISPLAY FLAG AFTER RESTART
		ADRES	PDSPFLAG
		
		TC	TBASE2
		
R61TEST		CA	MODREG		# IF WE ARE IN P00 IT MUST BE V49 OR V89
		EXTEND
		BZF	ENDMANU1	# THUS WE GO TO ENDEXT VIA USER
		
		CA	FLAGWRD4	# ARE WE IN R61 (P20 OR P25)
		MASK	PDSPFBIT
		EXTEND
		BZF	GOTOP00H	# NO
		TC	GOTOV56		# YES
		
BIT14+7		OCT	20100
OCT203		OCT	203
V06N18		VN	0618

# SUBROUTINE TO CHECK FOR G+N CONTROL, AUTO STABILIZATION
#
# RETURNS WITH C(A) = + 	IF NOT SET FOR G+N, AUTO
# RETURNS WITH C(A) = +0	IF SWITCHES ARE SET

G+N,AUTO	EXTEND
		READ	CHAN30
		MASK	BIT10
		CCS	A
		TC	Q		# NOT IN G+N	C(A) = +
# Page 476		
ISITAUTO	EXTEND			# CHECK FOR AUTO MODE
		READ	CHAN31
		MASK	BIT14
		TC	Q		# (+) = NOT IN AUTO, (+0) = AOK
		
# Page 477
# PROGRAM DESCRIPTION BALLANGS
# MOD NO.				LOG SECTION R60,R62
#
# WRITTEN BY RAMA M. AIYAWAR
#
# FUNCTIONAL DESCRIPTION
#
# 	COMPUTES LM FDAI BALL DISPLAY ANGLES
#
# CALLING SEQUENCE
#
#	TC	BALLANGS
#
# NORMAL EXIT MODE
#
#	TC	BALLEXIT	# (SAVED Q)
#
# ALARM OR EXIT MODE:	NIL
#
# SUBROUTINES CALLED
#
#	CD*TR*G
#	ARCTAN
#
# INPUT
#
#	CPHI,CTHETA,CPSI ARE THE ANGLES CORRESPONDING TO AOG, AIG, AMG.  THEY ARE
#	SP,2'S COMPLEMENT SCALED TO HALF REVOLUTION.
#
# OUTPUT
#
#	FDAIX, FDAIY, FDAIZ ARE THE REQUIRED BALL ANGLES SCALED TO HALF REVOLUTION
#	SP,2'S COMPEMENT.
#
#	THESE ANGLES WILL BE DISPLAYED AS DEGREES AND HUNDREDTHS, IN THE ORDER ROLL, PITCH, YAW, USING NOUNS 18 & 19.
#
# ERASABLE INITIALIZATION REQUIRED
#
#	CPHI, CTHETA, CPSI 	EACH AN SP REGISTER
#
# DEBRIS
#
#	A,L,Q,MPAC,SINCDU,COSCDU,PUSHLIST,BALLEXIT
#
# NOMENCLATURE:	CPHI, CTHETA, & CPSI REPRESENT THE OUTER, INNER, AND MIDDLE GIMBAL ANGLES, RESPECTIVELY; OR
# 		EQUIVALENTLY, CDUX, CDUY, AND CDUZ.
#
# NOTE:  ARCTAN CHECKS FOR OVERFLOW AND SHOULD BE ABLE TO HANDLE ANY SINGULARITIES.

		SETLOC	BAWLANGS
		BANK
		
		COUNT*	$$/BALL
BALLANGS	TC	MAKECADR
		TS	BALLEXIT
		CA	CPHI
# Page 478
		TS	CDUSPOT +4
		CA	CTHETA
		TS	CDUSPOT
		CA	CPSI
		TS	CDUSPOT +2
		
		TC	INTPRET
		SETPD	CALL
			0D
			CD*TR*G
			
		DLOAD	DMP
			SINCDUX		# SIN (OGA)
			COSCDUZ		# COS (MGA)
			
		SL1	DCOMP		# SCALE
		ARCSIN	PDDL		# YAW = ARCSIN(-SXCZ) INTO 0 PD
			SINCDUZ		
		STODL	SINTH		# (SINTH = 18D IN PD)
			COSCDUZ
		DMP	SL1		# RESCALE
			COSCDUX
		STCALL	COSTH		# (COSTH = 16D IN PD)
			ARCTAN
		PDDL	DMP		# ROLL = ARCTAN(SZ/CZCX) INTO 2 PD
			SINCDUZ
			SINCDUX
		SL2	PUSH		# SXSZ INTO 4 PD
		DMP	PDDL		# SXSZCY INTO 4 PD
			COSCDUY
		DMP	PDDL		# SXSZSY INTO 6 PD
			SINCDUY
			COSCDUX
		DMP	SL1		# CXCY
			COSCDUY
		DSU	STADR		# PULL UP FORM 6 PD
		STODL	COSTH		# COSTH = CXCY - SXSZSY
			SINCDUY
		DMP	SL1
			COSCDUX		# CXSY
		DAD	STADR		# PULL UP FORM 4 PD
		STCALL	SINTH		# SINTH = CXSY + SXSZCY
			ARCTAN		# RETURNS WITH D(MPAC) = PITCH
		PDDL	VDEF		# PITCH INTO 2 PD, ROLL INTO MPAC FROM 2 PD
		RTB			# VDEF MAKES V(MPAC) = ROLL, PITCH, YAW
			V1STO2S
		STORE	FDAIX		# MODE IS TP
		EXIT
		
ENDBALL		CA	BALLEXIT

# Page 479
		TC	BANKJUMP

# Page 480
# PROGRAM DESCRIPTION -- VECPOINT
#
# THIS INTERPRETIVE SUBROUTINE MAY BE USED TO POINT A SPACECRAFT AXIS IN A DESIRED DIRECTION.  THE AXIS
# TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN SUCCESSIVE LOCATIONS OF ERASABLE MEMORY
# BEGINNING WITH THE LOCATION CALLED SCAXIS.  THE COMPONENTS OF THIS VECTOR ARE GIVEN IN SPACECRAFT COORDINATES.
# THE DIRECTION IN WHICH THIS AXIS IS TO BE POINTED MUST APPEAR AS A HALF UNIT DOUBLE PRECISION VECTOR IN
# SUCCESSIVE LOCATIONS OF ERASABLE MEMORY BEGINNING WITH THE ADDRESS CALLED POINTVSM.  THE COMPONENTS OF THIS
# VECTOR ARE GIVEN IN STABLE MEMBER COORDINATES.  WITH THIS INFORMTION VECPOINT COMPUTES A SET OF THREE GIMBAL
# ANGLES (2'S COMPLEMENT) CORRESPONDING TO THE CROSS-PRODUCT ROTATION BETWEEN SCAXIS AND POINTVSM AND STORES THEM
# IN T(MPAC) BEFORE RETURNING TO THE CALLER.
#
# THIS ROTATION, HOWEVER, MAY BRING THE S/C INTO GIMBAL LOCK.  WHEN POINTING A VECTOR IN THE Y-Z PLANE,
# THE TRANSPONDER AXIS, OR THE AOT FOR THE LEM, THE PROGRAM WILL CORRECT THIS PROBLEM BY ROTATING THE CROSS-
# PRODUCT ATTITUDE ABOUT POINTVSM BY A FIXED AMOUNT SUFFICIENT TO ROTATE THE DESIRED S/C ATTITUDE OUT OF GIMBAL
# LOCK.  IF THE AXIS TO BE POINTED IS MORE THAN 40.6 DEGREES BUT LESS THAN 60.5 DEG FROM THE +X (OR -X) AXIS,
# THE ADDITIONAL ROTATION TO AVOID GIMBAL LOCK IS 35 DEGREES.  IF THE AXIS IS MORE THAN 60.5 DEGREES FROM +X (OR -X)
# THE ADDITIONAL ROTATION IS 35 DEGREES.  THE GIMBAL ANGLES CORRESPONDING TO THIS ATTITUDE ARE THEN COMPUTED AND
# STORED AS 2'S COMPLEMENT ANGLES IN T(MPAC) BEFORE RETURNING TO THE CALLER.
#
# WHEN POINTING THE X-AXIS, OR THE THRUST VECTOR, OR ANY VECTOR WITHIN 40.6 DEG OF THE X-AXIS, VECPOINT
# CANNOT CORRECT FOR A CROSS-PRODUCT ROTATION INTO GIMBAL LOCK.  IN THIS CASE A PLATFORM REALIGNMENT WOULD BE
# REQUIRED TO POINT THE VECTOR IN THE DESIRED DIRECTION.  AT PRESENT NO INDICATION IS GIVEN FOR THIS SITUATION
# EXCEPT THAT THE FINAL MIDDLE GIMBAL ANGLE IN MPAC +2 IS GREATER THAN 59 DEGREES.
#
# CALLING SEQUENCE
#
#	1)	LOAD SCAXIS, POINTVSM
#	2)	CALL
#			VECPOINT
#
# RETURNS WITH
#
#	1)	DESIRED OUTER GIMBAL ANGLE IN MPAC
#	2)	DESIRED INNER GIMBAL ANGLE IN MPAC +1
#	3)	DESIRED MIDDLE GIMBAL ANGLE IN MPAC +2
#
# ERASABLES USED --
#
#	1)	SCAXIS		6
#	2)	POINTVSM	6
#	3)	MIS		18
#	4)	DEL		18
#	5)	COF		6
#	6)	VECQTEMP	1
#	7)	ALL OF VAC AREA	43
#
#			TOTAL	99

		SETLOC	VECPT
		BANK
# Page 481
		COUNT*	$$/VECPT
		
		EBANK=	BCDU
		
VECPNT1		STQ	BOV		# THIS ENTRY USES DESIRED CDUS
			VECQTEMP	# NOT PRESENT -- ENTER WITH CDUD'S IN MPAC
			VECPNT2
VECPNT2		AXC,2	GOTO
			MIS
			STORANG
VECPOINT	STQ	BOV		# SAVE RETURN ADDRESS
			VECQTEMP
			VECLEAR		# AND CLEAR OVFIND
VECLEAR		AXC,2	RTB
			MIS		# READ THE PRESENT CDU ANGLES AND
			READCDUK	# STORE THEM IN PD25, 26, 27
STORANG		STCALL	25D
			CDUTODCM	# S/C AXES TO STABLE MEMBER AXES (MIS)
		VLOAD	VXM
			POINTVSM	# RESOLVE THE POINTING DIRECTION VF INTO
			MIS		# INITIAL S/C AXES (VF = POINTVSM)
		UNIT
		STORE	28D
					# PD 28 29 30 31 32 33
		VXV	UNIT		# TAKE THE CROSS PRODUCT VF X VI
			SCAXIS		# WHERE VI = SCAXIS
		BOV	VCOMP
			PICKAXIS
		STODL	COF		# CHECK MAGNITUDE
			36D		# OF CROSS PRODUCT
		DSU	BMN		# VECTOR, IF LESS
			DPB-14		# THAN B-14 ASSUME
			PICKAXIS	# UNIT OPERATION
		VLOAD	DOT		# INVALID.
			SCAXIS
			28D
		SL1	ARCCOS
COMPMATX	CALL			# NOW COMPUTE THE TRANSFORMATION FROM
			DELCOMP		# FINAL S/C AXES TO INITIAL S/C AXES MFI
		AXC,1	AXC,2
			MIS		# COMPUTE THE TRANSFORMATION FROM FINAL
			KEL		# S/C AXES TO STABLE MEMBER AXES
		CALL			# MFS = MIS MFI
			MXM3		# (IN PD LIST)
			
		DLOAD	ABS
			6		# MFS6 = SIN(CPSI)			$2
		DSU	BMN
			SINGIMLC	# = SIN(59 DEGS)			$2
			FINDGIMB	# /CPSI/ LESS THAN 59 DEGS.
# Page 482
					# I.E., DESIRED ATTITUDE NOT IN GIMBAL LOCK
					
		DLOAD	ABS		# CHECK TO SEE IF WE ARE POINTING
			SCAXIS		# THE THRUST AXIS
		DSU	BPL
			SINVEC1		# SIN 49.4 DEGS				$2
			FINDGIMB	# IF SO, WE ARE TRYING TO POINT IT INTO
		VLOAD			# GIMBAL LOCK, ABORT COULD GO HERE
		STADR
		STOVL	MIS 	+12D
		STADR			# STORE MFS (IN PD LIST) IN MIS
		STOVL	MIS 	+6
		STADR
		STOVL	MIS
			MIS 	+6	# INNER GIMBAL AXIS IN FINAL S/C AXES
		BPL	VCOMP		# LOCATE THE IG AXIS DIRECTION CLOSEST TO
			IGSAMEX		# FINAL X S/C AXIS
			
IGSAMEX		VXV	BMN		# FIND THE SHORTEST WAY OF ROTATING THE 
			SCAXIS		# S/C OUT OF GIMBAL LOCK BY A ROTATION 
			U=SCAXIS	# ABOUT +- SCAXIS, I.E., IF  (IG (SGN MFS3)
					# X SCAXIS . XF) LESS THAN 0, U = SCAXIS
					# OTHERWISE U = -SCAXIS.
					
		VLOAD	VCOMP
			SCAXIS
		STCALL	COF		# ROTATE ABOUT -SCAXIS
			CHEKAXIS
U=SCAXIS	VLOAD
			SCAXIS
		STORE	COF		# ROTATE ABOUT + SCAXIS
CHEKAXIS	DLOAD	ABS
			SCAXIS		# SEE IF WE ARE POINTING THE AOT
		DSU	BPL
			SINVEC2		# SIN 29.5 DEGS				$2
			PICKANG1	# IF SO, ROTATE 50 DEGS ABOUT +- SCAXIS
		DLOAD	GOTO		# IF NOT, MUST BE POINTING THE TRANSPONDER
			VECANG2		# OR SOME VECTOR IN THE Y, OR Z PLANE
			COMPMFSN	# IN THIS CASE ROTATE 35 DEGS TO GET OUT
					# OF GIMBAL LOCK (VECANG2  $360)
PICKANG1	DLOAD
			VECANG1		# = 50 DEGS.				$360
COMPMFSN	CALL
			DELCOMP		# COMPUTE THE ROTATION ABOUT SCAXIS TO
		AXC,1	AXC,2		# BRING MFS OUT OF GIMBAL LOCK
			MIS
			KEL
		CALL			# COMPUTE THE NEW TRANSFORMATION FROM
			MXM3		# DESIRED S/C AXES TO STABLE MEMBER AXES
					# WHICH WILL ALIGN VI WITH VF AND AVOID
# Page 483
					# GIMBAL LOCK
FINDGIMB	AXC,1	CALL
			0		# EXTRACT THE COMMANDED CDU ANGLES FROM
			DCMTOCDU	# THIS MATRIX
		RTB	SETPD
			V1STO2S		# CONVERT TO 2'S COMPLEMENT
			0
		GOTO
			VECQTEMP	# RETURN TO CALLER
			
PICKAXIS	VLOAD	DOT		# IF VF X VI = 0, FIND VF, VI
			28D
			SCAXIS
		BMN	TLOAD
			ROT180
			25D
		GOTO			# IF VF = VI, CDU DESIRED = PRESENT CDU
			VECQTEMP	# PRESENT CDU ANGLES
			
		BANK	35
		SETLOC	MANUVER1
		BANK
ROT180		VLOAD	VXV		# IF VF, VI ANTIPARALLEL, 180 DEG ROTATION
			MIS 	+6	# IS REQUIRED.  Y STABLE MEMBER AXIS IN
			HIDPHALF	# INITIAL S/C AXES.
		UNIT	VXV		# FIND Y(SM) X X(I)
			SCAXIS		# FIND UNIT(VI X UNIT(Y(SM) X X(I)))
		UNIT	BOV		# I.E., PICK A VECTOR IN THE PLANE OF X(I),
			PICKX		# Y(SM) PERPENDICULAR TO VI
		STODL	COF
			36D		# CHECK MAGNITUDE
		DSU	BMN		# OF THIS VECTOR.
			DPB-14		# IF LESS THAN B-14,
			PICKX		# PICK X-AXIS.
		VLOAD
			COF
XROT		STODL	COF
			HIDPHALF
		GOTO
			COMPMATX
PICKX		VLOAD	GOTO		# PICK THE XAXIS IN THIS CASE
			HIDPHALF
			XROT
SINGIMLC	2DEC	.4285836003	# = SIN(59)				$2

SINVEC1		2DEC	.3796356537	# = SIN(49.4)				$2

SINVEC2		2DEC	.2462117800	# = SIN(29.5)				$2

VECANG1		2DEC	.1388888889	# = 50 DEGREES				$360
# Page 484
VECANG2		2DEC	.09722222222	# = 35 DEGREES				$360

1BITDP		OCT	0		# KEEP THIS BEFORE DPB(-14)	************
DPB-14		OCT	00001
		OCT	00000
		
# Page 485
# ROUTINE FOR INITIATING AUTOMATIC MANEUVER VIA KEYBOARD (V49)

		BANK	34
		SETLOC	R62
		BANK
		EBANK=	BCDU
		
		COUNT*	$$/R62
		
R62DISP		EQUALS	R62FLASH

R62FLASH	CAF	V06N22		# FLASH V06N22 AND
		TC	BANKCALL	# ICDU ANGLES
		CADR	GOFLASH
		TCF	ENDEXT		# TERMINATE
		TCF	GOMOVE		# PROCEED
		TCF	R62FLASH	# ENTER
		
					# ASTRONAUT MAY LOAD NEW ICDUS AT THIS
					# POINT.
GOMOVE		TC	UPFLAG		# SET FOR 3-AXIS MANEUVER
		ADRES	3AXISFLG
		
		TC	BANKCALL
		CADR	R60LEM
		TCF	ENDEXT		# END R62
		
