Source Code
![]() |
This source code is very close to the Apollo Guidance Computer software for the
Apollo 13 Lunar module. This revision of the Luminary 131 program is from December
of 1969, whereas there was a later revision in January of 1970, and still another
revision in February, which is the code that flew on the mission.
As far as this transcription is concerned, it was originally from a copy made in 1991 of
a printout from the collection of AGC developer Don Eyles for collector David Craig.
It was subsequently scanned by Gary Neff, reprocessed for online
presentation at the now-discontinued History of Recent Science and Technology (HRST) website
of MIT's Dibner Institute (the full-quality scans being discarded in the process),
and finally transcribed by Ron Burkey for the Virtual AGC Project. Although a
high-quality replacement scan for a completely illegible page was later provided by Gary
Neff, the reduced legibility of the reprocessed HRST posting nevertheless caused many
errors to be introduced into the transcription. Accordingly, a second scan of the same physical
printout was made in 2017 for the Virtual AGC Project's collection at the Internet Archive,
and used to correct the transcription errors. All of the scanned materials mentioned,
as well as other Luminary 131 related material, are available online.
Don Eyles apprently made additional hand-written notes in printout between 1991 and 2017,
so the two scans are not identical in that respect. The page-headings in the printout read, in part:GAP: ASSEMBLE REVISION 131 OF AGC PROGRAM LUMINARY BY NASA 2021112-091 17:53 DEC. 19, 1969Note that the date is the date the printout was made, not the date on which the program revision was released, although these happen to be very close together. |
054944,000002: ## Copyright: Public domain.
054945,000003: ## Filename: IMU_MODE_SWITCHING_ROUTINES.agc
054946,000004: ## Purpose: A section of Luminary 1C, revision 131.
054947,000005: ## It is part of the source code for the Lunar Module's (LM)
054948,000006: ## Apollo Guidance Computer (AGC) for Apollo 13.
054949,000007: ## This file is intended to be a faithful transcription, except
054950,000008: ## that the code format has been changed to conform to the
054951,000009: ## requirements of the yaYUL assembler rather than the
054952,000010: ## original YUL assembler.
054953,000011: ## Reference: pp. 1301-1329
054954,000012: ## Contact: Ron Burkey <info@sandroid.org>.
054955,000013: ## Website: www.ibiblio.org/apollo/index.html
054956,000014: ## Mod history: 06/05/03 RSB. Began transcribing.
054957,000015: ## 05/14/05 RSB Corrected website reference above.
054958,000016: ## 2010-08-24 JL Fixed page number comment.
054959,000017: ## 2010-10-25 JL Indentation fixes.
054960,000018: ## 2011-05-07 JL Removed workaround. Flagged SBANK= workaround
054961,000019: ## for future removal.
054962,000020: ## 2017-01-06 RSB Page numbers now agree with those on the
054963,000021: ## original hardcopy, as opposed to the PDF page
054964,000022: ## numbers in 1701.pdf.
054965,000023: ## 2017-01-28 RSB Comment-text fixes identified for Luminary 69.
054966,000024: ## 2017-02-27 RSB Proofed comment text using octopus/ProoferComments.
054967,000025: ## 2017-03-01 RSB Fixed lingering comment-text typos.
054968,000026: ## 2017-03-13 RSB Comment-text fixes noted in proofing Luminary 116.
054969,000027: ## 2017-03-15 RSB Comment-text fixes identified in 6-way
054970,000028: ## side-by-side diff of Sunburst 120 and Luminary
054971,000029: ## 69/99/116/131/210.
054972,000030:
![]() |
Page 1301 |
054974,000032: 5457 BLOCK 02
054975,000033: 4000 SETLOC FFTAG3
054976,000034: 4000 BANK
054977,000035:
054978,000036: 5457 E3,1471 EBANK= COMMAND
054979,000037:
054980,000038: # FIXED-FIXED ROUTINES.
054981,000039:
054982,000040: 5457 COUNT* $$/IMODE
054983,000041: 5457 34755 ZEROICDU CAF ZERO # ZERO ICDU COUNTERS.
054984,000042: 5460 54032 TS CDUX
054985,000043: 5461 54033 TS CDUY
054986,000044: 5462 54034 TS CDUZ
054987,000045: 5463 00002 TC Q
054988,000046:
054989,000047: 5464 4743 SPSCODE = BIT9
054990,000048:
![]() |
Page 1302 |
054992,000050: # IMU ZEROING ROUTINE.
054993,000051:
054994,000052: 11,3774 BANK 11
054995,000053: 07,2000 SETLOC MODESW
054996,000054: 07,2000 BANK
054997,000055:
054998,000056: 07,2705 COUNT* $$/IMODE
054999,000057: 07,2705 00004 IMUZERO INHINT # ROUTINE TO ZERO ICDUS.
055000,000058: 07,2706 41035 CS DSPTAB +11D # DONT ZERO CDUS IF IMU IN GIMBAL LOCK AND
055001,000059: 07,2707 74771 MASK BITS4&6 # COARSE ALIGN (GIMBAL RUNAWAY PROTECTION)
055002,000060: 07,2710 10000 CCS A
055003,000061: 07,2711 12715 TCF IMUZEROA
055004,000062:
055005,000063: 07,2712 05567 TC ALARM # IF SO.
055006,000064: 07,2713 00206 OCT 00206
055007,000065:
055008,000066: 07,2714 13650 TCF CAGETSTJ +4 # IMMEDIATE FAILURE.
055009,000067:
055010,000068: 07,2715 03644 IMUZEROA TC CAGETSTJ
055011,000069: # DELETE
055012,000070: 07,2716 41300 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES
055013,000071: 07,2717 74773 MASK SUPER011 # BIT5 FOR GROUND
055014,000072: 07,2720 27300 ADS IMODES33
055015,000073:
055016,000074: 07,2721 41277 CS IMODES30 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE
055017,000075: 07,2722 75741 MASK BITS3&4 # JUST CAME OUT OF COARSE ALIGN).
055018,000076: 07,2723 27277 ADS IMODES30
055019,000077:
055020,000078: 07,2724 44771 CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR
055021,000079: 07,2725 00006 EXTEND # COUNTER DISABLED.
055022,000080: 07,2726 03012 WAND CHAN12
055023,000081:
055024,000082: 07,2727 03257 TC NOATTOFF # TURN OFF NO ATT LAMP.
055025,000083:
055026,000084: 07,2730 34747 CAF BIT5
055027,000085: 07,2731 00006 EXTEND
055028,000086: 07,2732 05012 WOR CHAN12
055029,000087:
055030,000088: 07,2733 05457 TC ZEROICDU
055031,000089: 07,2734 34746 CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO
055032,000090: 07,2735 05203 TC WAITLIST # RECEIVE ITS PULSE TRAIN.
055033,000091: 07,2736 E3,1474 EBANK= CDUIND
055034,000092: 07,2736 02750 16103 2CADR IMUZERO2
055035,000093:
055036,000094: 07,2740 41277 CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT.
055037,000095: 07,2741 74743 MASK BIT9
055038,000096: 07,2742 10000 CCS A
055039,000097: 07,2743 12746 TCF MODEEXIT
![]() |
Page 1303 |
055041,000099: 07,2744 05567 TC ALARM
055042,000100: 07,2745 00210 OCT 210
055043,000101:
055044,000102: 07,2746 00003 MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT.
055045,000103: 07,2747 14631 TCF SWRETURN
055046,000104:
055047,000105: 07,2750 03632 IMUZERO2 TC CAGETEST
055048,000106: 07,2751 05457 TC ZEROICDU # ZERO CDUX, CDUY, CDUZ
055049,000107:
055050,000108: 07,2752 44747 CS BIT5 # REMOVE ZERO DISCRETE.
055051,000109: 07,2753 00006 EXTEND
055052,000110: 07,2754 03012 WAND CHAN12
055053,000111:
055054,000112: 07,2755 34741 CAF BIT11 # WAIT 10 SECS FOR CTRS TO FIND GIMBALS
055055,000113: 07,2756 05224 TC VARDELAY
055056,000114:
055057,000115: 07,2757 03632 IMUZERO3 TC CAGETEST
055058,000116: 07,2760 45741 CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT.
055059,000117: 07,2761 71277 MASK IMODES30
055060,000118: 07,2762 55277 TS IMODES30
055061,000119:
055062,000120: 07,2763 44773 CS SUPER011 # ENABLE DAP AUTO AND HOLD MODES
055063,000121: 07,2764 71300 MASK IMODES33 # BIT5 FOR GROUND
055064,000122: 07,2765 55300 TS IMODES33
055065,000123:
055066,000124: 07,2766 04674 TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE
055067,000125: 07,2767 14703 CADR SETISSW # PRESENT.
055068,000126:
055069,000127: 07,2770 13622 TCF ENDIMU
055070,000128:
![]() |
Page 1304 |
055072,000130: # IMU COARSE ALIGN MODE.
055073,000131:
055074,000132: 07,2771 00004 IMUCOARS INHINT
055075,000133: 07,2772 03644 TC CAGETSTJ
055076,000134: 07,2773 03135 TC SETCOARS
055077,000135:
055078,000136: 07,2774 36245 CAF SIX
055079,000137: 07,2775 05203 TC WAITLIST
055080,000138: 07,2776 E3,1474 EBANK= CDUIND
055081,000139: 07,2776 03001 16103 2CADR COARS
055082,000140:
055083,000141: 07,3000 12746 TCF MODEEXIT
055084,000142:
055085,000143: 07,3001 03632 COARS TC CAGETEST
055086,000144: 07,3002 34746 CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS
055087,000145: 07,3003 00006 EXTEND
055088,000146: 07,3004 05012 WOR CHAN12
055089,000147:
055090,000148: 07,3005 34752 CAF TWO # SET CDU INDICATOR
055091,000149: 07,3006 55474 COARS1 TS CDUIND
055092,000150:
055093,000151: 07,3007 51474 INDEX CDUIND # COMPUTE THETAD - THETAA IN 1:S
055094,000152: 07,3010 30321 CA THETAD # COMPLEMENT FORM
055095,000153: 07,3011 00006 EXTEND
055096,000154: 07,3012 51474 INDEX CDUIND
055097,000155: 07,3013 20032 MSU CDUX
055098,000156: 07,3014 00006 EXTEND
055099,000157: 07,3015 74737 MP BIT13 # SHIFT RIGHT 2
055100,000158: 07,3016 56001 XCH L # ROUND
055101,000159: 07,3017 60000 DOUBLE
055102,000160: 07,3020 54061 TS ITEMP1
055103,000161: 07,3021 13023 TCF +2
055104,000162: 07,3022 26001 ADS L
055105,000163:
055106,000164: 07,3023 51474 INDEX CDUIND # DIFFERENCE TO BE COMPUTED
055107,000165: 07,3024 23471 LXCH COMMAND
055108,000166: 07,3025 11474 CCS CDUIND
055109,000167: 07,3026 03006 TC COARS1
055110,000168:
055111,000169: 07,3027 34752 CAF TWO # MINIMUM OF 4 MS WAIT
055112,000170: 07,3030 05224 TC VARDELAY
055113,000171:
![]() |
Page 1305 |
055115,000173: 07,3031 03632 COARS2 TC CAGETEST # DONT CONTINUE IF CAGED.
055116,000174: 07,3032 54061 TS ITEMP1 # SETS TO +0.
055117,000175: 07,3033 34752 CAF TWO # SET CDU INDICATOR
055118,000176: 07,3034 55474 +3 TS CDUIND
055119,000177:
055120,000178: 07,3035 51474 INDEX CDUIND
055121,000179: 07,3036 11471 CCS COMMAND # NUMBER OF PULSES REQUIRED
055122,000180: 07,3037 03043 TC COMPOS # GREATER THAN MAX ALLOWED
055123,000181: 07,3040 03052 TC NEXTCDU +1
055124,000182: 07,3041 03110 TC COMNEG
055125,000183: 07,3042 03052 TC NEXTCDU +1
055126,000184:
055127,000185: 07,3043 63736 COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED
055128,000186: 07,3044 00006 EXTEND # MINUS ONE
055129,000187: 07,3045 63120 BZMF COMZERO
055130,000188: 07,3046 51474 INDEX CDUIND
055131,000189: 07,3047 55471 TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES
055132,000190: 07,3050 43737 CS -COMMAX- # ALLOWED
055133,000191:
055134,000192: 07,3051 24061 NEXTCDU INCR ITEMP1
055135,000193: 07,3052 64754 AD NEG0
055136,000194: 07,3053 51474 INDEX CDUIND
055137,000195: 07,3054 54050 TS CDUXCMD # SET UP COMMAND REGISTER.
055138,000196:
055139,000197: 07,3055 11474 CCS CDUIND
055140,000198: 07,3056 03034 TC COARS2 +3
055141,000199:
055142,000200: 07,3057 10061 CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT.
055143,000201: 07,3060 13124 TCF SENDPULS
055144,000202:
055145,000203: 07,3061 05221 TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE.
055146,000204: 07,3062 00226 DEC 150 B-14
055147,000205:
055148,000206: 07,3063 34752 CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT
055149,000207: 07,3064 54061 CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD.
055150,000208: 07,3065 50000 INDEX A
055151,000209: 07,3066 30032 CA CDUX
055152,000210: 07,3067 00006 EXTEND
055153,000211: 07,3070 50061 INDEX ITEMP1
055154,000212: 07,3071 20321 MSU THETAD
055155,000213: 07,3072 10000 CCS A
055156,000214: 07,3073 13101 TCF COARSERR
055157,000215: 07,3074 13076 TCF CORSCHK2
055158,000216: 07,3075 13101 TCF COARSERR
055159,000217:
![]() |
Page 1306 |
055161,000219: 07,3076 10061 CORSCHK2 CCS ITEMP1
055162,000220: 07,3077 13064 TCF CHKCORS
055163,000221: 07,3100 13622 TCF ENDIMU # END OF COARSE ALIGNMENT.
055164,000222:
055165,000223: 07,3101 63107 COARSERR AD COARSTOL # 2 DEGREES.
055166,000224: 07,3102 00006 EXTEND
055167,000225: 07,3103 63076 BZMF CORSCHK2
055168,000226:
055169,000227: 07,3104 05567 TC ALARM # COARSE ALIGN ERROR.
055170,000228: 07,3105 00211 OCT 211
055171,000229:
055172,000230: 07,3106 13630 TCF IMUBAD
055173,000231:
055174,000232: 07,3107 77511 COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS
055175,000233:
055176,000234: 07,3110 63736 COMNEG AD -COMMAX
055177,000235: 07,3111 00006 EXTEND
055178,000236: 07,3112 63120 BZMF COMZERO
055179,000237: 07,3113 40000 COM
055180,000238: 07,3114 51474 INDEX CDUIND
055181,000239: 07,3115 55471 TS COMMAND
055182,000240: 07,3116 33737 CA -COMMAX-
055183,000241: 07,3117 03051 TC NEXTCDU
055184,000242:
055185,000243: 07,3120 34755 COMZERO CAF ZERO
055186,000244: 07,3121 51474 INDEX CDUIND
055187,000245: 07,3122 57471 XCH COMMAND
055188,000246: 07,3123 03051 TC NEXTCDU
055189,000247:
055190,000248: 07,3124 37743 SENDPULS CAF 13,14,15
055191,000249: 07,3125 00006 EXTEND
055192,000250: 07,3126 05014 WOR CHAN14
055193,000251: 07,3127 33740 CAF 600MS
055194,000252: 07,3130 13030 TCF COARS2 -1 # THEN TO VARDELAY
055195,000253:
055196,000254: 07,3131 34746 CA+ECE CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS
055197,000255: 07,3132 00006 EXTEND
055198,000256: 07,3133 05012 WOR CHAN12
055199,000257: 07,3134 05261 TC TASKOVER
055200,000258:
![]() |
Page 1307 |
055202,000260: 07,3135 34750 SETCOARS CAF BIT4 # BYPASS IF ALREADY IN COARSE ALIGN
055203,000261: 07,3136 00006 EXTEND
055204,000262: 07,3137 02012 RAND CHAN12
055205,000263: 07,3140 10000 CCS A
055206,000264: 07,3141 00002 TC Q
055207,000265:
055208,000266: 07,3142 44746 CS BIT6 # CLEAR ISS ERROR COUNTERS
055209,000267: 07,3143 00006 EXTEND
055210,000268: 07,3144 03012 WAND CHAN12
055211,000269:
055212,000270: 07,3145 44742 CS BIT10 # KNOCK DOWN GYRO ACTIVITY
055213,000271: 07,3146 00006 EXTEND
055214,000272: 07,3147 03014 WAND CHAN14
055215,000273: 07,3150 44755 CS ZERO
055216,000274: 07,3151 54047 TS GYROCMD
055217,000275:
055218,000276: 07,3152 34750 CAF BIT4 # PUT ISS IN COARSE ALIGN
055219,000277: 07,3153 00006 EXTEND
055220,000278: 07,3154 05012 WOR CHAN12
055221,000279:
055222,000280: 07,3155 41035 CS DSPTAB +11D # TURN ON NO ATT LAMP
055223,000281: 07,3156 73200 MASK OCT40010
055224,000282: 07,3157 27035 ADS DSPTAB +11D
055225,000283:
055226,000284: 07,3160 41300 CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES
055227,000285: 07,3161 74746 MASK BIT6
055228,000286: 07,3162 27300 ADS IMODES33
055229,000287:
055230,000288: 07,3163 41277 CS IMODES30 # DISABLE IMUFAIL
055231,000289: 07,3164 74750 MASK BIT4
055232,000290: 07,3165 27277 ADS IMODES30
055233,000291:
055234,000292: 07,3166 44747 RNDREFDR CS TRACKBIT # CLEAR TRACK FLAG
055235,000293: 07,3167 70075 MASK FLAGWRD1
055236,000294: 07,3170 54075 TS FLAGWRD1
055237,000295:
055238,000296: 07,3171 44735 CS DRFTBIT # CLEAR DRIFT FLAG
055239,000297: 07,3172 70076 MASK FLAGWRD2
055240,000298: 07,3173 54076 TS FLAGWRD2
055241,000299:
055242,000300: 07,3174 44737 CS REFSMBIT # CLEAR REFSMMAT FLAG
055243,000301: 07,3175 70077 MASK FLAGWRD3
055244,000302: 07,3176 54077 TS FLAGWRD3
055245,000303:
055246,000304: 07,3177 00002 TC Q
055247,000305:
055248,000306: 07,3200 40010 OCT40010 OCT 40010
055249,000307:
![]() |
Page 1308 |
055251,000309: # IMU FINE ALIGN MODE SWITCH.
055252,000310:
055253,000311: 07,3201 00004 IMUFINE INHINT
055254,000312: 07,3202 03644 TC CAGETSTJ # SEE IF IMU BEING CAGED.
055255,000313:
055256,000314: 07,3203 43735 CS BITS4-5 # RESET ZERO AND COARSE
055257,000315: 07,3204 00006 EXTEND
055258,000316: 07,3205 03012 WAND CHAN12
055259,000317:
055260,000318: 07,3206 44746 CS BIT6 # INSURE DAP AUTO AND HOLD MODES ENABLED
055261,000319: 07,3207 71300 MASK IMODES33
055262,000320: 07,3210 55300 TS IMODES33
055263,000321:
055264,000322: 07,3211 03257 TC NOATTOFF
055265,000323:
055266,000324: 07,3212 34742 CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE
055267,000325: 07,3213 05203 TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE
055268,000326: 07,3214 E3,1474 EBANK= CDUIND
055269,000327: 07,3214 03225 16103 2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN
055270,000328:
055271,000329: 07,3216 35000 CAF 2SECS
055272,000330: 07,3217 05203 TC WAITLIST
055273,000331: 07,3220 E3,1474 EBANK= CDUIND
055274,000332: 07,3220 03223 16103 2CADR IMUFINED
055275,000333:
055276,000334: 07,3222 12746 TCF MODEEXIT
055277,000335:
055278,000336: 07,3223 03632 IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU.
055279,000337: 07,3224 13622 TCF ENDIMU
055280,000338:
![]() |
Page 1309 |
055282,000340: 07,3225 03637 IFAILOK TC CAGETSTQ # ENABLE IMU FIAL UNLESS IMU BEING CAGED.
055283,000341: 07,3226 15261 TCF TASKOVER # IT IS.
055284,000342:
055285,000343: 07,3227 34750 CAF BIT4 # DONT RESET IMU FAIL INHIBIT IF SOMEONE
055286,000344: 07,3230 00006 EXTEND # HAS GONE INTO COARSE ALIGN.
055287,000345: 07,3231 02012 RAND CHAN12
055288,000346: 07,3232 10000 CCS A
055289,000347: 07,3233 15261 TCF TASKOVER
055290,000348:
055291,000349: 07,3234 41277 CS IMODES30 # RESET IMUFAIL.
055292,000350: 07,3235 74737 MASK BIT13
055293,000351: 07,3236 27277 ADS IMODES30
055294,000352: 07,3237 44750 CS BIT4
055295,000353: 07,3240 71277 PFAILOK2 MASK IMODES30
055296,000354: 07,3241 55277 TS IMODES30
055297,000355: 07,3242 04674 TC IBNKCALL # THE ISS WARNING LIGHT MAY COME ON NOW
055298,000356: 07,3243 14703 CADR SETISSW # THAT THE INHIBIT HAS BEEN REMOVED.
055299,000357: 07,3244 15261 TCF TASKOVER
055300,000358:
055301,000359: 07,3245 03637 PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM.
055302,000360: 07,3246 15261 TCF TASKOVER
055303,000361:
055304,000362: 07,3247 41277 CS IMODES30 # RESET IMU AND PIPA FAIL BITS.
055305,000363: 07,3250 74742 MASK BIT10
055306,000364: 07,3251 27277 ADS IMODES30
055307,000365:
055308,000366: 07,3252 41300 CS IMODES33
055309,000367: 07,3253 74737 MASK BIT13
055310,000368: 07,3254 27300 ADS IMODES33
055311,000369:
055312,000370: 07,3255 44747 CS BIT5
055313,000371: 07,3256 13240 TCF PFAILOK2
055314,000372:
055315,000373: 07,3257 43200 NOATTOFF CS OCT40010 # SUBROUTINE TO TURN OFF NO ATT LAMP.
055316,000374: 07,3260 71035 MASK DSPTAB +11D
055317,000375: 07,3261 64735 AD BIT15
055318,000376: 07,3262 55035 TS DSPTAB +11D
055319,000377: 07,3263 00002 TC Q
055320,000378:
![]() |
Page 1310 |
055322,000380: # ROUITNES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE.
055323,000381:
055324,000382: 07,3264 44755 PIPUSE CS ZERO
055325,000383: 07,3265 54037 TS PIPAX
055326,000384: 07,3266 54040 TS PIPAY
055327,000385: 07,3267 54041 TS PIPAZ
055328,000386:
055329,000387: 07,3270 03637 PIPUSE1 TC CAGETSTQ # DO NOT ENABLE PIPA FAIL IF IMU IS CAGED
055330,000388: 07,3271 14631 TCF SWRETURN
055331,000389:
055332,000390: 07,3272 00004 INHINT
055333,000391: 07,3273 44753 CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL
055334,000392: 07,3274 71277 MASK IMODES30 # PIPFREE), LIGHT ISS WARNING.
055335,000393: 07,3275 55277 TS IMODES30
055336,000394:
055337,000395: 07,3276 04674 PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW.
055338,000396: 07,3277 14703 CADR SETISSW # (OR GO OFF ON PIPFREE).
055339,000397:
055340,000398: 07,3300 12746 TCF MODEEXIT
055341,000399:
055342,000400: 07,3301 00004 PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DONT LIGHT
055343,000401: 07,3302 41277 CS IMODES30 # ISS WARNING.
055344,000402: 07,3303 74753 MASK BIT1
055345,000403: 07,3304 27277 ADS IMODES30
055346,000404:
055347,000405: 07,3305 74742 MASK BIT10 # IF PIP FAIL ON, DO PROG ALSRM AND RESET
055348,000406: 07,3306 10000 CCS A # ISS WARNING.
055349,000407: 07,3307 12746 TCF MODEEXIT
055350,000408:
055351,000409: 07,3310 05567 TC ALARM
055352,000410: 07,3311 00212 OCT 212
055353,000411:
055354,000412: 07,3312 00004 INHINT
055355,000413:
055356,000414: 07,3313 13276 TCF PIPFREE2
055357,000415:
![]() |
Page 1311 |
055359,000417: # THE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIX REGISTERS
055360,000418: # BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE
055361,000419: # UNSENT PORTION OF THE COMMAND IS LEFT INTACT IN THE INPUT COMMAND REGISTERS.
055362,000420:
055363,000421: 07,3314 E3,1400 EBANK= 1400 # VARIABLE, ACTUALLY.
055364,000422:
055365,000423: 07,3314 54161 IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR.
055366,000424: 07,3315 03644 TC CAGETSTJ # DONT PROCEED IF IMU BEING CAGED.
055367,000425:
055368,000426: 07,3316 11311 CCS LGYRO # SEE IF GYROS BUSY.
055369,000427: 07,3317 03360 TC GYROBUSY # SLEEP.
055370,000428:
055371,000429: 07,3320 54156 TS MPAC +2
055372,000430: 07,3321 34746 CAF BIT6 # ENABLE THE POWER SUPPLY.
055373,000431: 07,3322 00006 EXTEND
055374,000432: 07,3323 05014 WOR CHAN14
055375,000433:
055376,000434: 07,3324 34751 CAF FOUR
055377,000435: 07,3325 05203 GWAKE2 TC WAITLIST # (IF A JOB WAS PUT TO SLEEP, THE POWER
055378,000436: 07,3326 E3,1474 EBANK= CDUIND # SUPPLY IS LEFT ON BY THE WAKING JOB).
055379,000437: 07,3326 03376 16103 2CADR STRTGYRO
055380,000438:
055381,000439: 07,3330 30161 CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR
055382,000440: 07,3331 56003 XCH EBANK # RESTORATION ON RETURN.
055383,000441: 07,3332 56161 XCH MPAC +5
055384,000442: 07,3333 55311 TS LGYRO # RESERVES GYROS.
055385,000443: 07,3334 74357 MASK LOW8
055386,000444: 07,3335 54061 TS ITEMP1
055387,000445:
055388,000446: 07,3336 34752 CAF TWO # FORCE SIGN AGREEMENT ON INPUTS.
055389,000447: 07,3337 54157 GYROAGRE TS MPAC +3
055390,000448: 07,3340 60000 DOUBLE
055391,000449: 07,3341 60061 AD ITEMP1
055392,000450: 07,3342 54160 TS MPAC +4
055393,000451: 07,3343 00006 EXTEND
055394,000452: 07,3344 50000 INDEX A
055395,000453: 07,3345 31401 DCA 1400
055396,000454: 07,3346 52155 DXCH MPAC
055397,000455: 07,3347 07262 TC TPAGREE
055398,000456: 07,3350 52155 DXCH MPAC
055399,000457: 07,3351 50160 INDEX MPAC +4
055400,000458: 07,3352 53401 DXCH 1400
055401,000459:
055402,000460: 07,3353 10157 CCS MPAC +3
055403,000461: 07,3354 13337 TCF GYROAGRE
055404,000462:
055405,000463: 07,3355 30161 CA MPAC +5 # RESTORE CALLER'S EBANK.
055406,000464: 07,3356 54003 TS EBANK
055407,000465: 07,3357 12746 TCF MODEEXIT
055408,000466:
![]() |
Page 1312 |
055410,000468: # ROUTINES TO ALLOW TORQUING BY ONLY ONE JOB AT A TIME.
055411,000469:
055412,000470: 07,3360 00006 GYROBUSY EXTEND # SAVE RETURN 2FCADR.
055413,000471: 07,3361 30134 DCA BUF2
055414,000472: 07,3362 52155 DXCH MPAC
055415,000473: 07,3363 33375 REGSLEEP CAF LGWAKE
055416,000474: 07,3364 15133 TCF JOBSLEEP
055417,000475:
055418,000476: 07,3365 11311 GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY.
055419,000477: 07,3366 13363 TCF REGSLEEP # IF SO, SLEEP SOME MORE.
055420,000478:
055421,000479: 07,3367 54156 TS MPAC +2
055422,000480: 07,3370 00006 EXTEND
055423,000481: 07,3371 30155 DCA MPAC
055424,000482: 07,3372 52134 DXCH BUF2 # RESTORE SWRETURN INFO.
055425,000483: 07,3373 34753 CAF ONE
055426,000484: 07,3374 13325 TCF GWAKE2
055427,000485:
055428,000486: 07,3375 17365 LGWAKE CADR GWAKE
055429,000487:
![]() |
Page 1313 |
055431,000489: # GYRO-TORQUING WAITLIST TASKS.
055432,000490:
055433,000491: 07,3376 43617 STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO.
055434,000492: 07,3377 00006 EXTEND
055435,000493: 07,3400 03014 WAND CHAN14
055436,000494:
055437,000495: 07,3401 03632 TC CAGETEST
055438,000496:
055439,000497: 07,3402 31311 STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14.
055440,000498: 07,3403 00006 EXTEND
055441,000499: 07,3404 74750 MP BIT4
055442,000500: 07,3405 50000 INDEX A
055443,000501: 07,3406 13407 TCF +1
055444,000502: 07,3407 03424 TC GSELECT # =0. DO Y GYRO.
055445,000503: 07,3410 00202 OCT 00202
055446,000504:
055447,000505: 07,3411 03424 TC GSELECT # =1. DO Z GYRO.
055448,000506: 07,3412 00302 OCT 00302
055449,000507:
055450,000508: 07,3413 03422 TC GSELECT -2 # =2. DO X GYRO.
055451,000509: 07,3414 00100 OCT 00100
055452,000510:
055453,000511: 07,3415 34755 CAF ZERO # =3. DONE
055454,000512: 07,3416 55311 TS LGYRO
055455,000513: 07,3417 33375 CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB.
055456,000514: 07,3420 05137 TC JOBWAKE
055457,000515:
055458,000516: 07,3421 13223 NORESET TCF IMUFINED # DO NOT RESET POWER SUPPLY
![]() |
Page 1314 |
055460,000518: 07,3422 44751 -2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X.
055461,000519: 07,3423 27311 ADS LGYRO
055462,000520:
055463,000521: 07,3424 50002 GSELECT INDEX Q # SELECT GYRO.
055464,000522: 07,3425 30000 CAF 0 # PACKED WORD CONTAINS GYRO SELECT BITS
055465,000523: 07,3426 54064 TS ITEMP4 # AND INCREMENT TO LGYRO.
055466,000524: 07,3427 74757 MASK SEVEN
055467,000525: 07,3430 64737 AD BIT13
055468,000526: 07,3431 27311 ADS LGYRO
055469,000527: 07,3432 54003 TS EBANK
055470,000528: 07,3433 74357 MASK LOW8
055471,000529: 07,3434 54061 TS ITEMP1
055472,000530:
055473,000531: 07,3435 44757 CS SEVEN
055474,000532: 07,3436 70064 MASK ITEMP4
055475,000533: 07,3437 54064 TS ITEMP4
055476,000534:
055477,000535: 07,3440 00006 EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING.
055478,000536: 07,3441 50061 INDEX ITEMP1
055479,000537: 07,3442 31401 DCA 1400
055480,000538: 07,3443 52071 DXCH RUPTREG1
055481,000539:
055482,000540: 07,3444 10070 CCS RUPTREG1
055483,000541: 07,3445 13460 TCF MAJ+
055484,000542: 07,3446 13450 TCF +2
055485,000543: 07,3447 13600 TCF MAJ-
055486,000544:
055487,000545: 07,3450 10071 CCS RUPTREG2
055488,000546: 07,3451 13455 TCF MIN+
055489,000547: 07,3452 13402 TCF STRTGYR2
055490,000548: 07,3453 13575 TCF MIN-
055491,000549: 07,3454 13402 TCF STRTGYR2
055492,000550:
![]() |
Page 1315 |
055494,000552: 07,3455 63511 MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST
055495,000553: 07,3456 00006 EXTEND # 16 GYRO PULSES.
055496,000554: 07,3457 63402 BZMF STRTGYR2
055497,000555:
055498,000556: 07,3460 00006 MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT.
055499,000557: 07,3461 33621 DCA GYROFRAC
055500,000558: 07,3462 20071 DAS RUPTREG1
055501,000559:
055502,000560: 07,3463 30064 CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO.
055503,000561: 07,3464 00006 EXTEND
055504,000562: 07,3465 05014 WOR CHAN14
055505,000563:
055506,000564: 07,3466 36077 CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS
055507,000565: 07,3467 70071 MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG
055508,000566: 07,3470 56071 XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION
055509,000567: 07,3471 00006 GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE
055510,000568: 07,3472 74744 MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF
055511,000569: 07,3473 54062 TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND.
055512,000570: 07,3474 30070 CA RUPTREG1
055513,000571: 07,3475 00006 EXTEND
055514,000572: 07,3476 74743 MP BIT9
055515,000573: 07,3477 54070 TS RUPTREG1
055516,000574: 07,3500 30001 CA L
055517,000575: 07,3501 00006 EXTEND
055518,000576: 07,3502 74736 MP BIT14
055519,000577: 07,3503 26062 ADS ITEMP2 # INITIAL COMMAND.
055520,000578:
055521,000579: 07,3504 00006 EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED
055522,000580: 07,3505 30071 DCA RUPTREG1 # (MORE THAN 16383 PULSES).
055523,000581: 07,3506 67752 AD MINUS1
055524,000582: 07,3507 10000 CCS A
055525,000583: 07,3510 13534 TCF LONGGYRO
055526,000584: 07,3511 77601 -GYROMIN OCT -176 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD
055527,000585: 07,3512 13516 TCF +4
055528,000586:
055529,000587: 07,3513 34736 CAF BIT14
055530,000588: 07,3514 26062 ADS ITEMP2
055531,000589: 07,3515 34755 CAF ZERO
055532,000590:
055533,000591: 07,3516 50061 +4 INDEX ITEMP1
055534,000592: 07,3517 53401 DXCH 1400
![]() |
Page 1316 |
055536,000594: 07,3520 30062 CA ITEMP2 # ENTIRE COMMAND.
055537,000595: 07,3521 54047 LASTSEG TS GYROCMD
055538,000596: 07,3522 00006 EXTEND
055539,000597: 07,3523 74742 MP BIT10 # WAITLIST DT
055540,000598: 07,3524 66250 AD THREE # TRUNCATION AND PHASE UNCERTAINTIES.
055541,000599: 07,3525 05203 TC WAITLIST
055542,000600: 07,3526 E3,1474 EBANK= CDUIND
055543,000601: 07,3526 03376 16103 2CADR STRTGYRO
055544,000602:
055545,000603: 07,3530 34742 GYROEXIT CAF BIT10
055546,000604: 07,3531 00006 EXTEND
055547,000605: 07,3532 05014 WOR CHAN14
055548,000606: 07,3533 15261 TCF TASKOVER
055549,000607:
055550,000608: 07,3534 50061 LONGGYRO INDEX ITEMP1
055551,000609: 07,3535 53401 DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF
055552,000610: 07,3536 34736 CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192.
055553,000611: 07,3537 60062 AD ITEMP2
055554,000612: 07,3540 54047 TS GYROCMD
055555,000613:
055556,000614: 07,3541 00006 AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS
055557,000615: 07,3542 74742 MP BIT10 # ALMOST OUT.
055558,000616: 07,3543 67750 AD NEG3
055559,000617: 07,3544 05203 TC WAITLIST
055560,000618: 07,3545 E3,1474 EBANK= CDUIND
055561,000619: 07,3545 03550 16103 2CADR 8192AUG
055562,000620:
055563,000621: 07,3547 13530 TCF GYROEXIT
055564,000622:
055565,000623: 07,3550 03632 8192AUG TC CAGETEST
055566,000624:
055567,000625: 07,3551 34750 CAF BIT4
055568,000626: 07,3552 00006 EXTEND
055569,000627: 07,3553 02012 RAND CHAN12
055570,000628: 07,3554 10000 CCS A
055571,000629: 07,3555 13630 TCF IMUBAD
055572,000630: 07,3556 31311 CA LGYRO # ADD 8192 PULSES TO GYROCMD
055573,000631: 07,3557 54003 TS EBANK
055574,000632: 07,3560 74357 MASK LOW8
055575,000633: 07,3561 54061 TS ITEMP1
055576,000634:
055577,000635: 07,3562 50061 INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG.
055578,000636: 07,3563 11400 CCS 1400
055579,000637: 07,3564 13570 TCF AUG2 # MORE TO COME.
055580,000638:
055581,000639: 07,3565 34736 CAF BIT14
055582,000640: 07,3566 26047 ADS GYROCMD
055583,000641: 07,3567 13522 TCF LASTSEG +1
055584,000642:
![]() |
Page 1317 |
055586,000644: 07,3570 50061 AUG2 INDEX ITEMP1
055587,000645: 07,3571 55400 TS 1400
055588,000646: 07,3572 34736 CAF BIT14
055589,000647: 07,3573 26047 ADS GYROCMD
055590,000648: 07,3574 13541 TCF AUG3 # COMPUTE DT.
055591,000649:
![]() |
Page 1318 |
055593,000651: 07,3575 63511 MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT.
055594,000652: 07,3576 00006 EXTEND
055595,000653: 07,3577 63402 BZMF STRTGYR2
055596,000654:
055597,000655: 07,3600 00006 MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT.
055598,000656: 07,3601 43621 DCS GYROFRAC
055599,000657: 07,3602 20071 DAS RUPTREG1
055600,000658:
055601,000659: 07,3603 30064 CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO.
055602,000660: 07,3604 64743 AD BIT9
055603,000661: 07,3605 00006 EXTEND
055604,000662: 07,3606 05014 WOR CHAN14
055605,000663:
055606,000664: 07,3607 40070 CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE.
055607,000665: 07,3610 54070 TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE
055608,000666: 07,3611 40071 CS RUPTREG2 # POSITIVE - BIT9 OF CHAN 14 DETERMINES
055609,000667: 07,3612 76077 MASK LOW7 # THE SIGN OF THE COMMAND.
055610,000668: 07,3613 40000 COM
055611,000669: 07,3614 56071 XCH RUPTREG2
055612,000670: 07,3615 40000 COM
055613,000671: 07,3616 13471 TCF GMERGE
055614,000672:
055615,000673: 07,3617 01700 GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS.
055616,000674:
055617,000675: 07,3620 00000 00034 GYROFRAC 2DEC .215 B-21
055618,000676:
![]() |
Page 1319 |
055620,000678: # IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE.
055621,000679:
055622,000680: 07,3622 00006 ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURED OR IF
055623,000681: 07,3623 00011 READ DSALMOUT # ISS WARNING IS ON.
055624,000682: 07,3624 74753 MASK BIT1
055625,000683: 07,3625 10000 CCS A
055626,000684: 07,3626 13630 TCF IMUBAD
055627,000685:
055628,000686: 07,3627 13656 IMUGOOD TCF GOODEND # WITH C(A) = 0.
055629,000687:
055630,000688: 07,3630 34755 IMUBAD CAF ZERO
055631,000689: 07,3631 13653 TCF BADEND
055632,000690:
055633,000691: 07,3632 34746 CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE
055634,000692: 07,3633 71277 MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED.
055635,000693: 07,3634 10000 CCS A
055636,000694: 07,3635 13630 TCF IMUBAD # DIRECTLY.
055637,000695: 07,3636 00002 TC Q # WITH C(A) = +0.
055638,000696:
055639,000697: 07,3637 41277 CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED.
055640,000698: 07,3640 74746 MASK BIT6
055641,000699: 07,3641 10000 CCS A
055642,000700: 07,3642 24002 INCR Q
055643,000701: 07,3643 00002 TC Q
055644,000702:
055645,000703: 07,3644 41277 CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION
055646,000704: 07,3645 74746 MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED,
055647,000705: 07,3646 10000 CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION
055648,000706: 07,3647 00002 TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY
055649,000707: 07,3650 44755 CS ZERO # TO SWRETURN.
055650,000708: 07,3651 55301 TS IMUCADR
055651,000709: 07,3652 12746 TCF MODEEXIT
055652,000710:
![]() |
Page 1320 |
055654,000712: # GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION
055655,000713: # OR AT BADEND FOR AN UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS.
055656,000714:
055657,000715: 07,3653 54071 BADEND TS RUPTREG2 # DEVICE INDEX.
055658,000716: 07,3654 44755 CS ZERO # FOR FAILURE.
055659,000717: 07,3655 13660 TCF GOODEND +2
055660,000718:
055661,000719: 07,3656 54071 GOODEND TS RUPTREG2
055662,000720: 07,3657 44753 CS ONE # FOR SUCCESS.
055663,000721:
055664,000722: 07,3660 54072 TS RUPTREG3
055665,000723: 07,3661 50071 INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP.
055666,000724: 07,3662 11301 CCS MODECADR
055667,000725: 07,3663 13667 TCF +4 # YES - WAKE IT UP.
055668,000726: 07,3664 13677 TCF ENDMODE # IF 0, PROGRAM NOT IN YET.
055669,000727:
055670,000728: 07,3665 00006 EXTEND
055671,000729: 07,3666 13700 BZF ENDMODE +1 # BZF = TCF IF MODECADR = -0.
055672,000730:
055673,000731: 07,3667 34755 CAF ZERO # WAKE SLEEPING PROGRAM.
055674,000732: 07,3670 50071 INDEX RUPTREG2
055675,000733: 07,3671 57301 XCH MODECADR
055676,000734: 07,3672 05137 TC JOBWAKE
055677,000735:
055678,000736: 07,3673 40072 CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL.
055679,000737: 07,3674 50064 INDEX LOCCTR
055680,000738: 07,3675 26164 ADS LOC
055681,000739:
055682,000740: 07,3676 15261 TCF TASKOVER
055683,000741:
055684,000742: 07,3677 30072 ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT
055685,000743: 07,3700 50071 +1 INDEX RUPTREG2 # UNSUCCESSFUL: -1 INDICATES COMPLETE AND
055686,000744: 07,3701 55301 TS MODECADR # SUCCESSFUL.
055687,000745: 07,3702 15261 TCF TASKOVER
055688,000746:
![]() |
Page 1321 |
055690,000748: # GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION.
055691,000749:
055692,000750: # PROGRAM DESCRIPTION DATE - 21 FEB 1967
055693,000751: # LOG SECTION IMU MODE SWITCHING
055694,000752: # MOD BY - R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 82
055695,000753:
055696,000754: # FUNCTIONAL DESCRIPTION -
055697,000755: # TO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED
055698,000756: # I/O FUNCTION IS COMPLETE. THE FOLLOWING CHECKS ON THE CALLING ROUTINE:S
055699,000757: # MODECADR ARE MADE AND ACTED UPON.
055700,000758: # 1) +0 INDICATES INCOMPLETE I/O OPERATION. CALLING ROUTINE IS PUT TO
055701,000759: # SLEEP.
055702,000760: # 2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP
055703,000761: # CALL AND RETURNS TO CALLING ROUTINE AT L+3
055704,000762: # 3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR
055705,000763: # AND RETURNS TO CALLING ROUTINE AT L+2.
055706,000764: # 4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF
055707,000765: # SAME DEVICE. STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM
055708,000766: # RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS.
055709,000767:
055710,000768: # CALLING SEQUENCE -
055711,000769: # L TC BANKCALL
055712,000770: # L+1 CADR (ONE OF 5 STALL ADDRESSES I.E. IMUSTALL, OPTSTALL, RADSTALL,
055713,000771: # AOTSTALL, OR ATTSTALL)
055714,000772:
055715,000773: # NORMAL-EXIT MODE -
055716,000774: # TCF JOBSLEEP OR TCF MODEXIT
055717,000775:
055718,000776: # ALARM OR ABORT EXIT MODE -
055719,000777: # TC ABORT
055720,000778:
055721,000779: # OUTPUT -
055722,000780: # MODECADR=CADR IF JOBSLEEP
055723,000781: # MODECADR=+0 IF I/O COMPLETE
055724,000782: # BUF2=L+3 IF I/O COMPLETE AND GOOD.
055725,000783: # BUF2=L+2 IF I/O COMPLETE BUT FAILED.
055726,000784:
055727,000785: # ERASABLE INITIALIZATION -
055728,000786: # BUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2)
055729,000787: # BUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE.
055730,000788: # MODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS.
055731,000789:
055732,000790: # DEBRIS -
055733,000791: # RUPTREG2 AND CALLING ROUTINE MODECADR.
055734,000792:
![]() |
[WORKAROUND] RSB 2004 |
055736,000794: 07,3703 30,2000 SBANK= LOWSUPER
055737,000795:
055738,000796: 07,3703 34753 AOTSTALL CAF ONE # AOT.
055739,000797: 07,3704 03710 TC STALL
055740,000798:
055741,000799: 07,3705 34752 RADSTALL CAF TWO
055742,000800: 07,3706 13710 TCF STALL
055743,000801:
![]() |
Page 1322 |
055745,000803: 07,3707 07,3703 OPTSTALL EQUALS AOTSTALL
055746,000804:
055747,000805: 07,3707 34755 IMUSTALL CAF ZERO # IMU.
055748,000806:
055749,000807: 07,3710 00004 STALL INHINT
055750,000808: 07,3711 54071 TS RUPTREG2 # SAVE DEVICE INDEX.
055751,000809: 07,3712 50000 INDEX A # SEE IF OPERATION COMPLETE.
055752,000810: 07,3713 11301 CCS MODECADR
055753,000811: 07,3714 13732 TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0.
055754,000812: 07,3715 13726 TCF MODESLP # OPERATION INCOMPLETE.
055755,000813: 07,3716 13722 TCF MODEGOOD # COMPLETE AND GOOD IF = -1.
055756,000814:
055757,000815: 07,3717 50071 MG2 INDEX RUPTREG2 # COMPLETE AND FAILED IF -0. RESET TO +0.
055758,000816: 07,3720 55301 TS MODECADR # RETURN TO CALLER.
055759,000817: 07,3721 12746 TCF MODEEXIT
055760,000818:
055761,000819: 07,3722 10000 MODEGOOD CCS A # MAKE SURE INITIAL STATE -1.
055762,000820: 07,3723 13732 TCF MODABORT
055763,000821:
055764,000822: 07,3724 24133 INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND
055765,000823: 07,3725 13717 TCF MG2 # RETURN IMMEDIATELY, SETTING CADR = +0.
055766,000824:
055767,000825: 07,3726 04645 MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY.
055768,000826: 07,3727 50071 INDEX RUPTREG2
055769,000827: 07,3730 55301 TS MODECADR
055770,000828: 07,3731 15133 TCF JOBSLEEP
055771,000829:
055772,000830: 07,3732 52134 MODABORT DXCH BUF2
055773,000831: 07,3733 05706 TC BAILOUT1 # TWO PROGRAMS USING THE SAME DEVICE.
055774,000832: 07,3734 31210 OCT 31210
055775,000833:
![]() |
Page 1323 |
055777,000835: # CONSTANTS FOR MODE SWITCHING ROUTINES
055778,000836:
055779,000837: 07,3735 5741 BITS3&4 = OCT14
055780,000838: 07,3735 4771 BITS4&6 = OCT50
055781,000839: 07,3735 00030 BITS4-5 OCT 00030
055782,000840: 07,3736 4744 IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7.
055783,000841: 07,3736 77500 -COMMAX DEC -191 B-14
055784,000842: 07,3737 77477 -COMMAX- DEC -192 B-14
055785,000843: 07,3740 00074 600MS DEC 60 B-14
055786,000844: 07,3741 07,3201 IMUFIN20 = IMUFINE
055787,000845: 07,3741 31304 GOMANUR CA ATTCADR # IS KALCMANU FREE
055788,000846: 07,3742 00006 EXTEND
055789,000847: 07,3743 13745 BZF +2
055790,000848: 07,3744 03732 TC MODABORT # BAILOUT
055791,000849: 07,3745 00006 +2 EXTEND
055792,000850: 07,3746 30134 DCA BUF2
055793,000851: 07,3747 53305 DXCH ATTCADR # SAVE FINAL RETURN FOR KALCMAN3
055794,000852:
055795,000853: 07,3750 30006 CA BBANK
055796,000854: 07,3751 74757 MASK SEVEN
055797,000855: 07,3752 27305 ADS ATTCADR +1
055798,000856:
055799,000857: 07,3753 30167 CA PRIORITY
055800,000858: 07,3754 77730 MASK PRIO37
055801,000859: 07,3755 55306 TS ATTPRIO # SAVE USERS PRIO
055802,000860:
055803,000861: 07,3756 33762 CAF KALEBCON # SET EBANK FOR KALCMAN3
055804,000862: 07,3757 54003 TS EBANK
055805,000863: 07,3760 04635 TC POSTJUMP
055806,000864: 07,3761 44004 CADR KALCMAN3
055807,000865: 07,3762 03275 KALEBCON ECADR BCDU
055808,000866:
![]() |
Page 1324 |
055810,000868: # PROGRAM DESCRIPTION
055811,000869: # IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY)
055812,000870: # MOD NO - 1
055813,000871: # MOD BY - N.BRODEUR
055814,000872:
055815,000873: # FUNCTIONAL DESCRIPTION
055816,000874: # TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN
055817,000875: # ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE
055818,000876: # PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE
055819,000877: # CMC. CALLED THROUGH BANKCALL
055820,000878:
055821,000879: # CALLING SEQUENCE -
055822,000880: # L TC BANKCALL
055823,000881: # L+1 CADR R02BOTH
055824,000882:
055825,000883: # SUBROUTINES CALLED
055826,000884: # VARALARM
055827,000885: # FLAGUP
055828,000886:
055829,000887: # NORMAL EXIT MODES
055830,000888: # AT L+2 OF CALLING SEQUENCE
055831,000889:
055832,000890: # ALARM OR ABORT EXIT MODES
055833,000891: # GOTOPOOH, WITH ALARM
055834,000892:
055835,000893: # ERASABLE INITIALIZATION REQUIRED
055836,000894: # NONE
055837,000895:
055838,000896: # DEBRIS
055839,000897: # CENTRALS-A,Q,L
055840,000898:
055841,000899: 34,3650 BANK 34
055842,000900: 04,2000 SETLOC R02
055843,000901: 04,2000 BANK
055844,000902: 04,3232 COUNT* $$/R02
055845,000903: 04,3232 00063 DEC51 DEC 51 B-14
055846,000904: 04,3233 34737 R02BOTH CAF REFSMBIT
055847,000905: 04,3234 70077 MASK FLAGWRD3
055848,000906: 04,3235 10000 CCS A
055849,000907: 04,3236 03247 TC R02ZERO # ZERO IMUS
055850,000908:
055851,000909: 04,3237 31277 CA IMODES30
055852,000910: 04,3240 74743 MASK BIT9 # IS ISS INITIALIZED
055853,000911: 04,3241 00006 EXTEND
055854,000912: 04,3242 13244 BZF +2
055855,000913: 04,3243 44750 CS BIT4 # SEND IMU ALARM CODE 210
055856,000914: 04,3244 63252 AD OCT220 # SEND REFSMM ALARM
055857,000915: 04,3245 05734 TC VARALARM
055858,000916:
055859,000917: 04,3246 06001 TC GOTOPOOH
055860,000918:
055861,000919: 04,3247 05504 R02ZERO TC UPFLAG
![]() |
Page 1325 |
055863,000921: 04,3250 00007 ADRES IMUSE
055864,000922: 04,3251 14631 TCF SWRETURN
055865,000923: 04,3252 00220 OCT220 OCT 220
055866,000924:
![]() |
Page 1326 |
055868,000926: # PROGRAM DESCRIPTION P06 10FEB67
055869,000927:
055870,000928: # TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION.
055871,000929:
055872,000930: # THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU
055873,000931: # HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE
055874,000932: # CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON.
055875,000933:
055876,000934: # CALLING SEQUENCE:
055877,000935: # ASTRONAUT REQUEST THROUGH DSKY V37E 06E.
055878,000936:
055879,000937: # SUBROUTINES CALLED:
055880,000938: # GOPERF1
055881,000939: # BANKCALL
055882,000940: # FLAGDOWN
055883,000941:
![]() |
Page 1327 |
055885,000943: # PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2
055886,000944: # THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATABILITY
055887,000945: # BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING.
055888,000946:
055889,000947: 37,2000 SETLOC P05P06
055890,000948: 37,2000 BANK
055891,000949:
055892,000950: 37,3652 0314 EBANK= TIME2SAV
055893,000951: 37,3652 COUNT* $$/P06
055894,000952:
055895,000953: 37,3652 05504 P06 TC UPFLAG # SET NODOV37 BIT
055896,000954: 37,3653 00054 ADRES NODOFLAG
055897,000955:
055898,000956: 37,3654 00004 PRESTAND INHINT
055899,000957: 37,3655 00006 EXTEND
055900,000958: 37,3656 30025 DCA TIME2 # SNAPSHOT TIME1 TIME2
055901,000959: 37,3657 52315 DXCH TIME2SAV
055902,000960: 37,3660 03711 TC SCALPREP
055903,000961: 37,3661 03654 TC PRESTAND # T1,T2,SCALER NOT COMPATIBLE
055904,000962: 37,3662 52155 DXCH MPAC # T1,T2 AND SCALER OK
055905,000963: 37,3663 52317 DXCH SCALSAVE # STORE SCALER
055906,000964: 37,3664 00004 INHINT
055907,000965: 37,3665 04616 TC BANKCALL
055908,000966: 37,3666 17166 CADR RNDREFDR # REFSMM, DRIFT, TRACK FLAGS DOWN
055909,000967:
055910,000968: 37,3667 05516 TC DOWNFLAG
055911,000969: 37,3670 00007 ADRES IMUSE # IMUSE DOWN
055912,000970: 37,3671 05516 TC DOWNFLAG
055913,000971: 37,3672 00010 ADRES RNDVZFLG # RNDVZFLG DOWN
055914,000972:
055915,000973: 37,3673 34741 CAF BIT11
055916,000974: 37,3674 00006 EXTEND
055917,000975: 37,3675 05013 WOR CHAN13 # SET STANDBY ENABLE BIT
055918,000976:
055919,000977: 37,3676 05353 TC PHASCHNG # SET RESTART TO POSTAND WHEN STANDBY
055920,000978: 37,3677 07024 OCT 07024 # RECOVERS
055921,000979: 37,3700 20000 OCT 20000
055922,000980: 37,3701 0316 EBANK= SCALSAVE
055923,000981: 37,3701 03731 76060 2CADR POSTAND
055924,000982:
055925,000983: 37,3703 34774 CAF OCT62
055926,000984: 37,3704 04616 TC BANKCALL
055927,000985: 37,3705 20624 CADR GOPERF1
055928,000986: 37,3706 13703 TCF -3
055929,000987: 37,3707 13703 TCF -4
055930,000988: 37,3710 13703 TCF -5
055931,000989:
055932,000990: 37,3711 4774 OCT62 EQUALS .5SEC # DEC 50 = OCT 62
055933,000991:
055934,000992: # THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A
![]() |
Page 1328 |
055936,000994: # T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER
055937,000995: # DATA ARE NOT COMPATABLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE
055938,000996: # DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES
055939,000997: # THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE
055940,000998: # 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM
055941,000999: # T1.) ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF
055942,001000: # ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5
055943,001001: # BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER
055944,001002: # DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1.
055945,001003:
055946,001004: 37,3711 00006 SCALPREP EXTEND
055947,001005: 37,3712 22156 QXCH MPAC +2
055948,001006: 37,3713 04103 TC FINETIME +1
055949,001007: 37,3714 00003 RELINT
055950,001008: 37,3715 52155 DXCH MPAC
055951,001009: 37,3716 34747 CA BIT5 # ADD 5 MS TO THE SCALER READING.
055952,001010: 37,3717 54001 TS L
055953,001011: 37,3720 34755 CA ZERO
055954,001012: 37,3721 20155 DAS MPAC
055955,001013: 37,3722 44346 CS LOW5 # SET LOW 5 BITS OF (SCALER+5MS) TO ZERO
055956,001014: 37,3723 70155 MASK MPAC +1 # AND STORE RESULTS IN MPAC,+1.
055957,001015: 37,3724 56155 XCH MPAC +1
055958,001016: 37,3725 74346 MASK LOW5 # TEST LOW 5 BITS OF SCALER FOR THE FIRST
055959,001017: # INTERVAL AFTER THE T1 INCREMENT
055960,001018: # (NOW = 00000, SINCE BIT 5 ADDED).
055961,001019: 37,3726 10000 CCS A # IS IT 1ST INTERVAL AFTER T1 INCREMENT
055962,001020: 37,3727 24156 INCR MPAC +2 # NO
055963,001021: 37,3730 00156 TC MPAC +2 # YES
055964,001022:
055965,001023: # POSTAND RECOVERS TIME AFTER STANDBY. THE SCALER IS SNAPSHOTTED AND THE
055966,001024: # TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE
055967,001025: # INSPECTED TO INSURE COMPATABILITY BETWEEN THE SCALER READING AND THE
055968,001026: # CLEARING OF THE TIME COUNTER. IT THEN COMPUTES THE DIFFERENCE IN SCALER
055969,001027: # VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF
055970,001028: # TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER.
055971,001029:
055972,001030: 37,3731 COUNT* $$/P05
055973,001031:
055974,001032: 37,3731 44741 POSTAND CS BIT11 # RECOVER TIME AFTER STANDBY.
055975,001033: 37,3732 00006 EXTEND
055976,001034: 37,3733 03013 WAND CHAN13 # CLEAR STANDBY ENABLE BIT
055977,001035: 37,3734 00004 INHINT
055978,001036: 37,3735 34755 CA ZERO
055979,001037: 37,3736 54001 TS L
055980,001038: 37,3737 52025 DXCH TIME2 # CLEAR TIME1 TIME2
055981,001039: 37,3740 03711 TC SCALPREP # STORE SCALER IN MPAC, MPAC+1
055982,001040: 37,3741 03734 TC POSTAND +3 # T1,T2,SCALER NOT COMPATIBLE
055983,001041: 37,3742 00006 EXTEND # T1,T2 AND SCALER OK
055984,001042: 37,3743 40317 DCS SCALSAVE
055985,001043: 37,3744 20155 DAS MPAC # FORM DP DIFFERENCE OF POSTSTANDBY SCALER
![]() |
Page 1329 |
055987,001045: 37,3745 34742 CAF BIT10 # MINUS PRESTANDBY SCALER AND SHIFT RIGHT
055988,001046: 37,3746 07312 TC SHORTMP # 5 TO ALIGN BITS WITH TIME1 TIME2.
055989,001047: 37,3747 34755 CAF ZERO
055990,001048: 37,3750 54156 TS MPAC +2 # NEEDED FOR TP AGREE
055991,001049: 37,3751 07262 TC TPAGREE # MAKE DP DIFF AGREE
055992,001050: 37,3752 10154 CCS MPAC
055993,001051: 37,3753 03760 TC POSTCOM # IF DP DIFF NET +, NO SCALER OVERFLOW
055994,001052: 37,3754 03760 TC POSTCOM # BETWEEN PRE AND POST STANDBY.
055995,001053: 37,3755 03756 TC +1 # IF DP DIFF NET -, SCALER OVERFLOWED. ADD
055996,001054: 37,3756 34742 CAF BIT10 # BIT 10 TO HIGH DIFF TO CORRECT.
055997,001055: 37,3757 26154 ADS MPAC
055998,001056: 37,3760 00006 POSTCOM EXTEND # C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER.
055999,001057: 37,3761 30315 DCA TIME2SAV # PRESTANDBY TIME1 TIME2
056000,001058: 37,3762 20155 DAS MPAC
056001,001059: 37,3763 07262 TC TPAGREE # FORCE SIGN AGREEMENT
056002,001060: 37,3764 52155 DXCH MPAC # UPDATED VALUE FOR T1,T2.
056003,001061: 37,3765 20025 DAS TIME2 # LOAD UPDATED VALUE INTO T1,T2, WITH
056004,001062: 37,3766 05516 TC DOWNFLAG # CLEAR NODOFLAG
056005,001063: 37,3767 00054 ADRES NODOFLAG
056006,001064:
056007,001065: 37,3770 06001 TC GOTOPOOH
056008,001066:
End of include-file IMU_MODE_SWITCHING_ROUTINES.agc. Parent file is MAIN.agc