Source Code
|
This is a reconstructed version of Luminary 130, the initial AGC program released
in November 1969 for the Apollo 13 LM. Three more releases
followed before the flown revision was finally manufactured in February 1970.
This reconstruction was created from a previous transcription of the original listing of Luminary 131, combined with Luminary memo #129 which describes the small difference between the Luminary 130 and 131. The reconstructed source code was verified by matching memory-bank checksums to those listed for Luminary 130 in drawing 2021152G. In this source code, program comments from the original (Luminary 131) code are prefixed with '#', while those added later by the Virtual AGC project are prefixed with '##'. |
064237,000002: ## Copyright: Public domain.
064238,000003: ## Filename: SPS_BACK-UP_RCS_CONTROL.agc
064239,000004: ## Purpose: A section of the reconstructed source code for Luminary 130.
064240,000005: ## This was the original program released for the Apollo 13 LM,
064241,000006: ## although several more revisions would follow. It has been
064242,000007: ## reconstructed from a listing of Luminary 131, from which it
064243,000008: ## differs on only two lines in P70-P71. The difference is
064244,000009: ## described in detail in Luminary memo #129, which was used
064245,000010: ## to perform the reconstruction. This file is intended to be a
064246,000011: ## faithful reconstruction, except that the code format has been
064247,000012: ## changed to conform to the requirements of the yaYUL assembler
064248,000013: ## rather than the original YUL assembler.
064249,000014: ## Reference: pp. 1499-1502
064250,000015: ## Contact: Ron Burkey <info@sandroid.org>.
064251,000016: ## Website: www.ibiblio.org/apollo/index.html
064252,000017: ## Mod history: 06/08/03 RSB. Began transcribing.
064253,000018: ## 05/14/05 RSB Corrected website reference above.
064254,000019: ## 2010-10-25 JL Indentation fixes.
064255,000020: ## 2017-01-06 RSB Page numbers now agree with those on the
064256,000021: ## original hardcopy, as opposed to the PDF page
064257,000022: ## numbers in 1701.pdf.
064258,000023: ## 2017-02-28 RSB Proofed comment text using octopus/ProoferComments.
064259,000024: ## 2017-03-14 RSB Comment-text fixes noted in proofing Luminary 116.
064260,000025: ## 2018-09-04 MAS Copied from Luminary 131 for Luminary 130.
064261,000026:
|
Page 1499 |
064263,000028: # PROGRAM NAME: SPSRCS
064264,000029: # AUTHOR: EDGAR M. OSHIKA (AC ELECTRONICS)
064265,000030: # MODIFIED: TO RETURN TO ALL AXES VIA Q BY P. S. WEISSMAN, OCT 7, 1968
064266,000031: # MODIFIED TO IMPROVE BENDING STABILITY BY G. KALAN, FEB. 14, 1969
064267,000032:
064268,000033: # FUNCTIONAL DESCRIPTION:
064269,000034: # THIS PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE
064270,000035: # PLANE LOGIC.
064271,000036:
064272,000037: # 1. JET SENSE TEST (SPSRCS)
064273,000038: # IF JETS ARE FIRING NEGATIVELY, SET OLDSENSE NEGATIVE AND CONTINUE
064274,000039: # IF JETS ARE FIRING POSITIVELY, SET OLDSENSE POSITIVE AND CONTINUE
064275,000040: # IF JETS ARE NOT FIRING, SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST
064276,000041:
064277,000042: # 2. RATE DEAD BAND TEST
064278,000043: # IF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE, LEAVE
064279,000044: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
064280,000045: # IF JETS ARE FIRING POSITIVELY AND RATE IS LESS THAN TARGET RATE, LEAVE
064281,000046: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
064282,000047:
064283,000048: # 3. OUTER RATE LIMIT TEST (SPSSTART)
064284,000049: # IF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME
064285,000050: # TO REDUCE RATE AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
064286,000051:
064287,000052: # 4. COAST ZONE TEST
064288,000053: # 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 POSI-
064289,000054: # TIVE AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
064290,000055: # 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
064291,000056: # AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
064292,000057:
064293,000058: # 5. INHIBITION LOGIC
064294,000059: # IF OLDSENSE IS NON-ZERO:
064295,000060: # A) RETURN IF JET TIME HAS SAME SIGN AS OLDSENSE
064296,000061: # B) SET INHIBITION COUNTER* AND RETURN IF JET TIME IS ZERO
064297,000062: # C) SET INHIBITION COUNTER,* SET JET TIME TO ZERO AND RETURN IF SIGN
064298,000063: # OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE
064299,000064: # IF OLDSENSE IS ZERO:
064300,000065: # A) RETURN IF INHIBITION COUNTER IS NOT POSITIVE
064301,000066: # B) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE
064302,000067: # *NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P,AND UV AXES,
064303,000068: # RESPECTIVELY, IN SPSRCS. THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF
|
Page 1500 |
064305,000070: # EACH DAP PASS.
064306,000071:
064307,000072: # THE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED
064308,000073: # AND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT. DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE
064309,000074: # P AXIS AND 200 MS FOR THE CONTROL OF THE U AND V AXES.
064310,000075:
064311,000076: # CALLING SEQUENCE:
064312,000077: # INHINT
064313,000078: # TC IBNKCALL
064314,000079: # CADR SPSRCS
064315,000080:
064316,000081: # EXIT:
064317,000082: # TC Q
064318,000083:
064319,000084: # ALARM/ABORT MODE: NONE
064320,000085:
064321,000086: # SUBROUTINES CALLED: NONE
064322,000087:
064323,000088: # INPUT: E, EDOT
064324,000089: # TJP, TJV, TJU TJ MUST NOT BE NEGATIVE ZERO
064325,000090:
064326,000091: # OUTPUT: TJP, TJV, TJU
064327,000092:
064328,000093: 21,3655 BANK 21
064329,000094: 21,2000 SETLOC DAPS4
064330,000095: 21,2000 BANK
064331,000096:
064332,000097: 21,3655 COUNT* $$/DAPBU
064333,000098:
064334,000099: 21,3655 E6,1525 EBANK= TJU
064335,000100: 21,3655 00632 RATELIM2 OCT 00632 # 1.125 DEG/SEC
064336,000101: 21,3656 34736 POSTHRST CA HALF
064337,000102:
064338,000103: 21,3657 51505 NDX AXISCTR
064339,000104: 21,3660 55525 TS TJU
064340,000105: 21,3661 11744 CCS OLDSENSE
064341,000106: 21,3662 13702 TCF POSCHECK # JETS FIRING POSITIVELY
064342,000107: 21,3663 13705 TCF CTRCHECK # JETS OFF. CHECK INHIBITION CTR
064343,000108: 21,3664 51505 NEGCHECK INDEX AXISCTR # JETS FIRING NEGATIVELY
064344,000109: 21,3665 41525 CS TJU
064345,000110: 21,3666 10000 CCS A
064346,000111: 21,3667 00002 TC Q # RETURN
064347,000112: 21,3670 13672 TCF +2
064348,000113: 21,3671 13672 TCF +1 # JETS COMMANDED OFF. SET CTR AND RETURN
064349,000114: 21,3672 51505 SETCTR INDEX AXISCTR # JET FIRING REVERSAL COMMANDED. SET CTR,
064350,000115: 21,3673 33714 CA UTIME # SET JET TIME TO ZERO,AND RETURN
|
Page 1501 |
064352,000117: 21,3674 51505 INDEX AXISCTR
064353,000118: 21,3675 55767 TS UJETCTR
064354,000119: 21,3676 34755 ZAPTJ CA ZERO
064355,000120: 21,3677 51505 INDEX AXISCTR
064356,000121: 21,3700 55525 TS TJU
064357,000122: 21,3701 00002 TC Q
064358,000123: 21,3702 51505 POSCHECK INDEX AXISCTR
064359,000124: 21,3703 31525 CA TJU
064360,000125: 21,3704 13666 TCF NEGCHECK +2
064361,000126: 21,3705 51505 CTRCHECK INDEX AXISCTR # CHECK JET INHIBITION COUNTER
064362,000127: 21,3706 11767 CCS UJETCTR
064363,000128: 21,3707 13711 TCF +2
064364,000129: 21,3710 00002 TC Q # CTR IS NOT POSITIVE. RETURN
064365,000130: 21,3711 13676 TCF ZAPTJ # CTR IS POSITIVE. INHIBIT FIRINGS
064366,000131: 21,3712 00002 TC Q # CTR IS NOT POSITIVE. RETURN
064367,000132: 21,3713 00004 OCT 00004
064368,000133: 21,3714 00012 UTIME OCT 00012
064369,000134: 21,3715 00012 OCT 00012
064370,000135: 21,3716 E6,1744 OLDSENSE EQUALS DAPTREG1
064371,000136: 21,3716 44753 NEGFIRE CS ONE # JETS FIRING NEGATIVELY
064372,000137: 21,3717 55744 TS OLDSENSE
064373,000138: 21,3720 31427 CA EDOT
064374,000139: 21,3721 13725 TCF +4
064375,000140: 21,3722 34753 PLUSFIRE CA ONE
064376,000141: 21,3723 55744 TS OLDSENSE
064377,000142: 21,3724 41427 CS EDOT # RATE DEAD BAND TEST
064378,000143: 21,3725 22000 LXCH A
064379,000144: 21,3726 40111 CS DAPBOOLS # IF DRIFTBIT = 1, USE ZERO TARGET RATE
064380,000145: 21,3727 74744 MASK DRIFTBIT # IF DRIFTBIT = 0, USE 0.10 RATE TARGET
064381,000146: 21,3730 10000 CCS A
064382,000147: 21,3731 34767 CA RATEDB1
064383,000148: 21,3732 60001 AD L
064384,000149: 21,3733 00006 EXTEND
064385,000150: 21,3734 63744 BZMF SPSSTART
064386,000151: 21,3735 13661 TCF POSTHRST +3
064387,000152:
064388,000153: 21,3736 51505 SPSRCS INDEX AXISCTR # JET SENSE TEST
064389,000154: 21,3737 11525 CCS TJU
064390,000155: 21,3740 13722 TCF PLUSFIRE # JETS FIRING POSITIVELY
064391,000156: 21,3741 13743 TCF +2
064392,000157: 21,3742 13716 TCF NEGFIRE # JETS FIRING NEGATIVELY
064393,000158: 21,3743 55744 TS OLDSENSE # JETS OFF
064394,000159: 21,3744 31427 SPSSTART CA EDOT # OUTER RATE LIMIT TEST
064395,000160: 21,3745 00006 EXTEND
064396,000161: 21,3746 74766 MP RATELIM1
064397,000162: 21,3747 10000 CCS A
064398,000163: 21,3750 13767 TCF NEGTHRST # OUTER RATE LIMIT EXCEEDED
064399,000164: 21,3751 13753 TCF +2
064400,000165: 21,3752 13656 TCF POSTHRST # OUTER RATE LIMIT EXCEEDED
064401,000166: 21,3753 31427 CA EDOT # COAST ZONE TEST
|
Page 1502 |
064403,000168: 21,3754 61751 AD E
064404,000169: 21,3755 00006 EXTEND
064405,000170: 21,3756 71411 MP DKDB # PAD LOADED DEADBAND. FRESHSTART: 1.4 DEG
064406,000171: 21,3757 00006 EXTEND
064407,000172: 21,3760 13775 BZF TJZERO
064408,000173:
064409,000174: 21,3761 00006 EXTEND
064410,000175: 21,3762 63771 BZMF +7
064411,000176: 21,3763 31427 CA EDOT
064412,000177: 21,3764 63655 AD RATELIM2
064413,000178: 21,3765 00006 EXTEND
064414,000179: 21,3766 63775 BZMF TJZERO
064415,000180: 21,3767 44736 NEGTHRST CS HALF
064416,000181: 21,3770 13657 TCF POSTHRST +1
064417,000182: 21,3771 43655 +7 CS RATELIM2
064418,000183: 21,3772 61427 AD EDOT
064419,000184: 21,3773 00006 EXTEND
064420,000185: 21,3774 63656 BZMF POSTHRST
064421,000186: 21,3775 34755 TJZERO CA ZERO
064422,000187: 21,3776 13657 TCF POSTHRST +1
064423,000188:
064424,000189: 21,3777 4766 RATELIM1 = CALLCODE # = 00032, CORRESPONDING TO 1.73 DEG/SEC
064425,000190: 21,3777 4767 RATEDB1 = TBUILDFX # = 00045, CORRESPONDS TO 0.101 DEG/SEC
End of include-file SPS_BACK-UP_RCS_CONTROL.agc. Parent file is MAIN.agc