https://github.com/virtualagc/virtualagc
Revision 4e5d304eb7cd5589b924ffb8b423b6f15511b35d authored by Ron Burkey on 20 October 2018, 17:47:00 UTC, committed by Ron Burkey on 20 October 2018, 17:47:00 UTC
the recently-added documents about YUL, was transcribed.  Because the
original program contained a deliberate error in YUL (as well as some
constructs that have unintentionally become errors in yaYUL), I've
provided it in two forms:  TRIVIUM (which matches the original scan,
to the extent feasible) and TRIVIUM-repaired (which has the deliberate
and unintentional errors fixed, but otherwise retains the identical
functionality of the original).
1 parent c6c292e
Raw File
Tip revision: 4e5d304eb7cd5589b924ffb8b423b6f15511b35d authored by Ron Burkey on 20 October 2018, 17:47:00 UTC
The sample Block I AGC program TRIVIUM, found at the very end of one of
Tip revision: 4e5d304
POWERED_FLIGHT_SUBROUTINES.agc
### FILE="Main.annotation"
## Copyright:	Public domain.
## Filename:	POWERED_FLIGHT_SUBROUTINES.agc
## Purpose:	Part of the source code for Solarium build 55. This
##		is for the Command Module's (CM) Apollo Guidance
##		Computer (AGC), for Apollo 6.
## Assembler:	yaYUL --block1
## Contact:	Jim Lawton <jim DOT lawton AT gmail DOT com>
## Website:	www.ibiblio.org/apollo/index.html
## Page Scans:	www.ibiblio.org/apollo/ScansForConversion/Solarium055/
## Mod history:	2009-09-27 JL	Created.
##		2016-08-20 RSB	Typos.
##		2016-08-21 RSB	More typos.
##		2016-08-23 RSB	More of the same.
##		2016-08-24 RSB	And a few final ones!
## 		2016-12-28 RSB	Proofed comment text using octopus/ProoferComments,
##				and fixed errors found.

## Page 628
# THIS ROUTINE ENTERED AT CDUTRIG READS PRESENT CDU REGISTERS AND STORES THEM SCALED AT ONE REVOLUTION AS A DP
# VECTOR IN CDUTEMP. IT COMPUTES SIN,COS(CDUX,Y,Z) AND STORES THEM IN SINCDU,+2,+4 AND COSCDU,+2,+4 RESPECTIVELY
# SCALED AT 2(+1). WHEN ENTERED AT THETRIG THE ROUTINE PERFORMS THE SAME FUNCTION WITH THE DESIRED CDU ANGLE REG-
# ISTERS THETAD,+1,+2. ENTER WITH C(X1) =6 FOR X,Y,Z ( =4 FOR Y,Z ONLY)



		SETLOC	52000
CDUTRIG		EXIT	0

		INHINT
		CS	CDUX
		TS	CDUTEMP
		CS	CDUY
		TS	CDUTEMP +2
		CS	CDUZ
		TS	CDUTEMP +4
		RELINT
		TC	JUMP3

THETRIG		EXIT	0

		INHINT
		CS	THETAD
		TS	CDUTEMP
		CS	THETAD +1
		TS	CDUTEMP +2
		CS	THETAD +2
		TS	CDUTEMP +4
		RELINT

JUMP3		CS	FLAGWRD2	# TEST IF CDUX FLAG SET
		MASK	BIT14		# (CDUXFLAG MASK)
		CCS	A
		TC	JUMP8		# IT IS NOT
		CAF	LOW11
		MASK	CDUTEMP
		TS	CYL
		CS	CYL
		CS	CYL
		CS	CYL
		XCH	CYL
		XCH	CDUTEMP
		
JUMP8		TC	INTPRET

SINCOS		AST,1	0
			2

REPEAT1		SMOVE*	1
## Page 629
		COMP	RTB
			CDUTEMP +6,1
			CDULOGIC
		STORE	CDUTEMP +6,1
		
		NOLOD	1
		SIN
		STORE	SINCDU +6,1
		
		COS*	0
			CDUTEMP +6,1
		STORE	COSCDU +6,1
		
		TIX,1	2
		ABS	TSLT		# TEST IF COS(THETAD+2) LESS THAN COS(60)
		BOV	EXIT
			REPEAT1
			COSCDU +4
			2
			NOGIMLOC	# IT IS NOT. NO NEED TO ALARM
		
		TC	ALARM
		OCT	01407
		
		TC	INTPRET

NOGIMLOC	ITCQ	0

HIGH11		OCT	77760

## Page 630

# THIS ROUTINE COMPUTES DESIRED CDU(GIMBAL) ANGLES GIVEN THE DESIRED NAV. BASE AXES IN XNB AS THREE HALF UNIT
# VECTORS IN STABLE MEMBER COORDINATES. THE DESIRED CDUX,Y,Z APPEAR IN MPAC, +1, +2 AT THE SAME SCALING AS CDUX,
# Y, Z WITH THE INTERPRETER SET TO THE TP MODE



CALCCDU		ITA	1
		ITC
			S1
			CALCGTA
		
		TEST	1		# IF CDUXFLAG SET, RESCALE OGC TO 8 REVS
		RTB
			CDUXFLAG
			GETOGC
			CDUXFIX

GETOGC		VMOVE	1
		RTB	ITCI
			OGC
			V1STO2S
			S1

## Page 631

# THIS ROUTINE COMPUTES THE MATRIX WHICH TRANSFORMS FROM STABLE MEMBER COORDINATES TO NAV. BASE COORDINATES. IT
# REQUIRES SIN,COS(CDUX,Y,Z) IN SINCDU, +2, +4 AND COSCDU, +2, +4 RESPECTIVELY SCALED TO ONE HALF. THE MATRIX IS
# STORED IN X,Y,ZNB AS THREE HALF UNIT ROW VECTORS



CALCSMNB	DMP	1
		COMP
			SINCDU +2
			COSCDU +4
		
		TSRT	0
			SINCDU +4
			1
		
		DMP	1
		VDEF	VSLT
			COSCDU +2
			COSCDU +4
			1
		STORE	XNB
		
		DMP	1
		TSLT
			SINCDU
			SINCDU +4
			1
		STORE	26D
		
		NOLOD	1
		DMP
			SINCDU +2
		
		DMP	1
		DSU
			COSCDU
			COSCDU +2

		DMP	1
		COMP
			SINCDU
			COSCDU +4

		DMP	0
			COSCDU
			SINCDU +2

		DMP	2
		DAD	VDEF
		VSLT
## Page 632
			COSCDU +2
			26D
			-
			1
		STORE	ZNB
		
		NOLOD	1
		VXV	VSLT
			XNB
			1
		STORE	YNB
		
		ITCQ	0

## Page 633

# ROUTINE CALCSCNB TRANSFORMS A MATRIX OF HALF UNIT VECTORS ALONG SPACECRAFT AXES, XSCD, INTO A MATRIX OF HALF
# UNIT VECTORS ALONG NAV. BASE AXES, XNB. ROUTINE CALCNBSC DOES THE INVERSE, STORING THE MATRIX OF UNIT VECTORS
# ALONG SPACECRAFT AXES IN XSC



CALCSCNB	VXSC	0
			XSCD
			COS33
		
		VXSC	1
		BVSU
			ZSCD
			SIN33
		STORE	XNB
		
		VMOVE	0
			YSCD
		STORE	YNB
		
		VXSC	0
			XSCD
			SIN33
		
		VXSC	1
		VAD
			ZSCD
			COS33
		STORE	ZNB
		
		ITCQ	0

## Page 634

CALCNBSC	VXSC	0
			XNB
			COS33
		
		VXSC	1
		VAD
			ZNB
			SIN33
		STORE	XSC
		
		VMOVE	0
			YNB
		STORE	YSC
		
		VXSC	0
			XNB
			SIN33
		
		VXSC	1
		VSU
			ZNB
			COS33
		STORE	ZSC
		
		ITCQ	0

SIN33		2DEC	0.544639000
COS33		2DEC	0.838670600

## Page 635

# THIS ROUTINE COMPUTES INCREMENTAL CHANGES IN CDU(GIMBAL) ANGLES FROM INCREMENTAL ANGULAR CHANGES ABOUT SM AXES.
# IT REQUIRES SM INCREMENTS AS A DP VECTOR IN VAC SCALED AT ONE REVOLUTION, SIN,COS(CDUX,Y,Z) IN SINCDU, +2, +4 
# AND COSCDU, +2, +4 RESPECTIVELY SCALED TO ONE HALF. CDU INCREMENTS APPEAR IN THE VAC SCALED AT ONE REV.

SMCDURES	DMP	0
			32D
			COSCDU +2
			
		DMP	1
		BDSU	DDV
			36D
			SINCDU +2
			-
			COSCDU +4
		STORE	22D
		
		NOLOD	2
		DMP	TSLT
		BDSU
			SINCDU +4
			1
			34D
		STORE	24D
		
		DMP	0
			32D
			SINCDU +2
		
		DMP	1
		DAD	TSLT
			36D
			COSCDU +2
			-
			1
		STORE	26D
		
		VMOVE	1
		ITCQ
			22D

## Page 636
# THIS ROUTINE COMPUTES INCREMENTAL ANGULAR CHANGES ABOUT NAV. BASE AXES FROM INCREMENTAL CDU ANGLE CHANGES. IT
# REQUIRES THE CDU INCREMENTS AS A DP VECTOR IN DCDU, +2, +4, SCALED AT ONE REVOLUTION. SIN,COS(CDUX,Y,Z) MUST BE
# IN SINCDU, +2, +4, AND COSCDU, +2, +4 RESPECTIVELY SCALED AT ONE HALF. INCREMENTAL NAV. BASE ANGLES APPEAR IN 
# DNB, +2, +4 SCALED AT ONE REVOLUTION



CDUNBRES	DMP	1
		TSLT
			COSCDU +4
			DCDU +2
			1
		STORE	26D
		
		NOLOD	1
		DMP
			SINCDU
		
		DMP	1
		DSU
			COSCDU
			DCDU +4
		
		DMP	0
			26D
			COSCDU
		
		DMP	1
		DAD
			SINCDU
			DCDU +4
		
		TSRT	0
			DCDU
			1
		
		DMP	2
		DAD	VDEF
		VSLT
			SINCDU +4
			DCDU +2
			-
			1
		STORE	DNB
		
		ITCQ	0

## Page 637

# THIS ROUTINE COMPUTES INCREMENTAL CHANGES TO CDU ANGLES FROM INCREMENTAL ANGULAR CHANGES ABOUT NAV. BASE AXES.
# IT REQUIRES THE INCREMENTAL NAV. BASE ANGLES AS A DP VECTOR IN VAC SCALED AT 1 REVOLUTION. SIN,COS(CDUX,Y,Z) 
# MUST BE IN SINCDU, COSCDU RESPECTIVELY SCALED AT 2(+1). IT LEAVES CDU INCREMENTS AS A DP VECTOR IN DCDU AT THE
# SAME SCALING



NBCDURES	DMP	0
			36D
			SINCDU
			
		DMP	1
		DSU	DDV
			34D
			COSCDU
			-
			COSCDU +4
		STORE	DCDU +2
		
		NOLOD	2
		DMP	COMP
		TSLT	DAD
			SINCDU +4
			1
			32D
		STORE	DCDU
		
		DMP	0
			34D
			SINCDU
		
		DMP	1
		DAD	TSLT
			36D
			COSCDU
			-
			1
		STORE	DCDU +4
		
		ITCQ	0

## Page 638

# THIS ROUTINE RESOLVES THE SMALL ANGLE VECTOR STORED AS SM COMPONENTS IN VAC. SCALED TO ONE REVOLUTION, INTO
# COMMANDED CDU ANGLE CHANGES VAC, +2,+4, SCALED TO ONE REVOLUTION, THROUGH THE DESIRED CDU ANGLES DEFINED BY
# THETAD,+1,+2. THE ROUTINE THEN INCREMENTS THETAD,+1,+2 IN 2S COMP. AT CDUX,Y,Z SCALING



CDUDRIVE	ITA	1
		AXT,1	ITC
			S2
			4
			THETRIG

CDUDRVE2	ITC	0
			SMCDURES
		
		TEST	1		# TEST IF CDUX FLAG SET
		TSRT
			CDUXFLAG
			CDUDRVE1
			32D
			4
		STORE	32D
		
CDUDRVE1	NOLOD	2		# RESCALE DCDU AND BRANCH TO
		VSLT	RTB		# INCREMENT THETAD
		ITCI
			1
			INCRCDUS
			S2

## Page 639

# THE FOLLOWING SERIES OF CLOSED SUBROUTINES COMPUTE THE REQUIRED VELOCITY VR, SCALED TO 2(+8)M/CS, VELOCITY-TO-BE
# -GAINED VG, SCALED TO 2(+7)M/CS, AND THE MDOIFIED B-VECTOR CBDT, SCALED TO 2(+4)M/CS, FOR THE DIFFERENT PHASES
# OF POWERED FLIGHT.



CALCVGB		VMOVE	0
			VR
		STORE	CBDT		# (CBDT USED HERE AS TEMP. STORAGE FOR VR)
		
		ITA	1
		LXA,1	ITCI
			S2
			XSHIFT
			VRCADR

CALCCBDT	NOLOD	1
		VSU	VSLT
			CBDT		# OLD VR
			4		# D(VR) TO PD SCALED AT 2(+4) M/CS
		
		VXSC	1
		VAD	VXSC
			GRAVITY
			DELTAT
			-
			CFACTOR		# SCALED AT 2(+0)
		STORE	CBDT		# SCALED AT 2(+4) M/CS
		
		VSLT	1
		VSU	STZ
			VR
			1
			VN
			OVFIND		# FIRST PASS THRU CALCVGB MAY OVERFLOW
		STORE	VG		# SCALED AT 2(+7) M/CS
		
		ITCI	0
			S2

## Page 640

# THESE ROUTINES COMPUTE VR FOR THE TWO NOMINAL SPS BURNS OF FLIGHT 501
501SPS1		AXT,1	1		# C(X1) = +0  (SPS1)
		AXT,2	ITC		# C(X2) =+1  (SPS1)
			0
			1
			+5

501SPS2		AXC,1	1		# C(X1) = -2  (SPS2)
		AXC,2			# C(X2) =-1  (SPS2)
			2
			1
		
		DMOVE*	6
		DDV	DSU
		DSQ	DSU*
		ABS	DMP
		DDV*	TSRT
		SQRT	SIGN
		VXSC
			SEMILAT,1	# SCALED AT 2(+27)M
			RMAG		#           2(+25)M
			DP2(-2)
			ESQ(VR),1	# SCALED AT 2(+4)
			MUE		# SCALED AT 2(+38) M(+3)/CS(+2)
			SEMILAT,1
			5
			X2
			UNITR		# VRAD TO PD  SCALED AT 2(+11) M/CS
		
		DMOVE	2
		DMP*	DDV
		SQRT
			MUE(41)
			SEMILAT,1
			RMAGSQ		# SCALED AT 2(+50)M(+2)
					# VHOR MAG. TO PD SCALED AT 2(+9) M/CS
		VXV	3
		UNIT	VXV
		VXSC	VAD
		VSLT
			UNITR
			VIGNTION
			UNITR
			-
			-
			3
		STORE	VR
		
		ITC	0
			CALCCBDT

## Page 641

# THIS ROUTINE COMPUTES VG, CBDT, FOR LANDING AREA CONTROL DURING BOOST ABORTS ON FLIGHT 501



501ABORT	VXV	1
		VSLT
			RN
			VN
			1		# 4 SCALED 2(+31) M(+2)/CS
		
		NOLOD	1
		UNIT
		STORE	UNITRXV		# UNIT NORMAL TO PLANE, IP  2(+1)
		
		DSU	1
		TSRT
			RINTALT
			RMAG
			2		# (RE - R) MAG SCALED 2(+27)
		
		VXV	1
		VSLT
			UNITRXV		# IP
			UNITR		# IR
			1		# TIMES 2
		STORE	UNITHORZ	# UNIT HORIZONTAL IN PLANE, IHP  2(+1)
		
		NOLOD	1
		DOT
			VN		# IHP.V  SCALED 2(+8)
		
		DOT	2
		TSRT	DDV
		DMP
			VN
			UNITR		# IR.V  SCALED 2(+8)
			3		# TIMES 2(-3)
			-		# DIVIDE BY IHP.V SCALED 2(+8)
			RINTALT		# RE COT(GAMMA) SCALED  2(+28)
		
		VSQ	1
		DDV
			0		# H SCALED 2(+31)
			MUE		# H(SQ)/MUE = P SCALED 2(+24)
		
		VSQ	1
		TSRT	DDV
			VN		# V(SQ) 2(+14)
			4		# TIMES 2(-4)
			MUE		# V(SQ)/MUE  SCALED 2(-20)
## Page 642
		DDV	2
		DSU	DMP
		BDSU
			DP2(-4)
			RMAG
			-
			RINTALT
			DP2(-4)		# (1+RE((V**2/2 MUE)-1/R))  SCALED 2(+4)
		
		NOLOD	2
		BMN	SQRT
		DMP	TSLT
			SMACHECK	# SMA LESS THAN RE/2
			V400
			2		# VE TO PD SCALED 2(+7)  M/CS
		
		DSU	1
		BPL
			VCRIT		# 22,000 FT/SEC SCALED 2(+7) M/CS
			-		# VE SCALED 2(+7) M/CS
			GETRANGE	# SET RANGE TO MINRANGE
		
		DMP	2
		DAD	DMP
		DAD	TSLT
			14D		# VE SCALED 2(+7)
			KRANGE2
			KRANGE1
			14D		# VE SCALED 2(+7)
			KRANGE0
			4
		STORE	20D		# ENTRY RANGE ANGLE SCALED 2(+0) REVS.

GOTRANGE	NOLOD	1
		COS	VXSC
			RTATLANT	# RADIAL COMP UNIT TARG VECT  2(+2)
		
		SIN	1
		TSLT
			20D
			1		# SINE OF RANGE ANGLE  2(+0)
		
		VXV	1
		UNIT
			RTATLANT
			UNITR
		STORE	22D		# -UNITN, -IN, DESIRED NORMAL SCALED 2(+1)
		
		NOLOD	2
		VXV	VXSC
## Page 643
		VAD	VSLT
			RTATLANT
			-
			-
			1
		STORE	RTARG		# UNIT TARGET VECTOR SCALED 2(+1)
		
		DMP	5
		DDV	DSU
		BMN	SQRT
		DMP	BDSU
		BDDV	BOV
		RTB	TSRT
			RINTALT		# RE SCALED 2(+25)
			-
			-		# P SCALED 2(+24)
			DP2(-6)
			GAMCHECK	# COT(GAMMAE) SQ NEGATIVE
			RMAG		# R COT(GAMMAE) SCALED 2(+28)
			-		# RE COT(GAMMA) SCALED 2(+28)
			-		# (RE - R) SCALED 2(+27)
			TANCHECK	# TAN(THETAFF/2) EXCEEDS ----
			FRESHPD		# ZERO PD POINTER
			7D		# X = TAN(THETAFF/2) SCALED 2(+6)
		
		NOLOD	1
		DSQ	DAD
			DP2(-12)	# DENOMINATOR SCALED 2(+12)
		
		NOLOD	2
		DSU	COMP
		DDV
			DP2(-11)	# 1 - X(SQ) SCALED 2(+12)
			2		# COSEFF SCALED 2(+0)
		
		DOT	2
		TSLT	DSU
		BPL
			UNITR
			RTARG
			2		# COS ANGLE R TO TARG 2(+0)
			4		# COS FREE FALL ANGLE 2(+0)
			PASTIT		# FF ANGLE EXCEEDS ANGLE TO TARGET
		
		TSRT	1
		DDV	VXSC
			0
			5
			2		# SINEFF SCALED 2(+0)
			UNITHORZ	# IHP SINEFF SCALED 2(+1)
## Page 644
		VXSC	1
		VAD	VSU
			UNITR
			4		# IR COSEFF 2(+1)
			-		# UNIT VECTOR ALONG ENTRY-POINT VECT 2(+1)
			RTARG		# MINUS UNIT TARGET VECTOR  2(+1)
		
		NOLOD	1
		ABVAL
		STORE	2		# D SCALED 2(+2)
		
		ABVAL	2
		VXSC	DOT
		TSRT
			VN
			UNITHORZ
			22D		# -UNITN 2(+1)
			1		# DELTA V NORMAL SCALED 2(+11)
		
		ABVAL	2
		BDSU	TSLT
		ABS
			DIFFVECT	# MAG OLD DIFFVECT 2(+2) AFTER ABVAL
			2		# NEW MAG DIFFVECT 2(+2)
			1		# DELD SCALED 2(+1)
		
		NOLOD	0
		STORE	0		# DELD TO PD 0 ALSO
		
		DMP	3
		TSRT	DDV
		DAD	BDDV
		BOV	TSRT
			DELTAT
			2
			13D
			-
			TGOBIAS		# 5 SECS
			-		# ATTEMPT TO COMPUTE NEW ANORMAL 2(-12)
			ANOVFLOW	# IF OVF, ANORMAL = 8 FT/S/S SIGN DELTA V
			3		# SCALE AN TRIAL BACK TO 2(-9)
		STORE	ANORMAL		# ANORMAL SCALED 2(-9) M/CS(+2)
		
GO-ON		NOLOD	1
		VXSC
			UNITRXV		# ANORMAL ALONG IP SCALED 2(-8)
		
		VXSC	1
		ABVAL
			DELV
## Page 645
			KPIP
		STORE	4		# MEASURED DELTA V SCALED 2(+5)
		
		NOLOD	3
		DDV	DMP
		TSLT	VXSC
		VAD	UNIT
			DELTAT
			FULHAM		# APPROX COS OF THRUST ONTO HORIZ PLANE
			5
			UNITHORZ	# COEF OF SIN TERM OF IT SCALED 2(+1)
		
		DDV	1
		ASIN	DAD
			RVH		# RADIUS TO VISUAL HORIZON SCALED 2(+26) M
			RMAG		# R SCALED 2(+25)
			LOOKANG		# PHI SCALED 2(+0) REV.
		
		NOLOD	1
		COS	VXSC
			UNITR		# COS(PHI) IR SCALED 2(+2)
		
		SIN	2
		VXSC	VSU
		VSLT
			18D		# PHI
			12D		# SIN COEF SCALED 2(+1)
			-		# COS(PHI) SCALED 2(+2)
			1		# UNIT FINAL, IT, SCALED 2(+1)
		
		DMP	3
		DDV	TSLT
		BOV	TSRT
		VXSC	RTB
			2		# D  2(+2)
			4		# DELTA V  2(+5)
			0		# DELTA D  2(+1)
			1		# IS MAG VG GR THAN 2(+5) M/CS
			FIXVG		# IF YES, SET MAG VG TO 2(+5) M/CS
			1		# IF NO, SCALE MAG VG BACK TO 2(+6)
			-		# IT  2(+1)
			FRESHPD		# ZERO PD POINTER
		STORE	VG		# VG SCALED 2(+7) M/CS
		
PREXIT		VMOVE	0
			6
		STORE	DIFFVECT	# SAVE NEW DIFFVECT SCALED 2(+1)
		
		VMOVE	0
			ZEROVEC
## Page 646
		STORE	CBDT		# CBDT = 0 FOR 501 ABORTS
		
		ITCI	0
			S2		# RETURN

CHEKEXIT	TC	INTPRET		# EXIT FOR VR CHECK FAILURES

		RTB	1
		ITC
			FRESHPD		# ZERO PD POINTER
			VRFAIL

ANOVFLOW	SIGN	0
			ANPSEUDO	# AN = 8 FT/S/S SIGNED WITH DELTA V
			12D		# DELTA V
		STORE	ANORMAL
		
		ITC	0
			GO-ON

FIXVG		VMOVE	1
		VXSC	RTB
			-		# IT  2(+1)
			DP2(-1)
			FRESHPD		# ZERO PD POINTER
		STORE	VG		# MAG VG 2(+5) M/CS SCALED 2(+7)
		
		ITC	0
			PREXIT		# GO CLOSE OUT 501 ABORT

GETRANGE	DMOVE	0
			MINRANGE
		STORE	20D		# FREEZE RANGE ANGLE AT MINRANGE
		
		ITC	0
			GOTRANGE	# CONTINUE

PASTIT		EXIT	0
		TC	ALARM
		OCT	01403
		TC	CHEKEXIT

SMACHECK	EXIT	0
		TC	ALARM
		OCT	01404
		TC	CHEKEXIT

GAMCHECK	EXIT	0
		TC	ALARM
		OCT	01405
## Page 647
		TC	CHEKEXIT

TANCHECK	EXIT	0
		TC	ALARM
		OCT	01406
		TC	CHEKEXIT

RINTALT		2DEC	6500085 B-25	# 400K FT RADIUS
DP2(-4)		2DEC	0.0625
DP2(-6)		2DEC	0.015625
DP2(-11)	2DEC	0.000488281
DP2(-12)	2DEC	0.000244141
KRANGE0		2DEC	0.188045173	#                 2(+4)
KRANGE1		2DEC	-.713839193	#                 2(+11)
KRANGE2		2DEC	0.681759381	#                 2(+18)
MINRANGE	2DEC	0.019010080	# 6.8436288 DEG   2(+0) REVS.
V400		2DEC	0.865198746	# 110.7454396     2(+7) M/CS
TGOBIAS		2DEC	0.000059605	# 5 SECS          2(+23) CS
VCRIT		2DEC	0.523875000	# 22,000 FT/SEC   2(+7) M/CS
ANPSEUDO	2DEC	0.124846080	# 8 FT/S/S        2(-9) M/CS/CS
RE		2DEC	0.190084130	# 6.378165 E6 M   2(+25) M
RVH		2DEC	0.095042065	# 6.378165 E6 M   2(+26) M
FULHAM		2DEC	0.9397046	# COS 20 DEG.

## Page 648

# THESE ROUTINES COMPUTE VR TO ACHIEVE A CIRCULAR EARTH- OR MOON-CENTERED ORBIT



EARTHORB	DMOVE	1
		ITC
			MUE
			SQRTMU/R

LUNDEBST	DMOVE	1
		INCR,1
			MUM
			6D

SQRTMU/R	NOLOD	2
		DDV	TSLT*
		SQRT
			RMAG
			8D,1		# C(X1) =14-N  (EARTH)
					#       =20-N  (MOON)
		VXV	1
		UNIT	VXSC
			UNITR
			UNITN
		STORE	VR		# VR SCALED AT 2(+8)M/CS
		
		ITC	0
			CALCCBDT

## Page 649

# THIS ROUTINE COMPUTES VR TO ACHIEVE HYPERBOLIC VELOCITY VF FOR TRANSEARTH INJECTION



TRANSEAR	DDV	1
		TSLT*
			MUM
			RMAG
			4,1

		UNIT	0
			VF		# VF SCALED AT 2(+4)M/CS
		STORE	UNITF
		
		NOLOD	4
		DOT	DAD
		DMP	TSLT
		BDDV	DAD
		SQRT
			UNITR
			DP2(-2)
			28D		# (VF SQ)
			3
			-
			DP2(-10)
		STORE	26D		# SCALED AT 2(+5)
		
		NOLOD	1
		DAD	VXSC
			DP2(-5)
			UNITF
		
		DSU	2
		VXSC	VAD
		VXSC	VSLT
			26D
			DP2(-5)
			UNITR
			-
			30D		# (VF)
			2
		STORE	VR		# VR SCALED AT 2(+8)M/CS
		
		ITC	0
			CALCCBDT

DP2(-5)		2DEC	0.03125
DP2(-10)	2DEC	0.000976563

## Page 650

# THIS ROUTINE COMPUTES VR TO ACHIEVE A TRANSLUNAR ELLIPSE DEFINED BY A TARGET VECTOR RTRNSLUN AND A SEMI MAJOR
# AXIS SMA



TRANSLUN	TSLT	1
		SQRT
			MUE
			1
		
		DMOVE	1
		TSRT*
			30D		# (RN)
			10D,1		# RN RESCALED TO 2(+26)M
		
		VMOVE	2
		VSRT*	BVSU
		UNIT	VSRT
			RN
			10D,1		# RTRNSLUN-RMAG SCALED AT 2(+25)M
			RTRNSLUN
			1
		
		VSRT	1
		BVSU
			UNITR
			1
		STORE	UNITD
		
		NOLOD	1
		VAD
			UNITR
		STORE	UNITS
		
		ABVAL	2
		DAD	DAD
		TSRT
			RTRNSLUN
			30D		# (C)
			-		# (RN)
			1
		STORE	S		# S SCALED AT 2(+26)M
		
		NOLOD	1
		DSU	TSLC
			30D		# (C)
			X2
		STORE	DN
		
		NOLOD	1
## Page 651
		TSRT*	BDSU
			6,2
			SMA
		
		DMP	3
		BDDV	INCR,2
		TSLT*	SQRT
		SIGN	VXSC
			SMA
			DN
			-
			16D
			0,2
			SGNTHETA
			UNITS
		
		TSRT	1
		BDSU	TSRT
			S
			6D
			SMA
			4
		
		DMP	4
		BDDV	SQRT
		TSRT	VXSC
		VAD	VSLT
		VXSC
			SMA
			S
			-
			6
			UNITD
			-
			9D
		STORE	VR		# VR SCALED AT 2(+8)M/CS
		
		ITC	0
			CALCCBDT

MUE		2DEC	0.145011008	# 3.98603223 E14 SCALED 2(+38)M(+3)/CS(+2)
MUM		2DEC	0.114151696	# 4.90277800 E08 SCALED 2(+32)M(+3)/CS(+2)

## Page 652

# THIS ROUTINE COMPUTES THE DESIRED THRUST DIRECTION AS A HALF UNIT VECTOR XSC. IT COMPUTES THE HALF UNIT VECTOR
# YSC ALONG RN*XSC  (I.E. DEFINES A PITCH AXIS HORIZONTAL, YAW AXIS UP ROLL ATTITUDE) AND ZSC ALONG XSC*YSC. IT
# REQUIRES PRIOR PASSES THROUGH ROUTINES CALCRVG AND CALCVGB TO ESTABLISH UNITR, VG, AND CBDT. X1 MUST CONTAIN
# 0,2,4... TO LOAD THE APPROPRIATE INTEGRATED INITIAL THRUST ACCELERATION MAGNITUDE ATDT



CALCXSC		UNIT	0
			VG
		STORE	UNITVG
		
		NOLOD	2
		VPROJ	VSLT
		BVSU
			CBDT		# SCALED AT 2(+4)M/CS
			2
			CBDT
		
		NOLOD	5
		ABVAL	DDV*
		DSQ	BDSU
		SQRT	DMP*
		TSLT	VXSC
		VAD	UNIT
			ATDT,1		# SCALED AT 2(+5)M/CS
			NEARONE
			ATDT,1
			2
			UNITVG
		STORE	XSC
		
		NOLOD	2
		VXV	UNIT
		COMP
			UNITR
		STORE	YSC
		
		TEST	1
		VMOVE	COMP
			SPS2FLAG
			HEADWN2
			YSC
		STORE	YSC
		
HEADWN2		NOLOD	2
		VXV	UNIT
		COMP
			XSC
		STORE	ZSC
## Page 653
		ITCQ	0

## Page 654

# 	THIS ROUTINE RESOLVES THE VECTOR IN RTINIT THROUGH AN ANGULAR ROTATION WIE(DTEAROT) SCALED AT ONE REV-
# OLUTION ABOUT THE UNIT POLAR AXIS UMITW. IT REQUIRES DTEAROT SCALED AT 2(+28)CS. IT LEAVES THE RESOLVED
# VECTOR IN RT WITH EASTERLY AND NORMAL COMPONENTS IN RTEAST AND RTNORM RESPECTIVELY, AT THE SAME SCALING. FOR
# CONTINUOUS UPDATING ONLY ONE ENTRY AT EARROT1 IS REQUIRED, WITH SUBSEQUENT ENTRIES AT EARROT2



EARROT1		VXV	1
		VSLT
			UNITW
			RTINIT
			2
		STORE	RTEAST
		
		NOLOD	1
		VXV	VSLT
			UNITW
			1
		STORE	RTNORM
		
EARROT2		STZ	1		# BRANCH TO OVERADAY UNTIL DTEAROT
		DDV	BOV		# LESS THAN ONE SIDEREAL DAY
			OVFIND
			DTEAROT
			1/WIE		# TIME FOR ONE SIDEREAL REVOLUTION
			OVERADAY
		STORE	30D
		
		NOLOD	2
		COS	DSU
		VXSC
			DP2(-1)
			RTNORM
		
		SIN	2
		VXSC	VAD
		VAD
			30D
			RTEAST
			RTINIT
		STORE	RT
		
		ITCQ	0
		
OVERADAY	SIGN	1
		BDSU
			1/WIE
			DTEAROT
			DTEAROT
		STORE	DTEAROT
## Page 655
		BPL	0		# GO BACK WITHOUT DISTURBING QPRET.
			1/WIE		# ANY POSITIVE CONSTANT WILL DO.
			EARROT2

1/WIE		2DEC	0.032098629	# 8.61641000 E4 SECS SCALED AT 2(+28)CS

## Page 656

# CONVERSION CONSTANTS FOR FREE FALL INTEGRATION PROGRAM

SCLRAVMD	2DEC	.512
SCLRMDAV	2DEC	1000 B-10
SCLTAVMD	2DEC	4.4384169 B-3
SCLVAVMD	2DEC	.64876819
SCLVMDAV	2DEC	.770691300


# POWERED FLIGHT CONSTANTS. DELCDU SCALED AT KE/2 REVS (KE =A/P GAIN=1.5) EVS (KE =A/P GAIN =1.5)
DELCDU		2DEC	0.00566		#			( =1.02 DEG)
		2DEC	0.00462		#			( =0.83 DEG)
		2DEC	0.00872		#			( =1.57 DEG)
MUE(41)		2DEC	.145011008 B-3	# SCALED AT 2(+41)M(+3)/CS(+2)

## Page 657

# ROUTINE CALCMANU COMPUTES THE SEQUENCE OF MANUEVERS REQUIRED IN GOING FROM AN INITIAL ATTITUDE DEFINED BY THE
# EULER ANGLES IN THETAD,+1,+2 WHICH ARE THE PRESENT OUTER, MIDDLE, INNER GIMBAL ANGLES, TO AN ATTITUDE DEFINED
# BY THE MATRIX X,Y,ZSCD, THE DESIRED BODY AXES. CALCMANU WILL EXIT WITH A MANEUVER ANGLE IN THETAMAN SCALED AT
# 1 REV, AND THE HALF UNIT VECTOR IN WC. ROTATIONS ARE BASED ON A PITCH/YAW-THEN ROLL POLICY. IF THIS
# POLICY WOULD CAUSE GIMBAL LOCK, A ROLL-PITCH/YAW-ROLL IS ADOPTED. IN EXTREMELY RARE CASES, INVOLVING MANEU-
# VERS FROM ONE GIMBAL LOCK AREA TO THE OTHER, THE POLICY MAY BE PITCH/YAW-ROLL-PITCH/YAW-ROLL, OR EVEN ROLL-
# PITCH/YAW-ROLL-PITCH/YAW-ROLL. IN ALL CASES, IF THE MANEUVER IS A ROLL, ROLLFLAG WILL BE ON. IF THERE IS NO
# MANEUVER REQUIRED,(VEHICLE LESS THAN ABOUT 3 DEGS AWAY FROM DESIRED ATTITUDE), CALCFLAG WILL BEOFF.
# OTHERWISE, CALCFLAG IS ON. CALCMANU PRESUMES THAT INITIAL CONDITIONS AND FINAL CONDITIONS ARE NOT IN GIMBAL LOCK
		SETLOC	54000
CALCMANU	EXIT	0

		TC	FLAG2UP
		OCT	12000		# SET BACKFLAG, CALCFLAG
		
		TC	FLAG2DWN
		OCT	04600		# REMOVE ROLLFLAG  ,NEGFLAG,BEGINFLG
		
		TC	INTPRET
		
		AXT,1	1
		ITA	ITC
			6
			EXITCADR
			THETRIG
		
		ITC	0
			CALCSMNB	# COMPUTE X,Y,ZNB
		
		ITC	0
			CALCNBSC	# COMPUTE X,Y,ZSC
		
		AXT,2	1
		RTB			# SET X2 TO 0
			0
			FRESHPD		# SET PD POINTER TO 0
		
		DOT	2
		ABS	DSU
		BPL
			XSC
			XSCD
			COSSIX
			180/ZERO

NOT179		VXV	1
		UNIT
			XSC
			XSCD
		STORE	WC
## Page 658

ACCEPTWC	ABS	1
		DSU	BPL
			WC +2
			COS27		# IF WC IS 27 OR LESS DEGS AWAY FROM
			GETPTCH		# +,- YSM, GIMBAL LOCK IS IMPOSSIBLE
		
		VXV	1		# PITCH/YAW MAY CAUSE GIMBAL LOCK. VARIOUS
		VXV	UNIT		# TESTS MUST BE MADE
			WC
			UNITY		# MP IS POINT OF CLOSEST APPROACH TO +YSM
			WC		# MP TO PD AT 0
		
		DMOVE	0
			ZEROVEC
		STORE	15D
		
		NOLOD	1
		VXV
			XSCD		# MP*XSCD TO PD AT 6
		
		VXV	1
		DOT	BPL
			0
			XSC
			-		# BRANCH TO BEGINARC IF ARC FROM XSC TO
			BEGINARC	# XSCD DOES NOT INCLUDE MP OR -MP
		
		VAD	1
		DOT	BPL
			XSC
			XSCD
			0
			PLUSPOLE
		
		SWITCH	0
			NEGFLAG		# -MP IS ON ARC
		
PLUSPOLE	ITC	0
			NORMLIMS
		
		ITC	0
			FILENORM

180/ZERO	DOT	1
		BMN
			XSC
			XSCD
			180CASE

		NOLOD	1
## Page 659
		DSU	BMN
			COS3
			NOGIMTST
		
		DOT	3
		VXSC	VSLT
		VSU	COMP
		UNIT	DOT
			ZSCD
			XSC
			XSC
			2
			ZSCD
			ZSC		# COSROLL TO PD AT 0 SCALED AT 2(2)

		NOLOD	1
		DSU	BPL
			COSSIX
			CALCSNAP
		
		VXV	1		# ROLL IS REQUIRED
		DOT
			ZSC
			ZSCD
			XSC		# XSC.(ZSC*ZSCD) TO PD AT 2
		
		TSLT	1
		ACOS	SIGN
			0
			1
		STORE	THETAMAN
		
		ABS	2
		DSU	BMN
		ITC
			XSC +2
			COS63
			NOTEST
			ROLLTEST	# SHORT ROLL MAY GO THROUGH GIMBAL LOCK
		
NOTEST		SIGN	1		# ATTACH SIGN OF THETAMAN TO WC
		VXSC
			NEARONE
			THETAMAN
			XSC
		STORE	WC
		
		ABS	0		# THETAMAN MUST BE +VE FOR MANUJOB
			THETAMAN
		STORE	THETAMAN
## Page 660
		EXIT	0
		
		TC	FLAG2UP
		OCT	04000		# SET ROLLFLAG
		
		TC	INTPRET
		
		ITCI	0
			EXITCADR	# EXIT ON THE ROLL WHEN PITCH/YAW IS OVER
		
CALCSNAP	SWITCH	1		# WE ARE THERE
		ITC
			CALCFLAG	# REMOVE CALCFLAG
			CALCSCNB
		
		ITC	0
			CALCCDU		# SET THETAD,S TO CORRECT VALUES
		
		ITCI	0
			EXITCADR	# THIS IS THE LAST EXIT FROM CALCMANU
		
NORMLIMS	ITA	2
		RTB	AXC,1		# SET PD TO 18
		ABS	ACOS
			THETAMAN	# (TEMPORARY STORAGE)
			SETPD18
			2		# -2 TO X1
			2		# C TO 18

BACKLIM		NOLOD	1
		BDSU
			30DEG		# 30-C TO 20 AT 4PI
		
		COS	0
			20D		# COS(30-C) TO PD AT 22
		
		SIN	2
		DDV	DMP
		ACOS	TSRT
			20D
			-
			1/TAN33		# (1/TAN33 SCALED AT 2(1) )
			1		# OKA TO 22 AT 4PI

		DMOVE	0
			90DEG		# 90 DEGREES TO 24

		SMOVE	0
			X1		# X1 TO 26
## Page 661
		DMOVE	2
		COMP	SIGN
		DAD	COMP
			90DEG		# -180 IF X1=-2,0 IF X1=0, TO 24
		
		DMOVE	1
		TEST	COMP
			90DEG		# 90DEG SCALED AT 4PI
			NEGFLAG
			POSPOLE
		STORE	26D

					# +90 IN MPAC IF FLAG=0
					# -90 IN MPAC IF FLAG=1
POSPOLE		NOLOD	1
		SIGN
			WC +2

					# +90 IN 24 IF
					#   A) FLAG=0, WC +2 POS
					#   B) FLAG=1, WC +2 NEG
					# -90 IN 24 IF
					#   A) FLAG=0, WC +2 NEG
					#   B) FLAG=1, WC +2 POS
		NOLOD	1
		DSU
			24D		# 180J-90SIGMIM TO 28
		
		SMOVE	1
		BZE
			X1
			CNEGLIMS	# TO CNEGLIMS IF X1 IS ZERO
		
		DSU	0
			28D
			22D
		STORE	6		# NBL1 TO 6, SCALED AT 4PI
		
		DAD	0
			22D
		STORE	7		# NEL1 TO 7
		
		DSU	1
		BPL
			18D
			3DEG
			ENDNORMS
		
		AXT,1	1
		RTB	COMP
## Page 662
			0		# SET X1 TO 0
			SETPD20
			18D		# COMPLEMENT C
		STORE	18D
		
		ITC	0
			BACKLIM		# BACKLIMITS EXIST IF C LESS THAN 3

CNEGLIMS	DSU	0
			28D
			22D
		STORE	8D		# NBL0 TO 8
		
		DAD	2
		LXA,1	SXA,1
		AXT,1
			28D
			22D
			MPAC
			9D		# NEL0 TO 9, PROTECTING 10
			0		# RESET X1 TO 0
		
ENDNORMS	ITCI	0		# END OF NORMLIMS CALCULATIONS
			THETAMAN	# END OF NORMLIMS CALCS

FILENORM	SMOVE	0
			6D		# 6 INTO 10 IF X1=0 ,OR
		STORE	10D,1		# 6 INTO 12 IF X1=-2
		
		SMOVE	1		# 7 INTO 11 IF X1=0  , OR
		INCR,2			# 7 INTO 13 IF X1=-2
			7
	       -	2		# MOVE LIMIT LIST POINTER BY -2 (TO -2)
		STORE	11D,1
		
		SMOVE	1
		BMN	SWITCH
			X1
			SET15D
			BACKFLAG	# SET BACKFLAG
		
		SMOVE	0
			8D
		STORE	12D		# 8 INTO 12 IF X1=0
		
		SMOVE	0
			9D
		STORE	13D		# 9 INTO 13 IF X1=0
		
SET15D		DMOVE	1
## Page 663
		TEST	COMP
			UNITX
			NEGFLAG
			PLUSMP
		STORE	15D
		
PLUSMP		NOLOD	0
		STORE	15D
		
BEGINARC	AXT,1	1
		SWITCH			# SET X1 TO 0
			0
			BEGINFLG	# SET BEGINFLG

ENDCHEK		RTB	1
		EXIT
			SETPD18
		
		TC	FLAG2DWN
		OCT	00400		# REMOVE NEGFLAG
		
		TC	INTPRET
		
		ABS*	1
		BDSU	BPL
			XSC +2,1
			COS63		# IS END CLOSE TO A POLE Q.
			OVERYET		# BRANCH TO OVERYET IF NOT

SETWARN		TEST	1
		SWITCH
			BEGINFLG
			DONTSET		# SET ROLLFLAG IF BEGINNING OF ARC NEAR
			ROLLFLAG	#   LOCK

DONTSET		DMOVE*	1
		BPL	SWITCH
			XSC +2,1
			POSPOLE1	# IF XSC +2,1 NEG, SET NEGFLAG
			NEGFLAG

POSPOLE1	SMOVE	2
		TEST	BMN
		ITC
			15D
			NEGFLAG
			NEAR+MP
			OVERYET
			F2
## Page 664

NEAR+MP		NOLOD	1
		BZE	BPL
			F2
			OVERYET

F2		DOT	0
			XSCD
			0
		
		DOT	2
		DSU	TEST
		COMP
			XSC
			0
			-
			NEGFLAG
			BEGIN1
		STORE	DTEMP1

BEGIN1		NOLOD	1
		TEST	COMP
			BEGINFLG
			BEGIN2
		STORE	DTEMP1

BEGIN2		NOLOD	1
		BPL
			OVERYET

F3		SMOVE	2		# SPLITMANU( IF IT HAPPENS) NEEDS TO KNOW
		DSU	TEST		# WHICH LIMITS REFER TO THE BEGINNING OF
		COMP
			X2
			DP2(-13)
			BEGINFLG
			F4
		STORE	S1

					# IF S1=+,-2, THEN THE LIMITS ABOUT TO BE
					# CALCULATED WILL END UP IN PD AT 0
					# IF S1=+,-4, THE LIMITS WILL END UP AT
					# 2,4 IN PD
					# IF S1 IS NEG, THEN THE TAGGED LIMITS
					# ARE THE ONES NOT TO USE IN SPLTMANU
					# IF S1 IS POS, THE TAGGED LIMITS SHOULD
					# BE USED
F4		NOLOD	0
		STORE	S1
		
		DMOVE	1
## Page 665
		TEST	COMP
			UNITX
			BEGINFLG
			F5
		STORE	DTEMP1

F5		NOLOD	1
		TEST	COMP
			NEGFLAG
			F6
		STORE	DTEMP1

F6		NOLOD	1
		SIGN
			WC +2
		STORE	DTEMP1
		
		ABS*	0
			XSC +2,1	# COSC TO 18 AT 2(1)

		TSRT	2
		DSU	INCR,2
		BMN
			18D
			1
			COS3
	       -	2
			SOMESUN
		
		ITC	0
			NORMLIMS
		
		ITC	0
			ALLSHADE
		
SOMESUN		VMOVE*	3
		VXV	VXV*
		UNIT	COMP
		TEST	COMP
			XSC,1
			UNITY
			XSC,1
			NEGFLAG
			POSP1
		STORE	20D
		
POSP1		LXA,1	1
		NOLOD
			X1
## Page 666
		ACOS	1
		TSRT
			18D
			1		# C/2 TO 26 SCALED AT 2PI
		
		NOLOD	1
		DSU	SIN
			1.5DEG		# SIN(C/2-1.5) TO 28
		
		DSU	1
		SIN	DMP
			31.5DEG
			26D		# SIN(C/2-1.5)SIN,31.5-C/2) TO 28
		
		DAD	1
		SIN
			26D		# SIN(C/2+1.5) TO PD AT 30
			1.5DEG
		
		DAD	2
		SIN	DMP
		BDDV	SQRT
			26D
			31.5DEG
		STORE	VACZ
		
		DMOVE	0
			NEARONE
		STORE	VACX
		
		RTB	1		# PD SET TO AVOID CONFLICT WITH ARCTAN
		RTB	BDSU
			SETPD6
			ARCTAN
			DP2(-2)
		STORE	26D		# SA AT 26 SCALED AT 4PI
		
		DOT	0
			WC
			20D		# TO PD TO SIGN AR IN NEXT EQUATION
		
		VMOVE*	4
		VXV	UNIT
		DOT	COMP
		TSLT	ACOS
		TSRT	SIGN
			XSC,1		# POINT.UNIT(WC*XSC,1)
			WC
			20D
			1
## Page 667
			1		# AR TO THETAMAN, SCALED AT 4PI
		STORE	THETAMAN
		
		DSU	0
			THETAMAN
			26D
		STORE	10D,2		# AR-SA
		
		RTB	1
		DAD
			SETPD28
			THETAMAN
		STORE	11D,2		# AR+SA
		
		VMOVE*	1
		DOT	ABS
			XSC,1		# ABS(XSC,1.MP) TO 26 AT 2(2)
			0
		
		ABS	1
		ACOS
			2		# ACOS(ABS(MP.UNITY)) TO 28
		
		NOLOD	2
		DAD	COS
		DMP	TSLT
			30DEG
			26D
			1
		STORE	16D		# COSB TO 16 AT 2(2)
		
		DSU	3
		ABS	COS
		DMP	TSLT
		BDSU	BPL
			30DEG
			-
			-
			1
			C33
			OVERYET		# IF C33-COSA POS
		
		ITC	0
			NORMLIMS
		
		DSU	1
		BMN
			C33
			16D
			ALLSHADE
## Page 668
		DMOVE*	0
			11D,2		# 11D,2 TO PD FOR PROTECTION
		
		BPL	0
			DTEMP1
			11MANU
		
		SMOVE	0
			6		# NBL1 REPLACES AR-SA
		STORE	10D,2
		
		DMOVE	0
		STORE	11D,2		# NOW REINSERT 11,2
		
		ITC	0
			OVERYET
		
11MANU		SMOVE	0
			7
		STORE	11D,2
		
		ITC	0
			OVERYET

ALLSHADE	BPL	1
		LODON	DMOVE
			DTEMP1
			12MANU
			6
		STORE	10D,2
		
		SMOVE	0
			9D
		STORE	11D,2
		
		ITC	0
			OVERYET
		
12MANU		SMOVE	0
			8D
		STORE	10D,2
		
		SMOVE	0
			7
		STORE	11D,2
		
OVERYET		SMOVE	1
		DAD	BZE
			X2
			DP2(-12)
## Page 669
			FINISHUP
		
		TEST	2		# ENDCHEK IS DONE TWICE, FOR THE
		AXC,1	SWITCH		# BEGINNING AND FOR THE END OF THE ARC
		ITC
			BEGINFLG
			FINISHUP
			18D		# -18 TO X1
			BEGINFLG	# REMOVE BEGINFLG
			ENDCHEK		# GO BACK, GET LIMITS FOR END OF ARC

FINISHUP	SMOVE	1
		BZE
			X2
			GETPTCH		# NO LIMITS DETECTED
		
		RTB	1
		VXV
			SETPD20
			XNB
			XSC		# XNB*XSC TO PD AT 20
		
		VXV	1
		DOT
			WC
			XSC
			20D
		STORE	18D		# (WC*XSC).(XNB*XSC) TO 18
		
		UNIT	3
		DOT	COMP
		TSLT	ACOS
		SIGN	TSRT
			-
			WC
			1
			-
			1
		STORE	12D,2		# SCALED AT 4PI
		
		SMOVE	1
		AXC,2	AXT,1
			X2
			0
			0		# 0 INTO X2 AND X1
		STORE	30D		# SAVE X2
		
22MANU		SMOVE*	1
		DSU
			13D,2
## Page 670
			12D

23MANU		NOLOD	1
		DSU	BPL
			360DEG
			23MANU

20MANU		NOLOD	1
		DAD	BMN
			360DEG
			20MANU
		STORE	0,1
		
		LXA,1	1
		INCR,2	INCR,1
			X1
			-1
			-2
		
		SMOVE	1
		BDSU	BMN
			X2
			30D
			22MANU
		
		DAD	1
		BZE
			30D
			DP2(-13)
			EZCASE
		
		DSU	1
		BMN
			4
			0
			30MANU
		
		DSU	1
		BMN
			2
			0
			31MANU
		
		DSU	1
		BMN
			2
			4
			SPLITMNU
		
		DSU	1
## Page 671
		BMN
			6
			0
			GETPTCH
		
		TEST	2
		TSRT	DSU
		ITC
			BACKFLAG	# (BACKFLAG DOWN MEANS DO BACKTEST
			BACKTEST
			0
			1
			6
			40MANU
		
31MANU		DSU	1
		BMN
			6
			0
			33MANU

333MANU		TEST	2
		DAD	TSRT
		DSU	ITC
			BACKFLAG
			BACKTEST
			0
			2
			1
			6
			40MANU

33MANU		DSU	1
		BMN	ITC
			6
			2
			333MANU
			GETPTCH

30MANU		DSU	1
		BMN
			2
			0
			35MANU

		DSU	1
		BMN		
			6
			4
			GETPTCH
## Page 672

38MANU		TEST	2
		TSRT	DSU
		ITC
			BACKFLAG
			BACKTEST
			4
			1
			6
			40MANU

35MANU		DSU	1
		BMN
			2
			4
			36MANU

		DSU	1
		BMN
			6
			2
			37MANU

		DSU	1
		BPL	ITC
			6
			0
			38MANU
			GETPTCH

36MANU		DSU	1
		BMN
			6
			4
			366MANU

368MANU		TEST	2
		DAD	TSRT
		DSU	ITC
			BACKFLAG
			BACKTEST
			4
			2
			1
			6
			40MANU

37MANU		DSU	1
		BMN	ITC
			6
			4
## Page 673
			GETPTCH
			38MANU

366MANU		DSU	1
		BMN	ITC
			6
			2
			368MANU
			GETPTCH

40MANU		NOLOD	2		# ROLL IS IN MPAC,MPAC +1,SCALED AT 4PI
		DSU	BMN
		DSU	ITC
			DP2(-2)
			41MANU
			DP2(-2)
			42MANU

41MANU		NOLOD	2
		DAD	BPL
		DAD	ITC
			360DEG
			43MANU
			DP2(-2)
			42MANU

43MANU		NOLOD	1
		DSU
			DP2(-2)

42MANU		NOLOD	1
		TSLT
			1
		STORE	THETAMAN	# ROLL IN THETAMAN, SCALED AT 2PI
		
		TEST	0
			ROLLFLAG	# IF ROLLFLAG ISNT ON
			DONE		# WE ARE DONE
		
		ITC	0
			ROLLTEST	# SHORT WAY ROLL MAY HIT GIMBAL LOCK
		
		ITC	0
			DONE

ROLLTEST	RTB	2
		VXV	VXV
		UNIT
			FRESHPD
			XSC
## Page 674
			XNB
			XSC		# TEMP1 TO DP AT 0
		
		SIGN	2
		VXSC	VXV
		VXV	UNIT
			NEARONE
			XSC +2
			XSC
			UNITY
			XSC

		DOT	1
		TSLT	ACOS
			0
			6
			1
		STORE	16D
		
		ABS	1
		DSU	BMN
			THETAMAN
			16D
			ENDTST
		
		VMOVE	2
		VXV	DOT
		BMN
			-
			-
			XSC
			50MANU
		
		DMOVE	1
		BPL	DAD
			THETAMAN
			ENDTST
			NEARONE
		STORE	THETAMAN
		
		ITCQ	0
		
50MANU		DMOVE	1
		BMN	DSU
			THETAMAN
			ENDTST
			NEARONE
		STORE	THETAMAN
		
ENDTST		ITCQ	0

## Page 675

BACKTEST	LXA,2	1
		SWITCH
			30D		# RESET SAVED X2
			BACKFLAG	# TURN BACKFLAG ON (DONT DO AGAIN)
		
		SMOVE	0
			10D
		STORE	12D
		
		LXA,1	1
		SXA,1	ITC
			11D
			13D
			FINISHUP
		
EZCASE		DSU	1
		BMN
			2
			0
			GETPTCH		# NO ROLL REQ,D
		
		TEST	2
		TSRT	DSU
		ITC
			BACKFLAG
			BACKTEST
			0
			1
			2
			40MANU
		
180CASE		NOLOD	1
		DAD	BPL
			COSONE
			NOT179
		
		DOT	2
		ABS	DSU
		BPL
			XSC
			UNITY
			COSONE
			ZEROWC
		
		VXV	1
		VXV	UNIT
			XSC
			UNITY
			XSC
		STORE	WC
## Page 676
		ITC	0
			ACCEPTWC

ZEROWC		VMOVE	0
			ZSC
		STORE	WC
		
		ITC	0
			ACCEPTWC

NOGIMTST	VXV	1
		UNIT
			XSC
			XSCD
		STORE	WC
		
		ITC	0
			GETPTCH

DONE1		ABS	1
		DSU	BMN
			THETAMAN
			1.5DEG
			GETPTCH

		SIGN	1
		VXSC
			NEARONE
			THETAMAN
			XSC
		STORE	WC
		
		ABS	0
			THETAMAN
		STORE	THETAMAN
		
		EXIT	0
		
		TC	FLAG2UP
		OCT	04000		# SET ROLLFLAG
		
		TC	INTPRET
		
		ITCI	0		# EXIT FOR ROLL THAT AVOIDS GIMBAL LOCK IN
			EXITCADR	# SUBSEQUENT PITCH/YAW MANEUVER

SPLITMNU	SMOVE	3
		ABS	DSU
		BHIZ	LODON
		SMOVE	BPL
## Page 677
			S1
			DP2(-13)
			SPLIT1
			S1
			SPLIT3

SPLIT2		DSU	1
		BMN
			6
			0
			SPLIT5

		TSRT	1
		DSU	ITC
			0
			1
			6
			40MANU

SPLIT3		DSU	1
		BPL
			6
			4
			SPLIT4

		DSU	1
		BPL
			6
			2
			SPLIT5

SPLIT4		DAD	2
		TSRT	DSU
		ITC
			2
			4
			1
			6
			40MANU

SPLIT1		SMOVE	1
		BPL	ITC
			S1
			SPLIT2
			SPLIT3

SPLIT5		ITC	0
			CALCPTCH
		
		DMOVE	1
## Page 678
		TSRT
			THETAMAN
			1
		STORE	THETAMAN
		
		ITC	0
			GETPTCH2
GETPTCH		ITC	0
			CALCPTCH

GETPTCH2	EXIT	0

		TC	FLAG2DWN
		OCT	04000		# REMOVE ROLLFLAG
		
		TC	INTPRET
		
		ITCI	0
			EXITCADR	# EXIT FOR PITCH/YAW PORTION OF MANEUVER

CALCPTCH	DOT	1
		TSLT	ACOS
			XSC
			XSCD
			1
		STORE	THETAMAN
		
		ITCQ	0
		
		TC	CCSHOLE
		TC	CCSHOLE

COS3		2DEC	.249657385	# SCALED AT 2(4)
COS27		2DEC	.445503260	# SCALED AT 2(1)
COS63		2DEC	.226995250	# SCALED AT 2(1)
COS30		2DEC	.433012700	# SCALED AT 2(1)
1/TAN33		2DEC	.76993250	# SCALED AT 2(1)
1.5DEG		2DEC	.004166666	# SCALED AT 2PI
31.5DEG		2DEC	.0875		# SCALED AT 2PI
30DEG		2DEC	.08333333	# SCALED AT 2PI
3DEG		2DEC	.00833333	# SCALED AT 2PI
## Page 679
90DEG		2DEC	0.125		# SCALED AT 4PI
DP2(-2)		2DEC	0.25
SIN30		EQUALS	DP2(-2)
DP2(-13)	2OCT	0000200000
C33		2DEC	.209667643
UNITX		2DEC	0.5
ZEROVEC		2DEC	0.0
		2DEC	0.0
UNITY		2DEC	0.0
		2DEC	0.5
		2DEC	0.0
SCNBMAT		2DEC	0.419335300
		2DEC	0.0
		2DEC	-.272319500
		2DEC	0.0
		2DEC	0.5
		2DEC	0.0
		2DEC	0.272319500
		2DEC	0.0
		2DEC	0.419335300
DTH		2DEC	0.005555	# 2.0 DEG SCALED AT 2PI
		2DEC	0.01		# 3.6 DEG
		2DEC	0.020833	# 7.5 DEG


SETPD16		CAF	SIXTN
		AD	FIXLOC
		TS	PUSHLOC
## Page 680
		TC	RE-ENTER

SETPD6		CAF	SIX
		TC	SETPD16 +1

SETPD18		CAF	EIGHTN
		TC	SETPD16 +1

SETPD28		CAF	TWENTY8
		TC	SETPD16 +1

SETPD20		CAF	TWENTY0
		TC	SETPD16 +1

COSONE		2DEC	.2499625	# SCALED AT 2(4)
COSSIX		2DEC	.2480300	# SCALED AT 2(4)
180DEG		EQUALS	UNITX		# SCALED AT 2PI.
DP2(-1)		EQUALS	UNITX
360DEG		EQUALS	UNITX		# SCALED AT 4PI.
CFACTOR		EQUALS	UNITX

DONE		DOT	2
		DAD	BPL
		LODON	VXV
			XSC
			XSCD
			COSSIX
			DONE1
			UNITY
			XNB

		SIGN	1
		VXSC	UNIT
			NEARONE
			XNB +2
		STORE	WC
		
		DMOVE	1
		TSRT
			30DEG
			1
		STORE	THETAMAN
		
		ITC	0
			GETPTCH2

R280K		2DEC	6.463509 E6 B-24
## Page 681
R400K		2DEC	6.500085 E6 B-24
DP.36		2DEC	.36 B-6
back to top