Source Code

060785,000001: # Copyright: Public domain. 060786,000002: # Filename: TJET_LAW.agc 060787,000003: # Purpose: A section of Luminary 1C, revision 131. 060788,000004: # It is part of the source code for the Lunar Module's (LM) 060789,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14. 060790,000006: # This file is intended to be a faithful transcription, except 060791,000007: # that the code format has been changed to conform to the 060792,000008: # requirements of the yaYUL assembler rather than the 060793,000009: # original YUL assembler. 060794,000010: # Reference: pp. 1457-1466 of 1729.pdf. 060795,000011: # Contact: Ron Burkey <info@sandroid.org>. 060796,000012: # Website: www.ibiblio.org/apollo/index.html 060797,000013: # Mod history: 06/08/03 RSB. Began transcribing. 060798,000014: # 05/14/05 RSB Corrected website reference above. 060799,000015: # 2010-10-25 JL Indentation fixes. 060800,000016: 060801,000017: # Page 1457 060802,000018: # PROGRAM DESCRIPTION 060803,000019: # DESIGNED BY: R. D. GOSS AND P. S. WEISSMAN 060804,000020: # CODED BY: P. S. WEISSMAN, 28 FEBRURARY 1968 060805,000021: 060806,000022: # TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR 060807,000023: # ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR: 060808,000024: # -1 INDICATES THE P-AXIS 060809,000025: # +0 INDICATES THE U-AXIS 060810,000026: # +1 INDICATES TEH V-AXIS 060811,000027: # THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER 060812,000028: # UNBALANCED COUPLES ARE PREFERRED. TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE 060813,000029: # COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY 060814,000030: # ACCESSED BY INDEXING. 060815,000031: 060816,000032: # THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST 060817,000033: # PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU, OR TJV). THE NUMBER OF JETS THAT 060818,000034: # TJETLAW ASSUMES WILL BE USED AS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS. TWO JETS ARE ALWAYS 060819,000035: # ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES 060820,000036: # (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR. 060821,000037: 060822,000038: # IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE 060823,000039: # ERROR AND/OR ERROR RATE ARE LARGE. 060824,000040: 060825,000041: # CALLING SEQUENCE: 060826,000042: # TC TJETLAW # (MUST BE IN JASK) 060827,000043: # OR 060828,000044: # INHINT # (MUST BE IN JASK) 060829,000045: # TC IBNKCALL 060830,000046: # CADR TJETLAW 060831,000047: # RELINT 060832,000048: 060833,000049: # EXIT: RETURN TO Q. 060834,000050: 060835,000051: # INPUT: 060836,000052: # FROM THE CALLER: E, EDOT, AXISCTR, SENSETYP, TJP, -U, -V. 060837,000053: # FROM 1/ACCONT: 48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU, -V). 060838,000054: 060839,000055: # OUTPUT: 060840,000056: # TJP, -U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3). 060841,000057: 060842,000058: # DEBRIS: 060843,000059: # A, L, Q, E, EDOT, DAPTEMP1-6, DAPTEMP1-4. 060844,000060: 060845,000061: # ALARM: NONE 060846,000062: 060847,000063: 17,3304 BANK 17 060848,000064: 17,2000 SETLOC DAPS2 060849,000065: 17,2000 BANK 060850,000066: 17,3304 E6,1524 EBANK= TJP 060851,000067: # Page 1458 060852,000068: 17,3304 COUNT* $$/DAPTJ 060853,000069: 060854,000070: 17,3304 00006 TJETLAW EXTEND # SAVE Q FOR RETURN. 060855,000071: 17,3305 23744 QXCH HOLDQ 060856,000072: 060857,000073: # SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT 060858,000074: 060859,000075: 17,3306 51505 INDEX AXISCTR # AXISDIFF(-1)=NO OF LOCATIONS BET P AND U 060860,000076: 17,3307 33755 CAF AXISDIFF # AXISDIFF(0)=0 060861,000077: 17,3310 55745 TS ADRSDIF1 # AXISDIFF(+1)=NO OF LOCATIONS BET V AND U 060862,000078: 060863,000079: 17,3311 31427 CAE EDOT # IF EDOT NEGATIVE, PICK UP SET OF VALUES 060864,000080: 17,3312 00006 EXTEND # THAT ALLOW USE OF SAME CODING AS FOR 060865,000081: 17,3313 63320 BZMF NEGEDOT # POSITIVE EDOT. 060866,000082: 17,3314 31745 CAE ADRSDIF1 # SET A SECOND INDEXER WHICH MAY BE 060867,000083: 17,3315 55743 TS ADRSDIF2 # MODIFIED BY A DECISION FOR MAX JETS. 060868,000084: 17,3316 33757 CAF SENSOR # FOR POSITIVE EDOT, ROTSENSE IS 060869,000085: 17,3317 13330 TCF SETSENSE # INITIALIZED POSITIVE. 060870,000086: 060871,000087: 17,3320 41751 NEGEDOT CS E # IN ORDER FOR NEG EDOT CASE TO USE CODING 060872,000088: 17,3321 55751 TS E # OF POS EDOT, MUST MODIFY AS FOLLOWS: 060873,000089: 17,3322 41427 CS EDOT # 1. COMPLEMENT E AND EDOT. 060874,000090: 17,3323 55427 TS EDOT # 2. SET SENSE OF ROTATION TO NEGATIVE 060875,000091: 17,3324 34753 CAF BIT1 # (REVERSED LATER IF NECESSARY). 060876,000092: 17,3325 27745 ADS ADRSDIF1 # 3. INCREMENT INDEXERS BY ONE SO THAT 060877,000093: 17,3326 55743 TS ADRSDIF2 # THE PROPER PARAMETERS ARE ACCESSED. 060878,000094: 17,3327 43757 CS SENSOR 060879,000095: 17,3330 55737 SETSENSE TS ROTSENSE 060880,000096: 060881,000097: # TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS): 060882,000098: # IF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE. 060883,000099: # IF LESS THAN PI/16 RADIANS, RESCALE TO PI/4 060884,000100: 060885,000101: 17,3331 31751 CAE E # PICK UP ATTITUDE ERROR FOR THIS AXIS 060886,000102: 17,3332 00006 EXTEND 060887,000103: 17,3333 74747 MP BIT5 # SHIFT RIGHT TEN BITS: IF A-REGISTER IS 060888,000104: 17,3334 10000 CCS A # ZERO, RESCALE AND TEST EDOT. 060889,000105: 17,3335 13717 TCF RUFLAW2 060890,000106: 17,3336 13340 TCF SCALEE 060891,000107: 17,3337 13663 TCF RUFLAW1 060892,000108: 17,3340 34737 SCALEE CAF BIT13 # ERROR IS IN L SCALED AT PI/16. RESCALE 060893,000109: 17,3341 00006 EXTEND # IT TO PI/4 AND SAVE IT. 060894,000110: 17,3342 70001 MP L 060895,000111: 17,3343 55751 TS E 060896,000112: 060897,000113: # TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND) 060898,000114: # IF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE. 060899,000115: # IF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND. 060900,000116: 060901,000117: 17,3344 31427 CAE EDOT # PICK UP SINGLE-PRECISION ERROR-RATE 060902,000118: # Page 1459 060903,000119: 17,3345 00006 EXTEND # FOR THIS AXIS= 060904,000120: 17,3346 74750 MP BIT4 # SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS 060905,000121: 17,3347 00006 EXTEND # ZERO, THEN RESCALE AND USE FINELAW. 060906,000122: 17,3350 13352 BZF SCALEDOT 060907,000123: 17,3351 13725 TCF RUFLAW3 060908,000124: 060909,000125: # *** FINELAW STARTS HERE *** 060910,000126: 060911,000127: 17,3352 23427 SCALEDOT LXCH EDOT # EDOT IS SCALED AT PI/32 RADIANS/SECOND. 060912,000128: 060913,000129: 17,3353 31427 CAE EDOT # COMPUTE (EDOT)(EDOT) 060914,000130: 17,3354 00006 EXTEND 060915,000131: 17,3355 70000 SQUARE # PRODUCT SCALED AT PI(2)/2(10) RAD/SEC. 060916,000132: 17,3356 00006 EXTEND 060917,000133: 17,3357 74737 MP BIT13 # SHIFT RIGHT TWO BITS TO RESCALE TO EDOTSQ 060918,000134: 17,3360 55736 TS EDOTSQ # TO PI(2)/2(8) RAD(2)/SEC(2). 060919,000135: 060920,000136: 17,3361 11751 ERRTEST CCS E # DOES BIG ERROR (THREE DEG BEYOND THE 060921,000137: 17,3362 13365 TCF +3 # DEADBAND) REQUIRE MAXIMUM JETS? 060922,000138: 17,3363 13365 TCF +2 060923,000139: 17,3364 13365 TCF +1 060924,000140: 17,3365 63760 AD -3DEG 060925,000141: 17,3366 00006 EXTEND 060926,000142: 17,3367 51745 INDEX ADRSDIF1 060927,000143: 17,3370 61600 SU FIREDB 060928,000144: 17,3371 00006 EXTEND 060929,000145: 17,3372 63377 BZMF SENSTEST # IF NOT: ARE UNBALANCED JETS PREFERRED? 060930,000146: 17,3373 34752 MAXJETS CAF TWO # IF YES: INCRMENT ADDRESS LOCATOR AND 060931,000147: 17,3374 27743 ADS ADRSDIF2 # SET SWITCH FOR JET SELECT LOGIC TO 4. 060932,000148: 17,3375 34751 CAF FOUR # (ALWAYS DO THIS FOR P-AXIS) 060933,000149: 17,3376 13402 TCF TJCALC 060934,000150: 17,3377 11500 SENSTEST CCS SENSETYP # DOES TRANSLATION PREFER MIN JETS. 060935,000151: 17,3400 13402 TCF TJCALC # YES. USE MIN-JET PARAMETERS 060936,000152: 17,3401 13373 TCF MAXJETS # NO. GET THE MAX-JET PARAMETERS. 060937,000153: 17,3402 55742 TJCALC TS NUMBERT # SET TO +0,1,4 FOR (U,V-AXES) JET SELECT. 060938,000154: 060939,000155: # BEGINNING OF TJET CALCULATIONS: 060940,000156: 060941,000157: 17,3403 41736 CS EDOTSQ # SCALED AT PI(2)/2(8). 060942,000158: 17,3404 00006 EXTEND 060943,000159: 17,3405 51743 INDEX ADRSDIF2 060944,000160: 17,3406 71566 MP 1/ANET1 # .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN. 060945,000161: 17,3407 51745 INDEX ADRSDIF1 060946,000162: 17,3410 61600 AD FIREDB # DEADBAND SCALED AT PI/4 RADIAN. 060947,000163: 17,3411 00006 EXTEND 060948,000164: 17,3412 61751 SU E # ATTITUDE ERROR SCALED AT PI/4 RADIAN. 060949,000165: 17,3413 55740 TS FIREFCT # -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN. 060950,000166: 17,3414 00006 EXTEND 060951,000167: 17,3415 63575 BZMF ZON1,2,3 060952,000168: 060953,000169: 17,3416 51745 ZONE4,4 INDEX ADRSDIF1 060954,000170: # Page 1460 060955,000171: 17,3417 31572 CAE 1/ACOAST # .5/ACC SCALED AT 2(6)/PI WHERE 060956,000172: 17,3420 00006 EXTEND # ACC = MAX(AMIN, AOS-). 060957,000173: 17,3421 71736 MP EDOTSQ # SCALED AT PI/2(8). 060958,000174: 17,3422 61751 AD E # SCALED AT PI/4 060959,000175: 17,3423 51745 INDEX ADRSDIF1 060960,000176: 17,3424 61602 AD COASTDB # SCALED AT PI/4 POS. FOR NEG. INTERCEPT. 060961,000177: 17,3425 00006 EXTEND # TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN. 060962,000178: 17,3426 63461 BZMF ZONE5 # IF FUNCTION NEGATIVE, FIND TJET. 060963,000179: # IF FUNCTION POSITIVE, IN ZONE 4. 060964,000180: 060965,000181: # ZONE 4 IS THE COAST REGION. HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD 060966,000182: # A. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR 060967,000183: # B. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT 060968,000184: # THEN THE THRUSTERS ARE KEPT ON. 060969,000185: 060970,000186: 17,3427 51505 ZONE4 INDEX AXISCTR # IS THE CURRENT VALUE IN TJET NON-ZERO 060971,000187: 17,3430 41525 CS TJETU # WITH SENSE OPPOSITE TO EDOT, 060972,000188: 17,3431 00006 EXTEND # (I.E., ARE JETS ON AND FIRING TOARD 060973,000189: 17,3432 71737 MP ROTSENSE # THE DESIRABLE STATE). 060974,000190: 17,3433 00006 EXTEND 060975,000191: 17,3434 63455 BZMF COASTTJ # NO. COAST. 060976,000192: 060977,000193: 17,3435 11554 JETSON CCS FLAT # YES. IS THIS DRIFTING OR POWERED FLIGHT? 060978,000194: 17,3436 13447 TCF DRIFT/ON # DRIFTING. GO MAKE FURTHER TEST. 060979,000195: 060980,000196: 17,3437 41740 CS FIREFCT # POWERED (OR ULLAGE). CAN TARGET PARABOLA 060981,000197: 17,3440 51745 INDEX ADRSDIF1 # BE REACHED FROM THIS POINT IN THE 060982,000198: 17,3441 61604 AD AXISDIST # PHASE PLANE? 060983,000199: 17,3442 00006 EXTEND 060984,000200: 17,3443 63455 BZMF COASTTJ # NO. SET TJET = 0. 060985,000201: 17,3444 03561 TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 1 060986,000202: 17,3445 31740 CAE FIREFCT # AFTER COMPUTING THE REQUIRED 060987,000203: 17,3446 13615 TCF ZONE1 # PARAMETERS. 060988,000204: 060989,000205: 17,3447 51745 DRIFT/ON INDEX ADRSDIF1 # CAN TARGET STRIP OF AXIS BE REACHED FROM 060990,000206: 17,3450 41600 CS FIREDB # THIS POINT IN THE PHASE PLANE? 060991,000207: 17,3451 60000 DOUBLE 060992,000208: 17,3452 61740 AD FIREFCT 060993,000209: 17,3453 00006 EXTEND 060994,000210: 17,3454 63457 BZMF +3 060995,000211: 17,3455 34755 COASTTJ CAF ZERO # NO. SET TJET = 0. 060996,000212: 17,3456 13521 TCF RETURNTJ 060997,000213: 060998,000214: 17,3457 03561 TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 2 060999,000215: 17,3460 13602 TCF ZONE2,3 # OR 3 AFTER COMPUTING REQUIRED VALUES. 061000,000216: 061001,000217: 17,3461 54001 ZONE5 TS L # TEMPORARILY STORE FUNCTION IN L. 061002,000218: 17,3462 11737 CCS ROTSENSE # MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2 061003,000219: 17,3463 13467 TCF +4 # AND ACCFCTZ5, WHICH MUST BE PICKED UP 061004,000220: 17,3464 05675 TC CCSHOLE # FROM THE NEXT LOWER REGISTER IF THE 061005,000221: # Page 1461 061006,000222: 17,3465 44752 CS TWO # (ACTUAL) ERROR RATE IS NEGATIVE. 061007,000223: 17,3466 27743 ADS ADRSDIF2 061008,000224: 061009,000225: 17,3467 30001 +4 CAE L 061010,000226: 17,3470 00006 EXTEND 061011,000227: 17,3471 51743 INDEX ADRSDIF2 # TTOAXIS AND HH ARE THE PARAMETERS UPON 061012,000228: 17,3472 71575 MP ACCFCTZ5 # WHICH THE APPROXIMATIONS TO TJET ARE 061013,000229: 17,3473 20001 DDOUBL # ABASED. 061014,000230: 17,3474 20001 DDOUBL 061015,000231: 17,3475 53747 DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2). 061016,000232: 17,3476 51743 INDEX ADRSDIF2 061017,000233: 17,3477 31567 CAE 1/ANET2 # SCALED AT 2(7)/PI SEC(2)/RAD. 061018,000234: 17,3500 00006 EXTEND 061019,000235: 17,3501 71427 MP EDOT # SCALED AT PI/2(5) 061020,000236: 17,3502 55741 TS TTOAXIS # SCALED AT 4 SEC. 061021,000237: 061022,000238: # TEST WHETHER TJET GREATER THAN 50 MSEC. 061023,000239: 061024,000240: 17,3503 00006 EXTEND 061025,000241: 17,3504 73767 MP -.05AT2 # H - .05 TTOAXIS - .00125 G.T. ZERO 061026,000242: 17,3505 61746 AD HH # (SCALED AT 8 SEC(2) ). 061027,000243: 17,3506 67751 AD NEG2 061028,000244: 17,3507 00006 EXTEND 061029,000245: 17,3510 63536 BZMF FORMULA1 061030,000246: 061031,000247: # TEST WHETHER TJET GREATER THAN 150 MSEC. 061032,000248: 061033,000249: 17,3511 31741 CAE TTOAXIS 061034,000250: 17,3512 00006 EXTEND 061035,000251: 17,3513 73770 MP -.15AT2 # H - .15 TTOAXIS - .01125 G.T. ZERO 061036,000252: 17,3514 61746 AD HH # (SCALED AT 8 SEC(2) ) 061037,000253: 17,3515 63761 AD -.0112A8 061038,000254: 17,3516 00006 EXTEND 061039,000255: 17,3517 63546 BZMF FORMULA2 061040,000256: 061041,000257: # IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS 061042,000258: # IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC). 061043,000259: 061044,000260: 17,3520 34741 FULLTIME CAF BIT11 # 250 MSEC SCALED AT 4 SEC. 061045,000261: 061046,000262: # RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED. 061047,000263: 061048,000264: 17,3521 00006 RETURNTJ EXTEND # ALL BRANCHES TERMINATE HERE WITH TJET 061049,000265: 17,3522 71737 MP ROTSENSE # (SCALED AT 4 SEC) IN THE ACCUMULATOR. 061050,000266: 17,3523 51505 INDEX AXISCTR # ROTSENSE APPLIES SIGN AND CHANGES SCALE. 061051,000267: 17,3524 55525 TS TJETU 061052,000268: 17,3525 00006 EXTEND 061053,000269: 17,3526 51505 INDEX AXISCTR 061054,000270: 17,3527 71546 MP ACCSWU # SET SWITCH FOR JET SELECT IF ROTATION IS 061055,000271: 17,3530 30001 CAE L 061056,000272: 17,3531 00006 EXTEND # IN A SENSE FOR WHICH 1/ACCS HAS FORCED 061057,000273: 17,3532 63535 BZMF +3 # A MAX-JET CALCULATION. 061058,000274: # Page 1462 061059,000275: 17,3533 34751 CAF FOUR 061060,000276: 17,3534 55742 TS NUMBERT 061061,000277: 17,3535 01744 TC HOLDQ # RETURN VIA SAVED Q. 061062,000278: 061063,000279: # TJET = H/(.025 + TTOAXIS) FOR TJET LESS THAN 50 MSEC. 061064,000280: 061065,000281: 17,3536 43766 FORMULA1 CS -.025AT4 # .025 SEC SCALED AT 4. 061066,000282: 17,3537 61741 AD TTOAXIS # SCALED AT 4 SECONDS. 061067,000283: 17,3540 53747 DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H, 061068,000284: 17,3541 00006 EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP 061069,000285: 17,3542 11746 DV HH # DP H AND DIVIDE BY DENOMINATOR. 061070,000286: 17,3543 00006 EXTEND 061071,000287: 17,3544 74736 MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC. 061072,000288: 17,3545 13656 TCF CHKMINTJ # CHECK THAT TJET IS NOT LESS THAN MINIMUM 061073,000289: 061074,000290: # TJET = (H + .00375)/(0.1 + TTOAXIS) FOR TJET GREATER THAN 50 MSEC. 061075,000291: 061076,000292: 17,3546 00006 FORMULA2 EXTEND 061077,000293: 17,3547 33772 DCA .00375A8 # .00375 SEC(2) SCALED AT 8. 061078,000294: 17,3550 21747 DAS HH # STORE NUMERATOR IN DP H, WHICH NEED NOT 061079,000295: # BE PRESERVED. 061080,000296: 17,3551 31741 CAE TTOAXIS # SCALED AT 4 SEC. 061081,000297: 17,3552 63762 AD .1AT4 # 0.1 SEC SCALED AT 4. 061082,000298: 17,3553 53747 DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H, 061083,000299: 17,3554 00006 EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP 061084,000300: 17,3555 11746 DV HH # DP NUMERATOR AND DIVIDE BY DENOMINATOR 061085,000301: 17,3556 00006 EXTEND 061086,000302: 17,3557 74736 MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC. 061087,000303: 17,3560 13521 TCF RETURNTJ # END SUBROUTINE. 061088,000304: 061089,000305: # SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3. 061090,000306: # REACHED BY TC FROM 3 POINTS IN TJETLAW. 061091,000307: 061092,000308: 17,3561 41737 Z123COMP CS ROTSENSE # USED IN RETURNTJ SECTION TO RESCALE TJET 061093,000309: 17,3562 55737 TS ROTSENSE # AS TIME6 AND GIVE IT PROPER SIGN. 061094,000310: 17,3563 31427 CAE EDOT # SCALED AT PI/2(5) RAD/SEC. 061095,000311: 17,3564 00006 EXTEND 061096,000312: 17,3565 51743 INDEX ADRSDIF2 061097,000313: 17,3566 71566 MP 1/ANET1 # SCALED AT 2(7)/PI SEC(2)/RAD. 061098,000314: 17,3567 55741 TS TTOAXIS # STORE TIME-TO-AXIS SCALED AT 4 SECONDS. 061099,000315: 17,3570 63773 AD -TJMAX 061100,000316: 17,3571 00006 EXTEND # IS TIME TO AXIS LESS THAN 150 MSEC. 061101,000317: 17,3572 63574 BZMF +2 061102,000318: 17,3573 13520 TCF FULLTIME # NO. FIRE JETS, DO NOT CALCULATE TJET. 061103,000319: 17,3574 00002 RETURN # YES. GO ON TO FIND TJET 061104,000320: 061105,000321: 17,3575 03561 ZON1,2,3 TC Z123COMP # SUBROUTINIZED PREPARATION FOR ZONE1,2,3. 061106,000322: 061107,000323: # IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL 061108,000324: # Page 1463 061109,000325: # LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE. DURING POWERED FLIGHT 061110,000326: # OR ULLAGE, FLAT = 0 061111,000327: 061112,000328: 17,3576 31740 CAE FIREFCT # SCALED AT PI/4 RAD. 061113,000329: 17,3577 61554 AD FLAT 061114,000330: 17,3600 00006 EXTEND 061115,000331: 17,3601 63615 BZMF ZONE1 # NOT IN SPECIAL ZONES. 061116,000332: 061117,000333: # FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE. IF ON AXIS, COAST. 061118,000334: 061119,000335: 17,3602 41555 ZONE2,3 CS ZONE3LIM # HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS 061120,000336: 17,3603 61741 AD TTOAXIS # 35 MSEC IN DRIFTING FLIGHT 061121,000337: 17,3604 00006 EXTEND # ZERO WHEN TRYING TO ENTER GTS CONTROL. 061122,000338: 17,3605 63610 BZMF ZONE3 061123,000339: 17,3606 31741 ZONE2 CAE TTOAXIS # FIRE TO AXIS. 061124,000340: 17,3607 13521 TCF RETURNTJ 061125,000341: 17,3610 11427 ZONE3 CCS EDOT # CHECK IF EDOT IS ZERO. 061126,000342: 17,3611 34746 CAF BIT6 # FIRE A ONE-JET MINIMUM IMPULSE. 061127,000343: 17,3612 13521 TCF RETURNTJ # TJET = +0. 061128,000344: 17,3613 05675 TC CCSHOLE # CANNOT BE BECAUSE NEG EDOT COMPLEMENTED. 061129,000345: 17,3614 13521 TCF RETURNTJ # TJET = +0. 061130,000346: 061131,000347: 17,3615 00006 ZONE1 EXTEND 061132,000348: 17,3616 51745 INDEX ADRSDIF1 061133,000349: 17,3617 61604 SU AXISDIST # SCALED AT PI/4 RAD. 061134,000350: 17,3620 00006 EXTEND 061135,000351: 17,3621 51743 INDEX ADRSDIF2 061136,000352: 17,3622 71574 MP ACCFCTZ1 # SCALED AT 2(7)/PI SEC(2)/RAD. 061137,000353: 17,3623 20001 DDOUBL 061138,000354: 17,3624 20001 DDOUBL 061139,000355: 17,3625 53747 DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2). 061140,000356: 061141,000357: # TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC: 061142,000358: # 2 2 061143,000359: # IS .5(.150 - TTOAXIS) - H NEGATIVE (SCALED AT 8 SECONDS ) 061144,000360: 061145,000361: 17,3626 31741 CAE TTOAXIS # TTOAXIS SCALED AT 4 SECONDS. 061146,000362: 17,3627 63773 AD -TJMAX # -.150 SECOND SCALED AT 4. 061147,000363: 17,3630 00006 EXTEND 061148,000364: 17,3631 70000 SQUARE 061149,000365: 17,3632 00006 EXTEND 061150,000366: 17,3633 61746 SU HH # HIGH WORD OF H SCALED AT 8 SEC(2). 061151,000367: 17,3634 00006 EXTEND 061152,000368: 17,3635 63520 BZMF FULLTIME # YES. NEED NOT CALCULATE TJET. 061153,000369: 061154,000370: # TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE. 061155,000371: 061156,000372: 17,3636 31746 CAE HH 061157,000373: 17,3637 67751 AD NEG2 061158,000374: 17,3640 00006 EXTEND 061159,000375: # Page 1464 061160,000376: 17,3641 63651 BZMF FORMULA3 061161,000377: 061162,000378: # TJET = H/0.1 + TTOAXIS + .0375 FOR APPROXIMATION OVER MORE THAN 50 MSEC. 061163,000379: 061164,000380: 17,3642 33763 CAF .1AT2 # STORE .1 SEC SCALED AT 2 FOR DIVISION. 061165,000381: 17,3643 53747 DXCH HH # DP H SCALED AT 8 SEC(2) NEED NOT BE 061166,000382: 17,3644 00006 EXTEND # PRESERVED. 061167,000383: 17,3645 11746 DV HH # QUOTIENT SCALED AT 4 SECONDS. 061168,000384: 17,3646 61741 AD TTOAXIS # SCALED AT 4 SEC. 061169,000385: 17,3647 63764 AD .0375AT4 # .0375 SEC SCALED AT 4. 061170,000386: 17,3650 13521 TCF RETURNTJ # END COMPUTATION. 061171,000387: 061172,000388: # TJET - H/.O25 + TTOAXIS FOR APPROXIMATION OVER LESS THAN 50 MSEC. 061173,000389: 061174,000390: 17,3651 43765 FORMULA3 CS -.025AT2 # STORE +.25 SEC SCALED AT 2 FOR DIVISION 061175,000391: 17,3652 53747 DXCH HH # PICK UP DP H AT 8, WHICH NEED NOT BE 061176,000392: 17,3653 00006 EXTEND # PRESERVED. 061177,000393: 17,3654 11746 DV HH # QUOTIENT SCALED AT 4 SECONDS. 061178,000394: 17,3655 61741 AD TTOAXIS # SCALED AT 4 SEC. 061179,000395: 061180,000396: # IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO. 061181,000397: # MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY. 061182,000398: 061183,000399: 17,3656 63775 CHKMINTJ AD -TJMIN # IS COMPUTED TIME LESS THAN THE MINIMUM. 061184,000400: 17,3657 00006 EXTEND 061185,000401: 17,3660 63455 BZMF COASTTJ # YES, SET TIME TO ZERO. 061186,000402: 17,3661 63774 AD TJMIN # NO, RESTORE COMPUTED TIME. 061187,000403: 17,3662 13521 TCF RETURNTJ # END COMPUTATION. 061188,000404: 061189,000405: # Page 1465 061190,000406: # *** ROUGHLAW *** 061191,000407: 061192,000408: # BEFORE ENTRY TO RUFLAW: 061193,000409: # 1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT. 061194,000410: # 2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE. 061195,000411: # 3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC. 061196,000412: # (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4) 061197,000413: 061198,000414: # RUFLAW1: ERROR MORE NEGATIVE THAN PI/16 RAD. FIRE TO A RATE OF 6.5 DEG/SEC (IF JET TIME EXCEEDS 20 MSEC.). 061199,000415: # RUFLAW2: ERROR MORE POSITIVE THAN PI/16 RAD. FIRE TO AN OPPOSING RATE OF 6.5 DEG/SEC. 061200,000416: # RUFLAW3: ERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS. COAST IF BELOW FIREFCT, FIRE IF ABOVE 061201,000417: 061202,000418: 17,3663 43776 RUFLAW1 CS RUFRATE # DECREMENT EDOT BY .1444 RAD/SEC AT PI/4 061203,000419: 17,3664 27427 ADS EDOT # WHICH IS THE TARGET RATE 061204,000420: 17,3665 00006 EXTEND 061205,000421: 17,3666 63707 BZMF SMALRATE # BRANCH IF RATE LESS THAN TARGET. 061206,000422: 17,3667 03745 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS. 061207,000423: 17,3670 31427 CAE EDOT # PICK UP DESIRED RATE CHANGE. 061208,000424: 061209,000425: 17,3671 00006 RUFLAW12 EXTEND # COMPUTE TJET 061210,000426: 17,3672 51743 INDEX ADRSDIF2 # = (DESIRED RATE CHANGE)/(2-JET ACCEL.) 061211,000427: 17,3673 71570 MP 1/ANET1 +2 061212,000428: 17,3674 67744 AD -1/8 # IF TJET, SCALED AT 32 SEC, EXCEEDS 061213,000429: 17,3675 00006 EXTEND # 4 SECONDS, SET TJET TO TJMAX. 061214,000430: 17,3676 63700 BZMF +2 061215,000431: 17,3677 13520 TCF FULLTIME 061216,000432: 17,3700 00006 EXTEND 061217,000433: 17,3701 13520 BZF FULLTIME 061218,000434: 17,3702 64740 AD BIT12 # RESTORE COMPUTED TJET TO ACCUMULATOR 061219,000435: 17,3703 20001 DAS A 061220,000436: 17,3704 20001 DAS A 061221,000437: 17,3705 20001 DAS A # RESCALED TJET AT 4 SECONDS. 061222,000438: 17,3706 13656 TCF CHKMINTJ # RETURN AS FROM FINELAW. 061223,000439: 061224,000440: 17,3707 03747 SMALRATE TC RUFSETUP +2 # SET NUMBERT AND FIREFCT FOR MAXIMUM JETS 061225,000441: 17,3710 11737 CCS ROTSENSE 061226,000442: 17,3711 34753 CAF ONE # MODIFY INDEXER TO POINT TO 1/ANET 061227,000443: 17,3712 13714 TCF +2 # CORRESPONDING TO THE PROPER SENSE. 061228,000444: 17,3713 37752 CAF NEGONE 061229,000445: 17,3714 27743 ADS ADRSDIF2 061230,000446: 061231,000447: 17,3715 41427 CS EDOT # (.144 AT PI/4 - EDOT) = DESIRED RATE CHNG. 061232,000448: 17,3716 13671 TCF RUFLAW12 061233,000449: 061234,000450: 17,3717 03745 RUFLAW2 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS. 061235,000451: 17,3720 33776 CAF RUFRATE 061236,000452: 17,3721 61427 AD EDOT # (.144 AT PI/4 + EDOT) = DESIRED RATE CHNG. 061237,000453: 17,3722 54000 TS A # IF OVERFLOW SKIP, FIRE FOR FULL TIME. 061238,000454: 17,3723 13671 TCF RUFLAW12 061239,000455: 17,3724 13520 TCF FULLTIME 061240,000456: 061241,000457: # Page 1466 061242,000458: 17,3725 03745 RUFLAW3 TC RUFSETUP # EXECUTE COMMON RUFLAW SUBROUTINE. 061243,000459: 17,3726 51745 INDEX ADRSDIF1 061244,000460: 17,3727 41600 CS FIREDB # CALCULATE DISTANCE FROM SWITCH CURVE 061245,000461: 17,3730 61751 AD E # 1/ANET1*EDOT*EDOT +E - FIREDB = 0 061246,000462: 17,3731 00006 EXTEND # SCALED AT 4 PI RADIANS 061247,000463: 17,3732 74741 MP BIT11 061248,000464: 17,3733 57427 XCH EDOT 061249,000465: 17,3734 00006 EXTEND 061250,000466: 17,3735 70000 SQUARE 061251,000467: 17,3736 00006 EXTEND 061252,000468: 17,3737 51745 INDEX ADRSDIF1 061253,000469: 17,3740 71570 MP 1/ANET1 +2 061254,000470: 17,3741 61427 AD EDOT 061255,000471: 17,3742 00006 EXTEND 061256,000472: 17,3743 63455 BZMF COASTTJ # COAST IF BELOW IT. 061257,000473: 17,3744 13520 TCF FULLTIME # FIRE FOR FULL PERIOD IF ABOVE IT. 061258,000474: 061259,000475: # SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW. 061260,000476: 061261,000477: 17,3745 41737 RUFSETUP CS ROTSENSE # REVERSE ROTSENSE WHEN ENTER HERE. 061262,000478: 17,3746 55737 TS ROTSENSE 061263,000479: 17,3747 34751 +2 CAF FOUR # REQUIRE MAXIMUM (2) JETS IN U,V-AXES. 061264,000480: 17,3750 55742 TS NUMBERT 061265,000481: 17,3751 34735 CAF NEGMAX # SUGGEST MAXIMUM (4) JETS IN P-AXIS. 061266,000482: 17,3752 55740 TS FIREFCT 061267,000483: 17,3753 00002 TC Q 061268,000484: 061269,000485: # CONSTANTS FOR TJETLAW 061270,000486: 061271,000487: 17,3754 77757 DEC -16 B-14 # AXISDIFF(INDEX) = NUMBER OF REGISTERS 061272,000488: 17,3755 00000 AXISDIFF DEC +0 B-14 # BETWEEN STORED 1/ACCS PARAMETERS FOR 061273,000489: 17,3756 00020 DEC 16 B-14 # THE INDEXED AXIS AND THE U-AXIS. 061274,000490: 17,3757 14400 SENSOR OCT 14400 # RATIO OF TJET SCALING WITHIN TJETLAW 061275,000491: # (4 SEC) TO SCALING FOR T6 (10.24 SEC). 061276,000492: 17,3760 75673 -3DEG DEC -.06667 # -3.0 DEGREES SCALED AT 45. 061277,000493: 17,3761 77750 -.0112A8 DEC -.00141 # -.01125 SEC(2) SCALED AT 8. 061278,000494: 17,3762 00632 .1AT4 DEC .025 # 0.1 SECOND SCALED AT 4. 061279,000495: 17,3763 01463 .1AT2 DEC .05 # .1 SEC SCALED AT 2. 061280,000496: 17,3764 00232 .0375AT4 DEC .00938 # .0375 SEC SCALED AT 4. 061281,000497: 17,3765 77462 -.025AT2 DEC -.0125 # -.025 SEC SCALED AT 2. 061282,000498: 17,3766 77631 -.025AT4 DEC -.00625 061283,000499: 17,3767 77145 -.05AT2 DEC -.025 061284,000500: 17,3770 75462 -.15AT2 DEC -.075 061285,000501: 17,3771 00007 25605 .00375A8 2DEC .00375 B-3 061286,000502: 061287,000503: 17,3773 76631 -TJMAX DEC -.0375 # LARGEST CALCULATED TIME. .150 SEC AT 4. 061288,000504: 17,3774 00122 TJMIN DEC .005 # SMALLEST ALLOWABLE TIME. .020 SEC AT 4. 061289,000505: 17,3775 77655 -TJMIN DEC -.005 061290,000506: 17,3776 04476 RUFRATE DEC .1444 # CORRESPONDS TO TARGET RATE OF 6.5 DEG/S. End of include-file TJET_LAW.agc. Parent file is MAIN.agc