https://github.com/virtualagc/virtualagc
Revision 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC, committed by Ron Burkey on 07 August 2022, 15:04:04 UTC
assembly listings from yaASM and yaLEMAP. Added some debugging messages to 'make install'. Tweaked debugging messages that VirtualAGC embeds in 'simulate'. Verified buildability in Mint 21, 20, 19, 17, and verified buildability using clang in Mint 17.
1 parent 6bb1acc
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
TJET_LAW.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: TJET_LAW.agc
## Purpose: A section of LUM69 revision 2.
## It is part of the reconstructed source code for the flown
## version of the flight software for the Lunar Module's (LM)
## Apollo Guidance Computer (AGC) for Apollo 10. The code has
## been recreated from a copy of Luminary revsion 069, using
## changes present in Luminary 099 which were described in
## Luminary memos 75 and 78. The code has been adapted such
## that the resulting bugger words exactly match those specified
## for LUM69 revision 2 in NASA drawing 2021152B, which gives
## relatively high confidence that the reconstruction is correct.
## Reference: pp. 1454-1464
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2019-07-27 MAS Created from Luminary 69.
## Page 1454
# PROGRAM DESCRIPTION
# DESIGNED BY: R. D. GOSS AND P. S. WEISSMAN
# CODED BY: P. S. WEISSMAN 28 FEBRUARY 1968
#
# TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR
# ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR:
# -1 INDICATES THE P-AXIS
# +0 INDICATES THE U-AXIS
# +1 INDICATES THE V-AXIS.
# THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER
# UNBALANCED COUPLES ARE PREFERRED. TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE
# COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY
# ACCESSED BY INDEXING.
#
# THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST
# PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU OR TJV). THE NUMBER OF JETS THAT
# TJETLAW ASSUMES WILL BE USED IS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS. TWO JETS ARE ALWAYS
# ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES
# (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR.
#
# IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE
# ERROR AND/OR ERROR RATE ARE LARGE.
#
# CALLING SEQUENCE:
# TC TJETLAW (MUST BE IN JASK)
# OR
# INHINT (MUST BE IN JASK)
# TC IBNKCALL
# CADR TJETLAW
# RELINT
#
# EXIT: RETURN TO Q.
#
# INPUT:
# FROM THE CALLER: E, EDOT, AXISCTR, SENSETYP, TJP,-U,-V.
# FROM 1/ACCONT: 48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU,-V).
#
# OUTPUT:
# TJP,-U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3).
#
# DEBRIS:
# A, L, Q, E, EDOT, DAPTEMP1-6, DAPTREG1-4.
#
# ALARM: NONE
BANK 17
SETLOC DAPS2
BANK
EBANK= TJP
## Page 1455
COUNT* $$/DAPTJ
TJETLAW EXTEND # SAVE Q FOR RETURN.
QXCH HOLDQ
# SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT
INDEX AXISCTR # AXISDIFF(-1)=NO OF LOCATIONS BER P AND U
CAF AXISDIFF # AXISDIFF(0) = 0
TS ADRSDIF1 # AXISDIFF(+1)=NO OF LOCATIONS BET V AND U
CAE EDOT # IF EDOT NEGATIVE, PICK UP SET OF VALUES
EXTEND # THAT ALLOW USE OF SAME CODING AS FOR
BZMF NEGEDOT # POSITIVE EDOT.
CAE ADRSDIF1 # SET A SECOND INDEXER WHICH MAY BE
TS ADRSDIF2 # MODIFIED BY A DECISION FOR MAX JETS.
CAF SENSOR # FOR POSITIVE EDOT, ROTSENSE IS
TCF SETSENSE # INITIALIZED POSITIVE.
NEGEDOT CS E # IN ORDER FOR NEG EDOT CASE TO USE CODING
TS E # OF POS EDOT, MUST MODIFY AS FOLLOWS:
CS EDOT # 1. COMPLEMENT E AND EDOT.
TS EDOT # 2. SET SENSE OF ROTATION TO NEGATIVE
CAF BIT1 # (REVERSED LATER IF NECESSARY).
ADS ADRSDIF1 # 3. INCREMENT INDEXERS BY ONE SO THAT
TS ADRSDIF2 # THE PROPER PARAMETERS ARE ACCESSED.
CS SENSOR
SETSENSE TS ROTSENSE
# TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS):
# IF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE.
# IF LESS THAN PI/16 RADIANS, RESCALE TO PI/4.
CAE E # PICK UP ATTITUDE ERROR FOR THIS AXIS
EXTEND
MP BIT5 # SHIFT RIGHT TEN BITS: IF A-REGISTER IS
CCS A # ZERO, RESCALE AND TEST EDOT.
TCF RUFLAW2
TCF SCALEE
TCF RUFLAW1
SCALEE CAF BIT13 # ERROR IS IN L SCALED AT PI/16. RESCALE
EXTEND # IT TO PI/4 AND SAVE IT.
MP L
TS E
# TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND)
# IF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE.
# IF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND.
CAE EDOT # PICK UP SINGLE-PRECISION ERROR-RATE
## Page 1456
EXTEND # FOR THIS AXIS=
MP BIT4 # SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS
EXTEND # ZERO, THEN RESCALE AND USE FINELAW.
BZF SCALEDOT
TCF RUFLAW3
# *** FINELAW STARTS HERE ***
SCALEDOT LXCH EDOT # EDOT IS SCALED AT PI/32 RADIANS/SECOND.
CAE EDOT # COMPUTE (EDOT)(EDOT)
EXTEND
SQUARE # PRODUCT SCALED AT PI(2)/2(10) RAD/SEC.
EXTEND
MP BIT13 # SHIFT RIGHT TWO BITS TO RESCALE EDOTSQ
TS EDOTSQ # TO PI(2)/2(8) RAD(2)/SEC(2).
ERRTEST CCS E # DOES BIG ERROR (TWO DEGREES BEYOND THE
AD -2DEG # DEADBAND) REQUIRE MAXIMUM JETS?
TCF +2
AD -2DEG
EXTEND
INDEX ADRSDIF1
SU FIREDB
EXTEND
BZMF SENSTEST # IF NOT: ARE UNBALANCED JETS PREFERRED|
MAXJETS CAF TWO # IF YES: INCREMENT ADDRESS LOCATOR AND
ADS ADRSDIF2 # SET SWITCH FOR JET SELECT LOGIC TO 4.
CAF FOUR # (ALWAYS DO THIS FOR P-AXIS)
TCF TJCALC
SENSTEST CCS SENSETYP # DOES TRANSLATION PREFER MIN JETS.
TCF TJCALC # YES. USE MIN-JET PARAMETERS.
TCF MAXJETS # NO. GET MAX-JET PARAMETERS.
TJCALC TS NUMBERT # SET TO +0,1,4 FOR (U,V-AXES) JET SELECT.
# BEGINNING OF TJET CALCULATIONS:
CS EDOTSQ # SCALED AT PI(2)/2(8).
EXTEND
INDEX ADRSDIF2
MP 1/ANET1 # .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN.
INDEX ADRSDIF1
AD FIREDB # DEADBAND SCALED AT PI/4 RADIAN.
EXTEND
SU E # ATTITUDE ERROR SCALED AT PI/4 RADIAN.
TS FIREFCT # -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN.
EXTEND
BZMF ZON1,2,3
ZONE4,5 INDEX ADRSDIF1
CAE 1/ACOAST # .5/ACC SCALED AT 2(6)/PI WHERE
## Page 1457
EXTEND # ACC = MAX(AMIN, AOS-).
MP EDOTSQ # SCALED AT PI/2(8).
AD E # SCALED AT PI/4
INDEX ADRSDIF1
AD COASTDB # SCALED AT PI/4 POS. FOR NEG. INTERCEPT.
EXTEND # TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN.
BZMF ZONE5 # IF FUNCTION NEGATIVE, FIND TJET.
# IF FUNCTION POSITIVE, IN ZONE 4.
# ZONE 4 IS THE COAST REGION. HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD
# A. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR
# B. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT
# THEN THE THRUSTERS ARE KEPT ON.
ZONE4 INDEX AXISCTR # IS THE CURRENT VALUE IN TJET NON-ZERO
CS TJETU # WITH SENSE OPPOSITE TO EDOT,
EXTEND # (I.E., ARE JETS ON AND FIRING TOWARD
MP ROTSENSE # THE DESIRABLE STATE).
EXTEND
BZMF COASTTJ # NO. COAST.
JETSON CCS FLAT # YES. IS THIS DRIFTING OR POWERED FLIGHT|
TCF DRIFT/ON # DRIFTING. GO MAKE FURTHER TEST.
CS FIREFCT # POWERED (OR ULLAGE). CAN TARGET PARABOLA
INDEX ADRSDIF1 # BE REACHED FROM THIS POINT IN THE
AD AXISDIST # PHASE PLANE|
EXTEND
BZMF COASTTJ # NO. SET TJET = 0.
TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 1
CAE FIREFCT # AFTER COMPUTING THE REQUIRED
TCF ZONE1 # PARAMETERS.
DRIFT/ON INDEX ADRSDIF1 # CAN TARGET STRIP OF AXIS BE REACHED FROM
CS FIREDB # THIS POINT IN THE PHASE PLANE|
DOUBLE
AD FIREFCT
EXTEND
BZMF +3
COASTTJ CAF ZERO # NO. SET TJET = 0.
TCF RETURNTJ
TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 2
TCF ZONE2,3 # OR 3 AFTER COMPUTING REQUIRED VALUES.
ZONE5 TS L # TEMPORARILY STORE FUNCTION IN L.
CCS ROTSENSE # MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2
TCF +4 # AND ACCFCTZ5, WHICH MUST BE PICKED UP
TC CCSHOLE # FROM THE NEXT LOWER REGISTER IF THE
CS TWO # (ACTUAL) ERROR RATE IS NEGATIVE.
## Page 1458
ADS ADRSDIF2
+4 CAE L
EXTEND
INDEX ADRSDIF2 # TTOAXIS AND HH ARE THE PARAMETERS UPON
MP ACCFCTZ5 # WHICH THE APPROXIMATIONS TO TJET ARE
DDOUBL # BASED.
DDOUBL
DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).
INDEX ADRSDIF2
CAE 1/ANET2 # SCALED AT 2(7)/PI SEC(2)/RAD.
EXTEND
MP EDOT # SCALED AT PI/2(5)
TS TTOAXIS # SCALED AT 4 SEC.
# TEST WHETHER TJET GREATER THAN 50 MSEC.
EXTEND
MP -.05AT2 # H - .05 TTOAXIS - .00125 G.T. ZERO
AD HH # (SCALED AT 8 SEC(2) ).
AD NEG2
EXTEND
BZMF FORMULA1
# TEST WHETHER TJET GREATER THAN 150 MSEC.
CAE TTOAXIS
EXTEND
MP -.15AT2 # H - .15 TTOAXIS - .01125 G.T. ZERO
AD HH # (SCALED AT 8 SEC(2) )
AD -.0112A8
EXTEND
BZMF FORMULA2
# IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS
# IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC).
FULLTIME CAF BIT11 # 250 MSEC SCALED AT 4 SEC.
# RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED.
RETURNTJ EXTEND # ALL BRANCHES TERMINATE HERE WITH TJET
MP ROTSENSE # (SCALED AT 4 SEC) IN THE ACCUMULATOR.
INDEX AXISCTR # ROTSENSE APPLIES SIGN AND CHANGES SCALE.
TS TJETU
EXTEND
INDEX AXISCTR
MP ACCSWU # SET SWITCH FOR JET SELECT IF ROTATION IS
CAE L
EXTEND # IN A SENSE FOR WHICH 1/ACCS HAS FORCED
BZMF +3 # A MAX-JET CALCULATION.
CAF FOUR
## Page 1459
TS NUMBERT
TC HOLDQ # RETURN VIA SAVED Q.
# TJET = H/(.025 + TTOAXIS) FOR TJET LESS THAN 50 MSEC.
FORMULA1 CS -.025AT4 # .025 SEC SCALED AT 4.
AD TTOAXIS # SCALED AT 4 SECONDS.
DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
DV HH # DP H AND DIVIDE BY DENOMINATOR.
EXTEND
MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
TCF CHKMINTJ # CHECK THAT TJET IS NOT LESS THAN MINIMUM
# TJET = (H + .00375)/(0.1 + TTOAXIS) FOR TJET GREATER THAN 50 MSEC.
FORMULA2 EXTEND
DCA .00375A8 # .00375 SEC(2) SCALED AT 8.
DAS HH # STORE NUMERATOR IN DP H, WHICH NEED NOT
# BE PRESERVED.
CAE TTOAXIS # SCALED AT 4 SEC.
AD .1AT4 # 0.1 SEC SCALED AT 4.
DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
DV HH # DP NUMERATOR AND DIVIDE BY DENOMINATOR
EXTEND
MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
TCF RETURNTJ # END SUBROUTINE.
# SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3.
# REACHED BY TC FROM 3 POINTS IN TJETLAW.
Z123COMP CS ROTSENSE # USED IN RETURNTJ SECTION TO RESCALE TJET
TS ROTSENSE # AS TIME6 AND GIVE IT PROPER SIGN.
CAE EDOT # SCALED AT PI/2(5) RAD/SEC.
EXTEND
INDEX ADRSDIF2
MP 1/ANET1 # SCALED AT 2(7)/PI SEC(2)/RAD.
TS TTOAXIS # STORE TIME-TO-AXIS SCALED AT 4 SECONDS.
AD -TJMAX
EXTEND # IS TIME TO AXIS LESS THAN 150 MSEC.
BZMF +2
TCF FULLTIME # NO. FIRE JETS, DO NOT CALCULATE TJET.
RETURN # YES. GO ON TO FIND TJET
ZON1,2,3 TC Z123COMP # SUBROUTINIZED PREPARATION FOR ZONE1,2,3.
# IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL
# LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE. DURING POWERED FLIGHT
## Page 1460
# OR ULLAGE, FLAT = 0
CAE FIREFCT # SCALED AT PI/4 RAD.
AD FLAT
EXTEND
BZMF ZONE1 # NOT IN SPECIAL ZONES.
# FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE. IF ON AXIS, COAST.
ZONE2,3 CS ZONE3LIM # HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS
AD TTOAXIS # 35 MSEC IN DRIFTING FLIGHT
EXTEND # ZERO WHEN TRYING TO ENTER GTS CONTROL.
BZMF ZONE3
ZONE2 CAE TTOAXIS # FIRE TO AXIS.
TCF RETURNTJ
ZONE3 CCS EDOT # CHECK IF EDOT IS ZERO.
CAF BIT6 # FIRE A ONE-JET MINIMUM IMPULSE.
TCF RETURNTJ # TJET = +0.
TC CCSHOLE # CANNOT BE BECAUSE NEG EDOT COMPLEMENTED.
TCF RETURNTJ # TJET = +0.
ZONE1 EXTEND
INDEX ADRSDIF1
SU AXISDIST # SCALED AT PI/4 RAD.
EXTEND
INDEX ADRSDIF2
MP ACCFCTZ1 # SCALED AT 2(7)/PI SEC(2)/RAD.
DDOUBL
DDOUBL
DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).
# TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC:
# 2 2
# IS .5(.150 - TTOAXIS) - H NEGATIVE (SCALED AT 8 SECONDS )
CAE TTOAXIS # TTOAXIS SCALED AT 4 SECONDS.
AD -TJMAX # -.150 SECOND SCALED AT 4.
EXTEND
SQUARE
EXTEND
SU HH # HIGH WORD OF H SCALED AT 8 SEC(2).
EXTEND
BZMF FULLTIME # YES. NEED NOT CALCULATE TJET.
# TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE.
CAE HH
AD NEG2
EXTEND
BZMF FORMULA3
## Page 1461
# TJET = H/0.1 + TTOAXIS + .0375 FOR APPROXIMATION OVER MORE THAN 50 MSEC.
CAF .1AT2 # STORE .1 SEC SCALED AT 2 FOR DIVISION.
DXCH HH # DP H SCALED AT 8 SEC(2) NEED NOT BE
EXTEND # PRESERVED.
DV HH # QUOTIENT SCALED AT 4 SECONDS.
AD TTOAXIS # SCALED AT 4 SEC.
AD .0375AT4 # .0375 SEC SCALED AT 4.
TCF RETURNTJ # END COMPUTATION.
# TJET = H/.O25 + TTOAXIS FOR APPROXIMATION OVER LESS THAN 50 MSEC.
FORMULA3 CS -.025AT2 # STORE +.025 SEC SCALED AT 2 FOR DIVISION
DXCH HH # PICK UP DP H AT 8, WHICH NEED NOT BE
EXTEND # PRESERVED.
DV HH # QUOTIENT SCALED AT 4 SECONDS.
AD TTOAXIS # SCALED AT 4 SEC.
# IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO.
# MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY.
CHKMINTJ AD -TJMIN # IS COMPUTED TIME LESS THAN THE MINIMUM.
EXTEND
BZMF COASTTJ # YES, SET TIME TO ZERO.
AD TJMIN # NO, RESTORE COMPUTED TIME.
TCF RETURNTJ # END COMPUTATION.
## Page 1462
# *** ROUGHLAW ***
#
# BEFORE ENTRY TO RUFLAW:
# 1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT.
# 2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE.
# 3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC.
# (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4)
#
# RUFLAW1: ERROR MORE NEGATIVE THAN PI/16 RAD. FIRE TO A RATE OF PI/32 RAD/SEC (IF JET TIME EXCEEDS 20 MSEC.).
# RUFLAW2: ERROR MORE POSITIVE THAN PI/16 RAD. FIRE TO OPPOSING RATE OF PI/32 RAD/SEC.
# RUFLAW3: ERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS. COAST IF BELOW FIREFCT, FIRE IF ABOVE
RUFLAW1 CS BIT12 # DECREMENT EDOT BY PI/32 RAD/SEC, WHICH
ADS EDOT # IS THE TARGET RATE.
EXTEND
BZMF SMALRATE # BRANCH IF RATE LESS THAN TARGET.
TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
CAE EDOT # PICK UP DESIRED RATE CHANGE.
RUFLAW12 EXTEND # COMPUTE TJET
INDEX ADRSDIF2 # = (DESIRED RATE CHANGE)/(2-JET ACCEL.)
MP 1/ANET1 +2
AD -1/8 # IF TJET, SCALED AT 32 SEC, EXCEEDS
EXTEND # 4 SECONDS, SET TJET TO TJMAX.
BZMF +2
TCF FULLTIME
EXTEND
BZF FULLTIME
AD BIT12 # RESTORE COMPUTED TJET TO ACCUMULATOR.
DAS A
DAS A
DAS A # RESCALED TJET AT 4 SECONDS.
TCF CHKMINTJ # RETURN AS FROM FINELAW.
SMALRATE TC RUFSETUP +2 # SET NUMBERT AND FIREFCT FOR MAXIMUM JETS
CCS ROTSENSE
CAF ONE # MODIFY INDEXER TO POINT TO 1/ANET
TCF +2 # CORRESPONDING TO THE PROPER SENSE.
CAF NEGONE
ADS ADRSDIF2
CS EDOT # PICK UP (PI/32-EDOT)=DESIRED CHANGE.
TCF RUFLAW12
RUFLAW2 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
CAF BIT12
AD EDOT # PICK UP(PI/32+EDOT) = DESIRED RATE CHANGE
TS A # IF OVERFLOW SKIP, FIRE FOR FULL TIME.
## Page 1463
TCF RUFLAW12 # OTHERWISE, COMPUTE JET TIME.
TCF FULLTIME
RUFLAW3 TC RUFSETUP # EXECUTE COMMON RUFLAW SUBROUTINE.
INDEX ADRSDIF1
CS FIREDB # CALCULATE DISTANCE FROM SWITCH CURVE
AD E # 1/ANET1*EDOT*EDOT +E - FIREDB = 0
EXTEND # SCALED AT 4 PI RADIANS
MP BIT11
XCH EDOT
EXTEND
SQUARE
EXTEND
INDEX ADRSDIF1
MP 1/ANET1 +2
AD EDOT
EXTEND
BZMF COASTTJ # COAST IF BELOW IT.
TCF FULLTIME # FIRE FOR FULL PERIOD IF ABOVE IT.
# SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW.
RUFSETUP CS ROTSENSE # REVERSE ROTSENSE WHEN ENTER HERE.
TS ROTSENSE
+2 CAF FOUR # REQUIRE MAXIMUM (2) JETS IN U,V-AXES.
TS NUMBERT
CAF NEGMAX # SUGGEST MAXIMUM (4) JETS IN P-AXIS.
TS FIREFCT
TC Q
# CONSTANTS FOR TJETLAW
DEC -16 # AXISDIFF(INDEX) = NUMBER OF REGISTERS
AXISDIFF DEC +0 # BETWEEN STORED 1/ACCS PARAMETERS FOR
DEC 16 # THE INDEXED AXIS AND THE U-AXIS.
SENSOR OCT 14400 # RATIO OF TJET SCALING WITHIN TJETLAW
# (4 SEC) TO SCALING FOR T6 (10.24 SEC).
-2DEG DEC -.04444 # -2.0 DEGREES SCALED AT 45.
-.0112A8 DEC -.00141 # -.01125 SEC(2) SCALED AT 8.
.1AT4 DEC .025 # 0.1 SECOND SCALED AT 4.
.1AT2 DEC .05 # 0.1 SEC SCALED AT 2.
.0375AT4 DEC .00938 # .0375 SEC SCALED AT 4.
-.025AT2 DEC -.0125 # -.025 SEC SCALED AT 2.
-.025AT4 DEC -.00625
-.05AT2 DEC -.025
-.15AT2 DEC -.075
.00375A8 2DEC .00375 B-3
-TJMAX DEC -.0375 # LARGEST CALCULATED TIME. .150 SEC AT 4.
TJMIN DEC .005 # SMALLEST ALLOWABLE TIME. .020 SEC AT 4.
## Page 1464
-TJMIN DEC -.005
Computing file changes ...