Source Code

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