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