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