Source Code

041902,000001: # Copyright: Public domain. 041903,000002: # Filename: TVCROLLDAP.agc 041904,000003: # Purpose: Part of the source code for Colossus, build 249. 041905,000004: # It is part of the source code for the Command Module's (CM) 041906,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 041907,000006: # Assembler: yaYUL 041908,000007: # Reference: Starts at p. 952 of 1701.pdf. 041909,000008: # Contact: Ron Burkey <info@sandroid.org>. 041910,000009: # Website: www.ibiblio.org/apollo/index.html 041911,000010: # Mod history: 08/24/04 RSB Began transcribing. 041912,000011: # 05/14/05 RSB Corrected website reference above. 041913,000012: # 2010-10-25 JL Fixed page numbers. 041914,000013: # 2011-05-07 JL Removed workarounds. 041915,000014: 041916,000015: # The contents of the "Colossus249" files, in general, are transcribed 041917,000016: # from a scanned document obtained from MIT's website, 041918,000017: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 041919,000018: # document read, in part: 041920,000019: 041921,000020: # Assemble revision 249 of AGC program Colossus by NASA 041922,000021: # 2021111-041. October 28, 1968. 041923,000022: 041924,000023: # This AGC program shall also be referred to as 041925,000024: # Colossus 1A 041926,000025: 041927,000026: # Prepared by 041928,000027: # Massachusetts Institute of Technology 041929,000028: # 75 Cambridge Parkway 041930,000029: # Cambridge, Massachusetts 041931,000030: # under NASA contract NAS 9-4065. 041932,000031: 041933,000032: # Refer directly to the online document mentioned above for further information. 041934,000033: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 041935,000034: 041936,000035: # In some cases, where the source code for Luminary 131 overlaps that of 041937,000036: # Colossus 249, this code is instead copied from the corresponding Luminary 131 041938,000037: # source file, and then is proofed to incorporate any changes. 041939,000038: 041940,000039: # Page 952 041941,000040: # PROGRAM NAME....ROLL AUTOPILOT, CONSISTING OF ROLLDAP, DURATION, NOROLL1, ETC. 041942,000041: # ORIGINAL CODING BY F.W.MARTIN, 1965 (SUNDIAL) 041943,000042: # LOC SECTION....ROLL AUTOPILOT SUBROUTINE....DAPCSM 041944,000043: # MOD BY ENGEL DATE 28 DEC, 1967 (SUNDISK TO COLOSSUS) 041945,000044: 041946,000045: # FUNCTIONAL DESCRIPTION.... 041947,000046: 041948,000047: # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER 041949,000048: 041950,000049: # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN 041951,000050: # BY IGNOVER (IGNITION) 041952,000051: 041953,000052: # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE 041954,000053: 041955,000054: # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3 041956,000055: 041957,000056: # *USES T6 CLOCK TO TIME JET FIRINGS. 041958,000057: 041959,000058: # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER 041960,000059: 041961,000060: # *MINIMUM JET FIRING TIME = 15 MS 041962,000061: 041963,000062: # *JET PAIRS FIRE ALTERNATELY 041964,000063: 041965,000064: # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED 041966,000065: 041967,000066: # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION 041968,000067: # OF A JET FIRING TIME IS MADE ON A LATER PASS 041969,000068: 041970,000069: # CALLING SEQUENCE.... 041971,000070: 041972,000071: # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC) 041973,000072: # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.) 041974,000073: 041975,000074: # NORMAL EXIT MODES.... ENDOFJOG 041976,000075: 041977,000076: # ALARM OR ABORT EXIT MODES.... NONE 041978,000077: 041979,000078: # SUBROUTINES CALLED.....NONE 041980,000079: 041981,000080: # OTHER INTERFACES.... 041982,000081: 041983,000082: # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC 041984,000083: # EVERY 10 SECONDS (VIA MASSPROP AND S40.15) 041985,000084: 041986,000085: # *TVCRESTART PACKAGE WILL RE-START ROLL DAP AFTER A RESTART (PICKING 041987,000086: # UP THE ORIGINAL OGAD) 041988,000087: 041989,000088: # ERASABLE INITIALIZATION REQUIRED 041990,000089: 041991,000090: # *1/CONACC (S40.15) 041992,000091: 041993,000092: # *OGAD (CDUX, AT IGNOVER) 041994,000093: 041995,000094: # *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE) 041996,000095: 041997,000096: # *OGAPAST (OGANOW AT TVCEXECUTIVE) 041998,000097: 041999,000098: # *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON) 042000,000099: 042001,000100: # OUTPUT.... 042002,000101: 042003,000102: # *ROLL JET PAIR FIRINGS 042004,000103: 042005,000104: # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY 042006,000105: # Page 953 042007,000106: 042008,000107: # SOME NOTES ON THE ROLL AUTOPILOT, AND IN PARTICULAR, ON ITS SWITCHING 042009,000108: # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS. 042010,000109: # SWITCHING LOGIC IN THE PHASE PLANE.... 042011,000110: 042012,000111: # OGARATE 042013,000112: # * 042014,000113: # * 042015,000114: # * * * * * * * * * * * * 042016,000115: # * (REGION 1, SEE TEXT BELOW) 042017,000116: # * * 042018,000117: # * 042019,000118: # * * * * * * * (COAST) * ...PARABOLA (SWITCHING = CONTROL) 042020,000119: # * * . 042021,000120: # * * * 042022,000121: # * * (FIRE NEG ROLL JETS) 042023,000122: # * * * 042024,000123: # (-DB,+LMCRATE)....* * 042025,000124: # * * * 042026,000125: # * * OGAERROR 042027,000126: # ************************************************************************ 042028,000127: # * * (-AK, OGAERR) 042029,000128: # * * * (REGION 6-PRIME) 042030,000129: # * * (SEE TEXT BELOW) 042031,000130: # * * * 042032,000131: # * * ...STRAIGHT LINE 042033,000132: # (FIRE POS ROLL JETS) * * * . 042034,000133: # * (COAST) * 042035,000134: # * * * * * * * * * * * 042036,000135: # * -MINLIM 042037,000136: # * * 042038,000137: # * 042039,000138: # * * * * * * * * * * * * * * * * 042040,000139: # * -MAXLIM 042041,000140: # * 042042,000141: # * 042043,000142: 042044,000143: # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF 042045,000144: # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC 042046,000145: # ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET 042047,000146: # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE, 042048,000147: # SUBJECT TO TEH LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION, 042049,000148: # ABOVE. 042050,000149: 042051,000150: # THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRISED OF 042052,000151: # TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME... 042053,000152: # 5-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS) 042054,000153: # Page 954 042055,000154: 042056,000155: # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE 042057,000156: # IS AT THE POINT OF PENETRATION OF THE COAST REGION BY THE CONTROL 042058,000157: # PARABOLA WHICH PASSES THROUGH THE OPERATING POINT. FOR REGION 3 042059,000158: # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION 042060,000159: # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT 042061,000160: # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE 042062,000161: # INSTEAD. CONSIDER AN OPERATING POINT IN REGION 6. PASS A TANGENT TO 042063,000162: # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS 042064,000163: # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE... 042065,000164: # THE INTERSECTION DEFINES THE DESIRED OGARATE. IF THE OPERATING POINT IS 042066,000165: # CLOSE TO THE SWITCH LINE, THE APPROXIMATION IS QUITE GOOD (INDEED 042067,000166: # THE APPROXIMATE AND QUADRATIC SOLUTIONS CONVERGE IN THE LIMIT AS 042068,000167: # THE SWITCH LINE IS APPROACHED). IF THE OPERATING POINT IS NOT CLOSE 042069,000168: # TO THE SWITCH LINE, THE APPROXIMATE SOLUTION GIVES VALID TREND 042070,000169: # INFORMATION (DIRECTION OF DESIRED OGARATE) AT LEAST. THE 042071,000170: # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2 042072,000171: # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE 042073,000172: # APPROXIMATION. 042074,000173: 042075,000174: # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDRY BEFORE 042076,000175: # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS 042077,000176: # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO 042078,000177: # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO. 042079,000178: # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING 042080,000179: # THE DESIRED INTERSECTION (I.E., IN THE REGION BETWEEN THE MINLIM 042081,000180: # AND THE STRAIGHT LINE SWITCH) IT WILL EXHIBIT NORMAL COAST-REGION 042082,000181: # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY 042083,000182: # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET 042084,000183: # FAILED-ON. 042085,000184: 042086,000185: # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS 042087,000186: # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT, 042088,000187: # DEFINED BY: OGAERROR = INTERSECTION OF CONTROL PARABOLA AND 042089,000188: # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF 042090,000189: # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED 042091,000190: # FROM REGION 1 TO REGION 6, THE DUMMY POINT IS NO LONGER REQUIRED, 042092,000191: # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6 POINT. 042093,000192: 042094,000193: # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE).... 042095,000194: # 2 042096,000195: # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE) 042097,000196: 042098,000197: # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT.... 042099,000198: 042100,000199: # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP 042101,000200: 042102,000201: # WHERE INTERCEP = DB(-SLOPE) - LMCRATE 042103,000202: # Page 955 042104,000203: 042105,000204: # EQUATION FOR INTERSECTION, CONTROL PARABOLA, AND STRAIGHT SWITCH LINE.... 042106,000205: 042107,000206: # DOGADOT = NUM/DEN, WHERE 042108,000207: # 2 042109,000208: # NUM = (-SLOPE)(OGARATE) (1/CONACC) 042110,000209: # +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB)) 042111,000210: # +LMCRATE 042112,000211: 042113,000212: # DEN = (-SLOPE)(OGARATE)(1/CONACC) = SGN(DELOGA) 042114,000213: # 2 042115,000214: # DELOGA = OGAERROR - (DB - (OGADOT) (1/CONACC)/2)SGN(OGADOT) 042116,000215: 042117,000216: # FOR REGIONS 6 AND 6-PRIME, USE ACTUAL OPEATING POINT (OGA, OGARATE) 042118,000217: # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE. 042119,000218: # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR 042120,000219: # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY.... 042121,000220: 042122,000221: # OGAERROR = DELOGA + DB SGN(OGARATE) 042123,000222: 042124,000223: # OGARATE = -LMCRATE SGN(OGARATE) 042125,000224: 042126,000225: # NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING 042127,000226: # ALSO, AT POINT WHERE DOGADOT IS COMPUTED, REGISTER DELOGA IS USED 042128,000227: # AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE. 042129,000228: # Page 956 042130,000229: 042131,000230: # ROLLDAP CODING.... 042132,000231: 042133,000232: 16,2000 SETLOC DAPROLL 042134,000233: 16,2000 BANK 042135,000234: 16,3313 E6,1672 EBANK= OGANOW 042136,000235: 16,3313 COUNT* $$/ROLL 042137,000236: 042138,000237: 16,3313 31672 ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER 042139,000238: 16,3314 00006 EXTEND # DIFFERENCE (SAMPLE TIME = 1/2 SEC) 042140,000239: 16,3315 21673 MSU OGAPAST 042141,000240: 16,3316 00006 EXTEND 042142,000241: 16,3317 74706 MP BIT5 042143,000242: 16,3320 22000 LXCH A 042144,000243: 16,3321 55533 TS OGARATE # SC.AT B-4 REV/SEC 042145,000244: 042146,000245: # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER) 042147,000246: # EXAMINE DURATION OF LAST ROLL FIRING IF JETS ARE NOW ON. 042148,000247: 042149,000248: 16,3322 31611 DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX 042150,000249: 16,3323 00006 EXTEND 042151,000250: 16,3324 13326 BZF +2 # ROLL JETS ARE NOW OFF. 042152,000251: 16,3325 13334 TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON. 042153,000252: 042154,000253: 16,3326 31613 CAE TEMREG # EXAMINE LAST FIRING INTERVAL 042155,000254: 16,3327 00006 EXTEND # IF POSITIVE, DON'T FIRE 042156,000255: 16,3330 13334 BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF. 042157,000256: 042158,000257: 16,3331 34714 CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT 042159,000258: 16,3332 55613 TS TEMREG # RESET TEMREG 042160,000259: 16,3333 15213 WAIT1/2 TCF TASKOVER # EXIT ROLL DAP 042161,000260: 042162,000261: # COMPUTE DB-(1/2 CONACC) (OGARATE)SQ (1/2 IN THE SCALING) 042163,000262: 042164,000263: 16,3334 41533 ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC 042165,000264: 16,3335 00006 EXTEND 042166,000265: 16,3336 71650 MP 1/CONACC # SCALED AT 2(+9) SEC SQ /REV 042167,000266: 16,3337 00006 EXTEND 042168,000267: 16,3340 71533 MP OGARATE 042169,000268: 16,3341 63727 AD DB # SCALED AT 2(+0) REV 042170,000269: 16,3342 55613 TS TEMREG # QUANTITY SCALED AT 2(+0) REV. 042171,000270: 042172,000271: # GET SIGN OF OGARATE 042173,000272: 042174,000273: 16,3343 31533 CA OGARATE 042175,000274: 16,3344 00006 EXTEND 042176,000275: 16,3345 63350 BZMF +3 # LET SGN(0) BE NEGATIVE 042177,000276: 16,3346 34712 CA BIT1 042178,000277: 16,3347 13351 TCF +2 042179,000278: 16,3350 44712 CS BIT1 042180,000279: 16,3351 55676 TS SGNRT # + OR - 2(-14) 042181,000280: 042182,000281: # CALCULATE DISTANCE FROM SWITCH PARABOLA,DELOGA 042183,000282: 16,3352 00006 EXTEND 042184,000283: 16,3353 71613 MP TEMREG # SGN(OGARATE) TEMREG NOW IN L 042185,000284: # Page 957 042186,000285: 16,3354 40001 CS L 042187,000286: 16,3355 61674 AD OGA # SCALED AT 2(+0) REV 042188,000287: 16,3356 55677 DELOGAC TS DELOGA # SC.AT B+0 REV, PLUS TO RIGHT OF C-PARAB 042189,000288: 042190,000289: # EXAMINE SGN(DELOGA) AND CREATE CA OR CS INSTR. DEPENDING UPON SIGN. 042191,000290: 042192,000291: 16,3357 00006 EXTEND 042193,000292: 16,3360 63363 BZMF +3 042194,000293: 16,3361 34371 CAF PRIO30 # = CA (30000) 042195,000294: 16,3362 13364 TCF +2 042196,000295: 16,3363 34674 CAF BIT15 # = CS (40000) 042197,000296: 16,3364 55700 TS I 042198,000297: 042199,000298: 16,3365 51700 INDEX I # TSET ON I SGN(OGARATE) 042200,000299: 16,3366 01676 0 SGNRT # CA OR CS 042201,000300: 16,3367 40000 COM 042202,000301: 16,3370 00006 EXTEND 042203,000302: 16,3371 63442 REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN) 042204,000303: 042205,000304: # NO JET FIRE YET. TEST FOR MAX OGARATE. 042206,000305: 042207,000306: 16,3372 51700 INDEX I 042208,000307: 16,3373 01533 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE 042209,000308: 16,3374 55701 TS IOGARATE # I.E., I OGARATE 042210,000309: 16,3375 63735 AD MAXLIM # SCALED AT 2(-4) REV/SEC 042211,000310: 16,3376 00006 EXTEND 042212,000311: 16,3377 63521 REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS) 042213,000312: 042214,000313: # COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT: NOTE THAT STR. LINE 042215,000314: # SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG. QUANTITY 042216,000315: 042217,000316: 16,3400 31533 CA OGARATE 042218,000317: 16,3401 00006 EXTEND 042219,000318: 16,3402 74675 MP BIT14 042220,000319: 16,3403 55613 TS TEMREG 042221,000320: 16,3404 31674 CA OGA 042222,000321: 16,3405 00006 EXTEND 042223,000322: 16,3406 73730 MP -SLOPE 042224,000323: 16,3407 20001 DDOUBL 042225,000324: 16,3410 20001 DDOUBL 042226,000325: 16,3411 20001 DDOUBL # (OGA ERROR MUST BE LESS THAN +-225 DEG) 042227,000326: 16,3412 61613 AD TEMREG 042228,000327: 042229,000328: 16,3413 51700 INDEX I 042230,000329: 16,3414 00000 0 A # I((-SLOPE)OGA+OGARATE) AT 2(-3)REV/SEC 042231,000330: 16,3415 40000 COM 042232,000331: 16,3416 63732 AD INTERCEP # SCALED AT 2(-3) REV. 042233,000332: 16,3417 40000 COM 042234,000333: 16,3420 00006 EXTEND 042235,000334: 16,3421 63632 REG2TST BZMF NOROLL # IP REGION 2 (COAST SIDE OF STRT LINE) 042236,000335: 042237,000336: # CHECK TO SEE IF OGARATE IS ABOVE MINLIM 042238,000337: 042239,000338: 16,3422 31701 CA IOGARATE # ALWAYS NEGATIVE 042240,000339: 16,3423 63733 AD MINLIM # SCALED AT 2(-4) REV/SEC. 042241,000340: # Page 958 042242,000341: 16,3424 00006 EXTEND 042243,000342: 16,3425 63632 REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM) 042244,000343: 042245,000344: # ALL AREAS CHECKED EXCEPT LAST AREA...NO FIRE IN THIS SMALL SEGMENT 042246,000345: 042247,000346: 16,3426 51700 INDEX I 042248,000347: 16,3427 01674 0 OGA 042249,000348: 16,3430 40000 COM 042250,000349: 16,3431 63727 AD DB 042251,000350: 16,3432 40000 COM 042252,000351: 16,3433 00006 EXTEND 042253,000352: 16,3434 63632 REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB) 042254,000353: 042255,000354: # JETS MUST FIRE NOW. OGARATE IS NEG. (OR VICE VERSA). USE DIRECT STR. LINE. 042256,000355: # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN TEH SOLUTION OF A 042257,000356: # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION 042258,000357: # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT 042259,000358: # LINE IS THE TANGENT TO THE CONTROL PARABOLA AT THE OPERATING POINT. (FOR 042260,000359: # OPERATING POINTS IN REGIONS 6 AND 6-PRIME) 042261,000360: 042262,000361: 16,3435 31674 REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT 042263,000362: 16,3436 55677 TS DELOGA # ACTUAL STATE 042264,000363: 16,3437 31533 CA OGARATE 042265,000364: 16,3440 55675 TS DELOGART # ACTUAL STATE, I.E., DEL OGARATE 042266,000365: 16,3441 13451 TCF ONROLL 042267,000366: 042268,000367: # JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VICE VERSA), USE INDIRECT 042269,000368: # STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA 042270,000369: # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY 042271,000370: # OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1-PRIME ) 042272,000371: 042273,000372: 16,3442 51700 ROLLON INDEX I 042274,000373: 16,3443 03727 0 DB 042275,000374: 16,3444 27677 ADS DELOGA # DELOGA WAS DIST. FROM SWITCH PARABOLA 042276,000375: 042277,000376: 16,3445 43731 CS LMCRATE # LIMIT CYCLE RATE AT 2(-4) REV/SEC 042278,000377: 16,3446 51700 INDEX I 042279,000378: 16,3447 00000 0 A 042280,000379: 16,3450 55675 TS DELOGART # EVALUATE STATE FOR INDIRECT LINE. 042281,000380: 042282,000381: # SOLVE STRAIGHT LINES SIMULTANEOUSLY TO OBTAIN DESIRED OGARATE. 042283,000382: 042284,000383: 16,3451 00006 ONROLL EXTEND # DELOGART IN ACC. ON ARRIVAL 042285,000384: 16,3452 71650 MP 1/CONACC 042286,000385: 16,3453 60000 DOUBLE 042287,000386: 16,3454 00006 EXTEND 042288,000387: 16,3455 73730 MP -SLOPE 042289,000388: 16,3456 55613 TS TEMREG # 2(-SLOPE)RATE /CONACC 042290,000389: 16,3457 00006 EXTEND 042291,000390: 16,3460 71675 MP DELOGART 042292,000391: 16,3461 55675 TS DELOGART # 2(-SLOPE)(RATESQ)/CONACC 042293,000392: 16,3462 44700 CS BIT11 042294,000393: 16,3463 51700 INDEX I 042295,000394: # Rate 959 042296,000395: 16,3464 00000 0 A 042297,000396: 16,3465 27613 RATEDEN ADS TEMREG # DENOMINATOR COMPLETED 042298,000397: 042299,000398: 16,3466 51700 INDEX I 042300,000399: 16,3467 01677 0 DELOGA 042301,000400: 16,3470 40000 COM 042302,000401: 16,3471 63727 AD DB 042303,000402: 16,3472 40000 COM 042304,000403: 16,3473 00006 EXTEND 042305,000404: 16,3474 73730 MP -SLOPE 042306,000405: 16,3475 27675 ADS DELOGART 042307,000406: 16,3476 33731 CA LMCRATE 042308,000407: 16,3477 00006 EXTEND 042309,000408: 16,3500 74700 MP BIT11 042310,000409: 16,3501 61675 RATENUM AD DELOGART # NUMERATOR COMPLETED 042311,000410: 042312,000411: 16,3502 56001 XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK 042313,000412: 16,3503 34714 CA ZERO 042314,000413: 16,3504 00006 EXTEND 042315,000414: 16,3505 11613 DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A 042316,000415: 16,3506 00006 EXTEND 042317,000416: 16,3507 13515 BZF DVOK # NO OVERFLOW....(0,L)/TEMREG = 0,L 042318,000417: 042319,000418: 16,3510 10000 MINLIMAP CCS A 042320,000419: 16,3511 34672 CAF POSMAX # POSITIVE OVERFLOW 042321,000420: 16,3512 13524 TCF ROLLSET 042322,000421: 16,3513 44672 CS POSMAX # NEGATIVE OVERFLOW 042323,000422: 16,3514 13524 TCF ROLLSET 042324,000423: 042325,000424: 16,3515 22000 DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 INTO L 042326,000425: 16,3516 00006 EXTEND 042327,000426: 16,3517 11613 DV TEMREG # RESULT OF DIVISIONIS DESIRED OGARATE 042328,000427: 16,3520 13524 TCF ROLLSET # (SCALED AT B-4 REV/SEC) 042329,000428: 16,3521 43735 RATELIM CS MAXLIM 042330,000429: 16,3522 51700 INDEX I 042331,000430: 16,3523 00000 0 A # IF I = CA, DESIRED RATE IS -MAXLIM 042332,000431: 042333,000432: # BASED ON DESIRED RATE - PRESENT RATE, COMPUTE JET FIRE TIME 042334,000433: 042335,000434: 16,3524 55613 ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4) 042336,000435: 16,3525 00006 EXTEND 042337,000436: 16,3526 61533 SU OGARATE # RATE DIFF. SCALED AT 2(-4) REV/SEC 042338,000437: 16,3527 55613 TS TEMREG # OVERFLOW PROTECT 042339,000438: 16,3530 13533 TCF +3 # ? ? 042340,000439: 16,3531 50000 INDEX A # ? ? 042341,000440: 16,3532 44673 CS LIMITS # ? ? 042342,000441: 16,3533 00006 EXTEND 042343,000442: 16,3534 77665 MP T6SCALE # T6SCALE = 8/10.24 042344,000443: 16,3535 00006 EXTEND 042345,000444: # Page 959 042346,000445: 16,3536 71650 MP 1/CONACC # SCALED AT 2(+9) SECSQ/REV 042347,000446: 16,3537 20001 DDOUBL 042348,000447: 16,3540 20001 DDOUBL 042349,000448: 16,3541 55613 TS TEMREG # OVERFLOW PROTECT 042350,000449: 16,3542 13545 TCF +3 # ? ? 042351,000450: 16,3543 50000 INDEX A # ? ? 042352,000451: 16,3544 44673 CS LIMITS # ? ? 042353,000452: 16,3545 55613 TS TEMREG # JET FIRE TIME AT 625 MICROSEC/BIT 042354,000453: 16,3546 00006 EXTEND # POS MEANS POSITIVE ROLL TORQUE. 042355,000454: 16,3547 13632 BZF NOROLL 042356,000455: 042357,000456: # JET FIRE TIME IS NZ, ARE JETS ON NOW. 042358,000457: 042359,000458: 16,3550 31613 CAE TEMREG # DESIRED CHANGE IN OGARATE 042360,000459: 16,3551 00006 EXTEND 042361,000460: 16,3552 71611 MP ROLLFIRE # (SGN OF TORQUE: ZERO IF JETS NOW OFF) 042362,000461: 16,3553 10000 CCS A 042363,000462: 16,3554 13560 TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY 042364,000463: 16,3555 13563 TCF NEWROLL # START NEW FIRING NOW, PLUS 042365,000464: 16,3556 13632 TCF NOROLL # TERMINATE OLD FIRING, NEW SIGN REQUESTED 042366,000465: 16,3557 13563 TCF NEWROLL # START NEW FIRING NOW, MINUS 042367,000466: 042368,000467: # CONTINUE PRESENT FIRING 042369,000468: 042370,000469: 16,3560 34714 MOREROLL CAF ZERO 042371,000470: 16,3561 55700 TS I # USE TEMP. AS MOREROLL SWITCH 042372,000471: 16,3562 13574 TCF MAXTFIRE 042373,000472: 042374,000473: # START NEW FIRING BUT CHECK IF GREATER THAN MINIMUM FIRE TIME. 042375,000474: 042376,000475: 16,3563 11613 NEWROLL CCS TEMREG # CALL THIS T6FIRE 042377,000476: 16,3564 64712 AD ONE 042378,000477: 16,3565 13567 TCF +2 042379,000478: 16,3566 64712 AD ONE 042380,000479: 16,3567 40000 COM # -MAG(T6FIRE) 042381,000480: 16,3570 63736 AD TMINFIRE # TMINFIRE-MAG(T6FIRE) 042382,000481: 16,3571 40000 COM 042383,000482: 16,3572 00006 EXTEND 042384,000483: 16,3573 63632 MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE) 042385,000484: 042386,000485: # PROCEED WITH NEW FIRING BUT NOT LONGER THAN TMAXFIRE 042387,000486: 042388,000487: 16,3574 31613 MAXTFIRE CA TEMREG 042389,000488: 16,3575 00006 EXTEND 042390,000489: 16,3576 74710 MP 1/TMXFIR # I.E., 1/TMAXFIRE 042391,000490: 16,3577 00006 EXTEND 042392,000491: 16,3600 13606 MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE 042393,000492: 042394,000493: 16,3601 10000 CCS A 042395,000494: 16,3602 33737 CAF TMAXFIRE # USE MAXIMUM 042396,000495: 16,3603 13605 TCF +2 042397,000496: 16,3604 43737 CS TMAXFIRE # USE MAXIMUM 042398,000497: 16,3605 55613 TS TEMREG 042399,000498: 042400,000499: # Page 960 042401,000500: # SET UP SIGN OF REQUIRED TORQUE 042402,000501: 042403,000502: 16,3606 11613 NOMXFIRE CCS TEMREG # FOR TORQUE SIGN 042404,000503: 16,3607 34672 CA POSMAX # POSITIVE TORQUE REQUIRED 042405,000504: 16,3610 13612 TCF +2 042406,000505: 16,3611 34674 CA NEGMAX # NEGATIVE TORQUE REQUIRED 042407,000506: 16,3612 55611 TS ROLLFIRE # SET ROLLFIRE FOR + OR - TORQUE 042408,000507: 042409,000508: 16,3613 40000 COM # COMPLEMENT... POS. FOR NEG. TORQUE 042410,000509: 16,3614 00006 EXTEND 042411,000510: 16,3615 63620 BZMF +3 # POSITIVE TORQUE REQUIRED 042412,000511: 16,3616 41613 CS TEMREG 042413,000512: 16,3617 55613 TS TEMREG 042414,000513: 042415,000514: 16,3620 31700 FIRELOOK CA I # IS IT MOREROLL 042416,000515: 16,3621 00006 EXTEND 042417,000516: 16,3622 13624 BZF FIREPLUG # YES 042418,000517: 16,3623 13635 TCF JETROLL # MAG(T6FIRE) NOW IN TEMREG 042419,000518: 042420,000519: 16,3624 30031 FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING 042421,000520: 16,3625 00006 EXTEND 042422,000521: 16,3626 61613 SU TEMREG 042423,000522: 16,3627 00006 EXTEND 042424,000523: 16,3630 65213 EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DON'T, EXIT ROLL DAP 042425,000524: 16,3631 13635 TCF JETROLL 042426,000525: 042427,000526: 16,3632 44714 NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6) 042428,000527: 16,3633 55611 TS ROLLFIRE # NOTE, JETS CAN FIRE NEXT PASS 042429,000528: 16,3634 55613 TS TEMREG 042430,000529: 042431,000530: 16,3635 00006 JETROLL EXTEND 042432,000531: 16,3636 33726 DCA NOROL1T6 042433,000532: 16,3637 53311 DXCH T6LOC 042434,000533: 16,3640 31613 CA TEMREG # ENTER JET FIRING TIME 042435,000534: 16,3641 54031 TS TIME6 042436,000535: 042437,000536: 16,3642 31700 CA I # I=0 IF MOREROLL, KEEP SAME JETS ON 042438,000537: 16,3643 00006 EXTEND 042439,000538: 16,3644 15213 SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP 042440,000539: 042441,000540: 16,3645 11611 CCS ROLLFIRE 042442,000541: 16,3646 13652 TCF +TORQUE 042443,000542: 16,3647 13713 TCF T6ENABL 042444,000543: 16,3650 13673 TCF -TORQUE 042445,000544: 16,3651 13713 TCF T6ENABL 042446,000545: 042447,000546: # PROCEED WITH + TORQUE 042448,000547: 042449,000548: 16,3652 31612 +TORQUE CA ROLLWORD # WHAT WAS THE LAST +TORQUE COMBINATION 042450,000549: 16,3653 74712 MASK BIT1 # WAS IT NO.9-11 042451,000550: 16,3654 00006 EXTEND 042452,000551: 16,3655 13665 BZF NO.9-11 # NOT 9-11, SO USE IT THIS TIME 042453,000552: 042454,000553: # Page 961 042455,000554: 16,3656 44712 NO.13-15 CS BIT1 042456,000555: 16,3657 71612 MASK ROLLWORD 042457,000556: 16,3660 55612 TS ROLLWORD # CHANGE BIT 1 TO ZERO 042458,000557: 16,3661 34732 CAF +ROLL2 042459,000558: 16,3662 00006 EXTEND 042460,000559: 16,3663 01006 WRITE CHAN6 042461,000560: 16,3664 13713 TCF T6ENABL 042462,000561: 042463,000562: 16,3665 34712 NO.9-11 CAF BIT1 # 1ST + JETS TO FIRE (MRCLEAN OS ROLLWORD) 042464,000563: 16,3666 27612 ADS ROLLWORD # CHANGE BIT 1 TO ONE 042465,000564: 16,3667 34715 CAF +ROLL1 042466,000565: 16,3670 00006 EXTEND 042467,000566: 16,3671 01006 WRITE CHAN6 042468,000567: 16,3672 13713 TCF T6ENABL 042469,000568: 042470,000569: 16,3673 31612 -TORQUE CA ROLLWORD # WHAT WAS LAST -TORQUE COMBINATION 042471,000570: 16,3674 74711 MASK BIT2 # WAS IT NO.12-10 042472,000571: 16,3675 00006 EXTEND 042473,000572: 16,3676 13706 BZF NO.12-10 # NOT 12-10, SO USE IT THIS TIME 042474,000573: 042475,000574: 16,3677 44711 NO.16-14 CS BIT2 042476,000575: 16,3700 71612 MASK ROLLWORD 042477,000576: 16,3701 55612 TS ROLLWORD # CHANGE BIT 2 TO ZERO 042478,000577: 16,3702 33740 CAF -ROLL2 042479,000578: 16,3703 00006 EXTEND 042480,000579: 16,3704 01006 WRITE CHAN6 042481,000580: 16,3705 13713 TCF T6ENABL 042482,000581: 042483,000582: 16,3706 34711 NO.12-10 CAF BIT2 # 1ST -JETS TO FIRE (MRCLEAN OS ROLLWORD) 042484,000583: 16,3707 27612 ADS ROLLWORD # CHANGE BIT 2 TO ONE 042485,000584: 16,3710 34377 CAF -ROLL1 042486,000585: 16,3711 00006 EXTEND 042487,000586: 16,3712 01006 WRITE CHAN6 042488,000587: 042489,000588: 16,3713 34674 T6ENABL CAF BIT15 042490,000589: 16,3714 00006 EXTEND 042491,000590: 16,3715 05013 WOR CHAN13 042492,000591: 16,3716 15213 RDAPEND TCF TASKOVER # EXIT ROLL DAP 042493,000592: 042494,000593: # Page 962 042495,000594: # THIS T6 TASK SHUTS OFF ALL ROLL JETS 042496,000595: 042497,000596: 16,3717 22016 NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK 042498,000597: 16,3720 34714 CAF ZERO # CALLED BY "JETROLL") 042499,000598: 16,3721 55611 TS ROLLFIRE # ZERO INDICATES JETS NOW OFF 042500,000599: 16,3722 00006 EXTEND 042501,000600: 16,3723 01006 KILLJETS WRITE CHAN6 042502,000601: 16,3724 15224 TCF NOQRSM 042503,000602: 042504,000603: # Page 963 042505,000604: # CONSTANTS FOR ROLL AUTOPILOT 042506,000605: 042507,000606: 16,3725 E6,1742 EBANK= BZERO 042508,000607: 16,3725 03717 34066 NOROL1T6 2CADR NOROLL1 042509,000608: 042510,000609: 16,3727 00344 DB DEC .01388889 # DEAD BAND (5 DEG), SC.AT B+0 REV 042511,000610: 16,3730 06315 -SLOPE DEC 0.2 # -SWITCHLINE SLOPE(0.2 PER SEC) SC.AT B+0 042512,000611: # PER SEC 042513,000612: 16,3731 00111 LMCRATE DEC .00027778 B+4 # LIMIT CYCLE RATE (0.1 DEG/SEC) SC.AT 042514,000613: # B-4 REV/SEC 042515,000614: 16,3732 00510 INTERCEP DEC .0025 B+3 # DB(-SLOPE) - LMCRATE, SC.AT B-3 REV/SC 042516,000615: 16,3733 01330 MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC 042517,000616: 16,3734 00027 1/MINLIM DEC 360 B-18 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT 042518,000617: 16,3735 07071 MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC 042519,000618: 16,3736 00030 TMINFIRE DEC 1.5 B+4 # 15 MS. (14MIN), SC.AT 16 BITS/CS 042520,000619: 16,3737 07640 TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS 042521,000620: 042522,000621: 16,3740 4710 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT, 042523,000622: # ROUNDS TO OCT00004, SO ALLOWS 2.56 042524,000623: # SEC FIRINGS BEFORE APPLYING LIMIT 042525,000624: 16,3740 7665 T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC) 042526,000625: 16,3740 4715 +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11 042527,000626: 16,3740 4732 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15 042528,000627: 16,3740 4377 -ROLL1 = TEN # ONBITS FOR JETS 12 AND 10 042529,000628: 16,3740 00240 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14 042530,000629: End of include-file TVCROLLDAP.agc. Parent file is MAIN.agc