Source Code
![]() |
These source-code files were obtained by digitally photographing
an Artemis 72 program listing from a private collection and then
modifying pre-existing Comanche 55 (Apollo 11) source files to
incorporate changes. Note that the page images
presented online are of reduced quality, and that additional images
may be available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 072 OF AGC PROGRAM ARTEMIS BY NASA 2021114-011 11:40 FEB. 26, 1971 THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS COLOSSUS 3 THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER OSR PROJECT 55-23890, SPONSORED BY THE MANNED SPACECRAFT CENTER OF THE NATIONAL AERONAUTICS AND SPACE ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE CHARLES STARK DRAPER LABORATORY, MASSACHUSETTS INSTITUTE OF TECHNOLOGY, CAMBRIDGE, MASS. |
043205,000002: # Copyright: Public domain.
043206,000003: # Filename: TVCROLLDAP.agc
043207,000004: # Purpose: Part of the source code for Artemis (i.e., Colossus 3),
043208,000005: # build 072. This is for the Command Module's (CM)
043209,000006: # Apollo Guidance Computer (AGC), we believe for
043210,000007: # Apollo 15-17.
043211,000008: # Assembler: yaYUL
043212,000009: # Contact: Steve Case <case1780@adelphia.net>
043213,000010: # Website: www.ibiblio.org/apollo/index.html
043214,000011: # Page scans: www.ibiblio.org/apollo/ScansForConversion/Artemis072/
043215,000012: # Mod history: 2009-09-13 SMC Adapted from Comanche055 files.
043216,000013: # 2009-09-15 JL Fix typos. Fix page numbers. Remove change comments. Restore hard tabs.
043217,000014: # 2010-02-15 JL Temporary workaround for an error on p996.
043218,000015: # 2010-02-20 RSB Un-##'d this header.
043219,000016:
![]() |
Page 982 |
043221,000018:
043222,000019: # PROGRAM NAME...TVC ROLL AUTOPILOT
043223,000020: # LOG SECTION...TVCROLLDAP SUBROUTINE...DAPCSM
043224,000021: # MODIFIED BY SCHLUNDT 21 OCTOBER 1968
043225,000022:
043226,000023:
043227,000024: # FUNCTIONAL DESCRIPTION....
043228,000025:
043229,000026: # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER
043230,000027: # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN
043231,000028: # BY IGNITION (P40)
043232,000029: # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE
043233,000030: # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3
043234,000031: # *USES T6 CLOCK TO TIME JET FIRINGS
043235,000032: # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER
043236,000033: # *MINIMUM JET FIRING TIME = 15 MS
043237,000034: # *JET PAIRS FIRE ALTERNATELY
043238,000035: # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED
043239,000036: # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION
043240,000037: # OF A JET FIRING TIME IS MADE ON A LATER PASS
043241,000038:
043242,000039: # CALLING SEQUENCE....
043243,000040:
043244,000041: # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC)
043245,000042: # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.)
043246,000043:
043247,000044: # NORMAL EXIT MODES.... ENDOFJOB
043248,000045:
043249,000046: # ALARM OR ABORT EXIT MODES.... NONE
043250,000047:
043251,000048: # SUBROUTINES CALLED.....NONE
043252,000049:
043253,000050: # OTHER INTERFACES....
043254,000051:
043255,000052: # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC
043256,000053: # EVERY 10 SECONDS (VIA MASSPROP AND S40.15)
043257,000054: # *RESTARTS SUSPEND ROLL DAP COMPUTATIONS UNTIL THE NEXT 1/2 SEC
043258,000055: # SAMPLE PERIOD. (THE PART OF TVCEXECUTIVE THAT CALLS ROLL DAP IS
043259,000056: # NOT RESTARTED.) THE OGAD FROM IGNITION IS MAINTAINED.
043260,000057:
043261,000058: # ERASABLE INITIALIZATION REQUIRED....
043262,000059:
043263,000060: # *1/CONACC (S40.15)
043264,000061: # *OGAD (CDUX AT IGNITION)
043265,000062: # *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE)
043266,000063: # *OGAPAST (OGANOW AT TVCEXECUTIVE)
043267,000064: # *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON)
043268,000065: # OUTPUT....
043269,000066:
043270,000067: # *ROLL JET PAIR FIRINGS
043271,000068:
![]() |
Page 983 |
043273,000070: # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY
043274,000071:
![]() |
Page 984 |
043276,000073: # SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING
043277,000074: # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS.
043278,000075:
043279,000076: # SWITCHING LOGIC IN THE PHASE PLANE....
043280,000077:
043281,000078: # OGARATE
043282,000079: # *
043283,000080: # *
043284,000081: # * * * * * * * * * * * *
043285,000082: # * (REGION 1, SEE TEXT BELOW)
043286,000083: # * *
043287,000084: # *
043288,000085: # * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL)
043289,000086: # * * .
043290,000087: # * * *
043291,000088: # * * (FIRE NEG ROLL JETS)
043292,000089: # * * *
043293,000090: # (-DB,+LMCRATE)....* *
043294,000091: # * * *
043295,000092: # * * OGAERROR
043296,000093: # ************************************************************************
043297,000094: # * * (-AK, OGAERR)
043298,000095: # * * * (REGION 6-PRIME)
043299,000096: # * * (SEE TEXT BELOW)
043300,000097: # * * *
043301,000098: # * * ...STRAIGHT LINE
043302,000099: # (FIRE POS ROLL JETS) * * * .
043303,000100: # * (COAST) *
043304,000101: # * * * * * * * * * * *
043305,000102: # * -MINLIM
043306,000103: # * *
043307,000104: # *
043308,000105: # * * * * * * * * * * * * * * * *
043309,000106: # * -MAXLIM
043310,000107: # *
043311,000108: # *
043312,000109:
043313,000110: # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF
043314,000111: # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC
043315,000112: # ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET
043316,000113: # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE,
043317,000114: # SUBJECT TO TEH LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION,
043318,000115: # ABOVE.
043319,000116:
043320,000117: # THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF
043321,000118: # TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME...
043322,000119: # 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS)
![]() |
Page 985 |
043324,000121:
043325,000122: # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE
043326,000123: # IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL
043327,000124: # PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3
043328,000125: # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION
043329,000126: # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT
043330,000127: # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE
043331,000128: # INSTEAD. TAKE AN OPERATING POINT IN REGION 6' . PASS A TANGENT TO
043332,000129: # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS
043333,000130: # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE...
043334,000131: # THE INTERSECTION DEFINES THE DESIRED OGARATE. IF THE OPERATING POINT IS
043335,000132: # CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED
043336,000133: # THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS
043337,000134: # THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE
043338,000135: # TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND
043339,000136: # INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE
043340,000137: # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2
043341,000138: # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE
043342,000139: # APPROXIMATION.
043343,000140:
043344,000141: # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE
043345,000142: # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS
043346,000143: # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO
043347,000144: # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO.
043348,000145: # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING
043349,000146: # THE DESIRED INTERSECTION (I.E., IN THE REGION BETWEEN THE MINLIM
043350,000147: # AND THE STRAIGHT LINE SWITCH) IT WILL EXIBIT NORMAL COAST-REGION
043351,000148: # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY
043352,000149: # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET
043353,000150: # FAILED-ON.
043354,000151:
043355,000152: # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS
043356,000153: # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT,
043357,000154: # DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND
043358,000155: # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF
043359,000156: # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED
043360,000157: # FROM REGION 1 TO REGION 6', THE DUMMY POINT IS NO LONGER REQUIRED,
043361,000158: # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6' POINT.
043362,000159:
043363,000160:
043364,000161: # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE)....
043365,000162: # 2
043366,000163: # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE)
043367,000164:
043368,000165:
043369,000166: # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT....
043370,000167:
043371,000168: # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP
043372,000169:
043373,000170: # WHERE INTERCEP = DB(-SLOPE) - LMCRATE
![]() |
Page 986 |
043375,000172:
043376,000173: # EQUATION FOR INTERSECTION, CONTROL PARABOLA, AND STRAIGHT SWITCH LINE....
043377,000174:
043378,000175: # DOGADOT = NUM/DEN, WHERE
043379,000176: # 2
043380,000177: # NUM = (-SLOPE)(OGARATE) (1/CONACC)
043381,000178: # +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB))
043382,000179: # +LMCRATE
043383,000180:
043384,000181: # DEN = (-SLOPE)(LMCRATE)(1/CONACC) - SGN(DELOGA)
043385,000182:
043386,000183: # 2
043387,000184: # DELOGA = OGAERROR - (DB - OGARATE (1/CONACC)/2) SGN(OGARATE)
043388,000185:
043389,000186:
043390,000187: # FOR REGIONS 6 AND 6-PRIME, USE ACTUAL OPERATING POINT (OGA, OGARATE)
043391,000188: # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE.
043392,000189: # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR
043393,000190: # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY....
043394,000191: # OGAERROR= DELOGA + DB SGN(OGARATE)
043395,000192: # OGARATE= -LMCRATE SGN(OGARATE)
043396,000193:
043397,000194: # NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING
043398,000195: # ALSO, AT POINT WHERE DOGARATE IS COMPUTED, REGISTER DELOGA IS USED
043399,000196: # AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE.
![]() |
Page 987 |
043401,000198:
043402,000199: # ROLLDAP CODING....
043403,000200:
043404,000201: 16,2000 SETLOC DAPROLL
043405,000202: 16,2000 BANK
043406,000203: 16,3342 E6,1645 EBANK= OGANOW
043407,000204: 16,3342 COUNT* $$/ROLL
043408,000205: 16,3342 31645 ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER
043409,000206: 16,3343 00006 EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC)
043410,000207: 16,3344 21646 MSU OGAPAST
043411,000208: 16,3345 00006 EXTEND
043412,000209: 16,3346 74764 MP BIT5
043413,000210: 16,3347 22000 LXCH A
043414,000211: 16,3350 55533 TS OGARATE # SC.AT B-4 REV/SEC
043415,000212:
043416,000213: # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER)
043417,000214: # EXAMINE DURATION OF LAST JET FIRING IF JETS NOW ON.
043418,000215:
043419,000216: 16,3351 31571 DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX
043420,000217: 16,3352 00006 EXTEND
043421,000218: 16,3353 13355 BZF +2 # ROLL JETS ARE NOW OFF.
043422,000219: 16,3354 13363 TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON.
043423,000220:
043424,000221: 16,3355 31573 CAE TEMREG # EXAMINE LAST FIRING INTERVAL
043425,000222: 16,3356 00006 EXTEND # IF POSITIVE, DONT FIRE
043426,000223: 16,3357 13363 BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF.
043427,000224:
043428,000225: 16,3360 34772 CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT
043429,000226: 16,3361 55573 TS TEMREG # RESET TEMREG
043430,000227: 16,3362 15314 WAIT1/2 TCF TASKOVER # EXIT ROLL DAP
043431,000228:
043432,000229: # COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING)
043433,000230:
043434,000231: 16,3363 41533 ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC
043435,000232: 16,3364 00006 EXTEND
043436,000233: 16,3365 71631 MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV
043437,000234: 16,3366 00006 EXTEND
043438,000235: 16,3367 71533 MP OGARATE
043439,000236: 16,3370 63756 AD DB # SCALED AT 2(+0) REV
043440,000237: 16,3371 55573 TS TEMREG # QUANTITY SCALED AT 2(+0) REV.
043441,000238:
043442,000239: # GET SIGN OF OGARATE
043443,000240:
043444,000241: 16,3372 31533 CA OGARATE
043445,000242: 16,3373 00006 EXTEND
043446,000243: 16,3374 63377 BZMF +3 # LET SGN(0) BE NEGATIVE
043447,000244: 16,3375 34770 CA BIT1
043448,000245: 16,3376 13400 TCF +2
043449,000246: 16,3377 44770 CS BIT1
043450,000247: 16,3400 55651 TS SGNRT # + OR - 2(-14)
043451,000248:
![]() |
Page 988 |
043453,000250: # CALCULATE DISTANCE FROM SWITCH PARABOLA (DELOGA)
043454,000251:
043455,000252: 16,3401 00006 EXTEND
043456,000253: 16,3402 71573 MP TEMREG # SGN(OGARATE) TEMREG NOW IN L
043457,000254: 16,3403 40001 CS L
043458,000255: 16,3404 61647 AD OGA # SCALED AT 2(+0) REV
043459,000256: 16,3405 55652 DELOGAC TS DELOGA # SCALE B+0 REV, PLUS TO RIGHT OF C-PARAB
043460,000257:
043461,000258: # EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN.
043462,000259:
043463,000260: 16,3406 00006 EXTEND
043464,000261: 16,3407 63412 BZMF +3
043465,000262: 16,3410 34346 CAF PRIO30 # =CA (30000)
043466,000263: 16,3411 13413 TCF +2
043467,000264: 16,3412 34752 CAF BIT15 # =CS (40000)
043468,000265: 16,3413 55653 TS I
043469,000266:
043470,000267: 16,3414 51653 INDEX I # TSET ON I SGN(OGARATE)
043471,000268: 16,3415 01651 0 SGNRT # CA OR CS
043472,000269: 16,3416 40000 COM
043473,000270: 16,3417 00006 EXTEND
043474,000271: 16,3420 63471 REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN)
043475,000272:
043476,000273: # NO JET FIRE YET, TEST FOR MAX OGARATE
043477,000274:
043478,000275: 16,3421 51653 INDEX I
043479,000276: 16,3422 01533 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE
043480,000277: 16,3423 55654 TS IOGARATE # I.E. I OGARATE
043481,000278: 16,3424 63763 AD MAXLIM # SCALED AT 2(-4) REV/SEC
043482,000279: 16,3425 00006 EXTEND
043483,000280: 16,3426 63550 REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS)
043484,000281:
043485,000282: # COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT...NOTE THAT STR. LINE
043486,000283: # SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG QUANTITY
043487,000284:
043488,000285: 16,3427 31533 CA OGARATE
043489,000286: 16,3430 00006 EXTEND
043490,000287: 16,3431 74753 MP BIT14
043491,000288: 16,3432 55573 TS TEMREG
043492,000289: 16,3433 31647 CA OGA
043493,000290: 16,3434 00006 EXTEND
043494,000291: 16,3435 73757 MP -SLOPE
043495,000292: 16,3436 20001 DDOUBL
043496,000293: 16,3437 20001 DDOUBL
043497,000294: 16,3440 20001 DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG)
043498,000295: 16,3441 61573 AD TEMREG
043499,000296:
043500,000297: 16,3442 51653 INDEX I
043501,000298: 16,3443 00000 0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC
043502,000299: 16,3444 40000 COM
![]() |
Page 989 |
043504,000301: 16,3445 63761 AD INTERCEP # SCALED AT 2(-3) REV.
043505,000302: 16,3446 40000 COM
043506,000303: 16,3447 00006 EXTEND
043507,000304: 16,3450 63661 REG2TST BZMF NOROLL # IP REGION 2 (COAST SIDE OF STRT LINE)
043508,000305:
043509,000306: # CHECK TO SEE IF OGARATE IS ABOVE MINLIM BOUNDARY
043510,000307:
043511,000308: 16,3451 31654 CA IOGARATE # ALWAYS NEGATIVE
043512,000309: 16,3452 63762 AD MINLIM # SCALED AT 2(-4) REV/SEC
043513,000310: 16,3453 00006 EXTEND
043514,000311: 16,3454 63661 REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM)
043515,000312:
043516,000313: # ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT
043517,000314:
043518,000315: 16,3455 51653 INDEX I
043519,000316: 16,3456 01647 0 OGA
043520,000317: 16,3457 40000 COM
043521,000318: 16,3460 63756 AD DB
043522,000319: 16,3461 40000 COM
043523,000320: 16,3462 00006 EXTEND
043524,000321: 16,3463 63661 REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB)
043525,000322:
043526,000323: # JETS MUST FIRE NOW. OGARATE IS NEG. (OR VICE VERSA). USE DIRECT STR. LINE.
043527,000324: # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A
043528,000325: # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION
043529,000326: # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT
043530,000327: # LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR
043531,000328: # OPERATING POINTS IN REGIONS 6 AND 6')
043532,000329:
043533,000330: 16,3464 31647 REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT
043534,000331: 16,3465 55652 TS DELOGA # ACTUAL STATE
043535,000332: 16,3466 31533 CA OGARATE
043536,000333: 16,3467 55650 TS DELOGART # ACTUAL STATE, I.E. DEL OGARATE
043537,000334: 16,3470 13500 TCF ONROLL
043538,000335:
043539,000336: # JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VICE VERSA), USE INDIRECT
043540,000337: # STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA
043541,000338: # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY
043542,000339: # OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1')
043543,000340:
043544,000341: 16,3471 51653 ROLLON INDEX I
043545,000342: 16,3472 03756 0 DB
043546,000343: 16,3473 27652 ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA
043547,000344:
043548,000345: 16,3474 43760 CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC
043549,000346: 16,3475 51653 INDEX I
043550,000347: 16,3476 00000 0 A
043551,000348: 16,3477 55650 TS DELOGART # EVALUATE STATE FOR INDIRECT LINE.
043552,000349:
![]() |
Page 990 |
043554,000351:
043555,000352: # SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE.
043556,000353:
043557,000354: 16,3500 00006 ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL
043558,000355: 16,3501 71631 MP 1/CONACC
043559,000356: 16,3502 60000 DOUBLE
043560,000357: 16,3503 00006 EXTEND
043561,000358: 16,3504 73757 MP -SLOPE
043562,000359: 16,3505 55573 TS TEMREG # 2(-SLOPE)RATE /CONACC
043563,000360: 16,3506 00006 EXTEND
043564,000361: 16,3507 71650 MP DELOGART
043565,000362: 16,3510 55650 TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC
043566,000363: 16,3511 44756 CS BIT11
043567,000364: 16,3512 51653 INDEX I
043568,000365: 16,3513 00000 0 A
043569,000366: 16,3514 27573 RATEDEN ADS TEMREG # DENOMINATOR COMPLETED
043570,000367:
043571,000368: 16,3515 51653 INDEX I
043572,000369: 16,3516 01652 0 DELOGA
043573,000370: 16,3517 40000 COM
043574,000371: 16,3520 63756 AD DB
043575,000372: 16,3521 40000 COM
043576,000373: 16,3522 00006 EXTEND
043577,000374: 16,3523 73757 MP -SLOPE
043578,000375: 16,3524 27650 ADS DELOGART
043579,000376: 16,3525 33760 CA LMCRATE
043580,000377: 16,3526 00006 EXTEND
043581,000378: 16,3527 74756 MP BIT11
043582,000379: 16,3530 61650 RATENUM AD DELOGART # NUMERATOR COMPLETED
043583,000380:
043584,000381: 16,3531 56001 XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK
043585,000382: 16,3532 34772 CA ZERO
043586,000383: 16,3533 00006 EXTEND
043587,000384: 16,3534 11573 DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A
043588,000385: 16,3535 00006 EXTEND
043589,000386: 16,3536 13544 BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L
043590,000387:
043591,000388: 16,3537 10000 MINLIMAP CCS A
043592,000389: 16,3540 34750 CAF POSMAX # POSITIVE OVERFLOW
043593,000390: 16,3541 13553 TCF ROLLSET
043594,000391: 16,3542 44750 CS POSMAX # NEGATIVE OVERFLOW
043595,000392: 16,3543 13553 TCF ROLLSET
043596,000393:
043597,000394: 16,3544 22000 DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 IN L
043598,000395: 16,3545 00006 EXTEND
043599,000396: 16,3546 11573 DV TEMREG # RESULT OF DIVISION IS DESIRED OGARATE
043600,000397: 16,3547 13553 TCF ROLLSET # (SCALED AT B-4 REV/SEC)
043601,000398:
043602,000399: 16,3550 43763 RATELIM CS MAXLIM
043603,000400: 16,3551 51653 INDEX I
![]() |
Page 991 |
043605,000402: 16,3552 00000 0 A # IF I = CA, DESIRED RATE IS -MAXLIM
043606,000403:
043607,000404: # COMPUTE JET FIRE TIME, BASED ON DESIRED RATE MINUS PRESENT RATE
043608,000405:
043609,000406: 16,3553 55573 ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4)
043610,000407: 16,3554 00006 EXTEND
043611,000408: 16,3555 61533 SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC
043612,000409: 16,3556 55573 TS TEMREG # OVERFLOW PROTECT
043613,000410: 16,3557 13562 TCF +3 # " "
043614,000411: 16,3560 50000 INDEX A # " "
043615,000412: 16,3561 44751 CS LIMITS # " "
043616,000413: 16,3562 00006 EXTEND
043617,000414: 16,3563 77652 MP T6SCALE # T6SCALE = 8/10.24
043618,000415: 16,3564 00006 EXTEND
043619,000416: 16,3565 71631 MP 1/CONACC # SCALED AT B+9 SECSQ/REV (MAX < .60)
043620,000417: 16,3566 20001 DDOUBL
043621,000418: 16,3567 20001 DDOUBL
043622,000419: 16,3570 55573 TS TEMREG # OVERFLOW PROTECT
043623,000420: 16,3571 13574 TCF +3 # " "
043624,000421: 16,3572 50000 INDEX A # " "
043625,000422: 16,3573 44751 CS LIMITS # " "
043626,000423: 16,3574 55573 TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT
043627,000424: 16,3575 00006 EXTEND # POS MEANS POSITIVE ROLL TORQUE.
043628,000425: 16,3576 13661 BZF NOROLL
043629,000426:
043630,000427: # JET FIRE TIME IS NZ, TEST FOR JETS NOW ON.
043631,000428:
043632,000429: 16,3577 31573 CAE TEMREG # DESIRED CHANGE IN OGARATE
043633,000430: 16,3600 00006 EXTEND
043634,000431: 16,3601 71571 MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF)
043635,000432: 16,3602 10000 CCS A
043636,000433: 16,3603 13607 TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY
043637,000434: 16,3604 13612 TCF NEWROLL # START NEW FIRING NOW, PLUS
043638,000435: 16,3605 13661 TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED
043639,000436: 16,3606 13612 TCF NEWROLL # START NEW FIRING NOW, MINUS
043640,000437:
043641,000438: # CONTINUE PRESENT FIRING
043642,000439:
043643,000440: 16,3607 34772 MOREROLL CAF ZERO
043644,000441: 16,3610 55653 TS I # USE TEMP. AS MOREROLL SWITCH
043645,000442: 16,3611 13623 TCF MAXTFIRE
043646,000443:
043647,000444: # START NEW FIRING BUT CHECK IF GREATER THAN MIN FIRE TIME.
043648,000445:
043649,000446: 16,3612 11573 NEWROLL CCS TEMREG # CALL THIS T6FIRE
043650,000447: 16,3613 64770 AD ONE
043651,000448: 16,3614 13616 TCF +2
043652,000449: 16,3615 64770 AD ONE
043653,000450: 16,3616 40000 COM # -MAG(T6FIRE)
043654,000451: 16,3617 65001 AD TMINFIRE # TMINFIRE-MAG(T6FIRE)
![]() |
Page 992 |
043656,000453: 16,3620 40000 COM
043657,000454: 16,3621 00006 EXTEND
043658,000455: 16,3622 63661 MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE)
043659,000456:
043660,000457: # PROCEED WITH NEW FIRING BUT NOT LONGER THAN TMAXFIRE.
043661,000458:
043662,000459: 16,3623 31573 MAXTFIRE CA TEMREG
043663,000460: 16,3624 00006 EXTEND
043664,000461: 16,3625 74766 MP 1/TMXFIR # I.E. 1/TMAXFIRE
043665,000462: 16,3626 00006 EXTEND
043666,000463: 16,3627 13635 MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE
043667,000464:
043668,000465: 16,3630 10000 CCS A
043669,000466: 16,3631 33764 CAF TMAXFIRE # USE MAXIMUM
043670,000467: 16,3632 13634 TCF +2
043671,000468: 16,3633 43764 CS TMAXFIRE # USE MAXIMUM
043672,000469: 16,3634 55573 TS TEMREG
043673,000470:
043674,000471: # SET UP SIGN OF REQUIRED TORQUE.
043675,000472:
043676,000473: 16,3635 11573 NOMXFIRE CCS TEMREG # FOR TORQUE SIGN
043677,000474: 16,3636 34750 CA POSMAX # POSITIVE TORQUE REQUIRED
043678,000475: 16,3637 13641 TCF +2
043679,000476: 16,3640 34752 CA NEGMAX # NEGATIVE TORQUE REQUIRED
043680,000477: 16,3641 55571 TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE
043681,000478:
043682,000479: 16,3642 40000 COM # COMPLEMENT... POS. FOR NEG. TORQUE
043683,000480: 16,3643 00006 EXTEND
043684,000481: 16,3644 63647 BZMF +3 # POSITIVE TORQUE REQUIRED
043685,000482: 16,3645 41573 CS TEMREG
043686,000483: 16,3646 55573 TS TEMREG
043687,000484:
043688,000485: 16,3647 31653 FIRELOOK CA I # IS IT MOREROLL
043689,000486: 16,3650 00006 EXTEND
043690,000487: 16,3651 13653 BZF FIREPLUG # YES
043691,000488: 16,3652 13664 TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG
043692,000489:
043693,000490: 16,3653 30031 FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING
043694,000491: 16,3654 00006 EXTEND
043695,000492: 16,3655 61573 SU TEMREG
043696,000493: 16,3656 00006 EXTEND
043697,000494: 16,3657 65314 EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP
043698,000495: 16,3660 13664 TCF JETROLL
043699,000496:
043700,000497: 16,3661 44772 NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6)
043701,000498: 16,3662 55571 TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS
043702,000499: 16,3663 55573 TS TEMREG
043703,000500:
043704,000501: 16,3664 00006 JETROLL EXTEND
043705,000502: 16,3665 33755 DCA NOROL1T6
![]() |
Page 993 |
043707,000504: 16,3666 52111 DXCH T6LOC
043708,000505: 16,3667 31573 CA TEMREG # ENTER JET FIRING TIME
043709,000506: 16,3670 54031 TS TIME6
043710,000507:
043711,000508: 16,3671 31653 CA I # I=0 IF MOREROLL,KEEP SAME JETS ON
043712,000509: 16,3672 00006 EXTEND
043713,000510: 16,3673 15314 SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP
043714,000511:
043715,000512: 16,3674 11571 CCS ROLLFIRE
043716,000513: 16,3675 13701 TCF +TORQUE
043717,000514: 16,3676 13742 TCF T6ENABL
043718,000515: 16,3677 13722 TCF -TORQUE
043719,000516: 16,3700 13742 TCF T6ENABL
043720,000517:
043721,000518: # PROCEED WITH PLUS TORQUE.
043722,000519:
043723,000520: 16,3701 31572 +TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION
043724,000521: 16,3702 74770 MASK BIT1 # WAS IT NO.9-11
043725,000522: 16,3703 00006 EXTEND
043726,000523: 16,3704 13714 BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME
043727,000524:
043728,000525: 16,3705 44770 NO.13-15 CS BIT1
043729,000526: 16,3706 71572 MASK ROLLWORD
043730,000527: 16,3707 55572 TS ROLLWORD # CHANGE BIT 1 TO ZERO
043731,000528: 16,3710 35014 CAF +ROLL2
043732,000529: 16,3711 00006 EXTEND
043733,000530: 16,3712 01006 WRITE CHAN6
043734,000531: 16,3713 13742 TCF T6ENABL
043735,000532:
043736,000533: 16,3714 34770 NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD)
043737,000534: 16,3715 27572 ADS ROLLWORD # CHANGE BIT 1 TO ONE
043738,000535: 16,3716 34773 CAF +ROLL1
043739,000536: 16,3717 00006 EXTEND
043740,000537: 16,3720 01006 WRITE CHAN6
043741,000538: 16,3721 13742 TCF T6ENABL
043742,000539:
043743,000540: 16,3722 31572 -TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION
043744,000541: 16,3723 74767 MASK BIT2 # WAS IT NO.12-10
043745,000542: 16,3724 00006 EXTEND
043746,000543: 16,3725 13735 BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME
043747,000544:
043748,000545: 16,3726 44767 NO.16-14 CS BIT2
043749,000546: 16,3727 71572 MASK ROLLWORD
043750,000547: 16,3730 55572 TS ROLLWORD # CHANGE BIT 2 TO ZERO
043751,000548: 16,3731 33765 CAF -ROLL2
043752,000549: 16,3732 00006 EXTEND
043753,000550: 16,3733 01006 WRITE CHAN6
043754,000551: 16,3734 13742 TCF T6ENABL
043755,000552:
043756,000553: 16,3735 34767 NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD)
![]() |
Page 994 |
043758,000555: 16,3736 27572 ADS ROLLWORD # CHANGE BIT 2 TO ONE
043759,000556: 16,3737 34355 CAF -ROLL1
043760,000557: 16,3740 00006 EXTEND
043761,000558: 16,3741 01006 WRITE CHAN6
043762,000559:
043763,000560: 16,3742 34752 T6ENABL CAF BIT15
043764,000561: 16,3743 00006 EXTEND
043765,000562: 16,3744 05013 WOR CHAN13
043766,000563: 16,3745 15314 RDAPEND TCF TASKOVER # EXIT ROLL DAP
043767,000564:
![]() |
Page 995 |
043769,000566:
043770,000567: # THIS T6 TASK SHUTS OFF ALL ROLL JETS
043771,000568:
043772,000569: 16,3746 22016 NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK
043773,000570: 16,3747 34772 CAF ZERO # CALLED BY ''JETROLL'')
043774,000571: 16,3750 55571 TS ROLLFIRE # ZERO INDICATES JETS NOW OFF
043775,000572: 16,3751 00006 EXTEND
043776,000573: 16,3752 01006 KILLJETS WRITE CHAN6
043777,000574: 16,3753 15325 TCF NOQRSM
043778,000575:
![]() |
Page 996 |
043780,000577:
043781,000578: # CONSTANTS FOR ROLL AUTOPILOT....
043782,000579:
043783,000580: 16,3754 E6,1446 EBANK= CNTR
043784,000581: 16,3754 03746 34066 NOROL1T6 2CADR NOROLL1
043785,000582:
043786,000583: 16,3756 00344 DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV
043787,000584:
043788,000585: 16,3757 06315 -SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0
043789,000586: # PER SEC
043790,000587: 16,3760 00111 LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT
043791,000588: # B-4 REV/SEC
043792,000589: 16,3761 00510 INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC
043793,000590:
043794,000591: 16,3762 01330 MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC
043795,000592:
043796,000593: 16,3763 07071 MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC
043797,000594:
043798,000595: # TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS
043799,000596: 16,3764 5001 TMINFIRE = BITS4&5
043800,000597:
![]() |
JL 2010-02-15 Replaced the following line, forcing the value to 4000 decimal (07640 octal), until I figure out yaYUL didn't like the original format. |
043803,000600: # #TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS
043804,000601: 16,3764 07640 TMAXFIRE DEC 4000 B-14 # 2.5 SEC, SC.AT 16 BITS/CS
![]() |
End mod |
043806,000603:
043807,000604: 16,3765 4766 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT,
043808,000605: # ROUNDS TO OCT00004, SO ALLOWS 2.56
043809,000606: # SEC FIRINGS BEFORE APPLYING LIMIT
043810,000607: 16,3765 7652 T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC)
043811,000608:
043812,000609: 16,3765 4773 +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11
043813,000610: 16,3765 5014 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15
043814,000611: 16,3765 4355 -ROLL1 = TEN # ONBITS FOR JETS 12 AND 10
043815,000612: 16,3765 00240 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14
End of include-file TVCROLLDAP.agc. Parent file is MAIN.agc