Source Code
|
These source-code files are part of a reconstructed copy of LUM69 Revision 2, the
flown Apollo 10 Lunar Module (LM) Apollo Guidance Computer (AGC) software.
The reconstruction began with source code of Luminary 69 revision 0 previously transcribed from a digitized copy of that program. The code was then updated by back-porting the R-2 lunar potential model from previously-transcribed source code of Luminary 99. These required changes were described in the original Luminary memos 75 and 78. The reconstructed code was verified by matching memory-bank checksums to those listed in drawing 2021152G. Note that page numbers in the reconstructed code match those on the Luminary 069 printout, although the added code would likely have changed page numbers for a real LUM69 Revision 2 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. |
062801,000002: ## Copyright: Public domain.
062802,000003: ## Filename: TJET_LAW.agc
062803,000004: ## Purpose: A section of LUM69 revision 2.
062804,000005: ## It is part of the reconstructed source code for the flown
062805,000006: ## version of the flight software for the Lunar Module's (LM)
062806,000007: ## Apollo Guidance Computer (AGC) for Apollo 10. The code has
062807,000008: ## been recreated from a copy of Luminary revsion 069, using
062808,000009: ## changes present in Luminary 099 which were described in
062809,000010: ## Luminary memos 75 and 78. The code has been adapted such
062810,000011: ## that the resulting bugger words exactly match those specified
062811,000012: ## for LUM69 revision 2 in NASA drawing 2021152B, which gives
062812,000013: ## relatively high confidence that the reconstruction is correct.
062813,000014: ## Reference: pp. 1454-1464
062814,000015: ## Assembler: yaYUL
062815,000016: ## Contact: Ron Burkey <info@sandroid.org>.
062816,000017: ## Website: www.ibiblio.org/apollo/index.html
062817,000018: ## Mod history: 2019-07-27 MAS Created from Luminary 69.
062818,000019:
|
Page 1454 |
062820,000021: # PROGRAM DESCRIPTION
062821,000022: # DESIGNED BY: R. D. GOSS AND P. S. WEISSMAN
062822,000023: # CODED BY: P. S. WEISSMAN 28 FEBRUARY 1968
062823,000024:
062824,000025: # TJETLAW IS CALLED AS A SUBROUTINE WHEN THE LEM IS NOT DOCKED AND THE AUTOPILOT IS IN THE AUTOMATIC OR
062825,000026: # ATTITUDE-HOLD MODE TO CALCULATE THE JET-FIRING-TIME (TJET) REQUIRED FOR THE AXIS INDICATED BY AXISCTR:
062826,000027: # -1 INDICATES THE P-AXIS
062827,000028: # +0 INDICATES THE U-AXIS
062828,000029: # +1 INDICATES THE V-AXIS.
062829,000030: # THE REGISTERS E AND EDOT CONTAIN THE APPROPRIATE ATTITUDE ERROR AND ERROR RATE AND SENSETYP SHOWS WHETHER
062830,000031: # UNBALANCED COUPLES ARE PREFERRED. TJETLAW ALSO USES VARIOUS FUNCTIONS OF ACCELERATION AND DEADBAND WHICH ARE
062831,000032: # COMPUTED IN THE 1/ACCONT SECTION OF 1/ACCS AND ARE STORED IN SUCH AN ORDER THAT THEY CAN BE CONVENIENTLY
062832,000033: # ACCESSED BY INDEXING.
062833,000034:
062834,000035: # THE SIGN OF THE REQUIRED ROTATION IS CARRIED THROUGH TJETLAW AS ROTSENSE AND IS FINALLY APPLIED TO TJET JUST
062835,000036: # PREVIOUS TO ITS STORAGE IN THE LOCATION CORRESPONDING TO THE AXIS (TJP, TJU OR TJV). THE NUMBER OF JETS THAT
062836,000037: # TJETLAW ASSUMES WILL BE USED IS INDICATED BY THE SETTING OF NUMBERT FOR THE U- OR V-AXIS. TWO JETS ARE ALWAYS
062837,000038: # ASSUMED FOR THE P-AXIS ALTHOUGH FOUR JETS WILL BE FIRED WHEN FIREFCT IS MORE NEGATIVE THAN -4.0 DEGREES
062838,000039: # (FIREFCT IS THE DISTANCE TO A SWITCH CURVE IN THE PHASE PLANE) AND A LONG FIRING IS CALLED FOR.
062839,000040:
062840,000041: # IN ORDER TO AVOID SCALING DIFFICULTIES, SIMPLE ALGORITHMS TAGGED RUFLAW1, -2 AND -3 ARE RESORTED TO WHEN THE
062841,000042: # ERROR AND/OR ERROR RATE ARE LARGE.
062842,000043:
062843,000044: # CALLING SEQUENCE:
062844,000045: # TC TJETLAW (MUST BE IN JASK)
062845,000046: # OR
062846,000047: # INHINT (MUST BE IN JASK)
062847,000048: # TC IBNKCALL
062848,000049: # CADR TJETLAW
062849,000050: # RELINT
062850,000051:
062851,000052: # EXIT: RETURN TO Q.
062852,000053:
062853,000054: # INPUT:
062854,000055: # FROM THE CALLER: E, EDOT, AXISCTR, SENSETYP, TJP,-U,-V.
062855,000056: # FROM 1/ACCONT: 48 ERASABLES BEGINNING AT BLOCKTOP (INCLUDING FLAT, ZONE3LIM AND ACCSWU,-V).
062856,000057:
062857,000058: # OUTPUT:
062858,000059: # TJP,-U OR -V, NUMBERT (DAPTEMP5), FIREFCT (DAPTEMP3).
062859,000060:
062860,000061: # DEBRIS:
062861,000062: # A, L, Q, E, EDOT, DAPTEMP1-6, DAPTREG1-4.
062862,000063:
062863,000064: # ALARM: NONE
062864,000065:
062865,000066: 17,3207 BANK 17
062866,000067: 17,2000 SETLOC DAPS2
062867,000068: 17,2000 BANK
062868,000069: 17,3207 E6,1524 EBANK= TJP
|
Page 1455 |
062870,000071: 17,3207 COUNT* $$/DAPTJ
062871,000072:
062872,000073: 17,3207 00006 TJETLAW EXTEND # SAVE Q FOR RETURN.
062873,000074: 17,3210 23743 QXCH HOLDQ
062874,000075:
062875,000076: # SET INDEXERS TO CORRESPOND TO THE AXIS AND TO THE SIGN OF EDOT
062876,000077:
062877,000078: 17,3211 51476 INDEX AXISCTR # AXISDIFF(-1)=NO OF LOCATIONS BER P AND U
062878,000079: 17,3212 33657 CAF AXISDIFF # AXISDIFF(0) = 0
062879,000080: 17,3213 55744 TS ADRSDIF1 # AXISDIFF(+1)=NO OF LOCATIONS BET V AND U
062880,000081:
062881,000082: 17,3214 31425 CAE EDOT # IF EDOT NEGATIVE, PICK UP SET OF VALUES
062882,000083: 17,3215 00006 EXTEND # THAT ALLOW USE OF SAME CODING AS FOR
062883,000084: 17,3216 63223 BZMF NEGEDOT # POSITIVE EDOT.
062884,000085: 17,3217 31744 CAE ADRSDIF1 # SET A SECOND INDEXER WHICH MAY BE
062885,000086: 17,3220 55742 TS ADRSDIF2 # MODIFIED BY A DECISION FOR MAX JETS.
062886,000087: 17,3221 33661 CAF SENSOR # FOR POSITIVE EDOT, ROTSENSE IS
062887,000088: 17,3222 13233 TCF SETSENSE # INITIALIZED POSITIVE.
062888,000089:
062889,000090: 17,3223 41750 NEGEDOT CS E # IN ORDER FOR NEG EDOT CASE TO USE CODING
062890,000091: 17,3224 55750 TS E # OF POS EDOT, MUST MODIFY AS FOLLOWS:
062891,000092: 17,3225 41425 CS EDOT # 1. COMPLEMENT E AND EDOT.
062892,000093: 17,3226 55425 TS EDOT # 2. SET SENSE OF ROTATION TO NEGATIVE
062893,000094: 17,3227 34753 CAF BIT1 # (REVERSED LATER IF NECESSARY).
062894,000095: 17,3230 27744 ADS ADRSDIF1 # 3. INCREMENT INDEXERS BY ONE SO THAT
062895,000096: 17,3231 55742 TS ADRSDIF2 # THE PROPER PARAMETERS ARE ACCESSED.
062896,000097: 17,3232 43661 CS SENSOR
062897,000098: 17,3233 55736 SETSENSE TS ROTSENSE
062898,000099:
062899,000100: # TEST MAGNITUDE OF E (ATTITUDE ERROR, SINGLE-PRECISION, SCALED AT PI RADIANS):
062900,000101: # IF GREATER THAN (OR EQUAL TO) PI/16 RADIANS, GO TO THE SIMPLIFIED TJET ROUTINE.
062901,000102: # IF LESS THAN PI/16 RADIANS, RESCALE TO PI/4.
062902,000103:
062903,000104: 17,3234 31750 CAE E # PICK UP ATTITUDE ERROR FOR THIS AXIS
062904,000105: 17,3235 00006 EXTEND
062905,000106: 17,3236 74747 MP BIT5 # SHIFT RIGHT TEN BITS: IF A-REGISTER IS
062906,000107: 17,3237 10000 CCS A # ZERO, RESCALE AND TEST EDOT.
062907,000108: 17,3240 13621 TCF RUFLAW2
062908,000109: 17,3241 13243 TCF SCALEE
062909,000110: 17,3242 13565 TCF RUFLAW1
062910,000111: 17,3243 34737 SCALEE CAF BIT13 # ERROR IS IN L SCALED AT PI/16. RESCALE
062911,000112: 17,3244 00006 EXTEND # IT TO PI/4 AND SAVE IT.
062912,000113: 17,3245 70001 MP L
062913,000114: 17,3246 55750 TS E
062914,000115:
062915,000116: # TEST MAGNITUDE OF EDOT (ERROR RATE SCALED AT PI/4 RADIANS/SECOND)
062916,000117: # IF GREATER THAN (OR EQUAL TO) PI/32 RADIANS/SECOND, GO TO THE SIMPLIFIED TJET ROUTINE.
062917,000118: # IF LESS THAN PI/32 RADIANS/SECOND, THEN RESCALE TO PI/32 RADIANS/SECOND.
062918,000119:
062919,000120: 17,3247 31425 CAE EDOT # PICK UP SINGLE-PRECISION ERROR-RATE
|
Page 1456 |
062921,000122: 17,3250 00006 EXTEND # FOR THIS AXIS=
062922,000123: 17,3251 74750 MP BIT4 # SHIFT RIGHT ELEVEN BITS, IF THE A-REG IS
062923,000124: 17,3252 00006 EXTEND # ZERO, THEN RESCALE AND USE FINELAW.
062924,000125: 17,3253 13255 BZF SCALEDOT
062925,000126: 17,3254 13627 TCF RUFLAW3
062926,000127:
062927,000128: # *** FINELAW STARTS HERE ***
062928,000129:
062929,000130: 17,3255 23425 SCALEDOT LXCH EDOT # EDOT IS SCALED AT PI/32 RADIANS/SECOND.
062930,000131:
062931,000132: 17,3256 31425 CAE EDOT # COMPUTE (EDOT)(EDOT)
062932,000133: 17,3257 00006 EXTEND
062933,000134: 17,3260 70000 SQUARE # PRODUCT SCALED AT PI(2)/2(10) RAD/SEC.
062934,000135: 17,3261 00006 EXTEND
062935,000136: 17,3262 74737 MP BIT13 # SHIFT RIGHT TWO BITS TO RESCALE EDOTSQ
062936,000137: 17,3263 55735 TS EDOTSQ # TO PI(2)/2(8) RAD(2)/SEC(2).
062937,000138:
062938,000139: 17,3264 11750 ERRTEST CCS E # DOES BIG ERROR (TWO DEGREES BEYOND THE
062939,000140: 17,3265 63662 AD -2DEG # DEADBAND) REQUIRE MAXIMUM JETS?
062940,000141: 17,3266 13270 TCF +2
062941,000142: 17,3267 63662 AD -2DEG
062942,000143: 17,3270 00006 EXTEND
062943,000144: 17,3271 51744 INDEX ADRSDIF1
062944,000145: 17,3272 61601 SU FIREDB
062945,000146: 17,3273 00006 EXTEND
062946,000147: 17,3274 63301 BZMF SENSTEST # IF NOT: ARE UNBALANCED JETS PREFERRED|
062947,000148: 17,3275 34752 MAXJETS CAF TWO # IF YES: INCREMENT ADDRESS LOCATOR AND
062948,000149: 17,3276 27742 ADS ADRSDIF2 # SET SWITCH FOR JET SELECT LOGIC TO 4.
062949,000150: 17,3277 34751 CAF FOUR # (ALWAYS DO THIS FOR P-AXIS)
062950,000151: 17,3300 13304 TCF TJCALC
062951,000152: 17,3301 11477 SENSTEST CCS SENSETYP # DOES TRANSLATION PREFER MIN JETS.
062952,000153: 17,3302 13304 TCF TJCALC # YES. USE MIN-JET PARAMETERS.
062953,000154: 17,3303 13275 TCF MAXJETS # NO. GET MAX-JET PARAMETERS.
062954,000155: 17,3304 55741 TJCALC TS NUMBERT # SET TO +0,1,4 FOR (U,V-AXES) JET SELECT.
062955,000156:
062956,000157: # BEGINNING OF TJET CALCULATIONS:
062957,000158:
062958,000159: 17,3305 41735 CS EDOTSQ # SCALED AT PI(2)/2(8).
062959,000160: 17,3306 00006 EXTEND
062960,000161: 17,3307 51742 INDEX ADRSDIF2
062961,000162: 17,3310 71567 MP 1/ANET1 # .5/ACC SCALED AT 2(6)/PI SEC(2)/RADIAN.
062962,000163: 17,3311 51744 INDEX ADRSDIF1
062963,000164: 17,3312 61601 AD FIREDB # DEADBAND SCALED AT PI/4 RADIAN.
062964,000165: 17,3313 00006 EXTEND
062965,000166: 17,3314 61750 SU E # ATTITUDE ERROR SCALED AT PI/4 RADIAN.
062966,000167: 17,3315 55737 TS FIREFCT # -E-.5(EDOTSQ)/ACC-DB AT PI/4 RADIAN.
062967,000168: 17,3316 00006 EXTEND
062968,000169: 17,3317 63477 BZMF ZON1,2,3
062969,000170:
062970,000171: 17,3320 51744 ZONE4,5 INDEX ADRSDIF1
062971,000172: 17,3321 31573 CAE 1/ACOAST # .5/ACC SCALED AT 2(6)/PI WHERE
|
Page 1457 |
062973,000174: 17,3322 00006 EXTEND # ACC = MAX(AMIN, AOS-).
062974,000175: 17,3323 71735 MP EDOTSQ # SCALED AT PI/2(8).
062975,000176: 17,3324 61750 AD E # SCALED AT PI/4
062976,000177: 17,3325 51744 INDEX ADRSDIF1
062977,000178: 17,3326 61603 AD COASTDB # SCALED AT PI/4 POS. FOR NEG. INTERCEPT.
062978,000179: 17,3327 00006 EXTEND # TEST E+.5(EDOTSQ)/ACC+DB AT PI/4 RADIAN.
062979,000180: 17,3330 63363 BZMF ZONE5 # IF FUNCTION NEGATIVE, FIND TJET.
062980,000181: # IF FUNCTION POSITIVE, IN ZONE 4.
062981,000182:
062982,000183: # ZONE 4 IS THE COAST REGION. HOWEVER, IF THE JETS ARE ON AND DRIVING TOWARD
062983,000184: # A. THE AXIS WITHIN + OR - (DB + FLAT) FOR DRIFTING FLIGHT, OR
062984,000185: # B. THE USUAL TARGET PARABOLA FOR POWERED FLIGHT
062985,000186: # THEN THE THRUSTERS ARE KEPT ON.
062986,000187:
062987,000188: 17,3331 51476 ZONE4 INDEX AXISCTR # IS THE CURRENT VALUE IN TJET NON-ZERO
062988,000189: 17,3332 41525 CS TJETU # WITH SENSE OPPOSITE TO EDOT,
062989,000190: 17,3333 00006 EXTEND # (I.E., ARE JETS ON AND FIRING TOWARD
062990,000191: 17,3334 71736 MP ROTSENSE # THE DESIRABLE STATE).
062991,000192: 17,3335 00006 EXTEND
062992,000193: 17,3336 63357 BZMF COASTTJ # NO. COAST.
062993,000194:
062994,000195: 17,3337 11555 JETSON CCS FLAT # YES. IS THIS DRIFTING OR POWERED FLIGHT|
062995,000196: 17,3340 13351 TCF DRIFT/ON # DRIFTING. GO MAKE FURTHER TEST.
062996,000197:
062997,000198: 17,3341 41737 CS FIREFCT # POWERED (OR ULLAGE). CAN TARGET PARABOLA
062998,000199: 17,3342 51744 INDEX ADRSDIF1 # BE REACHED FROM THIS POINT IN THE
062999,000200: 17,3343 61605 AD AXISDIST # PHASE PLANE|
063000,000201: 17,3344 00006 EXTEND
063001,000202: 17,3345 63357 BZMF COASTTJ # NO. SET TJET = 0.
063002,000203: 17,3346 03463 TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 1
063003,000204: 17,3347 31737 CAE FIREFCT # AFTER COMPUTING THE REQUIRED
063004,000205: 17,3350 13517 TCF ZONE1 # PARAMETERS.
063005,000206:
063006,000207: 17,3351 51744 DRIFT/ON INDEX ADRSDIF1 # CAN TARGET STRIP OF AXIS BE REACHED FROM
063007,000208: 17,3352 41601 CS FIREDB # THIS POINT IN THE PHASE PLANE|
063008,000209: 17,3353 60000 DOUBLE
063009,000210: 17,3354 61737 AD FIREFCT
063010,000211: 17,3355 00006 EXTEND
063011,000212: 17,3356 63361 BZMF +3
063012,000213: 17,3357 34755 COASTTJ CAF ZERO # NO. SET TJET = 0.
063013,000214: 17,3360 13423 TCF RETURNTJ
063014,000215:
063015,000216: 17,3361 03463 TC Z123COMP # YES. CALCULATE TJET AS THOUGH IN ZONE 2
063016,000217: 17,3362 13504 TCF ZONE2,3 # OR 3 AFTER COMPUTING REQUIRED VALUES.
063017,000218:
063018,000219: 17,3363 54001 ZONE5 TS L # TEMPORARILY STORE FUNCTION IN L.
063019,000220: 17,3364 11736 CCS ROTSENSE # MODIFY ADRSDIF2 FOR ACCESSING 1/ANET2
063020,000221: 17,3365 13371 TCF +4 # AND ACCFCTZ5, WHICH MUST BE PICKED UP
063021,000222: 17,3366 05677 TC CCSHOLE # FROM THE NEXT LOWER REGISTER IF THE
063022,000223: 17,3367 44752 CS TWO # (ACTUAL) ERROR RATE IS NEGATIVE.
|
Page 1458 |
063024,000225: 17,3370 27742 ADS ADRSDIF2
063025,000226:
063026,000227: 17,3371 30001 +4 CAE L
063027,000228: 17,3372 00006 EXTEND
063028,000229: 17,3373 51742 INDEX ADRSDIF2 # TTOAXIS AND HH ARE THE PARAMETERS UPON
063029,000230: 17,3374 71576 MP ACCFCTZ5 # WHICH THE APPROXIMATIONS TO TJET ARE
063030,000231: 17,3375 20001 DDOUBL # BASED.
063031,000232: 17,3376 20001 DDOUBL
063032,000233: 17,3377 53746 DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).
063033,000234: 17,3400 51742 INDEX ADRSDIF2
063034,000235: 17,3401 31570 CAE 1/ANET2 # SCALED AT 2(7)/PI SEC(2)/RAD.
063035,000236: 17,3402 00006 EXTEND
063036,000237: 17,3403 71425 MP EDOT # SCALED AT PI/2(5)
063037,000238: 17,3404 55740 TS TTOAXIS # SCALED AT 4 SEC.
063038,000239:
063039,000240: # TEST WHETHER TJET GREATER THAN 50 MSEC.
063040,000241:
063041,000242: 17,3405 00006 EXTEND
063042,000243: 17,3406 73671 MP -.05AT2 # H - .05 TTOAXIS - .00125 G.T. ZERO
063043,000244: 17,3407 61745 AD HH # (SCALED AT 8 SEC(2) ).
063044,000245: 17,3410 67745 AD NEG2
063045,000246: 17,3411 00006 EXTEND
063046,000247: 17,3412 63440 BZMF FORMULA1
063047,000248:
063048,000249: # TEST WHETHER TJET GREATER THAN 150 MSEC.
063049,000250:
063050,000251: 17,3413 31740 CAE TTOAXIS
063051,000252: 17,3414 00006 EXTEND
063052,000253: 17,3415 73672 MP -.15AT2 # H - .15 TTOAXIS - .01125 G.T. ZERO
063053,000254: 17,3416 61745 AD HH # (SCALED AT 8 SEC(2) )
063054,000255: 17,3417 63663 AD -.0112A8
063055,000256: 17,3420 00006 EXTEND
063056,000257: 17,3421 63450 BZMF FORMULA2
063057,000258:
063058,000259: # IF TJET GREATER THAN 150 MSEC, ASSIGN IT VALUE OF 250 MSEC, SINCE THIS
063059,000260: # IS ENOUGH TO ASSURE NO SKIP NEXT CSP (100 MSEC).
063060,000261:
063061,000262: 17,3422 34741 FULLTIME CAF BIT11 # 250 MSEC SCALED AT 4 SEC.
063062,000263:
063063,000264: # RETURN TO CALLING PROGRAM WITH JET TIME SCALED AS TIME6 AND SIGNED.
063064,000265:
063065,000266: 17,3423 00006 RETURNTJ EXTEND # ALL BRANCHES TERMINATE HERE WITH TJET
063066,000267: 17,3424 71736 MP ROTSENSE # (SCALED AT 4 SEC) IN THE ACCUMULATOR.
063067,000268: 17,3425 51476 INDEX AXISCTR # ROTSENSE APPLIES SIGN AND CHANGES SCALE.
063068,000269: 17,3426 55525 TS TJETU
063069,000270: 17,3427 00006 EXTEND
063070,000271: 17,3430 51476 INDEX AXISCTR
063071,000272: 17,3431 71547 MP ACCSWU # SET SWITCH FOR JET SELECT IF ROTATION IS
063072,000273: 17,3432 30001 CAE L
063073,000274: 17,3433 00006 EXTEND # IN A SENSE FOR WHICH 1/ACCS HAS FORCED
063074,000275: 17,3434 63437 BZMF +3 # A MAX-JET CALCULATION.
063075,000276: 17,3435 34751 CAF FOUR
|
Page 1459 |
063077,000278: 17,3436 55741 TS NUMBERT
063078,000279: 17,3437 01743 TC HOLDQ # RETURN VIA SAVED Q.
063079,000280:
063080,000281: # TJET = H/(.025 + TTOAXIS) FOR TJET LESS THAN 50 MSEC.
063081,000282:
063082,000283: 17,3440 43670 FORMULA1 CS -.025AT4 # .025 SEC SCALED AT 4.
063083,000284: 17,3441 61740 AD TTOAXIS # SCALED AT 4 SECONDS.
063084,000285: 17,3442 53746 DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
063085,000286: 17,3443 00006 EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
063086,000287: 17,3444 11745 DV HH # DP H AND DIVIDE BY DENOMINATOR.
063087,000288: 17,3445 00006 EXTEND
063088,000289: 17,3446 74736 MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
063089,000290: 17,3447 13560 TCF CHKMINTJ # CHECK THAT TJET IS NOT LESS THAN MINIMUM
063090,000291:
063091,000292: # TJET = (H + .00375)/(0.1 + TTOAXIS) FOR TJET GREATER THAN 50 MSEC.
063092,000293:
063093,000294: 17,3450 00006 FORMULA2 EXTEND
063094,000295: 17,3451 33674 DCA .00375A8 # .00375 SEC(2) SCALED AT 8.
063095,000296: 17,3452 21746 DAS HH # STORE NUMERATOR IN DP H, WHICH NEED NOT
063096,000297: # BE PRESERVED.
063097,000298: 17,3453 31740 CAE TTOAXIS # SCALED AT 4 SEC.
063098,000299: 17,3454 63664 AD .1AT4 # 0.1 SEC SCALED AT 4.
063099,000300: 17,3455 53746 DXCH HH # STORE DENOMINATOR IN FIRST WORD OF H,
063100,000301: 17,3456 00006 EXTEND # WHICH NEED NOT BE PRESERVED. PICK UP
063101,000302: 17,3457 11745 DV HH # DP NUMERATOR AND DIVIDE BY DENOMINATOR
063102,000303: 17,3460 00006 EXTEND
063103,000304: 17,3461 74736 MP BIT14 # RESCALE TJET FROM 2 TO USUAL 4 SEC.
063104,000305: 17,3462 13423 TCF RETURNTJ # END SUBROUTINE.
063105,000306:
063106,000307: # SUBROUTINIZED COMPUTATIONS REQUIRED FOR ALL ENTRIES INTO CODING FOR ZONES 1, 2, AND 3.
063107,000308: # REACHED BY TC FROM 3 POINTS IN TJETLAW.
063108,000309:
063109,000310: 17,3463 41736 Z123COMP CS ROTSENSE # USED IN RETURNTJ SECTION TO RESCALE TJET
063110,000311: 17,3464 55736 TS ROTSENSE # AS TIME6 AND GIVE IT PROPER SIGN.
063111,000312: 17,3465 31425 CAE EDOT # SCALED AT PI/2(5) RAD/SEC.
063112,000313: 17,3466 00006 EXTEND
063113,000314: 17,3467 51742 INDEX ADRSDIF2
063114,000315: 17,3470 71567 MP 1/ANET1 # SCALED AT 2(7)/PI SEC(2)/RAD.
063115,000316: 17,3471 55740 TS TTOAXIS # STORE TIME-TO-AXIS SCALED AT 4 SECONDS.
063116,000317: 17,3472 63675 AD -TJMAX
063117,000318: 17,3473 00006 EXTEND # IS TIME TO AXIS LESS THAN 150 MSEC.
063118,000319: 17,3474 63476 BZMF +2
063119,000320: 17,3475 13422 TCF FULLTIME # NO. FIRE JETS, DO NOT CALCULATE TJET.
063120,000321: 17,3476 00002 RETURN # YES. GO ON TO FIND TJET
063121,000322:
063122,000323: 17,3477 03463 ZON1,2,3 TC Z123COMP # SUBROUTINIZED PREPARATION FOR ZONE1,2,3.
063123,000324:
063124,000325: # IF THE (NEG) DISTANCE BEYOND PARABOLA IS LESS THAN FLAT, USE SPECIAL
063125,000326: # LOGIC TO ACQUIRE MINIMUM IMPULSE LIMIT CYCLE. DURING POWERED FLIGHT
|
Page 1460 |
063127,000328: # OR ULLAGE, FLAT = 0
063128,000329:
063129,000330: 17,3500 31737 CAE FIREFCT # SCALED AT PI/4 RAD.
063130,000331: 17,3501 61555 AD FLAT
063131,000332: 17,3502 00006 EXTEND
063132,000333: 17,3503 63517 BZMF ZONE1 # NOT IN SPECIAL ZONES.
063133,000334:
063134,000335: # FIRE FOR AXIS OR, IF CLOSE, FIRE MINIMUM IMPULSE. IF ON AXIS, COAST.
063135,000336:
063136,000337: 17,3504 41556 ZONE2,3 CS ZONE3LIM # HEIGHT OF MIN-IMPULSE ZONE SET BY 1/ACCS
063137,000338: 17,3505 61740 AD TTOAXIS # 35 MSEC IN DRIFTING FLIGHT
063138,000339: 17,3506 00006 EXTEND # ZERO WHEN TRYING TO ENTER GTS CONTROL.
063139,000340: 17,3507 63512 BZMF ZONE3
063140,000341: 17,3510 31740 ZONE2 CAE TTOAXIS # FIRE TO AXIS.
063141,000342: 17,3511 13423 TCF RETURNTJ
063142,000343: 17,3512 11425 ZONE3 CCS EDOT # CHECK IF EDOT IS ZERO.
063143,000344: 17,3513 34746 CAF BIT6 # FIRE A ONE-JET MINIMUM IMPULSE.
063144,000345: 17,3514 13423 TCF RETURNTJ # TJET = +0.
063145,000346: 17,3515 05677 TC CCSHOLE # CANNOT BE BECAUSE NEG EDOT COMPLEMENTED.
063146,000347: 17,3516 13423 TCF RETURNTJ # TJET = +0.
063147,000348:
063148,000349: 17,3517 00006 ZONE1 EXTEND
063149,000350: 17,3520 51744 INDEX ADRSDIF1
063150,000351: 17,3521 61605 SU AXISDIST # SCALED AT PI/4 RAD.
063151,000352: 17,3522 00006 EXTEND
063152,000353: 17,3523 51742 INDEX ADRSDIF2
063153,000354: 17,3524 71575 MP ACCFCTZ1 # SCALED AT 2(7)/PI SEC(2)/RAD.
063154,000355: 17,3525 20001 DDOUBL
063155,000356: 17,3526 20001 DDOUBL
063156,000357: 17,3527 53746 DXCH HH # DOUBLE PRECISION H SCALED AT 8 SEC(2).
063157,000358:
063158,000359: # TEST WHETHER TOTAL TIME REQUIRED GREATER THAN 150 MSEC:
063159,000360: # 2 2
063160,000361: # IS .5(.150 - TTOAXIS) - H NEGATIVE (SCALED AT 8 SECONDS )
063161,000362:
063162,000363: 17,3530 31740 CAE TTOAXIS # TTOAXIS SCALED AT 4 SECONDS.
063163,000364: 17,3531 63675 AD -TJMAX # -.150 SECOND SCALED AT 4.
063164,000365: 17,3532 00006 EXTEND
063165,000366: 17,3533 70000 SQUARE
063166,000367: 17,3534 00006 EXTEND
063167,000368: 17,3535 61745 SU HH # HIGH WORD OF H SCALED AT 8 SEC(2).
063168,000369: 17,3536 00006 EXTEND
063169,000370: 17,3537 63422 BZMF FULLTIME # YES. NEED NOT CALCULATE TJET.
063170,000371:
063171,000372: # TEST WHETHER TIME BEYOND AXIS GREATER THAN 50 MSEC TO DETERMINE WHICH APPROXIMATION TO USE.
063172,000373:
063173,000374: 17,3540 31745 CAE HH
063174,000375: 17,3541 67745 AD NEG2
063175,000376: 17,3542 00006 EXTEND
063176,000377: 17,3543 63553 BZMF FORMULA3
063177,000378:
|
Page 1461 |
063179,000380: # TJET = H/0.1 + TTOAXIS + .0375 FOR APPROXIMATION OVER MORE THAN 50 MSEC.
063180,000381:
063181,000382: 17,3544 33665 CAF .1AT2 # STORE .1 SEC SCALED AT 2 FOR DIVISION.
063182,000383: 17,3545 53746 DXCH HH # DP H SCALED AT 8 SEC(2) NEED NOT BE
063183,000384: 17,3546 00006 EXTEND # PRESERVED.
063184,000385: 17,3547 11745 DV HH # QUOTIENT SCALED AT 4 SECONDS.
063185,000386: 17,3550 61740 AD TTOAXIS # SCALED AT 4 SEC.
063186,000387: 17,3551 63666 AD .0375AT4 # .0375 SEC SCALED AT 4.
063187,000388: 17,3552 13423 TCF RETURNTJ # END COMPUTATION.
063188,000389:
063189,000390: # TJET = H/.O25 + TTOAXIS FOR APPROXIMATION OVER LESS THAN 50 MSEC.
063190,000391:
063191,000392: 17,3553 43667 FORMULA3 CS -.025AT2 # STORE +.025 SEC SCALED AT 2 FOR DIVISION
063192,000393: 17,3554 53746 DXCH HH # PICK UP DP H AT 8, WHICH NEED NOT BE
063193,000394: 17,3555 00006 EXTEND # PRESERVED.
063194,000395: 17,3556 11745 DV HH # QUOTIENT SCALED AT 4 SECONDS.
063195,000396: 17,3557 61740 AD TTOAXIS # SCALED AT 4 SEC.
063196,000397:
063197,000398: # IF COMPUTED JET TIME IS LESS THAN TJMIN, TJET IS SET TO ZERO.
063198,000399: # MINIMUM IMPULSES REQUIRED IN ZONE 3 ARE NOT SUBJECT TO THIS CONSTRAINT, NATURALLY.
063199,000400:
063200,000401: 17,3560 63677 CHKMINTJ AD -TJMIN # IS COMPUTED TIME LESS THAN THE MINIMUM.
063201,000402: 17,3561 00006 EXTEND
063202,000403: 17,3562 63357 BZMF COASTTJ # YES, SET TIME TO ZERO.
063203,000404: 17,3563 63676 AD TJMIN # NO, RESTORE COMPUTED TIME.
063204,000405: 17,3564 13423 TCF RETURNTJ # END COMPUTATION.
063205,000406:
|
Page 1462 |
063207,000408: # *** ROUGHLAW ***
063208,000409:
063209,000410: # BEFORE ENTRY TO RUFLAW:
063210,000411: # 1. INDEXERS ADRSDIF1 AND ADRSDIF2 ARE SET ON BASIS OF AXIS, AND SIGN OF EDOT.
063211,000412: # 2. IF EDOT WAS NEGATIVE, E AND EDOT ARE ROTATED INTO UPPER HALF-PLANE AND ROTSENSE IS MADE NEGATIVE.
063212,000413: # 3. E IS SCALED AT PI RADIANS AND EDOT AT PI/4 RAD/SEC.
063213,000414: # (EXCEPT THE RUFLAW3 ENTRY WHEN E IS AT PI/4)
063214,000415:
063215,000416: # RUFLAW1: ERROR MORE NEGATIVE THAN PI/16 RAD. FIRE TO A RATE OF PI/32 RAD/SEC (IF JET TIME EXCEEDS 20 MSEC.).
063216,000417: # RUFLAW2: ERROR MORE POSITIVE THAN PI/16 RAD. FIRE TO OPPOSING RATE OF PI/32 RAD/SEC.
063217,000418: # RUFLAW3: ERROR RATE GREATER THAN PI/32 RAD/SEC AND ERROR WITHIN BOUNDS. COAST IF BELOW FIREFCT, FIRE IF ABOVE
063218,000419:
063219,000420: 17,3565 44740 RUFLAW1 CS BIT12 # DECREMENT EDOT BY PI/32 RAD/SEC, WHICH
063220,000421: 17,3566 27425 ADS EDOT # IS THE TARGET RATE.
063221,000422: 17,3567 00006 EXTEND
063222,000423: 17,3570 63611 BZMF SMALRATE # BRANCH IF RATE LESS THAN TARGET.
063223,000424: 17,3571 03647 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
063224,000425: 17,3572 31425 CAE EDOT # PICK UP DESIRED RATE CHANGE.
063225,000426:
063226,000427: 17,3573 00006 RUFLAW12 EXTEND # COMPUTE TJET
063227,000428: 17,3574 51742 INDEX ADRSDIF2 # = (DESIRED RATE CHANGE)/(2-JET ACCEL.)
063228,000429: 17,3575 71571 MP 1/ANET1 +2
063229,000430: 17,3576 67740 AD -1/8 # IF TJET, SCALED AT 32 SEC, EXCEEDS
063230,000431: 17,3577 00006 EXTEND # 4 SECONDS, SET TJET TO TJMAX.
063231,000432: 17,3600 63602 BZMF +2
063232,000433: 17,3601 13422 TCF FULLTIME
063233,000434: 17,3602 00006 EXTEND
063234,000435: 17,3603 13422 BZF FULLTIME
063235,000436: 17,3604 64740 AD BIT12 # RESTORE COMPUTED TJET TO ACCUMULATOR.
063236,000437: 17,3605 20001 DAS A
063237,000438: 17,3606 20001 DAS A
063238,000439: 17,3607 20001 DAS A # RESCALED TJET AT 4 SECONDS.
063239,000440: 17,3610 13560 TCF CHKMINTJ # RETURN AS FROM FINELAW.
063240,000441:
063241,000442: 17,3611 03651 SMALRATE TC RUFSETUP +2 # SET NUMBERT AND FIREFCT FOR MAXIMUM JETS
063242,000443: 17,3612 11736 CCS ROTSENSE
063243,000444: 17,3613 34753 CAF ONE # MODIFY INDEXER TO POINT TO 1/ANET
063244,000445: 17,3614 13616 TCF +2 # CORRESPONDING TO THE PROPER SENSE.
063245,000446: 17,3615 37746 CAF NEGONE
063246,000447: 17,3616 27742 ADS ADRSDIF2
063247,000448:
063248,000449: 17,3617 41425 CS EDOT # PICK UP (PI/32-EDOT)=DESIRED CHANGE.
063249,000450: 17,3620 13573 TCF RUFLAW12
063250,000451:
063251,000452: 17,3621 03647 RUFLAW2 TC RUFSETUP # REVERSE ROTSENSE AND INDICATE MAX JETS.
063252,000453: 17,3622 34740 CAF BIT12
063253,000454: 17,3623 61425 AD EDOT # PICK UP(PI/32+EDOT) = DESIRED RATE CHANGE
063254,000455: 17,3624 54000 TS A # IF OVERFLOW SKIP, FIRE FOR FULL TIME.
063255,000456:
|
Page 1463 |
063257,000458: 17,3625 13573 TCF RUFLAW12 # OTHERWISE, COMPUTE JET TIME.
063258,000459: 17,3626 13422 TCF FULLTIME
063259,000460:
063260,000461: 17,3627 03647 RUFLAW3 TC RUFSETUP # EXECUTE COMMON RUFLAW SUBROUTINE.
063261,000462: 17,3630 51744 INDEX ADRSDIF1
063262,000463: 17,3631 41601 CS FIREDB # CALCULATE DISTANCE FROM SWITCH CURVE
063263,000464: 17,3632 61750 AD E # 1/ANET1*EDOT*EDOT +E - FIREDB = 0
063264,000465: 17,3633 00006 EXTEND # SCALED AT 4 PI RADIANS
063265,000466: 17,3634 74741 MP BIT11
063266,000467: 17,3635 57425 XCH EDOT
063267,000468: 17,3636 00006 EXTEND
063268,000469: 17,3637 70000 SQUARE
063269,000470: 17,3640 00006 EXTEND
063270,000471: 17,3641 51744 INDEX ADRSDIF1
063271,000472: 17,3642 71571 MP 1/ANET1 +2
063272,000473: 17,3643 61425 AD EDOT
063273,000474: 17,3644 00006 EXTEND
063274,000475: 17,3645 63357 BZMF COASTTJ # COAST IF BELOW IT.
063275,000476: 17,3646 13422 TCF FULLTIME # FIRE FOR FULL PERIOD IF ABOVE IT.
063276,000477:
063277,000478: # SUBROUTINE USED IN ALL ENTRIES TO ROUGHLAW.
063278,000479:
063279,000480: 17,3647 41736 RUFSETUP CS ROTSENSE # REVERSE ROTSENSE WHEN ENTER HERE.
063280,000481: 17,3650 55736 TS ROTSENSE
063281,000482: 17,3651 34751 +2 CAF FOUR # REQUIRE MAXIMUM (2) JETS IN U,V-AXES.
063282,000483: 17,3652 55741 TS NUMBERT
063283,000484: 17,3653 34735 CAF NEGMAX # SUGGEST MAXIMUM (4) JETS IN P-AXIS.
063284,000485: 17,3654 55737 TS FIREFCT
063285,000486: 17,3655 00002 TC Q
063286,000487:
063287,000488: # CONSTANTS FOR TJETLAW
063288,000489:
063289,000490: 17,3656 77757 DEC -16 B-14 # AXISDIFF(INDEX) = NUMBER OF REGISTERS
063290,000491: 17,3657 00000 AXISDIFF DEC +0 B-14 # BETWEEN STORED 1/ACCS PARAMETERS FOR
063291,000492: 17,3660 00020 DEC 16 B-14 # THE INDEXED AXIS AND THE U-AXIS.
063292,000493: 17,3661 14400 SENSOR OCT 14400 # RATIO OF TJET SCALING WITHIN TJETLAW
063293,000494: # (4 SEC) TO SCALING FOR T6 (10.24 SEC).
063294,000495: 17,3662 76447 -2DEG DEC -.04444 # -2.0 DEGREES SCALED AT 45.
063295,000496: 17,3663 77750 -.0112A8 DEC -.00141 # -.01125 SEC(2) SCALED AT 8.
063296,000497: 17,3664 00632 .1AT4 DEC .025 # 0.1 SECOND SCALED AT 4.
063297,000498: 17,3665 01463 .1AT2 DEC .05 # 0.1 SEC SCALED AT 2.
063298,000499: 17,3666 00232 .0375AT4 DEC .00938 # .0375 SEC SCALED AT 4.
063299,000500: 17,3667 77462 -.025AT2 DEC -.0125 # -.025 SEC SCALED AT 2.
063300,000501: 17,3670 77631 -.025AT4 DEC -.00625
063301,000502: 17,3671 77145 -.05AT2 DEC -.025
063302,000503: 17,3672 75462 -.15AT2 DEC -.075
063303,000504: 17,3673 00007 25605 .00375A8 2DEC .00375 B-3
063304,000505:
063305,000506: 17,3675 76631 -TJMAX DEC -.0375 # LARGEST CALCULATED TIME. .150 SEC AT 4.
063306,000507: 17,3676 00122 TJMIN DEC .005 # SMALLEST ALLOWABLE TIME. .020 SEC AT 4.
|
Page 1464 |
063308,000509: 17,3677 77655 -TJMIN DEC -.005
End of include-file TJET_LAW.agc. Parent file is MAIN.agc