Source Code
![]() |
YAYUL: ASSEMBLE REVISION 5 OF PROGRAM BOREALIS BY MSTEWART MAR. 27,2017This is a modern AGC system self-test program, though based on the Apollo-era AURORA 12 program, and was not written by the original AGC developers, but rather by Mike Stewart. All of the original AURORA 12 DAP code added by the DAP Group has been removed, and extensive new system test code has been added in its place. This allows more in-depth testing of CPU behavior, both in AGC software simulations and hardware simulations. |
007264,000002: ## Copyright: Public domain.
007265,000003: ## Filename: IMU_COMPENSATION_PACKAGE.agc
007266,000004: ## Purpose: This program is designed to extensively test the Apollo Guidance Computer
007267,000005: ## (specifically the LM instantiation of it). It is built on top of a heavily
007268,000006: ## stripped-down Aurora 12, with all code ostensibly added by the DAP Group
007269,000007: ## removed. Instead Borealis expands upon the tests provided by Aurora,
007270,000008: ## including corrected tests from Retread 44 and tests from Ron Burkey's
007271,000009: ## Validation.
007272,000010: ## Assembler: yaYUL
007273,000011: ## Contact: Mike Stewart <mastewar1@gmail.com>.
007274,000012: ## Website: www.ibiblio.org/apollo/index.html
007275,000013: ## Mod history: 2016-12-20 MAS Created from Aurora 12 (with much DAP stuff removed).
007276,000014:
007277,000015: 07,2000 BANK 7
007278,000016: 07,2000 E3,1440 EBANK= NBDX
007279,000017: # PROGRAM DESCRIPTION- IMU COMPENSATION (LEM) DATE- 30 AUG 66
007280,000018: # MOD NO- 0 LOG SECTION- IMU COMPENSATION PACKAGE
007281,000019: # MOD BY- GILBERT ASSEMBLY- SUNBURST REVISION 13
007282,000020:
007283,000021: # FUNCTIONAL DESCRIPTION
007284,000022: # THE IMU COMPENSATION PACKAGE IS DESIGNED TO COMPENSATE FOR PIPA BIAS AND SCALE FACTOR ERROR AND AT THE
007285,000023: # SAME TIME ACCUMULATE GYRO TORQUING COMMANDS NECESSARY TO COMPENSATE FOR THE ASSOCIATED BIAS AND ACCELERATION-
007286,000024: # CAUSED GYRO DRIFTS. 1/PIPA MUST BE CALLED AT LEAST EVERY 2.55 SECONDS DUE TO SCALING CONSIDERATIONS.
007287,000025: # SPECIFICALLY, THE CORRECTION IS
007288,000026:
007289,000027: # PIPA = (1 + SCALE FACTOR ERROR)PIPA - (BIAS)(DELTAT)
007290,000028: # C I
007291,000029:
007292,000030: # WHERE PIPA IS THE COMPENSATED DATA OBTAINED FROM THE SAMPLED DATA PIPA
007293,000031: # C I
007294,000032:
007295,000033: # THE COMPENSATED DATA IS THEN USED TO COMPUTE THE IRIG TORQUING NECESSARY TO CANCEL THE NBD, ADIA, AND ADSRA
007296,000034: # GYRO COEFFICIENTS.
007297,000035: # SPECIFICALLY, THE COMPUTATIONS ARE
007298,000036:
007299,000037: # XIRIG -(ADIAX)(PIPAX ) + (ADSRAX)(PIPAY ) - (NBDX)(DELTAT)
007300,000038: # C C
007301,000039: # YIRIG -(ADIAY)(PIPAY ) + (ADSRAY)(PIPAZ ) - (NBDY)(DELTAT)
007302,000040: # C C
007303,000041: # ZIRIG -(ADIAZ)(PIPAZ ) - (ADSRAZ)(PIPAY ) + (NBDZ)(DELTAT)
007304,000042: # C C
007305,000043:
007306,000044: # THIS COMPENSATION IS SUMMED INTO THE GCOMP REGISTERS AND WHEN THE MAGNITUDE OF ANY IRIG COMMAND EXCEEDS 2
007307,000045: # PULSES, THE COMMANDS ARE SENT TO THE GYROS.
007308,000046:
007309,000047: # DURING FREE-FALL PHASES OF A FLIGHT NBDX, NBDY, AND NBDZ ARE THE ONLY RELEVANT COEFFICIENTS. THESE BIAS TERMS
007310,000048: # WILL BE INTEGRATED BY ROUTINE NBDONLY APPROXIMATELY EVERY 81.93 SECONDS FOLLOWING AN EXECUTIVE CALL BY THE DUMMY
007311,000049: # TASK OF THE WAITLIST PROGRAM. NBDONLY IS ENABLED WHEN BIT 15 OF FLAGWRD2 IS SET TO INDICATE FREE-FALL. DURING
007312,000050: # THIS TIME 1/PIPA IS NOT CALLED.
007313,000051:
007314,000052: # LASTBIAS IS CALLED VIA EXECUTIVE WHEN MAKING THE TRANSITION FROM FREE-FALL TO A PIPA READING MODE. THE NBD TERMS
007315,000053: # ARE COMPENSATED FOR FROM THE LAST NBDONLY CALL UP TO PIPA ZEROING. PREREAD WILL THEN ENABLE 1/PIPA AT ITS
007316,000054: # REGULAR INTERVAL. THE DRIFT FLAG MUST BE DOWN JUST PRIOR TO LASTBIAS. GYROCOMPASS NEVER CALLS LASTBIAS.
007317,000055:
007318,000056: # SCALING CONSIDERATIONS
007319,000057: # UNITS MAX. VALUE INTERNAL UNITS AND SCALING
007320,000058:
007321,000059: # PIPA BIAS (CM)/(SEC)(SEC) 3.125 (PIPA PULSES)/(CS) X 2(-5)
007322,000060: # PIPA SCALE FACTOR P.P.M. 1953.125 (PPM) X 2(-9)
007323,000061: # NBD MERU 128.74604 (GYRO PULSES)/(CS) X 2(-5)
007324,000062: # ADIA (MERU)/(G) 630.36633 (GYRO PULSES)/(PIPA PULSE) X 2(-6)
007325,000063: # ADSRA (MERU)/(G) 630.36633 (GYRO PULSES)/(PIPA PULSE) X 2(-6)
007326,000064:
007327,000065: # CONVERSION TABLE
007328,000066: # 1 PIPA PULSE = 1.00 (CM)/(SEC)(SEC) 1 ERU = 7.29209817 X 10(-5) (RAD)/(SEC)
007329,000067: # 1 ERU = 15.04104488 (ARCSEC)/(SEC) 1 (CM)/(SEC)(SEC) = .01 (PIPA PULSES)/(CS)
007330,000068: # 1 GYRO PULSE = .61798096 ARCSEC 1 MERU = .0024272592 (GYRO PULSES)/(CS)
007331,000069: # 1 G = 979.24 (CM)/(SEC)(SEC) (AMR) 1 (MERU)/(G) = .000144787174 (GYRO PULSES)/(PIPA PULSE)
007332,000070:
007333,000071: # REFERENCES
007334,000072: # AGC PROGRAMMING MEMO NO. 12, I.S.S. MEMO NO. 247, I.S.S. MEMO NO. 328, I.S.S. MEMO NO. 339
007335,000073:
007336,000074: # CALLING SEQUENCE
007337,000075: # L TC BANKCALL
007338,000076: # L+1 CADR 1/PIPA
007339,000077: # L+2 RETURNS HERE
007340,000078:
007341,000079: # NORMAL EXIT MODES
007342,000080: # AT L+2 OF CALLING SEQUENCE
007343,000081:
007344,000082: # ALARM OR ABORT MODES
007345,000083: # ENDOFJOB
007346,000084:
007347,000085: # ERASABLE INITIALIZATION REQUIRED (CONSECUTIVE LOCATIONS)
007348,000086: # PBIASX PIPAX BIAS
007349,000087: # PIPASCFX PIPAX SCALE FACTOR ERROR
007350,000088: # PBIASY PIPAY BIAS
007351,000089: # PIPASCFY PIPAY SCALE FACTOR ERROR
007352,000090: # PBIASZ PIPAZ BIAS
007353,000091: # PIPASCFZ PIPAZ SCALE FACTOR ERROR
007354,000092: # NBDX X IRIG BIAS DRIFT
007355,000093: # NBDY Y IRIG BIAS DRIFT
007356,000094: # NDBZ Z IRIG BIAS DRIFT
007357,000095: # ADIAX IRIG ACCELERATION SENSITIVE DRIFT ALONG THE X INPUT AXIS
007358,000096: # ADIAY IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Y INPUT AXIS
007359,000097: # ADIAZ IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Z INPUT AXIS
007360,000098: # ADSRAX IRIG ACCELERATION SENSITIVE DRIFT ALONG THE X SPIN REFERENCE AXIS
007361,000099: # ADSRAY IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Y SPIN REFERENCE AXIS
007362,000100: # ADSRAZ IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Z SPIN REFERENCE AXIS
007363,000101: # GCOMP GYRO COMPENSATION PULSES (SET = ZERO FOR 1ST PASS)
007364,000102:
007365,000103: # INPUT
007366,000104: # 1/PIPADT - DELTA TIME SCALED AT (CS) X 2(+8)
007367,000105: # DELVX, DELVY, DELVZ - PIPA READINGS IN THE MAJOR PARTS - MINOR PARTS IRRELEVANT
007368,000106:
007369,000107: # OUTPUT
007370,000108: # DELVX, DELVY, DELVZ - PIPA COUNTS SCALED 2(+14) COMPENSATED FOR PIPA BIAS AND SCALE FACTOR ERROR
007371,000109: # GCOMP - 3 DP LOCATIONS CONTAINING GYRO PULSES TO COMPENSATE FOR NBD, ADIA, AND ADSRA COEFFICIENTS
007372,000110:
007373,000111: # DEBRIS
007374,000112: # CENTRALS - A,L,Q
007375,000113: # OTHER - BUF - BUF +2, VBUF - VBUF +2, GCOMPSW
007376,000114:
007377,000115: 07,2000 32233 1/PIPA CAF LGCOMP # SAVE EBANK OF CALLING PROGRAM
007378,000116: 07,2001 56003 XCH EBANK
007379,000117: 07,2002 54147 TS MODE
007380,000118:
007381,000119: 07,2003 37655 CAF FOUR # PIPAZ, PIPAY, PIPAX
007382,000120: 07,2004 54116 TS BUF +2
007383,000121:
007384,000122: 07,2005 50000 INDEX A
007385,000123: 07,2006 30403 CA DELVX # CONTAINS PREVIOUS PIPA READING
007386,000124: 07,2007 54106 TS VBUF # TEMPORARY - MINOR PARTS IRRELEVANT
007387,000125:
007388,000126: 07,2010 50116 INDEX BUF +2
007389,000127: 07,2011 41432 CS PIPABIAS # (PIPA PULSES)/(CS) X 2(-5) *
007390,000128: 07,2012 00006 EXTEND
007391,000129: 07,2013 71110 MP 1/PIPADT # (CS) X 2(+8) NOW (PIPA PULSES) X 2(+3)*
007392,000130: 07,2014 00006 EXTEND # *
007393,000131: 07,2015 77654 MP BIT4 # SCALE 2(-3) SHIFT LEFT 3 *
007394,000132: 07,2016 22107 LXCH VBUF +1 # (PIPA PULSES) X 2(0) FRACTIONAL PULSE*
007395,000133:
007396,000134: 07,2017 50116 INDEX BUF +2
007397,000135: 07,2020 31433 CA PIPASCF # (P.P.M.) X 2(-9)
007398,000136: 07,2021 00006 EXTEND
007399,000137: 07,2022 70106 MP VBUF # (PIPA PULSES) X 2(+14)
007400,000138: 07,2023 22110 LXCH VBUF +2 # SAVE FOR FRACTIONAL COMPUTATION
007401,000139: 07,2024 00006 EXTEND
007402,000140: 07,2025 77652 MP BIT6 # SCALE 2(+9) NOW PIPA PULSES X 2(+14)
007403,000141: 07,2026 20107 DAS VBUF # (PIPAI) - (NBD)(DELTAT) - HI(PIPAI)(SFE)
007404,000142:
007405,000143: 07,2027 30110 CA VBUF +2 # NOW MINOR PART
007406,000144: 07,2030 00006 EXTEND
007407,000145: 07,2031 77652 MP BIT6 # SCALE 2(+9) SHIFT RIGHT 9
007408,000146: 07,2032 54001 TS L
007409,000147: 07,2033 37665 CAF ZERO
007410,000148: 07,2034 20107 DAS VBUF # (PIPAI) - (NBD)(DELTAT) - (PIPAI)(SFE)
007411,000149:
007412,000150: 07,2035 00006 EXTEND
007413,000151: 07,2036 30107 DCA VBUF # RESTORE COMPENSATED PIPA READING
007414,000152: 07,2037 50116 INDEX BUF +2
007415,000153: 07,2040 52404 DXCH DELVX
007416,000154:
007417,000155: 07,2041 10116 CCS BUF +2 # PIPAZ, PIPAY, PIPAX
007418,000156: 07,2042 67667 AD NEG1
007419,000157: 07,2043 12004 TCF 1/PIPA +4
007420,000158: 07,2044 12045 NOOP # LESS THAN ZERO IMPOSSIBLE
007421,000159:
007422,000160: 07,2045 55457 IRIGCOMP TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS
007423,000161: 07,2046 54114 TS BUF # INDEX COUNTER - IRIGX, IRIGY, IRIGZ
007424,000162: 07,2047 00006 IRIGX EXTEND
007425,000163: 07,2050 40404 DCS DELVX # (PIPA PULSES) X 2(+14)
007426,000164: 07,2051 52141 DXCH MPAC
007427,000165: 07,2052 31443 CA ADIAX # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
007428,000166: 07,2053 02127 TC GCOMPSUB # -(ADIAX)(PIPAX) (GYRO PULSES) X 2(+14)
007429,000167:
007430,000168: 07,2054 00006 EXTEND
007431,000169: 07,2055 40406 DCS DELVY # (PIPA PULSES) X 2(+14)
007432,000170: 07,2056 52141 DXCH MPAC
007433,000171: 07,2057 41446 CS ADSRAX # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
007434,000172: 07,2060 02127 TC GCOMPSUB # +(ADSRAX)(PIPAY) (GYRO PULSES) X 2(+14)
007435,000173:
007436,000174: 07,2061 41440 CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
007437,000175: 07,2062 02156 TC DRIFSTUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14)
007438,000176:
007439,000177: 07,2063 00006 IRIGY EXTEND
007440,000178: 07,2064 40406 DCS DELVY # (PIPA PULSES) X 2(+14)
007441,000179: 07,2065 52141 DXCH MPAC
007442,000180: 07,2066 31444 CA ADIAY # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
007443,000181: 07,2067 02127 TC GCOMPSUB # -(ADIAY)(PIPAY) (GYRO PULSES) X 2(+14)
007444,000182:
007445,000183: 07,2070 00006 EXTEND
007446,000184: 07,2071 40410 DCS DELVZ # (PIPA PULSES) X 2(+14)
007447,000185: 07,2072 52141 DXCH MPAC
007448,000186: 07,2073 41447 CS ADSRAY # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
007449,000187: 07,2074 02127 TC GCOMPSUB # +(ADSRAY)(PIPAZ) (GYRO PULSES) X 2(+14)
007450,000188:
007451,000189: 07,2075 41441 CS NBDY # (GYRO PULSES)/(CS) X 2(-5)
007452,000190: 07,2076 02156 TC DRIFSTUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)
007453,000191:
007454,000192: 07,2077 00006 IRIGZ EXTEND
007455,000193: 07,2100 40406 DCS DELVY # (PIPA PULSES) X 2(+14)
007456,000194: 07,2101 52141 DXCH MPAC
007457,000195: 07,2102 31450 CA ADSRAZ # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
007458,000196: 07,2103 02127 TC GCOMPSUB # -(ADSRAZ)(PIPAY (GYRO PULSES) X 2(+14)
007459,000197:
007460,000198: 07,2104 00006 EXTEND
007461,000199: 07,2105 40410 DCS DELVZ # (PIPA PULSES) X 2(+14)
007462,000200: 07,2106 52141 DXCH MPAC
007463,000201: 07,2107 31445 CA ADIAZ # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
007464,000202: 07,2110 02127 TC GCOMPSUB # -(ADIAZ)(PIPAZ) (GYRO PULSES) X 2(+14)
007465,000203:
007466,000204: 07,2111 31442 CA NBDZ # (GYRO PULSES)/(CS) X 2(-5)
007467,000205: 07,2112 02156 TC DRIFSTUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2(+14)
007468,000206:
007469,000207: 07,2113 11457 CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
007470,000208: 07,2114 12116 TCF +2 # YES
007471,000209: 07,2115 12124 TCF IRIG1 # NO
007472,000210:
007473,000211: 07,2116 00004 INHINT
007474,000212: 07,2117 34514 CAF PRIO35 # SEND OUT GYRO TORQUING COMMANDS
007475,000213: 07,2120 04344 TC NOVAC
007476,000214: 07,2121 02211 16003 2CADR 1/GYRO
007477,000215: 07,2123 00003 RELINT
007478,000216: 07,2124 30147 IRIG1 CA MODE # SET EBANK FOR RETURN
007479,000217: 07,2125 54003 TS EBANK
007480,000218: 07,2126 14100 TCF SWRETURN
007481,000219:
007482,000220:
007483,000221:
007484,000222:
007485,000223:
007486,000224:
007487,000225: 07,2127 56140 GCOMPSUB XCH MPAC # ADIA OR ADSRA COEFFICIENT ARRIVES IN A
007488,000226: 07,2130 00006 EXTEND # C(MPAC) = (PIPA PULSES) X 2(+14)
007489,000227: 07,2131 70140 MP MPAC # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
007490,000228: 07,2132 52107 DXCH VBUF # NOW = (GYRO PULSES) X 2(+8) *
007491,000229:
007492,000230: 07,2133 30141 CA MPAC +1 # MINOR PART PIPA PULSES
007493,000231: 07,2134 00006 EXTEND
007494,000232: 07,2135 70140 MP MPAC # ADIA OR ADSRA
007495,000233: 07,2136 54001 TS L
007496,000234: 07,2137 37665 CAF ZERO
007497,000235: 07,2140 20107 DAS VBUF # NOW = (GYRO PULSES) X 2(+8) *
007498,000236:
007499,000237: 07,2141 30106 CA VBUF # PARTIAL RESULT - MAJOR
007500,000238: 07,2142 00006 EXTEND
007501,000239: 07,2143 77647 MP BIT9 # SCALE 2(+6) SHIFT RIGHT 6 *
007502,000240: 07,2144 50114 INDEX BUF # RESULT = (GYRO PULSES) X 2(+14)
007503,000241: 07,2145 21452 DAS GCOMP # HI(ADIA)(PIPAI) OR HI(ADSRA)(PIPAI)
007504,000242:
007505,000243: 07,2146 30107 CA VBUF +1 # PARTIAL RESULT - MINOR
007506,000244: 07,2147 00006 EXTEND
007507,000245: 07,2150 77647 MP BIT9 # SCALE 2(+6) SHIFT RIGHT 6 *
007508,000246: 07,2151 54001 TS L
007509,000247: 07,2152 37665 CAF ZERO
007510,000248: 07,2153 50114 INDEX BUF # RESULT = (GYRO PULSES) X 2(+14)
007511,000249: 07,2154 21452 DAS GCOMP # (ADIA)(PIPAI) OR (ADSRA)(PIPAI)
007512,000250:
007513,000251: 07,2155 00002 TC Q
007514,000252:
007515,000253: 07,2156 00006 DRIFSTUB EXTEND
007516,000254: 07,2157 22115 QXCH BUF +1
007517,000255:
007518,000256: 07,2160 00006 EXTEND # C(A) = NBD (GYRO PULSES)/(CS) X 2(-5)
007519,000257: 07,2161 71110 MP 1/PIPADT # (CS) X 2(+8) NOW (GYRO PULSES) X 2(+3)
007520,000258: 07,2162 22141 LXCH MPAC +1 # SAVE FOR FRACTIONAL COMPENSATION
007521,000259: 07,2163 00006 EXTEND
007522,000260: 07,2164 77654 MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11
007523,000261: 07,2165 50114 INDEX BUF
007524,000262: 07,2166 21452 DAS GCOMP # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)
007525,000263:
007526,000264: 07,2167 30141 CA MPAC +1 # NOW MINOR PART
007527,000265: 07,2170 00006 EXTEND
007528,000266: 07,2171 77654 MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11
007529,000267: 07,2172 54001 TS L
007530,000268: 07,2173 37665 CAF ZERO
007531,000269: 07,2174 50114 INDEX BUF # ADD IN FRACTIONAL COMPENSATION
007532,000270: 07,2175 21452 DAS GCOMP # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)
007533,000271:
007534,000272: 07,2176 37656 DRFTSUB2 CAF TWO # PIPAX, PIPAY, PIPAZ
007535,000273: 07,2177 60114 AD BUF
007536,000274: 07,2200 56114 XCH BUF
007537,000275: 07,2201 50000 INDEX A
007538,000276: 07,2202 11451 CCS GCOMP # ARE GYRO COMMANDS 1 PULSE OR GREATER
007539,000277: 07,2203 12205 TCF +2 # YES
007540,000278: 07,2204 00115 TC BUF +1 # NO
007541,000279:
007542,000280: 07,2205 72255 MASK COMPCHK # DEC -1
007543,000281: 07,2206 10000 CCS A # ARE GYRO COMMANDS GREATER THAN 2 PULSES
007544,000282: 07,2207 55457 TS GCOMPSW # YES - SET GCOMPSW POSITIVE
007545,000283: 07,2210 00115 TC BUF +1 # NO
007546,000284:
007547,000285: 07,2211 37655 1/GYRO CAF FOUR # PIPAZ, PIPAY, PIPAX
007548,000286: 07,2212 54114 TS BUF
007549,000287:
007550,000288: 07,2213 50114 INDEX BUF # SCALE GYRO COMMANDS FOR IMUPULSE
007551,000289: 07,2214 31452 CA GCOMP +1 # FRACTIONAL PULSES
007552,000290: 07,2215 00006 EXTEND
007553,000291: 07,2216 77650 MP BIT8 # SHIFT RIGHT 7
007554,000292: 07,2217 50114 INDEX BUF
007555,000293: 07,2220 55452 TS GCOMP +1 # FRACTIONAL PULSES SCALED
007556,000294:
007557,000295: 07,2221 37665 CAF ZERO # SET GCOMP = 0 FOR DAS INSTRUCTION
007558,000296: 07,2222 50114 INDEX BUF
007559,000297: 07,2223 57451 XCH GCOMP # GYRO PULSES
007560,000298: 07,2224 00006 EXTEND
007561,000299: 07,2225 77650 MP BIT8 # SHIFT RIGHT 7
007562,000300: 07,2226 50114 INDEX BUF
007563,000301: 07,2227 21452 DAS GCOMP # ADD THESE TO FRACTIONAL PULSES ABOVE
007564,000302:
007565,000303: 07,2230 10114 CCS BUF # PIPAZ, PIPAY, PIPAX
007566,000304: 07,2231 67667 AD NEG1
007567,000305: 07,2232 12212 TCF 1/GYRO +1
007568,000306: 07,2233 01451 LGCOMP ECADR GCOMP # LESS THAN ZERO IMPOSSIBLE
007569,000307:
007570,000308: 07,2234 32233 CAF LGCOMP
007571,000309: 07,2235 04065 TC BANKCALL
007572,000310: 07,2236 26317 CADR IMUPULSE # CALL GYRO TORQUING ROUTINE
007573,000311: 07,2237 04065 TC BANKCALL
007574,000312: 07,2240 26716 CADR IMUSTALL # WAIT FOR PULSES TO GET OUT
007575,000313: 07,2241 14421 TCF ENDOFJOB # TEMPORARY
007576,000314:
007577,000315: 07,2242 37655 GCOMP1 CAF FOUR # PIPAZ, PIPAY, PIPAX
007578,000316: 07,2243 54114 TS BUF
007579,000317:
007580,000318: 07,2244 50114 INDEX BUF # RESCALE
007581,000319: 07,2245 31452 CA GCOMP +1
007582,000320: 07,2246 00006 EXTEND
007583,000321: 07,2247 77650 MP BIT8 # SHIFT MINOR PART LEFT 7 - MAJOR PART = 0
007584,000322: 07,2250 50114 INDEX BUF
007585,000323: 07,2251 23452 LXCH GCOMP +1 # BITS 8-14 OF MINOR PART WERE = 0
007586,000324:
007587,000325: 07,2252 10114 CCS BUF # PIPAZ, PIPAY, PIPAX
007588,000326: 07,2253 67667 AD NEG1
007589,000327: 07,2254 12243 TCF GCOMP1 +1
007590,000328: 07,2255 77776 COMPCHK DEC -1 B-14 # LESS THAN ZERO IMPOSSIBLE
007591,000329: 07,2256 14421 TCF ENDOFJOB
007592,000330:
007593,000331: 07,2257 30025 NBDONLY CA TIME1 # (CS) X 2(+14)
007594,000332: 07,2260 57110 XCH 1/PIPADT # PREVIOUS TIME
007595,000333: 07,2261 40000 COM
007596,000334: 07,2262 61110 AD 1/PIPADT
007597,000335: 07,2263 10000 NBD2 CCS A # CALCULATE ELAPSED TIME
007598,000336: 07,2264 67657 AD ONE # NO TIME1 OVERFLOW
007599,000337: 07,2265 12272 TCF NBD3 # RESTORE TIME DIFFERENCE AND JUMP
007600,000338: 07,2266 12270 TCF +2 # TIME1 OVERFLOW
007601,000339: 07,2267 14421 TCF ENDOFJOB # IF ELAPSED TIME = 0 (DIFFERENCE = -0)
007602,000340:
007603,000341: 07,2270 40000 COM # CALCULATE ABSOLUTE DIFFERENCE
007604,000342: 07,2271 67637 AD POSMAX
007605,000343:
007606,000344: 07,2272 00006 NBD3 EXTEND # C(A) = DELTAT (CS) X 2(+14)
007607,000345: 07,2273 77646 MP BIT10 # SHIFT RIGHT 5
007608,000346: 07,2274 52107 DXCH VBUF
007609,000347: 07,2275 00006 EXTEND
007610,000348: 07,2276 30107 DCA VBUF
007611,000349: 07,2277 52141 DXCH MPAC # DELTAT NOW SCALED (CS) X 2(+19)
007612,000350:
007613,000351: 07,2300 37665 CAF ZERO
007614,000352: 07,2301 55457 TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS
007615,000353: 07,2302 54114 TS BUF # PIPAX, PIPAY, PIPAZ
007616,000354:
007617,000355: 07,2303 41440 CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
007618,000356: 07,2304 02322 TC FBIASSUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14)
007619,000357:
007620,000358: 07,2305 00006 EXTEND
007621,000359: 07,2306 40107 DCS VBUF
007622,000360: 07,2307 52141 DXCH MPAC # DELTAT SCALED (CS) X 2(+19)
007623,000361: 07,2310 31441 CA NBDY # (GYRO PULSES)/(CS) X 2(-5)
007624,000362: 07,2311 02322 TC FBIASSUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)
007625,000363:
007626,000364: 07,2312 00006 EXTEND
007627,000365: 07,2313 40107 DCS VBUF
007628,000366: 07,2314 52141 DXCH MPAC # DELTAT SCALED (CS) X 2(+19)
007629,000367: 07,2315 41442 CS NBDZ # (GYRO PULSES)/(CS) X 2(-5)
007630,000368: 07,2316 02322 TC FBIASSUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2 (+14)
007631,000369:
007632,000370: 07,2317 11457 CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
007633,000371: 07,2320 12211 TCF 1/GYRO # YES
007634,000372: 07,2321 14421 TCF ENDOFJOB # NO
007635,000373:
007636,000374: 07,2322 56002 FBIASSUB XCH Q
007637,000375: 07,2323 54115 TS BUF +1
007638,000376:
007639,000377: 07,2324 30002 CA Q # NBD SCALED (GYRO PULSES)/(CS) X 2(-5)
007640,000378: 07,2325 00006 EXTEND
007641,000379: 07,2326 70140 MP MPAC # DELTAT SCALED (CS) X 2(+19)
007642,000380: 07,2327 50114 INDEX BUF
007643,000381: 07,2330 21452 DAS GCOMP # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)
007644,000382:
007645,000383: 07,2331 30002 CA Q # NOW FRACTIONAL PART
007646,000384: 07,2332 00006 EXTEND
007647,000385: 07,2333 70141 MP MPAC +1
007648,000386: 07,2334 54001 TS L
007649,000387: 07,2335 37665 CAF ZERO
007650,000388: 07,2336 50114 INDEX BUF
007651,000389: 07,2337 21452 DAS GCOMP # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)
007652,000390:
007653,000391: 07,2340 12176 TCF DRFTSUB2 # CHECK MAGNITUDE OF COMPENSATION
007654,000392:
007655,000393:
007656,000394:
007657,000395:
007658,000396:
007659,000397: 07,2341 57110 LASTBIAS XCH 1/PIPADT # NEW 1/PIPADT VALUE SCALED (CS) X 2(+14)
007660,000398: 07,2342 40000 COM
007661,000399: 07,2343 60140 AD MPAC # C(TIME1) AT PIPAI = 0 SCALED 2(+14)
007662,000400: 07,2344 12263 TCF NBD2
007663,000401:
007664,000402:
007665,000403:
007666,000404:
007667,000405:
007668,000406: 07,2345 32233 GCOMPZER CAF LGCOMP # ROUTINE TO ZERO GCOMP BEFORE FIRST
007669,000407: 07,2346 56003 XCH EBANK # CALL TO 1/PIPA
007670,000408: 07,2347 54147 TS MODE
007671,000409:
007672,000410: 07,2350 37665 CAF ZERO
007673,000411: 07,2351 55451 TS GCOMP
007674,000412: 07,2352 55452 TS GCOMP +1
007675,000413: 07,2353 55453 TS GCOMP +2
007676,000414: 07,2354 55454 TS GCOMP +3
007677,000415: 07,2355 55455 TS GCOMP +4
007678,000416: 07,2356 55456 TS GCOMP +5
007679,000417:
007680,000418: 07,2357 30147 CA MODE
007681,000419: 07,2360 54003 TS EBANK
007682,000420: 07,2361 14100 TCF SWRETURN # RETURN TO CALLER
End of include-file IMU_COMPENSATION_PACKAGE.agc. Parent file is MAIN.agc