swh:1:snp:cdcd2bc43331a436e8c659ba93175ef7d7eb339b
Tip revision: 4e5d304eb7cd5589b924ffb8b423b6f15511b35d authored by Ron Burkey on 20 October 2018, 17:47:00 UTC
The sample Block I AGC program TRIVIUM, found at the very end of one of
The sample Block I AGC program TRIVIUM, found at the very end of one of
Tip revision: 4e5d304
Q,R-AXES_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: Q,R-AXES_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
## Purpose: Part of the source code for Aurora (revision 12).
## Assembler: yaYUL
## Contact: Hartmuth Gutsche <hgutsche@xplornet.com>.
## Website: https://www.ibiblio.org/apollo.
## Pages: 562-593
## Mod history: 2016-09-20 JL Created.
## 2016-09-30 HG Started transcribing from scan
## 2016-10-08 HG Change TS Q -> TC Q (p. 584)
## 2016-10-15 HG fix label MAXJET -> MAXTJET
## ORGTOA -> URGTOA
## TQRGTTM1 -> TQRGTTMI
## NEGQERROR -> NEGQEROR
## fix operand NEGSCP -> NEGCSP
## UREGNCYQ -> URGENCYQ
## .5ACCMNS -> .5ACCMNE
## 25,32.QR -> 25/32.QR
## Q-NORTJS -> Q-NORJTS
## -RATDEB -> -RATEDB
## CHECKSTIK -> CHEKSTIK
## 2016-12-08 RSB Proofed comments with octopus/ProoferComments
## and fixed the errors found.
## This source code has been transcribed or otherwise adapted from
## digitized images of a hardcopy from the private collection of
## Don Eyles. The digitization was performed by archive.org.
## Notations on the hardcopy document read, in part:
## 473423A YUL SYSTEM FOR BLK2: REVISION 12 of PROGRAM AURORA BY DAP GROUP
## NOV 10, 1966
## [Note that this is the date the hardcopy was made, not the
## date of the program revision or the assembly.]
## The scan images (with suitable reduction in storage size and consequent
## reduction in image quality) are available online at
## https://www.ibiblio.org/apollo.
## The original high-quality digital images are available at archive.org:
## https://archive.org/details/aurora00dapg
## Page 562
BANK 24
EBANK= DT
# 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).
NULLFILT 2CADR FILDUMMY
QRAXIS CAF MS30QR # RESET TIME IMMEDIATELY: DT = 30 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
DXCH T5ADR
# 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:
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
EXTEND # RESCALE DELTA CDUY FROM PI RADIANS TO
MP BIT7 # PI/2(6) RADIANS BY MULTIPLYING BY 64
LXCH 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
EXTEND # RESCALE DELTA CDUZ FROM PI RADIANS TO
MP BIT7 # PI/2(6) RADIANS BY MULTIPLYING BY 64
LXCH ITEMP2 # SAVE 1'S COMPLEMENT VALUE TEMPORARILY
## Page 563
# SECOND, TRANSFORM CPU INCREMENTS TO BODY-ANGLE INCREMENTS:
CAE M31 # MATRIX*VECTOR(WITH X COMPONENT ZERO)
EXTEND
MP ITEMP1 # M31 * ITEMP1 = M31 * DELTA CDUY
TS ITEMP3
CAE M32 # M32 * ITEMP2 = M32 * DELTA CDUZ
EXTEND
MP ITEMP2 # DELTAR = M31*(DEL CDUY) + M32*(DEL CDUZ)
ADS ITEMP3 # R-BODY-ANGLE INCREMENT SCALED AT PI/2(6)
CAE M21 # MATRIX*VECTOR(WITH X COMPONENT ZERO)
EXTEND # CLOBBERS ITEMP2=DEL CDUZ, FOR EFFICIENCY
MP ITEMP1 # M21 * ITEMP1 = M21 * DELTA CDUY
XCH ITEMP2 # M22 * ITEMP2 = M22 * DELTA CDUZ
EXTEND
MP M22 # DELTAQ = M21*(DEL CDUY) + M22*(DEL CDUZ)
ADS ITEMP2 # Q-BODY-ANGLE INCREMENT SCALED AT PI/2(6)
# 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)QR # (K CHANGES EVERY 2 SECS 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 ITEMP3 # 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)QR # (K CHANGES EVERY 2 SECS 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
TC QJUMPADR
SKIPQRAX CA NORMQADR
TS QJUMPADR
CA ZERO
TS JETRATEQ
TS JETRATER
CA TQR
AD NEGCSP2
CCS A
TC QRTORQUE
## Page 564
TCF RESUME
TC QRTORQUE
CS JETRATEQ
ADS OMEGAQ
CS JETRATER
ADS OMEGAR
TCF RESUME
QRTORQUE AD ONE
EXTEND
MP BIT5
CA L
EXTEND
MP 16/25QR
TS TQR
EXTEND
MP NO.QJETS
CAE L
EXTEND
MP 1JACCQ
TS JETRATEQ
ADS SUMRATEQ
CAE TQR
EXTEND
MP NO.RJETS
CAE L
EXTEND
MP 1JACCR
TS JETRATER
ADS SUMRATER
CAE WFORQR
EXTEND
MP TQR
AD (1-K)/8
EXTEND
MP BIT4
LXCH ITEMP1
CAE JETRATEQ
EXTEND
MP ITEMP1
TS JETRATEQ
CAE JETRATER
EXTEND
MP ITEMP1
TS JETRATER
CA ZERO
TS NO.QJETS
TS NO.RJETS
TC Q
NORMQADR GENADR NORMALQ
NORMALQ CAF BIT13 # CHECKING ATTITUDE HOLD BIT
## Page 565
EXTEND
RAND 31 # BITS INVERTED
EXTEND
BZF CHKBIT10
CAF BIT14 # ATT HOLD BIT NOT PRESENT. CHECK FOR AUTO
EXTEND
RAND 31
EXTEND
BZF ATTSTEER # AUTOMATIC STEERING, CHECK FOR RATE HOLD
EXTEND # IF MODE SELECT SW OFF DO DAPIDLER NEXT
DCA IDLEADRQ
DXCH T5ADR
TCF RESUME
IDLEADRQ 2CADR DAPIDLER
CHKBIT10 CAF BIT10 # BIT10=1 FOR MIN IMP USE OF RHC
MASK DAPBOOLS
EXTEND
BZF CHEKSTIK # IN ATT-HOLD/RATE-COMMAND IF BIT10=0
CAE DELAYCTR # SET TO 2 BY RUPT 10
EXTEND
BZF XTRANS
CA MINTADR
TS TJETADR
CA BIT1
EXTEND
RAND 31
EXTEND
BZF 2JETS+Q
CA BIT2
EXTEND
RAND 31
EXTEND
BZF 2JETS-Q
CA BIT5
EXTEND
RAND 31
EXTEND
BZF 2JETS+R
CA BIT6
EXTEND
RAND 31
EXTEND
## Page 566
BZF 2JETS-R
TCF XTRANS
MINTJET CAF +T6TJMIN
TS TQR
CA ZERO
TS DELAYCTR
TCF TORQUEV
CHEKSTIK CAF BIT15 # OUT-OF-DETENT BIT
EXTEND
RAND 31 # BITS INVERTED
EXTEND
BZF RHCACTIV # BRANCH IF OUT OF DETENT
CA BIT1 # OUR RATE COMMAND BIT
MASK DAPBOOLS
EXTEND
BZMF ATTSTEER # AUTOMATIC STEERING, CHECK FOR RATE HOLD
# WE WERE IN RATE COMMAND AND RATES MUST BE MADE SMALLER
# ARE RATES SMALL ENOUGH NOW
CA OMEGAP
EXTEND
SQUARE
DXCH ITEMP1
CA OMEGAQ
EXTEND
SQUARE
DAS ITEMP1
CA OMEGAR
EXTEND
SQUARE
DAS ITEMP1
# WE NOW HAVE SQUARED MAGNITUDE OF RATE VECTOR IN ITEMP1
CS 16/32400 # 1DEG/SEC SCALED AT PI.PI/16
AD ITEMP1
EXTEND
BZMF RATESMAL
# THE RATE IS NOT SMALL ENOUGH YET.
CA OMEGAQ
TS QRATEDIF
CA OMEGAR
## Page 567
TS RRATEDIF
TCF OBEYQRRC
RATESMAL CS BIT1
MASK DAPBOOLS # RATE COMMAND BIT SET TO ZERO
TS DAPBOOLS
CAE CDUX
TS CDUXD
CAE CDUY
TS CDUYD
CAE CDUZ
TS CDUZD
RHCACTIV CAF BIT1
MASK DAPBOOLS
EXTEND
BZF XTRANS # LET P AXIS SET THE RATE COMMAND BIT
# COMPUTE RATE ERRORS
CAE Q-RHCCTR
EXTEND
MP BIT9
CA -.88975
EXTEND
MP L # -Q RATE COMMAND SCALED AT PI/4
AD OMEGAQ
TS QRATEDIF
CAE R-RHCCTR
EXTEND
MP BIT9
CA -.88975
EXTEND
MP L # -R RATE COMMAND SCALED AT PI/4.
AD OMEGAR
TS RRATEDIF
# ZERO,ENABLE,AND START COUNTERS
CAF ZERO
TS P-RHCCTR
TS Q-RHCCTR
TS R-RHCCTR
CAF BIT8,9
EXTEND
WOR 13
OBEYQRRC CA RTJETADR
TS TJETADR
CCS QRATEDIF
## Page 568
TCF POSQEROR
TCF NOQJETS
TCF NEGQEROR
NOQJETS CCS RRATEDIF # CHECK SIGN OF RATE ERROR AND GET ABVAL
TCF R+,CHKDB
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
BZMF NOQJETS
CCS RRATEDIF
TCF R+Q+CHKR
TCF Q+NORJTS
TCF R-Q+CHKR
Q+NORJTS CA QRATEDIF
## Page 569
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)
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
## Page 570
TCF TORQUEV
# TRANSLATION WITHOUT ROTATION IS ACCOMPLISHED IN XTRANS SECTION
XTRANS CA ZERO
TS ADDTLT6
TS ADDT6JTS
CA BIT6
MASK DAPBOOLS # CHECKING THE ULLAGE BIT
EXTEND
BZF +4
CA ALL+XJTS # ULLAGE JETS
WRITEON TC WRITEQR
TCF RESUME
+4 CAF BIT7
EXTEND
RAND 31
EXTEND
BZF +XTRANS
CA BIT8 # -X TRANS BIT.INVERTED
EXTEND
RAND 31
EXTEND
BZF -XTRANS
NOTORQUE CA ZERO
TCF WRITEON
+XTRANS CAF 2,10-OUT # CHECK FOR FAILURE OF 2 OR 10
EXTEND
RXOR 32
EXTEND
BZF +3 # 2 AND 10 GOOD
CA +X,B # SINCE 2 OR 10 FAILED, USE 6 AND 14 OF B
TCF WRITEON
+3 CA +X,A # 2 AND 10 SYSTEM A
TCF WRITEON
-XTRANS CAF 1,9-OUT # CHECK FOR FAILURE OF 1 OR 9
EXTEND
RXOR 32
EXTEND
BZF +3 # 1 AND 9 GOOD
CA -X,A # SINCE 1 OR 9 FAILED, USE 5 AND 13 OF A
TCF WRITEON
+3 CA -X,B # 1 AND 9 SYSTEM B
TCF WRITEON
## Page 571
# DO NECESSARY PARTS OF Q,R-AXES TORQUE VECTOR RECONSTRUCTION HERE AND NOW. FOR OTHER PARTS WAIT UNTIL THE NEXT
# P-AXIS RCS DAP T5RUPT.
TORQUEV CS TQR # CALCULATED Q,R JET TIME (AS IN TIME6)
AD +T6TJMIN
EXTEND # CORRECT BRANCH.
BZMF TQRGTTMI # BRANCH FOR TQR = OR GREATER THAN MINIMP.
CA ZERO
TS TOFJTCHG # SINCE TQR LESS THAN A MINIMUM IMPULSE,
TS JETRATEQ # ZERO ALL OF THESE REGISTERS AND GO TO
TS JETRATER # JET LIST.
CA JTSATCHG
TC WRITEQR
TCF RESUME
TQRGTTMI CA TQR
TS TOFJTCHG
AD -1.5CSP
EXTEND
BZMF DOQRSKIP
CA 1JACCQ
EXTEND
MP NO.QJETS
CA L
TS ITEMP1
EXTEND
MP QR.1STOQ
## Note: in the scan the two statements above (EXTEND, MP QR.1STOQ) are boxed in (red) and a marked with a question mark
## I.E. ----------------------------
## | EXTEND |
## | MP QR.1STOQ | ?
## ----------------------------
TS JETRATEQ
CA ITEMP1
EXTEND
MP 0.1AT1
ADS SUMRATEQ
CA 1JACCR
EXTEND
MP NO.RJETS
CA L
TS ITEMP1
EXTEND
MP QR.1STOQ
## Note: in the scan the two statements above (EXTEND, MP QR.1STOQ) are boxed in (red) and a marked with a question mark
## See above.
TS JETRATER
CA ITEMP1
EXTEND
MP 0.1AT1
ADS SUMRATER
CA JTSONNOW
TCF WRITEON
SKIPQRAD GENADR SKIPQRAX
0.1AT1 DEC +0.10000
DOQRSKIP CA SKIPQRAD
TS QJUMPADR
# CHANGE JET ON AND OFF BITS TO ACCOUNT FOR THE PRESENT STATE OF THE
## Page 572
# CHANNEL. THE CHANGES ACCOUNT FOR PURE ROTATION ONLY- NOT TRANSLATION.
CA JTSONNOW # = JETS WHICH ARE TO GO ON NOW.
EXTEND
RAND 5 # MASK THE CHANNEL WITH THE DESIRED STATE.
EXTEND
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.
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
CA ZERO
TS ADDTLT6
TCF TOJTLST
JTSAREON CA MCOMPTQR
ADS TOFJTCHG
CA ZERO
TS ADDTLT6
TOJTLST CA JTSONNOW
TC WRITEQR
EXTEND
DCA JTLSTADR
DTCB
-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 OCTAL 77765 # -10 MS COMPUTATION TIME
14-TQRMN DEC 11
## Page 573
MINTADR GENADR MINTJET
-.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
16/25QR DEC 0.64000
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
JTLSTADR 2CADR JTLST
RTJETADR GENADR RTJETIME
## Page 574
# 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)
# IMMEDIATELY AFTER CALCULATING THE ATTITUDE ERRORS, THE FOLLOWING TESTS ARE MADE TO DETERMINE WHETHER THE DESCENT
# ENGINE TRIM GIMBAL SHOULD BE USED TO CONTROL THE LEM ATTITUDE RATHER THAN THE RCS JETS:
# 1) IS THE TRIM GIMBAL FUNCTIONALLY OPERATIVE?
# 2) ARE THE Q,R-AXES RCS JETS OFF?
# 3) ARE BOTH TRIM GIMBAL DRIVES OFF?
# 4) IS THE LEM RATE LESS THAN .5 DEG/SEC ABOUT BOTH AXES?
GOTOGTS CAF INITFILT # ERRORS NOW CONTROLLABLE BY TRIM GIMBAL
TS T5ADR # SET T5RUPT TO GO TO FILTER INITIALIZING
TCF RESUME # PROGRAM
BGIM24 OCTAL 07400
DESCADR GENADR TJET-LAW # RETURN ADDRESS FOR JET SELECT LOGIC
INITFILT GENADR FILTINIT # ADDRESS OF FILTER INITIALIZATION RUPT
# "ATTSTEER" IS THE NOMINAL ENTRY POINT FOR REACTION CONTROL SYSTEM ATTITUDE STEERING:
# BEGIN ATTSTEER BY CHECKING IF RATE HOLD MODE(CURRENTLY USED ONLY AT SIVB
# -LEM SEPARATION-206 MISSION PHASE 6) IS REQUESTED(BIT 14 OF DAPBOOLS ON)
# IF BIT 14 IS OFF, BRANCH TO QERRCALC DIRECTLY AND BEGIN AUTOMATIC
# STEERING. IF BIT 14 IS ON, TEST BIT 3 OF DAPBOOLS TO SEE IF THE DESIRED
# RATE HAS BEEN SAVED YET. IF IT IS ON, THIS IS NOT THE FIRST PASS AND
# THE RATE HAS BEEN SAVED. GO DIRECTLY TO QERRCALC FOR AUTOMATIC STEERING
# IF THE BIT IS OFF, THE RATE MUST BE SAVED. TRANSFER TO SAVERATE(BANK25)
# AND RETURN AFTER FIRST PASS TO RESUME AND DAPIDLER.
# IN ORDER TO USE RATE HOLD, THE MISSION PROGRAMMER MUST SET BIT 14 OF
# DAPBOOLS ON AND SET BIT 3 OF DAPBOOLS TO ZERO. UPON RETURNING FROM THE
# FIRST PASS AT LEAST THROUGH RATE HOLD, THE MISSION PROGRAMMER MUST RESET
# BIT 3 TO ITS PREVIOUS VALUE IF THIS IS NOT 1, BECAUSE SAVERATE SETS BIT3
# TO 1 FOR ALL PASSES AFTER THE FIRST IN ORDER NOT TO SAVE THE RATE AGAIN.
# IN ADDITION TO NON-RATE HOLD MODE AND NON-FIRST PASS RATE HOLD MODE
# EXITS TO QERRCALC, THE FIRST PASS EXITS TO RESUME, IE. OUT OF INTERRUPT
# AND BACK TO DAPIDLER TO AWAIT THE NEXT CALL TO DAP.
# RATE HOLD PRODUCES THE FOLLOWING OUTPUT IN ERASABLE --
# CDUD - SCALED AT +/-PI, DESIRED GIMBAL ANGLE
# DELCDU - SCALED AT +/-PI, INCREMENT TO CDUD EVERY 100 MS.
# OMEGAPD, QD, RD - SCALED AT +/-PI/4, BODY AXIS RATES
# ALL THESE ARE USED BY AUTOMATIC STEERING MODE EQUATIONS.
## Page 575
# RATE HOLD REQUIRES OMEGAP, Q, R EVERY .25 SEC, AND ALSO REQUIRES PILOT-
# TO-GIMBAL AXIS MATRIX ELEMENTS, MR12, 22, 13, 23 TO BE LOCATED IN THAT
# ORDER.
# FINALLY, RATE HOLD LEAVES DEBRIS IN --
# DLCDUIDX - LOOP INDEX USED IN COMPUTING DELCDUS, = 1, 0
# ITEMP1 - STORES TEMPORARY PRODUCTS AND SUMS, LEFT WITH DELCDUY IN 1S.
ATTSTEER CS DAPBOOLS # DOES BIT14 OF DAPBOOLS REQUEST RATE HOLD
MASK BIT14 # (SIVB-LEM SEPARATION)
CCS A
TCF QERRCALC # NO, GO DIRECTLY TO AUTOMATIC STEERING
# CHECK DAPBOOLS, BIT3, TO SEE IF DESIRED RATE HAS BEEN SAVED YET
CAE DAPBOOLS # DOES BIT3 SHOW THAT THE DESIRED RATE HAS
MASK BIT3 # BEEN SAVED(NOT FIRST PASS). IF NOT, GO
CCS A # SAVE DESIRED RATES IN THE OMEGADS
TCF NEXDLCDU -1 # YES, COMPUTE THE DELCDUS.
# SAVERATE IS ENTERED ONLY DURING THE FIRST PASS THROUGH RATE HOLD. IT
# SAVES THE CURRENT CDUS FIRST IN CDUDS AND THEN SAVES THE BODY RATES,
# OMEGAP, Q, R IN OMEGAPD, QD, RD. NEXT, WE SET BIT 3 OF DAPBOOLS TO 1.
SAVERATE EXTEND # COME HERE FIRST TIME INTO RATE HOLD IN
DCA CDUY
DXCH CDUYD # ORDER TO SET UP RATES, CDUS, AND DELCDUS
CAE CDUX
TS CDUXD # FIRST, CDUDS = CDUS AT SIVB SEPARATION
EXTEND # NEXT, SAVE CURRENT SIVB SEPARATION RATES
DCA OMEGAP
DXCH OMEGAPD # OMEGAP AND OMEGAR, IN OMEGAPD AND
CAE OMEGAR
TS OMEGARD # OMEGARD. LEM HELD TO RATES FOR 13 SECS.
CAF BIT3 # RESET BIT 3 = 1 SO THAT RATES NOT SAVED
ADS DAPBOOLS # AGAIN IN RATE HOLD PASSES
TCF RESUME # RETURN TO IDLE AFTER SAVING RATE
100MSCAL DEC .025 # 100 MS. SCALED AT 4 SEC. RATE HOLD DELT
# TO COMPUTE TEH DELCDUS, Y AND Z, WE SET UP A LOOP AND SOLVE THE EQUATION
# C(DELCDUY+DLCDUIDX)=(OMEGAQD.C(MR12+DLCDUIDX)+OMEGARD.C(MR13+DLCDUIDX))
# .(100MS) SCALED AT PI IN 2S COMPLEMENT(LIKE CDUS)
## Page 576
# DURING THIS COMPUTATION, ITEMP1 IS USED TO STORE THE PARTIAL SUMS AND
# PRODUCTS. DELCDUY IS RESCALED TO 1 AS MR12 AND MR13 ARE SCALED AT 2.
# AFTER CONVERTING TO TWOS COMPLEMENT, WE SET DELCDUX TO ZERO TO AVOID ANY
# ROLL DURING RATE HOLD MODE. NOTE THAT DELCDUS ARE COMPUTED IN THE NEGA-
# TIVE TO ALLOW 2S COMP. MOD. SUBTRACT LATER ON (CDU-(-DELCDU))
CAF ONE # SET UP LOOP INDEX TO COMPUTE DELCDUS.
NEXDLCDU TS DLCDUIDX # DLCDUIDX = C(A)
CS OMEGAQD # DLCDUIDX = 1 DLCDUIDX = 0
EXTEND # ITEMP1=-OMEGAQD.MR22
INDEX DLCDUIDX
MP MR12 # MR22 SCALED AT 1 MR12 SCALED AT 2
TS ITEMP1 # ITEMP1=-OMEGAQD.MR12
CS OMEGARD # C(A)=ITEMP1 -OMEGARD.MR23
EXTEND
INDEX DLCDUIDX # C(A)=ITEMP1 -OMEGARD.MR13
MP MR13 # MR23 SCALED AT 1 MR13 SCALED AT 2
AD ITEMP1
EXTEND # DELT = 100 MS. SCALED AT 4 SEC.
MP 100MSCAL
TS ITEMP1 # ITEMP1 = C(A) . DELT
CCS DLCDUIDX # CHECK INDEX FOR RESCALING
TCF +3 # DELCDUZ SCALED AT PI/4, RESCALE UNNEEDED
CAE ITEMP1 # DELCDUY SCALED AT PI/2, RESCALE BY
ADS ITEMP1 # ADDING TO ITSELF
CCS ITEMP1 # CONVERT DELCDUS TO TWOS COMPLEMENT (SAME
AD ONE # AS CDUS). ADD ONE TO RESTORE PRE-CCS A
TCF STODLCDU # STORE DIRECT IF POSITIVE ZERO
COM # COMPLEMENT IF NEGATIVE, CCS INCREMENTS
STODLCDU INDEX DLCDUIDX # IF NEGATIVE ZERO, STORE POSITIVE ZERO
TS DELCDUY # STORE FINAL DELCDUZ OR DELCDUY
CCS DLCDUIDX # TEST INDEX DLCDUIDX, EITHER 1 OR 0
TCF NEXDLCDU # IF 1, DO DELCDUY
TS DELCDUX # DELCDUZ,Y DONE, 0 TO DELCDUX-NO ROLL
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)
## Page 577
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
# TEST (1): IS THE TRIM GIMBAL FUNCTIONALLY OPERATIVE?
CAF BIT2 # TEST TO SEE IF LEM AND DAP MODES ALLOW
MASK DAPBOOLS # USE OF TRIM GIMBAL CONTROL SYSTEM:
CCS A # BIT2 = 0 MEANS THAT TRIM GIMBAL CONTROL
TCF STILLRCS # IS POSSIBLE, SO TEST OTHER TG CONDITIONS
# TEST (2): ARE THE Q,R-AXES RCS JETS OFF?
EXTEND # BUT, IF JETS ARE OFF AND TRIM GIMBAL MAY
READ 5 # POSSIBLY BE USED: BEING IN THE JET COAST
CCS A # REGION OF THE PHASE PLANE IS A NECESSARY
TCF STILLRCS # BUT INSUFFICIENT REASON FOR GTS USE
# TEST (3): ARE BOTH TRIM GIMBAL DRIVES OFF?
EXTEND # BITS 9-12 OF CHANNEL 12 ARE THE SIGNALS
READ 12 # WHICH DRIVE THE TRIM GIMBAL ENGINE:
MASK BGIM24 # IF NONE OF THESE BITS ARE ON, THEN BOTH
CCS A # WAITLIST TASKS TO TURN OFF THE DRIVES
TCF STILLRCS # HAVE BEEN DONE AND GTS CONTROL CAN OCCUR
# TEST (4): IS THE LEM RATE LESS THAN .5 DEG/SEC ABOUT BOTH AXES?
CA BIT1
LOOPTOP TS QRCNTR
DOUBLE
INDEX A
CCS OMEGAQ # IS ERROR RATE SMALL ENOUGH FOR GTS.
AD -RATLM+1 # -.5 DEG/SEC SCALED AT PI/4 + 1 BIT
TCF +2
AD -RATLM+1
EXTEND
BZMF +2 # IS RATE LESS,EQUAL .5 DEG/SEC.
TCF STILLRCS # NO. SO USE RCS.
## Page 578
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.
TCF LOOPTOP # NOW TRY THE Q AXIS.
TCF GOTOGTS # TRANSFER TO TRIM GIMBAL CONTROL
-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 STEERING WHENEVER IT IS FOUND THAT THE TRIM GIMBAL CONTROL
# SYSTEM SHOULD NOT BE USED:
STILLRCS 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
RURGENCY CAE 1/NJTSR # SET-UP URGENCY SUBROUTINE
TS 1/NJETAC
## Note: Target (See below)
CS OMEGARD # EDOTR = OMEGAR - OMEGARD
AD OMEGAR
TS EDOTR # SCALED AT PI/4 RADIANS
TC URGROUTN # *** SUBROUTINE CALL ***
TS URGENCYR # URGENCY LEFT IN A SCALED AT 2(4) SECS
DXCH E # MOVE R-AXIS VARIABLES TO R-AXIS ERASABLE
DXCH ER # FROM Q-XIS (COMMON) ERASABLE
TS E
CAE EDOT # (LLOK AT REORG FOR EFFIC: JDA 7/17/66)
TS EDOT(R)
QURGENCY CAE 1/NJTSQ # SET-UP URGENCY SUBROUTINE
TS 1/NJETAC
CS OMEGAQD # EDOTQ = OMEGAQ - OMEGAQD
AD OMEGAQ
TS EDOTQ # SCALED AT PI/4 RADIANS
TC URGROUTN # *** SUBROUTINE CALL ***
TS URGENCYQ # URGENCY LEFT IN A SCALED AT 2(4) SECS
## Note: in the scan the statements starting with QURGENCY are marked with red side bars
## and a red box. The box has the marker CAE EDOTQ and an arrow pointing
## in between the two statements marked as 'Target' above.
##
## ...
## TS 1/NJETAC
## <------|
## CS OMEGARD |
## |
## ... |
## |
## QURGENCY | CAE 1/NJTSQ | |
## | TS 1/NJETAC | |
## |---------------------------| |
## | CS OMEGAQD | |
## CAE | AD OMEGAQ |---|
## EDOTQ | TS EDOTQ |
## |---------------------------|
## | TC URGROUTN |
## | TS URGENCYQ |
##
EXTEND
BZF BURGZERO # TEST FOR BOTH URGENCIES ZERO
EXTEND
MP -TAN22.5
AD URGENCYR
EXTEND
## Page 579
MP COS22.5
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 CA A-B
EXTEND
BZMF MINUSU # NEGATIVE U-AXIS SELECTED
2/4JET-R EXTEND
DCA ER
DXCH E
CAE EDOT(R)
TS EDOT
CAE .5ACCMNR
TS .5ACCMNE
CAF URM # 2/4 JET URGENCY TEST -R AXIS
AD URGENCYR
EXTEND
BZMF 2JETS-R
4JETS-R CAE 1/2JTSR # MOVE 1/NJETAC UNMODIFIED
TS 1/NJETAC
CS SEVEN
TCF POLTYPE # GO FIND BEST POLICY
2JETS-R CCS RMANDACC # ASCENT 4-JET OVER-RIDE TEST
TCF 4JETS-R
## Page 580
CAE 1/2JTSR
TS 1/NJETAC
CS SIX
TCF POLTYPE # GO FIND BEST POLICY
MINUSU CAE .5ACCMNU
TS .5ACCMNE
CAE URGENCYQ # 2 JET OPT/MAND TEST: -U AXIS
AD URGENCYR
CCS A
AD NEGURGUM
TCF +2
AD NEGURGUM
EXTEND
BZMF 2JETS-U
2JETSM-U TC UXFORM
2-U.RATE CS FIVE
TCF POLTYPE # GO FIND BEST POLICY
2JETS-U CCS UMANDACC # ASCENT 2-JET MANDATORY OVER-RIDE TEST
TCF 2JETSM-U
TC UXFORM
CS FOUR
TCF POLTYPE # GO FIND BEST POLICY
NEGAPOSB CAE A+B
EXTEND
BZMF PLUSV
2/4JET-Q CAE .5ACCMNQ
TS .5ACCMNE
CAF UQM # 204 JET URGENCY TEST: -Q AXIS
AD URGENCYQ
EXTEND
BZMF 2JETS-Q +2 # (FIRST TWO INSTRUCTIONS UNNECESSARY)
4JETS-Q CAE 1/2JTSQ # MOVE 1/NJETAC UNMODIFIED
TS 1/NJETAC
CS THREE
TCF POLTYPE # GO FIND BEST POLICY
2JETS-Q CCS QMANDACC # ASCENT 4-JET OVER-RIDE TEST
TCF 4JETS-Q
CAE 1/2JTSQ
TS 1/NJETAC
CS TWO
TCF POLTYPE # GO FIND BEST POLICY
PLUSV CAE .5ACCMNV
## Page 581
TS .5ACCMNE
CS URGENCYQ # 2 JET OPT/MAND TEST: +V AXIS
AD URGENCYR
CCS A
AD NEGURGVM
TCF +2
AD NEGURGVM
EXTEND
BZMF 2JETS+V
2JETSM+V TC VXFORM
2+V.RATE CS ONE
TCF POLTYPE # GO FIND BEST POLICY
2JETS+V CCS VMANDACC # ASCENT 2-JET MANDATORY OVER-RIDE TEST
TCF 2JETSM+V
TC VXFORM
CAF ZERO
TCF POLTYPE # GO FIND BEST POLICY
BURGZERO CAE URGENCYR # TEST FOR SECOND URGENCY ALSO ZERO
EXTEND
BZF XTRANS # NO ROTATION NEEDED NOW
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 .5ACCMNV
TS .5ACCMNE
CS URGENCYQ # 2 JET OPT/MAND TEST: -V AXIS
AD URGENCYR
CCS A
AD NEGURGVM
## Page 582
TCF +2
AD NEGURGVM
EXTEND
BZMF 2JETS-V
2JETSM-V TC VXFORM
2-V.RATE CAF ONE
TCF POLTYPE # GO FIND BEST POLICY
2JETS-V CCS VMANDACC # ASCENT 2-JET MANDATORY OVER-RIDE TEST
TCF 2JETSM-V
TC VXFORM
CAF TWO
TCF POLTYPE # GO FIND BEST POLICY
NEGANEGB CAE A-B
EXTEND
BZMF 2/4JET+R
PLUSU CAE .5ACCMNU
TS .5ACCMNE
CAE URGENCYQ # 2 JET OPT/MAND TEST: +U AXIS
AD URGENCYR
CCS A
AD NEGURGUM
TCF +2
AD NEGURGUM
EXTEND
BZMF 2JETS+U
2JETSM+U TC UXFORM
2+U.RATE CAF THREE
TCF POLTYPE # GO FIND BEST POLICY
2JETS+U CCS UMANDACC # ASCENT 2-JET MANDATORY OVER-RIDE TEST
TCF 2JETSM+U
TC UXFORM
CAF FOUR
TCF POLTYPE # GO FIND BEST POLICY
2/4JET+R EXTEND
DCA ER
DXCH E
CAE EDOT(R)
TS EDOT
CAE .5ACCMNR
TS .5ACCMNE
CAF URM # 2/4 JET URGENCY TEST +R AXIS
AD URGENCYR
EXTEND
## Page 583
BZMF 2JETS+R
4JETS+R CAE 1/2JTSR # MOVE 1/NJETAC UNMODIFIED
TS 1/NJETAC
CAF FIVE
TCF POLTYPE # GO FIND BEST POLICY
2JETS+R CCS RMANDACC # ASCENT 4-JET OVER-RIDE TEST
TCF 4JETS+R
CAE 1/2JTSR
TS 1/NJETAC
CAF SIX
TCF POLTYPE # GO FIND BEST POLICY
2/4JET+Q CAE .5ACCMNQ
TS .5ACCMNE
CAF UQM # 2/4 JET URGENCY TEST: + Q AXIS
AD URGENCYQ
EXTEND
BZMF 2JETS+Q +2 # (FIRST TWO INSTRUCTIONS UNNECESSARY)
4JETS+Q CAE 1/2JTSQ # MOVE 1/NJETAC UNMODIFIED
TS 1/NJETAC
CAF SEVEN
TCF POLTYPE # GO FIND BEST POLICY
2JETS+Q CCS QMANDACC # ASCENT 4-JET OVER-RIDE TEST
TCF 4JETS+Q
CAE 1/2JTSQ
TS 1/NJETAC
CAF EIGHT
POLTYPE TS POLRELOC
EXTEND
DCA POLADR
DTCB
POLADR 2CADR POLTYPEP
## Page 584
# 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 +2 # CHECK FOR VALUE BEYOND SCALING RANGE
TCF REDUCEQR # SAME AS REDUCEUV
CAE L
TS EDOT # SAVE RATE SCALED AT PI/16
EXTEND
SQUARE
TS EDOT(2) # SAVE RATE SQUARED SCALED AT PI(2)/2(8)
CAE EQ # TRANSFORM ANGULAR ERROR TO U/V-AXIS
AD ER
EXTEND
MP .707
TS E # SAVE ERROR SCALED AT PI
TC Q
.707 DEC 0.70711 # SQRT(1/2)
NEGURGUM DEC -.18750
NEGURGVM EQUALS NEGURGUM
UQM EQUALS NEGURGUM
URM EQUALS NEGURGUM
## Page 585
# GENERALIZED URGENCY SUBROUTINE FOR USE ON ALL PILOT AXES (P,Q,R)...
# DEPENDING ON THE AXIS PROBLEM, EDOTP,EDOTQ,EDOTR IS EXPECTED TO ARRIVE IN A AND 1/2JTSP,1/2JTSQ,1/2JTSR IN
# 1/NJETAC. NOTE THAT THE Q,R-AXIS PROBLEM IS EXPECTED TO DO THE R-AXIS PROBLEM FIRST (FOR EFFICIENT USE OF
# ERASABLE) AND THE Q,R-AXIS PROBLEM DOES NOT USE TPSIG.
# (THIS ROUTINE SHOULD BE IN THE FIXED BANK OF THE Q,R-AXIS PROBLEM SINCE IT IS CALLED ONLY ONCE FROM THE P-AXIS.)
URGROUTN TS EDOT # SAVE FOR REDUCEQR
EXTEND # EXPECT EDOT IN A SCALED AT PI/4 RAD/SEC
MP BIT3 # TRY TO RESCALE TO PI/16 RADIANS/SECOND
EXTEND
BZF +2 # OVERFLOW CHECK ON NEW SCALING
TCF REDUCERA # DISTINGUISH BETWEEN P AND Q,R
+2 CCS L # INSURE NON-ZERO EDOT (TPSIG FLAG)
AD TWO
TCF +2
COM
+2 AD NEG1
TS TPSIG # (FOR P-AXIS PROBLEM ONLY)
TS EDOT # SAVE FOR T-JET LAW SCALED AT PI/16
EXTEND
SQUARE
TS EDOT(2) # SCALED AT PI(2)/2(8) RAD(2)/SEC(2)
EXTEND # 1/2JTSP,1/2JTSQ,1/2JTSR IN 1/NJETAC
MP 1/NJETAC # SCALED AT 2(8)/PI SEC(2)/RAD
EXTEND
SU DB # DEADBAND SCALED AT PI RADIANS
TS FPQR # .5(1/ACC)EDOT(2) - DB SCALED AT PI RADS
CAE EDOT(2) # SCALED AT PI(2)/2(8) RAD(2)/SEC(2)
EXTEND
MP .5ACCMNE # .5(1/ACCMIN) AT 2(8)/PI SEC(2)/RAD
AD DB # SCALED AT PI RADIANS
TS FPQRMIN # .5(1/ACCMIN)EDOT(2) + DB AT PI RADIANS
CCS EDOT # EDOT TEST ON SIGN
CAE E # P,Q,R-AXIS ERROR SCALED AT PI RADIANS
TCF +2
TCF EDOTNEG
+2 ADS FPQR # E + .5(1/ACC)EDOT(2) - DB AT PI RADIANS
FTEST CCS EDOT # EDOT GUARANTEED NOT +0 OR -0
CCS FPQR # FPQR GUARANTEED NOT +0
TCF TPSIGCHG # EDOT.G.+0, FPQR.G.+0
CCS FPQR # EDOT.L.-0
TCF FPMINCAL # EDOT.L.-0,FPQR.G.+0/EDOT.G.+0,FPQR.L.-0
TCF FPMINCAL # EDOT.G.+0, FPQR.E.-0 (FROM FIRST CCS)
TCF TPSIGCHG # EDOT.L.-0, FPQR.L.-0
## Page 586
TPSIGCHG CS TPSIG # EDOT.L.-0, FPQR.E.-0 (FROM 2ND CCS)
TS TPSIG # (SIGN OF P-AXIS JETS IF NEEDED)
CAE EDOT # SCALED AT PI/16 RADIANS/SECOND
EXTEND
MP BIT11 # SCALE TO PI RADIANS/SECOND
AD FPQR # (IMPLICIT MULT OF FPQR BY 1/SEC)
TCF URGMULT # THIS URGENCY = (1/ACC)(FPQR+EDOT)
EDOTNEG CS FPQR # SCALED AT PI RADIANS
AD E
TS FPQR # E - .5(1/ACC)EDOT(2) + DB
TCF FTEST
FPMINCAL CCS FPQR # NECESSARY RETEST ON FPQR
CS FPQRMIN
TCF +2 # E - .5(1/ACCMIN)EDOT(2) - DB
CAE FPQRMIN
AD E # E + .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 CAF ZERO # EDOT.L.-0, F.E.-0 (FROM SECOND CCS)
TCF URGSTORE # THIS URGENCY ZERO (IN COAST REGIAN)
NORMURG CAE FPQRMIN # THIS URGENCY FPQRMIN(1/ACC)
URGMULT EXTEND
MP 1/NJETAC
EXTEND # SCALE FROM 2(9) TO 2(4) SECONDS
MP BIT6 # 1/NJETAC = 1/2JETAC, WANT 1/1JETAC
EXTEND
BZF URGTOA
CCS A
CA POSMAX
TCF URGSTORE
CS POSMAX
TCF URGSTORE
URGTOA CA L
URGSTORE TC Q # *** RETURN ***
## Page 587
# GENERALIZED T-JET LAW SUBROUTINE FOR USE BY BOTH THE P-AXIS AND Q,R-AXIS PROBLEMS (ONCE EACH)...
# DEPENDING ON THE AXIS ABOUT WHICH ROTATION IS DEEMED MOST URGENT, 1/JACC FOR THAT AXIS IS EXPECTED IN 1/NJETAC
# AND THE CORRESPONDING VALUES FOR E, EDOT, AND EDOT(2) ARE ALSO EXPECTED TO BE SET UP IN ADVANCE.
# (THIS ROUTINE MAY RESIDE IN THE FIXED BANK OF EITHER THE P-AXIS OR Q,R-AXIS PROBLEM.)
# ***** IMPORTANT NOTICE *****
# NOTE THAT TJETLOC IS THE LOCAL ENTRY POINT FOR THIS PROGRAM AND TJETLAW IS THE CROSS-BANK ENTRY. SEE BELOW
# FOR THE TWO CALLING SEQUENCES FOR OPTIMAL USE AND BE ASSURED THAT FOR EITHER CASE ISWRETRN MUST BE USED AND
# RUPTREG3 CONTAINS THE EVENTUAL RETURN ADDRESS.
# LOCAL CALL:
# TC TJETLOC
# TCF NO ROTATION JETS
# TS TIME CALCULATED
# CROSS-BANK CALL:
# CAF TJETLAWCADR
# TC ISWCALL
# TCF NO ROTATION JETS
# TS TIME CALCULATED
# ***** VERY IMPORTANT NOTICE *****
# SINCE THE Q,R-AXES SWITCHED FIXED BANK BECAME VERY FULL (DUE TO THE ADDITION OF RATE-HOLD MODE AND A BETTER
# RCS-GTS INTERFACE), THE LOCAL CALL AND LOCAL ENTRY POINT FOR THE T-JET LAW HAVE BEEN DELETED AS OF REVISION 7
# OF AURORA (BY JON ADDELSTON 10/24/66).
# FOR CONVENIENCE, WE INCLUDE HERE THE CALL FROM THE Q,R-AXIS PROBLEM:
BANK 24
QR-JETLW CADR TJET-LAW # CADR OF Q,R-ENTRY TO TJETLAW SUBROUTINE
TJET-LAW TC T6JOBCHK # CHECK T6 CLOCK RUPT BEFORE SUBROUTINE
CAF QR-JETLW # T-JETLAW CALLING SEQUENCE (LIKE P-AXIS)
TC ISWCALL # (IN INTERBANK COMMUNICATION LOG SECTION)
TCF XTRANS # GO TO XTRANS SINCE NO ROTATION IS USED
TS TQR # SAVE CALCULATED TIME FOR THE TORQUE
TCF TORQUEV # VECTOR RECONSTRUCTION PROBLEM
## Note: the following seems to be fully assembled code injected as comment. See the VERY IMPORTANT NOTICE above .
# 24,1000 0 0006 1 TJETLOC EXTEND LOCAL ENTRY FAKES CROSS-BANK IN SMALL DT
## Page 588
# 24,1001 22 076 0 QXCH RUPTREG3 SAVE RETURN WHERE ISWCALL DOES
# 24,1002 3 4174 1 CAF ISWRETRN +3 GET CADR OF RUPTREG3 FROM TC INSTRUCTION
# 24,1003 54 002 1 TS Q SO TC Q GOES TO RUPTREG3 FOR RETURN
BANK 25
TJETLAW CS EDOT # TEST EDOT SIGN
EXTEND
BZMF +4
TS EDOT # SIGNS OF E AND EDOT CHANGED IF EDOT NEG
CS E # TO CONSIDER FUNCTIONS IN UPPER HALF OF
TS E # THE E,EDOT PHASE PLANE
CAE EDOT(2) # SCALED AT PI(2)/2(8) RAD(2)/SEC(2)
EXTEND # (1/NJETAC HAS BEEN SET FOR N JETS)
MP 1/NJETAC # SCALED AT 2(8)/PI SEC(2)/RAD
EXTEND
MP BIT14 # .5EDOT(2)/NJETACC SCALED AT PI RADIANS
AD E # SCALED AT PI RADIANS (ERROR)
EXTEND
SU DB # SCALED AT PI RADIANS (DEADBAND)
TS HDAP # E + .5EDOT(2)/NJETACC - DB
EXTEND
BZMF NEGHDAP
CAE EDOT # SCALED AT PI/16 RAD/SEC (RATE)
EXTEND
MP 1/NJETAC # SCALED AT 2(8)/PI SEC(2)/RAD (ACC) (-1)
TS TERMA # SCALED AT 2(4) SEC (CNTRL SMPL PERIOD)
AD NEGCSP # EDOT/NJETACC - CSP SCALED AT 16 SECONDS
EXTEND
BZMF +3
MAXTJET CAF BIT14 # (1/2) IS LIKE POSMAX AT THIS SCALING
TCF NORMRETN # (OVERFLOW IS THUS PREVENTED)
CS HDAP # -DBMINIMP + E + EDOT(2)/NJETACC - DB
AD MINIMPDB # SCALED AT PI RADIANS
EXTEND
BZMF MAINBRCH
CAE TERMA # EDOT/NJETACC - .5TJMIN SCALED AT 16 SECS
AD -20MS # - 20 MS SCALED AT 16.
EXTEND
BZMF TJMIN
AD 23.75MS # WE GET TERMA + 3.75 MS.
TCF TJETSCAL
## Page 589
TJMIN CS PAXCALL # WE KNOW WE DO P AXIS SINCE WE HAVE RUPT-
AD RUPTREG3 # REG3 = T-JETLAW +3(Q-AXIS CALL NOT AT
EXTEND # SAME LOCATION-- WE HOPE - AND INSURE.).
BZF WEDOP
CAE NO.QJETS # NO. OF Q JETS ON
EXTEND
BZF WEDOR
CAE NO.RJETS # NO. OF R JETS ON
EXTEND
BZF WEDOQ
DOTJMIN CAF +TJMINT6
NORMRETN INCR RUPTREG3 # *** RETURN +1 ***
TC Q # BACK TO ISWRETRN
WEDOP TS OMEGAP
TCF DOTJMIN
WEDOR TS OMEGAR
TCF DOTJMIN
WEDOQ TS OMEGAQ
TCF DOTJMIN
PAXCALL GENADR T-JETLAW +3
NEGHDAP CAE EDOT(2) # SCALED AT PI(2)/2(8) RAD(2)/SEC(2)
EXTEND
MP .5ACCMNE # .5(1/ACCMIN) AT 2(8)/PI SEC(2)/RAD
AD E # SCALED AT PI RADIANS (ERROR)
AD DB # SCALED AT PI RADIANS (DEADBAND)
AD DBMINIMP
EXTEND
BZMF +2
TC Q # *** RETURN *** (NO JETS)
+2 CS MAXRATE # 10 DEG/SEC SCALED AT PI/16 RAD/SEC
AD EDOT # EDOT - MAXRATE
EXTEND
BZMF +2
TC Q # *** RETURN *** (NO JETS)
+2 CS EDOT # SCALED AT PI/16 RAD/SEC (RATE)
EXTEND
MP 1/NJETAC # SCALED AT 2(8)/PI SEC(2)/RAD (ACC)(-1)
TS TERMA # -EDOT/NJETACC SCALED AT 2(4) SECONDS
CS HDAP # - E + .5EDOT(2)/NJETACC + DB
AD E
AD E # TWICE ERROR NEGATES E OF HDAP(OLD)
AD MINIMPDB
MAINBRCH TS HDAP # -HDAP(OLD) + 2E + DBMINIMP AT PI RADS
CAE 1/NJETAC # SCALED AT 2(8)/PI SEC(2)/RAD
EXTEND
MP BIT14 # (1/2)(1/NJETAC)
## Page 590
AD .5ACCMNE
TS DENOM # .5(1/NJETACC) + .5(1/ACCMIN) AT 2(8)/PI
EXTEND
MP MAXRATE2 # SCALED AT PI(2)/2(8) RAD(2)/SEC(2)
AD HDAP # DENOM.MAXRATE(2) + HDAP AT PI RADIANS
EXTEND
BZMF NOROOT
CAE HDAP # SCALED AT PI RADIANS
EXTEND
DV DENOM # SCALED AT 2(8)/PI SEC(2)/RAD(2)
EXTEND
MP 1/NJETAC
EXTEND
MP 1/NJETAC
TS TERMB # -(HDAP/DENOM)(1/NJETACC)(2) AT 2(8) SECS
CAF NEGCSP # SCALED AT 2(4) SECONDS
AD TERMA
EXTEND
SQUARE # SCALED AT 2(8) SECONDS
AD TERMB
EXTEND # (TERMA - CSP)(2) + TERMB
BZMF MAXTJET
CAF -TJMIN16
AD TERMA # TERMA - TJMIN SCALED AT 2(4) SECONDS
EXTEND
BZMF MAYNOJET
PREROOT EXTEND # MUST SAVE Q .
QXCH A+B
TC T6JOBCHK
CS TERMB
TC SPROOT # SQRT(-TERMB) SCALED AT 2(4) SECONDS
EXTEND # MUST RESTORE OLD Q AFTER SPROOT
QXCH A+B
TJSUM AD TERMA # TERMA + SQRT(-TERMB)
TJETSCAL DOUBLE # NOW SCALED AT 2(3) SECONDS
EXTEND
MP 25/32QR # SCALED T O 16/25 2(4) SECONDS.
TCF NORMRETN # *** RETURN +1 ***
NOROOT CAF MAXRATE
AD .6DEG/SC # MAXRATE + DEL SCALED AT PI/16 RAD/SEC
EXTEND
MP 1/NJETAC # SCALED AT 2(8)/PI SEC(2)/RAD
## Page 591
TCF TJSUM # SCALED AT 2(4) RADIANS
MAYNOJET CAF -TJMIN16
AD TERMA # TERMA - TJMIN SCALED AT 2(4) SECONDS
EXTEND
SQUARE # SCALED AT 2(8) SEC(2)
AD TERMB
EXTEND
BZMF PREROOT # (TERMA - TJMIN)(2) + TERMB AT 2(8)
TC Q # *** RETURN *** (NO JETS)
NEGCSP DEC -.00625 # 100 MS SCALED AT 2(4) SECONDS
+TJMINT6 DEC +.00073
-TJMIN16 DEC -.00047
-TJMINQR EQUALS -TJMIN16
23.75MS DEC 0.00148 # 23.75 MS SCALED AT 16 SECONDS.
-20MS DEC -.00125 # - 20 MS SCALED AT 16 SECONDS.
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 592
# 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 24
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
# THESE PROGRAMS REDUCE THE RATE ERROR TO 10.6 DEGREES/SECOND.
REDUCERA CS EDOT # TEST FOR P-AXIS PROBLEM
AD EDOTP # EXACT MATCH MEANS P-AXIS
EXTEND
BZF REDUCEP # P-AXIS SUM IS ALWAYS MINUS ZERO
REDUCEQR TC REDUCESC # GET SHRINK FACTOR
EXTEND # SHRINK Q-AXIS COMPONENT
MP EDOTQ
TS QRATEDIF
CAE EDOTR # SHRINK R-AXIS COMPONENT
EXTEND
MP EDOT
TS RRATEDIF
TCF OBEYQRRC
REDUCEP TC REDUCESC # GET SHRINK FACTOR
EXTEND # SHRINK P-AXIS COMPONENT
MP EDOTP
TS EDOTP
TS TPSIG
EXTEND
DCA +2
DTCB
2CADR OBEYRAPE
## Page 593
REDUCESC CAF 10.6D/S # SCALED AT PI/4
EXTEND
DV EDOT # RESULT SCALED AT 1
TS EDOT # SAVE FACTOR IN EDOT FOR R SHRINKAGE
TC Q # *** RETURN ***
10.6D/S DEC 0.23111 # 10.6 DEGRESS/SECOND SCALED AT PI/4
ENDDAP24 EQUALS