https://github.com/virtualagc/virtualagc
Revision 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC, committed by Ron Burkey on 07 August 2022, 15:04:04 UTC
assembly listings from yaASM and yaLEMAP. Added some debugging messages
to 'make install'.  Tweaked debugging messages that VirtualAGC embeds in
'simulate'.  Verified buildability in Mint 21, 20, 19, 17, and verified
buildability using clang in Mint 17.
1 parent 6bb1acc
Raw File
Tip revision: 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC
Fixed a potential string-overflow bug in yaASM. Removed timestamps from
Tip revision: 078c79d
P61-P67.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    P61-P67.agc
## Purpose:     Part of the source code for Comanche, build 055. It
##              is part of the source code for the Command Module's
##              (CM) Apollo Guidance Computer (AGC), Apollo 11.
## Assembler:   yaYUL
## Reference:   pp. 789-818
## Contact:     Ron Burkey <info@sandroid.org>
## Website:     http://www.ibiblio.org/apollo.
## Mod history: 2009-05-12 RSB	Adapted from Colossus249 file of the same
##				name and Comanche 055 page images.
##		2009-05-20 RSB	Corrections:  V06N68 -> V06N74, added missing
##				definition of V06N74, in several
##				interpreter operands fixed stuff like
##				N-M,1 to N -M,1
##		2010-08-28 JL	Fixed some indentation.
##		2016-12-10 RSB	All of the GOTOPOOH's should have been
##				GOTOPOOH, and I've changed them back.
##		2016-12-11 RSB	Proofed comments with octopus/ProoferComments
##				and fixed the errors found.
##		2017-01-18 RSB	Fixed comment-text errors noted while diff'ing
##				vs Colossus 249.
##		2017-02-08 RSB	Fixed comment-text errors noted while diff'ing
##				vs Artemis 72.
##
## The contents of the "Comanche055" files, in general, are transcribed 
## from scanned documents. 
##
##       Assemble revision 055 of AGC program Comanche by NASA
##       2021113-051.  April 1, 1969.  
##
##       This AGC program shall also be referred to as Colossus 2A
##
##       Prepared by
##                       Massachusetts Institute of Technology
##                       75 Cambridge Parkway
##                       Cambridge, Massachusetts
##
##       under NASA contract NAS 9-4065.
##
## Refer directly to the online document mentioned above for further
## information.  Please report any errors to info@sandroid.org.

## Page 789
# PROGRAM:	P61
# MOD NO.:	0	MAR. 13, 1967
# MOD BY:	R. HIRSCHKOP
# MOD NO: 1	MOD BY:  RR BAIRNSFATHER	DATE: 22 JUN 67		RESTARTS.
# MOD NO: 2	MOD BY:  RR BAIRNSFATHER	DATE: 17 JAN 68		COLOSSUS GSOP CHANGES.
# MOD NO: 3	MOD BY:  RR BAIRNSFATHER	DATE:  8 MAY 68		DELETE CMSM MANEUVER (PCR 50)
# FUNCTION:	TO CALCULATE AND DISPLAY EMS INITIALIZATION DATA
# CALLING SEQUENCE-  BY V37
# EXIT-		TO P62
# SUBROUTINE CALLS-  S61.1, S61.3, GOFLASH, FLAGUP, R02BOTH
# ERASABLE INITIALIZATION:
#	EMSALT (-29) M		.05G ALTITUDE ABOVE FISCHER ELLIPSOID	PAD LOADED.
#	ALFAPAD /180		HYPERSONIC CM TRIM ANGLE OF ATTACK	PAD LOADED
# OUTPUT:	THE FOLLOWING REGISTERS ARE WRITTEN IN FOR USE BY DISPLAYS
#		GMAX	100 GMAX (-14) G,S	MAXIMUM ACCELERATION
#		VPRED	(-7) M/CS		PREDICTED VELOCITY AT 400K FT
#		GAMMAEI	GAMMA/360		PREDICTED GAMMA    AT 400K FT
#		RTGO	THETAH/360		RANGE ANGLE TO SPLASH FROM EMSALT	EMSALT IS PAD LOADED
#		VIO	(-7) M/CS		INERTIAL VELOCITY AT	   EMSALT	EMSALT IS PAD LOADED
#		TTE	(-28) CS		TIME TO			   EMSALT	EMSALT IS PAD LOADED
#		LAT(SPL) /360			TARGET LOCATION				LEFT BY DSKY
#		LNG(SPL) /360			TARGET LOCATION				LEFT BY DSKY
#		HEADSUP	(0)			+1 = LIFT DOWN, -1 = LIFT UP		LEFT BY DSKY
# DEBRIS:	SEE SUBROUTINES.

		BANK	26
		SETLOC	P60S
		BANK
		
		EBANK=	AOG
		
		COUNT*	$$/P61
		
P61		CA	BIT14		# EXTENDED VERB SHOULD BE FREE THIS CLOSE
		TS	EXTVBACT	# TO V37
					# LOCK OUT EXTENDED VERBS SO CAN USE TFF
					# ROUTINES.  EXT VERB ERASE IS USED
					
		CS	ONE		# REMOVE IF HEADSUP EVER ON UPLINK DATA
		TS	HEADSUP		# PRELOAD
		
		TC	S61.1		# CHECK STATE VECTOR AND IMU ORIENTATION
					# RV 60GENRET. DOES PHASCHNG, GROUP 4.
					
		CA	V06N61		# LAT(SPL)	LNG(SPL)	HEADSUP
					# XXX.XX DEG	XXX.XX DEG	XXXXX.
		TC	BANKCALL
		CADR	GOFLASHR
		TC	GOTOPOOH
## Page 790
		TC	P61.4
		TC	-5
		
P61.3		TC	PHASCHNG
		OCT	00014
		
		TC	ENDOFJOB
		
P61.4		ZL
		CCS	HEADSUP		# C(HEADSUP)= +1/-1
		CA	BIT14		# IF HEADSUP POS,ROLLC =180 DEG.(LIFT DWN)
		NOOP			# IF HEADSUP NEG,ROLLC =0 (LIFT UP)
		DXCH	ROLLC		# ROLLC IS USED BY S62.3: GIM ANG AT .05G
		
		TC	INTPRET
NEWRNVN		DLOAD
			PIPTIME		# SAVE TIME OF RN,VN TO DETERMINE IF AN
		STCALL	MM		# UPDATE HAS OCCURRED
			STARTEN1	# INITIALIZE
		VLOAD
			RN
		STORE	RONE
		UNIT
		STOVL	URONE
			VN
		STORE	VONE
		VXV	UNIT
			URONE
		STORE	UNI
DUMPP61		DLOAD	DSU
			MM		# INITIAL VALUE OF PIPTIME
			PIPTIME
		BMN	CALRB
			NEWRNVN		# UPDATED... GO TRY AGAIN
			S61.2		# GET DISPLAY DATA FOR N60 AND N63
					# AND RETURN IN BASIC, BELOW.
P61.1		TC	CLEARMRK
		CA	V06N60		# GMAX		VPRED		GAMMAEI
					# XXX.XX G	XXXXX. FPS	XXX.XX DEG
		TC	BANKCALL
		CADR	GOFLASH
		
		TC	GOTOPOOH
		TC	P61.2		# PROCEED
		TC	-5
		
P61.2		TC	INTPRET		# CORRECT TTE FOR TIME LAPSE DURING
					# ABOVE DISPLAY.
		RTB	DSU
			LOADTIME	# CURRENT TIME.
## Page 791
			MM		# PIPTIME FOR RONE & VONE.
		DAD
			TTE1		# NEGATIVE OF FREE FALL TIME.
		STORE	TTE		# DECREMENTED
		
		EXIT
		
		CA	V06N63		# RTGO		VIO		TTE
					# XXXX.X NM	XXXXX. FPS	XXBXX M,S
		TC	BANKCALL
		CADR	GOFLASH
		TC	GOTOPOOH
		TC	+2
		TC	P61.2		# REDO
		
#		.... THEN FALL INTO P62
## Page 792

# PROGRAM-	P62
# MOD NO.-	0	MAR. 13, 1967
# MOD BY-	R. HIRSCHKOP
# MOD NO:  1	MOD BY:  RR BAIRNSFATHER	DATE: 21 MAR 67
# MOD NO:  2	MOD BY:  RR BAIRNSFATHER	DATE: 22 JUN 67		RESTARTS.
# MOD NO:  3	MOD BY:  RR BAIRNSFATHER	DATE: 17 JAN 68		COLOSSUS GSOP CHANGES.
# MOD NO:  4	MOD BY:  RR BAIRNSFATHER	DATE:  8 MAY 68		MOVE START OF DESIRED GIMBAL CALC.
# FUNCTION-	1) TO NOTIFY CREW WHEN GNC SYSTEM IS PREPARED FOR CM/SM SEPARATION
#		2) TO ORIENT THE CM TO THE CORRECT ATTITUDE FOR ATMOSPHERIC ENTRY
# CALLING SEQUENCE-  BY V37 OR DIRECTLY FROM P61
# EXIT-		TO P63
# ERASABLE INITIALIZATION:	
#	ALFAPAD					 	LEFT BY PAD LOAD
#	LADPAD						LEFT BY PAD LOAD
#	LODPAD						LEFT BY PAD LOAD
#	LAT(SPL)	(MAY BE CHANGED BELOW)		LEFT BY DSKY, VIA P61
#	LNG(SPL)	(MAY BE CHANGED BELOW)		LEFT BY DSKY, VIA P61
#	HEADSUP		(MAY BE CHANGED BELOW)		LEFT BY DSKY, VIA P61
# SUBROUTINE CALLS:  NEWMODEX, S61.1, CM/DAPIC, CM/DAPON, R02BOTH, GOPERF1, GOFLASH, GODSPR

		COUNT*	$$/P62
		
		TC	NEWMODEX		# MODE CHANGE IF CAME FROM P61.
		MM	62			# MODE CHANGE AUTOMATIC VIA V 37.
		CA	ONE
		TS	DNLSTCOD
		
P62		TC	S61.1			# CHECK STATE VECTOR AND IMU ORIENTATION.

		TC	INTPRET
		SSP	RTB
			POSEXIT
			P62.3			# CALCULATE DESIRED .05G GIMBAL ANGLES,
						# WITHOUT DISPLAY.
			CM/DAPIC		# START CM/POSE AND BODY RATE CALC
			
						# DOES 2PHSCHNG, OCT 40116, OCT 05024, OCT 13000.
						# CM/DAPIC SETS EBANK = EBAOG
						# AND RETURNS IN BASIC TO P62.2.				
P62.2		EXTEND
		DCA	POSECADR		# CONTINUE WITH CM/POSE AFTER AV G.
		DXCH	AVEGEXIT
		
		CAF	OCT41			# REQUEST SEPARATION
		TC	BANKCALL
		CADR	GOPERF1R
		TC	GOTOPOOH
		TC	+3			# PROCEED
## Page 793
						# NOTE:  NODOFLAG WILL BE SET IN CM/DAPON. <<<
		TC	-5			# ENTER
		TC	P61.3			# FOR PHASCHNG AND ENDOFJOB.
		
 +3		TC	POSTJUMP
		CADR	CM/DAPON		# DISABLE RCS DAP, ENABLE ENTRY DAP AND
						# DO ATTITUDE HOLD.
						
						# WILL IDLE UNTIL CM/POSE DOES ONE UPDATE.
						# CM/DAPON DOES NO PHASCHNG.
						
P62.1		CA	V06N61			# LAT(SPL)	LNG(SPL)	HEADSUP
						# XXX.XX DEG	XXX.XX DEG	0000X.
						
						# TERMINATE ATTITUDE HOLD.  SET UP COMMANDS:
						# ROLLC, ALFACOM, BETACOM.  BEGIN MANUVER TO
						# ENTRY ATTITUDE.
						
		TC	BANKCALL
		CADR	GOFLASH
		TC	-3
		TC	+2
		TC	-5
		
		TC	PHASCHNG
		OCT	04024			# USE ENTRYVN FOR DISPLAY BELOW.
						# EBANK WAS SET IN CM/DAPON TO EBAOG
						
		CCS	HEADSUP			# C(HEADSUP) = +/- 1
		CA	BIT14			# IF HEADSUP POS, ROLLC=180 DEG (LIFT DWN)
		NOOP				# IF HEADSUP NEG, ROLLC=0 DEG (LIFT UP)
		TS	ROLLC			
		CA	ALFAPAD			# NOMINAL ALFATRIM PAD LOADED, NEG. NO.
		ZL
		DXCH	ALFACOM			# SET ALFACOM = ALFA TRIM, BETACOM=0
		
		CA	ONE			# PERMITS EXDAP2 TO CHANGE FLAG TO +0
		TS	P63FLAG			# AS INDICATOR.  STARTS UP P63.
		
		CA	V06N22			# SET UP DISPLAY FOR CDU DESIRED VALUES
		TS	ENTRYVN			# FROM ENTRY ATTITUDE CALC, THAT IS
						# ALREADY GOING.
		TC	UPFLAG			# TURN ON ENTRY DISPLAY
		ADRES	ENTRYDSP		# ENTRYDSP = 92D BIT 13 FLAG 6
						# SKIP
## Page 794
		CS	CMDAPMOD		# GO DIRECTLY TO P63 IF BODY ATTITUDE
		MASK	ONE			# IS SUCH THAT THE DELAY TASK: WAKEP62
		EXTEND				# WILL BE OMITTED.
		BZF	P63.1			# DISABLE GRP 4, GO TO ENDOFJOB.
						# (IE, CONTINUE IF CMDAPMOD = -1, OR +0)
		TC	P63
		
						# PUT JOB TO SLEEP UNTIL VEHICLE MANUVER HAS
						# REDUCED ALFA TO +/-45 DEG. CONSIDER REMAINING
						# 65 DEG (25 DEG IF ALFA NEG) TO ALFA TRIM TO
						# OCCUR AT 3 DEG/SEC, AND TERMINATE P62 AT THAT
						# TIME.
						
						# TASK WAKEP62 IS CALLED FROM ENTRY DAP.
WAKEP62		CA	PRIO13
		TC	NOVAC
		EBANK=	AOG
		2CADR	P63
		
		TC	TASKOVER
		
						# EACH 2 SEC, CALCULATE GIMBAL ANGLES FOR ENTRY CON-
						# DITIONS THAT WILL HOLD IF REORIENTATION WERE MADE
						# AT PRESENT RN, VN.  COME HERE FROM CM/POSE AND ALSO
						# IN KEPLER PHASE OF ENTRY.
						
P62.3		SSP	GOTO			# SET RETURN ADDRESS SO THAT ROUTINE
			QPRET			# GOES DIRECTLY TO ENTRY GUIDANCE EXIT
			ENDEXIT			# THAT DOES ENTRY DISPLAY, GRP 5.
			S62.3			# PUT DESIRED CDU VALUES IN CPHI'S FOR
						# N22 DISPLAY.

## Page 795
#	P63
# PROGRAM-	P63
# MOD NO.-	0	MAR. 13, 1967
# MOD BY-	R. HIRSCHKOP
# MOD NO: 1	MOD BY: RR BAIRNSFATHER		DATE: 22 JIN 67		RESTARTS.
# MOD NO: 2	MOD BY: RR BAIRNSFATHER		DATE: 14 JUL 67		REVISED RESTARTS
# FUNCTION-	1) TO INITIALIZE THE ENTRY EQUATIONS
#		2) TO CONTINUE TO HOLD THE CM TO THE CORRECT ATTITUDE WITH RESPECT TO THE ATMOSPHERE FOR
#		   THE ONSET OF ENTRY DECELERATION.  ROLL ANGLE IS LIFT UP/DOWN AS SPECIFIED BY HEADSUP.
#		3) TO SENSE .05 G
# CALLING SEQUENCE-  DIRECTLY FROM P62
# EXIT-		TO ENDOFJOB
# SUBROUTINE CALLS-  NEWMODEX, GODSPR

		COUNT*	$$/P63
		
P63		TC	NEWMODEX
		MM	63
		
						# ARRIVE WITH EBANK = AOG.
						
		CA	ENTCADR			# CONTINUE AT STARTENT AFTER CM/POSE.
		
						# AT END OF STARTENT, CHANGE ADDRESS IN GOTOADDR
						# TO CONTINUE AT SCALEPOP THEREAFTER.
						
		TS	POSEXIT
		
		CA	V06N64			# G		VI		R TO SPLSH
						# XXX.XX G	XXXXX. FPS	XXXX.X NM
		TS	ENTRYVN			# FOR DISPLAY CALL IN OVERNOUT.
		
		CS	ONE			# IN CASE FLAG IS LEFT AT +1 BY DAP.  THE
		TS	P63FLAG			# -1 ASSURES THAT EXO-ATM DAP WILL NOT
						# CALL P63 OUT OF SEQUENCE IN P66.
						
		TC	PHASCHNG		# THIS IS REQUIRED TO PRESERVE CLEANDSP
		OCT	00004			# RETURN IN EVENT OF AN EXTENDED VERB..
		
		TC	BANKCALL		# FLUSH 'N22' DISPLAY, IF ON. (OMIT
		CADR	CLEANDSP		# DISPLAY DURING 'STARTENT' PASS.)
						
P63.1		TC	PHASCHNG
		OCT	00004			# DISABLE.  DISPLAY RESTARTED VIA ENTRY.
		
		TC	ENDOFJOB
		
V06N60		VN	0660
V06N61		VN	0661
V06N63		VN	0663
## Page 796
V06N64		VN	0664
ENTCADR		CADR	STARTENT

		EBANK=	RTINIT			# TO CARY OVER INTO ENTRY STEERING.
POSECADR	2CADR	CM/POSE

## Page 797
# PROGRAM-	P64
# MOD NO.-	1	SEPT. 19, 1967
# MOD BY-	R. HIRSCHKOP
# MOD NO: 2	MOD BY: RR BAIRNSFATHER		DATE: 8 MAY 68		REVISED COMMENTS FOR COLOSSUS
# MOD NO: 3	MOD BY: RR BAIRNSFATHER		DATE: 1 MAR '69  N74
# FUNCTION-	1.  TO START ENTRY GUIDANCE AT .05G SELECTING ROLL ATTITUDE, CONSTANT DRAG LEVEL, AND
#		    DRAG THRESHOLD, KA, WHICH ARE KEYED TO THE .05G POINT.
#		2.  SELECT FINAL PHASE P67 IF V < 27000 FPS WHEN .2G OCCURS.
#		3.  ITERATE FOR UP-CONTROL SOLUTION P65 IF V > 27000 FPS AND IF ALTITUDE RATE AND DRAG
#		    LEVEL CONDITIONS ARE SATISFIED.  ENTER P65 WHEN CONSTANT DRAG CONTROLLER HAS BROUGHT RANGE
#		    AS PREDICTED TO WITHIN 25 NM OF DESIRED RANGE.
#		4.  SELECT FINAL PHASE  P67  IF NO UP-CONTROL SOLUTION EXISTS WITH VL > 18000 FPS.
# CALLING SEQUENCE-  BY RTB FROM REENTRY CONTROL
# EXIT-		BACK TO REENTRY CONTROL
# SUBROUTINE CALLS-  NEWMODEX

		BANK	25
		SETLOC	P60S1
		BANK
		
# THIS DISPLAY IS CALLED EACH PASS THROUGH STEERING.  RESTART PROTECTION IS VIA STEERING.

		COUNT*	$$/P64
		
P64		TC	NEWMODEX		# ENTER VIA RTB WHEN .05G IS EXCEEDED.
		MM	64
		CA	V06N74			# ROLLC		VI		D
						# XXX.XX DEG	XXXXX. FPS	XXX.XX G
		TS	ENTRYVN			# DISPLAY VIA OVERNOUT.
		
		TC	DANZIG			# ... AND CONTINUE IN INITROLL ...

V06N74		VN	0674

## Page 798		
# PROGRAM:	P65
# MOD NO:  0	MOD BY:  RR BAIRNSFATHER	DATE:  17 JAN 68	COLOSSUS GSOP ADDITION.
# FUNCTION:	TO CONTINUE ENTRY GUIDANCE, USING THE UP-CONTROL PHASE TO STEER TO A CONTROLLED EXIT
#		CONDITION.  THIS PHASE TERMINATES  A) IF D < Q7 FPSS, GO TO P66   ,
#						   B) IF RDOT NEG, AND IF V < VL +500 FPS, GO TO P67.
# CALLING SEQUENCE:  BY RTB FROM REENTRY CONTROL
# EXIT:		BACK TO REENTRY CONTROL, OR TO ENDOFJOB.
# SUBROUTINE CALLS:  NEWMODEX

		COUNT*	$$/P65
		
P65		TC	NEWMODEX		# ENTER VIA RTB WHEN RANGE < 25 N M OF
		MM	65			# TARGET.
		
		CA	PRIO13
		TC	NOVAC
		EBANK=	ENTRYVN
		2CADR	P65.1
		
		TC	2PHSCHNG		# 2 PHASE CHG REQUIRED TO PREVENT RE-
		OCT	00554			# STARTING FLASHING DISPLAY TWICE.
		OCT	10035			# 4.55 SPOT AND SERVICER, HERE.
		TC	INTPRET
		SSP	RTB
			GOTOADDR		# CHANGE ENTRY MODE TO UPCONTRL.
			UPCONTRL
			REFAZE10		# GO HERE TO REESTABLISH ENTRY SEQUENCER.
						# AND CONTINUE AT UPCONTRL...
						
P65.1		TC	DOWNFLAG
		ADRES	ENTRYDSP		# ENTRYDSP = 92D BIT 13 FLAG 6
		
		CA	V16N69			# ROLLC		DL (Q7)		VL
		TC	BANKCALL		# XXX.XX DEG	XXX.XX G	XXXXX. FPS
		CADR	GOFLASHR
		TC	-3			# NODOFLAG IS SET..
		TC	+3
		TC	-5
		TC	P61.3			# EST. GRP 4 FOR DSPLAY AND DO ENDOFJOB
						# IF PROCEED, CONTINUE.
		TC	UPFLAG
		ADRES	ENTRYDSP		# ENTRYDSP = 92D BIT 13 FLAG 6
		
		TC	P63.1			# DISABLE GRP 4,START UP ENTRY DISPLAY
						# N06V68 VIA OVERNOUT, AS USED IN P64.
V16N69		VN	1669
		
## Page 799
# PROGRAM:	P66
# MOD NO: 0	MOD BY: RR BAIRNSFATHER		DATE: 17 JAN 68		COLOSSUS GSOP ADDITIONS.
# FUNCTION:	KEEP CM ATTITUDE IN TRIM TO THE RELATIVE VELOCITY VECTOR.  ENTRY GUIDANCE STOPS GENERATING
#		ROLL COMMANDS UNTIL DRAG BUILDS UP TO Q7+0.5 FPSS.
# CALLING SEQUENCE:  VIA RTB FROM REENTRY CONTROL.
# EXIT:		BACK TO REENTRY CONTROL.
# SUBROUTINE CALLS:  NEWMODEX

		COUNT*	$$/P66
		
P66		TC	NEWMODEX		# ENTER VIA RTB WHEN D < Q7 FPSS
		MM	66
		
		CA	V06N22			# OGA		IGA		MGA
						# XXX.XX DEG	XXX.XX DEG	XXX.XX DEG
		TC	P66END			# IN CASE CAME FROM P65, GO DISABLE GRP4,
						# AND SET ENTRYDSP TO DO DISPLAY VIA
						# OVERNOUT.
						
						# ... AND CONTINUE AT KEP2 
						
## Page 800
# P67

# PROGRAM-	P67
# MOD NO.-	0	MAR. 16, 1967
# MOD BY-	R. HIRSCHKOP
# FUNCTION-	TO TERMINATE STEERING WHEN THE CM VELOCITY WRT EARTH = 1000 FT/SEC
# CALLING SEQUENCE-
# EXIT-		TO POOH
# SUBROUTINE CALLS-  GOFLASH

# THIS DISPLAY IS CALLED EACH PASS THROUGH STEERING.  RESTART PROTECTION IS VIA STEERING.

		COUNT*	$$/P67
		
P67		TC	NEWMODEX		# ENTER VIA RTB
		MM	67
		CA	V06N66			# ROLLC		XRNGERR		DNRNGERR
						# XXX.XX DEG	XXXX.X NM	XXXX.X NM
P66END		TS	ENTRYVN			# DISPLAY VIA OVERNOUT.

		TC	UPFLAG			# (IN CASE CAME FROM P65.  ENTRY DISPLAY
		ADRES	ENTRYDSP		# WILL FLUSH FLASHING DISP.  IF STILL ON)
						# BIT 13 FLAG 6
KILLGRP4	TC	PHASCHNG		# DISABLE GRP4, IN CASE CAME FROM HUNTEST.
		OCT	00004			# (COME TO KILLGRP4 VIA RTB, RET TO CALLER)
		
		TC	DANZIG			# ... AND CONTINUE AT PREDICT3 ...
		
V06N66		VN	0666

		BANK	26
		SETLOC	P60S2
		BANK
		
P67.1		CA	V16N67			# RTOGO		LAT		LONG
						# XXXX.X NM	XXX.XX DEG	XXX.XX DEG
		TC	BANKCALL
		CADR	GOFLASH
		TC	+3			# EFFECTIVE GOTOPOOH
		TC	+2
		TC	P67.1			# REDO
		
		CS	THREE			# TURN OFF ENTRY DAP
		INHINT
		MASK	CM/FLAGS		# CM/DSTBY, GAMDIFSW
		TS	CM/FLAGS
		RELINT
		EXTEND
		DCA	SERVCAD2
		
## Page 801
		DXCH	AVEGEXIT
		
		TCF	GOTOPOOH
		
## Page 802
P67.2		VLOAD	CLEAR			# CALC PRESENT LAT, LONG, ALT.
			RN
			ERADFLAG		# USE PAD RAD FOR ALT. (NOT SEEN ANYWAY)
		STODL	ALPHAV
			PIPTIME			# USE TIME OF RN
		CLEAR	CALL
			LUNAFLAG
			LAT-LONG
P67.3		RTB				# ENTRY EXIT THAT OMITS DISPLAY.
			SERVNOUT
			
V16N67		VN	1667
OCT41		=	33DEC
SERVCAD2	=	SERVCAD1

## Page 803
# SUBROUTINE NAME:	S61.1	
# MOD NO:	0					DATE:		21 FEB 67
# MOD BY:	RR BAIRNSFATHER				LOG SECTION:	P61-P67
# MOD NO:	1	MOD BY:	RR BAIRNSFATHER		DATE:		22 JUN 67	RESTARTS.
#
# FUNCTIONAL DESCRIPTION:	CALLED BY BOTH P61 AND P62
#	FIRST, TEST TO SEE IF  AVERAGEG  IS ON.  IF NOT, UPDATE THE STATE VECTOR TO PRESENT TIME + TOLERANCE
#	AND TURN ON  AVERAGEG  AT THAT TIME, AND CONTINUE.  OTHERWISE CONTINUE:  SEE IF IMU Y AXIS IS
#	WITHIN 30 DEG OF V*R.  IF YES, EXIT SUBROUTINE S61.1.  IF NO, SEE IF -Y AXIS OF IMU IS WITHIN
#	30 DEG OF V*R.	IF YES, DISPLAY ALARM:	01427	IMU REVERSED.
#			IF NO, DISPLAY ALARM:	01426	IMU UNSATISFACTORY.
#	IN EITHER OF THESE LAST 2 CASES, WAIT 10 SEC AND THEN EXIT SUBROUTINE S61.1.
#
# REMARK:	THERE WILL BE A SHORT 10 SEC DELAY IF AN ALARM EXIT IS TAKEN.  THE DELAY FOR INTEGRATION IS
#		AS SHORT AS CAN BE MADE, BUT IS ARBITRARY SINCE IT DEPENDS ON THE AGE OF THE STATE VECTOR.
#
# CALLING SEQUENCE:	CALL
#				S61.1
#
#			C(MPAC) UNSPECIFIED
#			PUSHLOC UNSPECIFIED
#
# SUBROUTINES CALLED: 	LOADTIME, CSMPREC, TPAGREE,
#			WAITLIST, JOBSLEEP, JOBWAKE, PREREAD, ALARM, GODSPR, BANKCALL, DELAYJOB
#
# NORMAL EXIT MODES:	RVQ
#
# ALARMS:	01426	IMU UNSATISFACTORY
#		01427	IMU REVERSED
#
# OUTPUT:	POSSIBLE ALARMS
#		POSSIBLY TDEC1, RATT, VATT, RN, VN
#
# ERASABLE INITIALIZATION REQUIRED:
#	AVEGFLAG		AVERAGEG ON OR OFF				LEFT BY SERVICER
#	PIPTIME   (-28) CS	TIME OF PIPA UPDATE				LEFT BY READACCS
#	RN        (-29) M	STATE VECTOR					LEFT BY AVERAGEG
#	VN	  (-7) M/CS	STATE VECTOR					LEFT BY AVERAGEG
#	REFSMMAT  (-1)		.5 REF TO SM MATRIX				LEFT BY LAST IMU ALIGNMENT
#
# DEBRIS:	QPRET
#		POSSIBLY PIPTIME1, RATT, VATT, TDEC1, RN1, VN1, QTEMP, X1	IF UPDATED
#		PUSH LIST LOCS USED BY CSMPREC

		EBANK=	AOG		# FOR 60GENRET, S61DT
		BANK	26
		SETLOC	P60S3
		BANK
		
		COUNT*	$$/S61.1
		
S61.1		EXTEND
		QXCH	60GENRET	# SAVE RET ADDR IN EB 6
		TC	BANKCALL
		CADR	R02BOTH
		TC	INTPRET
## Page 804
		BON	CALRB
			AVEGFLAG	# IS AVERAGEG ON
			S61.1A		# YES
			MIDTOAV2	# GET FUTURE STATE VECTOR SOON AS CAN
			
		CA	MPAC +1		# RETURN INHINTED ***
		TS	S61DT		# FOR RESTART.
		TC	WAITLIST
		EBANK=	DVCNTR
		2CADR	S61.1C
		
		TC	PHASCHNG
		OCT	40434
		TC	ENDOFJOB
		
S61.1C		CA	PRIO13
		TC	FINDVAC
		EBANK=	AOG
		2CADR	S61.1A 	-1
		
		EXTEND
		DCA	SERVCAD1	# HE WHO STARTS AVERAGEG MUST SERVICE
		DXCH	AVEGEXIT	# THE EXIT.
		
		TC	2PHSCHNG
		OCT	00454
		OCT	00415
		
		CA	EBENTRY		# SET EB= 7 FOR PREREAD.
		TS	EBANK
		
		TC	POSTJUMP
		CADR	PREREAD		# PREREAD DOES TC TASKOVER.
		
		TC	INTPRET
S61.1A		BOVB	VLOAD
			TCDANZIG	# TURN OFF OVFIND, IF ON
			VN		# VN	(-7) M/CS
		VXV	MXV
			RN		# RN	(-29) M
			REFSMMAT	# .5 UNIT MATRIX
		UNIT	DLOAD
			MPAC +3		# GET COS(THETA)/2
		BMN	DAD
			S61.1B		# DO TEST ON -YSM
			C(30)LIM	# = 1.0 -.5 COS(30)
		BOVB	RTB
			RETRN1
			RETRN3
## Page 805
S61.1B		DCOMP	DAD
			C(30)LIM	# = 1.0 - .5 COS(30)
		BOVB	EXIT
			RETRN2
			
RETRN3		TC	ALARM
		OCT	01426		# IMU UNSATISFACTORY
		TC	RETRN2 +2
		
RETRN2		TC	ALARM
		OCT	01427		# IMU REVERSED
		
 +2		CAF	V05N09
		TC	BANKCALL
		CADR	GODSPR		# DO DISPLAY
		CA	10SECS
		TC	BANKCALL
		CADR	DELAYJOB
		
RETRN1		TC	60GENRET

		EBANK=	DVCNTR
SERVCAD1	2CADR	SERVEXIT

C(30)LIM	2DEC	.566985		# = 1.0 - .5 COS(30)

10SECS		DEC	1000		# 1000 CS
60SECDP		2DEC	6000 B-28	# 6000 CS

## Page 806
# PROGRAM NAME:		S61.2			DATE:		14 FEB 67
# MOD NO:  	1				LOG SECTION:	P61-P67
# MOD BY:	MORTH / BAIRNSFATHER
# MOD NO: 2	MOD BY: MORTH/BAIRNSFATHER	DATE: 11 MAY 67		ADD 2ND ITER FOR ERAD AT 400K FT.
# MOD NO: 3	MOD BY: RR BAIRNSFATHER		DATE: 21 NOV 67		VARIABLE MU ADDED.
# MOD NO: 4	MOD BY: RR BAIRNSFATHER		DATE: 21 MAR 68		DIFFERENT EARTH/MOON SCALES IN TFF'S
#
# FUNCTIONAL DESCRIPTION:  CALLED BY P61.  PROVIDES DISPLAYS FOR NOUNS  N60  AND  N63 .
#	PROGRAM CALCULATES ENTRY DISPLAY OF MAXIMUM ACCELERATION EXPECTED  (GMAX)  AND ALSO THE EXPECTED
#	INERTIAL VELOCITY (VPRED) AND ENTRY ANGLE  (GAMMAEI)  THAT WILL OBTAIN AT 400K FT ABOVE THE FISCHER
#	ELLIPSOID.  PROGRAM ALSO CALCULATES A SECOND DISPLAY RELATIVE TO THE  EMSALT  ABOVE FISCHER ELLIPSOID
#	AND CONSISTS OF RANGE TO SPLASH FROM NOW  (RTGO) , PREDICTED INERTIAL VELOCITY  (VIO) , AND THE TIME TO
#	GO FROM NOW  (TTE) .
#
# CALLING SEQUENCE:	CALL
#				S61.2
#			C(MPAC) UNSPECIFIED
#			PUSHLOC WILL BE SET TO ZERO.
#
# SUBROUTINES CALLED:	TFFCONIC, CALCTFF, TFF/TRIG, FISHCALC, GETERAD, VGAMCALC
#
# NORMAL EXIT MODES:	RTB   P61.1
#
# ALARMS:  	NONE
#
# OUTPUT:	THE FOLLOWING REGISTERS ARE WRITTEN IN FOR USE BY DISPLAYS
#		GMAX	100 GMAX (-14) G,S	MAXIMUM ACCELERATION
#		VPRED	(-7) M/CS		PREDICTED VELOCITY AT 400K FT
#		GAMMAEI	GAMMA/360		PREDICTED GAMMA    AT 400K FT
#						FOR TM, DP(GAMMAEI) = (GAMMAEI, RTGO) / 360
#		RTGO	THETAH/360		RANGE ANGLE TO SPLASH FROM EMSALT	EMSALT IS PAD LOADED
#		VIO	(-7) M/CS		INERTIAL VELOCITY AT      EMSALT	EMSALT IS PAD LOADED
#		TTE	(-28) CS		TIME TO                    EMSALT	EMSALT IS PAD LOADED
#		PUSHLOC	= 0
#		CONIC PARAMETERS STORED IN VAC AREA (SEE TFF SUBROUTINES)
#
# ERASABLE INITIALIZATION REQUIRED:
#		RONE	(-29) M			STATE VECTOR				LEFT BY USER
#		VONE	(-7) M/CS		STATE VECTOR				LEFT BY USER
#		URONE	UR/2								LEFT BY USER
#		UNI	(-1)			UNIT NORMAL V*R				LEFT BY ENTRY / P61
#		THETAH	THETAH/360		RANGE ANGLE				LEFT BY ENTRY / P61
#		UNITW	(0)			UNIT POLAR VECTOR			LEFT BY PAD LOAD
#		EMSALT	(-29) M			EMS INTERFACE ALTITUDE			LEFT BY PAD LOAD
#						ORBITAL REENTRY: 284643 FT, LUNAR REENTRY: 297431 FT.
#
# DEBRIS:	QPRET,
#		ALL PDL LOCATIONS ABOVE 12D, INCLUDING X1,X2,S1,S2
#		ALSO PDL+0 ... PDL+5, WHERE INITIAL PUSHLOC = PDL

## Page 807
# THE FOLLOWING PUSH LIST LOCATIONS HAVE BEEN RESERVED FOR TFF ROUTINES AND ARE REPEATED HERE FOR CONVENIENCE.
# OF COURSE FOR S61.2 USAGE, EARTH ORIGIN SCALING IS USED.
#
#				BELOW	E:  IS USED FOR EARTH ORIGIN SCALE
#					M:  IS USED FOR MOON ORIGIN SCALE
#
#	RTERM	= 	18D		TERMINAL RADIUS M	E:  (-29)	M:  (-27)
#	NRTERM	=	16D		TERMINAL RADIUS M	E:  (-29+NR)
#								M:  (-27+NR)
#	RMAG1	=	12D		PRESENT RADIUS M	E:  (-29)	M:  (-27)
#	NRMAG	=	32D		PRESENT RADIUS M	E:  (-29+NR)
#								M:  (-27+NR)
#	SDELF/2				SIN(THETA) / 2
#	CDELF/2	=	14D		COS(THETA) / 2
#	TFFX	=	34D		X, ARGUMENT OF SERIES T(X).
#	TFFTEM	=	36D		ARG FOR TRANSFER ANGLE CALCULATION.
#	TFFNP	=	28D		LC P M 			E:  (-38+2NR)	M:  (-36+2NR)
#	TFF/RTMU=	30D		1/SQRT(MU)		E:  (17)	M:  (14)
#	TFFVSQ	=	20D		-(VN.VN/MU)	1/M	E:  (20)	M:  (18)

## Page 808
		BANK	34
		SETLOC	P60S2
		BANK
		
		COUNT*	$$/S61.2
					# PDL LEFT AT ZERO BY TARGETNG

S61.2		DLOAD	DSU
			EMSALT
			290KFT
		BPL	DLOAD
			LUNENT
			1/RTMU		# ESTABLISH MU FOR ORBITAL ENTRIES
CALLCON		CALL
			TFFCONIC	# FILL VAC AREA WITH CONIC PARAMETERS
			
		DLOAD	CALL
			RTRIAL		# 1ST GUESS AT TERMINAL RADIUS	(-29)
			CALCTFF		# SAVES MPAC IN RTERM		(18D)
			
		CALL			# CALC SDELF/2, CDELF/2
			TFF/TRIG	# RETURN WITH S(THETA) IN MPAC
			
		CALL			# GET FISCHER RADIUS		(-29) M
			FISHCALC	# ANS IN MPAC AND IN ERADM.
			
		DAD	CALL
			EMSALT
			CALCTFF		# SAVES MPAC IN RTERM		(18D)
			
		DCOMP			# NEGATIVE AS IN COUNTDOWN.
		STORE	TTE1		# DECR TTE FROM BASE TTE1.  (RESTART)
					# DNLIST AND DSKY WILL USE TTE.
		STCALL	TTE		# LET MISS CONTRL DECR BY ELAPSED TIME
					# TTE= TIME FROM NOW TO EMSALT +FISCHER
					
			TFF/TRIG	# S(THETA) IN MPAC ON RETURNING
					# AND THETA= RANGE FROM NOW TO EMSALT
					
		CALL
			FISHCALC
		CALL
			VRCALC
		CALL
			DISPTARG
		CALL
			DISPTARG
		STCALL	RTGO
## Page 809
			VGAMCALC
			
		DMP			# MPAC = GAMMA
					# PDL0 HAS VGAM.
		BDDV	DAD	
			VEMSCON		# -HS D 180/PI (-14)
			0		# VGAM FROM PDL0.
		STODL	VIO		# PREDICTED VELOCITY AT EMSALT.
		
					# GAMMA AND VGAM AT 300K FT ARE REQUIRED BY GMAX
					# ALGORITHM.
					
			ERADM		# EARTH RADIUS FROM GETERAD (-29) M
					# = FISCHER RADIUS (-29)
					
		DAD
			300KFT		# M (-29)
		STCALL	RTERM		# TERMINAL RADIUS M (-29)
		
			PREVGAM		# VGAMCALC WITH NEW RTERM
			
					# VBAR = (V(FPS) - 36KF/S) / 20KF/S
# GMAX = (4/(1 + 4.8 VBARSQ))(GAM - 6.05 - 2.4 VBARSQ) - 10(L/D - .3) + 10	ASSUME L/D = 0.3, BANK =0.

# GMAXCALC
		PDDL	DSU		# GAM TO PDL2
			0		# VGAM IS IN PDL0 (-7)
			36KFT/S		# (-7) M/CS
		DDV	DSQ
			20KFT/S		# (-6) M/CS
		STORE	0		# VBARSQ (-2) TO PDL0
		
		DMP	DAD
			KR1
					# GAM, POS DOWN, FROM PDL2
		DAD	DMP
			-6.05DEG
			KR2
		PDDL			# XCH PDL+0 FOR VBARSQ (-2)
		DDV	DAD
			KR4
			DP2(-4)
		BDDV
					# NUM FROM PDL+0
		DAD	BPL
			KR3
			+3
		DLOAD
			HI6ZEROS
		STODL	GMAX		# 100 GMAX (-14)
## Page 810
# DISPLAY USES GMAX AS SP, SO LO WORD IS WRITTEN OVER BY VPRED.
			ERADM		# = FISCHER RADIUS (-29) M
		DAD	CALL		# 2 ND ITERATION FOR FISCHER RADIUS
			400KFT
			CALCTFF		# ESTABLISH TRANSFER ANGLE DATA.
		CALL
			TFF/TRIG	# GET SIN, COS DELF
		CALL
			FISHCALC	# GET CORRESPONDING FISCHER RADIUS.
			
		DAD	LXA,2		# SAVE HI-WORD FOR DOWNLIST.
			400KFT		# M (-29)
			RTGO		# (RANGE ANGLE FROM EMSALT) / 360
		STCALL	RTERM
			PREVGAM		# VGAMCALC WITH NEW RTERM
	
		DCOMP	SXA,2		# HI-WORD OF EACH ON DOWNLIST.
			MPAC +1
		STODL	GAMMAEI		# CONIC GAMMA/360 AT 400K FT.	(HI-WORD)
					# CONIC RTGO/360 FROM EMSALT   (LOW-WORD)
					# FOR TM, DP(GAMMAEI) = (GAMMA, RTGO) / 360
					
					# VGAM FROM PDL+0 (-7)
		STADR
		STORE	VPRED		# CONIC VELOCITY AT 400K FT
		
		RTB
			P61.1
					# PDL BACK TO ZERO.
					
LUNENT		DLOAD	GOTO
			1/RTMUE		# ESTABLISH MU FOR LUNAR TYPE ENTRIES
			CALLCON
290KFT		2DEC	88392.0 B-29

KTETA1		2DEC*	.421844723 E2 B-14* # 1100 2PI/16384(163.84)

36KFT/S		2DEC	109.728 B-7	# (-7) M/CS = 36 KFT/S (-7)

20KFT/S		2DEC	121.92 B-7	# (-6) M/CS = 2 20KFT/S (-7)

KR1		2DEC	-.026666667	# = -2.4 4 / 360

-6.05DEG	2DEC	-.016805556	# = -6.05 / 360

KR2		2DEC	.54931641	# = (360/4) 100 (-14) = 9000 B-14

KR3		2DEC	1000 B-14	# = 100 (10.0) (-14) G,S
## Page 811
					# ASSUMES L/D = 0.3, BANK =0.
RTRIAL		2DEC	6460097.18 B-29	# RPAD +284643 FT =21 194 545 FT
					# RPAD DEFINED AS 20 909 901.57 FT =6 373 338 M
400KFT		2DEC	121920 B-29	# METERS

# 300KFT	2DEC	91440 B-29	(-29) M

# EMSALT	2DEC	86759.2	B-29	284643 FT (-29) M 	(ORBITAL REENTRY)

# EMSALT	2DEC	90657 B-29	297431 FT (-29) M	(LUNAR REENTRY)

KR4		2DEC	.833333333

300KFT		EQUALS	MINPERE
VEMSCON		2DEC	-.0389676 B-14	# = -HS D / 2 PI (-14)	M SQ / CS SQ

					# = -16369	.05G	32.2	.3048	.3048/2 PI	(-14)

## Page 812
# SUBROUTINE NAME:  FISHCALC	(USED BY S61.2)		DATE:		01.21.67
# MOD NO: 0						LOG SECTION:	P61-P67
# MOD BY: MORTH / BAIRNSFATHER
# MOD NO: 1	MOD BY: RR BAIRNSFATHER			DATE:		11 MAY 67	INCLUDE GETERAD CALL
#
# FUNCTIONAL DESCRIPTION:  GIVEN THE PRESENT POSITION, UNITR, CALCULATE A NEW UNITR THAT IS ROTATED THROUGH
#	TRANSFER ANGLE, THETA, ALONG TRAJECTORY.  THEN CALCULATE SIN(LAT) AND USE TO OBTAIN FISCHER RADIUS.

#	SINCE FISHCALC USES UNI (LEFT BY ENTRY) EARTH SCALING IS ASSUMED.  (WILL IMPROVE FOR SUITABLE TENNANT)
#
# CALLING SEQUENCE:	CALL
#				FISHCALC
#	ENTER WITH .5 SIN(THETA) IN MPAC.
#	PUSHLOC IS AT PDL+0, AN ARBITRARY BASE VALUE IF LEQ 8D
#
# SUBROUTINES CALLED:  GET ERAD
#
# NORMAL EXIT MODE:  RVQ
#
# EXIT MODES:	NONE
#
# OUTPUT:	ERADM (-29) M IN MPAC ON RETURNING
#		NEW UNIT VECTOR NOT SAVED.
#		SIN(LAT) NOT SAVED.
#		PUSHLOC AT PDL+0
#
# ERASEABLE INITIALIZATION REQUIRED:
#		SDELF/2		=SIN(THETA) / 2, IN MPAC		LEFT BY TFF/TRIG
#		CDELF/2		=COS(THETA) / 2, STORED IN PDL 14D	LEFT BY TFF/TRIG
#		RONE		(-29) M					LEFT BY USER
#		VONE		(-7) M/CS				LEFT BY USER
#		URONE		UR/2					LEFT BY USER
#		UNI		.5 UNIT(V*R)				LEFT BY ENTRY / P61
#		UNITW		UNIT NORTH POLE				LEFT BY PAD LOAD
#
# DEBRIS:	QPRET, PDL+0 ... PDL+5
					# -      -          -
FISHCALC	PDVL	VXV		# URPR = UR CDELF + UHOR SDELF
	 		URONE
			UNI
		VXSC	VSL1
					# SIN(THETA) / 2 FROM PDL+0
		PDVL	VXSC		# TO PDL+0, +5
			URONE
			CDELF/2		# COS(THETA) / 2
		VAD	STADR
		STORE	URH		# FOR USE IN RTGO FROM EMS DISPLAY
		DOT	SL1
			UNITW		# FULL UNIT VECTOR	UNIT NORTH
		STORE	ALPHAV +4	# = .5 SIN(LAT)
DUMPFISH	GOTO
			GETERAD		# SAVES FISCHER RAD (-29) M IN ERADM AND
					# IN MPAC.  RETURNS TO CALLER VIQ QPRET.
					
## Page 813
# SUBROUTINE NAME:  VGAMCALC	(USED BY S61.2)				DATE:		01.21.67
# MOD NO: 0								LOG SECTION:	P61-P67
# MOD BY: MORTH / BAIRNSFATHER
# MOD NO: 1	MOD BY: RR BAIRNSFATHER		DATE: 11 APR 67
# MOD NO: 2	MOD BY: RR BAIRNSFATHER		DATE: 21 NOV 67		VARIABLE MU ADDED.
# MOD NO: 3	MOD BY: RR BAIRNSFATHER		DATE: 21 MAR 68		ACCEPT DIFFERENT EARTH/MOON SCALE
#
# FUNCTIONAL DESCRIPTION:  EARTH CENTERED VIS VIVA CALCULATION OF TERMINAL VELOCITY AND GAMMA (REL TO
#	HORIZONTAL) GIVEN THE SCALAR QUANTITIES:  PRESENT RADIUS AND VELOCITY AND THE TERMINAL RADIUS.
#	THE USER MUST APPEND PROPER SIGN TO GAMMA, SINCE IT IS CALCULATED AS A POSITIVE NUMBER.
#	THE EQUATIONS ARE
#
#		VGAM = SQRT(VN VN/MU + 2(RN-RTERM)/(RN RTERM) ) RTMU
#
#		COSGAM = H / RTERM VGAM = SQRT (LCP) / (RTERM VGAM/RTMU)
#
#	VGAMCALC ASSUMES THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT RADIUS.  BOTH CALCTFF AND CALCTPER
#	MAKE THIS ASSUMPTION.
#
# CALLING SEQUENCE:	CALL			STCALL	RTERM
#				VGAMCALC		PREVGAM
#	PUSHLOC AT PDL+0, ARBITRARY IF LEQ 12D
#	C(MPAC) UNSPECIFIED			C(MPAC)=NEW RTERM
#
# SUBROUTINES CALLED:  NONE
#
# NORMAL EXIT MODE:  RVQ
#
# ALARMS:	NONE
# 
# OUTPUT:	GAMMA / 360 IN MPAC, POSITIVE NUMBER
#		VGAM 	E: (-7)	  M: (-5)	M/CS IN PDL+0
#		PUSHLOC AT PDL+2
#
# ERASABLE INITIALIZATION REQD:
#	TFF/RTMU  E: (17)   M: (14)	1/SQRT(MU)				LEFT BY TFFCONIC.
#	RMAG1	  E: (-29)  M: (-27)	M  PRESENT RADIUS LENGTH		LEFT BY TFFCONIC
#	NRMAG	  E: (-29+NR)		M  NORM LENGTH OF PRESENT POSITION	LEFT BY TFFCONIC
#		  M: (-27+NR)
#	RTERM	  E: (-29)  M: (-27)	M  TERMINAL RADIUS LENGTH		LEFT BY CALCTFF
#	NRTERM    E: (-29+NR) 		M  NORM LENGTH OF TERMINAL RADIUS	LEFT BY CALCTFF
#		  M: (-27+NR)
#	TFFVSQ    E: (20)   M: (18)   1/M  -(V SQ/MU): PRESENT VELOCITY, NORM	LEFT BY TFFCONIC
#	TFFNP	  E: (-38+2NR)		M  LCP, SEMI-LATUS RECTUM, WEIGHT NR	LEFT BY TFFCONIC
#	  	  M: (-36+2NR)
#
# DEBRIS:	QPRET, PDL+0 ... PDL+3
#		RTERM, NRTERM IF PREVGAM ENTERED.
## Page 814

PREVGAM		SL*			# ENTER WITH NEW RTERM IN MPAC
					# E: (-29)  M: (-27)
			0,1		# X1 = -NR
		STORE	NRTERM		# RTERM M		E: (-29+NR)	M: (-27+NR)

VGAMCALC	DLOAD	DMP
			NRMAG		# RMAG M		E: (-29+NR)	M: (-27+NR)
			NRTERM		# RTERM M		E: (-29+NR)	M: (-27+NR)
		PDDL	DSU		# RMAG RTERM M		E: (-58+2NR)	M: (-54+2NR)
			NRMAG		# RMAG M		E: (-29+NR)	M: (-27+NR)
			NRTERM		# RTERM M		E: (-29+NR)	M: (-27+NR)
		SL*	DDV		# 2(RN-RTERM)		E: (-30+NR)	M: (-28+NR)
			0 -8D,1		# (-8+NR)
					# PUSH UP PRODUCT.					
		DSU
			TFFVSQ		# -(V SQ/MU)		E: (20)		M: (18)
		SQRT	PUSH		# SAVE VGAM/RT(MU) FOR NOW.	E: (10)	M: (9)
		DDV	PDDL		# XCH PDL+0, LEAVING VGAM FOR OUTPUT.
					# VGAM TO PDL M/CS	E: (-7)		M: (-2)
			TFF/RTMU	# 			E: (17)		M: (14)
		DMP	PDDL		# RTERM VGAM/RTMU	E: (-19+NR)	M: (-18+NR)
			NRTERM		# RTERM M		E: (-29+NR)	M: (-27+NR)
			TFFNP		# LC P =H.H/MU M	E: (-38+2NR)	M: (-36+2NR)
		SQRT	DDV		#			E: (-19+NR)	M: (-18+NR)
					# PUSH UP DEN		E: (-19+NR)	M: (-18+NR)
					# USE DDV OVFL AS LIMITER (|COS| <1.0)
		SR1	ACOS
DUMPVGAM	RVQ
					# CALLER MUST SUPPLY OWN SIGN ...
					#			22W	27MS

## Page 815
# SUBROUTINE NAME:	TFF/TRIG	(USED BY S61.2)		DATE		01.17.67
# MOD NO: 0							LOG SECTION:	P61-P67
# MOD BY: RR BAIRNSFATHER
# MOD NO: 1	MOD BY: RR BAIRNSFATHER		DATE: 14 APR 67
# MOD NO: 2	MOD BY: RR BAIRNSFATHER		DATE: 21 MAR 68		ACCEPT DIFFERENT EARTH/MOON SCALE
#
# FUNCTIONAL DESCRIPTION:  USED BY ENTRY DISPLAY TO CALCULATE SIN(THETA), COS(THETA) FROM DATA LEFT IN
#	PDL BY TFF SUBROUTINES.  THE EQNS ARE
#
#		COS(THETA) = 1-2 ABS(ARG) / (RN RTERM (1+X) )
#						2
#		SIN(THETA) = SGN(ARG) SQRT(1-COS (THETA) )
#
# 	WHERE THETA = TRANSFER ANGLE
#	AND     ARG = P Z ABS(Z)			IF ALFA ZZ LEQ 1
#	        ARG = (P / ALFA) SGN(Q1 + R 1/Z)        IF ALFA Z Z G 1
#	AND  ARG  HAS BEEN AFFIXED WITH THE SIGN OF SIN(THETA).
#
# CALLING SEQUENCE:	CALL
#				TFF/TRIG
#		PUSHLOC AT PDL+0, ARBITRARY IF NOT EQ 14D
#		C(MPAC) UNSPECIFIED
#
# SUBROUTINES CALLED:  NONE
#
# NORMAL EXIT MODES:  RVQ
#
# ALARMS:	NONE
#
# OUTPUT:	C(MPAC) = .5 SIN(THETA)
#		CDELF/2 = .5 COS(THETA)		(IN PDL 14D)
#		PUSHLOC AT PDL+0
#
# ERASABLE INITIALIZATION REQUIRED:
#		TFFX			X					LEFT BY CALCTFF OR CALCTPER
#		TFFTEM  E: (-59+2NR)	ARG					LEFT BY CALCTFF OR CALCTPER
#			M: (-55+2NR)	WHERE ARG = LCP ZZ SGN(DELF) OR ARG = LCP/ALFA SGN(DELF)
#		NRTERM	E: (-29+NR)	M  NORM LENGTH OF TERMINAL RADIUS	LEFT BY CALCTFF OR CALCTPER
#			M: (-27+NR)	
#		NRMAG	E: (-29+NR)	M  NORM LENGTH OF PRESENT POSITION	LEFT BY TFFCONIC
#			M: (-27+NR)
#
# DEBRIS:	QPRET, CDELF/2

		BANK	27
		SETLOC	P60S5
		BANK
TFF/TRIG	DLOAD	SR1
			TFFX
		DAD	DMP
			HIDPHALF
			NRMAG		# RMAG M		E: (-29+NR)	M: (-27+NR)
		DMP	BDDV
			NRTERM		# RTERM M		E: (-29+NR)	M: (-27+NR)
			TFFTEM		# P ZSQ OR P/ALFA	E: (-59+2NR)	M: (-55+2NR)
		ABS	BDSU		# THE SIGN IS FOR SDELF.
			HIDPHALF
		STORE	CDELF/2		# .5 COS(THETA)
		DSQ	DCOMP		# KEEP HONEST FOR SQRT.
## Page 816
		DAD	SQRT
			HIDP1/4
DUMPTRIG	SIGN	RVQ
			TFFTEM		# AFFIX SIGN(DELE/2)
					# RETURN WITH .5 SIN(THETA) IN MPAC
					
					#			16W	15MS
					
DISPTARG	STQ			# C(MPAC) = TRGO ESTIMATE
			60GENRET
		DMP	DSU
			KTETA1
			TTE1
		STCALL	DTEAROT
			EARROT2
		CALL
			VRCALC
		GOTO
			60GENRET
VRCALC		VLOAD	DOT
			URH
			RT
		SL2	ACOS
		RVQ

# END OF PROGRAM S61.2

## Page 817
# PROGRAM DESCRIPTION S62.3	DATE 10JAN67
# MOD NO 1			LOG SECTION P60-P67
# MOD BY ZELDIN
# MOD NO: 2	MOD BY: RR BAIRNSFATHER		DATE: 15 MAY 67		CHANGED TO REF COORDS.
# MOD NO: 3	MOD BY: RR BAIRNSFATHER		DATE: 17 JAN 68		ALFAPAD CHANGES MADE.
#
# FUNCTIONAL DESCRIPTION
#
#	COMPUTE DESIRED GIMBOL ANGLES FOR ENTRY ATTITUDE
#	THE FOLLOWING TRAJECTORY TRIAD IS AVAILABLE IN MEMORY AND IS COMPUTED EACH 2 SECONDS BY CM/POSE IN
#	REFERENCE COORDINATES (V = VELOCITY RELATIVE TO EARTH) :
#
#		UXA = -UNIT(V)
#		UYA =  UNIT(V*R)
#		UZA =  UXA*UYA
#
# 	GENERATE A DESIRED BODY TRIAD FOR TRIMMED FLIGHT WITH RESPECT TO THE RELATIVE VELOCITY VECTOR, USING
#	ROLL COMMAND AND TRIM ANGLE OF ATTACK:
#
#		UXD = UNIT(UYD*UXA) SIN(ALFATRIM) + UXA COS(ALFATRIM)
#		UYD = UYA COS(ROLLC) + UZA SIN(ROLLC)
#		UZD = UXD * UYD
#
#	USE THE DESIRED SET (IN REFERENCE COORDS) AND REFSMMAT TO CALL  CALCGA  AND OBTAIN GIMBAL ANGLES
#	IN 2S, C IN MPAC, +2 AND THETAD, +2.
#
# CALLING SEQUENCE
#
#	L	CALL
#	L+1		S62.3
#
# NORMAL EXIT MODE
#
#	RETURN VIA QPRET DIRECTLY FROM CALCGA.
#
# SUBROUTINES CALLED
#
#	CALCGA
#
# ALARM OR ABORT MODES
#
#	NONE
#
# ERASABLE INITIALIZATION REQUIRED
#
#	ROLLC	ROLL COMMAND		DP 1:S COMP AT 1REV
#	ALFAPAD	SP 1S,C / 180		LEFT BY PAD LOAD	ALFATRIM IS NEGATIVE.
#	UXA/2	REF COORDS		LEFT BY CM/POSE
#	UYA/2	REF COORDS		LEFT BY CM/POSE
#	UZA/2	REF COORDS		LEFT BY CM/POSE
#
# OUTPUT
#	
#	CPHI	GIMBAL ANGLES (O,I,M) 2:S COMP TP (O,I,M)/180
#
# DEBRIS
#
#	QTEMP, QPRET, PUSHLIST

		BANK	10
		SETLOC	P60S4
		BANK
## Page 818
		COUNT*	$$/S62.3
		
S62.3		SETPD	SLOAD
			0
			ALFAPAD		# ALFATRIM / 180, ALFA IS NEG.
		SR1	PUSH
		COS	PDDL		# XCH PDL, COS TO PDL0
		SIN	PDDL		# SIN TO PDL2
			ROLLC
		COS	VXSC
			UYA/2		#				REF COORDS
		PDDL	SIN		# PUSH VECTOR INTO PDL4,.9
			ROLLC
		VXSC	VAD
			UZA/2		#				REF COORDS
					# VECTOR FROM PDL4, 9
		VSL1
		STORE	YNB		# = UYD				REF COORDS
		
		VXV	VSL1
			UXA/2		#				REF COORDS
		VXSC	PDDL
					# SIN TRIM FROM PDL2
					# XCH PDL0 FOR COS TRIM
		VXSC	VAD
			UXA/2		#				REF COORDS
					# FROM PDL0
		VSL1
		STORE	XNB		# X SC AXIS (.5 UNIT)		REF COORDS
		
		VXV	VSL1
			YNB
		STOVL	ZNB		# Z SC IN REF COOR. SCALED AT 2
			REFSMMAT
		STOVL	XSM
			REFSMMAT +6
		STOVL	YSM
			REFSMMAT +12D
		STORE	ZSM
		
		CLEAR	GOTO
			CPHIFLAG	# CAUSE CALCGA TO STORE ANS IN TP CPHI
			CALCGA
					# CALCGA WILL RETURN TO ORIGINAL CALLER
					# VIA QPRET WITH 2,S COMP. ANGLES IN CPHI
					


back to top