Source Code

These source-code files are part of a reconstructed copy of Luminary 96, the original release of the Apollo 11 Lunar Module (LM) Apollo Guidance Computer (AGC) software.

The reconstruction began with reconstructed source code for Luminary 97. Changes between revisions 96 and 97 were backed out, as described by anomal report LNY-59. transcribed from a digitized copy of that program. The reconstruction was verified by matching memory-bank checksums to those listed in drawing 2021152D. Note that page numbers in the reconstructed code match those on the Luminary 099 revision 001 printout, although the added code would likely have changed page numbers for a real Luminary 96 listing.

Comments from the original source code are prefixed with a single '#' symbol, whereas comments added later are prefixed by "##" or "###". Report any errors noted by creating an issue report at the Virtual AGC project's GitHub repository.

061568,000002:                                                                                                  ## Copyright:   Public domain.
061569,000003:                                                                                                  ## Filename:    TJET_LAW.agc
061570,000004:                                                                                                  ## Purpose:     A section of Luminary revision 96.
061571,000005:                                                                                                  ##              It is part of the reconstructed source code for the
061572,000006:                                                                                                  ##              original release of the flight software for the Lunar 
061573,000007:                                                                                                  ##              Module's (LM) Apollo Guidance Computer (AGC) for Apollo 11.
061574,000008:                                                                                                  ##              The code has been recreated from a previously reconstructed
061575,000009:                                                                                                  ##              copy of Luminary 97 by undoing changes described in anomaly
061576,000010:                                                                                                  ##              report LNY-59. The code has been adapted such that the
061577,000011:                                                                                                  ##              resulting bugger words exactly match those specified for
061578,000012:                                                                                                  ##              Luminary 96 in NASA drawing 2021152D, which gives relatively
061579,000013:                                                                                                  ##              high confidence that the reconstruction is correct.
061580,000014:                                                                                                  ## Reference:   pp. 1460-1469
061581,000015:                                                                                                  ## Assembler:   yaYUL
061582,000016:                                                                                                  ## Contact:     Ron Burkey <info@sandroid.org>.
061583,000017:                                                                                                  ## Website:     www.ibiblio.org/apollo/index.html
061584,000018:                                                                                                  ## Mod history: 2019-08-04 MAS  Created from Luminary 97.
061585,000019: 

Page 1460

061587,000021:                                                                                                  #  PROGRAM DESCRIPTION
061588,000022:                                                                                                  #  DESIGNED BY:  R. D. GOSS AND P. S. WEISSMAN
061589,000023:                                                                                                  #  CODED BY:  P. S. WEISSMAN 28 FEBRUARY 1968
061590,000024: 
061591,000025:                                                                                                  #  TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR
061592,000026:                                                                                                  #  ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR:
061593,000027:                                                                                                  #        -1      INDICATES THE P-AXIS
061594,000028:                                                                                                  #        +0      INDICATES THE U-AXIS
061595,000029:                                                                                                  #        +1      INDICATES THE V-AXIS.
061596,000030:                                                                                                  #  THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER
061597,000031:                                                                                                  #  UNBALANCED COUPLES ARE PREFERRED.  TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE
061598,000032:                                                                                                  #  COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY
061599,000033:                                                                                                  #  ACCESSED BY INDEXING.
061600,000034: 
061601,000035:                                                                                                  #  THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST
061602,000036:                                                                                                  #  PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU OR TJV).  THE NUMBER OF JETS THAT
061603,000037:                                                                                                  #  TJETLAW ASSUMES WILL BE USED IS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS.  TWO JETS ARE ALWAYS
061604,000038:                                                                                                  #  ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES
061605,000039:                                                                                                  #  (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR.
061606,000040: 
061607,000041:                                                                                                  #  IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE
061608,000042:                                                                                                  #  ERROR AND/OR ERROR RATE ARE LARGE.
061609,000043: 
061610,000044:                                                                                                  #  CALLING SEQUENCE:
061611,000045:                                                                                                  #                TC      TJETLAW         (MUST BE IN JASK)
061612,000046:                                                                                                  #        OR
061613,000047:                                                                                                  #                INHINT                  (MUST BE IN JASK)
061614,000048:                                                                                                  #                TC      IBNKCALL
061615,000049:                                                                                                  #                CADR    TJETLAW
061616,000050:                                                                                                  #                RELINT
061617,000051: 
061618,000052:                                                                                                  #  EXIT:         RETURN TO Q.
061619,000053: 
061620,000054:                                                                                                  #  INPUT:
061621,000055:                                                                                                  #        FROM THE CALLER:  E, EDOT, AXISCTR, SENSETYP, TJP, -U, -V.
061622,000056:                                                                                                  #        FROM 1/ACCONT:  48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU, -V).
061623,000057: 
061624,000058:                                                                                                  #  OUTPUT:
061625,000059:                                                                                                  #        TJP, -U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3).
061626,000060: 
061627,000061:                                                                                                  #  DEBRIS:
061628,000062:                                                                                                  #        A, L, Q, E, EDOT, DAPTEMP1-6, DAPTREG1-4.
061629,000063: 
061630,000064:                                                                                                  #  ALARM:  NONE
061631,000065: 
061632,000066: 17,3252                                           BANK     17                                    
061633,000067: 17,2000                                           SETLOC   DAPS2                                 
061634,000068: 17,2000                                           BANK                                           
061635,000069: 17,3252  E6,1524                                  EBANK=   TJP                                   

Page 1461

061637,000071: 17,3252                                           COUNT*   $$/DAPTJ                              
061638,000072: 
061639,000073: 17,3252           00006        TJETLAW            EXTEND                                         #  SAVE Q FOR RETURN.
061640,000074: 17,3253           23745                           QXCH     HOLDQ                                 
061641,000075: 
061642,000076:                                                                                                  #  SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT
061643,000077: 
061644,000078: 17,3254           51505                           INDEX    AXISCTR                               #  AXISDIFF(-1)=NO OF LOCATIONS BER P AND U
061645,000079: 17,3255           33722                           CAF      AXISDIFF                              #  AXISDIFF(0)=0
061646,000080: 17,3256           55746                           TS       ADRSDIF1                              #  AXISDIFF(+1)=NO OF LOCATIONS BET V AND U
061647,000081: 
061648,000082: 17,3257           31427                           CAE      EDOT                                  #  IF EDOT NEGATIVE, PICK UP SET OF VALUES
061649,000083: 17,3260           00006                           EXTEND                                         #        THAT ALLOW USE OF SAME CODING AS FOR
061650,000084: 17,3261           63266                           BZMF     NEGEDOT                               #        POSITIVE EDOT.
061651,000085: 17,3262           31746                           CAE      ADRSDIF1                              #  SET A SECOND INDEXER WHICH MAY BE
061652,000086: 17,3263           55744                           TS       ADRSDIF2                              #        MODIFIED BY A DECISION FOR MAX JETS.
061653,000087: 17,3264           33724                           CAF      SENSOR                                #  FOR POSITIVE EDOT, ROTSENSE IS
061654,000088: 17,3265           13276                           TCF      SETSENSE                              #        INITIALIZED POSITIVE.
061655,000089: 
061656,000090: 17,3266           41752        NEGEDOT            CS       E                                     #  IN ORDER FOR NEG EDOT CASE TO USE CODING
061657,000091: 17,3267           55752                           TS       E                                     #        OF POS EDOT, MUST MODIFY AS FOLLOWS:
061658,000092: 17,3270           41427                           CS       EDOT                                  #        1. COMPLEMENT E AND EDOT.
061659,000093: 17,3271           55427                           TS       EDOT                                  #        2. SET SENSE OF ROTATION TO NEGATIVE
061660,000094: 17,3272           34753                           CAF      BIT1                                  #           (REVERSED LATER IF NECESSARY).
061661,000095: 17,3273           27746                           ADS      ADRSDIF1                              #        3. INCREMENT INDEXERS BY ONE SO THAT
061662,000096: 17,3274           55744                           TS       ADRSDIF2                              #           THE PROPER PARAMETERS ARE ACCESSED.
061663,000097: 17,3275           43724                           CS       SENSOR                                
061664,000098: 17,3276           55740        SETSENSE           TS       ROTSENSE                              
061665,000099: 
061666,000100:                                                                                                  #  TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS):
061667,000101:                                                                                                  #        IF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE.
061668,000102:                                                                                                  #        IF LESS THAN PI/16 RADIANS, RESCALE TO PI/4.
061669,000103: 
061670,000104: 17,3277           31752                           CAE      E                                     #  PICK UP ATTITUDE ERROR FOR THIS AXIS
061671,000105: 17,3300           00006                           EXTEND                                         
061672,000106: 17,3301           74747                           MP       BIT5                                  #  SHIFT RIGHT TEN BITS:  IF A-REGISTER IS
061673,000107: 17,3302           10000                           CCS      A                                     #        ZERO, RESCALE AND TEST EDOT.
061674,000108: 17,3303           13664                           TCF      RUFLAW2                               
061675,000109: 17,3304           13306                           TCF      SCALEE                                
061676,000110: 17,3305           13630                           TCF      RUFLAW1                               
061677,000111: 17,3306           34737        SCALEE             CAF      BIT13                                 #  ERROR IS IN L SCALED AT PI/16.  RESCALE
061678,000112: 17,3307           00006                           EXTEND                                         #        IT TO PI/4 AND SAVE IT.
061679,000113: 17,3310           70001                           MP       L                                     
061680,000114: 17,3311           55752                           TS       E                                     
061681,000115: 
061682,000116:                                                                                                  #  TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND)
061683,000117:                                                                                                  #        IF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE.
061684,000118:                                                                                                  #        IF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND.
061685,000119: 
061686,000120: 17,3312           31427                           CAE      EDOT                                  #  PICK UP SINGLE-PRECISION ERROR-RATE

Page 1462

061688,000122: 17,3313           00006                           EXTEND                                         #  FOR THIS AXIS=
061689,000123: 17,3314           74750                           MP       BIT4                                  #  SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS
061690,000124: 17,3315           00006                           EXTEND                                         #  ZERO, THEN RESCALE AND USE FINELAW.
061691,000125: 17,3316           13320                           BZF      SCALEDOT                              
061692,000126: 17,3317           13672                           TCF      RUFLAW3                               
061693,000127: 
061694,000128:                                                                                                  #  *** FINELAW STARTS HERE ***
061695,000129: 
061696,000130: 17,3320           23427        SCALEDOT           LXCH     EDOT                                  #  EDOT IS SCALED AT PI/32 RADIANS/SECOND.
061697,000131: 
061698,000132: 17,3321           31427                           CAE      EDOT                                  #  COMPUTE (EDOT)(EDOT)
061699,000133: 17,3322           00006                           EXTEND                                         
061700,000134: 17,3323           70000                           SQUARE                                         #  PRODUCT SCALED AT PI(2)/2(10) RAD/SEC.
061701,000135: 17,3324           00006                           EXTEND                                         
061702,000136: 17,3325           74737                           MP       BIT13                                 #  SHIFT RIGHT TWO BITS TO RESCALE EDOTSQ
061703,000137: 17,3326           55737                           TS       EDOTSQ                                #        TO PI(2)/2(8) RAD(2)/SEC(2).
061704,000138: 
061705,000139: 17,3327           11752        ERRTEST            CCS      E                                     #  DOES BIG ERROR (THREE DEG BEYOND THE
061706,000140: 17,3330           63725                           AD       -3DEG                                 #  DEADBAND) REQUIRE MAXIMUM JETS?
061707,000141: 17,3331           13333                           TCF      +2                                    
061708,000142: 17,3332           63725                           AD       -3DEG                                 
061709,000143: 17,3333           00006                           EXTEND                                         
061710,000144: 17,3334           51746                           INDEX    ADRSDIF1                              
061711,000145: 17,3335           61601                           SU       FIREDB                                
061712,000146: 17,3336           00006                           EXTEND                                         
061713,000147: 17,3337           63344                           BZMF     SENSTEST                              #  IF NOT:  ARE UNBALANCED JETS PREFERRED|
061714,000148: 17,3340           34752        MAXJETS            CAF      TWO                                   #  IF YES:  INCREMENT ADDRESS LOCATOR AND
061715,000149: 17,3341           27744                           ADS      ADRSDIF2                              #           SET SWITCH FOR JET SELECT LOGIC TO 4.
061716,000150: 17,3342           34751                           CAF      FOUR                                  #           (ALWAYS DO THIS FOR P-AXIS)
061717,000151: 17,3343           13347                           TCF      TJCALC                                
061718,000152: 17,3344           11500        SENSTEST           CCS      SENSETYP                              #  DOES TRANSLATION PREFER MIN JETS.
061719,000153: 17,3345           13347                           TCF      TJCALC                                #  YES.  USE MIN-JET PARAMETERS.
061720,000154: 17,3346           13340                           TCF      MAXJETS                               #  NO.  GET MAX-JET PARAMETERS.
061721,000155: 17,3347           55743        TJCALC             TS       NUMBERT                               #  SET TO +0,1,4 FOR (U,V-AXES) JET SELECT.
061722,000156: 
061723,000157:                                                                                                  #  BEGINNING OF TJET CALCULATIONS:
061724,000158: 
061725,000159: 17,3350           41737                           CS       EDOTSQ                                #  SCALED AT PI(2)/2(8).
061726,000160: 17,3351           00006                           EXTEND                                         
061727,000161: 17,3352           51744                           INDEX    ADRSDIF2                              
061728,000162: 17,3353           71567                           MP       1/ANET1                               #  .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN.
061729,000163: 17,3354           51746                           INDEX    ADRSDIF1                              
061730,000164: 17,3355           61601                           AD       FIREDB                                #  DEADBAND SCALED AT PI/4 RADIAN.
061731,000165: 17,3356           00006                           EXTEND                                         
061732,000166: 17,3357           61752                           SU       E                                     #  ATTITUDE ERROR SCALED AT PI/4 RADIAN.
061733,000167: 17,3360           55741                           TS       FIREFCT                               #  -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN.
061734,000168: 17,3361           00006                           EXTEND                                         
061735,000169: 17,3362           63542                           BZMF     ZON1,2,3                              
061736,000170: 
061737,000171: 17,3363           51746        ZONE4,5            INDEX    ADRSDIF1                              
061738,000172: 17,3364           31573                           CAE      1/ACOAST                              #  .5/ACC SCALED AT 2(6)/PI WHERE

Page 1463

061740,000174: 17,3365           00006                           EXTEND                                         #  ACC = MAX(AMIN, AOS-).
061741,000175: 17,3366           71737                           MP       EDOTSQ                                #  SCALED AT PI/2(8).
061742,000176: 17,3367           61752                           AD       E                                     #  SCALED AT PI/4
061743,000177: 17,3370           51746                           INDEX    ADRSDIF1                              
061744,000178: 17,3371           61603                           AD       COASTDB                               #  SCALED AT PI/4 POS. FOR NEG. INTERCEPT.
061745,000179: 17,3372           00006                           EXTEND                                         #  TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN.
061746,000180: 17,3373           63426                           BZMF     ZONE5                                 #  IF FUNCTION NEGATIVE, FIND TJET.
061747,000181:                                                                                                  #  IF FUNCTION POSITIVE, IN ZONE 4.
061748,000182: 
061749,000183:                                                                                                  #  ZONE 4 IS THE COAST REGION.  HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD
061750,000184:                                                                                                  #        A. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR
061751,000185:                                                                                                  #        B. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT
061752,000186:                                                                                                  #  THEN THE THRUSTERS ARE KEPT ON.
061753,000187: 
061754,000188: 17,3374           51505        ZONE4              INDEX    AXISCTR                               #  IS THE CURRENT VALUE IN TJET NON-ZERO
061755,000189: 17,3375           41525                           CS       TJETU                                 #        WITH SENSE OPPOSITE TO EDOT,
061756,000190: 17,3376           00006                           EXTEND                                         #        (I.E., ARE JETS ON AND FIRING TOWARD
061757,000191: 17,3377           71740                           MP       ROTSENSE                              #        THE DESIRABLE STATE).
061758,000192: 17,3400           00006                           EXTEND                                         
061759,000193: 17,3401           63422                           BZMF     COASTTJ                               #  NO.  COAST.
061760,000194: 
061761,000195: 17,3402           11555        JETSON             CCS      FLAT                                  #  YES.  IS THIS DRIFTING OR POWERED FLIGHT|
061762,000196: 17,3403           13414                           TCF      DRIFT/ON                              #  DRIFTING.  GO MAKE FURTHER TEST.
061763,000197: 
061764,000198: 17,3404           41741                           CS       FIREFCT                               #  POWERED (OR ULLAGE).  CAN TARGET PARABOLA
061765,000199: 17,3405           51746                           INDEX    ADRSDIF1                              #        BE REACHED FROM THIS POINT IN THE
061766,000200: 17,3406           61605                           AD       AXISDIST                              #        PHASE PLANE|
061767,000201: 17,3407           00006                           EXTEND                                         
061768,000202: 17,3410           63422                           BZMF     COASTTJ                               #  NO. SET TJET = 0.
061769,000203: 17,3411           03526                           TC       Z123COMP                              #  YES.  CALCULATE TJET AS THOUGH IN ZONE 1
061770,000204: 17,3412           31741                           CAE      FIREFCT                               #        AFTER COMPUTING THE REQUIRED
061771,000205: 17,3413           13562                           TCF      ZONE1                                 #        PARAMETERS.
061772,000206: 
061773,000207: 17,3414           51746        DRIFT/ON           INDEX    ADRSDIF1                              #  CAN TARGET STRIP OF AXIS BE REACHED FROM
061774,000208: 17,3415           41601                           CS       FIREDB                                #        THIS POINT IN THE PHASE PLANE|
061775,000209: 17,3416           60000                           DOUBLE                                         
061776,000210: 17,3417           61741                           AD       FIREFCT                               
061777,000211: 17,3420           00006                           EXTEND                                         
061778,000212: 17,3421           63424                           BZMF     +3                                    
061779,000213: 17,3422           34755        COASTTJ            CAF      ZERO                                  #  NO.  SET TJET = 0.
061780,000214: 17,3423           13466                           TCF      RETURNTJ                              
061781,000215: 
061782,000216: 17,3424           03526                           TC       Z123COMP                              #  YES. CALCULATE TJET AS THOUGH IN ZONE 2
061783,000217: 17,3425           13547                           TCF      ZONE2,3                               #        OR 3 AFTER COMPUTING REQUIRED VALUES.
061784,000218: 
061785,000219: 17,3426           54001        ZONE5              TS       L                                     #  TEMPORARILY STORE FUNCTION IN L.
061786,000220: 17,3427           11740                           CCS      ROTSENSE                              #  MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2
061787,000221: 17,3430           13434                           TCF      +4                                    #  AND ACCFCTZ5, WHICH MUST BE PICKED UP
061788,000222: 17,3431           05705                           TC       CCSHOLE                               #  FROM THE NEXT LOWER REGISTER IF THE
061789,000223: 17,3432           44752                           CS       TWO                                   #  (ACTUAL) ERROR RATE IS NEGATIVE.

Page 1464

061791,000225: 17,3433           27744                           ADS      ADRSDIF2                              
061792,000226: 
061793,000227: 17,3434           30001                 +4        CAE      L                                     
061794,000228: 17,3435           00006                           EXTEND                                         
061795,000229: 17,3436           51744                           INDEX    ADRSDIF2                              #  TTOAXIS AND HH ARE THE PARAMETERS UPON
061796,000230: 17,3437           71576                           MP       ACCFCTZ5                              #        WHICH THE APPROXIMATIONS TO TJET ARE
061797,000231: 17,3440           20001                           DDOUBL                                         #        BASED.
061798,000232: 17,3441           20001                           DDOUBL                                         
061799,000233: 17,3442           53750                           DXCH     HH                                    #  DOUBLE PRECISION H SCALED AT 8 SEC(2).
061800,000234: 17,3443           51744                           INDEX    ADRSDIF2                              
061801,000235: 17,3444           31570                           CAE      1/ANET2                               #  SCALED AT 2(7)/PI SEC(2)/RAD.
061802,000236: 17,3445           00006                           EXTEND                                         
061803,000237: 17,3446           71427                           MP       EDOT                                  #  SCALED AT PI/2(5)
061804,000238: 17,3447           55742                           TS       TTOAXIS                               #  SCALED AT 4 SEC.
061805,000239: 
061806,000240:                                                                                                  #  TEST WHETHER TJET GREATER THAN 50 MSEC.
061807,000241: 
061808,000242: 17,3450           00006                           EXTEND                                         
061809,000243: 17,3451           73734                           MP       -.05AT2                               #  H - .05 TTOAXIS - .00125 G.T. ZERO
061810,000244: 17,3452           61747                           AD       HH                                    #        (SCALED AT 8 SEC(2) ).
061811,000245: 17,3453           67746                           AD       NEG2                                  
061812,000246: 17,3454           00006                           EXTEND                                         
061813,000247: 17,3455           63503                           BZMF     FORMULA1                              
061814,000248: 
061815,000249:                                                                                                  #  TEST WHETHER TJET GREATER THAN 150 MSEC.
061816,000250: 
061817,000251: 17,3456           31742                           CAE      TTOAXIS                               
061818,000252: 17,3457           00006                           EXTEND                                         
061819,000253: 17,3460           73735                           MP       -.15AT2                               #  H - .15 TTOAXIS - .01125 G.T. ZERO
061820,000254: 17,3461           61747                           AD       HH                                    #        (SCALED AT 8 SEC(2) )
061821,000255: 17,3462           63726                           AD       -.0112A8                              
061822,000256: 17,3463           00006                           EXTEND                                         
061823,000257: 17,3464           63513                           BZMF     FORMULA2                              
061824,000258: 
061825,000259:                                                                                                  #  IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS
061826,000260:                                                                                                  #  IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC).
061827,000261: 
061828,000262: 17,3465           34741        FULLTIME           CAF      BIT11                                 #  250 MSEC SCALED AT 4 SEC.
061829,000263: 
061830,000264:                                                                                                  #  RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED.
061831,000265: 
061832,000266: 17,3466           00006        RETURNTJ           EXTEND                                         #  ALL BRANCHES TERMINATE HERE WITH TJET
061833,000267: 17,3467           71740                           MP       ROTSENSE                              #        (SCALED AT 4 SEC) IN THE ACCUMULATOR.
061834,000268: 17,3470           51505                           INDEX    AXISCTR                               #  ROTSENSE APPLIES SIGN AND CHANGES SCALE.
061835,000269: 17,3471           55525                           TS       TJETU                                 
061836,000270: 17,3472           00006                           EXTEND                                         
061837,000271: 17,3473           51505                           INDEX    AXISCTR                               
061838,000272: 17,3474           71547                           MP       ACCSWU                                #  SET SWITCH FOR JET SELECT IF ROTATION IS
061839,000273: 17,3475           30001                           CAE      L                                     
061840,000274: 17,3476           00006                           EXTEND                                         #        IN A SENSE FOR WHICH 1/ACCS HAS FORCED
061841,000275: 17,3477           63502                           BZMF     +3                                    #        A MAX-JET CALCULATION.
061842,000276: 17,3500           34751                           CAF      FOUR                                  

Page 1465

061844,000278: 17,3501           55743                           TS       NUMBERT                               
061845,000279: 17,3502           01745                           TC       HOLDQ                                 #  RETURN VIA SAVED Q.
061846,000280: 
061847,000281:                                                                                                  #  TJET = H/(.025 + TTOAXIS)     FOR TJET LESS THAN 50 MSEC.
061848,000282: 
061849,000283: 17,3503           43733        FORMULA1           CS       -.025AT4                              #  .025 SEC SCALED AT 4.
061850,000284: 17,3504           61742                           AD       TTOAXIS                               #  SCALED AT 4 SECONDS.
061851,000285: 17,3505           53750                           DXCH     HH                                    #  STORE DENOMINATOR IN FIRST WORD OF H,
061852,000286: 17,3506           00006                           EXTEND                                         #        WHICH NEED NOT BE PRESERVED.  PICK UP
061853,000287: 17,3507           11747                           DV       HH                                    #        DP H AND DIVIDE BY DENOMINATOR.
061854,000288: 17,3510           00006                           EXTEND                                         
061855,000289: 17,3511           74736                           MP       BIT14                                 #  RESCALE TJET FROM 2 TO USUAL 4 SEC.
061856,000290: 17,3512           13623                           TCF      CHKMINTJ                              #  CHECK THAT TJET IS NOT LESS THAN MINIMUM
061857,000291: 
061858,000292:                                                                                                  #  TJET = (H + .00375)/(0.1 + TTOAXIS)   FOR TJET GREATER THAN 50 MSEC.
061859,000293: 
061860,000294: 17,3513           00006        FORMULA2           EXTEND                                         
061861,000295: 17,3514           33737                           DCA      .00375A8                              #  .00375 SEC(2) SCALED AT 8.
061862,000296: 17,3515           21750                           DAS      HH                                    #  STORE NUMERATOR IN DP H, WHICH NEED NOT
061863,000297:                                                                                                  #        BE PRESERVED.
061864,000298: 17,3516           31742                           CAE      TTOAXIS                               #  SCALED AT 4 SEC.
061865,000299: 17,3517           63727                           AD       .1AT4                                 #  0.1 SEC SCALED AT 4.
061866,000300: 17,3520           53750                           DXCH     HH                                    #  STORE DENOMINATOR IN FIRST WORD OF H,
061867,000301: 17,3521           00006                           EXTEND                                         #        WHICH NEED NOT BE PRESERVED.  PICK UP
061868,000302: 17,3522           11747                           DV       HH                                    #        DP NUMERATOR AND DIVIDE BY DENOMINATOR
061869,000303: 17,3523           00006                           EXTEND                                         
061870,000304: 17,3524           74736                           MP       BIT14                                 #  RESCALE TJET FROM 2 TO USUAL 4 SEC.
061871,000305: 17,3525           13466                           TCF      RETURNTJ                              #  END SUBROUTINE.
061872,000306: 
061873,000307:                                                                                                  #  SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3.
061874,000308:                                                                                                  #  REACHED BY TC FROM 3 POINTS IN TJETLAW.
061875,000309: 
061876,000310: 17,3526           41740        Z123COMP           CS       ROTSENSE                              #  USED IN RETURNTJ SECTION TO RESCALE TJET
061877,000311: 17,3527           55740                           TS       ROTSENSE                              #        AS TIME6 AND GIVE IT PROPER SIGN.
061878,000312: 17,3530           31427                           CAE      EDOT                                  #  SCALED AT PI/2(5) RAD/SEC.
061879,000313: 17,3531           00006                           EXTEND                                         
061880,000314: 17,3532           51744                           INDEX    ADRSDIF2                              
061881,000315: 17,3533           71567                           MP       1/ANET1                               #  SCALED AT 2(7)/PI SEC(2)/RAD.
061882,000316: 17,3534           55742                           TS       TTOAXIS                               #  STORE TIME-TO-AXIS SCALED AT 4 SECONDS.
061883,000317: 17,3535           63740                           AD       -TJMAX                                
061884,000318: 17,3536           00006                           EXTEND                                         #  IS TIME TO AXIS LESS THAN 150 MSEC.
061885,000319: 17,3537           63541                           BZMF     +2                                    
061886,000320: 17,3540           13465                           TCF      FULLTIME                              #  NO. FIRE JETS, DO NOT CALCULATE TJET.
061887,000321: 17,3541           00002                           RETURN                                         #  YES.  GO ON TO FIND TJET
061888,000322: 
061889,000323: 17,3542           03526        ZON1,2,3           TC       Z123COMP                              #  SUBROUTINIZED PREPARATION FOR ZONE1,2,3.
061890,000324: 
061891,000325:                                                                                                  #  IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL
061892,000326:                                                                                                  #  LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE.  DURING POWERED FLIGHT

Page 1466

061894,000328:                                                                                                  #  OR ULLAGE, FLAT = 0
061895,000329: 
061896,000330: 17,3543           31741                           CAE      FIREFCT                               #  SCALED AT PI/4 RAD.
061897,000331: 17,3544           61555                           AD       FLAT                                  
061898,000332: 17,3545           00006                           EXTEND                                         
061899,000333: 17,3546           63562                           BZMF     ZONE1                                 #  NOT IN SPECIAL ZONES.
061900,000334: 
061901,000335:                                                                                                  #  FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE.  IF ON AXIS, COAST.
061902,000336: 
061903,000337: 17,3547           41556        ZONE2,3            CS       ZONE3LIM                              #  HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS
061904,000338: 17,3550           61742                           AD       TTOAXIS                               #        35 MSEC IN DRIFTING FLIGHT
061905,000339: 17,3551           00006                           EXTEND                                         #        ZERO WHEN TRYING TO ENTER GTS CONTROL.
061906,000340: 17,3552           63555                           BZMF     ZONE3                                 
061907,000341: 17,3553           31742        ZONE2              CAE      TTOAXIS                               #  FIRE TO AXIS.
061908,000342: 17,3554           13466                           TCF      RETURNTJ                              
061909,000343: 17,3555           11427        ZONE3              CCS      EDOT                                  #  CHECK IF EDOT IS ZERO.
061910,000344: 17,3556           34746                           CAF      BIT6                                  #  FIRE A ONE-JET MINIMUM IMPULSE.
061911,000345: 17,3557           13466                           TCF      RETURNTJ                              #  TJET = +0.
061912,000346: 17,3560           05705                           TC       CCSHOLE                               #  CANNOT BE BECAUSE NEG EDOT COMPLEMENTED.
061913,000347: 17,3561           13466                           TCF      RETURNTJ                              #  TJET = +0.
061914,000348: 
061915,000349: 17,3562           00006        ZONE1              EXTEND                                         
061916,000350: 17,3563           51746                           INDEX    ADRSDIF1                              
061917,000351: 17,3564           61605                           SU       AXISDIST                              #  SCALED AT PI/4 RAD.
061918,000352: 17,3565           00006                           EXTEND                                         
061919,000353: 17,3566           51744                           INDEX    ADRSDIF2                              
061920,000354: 17,3567           71575                           MP       ACCFCTZ1                              #  SCALED AT 2(7)/PI SEC(2)/RAD.
061921,000355: 17,3570           20001                           DDOUBL                                         
061922,000356: 17,3571           20001                           DDOUBL                                         
061923,000357: 17,3572           53750                           DXCH     HH                                    #  DOUBLE PRECISION H SCALED AT 8 SEC(2).
061924,000358: 
061925,000359:                                                                                                  #  TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC:
061926,000360:                                                                                                  #                             2                                   2
061927,000361:                                                                                                  #        IS .5(.150 - TTOAXIS)  - H  NEGATIVE (SCALED AT 8 SECONDS )
061928,000362: 
061929,000363: 17,3573           31742                           CAE      TTOAXIS                               #  TTOAXIS SCALED AT 4 SECONDS.
061930,000364: 17,3574           63740                           AD       -TJMAX                                #  -.150 SECOND SCALED AT 4.
061931,000365: 17,3575           00006                           EXTEND                                         
061932,000366: 17,3576           70000                           SQUARE                                         
061933,000367: 17,3577           00006                           EXTEND                                         
061934,000368: 17,3600           61747                           SU       HH                                    #  HIGH WORD OF H SCALED AT 8 SEC(2).
061935,000369: 17,3601           00006                           EXTEND                                         
061936,000370: 17,3602           63465                           BZMF     FULLTIME                              #  YES.  NEED NOT CALCULATE TJET.
061937,000371: 
061938,000372:                                                                                                  #  TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE.
061939,000373: 
061940,000374: 17,3603           31747                           CAE      HH                                    
061941,000375: 17,3604           67746                           AD       NEG2                                  
061942,000376: 17,3605           00006                           EXTEND                                         
061943,000377: 17,3606           63616                           BZMF     FORMULA3                              
061944,000378: 

Page 1467

061946,000380:                                                                                                  #  TJET = H/0.1 + TTOAXIS + .0375        FOR APPROXIMATION OVER MORE THAN 50 MSEC.
061947,000381: 
061948,000382: 17,3607           33730                           CAF      .1AT2                                 #  STORE .1 SEC SCALED AT 2 FOR DIVISION.
061949,000383: 17,3610           53750                           DXCH     HH                                    #  DP H SCALED AT 8 SEC(2) NEED NOT BE
061950,000384: 17,3611           00006                           EXTEND                                         #        PRESERVED.
061951,000385: 17,3612           11747                           DV       HH                                    #  QUOTIENT SCALED AT 4 SECONDS.
061952,000386: 17,3613           61742                           AD       TTOAXIS                               #  SCALED AT 4 SEC.
061953,000387: 17,3614           63731                           AD       .0375AT4                              #  .0375 SEC SCALED AT 4.
061954,000388: 17,3615           13466                           TCF      RETURNTJ                              #  END COMPUTATION.
061955,000389: 
061956,000390:                                                                                                  #  TJET = H/.O25 + TTOAXIS       FOR APPROXIMATION OVER LESS THAN 50 MSEC.
061957,000391: 
061958,000392: 17,3616           43732        FORMULA3           CS       -.025AT2                              #  STORE +.025 SEC SCALED AT 2 FOR DIVISION
061959,000393: 17,3617           53750                           DXCH     HH                                    #  PICK UP DP H AT 8, WHICH NEED NOT BE
061960,000394: 17,3620           00006                           EXTEND                                         #        PRESERVED.
061961,000395: 17,3621           11747                           DV       HH                                    #  QUOTIENT SCALED AT 4 SECONDS.
061962,000396: 17,3622           61742                           AD       TTOAXIS                               #  SCALED AT 4 SEC.
061963,000397: 
061964,000398:                                                                                                  #  IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO.
061965,000399:                                                                                                  #  MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY.
061966,000400: 
061967,000401: 17,3623           63742        CHKMINTJ           AD       -TJMIN                                #  IS COMPUTED TIME LESS THAN THE MINIMUM.
061968,000402: 17,3624           00006                           EXTEND                                         
061969,000403: 17,3625           63422                           BZMF     COASTTJ                               #  YES, SET TIME TO ZERO.
061970,000404: 17,3626           63741                           AD       TJMIN                                 #  NO, RESTORE COMPUTED TIME.
061971,000405: 17,3627           13466                           TCF      RETURNTJ                              #  END COMPUTATION.
061972,000406: 

Page 1468

061974,000408:                                                                                                  #  *** ROUGHLAW ***
061975,000409: 
061976,000410:                                                                                                  #  BEFORE ENTRY TO RUFLAW:
061977,000411:                                                                                                  #        1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT.
061978,000412:                                                                                                  #        2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE.
061979,000413:                                                                                                  #        3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC.
061980,000414:                                                                                                  #           (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4)
061981,000415: 
061982,000416:                                                                                                  #  RUFLAW1:      ERROR MORE NEGATIVE THAN PI/16 RAD.  FIRE TO A RATE OF 6.5 DEG/SEC (IF JET TIME EXCEEDS 20 MSEC.).
061983,000417:                                                                                                  #  RUFLAW2:      ERROR MORE POSITIVE THAN PI/16 RAD.  FIRE TO AN OPPOSING RATE OF 6.5 DEG/SEC.
061984,000418:                                                                                                  #  RUFLAW3:      ERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS.  COAST IF BELOW FIREFCT, FIRE IF ABOVE
061985,000419: 
061986,000420: 17,3630           43743        RUFLAW1            CS       RUFRATE                               #  DECREMENT EDOT BY .1444 RAD/SEC AT PI/4
061987,000421: 17,3631           27427                           ADS      EDOT                                  #        WHICH IS THE TARGET RATE
061988,000422: 17,3632           00006                           EXTEND                                         
061989,000423: 17,3633           63654                           BZMF     SMALRATE                              #  BRANCH IF RATE LESS THAN TARGET.
061990,000424: 17,3634           03712                           TC       RUFSETUP                              #  REVERSE ROTSENSE AND INDICATE MAX JETS.
061991,000425: 17,3635           31427                           CAE      EDOT                                  #  PICK UP DESIRED RATE CHANGE.
061992,000426: 
061993,000427: 17,3636           00006        RUFLAW12           EXTEND                                         #  COMPUTE TJET
061994,000428: 17,3637           51744                           INDEX    ADRSDIF2                              #        = (DESIRED RATE CHANGE)/(2-JET ACCEL.)
061995,000429: 17,3640           71571                           MP       1/ANET1    +2                         
061996,000430: 17,3641           67741                           AD       -1/8                                  #  IF TJET, SCALED AT 32 SEC, EXCEEDS
061997,000431: 17,3642           00006                           EXTEND                                         #        4 SECONDS, SET TJET TO TJMAX.
061998,000432: 17,3643           63645                           BZMF     +2                                    
061999,000433: 17,3644           13465                           TCF      FULLTIME                              
062000,000434: 17,3645           00006                           EXTEND                                         
062001,000435: 17,3646           13465                           BZF      FULLTIME                              
062002,000436: 17,3647           64740                           AD       BIT12                                 #  RESTORE COMPUTED TJET TO ACCUMULATOR.
062003,000437: 17,3650           20001                           DAS      A                                     
062004,000438: 17,3651           20001                           DAS      A                                     
062005,000439: 17,3652           20001                           DAS      A                                     #  RESCALED TJET AT 4 SECONDS.
062006,000440: 17,3653           13623                           TCF      CHKMINTJ                              #  RETURN AS FROM FINELAW.
062007,000441: 
062008,000442: 17,3654           03714        SMALRATE           TC       RUFSETUP   +2                         #  SET NUMBERT AND FIREFCT FOR MAXIMUM JETS
062009,000443: 17,3655           11740                           CCS      ROTSENSE                              
062010,000444: 17,3656           34753                           CAF      ONE                                   #  MODIFY INDEXER TO POINT TO 1/ANET
062011,000445: 17,3657           13661                           TCF      +2                                    #        CORRESPONDING TO THE PROPER SENSE.
062012,000446: 17,3660           37747                           CAF      NEGONE                                
062013,000447: 17,3661           27744                           ADS      ADRSDIF2                              
062014,000448: 
062015,000449: 17,3662           41427                           CS       EDOT                                  #  (.144 AT PI/4 - EDOT) = DESIRED RATE CHNG.
062016,000450: 17,3663           13636                           TCF      RUFLAW12                              
062017,000451: 
062018,000452: 17,3664           03712        RUFLAW2            TC       RUFSETUP                              #  REVERSE ROTSENSE AND INDICATE MAX JETS.
062019,000453: 17,3665           33743                           CAF      RUFRATE                               
062020,000454: 17,3666           61427                           AD       EDOT                                  #  (.144 AT PI/4 + EDOT) = DESIRED RATE CHNG.
062021,000455: 17,3667           54000                           TS       A                                     #  IF OVERFLOW SKIP, FIRE FOR FULL TIME.
062022,000456: 17,3670           13636                           TCF      RUFLAW12                              #  OTHERWISE, COMPUTE JET TIME.
062023,000457: 17,3671           13465                           TCF      FULLTIME                              
062024,000458: 

Page 1469

062026,000460: 17,3672           03712        RUFLAW3            TC       RUFSETUP                              #  EXECUTE COMMON RUFLAW SUBROUTINE.
062027,000461: 17,3673           51746                           INDEX    ADRSDIF1                              
062028,000462: 17,3674           41601                           CS       FIREDB                                #  CALCULATE DISTANCE FROM SWITCH CURVE
062029,000463: 17,3675           61752                           AD       E                                     #        1/ANET1*EDOT*EDOT +E - FIREDB = 0
062030,000464: 17,3676           00006                           EXTEND                                         #                SCALED AT 4 PI RADIANS
062031,000465: 17,3677           74741                           MP       BIT11                                 
062032,000466: 17,3700           57427                           XCH      EDOT                                  
062033,000467: 17,3701           00006                           EXTEND                                         
062034,000468: 17,3702           70000                           SQUARE                                         
062035,000469: 17,3703           00006                           EXTEND                                         
062036,000470: 17,3704           51746                           INDEX    ADRSDIF1                              
062037,000471: 17,3705           71571                           MP       1/ANET1    +2                         
062038,000472: 17,3706           61427                           AD       EDOT                                  
062039,000473: 17,3707           00006                           EXTEND                                         
062040,000474: 17,3710           63422                           BZMF     COASTTJ                               #  COAST IF BELOW IT.
062041,000475: 17,3711           13465                           TCF      FULLTIME                              #  FIRE FOR FULL PERIOD IF ABOVE IT.
062042,000476: 
062043,000477:                                                                                                  #  SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW.
062044,000478: 
062045,000479: 17,3712           41740        RUFSETUP           CS       ROTSENSE                              #  REVERSE ROTSENSE WHEN ENTER HERE.
062046,000480: 17,3713           55740                           TS       ROTSENSE                              
062047,000481: 17,3714           34751                 +2        CAF      FOUR                                  #  REQUIRE MAXIMUM (2) JETS IN U,V-AXES.
062048,000482: 17,3715           55743                           TS       NUMBERT                               
062049,000483: 17,3716           34735                           CAF      NEGMAX                                #  SUGGEST MAXIMUM (4) JETS IN P-AXIS.
062050,000484: 17,3717           55741                           TS       FIREFCT                               
062051,000485: 17,3720           00002                           TC       Q                                     
062052,000486: 
062053,000487:                                                                                                  #  CONSTANTS FOR TJETLAW
062054,000488: 
062055,000489: 17,3721           77757                           DEC      -16        B-14                       #  AXISDIFF(INDEX) = NUMBER OF REGISTERS
062056,000490: 17,3722           00000        AXISDIFF           DEC      +0         B-14                       #        BETWEEN STORED 1/ACCS PARAMETERS FOR
062057,000491: 17,3723           00020                           DEC      16         B-14                       #        THE INDEXED AXIS AND THE U-AXIS.
062058,000492: 17,3724           14400        SENSOR             OCT      14400                                 #  RATIO OF TJET SCALING WITHIN TJETLAW
062059,000493:                                                                                                  #        (4 SEC) TO SCALING FOR T6 (10.24 SEC).
062060,000494: 17,3725           75673        -3DEG              DEC      -.06667                               #  -3.0 DEGREES SCALED AT 45.
062061,000495: 17,3726           77750        -.0112A8           DEC      -.00141                               #  -.01125 SEC(2) SCALED AT 8.
062062,000496: 17,3727           00632        .1AT4              DEC      .025                                  #  0.1 SECOND SCALED AT 4.
062063,000497: 17,3730           01463        .1AT2              DEC      .05                                   #  0.1 SEC SCALED AT 2.
062064,000498: 17,3731           00232        .0375AT4           DEC      .00938                                #  .0375 SEC SCALED AT 4.
062065,000499: 17,3732           77462        -.025AT2           DEC      -.0125                                #  -.025 SEC SCALED AT 2.
062066,000500: 17,3733           77631        -.025AT4           DEC      -.00625                               
062067,000501: 17,3734           77145        -.05AT2            DEC      -.025                                 
062068,000502: 17,3735           75462        -.15AT2            DEC      -.075                                 
062069,000503: 17,3736           00007 25605  .00375A8           2DEC     .00375     B-3                        
062070,000504: 
062071,000505: 17,3740           76631        -TJMAX             DEC      -.0375                                #  LARGEST CALCULATED TIME.  .150 SEC AT 4.
062072,000506: 17,3741           00122        TJMIN              DEC      .005                                  #  SMALLEST ALLOWABLE TIME.  .020 SEC AT 4.
062073,000507: 17,3742           77655        -TJMIN             DEC      -.005                                 
062074,000508: 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