swh:1:snp:92f3f585b9ae79620ad8c41a332d6329b31fd381
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
Fixed a potential string-overflow bug in yaASM. Removed timestamps from
Tip revision: 078c79d
P-AXIS_REACTION_CONTROL_SYSTEM_AUTOPILOT.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: P-AXIS_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-24 RSB Transcribed through page 504.
## 2016-10-28 RSB Finished transcribing.
## 2016-10-31 RSB Typos.
## 2016-11-01 RSB More typos.
## 2016-12-05 RSB Comment-proofing with octopus/ProoferComments
## completed, changes made.
## 2021-05-30 ABS Added missing BANK and EBANK= statements.
## Page 492
BANK 16
EBANK= DT
# THE FOLLOWING T5RUPT ENTRY BEGINS THE PROGRAM WHICH CONTROLS THE P-AXIS ACTION OF THE LEM USING THE RCS JETS.
# THE NOMINAL TIME BETWEEN THE P-AXIS RUPTS IS 100 MS IN ALL NON-IDLING MODES OF THE DAP.
PAXIS CAF TWENTYMS # RESET TIMER IMMEDIATELY - DT= 20 MS
TS TIME5
LXCH BANKRUPT # INTERRUPT LEAD IN (CONTINUED)
EXTEND
QXCH QRUPT
# CHECK TO SEE IF DAP IS STILL IN USE:
TC CHEKBITS # RETURN IS TO I+1 IF DAP SHOULD STAY ON.
# WHILE DAP IS ON, SET UP EITHER A KALMAN FILTER RUPT OR A DUMMY FILTER RUPT BY SETTING UP T5ADR FROM ERASABLE.
EXTEND # T5ADR IS SET TO EITHER FILTER OR
DCA PFILTADR # DUMMYFIL IN A BLIND MANNER SINCE
# PFILTADR IS SET UP ELSEWHERE
# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
INSRT16A TCF PAXISCNT # GO DECREMENT COUNTERS.
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
# ***** KALCMANU-DAP AND "RATE-HOLD"-DAP INTERFACE *****
# THE FOLLOWING SECTION IS EXECUTED EVERY 100 MS (10 TIMES A SECOND) WITHIN THE P-AXIS REACTION CONTROL SYSTEM
# AUTOPILOT (WHENEVER THE DAP IS IN OPERATION).
CAF TWO # SET UP LOOP TO DO Z,Y,X CDU AXES:
KALCLOOP TS QRCNTR
INDEX QRCNTR # KALCMANU AND RATE-HOLD USE THIS SECTI
CAE CDUXD # TO PERFORM THEIR INDEPENDENT FUNCTION
EXTEND # BOTH PROCEDURES SET UP THE DELCUD'S
INDEX QRCNTR # TO HAVE THE NEGATIVE VALUE OF THE
MSU DELCDUX # DESIRED CDU CHANGE FOR EACH 100 MS CS
CCS A # DURING THE MANEUVER (OR MODE). EACH
AD ONE # STORED AT PI RADIANS IN 2'S COMPLEMEN
TCF +2 # SINCE THE MODULAR SUBTRACT YIELDS THE
COM # NEW CDUD VALUE IN 1'S COMPLEMENT, THE
INDEX QRCNTR # CCS SECTION IS NEEDED FOR 1'S TO 2'S
TS CDUXD # CONVERSION OF DESIRED CDU ANGLES.
CCS QRCNTR # (THIS MAKES THE LOOP DO ALL THREE
## Page 493
TCF KALCLOOP # AXES. A = QRCNTR. DO NEXT DELCDU.
# DO P AXIS RATE DERIVATION AND CONTROL LAW.
# DERIVE DELTA P.
CA ZERO
TS ITEMP1
CAE TP
AD NEGCSP1
EXTEND
BZMF DOTORQUE
TS ITEMP1
CA CSPAT1P
TCF SCALEDTP
DOTORQUE CA TP
EXTEND
MP BIT5
CAE L
EXTEND
MP 16/25
SCALEDTP TS TP
EXTEND
MP WFORP
AD (1-K)/8
EXTEND
MP TP
EXTEND
MP BIT4
CA 1JACC
EXTEND
MP L
EXTEND
MP NO.PJETS
LXCH JETRATE
CA ITEMP1
TS TP
CAE CDUX
TS L
EXTEND
MSU OLDXFORP # SCALED AT PI
LXCH OLDXFORP
ZL
DXCH DELTAP
CAF BIT9
TS Q
CA CDUY
TS L
EXTEND
MSU OLDYFORP # SCALED AT PI
LXCH OLDYFORP
## Page 494
EXTEND
MP M11 # M11 SCALED AT 1
DAS DELTAP
EXTEND
DCA DELTAP
EXTEND
DV Q # NOW SCALED AT PI/64
EXTEND
MP WFORP # SCALED AT 2(4)=16, RESULT IN A AT PI/4.
XCH OMEGAP # W*DELTAP IN OMEGAP LOC. OLD OMEGAP IN A.
EXTEND
MP (1-K) # SCALED AT 1
AD JETRATE # RATE DUE TO JETS TORQUING.
ADS OMEGAP # PRATE= WFORP*DELTAP+ALPHA*LAST-PRATE+TPF
PAXFILT TC PJUMPADR
SKIPPAXS CA VISNORMQ
TS PJUMPADR
TCF RESUME
CHKVISFZ TC T6JOBCHK # CHECK FOR T6 RUPT.
TCF PURGENCY # NO RHC INPUTS ON 206
# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
# FROM P-AXIS-
# 1. COUNT DOWN GIMBAL DRIVE TIMES.
# 2. END DRIVES WHEN APPROPRIATE.
# 3. COUNT DOWN TIME FOR FORCED GTS JUST BEFORE THROTTLE-UP.
PAXISCNT DXCH T5ADR # (PRESERVE OLD CODING)
CCS SIMPCNTR # COUNT DOWN SIMPCNTR TO +0. DECISECONDS
TS SIMPCNTR
CCS QGIMTIMR # Q-AXIS GIMBAL DRIVE TIMER-
TCF DECQTIMR # POSITIVE- COUNTING DOWN
TCF TURNOFFQ # POS ZERO- DRIVE SHOULD BE ENDED
CHKRTIMR CCS RGIMTIMR # NEGATIVE- INACTIVE
TCF DECRTIMR # NEG ZERO- IMPOSSIBLE
TCF TURNOFFR # REPEATED FOR R-AXIS (ABOVE).
CKTRMCTR CCS TRIMCNTR # COUNT DOWN FOR FORCED GTS ENTRY.
TCF +4 # POSITIVE- COUNTING DOWN
TC CCSHOLE # POS ZERO-IMPOSSIBLE
TCF CHKSMART # NEGATIVE- INACTIVE- RETURN
TCF CHKSMART # NEG ZERO- THIS VALUE UNTIL DRIVE DONE.
CAF NEGONE
ADS TRIMCNTR # COUNT TRIMCNTR DOWN TO NEG ZERO.
TCF CHKSMART
## Page 495
DECQTIMR TS QGIMTIMR # COUNT QGIMTIMR DOWN TO POS ZERO.
TCF CHKRTIMR
DECRTIMR TS RGIMTIMR # COUNT RGIMTIMR DOWN TO POS ZERO.
TCF CKTRMCTR
TURNOFFQ TS NEGUQ # REWRITE GIMBAL-DRIVE BITS TO HALT 0.
TS QACCDOT
CS QGIMBITS
EXTEND
WAND 12
CAF NEGMAX
TS QGIMTIMR # DEACITIVATE TIMER.
TCF CHKRTIMR
TURNOFFR TS NEGUR # REWRITE GIMBAL DRIVE BITS TO HALT R.
TS RACCDOT
CS RGIMBITS
EXTEND
WAND 12
CAF NEGMAX
TS RGIMTIMR # DEACTIVATE TIMER.
TCF CKTRMCTR
QGIMBITS OCTAL 01400
RGIMBITS OCTAL 06000
# FROM STARTDAP- RESTART PROTECT THE CHANNEL 11 ENGINE-ON BIT AND THE CHANNEL 12 GIMBAL-DRIVE BITS.
PROTCTOR TS (1-K)/8 # (OLD CODING)
CAE FLAGWRD1
MASK ENGINBIT
EXTEND
BZF INSRT16B +1 # RETURN TO STARTDAP IF ENGINE SHOULD BE
# OFF.
CAF BIT13 # OTHERWISE-
EXTEND
WOR 11 # RESET ENGINE-ON BIT.
CS QGIMTIMR
EXTEND
BZMF +3 # BRANCH IF Q-DRIVE TIMER ACTIVE.
CAF ZERO # OTHERWISE ZERO NEGUQ.
TS NEGUQ
CS RGIMTIMR # REPEAT FOR R-DRIVE.
EXTEND
BZMF +3
CAF ZERO
TS NEGUR
TC IBNKCALL # SET UP DRIVES ACCORDING TO NEGUS.
FCADR WRCHN12
TCF INSRT16B +1 # RETURN TO OLD CODING.
## Page 496
NODAPNO CAF ULLAGER
MASK DAPBOOLS
EXTEND
BZF ZEROFIVE
CS PHASENUM # ULLAGE BIT IS SET.PROTECT MP7 +X COMMAND
AD SEVEN
EXTEND
BZF PROTCT+X
TCF LEAVASIS # THIS IS NOT MP7. THIS IS NOT COLD PURGE.
PROTCT+X CAF +XJETS
TWINEXIT EXTEND
WRITE 5
LEAVASIS CAF MS30P
TS TIME5
TCF RESUME
ZEROFIVE CAF ZERO
TCF TWINEXIT
+XJETS OCT 00252
ADDLT5ID EXTEND # (ARRIVE WITH BIT 11 IN A, FROM T5IDLERI)
RAND DSALMOUT
CCS A
TCF MORET5ID # SMARTJOB IS ALREADY RUNNING. NO ACTION.
CCS SMODE # NOT RUNNING. SEE IF SELFCHECK WANTED.
TCF MORET5ID # SELFCHECK IS ON, SO DON'T RUN SMARTJOB.
TCF GETSMART # SELFCHECK IS OFF, SO START SMARTJOB.
TCF MORET5ID # SELFCHECK IS ON, SO DON'T RUN SMARTJOB.
TCF MORET5ID # SELFCHECK IS ON, SO DON'T RUN SMARTJOB.
GETSMART CAF PRIO1
TC NOVAC
EBANK= SMARTFLG
2CADR SMARTJOB
CAF BIT11 # SET THE SMARTJOB-RUNNING FLAG.
EXTEND
WOR DSALMOUT
MORET5ID CAF GODAPGO
MASK DAPBOOLS
EXTEND # NODAPNO WILL STOP COLD FIRE PURGE AND
BZF NODAPNO # RESTART-PROTECT MP 7 +X TRANSLATION.
TCF DAPIDLEI # GODAPGO IS ON, SO RUN DAPIDLER NOW.
## Page 497
# SMARTJOB IS A DUMMYJOB-LIKE FUNCTION DESIGNED TO ABSORB IDLE TIME. IT CAUSES THE COMPUTER-ACTIVITY LAMP TO
# REMAIN ON, AND PREVENTS THE EXISTENCE OF A JOB SLEEPING IN TH ELOWEST NUMBERED CORE SET. IT IS PREVENTED FROM
# STARTING, OR MADE TO TERMINATE IF ALREADY RUNNING, BY MAKING SMARTFLG CONTAIN ANY NEGATIVE VALUE OR ZERO, OR
# BY MAKING SMODE (THE SELFCHECK CONTROL REGISTER) UNEQUAL TO +0.
SMARTJOB CCS NEWJOB # ANY HIGHER PRIORITY JOB WAITING?
TC CHANG1 # YES. GO DO IT.
CA SMARTFLG # NO. SHOULD SMARTJOB TERMINATE?
EXTEND
BZMF STOPSMRT # YES. GO KILL IT.
CCS SMODE # MAYBE NOT. SEE IF SELFCHECK WANTED.
TCF STOPSMRT # WANTED. TERMINATE SMARTJOB.
TCF SMARTJOB # NOT WANTED. CONTINUE SMARTJOB.
NOOP # WANTED. TERMINATE SMARTJOB.
STOPSMRT CS BIT11 # TERMINATE SMARTJOB.
EXTEND # FIRST, TURN THE SMARTJOB-RUNNING FLAG
WAND DSALMOUT # OFF.
TCF ENDOFJOB # THEN KILL JOB.
CHKSMART CA SMARTFLG # IS SMARTJOB DESIRED?
EXTEND
BZMF INSRT16A +1 # NO. TAKE NO ACTION.
CAF BIT11 # YES. SEE IF IT IS ALREADY RUNNING.
EXTEND
RAND DSALMOUT
CCS A
TCF INSRT16A +1 # SMARTJOB IS ALREADY RUNNING. NO ACTION.
CCS SMODE # NOT RUNNING. SEE IF SELFCHECK WANTED.
TCF INSRT16A +1 # SELFCHECK IS ON, SO DON'T RUN SMARTJOB.
TCF SETSMART # SELFCHECK IS OFF, SO START SMARTJOB.
TCF INSRT16A +1 # SELFCHECK IS ON, SO DON'T RUN SMARTJOB.
TCF INSRT16A +1 # DITTO.
SETSMART CAF PRIO1
TC NOVAC
EBANK= SMARTFLG
2CADR SMARTJOB
CAF BIT11 # SET THE SMARTJOB-RUNNING FLAG.
EXTEND
WOR DSALMOUT
TCF INSRT16A +1 # RETURN TO PAXIS.
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967**** END CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
## Page 498
# THE FOLLOWING CODING IS LEFT IN PLACE TO PRESERVE ADDRESSES.
EXTEND
MP BIT3 # ENOUGH FOR 4 JETS
CAE L
EXTEND
MP 25/32 # A CONTAINS TJET SCALED AT 2EXP(4)(16/25)
TS TP
TS TOFJTCHG
CAE PRATEDIF # TEST WHETHER 2 OR 4 JETS TO BE USED BY
AD -2JETLIM # COMPARING DELTA RATE WITH 2 JET LIMIT
EXTEND
BZMF +4 # IF NEGATIVE, 2 JETS ARE ENOUGH
CAF POSMAX # POSITIVE, NON-ZERO. PUT POSMAX IN NJET
TS NJET
TCF PJETSLEC # AND GO SELECT GOOD POLICY
CAF NEGMAX # 2 JETS, PUT NEGMAX IN NJET.
TS NJET
CAE TP # DOUBLE TP.
DOUBLE
TS TP # AND GO CHECK MINIMUM IMPULSE
# ........................................................................
# CHECK RATE COMMAND ON TIME AGAINST MINIMUM IMPULSE
TS TOFJTCHG
AD -TJMINT6
EXTEND # AS TP. TEST JET TIME. IS IT GREATER OR
BZMF JETSOFF # LESS THAN A MINIMUM IMPULSE
# ........................................................................
## Page 499
# PROGRAM NAME: PJETSLEC DATE: DECEMBER 9, 1966
# MODIFICATION 2 TO SUNBURST REVISION 58 ON DECEMBER 30, 1966 BY JOHN BLISS(ADAMS ASSOCIATES) RM 7-286, X183
# LOG SECTION: P-AXIS REACTION CONTROL SYSTEM AUTOPILOT -- FIRST PUT INTO SUNBURST(III) REVISION 29
# FUNCTIONAL DESCRIPTION:
# THE OBJECT OF PJETSLEC IS TO CHOOSE THE BEST JET POLICY WHOSE NECESSARY JETS HAVE NOT BEEN RECORDED AS
# FAILED IN THE CH6MASK REGISTER. THE CONDITIONS ON SELECTION ARE THE NUMBER OF JETS REQUESTED(2 OR 4), THE
# SENSE OF P-AXIS ROTATION REQUIRED(+/-), AND ALTERNATING USE OF DIAGONAL FORCE-COUPLED PAIRS OF JETS.
# PJETSLEC FIRST READS CHANNEL 6 TO SEE IF THE JETS ARE CURRENTLY FIRING. IF THEY ARE OFF, THE DIAGONAL JETS
# ARE SWITCHED TO COMPLY WITH THE ALTERNATION CONDITION, AS THERE IS NO DANGER OF SWITCHING ONE OFF AND THE OTHER
# ON IN RAPID SUCCESSION. AFTER SWITCHING THE DIAGONALS, OR IF THE JETS ARE ON, 6.5 MS IS ADDED TO THE JET
# FIRING TIME, TOFJTCHG, TO ALLOW FOR DELAY IN TURNING ON THE JETS OR IN CASE THE CURRENT POLICY HAS SUFFERED A
# JET FAILURE AND JUST BE REPLACED. HOWEVER, IF THE SAME JET POLICY IS SELECTED, THE FACT WILL BE DETECTED BEFORE
# THE POLICY IS WRITTEN INTO CHANNEL 6, THE UNNECESSARY 6.5MS DELAY TIME WILL BE DEDUCTED FROM TOFJTCHG. THE TIME
# OF CALCULATION, 5MS, IS SUBTRACTED AT THE SAME TIME IN THE COMBINED CONSTANT, -COM-6.5 = -11.5MS. NOTE THAT IN
# CASE JET FAILURE REQUIRES SELECTION OF A NEW POLICY, TOFJTCHG IS NOT MODIFIED BY -5MS, AND SO THERE WILL BE AN
# OVERSHOOT OF 5MS OF JET FIRING.
# NEXT, THE SENSE OF P-AXIS ROTATION(ROLL) IS TESTED, TO DETERMINE WHICH SET OF JET POLICIES MUST BE INDEXED.
# IF THE P-AXIS IS +, REL = 7, IF -, REL = 0,. NJET IS TESTED NEXT; IF POSMAX, 4 JETS DESIRED, REL = REL + 6,
# CTR = 6. IF NEGMAX, 2 JETS DESIRED, REL = REL + 5, CTR = 5. IF 4 JETS DESIRED, GO TO POLICY TESTING LOOP
# WITHOUT TESTING TO SEE WHICH DIAGONAL PAIR IS PREFERRED THIS TIME.
# IF 2 JETS ARE DESIRED, SEE WHETHER NO. 2 PAIR IS PREFERRED. IF IT IS, TEST IT FIRST AND USE IT IF IT'S OK.
# IF IT HAS FAILED, GO TO THE TEST LOOP TO TEST THE POLICIES IN ORDER. IF NO. 1 POLICY IS PREFERRED, GO DIRECTLY
# TO THE TEST LOOP.
# THE TEST LOOP USES REL TO PICK UP THE NEXT POLICY IN PPOLTABL AND CTR TO KEEP TRACK OF THE NUMBER OF
# POLICIES(1-7) TESTED. WHEN A GOOD POLICY IS FOUND, IT IS WRITTEN INTO CHANNEL 6, OTHERWISE THE NEXT POLICY IS
# TRIED. IF NO GOOD POLICIES ARE FOUND, CONTROL GOES TO ABORTJET TO TURN OFF THE JETS AND THE DAP.
# WHEN A GOOD POLICY IS FOUND, CONTROL TRANSFERS TO WRITEPOL. THERE, THE SELECTED POLICY IS COMPARED TO THE
# CURRENT POLICY IN CHANNEL 6. IF THEY ARE NOT THE SAME, EITHER THE JETS HAVE NOT BEEN ON, OR A JET FAILED IN THE
# CURRENT POLICY. IN EITHER CASE, TOFJTCHG HAS ALREADY BEEN INCREASED BY THE 6.5MS JET FIRE DELAY. AS DESCRIBED
# ABOVE, HOWEVER, THE EFFECT OF THE OLD POLICY FIRING DURING THE COMPUTATION IS NOT TAKEN INTO ACCOUNT. THIS IS
# CONSIDERED SAFER, SINCE OTHERWISE, A TOFJTCHG ALREADY CALCULATED NEAR THE MINIMUM IMPULSE TIME MIGHT BE REDUCED
# TO LESS THAN 14MS AND THE RESULT WOULD BE THE EXPLOSION OF THE JETS.
# IF THE JET POLICY IS THE SAME AS THE LAST ONE, THE 6.5MS DELAY TIME IS DEDUCTED FROM TOFJTCHG, AND IN ANY
# CASE, THE POLICY IS WRITTEN INTO CHANNEL 6, +/-2/4 IS STORED IN NO-PJETS, AND BIT9 IS PUT INTO JTSATCHG TO CAUSE
# THE P-AXIS JETS TO BE TURNED OFF ON THE NEXT T6RUPT. CONTROL THEN TRANSFERS TO SKIPTEST.
# CALLING SEQUENCES: NONE SUBROUTINES CALLED:
## Page 500
# WRITEP - WRITES C(A). THE
# SELECTED JET POLICY, INTO
# CHANNEL 6
# NORMAL EXIT MODES: ALARM OR ABORT EXIT MODES:
# TCF SKIPTEST EXTEND
# DCA ABORTADR
# DTCB
# EBANK= JTSONNOW
# ABORTADR 2CADR ABORTJET
# THIS SEQUENCE IS FOLLOWED
# IF NONE OF THE POLICIES IS
# WITHOUT JET FAILURES
# ERASABLE INITIALIZATION REQUIRED
# TP = ) TIME PERIOD OF JET FIRING
# TOFJTCHG = ) AT T6 SCALING, 625 MICROSECONDS PER BIT
# NJET = 37777, 40000, DEPENDING ON WHETHER 4 OR 2 JETS DESIRED
# TJETSIGN = +/-00001, DEPENDING ON DESIRED SENSE OF P-AXIS ROTATION
# CH6MASK = BITS 1-8 INDICATE WHETHER CORRESPONDING JETS HAVE FAILED - BIT ON IS FAILURE, BIT OFF IS OK.
# DAPBOOLS,BIT5(AORBSYST) =0/1, DEPENDING UPON WHETHER DIAGONAL 1 OR DIAGONAL 2 WAS PREFERRED DURING LAST PASS
# OUTPUT:
# CHANNEL 6 - CONTAINS SELECTED JET POLICY UNLESS NONE IS AVAILABLE
# NO.PJETS - +/-2/4, SENSE OF P-AXIS ROTATION AND NUMBER OF JETS USED
# BY POLICY ACTUALLY SELECTED(MAY NOT = 4 IF 4 JETS RE-
# QUESTED BUT ONE OR MORE JETS FAILED)
# TOFJTCHG - MODIFIED BY -5MS OR +6.5MS OR NEITHER, DEPENDING ON WHETHER THE JETS WERE ON, AND WHETHER THE
# NEW POLICY IS A CHANGE FROM THE OLD OR NOT.
# DAPBOOLS, BIT5(AORBSYST) = 1/0, IF THE INPUT VALUE WAS 0/1, UNLESS JETS WERE ON WHEN PJETSLEC STARTED.
# JTSATCHG - = BIT9, UNLESS NO POLICIES AVAILABLE
# NJET, TP, TJETSIGN, AND CH6MASK NOT CHANGED BY PJETSLEC
# REL AND CTR ARE LEFT AT THEIR LAST VALUES WHEN THE GOOD POLICY WAS
# FOUND
# DEBRIS:
# REL = ITEMP5
# CTR = ITEMP6
# A,L,Q
PJETSLEC EXTEND # BEGIN JET SELECT ROUTINE BY SEEING WHE-
## Page 501
READ 6 # THER THE JETS ARE TURNED ON(CHANNEL 6
CCS A # NON-ZERO)
TCF ADDELAY # JETS ON, DON'T SWITCH DIAGONALS.
CAF AORBSYST # JETS NOT ON NOW, START BY SWITCHING BIT5
LXCH DAPBOOLS # IN DAPBOOLS
EXTEND # BIT5 ON - DIAGONAL JETS 15, 7 AND 8, 16
RXOR L
TS DAPBOOLS # BIT5 OFF - DIAGONAL JETS 4, 12 AND 3, 11
ADDELAY CAF 14-TJMIN # ADD DELAY TIME BECAUSE JETS USUALLY OFF
ADS TOFJTCHG # AND EASIER IF JET POLICY NOW HAS FAILED.
CAF ZERO # BEFORE TESTING P-AXIS SIGN.
TS REL # INITIALIZE ADDRESSING INDEX AT ZERO
CCS TJETSIGN # TEST DIRECTION OF P-AXIS ROTATION(ROLL)
CAF SEVEN # IF POSITIVE, GET POLICY FROM LOWER SEVEN
ADS REL # LOCATIONS OF TABLE
CCS NJET # SET IF 4-JET POLICY IS REQUESTED
CAF SIX # IT IS, PICK UP 6 FOR REL AND CTR
TCF FOURJETS # AND GO STORE THEM
CAF FIVE # 2 JETS ONLY REQUESTED, PICK UP 5, STORE
TS CTR # IN CTR AND ADD TO REL.
ADS REL
CS DAPBOOLS # CHECK BIT5 IN DAPBOOLS TO SEE WHICH PAIR
MASK AORBSYST # OF DIAGONAL JETS SHOULD BE USED NEXT
CCS A
TCF TESTPOL # FIRST PAIR, SO GO TO TESTING LOOP NOW
EXTEND # SECOND PAIR, DECREMENT REL TO 4 OR 11.
DIM REL
INDEX REL # PICK UP SECOND DIAGONAL PAIR FROM POLICY
CAF PPOLTABL
MASK CH6MASK # TABLE AND COMPARE WITH FAILURE BITS
EXTEND
BZF WRITEPOL # THE JETS ARE GOOD, GO WRITE IN CHANNEL
INCR REL # THE JET(S) HAVE FAILED FOR THIS POLICY,
TCF TESTPOL # RESTORE REL AND DO TEST POLICY LOOP
FOURJETS ADS REL # COME HERE TO SET REL AND CTR FOR 4-JET
CAF SIX # ****ADS STINKS****
TS CTR # POLICY REQUESTED. ALSO, SET CTR -1 HERE
TESTPOL INDEX REL # PICK UP NEXT POLICY AS LOCATED RELATIVE
CAF PPOLTABL # TO PPOLTABL BY REL.
MASK CH6MASK # COMPARE WITH FAILURE BITS
EXTEND
BZF WRITEPOL # THE JETS ARE GOOD, WRITE IN THE CHANNEL
## Page 502
EXTEND # THE JET(S) HAVE FAILED FOR THIS POLICY
DIM REL # DECREMENT THE INDEX.
CCS CTR # SEE IF ALL POLICIES HAVE BEEN TESTED.
TCF TESTPOL -1 # CTR NOT ZERO, A = CTR -1, DO LOOP AGAIN
EXTEND # CTR ZERO, ALL ALLOWABLE POLICIES FAILED
DCA ABORTADR # PICK UP 2CADR OF ABORTJET
DTCB # AND GO THERE
WRITEPOL INDEX REL # A GOOD POLICY IS FOUND, PICK IT UP AND
CAF PPOLTABL
EXTEND # BEFORE WRITING IT, CHECK TO SEE IF THE
RXOR 6 # SAME POLICY IS CURRENTLY IN CHANNEL 6.
EXTEND
BZF SAMEJETS # SAME POLICY, GO ADJUST TOFJTCHG
OK2WRITE INDEX REL # DIFFERENT POLICY(CHANNEL 6 WAS ZERO OF A
CAF PPOLTABL # JET FAILED IN LAST POLICY). GET POLICY,
TC WRITEP # GO WRITE IT IN CHANNEL 6 AND RETURN
CCS A # THE POLICY IS STILL IN A, TEST NUMBER OF
CAF TWO
TCF +2 # JETS(BIT15 ON FOR 4-JET POLICIES) AND
CAF FOUR
EXTEND # MULTIPLY BY TJETSIGN(+/-1) TO GET +/-2,4
MP TJETSIGN
LXCH NO.PJETS # IN L, WHICH IS THEN STORED IN NO-PJETS
CAF BIT9 # TURN OFF P-AXIS JETS AFTER T6RJPT
TS JTSATCHG
TCF SKIPTEST # CHECK FOR SKIP.PERHAPS TO DO JETLIST
SAMEJETS CAF -COM-6.5 # COME HERE TO ADJUST TOFJTCHG BY FACTOR
ADS TOFJTCHG # OF 11.5MS(COMP TIME + MINIMP DELAY) WHEN
TCF OK2WRITE # CURRENT JET POLICY IS TO BE MAINTAINED.
EBANK= JTSONNOW # WOULD YOU BELIEVE, EBANK = 6
ABORTADR 2CADR ABORTJET # WHERE TO GO WHEN ALL JET POLICIES FAIL
# ................................................................................................................
# TABLE OF P-AXIS JET POLICIES IS ASSEMBLED HERE TO BE ADDRESSED BY RELATIVE INDEX FROM BASE ADDRESS PPOLTABLE
# CHANNEL 6 BITS INDEX JETS ON
PPOLTABL OCTAL 00202 # REL=0 -P NON-FORCE COUPLE 4- 16, 3
OCTAL 00210 # REL=1 -P NON-FORCE COUPLE 3- 11, 16
OCTAL 00050 # REL=2 -P NON-FORCE COUPLE 2- 8, 11
OCTAL 00042 # REL=3 -P NON-FORCE COUPLE 1- 3, 8
OCTAL 00240 # REL=4 NUMBER TWO FORCE COUPLE- 8, 16
OCTAL 00012 # REL=5 -P 2-JET FORCE COUPLE- 3, 11
## Page 503
OCTAL 40252 # REL=6 -P 4-JET POLICY- 3, 8, 11, 16
OCTAL 00101 # REL=7 +P NON-FORCE COUPLE 4- 7, 4
OCTAL 00021 # REL=8D +P NON-FORCE COUPLE 3- 12, 7
OCTAL 00024 # REL=9D +P NON-FORCE COUPLE 2- 15, 12
OCTAL 00104 # REL=10D +P NON-FORCE COUPLE 1- 4, 15
OCTAL 00005 # REL=11D NUMBER TWO FORCE COUPLE- 15, 7
OCTAL 00120 # REL=12D +P 2-JET FORCE COUPLE- 4, 12
OCTAL 40125 # REL=13D +P 4-JET POLICY- 4, 15, 12, 7
# ................................................................................................................
JETSOFF CAF ZERO
TS TP
TS TOFJTCHG
TC WRITEP # TURN ON P JETS USING T6JOB SUBROUTINE
TCF RESUME
# P-AXIS URGENCY FUNCTION CALCULATION
# (NOTE -- M13 = 1 IDENTICALLY IMPLIES NULL MULTIPLICATION.)
PURGENCY CA CDUY # P-ERROR CALCULATION
EXTEND
MSU CDUYD # CDU VALUE - ANGLE DESIRED (Y-AXIS)
EXTEND
MP M11 # (CDUY-CDUYD)M11 SCALED AT PI RADIANS
XCH E # SAVE FIRST TERM (OF TWO)
CA CDUX # THIRD COMPONENT
EXTEND
MSU CDUXD # CDU VALUE - ANGLE DESIRED (X-AXIS)
# EXTEND
# MP M13
ADS E # SAVE SUM OF TERMS, NO OVERFLOW EVR
TS PERROR # SAVE P ERROR FOR DISPLAY
CS OMEGAPD # THIS CODING IS COMMON TO BOTH LM DAP AND
AD OMEGAP # SPS-BACKUP MODE.
TS EDOTP # EDOTP = OMEGAP - OMEGAPD AT PI/4 RAD/SEC
## Page 504
# P-AXIS SPS BACK-UP TEST AND SPS BACK-UP CONTROL LOGIC:
CAE DAPBOOLS # BIT15 = 0 FOR SPS BACK-UP
EXTEND
BZMF NOBACKUP # DAPBOOLS IS NEVER +0.
# SPS BACK-UP CONTROL LOGIC:
CAF SLOPEMP
EXTEND
MP E
AD EDOTP
EXTEND
BZMF PLUSDP
CAF NEGDP
GCOMPER TS ITEMP3
CAE EDOTP
EXTEND
MP ACONSTP
CCS A
TCF LIMPRATE
TCF +2
TCF LIMPRATE
LXCH A
EXTEND
SQUARE
LIMSQP AD E
AD NEGDP
EXTEND
BZMF JETSOFF
CAF 50MS/625
TS TP
TS TOFJTCHG
CAF NEGMAX
TS NJET
CCS ITEMP3
CAF BIT1
TCF +2
CS BIT1
TS TJETSIGN
TCF PJETSLEC
PLUSDP CS E
XCH E
CS EDOTP
XCH EDOTP
CS NEGDP
TCF GCOMPER
LIMPRATE CAF QUARTER
## Page 505
TCF LIMSQP
50MS/625 OCTAL 00120 # TJET = 50 MS IN SPS BACKUP MODE
NEGDP DEC -0.00555
SLOPEMP EQUALS POSMAX
ACONSTP OCTAL 00007
## Page 506
# CONTINUATION OF P-AXIS RCS AUTOPILOT:
NOBACKUP CAF BIT14
TS SIGNTAG # INDICATES EDOT POSITIVE FOR TIME BEING
CCS EDOTP
TCF SCALEDOT
TCF PTJETLAW
TCF REFLECT
TCF PTJETLAW
REFLECT TS EDOT
CS BIT14
TS SIGNTAG # INDICATES EDOT REALLY NEGATIVE
CS PERROR
TS E
CAE EDOT # EDOT SCALED AT 45 DEG/SEC
SCALEDOT AD BIT1
EXTEND
MP BIT3
EXTEND
BZF PTJETLAW -1
CAF POSMAX
TCF PTJETLAW
CAE L # EDOT NOW SCALED AT 11.25 DEG/SEC
PTJETLAW TS EDOT
EXTEND
MP EDOT
TS EDOT(2)
CAF NEGONE
TS TJETSIGN
CAF NEGMAX
TS NJET # INDICATES 2 JETS ONLY FOR TIME BEING
CAE EDOT(2)
EXTEND
MP 1/2JTSP
EXTEND
MP BIT14
AD E
EXTEND
SU DB
TS FCT1
EXTEND
BZMF 5,6,7,8
AD -5DEG+1
EXTEND # IN ERROR BY OVER 5 DEG WITH THE
BZMF +5 # RATE IN THE OTHER DIRECTION
CS EDOT
AD HULLSLIM # 0.5 DEG/SEC SCALED AT 11.25 DEG/SEC
EXTEND
BZMF MULTIJET
CAE EDOT
## Page 507
EXTEND
MP 1/2JTSP
TS TERMA
CS 1.5CSP16
AD TERMA
EXTEND
BZMF +3
MAXPTJET CAF BIT14
TCF FINDSIGN
CS FCT1
AD DBMNMPAX
EXTEND
BZMF PMBR
CAE TERMA
AD -35AT16
EXTEND
BZMF ZONE4
AD 38.7AT16
TCF SCALTJET
MULTIJET CAF POSMAX
TS NJET
TCF MAXPTJET
5,6,7,8 CAE EDOT(2)
EXTEND
MP .5ACCMIN
AD E
AD DB
AD DBMNMPAX
EXTEND
BZMF +2
ZONE5 TCF JETSOFF
+2 CS RATEMAX
AD EDOT
EXTEND
BZMF ZONES6,7
ZONE8 TCF JETSOFF
ZONES6,7 CAF BIT1
TS TJETSIGN
CS EDOT
EXTEND
MP 1/2JTSP
TS TERMA
CS FCT1
AD E
AD E
AD DBMNMPAX
PMBR TS FCT1 # FCT1 NOW HOLDS -FCT5 OR -FCT2
CAE 1/2JTSP
EXTEND
MP BIT14
## Page 508
AD .5ACCMIN
TS DENOM
EXTEND
MP RATEMAX2
AD FCT1
EXTEND
BZMF MISSROOT
CAE 1/2JTSP
EXTEND
MP 1/2JTSP # (1/2JTSP)(1/2JTSP) SCALED AT 2(16)/PI(2)
DXCH RUPTREG3 # DP PRODUCT STORED IN RUPTREG3,RUPTREG4
CAE FCT1 # SCALED AT PI
ZL
EXTEND
DV DENOM # (FCT1/DENOM) IN A SCALED AT PI(2)/2(8).
TS RUPTREG2 # (FCT1/DENOM) STORED IN RUPTREG2
EXTEND
MP RUPTREG4 # (FCT1/DENOM)(LOWER PART OF (1/2JTSP)(2))
TS RUPTREG4 # IS STORED IN RUPTREG4
CAF ZERO
XCH RUPTREG3
EXTEND
MP RUPTREG2 # PRODUCT OF SP FCT1/DENOM AND DP
DAS RUPTREG3 # (1/2JSP)(2) IS STORED DP IN RUPTREG3 AND
EXTEND # RUPTREG4 AT A SCALING OF 2(8). PRODUCT
DCA RUPTREG3 # IS ALSO STORED IN ITEMP3 AND ITEMP4.
DXCH ITEMP3
CS 1.5CSP16
AD TERMA # SCALED AT 2(4)
EXTEND
SQUARE # (TERMA-1.5CSP)(2) IN A,L SCALED AT 2(8)
DAS RUPTREG3 # DP EXPRESSION STORED IN RUPTREG3 AND
CAE RUPTREG3 # RUPTREG4. IF NEG, TP EXCEEDS 1.5CSP.
EXTEND
BZF TESTONL1 # IF RUPTREG3 ZERO,MUST TEST ON RUPTREG4
TCF TESTONL1 +1
TESTONL1 CAE RUPTREG4
EXTEND
BZMF MAXPTJET
MINTJCHK CS PTJMINT6 # 11.5 MS SCALED AT 16. (4MS ADDED TO TMIN
AD TERMA # TO PREVENT COMPUTED TP LESS THAN TMIN)
EXTEND
BZMF LASTTEST # LASTTEST TESTS FOR TP LESS THAN MIN IMP.
ROOTNEXT EXTEND
DCS ITEMP3 # DP NUMBER SCALED AT 2(8) TO BE ENTERED
TC IBNKCALL # SQUARE ROOT SUBROUTINE CALL.
CADR DAPSQRT
SUMTJ AD TERMA
## Page 509
SCALTJET DOUBLE
EXTEND
MP 25/32
TCF FINDSIGN
MISSROOT CAF RATEMAX+ # RATEMAX+ = RATEMAX+0.6DEGREES/SECOND
EXTEND
MP 1/2JTSP
TCF SUMTJ
LASTTEST EXTEND
DCA ITEMP3
DXCH RUPTREG3
CS PTJMINT6 # 11.5 MS SCALED AT 16
AD TERMA
EXTEND
SQUARE
DAS RUPTREG3 # DP EXPRESSION STORED IN RUPTREG3 AND
CAE RUPTREG3 # RUPTREG4. IF POS, TP LESS THAN MIN IMP
EXTEND
BZF TESTONL2 # IF RUPTREG3 ZERO, MUST TEST ON RUPTREG4
TCF TESTONL2 +1
ZONE4 CAE EDOT # IF EDOT IS ZERO IN ZONE4, NO JETS FIRED
EXTEND
BZF JETSOFF
CAE SIGNTAG
EXTEND
BZMF +3
CS .1DPS
TCF +2
CA .1DPS
AD OMEGAPD
TS OMEGAP
CAF PTJMINT6
FINDSIGN TS TP
CAE SIGNTAG # NEVER ZERO
EXTEND
BZMF +2 # EQUIVALENT TO BRANCH ON MINUS
TCF +3
CS TJETSIGN
TS TJETSIGN
CAE TP # LOAD TOFJTCHG
TS TOFJTCHG
TCF PJETSLEC # AND GO SELECT GOOD POLICY
TESTONL2 CAE RUPTREG4
EXTEND
BZMF ROOTNEXT
TCF JETSOFF
# TORQUE VECTOR RECONSTRUCTION FOR THE P-AXIS
SKIPTEST CS TOFJTCHG # COME HERE FROM PJETSLEC TO TEST P SKIP
## Page 510
AD +1.5CSP # USE 150 MS. TO TEST FOR A PAXIS SKIP.
EXTEND
BZMF RESUME # TP GREATER THAN 150MS THEN DO NORMAL P.
CA PSKIPADR # SET UP A P AXIS SKIP.
TS PJUMPADR # GOES TO JTLST FROM HERE
## Page 511
# PROGRAM NAME JTLST
# WRITTEN BY DICK GRAN ( GAEC - CALL LR-5-1331 AREA CODE 516 )
# THIS PROGRAM IN CONJUNCTION WITH T6-RUPT PROGRAMS ALLOWS JETS TO BE
# TURNED OFF AT THE COMPUTED OFF TIME. THIS TASK IS ACCOMPLISHED BY USING
# A JET LIST WHICH IS SET UP AS FOLLOWS ....
# JET OFF TIMES DESIRED JETS AT THIS TIME
# TIME6 T6NEXTJT
# T6NEXT T6NEXTJT +1
# T6NEXT +1 T6NEXTJT +2
# THESE LOCATIONS RECEIVE THE JET ON TIMES SCALED AS T6 (.625 MS/BIT). AS
# AN EXAMPLE OF HOW THE PROGRAM WORKS, CONSIDER THE FOLLOWING PROBLEM...
# 50 MS AGO A P AXIS JET COMPUTATION DECIDED JETS 12 AND 15 SHOULD BE
# ON FOR 120 MS. AFTER 120 MS IT WAS FURTHER DECIDED THAT JETS 12,15
# 16 AND 3 SHOULD BE ON UNTIL THE NEXT P AXIS COMPUTATION (WHICH
# OCCURS IN 200 MS AFTER THE LAST P AXIS JET COMPUTATION). AT THE
# CURRENT TIME THE QR AXES COMPUTES THAT JET 2 SHOULD BE ON FOR 65 MS
# AND JET 9 SHOULD BE ON FOR 72.5 MS. AFTER 72.5 MS NO FURTHER QR JETS
# SHOULD BE ON. THIS SEQUENCE OF JETS CORRESPONDS TO A +P ROTATION
# WITH A SIMULTANEOUS +Y AND -Z TRANSLATION AND ALSO A -V (DIAGONAL)
# ROTATION ABOUT THE Y AND Z AXES . NOTE JET 9 IS ON LONGER THAN JET 2
# WHICH WOULD BE THE CASE IF THE Q-R JETS HAD BEEN ON BEFORE. IN THIS
# CASE, THE FOLLOWING SEQUENCE OF EVENTS OCCURRED AT THE P AXIS
# COMPUTATION .....
# 1) CHANNEL 6 WAS LOADED WITH OCTAL 24 TO TURN ON JETS 12 AND 15
# 2) TIME 6 WAS LOADED WITH 120 MS
# 3) T6NEXT WAS LOADED WITH +0 ( THIS INDICATES THE CONTENTS OF
# T6NEXT ARE NOT TO BE USED IN THE T6JOB PROGRAM)
# 4) T6NEXTJT WAS LOADED WITH OCTAL 226 TO CAUSE JETS 3,12,15
# AND 16 TO GO ON WHEN T6 HAS BEEN DECREMENTED TO -0.
# 5) THE T6 CLOCK WAS TURNED ON TO BEGIN COUNTING DOWN TIME 6
# AT THE QR AXES JET LIST COMPUTATION, THE T6 CLOCK AS BEEN REDUCED
# TO 70 MS (120-50) THEREFORE THE FOLLOWING OCCURS ....
# 1) CHANNEL 5 IS LOADED WITH OCTAL 40022 TO TURN ON JETS 2 AND
# 9. ( THIS IS PERFORMED IN THE SECTION CALLED RATE)
# 2) THE BANK IS SWITCHED FROM THE QR BANK TO THE P BANK (WHERE
# THE JET LIST IS STORED) AS FOLLOWS ....
# DCA JTLSTADR
## Page 512
# DTCB ( IN THE QR AXES ONLY)
# 3) THE DESIRED JET ON TIME FOR JET 2 IS COMPARED WITH T6.
# 4) SINCE T6 IS GREATER THAN THE DESIRED JET ON TIME FOR JET 2,
# T6 IS CHANGED TO 65 MS AND T6NEXT IS LOADED WITH 5 MS.
# ( THE DIFFERENCE BETWEEN JET ON TIME AND T6)
# 5) T6NEXTJT IS CHANGED TO OCTAL 40020 , AND THE FORMER CONTENTS
# OF T6NEXTJT IS PLACED IN T6NEXTJT +1. THIS CAUSES JET 9 TO
# REMAIN ON AND JET 2 TO BE TURNED OFF WHEN T6 IS DECREMENTED
# TO ZERO. IT ALSO ASSIGNS THE P AXIS JET CODE TO THE
# TIME IN T6NEXT.
# 6) THE CONTENTS OF T6NEXT (5MS) IS COMPARED WITH THE
# DIFFERENCE BETWEEN THE TWO QR AXIS JET ON TIMES. SINCE HERE
# THE DIFFERENCE IS 7.5 MS WHICH IS GREATER THAN THE CONTENTS
# OF T6NEXT (5MS), THE ADDITIONAL QR AXIS RUPT OCCURS AFTER
# THE RUPT STORED IN T6NEXT. THUS 2.5 MS (7.5 - 5) IS STORED
# IN T6NEXT +1
# 7) T6NEXTJT +2 IS MADE EQUAL TO THE JETS WHICH ARE TO BE ON
# AFTER THE 75 MS HAS ELAPSED (IN THE CASE HERE IT IS ZERO)
# THUS FOR THE EXAMPLE CONSIDERED THE JET LIST IS ....
# JET TIMES JET CODES
# TIME6 = 65MS. T6NEXTJT = 40020 SIGN IS NEGATIVE TO
# T6NEXT = 5 MS. T6NEXTJT +1 = 00226 INDICATES Q-R AXIS
# T6NEXT +1 =2.5 MS. T6NEXTJT +2=, 40000 JETS,POSITIVE TO
# INDICATE P JETS.
# CHANNEL 6 = 00024
# CHANNEL 5 = 00022 SIGN IS LOST ONCE THE JET CODE IS LOADED
# THIS EXAMPLE AND THE CODING SHOULD ALLOW ONE TO UNDERSTAND THE JET LIST.
# ONE FURTHER COMMENT IS IN ORDER - IF THE JET ON TIMES EXCEED 150 MS,
# THE JETS ARE TURNED ON AND THE JET LIST IS NOT ENTERED. IN 100 MS
# A NEW JET ON TIME IS COMPUTED WHICH WILL RESET THE JETS IF NEEDED.
# WHEN THE JET ON TIME IS LESS THAN 150MS, THE JET LIST IS LOADED AS
# DISCUSSED ABOVE AND THE TJET COMPUTATION IS SKIPPED NEXT TIME, THAT IS
# THE AXIS IS NOT REPEATED AGAIN UNTIL 200 MS HAS ELAPSED. THIS INSURES
# THAT WHEN A NEW JET TIME IS COMPUTED THE JET LIST WILL NOT HAVE
# A TIME STORED WHICH CORRESPONDS TO THE AXIS JUST COMPLETED.
JTLST CCS TIME6 # TEST CURRENT STATE OF T6.
TCF T6ONNOW # IF T6 IS + THEN CLOCK IS ON.
TCF T6OFFNOW # IF T6 IS + ZERO THEN T6 MUST BE OFF
TCF T6ONNOW # SINCE ALL DINC S LEAD TO MINUS ZERO.
TC T6JOB # WE ARE IN THE UNIQUE STATE WHICH SAYS
TCF JTLST # A T6 INTERRUPT IS WAITING.DO T6 JOB.
## Page 513
T6OFFNOW CA TOFJTCHG
TS TIME6 # WE ARE HERE IF T6 CLOCK IS OFF.
CA BIT15
EXTEND # TURN CLOCK PULSE FOR T6 ON AND LOAD T6.
WOR 13
CA JTSATCHG
TS T6NEXTJT
CA ZERO
XCH ADDTLT6 # SET UP NEXT T6 INTERRUPT AFTER THE
TS T6NEXT # CURRENT ONE IS COMPLETE. ADDTLT6 MAY
CA ZERO # BE ZERO IN WHICH CASE NO MORE T6.
XCH ADDT6JTS
TS T6NEXTJT +1
TCF RESUME
T6ONNOW CCS T6NEXT # HERE IF T6 IS NOW ON. SEE IF T6NEXT IS
TCF T6NXT=+ # ZERO OR NOT.
CS TOFJTCHG # T6NEXT IS NEVER NEGATIVE.
AD TIME6 # A CONTAINS T6 - TJET.
CCS A # TEST SIGN OF A (SAVING THE DIFFERENCE).
AD ONE
TCF JTSFIRST # TJET IS LESS THAN T6.
NOOP # IF DIFFERENCE I SNEGATIVE OR ZERO
AD ONE # WE ADD 1 SO ZERO CAN NEVER BE IN LIST.
TS T6NEXT
CA JTSATCHG
TS T6NEXTJT +1 # BEGIN SETTING UP JETS IN THE JET LIST.
CA ZERO
XCH ADDTLT6
TS T6NEXT +1
CA ZERO
XCH ADDT6JTS
TS T6NEXTJT +2
TCF RESUME
JTSFIRST TS T6NEXT # HERE IF TJET IS LESS THAN T6.
CA TOFJTCHG
TS TIME6 # SWITCH T6 AND TJET)
CA JTSATCHG
XCH T6NEXTJT # BEGIN SWITCHING JET WORDS IN JET LIST.
TS T6NEXTJT +1
CS ADDTLT6
EXTEND
BZF RESUME # SEE IF AN ADDITIONAL (QR) JET TIME IS
AD T6NEXT # REQUIRED.
CCS A # IF AN ADDITIONAL T6 IS NEEDEN, COMPARE
AD ONE # IT WITH THE CONTENTS OF T6NEXT.
TCF +11
NOOP
AD ONE
TS T6NEXT +1
CA ZERO
## Page 514
TS ADDTLT6
XCH ADDT6JTS
TS T6NEXTJT +2
TCF RESUME
+11 TS T6NEXT +1
CA ZERO
XCH ADDTLT6
TS T6NEXT
CA ZERO
XCH ADDT6JTS
XCH T6NEXTJT +1
TS T6NEXTJT +2
TCF RESUME
T6NXT=+ CS TOFJTCHG
AD TIME6
AD T6NEXT
CCS A
AD ONE
TCF +7
NOOP
AD ONE
TS T6NEXT +1
CA JTSATCHG
TS T6NEXTJT +2
TCF RESUME
+7 TS L
CS TOFJTCHG
AD TIME6
CCS A
AD ONE
TCF JTSB4T6
NOOP
AD ONE
TS T6NEXT
CA L
TS T6NEXT +1
CA JTSATCHG
TCF +7
JTSB4T6 XCH T6NEXT
TS T6NEXT +1
CA TOFJTCHG
TS TIME6
CA JTSATCHG
XCH T6NEXTJT
+7 XCH T6NEXTJT +1
XCH T6NEXTJT +2
TCF RESUME
# T-JET LAW FIXED CONSTANTS
RATEMAX+ DEC 0.94222
## Page 515
RATEMAX DEC 0.88889
RATEMAX2 DEC 0.79012
-35AT16 DEC -0.00219
-5DEG+1 DEC -.02772 # -5 DEGREES + CCSBIT SCALED AT PI RADIANS
38.7AT16 DEC 0.00242
TMINAT16 DEC 0.00047
PTJMINT6 DEC 0.00073
.1DPS DEC 0.00222
+1.5CSP DEC +0.01465
1.5CSP16 DEC 0.00938
-COM-6.5 DEC -.00122 # -SUM OF 5MS COMP TIME AND 6.5MS DELAY
14-TJMIN DEC 11
NEGCSP1 DEC -.00977
MS30P OCTAL 37775
0.88975 DEC 0.88975
16/25 DEC 0.64000
-DRATEDB OCTAL 77555 # -0.4 DEG/SEC SCALED AT PI/4 RADIANS/SEC
-D2JTLIM OCTAL 77001 # -1.4 DEG/SEC SCALED AT PI/4
-A2JTLIM OCTAL 76447 # -2.0 DEG/SEC SCALED AT PI/4
-ARATEDB OCTAL 77223 # -1.0 DEG/SEC SCALED AT PI/4
25/32 DEC .78125
-TJMINT6 OCTAL 77764 # -(7.5 MS) + 1 BIT(FOR BZMF), T6 SCALING
DAPLOW6 OCT 00077
BITS8,9 OCTAL 00600
UPM DEC -.2 # TEMPORARY ESTIMATE
CSPAT1P DEC 0.10000 # 100 MS AT 1.
PSKIPADR GENADR SKIPPAXS
JETLWADR CADR TJETLAW
SETIDLE LXCH BANKRUPT # FIRST T5RUPT AFTER FRESH START COMES
EXTEND
QXCH QRUPT
CAF T5IDADR # HERE. T5IDLER IS STARTED IN 1 SEC.
TS T5ADR
CAF 1SECRUPT
TS TIME5
TC IBNKCALL
FCADR STOPRATE
TC IBNKCALL
FCADR ALLCOAST
CAF DBWIDE
TS DB
CAF NEGONE
TS AOSCOUNT # MAKES APS CODING INACTIVE
TCF RESUME
T5IDLER LXCH BANKRUPT # LOOKS FOR GODAPGO TO START THE DAP.
# START CODING FOR MODULE 3 REMAKE, AUGUST 1967***START CODING FOR MODULE 3 REMAKE, AUGUST 1967*******************
## Page 516
T5IDLERI EXTEND
QXCH QRUPT
CA SMARTFLG # IS SMARTJOB DESIRED?
EXTEND
BZMF MORET5ID # NO. TAKE NO ACTION.
CAF BIT11 # YES. SEE IF IT IS ALREADY RUNNING.
TCF ADDLT5ID # GO TO ADDITIONAL CODING.
# **END CODING FOR MODULE 3 REMAKE, AUGUST 1967*****END CODING FOR MODULE 3 REMAKE, AUGUST 1967********************
1SECRUPT OCTAL 37634 # 1 SECOND SCALED AS TIME5 (100 PULSES)
DBWIDE DEC 0.02778
EBANK= AOSQTERM
T5IDADR 2CADR T5IDLER
# DUMMY FILTER RUPT AFTER P-AXIS RUPT.
EBANK= AOSQTERM
DUMMYFIL CAF MS30P # RESET TIMER IMMEDIATELY - DT = 30 MS
TS TIME5
LXCH BANKRUPT # INTERRUPT LEAD-IN (CONTINUED).
EXTEND # SET UP QRAXIS RUPT.
DCA DFQRAXIS
DXCH T5ADR
# INCREMENT AOSTERM IN DESCENT MODE TO IMPROVE RATE DERIVATION DURING QRAXIS CONTROL.
CAF BIT2 # STAGE BIT IS ONE FOR DESCENT.
EXTEND
RAND 30 # READ STAGE BIT
EXTEND
BZF CHKAPS # NOT IN DESCENT. HOW ABOUT APS BURN.
CS FLAGWRD1 # SEE IF ENGINE IS OFF.
MASK ENGINBIT # READ COMPLEMENT OF ENGINE-ON FLAG.
NOOP
EXTEND
BZF DLOOPBGN # ZERO WHEN ENGINE IS NOT OFF.
CAF ZERO # YES. ENGINE IS OFF.
TS AOSQTERM
TS AOSRTERM
TCF NOQRSM # RESUME.
DLOOPBGN CAF BIT1 # FIRST THE R-AXIS, THEN THE Q-AXIS.
DLOOP TS ITEMP1
DOUBLE
TS ITEMP2
INDEX ITEMP1
## Page 517
CA PITCHBTS
EXTEND
RAND 12 # IS PITCH(ROLL) GIMBAL MOVING.
EXTEND
BZF DLOOPCHK # ZERO WHEN GIMBAL IS NOT MOVING.
# FORM ACCDOT*CSP(2)*(1-.5*K) SCALED AT PI/4. THIS IS THE INCREMENT TO BE ADDED TO THE OFFSET ACCELERATION TERM.
CS (1-K) # (1-K) SCALED AT 1. CS TO COMPENSATE FOR
# INVERTED SIGN OF QACCDOT.
EXTEND
MP BIT9 # .5*(1-K) , SCALED AT 2(5).
AD NEGBIT9 # (1.-.5*K) SCALED AT 2(5).
EXTEND
MP CSPSQ # CSP(2)*(1.-.5*K) AT 2(5)
EXTEND
INDEX ITEMP2 # SELECT THE AXIS .
MP QACCDOT # QACCDOT AT PI/2(7).
INDEX ITEMP1
ADS AOSQTERM # ADD INCREMENT SCALED AT PI/4.
DLOOPCHK CCS ITEMP1
TCF DLOOP # R-AXIS DONE. NOW DO THE Q-AXIS.
TCF NOQRSM # RESUME.
CHKAPS CCS AOSCOUNT # 4 WAY BRANCH EXPLOITED
TCF DECCOUNT # COUNTING DOWN FOR AOSTASK
TCF AOSNEXT # TIME TO DO AOSTASK
TCF NOQRSM # AOSCOUNT NOT IN USE.INACTIVE AOSTASK.
TS SUMRATEQ # MINUS ZERO PUT IN AOSCOUNT BY APSENGON.
TS SUMRATER
TS SAVRATEQ
TS SAVRATER
TS KCOEFCTR
CS OMEGAQ # RECORD -(OLD OMEGA) FOR BOTH AXES FOR
TS OLDWFORQ
CS OMEGAR # THE FIRST PASS OF AOSTASK.
TS OLDWFORR
CS DAPBOOLS
MASK APSGOING
ADS DAPBOOLS
CAF 19DECIML
DECCOUNT TS AOSCOUNT
TCF NOQRSM
AOSNEXT CAF 19DECIML
TS AOSCOUNT
EXTEND
DCA TOAOSTSK
DTCF
## Page 518
TOAOSTSK 2FCADR AOSTASK
19DECIML DEC 19
PITCHBTS OCT 01400 # PITCH GIMBAL BITS (9,10).
OCT 06000 # ROLL GIMBAL BITS, (11,12).
CSPSQ OCT 00243 # .01 SCALED AT 1, FOR CSP(2).
TWENTYMS OCT 37776 # 20 MS FOR T5.
EBANK= QERROR
DFQRAXIS 2CADR QRAXIS
HULLSLIM DEC 0.04444 # 0.5 DEG/SEC SCALED AT 11.25 DEG/SEC
NEGBIT9 OCT -400
CHKSUM16 OCT 37777