https://github.com/virtualagc/virtualagc
Tip revision: 863c8365925ddcc6d13fa7197ccc3ba3dd8a6391 authored by Mike Stewart on 28 July 2019, 00:49:11 UTC
Luminary 130: Added bugger word checking using checksums from 2021152G.
Luminary 130: Added bugger word checking using checksums from 2021152G.
Tip revision: 863c836
TVCROLLDAP.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: TVCROLLDAP.agc
## Purpose: Part of the source code for Colossus, build 249.
## It is part of the source code for the Command Module's (CM)
## Apollo Guidance Computer (AGC), for Apollo 9.
## Assembler: yaYUL
## Reference: Starts at p. 948.
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 08/24/04 RSB Began transcribing.
## 05/14/05 RSB Corrected website reference above.
## 2010-10-25 JL Fixed page numbers.
## 2011-05-07 JL Removed workarounds.
## 2017-01-06 RSB Page numbers now agree with those on the
## original harcopy, as opposed to the PDF page
## numbers in 1701.pdf.
## 2017-01-20 RSB Cross-diff'd comment text (not whitespace)
## vs the already-proofed corresponding Colossus
## 237 and Comanche 55 source-code files
## and corrected errors found.
## 2017-01-20 RSB Fixed comment-text errors noted while diff'ing
## vs Colossus 249.
##
## The contents of the "Colossus249" files, in general, are transcribed
## from a scanned copy of the program listing. Notations on this
## document read, in part:
##
## Assemble revision 249 of AGC program Colossus by NASA
## 2021111-041. October 28, 1968.
##
## This AGC program shall also be referred to as
## Colossus 1A
##
## Prepared by
## Massachusetts Institute of Technology
## 75 Cambridge Parkway
## Cambridge, Massachusetts
## under NASA contract NAS 9-4065.
##
## Refer directly to the online document mentioned above for further information.
## Please report any errors (relative to the scanned pages) to info@sandroid.org.
##
## In some cases, where the source code for Luminary 131 overlaps that of
## Colossus 249, this code is instead copied from the corresponding Luminary 131
## source file, and then is proofed to incorporate any changes.
## Page 948
# PROGRAM NAME....ROLL AUTOPILOT, CONSISTING OF ROLLDAP, DURATION, NOROLL1, E
# ORIGINAL CODING BY F.W.MARTIN, 1965 (SUNDIAL) TC.
# LOG SECTION....ROLL AUTOPILOT SUBROUTINE....DAPCSM
# MOD BY ENGEL DATE 28 DEC, 1967 (SUNDISK TO COLOSSUS)
#
# FUNCTIONAL DESCRIPTION....
#
# *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER
#
# *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN
# BY IGNOVER (IGNITION)
#
# *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE
#
# *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3
#
# *USES T6 CLOCK TO TIME JET FIRINGS
#
# *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER
#
# *MINIMUM JET FIRING TIME = 15 MS
#
# *JET PAIRS FIRE ALTERNATELY
#
# *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED
#
# *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION
# OF A JET FIRING TIME IS MADE ON A LATER PASS
#
# CALLING SEQUENCE....
#
# *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)
# WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)
#
# NORMAL EXIT MODES.... ENDOFJOB
#
# ALARM OR ABORT EXIT MODES.... NONE
#
# SUBROUTINES CALLED.....NONE
#
# OTHER INTERFACES....
#
# *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC
# EVERY 10 SECONDS (VIA MASSPROP AND S40.15)
#
# *TVCRESTART PACKAGE WILL RE-START ROLL DAP AFTER A RESTART (PICKING
# UP THE ORIGINAL OGAD)
#
# ERASABLE INITIALIZATION REQUIRED....
#
# *1/CONACC (S40.15)
#
# *OGAD (CDUX, AT IGNOVER)
#
# *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)
#
# *OGAPAST (OGANOW AT TVCEXECUTIVE)
#
# *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)
#
# OUTPUT....
#
# *ROLL JET PAIR FIRINGS
#
# DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
## Page 949
#
# SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING
# LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.
# SWITCHING LOGIC IN THE PHASE PLANE....
#
# OGARATE
# *
# *
# * * * * * * * * * * * *
# * (REGION 1, SEE TEXT BELOW)
# * *
# *
# * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL)
# * * .
# * * *
# * * (FIRE NEG ROLL JETS)
# * * *
# (-DB,+LMCRATE)....* *
# * * *
# * * OGAERROR
# ************************************************************************
# * * (-AK, OGAERR)
# * * (REGION 6-PRIME)
# * (SEE TEXT BELOW)
# * * *
# * * ...STRAIGHT LINE
# (FIRE POS ROLL JETS) * * * .
# * (COAST) *
# * * * * * * * * * * *
# * -MINLIM
# * *
# *
# * * * * * * * * * * * * * * * *
# * -MAXLIM
# *
# *
#
# SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF
# CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC
# ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET
# FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,
# SUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,
# ABOVE.
#
# THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF
# TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...
# 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)
## Page 950
#
# GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE
# IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL
# PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3
# DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION
# TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT
# LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE
# INSTEAD. CONSIDER AN OPERATING POINT IN REGION 6. PASS A TANGENT TO
# THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS
# INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...
# THE INTERSECTION DEFINES DESIRED OGARATE. IF THE OPERATING POINT IS
# CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED
# THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS
# THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE
# TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND
# INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE
# RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2
# SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE
# APPROXIMATION.
#
# FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE
# INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS
# IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO
# THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.
# IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING
# THE DESIRED INTERSECTION (IE, IN THE REGION BETWEEN THE MINLIM
# AND THE STRAIGHT LINE SWITCH) IT WILL EXIBIT NORMAL COAST-REGION
# BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY
# IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET
# FAILED-ON.
#
# WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS
# MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,
# DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND
# OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF
# REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED
# FROM REGION 1 TO REGION 6, THE DUMMY POINT IS NO LONGER REQUIRED,
# AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6 POINT.
#
# EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....
# 2
# SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)
#
# EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....
#
# SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP
#
# WHERE INTERCEP = DB(-SLOPE) - LMCRATE
## Page 951
#
# EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE....
#
# DOGADOT = NUM/DEN, WHERE
# 2
# NUM = (-SLOPE)(OGARATE) (1/CONACC)
# +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))
# +LMCRATE
#
# DEN = (-SLOPE)(OGARATE)(1/CONACC) - SGN(DELOGA)
# 2
# DELOGA = OGAERROR - (DB - (OGADOT) (1/CONACC)/2)SGN(OGADOT)
#
# FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE)
# FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.
# FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR
# AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....
#
# OGAERROR = DELOGA + DB SGN(OGARATE)
#
# OGARATE = -LMCRATE SGN(OGARATE)
#
# NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING
# ALSO, AT POINT WHERE DOGADOT IS COMPUTED, REGISTER DELOGA IS USED
# AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE
## Page 952
# ROLLDAP CODING....
SETLOC DAPROLL
BANK
EBANK= OGANOW
COUNT* $$/ROLL
ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER
EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC)
MSU OGAPAST
EXTEND
MP BIT5
LXCH A
TS OGARATE # SC.AT B-4 REV/SEC
# COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)
# EXAMINE DURATION OF LAST ROLL FIRING IF JETS ARE NOW ON.
DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX
EXTEND
BZF +2 # ROLL JETS ARE NOW OFF.
TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON.
CAE TEMREG # EXAMINE LAST FIRING INTERVAL
EXTEND # IF POSITIVE, DONT FIRE
BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF.
CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT
TS TEMREG # RESET TEMREG
WAIT1/2 TCF TASKOVER # EXIT ROLL DAP
# COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING)
ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC
EXTEND
MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV
EXTEND
MP OGARATE
AD DB # SCALED AT 2(+0) REV
TS TEMREG # QUANTITY SCALED AT 2(+0) REV.
# GET SIGN OF OGARATE
CA OGARATE
EXTEND
BZMF +3 # LET SGN(0) BE NEGATIVE
CA BIT1
TCF +2
CS BIT1
TS SGNRT # + OR - 2(-14)
# CALCULATE DISTANCE FROM SWITCH PARABOLA,DELOGA
EXTEND
MP TEMREG # SGN(OGARATE) TEMREG NOW IN L
## Page 953
CS L
AD OGA # SCALED AT 2(+0) REV
DELOGAC TS DELOGA # SC.AT B+0 REV, PLUS TO RIGHT OF C-PARAB
# EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.
EXTEND
BZMF +3
CAF PRIO30 # = CA (30000)
TCF +2
CAF BIT15 # = CS (40000)
TS I
INDEX I # TSET ON I SGN(OGARATE)
0 SGNRT # CA OR CS
COM
EXTEND
REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN)
# NO JET FIRE YET. TEST FOR MAX OGARATE
INDEX I
0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE
TS IOGARATE # I.E. I OGARATE
AD MAXLIM # SCALED AT 2(-4) REV/SEC
EXTEND
REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS)
# COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE
# SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG. QUANTITY
CA OGARATE
EXTEND
MP BIT14
TS TEMREG
CA OGA
EXTEND
MP -SLOPE
DDOUBL
DDOUBL
DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG)
AD TEMREG
INDEX I
0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC
COM
AD INTERCEP # SCALED AT 2(-3) REV.
COM
EXTEND
REG2TST BZMF NOROLL # IF REGION 2 (COAST SIDE OF STRT LINE)
# CHECK TO SEE IF OGARATE IS ABOVE MINLIM
CA IOGARATE # ALWAYS NEGATIVE
AD MINLIM # SCALED AT 2(-4) REV/SEC
## Page 954
EXTEND
REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM)
# ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT
INDEX I
0 OGA
COM
AD DB
COM
EXTEND
REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB)
# JETS MUST FIRE NOW. OGARATE IS NEG. (OR VISA VERSA). USE DIRECT STR. LINE.
# DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A
# STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION
# OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT
# LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR
# OPERATING POINTS IN REGIONS 6 AND 6-PRIME)
REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT
TS DELOGA # ACTUAL STATE
CA OGARATE
TS DELOGART # ACTUAL STATE, I.E. DEL OGARATE
TCF ONROLL
# JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VISA VERSA), USE INDIRECT
# STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA
# + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY
# OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1-PRIME )
ROLLON INDEX I
0 DB
ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA
CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC
INDEX I
0 A
TS DELOGART # EVALUATE STATE FOR INDIRECT LINE.
# SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.
ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL
MP 1/CONACC
DOUBLE
EXTEND
MP -SLOPE
TS TEMREG # 2(-SLOPE)RATE /CONACC
EXTEND
MP DELOGART
TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC
CS BIT11
INDEX I
## Page 955
0 A
RATEDEN ADS TEMREG # DENOMINATOR COMPLETED
INDEX I
0 DELOGA
COM
AD DB
COM
EXTEND
MP -SLOPE
ADS DELOGART
CA LMCRATE
EXTEND
MP BIT11
RATENUM AD DELOGART # NUMERATOR COMPLETED
XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK
CA ZERO
EXTEND
DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A
EXTEND
BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L
MINLIMAP CCS A
CAF POSMAX # POSITIVE OVERFLOW
TCF ROLLSET
CS POSMAX # NEGATIVE OVERFLOW
TCF ROLLSET
DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 IN L
EXTEND
DV TEMREG # RESULT OF DIVISIONIS DESIRED OGARATE
TCF ROLLSET # (SCALED AT B-4 REV/SEC)
RATELIM CS MAXLIM
INDEX I
0 A # IF I = CA, DESIRED RATE IS -MAXLIM
# BASED ON DESIRED RATE - PRESENT RATE, COMPUTE JET FIRE TIME
ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4)
EXTEND
SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC
TS TEMREG # OVERFLOW PROTECT
TCF +3 # " "
INDEX A # " "
CS LIMITS # " "
EXTEND
MP T6SCALE # T6SCALE = 8/10.24
EXTEND
## Page 956
MP 1/CONACC # SCALED AT 2(+9) SECSQ/REV
DDOUBL
DDOUBL
TS TEMREG # OVERFLOW PROTECT
TCF +3 # " "
INDEX A # " "
CS LIMITS # " "
TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT
EXTEND # POS MEANS POSITIVE ROLL TORQUE.
BZF NOROLL
# JET FIRE TIME IS NZ, ARE JETS ON NOW.
CAE TEMREG # DESIRED CHANGE IN OGARATE
EXTEND
MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF)
CCS A
TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY
TCF NEWROLL # START NEW FIRING NOW, PLUS
TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED
TCF NEWROLL # START NEW FIRING NOW, MINUS
# CONTINUE PRESENT FIRING
MOREROLL CAF ZERO
TS I # USE TEMP. AS MOREROLL SWITCH
TCF MAXTFIRE
# START NEW FIRING BUT CHECK IF GREATER THAN MINIMUM FIRE TIME.
NEWROLL CCS TEMREG # CALL THIS T6FIRE
AD ONE
TCF +2
AD ONE
COM # -MAG(T6FIRE)
AD TMINFIRE # TMINFIRE-MAG(T6FIRE)
COM
EXTEND
MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE)
# PROCEED WITH NEW FIRING BUT NOT LONGER THAN TMAXFIRE
MAXTFIRE CA TEMREG
EXTEND
MP 1/TMXFIR # I.E. 1/TMAXFIRE
EXTEND
MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE
CCS A
CAF TMAXFIRE # USE MAXIMUM
TCF +2
CS TMAXFIRE # USE MAXIMUM
TS TEMREG
## Page 957
# SET UP SIGN OF REQUIRED TORQUE
NOMXFIRE CCS TEMREG # FOR TORQUE SIGN
CA POSMAX # POSITIVE TORQUE REQUIRED
TCF +2
CA NEGMAX # NEGATIVE TORQUE REQUIRED
TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE
COM # COMPLEMENT... POS. FOR NEG. TORQUE
EXTEND
BZMF +3 # POSITIVE TORQUE REQUIRED
CS TEMREG
TS TEMREG
FIRELOOK CA I # IS IT MOREROLL
EXTEND
BZF FIREPLUG # YES
TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG
FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING
EXTEND
SU TEMREG
EXTEND
EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP
TCF JETROLL
NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6)
TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS
TS TEMREG
JETROLL EXTEND
DCA NOROL1T6
DXCH T6LOC
CA TEMREG # ENTER JET FIRING TIME
TS TIME6
CA I # I=0 IF MOREROLL, KEEP SAME JETS ON
EXTEND
SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP
CCS ROLLFIRE
TCF +TORQUE
TCF T6ENABL
TCF -TORQUE
TCF T6ENABL
# PROCEED WITH + TORQUE
+TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION
MASK BIT1 # WAS IT NO.9-11
EXTEND
BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME
## Page 958
NO.13-15 CS BIT1
MASK ROLLWORD
TS ROLLWORD # CHANGE BIT 1 TO ZERO
CAF +ROLL2
EXTEND
WRITE CHAN6
TCF T6ENABL
NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)
ADS ROLLWORD # CHANGE BIT 1 TO ONE
CAF +ROLL1
EXTEND
WRITE CHAN6
TCF T6ENABL
-TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION
MASK BIT2 # WAS IT NO.12-10
EXTEND
BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME
NO.16-14 CS BIT2
MASK ROLLWORD
TS ROLLWORD # CHANGE BIT 2 TO ZERO
CAF -ROLL2
EXTEND
WRITE CHAN6
TCF T6ENABL
NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)
ADS ROLLWORD # CHANGE BIT 2 TO ONE
CAF -ROLL1
EXTEND
WRITE CHAN6
T6ENABL CAF BIT15
EXTEND
WOR CHAN13
RDAPEND TCF TASKOVER # EXIT ROLL DAP
## Page 959
# THIS T6 TASK SHUTS OFF ALL ROLL JETS
NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK
CAF ZERO # CALLED BY ..JETROLL..)
TS ROLLFIRE # ZERO INDICATES JETS NOW OFF
EXTEND
KILLJETS WRITE CHAN6
TCF NOQRSM
## Page 960
# CONSTANTS FOR ROLL AUTOPILOT....
EBANK= BZERO
NOROL1T6 2CADR NOROLL1
DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV
-SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0
# PER SEC
LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT
# B-4 REV/SEC
INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC
MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC
1/MINLIM DEC 360 B-18 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT
MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC
TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS
TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS
1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT,
# ROUNDS TO OCT00004, SO ALLOWS 2.56
# SEC FIRINGS BEFORE APPLYING LIMIT
T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC)
+ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11
+ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15
-ROLL1 = TEN # ONBITS FOR JETS 12 NAD 10
-ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14