Source Code

062511,000001: # Copyright: Public domain. 062512,000002: # Filename: TJET_LAW.agc 062513,000003: # Purpose: Part of the source code for Luminary 1A build 099. 062514,000004: # It is part of the source code for the Lunar Module's (LM) 062515,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 062516,000006: # Assembler: yaYUL 062517,000007: # Contact: Ron Burkey <info@sandroid.org>. 062518,000008: # Website: www.ibiblio.org/apollo. 062519,000009: # Pages: 1460-1469 062520,000010: # Mod history: 2009-05-27 RSB Adapted from the corresponding 062521,000011: # Luminary131 file, using page 062522,000012: # images from Luminary 1A. 062523,000013: # 2009-06-06 RSB Eliminated a stray instruction that had crept 062524,000014: # in somehow. 062525,000015: # 2011-01-06 JL Fixed pseudo-label indentation. 062526,000016: 062527,000017: # This source code has been transcribed or otherwise adapted from 062528,000018: # digitized images of a hardcopy from the MIT Museum. The digitization 062529,000019: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 062530,000020: # the Museum. Many thanks to both. The images (with suitable reduction 062531,000021: # in storage size and consequent reduction in image quality as well) are 062532,000022: # available online at www.ibiblio.org/apollo. If for some reason you 062533,000023: # find that the images are illegible, contact me at info@sandroid.org 062534,000024: # about getting access to the (much) higher-quality images which Paul 062535,000025: # actually created. 062536,000026: 062537,000027: # Notations on the hardcopy document read, in part: 062538,000028: 062539,000029: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 062540,000030: # 16:27 JULY 14, 1969 062541,000031: 062542,000032: # Page 1460 062543,000033: # PROGRAM DESCRIPTION 062544,000034: # DESIGNED BY: R. D. GOSS AND P. S. WEISSMAN 062545,000035: # CODED BY: P. S. WEISSMAN, 28 FEBRURARY 1968 062546,000036: 062547,000037: # TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR 062548,000038: # ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR: 062549,000039: # -1 INDICATES THE P-AXIS 062550,000040: # +0 INDICATES THE U-AXIS 062551,000041: # +1 INDICATES THE V-AXIS 062552,000042: # THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER 062553,000043: # UNBALANCED COUPLES ARE PREFERRED. TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE 062554,000044: # COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY 062555,000045: # ACCESSED BY INDEXING. 062556,000046: 062557,000047: # THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST 062558,000048: # PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU, OR TJV). THE NUMBER OF JETS THAT 062559,000049: # TJETLAW ASSUMES WILL BE USED AS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS. TWO JETS ARE ALWAYS 062560,000050: # ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES 062561,000051: # (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR. 062562,000052: 062563,000053: # IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE 062564,000054: # ERROR AND/OR ERROR RATE ARE LARGE. 062565,000055: 062566,000056: # CALLING SEQUENCE: 062567,000057: # TC TJETLAW # (MUST BE IN JASK) 062568,000058: # OR 062569,000059: # INHINT # (MUST BE IN JASK) 062570,000060: # TC IBNKCALL 062571,000061: # CADR TJETLAW 062572,000062: # RELINT 062573,000063: 062574,000064: # EXIT: RETURN TO Q. 062575,000065: 062576,000066: # INPUT: 062577,000067: # FROM THE CALLER: E, EDOT, AXISCTR, SENSETYP, TJP, -U, -V. 062578,000068: # FROM 1/ACCONT: 48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU, -V). 062579,000069: 062580,000070: # OUTPUT: 062581,000071: # TJP, -U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3). 062582,000072: 062583,000073: # DEBRIS: 062584,000074: # A, L, Q, E, EDOT, DAPTEMP1-6, DAPTEMP1-4. 062585,000075: 062586,000076: # ALARM: NONE 062587,000077: 062588,000078: 17,3252 BANK 17 062589,000079: 17,2000 SETLOC DAPS2 062590,000080: 17,2000 BANK 062591,000081: 17,3252 E6,1524 EBANK= TJP 062592,000082: # Page 1461 062593,000083: 17,3252 COUNT* $$/DAPTJ 062594,000084: 062595,000085: 17,3252 00006 TJETLAW EXTEND # SAVE Q FOR RETURN. 062596,000086: 17,3253 23745 QXCH HOLDQ 062597,000087: 062598,000088: # SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT 062599,000089: 062600,000090: 17,3254 51505 INDEX AXISCTR # AXISDIFF(-1)=NO OF LOCATIONS BET P AND U 062601,000091: 17,3255 33722 CAF AXISDIFF # AXISDIFF(0)=0 062602,000092: 17,3256 55746 TS ADRSDIF1 # AXISDIFF(+1)=NO OF LOCATIONS BET V AND U 062603,000093: 062604,000094: 17,3257 31427 CAE EDOT # IF EDOT NEGATIVE, PICK UP SET OF VALUES 062605,000095: 17,3260 00006 EXTEND # THAT ALLOW USE OF SAME CODING AS FOR 062606,000096: 17,3261 63266 BZMF NEGEDOT # POSITIVE EDOT. 062607,000097: 17,3262 31746 CAE ADRSDIF1 # SET A SECOND INDEXER WHICH MAY BE 062608,000098: 17,3263 55744 TS ADRSDIF2 # MODIFIED BY A DECISION FOR MAX JETS. 062609,000099: 17,3264 33724 CAF SENSOR # FOR POSITIVE EDOT, ROTSENSE IS 062610,000100: 17,3265 13276 TCF SETSENSE # INITIALIZED POSITIVE. 062611,000101: 062612,000102: 17,3266 41752 NEGEDOT CS E # IN ORDER FOR NEG EDOT CASE TO USE CODING 062613,000103: 17,3267 55752 TS E # OF POS EDOT, MUST MODIFY AS FOLLOWS: 062614,000104: 17,3270 41427 CS EDOT # 1. COMPLEMENT E AND EDOT. 062615,000105: 17,3271 55427 TS EDOT # 2. SET SENSE OF ROTATION TO NEGATIVE 062616,000106: 17,3272 34753 CAF BIT1 # (REVERSED LATER IF NECESSARY). 062617,000107: 17,3273 27746 ADS ADRSDIF1 # 3. INCREMENT INDEXERS BY ONE SO THAT 062618,000108: 17,3274 55744 TS ADRSDIF2 # THE PROPER PARAMETERS ARE ACCESSED. 062619,000109: 17,3275 43724 CS SENSOR 062620,000110: 17,3276 55740 SETSENSE TS ROTSENSE 062621,000111: 062622,000112: # TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS): 062623,000113: # IF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE. 062624,000114: # IF LESS THAN PI/16 RADIANS, RESCALE TO PI/4 062625,000115: 062626,000116: 17,3277 31752 CAE E # PICK UP ATTITUDE ERROR FOR THIS AXIS 062627,000117: 17,3300 00006 EXTEND 062628,000118: 17,3301 74747 MP BIT5 # SHIFT RIGHT TEN BITS: IF A-REGISTER IS 062629,000119: 17,3302 10000 CCS A # ZERO, RESCALE AND TEST EDOT. 062630,000120: 17,3303 13664 TCF RUFLAW2 062631,000121: 17,3304 13306 TCF SCALEE 062632,000122: 17,3305 13630 TCF RUFLAW1 062633,000123: 17,3306 34737 SCALEE CAF BIT13 # ERROR IS IN L SCALED AT PI/16. RESCALE 062634,000124: 17,3307 00006 EXTEND # IT TO PI/4 AND SAVE IT. 062635,000125: 17,3310 70001 MP L 062636,000126: 17,3311 55752 TS E 062637,000127: 062638,000128: # TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND) 062639,000129: # IF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE. 062640,000130: # IF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND. 062641,000131: 062642,000132: 17,3312 31427 CAE EDOT # PICK UP SINGLE-PRECISION ERROR-RATE 062643,000133: # Page 1462 062644,000134: 17,3313 00006 EXTEND # FOR THIS AXIS= 062645,000135: 17,3314 74750 MP BIT4 # SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS 062646,000136: 17,3315 00006 EXTEND # ZERO, THEN RESCALE AND USE FINELAW. 062647,000137: 17,3316 13320 BZF SCALEDOT 062648,000138: 17,3317 13672 TCF RUFLAW3 062649,000139: 062650,000140: # *** FINELAW STARTS HERE *** 062651,000141: 062652,000142: 17,3320 23427 SCALEDOT LXCH EDOT # EDOT IS SCALED AT PI/32 RADIANS/SECOND. 062653,000143: 062654,000144: 17,3321 31427 CAE EDOT # COMPUTE (EDOT)(EDOT) 062655,000145: 17,3322 00006 EXTEND 062656,000146: 17,3323 70000 SQUARE # PRODUCT SCALED AT PI(2)/2(10) RAD/SEC. 062657,000147: 17,3324 00006 EXTEND 062658,000148: 17,3325 74737 MP BIT13 # SHIFT RIGHT TWO BITS TO RESCALE TO EDOTSQ 062659,000149: 17,3326 55737 TS EDOTSQ # TO PI(2)/2(8) RAD(2)/SEC(2). 062660,000150: 062661,000151: 17,3327 11752 ERRTEST CCS E # DOES BIG ERROR (THREE DEG BEYOND THE 062662,000152: 17,3330 63725 AD -3DEG # DEADBAND) REQUIRE MAXIMUM JETS? 062663,000153: 17,3331 13333 TCF +2 062664,000154: 17,3332 63725 AD -3DEG 062665,000155: 17,3333 00006 EXTEND 062666,000156: 17,3334 51746 INDEX ADRSDIF1 062667,000157: 17,3335 61601 SU FIREDB 062668,000158: 17,3336 00006 EXTEND 062669,000159: 17,3337 63344 BZMF SENSTEST # IF NOT: ARE UNBALANCED JETS PREFERRED? 062670,000160: 17,3340 34752 MAXJETS CAF TWO # IF YES: INCRMENT ADDRESS LOCATOR AND 062671,000161: 17,3341 27744 ADS ADRSDIF2 # SET SWITCH FOR JET SELECT LOGIC TO 4. 062672,000162: 17,3342 34751 CAF FOUR # (ALWAYS DO THIS FOR P-AXIS) 062673,000163: 17,3343 13347 TCF TJCALC 062674,000164: 17,3344 11500 SENSTEST CCS SENSETYP # DOES TRANSLATION PREFER MIN JETS. 062675,000165: 17,3345 13347 TCF TJCALC # YES. USE MIN-JET PARAMETERS 062676,000166: 17,3346 13340 TCF MAXJETS # NO. GET THE MAX-JET PARAMETERS. 062677,000167: 17,3347 55743 TJCALC TS NUMBERT # SET TO +0,1,4 FOR (U,V-AXES) JET SELECT. 062678,000168: 062679,000169: # BEGINNING OF TJET CALCULATIONS: 062680,000170: 062681,000171: 17,3350 41737 CS EDOTSQ # SCALED AT PI(2)/2(8). 062682,000172: 17,3351 00006 EXTEND 062683,000173: 17,3352 51744 INDEX ADRSDIF2 062684,000174: 17,3353 71567 MP 1/ANET1 # .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN. 062685,000175: 17,3354 51746 INDEX ADRSDIF1 062686,000176: 17,3355 61601 AD FIREDB # DEADBAND SCALED AT PI/4 RADIAN. 062687,000177: 17,3356 00006 EXTEND 062688,000178: 17,3357 61752 SU E # ATTITUDE ERROR SCALED AT PI/4 RADIAN. 062689,000179: 17,3360 55741 TS FIREFCT # -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN. 062690,000180: 17,3361 00006 EXTEND 062691,000181: 17,3362 63542 BZMF ZON1,2,3 062692,000182: 062693,000183: 17,3363 51746 ZONE4,5 INDEX ADRSDIF1 062694,000184: 17,3364 31573 CAE 1/ACOAST # .5/ACC SCALED AT 2(6)/PI WHERE 062695,000185: # Page 1463 062696,000186: 17,3365 00006 EXTEND # ACC = MAX(AMIN, AOS-). 062697,000187: 17,3366 71737 MP EDOTSQ # SCALED AT PI/2(8). 062698,000188: 17,3367 61752 AD E # SCALED AT PI/4 062699,000189: 17,3370 51746 INDEX ADRSDIF1 062700,000190: 17,3371 61603 AD COASTDB # SCALED AT PI/4 POS. FOR NEG. INTERCEPT. 062701,000191: 17,3372 00006 EXTEND # TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN. 062702,000192: 17,3373 63426 BZMF ZONE5 # IF FUNCTION NEGATIVE, FIND TJET. 062703,000193: # IF FUNCTION POSITIVE, IN ZONE 4. 062704,000194: 062705,000195: # ZONE 4 IS THE COAST REGION. HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD 062706,000196: # A. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR 062707,000197: # B. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT 062708,000198: # THEN THE THRUSTERS ARE KEPT ON. 062709,000199: 062710,000200: 17,3374 51505 ZONE4 INDEX AXISCTR # IS THE CURRENT VALUE IN TJET NON-ZERO 062711,000201: 17,3375 41525 CS TJETU # WITH SENSE OPPOSITE TO EDOT, 062712,000202: 17,3376 00006 EXTEND # (I.E., ARE JETS ON AND FIRING TOWARD 062713,000203: 17,3377 71740 MP ROTSENSE # THE DESIRABLE STATE). 062714,000204: 17,3400 00006 EXTEND 062715,000205: 17,3401 63422 BZMF COASTTJ # NO. COAST. 062716,000206: 062717,000207: 17,3402 11555 JETSON CCS FLAT # YES. IS THIS DRIFTING OR POWERED FLIGHT? 062718,000208: 17,3403 13414 TCF DRIFT/ON # DRIFTING. GO MAKE FURTHER TEST. 062719,000209: 062720,000210: 17,3404 41741 CS FIREFCT # POWERED (OR ULLAGE). CAN TARGET PARABOLA 062721,000211: 17,3405 51746 INDEX ADRSDIF1 # BE REACHED FROM THIS POINT IN THE 062722,000212: 17,3406 61605 AD AXISDIST # PHASE PLANE? 062723,000213: 17,3407 00006 EXTEND 062724,000214: 17,3410 63422 BZMF COASTTJ # NO. SET TJET = 0. 062725,000215: 17,3411 03526 TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 1 062726,000216: 17,3412 31741 CAE FIREFCT # AFTER COMPUTING THE REQUIRED 062727,000217: 17,3413 13562 TCF ZONE1 # PARAMETERS. 062728,000218: 062729,000219: 17,3414 51746 DRIFT/ON INDEX ADRSDIF1 # CAN TARGET STRIP OF AXIS BE REACHED FROM 062730,000220: 17,3415 41601 CS FIREDB # THIS POINT IN THE PHASE PLANE? 062731,000221: 17,3416 60000 DOUBLE 062732,000222: 17,3417 61741 AD FIREFCT 062733,000223: 17,3420 00006 EXTEND 062734,000224: 17,3421 63424 BZMF +3 062735,000225: 17,3422 34755 COASTTJ CAF ZERO # NO. SET TJET = 0. 062736,000226: 17,3423 13466 TCF RETURNTJ 062737,000227: 062738,000228: 17,3424 03526 TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 2 062739,000229: 17,3425 13547 TCF ZONE2,3 # OR 3 AFTER COMPUTING REQUIRED VALUES. 062740,000230: 062741,000231: 17,3426 54001 ZONE5 TS L # TEMPORARILY STORE FUNCTION IN L. 062742,000232: 17,3427 11740 CCS ROTSENSE # MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2 062743,000233: 17,3430 13434 TCF +4 # AND ACCFCTZ5, WHICH MUST BE PICKED UP 062744,000234: 17,3431 05705 TC CCSHOLE # FROM THE NEXT LOWER REGISTER IF THE 062745,000235: 17,3432 44752 CS TWO # (ACTUAL) ERROR RATE IS NEGATIVE. 062746,000236: # Page 1464 062747,000237: 17,3433 27744 ADS ADRSDIF2 062748,000238: 062749,000239: 17,3434 30001 +4 CAE L 062750,000240: 17,3435 00006 EXTEND 062751,000241: 17,3436 51744 INDEX ADRSDIF2 # TTOAXIS AND HH ARE THE PARAMETERS UPON 062752,000242: 17,3437 71576 MP ACCFCTZ5 # WHICH THE APPROXIMATIONS TO TJET ARE 062753,000243: 17,3440 20001 DDOUBL # ABASED. 062754,000244: 17,3441 20001 DDOUBL 062755,000245: 17,3442 53750 DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2). 062756,000246: 17,3443 51744 INDEX ADRSDIF2 062757,000247: 17,3444 31570 CAE 1/ANET2 # SCALED AT 2(7)/PI SEC(2)/RAD. 062758,000248: 17,3445 00006 EXTEND 062759,000249: 17,3446 71427 MP EDOT # SCALED AT PI/2(5) 062760,000250: 17,3447 55742 TS TTOAXIS # SCALED AT 4 SEC. 062761,000251: 062762,000252: # TEST WHETHER TJET GREATER THAN 50 MSEC. 062763,000253: 062764,000254: 17,3450 00006 EXTEND 062765,000255: 17,3451 73734 MP -.05AT2 # H - .05 TTOAXIS - .00125 G.T. ZERO 062766,000256: 17,3452 61747 AD HH # (SCALED AT 8 SEC(2) ). 062767,000257: 17,3453 67746 AD NEG2 062768,000258: 17,3454 00006 EXTEND 062769,000259: 17,3455 63503 BZMF FORMULA1 062770,000260: 062771,000261: # TEST WHETHER TJET GREATER THAN 150 MSEC. 062772,000262: 062773,000263: 17,3456 31742 CAE TTOAXIS 062774,000264: 17,3457 00006 EXTEND 062775,000265: 17,3460 73735 MP -.15AT2 # H - .15 TTOAXIS - .01125 G.T. ZERO 062776,000266: 17,3461 61747 AD HH # (SCALED AT 8 SEC(2) ) 062777,000267: 17,3462 63726 AD -.0112A8 062778,000268: 17,3463 00006 EXTEND 062779,000269: 17,3464 63513 BZMF FORMULA2 062780,000270: 062781,000271: # IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS 062782,000272: # IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC). 062783,000273: 062784,000274: 17,3465 34741 FULLTIME CAF BIT11 # 250 MSEC SCALED AT 4 SEC. 062785,000275: 062786,000276: # RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED. 062787,000277: 062788,000278: 17,3466 00006 RETURNTJ EXTEND # ALL BRANCHES TERMINATE HERE WITH TJET 062789,000279: 17,3467 71740 MP ROTSENSE # (SCALED AT 4 SEC) IN THE ACCUMULATOR. 062790,000280: 17,3470 51505 INDEX AXISCTR # ROTSENSE APPLIES SIGN AND CHANGES SCALE. 062791,000281: 17,3471 55525 TS TJETU 062792,000282: 17,3472 00006 EXTEND 062793,000283: 17,3473 51505 INDEX AXISCTR 062794,000284: 17,3474 71547 MP ACCSWU # SET SWITCH FOR JET SELECT IF ROTATION IS 062795,000285: 17,3475 30001 CAE L 062796,000286: 17,3476 00006 EXTEND # IN A SENSE FOR WHICH 1/ACCS HAS FORCED 062797,000287: 17,3477 63502 BZMF +3 # A MAX-JET CALCULATION. 062798,000288: 17,3500 34751 CAF FOUR 062799,000289: # Page 1465 062800,000290: 17,3501 55743 TS NUMBERT 062801,000291: 17,3502 01745 TC HOLDQ # RETURN VIA SAVED Q. 062802,000292: 062803,000293: # TJET = H/(.025 + TTOAXIS) FOR TJET LESS THAN 50 MSEC. 062804,000294: 062805,000295: 17,3503 43733 FORMULA1 CS -.025AT4 # .025 SEC SCALED AT 4. 062806,000296: 17,3504 61742 AD TTOAXIS # SCALED AT 4 SECONDS. 062807,000297: 17,3505 53750 DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H, 062808,000298: 17,3506 00006 EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP 062809,000299: 17,3507 11747 DV HH # DP H AND DIVIDE BY DENOMINATOR. 062810,000300: 17,3510 00006 EXTEND 062811,000301: 17,3511 74736 MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC. 062812,000302: 17,3512 13623 TCF CHKMINTJ # CHECK THAT TJET IS NOT LESS THAN MINIMUM 062813,000303: 062814,000304: # TJET = (H + .00375)/(0.1 + TTOAXIS) FOR TJET GREATER THAN 50 MSEC. 062815,000305: 062816,000306: 17,3513 00006 FORMULA2 EXTEND 062817,000307: 17,3514 33737 DCA .00375A8 # .00375 SEC(2) SCALED AT 8. 062818,000308: 17,3515 21750 DAS HH # STORE NUMERATOR IN DP H, WHICH NEED NOT 062819,000309: # BE PRESERVED. 062820,000310: 17,3516 31742 CAE TTOAXIS # SCALED AT 4 SEC. 062821,000311: 17,3517 63727 AD .1AT4 # 0.1 SEC SCALED AT 4. 062822,000312: 17,3520 53750 DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H, 062823,000313: 17,3521 00006 EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP 062824,000314: 17,3522 11747 DV HH # DP NUMERATOR AND DIVIDE BY DENOMINATOR 062825,000315: 17,3523 00006 EXTEND 062826,000316: 17,3524 74736 MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC. 062827,000317: 17,3525 13466 TCF RETURNTJ # END SUBROUTINE. 062828,000318: 062829,000319: # SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3. 062830,000320: # REACHED BY TC FROM 3 POINTS IN TJETLAW. 062831,000321: 062832,000322: 17,3526 41740 Z123COMP CS ROTSENSE # USED IN RETURNTJ SECTION TO RESCALE TJET 062833,000323: 17,3527 55740 TS ROTSENSE # AS TIME6 AND GIVE IT PROPER SIGN. 062834,000324: 17,3530 31427 CAE EDOT # SCALED AT PI/2(5) RAD/SEC. 062835,000325: 17,3531 00006 EXTEND 062836,000326: 17,3532 51744 INDEX ADRSDIF2 062837,000327: 17,3533 71567 MP 1/ANET1 # SCALED AT 2(7)/PI SEC(2)/RAD. 062838,000328: 17,3534 55742 TS TTOAXIS # STORE TIME-TO-AXIS SCALED AT 4 SECONDS. 062839,000329: 17,3535 63740 AD -TJMAX 062840,000330: 17,3536 00006 EXTEND # IS TIME TO AXIS LESS THAN 150 MSEC. 062841,000331: 17,3537 63541 BZMF +2 062842,000332: 17,3540 13465 TCF FULLTIME # NO. FIRE JETS, DO NOT CALCULATE TJET. 062843,000333: 17,3541 00002 RETURN # YES. GO ON TO FIND TJET 062844,000334: 062845,000335: 17,3542 03526 ZON1,2,3 TC Z123COMP # SUBROUTINIZED PREPARATION FOR ZONE1,2,3. 062846,000336: 062847,000337: # IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL 062848,000338: # LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE. DURING POWERED FLIGHT 062849,000339: # Page 1466 062850,000340: # OR ULLAGE, FLAT = 0 062851,000341: 062852,000342: 17,3543 31741 CAE FIREFCT # SCALED AT PI/4 RAD. 062853,000343: 17,3544 61555 AD FLAT 062854,000344: 17,3545 00006 EXTEND 062855,000345: 17,3546 63562 BZMF ZONE1 # NOT IN SPECIAL ZONES. 062856,000346: 062857,000347: # FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE. IF ON AXIS, COAST. 062858,000348: 062859,000349: 17,3547 41556 ZONE2,3 CS ZONE3LIM # HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS 062860,000350: 17,3550 61742 AD TTOAXIS # 35 MSEC IN DRIFTING FLIGHT 062861,000351: 17,3551 00006 EXTEND # ZERO WHEN TRYING TO ENTER GTS CONTROL. 062862,000352: 17,3552 63555 BZMF ZONE3 062863,000353: 17,3553 31742 ZONE2 CAE TTOAXIS # FIRE TO AXIS. 062864,000354: 17,3554 13466 TCF RETURNTJ 062865,000355: 17,3555 11427 ZONE3 CCS EDOT # CHECK IF EDOT IS ZERO. 062866,000356: 17,3556 34746 CAF BIT6 # FIRE A ONE-JET MINIMUM IMPULSE. 062867,000357: 17,3557 13466 TCF RETURNTJ # TJET = +0. 062868,000358: 17,3560 05705 TC CCSHOLE # CANNOT BE BECAUSE NEG EDOT COMPLEMENTED. 062869,000359: 17,3561 13466 TCF RETURNTJ # TJET = +0. 062870,000360: 062871,000361: 17,3562 00006 ZONE1 EXTEND 062872,000362: 17,3563 51746 INDEX ADRSDIF1 062873,000363: 17,3564 61605 SU AXISDIST # SCALED AT PI/4 RAD. 062874,000364: 17,3565 00006 EXTEND 062875,000365: 17,3566 51744 INDEX ADRSDIF2 062876,000366: 17,3567 71575 MP ACCFCTZ1 # SCALED AT 2(7)/PI SEC(2)/RAD. 062877,000367: 17,3570 20001 DDOUBL 062878,000368: 17,3571 20001 DDOUBL 062879,000369: 17,3572 53750 DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2). 062880,000370: 062881,000371: # TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC: 062882,000372: # 2 2 062883,000373: # IS .5(.150 - TTOAXIS) - H NEGATIVE (SCALED AT 8 SECONDS ) 062884,000374: 062885,000375: 17,3573 31742 CAE TTOAXIS # TTOAXIS SCALED AT 4 SECONDS. 062886,000376: 17,3574 63740 AD -TJMAX # -.150 SECOND SCALED AT 4. 062887,000377: 17,3575 00006 EXTEND 062888,000378: 17,3576 70000 SQUARE 062889,000379: 17,3577 00006 EXTEND 062890,000380: 17,3600 61747 SU HH # HIGH WORD OF H SCALED AT 8 SEC(2). 062891,000381: 17,3601 00006 EXTEND 062892,000382: 17,3602 63465 BZMF FULLTIME # YES. NEED NOT CALCULATE TJET. 062893,000383: 062894,000384: # TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE. 062895,000385: 062896,000386: 17,3603 31747 CAE HH 062897,000387: 17,3604 67746 AD NEG2 062898,000388: 17,3605 00006 EXTEND 062899,000389: 17,3606 63616 BZMF FORMULA3 062900,000390: 062901,000391: # Page 1467 062902,000392: # TJET = H/0.1 + TTOAXIS + .0375 FOR APPROXIMATION OVER MORE THAN 50 MSEC. 062903,000393: 062904,000394: 17,3607 33730 CAF .1AT2 # STORE .1 SEC SCALED AT 2 FOR DIVISION. 062905,000395: 17,3610 53750 DXCH HH # DP H SCALED AT 8 SEC(2) NEED NOT BE 062906,000396: 17,3611 00006 EXTEND # PRESERVED. 062907,000397: 17,3612 11747 DV HH # QUOTIENT SCALED AT 4 SECONDS. 062908,000398: 17,3613 61742 AD TTOAXIS # SCALED AT 4 SEC. 062909,000399: 17,3614 63731 AD .0375AT4 # .0375 SEC SCALED AT 4. 062910,000400: 17,3615 13466 TCF RETURNTJ # END COMPUTATION. 062911,000401: 062912,000402: # TJET - H/.O25 + TTOAXIS FOR APPROXIMATION OVER LESS THAN 50 MSEC. 062913,000403: 062914,000404: 17,3616 43732 FORMULA3 CS -.025AT2 # STORE +.25 SEC SCALED AT 2 FOR DIVISION 062915,000405: 17,3617 53750 DXCH HH # PICK UP DP H AT 8, WHICH NEED NOT BE 062916,000406: 17,3620 00006 EXTEND # PRESERVED. 062917,000407: 17,3621 11747 DV HH # QUOTIENT SCALED AT 4 SECONDS. 062918,000408: 17,3622 61742 AD TTOAXIS # SCALED AT 4 SEC. 062919,000409: 062920,000410: # IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO. 062921,000411: # MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY. 062922,000412: 062923,000413: 17,3623 63742 CHKMINTJ AD -TJMIN # IS COMPUTED TIME LESS THAN THE MINIMUM. 062924,000414: 17,3624 00006 EXTEND 062925,000415: 17,3625 63422 BZMF COASTTJ # YES, SET TIME TO ZERO. 062926,000416: 17,3626 63741 AD TJMIN # NO, RESTORE COMPUTED TIME. 062927,000417: 17,3627 13466 TCF RETURNTJ # END COMPUTATION. 062928,000418: 062929,000419: # Page 1468 062930,000420: # *** ROUGHLAW *** 062931,000421: 062932,000422: # BEFORE ENTRY TO RUFLAW: 062933,000423: # 1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT. 062934,000424: # 2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE. 062935,000425: # 3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC. 062936,000426: # (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4) 062937,000427: 062938,000428: # RUFLAW1: ERROR MORE NEGATIVE THAN PI/16 RAD. FIRE TO A RATE OF 6.5 DEG/SEC (IF JET TIME EXCEEDS 20 MSEC.). 062939,000429: # RUFLAW2: ERROR MORE POSITIVE THAN PI/16 RAD. FIRE TO AN OPPOSING RATE OF 6.5 DEG/SEC. 062940,000430: # RUFLAW3: ERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS. COAST IF BELOW FIREFCT, FIRE IF ABOVE 062941,000431: 062942,000432: 17,3630 43743 RUFLAW1 CS RUFRATE # DECREMENT EDOT BY .1444 RAD/SEC AT PI/4 062943,000433: 17,3631 27427 ADS EDOT # WHICH IS THE TARGET RATE 062944,000434: 17,3632 00006 EXTEND 062945,000435: 17,3633 63654 BZMF SMALRATE # BRANCH IF RATE LESS THAN TARGET. 062946,000436: 17,3634 03712 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS. 062947,000437: 17,3635 31427 CAE EDOT # PICK UP DESIRED RATE CHANGE. 062948,000438: 062949,000439: 17,3636 00006 RUFLAW12 EXTEND # COMPUTE TJET 062950,000440: 17,3637 51744 INDEX ADRSDIF2 # = (DESIRED RATE CHANGE)/(2-JET ACCEL.) 062951,000441: 17,3640 71571 MP 1/ANET1 +2 062952,000442: 17,3641 67741 AD -1/8 # IF TJET, SCALED AT 32 SEC, EXCEEDS 062953,000443: 17,3642 00006 EXTEND # 4 SECONDS, SET TJET TO TJMAX. 062954,000444: 17,3643 63645 BZMF +2 062955,000445: 17,3644 13465 TCF FULLTIME 062956,000446: 17,3645 00006 EXTEND 062957,000447: 17,3646 13465 BZF FULLTIME 062958,000448: 17,3647 64740 AD BIT12 # RESTORE COMPUTED TJET TO ACCUMULATOR 062959,000449: 17,3650 20001 DAS A 062960,000450: 17,3651 20001 DAS A 062961,000451: 17,3652 20001 DAS A # RESCALED TJET AT 4 SECONDS. 062962,000452: 17,3653 13623 TCF CHKMINTJ # RETURN AS FROM FINELAW. 062963,000453: 062964,000454: 17,3654 03714 SMALRATE TC RUFSETUP +2 # SET NUMBERT AND FIREFCT FOR MAXIMUM JETS 062965,000455: 17,3655 11740 CCS ROTSENSE 062966,000456: 17,3656 34753 CAF ONE # MODIFY INDEXER TO POINT TO 1/ANET 062967,000457: 17,3657 13661 TCF +2 # CORRESPONDING TO THE PROPER SENSE. 062968,000458: 17,3660 37747 CAF NEGONE 062969,000459: 17,3661 27744 ADS ADRSDIF2 062970,000460: 062971,000461: 17,3662 41427 CS EDOT # (.144 AT PI/4 - EDOT) = DESIRED RATE CHNG. 062972,000462: 17,3663 13636 TCF RUFLAW12 062973,000463: 062974,000464: 17,3664 03712 RUFLAW2 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS. 062975,000465: 17,3665 33743 CAF RUFRATE 062976,000466: 17,3666 61427 AD EDOT # (.144 AT PI/4 + EDOT) = DESIRED RATE CHNG. 062977,000467: 17,3667 54000 TS A # IF OVERFLOW SKIP, FIRE FOR FULL TIME. 062978,000468: 17,3670 13636 TCF RUFLAW12 # OTHERWISE, COMPUTE JET TIME. 062979,000469: 17,3671 13465 TCF FULLTIME 062980,000470: 062981,000471: # Page 1469 062982,000472: 17,3672 03712 RUFLAW3 TC RUFSETUP # EXECUTE COMMON RUFLAW SUBROUTINE. 062983,000473: 17,3673 51746 INDEX ADRSDIF1 062984,000474: 17,3674 41601 CS FIREDB # CALCULATE DISTANCE FROM SWITCH CURVE 062985,000475: 17,3675 61752 AD E # 1/ANET1*EDOT*EDOT +E - FIREDB = 0 062986,000476: 17,3676 00006 EXTEND # SCALED AT 4 PI RADIANS 062987,000477: 17,3677 74741 MP BIT11 062988,000478: 17,3700 57427 XCH EDOT 062989,000479: 17,3701 00006 EXTEND 062990,000480: 17,3702 70000 SQUARE 062991,000481: 17,3703 00006 EXTEND 062992,000482: 17,3704 51746 INDEX ADRSDIF1 062993,000483: 17,3705 71571 MP 1/ANET1 +2 062994,000484: 17,3706 61427 AD EDOT 062995,000485: 17,3707 00006 EXTEND 062996,000486: 17,3710 63422 BZMF COASTTJ # COAST IF BELOW IT. 062997,000487: 17,3711 13465 TCF FULLTIME # FIRE FOR FULL PERIOD IF ABOVE IT. 062998,000488: 062999,000489: # SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW. 063000,000490: 063001,000491: 17,3712 41740 RUFSETUP CS ROTSENSE # REVERSE ROTSENSE WHEN ENTER HERE. 063002,000492: 17,3713 55740 TS ROTSENSE 063003,000493: 17,3714 34751 +2 CAF FOUR # REQUIRE MAXIMUM (2) JETS IN U,V-AXES. 063004,000494: 17,3715 55743 TS NUMBERT 063005,000495: 17,3716 34735 CAF NEGMAX # SUGGEST MAXIMUM (4) JETS IN P-AXIS. 063006,000496: 17,3717 55741 TS FIREFCT 063007,000497: 17,3720 00002 TC Q 063008,000498: 063009,000499: # CONSTANTS FOR TJETLAW 063010,000500: 063011,000501: 17,3721 77757 DEC -16 B-14 # AXISDIFF(INDEX) = NUMBER OF REGISTERS 063012,000502: 17,3722 00000 AXISDIFF DEC +0 B-14 # BETWEEN STORED 1/ACCS PARAMETERS FOR 063013,000503: 17,3723 00020 DEC 16 B-14 # THE INDEXED AXIS AND THE U-AXIS. 063014,000504: 17,3724 14400 SENSOR OCT 14400 # RATIO OF TJET SCALING WITHIN TJETLAW 063015,000505: # (4 SEC) TO SCALING FOR T6 (10.24 SEC). 063016,000506: 17,3725 75673 -3DEG DEC -.06667 # -3.0 DEGREES SCALED AT 45. 063017,000507: 17,3726 77750 -.0112A8 DEC -.00141 # -.01125 SEC(2) SCALED AT 8. 063018,000508: 17,3727 00632 .1AT4 DEC .025 # 0.1 SECOND SCALED AT 4. 063019,000509: 17,3730 01463 .1AT2 DEC .05 # .1 SEC SCALED AT 2. 063020,000510: 17,3731 00232 .0375AT4 DEC .00938 # .0375 SEC SCALED AT 4. 063021,000511: 17,3732 77462 -.025AT2 DEC -.0125 # -.025 SEC SCALED AT 2. 063022,000512: 17,3733 77631 -.025AT4 DEC -.00625 063023,000513: 17,3734 77145 -.05AT2 DEC -.025 063024,000514: 17,3735 75462 -.15AT2 DEC -.075 063025,000515: 17,3736 00007 25605 .00375A8 2DEC .00375 B-3 063026,000516: 063027,000517: 17,3740 76631 -TJMAX DEC -.0375 # LARGEST CALCULATED TIME. .150 SEC AT 4. 063028,000518: 17,3741 00122 TJMIN DEC .005 # SMALLEST ALLOWABLE TIME. .020 SEC AT 4. 063029,000519: 17,3742 77655 -TJMIN DEC -.005 063030,000520: 17,3743 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