Source Code

045584,000001: # Copyright: Public domain. 045585,000002: # Filename: CM_ENTRY_DIGITAL_AUTOPILOT.agc 045586,000003: # Purpose: Part of the source code for Colossus, build 249. 045587,000004: # It is part of the source code for the Command Module's (CM) 045588,000005: # Apollo Guidance Computer (AGC), possibly for Apollo 8 and 9. 045589,000006: # Assembler: yaYUL 045590,000007: # Reference: Starts on p. 1038 of 1701.pdf. 045591,000008: # Contact: Ron Burkey <info@sandroid.org>. 045592,000009: # Website: www.ibiblio.org/apollo. 045593,000010: # Mod history: 08/27/04 RSB. Began transcribing. 045594,000011: # 2010-10-24 JL Indentation fixes. 045595,000012: 045596,000013: # The contents of the "Colossus249" files, in general, are transcribed 045597,000014: # from a scanned document obtained from MIT's website, 045598,000015: # http://hrst.mit.edu/hrs/apollo/public/archive/1701.pdf. Notations on this 045599,000016: # document read, in part: 045600,000017: 045601,000018: # Assemble revision 249 of AGC program Colossus by NASA 045602,000019: # 2021111-041. October 28, 1968. 045603,000020: 045604,000021: # This AGC program shall also be referred to as 045605,000022: # Colossus 1A 045606,000023: 045607,000024: # Prepared by 045608,000025: # Massachusetts Institute of Technology 045609,000026: # 75 Cambridge Parkway 045610,000027: # Cambridge, Massachusetts 045611,000028: # under NASA contract NAS 9-4065. 045612,000029: 045613,000030: # Refer directly to the online document mentioned above for further information. 045614,000031: # Please report any errors (relative to 1701.pdf) to info@sandroid.org. 045615,000032: 045616,000033: # In some cases, where the source code for Luminary 131 overlaps that of 045617,000034: # Colossus 249, this code is instead copied from the corresponding Luminary 131 045618,000035: # source file, and then is proofed to incorporate any changes. 045619,000036: 045620,000037: # Page 1038 045621,000038: # SUBROUTINE TO READ GYMBAL ANGLES AND FORM DIFFERENCES. GIMBAL ANGLES ARE SAVED IN 2'S COMPLEMENT, BUT THE 045622,000039: # DIFFERENECES ARE IN 1'S COMP. ENTER AND READ ANGLES EACH .1 SEC. 045623,000040: 045624,000041: # CM/DSTBY = 1 FOR DAP OPERATION 045625,000042: # CM/DSTBY = 0 TO TERMINATE DAP OPERATION 045626,000043: 045627,000044: 15,2454 BANK 15 045628,000045: 045629,000046: 15,2000 SETLOC ETRYDAP 045630,000047: 15,2000 BANK 045631,000048: 045632,000049: 15,2454 COUNT 15/DAPEN 045633,000050: 045634,000051: 15,2454 E6,1661 EBANK= AOG 045635,000052: 045636,000053: 15,2454 34377 READGYMB CA TEN # KEEP RESTART DT GOING RELATIVE TO 045637,000054: 15,2455 27725 ADS CM/GYMDT # PIPTIME. (GROUP 6) 045638,000055: 045639,000056: # IF A RESTART OCCURS, SKIP PRESENT CYCLE. THE 045640,000057: # PHASCHNG PROTECTION IS IN CM/DAPIC. 045641,000058: 045642,000059: 15,2456 34705 CA BIT6 # CHECK FOR FINE ALIGN MODE OF CDU. 045643,000060: 15,2457 71321 MASK IMODES33 # (PROTECT AOG/PIP ETC AS WELL AS 045644,000061: 15,2460 00006 EXTEND # GIMBAL DIFFERENCES) 045645,000062: 15,2461 12467 BZF READGYM1 # OK 045646,000063: 045647,000064: 15,2462 44712 CS BIT1 # NOT IN FINE ALIGN, SO IDLE 045648,000065: 15,2463 70102 MASK CM/FLAGS # SET GYMDIFSW = 0 045649,000066: 15,2464 54102 TS CM/FLAGS 045650,000067: 15,2465 06000 TC FLUSHJET # QUENCH JETS, SINCE MAY BE A WHILE. 045651,000068: 15,2466 02534 TC CM/GYMIC +2 045652,000069: 045653,000070: 15,2467 30032 READGYM1 CA CDUX 045654,000071: 15,2470 57661 XCH AOG 045655,000072: 15,2471 00006 EXTEND 045656,000073: 15,2472 21661 MSU AOG # -DELAOG=AOG(N-1) - AOG(N) 045657,000074: 15,2473 55675 TS -DELAOG 045658,000075: 045659,000076: 15,2474 30033 CA CDUY 045660,000077: 15,2475 57662 XCH AIG 045661,000078: 15,2476 00006 EXTEND 045662,000079: 15,2477 21662 MSU AIG 045663,000080: 15,2500 55676 TS -DELAIG 045664,000081: 045665,000082: 15,2501 30034 CA CDUZ 045666,000083: 15,2502 57663 XCH AMG 045667,000084: 15,2503 00006 EXTEND 045668,000085: 15,2504 21663 MSU AMG 045669,000086: 15,2505 55677 TS -DELAMG 045670,000087: 045671,000088: # Page 1039 045672,000089: 15,2506 40102 DOBRATEW CS CM/FLAGS # CM/DSTBY=103D BIT2 GYMDIFSW=104D BIT1 045673,000090: 15,2507 76214 MASK THREE 045674,000091: 15,2510 50000 INDEX A 045675,000092: 15,2511 02512 TC +1 045676,000093: 15,2512 02521 TC DOBRATE # OK, GO ON 045677,000094: 15,2513 02532 TC CM/GYMIC # DON'T CALC BODYRATE ON FIRST PASS. 045678,000095: 15,2514 12515 NOOP 045679,000096: 15,2515 06000 TC FLUSHJET # TURN OFF ALL JETS 045680,000097: 045681,000098: 15,2516 05301 TC PHASCHNG 045682,000099: 15,2517 00006 OCT 00006 # DEACTIVATE DAP GROUP 6. 045683,000100: 045684,000101: 15,2520 05213 TC TASKOVER 045685,000102: 045686,000103: 15,2521 34712 DOBRATE CA ONE # DO BODYRATE 045687,000104: 15,2522 55720 DOBRATE1 TS JETEM # SKIP BODYRATE 045688,000105: 045689,000106: 15,2523 34377 CA TEN # KEEP CDU READ GOING. 045690,000107: 15,2524 05140 TC WAITLIST 045691,000108: 15,2525 E6,1661 EBANK= AOG 045692,000109: 15,2525 02454 32066 2CADR READGYMB 045693,000110: 045694,000111: # DOES NOT PROTECT TEMK, SQ IN SPSIN/COS 045695,000112: 045696,000113: 15,2527 11720 CCS JETEM 045697,000114: 15,2530 02556 TC BODYRATE 045698,000115: 15,2531 05213 TC TASKOVER # SKIP CALC ON INITIAL PASS. (PASSES) 045699,000116: 045700,000117: 15,2532 26102 CM/GYMIC ADS CM/FLAGS # GYMDIFSW: C(A)=1, KNOW BIT IS 0 045701,000118: 15,2533 34714 CAF ZERO 045702,000119: 15,2534 55711 TS JETAG 045703,000120: 15,2535 55706 TS OLDELP 045704,000121: 15,2536 55707 TS OLDELQ 045705,000122: 15,2537 55710 TS OLDELR 045706,000123: 15,2540 55723 TS GAMDOT # NO GYM DIF, PROB NO GAM DIF. 045707,000124: 15,2541 02522 TC DOBRATE1 045708,000125: 045709,000126: # Page 1040 045710,000127: # COME HERE TO CORRECT FOR OVERFLOW IN ANGULAR CALCULATIONS 045711,000128: 045712,000129: 15,2542 54001 ANGOVCOR TS L # THIS COSTS 2 MCT TO USE. 045713,000130: 15,2543 00002 TC Q # NO OVFL 045714,000131: 15,2544 50000 INDEX A 045715,000132: 15,2545 34673 CAF LIMITS 045716,000133: 15,2546 26001 ADS L 045717,000134: 15,2547 00002 TC Q 045718,000135: 045719,000136: 6000 BLOCK 3 045720,000137: 045721,000138: 6000 COUNT 03/DAPEN 045722,000139: 045723,000140: 6000 30007 FLUSHJET CA 7 # COME HERE TO TURN OFF ALL JETS. 045724,000141: 6001 00006 EXTEND 045725,000142: 6002 01006 WRITE ROLLJETS # ZERO CHANNEL 6 045726,000143: 6003 00006 EXTEND 045727,000144: 6004 01005 WRITE PYJETS # ZERO CHANNEL 5 045728,000145: 6005 00002 TC Q 045729,000146: 045730,000147: 15,2550 BANK 15 045731,000148: 045732,000149: 15,2550 COUNT 15/DAPEN 045733,000150: 045734,000151: 15,2000 SETLOC ETRYDAP 045735,000152: 15,2000 BANK 045736,000153: 045737,000154: 15,2550 40000 RATEAVG COM # SUBROUTINE TO ESTIMATE RATES IN PRESENCE 045738,000155: 15,2551 61720 AD JETEM # OF CONSTANT ACCELERATION. 045739,000156: 15,2552 00006 EXTEND 045740,000157: 15,2553 74675 MP HALF # DELV (EST) = DELV +(DELV-OLDELV)/2 045741,000158: 15,2554 61720 AD JETEM 045742,000159: 15,2555 00002 TC Q 045743,000160: 045744,000161: # Page 1041 045745,000162: # THESE ARE CALLED FOR THE VARIOUS INITIALIZATIONS NEEDED. 045746,000163: 045747,000164: 20,3565 BANK 20 045748,000165: 20,2000 SETLOC DAPS1 045749,000166: 20,2000 BANK 045750,000167: 045751,000168: 20,3565 COUNT 20/DAPEN 045752,000169: 20,3565 E6,1661 EBANK= AOG 045753,000170: 045754,000171: 20,3565 34752 CM/DAPON CA EBAOG 045755,000172: 20,3566 54003 TS EBANK 045756,000173: 045757,000174: 20,3567 05447 TC DOWNFLAG # RESET DAPBIT1. T5 RESTART IDENTIFIER. 045758,000175: 20,3570 00132 ADRES DAPBIT1 # BIT 15 FLAG 6 CMFLAGS. 045759,000176: 20,3571 05447 TC DOWNFLAG # RESET DAPBIT2 045760,000177: 20,3572 00133 ADRES DAPBIT2 # BIT 14 FLAG 6 045761,000178: 20,3573 00006 EXTEND 045762,000179: 20,3574 33712 DCA T5IDLER1 # DISABLE RCS CALCULATION 045763,000180: 20,3575 53313 DXCH T5LOC 045764,000181: 20,3576 00006 EXTEND 045765,000182: 20,3577 33712 DCA T5IDLER1 # DISABLE RCS JET CALLS 045766,000183: 20,3600 53311 DXCH T6LOC 045767,000184: 045768,000185: 20,3601 06000 TC FLUSHJET # JETS DEPARTED ON SM. ZERO JET BITS. 045769,000186: 045770,000187: 20,3602 47707 CS 13,14,15 045771,000188: 20,3603 71466 MASK DAPDATR1 # SET CONFIG BITS=0 FOR ENTRY 045772,000189: 20,3604 55466 TS DAPDATR1 045773,000190: 20,3605 03611 TC +4 045774,000191: 045775,000192: 20,3606 34731 NOTYET CA .5SEC 045776,000193: 20,3607 04555 TC BANKCALL 045777,000194: 20,3610 01732 CADR DELAYJOB # (DELAYJOB DOES INHINT) 045778,000195: 20,3611 34700 +4 CA BIT11 # GAMDIFSW = 94D BIT11, INITLY=0 045779,000196: 20,3612 70102 MASK CM/FLAGS # IF ZERO, WAIT UNTIL CM/POSE UPDATE. 045780,000197: 20,3613 00006 EXTEND 045781,000198: 20,3614 13606 BZF NOTYET 045782,000199: 045783,000200: 20,3615 44712 CS ONE # ACTIVATE CM/DAP 045784,000201: 20,3616 55501 TS RCSFLAGS # USE BIT3 TO INITIALIZE NEEDLER ON 045785,000202: # NEXT PASS. 045786,000203: 20,3617 55727 TS P63FLAG # SO WAKEP62 WILL NOT BE INITIATED UNTIL 045787,000204: # HEADSUP IS SET IN P62. 045788,000205: 045789,000206: # FLAG TO PREVENT MULTIPLE CALLS TO WAKEP62 045790,000207: 045791,000208: 20,3620 30007 CA 7 045792,000209: 20,3621 55711 TS JETAG 045793,000210: 20,3622 55713 TS PAXERR1 # KEEP NEEDLES ZERO UNTIL DAP UPDATE 045794,000211: # IN CASE CMDAPMOD IS NOT +1. 045795,000212: # Page 1042 045796,000213: 20,3623 00004 INHINT 045797,000214: 20,3624 00006 EXTEND 045798,000215: 20,3625 31666 DCA ALFA/180 # DO ATTITUDE HOLD UNTIL KEYBOARD 045799,000216: 20,3626 53604 DXCH ALFACOM # ESTABLISHES HEADSUP. 045800,000217: 20,3627 31664 CA ROLL/180 045801,000218: 20,3630 55717 TS ROLLHOLD # FOR ATTITUDE HOLD IN MODE +1. 045802,000219: 20,3631 00006 EXTEND 045803,000220: 20,3632 74675 MP HALF 045804,000221: 20,3633 55715 TS ROLLC # NOT INTERESTED IN LO WORD. 045805,000222: 045806,000223: 20,3634 40102 CS CM/FLAGS 045807,000224: 20,3635 74677 MASK BIT12 # CMDAPARM =93D BIT12 INITLY=0 045808,000225: 20,3636 26102 ADS CM/FLAGS # SET BIT TO 1. 045809,000226: 045810,000227: 20,3637 40076 CS FLAGWRD2 # SET NODOFLAG TO PREVENT FURTHER 045811,000228: 20,3640 74712 MASK BIT1 # V 37 ENTRIES. 045812,000229: 20,3641 26076 ADS FLAGWRD2 045813,000230: 045814,000231: 20,3642 00003 RELINT 045815,000232: 045816,000233: 20,3643 04574 TC POSTJUMP 045817,000234: 20,3644 54342 CADR P62.1 045818,000235: 045819,000236: # Page 1043 045820,000237: # INITIALIZE CM/DAP. WAITLIST CALL FOR READGYMB. SET SWITCH CM/DSTBY =1 045821,000238: # SO READACCS WILL ENTER A WTLST CALL FOR SETJTAG . 045822,000239: # CMDAPARM = 0, SO ONLY BODY RATE AND ATTITUDE CALCULATIONS ARE DONE. 045823,000240: # SET AVEGEXIT TO CONTINUE AT CM/POSE 045824,000241: 045825,000242: 20,3645 34752 CM/DAPIC CA EBAOG 045826,000243: 20,3646 54003 TS EBANK 045827,000244: 045828,000245: 20,3647 00004 INHINT 045829,000246: 20,3650 41205 CM/DAP2C CS PIPTIME +1 045830,000247: # PRIO OF P62 L PRIO AVG, 'PIPTM=PIPTM1. 045831,000248: 20,3651 55720 TS JETEM 045832,000249: 045833,000250: 20,3652 34675 CA POS1/2 045834,000251: 20,3653 64675 AD POS1/2 045835,000252: 20,3654 60025 AD TIME1 # OVFL GUARANTEED 045836,000253: 20,3655 27720 ADS JETEM # C(A) = DELTA TIME SINCE PIPUP 045837,000254: 045838,000255: 20,3656 44715 CS FIVE 045839,000256: 20,3657 61720 AD JETEM 045840,000257: 20,3660 10000 CCS A 045841,000258: 20,3661 63710 AD -CDUT+1 045842,000259: 20,3662 13660 TCF -2 045843,000260: 20,3663 13664 NOOP 045844,000261: 20,3664 64712 AD ONE # SEND NO ZERO TO WTLST 045845,000262: 20,3665 55725 TS CM/GYMDT # FOR RESTART 045846,000263: 20,3666 05140 TC WAITLIST 045847,000264: 20,3667 E6,1661 EBANK= AOG 045848,000265: 20,3667 02454 32066 2CADR READGYMB 045849,000266: 045850,000267: 20,3671 43707 CS CM/SWIC1 # GAMDIFSW, GYMDIFSW, CM/DSTBY 045851,000268: 20,3672 70102 MASK CM/FLAGS # DAPARM, .05GSW, LATSW, ENTRYDSP 045852,000269: 20,3673 64377 AD CM/SWIC2 # SET CM/DSTBY, LATSW 045853,000270: # DISABLE ENTRY DISPLAY, SINCE DES. GIMB. 045854,000271: # CALC. (P62.3) GOES TO ENDEXIT 045855,000272: 20,3674 54102 TS CM/FLAGS 045856,000273: 045857,000274: 20,3675 30007 CA 7 045858,000275: 20,3676 55666 TS BETA/180 # NECESSARY: NO OVFL CORRECTIO 045859,000276: 20,3677 34712 CA ONE # INITIALIZE THE TM OF BODY RATES VIA 045860,000277: 20,3700 54305 TS SW/NDX # UPBUFF. 045861,000278: 045862,000279: 20,3701 05261 TC 2PHSCHNG # DOES INHINT/RELINT 045863,000280: 20,3702 40116 OCT 40116 # SAVE TBASE6 045864,000281: 20,3703 05024 OCT 05024 045865,000282: 20,3704 13000 OCT 13000 045866,000283: 045867,000284: 20,3705 04574 TC POSTJUMP 045868,000285: # Page 1044 045869,000286: 20,3706 54326 CADR P62.2 045870,000287: 045871,000288: 20,3707 16017 CM/SWIC1 OCT 16017 045872,000289: 20,3710 4377 CM/SWIC2 = TEN # 00012: CM/DSTBY, LATSW 045873,000290: 20,3710 77766 -CDUT+1 OCT 77766 045874,000291: 20,3711 1312 EBANK= T5LOC 045875,000292: 20,3711 03143 12062 T5IDLER1 2CADR T5IDLOC 045876,000293: 045877,000294: # Page 1045 045878,000295: # THIS SECTION CALCULATES THE ANGULAR BODY RATES EACH .1 SEC. THE ANGULAR RATES ARE THOSE ALONG THE BODY AXES 045879,000296: # XB, YB, ZB, AND ARE NORMALLY DESIGNATED P, Q, R. REQIREMENT: TEMPORARILY ERASE. JETEM, JETEM +1 045880,000297: 045881,000298: # SINCE RESTARTS ZERO THE JET OUTPUT CHANNELS, NO ATTEMPT IS MADE TO RESTART THE ENTRY DAPS. THAT IS, 045882,000299: # THE 0.1 SEC DAPS WILL MISS A CYCLE, AND WILL PICK UP AT THE NEXT 0.1 SEC UPDATE. MOST OF THE TIME THE 2 SEC 045883,000300: # ROLL SYSTEM WILL MISS ONLY 0.1 SEC OF CONTROL. HOWEVER, IF THE RESTART OCCURS AFTER THE SECTION TIMETST HAS 045884,000301: # STARTED, THEN THE ROLL SYSTEM WILL MISS ONE CYCLE. 045885,000302: # THIS IS NECESSARY UNDER THE GROUND-RULE THAT NO JET COMMANDS SHALL BE LESS THAN 14 MS. 045886,000303: 045887,000304: 20,3713 E6,1661 EBANK= AOG 045888,000305: 15,2556 BANK 15 045889,000306: 15,2000 SETLOC ETRYDAP 045890,000307: 15,2000 BANK 045891,000308: 045892,000309: 15,2556 COUNT 15/DAPEN 045893,000310: 045894,000311: 15,2556 31663 BODYRATE CA AMG # THESE ARE 2'S COMPL NOS, BUT USE ANYWAY. 045895,000312: 15,2557 04767 TC SPCOS 045896,000313: 15,2560 55511 TS COSM 045897,000314: 045898,000315: 15,2561 31661 CA AOG # C(AOG) = AOG/180 045899,000316: 15,2562 04770 TC SPSIN # SINO 045900,000317: 15,2563 55512 TS SINO # SINO = SIN(AOG) 045901,000318: 045902,000319: 15,2564 00006 EXTEND 045903,000320: 15,2565 71511 MP COSM 045904,000321: 15,2566 55514 TS SINOCOSM # SO CM 045905,000322: 045906,000323: 15,2567 31661 CA AOG 045907,000324: 15,2570 04767 TC SPCOS # COSO 045908,000325: 15,2571 55513 TS COSO 045909,000326: 045910,000327: 15,2572 00006 EXTEND 045911,000328: 15,2573 71511 MP COSM 045912,000329: 15,2574 55515 TS COSOCOSM # CO CM 045913,000330: 045914,000331: # PITCHDOT: Q TCDU/180 = IDOT TCDU/180 COSO COSM + MDOT TCDU/180 SINO 045915,000332: 045916,000333: 15,2575 41677 CS -DELAMG 045917,000334: 15,2576 00006 EXTEND 045918,000335: 15,2577 71512 MP SINO 045919,000336: 15,2600 53721 DXCH JETEM # 2 LOCS 045920,000337: 15,2601 41676 CS -DELAIG 045921,000338: 15,2602 00006 EXTEND 045922,000339: 15,2603 71515 MP COSOCOSM 045923,000340: 15,2604 21721 DAS JETEM 045924,000341: 15,2605 31720 CA JETEM 045925,000342: 15,2606 57707 XCH OLDELQ 045926,000343: 15,2607 02550 TC RATEAVG 045927,000344: 15,2610 55702 TS QREL # PITCHDOT = Q TCDU/180 045928,000345: 045929,000346: # Page 1046 045930,000347: # YAWDOT: R TCDU/180 = -IDOT TCDU/180 COSM SINO + MDOT TCDU/180 COSO 045931,000348: 045932,000349: 15,2611 41677 CS -DELAMG 045933,000350: 15,2612 00006 EXTEND 045934,000351: 15,2613 71513 MP COSO 045935,000352: 15,2614 53721 DXCH JETEM 045936,000353: 15,2615 31676 CA -DELAIG 045937,000354: 15,2616 00006 EXTEND 045938,000355: 15,2617 71514 MP SINOCOSM 045939,000356: 15,2620 21721 DAS JETEM 045940,000357: 15,2621 31720 CA JETEM 045941,000358: 15,2622 57710 XCH OLDELR 045942,000359: 15,2623 02550 TC RATEAVG 045943,000360: 15,2624 55703 TS RREL # YAWDOT = R TCDU/180 045944,000361: 045945,000362: # ROLLDOT: P TCDU/180 = CDOT TCDU/180 + IDOT/180 SINM 045946,000363: 045947,000364: 15,2625 31663 CA AMG 045948,000365: 15,2626 04770 TC SPSIN 045949,000366: 15,2627 55510 TS SINM 045950,000367: 045951,000368: 15,2630 00006 EXTEND 045952,000369: 15,2631 71676 MP -DELAIG 045953,000370: 15,2632 55720 TS JETEM 045954,000371: 15,2633 34714 CA ZERO 045955,000372: 15,2634 20001 DDOUBL # ROUND L INTO A 045956,000373: 15,2635 61675 AD -DELAOG 045957,000374: 15,2636 61720 AD JETEM 045958,000375: 15,2637 40000 CS A 045959,000376: 15,2640 55720 TS JETEM 045960,000377: 15,2641 57706 XCH OLDELP 045961,000378: 15,2642 02550 TC RATEAVG 045962,000379: 15,2643 55701 TS PREL # ROLLDOT = P TCDU/180 045963,000380: 045964,000381: # IF GAMDOT < 0.5 DEG/SEC, THEN GAMDOT =0 045965,000382: 045966,000383: 15,2644 11723 CCS GAMDOT 045967,000384: 15,2645 02647 TC +2 045968,000385: 15,2646 02671 TC NOGAMDUT 045969,000386: 15,2647 41664 CS ROLL/180 045970,000387: 15,2650 04770 TC SPSIN 045971,000388: 15,2651 00006 EXTEND 045972,000389: 15,2652 71723 MP GAMDOT 045973,000390: 15,2653 55721 TS JETEM +1 # -SR GAMDOT 045974,000391: 15,2654 00006 EXTEND 045975,000392: 15,2655 73217 MP SINTRIM # SIN(-20) (FOR NOMINAL L/D = .3) 045976,000393: 15,2656 27701 ADS PREL # PREL TCDU/180=(P-SALF SR GAMDOT)TCDU/180 045977,000394: 045978,000395: 15,2657 31664 CA ROLL/180 045979,000396: 15,2660 04767 TC SPCOS 045980,000397: # Page 1047 045981,000398: 15,2661 40000 COM 045982,000399: 15,2662 00006 EXTEND 045983,000400: 15,2663 71723 MP GAMDOT 045984,000401: 15,2664 27702 ADS QREL # QREL TCDU/180=(Q-CR GAMDOT) TCDU/180 045985,000402: 045986,000403: 15,2665 41721 CS JETEM +1 # B( ) = -SR GAMDOT 045987,000404: 15,2666 00006 EXTEND 045988,000405: 15,2667 73220 MP COSTRIM # COS(-20) (FOR NOMINAL L/D = /3) 045989,000406: 15,2670 27703 ADS RREL # RREL TCDU/180=(R+CALF SR GAMDOT)TCDU/180 045990,000407: 045991,000408: 15,2671 34677 NOGAMDUT CA BIT12 # CMDAPARM = 93D BIT 12 045992,000409: 15,2672 70102 MASK CM/FLAGS 045993,000410: 15,2673 00006 EXTEND 045994,000411: 15,2674 15213 STBYDUMP BZF TASKOVER # DAP NOT ARMED. 045995,000412: 045996,000413: 15,2675 34672 CA POSMAX # PICK UP AT ATTRATES IN 10 MS OR SO. 045997,000414: 15,2676 54030 TS TIME5 045998,000415: 045999,000416: 15,2677 00006 EXTEND 046000,000417: 15,2700 32704 DCA ATDOTCAD 046001,000418: 15,2701 53313 DXCH T5LOC 046002,000419: # DOES NOT PROTECT TEMK, SQ IN SPSIN/COS 046003,000420: 046004,000421: 15,2702 05213 TC TASKOVER 046005,000422: 046006,000423: 15,2703 E6,1661 EBANK= AOG 046007,000424: 15,2703 02705 32066 ATDOTCAD 2CADR ATTRATES 046008,000425: 046009,000426: # Page 1048 046010,000427: # CALCULATE BODY ATTITUDE RATES AND INTEGRATE TO OBTAIN ATTITUDE ANGLES. 046011,000428: 046012,000429: # CB PHIDOT TCDU/180 = (CA PREL + SA RREL) TCDU/180 046013,000430: # BETADOT TCDU/180 = (-SA PREL + CA RREL) TCDU/180 046014,000431: # ALFADOT TCDU = (QREL + SB PHIDOT) TCDU/180 046015,000432: 046016,000433: 15,2705 22016 ATTRATES LXCH BANKRUPT # CONTINUE HERE VIA T5 046017,000434: 15,2706 00006 EXTEND # TASK MAY BE SKIPPED AT RESTART. 046018,000435: 15,2707 22012 QXCH QRUPT 046019,000436: 15,2710 30021 CA SR 046020,000437: 15,2711 60000 DOUBLE 046021,000438: 15,2712 55623 TS CM/SAVE 046022,000439: # DOES NOT PROTECT TEMK, SQ IN SPSIN/COS 046023,000440: 046024,000441: 15,2713 31702 CA QREL 046025,000442: 15,2714 61665 AD ALFA/180 046026,000443: 15,2715 02542 TC ANGOVCOR 046027,000444: 15,2716 55665 TS ALFA/180 046028,000445: 15,2717 04767 TC SPCOS 046029,000446: 15,2720 55506 TS CALFA # CALFA 046030,000447: 15,2721 55705 TS PHIDOT 046031,000448: 046032,000449: 15,2722 00006 EXTEND 046033,000450: 15,2723 71701 MP PREL 046034,000451: 15,2724 57705 XCH PHIDOT # CA PREL 046035,000452: 15,2725 00006 EXTEND 046036,000453: 15,2726 71703 MP RREL # CA RREL 046037,000454: 15,2727 55704 TS BETADOT 046038,000455: 046039,000456: 15,2730 31665 CA ALFA/180 046040,000457: 15,2731 04770 TC SPSIN 046041,000458: 15,2732 55507 TS SALFA # SIN(ALFA) 046042,000459: 046043,000460: 15,2733 00006 EXTEND 046044,000461: 15,2734 71703 MP RREL # SA RREL 046045,000462: 15,2735 27705 ADS PHIDOT # CB PHIDOT, SAVED. 046046,000463: 046047,000464: 15,2736 41507 CS SALFA 046048,000465: 15,2737 00006 EXTEND 046049,000466: 15,2740 71701 MP PREL 046050,000467: 15,2741 27704 ADS BETADOT # SAVE BETADOT TCDU/180 046051,000468: 15,2742 27666 ADS BETA/180 # BETA DONE. 046052,000469: 046053,000470: 15,2743 04770 TC SPSIN 046054,000471: 15,2744 00006 EXTEND 046055,000472: 15,2745 71705 MP PHIDOT # NEGLECT CB IN CB PHIDOT 046056,000473: 15,2746 61665 AD ALFA/180 046057,000474: 15,2747 02542 TC ANGOVCOR 046058,000475: 15,2750 55665 TS ALFA/180 # ALFA DONE. 046059,000476: # Page 1049 046060,000477: 15,2751 40000 COM 046061,000478: 15,2752 61603 AD ALFACOM 046062,000479: 15,2753 02542 TC ANGOVCOR # JUST IN CASE ... 046063,000480: 15,2754 55477 TS AK1 046064,000481: 15,2755 55572 TS QAXERR # FOR PITCH FDAI AND EDIT. 046065,000482: 046066,000483: 15,2756 31705 CA PHIDOT # PHIDOT TCDU/180, NEGLECTING CB 046067,000484: 15,2757 61664 AD ROLL/180 046068,000485: 15,2760 02542 TC ANGOVCOR 046069,000486: 15,2761 55714 TS ROLLTM # ROLL/180 FOR TM. 046070,000487: 15,2762 55664 TS ROLL/180 # ROLL DONE. 046071,000488: 046072,000489: # START YAW AUTOPILOT HERE. RATE DAMPING WITH ENFORCED COORDINATED ROLL MANEUVER. 046073,000490: 046074,000491: 15,2763 34710 CA BIT3 # .05GSW = 102D BIT3 SW=0, LESS .05G 046075,000492: 15,2764 70102 MASK CM/FLAGS # SWITCH =1, GREATER THAN .05 G 046076,000493: 15,2765 00006 EXTEND 046077,000494: 15,2766 13054 BZF EXDAP # IF G LESS THAN .05 046078,000495: 15,2767 44712 CS ONE # IF G GEQ THAN .05 046079,000496: 15,2770 55700 TS CMDAPMOD # SAVE -1 FOR USE IN CM/RCS 046080,000497: 046081,000498: 15,2771 55477 TS AK1 # TO ZERO PITCH AND YAW FDAI NEEDLES 046082,000499: 15,2772 55500 TS AK2 # IN ATM. (MODE =-1) 046083,000500: 046084,000501: 15,2773 41701 CS PREL # YAW ERROR = RREL - PREL TAN(ALFA) 046085,000502: 15,2774 00006 EXTEND 046086,000503: 15,2775 73217 MP SINTRIM # LET SIN(-20) BE APPROX FOR TAN(-20) 046087,000504: 15,2776 61703 AD RREL 046088,000505: 15,2777 03044 TC 2D/SDZ # GO TEST DZ. GET TAG: +0 IF IN DZ 046089,000506: 15,3000 50000 INDEX A # +/- 1 IF NOT 046090,000507: 15,3001 33222 CAF YJETCODE 046091,000508: 046092,000509: 15,3002 55720 TS JETEM 046093,000510: 046094,000511: # START PITCH AUTOPILOT HERE. RATE DAMPING ONLY. 046095,000512: 046096,000513: 15,3003 31702 CA QREL 046097,000514: 15,3004 03044 TC 2D/SDZ 046098,000515: 15,3005 50000 EXDAPIN INDEX A # COME HERE FROM EX ATM DAP 046099,000516: 15,3006 33225 CAF P/RJCODE 046100,000517: 15,3007 27720 ADS JETEM # COMBINE ALL NEW BITS. 046101,000518: 046102,000519: 15,3010 00006 EXTEND # DOES NOT REQUIRE SAVING OLD CODES. 046103,000520: 15,3011 01005 WRITE PYJETS # SET PYCHAN TO DESIRED BIT CONFIG. 046104,000521: 046105,000522: 15,3012 11711 CCS JETAG 046106,000523: 15,3013 03236 TC CM/RCS 046107,000524: 15,3014 03716 TC CM/FDAI 046108,000525: 15,3015 03723 TC CM/FDAIR -1 # (JETAG=-1 EQUIVALENT TO CMDAPMOD=+1) 046109,000526: 046110,000527: # Page 1050 046111,000528: # DEAD ZONE LOGIC USED BY ENTRY DIGITAL AUTOPILOTS. 046112,000529: 046113,000530: 15,3016 10000 3DDZ CCS A # YAWLIM=1.0-3/180=16384-273=16111 046114,000531: 15,3017 63215 AD YAWLIM 046115,000532: 15,3020 13050 TCF DZCOM 046116,000533: 15,3021 63215 AD YAWLIM 046117,000534: 15,3022 13051 TCF DZNOCOM 046118,000535: 046119,000536: # BIASED DZ FOR EXT ATM DAP. 046120,000537: 15,3023 55624 BIASEDZ TS JETEM2 # SAVE RATE/180. ERROR/180 IS IN L. 046121,000538: 15,3024 10000 CCS A # START ERROR DZ. 046122,000539: 15,3025 43214 CS CM/BIAS # = .6/180 046123,000540: 15,3026 13030 TCF +2 046124,000541: 15,3027 33214 CA CM/BIAS 046125,000542: 15,3030 60001 AD L # BIAS THE ERROR. 046126,000543: 15,3031 22002 LXCH Q # SAVE CALLER'S RETURN ADDRES. 046127,000544: 15,3032 03016 TC 3DDZ # GO GENERATE THE ERROR BIT. 046128,000545: 15,3033 52002 DXCH L # BIT TO L, RESTORE CALLER'S Q. 046129,000546: 15,3034 11624 4D/SDZ CCS JETEM2 # CAME HERE IN EXT ATM. C(L) = ERROR BIT 046130,000547: 15,3035 63212 AD 4D/SLIM # IF RATE GEQ 4D/S, SET L=0 AND TAKE 046131,000548: 15,3036 13040 TCF +2 # JET BITS ACCORDING TO SGN OF RATE. 046132,000549: 15,3037 63212 AD 4D/SLIM 046133,000550: 15,3040 54000 TS A 046134,000551: 15,3041 13043 TCF +2 # RATE OK. CONTINUE 046135,000552: 15,3042 22007 ZL # RATE GEQ 4 D/S. OVER RIDE ERROR BIT 046136,000553: 15,3043 57624 XCH JETEM2 # AND CONTINUE TO GET SIGN. 046137,000554: 046138,000555: 15,3044 10000 2D/SDZ CCS A # COME HERE TO TEST IF A WITHIN 2DEG/S DZ 046139,000556: 15,3045 63213 AD YDOTLIM # 1.0 - YDOT DZ (OR PDOT) 046140,000557: 15,3046 13051 TCF +3 046141,000558: 15,3047 63213 AD YDOTLIM # YDOT DZ = 2 DEG/SEC 046142,000559: 15,3050 40000 DZCOM COM 046143,000560: 15,3051 55721 DZNOCOM TS JETEM +1 # GENERATE TAG, SET C(A)= -+1 OUTSIDE DZ 046144,000561: 15,3052 34714 CA ZERO # SET C(A) = +0 INSIDE 046145,000562: 15,3053 00002 TC Q 046146,000563: 046147,000564: # Page 1051 046148,000565: # EXTRA ATMOSPHERIC DIGITAL AUTOPILOT 046149,000566: 046150,000567: # 1. IF ABS(CALF) -C(45) POS, USE IF CALFA POS, CMDAPMOD= +0 046151,000568: # BETA: YAW ERROR = SGN(CALF) (BETACOM -BETA) IF CALFA NEG, CMDAPMOD= -0 046152,000569: # RATE = BETADOT IF CMDAPMOD = -0, RATE = RREL 046153,000570: # R-AXIS = CONTROL 046154,000571: 046155,000572: # ROLL: ROLL ERROR = SGN(CALF) (ROLLC - ROLL) IF CMDAPMOD = -0, RATE DAMP ONLY. 046156,000573: # RATE = PREL 046157,000574: # P-AXIS = CONTROL 046158,000575: 046159,000576: # 2. IF C(45) GEQ CALFA GEQ -C(45), USE CMDAPMOD = +1 046160,000577: # BETA: ROLL ERROR = SGN(-SALF) (BETACOM -BETA) 046161,000578: # RATE = BETADOT 046162,000579: # P-AXIS = CONTROL 046163,000580: 046164,000581: # ROLL: YAW ERROR = SGN(SALF) (ROLLC - ROLL) RATE DAMP ONLY. 046165,000582: # RATE = RREL 046166,000583: # R-AXIS = CONTROL 046167,000584: 046168,000585: # 3. FOR ALL CASES, USE 046169,000586: # ALFA: PITCH ERROR = (ALFACOM - ALFA) 046170,000587: # RATE = QREL 046171,000588: # Q-AXIS = CONTROL 046172,000589: 046173,000590: 15,3054 55700 EXDAP TS CMDAPMOD # +0 FOR NOW 046174,000591: 15,3055 41666 CS BETA/180 046175,000592: 15,3056 61604 AD BETACOM 046176,000593: 15,3057 55721 TS JETEM +1 # PRESERV THIS FOR A WHILE. 046177,000594: 046178,000595: 15,3060 11506 CCS CALFA 046179,000596: 15,3061 63216 AD C45LIM # =1.0-COS(45) 046180,000597: 15,3062 13064 TCF +2 046181,000598: 15,3063 63216 AD C45LIM 046182,000599: 15,3064 54000 TS A 046183,000600: 15,3065 13146 TCF EXDAP2 # HERE IF ABS(CALFA) L COS(45) 046184,000601: 046185,000602: 15,3066 11506 CCS CALFA # |CALFA| > 0.707 046186,000603: 15,3067 13070 TCF +1 # CONTINUE IF POS 046187,000604: # Page 1052 -- Blank -- RSB 2004 046188,000605: # Page 1053 046189,000606: 15,3070 11727 CCS P63FLAG # VALID VALUES ARE: -1, +1, +0. 046190,000607: 15,3071 03104 TC EXDAP4 046191,000608: 15,3072 03074 TC +2 046192,000609: 15,3073 03104 TC EXDAP4 046193,000610: 15,3074 05301 TC PHASCHNG # SINGLE PASS THROUGH HERE. 046194,000611: 15,3075 40334 OCT 40334 046195,000612: 15,3076 44712 CS ONE 046196,000613: 15,3077 55727 TS P63FLAG # SET FLAG TO ASSURE SINGLE PASS. 046197,000614: # Page 1054 -- Is blank -- RSB 2004 046198,000615: # Page 1055 046199,000616: 15,3100 33211 CA NSEC 046200,000617: 15,3101 05140 TC WAITLIST 046201,000618: 15,3102 E6,1661 EBANK= AOG 046202,000619: 15,3102 02374 54066 2CADR WAKEP62 # CALL TO TERMINATE P62 IN N SEC. 046203,000620: 046204,000621: # 65 DEG/ 3DEG/SEC = 21 SEC NOMINAL 046205,000622: # TRANSIT TIME FROM ALFA=45 TO ALFA TRIM. 046206,000623: 046207,000624: 15,3104 11711 EXDAP4 CCS JETAG # ROLLJET INTERFACE TEST BETWEEN .1 SEC 046208,000625: 15,3105 13113 TCF EXDAP3 # DAP AND THE 2 SEC CM/RCS DAP 046209,000626: 15,3106 13113 TCF EXDAP3 046210,000627: 15,3107 34714 CA ZERO 046211,000628: 15,3110 00006 EXTEND # TURN OFF ROLL JETS IF ON AND WAIT 046212,000629: 15,3111 01006 WRITE ROLLJETS # UNTIL START OF 2 SEC CM/RCS CYCLE 046213,000630: 15,3112 55711 TS JETAG # RESTORE PROPER VALUE +0 046214,000631: 046215,000632: # ROLL FDAI WILL BE IN ERROR UNTIL NEXT CM/RCS CALL. 046216,000633: 15,3113 11506 EXDAP3 CCS CALFA # HERE IF ABS(CALFA) GEQ COS(45) 046217,000634: 15,3114 31721 CA JETEM +1 046218,000635: 15,3115 13121 TCF EXDAP1 046219,000636: 15,3116 44714 CS ZERO 046220,000637: 15,3117 55700 TS CMDAPMOD # FOR CM/RCS 046221,000638: 15,3120 41721 CS JETEM +1 046222,000639: 15,3121 55573 EXDAP1 TS RAXERR # FOR YAW FDAI 046223,000640: 15,3122 55500 TS AK2 # WANT RAXERR FOR TM. 046224,000641: 15,3123 54001 TS L 046225,000642: 15,3124 11700 CCS CMDAPMOD # COORDINATE BETA CONTROL. 046226,000643: 15,3125 03130 TC +3 # C(CMDAPMOD) CAN BE +1, +0, OR -0. 046227,000644: 15,3126 34712 CA ONE # USE BETADOT TO COORD IN MODE +0 046228,000645: 15,3127 50000 INDEX A # OTHERWISE USE RREL. 046229,000646: 15,3130 31703 CA RREL 046230,000647: 15,3131 03023 TC BIASEDZ # GO TEST DZ +0 IF IN DX, +-1 OTHERWISE 046231,000648: # IF GEQ 4D/S, SET ERROR BIT IN L=0 046232,000649: 15,3132 00006 EXTEND 046233,000650: 15,3133 04001 ROR LCHAN # L HAS BETA BIT 046234,000651: 15,3134 50000 INDEX A 046235,000652: 15,3135 33222 CAF YJETCODE 046236,000653: 15,3136 55720 TS JETEM 046237,000654: 046238,000655: 15,3137 31572 CA QAXERR # ALFA ERROR. 046239,000656: 15,3140 54001 TS L 046240,000657: 15,3141 31702 CA QREL # FOR ALPHADOT USE QREL 046241,000658: 15,3142 03023 TC BIASEDZ 046242,000659: 15,3143 00006 EXTEND 046243,000660: 15,3144 04001 ROR LCHAN 046244,000661: 15,3145 13005 TCF EXDAPIN # CONTINUE ON IN DAP 046245,000662: 046246,000663: 15,3146 25700 EXDAP2 INCR CMDAPMOD # SET CMDAPMOD TO +1 046247,000664: 046248,000665: 15,3147 44712 CS ONE # INDICATE CHANGE FROM .1 SEC UPDATE TO 046249,000666: # Page 1056 -- blank -- RSB 2004. 046250,000667: # Page 1057 046251,000668: 15,3150 55711 TS JETAG # TO 2 SEC FOR ROLL JETS. (IF CMDAPMOD 046252,000669: # =0 AND JETAG =-1, QUENCHES JETS IF ON) 046253,000670: 046254,000671: 15,3151 11727 CCS P63FLAG # IF FLAG WAS +1, SET =0. 046255,000672: 15,3152 55727 TS P63FLAG 046256,000673: 15,3153 13154 NOOP 046257,000674: 046258,000675: 15,3154 11507 CCS SALFA # BETA CONTROL WITH P JETS 046259,000676: 15,3155 41721 CS JETEM +1 046260,000677: 15,3156 13160 TCF +2 046261,000678: 15,3157 31721 CA JETEM +1 046262,000679: 15,3160 55713 TS PAXERR1 # TEMP SAVE. ERROR/180 046263,000680: 15,3161 00006 EXTEND 046264,000681: 15,3162 74675 MP HALF # CM/FDAI EXPECTS ERROR/360. 046265,000682: 15,3163 57713 XCH PAXERR1 # ERROR/360 FOR FDAI, GET ERROR/180. 046266,000683: 15,3164 54001 TS L 046267,000684: 15,3165 11507 CCS SALFA 046268,000685: 15,3166 41704 CS BETADOT # USE BETADOT TO COORD IN MODE +1 046269,000686: 15,3167 03171 TC +2 046270,000687: 15,3170 31704 CA BETADOT 046271,000688: 15,3171 03023 TC BIASEDZ 046272,000689: 15,3172 00006 EXTEND 046273,000690: 15,3173 04001 ROR LCHAN 046274,000691: 15,3174 50000 INDEX A 046275,000692: 15,3175 33225 CAF P/RJCODE # GET ROLL CODE 046276,000693: 15,3176 00006 EXTEND # ROLL CONTROL WITH YAW JETS. 046277,000694: 15,3177 01006 WRITE ROLLJETS # WE'LL SKIP REGULAR ROLL SYSTE 046278,000695: 046279,000696: 15,3200 31717 CA ROLLHOLD # ROLL/180 AT CM/DAPON TIME. 046280,000697: 15,3201 00006 EXTEND 046281,000698: 15,3202 21664 MSU ROLL/180 # 1'S COMPL, BUT SO WHAT'S A BIT? 046282,000699: 15,3203 54001 TS L # FORCE A LIMIT CYCLE IN YAW RATE. 046283,000700: 15,3204 11507 CCS SALFA 046284,000701: 15,3205 30001 CA L # TO REMOVE ITS BIASING EFFECT ON M DOT. 046285,000702: 15,3206 03121 TC EXDAP1 046286,000703: 15,3207 40001 CS L 046287,000704: 15,3210 03121 TC EXDAP1 046288,000705: 046289,000706: 15,3211 04064 NSEC DEC 2100 B-14 # 65 DEG/ 3 DEG/SEC 046290,000707: # IF NSEC IS CHANGED, REMEMBER TO CHANGE 4.33SPOT. 046291,000708: 15,3212 37734 4D/SLIM DEC 16348 B-14 # 1.0 -4/180 D/S = 4/1800 EXP 14 046292,000709: 15,3213 37756 YDOTLIM DEC 16366 B-14 # =1.0 - YDOT DZ= 16384 -18 046293,000710: # YDOT DZ = YDOT TCDU/180 = 2/1800 EXP 14 046294,000711: 046295,000712: 15,3214 00067 CM/BIAS DEC 55 B-14 # =.6/180 B14 = 55 046296,000713: 15,3215 37267 YAWLIM DEC 16055 B-14 # YAWLIM=1.0-3.6/180=16384-329=16055 046297,000714: 15,3216 11277 C45LIM DEC .29289 # =1.0-COS(45) 046298,000715: 046299,000716: 15,3217 65033 SINTRIM DEC -.34202 # SIN(-20) (FOR NOMINAL L/D = .3) 046300,000717: 15,3220 36044 COSTRIM DEC .93969 # COS(-20) (FOR NOMINAL L/D = .3) 046301,000718: 046302,000719: # Page 1058 046303,000720: # TO MAKE DAP INSENSITIVE TO PITCH ERRORS DUE TO ACCUMULATED NAV ERRORS, USE NOMINAL VALUE (-20 DEG) FOR TRIM ALFA 046304,000721: # USED DURING ATMOSPHERIC COORDINATION. OUTSIDE ATMOSPHERE, NAV ERRORS WILL BE SLIGHT, BUT ALFA CAN DIFFER GREATLY 046305,000722: # FROM TRIM, SO USE ON-BOARD ESTIMATES. 046306,000723: 046307,000724: # JET CODE TABLES FOLLOW 046308,000725: 046309,000726: 15,3221 00120 OCTAL 00120 # POS Y 046310,000727: 15,3222 00000 YJETCODE OCTAL 00000 # RCS JET BITS 046311,000728: 15,3223 00240 OCTAL 00240 # NEG Y 046312,000729: 15,3224 00005 OCTAL 00005 # POS R JET BITS ALSO POS P JET BITS 046313,000730: 15,3225 00000 P/RJCODE OCTAL 00000 046314,000731: 15,3226 00012 OCTAL 00012 # NEG R ALSO NEG P 046315,000732: 046316,000733: # Page 1059 046317,000734: # RCS THIS SECTION IS ENTERED EACH 2 SEC BY WAITLIST CALL FOLLOWING A DELAY OF 1.2 SEC AFTER PIPUP. 046318,000735: # THE TASK SETJTAG SETS A FLAG IN JETAG TO SIGNIFY THAT ROLL UPDATE IS DUE. IN ROUGHLY 5 CS BPDYRATE WILL BE 046319,000736: # EXECUTED AND JETAG WILL CAUSE CM/RCS TO ACT ON ROLLC IMMEDIATELY THEREAFTER. THE 046320,000737: # TASK SAVES THE CALL TIME SO THAT CM/RCS CAN DETERMINE HOW MUCH OF THE 2 SEC INTERVAL REMAINS BEFORE THE 046321,000738: # NEXT UPDATE. 046322,000739: 046323,000740: 15,3227 40025 SETJTAG CS TIME1 # SAVE NOMINAL UPDATE TIME FOR SYNCH 046324,000741: 15,3230 55712 TS TUSED 046325,000742: # THE 5 CS APPEARS IN TIMETST. 046326,000743: 15,3231 34712 CA ONE # RATHER THAN INCR, FOR SAFETY 046327,000744: 15,3232 55711 TS JETAG # SET JETAG=1 TO CAUSE CM/RCS TO BE 046328,000745: 15,3233 05301 TC PHASCHNG 046329,000746: 15,3234 00001 OCT 00001 046330,000747: 046331,000748: 15,3235 05213 TC TASKOVER # EXECUTED AFTER NEXT BODYRATE UPDATE 046332,000749: 046333,000750: # PREDICTIVE ROLL SYSTEM ENTRY STEERING PROVIDES ROLL COMMAND IN LOC ROLLC. THE FOLLOWING CALCULATES THE 046334,000751: # TRAJECTORY TO THE ORIGIN IN PHASE PLANE (X,V). PROGRAM ENTERS JET ON AND OFF CALLS INTO WTLST TO PRODUCE 046335,000752: # THE DESIRED TRAJECTORY. ONLY THOSE CALLS WHICH CAN BE EXECUTED WITHIN THE INTERVAL T (2SEC) ARE ENTERED IN 046336,000753: # WTLST, THE REMAINDER ARE RECONSIDERED AT NEXT UPDATE. 046337,000754: 046338,000755: 15,3236 4674 HALFPR EQUALS NEG1/2 +1 046339,000756: 046340,000757: # CLEAR JETAG BEFORE TIMETST. SET TO +0 TO SHOW 046341,000758: # ROLL DAP CALLED. IN EVENT OF RESTART, BODYRATE 046342,000759: # MAY MISS A CYCLE. CM/RCS WILL MISS A CYCLE ONLY 046343,000760: # IF A RESTART OCCURS AFTER TIMETST COMMENCES. 046344,000761: 046345,000762: 15,3236 44712 CM/RCS CS ONE 046346,000763: 15,3237 55617 TS JNDX # SET NDX FOR POS ROLL, AND CHANGE LATER 046347,000764: 046348,000765: 15,3240 44726 CS 2T/TCDU # ROLLDOT = DELAOG + DELAIG SINM =DELR 046349,000766: 15,3241 00006 EXTEND 046350,000767: 15,3242 71701 MP PREL # DELR/180 = RDOT TCDU/180 = RDOT/1800 046351,000768: 15,3243 60001 AD L # -2 RDOT T/180 IN L 046352,000769: 15,3244 55613 TS -VT/180 # SAVE -2VT/180 HERE 046353,000770: 046354,000771: 15,3245 41664 CS ROLL/180 046355,000772: 15,3246 54021 TS SR # SAVE (-R/180) /2 046356,000773: 046357,000774: 15,3247 40102 CS CM/FLAGS 046358,000775: 15,3250 74707 MASK BIT4 # LATSW = 101D BIT4 046359,000776: 15,3251 00006 EXTEND # ROLL OVER TOP S 046360,000777: 15,3252 13260 BZF GETLCX # NO, TAKE SHORTEST PATH 046361,000778: 15,3253 26102 ADS CM/FLAGS # YES, ENFORCE ROLL OVER TOP.. (BIT =0) 046362,000779: 15,3254 31715 CA ROLLC # (ROLLC/180) /2 046363,000780: 15,3255 60021 AD SR # -(R/180) /2 046364,000781: 15,3256 57614 XCH LCX/360 # DIFFERENT X REQD HERE. DISCONT AT 180. 046365,000782: 15,3257 13320 TCF COMPAT # POSSIBLE OVFL ABOVE. 046366,000783: 046367,000784: # Page 1060 046368,000785: 15,3260 34675 GETLCX CA POS1/2 # FORM RCOM/360 046369,000786: 15,3261 60000 DOUBLE 046370,000787: 15,3262 61715 AD ROLLC 046371,000788: 15,3263 57614 XCH LCX/360 # IGNORE POSSIBLE OVFL. 046372,000789: 046373,000790: 15,3264 30021 CA SR # FORM -R/360 046374,000791: 15,3265 64673 AD NEG1/2 046375,000792: 15,3266 64673 AD NEG1/2 # IGNORE OVFL 046376,000793: 15,3267 57614 XCH LCX/360 # -R/360 046377,000794: 15,3270 27614 ADS LCX/360 # LCX/360 = RCOM/360 - R/360 RANGE (-1,1) 046378,000795: 046379,000796: # DOES SGN(-VT) (VT/180) (VT/180) (180/(R A1 TT COSALFA)) + X/360 + SGN(X) / 2 OVFL? 046380,000797: 046381,000798: 15,3271 11613 CCS -VT/180 # TAKE SHORTEST ANGULAR PATH 046382,000799: 15,3272 64712 AD ONE # (BASED ON SINGLE JET ACCELERATION) 046383,000800: 15,3273 13275 TCF +2 046384,000801: 15,3274 64712 AD ONE 046385,000802: 15,3275 00006 EXTEND 046386,000803: 15,3276 71613 MP -VT/180 # C(-VT/180) = -2 VT/180 046387,000804: 15,3277 00006 EXTEND 046388,000805: 15,3300 73767 MP 1/16A1 # = 180/(16 A1 TT) 046389,000806: 15,3301 00006 EXTEND 046390,000807: 15,3302 11506 DV CALFA 046391,000808: 15,3303 54001 TS L 046392,000809: 15,3304 11614 CCS LCX/360 046393,000810: 15,3305 34675 CAF POS1/2 046394,000811: 15,3306 13310 TCF +2 046395,000812: 15,3307 44675 CS POS1/2 046396,000813: 15,3310 61614 AD LCX/360 # IS LCX/360 LESS THAN 180 DEGS 046397,000814: 15,3311 60001 AD L 046398,000815: 15,3312 54001 TS L 046399,000816: 15,3313 13320 TCF COMPAT # YES, GO ON. 046400,000817: 15,3314 50000 TRTAGXPI INDEX A # NO, SHIFT X BY - SGN(X) 2 PI 046401,000818: 15,3315 44674 CS HALFPR # +A YIELDS -1/2 046402,000819: 15,3316 60000 DOUBLE 046403,000820: 15,3317 27614 ADS LCX/360 046404,000821: 046405,000822: 15,3320 31614 COMPAT CA LCX/360 # CORRECT FOR ASSUMED COORD TURN. 046406,000823: 15,3321 00006 EXTEND 046407,000824: 15,3322 71506 MP CALFA # COS ALFA 046408,000825: 15,3323 55614 TS LCX/360 # SCALED LCX OK HERE. 046409,000826: 046410,000827: 15,3324 11700 CCS CMDAPMOD # FOUR POSSIBILITIES HERE 046411,000828: 15,3325 03714 TC DZCALL1 # EXIT, SETTING JETAG=0. (C(A)=0) 046412,000829: # ALL 3 AXES ALREADY DONE. 046413,000830: 15,3326 03327 TC +1 # G LESS THAN .05. CA POS. CONTINUE 046414,000831: 15,3327 31614 CA LCX/360 # G GEQ .05. CONTINUE IN CM/RCS 046415,000832: 15,3330 55614 TS LCX/360 # CMDAPMOD=-0. DAMPING ONLY. SET LCX=0 046416,000833: 15,3331 55713 TS PAXERR1 # SAVE LCX FOR FDAI AND EDIT. (/360) 046417,000834: # Page 1061 046418,000835: 15,3332 31613 CA -VT/180 # GET - 2 VT/180 046419,000836: 15,3333 54021 TS SR 046420,000837: 15,3334 30021 CA SR # GET -VT/180, LEAVE -VT/360 IN SR FOR DZ 046421,000838: 15,3335 55570 TS -VT/180E # DIAGNOSTIC **** 046422,000839: 15,3336 57613 XCH -VT/180 # NOW CONTENTS OF -VT/180 AS LABELED 046423,000840: 15,3337 00006 EXTEND 046424,000841: 15,3340 71613 MP -VT/180 # B(A) = -ZVT/180 046425,000842: 15,3341 00006 EXTEND 046426,000843: 15,3342 73767 MP 180/8ATT 046427,000844: 15,3343 55616 TS VSQ/4API 046428,000845: 046429,000846: # IS SGN(VT) ( (180/4A1 TT) VT/180 VT/180 - .5 BUFLIM/360 ) -X/360 -.5 BUFLIM/360 POS? 046430,000847: 046431,000848: 15,3344 60000 WHICHALF DOUBLE # FOR SECOND BURN, A1 046432,000849: 15,3345 40000 COM 046433,000850: 15,3346 63773 AD BUFLIM # =BUFLIM/(2 360) 046434,000851: 15,3347 54001 TS L 046435,000852: 15,3350 11613 CCS -VT/180 046436,000853: 15,3351 40001 CS L 046437,000854: 15,3352 13354 TCF +2 046438,000855: 15,3353 30001 CA L 046439,000856: 15,3354 61614 AD LCX/360 046440,000857: 15,3355 63773 AD BUFLIM 046441,000858: 15,3356 00006 EXTEND 046442,000859: 15,3357 63374 BZMF REFLECT # POINT (X,V) IN LHP. 046443,000860: 046444,000861: # IS SGN(VT) ( (180/4A1 TT) VT/180 VT/180 - .5 BUFLIM/360 ) -X/360 + .5 BUFLIM/360 NEG? 046445,000862: 046446,000863: 15,3360 40000 COM 046447,000864: 15,3361 63773 AD BUFLIM 046448,000865: 15,3362 63773 AD BUFLIM 046449,000866: 15,3363 00006 EXTEND 046450,000867: 15,3364 63403 BZMF DZ1 # POINT (X,V) IN RHP 046451,000868: 046452,000869: # IS POINT WITHIN VELOCITY DZ? 046453,000870: 046454,000871: 15,3365 43766 CS VSQMIN # IS VSQ/4API - (VSQ/4API) MIN NEG? 046455,000872: 15,3366 61616 AD VSQ/4API 046456,000873: 15,3367 00006 EXTEND 046457,000874: 15,3370 63676 BZMF DZCALL # YES. 046458,000875: 046459,000876: # POINT IS IN BUFFER ZONE. THRUST TO X AXIS. 046460,000877: 046461,000878: 15,3371 41617 CS JNDX 046462,000879: 15,3372 55620 TS JNDX1 046463,000880: 15,3373 03456 TC OVRLINE1 046464,000881: 046465,000882: 15,3374 41613 REFLECT CS -VT/180 # RELFECT LHP INTO RHP REL TO TERM CONTR 046466,000883: 15,3375 55613 TS -VT/180 046467,000884: 15,3376 54021 TS SR # -VT/360 SAVED FOR DZ. 046468,000885: # Page 1062 046469,000886: 15,3377 41614 CS LCX/360 046470,000887: 15,3400 55614 TS LCX/360 046471,000888: 15,3401 41617 CS JNDX 046472,000889: 15,3402 55617 TS JNDX 046473,000890: 046474,000891: # IS VSQ/4API - (VSQ/4API) MIN NEG? 046475,000892: 046476,000893: 15,3403 43766 DZ1 CS VSQMIN # IS VSQ/4API - (VSQ/4API) MIN NEG? 046477,000894: 15,3404 61616 AD VSQ/4API 046478,000895: 15,3405 00006 EXTEND 046479,000896: 15,3406 63410 BZMF DZ2 # YES, GO TEST FURTHER. 046480,000897: 15,3407 13415 TCF MAXVTEST # NO 046481,000898: 046482,000899: # IS X/360 - XMIN/360 -VT/360 NEG? 046483,000900: 046484,000901: 15,3410 43771 DZ2 CS XMIN/360 # XMIN/360 = 4/360 046485,000902: 15,3411 61614 AD LCX/360 046486,000903: 15,3412 60021 AD SR # C(SR) = -VT/360 046487,000904: 15,3413 00006 EXTEND # IS X/360 - XMIN/360 -VT/360 NEG? 046488,000905: 15,3414 63676 BZMF DZCALL # YES, IN DZ. EXIT SETTING JETAG=0. 046489,000906: 046490,000907: # IS XD/360 - VM/360K - XS/360 POS? 046491,000908: 046492,000909: 15,3415 41617 MAXVTEST CS JNDX 046493,000910: 15,3416 55620 TS JNDX1 # NOW CAN SET JNDX1 FOR TON2 JETS. 046494,000911: 15,3417 43773 CS XS/360 # XS/360 = (XMIN -YMIN/K) /360 046495,000912: 15,3420 61616 AD VSQ/4API 046496,000913: 15,3421 61614 AD LCX/360 046497,000914: 15,3422 55615 TS XD/360 # XD/360= X/360 +VSQ/4API X INTERCEPT 046498,000915: # BUT C(XD/360) = (XD - XS) /360 046499,000916: 15,3423 63772 AD -VM/360K # X INTERCEPT FOR MAX V (VM) 046500,000917: 15,3424 40000 COM 046501,000918: 15,3425 00006 EXTEND 046502,000919: 15,3426 63434 BZMF MAXVTIM1 # YES, THRUST TO VM 046503,000920: 15,3427 31615 CA XD/360 046504,000921: 15,3430 00006 EXTEND 046505,000922: 15,3431 74675 MP KTRCS 046506,000923: 15,3432 20001 DDOUBL # GO SAVE PREDICTED DRIFTING VELOCITY. 046507,000924: 046508,000925: 15,3433 03437 TC GETON1 # INSURE THAT Q IS POS AS TAG. 046509,000926: 15,3434 00006 MAXVTIM1 EXTEND 046510,000927: 15,3435 22007 ZQ # SET +Q AS TAG 046511,000928: 15,3436 43772 CS -VMT/180 046512,000929: 15,3437 55567 GETON1 TS VDT/180 # VDT/180 OR VMT/180 046513,000930: 15,3440 61613 AD -VT/180 046514,000931: 15,3441 60000 DOUBLE 046515,000932: 15,3442 00006 EXTEND 046516,000933: 15,3443 73767 MP 180/8ATT 046517,000934: 15,3444 55621 TS TON1 # TON1 / 4T 046518,000935: # Page 1063 046519,000936: 15,3445 00006 EXTEND 046520,000937: 15,3446 63450 BZMF OVRLINE 046521,000938: 15,3447 03462 TC GETON2 # RESET Q POS IF CAME FROM MAXVTIM1 046522,000939: 046523,000940: 15,3450 10002 OVRLINE CCS Q 046524,000941: 15,3451 13456 TCF OVRLINE1 046525,000942: 15,3452 31620 MAXVTIM2 CA JNDX1 # ABOVE VM, SO THRUST DOWN 046526,000943: 15,3453 55617 TS JNDX 046527,000944: 15,3454 41621 CS TON1 046528,000945: 15,3455 13461 TCF OVRLINE2 +1 046529,000946: 046530,000947: 15,3456 41613 OVRLINE1 CS -VT/180 # DRIFT AT V 046531,000948: 15,3457 55567 TS VDT/180 046532,000949: 15,3460 34714 OVRLINE2 CA ZERO 046533,000950: 15,3461 55621 TS TON1 046534,000951: 15,3462 31567 GETON2 CA VDT/180 # VDT/180, OR VMT/180 OR VT/180 046535,000952: 15,3463 60000 DOUBLE 046536,000953: 15,3464 00006 EXTEND 046537,000954: 15,3465 73767 MP 180/8ATT 046538,000955: 15,3466 60000 DOUBLE # FOR SECOND BURN, A1 046539,000956: 15,3467 55607 TS TON2 # = TON2 / 4T 046540,000957: 046541,000958: 15,3470 40000 COM 046542,000959: 15,3471 00006 EXTEND 046543,000960: 15,3472 63476 BZMF GETOFF 046544,000961: 15,3473 55607 TS TON2 046545,000962: 15,3474 31617 CA JNDX 046546,000963: 15,3475 55620 TS JNDX1 046547,000964: 046548,000965: 15,3476 41607 GETOFF CS TON2 # TON2 / 4T 046549,000966: 15,3477 00006 EXTEND 046550,000967: 15,3500 71567 MP VDT/180 # VDT/180, OR VT/180, OR VMT/180. 046551,000968: 15,3501 55615 TS XD/360 # USE AS TEMP 046552,000969: 15,3502 41567 CS VDT/180 046553,000970: 15,3503 00006 EXTEND 046554,000971: 15,3504 13520 BZF TOFFOVFL # OMIT THE DIVIDE IF DEN = 0. 046555,000972: 15,3505 61613 AD -VT/180 046556,000973: 15,3506 00006 EXTEND 046557,000974: 15,3507 71621 MP TON1 # TON1 /4T 046558,000975: 15,3510 61615 AD XD/360 # TEMP = -VDT/180 / 2 TON2 046559,000976: 15,3511 61614 AD LCX/360 046560,000977: 15,3512 22007 ZL 046561,000978: 15,3513 56001 XCH L # TEST THE DIVIDE 046562,000979: 15,3514 00006 EXTEND 046563,000980: 15,3515 11567 DV VDT/180 046564,000981: 15,3516 00006 EXTEND 046565,000982: 15,3517 13522 BZF GETOFF2 # DIVIDE OK 046566,000983: 046567,000984: 15,3520 34740 TOFFOVFL CA 2JETT # OVFL, USE 2T FOR CONVENIENCE. 046568,000985: 15,3521 13527 TCF TIMSCAL 046569,000986: 046570,000987: # Page 1064 046571,000988: 15,3522 56001 GETOFF2 XCH L # GET NUMERATOR. 046572,000989: 15,3523 00006 EXTEND 046573,000990: 15,3524 11567 DV VDT/180 # C(A) = TOFF / 2T 046574,000991: 15,3525 00006 EXTEND 046575,000992: 15,3526 74740 MP 2JETT 046576,000993: 15,3527 55605 TIMSCAL TS TOFF # IN CS 046577,000994: 046578,000995: 15,3530 33770 CAF 4JETT 046579,000996: 15,3531 00006 EXTEND 046580,000997: 15,3532 71621 MP TON1 # C(TON1) = TON1 / 4T 046581,000998: 15,3533 55621 TS TON1 # IN CS 046582,000999: 046583,001000: 15,3534 33770 CAF 4JETT 046584,001001: 15,3535 00006 EXTEND 046585,001002: 15,3536 71607 MP TON2 # C(TON2) = TON2 / 4T 046586,001003: 15,3537 55607 TS TON2 # IN CS 046587,001004: 046588,001005: 15,3540 34714 CA ZERO # CANNOT REDO AFTER TIMETST. TUSED GONE 046589,001006: 15,3541 55711 TS JETAG # SET +0 TO SHOW ROLL DAP CALLED. 046590,001007: 046591,001008: # CAUSE THE TM OF BODY RATES VIA UPBUFF TO BE 046592,001009: # INITIALIZED. ALSO CAUSE NEEDLES TO BE DONE ON EXIT 046593,001010: # AND ON ALTERNATE PASSES THROUGH CM/DUMPR. 046594,001011: 046595,001012: 15,3542 34712 CA ONE 046596,001013: 15,3543 54305 TS SW/NDX 046597,001014: 046598,001015: # Page 1065 046599,001016: # TIMETEST SECTION FOR RCS 046600,001017: 046601,001018: # ENTER WITH THREE TIME INTERVALS AND THE CORRESPONDING JET CODE INDEXES IN ERASABLE LOCS TON1, TOFF, TON2, JNDX 046602,001019: # JNDX1. SECTION PROCESSES TIME INTERVALS FOR WTLST CALLS AND ASSURES THAT WTLST CALLS ARE MADE ONLY 046603,001020: # (1) FOR POS INTERVALS GREATER THAN A SPECIFIED MINIMUM (HERE CHOSEN AS 2 CS) AND 046604,001021: # (2) FOR THE INTERVALS THAT WILL BE EXECUTED WITHIN THE TIME REMAINING IN THE SAMPLE INTERVAL T (2 SEC). 046605,001022: # TIMETST ESTABLISHES 6 LOCS CONTAINING JET CODES AND CORRESPONDING TIME INTERVALS. THUS: TON1, T1BITS, 046606,001023: # TOFF, TBITS, TON2, T2BITS. OF THESE THE FIRST 2 LOCS ARE TEMPORARY, FOR IMMEDIATE ACTION, IN GENERAL. 046607,001024: # SECTION JETCALL BELOW PROCESSES THIS LIST. 046608,001025: 046609,001026: 15,3544 30025 TIMETST CA TIME1 # CORRECT FOR POSSIBLE TIME1 OVFL. 046610,001027: 15,3545 64675 AD POS1/2 046611,001028: 15,3546 64675 AD POS1/2 # OVFL GUARANTEED. 046612,001029: 15,3547 27712 ADS TUSED # B(TUSED) =-TUSED =-OLTIME1 046613,001030: 046614,001031: 15,3550 33765 CA -T-3 # =-T +2 -5 (SEE SETJTAG) 046615,001032: # THE +2 REQUIRED FOR PROPER BRANCH. 046616,001033: 15,3551 27712 ADS TUSED # TUSED = TIME(K)-TIME(K-1)-T+2 046617,001034: 046618,001035: 15,3552 44711 CS TWO # USE 2 SINCE TIME3 UNCERTAIN TO 1 046619,001036: 15,3553 61621 AD TON1 046620,001037: 15,3554 00006 EXTEND 046621,001038: 15,3555 63567 BZMF TIMETST1 046622,001039: 15,3556 51617 INDEX JNDX 046623,001040: 15,3557 33225 CAF P/RJCODE 046624,001041: 15,3560 55622 TS T1BITS 046625,001042: 046626,001043: 15,3561 31621 CA TON1 046627,001044: 15,3562 27712 ADS TUSED 046628,001045: 15,3563 00006 EXTEND 046629,001046: 15,3564 63571 BZMF TOFFTEST 046630,001047: 15,3565 34714 CA ZERO 046631,001048: 15,3566 13622 TCF TIMETST3 046632,001049: 15,3567 44712 TIMETST1 CS ONE 046633,001050: 15,3570 55621 TS TON1 046634,001051: 15,3571 44711 TOFFTEST CS TWO 046635,001052: 15,3572 61605 AD TOFF 046636,001053: 15,3573 00006 EXTEND 046637,001054: 15,3574 63603 BZMF TIMETST2 046638,001055: 15,3575 31605 CA TOFF 046639,001056: 15,3576 27712 ADS TUSED 046640,001057: 15,3577 00006 EXTEND 046641,001058: 15,3600 63605 BZMF TON2TEST 046642,001059: 15,3601 34714 CA ZERO 046643,001060: 15,3602 13624 TCF TIMETST4 046644,001061: 15,3603 44712 TIMETST2 CS ONE 046645,001062: 15,3604 55605 TS TOFF 046646,001063: 15,3605 44711 TON2TEST CS TWO 046647,001064: 15,3606 61607 AD TON2 046648,001065: 15,3607 00006 EXTEND 046649,001066: 15,3610 63625 BZMF TIMETST5 046650,001067: # Page 1066 046651,001068: 15,3611 51620 INDEX JNDX1 046652,001069: 15,3612 33225 CAF P/RJCODE 046653,001070: 15,3613 55610 TS T2BITS 046654,001071: 15,3614 31607 CA TON2 046655,001072: 15,3615 27712 ADS TUSED 046656,001073: 15,3616 00006 EXTEND 046657,001074: 15,3617 63627 BZMF JETCALL1 046658,001075: 15,3620 34714 CA ZERO 046659,001076: 15,3621 13626 TCF TIMETST5 +1 046660,001077: 15,3622 55621 TIMETST3 TS TON1 046661,001078: 15,3623 44712 CS ONE 046662,001079: 15,3624 55605 TIMETST4 TS TOFF 046663,001080: 15,3625 44712 TIMETST5 CS ONE 046664,001081: 15,3626 55607 TS TON2 046665,001082: 046666,001083: # SECTION JETCALL EXAMINES CONTENTS OF JET TIMES IN LIST, ESTABLISHES WTLST ENTRIES, AND EXECUTES CORRESPONDING 046667,001084: # JET CODES. A POSITIVE NZ NUMBER IN A TIME REGISTER INDICATES THAT A WTLST CALL IS TO BE MADE, AND ITS JET BITS 046668,001085: # EXECUTED. A +0 INDICATES THAT THE TIME INTERVAL DOES NOT APPLY, BUT THE CORRESPOINDING JET BITS ARE TO BE 046669,001086: # EXECUTED. A NEG NUMBER INDICATES THAT THE TIME INTERVAL HAS BEEN PROCESSED. IN EVENT OF +0 OR -1, THE 046670,001087: # SUBSEQUENT TIME REGISTER IS EXAMINED FOR POSSIBLE ACTION. THUS JET BITS TO BE EXECUTED MAY COME FROM MORE 046671,001088: # THAN ONE REGISTER. 046672,001089: 046673,001090: 15,3627 34714 JETCALL1 CA ZERO 046674,001091: 15,3630 55611 TS OUTTAG 046675,001092: 15,3631 55612 TS NUJET 046676,001093: 15,3632 55606 TS TBITS 046677,001094: 15,3633 53622 DXCH TON1 046678,001095: 15,3634 10000 CCS A 046679,001096: 15,3635 13652 TCF JETCALL2 # CALL WTLST 046680,001097: 15,3636 23612 JETCALL3 LXCH NUJET # WTLST ENTRIES COME HERE FROM JETCALL 046681,001098: 15,3637 44712 CS ONE 046682,001099: 15,3640 53606 DXCH TOFF 046683,001100: 15,3641 10000 CCS A 046684,001101: 15,3642 13652 TCF JETCALL2 # CALL WTLST 046685,001102: 15,3643 23612 LXCH NUJET 046686,001103: 15,3644 44712 CS ONE 046687,001104: 15,3645 53610 DXCH TON2 046688,001105: 15,3646 10000 CCS A 046689,001106: 15,3647 13652 TCF JETCALL2 # CALL WTLST 046690,001107: 15,3650 23612 LXCH NUJET 046691,001108: 15,3651 03661 TC JETACTN # C(A) = +0 046692,001109: 15,3652 56001 JETCALL2 XCH L # SAVE JET BITS FOR AFTER WTLST CALL 046693,001110: 15,3653 27612 ADS NUJET 046694,001111: 15,3654 56001 XCH L 046695,001112: 15,3655 64712 AD ONE # RESTORE FOR CCS 046696,001113: 15,3656 05140 TC WAITLIST 046697,001114: 15,3657 E6,1661 EBANK= AOG 046698,001115: 15,3657 03667 32066 2CADR JETCALL 046699,001116: 046700,001117: 15,3661 31612 JETACTN CA NUJET # COME HERE WHEN DESIRED JET CODE IS KNOWN 046701,001118: # Page 1067 046702,001119: 15,3662 00006 EXTEND # NO NEED TO SAVE OLD CODES 046703,001120: 15,3663 01006 WRITE ROLLJETS # SET RCHAN TO NEW BIT CONFIG. 046704,001121: 046705,001122: 15,3664 11611 CCS OUTTAG 046706,001123: 15,3665 05213 TC TASKOVER 046707,001124: 15,3666 03724 ROLLDUMP TC CM/FDAIR 046708,001125: 046709,001126: # EDIT DUMP AT ABOVE LOCATION. 046710,001127: 046711,001128: # WAITLIST ENTRIES COME HERE. 046712,001129: 046713,001130: 15,3667 34711 JETCALL CAF BIT2 # CM/DSTBY =103D BIT2 046714,001131: 15,3670 55611 TS OUTTAG # SIGNIFY WTLST ENTRY 046715,001132: 15,3671 70102 MASK CM/FLAGS # IS SYSTEM DISABLED? 046716,001133: 15,3672 00006 EXTEND 046717,001134: 15,3673 13662 BZF JETACTN +1 # YES, QUENCH ROLL JETS, IF ON AND EXIT. 046718,001135: 15,3674 22007 ZL # NO, CONTINUE. 046719,001136: 15,3675 13636 TCF JETCALL3 # C(A) POS, C(L) = +0 046720,001137: 046721,001138: # DEAD ZONE ENTRIES COME HERE. 046722,001139: 046723,001140: 15,3676 41700 DZCALL CS CMDAPMOD # POSSIBLE VALUES OF CMDAPMOD: -1, +0, -0. 046724,001141: 15,3677 74712 MASK BIT1 046725,001142: 15,3700 54001 TS L # C(L)=0 FOR -0 046726,001143: # Page 1068 --- blank --- RSB 2004 046727,001144: # Page 1069 046728,001145: 15,3701 50000 INDEX A # ERASABLE ORDER: ROLLTM, ROLLC, ROLLC +1. 046729,001146: 15,3702 31714 CA ROLLTM # GET ROLL/180 OR ROLLC (/360). 046730,001147: 15,3703 50001 INDEX L 046731,001148: 15,3704 54000 TS A # IF C(L)=1, STORE "ROLLC" IN "L". 046732,001149: 15,3705 60001 AD L # (BOTH MUST BE SCALED DEG/180) 046733,001150: 15,3706 02542 TC ANGOVCOR # C(A)=ROLL/180 OR 2 ROLLC. 046734,001151: 15,3707 55717 TS ROLLHOLD # IF CMDAPMOD =-0, SAVE ROLL ANGLE. 046735,001152: # OTHERWISE, SAVE ROLL COMMAND. 046736,001153: 046737,001154: 15,3710 34714 CA ZERO # COME HERE IF IN DZ, AND CANCEL JETS. 046738,001155: 15,3711 00006 EXTEND # INHINT NOT NEEDED HERE. 046739,001156: 15,3712 01006 WRITE ROLLJETS # TURN OFF ALL ROLL JETS. 046740,001157: 15,3713 55567 TS VDT/180 # SET =0 TO SHOW IN DEAD ZONE. 046741,001158: 15,3714 55711 DZCALL1 TS JETAG # COME HERE WITH C(A)=0. 046742,001159: 15,3715 03666 TC ROLLDUMP 046743,001160: 046744,001161: # Page 1070 --- blank --- RSB 2004 046745,001162: # Page 1071 046746,001163: # CM ENTRY FDAI DISPLAY 046747,001164: 046748,001165: # CALCULATE BY INTEGRATION THE ROLL ERROR BETWEEN THE 2 SEC CM/RCS UPDATES. DISPLAY ATTITUDE ERRORS AS FOLLOWS: 046749,001166: # ATM DAP: DISPLAY ONLY ROLL ATTITUDE ERROR. 046750,001167: # EXT ATM DAP: PRESENT 3 ATTITUDE ERRORS RELATIVE TO THE APPROPRIATE BODY AXES EACH .1 SEC. 046751,001168: # ROLL ROLL-ROLL 046752,001169: # PITCH ALFAC-ALFA 046753,001170: # YAW BETAC-BETA 046754,001171: 046755,001172: # DURING ENTRY, THE FDAI NEEDLES HAVE FULL SCALE OF 67.5 DEG IN ROLL AND 16.875 DEG IN PITCH AND YAW. 046756,001173: # THE SUBROUTINE NEEDLER EXPECTS (ANGLE/180) AND SCALES TO 16.875 DEG FULL SCALE. 046757,001174: 046758,001175: # COME HERE EACH .1 SEC. (CMDAPMOD=+1 COMES BELOW) 046759,001176: 15,3716 41705 CM/FDAI CS PHIDOT # INTEGRATE ROLL ERROR 'TWEEN 2SEC UPDATES 046760,001177: 15,3717 00006 EXTEND 046761,001178: 15,3720 71506 MP CALFA # FOR ASSUMED COORDINATION. 046762,001179: 15,3721 00006 EXTEND 046763,001180: 15,3722 74675 MP HALF 046764,001181: 15,3723 27713 ADS PAXERR1 # ROLL ERROR/360. OVFL OK. 046765,001182: 046766,001183: # EDIT DUMP AT ABOVE LOCATION. 046767,001184: 15,3724 34675 CM/FDAIR CA HALF 046768,001185: 15,3725 00006 EXTEND 046769,001186: 15,3726 71713 MP PAXERR1 # FULL SCALE FOR FDAI (ROLL) IS 67.5 D 046770,001187: 15,3727 55476 TS PAXERR # .25 (ROLL ERROR/180) FOR FDAI NEEDLE. 046771,001188: 046772,001189: # PROGRAM TO FILE BODY RATES FOR TM ON ONE PASS AND 046773,001190: # TO UPDATE THE NEEDLE DISPLAY ON THE NEXT. 046774,001191: # SYNCHRONIZATION WITH CM/RCS IS USED SO THAT THE TM 046775,001192: # IS DONE WITH THE ROLL SYSTEM AND NEEDLES START ON 046776,001193: # THE SUBSEQUENT PASS. 046777,001194: 046778,001195: 15,3730 40305 CM/DUMPR CS SW/NDX # COMBINED ALTERNATION SWITCH AND FILE 046779,001196: 15,3731 54305 TS SW/NDX 046780,001197: 15,3732 00006 EXTEND # INDEX 046781,001198: 15,3733 63737 BZMF CMTMFILE # FILE STARTS WITH SW/NDX +1 AND GOES TO 046782,001199: # ENDBUF. 046783,001200: 046784,001201: # INDEX IS POS FOR NEEDLES. 046785,001202: 046786,001203: 15,3734 04633 TC IBNKCALL 046787,001204: 15,3735 42404 CADR NEEDLER 046788,001205: 046789,001206: 15,3736 03755 TC CM/END 046790,001207: 046791,001208: # INDEX IS NEG FOR TM FILE 046792,001209: 046793,001210: 15,3737 66214 CMTMFILE AD THREE 046794,001211: 15,3740 00006 EXTEND 046795,001212: 15,3741 63745 BZMF SAVENDX 046796,001213: # Page 1072 --- blank --- RSB 2004 046797,001214: # Page 1073 046798,001215: 15,3742 30025 CA TIME1 # INITIALIZE THE TM LIST IN UPBUFF. 046799,001216: 15,3743 54304 TS CMTMTIME 046800,001217: 15,3744 44720 CS THIRTEEN # INITIALIZE COUNTER 046801,001218: 15,3745 54305 SAVENDX TS SW/NDX # A NEGATIVE NUMBER. 046802,001219: 15,3746 00006 EXTEND 046803,001220: 15,3747 31702 DCA PREL 046804,001221: 15,3750 50305 INDEX SW/NDX 046805,001222: 15,3751 52324 DXCH ENDBUF -1 046806,001223: 15,3752 31703 CA RREL 046807,001224: 15,3753 50305 INDEX SW/NDX 046808,001225: 15,3754 54325 TS ENDBUF +1 046809,001226: 046810,001227: 15,3755 31623 CM/END CA CM/SAVE 046811,001228: 15,3756 54021 TS SR 046812,001229: # DOES NOT PROTECT TEMK, SQ IN SPSIN/COS 046813,001230: 046814,001231: 15,3757 00006 EXTEND 046815,001232: 15,3760 33764 DCA T5IDLER2 046816,001233: 15,3761 53313 DXCH T5LOC 046817,001234: 15,3762 05222 TC RESUME 046818,001235: 046819,001236: 15,3763 1312 EBANK= T5LOC 046820,001237: 15,3763 03143 12062 T5IDLER2 2CADR T5IDLOC 046821,001238: 046822,001239: # DEFINE THE FOLLOWING 17D REGISTERS IN UPBUFF TO BE 046823,001240: # USED TO TELEMETER CM VEHICLE BODY RATE INFORMATION. 046824,001241: # THE INFORMATION IS FILED EACH 0.2 SEC, GIVING 15D 046825,001242: # DATA POINTS EACH 1 SEC. TM LIST IS READ TWICE 046826,001243: # EACH 2 SECONDS. 046827,001244: 046828,001245: # THE SEQUENCE IS: SP TIME INITIAL TIME 046829,001246: # SWITCH ALSO INDEX. 046830,001247: # P ROLL RATE 046831,001248: # Q PITCH RATE 046832,001249: # R YAW RATE 046833,001250: # ETC. 046834,001251: 046835,001252: # CMTMTIME = UPBUFF 046836,001253: # SW/NDX = UPBUFF +1 046837,001254: # ENDBUF = UPBUFF +16D 046838,001255: 046839,001256: # Page 1074 046840,001257: # SPACER 046841,001258: 046842,001259: # CONSTANTS USED IN THE ROLL CONTROL SYSTEM: 046843,001260: # CONSTANTS ARE THE FOLLOWING: A = 9.1 DEG/SECSQ, VM = 20 DEG/SEC, T = 2 SEC, TCDU = .1 SEC, 046844,001261: # XMIN = 4 DEG, VMIN = 2 DEG/SEC, K = .25, A1 = 4.55 DEG/SECSQ, VI = 1 DEG/SEC, INTERCEPT WITH DZ SIDE 046845,001262: # XBUF = 4DEG 046846,001263: 046847,001264: 15,3765 77464 -T-3 DEC -203 B-14 # CS 046848,001265: 15,3766 00012 VSQMIN DEC .61050061 E-3 # VSQ MIN/4 A PI = 4/(4 (9.1) 180) 046849,001266: 15,3767 4726 2T/TCDU = OCT50 # T/TCDU EXP-14 TCDU = .1SEC 046850,001267: 15,3767 23617 180/8ATT DEC .61813187 # 180/(8 (9.1) 4)=(180/ATT) EXP -3 046851,001268: 15,3770 15,3772 -VMT/180 = -VM/360K # = 20 (2) / 180 046852,001269: 15,3770 4740 2JETT = 4SECS # CS 2 (2) 100 INTEGER 046853,001270: 15,3770 01440 4JETT DEC 800 B-14 # CS 4 (2) 100 INTEGER 046854,001271: 15,3771 00266 XMIN/360 DEC 182 B-14 # XMIN/360 = 4/ 360 EXP 14 = 182 INTEGER 046855,001272: 15,3772 70706 -VM/360K DEC -.22222222 # =-20/( 360 (.25)) 046856,001273: 15,3773 15,3767 1/16A1 = 180/8ATT 046857,001274: # 1/16A1 = 180/(16 A1 TT) 046858,001275: # = 180/(16 4.55 4) 046859,001276: 15,3773 00133 XS/360 DEC 91 B-14 # = (XMIN +VI (T-1/K))/360 = 2/360 EXP 14 046860,001277: 15,3774 15,3773 BUFLIM = XS/360 # 4/(2 360) 046861,001278: 046862,001279: 15,3774 4675 KTRCS = HALF # KT = (.25) 2 = .5 046863,001280: 046864,001281: # *** END OF DAPCSM .95 *** End of include-file CM_ENTRY_DIGITAL_AUTOPILOT.agc. Parent file is MAIN.agc