Source Code
These source-code files are part of a reconstructed copy of Sunrise 45, the
penultimate release of the Block I Command Module (CM) Apollo Guidance Computer
(AGC) system test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 1003133-18, 1003133-19, and 1003133-20. Corresponding portions of code have been copied from Solarium 55 where applicable. Extensive use was also made of the AGC Information Series documents, which were specifically written about the Sunrise software. Since only binary dumps (rather than listings) of Sunrise are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
005080,000002: ## Copyright: Public domain.
005081,000003: ## Filename: MODE_SWITCHING_AND_MARK_ROUTINES.agc
005082,000004: ## Purpose: A section of Sunrise 45.
005083,000005: ## It is part of the reconstructed source code for the penultimate
005084,000006: ## release of the Block I Command Module system test software. No
005085,000007: ## original listings of this program are available; instead, this
005086,000008: ## file was created via disassembly of dumps of Sunrise core rope
005087,000009: ## memory modules and comparison with the later Block I program
005088,000010: ## Solarium 55.
005089,000011: ## Assembler: yaYUL --block1
005090,000012: ## Contact: Ron Burkey <info@sandroid.org>.
005091,000013: ## Website: www.ibiblio.org/apollo/index.html
005092,000014: ## Mod history: 2022-12-09 MAS Initial reconstructed source.
005093,000015:
005094,000016:
005095,000017: # THE FOLLOWING SET OF PROGRAMS ARE USED TO SELECTTHE VARIOUS MODES OF THE IMU AND OPTICS. THE FOLLOWING
005096,000018: # MODES ARE POSSIBLE:
005097,000019:
005098,000020: # IMUZERO ZEROS IMU CDUS.
005099,000021: # IMUCOARS COARSE ALIGNS IMU.
005100,000022: # IMURECOR RETURNS IMU FROM FINE ALIGN TO COARSE ALIGN
005101,000023: # IMUFINE PREPARES TO PULSE TORQUE THE GYROS.
005102,000024: # IMUATTC USE IMU FOR S/C ATTITUDE CONTROL.
005103,000025: # IMUREENT USE IMU FOR ROLL RE-ENTRY.
005104,000026: # IMULOCK LOCKS IMU CDUS.
005105,000027:
005106,000028: # IMUSTALL(*) IMU MODE IDLING AND ERROR CHECKING.
005107,000029:
005108,000030:
005109,000031:
005110,000032: # OPTZERO ZERO OPTICS CDUS.
005111,000033: # OPTCOARS DUMMY OPTICS COARSE-ALIGN MODE.
005112,000034: # OPTTRKON OPTICS TRACKER ON.
005113,000035:
005114,000036: # SCTMARK REQUEST N SCANNING TELESCOPE MARKS.
005115,000037: # SXTMARK REQUEST N SEXTANT MARKS.
005116,000038: # MKRELEAS(**)RELEASE MARK SYSTEM.
005117,000039:
005118,000040: # OPTSTALL(*) OPTICS MODE-IDLING AND ERROR CHECKING.
005119,000041:
005120,000042:
005121,000043:
005122,000044: # OPTICS AND IMU MODE ROUTINES MAY BE USED CONCURRENTLY.
005123,000045:
005124,000046: # IN ADDITION, A ROUTINE WHICH INCREMENTS ANY DESIRED 2S COMPLEMENT ANGLE BY AN INPUT AMOUNT IS
005125,000047: # INCLUDED (CDUINC).
005126,000048:
005127,000049:
005128,000050:
005129,000051: # CALLING SEQUENCE IS AS FOLLOWS:
005130,000052:
005131,000053: # L-1 CAF NO.MARKS (FOR SCTMARK AND SXTMARK ONLY).
005132,000054: # L TC BANKCALL
005133,000055: # L+1 CADR (SUBRO) ANY OF THE 14 MODE ROUTINES OR CDUINC.
005134,000056:
005135,000057:
005136,000058:
005137,000059: # (*) THE STALL ROUTINES ARE CALLED TO TERMINATE ANY MODE REQUEST. THE REQUESTING JOB IS STALLED UNTIL
005138,000060: # THE MODE-SWITCHING IS COMPLETE (WITH VAC-AREA PROTECTED) AND RETURN IS TO L+2 IF UNSUCCESSFUL AND L+3 IF THE
005139,000061: # DESIRED MODE WAS SUCCESSFULLY ACHIEVED.
005140,000062:
005141,000063: # (**) NO STALL ROUTINE NECESSARY IN CONJUNCTION WITH THIS REQUEST.
005142,000064:
005143,000065: 2467 BANK 1
005144,000066:
005145,000067: 2467 32472 KEYRUPT CAF MODEBANK
005146,000068: 2470 30015 XCH BANKREG
005147,000069: 2471 06000 TC KEYRUPTB
005148,000070:
005149,000071: 2472 12110 MODEBANK CADR KEYRUPTA
005150,000072:
005151,000073: # SPECIAL DP TIME COUNTER READING ROUTINE.
005152,000074:
005153,000075: 2473 20017 READTIME INHINT # ENTRY IF UNDER EXECUTIVE.
005154,000076: 2474 40035 CS TIME2 # ENTRY IF IN INTERRUPT.
005155,000077: 2475 50565 TS RUPTSTOR
005156,000078: 2476 40036 CS TIME1
005157,000079: 2477 50566 TS RUPTSTOR +1
005158,000080: 2500 10000 CCS A # IF MINOR PART ZERO, MAJOR PART COULD
005159,000081: 2501 00001 TC Q
005160,000082: 2502 10000 CCS A
005161,000083: 2503 00001 TC Q
005162,000084: 2504 40035 CS TIME2 # UP, SO READ IT AGIN.
005163,000085: 2505 50565 TS RUPTSTOR
005164,000086: 2506 00001 TC Q
005165,000087:
005166,000088: 2507 32515 READIN0 CAF OCT40037
005167,000089: 2510 70643 MASK IN0WORD
005168,000090: 2511 60004 AD IN0
005169,000091: 2512 50643 TS IN0WORD
005170,000092: 2513 00001 TC Q
005171,000093: 2514 00001 TC Q
005172,000094:
005173,000095: 2515 40037 OCT40037 OCT 40037
005174,000096:
005175,000097: # IMU ZEROING ROUTINE.
005176,000098:
005177,000099: 10,7054 BANK 10
005178,000100:
005179,000101: 10,7054 10704 IMUZERO CCS CDUIND
005180,000102: 10,7055 07073 TC MODABORT
005181,000103: 10,7056 07073 TC MODABORT
005182,000104: 10,7057 07073 TC MODABORT
005183,000105: 10,7060 44516 CS ONE # DISABLE CDU DRIVE
005184,000106: 10,7061 50704 TS CDUIND # BY SETTING CDUIND NEGATIVE.
005185,000107:
005186,000108: 10,7062 07273 TC SETKANDC # GO TO SUBROUTINE TO SWITCH C RELAYS
005187,000109: 10,7063 00051 OCT 00051 # = C(DESKSET)=COMP CONT+ZERO+FINE
005188,000110: 10,7064 40011 OCT 40011 # = C SETTING FOR FINE + ZERO
005189,000111: 10,7065 07266 TC ZLITON # TURN ON ENCODER ZEROING LAMP
005190,000112:
005191,000113: 10,7066 37716 CAF 40SECS # SET A WAITLIST CALL FOR 40 SECONDS
005192,000114: 10,7067 02124 TC WAITLIST # SO THOSE SHAFTS WILL HAVE TIME TO GET
005193,000115: 10,7070 21076 CADR IMUZEROD # THERE.
005194,000116: 10,7071 20016 MODEEXIT RELINT # GENERAL EXIT FROM MODE SWITCH PROGS
005195,000117: 10,7072 02544 TC SWRETURN # WHICH LEAVES VIA SWCALL EXIT
005196,000118:
005197,000119: 10,7073 02605 MODABORT TC ALARM
005198,000120: 10,7074 00301 OCT 00301
005199,000121: 10,7075 02115 TC ENDOFJOB
005200,000122:
005201,000123: 10,7076 07306 IMUZEROD TC ZEROICTR # GO AND ZERO X, Y, AND Z COUNTERS
005202,000124:
005203,000125: 10,7077 07711 TC KCHECK # SEE IF SYSTEM STILL FUNCTIONING OK.
005204,000126: 10,7100 07645 TC MOREZERO
005205,000127:
005206,000128: 10,7101 74505 CKCDUFAL MASK BIT10
005207,000129: 10,7102 10000 CCS A
005208,000130: 10,7103 07346 TC GOODEND
005209,000131: 10,7104 47111 CS CDUFBITS
005210,000132: 10,7105 70743 MASK DSPTAB +11D
005211,000133: 10,7106 67111 AD CDUFBITS
005212,000134: 10,7107 50743 TS DSPTAB +11D
005213,000135: 10,7110 07337 TC FAILEND
005214,000136:
005215,000137: 10,7111 40040 CDUFBITS OCT 40040
005216,000138: 10,7112 05670 30SECS DEC 30. E2
005217,000139:
005218,000140: # IMU COARSE ALIGN PROGRAM
005219,000141:
005220,000142: 10,7113 07273 IMUCOARS TC SETKANDC # SET DESIRED C AND K RELAY SETTINGS.
005221,000143: 10,7114 00042 OCT 00042 # COMPUTER CONTROL . COARSE ALIGN.
005222,000144: 10,7115 40002 OCT 40002 # C RELAY COARSE ALIGN.
005223,000145:
005224,000146: 10,7116 07236 TC SETZLIT # SERVICE THE ZERO ENCODER LAMP
005225,000147:
005226,000148: 10,7117 37155 CAF 200MS # SET WAITLIST CALL FOR 200 M.S. TO
005227,000149: 10,7120 02124 TC WAITLIST # ACCOMMODATE CONTACT BOUNCE + T4RUPT LAG
005228,000150: 10,7121 21134 CADR BEGINCOM
005229,000151: 10,7122 07071 TC MODEEXIT
005230,000152:
005231,000153:
005232,000154:
005233,000155: 10,7123 40047 RECOARSD CS CDUX # GOING BACK INTO COARSE ALIGN FROM FINE
005234,000156: 10,7124 40000 COM # ALIGN. PUT CDU COUNTER VALUES INTO
005235,000157: 10,7125 50705 TS THETAD # DESIRED ANGLE REGISTERS AND ENABLE THE
005236,000158: 10,7126 40050 CS CDUY # T4RUPT CDU DRIVE.
005237,000159: 10,7127 40000 COM
005238,000160: 10,7130 50706 TS THETAD +1
005239,000161: 10,7131 40051 CS CDUZ
005240,000162: 10,7132 40000 COM
005241,000163: 10,7133 50707 TS THETAD +2
005242,000164:
005243,000165: 10,7134 10747 BEGINCOM CCS WASKSET # VERIFY CORRECTNESS OF PRESENT MODE.
005244,000166: 10,7135 07141 TC STARTCRS
005245,000167: 10,7136 07316 TC ENDIMU
005246,000168: 10,7137 07141 TC STARTCRS
005247,000169: 10,7140 07316 TC ENDIMU
005248,000170:
005249,000171: 10,7141 35500 STARTCRS CAF ZERO # ENABLE CDU LOOP CLOSURE
005250,000172: 10,7142 50704 TS CDUIND
005251,000173:
005252,000174: 10,7143 37722 CAF 60SECS
005253,000175: 10,7144 02124 TC WAITLIST # CDU LOOPS TO SETTLE
005254,000176: 10,7145 21147 CADR COARSDON
005255,000177: 10,7146 02203 TC TASKOVER
005256,000178:
005257,000179: 10,7147 07316 COARSDON TC ENDIMU
005258,000180: 10,7150 40746 CS OLDERR
005259,000181: 10,7151 74505 MASK BIT10
005260,000182: 10,7152 10000 CCS A
005261,000183: 10,7153 07346 TC GOODEND
005262,000184: 10,7154 07337 TC FAILEND
005263,000185:
005264,000186: 10,7155 00024 200MS DEC 0.2 E2
005265,000187:
005266,000188:
005267,000189: # IMU FINE ALIGN PROGRAM
005268,000190:
005269,000191: 10,7156 07273 IMURECOR TC SETKANDC # GO INTO COARSE ALIGN FROM FINE ALIGN.
005270,000192: 10,7157 00042 OCT 00042 # (SEE REMARKS ON RECOARSD FOR FURTHER
005271,000193: 10,7160 40002 OCT 40002 # DETAILS).
005272,000194: 10,7161 37155 CAF 200MS # USUAL CONTACT CLOSURE AND SAMPLE TIME
005273,000195: 10,7162 02124 TC WAITLIST
005274,000196: 10,7163 21123 CADR RECOARSD
005275,000197: 10,7164 07173 TC DISEXIT # DISABLE GYRO ACTIVITY.
005276,000198:
005277,000199: 10,7165 07273 IMUFINE TC SETKANDC # SET UP C RELAY PATTERN AND DESIRED K
005278,000200: 10,7166 00050 OCT 00050 # DES K = COMPUTER CONTROL + FINE
005279,000201: 10,7167 40010 OCT 40010 # C = FINE ALIGN
005280,000202:
005281,000203: 10,7170 37204 CAF 90SECS # SET WAITLIST CALL FOR 90 SEC. TO ALLOW
005282,000204: 10,7171 02124 TC WAITLIST # GYROS TO RE-CENTER BEFORE IRIG PULSE
005283,000205: 10,7172 21176 CADR IMUFINED # TORQUING
005284,000206: 10,7173 44516 DISEXIT CS ONE # DISABLE T4 IMU (CDU OR GYRO) ACTIVITY.
005285,000207: 10,7174 50704 TS CDUIND
005286,000208: 10,7175 07071 TC MODEEXIT
005287,000209:
005288,000210: 10,7176 07316 IMUFINED TC ENDIMU
005289,000211:
005290,000212: 10,7177 37205 CAF B12+10 # NO IMU FAILS, PLEASE.
005291,000213: 10,7200 70746 MASK OLDERR
005292,000214: 10,7201 10000 CCS A
005293,000215: 10,7202 07337 TC FAILEND
005294,000216: 10,7203 07346 TC GOODEND
005295,000217:
005296,000218: 10,7204 21450 90SECS DEC 90. E2
005297,000219: 10,7205 05000 B12+10 OCT 05000
005298,000220:
005299,000221:
005300,000222: # CDU LOCK PROGRAM
005301,000223:
005302,000224: 10,7206 07273 IMULOCK TC SETKANDC # SET APPROPRIATE K AND C CONFIGS.
005303,000225: 10,7207 00044 OCT 00044
005304,000226: 10,7210 40004 OCT 40004
005305,000227:
005306,000228: 10,7211 37155 CAF 200MS
005307,000229: 10,7212 02124 TC WAITLIST # PLACE.
005308,000230: 10,7213 21215 CADR IMULOCKD
005309,000231: 10,7214 07173 TC DISEXIT
005310,000232:
005311,000233: 10,7215 07316 IMULOCKD TC ENDIMU
005312,000234: 10,7216 07346 TC GOODEND
005313,000235:
005314,000236:
005315,000237: # IMU RE-ENTRY AND ATTITUDE CONTROL PROGRAMS
005316,000238:
005317,000239: 10,7217 07273 IMUREENT TC SETKANDC
005318,000240: 10,7220 00140 OCT 00140
005319,000241: 10,7221 42000 OCT 42000
005320,000242: 10,7222 07226 TC ENABEXIT
005321,000243:
005322,000244:
005323,000245:
005324,000246: 10,7223 07273 IMUATTC TC SETKANDC
005325,000247: 10,7224 00060 OCT 00060
005326,000248: 10,7225 41000 OCT 41000
005327,000249:
005328,000250: 10,7226 37155 ENABEXIT CAF 200MS
005329,000251: 10,7227 02124 TC WAITLIST
005330,000252: 10,7230 21232 CADR ENABLE
005331,000253: 10,7231 07173 TC DISEXIT # DISABLE POSSIBLE GYRO ACTIVITY.
005332,000254:
005333,000255: 10,7232 07316 ENABLE TC ENDIMU
005334,000256:
005335,000257: 10,7233 35500 CAF ZERO # ENABLE CDU LOOPS
005336,000258: 10,7234 50704 TS CDUIND
005337,000259: 10,7235 07346 TC GOODEND
005338,000260: # NOTICE THAT NO INSPECTION OF CDU AND IMU
005339,000261: # ERROR SIGNALS IS MADE SINCE IN THESE
005340,000262: # MODES THE MAIN PROGRAM MUST CHECK THE
005341,000263: # STATUS OF THESE SIGNALS PERIODICALLY.
005342,000264:
005343,000265:
005344,000266: # SETZLIT SETS THE ZERO ENCODER LAMP ACCORDING TO THE DESIRED-MODE REGISTERS DESKSET AND DESOPSET.
005345,000267:
005346,000268: 10,7236 30001 SETZLIT XCH Q
005347,000269: 10,7237 50572 TS ITEMP1
005348,000270:
005349,000271: 10,7240 10751 CCS DESKSET
005350,000272: 10,7241 07245 TC +4 # COMPUTER COMMANDING-MAY BE ZEROING.
005351,000273: 10,7242 07251 TC OPTZTEST # NOT MANUAL ZERO.
005352,000274: 10,7243 07266 TURNONZ TC ZLITON # MANUAL ZEROING MODE.
005353,000275: 10,7244 00572 TC ITEMP1
005354,000276:
005355,000277: 10,7245 64516 +4 AD ONE
005356,000278: 10,7246 74516 MASK BIT1
005357,000279: 10,7247 10000 CCS A
005358,000280: 10,7250 07243 TC TURNONZ # COMPUTER COMMANDING ZERO-ENCODER
005359,000281:
005360,000282: 10,7251 10752 OPTZTEST CCS DESOPSET
005361,000283: 10,7252 07255 TC +3 # MAY BE COMMANDING OPTICS ZERO.
005362,000284: 10,7253 07261 TC ZLITOFF # NOT MANUAL ZERO-TURN LIGHT OFF.
005363,000285: 10,7254 07243 TC TURNONZ # MANUAL OPTICS
005364,000286:
005365,000287: 10,7255 64516 +3 AD ONE
005366,000288: 10,7256 74503 MASK BIT12
005367,000289: 10,7257 10000 CCS A
005368,000290: 10,7260 07243 TC TURNONZ
005369,000291:
005370,000292: 10,7261 45067 ZLITOFF CS ZLITBITS # TURN OFF ZERO ENCODER LAMP.
005371,000293: 10,7262 70743 MASK DSPTAB +11D
005372,000294: 10,7263 64500 AD BIT15
005373,000295: 10,7264 50743 TS DSPTAB +11D
005374,000296: 10,7265 00572 TC ITEMP1
005375,000297:
005376,000298: 10,7266 45067 ZLITON CS ZLITBITS # TURN ON ZERO-ENCODER LAMP.
005377,000299: 10,7267 70743 MASK DSPTAB +11D
005378,000300: 10,7270 65067 AD ZLITBITS
005379,000301: 10,7271 50743 TS DSPTAB +11D
005380,000302: 10,7272 00001 TC Q
005381,000303:
005382,000304: 10,7273 5067 ZLITBITS EQUALS OCT40020 # CS CYR IN DMP.
005383,000305:
005384,000306:
005385,000307: # SUBROUTINE USED BY MODE-SWITCHING PROGRAMS TO SET DESIRED K- AND C-RELAY SETTINGS.
005386,000308:
005387,000309: 10,7273 20017 SETKANDC INHINT # INHINT AND EXIT WITH INTERRUPT INHIBITED
005388,000310: 10,7274 20001 INDEX Q
005389,000311: 10,7275 30000 CAF 0
005390,000312: 10,7276 50751 TS DESKSET # DESIRED K-RELAY SETTING AS READ IN IN3.
005391,000313:
005392,000314: 10,7277 36433 CAF OFFMASK # SET C-RELAYS FOR ZERO ENCODER, COARSE
005393,000315: 10,7300 70743 MASK DSPTAB +11D # ALIGN, FINE ALIGN, LOCK CDU, ROLL
005394,000316: 10,7301 20001 INDEX Q # RE-ENTRY, AND ATTITUDE CONTROL LAMP.
005395,000317: 10,7302 60001 AD 1
005396,000318: 10,7303 50743 TS DSPTAB +11D
005397,000319:
005398,000320: 10,7304 20001 INDEX Q
005399,000321: 10,7305 00002 TC 2 # RETURN TO CALLER IN INHINT.
005400,000322:
005401,000323:
005402,000324: # SUBROUTINE TO ZERO IMU CDU COUNTERS.
005403,000325:
005404,000326: 10,7306 35500 ZEROICTR CAF ZERO # USED BY AUTOMATIC AND MANUAL ZEROING
005405,000327: 10,7307 50047 TS CDUX # ROUTINES.
005406,000328: 10,7310 50050 TS CDUY
005407,000329: 10,7311 50051 TS CDUZ
005408,000330: 10,7312 00001 TC Q
005409,000331:
005410,000332:
005411,000333: # WHEN A MODE-SWITCHING TASK IS DISPATCHED TO INDICATE THE END OF A MODE-SWITCH, ENDIMU (OR ENDOPT) IS
005412,000334: # CALLED TO WAKE UP ANY JOB IMUSTALL (OPTSTALL) MIGHT HAVE PUT TO SLEEP AND THEN CHECK WASKSET (WASOPSET) TO SEE
005413,000335: # THAT THE MODE-SWITCH WAS SUCCESSFUL.
005414,000336:
005415,000337: 10,7313 35502 ENDOPT CAF TWO
005416,000338: 10,7314 64476 AD POSMAX
005417,000339: 10,7315 50034 TS OVCTR # SKIP WITH C(A) = 1.
005418,000340:
005419,000341: 10,7316 35500 ENDIMU CAF ZERO
005420,000342: 10,7317 50601 TS RUPTREG2 # 0 FOR IMU, 1 FOR OPTICS.
005421,000343:
005422,000344: 10,7320 30001 XCH Q
005423,000345: 10,7321 50600 TS RUPTREG1
005424,000346:
005425,000347: 10,7322 20601 INDEX RUPTREG2
005426,000348: 10,7323 10753 CCS MODECADR # SEE IF IMUSTALL (OPTSTALL) PUT A JOB
005427,000349: 10,7324 07326 TC +2 # TO SLEEP.
005428,000350: 10,7325 07332 TC ENDMODE # +0 IF NOT.
005429,000351: 10,7326 34516 CAF ONE # SET PROPER MODECADR TO 1 TO INDICATE
005430,000352: 10,7327 20601 INDEX RUPTREG2 # A JOB WAS AWAKENED.
005431,000353: 10,7330 30753 XCH MODECADR
005432,000354: 10,7331 02051 TC JOBWAKE
005433,000355:
005434,000356: 10,7332 20601 ENDMODE INDEX RUPTREG2 # CHECK PROPER *WAS* REGISTER TO SEE IF
005435,000357: 10,7333 10747 CCS WASKSET # SWITCH WAS SUCCESSFUL.
005436,000358: 10,7334 00600 TC RUPTREG1 # YES - RETURN FOR MORE CHECKING IF OK.
005437,000359: 10,7335 07337 TC +2 # FAILED - STILL WAITING TO SWITCH.
005438,000360: 10,7336 00600 TC RUPTREG1 # MANUAL INHIBIT.
005439,000361:
005440,000362: 10,7337 20601 FAILEND INDEX RUPTREG2 # COMES HERE TO SIGNAL ERROR RETURN FROM
005441,000363: 10,7340 10753 CCS MODECADR # MODE STALL ROUTINES.
005442,000364: 10,7341 07343 TC +2 # JOB WAS WAKENED EARLIER - EXIT W/O INCR.
005443,000365: 10,7342 40000 COM # NO WAKE-UP - SET MODECADR TO -0 FOR FAIL
005444,000366: 10,7343 20601 LVENDMOD INDEX RUPTREG2
005445,000367: 10,7344 50753 TS MODECADR
005446,000368: 10,7345 02203 TC TASKOVER
005447,000369:
005448,000370: 10,7346 20601 GOODEND INDEX RUPTREG2 # COMES HERE TO SIGNAL A SUCCESSFUL SWITCH
005449,000371: 10,7347 10753 CCS MODECADR
005450,000372: 10,7350 07353 TC BUMPJOB # JOB WAS AWAKENED - INCREMENT LOC.
005451,000373: 10,7351 44516 CS ONE # NO WAKE - SET MODECADR TO -1 TO INDICATE
005452,000374: 10,7352 07343 TC LVENDMOD # SUCCESS.
005453,000375:
005454,000376: 10,7353 20574 BUMPJOB INDEX LOCCTR # ARRIVES WITH C(A) = 0. LOCCTR SET TO
005455,000377: 10,7354 30117 XCH LOC # AWAKENED JOB REGISTERS.
005456,000378: 10,7355 64335 AD MINUS1 # LOC IS NEGATIVE FOR BASIC JOBS.
005457,000379: 10,7356 20574 INDEX LOCCTR
005458,000380: 10,7357 30117 XCH LOC
005459,000381: 10,7360 07343 TC LVENDMOD # SET MODECADR TO +0 AND EXIT.
005460,000382:
005461,000383: # THE FOLLOWING ROUTINE INCREMENTS IN 2S COMPLEMENT THE REGISTER WHOSE ADDRESS IS IN ADDRWD BY THE
005462,000384: # QUANTITY FOUND IN TEM2. THIS MAY BE USED TO INCREMENT DESIRED IMU AND OPTICS CDU ANGLES OR ANY OTHER 2S
005463,000385: # COMPLEMENT (+0 UNEQUAL TO -0) QUANTITY.
005464,000386:
005465,000387: 10,7361 20076 CDUINC INDEX BUF
005466,000388: 10,7362 10000 CCS 0 # THE 16TH BIT OF A WILL BE USED TO
005467,000389: 10,7363 64516 AD ONE # ACHIEVE THE REQUIRED 32,768 DISTINCT
005468,000390: 10,7364 07370 TC +4 # STATES.
005469,000391:
005470,000392: 10,7365 64516 AD ONE
005471,000393: 10,7366 64516 AD ONE # A MAY HAVE OVERFLOW PRESENT HERE.
005472,000394: 10,7367 40000 COM # DESIRED -1 IF DESIRED WAS NEGATIVE.
005473,000395:
005474,000396: 10,7370 60101 +4 AD TEM2 # AND MAYBE OVERFLOW SOME MORE.
005475,000397: 10,7371 10000 CCS A # BACK TO 2S COMPLEMENT.
005476,000398: 10,7372 64516 AD ONE # NOTE THAT CCS TREATS A AS A 16 BIT NO.
005477,000399: 10,7373 07375 TC +2
005478,000400: 10,7374 40000 COM
005479,000401: 10,7375 50001 TS Q # REVERTS -0 TO +0.
005480,000402: 10,7376 07402 TC +4 # NO OVERFLOW - PLANT NEW DESIRED.
005481,000403:
005482,000404: 10,7377 20000 INDEX A # OVERFLOW - SIMULATE UN-CORRECTED SIGN.
005483,000405: 10,7400 34500 CAF LIMITS +1 # 37777 FOR NEGATIVE - 40000 IF PLUS.
005484,000406: 10,7401 60001 AD Q # OVERFLOW-CORRECTED DIFFERENCE.
005485,000407:
005486,000408: 10,7402 20076 +4 INDEX BUF
005487,000409: 10,7403 50000 TS 0 # NEW ANGLE.
005488,000410:
005489,000411: 10,7404 02544 TC SWRETURN # RETURN TO CALLER.
005490,000412:
005491,000413:
005492,000414: 10,7405 07313 REJEND TC ENDOPT
005493,000415: 10,7406 07346 TC GOODEND
005494,000416: 10,7407 02115 TC ENDOFJOB
005495,000417:
005496,000418:
005497,000419: # WHEN A JOB WHICH REQUESTED A MODE SWITCH MUST IDLE UNTIL THE SWITCH IS COMPLETE, IT COMES TO IMUSTALL
005498,000420: # (OR OPTSTALL) TO WAIT FOR THE COMPLETION AND TO DO ERROR CHECKING. RETURN IS TO THE LOCATION IMMEDIATELY FOLLOW-
005499,000421: # ING THE CALLING SEQUENCE IF THE SWITCH WAS UNSUCCESSFUL, AND THE NEXT LOCATION IF IT WAS SUCCESSFUL. ANY
005500,000422: # IDLING IS DONE BY PUTTING THE JOB TO SLEEP, SO THAT A VAC AREA (IF USED) WOULD BE PRESERVED.
005501,000423:
005502,000424: 10,7410 34516 OPTSTALL CAF ONE # 0 FOR IMU AND 1 FOR OPTICS AS USUAL.
005503,000425: 10,7411 07413 TC +2
005504,000426:
005505,000427: 10,7412 35500 IMUSTALL CAF ZERO
005506,000428: 10,7413 20017 INHINT # ONE SUB-SYSTEM AT A TIME ONLY.
005507,000429: 10,7414 50601 TS RUPTREG2
005508,000430: 10,7415 20000 INDEX A
005509,000431: 10,7416 10753 CCS MODECADR # SEE IF MODE SWITCH IS COMPLETE.
005510,000432: 10,7417 07073 TC MODABORT # VERY ILL IF SOMEONE ALREADY WAITING.
005511,000433: 10,7420 07433 TC MODESLP # MODE SWITCH INCOMPLETE - PUT JOB TO REST
005512,000434: 10,7421 07425 TC MODEGOOD # -1 INDICATES A SUCCESSFULLY COMPLETED SW
005513,000435:
005514,000436: 10,7422 20601 MG2 INDEX RUPTREG2 # -0 MEANS FINISHED BUT FAILED.
005515,000437: 10,7423 50753 TS MODECADR # RESET TO +0.
005516,000438: 10,7424 07071 TC MODEEXIT # RELINT AND RETURN VIA SWCALL.
005517,000439:
005518,000440: 10,7425 10000 MODEGOOD CCS A # SEE THAT MODECADR WAS INDEED -1.
005519,000441: 10,7426 07073 TC MODABORT # VERY ILL IF SOMEONE ALREADY WAITING.
005520,000442: 10,7427 30070 XCH TEMQS # INCREMENT RETURN TO INDICATE SUCCESS.
005521,000443: 10,7430 64516 AD ONE
005522,000444: 10,7431 30070 XCH TEMQS # BRING +0 BACK
005523,000445: 10,7432 07422 TC MG2 # TO RESET MODECADR AND EXIT.
005524,000446:
005525,000447: 10,7433 02550 MODESLP TC MAKECADR # MAKE CADR FROM SWCALL RETUN ADDRESS.
005526,000448: 10,7434 30061 XCH ADDRWD
005527,000449: 10,7435 20601 INDEX RUPTREG2
005528,000450: 10,7436 50753 TS MODECADR
005529,000451: 10,7437 02120 TC JOBSLEEP
005530,000452:
005531,000453: 10,7440 ENDSTALL EQUALS
005532,000454:
005533,000455:
005534,000456: 10,7440 35500 IMUPULSE CAF ZERO
005535,000457: 10,7441 50116 TS MPAC +2
005536,000458: 10,7442 02550 TC MAKECADR
005537,000459: 10,7443 30061 XCH ADDRWD
005538,000460: 10,7444 50076 TS BUF
005539,000461:
005540,000462: 10,7445 35501 CAF FOUR
005541,000463: 10,7446 50077 PULSLOOP TS BUF +1
005542,000464: 10,7447 20000 INDEX A
005543,000465: 10,7450 30716 XCH GYROD +1
005544,000466: 10,7451 50115 TS MPAC +1
005545,000467: 10,7452 20077 INDEX BUF +1
005546,000468: 10,7453 30715 XCH GYROD
005547,000469: 10,7454 50114 TS MPAC
005548,000470:
005549,000471: 10,7455 02516 TC BANKCALL
005550,000472: 10,7456 07132 CADR TPAGREE
005551,000473:
005552,000474: 10,7457 10000 CCS A
005553,000475: 10,7460 07461 TC +1
005554,000476: 10,7461 35501 CAF FOUR
005555,000477: 10,7462 64340 AD MINUS2
005556,000478: 10,7463 60115 AD MPAC +1
005557,000479: 10,7464 60114 AD MPAC
005558,000480:
005559,000481: 10,7465 20077 INDEX BUF +1
005560,000482: 10,7466 50716 TS GYROD +1
005561,000483:
005562,000484: 10,7467 35500 CAF ZERO
005563,000485: 10,7470 60114 AD MPAC
005564,000486: 10,7471 20077 INDEX BUF +1
005565,000487: 10,7472 30715 XCH GYROD
005566,000488:
005567,000489: 10,7473 44516 CS ONE
005568,000490: 10,7474 60077 AD BUF +1
005569,000491: 10,7475 10000 CCS A
005570,000492: 10,7476 07446 TC PULSLOOP
005571,000493: 10,7477 01001 FULLDT DEC 5.13 E2
005572,000494: 10,7500 44473 CS THREE # INITIALIZE CDUIND TO START GYRO TASKS
005573,000495: 10,7501 50704 TS CDUIND # AT Y GYRO (ORDER IS YZX).
005574,000496:
005575,000497: 10,7502 20017 INHINT
005576,000498: 10,7503 34516 CAF ONE
005577,000499: 10,7504 02124 TC WAITLIST
005578,000500: 10,7505 21525 CADR DOGYRO
005579,000501: 10,7506 20016 RELINT
005580,000502:
005581,000503: 10,7507 30076 XCH BUF
005582,000504: 10,7510 02566 TC BANKJUMP
005583,000505:
005584,000506: # WAITLIST TASKS TO SEND OUT DP PULSE TRAINS TO THE GYROS.
005585,000507:
005586,000508: 10,7511 07635 TWEAKGY TC SETUPSUB # FINISHED WITH POSITIVE TRAINS TO A GYRO.
005587,000509: 10,7512 45502 CS TWO # SEND OUT 2- TO LEAVE GYRO IN - STATE.
005588,000510: 10,7513 06316 TC OUT2SUB
005589,000511:
005590,000512: 10,7514 40704 GYROADV CS CDUIND # ADVANCE TO THE NEXT GYRO IN ORDER YZX.
005591,000513: 10,7515 74717 MASK LOW7 # BIT14 IS 1 IF 2+ PULSES HAD BEEN SENT
005592,000514: 10,7516 20000 INDEX A # BEFORE A NEGATIVE COMMAND.
005593,000515: 10,7517 07516 TC -1
005594,000516: 10,7520 07176 TC IMUFINED
005595,000517: 10,7521 34475 CAF SIX
005596,000518: 10,7522 64340 AD NEG2 # (CAME HERE FROM TC WITH C(A)=4.)
005597,000519: 10,7523 40000 COM
005598,000520: 10,7524 50704 TS CDUIND
005599,000521:
005600,000522: 10,7525 07635 DOGYRO TC SETUPSUB # SERVICE GYRO WHOSE *NUMBER* IS IN CDUIND
005601,000523: 10,7526 20602 INDEX RUPTREG3
005602,000524: 10,7527 10711 CCS GYROD -4 # MAJOR PART IS POSMAX COUNT.
005603,000525: 10,7530 07541 TC DOPOSMAX # PUT OUT POSMAX.
005604,000526: 10,7531 07533 TC DOMINOR
005605,000527: 10,7532 07551 TC DONEGMAX
005606,000528:
005607,000529: 10,7533 20602 DOMINOR INDEX RUPTREG3 # SEND OUT REMAINDER OF COMMAND.
005608,000530: 10,7534 10712 CCS GYROD -3
005609,000531: 10,7535 07574 TC POSGOUT
005610,000532: 10,7536 07512 TC TWEAKGY +1 # FINISHED WITH LONG . PULSE TRAIN.
005611,000533: 10,7537 07604 TC NEGGOUT
005612,000534: 10,7540 07514 TC GYROADV # DONE WITH LONG - TRAIN OR ZERO INPUT.
005613,000535:
005614,000536: 10,7541 20602 DOPOSMAX INDEX RUPTREG3 # PUT AWAY DECREMENTED POSMAX COUNT.
005615,000537: 10,7542 50711 TS GYROD -4
005616,000538: 10,7543 34476 CAF POSMAX
005617,000539: 10,7544 06316 DOMAX TC OUT2SUB
005618,000540: 10,7545 37477 CAF FULLDT
005619,000541:
005620,000542: 10,7546 02124 GYROWAIT TC WAITLIST
005621,000543: 10,7547 21525 CADR DOGYRO
005622,000544: 10,7550 02203 TC TASKOVER
005623,000545:
005624,000546: 10,7551 40000 DONEGMAX COM
005625,000547: 10,7552 20602 INDEX RUPTREG3
005626,000548: 10,7553 50711 TS GYROD -4 # DECREMENTED POSMAX (NEGMAX) COUNT.
005627,000549: 10,7554 40704 CS CDUIND # SEE IF 2+ PULSES HAVE BEEN PUT OUT YET,
005628,000550: 10,7555 74517 MASK NEG1/2 # LEAVING WORD THAT THEY WILL BE OUT
005629,000551: 10,7556 64501 AD BIT14 # BY TASKOVER TIME.
005630,000552: 10,7557 40000 COM
005631,000553: 10,7560 30704 XCH CDUIND
005632,000554: 10,7561 74501 MASK BIT14
005633,000555: 10,7562 10000 CCS A
005634,000556: 10,7563 07565 TC +2
005635,000557: 10,7564 07572 TC NEGMAX2 # ALREADY OUT.
005636,000558:
005637,000559: 10,7565 35502 CAF TWO # NOT OUT YET - DO SO.
005638,000560: 10,7566 06316 TC OUT2SUB
005639,000561: 10,7567 35502 CAF TWO # WAIT FOR THEM TO GET OUT BEFORE DELIVER-
005640,000562: 10,7570 10000 CCS A # ING THE REAL COMMAND.
005641,000563: 10,7571 07570 TC -1
005642,000564:
005643,000565: 10,7572 44476 NEGMAX2 CS POSMAX
005644,000566: 10,7573 07544 TC DOMAX
005645,000567:
005646,000568: 10,7574 64516 POSGOUT AD ONE # FRACTIONAL POSITIVE COMMAND.
005647,000569: 10,7575 50034 TS OVCTR
005648,000570: 10,7576 06316 TC OUT2SUB # DELIVER COMMAND.
005649,000571: 10,7577 07623 TC GETDT # GET TIME TO END OF PULSE TRAIN.
005650,000572: 10,7600 30577 XCH LPRUPT # (ANSWER LEFT IN LPRUPT).
005651,000573: 10,7601 02124 TC WAITLIST
005652,000574: 10,7602 21511 CADR TWEAKGY # SUPPLY 2- PULSES AT END.
005653,000575: 10,7603 02203 TC TASKOVER
005654,000576:
005655,000577: 10,7604 64516 NEGGOUT AD ONE # FRACTIONAL NEGATIVE COMMAND.
005656,000578: 10,7605 50034 TS OVCTR
005657,000579: 10,7606 40704 CS CDUIND # SEE IF 2+ PULSES ALREADY OUT.
005658,000580: 10,7607 74501 MASK BIT14
005659,000581: 10,7610 10000 CCS A
005660,000582: 10,7611 07614 TC NEGGOUT2
005661,000583:
005662,000584: 10,7612 35502 CAF TWO
005663,000585: 10,7613 06316 TC OUT2SUB
005664,000586:
005665,000587: 10,7614 07623 NEGGOUT2 TC GETDT
005666,000588: 10,7615 40034 CS OVCTR # DELIVER COMMAND.
005667,000589: 10,7616 06316 TC OUT2SUB
005668,000590: 10,7617 30577 XCH LPRUPT # GET WAITLIST DT LEFT BY GETDT .
005669,000591: 10,7620 02124 TC WAITLIST
005670,000592: 10,7621 21514 CADR GYROADV
005671,000593: 10,7622 02203 TC TASKOVER
005672,000594:
005673,000595: # SUBROUTINES USED BY TASKS.
005674,000596:
005675,000597: 10,7623 30003 GETDT XCH LP # COMPUTE NUMBER OF 10 MS TICKS IT WILL
005676,000598: 10,7624 50577 TS LPRUPT # TAKE THE PULSE TRAIN WHOSE MAGNITUDE IS
005677,000599: 10,7625 34505 CAF BIT10 # IN OVCTR TO BE DELIVERED AT A RATE OF
005678,000600: 10,7626 25777 EXTEND # 3200 PPS.
005679,000601: 10,7627 40034 MP OVCTR
005680,000602: 10,7630 65502 AD TWO # INTERRUPT AND ROUND-OFF UNCERTAINTIES.
005681,000603: 10,7631 30577 XCH LPRUPT # LEAVE ANSWER IN LPRUPT.
005682,000604: 10,7632 25777 EXTEND
005683,000605: 10,7633 44516 MP ONE
005684,000606: 10,7634 00001 TC Q
005685,000607:
005686,000608:
005687,000609:
005688,000610: 10,7635 35500 SETUPSUB CAF ZERO # SETS UP MISCELLANEOUS REGISTERS.
005689,000611: 10,7636 50601 TS RUPTREG2 # USED BY OUT2SUB.
005690,000612: 10,7637 40704 CS CDUIND
005691,000613: 10,7640 74717 MASK LOW7 # KILL 2+ BIT.
005692,000614: 10,7641 50600 TS RUPTREG1
005693,000615: 10,7642 60000 DOUBLE
005694,000616: 10,7643 50602 TS RUPTREG3 # USED FOR INDEXING GYROD SET.
005695,000617: 10,7644 00001 TC Q
005696,000618:
005697,000619:
005698,000620: 10,7645 07274 MOREZERO TC SETKANDC +1 # CALL FOR 10 SECONDS OF FINE ALIGN TO
005699,000621: 10,7646 00050 OCT 00050 # ALLOW CDUS TO GO AT LEAST 90 DEGREES
005700,000622: 10,7647 40010 OCT 40010 # OF THE WAY HOME UNLESS THE PLATFORM IS
005701,000623: 10,7650 37720 CAF 10SECS # SITTING AT ANY FALSE NULLS.
005702,000624: 10,7651 02124 TC WAITLIST
005703,000625: 10,7652 21654 CADR ZEROATTC # WE WILL GO INTO ATTITUTE CONTROL NEXT.
005704,000626: 10,7653 02203 TC TASKOVER
005705,000627:
005706,000628: 10,7654 07711 ZEROATTC TC KCHECK # USUAL SYSTEM CHECK.
005707,000629: 10,7655 07274 TC SETKANDC +1 # COMMAND ATTITUDE CONTROL (WITHOUT ATTC
005708,000630: 10,7656 00060 OCT 00060 # LAMP LIT) SO THAT WE CAN DRIVE THE CDUS
005709,000631: 10,7657 41000 OCT 41000 # (LIGHT ON AFTER ALL) AWAY FROM FALSE NUL
005710,000632: 10,7660 37155 CAF 200MS
005711,000633: 10,7661 02124 TC WAITLIST
005712,000634: 10,7662 21664 CADR ZERODRVE # WAIT FOR MODE SWITCH BEFORE ENABLING CDU
005713,000635: 10,7663 02203 TC TASKOVER # DRIVE IN T4RUPT.
005714,000636:
005715,000637: 10,7664 07711 ZERODRVE TC KCHECK # VERIFY SWITCH TO ATTITUDE CONTROL.
005716,000638: 10,7665 07740 TC BLIVOT # WE WILL DRIVE THE CDUS TOWARD 45 DEGREES
005717,000639: 10,7666 50705 TS THETAD # FOR 2SECS (ABOUT 10 DEGREES OF MOVEMENT
005718,000640: 10,7667 50706 TS THETAD +1 # AT MOST). THIS WILL DRIVE ANY CDUS OFF
005719,000641: 10,7670 50707 TS THETAD +2 # FALSE NULLS WITHOUT MOVING THE PLATFORM
005720,000642: 10,7671 35500 CAF ZERO
005721,000643: 10,7672 50704 TS CDUIND # CDU LOOPS ARE NOW ENABLED.
005722,000644: 10,7673 37721 CAF 2SECS
005723,000645: 10,7674 02124 TC WAITLIST
005724,000646: 10,7675 21677 CADR REZFINE # GO BACK TO FINE ALIGN WHEN DONE.
005725,000647: 10,7676 02203 TC TASKOVER
005726,000648:
005727,000649: 10,7677 07711 REZFINE TC KCHECK # VERIFY MODE SWITCH AS USUAL.
005728,000650: 10,7700 07274 TC SETKANDC +1 # CALL FOR 20 SECONDS OF FINE ALIGN TO
005729,000651: 10,7701 00050 OCT 00050 # ALLOW ENOUGH TIME FOR THE CDUS TO FIND
005730,000652: 10,7702 40010 OCT 40010 # THE GIMBALS.
005731,000653: 10,7703 44516 CS ONE
005732,000654: 10,7704 50704 TS CDUIND # CDU LOOPS NOW DISABLED.
005733,000655: 10,7705 37717 CAF 20SECS
005734,000656: 10,7706 02124 TC WAITLIST
005735,000657: 10,7707 21176 CADR IMUFINED # CHECK FORPRESENCE OF IMU OR CDU FAILS.
005736,000658: 10,7710 07750 TC BLIVOT2
005737,000659:
005738,000660:
005739,000661:
005740,000662: 10,7711 10747 KCHECK CCS WASKSET # RETURN TO CALLER IF SYSTEM OK - SET UP
005741,000663: 10,7712 00001 TC Q # ERROR RETURN AT ENDIMU OTHERWISE.
005742,000664: 10,7713 07316 TC ENDIMU
005743,000665: 10,7714 00001 TC Q
005744,000666: 10,7715 07316 TC ENDIMU
005745,000667:
005746,000668: 10,7716 07640 40SECS DEC 40.00 E2 # TIME FOR IMUCDU ZERO ENCODER.
005747,000669: 10,7717 03720 20SECS DEC 20.00 E2
005748,000670: 10,7720 01750 10SECS DEC 10.00 E2
005749,000671: 10,7721 00310 2SECS DEC 2.00 E2
005750,000672: 10,7722 13560 60SECS DEC 60.00 E2 # TIME FOR IMUCDU COARSE ALIGN.
005751,000673:
005752,000674:
005753,000675: # MARK REQUESTING ROUTINES.
005754,000676:
005755,000677: 05,6000 SETLOC 12000
005756,000678:
005757,000679: 05,6000 06110 KEYRUPTB TC KEYRUPTA # STANDARD LOC, DONT MOVE
005758,000680:
005759,000681: 05,6001 06005 SXTMARK TC MARKCOM
005760,000682: 05,6002 10000 OCT 10000
005761,000683:
005762,000684: 05,6003 06005 SCTMARK TC MARKCOM
005763,000685: 05,6004 00000 OCT 00000
005764,000686:
005765,000687: 05,6005 20017 MARKCOM INHINT
005766,000688: 05,6006 50600 TS RUPTREG1 # NUMBER OF MARKS REQUESTED.
005767,000689:
005768,000690: 05,6007 20001 INDEX Q
005769,000691: 05,6010 30000 CAF 0
005770,000692: 05,6011 50601 TS RUPTREG2
005771,000693:
005772,000694: 05,6012 10755 CCS MARKSTAT # SEE IF MARK BUTTON ALREADY SNATCHED.
005773,000695: 05,6013 06015 TC +2 # YES - ALARM AND END THE STRAY JOB.
005774,000696: 05,6014 06020 TC MARKOK # +0 INDICATES AVAILABLE.
005775,000697:
005776,000698: 05,6015 02605 TC ALARM
005777,000699: 05,6016 00105 OCT 00105
005778,000700: 05,6017 02115 TC ENDOFJOB
005779,000701:
005780,000702: 05,6020 10214 MARKOK CCS VAC1USE # FIND A VAC AREA TO STORE THE MARKS IN.
005781,000703: 05,6021 06034 TC MKVACFND
005782,000704: 05,6022 10270 CCS VAC2USE
005783,000705: 05,6023 06034 TC MKVACFND
005784,000706: 05,6024 10344 CCS VAC3USE
005785,000707: 05,6025 06034 TC MKVACFND
005786,000708: 05,6026 10420 CCS VAC4USE
005787,000709: 05,6027 06034 TC MKVACFND
005788,000710: 05,6030 10474 CCS VAC5USE
005789,000711: 05,6031 06034 TC MKVACFND
005790,000712:
005791,000713: 05,6032 02652 TC ABORT # VAC AREAS ALL OCCUPIED - ABORT.
005792,000714: 05,6033 00104 OCT 00104
005793,000715:
005794,000716: 05,6034 65502 MKVACFND AD TWO # ADDRESS OF VAC.
005795,000717: 05,6035 50755 TS MARKSTAT
005796,000718: 05,6036 20000 INDEX A
005797,000719: 05,6037 50052 TS QPRET # USED TO SHOW NEXT AVAILABLE MARK SLOT.
005798,000720:
005799,000721: 05,6040 35500 CAF ZERO # SHOW VACAREA IS OCCUPIED.
005800,000722: 05,6041 20755 INDEX MARKSTAT
005801,000723: 05,6042 47777 TS 0 -1
005802,000724:
005803,000725: 05,6043 34502 CAF BIT13
005804,000726: 05,6044 25777 EXTEND
005805,000727: 05,6045 40601 MP RUPTREG2
005806,000728: 05,6046 30600 XCH RUPTREG1
005807,000729:
005808,000730: 05,6047 25777 EXTEND # PLACE DESIRED NUMBER OF MARKS IN 12 - 14
005809,000731: 05,6050 44503 MP BIT12
005810,000732: 05,6051 30003 XCH LP
005811,000733: 05,6052 60600 AD RUPTREG1
005812,000734: 05,6053 60755 AD MARKSTAT # JUST CONTAINS LOW 9 BITS OF VAC ADDRESS.
005813,000735: 05,6054 50755 TS MARKSTAT
005814,000736:
005815,000737: 05,6055 10752 CCS DESOPSET
005816,000738: 05,6056 06061 TC SETSXTON
005817,000739: 05,6057 06065 TC MARKEXIT
005818,000740: 05,6060 06065 TC MARKEXIT
005819,000741:
005820,000742: 05,6061 44502 SETSXTON CS BIT13
005821,000743: 05,6062 70752 MASK DESOPSET
005822,000744: 05,6063 60601 AD RUPTREG2
005823,000745: 05,6064 50752 TS DESOPSET
005824,000746:
005825,000747: 05,6065 36072 MARKEXIT CAF MARKPRIO
005826,000748: 05,6066 02043 TC NOVAC
005827,000749: 05,6067 12073 CADR MKPASTE
005828,000750: 05,6070 20016 RELINT
005829,000751: 05,6071 02544 TC SWRETURN
005830,000752:
005831,000753: 05,6072 27000 MARKPRIO OCT 27000
005832,000754:
005833,000755: 05,6073 36101 MKPASTE CAF VB51 # ASSUME USING PROGRAM HAS GRABBED DSP.
005834,000756: 05,6074 02670 TC NVSUB
005835,000757: 05,6075 03040 TC PRENVBSY
005836,000758: 05,6076 02516 TC BANKCALL
005837,000759: 05,6077 50002 CADR FLASHON
005838,000760: 05,6100 02115 TC ENDOFJOB
005839,000761:
005840,000762: 05,6101 05100 VB51 OCT 5100
005841,000763:
005842,000764: # MARK SYSTEM RELEASING ROUTINE.
005843,000765:
005844,000766: 05,6102 35500 MKRELEAS CAF ZERO # SHOW MARK SYSTEM NOW AVAILABLE.
005845,000767: 05,6103 30755 XCH MARKSTAT
005846,000768: 05,6104 10000 CCS A
005847,000769: 05,6105 20000 INDEX A
005848,000770: 05,6106 50000 TS 0
005849,000771:
005850,000772: 05,6107 02544 TC SWRETURN
005851,000773:
005852,000774:
005853,000775: # KEYRUPT LEAD-IN AND MARK/MARK ACCEPT PROGRAMS.
005854,000776:
005855,000777: 05,6110 50575 KEYRUPTA TS BANKRUPT
005856,000778: 05,6111 40053 MARK CS OPTY # PRECISION OPTICS DRIVE - GATHER DATA
005857,000779: 05,6112 50572 TS RUPTSTOR +5 # IMMEDIATELY AND THEN TRANSFER TO VAC.
005858,000780:
005859,000781: 05,6113 40052 CS OPTX # SHAFT OPTICS ENCODER.
005860,000782: 05,6114 50570 TS RUPTSTOR +3
005861,000783:
005862,000784: 05,6115 40050 CS CDUY # READ INNER-MIDDLE-OUTER IMUCDUS.
005863,000785: 05,6116 50567 TS RUPTSTOR +2
005864,000786:
005865,000787: 05,6117 40051 CS CDUZ
005866,000788: 05,6120 50571 TS RUPTSTOR +4
005867,000789:
005868,000790: 05,6121 40047 CS CDUX
005869,000791: 05,6122 50573 TS RUPTSTOR +6
005870,000792:
005871,000793: 05,6123 02474 TC READTIME +1 # SPECIAL DP TIME COUNTER-READING ROUTINE.
005872,000794:
005873,000795: 05,6124 10004 CCS IN0 # SEE IF KEYCODE OR MARK.
005874,000796: 05,6125 64516 AD ONE
005875,000797: 05,6126 06332 TC KEYCALL
005876,000798: 05,6127 06133 TC +4 # IN0 SHOULD NEVER CONTAIN -0.
005877,000799:
005878,000800: 05,6130 10000 CCS A
005879,000801: 05,6131 64516 AD ONE
005880,000802: 05,6132 06332 TC KEYCALL
005881,000803:
005882,000804: 05,6133 30007 XCH IN3 # NOW FIND OUT IF IT WAS A MARK-REJECT.
005883,000805: 05,6134 30007 XCH IN3
005884,000806: 05,6135 74503 MASK BIT12 # OPT ZERO/MARK REJECT BIT.
005885,000807: 05,6136 10000 CCS A
005886,000808: 05,6137 06240 TC MKACCEPT
005887,000809:
005888,000810: 05,6140 10755 CCS MARKSTAT # SEE IF MARKS BEING CALLED FOR.
005889,000811: 05,6141 06165 TC MARK2
005890,000812:
005891,000813: 05,6142 30570 XCH RUPTSTOR +3 # STORE IN OBTAINED MPAC COMPLEMENTED.
005892,000814: 05,6143 50600 TS RUPTREG1 # OPTICS ANGLES AND MINOR PART OF TIME.
005893,000815: 05,6144 30572 XCH RUPTSTOR +5 # -OPTX, -OPTY, AND -TIME1.
005894,000816: 05,6145 50601 TS RUPTREG2
005895,000817: 05,6146 30566 XCH RUPTSTOR +1
005896,000818: 05,6147 50602 TS RUPTREG3
005897,000819:
005898,000820: 05,6150 36330 CAF MKDSPRIO # CALL SPECIAL DISPLAY JOB
005899,000821: 05,6151 02043 TC NOVAC
005900,000822: 05,6152 12307 CADR MARKDISP
005901,000823:
005902,000824: 05,6153 30600 XCH RUPTREG1 # PLANT INFORMATION IN MPAC OF REGISTER
005903,000825: 05,6154 20574 INDEX LOCCTR # SET.
005904,000826: 05,6155 50114 TS MPAC
005905,000827: 05,6156 30601 XCH RUPTREG2
005906,000828: 05,6157 20574 INDEX LOCCTR
005907,000829: 05,6160 50115 TS MPAC +1
005908,000830: 05,6161 30602 XCH RUPTREG3
005909,000831: 05,6162 20574 INDEX LOCCTR
005910,000832: 05,6163 50116 TS MPAC +2
005911,000833:
005912,000834: 05,6164 02211 TC RESUME
005913,000835:
005914,000836:
005915,000837: 05,6165 50601 MARK2 TS RUPTREG2 # SEE IF ANY MORE MARKS CALLED FOR.
005916,000838: 05,6166 66171 AD BIT12BAR
005917,000839: 05,6167 10000 CCS A
005918,000840: 05,6170 06173 TC +3
005919,000841: 05,6171 73777 BIT12BAR OCT -4000
005920,000842: 05,6172 06210 TC BADMARK
005921,000843:
005922,000844: 05,6173 34502 CAF BIT13
005923,000845: 05,6174 70750 MASK WASOPSET
005924,000846: 05,6175 10000 CCS A
005925,000847: 05,6176 34504 CAF BIT11
005926,000848: 05,6177 60755 AD MARKSTAT
005927,000849: 05,6200 74504 MASK BIT11
005928,000850: 05,6201 10000 CCS A
005929,000851: 05,6202 06204 TC +2
005930,000852: 05,6203 06213 TC MARK3
005931,000853:
005932,000854: 05,6204 10750 CCS WASOPSET
005933,000855: 05,6205 06210 TC BADMARK
005934,000856: 05,6206 06210 TC BADMARK
005935,000857: 05,6207 06213 TC MARK3
005936,000858:
005937,000859: 05,6210 02605 BADMARK TC ALARM
005938,000860: 05,6211 00106 OCT 00106
005939,000861: 05,6212 02211 TC RESUME # NO FURTHER ACTION HERE.
005940,000862:
005941,000863: 05,6213 44505 MARK3 CS BIT10 # SET BIT 10 = 1 TO ENABLE MARK
005942,000864: 05,6214 70755 MASK MARKSTAT # REJECT.
005943,000865: 05,6215 64505 AD BIT10
005944,000866: 05,6216 50755 TS MARKSTAT
005945,000867:
005946,000868: 05,6217 74606 MASK LOW9 # SET UP REGISTER TRANSFER LOOP.
005947,000869: 05,6220 20000 INDEX A
005948,000870: 05,6221 40052 CS QPRET # PICK UP MARK SLOT-POINTER.
005949,000871: 05,6222 40000 COM
005950,000872: 05,6223 64475 AD SIX
005951,000873: 05,6224 50600 TS RUPTREG1
005952,000874: 05,6225 34475 CAF SIX # LOOP SEVEN TIMES.
005953,000875:
005954,000876: 05,6226 50601 READLOOP TS RUPTREG2
005955,000877: 05,6227 20000 INDEX A
005956,000878: 05,6230 40565 CS RUPTSTOR
005957,000879: 05,6231 20600 INDEX RUPTREG1
005958,000880: 05,6232 50000 TS 0
005959,000881: 05,6233 10600 CCS RUPTREG1 # ADDRESS NEXT LOCATION IN VAC.
005960,000882: 05,6234 50600 TS RUPTREG1
005961,000883: 05,6235 10601 CCS RUPTREG2
005962,000884: 05,6236 06226 TC READLOOP
005963,000885:
005964,000886: 05,6237 02211 TC RESUME # DONE.
005965,000887:
005966,000888:
005967,000889: 05,6240 10755 MKACCEPT CCS MARKSTAT # SEE IF MARKS BEING ACCEPTED.
005968,000890: 05,6241 06245 TC ACCEPT2
005969,000891: 05,6242 02605 TC ALARM # CURSE IF NOT.
005970,000892: 05,6243 00107 OCT 00107
005971,000893: 05,6244 02203 TC TASKOVER # (UNTIL MK ACCEPT BUTTON AVAILABLE).
005972,000894:
005973,000895: 05,6245 44505 ACCEPT2 CS BIT10 # SEE IF MARK HAD BEEN MADE SINCE LAST
005974,000896: 05,6246 70755 MASK MARKSTAT # MARK REJECT, AND SET BIT 10 TO ZERO TO
005975,000897: 05,6247 30755 XCH MARKSTAT # SHOW MARK REJECT.
005976,000898: 05,6250 74505 MASK BIT10
005977,000899: 05,6251 10000 CCS A
005978,000900: 05,6252 06256 TC ACCEPT3
005979,000901:
005980,000902: 05,6253 02605 TC ALARM # DONT ACCEPT TWO MARK REJECTS TOGETHER.
005981,000903: 05,6254 00110 OCT 00110
005982,000904: 05,6255 02203 TC TASKOVER # (UNTIL MK REJECT BUTTON AVAILABLE).
005983,000905:
005984,000906: 05,6256 34606 ACCEPT3 CAF LOW9 # DECREMENT POINTER TO REJECT MARK.
005985,000907: 05,6257 70755 MASK MARKSTAT
005986,000908: 05,6260 50572 TS ITEMP1
005987,000909: 05,6261 20000 INDEX A
005988,000910: 05,6262 30052 XCH QPRET
005989,000911: 05,6263 65361 AD SEVEN
005990,000912: 05,6264 20572 INDEX ITEMP1
005991,000913: 05,6265 50052 TS QPRET # NEW POINTER.
005992,000914:
005993,000915: 05,6266 44503 CS BIT12 # INCREMENT MARKS-TO-BE-ACCEPTED FIELD
005994,000916: 05,6267 60755 AD MARKSTAT # AND IF FIELD IS NOW NON-ZERO, CHANGE
005995,000917: 05,6270 50755 TS MARKSTAT # DSKY TO VERB 51 FLASHING TO INDICATE
005996,000918: 05,6271 76334 MASK HI4 # MORE MARKS REQUIRED.
005997,000919: 05,6272 10000 CCS A
005998,000920: 05,6273 02203 TC TASKOVER # (UNTIL BUTTON AVAIL.)
005999,000921: 05,6274 34606 CAF LOW9
006000,000922: 05,6275 70755 MASK MARKSTAT
006001,000923: 05,6276 50755 TS MARKSTAT
006002,000924:
006003,000925: 05,6277 36072 CAF MARKPRIO
006004,000926: 05,6300 02043 TC NOVAC
006005,000927: 05,6301 12304 CADR MKFLSHOF
006006,000928:
006007,000929: 05,6302 02563 TC POSTJUMP
006008,000930: 05,6303 21405 CADR REJEND
006009,000931:
006010,000932: 05,6304 02516 MKFLSHOF TC BANKCALL
006011,000933: 05,6305 50005 CADR FLASHOFF
006012,000934: 05,6306 02115 TC ENDOFJOB
006013,000935:
006014,000936: 05,6307 03025 MARKDISP TC GRABDSP # SPECIAL JOB TO DISPLAY UNCALLED-FOR MARK
006015,000937: 05,6310 03033 TC PREGBSY
006016,000938:
006017,000939: 05,6311 40114 REMKDSP CS MPAC # THE MPAC REGISTERS CONTIN -OPTX, -OPTY,
006018,000940: 05,6312 50627 TS DSPTEM1
006019,000941: 05,6313 40115 CS MPAC +1
006020,000942: 05,6314 50630 TS DSPTEM1 +1
006021,000943: 05,6315 40116 CS MPAC +2
006022,000944: 05,6316 50632 TS DSPTEM2
006023,000945: 05,6317 35500 CAF ZERO
006024,000946: 05,6320 50631 TS DSPTEM1 +2
006025,000947:
006026,000948: 05,6321 36327 CAF MKDSPCOD # NOUN-VERB FOR MARK DISPLAY.
006027,000949: 05,6322 02670 TC NVSUB
006028,000950: 05,6323 06325 TC MKDSPBSY # IF BUSY.
006029,000951:
006030,000952: 05,6324 07641 TC ENDMKDSP
006031,000953:
006032,000954: 05,6325 36331 MKDSPBSY CAF LREMKDSP # TAKE DATA OUT OF MPAC WHEN RE-AWAKENED.
006033,000955: 05,6326 03043 TC NVSUBUSY
006034,000956:
006035,000957: 05,6327 00656 MKDSPCOD OCT 00656
006036,000958: 05,6330 15000 MKDSPRIO OCT 15000
006037,000959: 05,6331 12311 LREMKDSP CADR REMKDSP
006038,000960:
006039,000961: 05,6332 02563 KEYCALL TC POSTJUMP # GO TO KEYBOARD/DISPLAY BANK WITH A
006040,000962: 05,6333 10001 CADR KEYRUPTC # GO THRU STANDARD LOC.
006041,000963:
006042,000964: 05,6334 74000 HI4 OCT 74000
006043,000965: 05,6335 37740 OCT37740 OCT 37740
006044,000966:
006045,000967: 05,6336 ENDMARK EQUALS
006046,000968:
006047,000969: 10,7723 BANK 10
006048,000970: 10,7723 44511 CDUFAIL2 CS BIT6 # TURN ON FAIL LIGHT ONLY IF IN FINE ALIGN
006049,000971: 10,7724 70747 MASK WASKSET
006050,000972: 10,7725 67730 AD -BIT4
006051,000973: 10,7726 10000 CCS A
006052,000974: 10,7727 06133 TC ERRSCAN3
006053,000975: 10,7730 77767 -BIT4 OCT -10
006054,000976: 10,7731 06133 TC ERRSCAN3
006055,000977: 10,7732 06165 TC CDUFAIL3 # TURN ON THE LIGHT.
006056,000978:
006057,000979: 10,7740 SETLOC 21740
006058,000980:
006059,000981: 10,7740 30705 BLIVOT XCH THETAD
006060,000982: 10,7741 51650 TS 1650
006061,000983: 10,7742 30706 XCH THETAD +1
006062,000984: 10,7743 51651 TS 1651
006063,000985: 10,7744 30707 XCH THETAD +2
006064,000986: 10,7745 51652 TS 1652
006065,000987: 10,7746 34521 CAF POS1/2
006066,000988: 10,7747 07666 TC ZERODRVE +2
006067,000989:
006068,000990: 10,7750 31650 BLIVOT2 XCH 1650
006069,000991: 10,7751 50705 TS THETAD
006070,000992: 10,7752 31651 XCH 1651
006071,000993: 10,7753 50706 TS THETAD +1
006072,000994: 10,7754 31652 XCH 1652
006073,000995: 10,7755 50707 TS THETAD +2
006074,000996: 10,7756 02203 TC TASKOVER
006075,000997:
006076,000998: 10,7757 40053 BLIVOT3 CS OPTY # IF THE DIFFERENCE OVERFLOWS, THE ERROR
006077,000999: 10,7760 60725 AD DESOPTX +1 # ERROR SIGNAL IS GREATER THAN 16383, SO
006078,001000: 10,7761 50001 TS Q # JUST THROW IN POSMAX WITH THE RIGHT
006079,001001: 10,7762 07765 TC +3 # SIGN AND CALL IT A DAY. OTHERWISE FOLL-
006080,001002:
006081,001003: 10,7763 20000 INDEX A # THE USUAL PROCEDURES.
006082,001004: 10,7764 44477 CS LIMITS
006083,001005: 10,7765 06217 TC OPTOUT
End of include-file MODE_SWITCHING_AND_MARK_ROUTINES.agc. Parent file is MAIN.agc