Source Code
![]() |
These source-code files were transcribed from scans made from Don Eyles's personal
copy of BURST120 (SUNBURST 120). They were scanned at archive.org's Boston
facility, and the scanning was sponsored by Mike Stewart. The code was transcribed
from these scans by a team of volunteers who are referenced in the program
comments. Comments from the original source code are in ALL-CAPS, whereas
comments added later in transcription are in Mixed-Case. In some cases, where
similar code blocks exist in previously-transcribed AGC programs (primarily
Luminary 99, from Apollo 11) those code blocks were used as a starting point and
then corrected to agree with the BURST120 scans. The full scans are available
at the Virtual AGC
project's collection at archive.org, while more-convenient reduced-size (but reduced-quality)
images are available at
the main Virtual AGC website. Report any errors noted by creating an
issue report at the Virtual AGC
project's GitHub repository. Notations on the program listing read, in part:YUL SYSTEM FOR AGC: REVISION 0 OF PROGRAM BURST120 BY NASA 2021106-031 DEC 7, 1967 THIS LISTING IS A COPY OF A VERSION OF THE PROGRAM INTENDED FOR USE IN THE ON-BOARD PRIMARY GUIDANCE COMPUTER IN THE UNMANNED FLIGHT OF APOLLO LUNAR MODULE 1 --- THE AS206 MISSION.Note that the date is the date of the printout, not the date of the program revision. |
036765,000002: ## Copyright: Public domain.
036766,000003: ## Filename: IMU_COMPENSATION_PACKAGE.agc
036767,000004: ## Purpose: A module for revision 0 of BURST120 (Sunburst). It
036768,000005: ## is part of the source code for the Lunar Module's
036769,000006: ## (LM) Apollo Guidance Computer (AGC) for Apollo 5.
036770,000007: ## Assembler: yaYUL
036771,000008: ## Contact: Ron Burkey <info@sandroid.org>.
036772,000009: ## Website: www.ibiblio.org/apollo/index.html
036773,000010: ## Mod history: 2016-09-30 RSB Created draft version.
036774,000011: ## 2016-10-30 RSB Transcribed, primarily by adapting
036775,000012: ## the Aurora 12 version of the file.
036776,000013: ## 2016-11-01 RSB Typos.
036777,000014: ## 2016-11-02 RSB More typos.
036778,000015: ## 2016-12-06 RSB Comment-proofing via octopus/ProoferComments;
036779,000016: ## changes were made.
036780,000017:
![]() |
Page 859 |
036782,000019: 12,3222 BANK 12
036783,000020: 12,3222 E3,1444 EBANK= NBDX
036784,000021:
036785,000022: # PROGRAM DESCRIPTION- IMU COMPENSATION (LEM) DATE- 1 DEC 66
036786,000023: # MOD NO- 0 LOG SECTION- IMU COMPENSATION PACKAGE
036787,000024: # MOD BY- GILBERT ASSEMBLY- SUNBURST REVISION 48
036788,000025:
036789,000026: # FUNCTIONAL DESCRIPTION
036790,000027: # THE IMU COMPENSATION PACKAGE IS DESIGNED TO COMPENSATE FOR PIPA BIAS AND SCALE FACTOR ERROR AND AT THE
036791,000028: # SAME TIME ACCUMULATE GYRO TORQUING COMMANDS NECESSARY TO COMPENSATE FOR THE ASSOCIATED BIAS AND ACCELERATION-
036792,000029: # CAUSED GYRO DRIFTS. 1/PIPA MUST BE CALLED AT LEAST EVERY 2.55 SECONDS DUE TO SCALING CONSIDERATIONS.
036793,000030: # SPECIFICALLY, THE CORRECTION IS
036794,000031:
036795,000032: # PIPA = (1 + SCALE FACTOR ERROR)PIPA - (BIAS)(DELTAT)
036796,000033: # C I
036797,000034:
036798,000035: # WHERE PIPA IS THE COMPENSATED DATA OBTAINED FROM THE SAMPLED DATA PIPA
036799,000036: # C I
036800,000037:
036801,000038: # THE COMPENSATED DATA IS THEN USED TO COMPUTE THE IRIG TORQUING NECESSARY TO CANCEL THE NBD, ADIA, AND ADSRA
036802,000039: # GYRO COEFFICIENTS.
036803,000040: # SPECIFICALLY, THE COMPUTATIONS ARE
036804,000041:
036805,000042: # XIRIG -(ADIAX)(PIPAX ) + (ADSRAX)(PIPAY ) - (NBDX)(DELTAT)
036806,000043: # C C
036807,000044: # YIRIG -(ADIAY)(PIPAY ) + (ADSRAY)(PIPAZ ) - (NBDY)(DELTAT)
036808,000045: # C C
036809,000046: # ZIRIG -(ADIAZ)(PIPAZ ) - (ADSRAZ)(PIPAY ) + (NBDZ)(DELTAT)
036810,000047: # C C
036811,000048:
036812,000049: # THIS COMPENSATION IS SUMMED INTO THE GCOMP REGISTERS AND WHEN THE MAGNITUDE OF ANY IRIG COMMAND EXCEEDS 2
036813,000050: # PULSES, THE COMMANDS ARE SENT TO THE GYROS.
036814,000051:
036815,000052: # DURING FREE-FALL PHASES OF A FLIGHT NBDX, NBDY, AND NBDZ ARE THE ONLY RELEVANT COEFFICIENTS. THESE BIAS TERMS
036816,000053: # WILL BE INTEGRATED BY ROUTINE NBDONLY APPROXIMATELY EVERY 81.93 SECONDS FOLLOWING AN EXECUTIVE CALL BY THE DUMMY
036817,000054: # TASK OF THE WAITLIST PROGRAM. NBDONLY IS ENABLED WHEN BIT 15 OF FLAGWRD2 IS SET TO INDICATE FREE-FALL. DURING
036818,000055: # THIS TIME 1/PIPA IS NOT CALLED.
036819,000056:
036820,000057: # LASTBIAS IS CALLED VIA EXECUTIVE WHEN MAKING THE TRANSITION FROM FREE-FALL TO A PIPA READING MODE. THE NBD TERMS
036821,000058: # ARE COMPENSATED FOR FROM THE LAST NBDONLY CALL UP TO PIPA ZEROING. PREREAD WILL THEN ENABLE 1/PIPA AT ITS
036822,000059: # REGULAR INTERVAL. THE DRIFT FLAG MUST BE DOWN JUST PRIOR TO LASTBIAS. GYROCOMPASS NEVER CALLS LASTBIAS.
036823,000060:
036824,000061: # SCALING CONSIDERATIONS
036825,000062: # UNITS MAX. VALUE INTERNAL UNITS AND SCALING
036826,000063:
036827,000064: # PIPA BIAS (CM)/(SEC)(SEC) 3.125 (PIPA PULSES)/(CS) X 2(-5)
036828,000065: # PIPA SCALE FACTOR P.P.M. 1953.125 (PPM) X 2(-9)
036829,000066: # NBD MERU 128.74604 (GYRO PULSES)/(CS) X 2(-5)
036830,000067: # ADIA (MERU)/(G) 630.36633 (GYRO PULSES)/(PIPA PULSE) X 2(-6)
036831,000068: # ADSRA (MERU)/(G) 630.36633 (GYRO PULSES)/(PIPA PULSE) X 2(-6)
036832,000069:
![]() |
Page 860 |
036834,000071: # CONVERSION TABLE
036835,000072: # 1 PIPA PULSE = 1.00 (CM)/(SEC) 1 ERU = 7.29209817 X 10(-5) (RAD)/(SEC)
036836,000073: # 1 ERU = 15.04104488 (ARCSEC)/(SEC) 1 (CM)/(SEC)(SEC) = .01 (PIPA PULSES)/(CS)
036837,000074: # 1 GYRO PULSE = .61798096 ARCSEC 1 MERU = .00024272592 (GYRO PULSES)/(CS)
036838,000075: # 1 G = 979.24 (CM)/(SEC)(SEC) (AMR) 1 (MERU)/(G) = .000024787174 (GYRO PULSES)/(PIPA PULSE)
036839,000076:
036840,000077: # REFERENCES
036841,000078: # AGC PROGRAMMING MEMO NO. 12, I.S.S. MEMO NO. 247, I.S.S. MEMO NO. 328, I.S.S. MEMO NO. 339
036842,000079:
036843,000080: # CALLING SEQUENCE
036844,000081: # L TC BANKCALL
036845,000082: # L+1 CADR 1/PIPA
036846,000083: # L+2 RETURNS HERE
036847,000084:
036848,000085: # NORMAL EXIT MODES
036849,000086: # AT L+2 OF CALLING SEQUENCE
036850,000087:
036851,000088: # ALARM OR ABORT MODES
036852,000089: # ENDOFJOB
036853,000090:
036854,000091: # ERASABLE INITIALIZATION REQUIRED (CONSECUTIVE LOCATIONS)
036855,000092: # PBIASX PIPAX BIAS
036856,000093: # PIPASCFX PIPAX SCALE FACTOR ERROR
036857,000094: # PBIASY PIPAY BIAS
036858,000095: # PIPASCFY PIPAY SCALE FACTOR ERROR
036859,000096: # PBIASZ PIPAZ BIAS
036860,000097: # PIPASCFZ PIPAZ SCALE FACTOR ERROR
036861,000098: # NBDX X IRIG BIAS DRIFT
036862,000099: # NBDY Y IRIG BIAS DRIFT
036863,000100: # NDBZ Z IRIG BIAS DRIFT
036864,000101: # ADIAX IRIG ACCELERATION SENSITIVE DRIFT ALONG THE X INPUT AXIS
036865,000102: # ADIAY IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Y INPUT AXIS
036866,000103: # ADIAZ IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Z INPUT AXIS
036867,000104: # ADSRAX IRIG ACCELERATION SENSITIVE DRIFT ALONG THE X SPIN REFERENCE AXIS
036868,000105: # ADSRAY IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Y SPIN REFERENCE AXIS
036869,000106: # ADSRAZ IRIG ACCELERATION SENSITIVE DRIFT ALONG THE Z SPIN REFERENCE AXIS
036870,000107: # GCOMP GYRO COMPENSATION PULSES (SET = ZERO FOR 1ST PASS)
036871,000108:
036872,000109: # INPUT
036873,000110: # 1/PIPADT - DELTA TIME SCALED AT (CS) X 2(+8)
036874,000111: # DELVX, DELVY, DELVZ - PIPA READINGS IN THE MAJOR PARTS - MINOR PARTS IRRELEVANT
036875,000112:
036876,000113: # OUTPUT
036877,000114: # DELVX, DELVY, DELVZ - PIPA COUNTS SCALED 2(+14) COMPENSATED FOR PIPA BIAS AND SCALE FACTOR ERROR
036878,000115: # GCOMP - 3 DP LOCATIONS CONTAINING GYRO PULSES TO COMPENSATE FOR NBD, ADIA, AND ADSRA COEFFICIENTS
036879,000116:
036880,000117: # DEBRIS
036881,000118: # CENTRALS - A,L,Q
036882,000119: # OTHER - BUF - BUF +2, VBUF - VBUF +2, GCOMPSW
036883,000120:
![]() |
Page 861 |
036885,000122: 12,3222 33455 1/PIPA CAF LGCOMP # SAVE EBANK OF CALLING PROGRAM
036886,000123: 12,3223 56003 XCH EBANK
036887,000124: 12,3224 54153 TS MODE
036888,000125:
036889,000126: 12,3225 11463 CCS GCOMPSW # BYPASS IF GCOMPSW NEGATIVE
036890,000127: 12,3226 13231 TCF +3
036891,000128: 12,3227 13231 TCF +2
036892,000129: 12,3230 13346 TCF IRIG1 # RETURN
036893,000130:
036894,000131: 12,3231 37761 1/PIPA1 CAF FOUR # PIPAZ, PIPAY, PIPAX
036895,000132: 12,3232 54122 TS BUF +2
036896,000133:
036897,000134: 12,3233 50122 INDEX BUF +2
036898,000135: 12,3234 31437 CA PIPASCF # (P.P.M.) X 2(-9)
036899,000136: 12,3235 00006 EXTEND
036900,000137: 12,3236 50122 INDEX BUF +2
036901,000138: 12,3237 70403 MP DELVX # (PP) X 2(+14) NOW (PIPA PULSES) X 2(+5)
036902,000139: 12,3240 54002 TS Q # SAVE MAJOR PART
036903,000140:
036904,000141: 12,3241 30001 CA L # MINOR PART
036905,000142: 12,3242 00006 EXTEND
036906,000143: 12,3243 77756 MP BIT6 # SCALE 2(+9) SHIFT RIGHT 9
036907,000144: 12,3244 50122 INDEX BUF +2
036908,000145: 12,3245 54404 TS DELVX +1 # FRACTIONAL PIPA PULSES SCALED 2(+14)
036909,000146:
036910,000147: 12,3246 30002 CA Q # MAJOR PART
036911,000148: 12,3247 00006 EXTEND
036912,000149: 12,3250 77756 MP BIT6 # SCALE 2(+9) SHIFT RIGHT 9
036913,000150: 12,3251 50122 INDEX BUF +2
036914,000151: 12,3252 20404 DAS DELVX # (PIPAI) + (PIPAI)(SFE)
036915,000152:
036916,000153: 12,3253 50122 INDEX BUF +2
036917,000154: 12,3254 41436 CS PIPABIAS # (PIPA PULSES)/(CS) X 2(-5) *
036918,000155: 12,3255 00006 EXTEND
036919,000156: 12,3256 70765 MP 1/PIPADT # (CS) X 2(+8) NOW (PIPA PULSES) X 2(+3)*
036920,000157: 12,3257 00006 EXTEND
036921,000158: 12,3260 77760 MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11 *
036922,000159: 12,3261 50122 INDEX BUF +2
036923,000160: 12,3262 20404 DAS DELVX # (PIPAI) + (PIPAI)(SFE) - (BIAS)(DELTAT)
036924,000161:
036925,000162: 12,3263 10122 CCS BUF +2 # PIPAZ, PIPAY, PIPAX
036926,000163: 12,3264 67771 AD NEG1
036927,000164: 12,3265 13232 TCF 1/PIPA1 +1
036928,000165: 12,3266 13267 NOOP # LESS THAN ZERO IMPOSSIBLE
036929,000166:
![]() |
Page 862 |
036931,000168: 12,3267 55463 IRIGCOMP TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS
036932,000169: 12,3270 54120 TS BUF # INDEX COUNTER - IRIGX, IRIGY, IRIGZ
036933,000170:
036934,000171: 12,3271 00006 IRIGX EXTEND
036935,000172: 12,3272 40404 DCS DELVX # (PIPA PULSES) X 2(+14)
036936,000173: 12,3273 52145 DXCH MPAC
036937,000174: 12,3274 31447 CA ADIAX # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
036938,000175: 12,3275 03351 TC GCOMPSUB # -(ADIAX)(PIPAX) (GYRO PULSES) X 2(+14)
036939,000176:
036940,000177: 12,3276 00006 EXTEND
036941,000178: 12,3277 40406 DCS DELVY # (PIPA PULSES) X 2(+14)
036942,000179: 12,3300 52145 DXCH MPAC
036943,000180: 12,3301 41452 CS ADSRAX # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
036944,000181: 12,3302 03351 TC GCOMPSUB # +(ADSRAX)(PIPAY) (GYRO PULSES) X 2(+14)
036945,000182:
036946,000183: 12,3303 41444 CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
036947,000184: 12,3304 03400 TC DRIFSTUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14)
036948,000185:
036949,000186: 12,3305 00006 IRIGY EXTEND
036950,000187: 12,3306 40406 DCS DELVY # (PIPA PULSES) X 2(+14)
036951,000188: 12,3307 52145 DXCH MPAC
036952,000189: 12,3310 31450 CA ADIAY # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
036953,000190: 12,3311 03351 TC GCOMPSUB # -(ADIAY)(PIPAY) (GYRO PULSES) X 2(+14)
036954,000191:
036955,000192: 12,3312 00006 EXTEND
036956,000193: 12,3313 40410 DCS DELVZ # (PIPA PULSES) X 2(+14)
036957,000194: 12,3314 52145 DXCH MPAC
036958,000195: 12,3315 41453 CS ADSRAY # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
036959,000196: 12,3316 03351 TC GCOMPSUB # +(ADSRAY)(PIPAZ) (GYRO PULSES) X 2(+14)
036960,000197:
036961,000198: 12,3317 41445 CS NBDY # (GYRO PULSES)/(CS) X 2(-5)
036962,000199: 12,3320 03400 TC DRIFSTUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)
036963,000200:
036964,000201: 12,3321 00006 IRIGZ EXTEND
036965,000202: 12,3322 40406 DCS DELVY # (PIPA PULSES) X 2(+14)
036966,000203: 12,3323 52145 DXCH MPAC
036967,000204: 12,3324 31454 CA ADSRAZ # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
036968,000205: 12,3325 03351 TC GCOMPSUB # -(ADSRAZ)(PIPAY) (GYRO PULSES) X 2(+14)
036969,000206:
036970,000207: 12,3326 00006 EXTEND
036971,000208: 12,3327 40410 DCS DELVZ # (PIPA PULSES) X 2(+14)
036972,000209: 12,3330 52145 DXCH MPAC
036973,000210: 12,3331 31451 CA ADIAZ # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
036974,000211: 12,3332 03351 TC GCOMPSUB # -(ADIAZ)(PIPAZ) (GYRO PULSES) X 2(+14)
036975,000212:
036976,000213: 12,3333 31446 CA NBDZ # (GYRO PULSES)/(CS) X 2(-5)
036977,000214: 12,3334 03400 TC DRIFSTUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2(+14)
036978,000215:
![]() |
Page 863 |
036980,000217: 12,3335 11463 CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
036981,000218: 12,3336 13340 TCF +2 # YES
036982,000219: 12,3337 13346 TCF IRIG1 # NO
036983,000220:
036984,000221: 12,3340 00004 INHINT
036985,000222: 12,3341 35656 CAF PRIO35 # SEND OUT GYRO TORQUING COMMANDS
036986,000223: 12,3342 05505 TC NOVAC
036987,000224: 12,3343 E3,1444 EBANK= NBDX
036988,000225: 12,3343 03433 24063 2CADR 1/GYRO
036989,000226:
036990,000227: 12,3345 00003 RELINT
036991,000228: 12,3346 30153 IRIG1 CA MODE # SET EBANK FOR RETURN
036992,000229: 12,3347 54003 TS EBANK
036993,000230: 12,3350 15221 TCF SWRETURN
036994,000231:
036995,000232:
036996,000233:
036997,000234: 12,3351 56144 GCOMPSUB XCH MPAC # ADIA OR ADSRA COEFFICIENT ARRIVES IN A
036998,000235: 12,3352 00006 EXTEND # C(MPAC) = (PIPA PULSES) X 2(+14)
036999,000236: 12,3353 70144 MP MPAC # (GYRO PULSES)/(PIPA PULSE) X 2(-6) *
037000,000237: 12,3354 52113 DXCH VBUF # NOW = (GYRO PULSES) X 2(+8) *
037001,000238:
037002,000239: 12,3355 30145 CA MPAC +1 # MINOR PART PIPA PULSES
037003,000240: 12,3356 00006 EXTEND
037004,000241: 12,3357 70144 MP MPAC # ADIA OR ADSRA
037005,000242: 12,3360 54001 TS L
037006,000243: 12,3361 37767 CAF ZERO
037007,000244: 12,3362 20113 DAS VBUF # NOW = (GYRO PULSES) X 2(+8) *
037008,000245:
037009,000246: 12,3363 30112 CA VBUF # PARTIAL RESULT - MAJOR
037010,000247: 12,3364 00006 EXTEND
037011,000248: 12,3365 77753 MP BIT9 # SCALE 2(+6) SHIFT RIGHT 6 *
037012,000249: 12,3366 50120 INDEX BUF # RESULT = (GYRO PULSES) X 2(+14)
037013,000250: 12,3367 21456 DAS GCOMP # HI(ADIA)(PIPAI) OR HI(ADSRA)(PIPAI)
037014,000251:
037015,000252: 12,3370 30113 CA VBUF +1 # PARTIAL RESULT - MINOR
037016,000253: 12,3371 00006 EXTEND
037017,000254: 12,3372 77753 MP BIT9 # SCALE 2(+6) SHIFT RIGHT 6 *
037018,000255: 12,3373 54001 TS L
037019,000256: 12,3374 37767 CAF ZERO
037020,000257: 12,3375 50120 INDEX BUF # RESULT = (GYRO PULSES) X 2(+14)
037021,000258: 12,3376 21456 DAS GCOMP # (ADIA)(PIPAI) OR (ADSRA)(PIPAI)
037022,000259:
037023,000260: 12,3377 00002 TC Q
037024,000261:
![]() |
Page 864 |
037026,000263: 12,3400 00006 DRIFSTUB EXTEND
037027,000264: 12,3401 22121 QXCH BUF +1
037028,000265:
037029,000266: 12,3402 00006 EXTEND # C(A) = NBD (GYRO PULSES)/(CS) X 2(-5)
037030,000267: 12,3403 70765 MP 1/PIPADT # (CS) X 2(+8) NOW (GYRO PULSES) X 2(+3)
037031,000268: 12,3404 22145 LXCH MPAC +1 # SAVE FOR FRACTIONAL COMPENSATION
037032,000269: 12,3405 00006 EXTEND
037033,000270: 12,3406 77760 MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11
037034,000271: 12,3407 50120 INDEX BUF
037035,000272: 12,3410 21456 DAS GCOMP # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)
037036,000273:
037037,000274: 12,3411 30145 CA MPAC +1 # NOW MINOR PART
037038,000275: 12,3412 00006 EXTEND
037039,000276: 12,3413 77760 MP BIT4 # SCALE 2(+11) SHIFT RIGHT 11
037040,000277: 12,3414 54001 TS L
037041,000278: 12,3415 37767 CAF ZERO
037042,000279: 12,3416 50120 INDEX BUF # ADD IN FRACTIONAL COMPENSATION
037043,000280: 12,3417 21456 DAS GCOMP # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)
037044,000281:
037045,000282: 12,3420 37762 DRFTSUB2 CAF TWO # PIPAX, PIPAY, PIPAZ
037046,000283: 12,3421 60120 AD BUF
037047,000284: 12,3422 56120 XCH BUF
037048,000285: 12,3423 50000 INDEX A
037049,000286: 12,3424 11455 CCS GCOMP # ARE GYRO COMMANDS 1 PULSE OR GREATER
037050,000287: 12,3425 13427 TCF +2 # YES
037051,000288: 12,3426 00121 TC BUF +1 # NO
037052,000289:
037053,000290: 12,3427 73477 MASK COMPCHK # DEC -1
037054,000291: 12,3430 10000 CCS A # ARE GYRO COMMANDS GREATER THAN 2 PULSES
037055,000292: 12,3431 55463 TS GCOMPSW # YES - SET GCOMPSW POSITIVE
037056,000293: 12,3432 00121 TC BUF +1 # NO
037057,000294:
![]() |
Page 865 |
037059,000296: 12,3433 37761 1/GYRO CAF FOUR # PIPAZ, PIPAY, PIPAX
037060,000297: 12,3434 54120 TS BUF
037061,000298:
037062,000299: 12,3435 50120 INDEX BUF # SCALE GYRO COMMANDS FOR IMUPULSE
037063,000300: 12,3436 31456 CA GCOMP +1 # FRACTIONAL PULSES
037064,000301: 12,3437 00006 EXTEND
037065,000302: 12,3440 77754 MP BIT8 # SHIFT RIGHT 7
037066,000303: 12,3441 50120 INDEX BUF
037067,000304: 12,3442 55456 TS GCOMP +1 # FRACTIONAL PULSES SCALED
037068,000305:
037069,000306: 12,3443 37767 CAF ZERO # SET GCOMP = 0 FOR DAS INSTRUCTION
037070,000307: 12,3444 50120 INDEX BUF
037071,000308: 12,3445 57455 XCH GCOMP # GYRO PULSES
037072,000309: 12,3446 00006 EXTEND
037073,000310: 12,3447 77754 MP BIT8 # SHIFT RIGHT 7
037074,000311: 12,3450 50120 INDEX BUF
037075,000312: 12,3451 21456 DAS GCOMP # ADD THESE TO FRACTIONAL PULSES ABOVE
037076,000313:
037077,000314: 12,3452 10120 CCS BUF # PIPAZ, PIPAY, PIPAX
037078,000315: 12,3453 67771 AD NEG1
037079,000316: 12,3454 13434 TCF 1/GYRO +1
037080,000317: 12,3455 01455 LGCOMP ECADR GCOMP # LESS THAN ZERO IMPOSSIBLE
037081,000318:
037082,000319: 12,3456 33455 CAF LGCOMP
037083,000320: 12,3457 05206 TC BANKCALL
037084,000321: 12,3460 26362 CADR IMUPULSE # CALL GYRO TORQUING ROUTINE
037085,000322: 12,3461 05206 TC BANKCALL
037086,000323: 12,3462 26751 CADR IMUSTALL # WAIT FOR PULSES TO GET OUT
037087,000324: 12,3463 15567 TCF ENDOFJOB # TEMPORARY
037088,000325:
037089,000326: 12,3464 37761 GCOMP1 CAF FOUR # PIPAZ, PIPAY, PIPAX
037090,000327: 12,3465 54120 TS BUF
037091,000328:
037092,000329: 12,3466 50120 INDEX BUF # RESCALE
037093,000330: 12,3467 31456 CA GCOMP +1
037094,000331: 12,3470 00006 EXTEND
037095,000332: 12,3471 77754 MP BIT8 # SHIFT MINOR PART LEFT 7 - MAJOR PART = 0
037096,000333: 12,3472 50120 INDEX BUF
037097,000334: 12,3473 23456 LXCH GCOMP +1 # BITS 8-14 OF MINOR PART WERE = 0
037098,000335:
037099,000336: 12,3474 10120 CCS BUF # PIPAZ, PIPAY, PIPAX
037100,000337: 12,3475 67771 AD NEG1
037101,000338: 12,3476 13465 TCF GCOMP1 +1
037102,000339: 12,3477 77776 COMPCHK DEC -1 B-14 # LESS THAN ZERO IMPOSSIBLE
037103,000340: 12,3500 15567 TCF ENDOFJOB
037104,000341:
![]() |
Page 866 |
037106,000343: 12,3501 11463 NBDONLY CCS GCOMPSW # BYPASS IF GCOMPSW NEGATIVE
037107,000344: 12,3502 13505 TCF +3
037108,000345: 12,3503 13505 TCF +2
037109,000346: 12,3504 15567 TCF ENDOFJOB
037110,000347:
037111,000348: 12,3505 00004 INHINT
037112,000349: 12,3506 10076 CCS FLAGWRD2 # PREREAD T3RUPT MAY COINCIDE
037113,000350: 12,3507 15567 TCF ENDOFJOB
037114,000351: 12,3510 15567 TCF ENDOFJOB
037115,000352: 12,3511 13512 TCF +1
037116,000353:
037117,000354: 12,3512 30025 CA TIME1 # (CS) X 2(+14)
037118,000355: 12,3513 56765 XCH 1/PIPADT # PREVIOUS TIME
037119,000356: 12,3514 00003 RELINT
037120,000357: 12,3515 40000 COM
037121,000358: 12,3516 60765 AD 1/PIPADT
037122,000359: 12,3517 10000 NBD2 CCS A # CALCULATE ELAPSED TIME
037123,000360: 12,3520 67763 AD ONE # NO TIME1 OVERFLOW
037124,000361: 12,3521 13526 TCF NBD3 # RESTORE TIME DIFFERENCE AND JUMP
037125,000362: 12,3522 13524 TCF +2 # TIME1 OVERFLOW
037126,000363: 12,3523 15567 TCF ENDOFJOB # IF ELAPSED TIME = 0 (DIFFERENCE = -0)
037127,000364:
037128,000365: 12,3524 40000 COM # CALCULATE ABSOLUTE DIFFERENCE
037129,000366: 12,3525 67743 AD POSMAX
037130,000367:
037131,000368: 12,3526 00006 NBD3 EXTEND # C(A) = DELTAT (CS) X 2(+14)
037132,000369: 12,3527 77752 MP BIT10 # SHIFT RIGHT 5
037133,000370: 12,3530 52113 DXCH VBUF
037134,000371: 12,3531 00006 EXTEND
037135,000372: 12,3532 30113 DCA VBUF
037136,000373: 12,3533 52145 DXCH MPAC # DELTAT NOW SCALED (CS) X 2(+19)
037137,000374:
037138,000375: 12,3534 37767 CAF ZERO
037139,000376: 12,3535 55463 TS GCOMPSW # INDICATE COMMANDS 2 PULSES OR LESS
037140,000377: 12,3536 54120 TS BUF # PIPAX, PIPAY, PIPAZ
037141,000378:
037142,000379: 12,3537 41444 CS NBDX # (GYRO PULSES)/(CS) X 2(-5)
037143,000380: 12,3540 03556 TC FBIASSUB # -(NBDX)(DELTAT) (GYRO PULSES) X 2(+14)
037144,000381:
037145,000382: 12,3541 00006 EXTEND
037146,000383: 12,3542 40113 DCS VBUF
037147,000384: 12,3543 52145 DXCH MPAC # DELTAT SCALED (CS) X 2(+19)
037148,000385: 12,3544 31445 CA NBDY # (GYRO PULSES)/(CS) X 2(-5)
037149,000386: 12,3545 03556 TC FBIASSUB # -(NBDY)(DELTAT) (GYRO PULSES) X 2(+14)
037150,000387:
037151,000388: 12,3546 00006 EXTEND
037152,000389: 12,3547 40113 DCS VBUF
037153,000390: 12,3550 52145 DXCH MPAC # DELTAT SCALED (CS) X 2(+19)
037154,000391: 12,3551 41446 CS NBDZ # (GYRO PULSES)/(CS) X 2(-5)
037155,000392: 12,3552 03556 TC FBIASSUB # +(NBDZ)(DELTAT) (GYRO PULSES) X 2 (+14)
037156,000393:
![]() |
Page 867 |
037158,000395: 12,3553 11463 CCS GCOMPSW # ARE GYRO COMMANDS GREATER THAN 2 PULSES
037159,000396: 12,3554 13433 TCF 1/GYRO # YES
037160,000397: 12,3555 15567 TCF ENDOFJOB # NO
037161,000398:
![]() |
Page 868 |
037163,000400: 12,3556 56002 FBIASSUB XCH Q
037164,000401: 12,3557 54121 TS BUF +1
037165,000402:
037166,000403: 12,3560 30002 CA Q # NBD SCALED (GYRO PULSES)/(CS) X 2(-5)
037167,000404: 12,3561 00006 EXTEND
037168,000405: 12,3562 70144 MP MPAC # DELTAT SCALED (CS) X 2(+19)
037169,000406: 12,3563 50120 INDEX BUF
037170,000407: 12,3564 21456 DAS GCOMP # HI(NBD)(DELTAT) (GYRO PULSES) X 2(+14)
037171,000408:
037172,000409: 12,3565 30002 CA Q # NOW FRACTIONAL PART
037173,000410: 12,3566 00006 EXTEND
037174,000411: 12,3567 70145 MP MPAC +1
037175,000412: 12,3570 54001 TS L
037176,000413: 12,3571 37767 CAF ZERO
037177,000414: 12,3572 50120 INDEX BUF
037178,000415: 12,3573 21456 DAS GCOMP # (NBD)(DELTAT) (GYRO PULSES) X 2(+14)
037179,000416:
037180,000417: 12,3574 13420 TCF DRFTSUB2 # CHECK MAGNITUDE OF COMPENSATION
037181,000418:
037182,000419:
037183,000420:
037184,000421: 12,3575 11463 LASTBIAS CCS GCOMPSW # BYPASS IF GCOMPSW NEGATIVE
037185,000422: 12,3576 13601 TCF +3
037186,000423: 12,3577 13601 TCF +2
037187,000424: 12,3600 15567 TCF ENDOFJOB
037188,000425:
037189,000426: 12,3601 35652 CAF PRIO31 # 2 SECONDS SCALED (CS) X 2(+8)
037190,000427: 12,3602 56765 XCH 1/PIPADT
037191,000428: 12,3603 40000 COM
037192,000429: 12,3604 61307 AD PIPTIME +1 # TIME AT PIPA1 = 0
037193,000430: 12,3605 13517 TCF NBD2
037194,000431:
037195,000432:
037196,000433:
037197,000434: 12,3606 33455 GCOMPZER CAF LGCOMP # ROUTINE TO ZERO GCOMP BEFORE FIRST
037198,000435: 12,3607 56003 XCH EBANK # CALL TO 1/PIPA
037199,000436: 12,3610 54153 TS MODE
037200,000437:
037201,000438: 12,3611 37767 CAF ZERO
037202,000439: 12,3612 55463 TS GCOMPSW
037203,000440: 12,3613 55455 TS GCOMP
037204,000441: 12,3614 55456 TS GCOMP +1
037205,000442: 12,3615 55457 TS GCOMP +2
037206,000443: 12,3616 55460 TS GCOMP +3
037207,000444: 12,3617 55461 TS GCOMP +4
037208,000445: 12,3620 55462 TS GCOMP +5
037209,000446:
037210,000447: 12,3621 30153 CA MODE
037211,000448: 12,3622 54003 TS EBANK
037212,000449: 12,3623 15221 TCF SWRETURN # RETURN TO CALLER
End of include-file IMU_COMPENSATION_PACKAGE.agc. Parent file is MAIN.agc