https://github.com/virtualagc/virtualagc
Revision 3577d0b1de1ac147c1710524517c563b2bfe231c authored by Ronald Burkey on 30 May 2021, 19:14:00 UTC, committed by GitHub on 30 May 2021, 19:14:00 UTC
Issue 1143: Fix various symbol name and other minor typos
2 parent s bc21d6b + 8d274f6
Raw File
Tip revision: 3577d0b1de1ac147c1710524517c563b2bfe231c authored by Ronald Burkey on 30 May 2021, 19:14:00 UTC
Merge pull request #1147 from smithery1/Issue/1143
Tip revision: 3577d0b
TIME_OF_FREE_FALL.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:	TIME_OF_FREE_FALL.agc
## Purpose:     Part of the source code for Colossus build 237.
##              This is for the Command Module's (CM) Apollo Guidance
##              Computer (AGC), for Apollo 8.
## Assembler:   yaYUL
## Contact:     Jim Lawton <jim DOT lawton AT gmail DOT com>
## Website:     www.ibiblio.org/apollo/index.html
## Page Scans:  www.ibiblio.org/apollo/ScansForConversion/Colossus237/
## Mod history: 2011-04-17 JL	Adapted from corresponding Colossus 249 file.
##		2011-04-17 JL	Removed temporary line.
##		2016-11-02 RSB	Typo (various offset-references +2 and +3 not indented).
##		2017-01-01 RSB	Proofed comment text using octopus/ProoferComments,
##				and fixed errors found.
##		2017-01-20 RSB	Fixed comment-text errors noted while diff'ing
##				vs Colossus 249.
##		2017-03-14 RSB	Comment-text fixes noted in proofing Luminary 116.

## Page 1337
#          THE TFF SUBROUTINES MAY BE USED IN EITHER EARTH OR MOON CENTERED COORDINATES. THE TFF ROUTINES NEVER
# KNOW WHICH ORIGIN APPLIES. IT IS THE USER WHO KNOWS, AND WHO SUPPLIES  RONE, VONE AND 1/SQRT(MU)  AT THE
# APPROPRIATE SCALE LEVEL FOR THE PROPER PRIMARY BODY.

#          EARTH ORIGIN           POSITION      -29       METERS
#                                 VELOCITY      -7        METERS/CENTISECOND
#                                 1/SQRT(MU)    +17       SQRT(CS SQ/METERS CUBED)

#          MOON ORIGIN            POSITION      -27       METERS
#                                 VELOCITY      -5        METERS/CENTISECONDS
#                                 1/SQRT(MU)    +14       SQRT(CS SQ/METERS CUBED)

# ALL DATA PROVIDED TO AND RECEIVED FROM ANY TFF SUBROUTINE WILL BE AT ONE OF THE LEVELS ABOVE. IN ALL CASES,
# THE FREE FALL TIME IS RETURNED IN CENTISECONDS AT (-28). PROGRAM  TFF/CONIC  WILL GENERATE VONE/RTMU  AND
# LEAVE IT IN  VONE' AT (+10) IF EARTH ORIGIN AND (+9) IF MOON ORIGIN.
#          THE USER MUST STORE THE STATE VECTOR IN  RONE, VONE  AND MU IN  THE FORM 1/SQRT(MU) IN  TFF/RTMU
# AT THE PROPER SCALE BEFORE CALLING  TFF/CONIC. SINCE  RONE, VONE  ARE IN THE EXTENDED VERB STORAGE AREA,
# THE USER MUST ALSO LOCK OUT THE EXTENDED VERBS, AND RELEASE THEM WHEN FINISHED.
#          PROGRAMS     CALC/TFF  AND  CALC/TPER  ASSUME THAT THE TERMINAL RADIUS IS LESS THAN THE PRESENT
# RADIUS. THIS RESTRICTION CAN BE REMOVED BY A  15 W CODING CHANGE, BUT AT PRESENT IT IS NOT DEEMED NECESSARY.
#
#          THE FOLLOWING ERASABLE QUANTITIES ARE USED BY THE TFF ROUTINES, AND ARE LOCATED IN THE PUSH LIST.
#

#                                                              BELOW      E:   IS USED FOR EARTH ORIGIN SCALE
#                                                                         M:   IS USED FOR MOON  ORIGIN SCALE

# TFFSW		=	119D  BIT1	0 = CALCTFF        1 = CALCTPER
TFFDELQ		=	10D		# Q2-Q1              E: (-16)  M: (-15)
RMAG1		=	12D		# ABVAL(RN)  M       E: (-29)  M: (-27)
# RPER		=	14D		PERIGEE RADIUS M   E: (-29)  M: (-27)
TFFQ1		=	14D		# R.V / SQRT(MUE)    E: (-16)  M: (-15)
# SDELF/2				SIN(THETA) /2
CDELF/2		=	14D		# COS(THETA) /2
# RAPO		=	16D		APOGEE RADIUS  M   E: (-29)  M: (-27)
NRTERM		=	16D		# TERMINAL RADIUS M  E: (-29+NR)
					#                    M: (-27+NR)
RTERM		=	18D		# TERMINAL RADIUS M  E: (-29)  M: (-27)
TFFVSQ		=	20D		# -(V SQUARED/MU)  1/M  E: (20)  M: (18)
TFF1/ALF	=	22D		# SEMI MAJ AXIS  M  E: (-22-2 NA)
					#                   M: (-20-2 NA)
TFFRTALF	=	24D		# SQRT(ALFA)  E: (10+NA)  M: (9+NA)
TFFALFA		=	26D		# ALFA  1/M   E: (26-NR)  M: (24-NR)
TFFNP		=	28D		# SEMI LATUS RECTUM  M  E: (-38+2 NR)
					#                       M: (-36+2 NR)
TFF/RTMU	=	30D		# 1/SQRT(MU)         E: (17)   M: (14)
NRMAG		=	32D		# PRESENT RADIUS  M  E: (-29+NR)
					#                    M: (-27+NR)
TFFX		=	34D     	#
TFFTEM		=	36D		# TEMPORARY
## Page 1338
#                                         REGISTERS S1, S2 ARE UNTOUCHED BY ANY TFF SUBROUTINE
#                                         INDEX REGISTERS X1, X2 ARE USED BY ALL TFF SUBROUTINES. THEY ARE ESTAB-
#                                         LISHED IN TFF/CONIC AND MUST BE PRESERVED BETWEEN CALLS TO SUBSEQUENT
#                                         SUBROUTINES.
#                                         -NR                             C(X1) = NORM COUNT OF RMAG
#                                         -NA                             C(X2)= NORM COUNT OF SQRT(ABS(ALFA))

## Page 1339
#

# SUBROUTINE NAME:     TFFCONIC                                           DATE:    01.29.67
# MOD NO:  0                                                              LOG SECTION:    TIME OF FREE FALL
# MOD BY:  RR BAIRNSFATHER
# MOD NO:  1           MOD BY:  RR BAIRNSFATHER	     DATE:  11 APR 67
# MOD NO:  2           MOD BY:  RR BAIRNSFATHER	     DATE:  21 NOV 67     ADD MOON MU.
# MOD NO:  3           MOD BY:  RR BAIRNSFATHER	     DATE:  21 MAR 68     ACCEPT DIFFERENT EARTH/MOON SCALES
# FUNCTIONAL DESCRIPTION:      THIS SUBROUTINE IS CALLED TO COMPUTE THOSE CONIC PARAMETERS REQUIRED BY THE TFF
#          SUBROUTINES AND TO ESTABLISH THEM IN THE PUSH LIST AREA. THE PARAMETERS ARE LISTED UNDER OUTPUT.
#          THE EQUATIONS ARE
#                 -   -  -
#                 H = RN*VN                                               ANGULAR MOMENTUM
#                       - -
#                 LCP = H.H / MU                                          SEMI LATUS RECTUM
#                               -  -
#                 ALFA = 2/RN - VN.VN / MU                                RECIPROCAL SEMI MAJ AXIS, SIGNED

#          AND ALFA IS POS FOR ELLIPTIC  ORBITS
#                       0  FOR PARABOLIC ORBITS
#                      NEG FOR HYPERBOLIC ORBITS.
#          SUBROUTINE ALSO COMPUTES AND SAVES  RMAG.
# CALLING SEQUENCE:
#          TFFCONIC  EXPECTS CALLER TO ENTER WITH CORRECT GRAVITATIONAL CONSTANT IN MPAC, IN THE FORM
#          1/SQRT(MU). PROGRAM WILL SAVE IN  TFF/RTMU  . THE SCALE IS DETERMINED BY WHETHER EARTH OR MOON
#          ORIGIN IS USED.  THE CALLER MUST LOCK OUT THE EXTENDED VERBS BEFORE PROVIDING STATE VECTOR IN RONE,
#          VONE  AT PROPER SCALE. THE EXTENDED VERBS MUST BE RESTORED WHEN THE CALLER IS FINISHED USING THE
#          TFF ROUTINES.
#          ENTRY POINT  TFFCONMU  EXPECTS THAT  TFF/RTMU  IS ALREADY LOADED.
#          TO SPECIFY MU:      DLOAD  CALL                IF MU ALREADY STORED:    CALL
#                                     YOURMU       1/RTMU   E: (17)  M: (14)              TFFCONMU
#                                     TFFCONIC
#          PUSHLOC = PDL+0, ARBITRARY IF LEQ 18D

# SUBROUTINES CALLED:  NONE
# NORMAL EXIT MODES:   RVQ
# ALARMS:  NONE
# OUTPUT:  THE FOLLOWING ARE STORED IN THE PUSH LIST AREA.
#          RMAG1  E:(-29) M:(-27) M  RN, PRESENT RADIUS LENGTH.
#          NRMAG  E: (-29+NR)     M  RMAG, NORMALIZED
#                 M: (-27+NR)
#          X1                        -NR, NORM COUNT
#          TFFNP  E: (-38+2NR)    M  LCP, SEMI LATUS RECTUM, WEIGHTED BY NR.       FOR VGAMCALC
#                 M: (-36+2NR)
#          TFF/RTMU  E:(17)  M:(14)       1/SQRT(MU)
#          TFFVSQ E:(20)  M:(18)  1/M   -(V SQ/MU): PRESENT VELOCITY,NORMLIZED.    FOR VGAMCALC
#          TFFALFA  E: (26-NR)    1/M   ALFA, WEIGHTED BY NR
#                   M: (24-NR)
#          TFFRTALF  E: (10+NA)   SQRT(ALFA), NORMALIZED
#                    M: (9+NA)
## Page 1340
#          X2                     -NA, NORMCOUNT
#          TFF1/ALF  E: (-22-2NA) SIGNED SEMI MAJ AXIS, WEIGHTED BY NA
#                    M: (-20-2NA)
#          PUSHLOC AT PDL+0
#          THE FOLLOWING  IS STORED IN GENERAL ERASABLE
#          VONE'  E:(10)  M:(9)   V/RT(MU), NORMALIZED VELOCITY
# ERASABLE INITIALIZATION REQUIRED:
#          RONE   E:(-29)  M:(-27)  M      STATE VECTOR                   LEFT BY CALLER
#          VONE   E:(-7)   M:(-5)   M/CS   STATE VECTOR                   LEFT BY CALLER
#          TFF/RTMU  E:(17)  M:(14)      1/RT(CS SQ/M CUBE)               IF ENTER VIA TFFCONMU.
# DEBRIS:  QPRET,    PDL+0 ... PDL+3
#


		BANK	33
		SETLOC	TOF-FF
		BANK

		COUNT*	$$/TFF

TFFCONIC	STORE	TFF/RTMU	# 1/SQRT(MU)       E: (17)   M: (14)

TFFCONMU	VLOAD	UNIT		# COME HERE WITH TFFRTMU LOADED.
			RONE		# SAVED RN.  M     E: (-29)  M: (-27)
		PDDL			# UR/2 TO PDL+0, +5
			36D		# MAGNITUDE
		STORE	RMAG1		# M    E: (-29)   M: (-27)

		NORM
			X1		# -NR
		STOVL	NRMAG		# RMAG  M   E: (-29+NR)  M: (-27+NR)
			VONE		# SAVED VN.  M/CS   E: (-7)   M: (-5)
		VXSC
			TFF/RTMU	# E: (17)   M: (14)
		STORE	VONE'		# VN/SQRT(MU)   E: (10)   M: (9)

		VXSC	VXV
			NRMAG		# E: (-29+NR)  M: (-27+NR)
#					  UR/2 FROM PDL
		VSL1	VSQ		# BEFORE:  E:(-19+NR)  M:(-18+NR)
		STODL	TFFNP		# LC P  M   E:(-38+2NR)  M:(-36+2NR)
#					  SAVE ALSO FOR VGAMCALC
			TFF1/4
		DDV	PDVL		# (2/RMAG)  1/M   E:(26-NR)   M:(24-NR)
			NRMAG		# RMAG  M   E:(-29+NR)  M:(-27+NR)
			VONE'		# SAVED VN.   E: (10)   M: (9)
		VSQ	DCOMP		# KEEP MPAC+2 HONEST FOR SQRT.
		STORE	TFFVSQ		# -(V SQ/MU)   E:(20)   M:(18)
#					  SAVE FOR VGAMCALC
		SR*	DAD
## Page 1341
			0 -6,1		# GET -VSQ/MU   E:(26-NR)   M:(24-NR)
		STADR
#					  2/RMAG   FROM PDL+2
		STORE	TFFALFA		# ALFA  1/M   E:(26-NR)   M:(24-NR)
		SL*	PUSH		# TEMP SAVE ALFA    E:(20)   M:(18)
			0 -6,1
		ABS	SQRT		# E:(10)   M:(9)
		NORM
			X2		# X2 = -NA
		STORE	TFFRTALF	# SQRT( ABS(ALFA) )  E:(10+NA)   M:(9+NA)
		DSQ	SIGN		# NOT SO ACCURATE, BUT OK
#					  ALFA FROM PDL+2   E:(20)   M:(18)
		BZE	BDDV		# SET 1/ALFA =0, TO SHOW SMALL ALFA
			+2
			TFF1/4
 +2		STORE	TFF1/ALF	# 1/ALFA   E:(-22-2NA)   M:(-20-2NA)
DUMPCNIC	RVQ
#                                                                39 W

## Page 1342
# SUBROUTINE NAME:     TFFRP/RA                                           DATE:  01.17.67
# MOD NO:  0                                                              LOG SECTION:    TIME OF FREE FALL
# MOD BY:  RR BAIRNSFATHER
# MOD NO:  1           MOD BY:  RR BAIRNSFATHER      DATE:  11 APR 67
# MOD NO:  2           MOD BY:  RR BAIRNSFATHER      DATE:  21 MAR 68     ACCEPT DIFFERENT EARTH/MOON SCALES
#                                                                         ALSO IMPROVE ACCURACY OF RAPO.
# FUNCTIONAL DESCRIPTION:         USED BY CALCTPER AND TFF DISPLAYS TO CALCULATE PERIGEE RADIUS AND ALSO
#          APOGEE RADIUS FOR A GENERAL CONIC.
#          PROGRAM GIVES PERIGEE RADIUS AS               APOGEE RADIUS IS GIVEN BY
#                 RP = P /(1+E)                                 RA = (1+E) / ALFA
#          WHERE   2
#                 E  = 1 - P ALFA
#          IF RA IS NEGATIVE OR SHOWS DIVIDE OVERFLOW, THEN RA = POSMAX BECAUSE
#                 1. APOGEE RADIUS IS NOT MEANINGFUL FOR HYPERBOLA
#                 2. APOGEE RADIUS IS NOT DEFINED FOR PARABOLA
#                 3. APOGEE RADIUS EXCEEDS THE SCALING FOR ELLIPSE.
#          THIS SUBROUTINE REQUIRES THE SIGNED  RECIPROCAL SEMI MAJ AXIS,  ALFA,  AND SEMI LATUS RECTUM AS DATA.
# CALLING SEQUENCE:  CALL
#                           TFFRP/RA
#          PUSHLOC = PDL+0, ARBITRARY IF LEQ 10D
#          C(MPAC) UNSPECIFIED

# SUBROUTINES CALLED:  NONE
# NORMAL EXIT MODE:    RVQ
#          IF ELLIPSE, WITHIN NORMAL SCALING, RAPO IS CORRECT.
#          OTHERWISE, RAPO = POSMAX.
# ALARMS:  NONE
# OUTPUT:  STORED IN PUSH LIST AREA. SCALE OF OUTPUT AGREES WITH DATA SUPPLIED TO  TFF/CONIC.
#          RPER   E:(-29)  M:(-27)  M     PERIGEE RADIUS                  DESTROYED BY CALCTFF/CALCTPER, TFFTRIG.
#          RAPO   E:(-29)  M:(-27)  M     APOGEE  RADIUS                  WILL BE DESTROYED BY CALCTFF/CALCTPER
#          PUSHLOC AT PDL+0
# ERASABLE INITIALIZATION REQUIRED:
#          TFFALFA E:(26-NR)      M   1/SEMI MAJ AXIS                     LEFT BY TFFCONIC
#                  M:(24-NR)
#          TFFNP  E: (-38+2NR)    M  LC P, SEMI LATUS RECTUM              LEFT BY TFFCONIC
#                 M: (-36+2NR)
#          X1                     -NR, NORM COUNT OF RMAG                 LEFT BY TFFCONIC
#          X2                     -NA, NORM COUNT OF ALFA                 LEFT BY TFFCONIC
# DEBRIS:  QPRET,    PDL+0 ... PDL+1

## Page 1343
#
RAPO		=	16D		# APOGEE RADIUS  M  E:(-29)  M:(-27)
RPER		=	14D		# PERIGEE RADIUS  M  E:(-29)  M:(-27)
#
TFFRP/RA	DLOAD	DMP
			TFFALFA		# ALFA  1/M  E:(26-NR)   M:(24-NR)
			TFFNP		# LC P  M   E:(-38+2NR)   M:(-36+2NR)
		SR*	DCOMP		# ALFA P (-12+NR)
			0 -8D,1		# ALFA P  (-4)
		DAD	ABS		# (DCOMP GIVES VALID TP RESULT FOR SQRT)
#					  (ABS PROTECTS SQRT IF E IS VERY NEAR 0)
			DP2(-4)
		SQRT	DAD		# E SQ = (1- P ALFA)   (-4)
			TFF1/4
		PUSH	BDDV		# (1+E)  (-2)  TO PDL+0
			TFFNP		# LCP  M  E:(-38+2NR)   M:(-36+2NR)
		SR*	SR*		# (DOES SR THEN SL TO AVOID OVFL)
			0,1		# X1=-NR
			0 -7,1		# (EFFECTIVE SL)
		STODL	RPER		# PERIGEE RADIUS  M   E:(-29)   M:(-27)
#					  (1+E)  (-2)   FROM PDL+0
		DMP	BOVB
			TFF1/ALF	# E:(-22-2NA)  M:(-20-2NA)
			TCDANZIG	# CLEAR OVFIND, IF ON.
		BZE	SL*
			MAXRA		# SET POSMAX, IF ALFA=0
			0 -5,2		# -5+NA
		SL*	BOV
			0,2
			MAXRA		# SET POSMAX IF OVFL.
		BPL			# CONTINUE WITH VALID RAPO.
			+3
MAXRA		DLOAD			# RAPO CALC IS NOT VALID. SET RAPO =
			NEARONE		# POSMAX AS A TAG.
 +3		STORE	RAPO		# APOGEE RADIUS  M   E:(-29)   M:(-27)
DUMPRPRA	RVQ

#                                                                 30 W

## Page 1344
# SUBROUTINE NAME:     CALCTPER  /  CALCTFF                               DATE:    01.29.67
# MOD NO:  0                                                              LOG SECTION:    TIME OF FREE FALL
# MOD BY:  RR BAIRNSFATHER
# MOD NO:  1           MOD BY:  RR BAIRNSFATHER	     DATE:  21 MAR 67
# MOD NO:  2           MOD BY:  RR BAIRNSFATHER	     DATE:  14 APR 67
# MOD NO:  3           MOD BY:  RR BAIRNSFATHER	     DATE:  8JUL 67       NEAR EARTH MUE AND NEG TFF (GONEPAST)
# MOD NO:  4           MOD BY:  RR BAIRNSFATHER	     DATE:  21 NOV 67     ADD VARIABLE MU.
# MOD NO:  5           MOD BY:  RR BAIRNSFATHER	     DATE:  21 MAR 68     ACCEPT DIFFERENT EARTH/MOON SCALES
# FUNCTIONAL DESCRIPTION:      PROGRAM CALCULATES THE FREE-FALL TIME OF FLIGHT FROM PRESENT POSITION  RN  AND
#          VELOCITY  VN  TO A RADIUS LENGTH SPECIFIED BY  RTERM  , SUPPLIED BY THE USER. THE POSITION VECTOR
#          RN  MAY BE ON EITHER SIDE OF THE CONIC, BUT  RTERM  IS CONSIDERED ON THE INBOUND SIDE.
#          THE EQUATIONS ARE

#                 Q2 = -SQRT(RTERM (2-RTERM ALFA) - LCP)    (INBOUND SIDE))        LEQ +- LCE/SQRT(ALFA)
#		       -  -
#                 Q1 = RN.VN / SQRT(MU)                                            LEQ +- LCE/SQRT(ALFA)

#                 Z = NUM / DEN                                                    LEQ +- 1/SQRT(ALFA)

#          WHERE, IF INBOUND
#                 NUM = RTERM -RN                                                  LEQ +- 2 LCE/ALFA
#                 DEN = Q2+Q1                                                      LEQ +- 2 LCE/SQRT(ALFA)

#          AND, IF OUTBOUND
#                 NUM = Q2-Q1                                                      LEQ +- 2 LCE/SQRT(ALFA)
#                 DEN = 2 - ALFA (RTERM + RN) .                                    LEQ +- 2 LCE

#          IF 	  ALFA ZZ  <  1.0               (FOR ALL CONICS EXCEPT ELLIPSES HAVING ABS(DEL ECC ANOM) G 90 DEG)

#          THEN   X = ALFA Z Z
#          AND    TFF = (RTERM +RN -2 ZZ T(X) ) Z/SQRT(MU)

#                 EXCEPT IF ALFA PNZ, AND IF TFF NEG,
#                 THEN   TFF = 2 PI /(ALFA SQRT(ALFA)) + TFF

#          OR IF  ALFA ZZ  GEQ  1.0             (FOR ELLIPSES HAVING ABS(DEL ECC ANOM) GEQ 90 DEG)

#          THEN   X = 1/ALFA Z Z
#          AND    TFF = (PI/SQRT(ALFA) -Q2 +Q1 +2(X T(X) -1) /ALFA Z) /ALFA SQRT(MU)

#          WHERE  T(X) IS A POLYNOMIAL APPROXIMATION TO THE SERIES
#                              2      3                     2
#                 1/3 - X/5 + X /7 - X /9 ...             (X   <  1.0)

# CALLING SEQUENCE:  TIME TO RTERM                           TIME TO PERIGEE
#                    CALL                                    CALL
#                           CALCTFF                                 CALCTPER
#                    C(MPAC) = TERMNL RAD  M                 C(MPAC) = PERIGEE RAD  M
#          FOR EITHER,   E: (-29)    M: (-27)
#          FOR EITHER, PUSHLOC = PDL+0 , ARBITRARY IF LEQ 8D.
## Page 1345
# SUBROUTINES CALLED:  T(X),  VIA RTB
# NORMAL EXIT MODE:  RVQ
#          HOWEVER, PROGRAM EXITS WITH ONE OF THE FOLLOWING VALUES FOR TFF (-28) CS IN MPAC. USER MUST STORE.
#                 A.  TFF= FLIGHT TIME. NORMAL CASE FOR POSITIVE FLIGHT TIME LESS THAN ONE ORBITAL PERIOD.
#                 B.  (THIS OPTION IS NO LONGER USED.)
#                 C.  TFF = POSMAX.  THIS INDICATES THAT THE CONIC FROM THE PRESENT POSITION WILL NOT RETURN TO
#                     THE SPECIFIED ALTITUDE.  ALSO INDICATES OUTBOUND PARABOLA OR HYPERBOLA.
# OUTPUT:  C(MPAC)  (-28)  CS     TIME OF FLIGHT, OR TIME TO PERIGEE
#          TFFX    (0)            X,                                      LEFT FOR ENTRY DISPLAY TFF ROUTINES
#          NRTERM  E: (-29+NR)    M  RTERM, WEIGHTED BY NR                LEFT FOR ENTRY DISPLAY TFF ROUTINES
#                  M: (-27+NR)
#          TFFTEM  E: (-59+2NR)   LCP Z Z SGN(SDELF)                      LEFT FOR ENTRY DISPLAY TFF ROUTINES
#                  M: (-55+2NR)   LCP /ALFA SGN(SDELF)                    LEFT FOR ENTRY DISPLAY TFF ROUTINES
#          NOTE:  TFFTEM = PDL 36D AND WILL BE DESTROYED BY .:UNIT:.
#          RMAG1  E:(-29)  M:(-27)  PDL 12 NOT TOUCHED.
#          TFFQ1  E:(-16)  M:(-15)  PDL 14D
#          TFFDELQ E:(-16) M:(-15)  PDL 10D
#          PUSHLOC AT PDL+0
# ERASABLE INITIALIZATION REQUIRED:
#          RONE   E:(-29)  M:(-27)  M    STATE VECTOR                     LEFT BY USER
#          VONE'  E:(+10)  M:(+9)   VN/SQRT(MU)                           LEFT BY TFF/CONIC
#          RMAG1  E:(-29)  M:(-27)  PRESENT RADIUS,  M                    LEFT BY TFFCONIC
#          C(MPAC)E:(-29)  M:(-27)  RTERM, TERMINAL RADIUS LENGTH, M      LEFT BY USER

#          THE FOLLOWING ARE STORED IN THE PUSH LIST AREA.
#          TFF/RTMU  E:(17)  M:(14)  1/SQRT(MU)                           LEFT BY TFFCONIC.
#          NRMAG  E: (-29+NR)  M  RMAG, NORMALIZED                        LEFT BY TFFCONIC
#                 M: (-27+NR)
#          X1                     -NR, NORM COUNT                         LEFT BY TFFCONIC
#          TFFNP  E: (-38+2NR)	M   LCP, SEMI LATUS RECTUM, WEIGHT  NR    LEFT BY TFFCONIC
#                 M: (-36+2NR)
#          TFFALFA  E: (26-NR)    1/M  ALFA, WEIGHT  NR                   LEFT BY TFFCONIC
#                   M: (24-NR)
#          TFFRTALF  E:(10+NA)    SQRT(ALFA), NORMALIZED                  LEFT BY TFFCONIC
#                    M:(9+NA)
#          X2                     -NA, NORM COUNT                         LEFT BY TFFCONIC
#          TFF1/ALF  E: (-22-2NA)  SIGNED SEMIMAJ AXIS, WEIGHTED BY NA    LEFT BY TFFCONIC
#                    M: (-20-2NA)
# DEBRIS:  QPRET,   PDL+0 ... PDL+3
#          RTERM  E:(-29)  M:(-27)  RTERM, TERMINAL RADIUS LENGTH
#          RAPO   E:(-29)  M:(-27)  PDL 16D  (=NRTERM)
#          RPER   E:(-29)  M:(-27)  PDL 14D   (=TFFQ1)

## Page 1346
CALCTPER	SETGO			# ENTER WITH RPER  IN MPAC
			TFFSW
			+3
CALCTFF		CLEAR			# ENTER WITH RTERM IN MPAC
			TFFSW
 +3		STORE	RTERM		# E: (-29)  M: (-27)
		SL*
			0,1		# X1=-NR
		STORE	NRTERM		# RTERM  E: (-29+NR)  M: (-27+NR)
		DMP	BDSU
			TFFALFA		# ALFA  E: (26-NR)  M: (24-NR)
			TFF1/4
		PUSH	DMP		# (2-ALFA RTERM)  (-3)  TO PDL+0
			NRTERM		# E: (-29+NR)  M: (-27+NR)
		PDDL	SR*		# RTERM(2-ALFA RTERM) TO PDL+2
#					  E: (-32+NR)   M: (-30+NR)
			TFFNP		# LC P  E:(-38+2NR)  M:(-36+2NR)
			0 -6,1		# X1 = -NR
		DCOMP	DAD		# DUE TO SHIFTS, KEEP PRECISION FOR SQRT
#					  RTERM(2-ALFA RTERM) FROM PDL +2
#					  E: (-32+NR)  M: (-30+NR)
		SR*			# LEAVE  E: (-32)  M: (-30)
			0,1		# X1 = -NR
		BOFF	DLOAD		# CHECK TFF / TPER SWITCH
			TFFSW
			+2		# IF TFF, CONTINUE
			TFFZEROS	# IF TPER, SET Q2 = 0
 +2		BMN	SQRT		# E: (-16)  M: (-15)

			MAXTFF1		# NO FREE FALL CONIC TO RTERM FROM HERE
#					  RESET PDL, SET TFF=POSMAX, AND EXIT.

		DCOMP	BOVB		# RT IS ON INBOUND SIDE.  ASSURE OVFIND=0
			TCDANZIG	# ANY PORT IN A STORM.
		STOVL	TFFTEM		# Q2   E: (-16)  M: (-15)
			VONE'		# VN/SQRT(MU) E: (10)  M: (9)
		DOT	SL3
			RONE		# SAVED RN.  E: (-29)  M: (-27)
		STORE	TFFQ1		# Q1, SAVE FOR GONEPAST TEST.
#					  E: (-16)  M: (-15)
		BMN	BDSU
			INBOUND		# USE ALTERNATE Z
			TFFTEM		# Q2  E: (-16)  M: (-15)

#                                         OUTBOUND  Z CALC CONTINUES HERE

		STODL	TFFX		# NUM=Q2-Q1  E: (-16)  M: (-15)
			TFFALFA		# ALFA  E: (26-NR)  M: (24-NR)
		DMP	BDSU
## Page 1347
			NRMAG		# RMAG  E: (-29+NR)  M: (-27+NR)
#					  (2-RTERM ALFA)  (-3) FROM PDL+0
SAVEDEN		PUSH	ABS		# DEN TO PDL+0  E:(-3) OR (-16)
#					                M:(-3) OR (-15)
		DAD	BOV		# INDETERMINANCY TEST
			LIM(-22)	# =1.0-B(-22)
			TFFXTEST	# GO IF DEN >/= B(-22)
		DLOAD	PDDL		# SET DEN=0 OTHERWISE
			TFFZEROS
#					  XCH ZERO WITH PDL+0
		DLOAD	DCOMP
			TFFALFA		# ALFA  E: (26-NR)  M: (24-NR)
		BMN	DLOAD		# FOR TPER: Z INDET AT DELE/2=0 AND 90.
			TFFEL1		# ASSUME 90, AND LEAVE 0 IN PDL: 1/Z=D/N

#					  Z INDET. AT PERIGEE FOR PARAB OR HYPERB.
DUMPTFF1	RVQ			# RETURN  TFF =0

#                                         INBOUND  Z  CALC CONTINUES HERE
INBOUND		DLOAD			# RESET PDL+0
		DLOAD	DSU		# ALTERNATE Z CALC
			RTERM		# E: (-29)  M: (-27)
			RMAG1		# E: (-29)  M: (-27)
		STODL	TFFX		# NUM=RTERM-RN  E: (-29)  M: (-27)
			TFFTEM		# Q2  E: (-16)  M: (-15)
		DAD	GOTO
			TFFQ1		# Q1  E: (-16)  M: (-15)
			SAVEDEN		# DEN = Q2+Q1   E: (-16)  M: (-15)

TFFXTEST	DAD	PDDL		#  (ABS(DEN) TO PDL+2))  E: (-3) OR (-16)
#					                         M: (-3) OR (-15)
			DP(-22)		# RESTORE ABS(DEN) TO MPAC
			TFFX		# NUM E:(-16) OR (-29)  M:(-15) OR (-27)
		DMP	SR*
			TFFRTALF	# SQRT(ALFA)  E: (10+NA)  M: (9+NA)
			0 -3,2		# X2=-NA
		DDV			# C(MPAC) =NUM SQRT(ALFA)  E:(-3) OR (-16)
#					                           M:(-3) OR (-15)
#					  ABS(DEN) FROM PDL+2  E:(-3) OR (-16)
#					                       M:(-3) OR (-15)
		DLOAD	BOV		# (THE DLOAD IS SHARED WITH TFFELL)
			TFFX		# NUM  E: (-16) OR (-29)  M:(-15) OR (-27)
			TFFELL		# USE EQN FOR DELE GEQ 90, LEQ -90

#                                         OTHERWISE, CONTINUE FOR GENERAL CONIC FOR TFF EQN

		DDV	STADR
#					  DEN FROM PDL+0   E: (-3) OR (-16)
#					                   M: (-3) OR (-15)
		STORE	TFFTEM		# Z  SAVE FOR SIGN OF SDELF.
## Page 1348
#					  E: (-13)  M: (-12)
		PUSH	DSQ		# Z TO PDL+0
		PUSH	DMP		# Z SQ TO PDL+2  E: (-26)  M: (-24)
			TFFNP		# LC P  E: (-38+2NR)  M: (-36+2NR)
		SL	SIGN
			5
			TFFTEM		# AFFIX SIGN FOR SDELF (ENTRY DISPLAY)
		STODL	TFFTEM		# P ZSQ  E: (-59+2NR)  M: (-55+2NR)
#					  (ARG IS USED IN TFF/TRIG)
#					  ZSQ FROM PDL+2   E: (-26)  M: (-24)
		PUSH	DMP		# RESTORE PUSH LOC
			TFFALFA		# ALFA  E: (26-NR)  M: (24-NR)
		SL*
			0,1		# X1=-NR
		STORE	TFFX		# X
		RTB	DMP
			T(X)		#  POLY
#					  ZSQ FROM PDL+2  E: (-26)  M: (-24)
		SR2	BDSU		# 2 ZSQ T(X)  E: (-29)  M: (-27)
			RTERM		# RTERM  E: (-29)  M: (-27)
		DAD	DMP
			RMAG1		# E: (-29)  M: (-27)
#					  Z FROM PDL+0  E: (-13)  M: (-12)
		SR3	BPL		# TFF SQRT(MU)   E: (-45)  M: (-42)
			ENDTFF		# (NO PUSH UP)
		PUSH	SIGN		# TFF SQRT(MU) TO PDL+0
			TFFQ1		# Q1 FOR GONEPAST TEST
		BPL	DLOAD		# GONE PAST ?
			NEGTFF		# YES. TFF < 0 .
			TFF1/ALF	# 1/ALFA  E: (-22-2NA)  M: (-20-2NA)
		DCOMP	BPL		# ALFA > 0 ?
			NEGTFF		# NO. TFF IS NEGATIVE.

#                                         CORRECT FOR ORBITAL PERIOD.

		DCOMP			# YES. CORRECT FOR ORB PERIOD.
		DMP	DDV
			PI/16		# 2 PI (-5)
			TFFRTALF	# SQRT(ALFA)  E: (10+NA)  M: (9+NA)
		SL*	SL*
			0 -4,2		# X2=-NA
			0 -4,2
		SL*	DAD
			0,2
#					  TFF SQRT(MU) FROM PDL+0  E:(-45) M:(-42)
ENDTFF		DMP	BOV		# TFF SQRT(MU) IN MPAC     E:(-45) M:(-42)
			TFF/RTMU	# E: (17)  M: (14)
			MAXTFF		# SET POSMAX IF OVFL.

DUMPTFF2	RVQ			# RETURN  TFF   (-28) CS IN MPAC.
## Page 1349
NEGTFF		DLOAD
#					  TFF SQRT(MU)  FROM PDL+0, NEGATIVE.
		GOTO
			ENDTFF

MAXTFF1		DLOAD			# RESET PDL
MAXTFF		DLOAD	RVQ
			NEARONE

# TIME OF FLIGHT ELLIPSE WHEN DEL (ECCENTRIC ANOM) GEQ 90 AND LEQ -90.

#					  NUM FROM TFFX.  E: (-16) OR (-29)
#					                  M: (-15) OR (-27)
TFFELL		SL2			# NUM  E:(-14) OR (-27)  M:(-13) OR (-25)
		BDDV	PUSH		# TEMP SAVE D/N IN PDL+0
#					  DEN FROM PDL+0 E:(-3)/( 16) M:(-3)/(-15)
#					  N/D TO PDL+0  E: (11)  M: (10)
TFFEL1		DLOAD	DSU		# (ENTER WITH D/N=0 IN PDL+0)
			TFFTEM		# Q2  E: (-16)  M: (-15)
			TFFQ1		# Q1  E: (-16)  M: (-15)
		STODL	TFFDELQ		# Q2-Q1  E: (-16)  M: (-15)
#					  D/N FROM PDL+0
		STADR
		STORE	TFFTEM		# D/N  E: (11)  M: (10)
		DMP	SL*
			TFF1/ALF	# 1/ALFA E: (-22-2NA)  M: (-20-2NA)
			0,2		# 1/ALFA Z  E: (-11-NA)  M: (-10-NA)
		PUSH	DMP		# TO PDL+0
			TFFTEM		# 1/Z  E: (11)  M: (10)
		SL*	BOVB
			0,2		# X2= -NA
			SIGNMPAC	# IN CASE X= 1.0, CONTINUE
		STORE	TFFX		# X=1/ALFA ZSQ
		RTB	DMP
			T(X)		# POLY
			TFFX
		SR3	DSU
			DP2(-3)
		DMP	PUSH		# 2(X T(X)-1) /Z ALFA  E: (-15-NA)
#					                       M: (-14-NA)
#					  1/ALFA Z FROM PDL+0  E: (-11-NA)
#					                       M: (-10-NA)
		DLOAD	DMP		# GET SIGN FOR SDELF
			TFFTEM		# 1/Z  E: (11)  M: (10)
			RMAG1		# E: (-29)  M: (-27)
		SL2	DAD
			TFFQ1		# Q1  E: (-16)  M: (-15)
		STODL	TFFTEM		# (Q1+R 1/Z)  =SGN OF SDELF E:(-16) M:(-15
			TFFNP		# LC P E: (-38+2NR) M: (-36+2NR)
		DMP	SL*		# CALC FOR ARG FOR TFF/TRIG.
## Page 1350
			TFF1/ALF	# 1/ALFA   E:(-22-2NA)  M:(-20-2NA)
			1,2		# X2=-NA
		SIGN	SL*
			TFFTEM		# AFFIX SIGN FOR SDELF
			0,2
		STODL	TFFTEM		# P/ALFA  E:(-59+2NR)  M:(-55+2NR)
#					  (ARG FOR USE IN TFF/TRIG)
			TFF1/ALF	# 1/ALFA E:(-22-2NA)  M:(-20-2NA)
		SQRT	DMP
			PI/16		# PI (-4)
		DAD
#					  2(XT(X)-1)/Z ALFA FROM PDL E:(-15-NA)
#					                             M:(-14-NA)
		SL*	DSU
			0 -1,2
			TFFDELQ		# Q2-Q1  E: (-16)  M: (-15)
		DMP	SL*
			TFF1/ALF	# 1/ALFA  E:(-22-2NA)  M:(-20-2NA)
			0 -3,2
		SL*	GOTO
			0 -4,2
			ENDTFF		# TFF SQRT(MU) IN MPAC E:(-45) M:(-42)

## Page 1351
# PROGRAM NAME:      T(X)                                                 DATE:    01.17.67
# MOD NO:  0                                                              LOG SECTION:    TIME OF FREE FALL
# MOD BY:  RR BAIRNSFATHER
# FUNCTIONAL DESCRIPTION:      THE POLYNOMIAL T(X) IS USED BY TIME OF FLIGHT SUBROUTINES  CALCTFF AND
#          CALCTPER TO APPROXIMATE THE SERIES
#                            2     3
#                 1/3 -X/5 +X /7 -X /9 ...

#          WHERE  X = ALFA Z Z       IF ALFA Z Z  LEQ 1
#                 X = 1/(ALFA Z Z )  IF ALFA Z Z   G  1

#          ALSO   X IS NEG FOR HYPERBOLIC ORBITS
#                 X = 0 FOR PARABOLIC ORBITS
#                 X IS POSITIVE FOR ELLIPTIC ORBITS
#          FOR FLIGHT 278, THE POLYNOMIAL  T(X) IS FITTED OVER THE RANGE  (0,+1)  AND HAS A MAXIMUM
#          DEVIATION FROM THE SERIES OF  2 E-5       (T(X) IS A CHEBYCHEV  TYPE FIT AND WAS OBTAINED USING
#          MAC PROGRAM AUTCURFIT294RRB  AND IS VALID TO THE SAME TOLERANCE OVER THE RANGE  (-.08,+1). )
# CALLING SEQUENCE:  RTB
#                           T(X)
#          C(MPAC) = X

# SUBROUTINES CALLED:  NONE
# NORMAL EXIT MODE:    TC   DANZIG
# ALARMS:  NONE
# OUTPUT:  C(MPAC) = T(X)
# ERASABLE INITIALIZATION REQUIRED:
#          C(MPAC)  =  X
# DEBRIS:  NONE

T(X)		TC	POLY
		DEC	4		# N-1
		2DEC	3.333333333 E-1
		2DEC*	-1.999819135 E-1*
		2DEC*	1.418148467  E-1*
		2DEC* 	-1.01310997  E-1*
		2DEC*	5.609004986  E-2*
		2DEC*	-1.536156925 E-2*
ENDT(X)		TC	DANZIG

TCDANZIG	=	ENDT(X)

## Page 1352
# TFF CONSTANTS
		BANK	32

		SETLOC	TOF-FF1
		BANK

#                                                              NOTE _  NOTE _ ADJUSTED MUE FOR NEAR EARTH TRAJ.

# MUE		=	3.990 815 471 E10  M CUBE/CS SQ
# RTMUE		=	1.997702549 E5 B-18*     MODIFIED EARTH MU

1/RTMU		2DEC*	.5005750271 E-5 B17*   # MODIFIED EARTH MU
#                                                              NOTE _  NOTE _ ADJUSTED MUE FOR NEAR EARTH TRAJ.

# MUM		=	4.902 778  E8     M CUBE /CS SQ

# RTMUM		2DEC*	2.21422176 E4 B-18*
PI/16		2DEC	3.141592653 B-4
LIM(-22)	2OCT	37777 37700	# 1.0 -B(-22)
DP(-22)		2OCT	00000 00100	# B(-22)
DP2(-3)		2DEC	1  B-3
DP2(-4)		2DEC	1 B-4		# 1/16
# RPAD1    2DEC   6373338 B-29    M  (-29)  =20 909 901.57 FT

RPAD1		=	RPAD
R300K		2DEC	6464778 B-29	#  (-29) M
NEARONE		2DEC	.999999999
TFFZEROS	EQUALS	HI6ZEROS
TFF1/4		EQUALS	HIDP1/4
back to top