swh:1:snp:92f3f585b9ae79620ad8c41a332d6329b31fd381
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
Q,R-AXES_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
### FILE="Main.annotation"
## Copyright:	Public domain.
## Filename:	Q_R-AXES_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
## Purpose:	A module for revision 0 of BURST120 (Sunburst). It 
##		is part of the source code for the Lunar Module's
##		(LM) Apollo Guidance Computer (AGC) for Apollo 5.
## Assembler:	yaYUL
## Contact:	Ron Burkey <info@sandroid.org>.
## Website:	www.ibiblio.org/apollo/index.html
## Mod history:	2016-09-30 RSB	Created draft version.
##		2016-10-30 RSB	Transcribed through page 537.
##		2016-10-31 RSB	Transcribed.  Boo!
##		2016-10-31 RSB	Typos.
##		2016-11-01 RSB	More typos.
##		2016-11-02 RSB	More typos.
##		2016-12-05 RSB	Comment-proofing with octopus/ProoferComments
##				completed, changes made.
##		2021-05-30 ABS	Added missing EBANK= statement.
##				NETAPOSB -> NEGAPOSB

## Page 519
                BANK            17
# THE FOLLOWING T5RUPT ENTRY BEGINS THE PROGRAM WHICH CONTROLS THE Q,R-AXIS ACTION OF THE LEM USING THE RCS JETS.
# THE NOMINAL TIME BETWEEN THE Q,R-AXIS RUPTS IS 100 MS (UNLESS THE TRIM GIMBAL CONTROL SYSTEM IS USED, IN WHICH
# CASE THIS PROGRAM IS IDLE).

                EBANK=          DT
NULLFILT        2CADR           FILDUMMY
                EBANK=          DT

QRAXIS          CAF             MS20QR                  # RESET TIMER IMMEDIATELY - DT = 20 MS
                TS              TIME5

                LXCH            BANKRUPT                # INTERRUPT LEAD IN (CONTINUED)
                EXTEND
                QXCH            QRUPT

# SET UP A DUMMY KALMAN FILTER T5RUPT.  (THIS MAY BE RESET TO THE KALMAN FILTER INITIALIZATION PASS, IF THE TRIM
# GIMBAL CONTROL SYSTEM SHOULD BE USED.)

                EXTEND
                DCA             NULLFILT

# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
## In the original printout, the following line actually ended with a 1/2 symbol (&frac12;)
## rather than a question mark.
INSERT17	TCF		TRMCHECK		# ARE EXTRAORDINARY GTS ENTRIES NEEDED?
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************

# CALCULATE LEM BODY RATES FOR Q AND R AXES:

# THIS COMPUTATION IS VALID FOR BOTH ASCENT AND DESCENT SINCE THE OFFSET ACCELERATION TERM IS INCLUDED ALWAYS,
# BUT HAS VALUE ZERO IN DESCENT, AND SINCE THE WEIGHTING FACTORS ARE IN ERASABLE AND DISTINCT.

# FIRST, CONSTRUCT Y AND Z CDU INCREMENTS:

BODYRATE        CAE             CDUY                    # 2:S COMPLEMENT MEASUREMENT SCALED AT PI.
                TS              L                       # (SAVE FOR UPDATING OF OLDYFORQ)
                EXTEND                                  # FORM INCREMENT IN CDUY FOR LAST 100 MS
                MSU             OLDYFORQ                # (100 MS OLD CDUY SAVED FROM LAST PASS)
                LXCH            OLDYFORQ                # UPDATE OLDYFORQ WITH NEW CDUY VALUE
                TS		ITEMP1			# SAVE 1:S COMPLEMENT VALUE TEMPORARILY
                CAE             CDUZ                    # 2'S COMPLEMENT MEASUREMENT SCALED AT PI
                TS              L                       # (SAVE FOR UPDATING OF OLDZFORQ)
                EXTEND                                  # FORM INCREMENT IN CDUZ FOR LAST 100 MS
                MSU             OLDZFORQ                # (100 MS OLD CDUZ SAVED FROM LAST PASS)
                LXCH            OLDZFORQ                # UPDATE OLDZFORQ WITH NEW CDUZ VALUE
                TS	        ITEMP2                  # SAVE 1'S COMPLEMENT VALUE TEMPORARILY

## Page 520
# SECOND, TRANSFORM CPU INCREMENTS TO BODY-ANGLE INCREMENTS:

                CAE             M31                     # MATRIX*VECTOR(WITH x COMPONENT ZERO)
                EXTEND
                MP              ITEMP1                  # M31 * ITEMP1 = M31 * DELTA CDUY
                DXCH            ITEMP4
                CAE             M32                     # M32 * ITEMP2 = M32 * DELTA CDUZ
                EXTEND
                MP              ITEMP2                  # DELTAR = M31*(DEL CDUY) + M32*(DEL CDUZ)
                DAS             ITEMP4                  # DOUBLE PRECISION R BODY ANGLE INCREMENT

		CAF		BIT9
		TS		Q
		EXTEND
		DCA		ITEMP4
		EXTEND
		DV		Q			# RESCALE TO PI/64 AND
		TS		ITEMP4			# STORE AS SINGLE PRECISION
                CAE             M21                     # MATRIX*VECTOR(WITH X COMPONENT ZERO)
                EXTEND                                  # CLOBBERS ITEMP2=DEL CDUZ, FOR EFFICIENCY
                MP              ITEMP1                  # M21 * ITEMP1 = M21 * DELTA CDUY
                DXCH            ITEMP2                  # M22 * ITEMP2 = M22 * DELTA CDUZ
                EXTEND
                MP              M22                     # DELTAQ = M21*(DEL CDUY) + M22*(DEL CDUZ)
                DAS             ITEMP2                  # DOUBLE PRECISION Q-BODY-ANGLE INCREMENT
                EXTEND
                DCA		ITEMP2
                EXTEND
                DV		Q			# RESCALE TO PI/64
# FINALLY, DERIVE Q AND R BODY ANGULAR RATES:

                EXTEND                                  # WFORQR IS K/(NOMINAL DT) SCALED AT 16
                MP              WFORQR                  # FORM WEIGHTED VALUE OF MEASURED DATA
                XCH             OMEGAQ                  # SAVE AND BEGIN TO WEIGHT VALUE OF OLD W
                EXTEND                                  # (1-K) IS SCALED AT 1 FOR EFFICIENT CALC
                MP              (1-K)                   # (K CHANGES EVERY 2 SECONDS IN ASCENT.)
                AD              JETRATEQ                # WEIGHTED TERM DUE TO JET ACCELERATION
                AD              AOSQTERM                # TERM DUE TO ASCENT OFFSET ACCELERATION
                ADS             OMEGAQ                  # TOTAL RATE ESTIMATE SCALED AT PI/4

                CAE             ITEMP4                  # GET DELTAR
                EXTEND                                  # WFORQR IS K/(NOMINAL DT) SCALED AT 16
                MP              WFORQR                  # FORM WEIGHTED VALUE OF MEASURED DATA
                XCH             OMEGAR                  # SAVE AND BEGIN TO WEIGHT VALUE OF OLD W
                EXTEND                                  # (1-K) IS SCALED AT 1 FOR EFFICIENT CALC
                MP              (1-K)                   # (K CHANGES EVERY 2 SECONDS IN ASCENT.)
                AD              JETRATER                # WEIGHTED TERM DUE TO JET ACCELERATION
                AD              AOSRTERM                # TERM DUE TO ASCENT OFFSET ACCELERATION
                ADS             OMEGAR                  # TOTAL RATE ESTIMATE SCALED AT PI/4

## Page 521
                TC              QJUMPADR
SKIPQRAX        CA              NORMQADR
                TS              QJUMPADR		# DO NOT JUMP NEXT TIME.
                TCF		CHKGIMBL		# CHKGIMBL ATTEMPTS TO USE GTS.
                
NORMQADR	GENADR		NORMALQ
NORMALQ		TCF		ATTSTEER		# NO RHC INPUTS ON 206.

# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************

TRMCHECK	DXCH		T5ADR			# SET UP NEXT T5RUPT ADDRESS.

# CHECK IF TRIMCNTR HAS BEEN COUNTED DOWN TO ZERO, INDICATING THAT 20.0 SECONDS HAVE PASSED SINCE DPS ON AND
# CONTROL SHOULD BE TRANSFERRED TO GTS.  THEN SEE IF A RECENT ENGINE-ON REQUIRES AN EARLY GTS ENTRY.
## In the original printout, the following line actually ended with a 1/2 symbol (&frac12;)
## rather than a question mark.
		CCS		TRIMCNTR		# IS GTS NEEDED PRIOR TO THROTTLE-UP?
		TCF		CHKMNITR		#   NOT YET, BUT CHECK IF FIRST GTS DONE.
		TC		CCSHOLE			#   ILLEGAL VALUE OF TRIMCNTR.
		TCF		INSERT17	+1	#   NOT ACTIVE, RETURN TO RCS CONTROL.
## In the original printout, the following line actually ended with a 1/2 symbol (&frac12;)
## rather than a question mark.
OKAYGTS		CAF		USEQRJTS		#   YES, IS GIMBAL SYSTEM USABLE?
		MASK		DAPBOOLS
		EXTEND
		BZF		GOGIMBAL		# USABLE.  GO TO GTS.
		TCF		INSERT17	+1	# NOT USABLE.  GO ON WITH RCS CONTROL.
		
## In the original printout, the following line actually ended with a 1/2 symbol (&frac12;)
## rather than a question mark.
CHKMNITR	CCS		GTSMNITR		# IS AN IMMEDIATE (FIRST) GTS CALLED FOR?
		TCF		OKAYGTS			#   YES, CHECK IF GIMBAL SYSTEM USABLE.
		TCF		INSERT17	+1	#   NO, RETURN TO RCS CONTROL.
GOGIMBAL	CS		THREE			# RESET TIME5 COUNTER FROM 20 TO 50 MSEC.
		ADS		TIME5
		
		CS		BGIM24			# TURN OFF GIMBALS FOR BETTER FILTERING.
		EXTEND
		WAND		12
		
		CS		BIT1			# DEACTIVATE GIMBAL DRIVE TIMERS
		TS		QGIMTIMR
		TS		RGIMTIMR
		
		CAF		ZERO
		EXTEND
		WRITE		5			# TURN OFF ALL Q,R AXIS JETS.
		
		EXTEND
		DCA		ADRGOGTS
		DTCB
		EBANK=		DT
ADRGOGTS	2CADR		GOTOGTS		+2	# TIME5 COUNTER WAS ALREADY ADVANCED.

# *** THE FOLLOWING NEW CODING IS NOT BEING USED   ***
## Page 522
# LEFT IN PLACE AS FILLER)))MAY BE WRITTEN OVER
	
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		TC		CCSHOLE			# FILLER
		EBANK=		NEGUR
RGIMADR		2CADR		OFFGIMR

GETCNTR		CAE		FORCETRM		# LOAD TRIMCNTR TO FORCE TRIM JUST BEFORE
		TS		TRIMCNTR		# THE THROTTLE-UP.
		CAF		BIT1			# ENABLE MONITOR TO CALL GTS AS SOON AS
		TS		GTSMNITR		# POSSIBLE.
		
		CAE		SIMPINIT		# INITIALIZE SIMPCNTR. DECISECONDS.
		TS		SIMPCNTR
		
		EXTEND					# RETURN TO ORIGINAL CODING
		DCA		INSRTADR
		DTCB
		
		TC		CCSHOLE			# THIS IS A FILLER
		EBANK=		PERROR
INSRTADR	2CADR		INSERT20	+1

17INSRT		CS		/TEMP1/			# COMPARE Q WITH THE GENADR OF SWRETURN
		AD		SWRETADR		# TO SEE IF ENGINOFF WAS CALLED VIA
		EXTEND					# BANKCALL OR IBNKCALL.
		BZF		17INSRTB		# *BANKCALL - DO NOT DELAY*
		
		EXTEND					# *IBNKCALL - CHECK FURTHER*
		READ		30
		COM					# SEE IF ENGINE IN QUESTION IS APS OR DPS.
		MASK		BIT2
		EXTEND
		BZF		17INSRTB		# *DPS ENGINE - DO NOT DELAY*
		
		CS		MODREG			# *APS ENGINE - CHECK FURTHER*
		AD		MP3MMODE
		EXTEND					# SEE IF THIS IS THE MP 3 SHORT APS BURN.
		BZF		17INSRTB		# *IT IS - DO NOT DELAY*
		
		CS		DVMNEXIT		# *IT IS NOT - CHECK FOR A FORGET2 ENTRY*
		AD		KILLAVEG
		EXTEND
## Page 523
		BZF		17INSRTD		# GENADRS MATCH - CHECK THE BBCONS.
		
17INSRTE	EXTEND
		DCS		/TEMP3/
		DXCH		RUPTREG3		# PUT MINUS (ENGINEON TIME) IN RUPTREGS
		DXCH		/TEMP5/			# AND SAVE FORMER CONTENTS FOR ISWRETRN.
		
		EXTEND					# BLEND IN THE CURRENT TIME.
		DCA		TIME2
		DAS		RUPTREG3
		
		CAF		HALF			# FORCE SIGN AGREEMENT.
		DOUBLE
		AD		RUPTREG4
		TS		RUPTREG4
		CAF		ZERO
		AD		NEGONE
		ADS		RUPTREG3
		
		CA		RUPTREG3		# SEE IF BURN HAS BEEN LONGER THAN
		EXTEND					# 163.84 SECONDS.
		BZF		17INSRTC		# *LESS THAN 163.84 SECONDS*
		
17INSRTA	EXTEND					# *MORE THAN 163.84 SECONDS*
		DCA		/TEMP5/
		DXCH		RUPTREG3		# RESTORE RUPTREGS FOR ISWRETRN.

17INSRTF	CAF		NEGMAX			# SET TMINAPS NEGATIVE TO INACTIVATE
		TS		TMINAPS			# THE ENGINOFF DELAY LOGIC
		
17INSRTB	CA		/TEMP2/			# RESTORE CALLERS EBANK.
		TS		EBANK
		TC		POSTJUMP		# RETURN TO THE ENGINOFF SEQUENCE.
		CADR		ENGINOFF	+1
		
17INSRTC	CS		RUPTREG4		# CHECK LENGTH OF BURN AGAINST TMINAPS.
		AD		TMINAPS
		EXTEND
		BZMF		17INSRTA		# BURN IS LONG ENOUTH - DO THE ENGINOFF.
		
		TC		WAITLIST		# SUSPEND CURRENT MISSION PHASE AND SET
		EBANK=		TMINAPS			# WAITLIST FOR RESUMPTION AT THE PROPER
		2CADR		17INSRTA		# TIME.
		
		TC		TASKOVER
		
17INSRTD	CS		DVMNEXIT	+1
		AD		KILLAVEG	+1
		EXTEND
		BZF		17INSRTF		# BBCONS MATCH - DO NOT DELAY
## Page 524
		TCF		17INSRTE
		
SWRETADR	GENADR		SWRETURN

MP3MMODE	OCT		00071			# MAJOR MODE OF MISSION PHASE 3.

		EBANK=		LST1
KILLAVEG	2CADR		AVEGKILL

# FOLLOWING CODING LEFT IN PLACE TO KEEP ADDRESSES CONSTANT.

# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************

NOQJETS         TC		CCSHOLE			# LABEL PREVENTS ASSEMBLER CUSSES.
                TCF             XTRANS
                TCF             R-,CHKDB
                TCF             XTRANS

NEGQEROR        AD              -RATEDB
                EXTEND
                BZMF            NOQJETS

                CCS             RRATEDIF
                TCF             R+Q-CHKR
                TCF             Q-NORJTS
                TCF             R-Q-CHKR

Q-NORJTS        CS              QRATEDIF
                TS              RATEDIF
                AD              -2JETLIM
                EXTEND
                BZMF            2JETS+Q
                TCF             4JETS+Q

R+Q-CHKR        AD              -RATEDB
                EXTEND
                BZMF            Q-NORJTS
                TC              EDOTVGEN
                TCF             2-V.RATE

R-Q-CHKR        AD              -RATEDB
                EXTEND
                BZMF            Q-NORJTS
                TC              EDOTUGEN
                EXTEND
                SU              RRATEDIF
                TCF             2+U.RATE

POSQEROR        AD              -RATEDB
                EXTEND
## Page 525
                BZMF            NOQJETS

                CCS             RRATEDIF
                TCF             R+Q+CHKR
                TCF             Q+NORJTS
                TCF             R-Q+CHKR

Q+NORJTS        CA              QRATEDIF
                TS              RATEDIF
                AD              -2JETLIM
                EXTEND
                BZMF            2JETS-Q
                TCF             4JETS-Q

R+Q+CHKR        AD              -RATEDB
                EXTEND
                BZMF            Q+NORJTS
                TC              EDOTUGEN
                TCF             2-U.RATE

R-Q+CHKR        AD              -RATEDB
                EXTEND
                BZMF            Q+NORJTS
                TC              EDOTVGEN
                TCF             2+V.RATE

R+,CHKDB        AD              -RATEDB
                EXTEND
                BZMF            XTRANS
                CA              RRATEDIF
                TS              RATEDIF
                AD              -2JETLIM
                EXTEND
                BZMF            2JETS-R
                TCF             4JETS-R

R-,CHKDB        AD              -RATEDB
                EXTEND
                BZMF            XTRANS
                CS              RRATEDIF
                TS              RATEDIF
                AD              -2JETLIM
                EXTEND
                BZMF            2JETS+R
                TCF             4JETS+R

RTJETIME        CCS             RATEDIF                 # SCALED AT PI/4 RADIANS/SECOND
                AD              ONE
                TCF             +2
                AD              ONE                     # ABS(RATEDIF)
## Page 526
                EXTEND
                MP              1/NJETAC                # SCALED AT 2(8)/PI SECOND(2)/RADIANS
                EXTEND
                MP              BIT4                    # SCALED AT 2(3) SECONDS
                CAE             L
                EXTEND
                MP              25/32.QR                # TJET NOW PROPERLY SCALED IN A
                TS              TQR                     # AT 2(4)16/25 SECONDS
                TCF             MNIMPTST


## Page 527
# DAP SECTION: XTRANS            MOD. NO. 3  DATE: JANUARY 6, 1967.

# AUTHOR: JOHN S. BLISS (ADAMS ASSOCIATES)

# MODIFICATION BY: JONATHAN D. ADDELSTON (ADAMS ASSOCIATES)

# X-AXIS TRANSLATION LOGIC (IN THE ABSENSE OF Q,R-AXIS ROTATION) IS INITIATED IN THE "XTRANS" SECTION.

# XTRANS FIRST SETS ADDTLT6 AND ADDT6JTS TO ZERO FOR USE BY "JTLST" AND "T6JOB" WHEN THEY ARE CALLED.  IT THEN
# CHECKS FOR PLUS OR MINUS X TRANSLATION REQUESTS FROM THE ASTRONAUT'S STICK.  IF NONE IS REQUESTED IN THAT WAY,
# THE ULLAGE BIT OF DAPBOOLS IS CHECKED.  (NOTE THAT THE ORDER OF THE TESTS ALLOWS THE ASTRONAUT TO OVERRIDE THE
# INTERNAL ULLAGE REQUEST.)  IF NO TRANSLATION IS REQUESTED, ALL Q,R-AXIS JETS ARE TURNED OFF AND THE INTERRUPT
# IS TERMINATED.

# CALLING SEQUENCE: NONE          SUBROUTINES CALLED: WRITEQR

# NORMAL EXIT: 1.  IF NO TRANSLATION, RESUME.
#	       2.  IF TRANSLATION OR ULLAGE, +/-XTRAN

# ALARM/ABORT MODE: NONE.

# INPUT:  ULLAGER/DAPBOOLS,BITS7,8/CHANNEL 31.

# OUTPUT: C(ANYTRANS) = NEGMAX FOR +X TRANSLATION.
#	  C(ANYTRANS) = POSMAX FOR -X TRANSLATION.
#	  C(TRANSNOW) = C(TRANSAVE) = +0.
#	  C(TRANONLY) = PNZ
# C(ADDTLT6), C(ADDT6JTS), C(TQR), C(TOFJTCHG) = 0.

#         C(CHANNEL 5) = 0 IF NO X-TRANSLATION REQUESTED

# DEBRIS: A, L, Q


XTRANS          CAF             ZERO			# PICK UP ZERO AND INITIALIZE
                TS              ADDTLT6
                TS              ADDT6JTS
                TS		TOFJTCHG
                TS		TQR			# A ZERO OF JET TIME FOR THE TORQUE VECTOR
                
                CAF		BIT7			# IS PLUS X TRANSLATION DESIRED
                EXTEND
                RAND		31			# CHANNEL 31 BITS INVERTED
                EXTEND
                BZF		+XORULGE		# YES, +X
                
                CAF		BIT8			# NO, IS MINUS X TRANSLATION DESIRED
                EXTEND
                RAND		31			# CHANNEL 31 BITS INVERTED
## Page 528
		EXTEND
		BZF		-XTRANS			# YES, -X
		
		CAF		BIT6			# NO, IS ULLAGE(+X TRANSLATION) DESIRED
		MASK		DAPBOOLS
		CCS		A
		TCF		+XORULGE		# YES, ULLAGE
		
		CAF		ZERO			# SINCE NEITHER ROTATION NOR TRANSLATION
		TC		WRITEQR			# ARE NEEDED, TURN OFF ALL Q,R-AXES JETS.
		TCF		RESUME
		
+XORULGE	CAF		NEGMAX			# PLUS TRANSLATION OR ULLAGE DESIRED:
		TCF		+2			# LOAD NEGMAX IN A AND SKIP NEXT OPCODE TO
		
-XTRANS         CAF		POSMAX			# -X TRANSLATION DESIRED, A = POSMAX, AND
		TS		ANYTRANS		# LOAD ANYTRANS WITH A(NEG/POS MAX)
		
		CAF		ZERO			# INITIALIZE TRANSNOW AND TRANSAVE WITH
		TS		TRANSNOW		# ZERO FOR USE IN THE JET POLICY SELECTION
		TS		TRANSAVE		# PROGRAM.
		
		EXTEND					# SET UP 2CADR FOR TRANSFER TO +/-XTRAN.
		DCA		JTPOLADR	
		TS		TRANONLY		# STORE POSITIVE, NON-ZERO S-REGISTER IN
		DTCB					# TRANONLY.  AFTER +/-XTRAN, GO TO JTLST.
		
		EBANK=		JTSONNOW
JTPOLADR	2CADR		+/-XTRAN		# TRANSLATION ONLY ENTRY TO JET POLICY


## Page 529
# ALL Q,R AXES TQR COMPUTATIONS TERMINATE IN THIS PROGRAM WHICH PERFORMS A SERIES OF TESTS TO DETERMINE THE TRUE
#   TIME THE JETS SHOULD BE ON. THESE TESTS ARE AS FOLLOWS ...

#      1.  TEST THE ON TIME AGAINST THE 7.5 MS  ELECTRICAL COMMAND (MIN).IF THE ON TIME IS LESS THAN THE MINIMUM
#          WE BUG OUT TO XTRAN,WHERE X TRANSLATION IS DONE(IF NEEDED).

#      2.  TEST THE ON TIME AGAINST 150 MS, IF TQR IS GREATER THAN 150MS ,THEN THE NEXT QR AXIS IS DONE IN 100 MS.
#          IF TQR IS LESS THAN 150 MS, THEN THE NEXT QR AXIS IS DONE IN 200 MS. THAT IS A QR AXIS SKIP IS DONE.

#      3.  WHEN TQR IS LESS THAN 150 MS  THE PROGRAM GOES TO THE JET LIST PROGRAM WHERE THE T6 CLOCK IS SET UP.

#      4.  BEFORE GOING TO THE JET LIST THE COMPUTED TIME HAS EITHER 7.5 MS  ADDED OR 5MS  SUBTRACTED-THE EXACT
#	   OPERATION BEING DECIDED BY WHETHER THE JETS WHICH ARE TO GO ON ARE OFF OR ARE ON RESPECTIVELY.

#      5.  IF SOME OF THE JETS WHICH ARE TO GO ON ARE NOW ON AND SOME ARE OFF, THEN A ******* COMPUTATION CALLED
#	   NOTRANS DECIDES WHICH JETS GO OFF AT TQR AND WHICH GO OFF AT TQR+6.5MS. THIS 6.5 MS. IS STORED IN
#	   ADDTLT6. ADDTLT6 IS SET TO ZERO OTHERWISE.

NORMRETN	TS		TQR


MNIMPTST	CS		TQR			# TEST FOR TQR GREATER THAN MIN. IMPULSE.
		AD		+T6TJMIN
		EXTEND					#   CORRECT BRANCH.
		BZMF		TQRGTTMI		# BRANCH FOR TQR = OR GREATER THAN MINIMP.
		TCF		XTRANS			# SEE IF TRANSLATION IS DESIRED .
TQRGTTMI	CAE		TQR			# HERE JETS ON FOR LONGER THAN GRUMANN
		TS		TOFJTCHG		# MINIMUM IMPULSE SPECIFICATIONS.
		AD		-1.5CSP
		EXTEND
		BZMF		DOQRSKIP
		CAE		JTSONNOW
		TC		WRITEQR
		TCF		RESUME
		
SKIPQRAD	GENADR		SKIPQRAX
# CHANGE JET ON AND OFF BITS TO ACCOUNT FOR THE PRESENT STATE OF THE
#   CHANNEL. THE CHANGES ACCOUNT FOR PURE ROTATION ONLY- NOT TRANSLATION.
DOQRSKIP	CA		JTSONNOW
		EXTEND
		RAND		5			# MASK THE CHANNEL WITH THE DESIRED STATE.
FROMROOT	EXTEND					# ENTER HERE FROM DORUTDUM (IN K.E. BANK)
		BZF		NOQRON			# A IS ZERO IF NO JETS TO GO ON ARE ON.
		AD		BIT15			# MAKE DIFFERENCE CORRESPOND TO A QR JET.
		EXTEND
		SU		JTSONNOW		# RESULT IS COMPLEMENT OF JET BITS WHICH
		TS		L			#   ARE TO BE ON FOR 6.5MS MORE THAN CALC.
		EXTEND
		BZF		JTSAREON		# A=0,THUS ALL JETS TO GO ON ARE NOW ON.
## Page 530
TRSLTMN2        CAE             JTSATCHG
                MASK            POSMAX                  # REMOVE BIT15 FROM JTSATCHG.
                EXTEND
                BZF             NOTRANS                 # IF JTSATCHG = 0 THEN NO TRANSLATION NOW.
                CA              14-TQRMN
                ADS             TOFJTCHG                # INSURE T GREATER THAN 14 MS.
                TCF             TOJTLST
NOTRANS         CS              L
                AD              BIT15                   # MAKE JET BITS CORRESPOND TO QR AXIS.
                XCH             JTSATCHG                # JTSONNOW - L = JETS ON AT TOFJTCHG.
                TS              ADDT6JTS                # JTS ON AT TOFJTCHG +ONDELAY.
                CA              14-TQRMN
                TS              ADDTLT6
                TCF             TOJTLST
NOQRON          CA              14-TQRMN
                ADS             TOFJTCHG
                TCF             TOJTLST		-2
JTSAREON        CAE		JTSATCHG
		MASK		POSMAX
		EXTEND
		BZF		+2
		TCF		TOJTLST 	-2
		CAF             MCOMPTQR
                ADS             TOFJTCHG
                EXTEND					# TEST FOR COMPUTATION OF NEGATIVE OR ZERO
                BZMF		QUICKOFF		# TOFJTCHG, IF SO, MAKE -0.
 -2             CAF             ZERO
                TS              ADDTLT6
TOJTLST         CA		SKIPQRAD
		TS		QJUMPADR
		CAE             JTSONNOW		# TURN ON JETS TO GO ON NOW (EVEN IF ALL
                TC              WRITEQR			# ARE ALREADY ON), AFTER TESTING FOR RISE.
                EXTEND
                DCA             JTLSTADR
                DTCB
                
QUICKOFF	CS		TOFJTCHG		# SET TOFJTCHG TO -0 IN SHORTEST WAY.
		TCF		NOQRON		+1
                
-1.5CSP         DEC             -0.01465
+T6TJMIN        DEC             +.00073
25/32.QR        DEC             0.78125
MS20QR          OCTAL           37776
MS30QR          OCTAL           37775
MS50QR          OCTAL           37773
16/32400        DEC             0.00049
BIT8,9          OCTAL           00600
MCOMPTQR        DEC             -16                     # -10 MS SCALED AS TIME6.
14-TQRMN        DEC             11
# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
## Page 531
MINTADR         GENADR          CCSHOLE
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
-.88975         DEC             -.88975
(1-K),QR        DEC             0.50000                 # K = 1/2
(1-KQ)/8        DEC             0.06250
-90MS           DEC             -.00879
+90MS           DEC             0.00879
NEGCSP2         DEC             -.00977
ALL+XJTS        OCTAL           40252
2,10-OUT        OCTAL           00201
+X,A            OCTAL           40042
+X,B            OCTAL           40210
1,9-OUT         OCTAL           00104
-X,A            OCTAL           40104
-X,B            OCTAL           40021
		EBANK=		JTSONNOW
JTLSTADR        2CADR           JTLST

RTJETADR        GENADR          RTJETIME


## Page 532
# Q,R-AXES ATTITUDE STEERING CALCULATIONS:

# (EXECUTED WHEN LGC IS IN AUTOMATIC SCSMODE OR IF SCSMODE IS ATTITUDE HOLD AND THE ROTATIONAL HAND CONTROLLER IS
# NEITHER OUT OF DETENT NOR IS THE RATE COMMAND BIT SET IN DAPBOOLS)

CHKGIMBL	EXTEND
		DCA		TRYGTSAD		# TRYGTS ATTEMPTS GTS CONTROL.
		DXCH		Z
		TC		CCSHOLE
		
BGIM24		OCTAL		07400
DESCADR		GENADR		TJETLAW

		EBANK=		DT
TRYGTSAD	2CADR		TRYGTS			# TRYGTS ATTEMPTS GTS CONTROL.


## Page 533
# "ATTSTEER" IS THE NOMINAL ENTRY POINT FOR REACTION CONTROL SYSTEM ATTITUDE STEERING

ATTSTEER	EQUALS		QERRCALC
QERRCALC	CAE		CDUY			# Q-ERROR CALCULATION
		EXTEND
		MSU		CDUYD			# CDU ANGLE - ANGLE DESIRED (Y-AXIS)
		TS		ITEMP1			# SAVE FOR RERRCALC
		EXTEND
		MP		M21			# (CDUY-CDUYD)*M21 SCALED AT PI RADIANS
		XCH		ER			# SAVE FIRST TERM (OF TWO) IN OPP.AXIS REG
		CAE		CDUZ			# SECOND TERM CALCULATION:
		EXTEND
		MSU		CDUZD			# CDU ANGLE -ANGLE DESIRED (Z-AXIS)
		TS		ITEMP2			# SAVE FOR RERRCALC
		EXTEND
		MP		M22			# (CDUZ-CDUZD)*M22 SCALED AT PI RADIANS
		ADS		ER			# SAVE SUM OF TERMS, NO OVERFLOW EVER
		TS		QERROR			# SAVE QERROR FOR EIGHT-BALL DISPLAY
		
RERRCALC        CAE             ITEMP1                  # R-ERROR CALCULATION:
                EXTEND                                  # CDU ANGLE -ANGLE DESIRED (Y-AXIS)
                MP              M31                     # (CDUY-CDUYD)*M31 SCALED AT PI RADIANS
                XCH             E                       # SAVE FIRST TERM (OF TWO) IN OPP.AXIS REG
                CAE             ITEMP2                  # SECOND TERM CALCULATION:
                EXTEND                                  # CDU ANGLE -ANGLE DESIRED (Z-AXIS)
                MP              M32                     # (CDUZ-CDUZD)*M32 SCALED AT PI RADIANS
                ADS             E                       # SAVE SUM OF TERMS, NO OVERFLOW EVER
                TS              RERROR                  # SAVE R-ERROR FOR EIGHT-BALL DISPLAY

		TCF		STILLRCS

# THIS CODING IS ENTERED FROM BURGZERO, WHEN BOTH URGENCIES ARE ZERO.  EXITS TO GTS IF POSSIBLE, XTRANS OTHERWISE

GIMBLTRY	CAF		USEQRJTS		# IS JET USAGE MANDATORY.
		MASK		DAPBOOLS
		CCS		A
		TCF		XTRANS			# YES.  GO TO XTRANS.
		
		EXTEND					# ARE GIMBALS DRIVING?
		READ		12
		MASK		BGIM24			# BITS 9,10,11,12 ARE GIMBAL DRIVE BITS.
		CCS		A
		TCF		XTRANS			# YES.  DRIVING.  GO TO XTRANS.
		
		EXTEND					# NO.   CHECK JETS.
		READ		5			# ARE ANY Q,R JETS ON NOW.
							# (CAN ONLY BE ROTATION JETS.)
		EXTEND
		BZF		XTRANS			# NO.   GO TO XTRANS.
		
## Page 534
		CAF		ZERO			# YES.  TURN OFF JETS.
		EXTEND
		WRITE		5
		
		EXTEND					# NO.   GO TO GTS.
		DCA		GOGTSADR
		DXCH		Z
		
		EBANK=		DT
GOGTSADR	2CADR		GOTOGTS

# REMAINING CODING (HERE TO STILLRCS) STAYS IN TO KEEP ADDRESSES CONSTANT.

		TC		CCSHOLE			# FILLER.
		TCF		STILLRCS		# NO.      SO USE RCS.
		INDEX		QRCNTR			# YES.     TRY THE ERROR MAGNITUDE.
		CCS		QDIFF			# IS ERROR SMALL ENOUGH FOR GTS.
		AD		-XBND+1			# -1.4 DEG SCALED AT PI    + 1 BIT
		TCF		+2
		AD		-XBND+1
		EXTEND
		BZMF		+2			# IS ERROR LESS,EQUAL 1.4 DEG.
		TCF		STILLRCS		# NO.      USE RCS CONTROL.
		CCS		QRCNTR			# THIS AXIS IS FINE.   ARE BOTH DONE.
		TC		CCSHOLE			# REMOVE REFERENCE TO ELIMINATED SYMBOL.
		TC		CCSHOLE			# FILLER.
-RATLM+1	OCT		77512			# -.5 DEG/SEC SCALED AT PI/4  + 1 BIT
-XBND+1		OCT		77601			# -1.4 DEG SCALED AT PI, + 1 BIT.
# "STILLRCS" IS THE ENTRY POINT TO RCS ATTITUDE STERRING WHENEVER IT IS FOUND THAT THE TRIM GIMBAL CONTROL
# SYSTEM SHOULD NOT BE USED;

## Page 535
# Q,R-AXES RCS URGENCY FUNCTION LOGIC:

STILLRCS	CCS		DAPBOOLS		# BRANCH TO SPS-BACKUP RCS CONTROL LOGIC.
		TCF		SPSBAKUP		# WHEN BIT15/DAPBOOLS = 0.
		NOOP
		CAF		DESCADR			# SET JET SELECT LOGIC RETURN ADDRESS TO
		TS		TJETADR			# THE Q,R-AXIS TJETLAW CALCULATION
		
		TC		T6JOBCHK		# CHECK T6 CLOCK RUPT BEFORE SUBROUTINE
		
# CALCULATE THE RATE ERRORS SCALED AT PI/4 RADIANS/SECOND(2):

		CS		OMEGAQD
		AD		OMEGAQ			# EDOTQ = OMEGAQ - OMEGAQD
		TS		EDOTQ
		
		CS		OMEGARD
		AD		OMEGAR			# EDOTR = OMEGAR - OMEGARD
		TS		EDOTR
		
## Page 536
# Q,R-AXES URGENCY FUNCTION LOOP:

# SET UP LOOP TO DO R-AXIS, THEN Q-AXIS:

		CAF		ONE			# 1: REFERS TO R-AXIS VARIABLES.
		TS		AXISCNTR		# 0: REFERS TO Q-AXIS VARIABLES.
		
# PICK UP EDOT AND RESCALE FROM PI/4 TO PI/16 RADIANS/SECOND:

URGLOOP		INDEX		AXISCNTR		# ERROR RATES ARE PRE-CALCULATED BY RATE
		CAE		EDOTQ			# DERIVATION SCALED AT PI/4 RADIANS/SECOND
		EXTEND					# MULTIPLYING BY FOUR (BIT3) LEAVES EDOT
		MP		FOUR			# AS C(L) IF EDOT LESS THAN 11.25 DEG/SEC.
		EXTEND
		BZF		+2			# IF C(A) NON-ZERO, THEN EDOT GREATER THAN
		TCF		EDOTMAX			# 11.25 DEG/SEC IN MAGNITUDE, SO LIMIT IT.
		
		CCS		L			# INSURE NON-ZERO EDOT:
		AD		TWO			# C(L) PNZ REMAINS UNCHANGED.
		TCF		+2			# C(L) NNZ REMAINS UNCHANGED.
		COM					# C(L)  +0 BECOMES 77776.
		AD		NEG1			# C(L)  -0 BECOMES 77776.
EDOTSTOR	TS		EDOT			# SAVE NON-ZERO EDOT SCALED AT PI/16.

		EXTEND					# CALCULATE (EDOT)(EDOT):
		SQUARE
		TS		EDOT(2)			# SCALED AT PI(2)/2(+8) RAD(2)/SEC(2).
		
		EXTEND					#  0.5               +8       2
		INDEX		AXISCNTR		# ------  SCALED AT 2  /PI SEC /RAD.
		MP		1/ACCQ			# ACCQ,R
		EXTEND					# DEADBAND = 5.0 OR 1.0 OR 0.3 DEGREES
		SU		DB			# SCALED AT PI RADIANS.
		TS		FPQR			# 0.5(1/ACC)EDOT(2)-DB SCALED AT PI RADS.
		
		CAE		EDOT(2)			# SCALED AT PI(2)/2(8) RAD(2)/SEC(2).
		EXTEND
		INDEX		AXISCNTR
		MP		1/AMINQ			# .5(1/ACCMIN) AT 2(8)/PI SEC(2)/RAD.
		AD		DB			# DEADBAND SCALED AT PI RADIANS.
		TS		FPQRMIN			# .5(1/ACCMIN)EDOT(2)+DB SCALED AT PI RAD.
		
		CCS		EDOT			# EDOT TEST ON SIGN (NON-ZERO):
		CAE		E			# ATTITUDE ERROR FOR THIS AXIS
		TCF		+2			# SCALED AT PI RADIANS.
		TCF		EDOTNEG
		ADS		FPQR			# E+0.5(1/ACC)EDOT(2)-DB SCALED AT PI RAD.
		
FTEST		CCS		EDOT			# EDOT GUARANTEED NOT +0 OR -0.
		CCS		FPQR			# FPQR GUARANTEED NOT +0.
## Page 537
		TCF		QUICKURG		# EDOT.G.+0, FPQR.G.+0.
		CCS		FPQR			# EDOT.L.-0.
		TCF		FMINCALC		# EDOT.L.-0,FPQR.G.+0/EDOT.G.+0,FPQR.L.-0.
		TCF		FMINCALC		# EDOT.G.+0,FPQR.E.-0 (FROM FIRST CCS).
		TCF		QUICKURG		# EDOT.L.-0,FPQR.L.-0.
		
QUICKURG	CAE		EDOT			# EDOT.L.-0,FPQR.E.-0 (FROM 2ND CCS).
		EXTEND					# SCALE FROM PI/16 TO PI RADIANS/SECOND
		MP		BIT11			# TO HAVE SAME SCALING AS FPQR AFTER THE
		AD		FPQR			# IMPLICIT MULT. OF FPQR BY 1/SEC.
		TCF		URGMULT			# THIS URGENCY = (1/ACC)(FPQR+EDOT).
		
EDOTMAX		CCS		A			# GUARANTEED NOT +0 OR -0.
		CAF		POSMAX
		TCF		EDOTSTOR		# SET EDOT TO SIGNED MAXIMUM.
		CS		POSMAX
		TCF		EDOTSTOR		# SCALED AT PI/16 RADIANS/SECOND.
		
EDOTNEG		CS		FPQR			# SCALED AT PI RADIANS
		AD		E			# ATTITUDE ERROR FOR THIS AXIS
		TS		FPQR			# E-0.5(1/ACC)EDOT(2)+DB SCALED AT PI RAD.
		TCF		FTEST
		
FMINCALC	CCS		FPQR			# NECESSARY RETEST ON FPQR;
		CS		FPQRMIN
		TCF		+2			# E-0.5(1/ACCMIN)EDOT(2)-DB
		CAE		FPQRMIN
		AD		E			# E+0.5(1/ACCMIN)EDOT(2)+DB
		TS		FPQRMIN			# SCALED AT PI RADIANS.
		
		CCS		EDOT			# EDOT    GUARANTEED NOT +0 OR -0.
		CCS		FPQRMIN			# FPQRMIN GUARANTEED NOT +0 (CALL IT F).
		TCF		ZEROURG			# EDOT.G.+0, F.G.+0.
		CCS		FPQRMIN			# EDOT.L.-0.
		TCF		NORMURG			# EDOT.L.-0, F.G.+0 / EDOT.G.+0, F.L.-0.
		TCF		NORMURG			# EDOT.G.+0, F.E.-0 (FROM FIRST CCS).
		TCF		ZEROURG			# EDOT.L.-0, F.L.-0.
ZEROURG		EXTEND					# EDOT.L.-0, F.E.-0 (FROM 2ND CCS).
		DCA		DPZEROY			# THIS URGENCY IS ZERO.
		DXCH		URGENCYQ
		TCF		MOREURG			# TEST FOR NEXT AXIS
		
NORMURG		CAE		FPQRMIN			# THIS URGENCY IS FPQRMIN(1/ACC).
URGMULT		EXTEND
		INDEX		AXISCNTR
		MP		1/ACCQ
		DXCH		URGENCYQ		# SAVE D.P. SCALED AT 2(+9).
		
MOREURG		CCS		AXISCNTR		# TEST FOR END OF LOOP
		TCF		+2			# CONTINUE.
		
## Page 538
		TCF		URGSCALQ		# FINISHED.
		
		TS		AXISCNTR		# Q-AXIS
		
		EXTEND
		DCA		URGENCYQ		# SET URGENCYR
		DXCH		URGENCYR
		
		DXCH		E			# SET ER,EDOT(2)R
		DXCH		ER
		TS		EQ			# SET EQ
		CAE		EDOT
		TS		EDOT(R)			# SET EDOT(R).
		
		TCF		URGLOOP			# CONTINUE.
		
# SUFFICIENT TEST FOR URGENCY RESCALING:

URGSCALR	CCS		URGENCYR		# IF ABVAL(URGENCYR) LESS THAN SCALE BOUND
		AD		SCALEBND
		TCF		+2			# THEN BOTH URGENCIES CAN BE RESCALED FROM
		AD		SCALEBND
		EXTEND					# 2(+9) TO 2(+4) SECONDS.
		BZMF		URGSCALE
		TCF		URGLIMS
		
# RESCALE BOTH URGENCIES FROM 2(+9) TO 2(+4) SECONDS:

URGSCALE	CAE		URGENCYQ		# SHIFT D.P. URGENCYQ LEFT 5-PLACES TO
		EXTEND					# FORM S.P. URGENCYQ NOW SCALED AT 16 SECS
		MP		BIT6
		LXCH		URGENCYQ
		CAE		URGENCYQ	+1
		EXTEND
		MP		BIT6
		ADS		URGENCYQ
		
		CAE		URGENCYR		# SHIFT D.P. URGENCYR LEFT 5-PLACES TO
		EXTEND					# FORM S.P. URGENCYR NOW SCALED AT 16 SECS
		MP		BIT6
		LXCH		URGENCYR
		CAE		URGENCYR 	+1
		EXTEND
		MP		BIT6
		ADS		URGENCYR
		
		CAE		URGLM2			# SET URGENCY LIMIT FOR 2(+4) SCALING.
		TCF		URGFUDGE
		
SCALEBND	OCTAL		77400			#  -8 SECONDS SCALED AT 2(+9).
## Page 539
DPZEROY		2DEC		0

# NECESSARY TEST FOR URGENCY RESCALING:

URGSCALQ	CCS		URGENCYQ		# IF ABVAL(URGENCYQ) LESS THAN SCALE BOUND
		AD		SCALEBND
		TCF		+2			# THEN TEST URGENCYR FOR RESCALABLE
		AD		SCALEBND
		EXTEND					# MAGNITUDE.
		BZMF		URGSCALR
		
URGLIMS		CAE		URGLM1			# SET URGENCY LIMIT FOR 2(+9) SCALING.
URGFUDGE	TS		URGLIMIT

# USE URGENCY FUNCTION CORRECTION FACTOR WHEN NECESSARY:

		CCS		AOSQ			# IF C(AOSQ) ZERO OR IF C(URGENCYQ) ZERO,
		CS		URGENCYQ		# THEN IT IS CLEARLY UNNECESSARY TO FUDGE.
		TCF		+2			# WHILE MAKING THIS TEST, WE CALCULATE
		CAE		URGENCYQ		# -SIGN(AOSQ)(URGENCYQ) WHICH IF POSITIVE
		EXTEND					# INDICATES THAT WE ARE TRYING TO FIGHT
		BZMF		URGFUDG1		# THE EFFECT OF AOSQ, SO WE DO NOT FUDGE.
		
		CAE		URGRATQ			# HERE WE KNOW THAT AOSQ WILL ACTUALLY
		EXTEND					# HELP THE RCS JETS MANEUVER FOR THIS AXIS
		MP		URGENCYQ		# FOR THIS CSP, MULTIPLYING BY URGRATQ
		TS		URGENCYQ		# REDUCES URGENCYQ APPROPRIATELY ENOUGH.
		
URGFUDG1	CCS		AOSR			# HERE WE DO THE SAME LOGIC FOR THE R-AXIS
		CS		URGENCYR		# COMPUTATIONS AS WE DID FOR THE Q-AXIS AT
		TCF		+2			# URGFUDGE.  RATHER THAN REPEAT THE ABOVE
		CAE		URGENCYR		# COMMENTS, WE PROVIDE A BIT OF FURTHER
		EXTEND					# EXPLANATION; FIRST, ONLY A S.P. URGENCY
		BZMF		URGPLANE		# IS SAVED IF WE DO THE FUDGE, SINCE ONLY
		
		CAE		URGRATR			# S.P. URGENCIES ARE REFERENCED BELOW AND
		EXTEND					# NO D.P. ACCURACY IS NEEDED.  SECOND, BY
		MP		URGENCYR		# BY MULTIPLYING BY THE FUDGE RATIO DURING
		TS		URGENCYR		# APS BURNS, WE PREVENT SOME RCS FIRINGS
							# WHICH WOULD OVER-CORRECT DUE TO THE AOS.
							
URGPLANE	CAE		URGENCYQ		# BEGIN URGENCY-PLANE COMPUTATIONS:
		EXTEND
		BZF		BURGZERO		# TEST FOR BOTH URGENCIES ZERO
		
		EXTEND
		MP		-TAN22.5
		AD		URGENCYR
		EXTEND
		MP		COS22.5
## Page 540
		TS		TERMA			# UR.COS(22.5)-UQ.SIN(22.5)
		
		CS		URGENCYR
		EXTEND
		MP		-TAN22.5
		AD		URGENCYQ
		EXTEND
		MP		COS22.5
		TS		TERMB			# UR.SIN(22.5)+UQ.COS(22.5)
		
A+B/A-B		AD		TERMA
		TS		A+B
A-B/ONLY	CS		TERMB
		AD		TERMA
		TS		A-B
		
# AXIS AND MODE SELECTION

		CAE		TERMB			# B URGENCY TEST
		EXTEND
		BZMF		NEGBURG
		
POSBURG		CAE		TERMA			# A URGENCY TEST
		EXTEND
		BZMF		NEGAPOSB
		
POSAPOSB	CAE		A-B
		EXTEND
		BZMF		MINUSU			# NEGATIVE U-AXIS SELECTED
		
2/4JET-R	CAE		1/AMINR
		TS		.5ACCMNE
		EXTEND
		DCA		ER
		DXCH		E
		CAE		EDOT(R)
		TS		EDOT
		CAE		URGLIMIT
		AD		URGENCYR
		EXTEND
		BZMF		2JETS-R
		
4JETS-R		CS		ONE
		TCF		POLTYPE			# GO FIND BEST POLICY
		
2JETS-R		CCS		NJ-R
		TCF		4JETS-R
		CS		TWO
		TCF		POLTYPE			# GO FIND BEST POLICY
		
## Page 541
MINUSU		CAE		1/AMINU
		TS		.5ACCMNE
		CAE		URGENCYQ
		AD		URGENCYR
		AD		URGLIMIT
		EXTEND
		BZMF		2JETS-U
		
2JETSM-U	TC		UXFORM
2-U.RATE	CAF		THREE
		TCF		POLTYPE			# GO FIND BEST POLICY
		
2JETS-U		CCS		NJ-U
		TCF		2JETSM-U
		TC		UXFORM
		CAF		TWO
		TCF		POLTYPE			# GO FIND BEST POLICY
		
NEGAPOSB	CAE		A+B
		EXTEND
		BZMF		PLUSV
		
2/4JET-Q	CAE		1/AMINQ
		TS		.5ACCMNE
		CAE		URGLIMIT
		AD		URGENCYQ
		EXTEND
		BZMF		2JETS-Q
		
4JETS-Q		CS		FIVE
		TCF		POLTYPE			# GO FIND BEST POLICY
		
2JETS-Q		CCS		NJ-Q
		TCF		4JETS-Q
		CS		SIX
		TCF		POLTYPE			# GO FIND BEST POLICY
		
PLUSV		CAE		1/AMINV
		TS		.5ACCMNE
		CS		URGENCYR
		AD		URGENCYQ
		AD		URGLIMIT
		EXTEND
		BZMF		2JETS+V
		
2JETSM+V	TC		VXFORM
2+V.RATE	CAF		FIVE
		TCF		POLTYPE			# GO FIND BEST POLICY
		
2JETS+V		CCS		NJ+V
## Page 542
		TCF		2JETSM+V
		TC		VXFORM
		CAF		FOUR
		TCF		POLTYPE			# GO FIND BEST POLICY
		
BURGZERO        CAE             URGENCYR                # TEST FOR SECOND URGENCY ALSO ZERO
                EXTEND
                BZF             GIMBLTRY                # BOTH URGENCIES ZERO.  TRY THE GTS.

                EXTEND                                  # TIME SAVING A+B CALCULATION
                MP              SIN22.5
                TS              TERMB                   # US.SIN(22.5)
                CAE             URGENCYR
                EXTEND
                MP              COS22.5
                TS              TERMA                   # UR.COS(22.5)
                TCF             A-B/ONLY
                
COS22.5         DEC             0.92388                 # COSINE OF 22.5 DEGREES
SIN22.5         DEC             0.38268                 # SINE OF 22.5 DEGREES
-TAN22.5        DEC             -.41421                 # NEGATIVE OF TANGENT OF 22.5 DEGREES

NEGBURG         CAE             TERMA                   # A URGENCY TEST
                EXTEND
                BZMF            NEGANEGB

POSANEGB        CAE             A+B
                EXTEND
                BZMF            2/4JET+Q

MINUSV          CAE             1/AMINV
                TS              .5ACCMNE
                CS              URGENCYQ 
                AD              URGENCYR
                AD		URGLIMIT
                EXTEND
                BZMF		2JETS-V

2JETSM-V        TC              VXFORM
2-V.RATE        CAF             SEVEN
                TCF             POLTYPE                 # GO FIND BEST POLICY

2JETS-V         CCS             NJ-V    
                TCF             2JETSM-V
                TC              VXFORM
                CAF             SIX
                TCF             POLTYPE                 # GO FIND BEST POLICY

NEGANEGB        CAE             A-B
                EXTEND
## Page 543
                BZMF            2/4JET+R

PLUSU           CAE             1/AMINU
                TS              .5ACCMNE
                CS		URGLIMIT
                AD              URGENCYQ
                AD              URGENCYR
                EXTEND
                BZMF            2JETSM+U

2JETS+U         CCS             NJ+U
                TCF             2JETSM+U
                TC              UXFORM
                CAF             ZERO
                TCF             POLTYPE                 # GO TO FIND BEST POLICY

2JETSM+U        TC              UXFORM
2+U.RATE        CAF             ONE
                TCF             POLTYPE                 # GO FIND BEST POLICY

2/4JET+R        CAE		1/AMINR
		TS		.5ACCMNE
		EXTEND
                DCA             ER
                DXCH            E
                CAE             EDOT(R)
                TS              EDOT
                CS		URGENCYR
                AD		URGLIMIT
                EXTEND
                BZMF            2JETS+R

4JETS+R         CS              THREE
                TCF             POLTYPE                 # GO FIND BEST POLICY

2JETS+R         CCS             NJ+R
                TCF             4JETS+R
                CS		FOUR
                TCF             POLTYPE                 # GO FIND BEST POLICY

2/4JET+Q        CAE             1/AMINQ
                TS              .5ACCMNE
                CS		URGENCYQ
                AD		URGLIMIT
                EXTEND
                BZMF            2JETS+Q 

4JETS+Q         CS              SEVEN
                TCF             POLTYPE                 # GO FIND BEST POLICY

## Page 544
2JETS+Q         CCS             NJ+Q
                TCF             4JETS+Q
                CS              EIGHT

# GENERALIZED CALLING SEQUENCE FOR ALL Q,R-AXES ROTATIONS (FROM BANK 17):

POLTYPE         TS              NETACNDX		# SAVE INDEX INDICATING AXIS, DIRECTION,
                EXTEND					# AND NUMBER OF JETS REQUESTED (THIS SPEC-
                DCA             POLADR			# IFIES THE "OPTIMAL" POLICY.  TRANSFER
                DTCB					# ACROSS BANKS TO POLICY SELECTION ROUTINE
                
                EBANK=		JTSONNOW
POLADR          2CADR           POLTYPEP		# 2CADR OF JET POLICY SELECT ROUINTE.


## Page 545
# SUBROUTINES UXFORM AND VXFORM CALCULATE NEEDED VALUES FOR T-JET LAW
# (THEY GO OFF TO REDUCE RATE, IF NECESSARY, AND THEN DO NOT RETURN)

VXFORM          CAE             1/2JETSV                # GET INVERSE OF V-JET ACCELERATION
                TS              1/NJETAC
                CS              EQ                      # COMPLEMENT FOR TRANSFORMATION
                TS              EQ
                CS              EDOTQ
                TCF             UVXFORM         +1
UXFORM          CAE             1/2JETSU                # SET INVERSE OF U-JET ACCELERATION
                TS              1/NJETAC

UVXFORM         CAE             EDOTQ                   # TRANSFORM ANGULAR RATE TO U/V-AXIS
                AD              EDOTR
                EXTEND
                MP              .707
                TS              EDOT                    # SAVE FOR REDUCEUV
                EXTEND
                MP              BIT3
                EXTEND
                BZF		UVEDOT			# BRANCH IF RESCALING SUCCESSFUL.
                
                CCS		A			# LIMIT EDOT TO +/- 11.25 DEG/SEC.
                CAF		POSMAX
                TCF		UVEDOT1
                CS		POSMAX
                TCF		UVEDOT1
                
UVEDOT		CAE		L
UVEDOT1		TS		EDOT			# RATE ERROR SCALED AT PI/16.
		EXTEND
		SQUARE
		TS		EDOT(2)			# SAVE RATE SQUARED SCALED AT PI(2)/2(8)
                
                CAE             EQ                      # TRANSFORM ATTITUDE ERROR TO U/V -AXIS
                AD              ER
                EXTEND
                MP              .707
                TS              E 

                TC              Q

-1.5CSPQ	DEC		-.00938
+TJMINT6	DEC		+.00073
-TJMIN16	DEC		-.00097
-TJMINQR	EQUALS		-TJMIN16
38.7MAT4	DEC		0.00242
-MS35AT4	DEC		-.00219			# -35MS SCALED AT 4
## Page 546
MAXRATE		DEC		0.88889			# 10 DEGREES/SECOND SCALED AT PI/16
MAXRATE2	DEC		0.79012			# 100 DEG(2)/SEC(2) SCALED AT PI(2)/2(8)
.6DEG/SC	DEC		0.05333			# 6/10 DEGREES/SECOND SCALED AT PI/16
25/32QR		DEC		0.78125


## Page 547
# THESE TWO SUBROUTINES TRANSFORM EDOTQ,EDOTR INTO THE U/V-AXIS (RESPECTIVELY) FOR THE RATE COMMAND MODE (ONLY).
# VALUE IS STORED IN EDOTGEN SCALED AT PI/4 RADIANS/SECOND.

                BANK            17

EDOTUGEN        CAE             1/2JETSU                # FOR U-AXIS TRANSFORMATION
                TS              1/NJETAC
                CAE             EDOTQ
                TCF             +4
EDOTVGEN        CAE             1/2JETSV                # FOR V-AXIS TRANSFORMATION
                TS              1/NJETAC
                CS              EDOTQ
                AD              EDOTR
                EXTEND
                MP              .707
                TS              RATEDIF
                TC              Q


.707            DEC             0.70711      

SPSBAKUP	EXTEND
		DCA		SPSRCSAD
		DXCH		Z
		EBANK=		DT
SPSRCSAD	2CADR		SPSRCS


## Page 548
# *********TJETLAW************************************************************************************************

TJETLAW         CS              EDOT                    # TEST ON EDOT SIGN:
                EXTEND
                BZMF            +4
                TS              EDOT                    # SIGNS OF E AND EDOT CHANGED IF EDOT NEG,
                CS              E                       # TO CONSIDER FUNCTIONS IN THE UPPER HALF
                TS              E                       # OF THE E-DOT PHASE PLANE.

                CAE             EDOT(2)                 # SCALED AT PI(2)/2(+8) RAD(2)/SEC(2)
                EXTEND                                  # 1/NETACC HAS BEEN SET FOR N-JETS WITH
                MP              1/NETACC                # IMPLICIT FACTOR OF (1/2).
                AD              E                       # ATTITUDE ERROR SCALED AT PI RADIANS.
                EXTEND					# DEADBAND VALUE SCALED AT PI RADIANS.
                SU              DB                      # E+.5EDOT/NETACC-DB
                TS              HDAP                    # SCALED AT PI RADIANS.

                EXTEND
                BZMF            NEGHDAP

                CAE             EDOT                    # RATE ERROR; LIMITED TO +/- 11.25 DEG/SEC
                EXTEND					# SCALED AT PI/16 RADIANS/SECOND.
                MP              1/NETACC                # SCALED AT 2(+8)/PI SEC(2)/RAD: (ACC) (-1)
                DDOUBL					# SCALED AT 2(+4) SECONDS.
                TS              TERMA 
                
                AD		-1.5CSPQ		# (EDOT/NETACC)-1.5CSP SCALED AT 16 SECS.
                EXTEND
                BZMF            +3

MAXTJET         CAF             BIT14                   # (1/2) IS LIKE POSMAX AT THIS SCALING.
                TCF             NORMRETN                # (OVERFLOW IS PREVENTED IN THIS WAY.)

                CS              HDAP                    # MINIMPDB-E-(EDOT(2)/NETACC)+DB
                AD              MINIMPDB                # SCALED AT PI RADIANS.
                EXTEND					# (DURING APS BURNS, MINIMPDB = -DB.)
                BZMF            MAINBRCH

                CAE             TERMA                   # EDOT/NETACC-35MS SCALED AT 16 SECONDS.
                AD              -MS35AT4
                EXTEND					# COMPARE TIME-TO-GET-ZERO-RATE WITH 35MS.
                BZMF            INZONE4

                AD              38.7MAT4		# TIME-TO-GET-ZERO-RATE + 1/2 MINIMP.
                TCF             TJETSCAL

INZONE4		CCS		EDOT			# IF EDOT IS EITHER 00001, 00000, 77777,
		EXTEND					# OR 77776 (IN OCTAL), THEN THIS CODING
		BZF		XTRANS			# CAUSES A BRANCH TO XTRANS, NO ROTATION
		EXTEND					# JETS ARE FIRED. *** NOTE: IF THE EXTEND
## Page 549
		BZF		XTRANS			# CODE IS SKIPPED, BZF EXECUTES LIKE TCF.
		
		
		CAE		NO.QJETS		# IF NO Q-AXIS JETS THEN MUST HAVE R-AXIS.
		EXTEND
		BZF		ROTRAXIS
		
		CAE		OMEGAQD			# WITH Q-AXIS JETS, ZERO THE RATE ERROR.
		TS		OMEGAQ
		
		CAE		NO.RJETS		# IF NO R-AXIS JETS, THEN Q-AXIS JETS WERE
		EXTEND					# ALREADY FOUND.
		BZF		DOTJMIN
		
ROTRAXIS	CAE		OMEGARD			# WITH R-AXIS JETS, ZERO THE RATE ERROR.
		TS		OMEGAR

DOTJMIN		CAF		+TJMINT6		# USE MINIMUM IMPULSE DT FOR TQR.
		TCF		NORMRETN
		
NEGHDAP         CAE             EDOT(2)                 # RATE ERROR SQUARED SCALED AT PI(2)/2(8).
                EXTEND
                MP              .5ACCMNE                # .5(1/ACCMIN) AT 2(8)/PI SEC(2)/RAD.
                AD              E                       # ATTITUDE ERROR SCALED AT PI RADIANS
                AD              DB                      # DEADBANDS (2) SCALED AT PI RADIANS
                AD              DBMINIMP		# (DURING APS BURNS DBMINIMP = 0.)
                EXTEND
                BZMF            +2
                TCF             XTRANS			# NO ROTATION JETS NEEDED.

 +2             CS              MAXRATE                 # 10 DEGREES/SECOND SCALED AT PI/16.
                AD              EDOT                    # EDOT-MAXRATE SCALED AT PI/16 RAD/SEC.
                EXTEND
                BZMF            +2
                TCF             XTRANS

 +2             CS              EDOT                    # RATE ERROR SCALED AT PI/16 RAD/SEC.
                EXTEND					# (LIMITED TO +/- 11.25 DEG/SEC.)
                MP              1/NETACC		# SCALED AT 2(+8)/PI SEC(2)/RAD; (ACC):-1)
                DDOUBL					# SCALED AT 2(+4) SECONDS.
                TS              TERMA 

                CS              HDAP                    # -E+(.5EDOT(2)/NETACC)+DB
                AD              E
                AD              E                       # TWICE ERROR NEGATES E OF HDAP(ABOVE)
                AD              MINIMPDB
MAINBRCH        TS              HDAP                    # -HDAP(ABOVE)+2E+DBMINIMP AT PI RADIANS.

                CAE             1/NETACC		# .5(1/NETACC+1/ACCMIN) SCALED AT 2(8)/PI.
## Page 550
                ADS             .5ACCMNE		# .5ACCMNE NOW HOLDS DENOM.

                EXTEND					# DENOM(MAXRATE(2)).HDAP AT PI RADIANS.
                MP              MAXRATE2       
                AD              HDAP        
                EXTEND
                BZMF            NOROOT
                
                CAE		1/NETACC		# SAVE (1/NETACC)(2)
                DOUBLE
                EXTEND
                SQUARE
                DXCH		INVACCSQ
                
                CAE		HDAP			# (HDAP)/(DENOM)
                ZL
                EXTEND
                DV		.5ACCMNE
                TS		QUOTTEMP
                
                EXTEND					# +(HDAP/DENOM)(1/NETACC)(2) AT 2(8) SECS.
                MP		INVACCSQ	+1
                TS		INVACCSQ	+1
                CAF		ZERO
                XCH		INVACCSQ
                EXTEND
                MP		QUOTTEMP
                DAS		INVACCSQ
                
                EXTEND					# SAVE COPY OF ABOVE D.P. VALUE
                DCA		INVACCSQ
                DXCH		TERMB
                
                CAF		-1.5CSPQ		# (1.5CSP-EDOT/NETACC) AT 16 SECS.
                AD		TERMA
                EXTEND
                SQUARE					# (1.5CSP-EDOT/NETACC)(2) AT 256 SECS.
                DAS		INVACCSQ		# (1.5CSP-EDOT/NETACC)(2) - TERMB
                
                CAE		INVACCSQ		# CHECK HIGH ORDER PART, IF NON-ZERO.
                EXTEND
                BZF		ONLYTST1
                TCF		ONLYTST1	+1
                
ONLYTST1	CAE		INVACCSQ	+1	# USE LOW ORDER PART, SINCE HIGH PART 0.
		EXTEND
		BZMF		MAXTJET
		
                CAF             -TJMIN16		# -EDOT/NETACC-TJMIN SCALED AT 16.
                AD              TERMA 
## Page 551
                EXTEND
                BZMF            MAYNOJET

PREROOT		CAF		AFTRUTAD		# THIS WILL CAUSE SQUARE ROOT TO BE TAKEN
		TS		T5ADR			# ON THE NEXT T5RUPT.
		EXTEND	
		READ		5
		TS		CH5TEMP
JETSON		CAE		JTSONNOW		# TURN ON JETS AND END RUPT
		TC		WRITEQR
		TCF		RESUME
		
AFTRUTAD	GENADR		DORUTDUM
NOROOT		CAF		MAXRATE
		AD		.6DEG/SC		# MAXRATE+DEL SCALED AT PI/16 RAD/SEC.
		EXTEND
		MP		1/NETACC		# (MAXRATE+DEL)/NETACC
		DDOUBL					# SCALED AT 2(+4) SECONDS
TJSUM		AD		TERMA	
TJETSCAL	DOUBLE					# NOW SCALED AT 2(+3) SECONDS.
		EXTEND
		MP		25/32QR			# SCALED TO 16/25 2(+4) SECONDS AS TIME6.
		TCF		NORMRETN
		
MAYNOJET	EXTEND					# RE-INITIALIZE C(INVACCSQ,D.P.)
		DCA		TERMB			# SINCE CLOBBERED ABOVE.
		DXCH		INVACCSQ
		
		CAF		-TJMIN16
		AD		TERMA			# TERMA-TJMIN SCALED AT 2(+4) SECONDS.
		EXTEND
		SQUARE					# SCALED AT 2(+8) SECONDS.
		DAS		INVACCSQ		# FORM D.P. SUM.
		
		CAE		INVACCSQ		# CHECK HIGH ORDER PART IF NON-ZERO.
		EXTEND
		BZF		ONLYTST2
		TCF		ONLYTST2	+1
		
ONLYTST2	CAE		INVACCSQ	+1	# USE LOW ORDER PART, SINCE HIGH PART 0.
		EXTEND
		BZMF		PREROOT
		TCF		DOTJMIN			# FIRE FOR MINIMUM IMPULSE.
CHKSUM17	OCT		37777


## Page 552
# SUBROUTINE NAME: DAPSQRT        MOD. NO. 0  DATE: DECEMBER 28, 1966

# AUTHOR: JONATHAN D. ADDELSTON (ADAMS ASSOCIATES)

# DAPSQRT IS A SUBROUTINE WHICH PERFORMS THE NECESSARY AND APPROPRIATE INTERFACE FUNCTIONS BETWEEN THE LM DAP AND
# THE PRESENT SPROOT SUBROUTINE IN MASTER.  DAPSQRT EXPECTS A DOUBLE PRECISION ARGUMENT IN C(A,L) AND WILL SHIFT
# THAT QUANTITY SIX OR FOUR BITS TO THE LEFT TO FORM A MORE ACCURATE SINGLE PRECISION ARGUMENT FOR SPROOT (AND
# THEN SHIFT THE SINGLE PRECISION RESULT OF SPROOT THREE OR TWO BITS TO THE RIGHT IN ORDER TO MAINTAIN SCALING
# CONSISTENCY).  DAPSQRT ALSO PERFORMS THE HERETOFORE NEGLECTED FUNCTION OF SAVING AND RESTORING THE CONTENTS OF
# THE SR (SHIFT-RIGHT) REGISTER WHICH MUST BE DONE BY ALL USERS OF SPROOT IN INTERRUPT.

# NOTE: IF ORIGINAL C(A) = 0, THEN THE SQUARE ROOT SINGLE PRECISION ARGUMENT IS C(L), AND THE RESULT FROM SPROOT
# IS SHIFTED LEFT SEVEN BITS.

# CALLING SEQUENCE:

#					  L	   TC	  IBNKCALL	  CALL IS ALWAYS FROM ANOTHER BANK.
#					  L +1	   CADR	  DAPSQRT	  ENTER ROUTINE WITH C(A,L) = D.P. ARG.
#				 	  L +2	   (RETURN)		  C(A) = BEST VALUE OF SQUARE ROOT.

# ALARM/ABORT MODE: NONE.

# SUBROUTINES CALLED: SPROOT AND T6JOBCHK.

# NORMAL EXIT MODE: RETURN TO L +2.

# OUTPUT: C(A) AT RETURN TO CALLER IS THE BEST SINGLE PRECISION SQUARE ROOT OF THE GIVEN DOUBLE PRECISION ARGUMENT

# ERASABLE INITIALIZATION REQUIRED: DOUBLE PRECISION ARGUMENT AS C(A,L).

# DEBRIS: ITEMP4, ITEMP5, ITEMP6 AND A,L,Q.


		BANK		26
		EBANK=		FUNCTION
		
# SRTEMP	ERASE					SCRATCH CELLS FOR DAPSQRT
# SQRTTEMP	ERASE					SCRATCH CELLS FOR DAPSQRT
# SQRTTEMQ	ERASE					SCRATCH CELLS FOR DAPSQRT

DAPSQRT		TS		SQRTTEMP		# SAVE C(A) PART OF DOUBLE PRECISION ARG.

		EXTEND					# SAVE C(Q) FOR RETURN TO LM DAP CALLER.
		QXCH		SQRTTEMQ
		
		CAE		SR			# SAVE C(SR) SINCE ALL INTERRUPT PROGRAMS
		DOUBLE					# USING SPROOT MUST DO SO.
		TS		SRTEMP
## Page 553
		TC		T6JOBCHK		# CHECK TIME6-RUPT BEFORE SPROOT.
		
		CAE		SQRTTEMP		# RESTORE D.P. ARG. TO C(A,L), AND THEN
		EXTEND					# CHECK FOR C(A) = +0.  IF SO, TAKE THE
		BZF		DAPSQRT3		# SQUARE ROOT OF C(L) AND POST-SHIFT.
		
		MASK		DAPHIGH7		# IF THIS MASK PRODUCES A WORD OF ZEROS,
		EXTEND					# C(D.P.ARG) WILL BE SHIFTED LEFT 6 BITS
		BZF		SQRTSL6			# WITHOUT OVERFLOWING BEFORE USING SPROOT.
		
		MASK		DAPHIGH5		# IF THIS MASK PRODUCES A WORD OF ZEROS,
		EXTEND					# C(D.P.ARG) WILL BE SHIFTED LEFT 4 BITS
		BZF		SQRTSL4			# WITHOUT OVERFLOWING BEFORE USING SPROOT.
		
		CAE		SQRTTEMP		# GET UNSHIFTED S.P. ARGUMENT FOR SPROOT.
		
		TC		SPROOT			# CALL SUBROUTINE IN FIXED-FIXED.
		
DAPSQRT1	LXCH		SRTEMP			# RESTORE C(SR).
		LXCH		SR
		
		TC		SQRTTEMQ		# RETURN WITH SQUARE ROOT AS C(A).
		
SQRTSL6		CAF		BIT9			# SET UP TO SHIFT D.P. ARG. LEFT 6 BITS
		TS		Q
		CAF		BIT12			# AND TO SHIFT SPROOT ANS. RIGHT 3 BITS.
		TCF		DAPSQRT2
		
SQRTSL4		CAF		BIT11			# SET UP TO SHIFT D.P. ARG. LEFT 4 BITS
		TS		Q
		CAF		BIT13			# AND TO SHIFT SPROOT ANS. RIGHT 2 BITS.
DAPSQRT2	XCH		SQRTTEMP		# (RECONSTRUCT D.P. ARGUMENT.)

		EXTEND					# VARIABLE LEFT SHIFT (4 OR 6 BITS).
		DV		Q			# (MAC HAS DIFFEQ, LM DAP HAS DV Q - PUN?)
DAPROOT		TC		SPROOT			# CALL SUBROUTINE IN FIXED-FIXED
		EXTEND					# VARIABLE RIGHT SHIFT (2 OR 3 BITS).
		MP		SQRTTEMP
		
		TCF		DAPSQRT1		# RETURN SEQUENCE.
		
DAPSQRT3	CAF		BIT8			# SET UP TO SHIFT SPROOT ANS. RIGHT 7 BITS
		TS		SQRTTEMP
		CAE		L			# USE C(L) AS SPROOT ARGUMENT.
		TCF		DAPROOT
		
DAPHIGH7	OCTAL		77400
DAPHIGH5	OCTAL		76000

back to top