# Copyright: Public domain. # Filename: AOSTASK_AND_AOSJOB.agc # Purpose: Part of the source code for Luminary 1A build 099. # It is part of the source code for the Lunar Module's (LM) # Apollo Guidance Computer (AGC), for Apollo 11. # Assembler: yaYUL # Contact: Ron Burkey <info@sandroid.org>. # Website: www.ibiblio.org/apollo. # Pages: 1485-1506 # Mod history: 2009-05-27 RSB Adapted from the corresponding # Luminary131 file, using page # images from Luminary 1A. # 2009-06-05 RSB Corrected a memory-bank error type. # 2009-06-07 RSB Corrected a typo. # # This source code has been transcribed or otherwise adapted from # digitized images of a hardcopy from the MIT Museum. The digitization # was performed by Paul Fjeld, and arranged for by Deborah Douglas of # the Museum. Many thanks to both. The images (with suitable reduction # in storage size and consequent reduction in image quality as well) are # available online at www.ibiblio.org/apollo. If for some reason you # find that the images are illegible, contact me at info@sandroid.org # about getting access to the (much) higher-quality images which Paul # actually created. # # Notations on the hardcopy document read, in part: # # Assemble revision 001 of AGC program LMY99 by NASA 2021112-061 # 16:27 JULY 14, 1969
# Page 1485 # PROGRAM NAME: 1/ACCS # PROGRAM WRITTEN BY: BOB COVELLI AND MIKE HOUSTON # LAST MODIFICATION: FEB. 14, 1969 BY G. KALAN # # PROGRAM DESCRIPTION: # 1/ACCS PROVIDES THE INTERFACE BETWEEN THE GUIDANCE PROGRAMS AND THE DIGITAL AUTOPILOT. WHENEVER THERE IS A # CHANGE IN THE MASS OF THE VEHICLE, IN THE DEADBAND SELECTED, IN THE VEHICLE CONFIGURATION (ASCENT-DESCENT- # DOCKED), AND DURING A FRESH START OR A RESTART, 1/ACCS IS CALLED TO COMMUNICATE THE DATA CHANGES TO THE DAP. # # THE INPUTS TO 1/ACCS ARE MASS, ACCELERATION (ABDELV), DEADBAND (DB), OFFSET ACCELERATIONS (AOSQ AND AOSR), # STAGE VERIFY BIT (CHAN30, BIT2), DOCKED BIT (DAPBOOLS, BIT13), DRIFT BIT (DAPBOOLS, BIT8), USEQRJTS (DAPBOOLS, # BIT14), AND SURFACE FLAG (FLAGWRDB, BIT8), AND CH5MASK. # # 1/ACCS COMPUTES THE JET ACCELERATIONS (1JACC, 1JACCQ, 1JACCR) AS FUNCTIONS OF MASS. 1JACCU AND 1JACCV ARE # FORMED BY RESOLVING 1JACCQ AND 1JACCR. IN THE DESCENT CASE, THE DESCENT ENGINE MOMENT ARM (L, PVT-CG) IS ALSO # COMPUTED AS A FUNCTION OF MASS. THE RATE OF CHANGE OF ACCELERATION DUE TO ROTATION OF THE GIMBAL (ACCDOTQ, # ACCDOTR) IS ALSO COMPUTED IN THE DESCENT CASE. # # AFTER THE ABOVE COMPUTATIONS, THE PROGRAM 1/ACCONT COMPUTES THE RECIPROCAL NET ACCELERATIONS ABOUT THE P, U, # AND V AXES (2 JETS FOR P-AXIS, BOTH 1 AND 2 JETS FOR U AND V AXES), AND THE RECIPROCAL COAST ACCELERATIONS ABOUT # THE P, U, AND V AXES. THE ACCELERATION FUNCTIONS (ACCFCTZ1 AND ACCFCTZ5) ARE ALSO COMPUTED FOR THESE AXES. THE # FIRE AND COAST DEADBANDS AND AXISDIST ARE COMPUTED FOR EACH AXIS. FLAT AND ZONE3LIM, THE WIDTH AND HEIGHT OF THE # MINIMUM IMPULSE ZONE, ARE COMPUTED. 1/ACCONT ALSO SETS ACCSWU AND ACCSWV, WHICH INDICATE WHEN 1 JET ACCELERATION # IS NOT SUFFICIENT TO PRODUCE MINIMUM ACCELERATION. AT THE COMPLETION OF 1/ACCS, THE ACCSOKAY BIT IS SET. # # SUBROUTINES CALLED: # TIMEGMBL # MAKECADR # ROT45DEG # # CALLING SEQUENCE: # TC BANKCALL # (1/ACCS MUST BE CALLED BY BANKCALL) # CADR 1/ACCS # # NORMAL EXIT: VIA BANKJUMP # # ALARM AND EXIT MODES: NONE # # INPUT/OUTPUT: SEE PROGRAM DESCRIPTION. # # DEBRIS: # ALL OF THE EXECUTIVE TEMPORARY REGISTERS, EXCEPT FIXLOC AND OVFIND, AND THE CORE SET AREA FROM MPAC TO BANKSET. # # RESTRICTIONS: # 1/ACCS MUST BE CALLED BY BANKCALL # EBANK IS SET TO 6, BUT NOT RESTORED. # Page 1486
BANK20 SETLOC DAPS3 BANK
COUNT* $$/DAPAO
EBANK= AOSQ
# ENTRY IS THROUGH 1/ACCJOB OR 1/ACCSET WHEN 1/ACCS IS TO BE DONE AS A SEPARATE NOVAC JOB. # IT IS POSSIBLE FOR MORE THAN ONE OF THESE JOBS TO BE SET UP CONCURRENTLY. HOWEVER, SINCE THERE IS NO CHECK OF # NEWJOB, A SECOND MANIFESTATION CANNOT BE STARTED UNTIL THE FIRST IS COMPLETED.
1/ACCSET CAF ZERO # ENTRY FROM FRESH START/RESTART CODING. TS AOSQ # NULL THE OFFSET ESTIMATES FOR 1/ACCS. TS AOSR TS ALPHAQ # NULL THE OFFSET ESTIMATES FOR DOWNLIST TS ALPHAR
1/ACCS CA EBANK6 # ***** EBANK SET BUT NOT RESTORED ***** TSEBANK
TC MAKECADR # SAVE RETURN SO THAT BUF2 MAY BE USED TS ACCRETRN
# DETERMINE MASS OF THE LEM.
CA DAPBOOLS # IS THE CSM DOCKED MASK CSMDOCKD TS DOCKTEMP # STORE RECORD OF STATE IN TEMP (MPAC +3). CCS A CS CSMMASS # DOCKED: LEMMAS = MASS - CSMMASS AD MASS # LEM ALONE: LEMMASS = MASS TS LEMMASS
# ON THE BASIS OF APSFLAG: # SET THE P-AXIS RATE COMMAND LIMIT FOR 2-JET/2-JET CONTROL # SET MPAC, WHICH INDICATES THE PROPER SET OF COEFFICIENTS FOR THE LEM-ALONE F(MASS) CALCULATIONS # ENSURE THAT THE LEM MASS VALUE IS WITHIN THE ACCEPTABLE RANGE
INHINT
CAE FLGWRD10 # DETERMINE WHETHER STAGED. MASK APSFLBIT EXTEND BZF DPSFLITE # Page 1487 CS POSMAX # ASCENT (OR ON LUNAR SURFACE) TS -2JETLIM # ALWAYS 2 JETS FOR P-AXIS RATE COMMAND CAF OCT14 # INITIALIZE INDEX AT 12. TS MPAC CS LEMMASS # CHECK IF MASS TOO HIGH. CATCH STAGING. AD HIASCENT EXTEND BZMF MASSFIX CS LEMMASS # CHECK IF MASS TOO LOW. THIS LIMITS THE AD LOASCENT # DECREMENTING BY MASSMON. EXTEND BZMF F(MASS)
MASSFIX ADS LEMMASS # STORE THE VIOLATED LIMIT AS LEMMASS.
ZL # ALSO CORRECT TOTAL MASS, ZEROING THE CCS DOCKTEMP # LOW-ORDER WORD.
CAE CSMMASS # DOCKED: MASS = LEMMASS + CSMMASS AD LEMMASS # LEM ALONE: MASS = LEMMASS DXCH MASS TCF F(MASS)
DPSFLITE CS BIT10 # FOUR JETS FOR P-AXIS RATE COMMAND ERRORS TS -2JETLIM # EXCEEDING 1.4 DEG/SEC (SCALED AT 45) CAF SIX # INITIALIZE INDEX AT 6. TS MPAC CS LEMMASS # CHECK IF MASS TOO HIGH. SHOULD NEVER AD HIDESCNT # OCCUR EXCEPT PERHAPS BEFORE THE PAD EXTEND# LOAD IS DONE. BZMF MASSFIX CS LEMMASS # CHECK IF MASS TOO LOW. THIS LIMITS THE AD LODESCNT # DECREMENTING BY MASSMON. AD HIASCENT EXTEND BZMF F(MASS) TCF MASSFIX
# COMPUTATION OF FUNCTIONS OF MASS
F(MASS) RELINT CCS DOCKTEMP TCF DOCKED # DOCKED: USE SEPARATE COMPUTATION. CA TWO
STCTR TS MPAC +1# J=2,1,0 FOR 1JACCR,1JACCQ,1JACC
CS TWO ADS MPAC # JX=10,8,6 OR 4,2,0 TO INDEX COEFS.
STCTR1 CAE LEMMASS INDEX MPAC AD INERCONC TS MPAC +2# MASS + C # Page 1488 EXTEND INDEX MPAC DCA INERCONA EXTEND
DV MPAC +2 INDEX MPAC AD INERCONB INDEX MPAC +1# 1JACC(J)=A(JX)/(MASS+C(JX) + B(JX) TS1JACC # 1JACC(-1)=L,PVT-CG SCALED AT 8 FEET
CCS MPAC +1 TCF STCTR TCF COMMEQS TCF LRESC
# COEFFQ AND COEFFR ARE COMPUTED IN THIS SECTION. THEY ARE USED TO RESOLVE Q-R COMPONENTS INTO NON-ORTHOGONAL # U AND V COMPONENTS (SEE ROT-TOUV SECTION).
COMMEQS CS1JACCR AD1JACCQ EXTEND BZMF BIGIQ EXTEND# EPSILON IS A MEASURE OF COUPLING AND IS
DV 1JACCQ # DEFINED=1-IQ/IR FOR IR GREATER THAN IQ. TS EPSILON # THE COMPUTED EXPRESSION IS EQUIVALENT AD -EPSMAX EXTEND BZMF GOODEPS1 CS -EPSMAX TS EPSILON # EPSILON IS LIMITED TO A MAX. OF .42265
GOODEPS1 CA EPSILON EXTEND MP0.35356 AD .7071 TS COEFFR # IN THIS CASE WHERE IR IS GREATER THAN CS POSMAX # IQ, COEFFQ=-.707(1+.5EPSILON)(1-EPSILON) AD EPSILON # AND COEFFR=.707(1+.5EPSILON) EXTEND MP COEFFR TS COEFFQ TCF JACCUV
BIGIQ EXTEND# EPSILON IS DEFINED AS 1-IR/IQ FOR IQ
DV 1JACCR # GREATER THAN IR. -EPSILON IS COMPUTED TS -EPSILON # RATHER THAN EPSILON FOR CONVENIENCE CS -EPSILON AD -EPSMAX EXTEND BZMF GOODEPS2 CA -EPSMAX TS -EPSILON # EPSILON IS LIMITED TO A MAX. OF .42265 # Page 1489
GOODEPS2 CA -EPSILON EXTEND MP0.35356 AD -.7071 TS COEFFQ # IN THIS CASE WHERE IQ IS GREATER THAN CS -EPSILON # IR, COEFFQ=-.707(1+.5EPSILON) AND AD NEGMAX # COEFFR=.707(1+.5EPSILON)(1-EPSILON) EXTEND MP COEFFQ TS COEFFR
JACCUV CS COEFFQ EXTEND MP1JACCQ # 1JACCQ IS SCALED AT PI/4 TS1JACCU # 1JACCU USED AS TEMPORARY STORAGE CA COEFFR EXTEND MP1JACCR AD1JACCU EXTEND MP BIT14 # SCALING CHANGED FROM PI/4 TO PI/2 TS1JACCU TS1JACCV # SCALED AT PI/2 RADIANS/SEC(2) CCS MPAC # COMPUTE L,PVT-CG IF IN DESCENT CAF ZERO # ZERO SWITCHES AND GO TO 1/ACCONT IN TS ALLOWGTS # ASCENT TCF1/ACCONT -1
CS TWO TS MPAC CS ONE TS MPAC +1 TCF STCTR1
# THIS SECTION COMPUTES THE RATE OF CHANGE OF ACCELERATION DUE TO THE ROTATION OF THE GIMBALS. THE EQUATION # IMPLEMENTED IN BOTH THE Y-X PLANE AND THE Z-X PLANE IS -- D(ALPHA)/DT = TL/I*D(DELTA)/DT, WHERE # T = ENGINE THRUST FORCE # L = PIVOT TO CG DISTANCE OF ENGINE # I = MOMENT OF INERTIA
LRESC CAE ABDELV # SCALED AT 2(13) CM/SEC(2) EXTEND MP MASS # SCALED AT B+16 KGS TC DVOVSUB # GET QUOTIENT WITH OVERFLOW PROTECTION ADRES GFACTM
# MASS IS DIVIDED BY ACCELERATION OF GRAVITY IN ORDER TO MATCH THE UNITS OF IXX,IYY,IZZ, WHICH ARE SLUG-FT(2). # THE RATIO OF ACCELERATION FROM PIPAS TO ACCELERATION OF GRAVITY IS THE SAME IN METRIC OR ENGINEERING UNITS, SO # THAT IS UNCONVERTED. 2.20462 CONVERTS KG. TO LB. NOW T IN IN A SCALED AT 2(14).
EXTEND MP L,PVT-CG # SCALED AT 8 FEET. # Page 1490 INHINT TS MPAC EXTEND MP1JACCR TC DVOVSUB # GET QUOTIENT WITH OVERFLOW PROTECTION ADRES TORKJET1
TS ACCDOTR # SCALED AT PI/2(7) CA MPAC EXTEND MP1JACCQ TC DVOVSUB # GET QUOTIENT WITH OVERFLOW PROTECTION ADRES TORKJET1
SPSCONT TS ACCDOTQ # SCALED AT PI/2(7) EXTEND MP DGBF # .3ACCDOTQ SCALED AT PI/2(8) TS KQ
CAE ACCDOTR # .3ACCDOTR AT PI/2(8) EXTEND MP DGBF TS KRDAP EXTEND# NOW COMPUTE QACCDOT, RACCDOT, THE SIGNED READ CHAN12 # JERK TERMS. STORE CHANNEL 12. WITH GIMBAL TS MPAC +1# DRIVE BITS 9 THROUGH 12 SET LOOP CAF BIT2 # INDEX TO COMPUTE RACCDOT, THEN QACCDOT. TCF LOOP3 CAF ZERO # ACCDOTQ AND ACCDOTR ARE NOT NEGATIVE,
LOOP3 TS MPAC # BECAUSE THEY ARE MAGNITUDES CA MPAC +1 INDEX MPAC # MASK CHANNEL IMAGE FOR ANY GIMBAL MOTION MASK GIMBLBTS EXTEND BZF ZACCDOT # IF NONE, Q(R)ACCDOT IS ZERO. CA MPAC +1 INDEX MPAC # GIMBAL IS MOVING. IS ROTATION POSITIVE. MASK GIMBLBTS +1 EXTEND BZF FRSTZERO # IF NOT POSITIVE, BRANCH INDEX MPAC # POSITIVE ROTATION, NEGATIVE Q(R)ACCDOT. CS ACCDOTQ TCF STACCDOT
FRSTZERO INDEX MPAC # NEGATIVE ROTATION, POSITIVE Q(R)ACCDOT. CA ACCDOTQ TCF STACCDOT
ZACCDOT CAF ZERO
STACCDOT INDEX MPAC TS QACCDOT # STORE Q(R)ACCDOT. CCS MPAC TCF LOOP3 -1# NOW DO QACCDOT. # Page 1491 CS DAPBOOLS # IS GIMBAL USABLE? MASK USEQRJTS EXTEND BZF DOWNGTS # NO. BE SURE THE GIMBAL SWITCHES ARE DOWN CS T5ADR # YES. IS THE DAP RUNNINT? AD PAXISADR EXTEND BZF +2 TCF DOWNGTS # NO. BE SURE THE GIMBAL SWITCHES ARE DOWN CCS INGTS # YES. IS GTS IN CONTROL? TCF DOCKTEST # YES. PROCEED WITH 1/ACCS. TC IBNKCALL # NO. NULL OFFSET AND FIND ALLOWGTS CADR TIMEGMBL
DOCKTEST CCS DOCKTEMP # BYPASS 1/ACCONT WHEN DOCKED. TCF1/ACCRET TCF1/ACCONT
# Page 1492 # SUBROUTINE: DVOVSUB # AUTHOR: C. WORK, MOD 0, 12 JUNE 68 # PURPOSE: THIS SUBROUTINE PROVIDES A SINGLE-PRECISION MACHINE LANGUAGE DIVISION OPERATION WHICH RETURNS # (1) THE QUOTIENT, IF THE DIVISION WAS NORMAL. # (2) NEGMAX, IF THE QUOTIENT WAS IMPROPER AND NEGATIVE. # (3) POSMAX, IF THE QUOTIENT WAS IMPROPER AND POSITIVE OR IF THERE WAS A ZERO DIVISOR. # THE CALLING PROGRAM IS PRESUMED TO BE A JOB IN THE F BANK WHICH CONTAINS DVOVSUB. E BANK MUST BE 6. # THE DIVISOR FOR THIS ROUTINE MAY BE IN EITHER FIXED OR ERASABLE STORAGE. SIGN AGREEMENT IS # ASSUMED BETWEEN THE TWO HALVES OF THE DIVIDEND. (THIS IS CERTAIN IF THE A AND L REGISTERS ARE THE # RESULT OF A MULTIPLICATION OPERATION.) # CALL SEQUENCE: L TC DVOVSUB # L +1 ADRES (DIVISOR) # L +2 RETURN HERE, WITH RESULT IN A,L # INPUT: DIVIDEND IN A,L (SIGN AGREEMENT ASSUMED), DIVISOR IN LOCATION DESIGNATED BY "ADRES". # DIVISOR MAY BE IN THE DVOVSUB FBANK,FIXED-FIXED FBANK,EBANK 6, OR UNSWITCHED ERASABLE. # OUTPUT: QUOTIENT AND REMAINDER, OR POSMAX (NEGMAX), WHICHEVER IS APPROPRIATE. # DEBRIS: SCRATCHX,SCRATCHY,SCRATCHZ,A,L (NOTE: SCRATCHX,Y,Z ARE EQUATED TO MPAC +4,+5, AND +6.) # ABORTS OR ALARMS: NONE # EXITS: TO THE CALL POINT +2. # SUBROUTINES CALLED: NONE.
DVOVSUB TS SCRATCHY # SAVE UPPER HALF OF DIVIDEND TS SCRATCHX INDEX Q # OBTAIN ADDRESS OF DIVISOR. CA0 INCR Q # STEP Q FOR PROPER RETURN SEQUENCE. INDEX A CA0# PICK UP THE DIVISOR. EXTEND# RETURN POSMAX FOR A ZERO DIVISOR. BZF MAXPLUS
TS SCRATCHZ # STORE DIVISOR.
CCS A # GET ABS(DIVISOR) IN THE A REGISTER. AD BIT1 TCF ZEROPLUS AD BIT1
ZEROPLUS XCH SCRATCHY # STORE ABS(DIVISOR). PICK UP TOP HALF OF EXTEND# DIVIDEND. BZMF GOODNEG # GET -ABS(DIVIDEND) # Page 1493 CS A
GOODNEG AD SCRATCHY # ABS(DIVISOR) - ABS(DIVIDEND) EXTEND BZMF MAKEMAX # BRANCH IF DIVISION IS NOT PROPER.
CA SCRATCHX # RE-ESTABLISH THE DIVIDEND EXTEND
DV SCRATCHZ # QUOTIENT IN THE A, REMAINDER IN L. TC Q # RETURN TO CALLER.
MAKEMAX CCS SCRATCHX # DETERMINE THE SIGN OF THE QUOTIENT. CCS SCRATCHZ # SCRATCHX AND SCRATCHZ ARE NON-ZERO. TCF MAXPLUS CCS SCRATCHZ CAF NEGMAX # +,- OR -,+ TC Q
MAXPLUS CAF POSMAX # -,- OR +,+ TC Q
# COEFFICIENTS FOR THE JET ACCELERATION CURVE FITS # THE CURVE FITS ARE OF THE FORM -- # # 1JACC = A/(MASS + C) + B # # A IS SCALED AT PI/4 RAD/SEC**2 B+16KG, B IS SCALED AT PI/4 RAD/SEC**2, AND C IS SCALED AT B +16 KG. # # THE CURVE FIT FOR L,PVT-CG IS OF THE SAME FORM, EXCEPT THAT A IS SCALED AT 8 FT B+16 KG, B IS SCALED AT 8 FT, # AND C IS SCALED AT B+16 KG.
2DEC +.0410511917# L A DESCENT
INERCONA 2DEC +.0059347674# 1JACCP A DESCENT
2DEC +.0014979264# 1JACCQ A DESCENT
2DEC +.0010451889# 1JACCR A DESCENT
2DEC +.0065443852# 1JACCP A ASCENT
2DEC +.0035784354# 1JACCQ A ASCENT
2DEC +.0056946631# 1JACCR A ASCENT
DEC +.155044# L B DESCENT DEC -.025233# L C DESCENT # Page 1494
INERCONB DEC +.002989# 1JACCP B DESCENT
INERCONC DEC +.008721# 1JACCP C DESCENT DEC +.018791# 1JACCQ B DESCENT DEC -.068163# 1JACCQ C DESCENT DEC +.021345# 1JACCR B DESCENT DEC -.066027# 1JACCR C DESCENT
DEC +.000032# 1JACCP B ASCENT DEC -.006923# 1JACCP C ASCENT DEC +.162862# 1JACCQ B ASCENT DEC +.002588# 1JACCQ C ASCENT DEC +.009312# 1JACCR B ASCENT DEC -.023608# 1JACCR C ASCENT
GIMBLBTS OCTAL01400 OCTAL01000 OCTAL06000 OCTAL04000
DGBF DEC0.6# .3 SCALED AT 1/2 0.35356DEC0.35356# .70711 SCALED AT 2
GFACTM OCT337# 979.24/2.20462 AT B+15
.7071DEC .70711
-.7071DEC -.70711
-EPSMAX DEC -.42265
# CSM-DOCKED INERTIA COMPUTATIONS
DOCKED CA ONE # COEFTR = 1 FOR INERTIA COEFFICIENTS
SPSLOOP1 TS COEFCTR # = 7 FOR CG COEFFICIENTS CA ONE # MASSCTR = 1 FOR CSM TS MASSCTR # = 0 FOR LEM
INDEX COEFCTR CA COEFF -1# COEFF -1 = C EXTEND MP LEMMASS EXTEND MP CSMMASS # LET X = CSMMASS AND Y = LEMMASS
INDEX COEFCTR AD COEFF # COEFF = F TS MPAC # MPAC = C X Y + F TCF +4
SPSLOOP2 TS MASSCTR # LOOP TWICE THROUGH HERE TO OBTAIN EXTEND# MPAC = MPAC + (A X +D)X + (B Y +E)Y
DIM COEFCTR # LOOP #1 LOOP #2 INDEX COEFCTR CA COEFF +2# COEFF +2 = A OR B EXTEND # Page 1495 INDEX MASSCTR MP LEMMASS INDEX COEFCTR AD COEFF +4# COEFF +4 = E OR D EXTEND INDEX MASSCTR MP LEMMASS ADS MPAC
CCS MASSCTR TCF SPSLOOP2 CCS COEFCTR # IF COEFCTR IS POS, EXIT FROM LOOP WITH TCF +7# CG X DELDOT = MPAC X 4 PI RAD-CM/SEC
TORQCONS 2DEC0.51443 B-14# CORRESPONDS TO 500 LB-FT
CA MPAC TS MPAC +1# INERTIA = (MPAC +1) X 2(38) KG-CM(2) CA SEVEN TCF SPSLOOP1
CA1JACCCON # 1JACC=1JACCCON/MASS
ZL TC DVOVSUB ADRES MASS TS1JACC # SCALED AT PI/4
CA POSMAX # SET INVERSE JET ACCELERATIONS TO POSMAX, TS1/ANETP # WHICH CORRESPONDS TO ACCEL. OF 1.4 D/SS. TS1/ANET2 +1 TS1/ANET2 +2 TS1/ANET2 +17D TS1/ANET2 +18D EXTEND DCA TORQCONS EXTEND
DV MPAC +1 INHINT TS1JACCQ # SCALED AT PI/4 TS1JACCR
CA -.7071 TS COEFFQ # COEFFQ AND COEFFR ARE CHOSEN TO MAKE U- CA .7071# AND V-AXES ORTHOGONAL FOR DOCKED CASE TS COEFFR CA MASS # SCALED AT 2(16) KG EXTEND MP MPAC # SCALED AT 4 PI RAD-CM/SEC EXTEND MP ABDELV # SCALED AT 2(13) CM/SEC(2) TC DVOVSUB # GET QUOTIENT WITH OVERFLOW PROTECTION # Page 1496 ADRES MPAC +1
1JACCCON OCT00167# SCALED AT PI/4X2(16) RAD/SEC(2)-KG
# 2 2 # COEFFICIENTS FOR CURVE FIT OF THE FORM Z = A X +B Y +C X Y +D X +E Y +F
COEFF DEC .19518# C COEFFICIENT OF INERTIA DEC -.00529# F " DEC -.17670# B " DEC -.03709# A " DEC .06974# E " DEC .02569# D "
DEC .20096# C COEFFICIENT OF CG DEC .13564# F " DEC .75704# B " DEC -.37142# A " DEC -.63117# E " DEC .41179# D "
# ASSIGNMENT OF TEMPORARIES FOR 1/ACCS (EXCLUDING 1/ACCONT) # MPAC, MPAC +1, MPAC +2 USED EXPLICITLY
COEFCTR EQUALS MPAC +4
MASSCTR EQUALS MPAC +5
SCRATCHX EQUALS MPAC +4# SCRATCH AREA FOR DVOVSUB ROUTINE.
SCRATCHY EQUALS SCRATCHX +1
SCRATCHZ EQUALS SCRATCHX +2
DOCKTEMP EQUALS MPAC +3# RECORD OF CSMDOCKED BIT OF DAPBOOLS
EPSILON EQUALS MPAC +1
-EPSILON EQUALS EPSILON
-.1875DEC -.18750
# Page 1497 BANK20 SETLOC DAPS3 BANK
EBANK= AOSQ
COUNT* $$/DAPAO
-1TS INGTS # ZERO INGTS IN ASCENT 1/ACCONT CA DB # INITIALIZE DBVAL1,2,3 EXTEND MP BIT13 TS L # 0.25 DB AD A TS DBVAL3 # 0.50 DB CS DBVAL1 AD L TS DBVAL2 # -.75 DB
GETAOSUV INHINT
CAE AOSR # COMPUTE ASOU AND AOSV BY ROTATING TS L # AOSQ AND AOSR.
CAE AOSQ TC IBNKCALL CADR ROT-TOUV DXCH AOSU
RELINT CA DAPBOOLS MASK DRIFTBIT # ZERO DURING ULLAGE AND POWERED FLIGHT. CCS A # IF DRIFTING LIGHT, CA ONE # SET DRIFTER TO 1 TS DRIFTER # SAVE TO TEST FOR DRIFTING FLIGHT LATER AD ALLOWGTS # NON-ZERO IF DRIFT OR GTS NEAR CCS A CA FLATVAL # DRIFTING FLIGHT, STORE .8 IN FLAT TS FLATEMP # IN POWERED FLIGHT, STORE ZERO IN FLAT EXTEND BZF DOPAXIS # IF POWERED AND NO GTS, START P AXIS, CCS DRIFTER # OTHERWISE SET ZONE3LIM CA ZONE3MAX # 17.5 MS, SCALED AT 4 SECONDS. TS Z3TEM
DOPAXIS CA1JACC # 1JACC AT PI/4 = 2JACC AT PI/2 = # ANET AT PI/2 = ANET/ACOAST AT 2(6). AD BIT9 # 1 + ANET/ACOAST AT 2(6) TS FUNTEM
CA1JACC # Page 1498 TC INVERT INHINT# P AXIS DATA MUST BE CONSISTENT TS1/ANETP # SCALED AT 2(7)/PI. TS1/ANETP +1
CS BIT9 # -1 AT 2(6) EXTEND MP1/ANETP # -1/ANET AT 2(13)/PI EXTEND
DV FUNTEM # -1/(ANET + ANET**2/ACOAST) AT 2(7)/PI TS PACCFUN TS PACCFUN +1
CA1/.03# NO AOS FOR P AXIS, ACOAST = AMIN TS1/ACOSTP TS1/ACOSTP +1 RELINT
ZL CCS DRIFTER DXCH AOSU # ZERO AOSU,V IF IN DRIFT, JUST TO BE SURE
UAXIS CA ZERO # DO U AXIS COMPUTATIONS TS UV # ZERO FOR U AXIS, ONE FOR V AXIS.
BOTHAXES TS SIGNAOS # CODING COMMON TO U,V AXES INDEX UV CCS AOSU # PICK UP ABS(AOSU OR AOSV) AD ONE # RESTORE TO PROPER VALUE TCF +3# AND LEAVE SIGNAOS AT ZERO AD ONE # NEGATIVE, RESTORE TO PROPER VALUE INCR SIGNAOS # AND SET SIGNAOS TO ONE TO SHOW AOS NEG TS ABSAOS # SAVE ABS(AOS) CS SIGNAOS TS -SIGNAOS # USED AS AN INDEX
CA DBVAL1 # SET DB1, DB2 TO DBVAL1 (= DB) TS DBB1 TS DBB2
CA ABSAOS # TEST MAGNITUDE OF ABS(AOS) AD -.03R/S2 EXTEND BZMF NOTMUCH # ABS(AOS) LESS THAN AMIN
BIGAOS CCS FLATEMP # AGS(AOS) GREATER THAN AMIN TCF SKIPDB1 # I DRIFT OR GTS, DO NOT COMPUTE DB
CA DBVAL1 INDEX -SIGNAOS # Page 1499 ADS DBB2 # DB2(1) = 2 DB INDEX SIGNAOS TS DBB4 # DB4(3) = 1 DB CA -.1875# -.1875 PI/2 RAD/SEC(2) SCALED AT PI/2 AD ABSAOS # ABSAOS IS SCALED AT PI/2 EXTEND BZMF +3 CS DBVAL3 # -.5 DB TCF DBONE CS ABSAOS DOUBLE DOUBLE AD BIT14 DOUBLE# 1-8 ABSAOS. (8 IS 16/PI SCALED AT 2/PI) EXTEND MP DB
DBONE INDEX SIGNAOS # DB1(2)=(1-8 ABSAOS) DB. IF ABSAOS IS TS DBB1 # GREATER THAN .1875 THEN DB1(2) = -.5 DB CA DBVAL2 INDEX -SIGNAOS TS DBB3 # DB3(4) = -.75 DB
SKIPDB1 CA ABSAOS # ABS(AOS) GREATER THAN AMIN, SO IT IS EXTEND MP BIT12 AD ABSAOS # (9/8) ABSAOS. TC INVERT # ALL RIGHT TO DIVIDE INDEX -SIGNAOS TS1/ACOSTT +1# 1/ACOASTPOS(NET) = 1/ABS(AOS) CA1/.03 INDEX SIGNAOS TS1/ACOSTT # 1/ACOASTNEG(POS) = 1/AIN
CA ABSAOS AD1JACCU AD1JACCU # 2 JACC + ABS(AOS) AD BIT9 # MAXIMUM VALUE IN COMPUTATIONS TS A # TEST FOR OVERFLOW TCF SKIPDB2 # NO OVERFLOW, DO NORMAL COMPUTATION
CA ABSAOS # RESCALE TO PI TO PREVENT OVERFLOW EXTEND MP BIT14 AD1JACCU # 1 JACC AT PI/2 = 2JACC AT PI TS ANET # ANETPOS(NEG) MAX SCALED AT PI = # ANETPOS(NEG) MAX/ACOASTNEG(POS) AT 2(7) AD BIT8 # 1 + ANETPOS/ACOASTNEG AT 2(7) XCH ANET # SAVE IN ANET, WHILE PICKING UP ANET TC INVERT EXTEND # Page 1500 MP BIT14 # SCALE 1/ANET AT 2(7)/PI TS1/ANET
CA ACCHERE # SET UP RETURN FROM COMPUTATION ROUTINE TS ARET CS BIT8 # -1 AT 2(7) TCF DOACCFUN # FINISH ACCFUN COMPUTATION
ACCHERE TCF ACCTHERE
NOTMUCH TS L # ABS(AOS) LESS THAN AMIN, SAVE IN L CA1/.03# ACOASTPOS,NEG = AMIN TS1/ACOSTT TS1/ACOSTT +1
CCS FLATEMP TCF SKIPDB2 # DO NOT COMPUTE DB IF DRIFT OR GTS
CA .0125RS # AMIN/2 AD L # L HAS ABS(AOS) - AMIN EXTEND# RESULT IS ABS(AOS)- AMIN/2 BZMF NOAOS # ABS(AOS) LESS THAN AMIN/2
SOMEAOS CA DBVAL3 # AMIN/2 LT ABS(AOS) LT AMIN INDEX -SIGNAOS TS DBB3 # DB3(4) = DB/2 AD A INDEX SIGNAOS TS DBB4 # DB4(3) = DB TCF SKIPDB2
NOAOS CA DBVAL1 TS DBB3 # DB3,4 = DB TS DBB4
SKIPDB2 CA ABSAOS # ANETPOS(NEG) MAX = 2 JACC + ABS(AOS) AD1JACCU AD1JACCU TS ANET # CANNOT OVERFLOW HERE
CL1/NET+ TC DO1/NET+ # COMPUTE 1/ANET, ACCFUN
ACCTHERE INDEX -SIGNAOS TS Z5TEM +2# STORE ACCFUN IN TEMPORARY BUFFER CA1/ANET INDEX -SIGNAOS TS1/ATEM2 +2# STORE 1/ANET IN TEMPORARY BUFFER
CA ABSAOS # SEE IF OVERFLOW IN MIN CASE AD1JACCU # Page 1501 AD BIT9 # MAXIMUM POSSIBLE VALUE TS A # OVERFLOW POSSIBLE BUT REMOTE TCF +2 CA POSMAX # IF OVERFLOW, TRUNCATE TO PI/2 AD -.03R/S2 # RESTORE TO CORRECT VALUE TS ANET TC DO1/NET+ # COMPUTE 1/ANET, ACCFUN
INDEX -SIGNAOS # STORE MIN VALUES JUST AS MAX VALUES TS Z5TEM CA1/ANET INDEX -SIGNAOS TS1/ATEM2
CS ABSAOS # NOW DO NEG(POS) CASES AD1JACCU AD1JACCU # ANETNEG(POS) MAX TC1/ANET- # COMPUTE 1/ANET, ACCFUN, AND ACCSW INDEX SIGNAOS # STORE NEG(POS) VALUES JUST AS POS(NEG) TS Z1TEM +2 TS L # SAVE IN L FOR POSSIBLE FUTURE USE CA1/ANET INDEX SIGNAOS TS1/ATEM1 +2 CS ABSAOS AD1JACCU # 1/ANETNEG(POS) MIN TS ANET AD -.03R/S2 # TEST FOR AMIN EXTEND# IF ANET LESS THAN AMIN, STORE MAX JET BZMF FIXMIN # VALUES FOR MIN JETS AND SET ACCSW
TC1/NETMIN # OTHERWISE DO MIN JET COMPUTATIONS
STMIN- INDEX SIGNAOS # STORE VALUES TS Z1TEM CA1/ANET INDEX SIGNAOS TS1/ATEM1
INDEX UV CA +UMASK MASK CH5MASK # TEST FOR +U (+V) JET FAILURES EXTEND BZF FAIL- CA1/ATEM2 # REPLACE FUNCTION VALUES DEPENDING ON THE TS1/ATEM2 +2# FAILED JET PAIR WITH CORRESPONDING ONE- CA Z5TEM # JET (OR AMIN) FUNCTION VALUES TS Z5TEM +2
FAIL- INDEX UV # Page 1502 CA -UMASK MASK CH5MASK # TEST FOR -U (-V) JET FAILURES EXTEND BZF DBFUN CA1/ATEM1 # REPLACE FUNCTION VALUES DEPENDING ON THE TS1/ATEM1 +2# FAILED JET PAIR WITH CORRESPONDING ONE- CA Z1TEM # JET (OR AMIN) FUNCTION VALUES TS Z1TEM +2
DBFUN CS DBB3 # COMPUTE AXISDIST AD DBB1 AD FLATEMP TS AXDSTEM CS DBB4 AD DBB2 AD FLATEMP TS AXDSTEM +1
INHINT CCS UV # TEST FOR U OR V AXIS TCF STORV # V AXIS STORE V VALUES
CA ACCSW # U AXIS STORE U VALUES TS ACCSWU
CA NINE # TRANSFER 10 WORDS VIA GENTRAN TC GENTRAN +1 ADRES1/ATEM1 # TEMPORARY BUFFER ADRES1/ANET1 # THE REAL PLACE
RELINT DXCH DBB1 # SAVE U DBS FOR LATER STORING DXCH UDB1 DXCH DBB4 DXCH UDB4
DXCH AXDSTEM DXCH UAXDIST
CA ONE # NOW DO V AXIS TS UV CA ZERO TCF BOTHAXES # AND DO IT AGAIN
STORV CA ACCSW # STORE V AXIS VALUES TS ACCSWV CA NINE TC GENTRAN +1 # Page 1503 ADRES1/ATEM1 # TEMPORARY BUFFER ADRES1/ANET1 +16D # THE REAL PLACE
# NOW STORE DEADBANDS FOR ALL AXES DXCH FLATEMP # FLAT AND ZONE3LIM DXCH FLAT
CA DBVAL1 # COMPUTE P AXIS DEADBANDS TS PDB1 TS PDB2 AD FLAT TS PDB3 TS PDB4 CA ZERO TS PAXDIST TS PAXDIST +1
CCS FLAT TCF DRFDB # DRIFT OR GTS -- COMPUTE DBS
DXCH UDB1 # STORE U DEADBANDS DXCH FIREDB # CANNOT USE GENTRAN BECAUSE OF RELINT DXCH UDB4 DXCH COASTDB DXCH UAXDIST DXCH AXISDIST DXCH DBB1 # STORE V AXIS DEADBANDS DXCH FIREDB +16D # COULD USE GENTRAN IF DESIRED DXCH DBB4 DXCH COASTDB +16D DXCH AXDSTEM DXCH AXISDIST +16D
TCF1/ACCRET +1# ALL DONE
DRFDB CA DBVAL1 # DRIFT DEADBANDS TS FIREDB TS FIREDB +1 TS FIREDB +16D TS FIREDB +17D AD FLAT TS COASTDB TS COASTDB +1 TS COASTDB +16D TS COASTDB +17D CA ZERO TS AXISDIST TS AXISDIST +1 TS AXISDIST +16D TS AXISDIST +17D
# Page 1504 1/ACCRET INHINT CS DAPBOOLS # SET BIT TO INDICATE DATA GOOD. MASK ACCSOKAY ADS DAPBOOLS RELINT CA ACCRETRN TC BANKJUMP # RETURN TO CALLER
INVERT TS HOLD # ROUTINE TO INVERT -INPUT AT PI/2 CA BIT9 # 1 AT 2(6)
ZL # ZERO L FOR ACCURACY AND TO PREVENT OVFLO EXTEND
DV HOLD TC Q # RESULT AT 2(7)/PI
DOWNGTS CAF ZERO # ZERO SWITCHES WHEN USEQRJTS BIT IS UP TS ALLOWGTS # OR DAP IS OFF TS INGTS TCF DOCKTEST
1/ANET- ZL LXCH ACCSW # ZERO ACCSW TS ANET # SAVE ANET AD -.03R/S2 # TEST FOR MIN VALUE EXTEND BZMF NETNEG # ANET LESS THAN AMIN, SO FAKE IT 1/NETMIN CA ANET EXTEND INDEX -SIGNAOS MP1/ACOSTT +1# ANETNEG(POS)/ACOASTPOS(NEG) AT 2(6)
# THE FOLLOWING CODING IS VALID FOR BOTH POS OR NEG # VALUES OF AOS
DO1/NET+ AD BIT9 # 1 + ANET/ACOAST AT 2(6) XCH ANET # SAVE AND PICK UP ANET EXTEND QXCH ARET # SAVE RETURN TC INVERT TS1/ANET # 1/ANET AT 2(7)/PI CS BIT9 # -1 AT 2(6)
DOACCFUN EXTEND MP1/ANET # -1/ANET AT 2(13)/PI EXTEND
DV ANET # ACCFUN AT 2(7)/PI TC ARET # RETURN
NETNEG CS -.03R/S2 # ANET LESS THAN AMIN -- SET EQUAL TO AMIN TS ANET # Page 1505 TCF1/NETMIN +1# CONTINUE AS IF NOTHING HAPPENED.
FIXMIN CCS SIGNAOS CA TWO # IF AOS NEG, ACCSW = +1 AD NEGONE # IF AOS POS, ACCSW = -1 TS ACCSW AD UV # IF ACCSW = +1, TEST FOR +U (+V) JET FAIL INDEX A # IF ACCSW = -1, TEST FOR -U (-V) JET FAIL CA -UMASK +1 MASK CH5MASK EXTEND BZF +4 CS -.03R/S2 # JET FAILURE -- CANNOT USE 2-JET VALUES TS ANET # ANET = AMIN TCF STMIN- -1# CALCULATE FUNCTIONS USING AMIN CA L # L HAS ACCFUN TCF STMIN- # STORE MAX VALUES FOR MIN JETS
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.