Source Code

064772,000001: # Copyright: Public domain. 064773,000002: # Filename: SPS_BACK-UP_RCS_CONTROL.agc 064774,000003: # Purpose: Part of the source code for Luminary 1A build 099. 064775,000004: # It is part of the source code for the Lunar Module's (LM) 064776,000005: # Apollo Guidance Computer (AGC), for Apollo 11. 064777,000006: # Assembler: yaYUL 064778,000007: # Contact: Ron Burkey <info@sandroid.org>. 064779,000008: # Website: www.ibiblio.org/apollo. 064780,000009: # Pages: 1507-1510 064781,000010: # Mod history: 2009-05-27 RSB Adapted from the corresponding 064782,000011: # Luminary131 file, using page 064783,000012: # images from Luminary 1A. 064784,000013: 064785,000014: # This source code has been transcribed or otherwise adapted from 064786,000015: # digitized images of a hardcopy from the MIT Museum. The digitization 064787,000016: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of 064788,000017: # the Museum. Many thanks to both. The images (with suitable reduction 064789,000018: # in storage size and consequent reduction in image quality as well) are 064790,000019: # available online at www.ibiblio.org/apollo. If for some reason you 064791,000020: # find that the images are illegible, contact me at info@sandroid.org 064792,000021: # about getting access to the (much) higher-quality images which Paul 064793,000022: # actually created. 064794,000023: 064795,000024: # Notations on the hardcopy document read, in part: 064796,000025: 064797,000026: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61 064798,000027: # 16:27 JULY 14, 1969 064799,000028: 064800,000029: # Page 1507 064801,000030: # PROGRAM NAME: SPSRCS 064802,000031: # AUTHOR: EDGAR M. OSHIKA (AC ELECTRONICS) 064803,000032: # MODIFIED: TO RETURN TO ALL AXES VIA Q BY P. S. WEISSMAN, OCT 7, 1968 064804,000033: # MODIFIED TO IMPROVE BENDING STABILITY BY G. KALAN, FEB. 14, 1969 064805,000034: 064806,000035: # FUNCTIONAL DESCRIPTION: 064807,000036: # THE PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE 064808,000037: # PLANE LOGIC. 064809,000038: 064810,000039: # 1. JET SENSE TEST (SPSRCS) 064811,000040: # IF JETS ARE FIRING NEGATIVELY, SET OLDSENSE NEGATIVE AND CONTINUE 064812,000041: # IF JETS ARE FIRING POSITIVELY, SET OLDSENSE POSITIVE AND CONTINUE 064813,000042: # IF JETS ARE NOT FIRING, SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST 064814,000043: 064815,000044: # 2. RATE DEAD BAND TEST 064816,000045: # IF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE, LEAVE 064817,000046: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE. 064818,000047: # IF JETS ARE FIRING POSITIVELY AND RATE IS LESS THAN TARGET RATE, LEAVE 064819,000048: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE. 064820,000049: 064821,000050: # 3. OUTER RATE LIMIT TEST (SPSSTART) 064822,000051: # IF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME 064823,000052: # TO REDUCE RATE AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE. 064824,000053: 064825,000054: # 4. COAST ZONE TEST 064826,000055: # IF STATE (E,EDOT) IS BELOW LINE E + 4 X EDOT > -1.4 DEG AND EDOT IS LESS THAN 1.30 DEG/SEC SET JET TIME 064827,000056: # POSITIVE AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE. 064828,000057: # IF STATE IS ABOVE LINE E + 4 X EDOT > +1.4 DEG AND EDOT IS GREATER THAN -1.30 DEG/SEC, SET JET TIME NEGATIVE 064829,000058: # AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE. 064830,000059: 064831,000060: # 5. INHIBITION LOGIC 064832,000061: # IF OLDSENSE IS NON-ZERO: 064833,000062: # A) RETURN IF JET TIME AS THE SAME SIGN AS OLDSENSE 064834,000063: # B) SET INHIBITION COUNTER* AND RETURN IF JET TIME IS ZERO 064835,000064: # C) SET INHIBITION COUNTER,* SET JET TIME TO ZERO AND RETURN IF SIGN 064836,000065: # OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE 064837,000066: # IF OLDSENSE IS ZERO: 064838,000067: # A) RETURN IF INHIBITION COUNTER IS NOT POSITIVE 064839,000068: # B) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE 064840,000069: # *NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P AND UV AXES, 064841,000070: # RESPECTIVELY, IN SPSRCS. THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF 064842,000071: # Page 1508 064843,000072: # EACH DAP PASS. 064844,000073: 064845,000074: # THE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED 064846,000075: # AND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT. DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE 064847,000076: # P AXIS AND 200 MS FOR THE CONTROL OF THE U AND V AXES. 064848,000077: 064849,000078: # CALLING SEQUENCE: 064850,000079: # INHINT 064851,000080: # TC IBNKCALL 064852,000081: # CADR SPSRCE 064853,000082: 064854,000083: # EXIT: 064855,000084: # TC Q 064856,000085: 064857,000086: # ALARM/ABORT MODE: NONE 064858,000087: 064859,000088: # SUBROUTINES CALLED: NONE 064860,000089: 064861,000090: # INPUT: E, EDOT 064862,000091: # TJP, TJV, TJU TJ MUST NOT BE NEGATIVE ZERO 064863,000092: 064864,000093: # OUTPUT: TJP, TJV, TJU 064865,000094: 064866,000095: 21,3646 BANK 21 064867,000096: 21,2000 SETLOC DAPS4 064868,000097: 21,2000 BANK 064869,000098: 064870,000099: 21,3646 COUNT* $$/DAPBU 064871,000100: 064872,000101: 21,3646 E6,1525 EBANK= TJU 064873,000102: 21,3646 00632 RATELIM2 OCT 00632 # 1.125 DEG/SEC 064874,000103: 21,3647 34736 POSTHRST CA HALF 064875,000104: 064876,000105: 21,3650 51505 NDX AXISCTR 064877,000106: 21,3651 55525 TS TJU 064878,000107: 21,3652 11745 CCS OLDSENSE 064879,000108: 21,3653 13673 TCF POSCHECK # JETS FIRING POSITIVELY 064880,000109: 21,3654 13676 TCF CTRCHECK # JETS OFF. CHECK INHIBITION CTR 064881,000110: 21,3655 51505 NEGCHECK INDEX AXISCTR # JETS FIRING NEGATIVELY 064882,000111: 21,3656 41525 CS TJU 064883,000112: 21,3657 10000 CCS A 064884,000113: 21,3660 00002 TC Q # RETURN 064885,000114: 21,3661 13663 TCF +2 064886,000115: 21,3662 13663 TCF +1 # JETS COMMANDED OFF. SET CTR AND RETURN 064887,000116: 21,3663 51505 SETCTR INDEX AXISCTR # JET FIRING REVERSAL COMMANDED. SET CTR, 064888,000117: 21,3664 33705 CA UTIME # SET JET TIME TO ZER, AND RETURN 064889,000118: # Page 1509 064890,000119: 21,3665 51505 INDEX AXISCTR 064891,000120: 21,3666 55770 TS UJETCTR 064892,000121: 21,3667 34755 ZAPTJ CA ZERO 064893,000122: 21,3670 51505 INDEX AXISCTR 064894,000123: 21,3671 55525 TS TJU 064895,000124: 21,3672 00002 TC Q 064896,000125: 21,3673 51505 POSCHECK INDEX AXISCTR 064897,000126: 21,3674 31525 CA TJU 064898,000127: 21,3675 13657 TCF NEGCHECK +2 064899,000128: 21,3676 51505 CTRCHECK INDEX AXISCTR # CHECK JET INHIBITION COUNTER 064900,000129: 21,3677 11770 CCS UJETCTR 064901,000130: 21,3700 13702 TCF +2 064902,000131: 21,3701 00002 TC Q # CTR IS NOT POSITIVE. RETURN 064903,000132: 21,3702 13667 TCF ZAPTJ # CTR IS POSITIVE. INHIBIT FIRINGS 064904,000133: 21,3703 00002 TC Q # CTR IS NOT POSITIVE. RETURN 064905,000134: 21,3704 00004 OCT 00004 064906,000135: 21,3705 00012 UTIME OCT 00012 064907,000136: 21,3706 00012 OCT 00012 064908,000137: 21,3707 E6,1745 OLDSENSE EQUALS DAPTREG1 064909,000138: 21,3707 44753 NEGFIRE CS ONE # JETS FIRING NEGATIVELY 064910,000139: 21,3710 55745 TS OLDSENSE 064911,000140: 21,3711 31427 CA EDOT 064912,000141: 21,3712 13716 TCF +4 064913,000142: 21,3713 34753 PLUSFIRE CA ONE 064914,000143: 21,3714 55745 TS OLDSENSE 064915,000144: 21,3715 41427 CS EDOT # RATE DEAD BAND TEST 064916,000145: 21,3716 22000 LXCH A 064917,000146: 21,3717 40111 CS DAPBOOLS # IF DRIFTBIT = 1, USE ZERO TARGET RATE 064918,000147: 21,3720 74744 MASK DRIFTBIT # IF DRIFTBIT = 0, USE 0.10 RATE TARGET 064919,000148: 21,3721 10000 CCS A 064920,000149: 21,3722 34767 CA RATEDB1 064921,000150: 21,3723 60001 AD L 064922,000151: 21,3724 00006 EXTEND 064923,000152: 21,3725 63735 BZMF SPSSTART 064924,000153: 21,3726 13652 TCF POSTHRST +3 064925,000154: 064926,000155: 21,3727 51505 SPSRCS INDEX AXISCTR # JET SENSE TEST 064927,000156: 21,3730 11525 CCS TJU 064928,000157: 21,3731 13713 TCF PLUSFIRE # JETS FIRING POSITIVELY 064929,000158: 21,3732 13734 TCF +2 064930,000159: 21,3733 13707 TCF NEGFIRE # JETS FIRING NEGATIVELY 064931,000160: 21,3734 55745 TS OLDSENSE # JETS OFF 064932,000161: 21,3735 31427 SPSSTART CA EDOT # OUTER RATE LIMIT TEST 064933,000162: 21,3736 00006 EXTEND 064934,000163: 21,3737 74766 MP RATELIM1 064935,000164: 21,3740 10000 CCS A 064936,000165: 21,3741 13760 TCF NEGTHRST # OUTER RATE LIMIT EXCEEDED 064937,000166: 21,3742 13744 TCF +2 064938,000167: 21,3743 13647 TCF POSTHRST # OUTER RATE LIMIT EXCEEDED 064939,000168: 21,3744 31427 CA EDOT # COAST ZONE TEST 064940,000169: # Page 1510 064941,000170: 21,3745 61752 AD E 064942,000171: 21,3746 00006 EXTEND 064943,000172: 21,3747 71411 MP DKDB # PAD LOADED DEADBAND. FRESHSTART: 1.4 DEG 064944,000173: 21,3750 00006 EXTEND 064945,000174: 21,3751 13766 BZF TJZERO 064946,000175: 064947,000176: 21,3752 00006 EXTEND 064948,000177: 21,3753 63762 BZMF +7 064949,000178: 21,3754 31427 CA EDOT 064950,000179: 21,3755 63646 AD RATELIM2 064951,000180: 21,3756 00006 EXTEND 064952,000181: 21,3757 63766 BZMF TJZERO 064953,000182: 21,3760 44736 NEGTHRST CS HALF 064954,000183: 21,3761 13650 TCF POSTHRST +1 064955,000184: 21,3762 43646 +7 CS RATELIM2 064956,000185: 21,3763 61427 AD EDOT 064957,000186: 21,3764 00006 EXTEND 064958,000187: 21,3765 63647 BZMF POSTHRST 064959,000188: 21,3766 34755 TJZERO CA ZERO 064960,000189: 21,3767 13650 TCF POSTHRST +1 064961,000190: 064962,000191: 21,3770 4766 RATELIM1 = CALLCODE # = 00032, CORRESPONDING TO 1.73 DEG/SEC 064963,000192: 21,3770 4767 RATEDB1 = TBUILDFX # = 00045, CORRESPONDS TO 0.101 DEG/SEC 064964,000193: 064965,000194: # *** END OF LMDAP .015 *** 064966,000195: 064967,000196: End of include-file SPS_BACK-UP_RCS_CONTROL.agc. Parent file is MAIN.agc