Source Code
![]() |
YAYUL: ASSEMBLE REVISION 6 OF PROGRAM BOREALIS BY MSTEWART JUN. 28,2017This is a modern AGC system self-test program, though based on the Apollo-era AURORA 12 program, and was not written by the original AGC developers, but rather by Mike Stewart. All of the original AURORA 12 DAP code added by the DAP Group has been removed, and extensive new system test code has been added in its place. This allows more in-depth testing of CPU behavior, both in AGC software simulations and hardware simulations. |
014202,000002: ## Copyright: Public domain.
014203,000003: ## Filename: AGC_BLOCK_TWO_SELF-CHECK.agc
014204,000004: ## Purpose: This program is designed to extensively test the Apollo Guidance Computer
014205,000005: ## (specifically the LM instantiation of it). It is built on top of a heavily
014206,000006: ## stripped-down Aurora 12, with all code ostensibly added by the DAP Group
014207,000007: ## removed. Instead Borealis expands upon the tests provided by Aurora,
014208,000008: ## including corrected tests from Retread 44 and tests from Ron Burkey's
014209,000009: ## Validation.
014210,000010: ## Assembler: yaYUL
014211,000011: ## Contact: Mike Stewart <mastewar1@gmail.com>.
014212,000012: ## Website: www.ibiblio.org/apollo/index.html
014213,000013: ## Mod history: 2016-12-20 MAS Created from Aurora 12 (with much DAP stuff removed).
014214,000014: ## 2016-12-21 MAS Shuffled some things around for multi-bank handling,
014215,000015: ## and put in jumps to Retread instruction checks and back.
014216,000016: ## 2017-01-04 MAS Fleshed out the rest of the hardware alarm tests. Also
014217,000017: ## pulled back all updates added by the time of Sunburst 120.
014218,000018: ## and put in jumps to Retread instruction checks and back.
014219,000019: ## 2017-01-15 MAS Added transfers to and from the new extended tests.
014220,000020: ## 2017-01-28 RSB WTIH -> WITH.
014221,000021: ## 2017-03-27 MAS A few corrections for the hardware alarm tests: counter
014222,000022: ## alarms are now filtered out because they can happen at
014223,000023: ## random during other restarts, if counter increments had
014224,000024: ## been requested. Also added testing of the Night Watchman's
014225,000025: ## stretching out of its monitor output for 1.28s. Also
014226,000026: ## adopted a bugfix from Sunburst 120 that stopped the AGC
014227,000027: ## from crashing when running a self-test after the DSKY test.
014228,000028:
014229,000029: # PROGRAM DESCRIPTION DATE 14 FEBRUARY 1967
014230,000030: # PROGRAM NAME - SELF-CHECK LOG SECTION AGC BLOCK TWO SELF-CHECK
014231,000031: # MOD NO - 0 ASSEMBLY SUNBURST REV 107
014232,000032: # MOD BY - GAUNTT
014233,000033:
014234,000034:
014235,000035: # FUNCTIONAL DESCRIPTION
014236,000036:
014237,000037: # PROGRAM HAS TWO MAIN PARTS. THE FIRST IS SELF-CHECK WHICH RUNS AS A ZERO PRIORITY JOB WITH NO CORE SET, AS
014238,000038: # PART OF THE BACK-UP IDLE LOOP. THE SECOND IS SHOW-BANKSUM WHICH RUNS AS A REGULAR EXECUTIVE JOB WITH ITS OWN
014239,000039: # STARTING VERB.
014240,000040: # THE PURPOSE OF SELF-CHECK IS TO CHECK OUT VARIOUS PARTS OF THE COMPUTER AS OUTLINED BELOW IN THE OPTIONS.
014241,000041: # THE PURPOSE OF SHOW-BANKSUM IS TO DISPLAY THE SUM OF EACH BANK, ONE AT A TIME.
014242,000042: # A THIRD SECTION, DSKYCHK, LIGHTS UP ALL THE DSKY ELECTROLUMINESCENT ELEMENTS.
014243,000043: # IN ALL THERE ARE 15 POSSIBLE OPTIONS IN THIS BLOCK II VERSION OF SELF-CHECK. MORE DETAIL DESCRIPTION MAY BE
014244,000044: # FOUND IN E-2065 BLOCK II AGC SELF-CHECK AND SHOW BANKSUM BY EDWIN D. SMALLY DECEMBER 1966.
014245,000045: # THE DIFFERENT OPTIONS ARE CONTROLLED BY PUTTING DIFFERENT NUMBERS IN THE SMODE REGISTER (NOUN 27). BELOW IS
014246,000046: # A DESCRIPTION OF WHAT PARTS OF THE COMPUTER THAT ARE CHECKED BY THE OPTIONS, AND THE CORRESPONDING NUMBER, IN
014247,000047: # OCTAL, TO LOAD INTO SMODE.
014248,000048: # +-1 ALL PULSES POSSIBLE BY INTERNAL CONTROL OF THE COMPUTER.
014249,000049: # +-2 ALL THE IN-OUT INSTRUCTION PULSES.
014250,000050: # +-3 SPECIAL AND CENTRAL REGISTERS, ALL BIT COMBINATIONS.
014251,000051: # +-4 ERASABLE MEMORY
014252,000052: # +-5 FIXED MEMORY
014253,000053: # +-6,7,10 EVERYTHING IN THE PREVIOUS 5 OPTIONS.
014254,000054: # +-11 TURNS ON THE ELECTROLUMINESCENT DISPLAY IN THE DSKY.
014255,000055: # -0 SAME AS +-10 UNTIL AN ERROR IS DETECTED.
014256,000056: # +0 NO CHECK, PUTS COMPUTER INTO THE BACKUP IDLE LOOP.
014257,000057:
014258,000058:
014259,000059: # WARNINGS
014260,000060:
014261,000061: # SMODE LOADED WITH GREATER THAN OCTAL 11 PUTS COMPUTER INTO THE BACKUP IDLE LOOP.
014262,000062:
014263,000063:
014264,000064:
014265,000065: # CALLING SEQUENCE
014266,000066:
014267,000067: # TO CALL SELF-CHECK KEY IN
014268,000068: # V 21 N 27 E OPTION NUMBER E
014269,000069: # TO CALL DSKYCHK KEY IN
014270,000070: # V 21 N 27 E +-11 E
014271,000071: # TO CALL SHOW-BANKSUM KEY IN
014272,000072: # V 56 E DISPLAYS FIRST BANK
014273,000073: # V 33 E PROCEED, DISPLAYS NEXT BANK
014274,000074:
014275,000075: # EXIT MODES, NORMAL AND ALARM
014276,000076:
014277,000077: # SELF-CHECK NORMALLY CONTINUES INDEFINITELY UNLESS THERE IS AN ERROR DETECTED. IF SO + OPTION NUMBERS PUT
014278,000078: # COMPUTER INTO BACKUP IDLE LOOP, - OPTION NUMBERS RESTART THE OPTION.
014279,000079: # THE -0 OPTION PROCEEDS FROM THE LINE FOLLOWING THE LINE WHERE THE ERROR WAS DETECTED.
014280,000080: # COMPLETION OF DSKYCHK PUTS THE COMPUTER INTO THE BACKUP IDLE LOOP.
014281,000081: # SHOW-BANKSUM PROCEEDS UNTIL A TERMINATE IS KEYED IN (V 34 E). THE COMPUTER IS PUT INTO THE BACKUP IDLE LOOP
014282,000082:
014283,000083:
014284,000084: # OUTPUT
014285,000085:
014286,000086: # SELF-CHECK UPON DETECTING AN ERROR LOADS THE SELF-CHECK ALARM CONSTANT (01102) INTO THE FAILREG SET AND
014287,000087: # TRIGGERS THE ALARM. THE ALARM ROUTINE DISPLAYS THE THREE FAILREGS. IF OPERATOR DESIRES FURTHER INFORMATION HE
014288,000088: # MAY KEY IN V 05 N 31 E DSKY DISPLAY IN R1 WILL BE ADDRESS +1 OF WHERE THE ERROR WAS DETECTED, IN R2 THE
014289,000089: # BANK NUMBER OF SELF-CHECK (37 OCTAL), AND IN R3 THE TOTAL NUMBER OF ERRORS DETECTED BY SELF-CHECK SINCE THE LAST
014290,000090: # FRESH START
014291,000091: # DSKYCHK LIGHTS UP THE DSKY DISPLAY ELEMENTS STARTING WITH THE DIGIT9 IN ALL POSITIONS. EACH DISPLAY LASTS
014292,000092: # 5 SECONDS
014293,000093: # SHOW-BANKSUM STARTING WITH BANK 0 DISPLAYS IN R1 +- THE BANK SUM (SHOULD EQUAL THE BANK NUMBER), IN R2 THE
014294,000094: # BANK NUMBER, AND IN R3 THE BUGGER WORD.
014295,000095:
014296,000096:
014297,000097: # ERASABLE INITIALIZATION REQUIRED
014298,000098:
014299,000099: # ACCOMPLISHED BY FRESH START
014300,000100: # SMODE & ERESTORE SET TO +0
014301,000101:
014302,000102:
014303,000103: # DEBRIS
014304,000104:
014305,000105: # ALL EXITS FROM THE CHECK OF ERASABLE (ERASCHK) RESTORE ORIGINAL CONTENTS TO REGISTERS UNDER CHECK.
014306,000106: # EXCEPTION IS A RESTART. RESTART THAT OCCURS DURING ERASCHK DOES A FRESH START.
014307,000107:
014308,000108: 5504 SETLOC ENDIMUF
014309,000109:
014310,000110: 5504 00001 SBIT1 OCT 00001 # SBIT1 and SBIT2 must be together
014311,000111: 5505 00002 SBIT2 OCT 00002
014312,000112: 5506 7667 SBIT3 EQUALS BIT3
014313,000113: 5506 7666 SBIT4 EQUALS BIT4
014314,000114: 5506 7665 SBIT5 EQUALS BIT5
014315,000115: 5506 7664 SBIT6 EQUALS BIT6
014316,000116: 5506 7663 SBIT7 EQUALS BIT7
014317,000117: 5506 7662 SBIT8 EQUALS BIT8
014318,000118: 5506 7661 SBIT9 EQUALS BIT9
014319,000119: 5506 7660 SBIT10 EQUALS BIT10
014320,000120: 5506 7657 SBIT11 EQUALS BIT11
014321,000121: 5506 7656 SBIT12 EQUALS BIT12
014322,000122: 5506 7655 SBIT13 EQUALS BIT13
014323,000123: 5506 7654 SBIT14 EQUALS BIT14
014324,000124: 5506 7653 SBIT15 EQUALS BIT15
014325,000125:
014326,000126: 5506 7675 S+ZERO EQUALS ZERO
014327,000127: 5506 5504 S+1 EQUALS SBIT1
014328,000128: 5506 5505 S+2 EQUALS SBIT2
014329,000129: 5506 6176 S+3 EQUALS THREE
014330,000130: 5506 7667 S+4 EQUALS FOUR
014331,000131: 5506 7674 S+5 EQUALS FIVE
014332,000132: 5506 6173 S+6 EQUALS SIX
014333,000133: 5506 7673 S+7 EQUALS SEVEN
014334,000134: 5506 5227 S8BITS EQUALS LOW8 # 00377
014335,000135: 5506 00050 CNTRCON OCTAL 00050 # USED IN CNTRCHK
014336,000136: 5507 00061 ERASCON1 OCTAL 00061 # USED IN ERASCHK
014337,000137: 5510 01374 ERASCON2 OCTAL 01374 # USED IN ERASCHK
014338,000138: 5511 01400 ERASCON6 OCTAL 01400 # USED IN ERASCHK
014339,000139: 5512 01461 ERASCON3 OCTAL 01461 # USED IN ERASCHK
014340,000140: 5513 01774 ERASCON4 OCTAL 01774 # USED IN ERASCHK
014341,000141: 5514 7701 S10BITS EQUALS LOW10 # 01777, USED IN ERASCHK
014342,000142: 5514 4467 SBNK03 EQUALS PRIO6 # 06000, USED IN ROPECHK
014343,000143: 5514 00060 SIXTY OCTAL 00060
014344,000144: 5515 60017 SUPRCON OCTAL 60017 # USED IN ROPECHK
014345,000145: 5516 37777 S+MAX OCTAL 37777 # ** S+MAX AND S-MAX MUST BE TOGETHER
014346,000146: 5517 40000 S-MAX OCTAL 40000 # FOR DOUBLE PRECISION CHECKING.
014347,000147: 5520 17777 S13BITS OCTAL 17777
014348,000148: 5521 25252 CONC+S1 OCTAL 25252 # USED IN CYCLSHFT
014349,000149: 5522 37737 OVCON OCTAL 37737 # USED IN RUPTCHK
014350,000150: 5523 37776 DVCON OCTAL 37776
014351,000151: 5524 7663 SUPER100 EQUALS BIT7
014352,000152: 5524 52400 CONC+S2 OCTAL 52400 # USED IN CYCLSHFT
014353,000153: 5525 76777 ERASCON5 OCTAL 76777
014354,000154: 5526 77770 S-7 OCTAL 77770
014355,000155: 5527 6043 S-4 EQUALS NEG4
014356,000156: 5527 7702 S-3 EQUALS NEG3
014357,000157: 5527 7700 S-2 EQUALS NEG2
014358,000158: 5527 7677 S-1 EQUALS NEGONE
014359,000159: 5527 7676 S-ZERO EQUALS NEG0
014360,000160:
014361,000161: 5527 E3,1400 EBANK= LST1
014362,000162: 5527 01371 ADRS1 ADRES SKEEP1
014363,000163:
014364,000164: 5530 00021 SRADRS ADRES SR
014365,000165:
014366,000166: 5531 5504 PRITYBIT EQUALS SBIT1
014367,000167: 5531 7667 TCTRPBIT EQUALS SBIT3
014368,000168: 5531 7666 RPTLKBIT EQUALS SBIT4
014369,000169: 5531 7665 WATCHBIT EQUALS SBIT5
014370,000170: 5531 77677 CTRMASK OCT 77677
014371,000171: 5532 00036 300MSEC DEC 30 B-14
014372,000172: 5533 00310 2SEC DEC 200 B-14
014373,000173: 5534 7663 0.64SEC EQUALS BIT7
014374,000174: 5534 70000 BNK34ADR FCADR BANK34 # With superbank = 100, this becomes bank 44
014375,000175:
014376,000176:
014377,000177: 5535 31111 PRERRORS CA ERESTORE # IS IT NECESSARY TO RESTORE ERASABLE
014378,000178: 5536 00006 EXTEND
014379,000179: 5537 15546 BZF ERRORS # NO
014380,000180: 5540 00006 EXTEND
014381,000181: 5541 31376 DCA SKEEP5
014382,000182: 5542 51377 INDEX SKEEP7
014383,000183: 5543 52001 DXCH 0000 # RESTORE THE TWO ERASABLE REGISTERS
014384,000184: 5544 37675 CA S+ZERO
014385,000185: 5545 55111 TS ERESTORE
014386,000186: 5546 30002 ERRORS CA Q
014387,000187: 5547 55364 TS SFAIL # SAVE Q FOR FAILURE LOCATION
014388,000188: 5550 25365 INCR ERCOUNT # KEEP TRACK OF NUMBER OF MALFUNCTIONS.
014389,000189: 5551 05405 TC ALARM
014390,000190: 5552 01102 OCT 01102 # SELF-CHECK MALFUNCTION INDICATOR
014391,000191: 5553 11361 CCS SMODE
014392,000192: 5554 37675 CA S+ZERO
014393,000193: 5555 55361 TS SMODE
014394,000194: 5556 05560 TC SELFIDLE # GO TO IDLE LOOP
014395,000195: 5557 01364 TC SFAIL # CONTINUE WITH SELF-CHECK
014396,000196:
014397,000197: 5560 04104 SELFIDLE TC POSTJUMP
014398,000198: 5561 40033 CADR SELFCHK
014399,000199:
014400,000200: 5562 40000 +0CHK CS A
014401,000201: 5563 10000 -0CHK CCS A
014402,000202: 5564 15546 TCF ERRORS
014403,000203: 5565 15546 TCF ERRORS
014404,000204: 5566 15546 TCF ERRORS
014405,000205: 5567 00002 TC Q
014406,000206:
014407,000207: 5570 40000 +1CHK CS A
014408,000208: 5571 10000 -1CHK CCS A
014409,000209: 5572 15535 TCF PRERRORS
014410,000210: 5573 15535 TCF PRERRORS
014411,000211: 5574 10000 CCS A
014412,000212: 5575 15535 TCF PRERRORS
014413,000213: 5576 00002 TC Q
014414,000214:
014415,000215: 5577 ENDSELFF EQUALS
014416,000216:
014417,000217: 20,2000 BANK 20
014418,000218:
014419,000219: 20,2000 02033 SELFADRS ADRES SELFCHK # SELFCHK RETURN ADDRESS. SHOULD BE PUT
014420,000220: # IN SELFRET WHEN GOING FROM SELFCHK TO
014421,000221: # SHOWSUM AND PUT IN SKEEP1 WHEN GOING
014422,000222: # FROM SHOWSUM TO SELF-CHECK.
014423,000223:
014424,000224: 20,2001 00006 SMODECHK EXTEND
014425,000225: 20,2002 23371 QXCH SKEEP1
014426,000226: 20,2003 04440 TC CHECKNJ # CHECK FOR NEW JOB
014427,000227: 20,2004 11361 CCS SMODE
014428,000228: 20,2005 02012 TC SOPTIONS
014429,000229: 20,2006 02003 TC SMODECHK +2 # TO BACKUP IDLE LOOP
014430,000230: 20,2007 02012 TC SOPTIONS
014431,000231: 20,2010 25366 INCR SCOUNT
014432,000232: 20,2011 01371 TC SKEEP1 # CONTINUE WITH SELF-CHECK
014433,000233:
014434,000234: 20,2012 65526 SOPTIONS AD S-7
014435,000235: 20,2013 00006 EXTEND
014436,000236: 20,2014 62017 BZMF +3 # FOR OPTIONS BELOW NINE.
014437,000237: 20,2015 04104 BNKOPTN TC POSTJUMP # GO TO ANOTHER BANK FOR OPTIONS ABOVE 8.
014438,000238: 20,2016 03015 CADR SBNKOPTN
014439,000239: 20,2017 25366 INCR SCOUNT # FOR OPTIONS BELOW NINE.
014440,000240: 20,2020 67673 AD S+7
014441,000241:
014442,000242: 20,2021 50000 INDEX A
014443,000243: 20,2022 02023 TC SOPTION1
014444,000244: 20,2023 02034 SOPTION1 TC TC+TCF
014445,000245: 20,2024 02730 SOPTION2 TC IN-OUT1
014446,000246: 20,2025 03004 SOPTION3 TC COUNTCHK
014447,000247: 20,2026 03100 SOPTION4 TC ERASCHK
014448,000248: 20,2027 03265 SOPTION5 TC ROPECHK
014449,000249: 20,2030 03531 SOPTION6 TC MPNMBRS
014450,000250: 20,2031 03620 SOPTION7 TC DVCHECK
014451,000251: 20,2032 01371 SOPTON10 TC SKEEP1 # CONTINUE WITH SELF-CHECK
014452,000252:
014453,000253: 20,2033 02001 SELFCHK TC SMODECHK # ** CHARLEY, COME IN HERE
014454,000254:
014455,000255: # TC+TCF CHECKS ALL OF THE PULSES OF TCF AND ALL OF THE PULSES OF TC
014456,000256: # EXCEPT ABILITY TO TC TO ERASABLE.
014457,000257: # ALSO FIRST TIME CS FIXED MEMORY IS USED
014458,000258: 20,2034 02036 TC+TCF TC +2
014459,000259: 20,2035 02043 TC CCSCHK
014460,000260: 20,2036 12040 TCF +2 # $ TCF FIXED MEMORY
014461,000261: 20,2037 05546 TC ERRORS
014462,000262: 20,2040 46176 CS S+3 # $ CS FIXED MEMORY
014463,000263: 20,2041 00002 TC Q # $
014464,000264: 20,2042 05546 TC ERRORS
014465,000265:
014466,000266: # CCSCHK CHECKS ALL OF CCS EXCEPT RB WG.
014467,000267: # ALSO CHECKS TS ERASABLE, CS SC, AND CS ERASABLE MEMORY.
014468,000268: 20,2043 10000 CCSCHK CCS A # $ CCS SC, C(A) = -3
014469,000269: 20,2044 05546 TC ERRORS
014470,000270: 20,2045 05546 TC ERRORS
014471,000271: 20,2046 02050 TC +2
014472,000272: 20,2047 05546 TC ERRORS
014473,000273: 20,2050 10000 CCS A # $ C(A) = +2, RESULT OF CCS -NUMBER
014474,000274: 20,2051 02055 TC +4
014475,000275: 20,2052 05546 TC ERRORS
014476,000276: 20,2053 05546 TC ERRORS
014477,000277: 20,2054 05546 TC ERRORS
014478,000278: 20,2055 55371 TS SKEEP1 # $ TS ERASABLE
014479,000279: 20,2056 11371 CCS SKEEP1 # $ CCS ERASABLE, C(A) = +1, RESULT OF
014480,000280: 20,2057 02063 TC +4 # CCS +NUMBER
014481,000281: 20,2060 05546 TC ERRORS
014482,000282: 20,2061 05546 TC ERRORS
014483,000283: 20,2062 05546 TC ERRORS
014484,000284: 20,2063 10000 CCS A # $ C(A) = +0, RESULT OF CCS +1, CHECKS CI
014485,000285: 20,2064 05546 TC ERRORS
014486,000286: 20,2065 02070 TC +3
014487,000287: 20,2066 05546 TC ERRORS
014488,000288: 20,2067 05546 TC ERRORS
014489,000289: 20,2070 40000 CS A # $ CS SC
014490,000290: 20,2071 10000 CCS A # $ C(A) = -0, RESULT OF CCS +0
014491,000291: 20,2072 05546 TC ERRORS
014492,000292: 20,2073 05546 TC ERRORS
014493,000293: 20,2074 05546 TC ERRORS
014494,000294: 20,2075 10000 CCS A # $ RESULT OF CCS -0
014495,000295: 20,2076 05546 TC ERRORS
014496,000296: 20,2077 02102 TC +3
014497,000297: 20,2100 05546 TC ERRORS
014498,000298: 20,2101 05546 TC ERRORS
014499,000299: 20,2102 41371 CS SKEEP1 # $ CS ERASABLE. ALSO CHECKS BACK INTO
014500,000300: 20,2103 05571 TC -1CHK # ERASABLE SEQUENCE.
014501,000301:
014502,000302: # BZMFCHK CHECKS ALL PULSES OF BZMF.
014503,000303: # ALSO CHECKS CA FIXED MEMORY.
014504,000304: 20,2104 37661 BZMFCHK CAF SBIT9 # $ CA FIXED MEMORY
014505,000305: 20,2105 00006 EXTEND
014506,000306: 20,2106 62127 BZMF ERRBZMF
014507,000307: 20,2107 40000 CS A
014508,000308: 20,2110 00006 EXTEND
014509,000309: 20,2111 62113 BZMF +2 # $
014510,000310: 20,2112 05546 TC ERRORS
014511,000311: 20,2113 35516 CA S+MAX
014512,000312: 20,2114 65504 AD S+1
014513,000313: 20,2115 00006 EXTEND
014514,000314: 20,2116 62130 BZMF ERRBZMF2 # $ + OVERFLOW, CHECK 01-0000
014515,000315: 20,2117 37675 CA S+ZERO
014516,000316: 20,2120 00006 EXTEND
014517,000317: 20,2121 62123 BZMF +2 # $
014518,000318: 20,2122 05546 TC ERRORS
014519,000319: 20,2123 40000 CS A
014520,000320: 20,2124 00006 EXTEND
014521,000321: 20,2125 62131 BZMF +4 # $
014522,000322: 20,2126 05546 TC ERRORS
014523,000323: 20,2127 05546 ERRBZMF TC ERRORS # FROM BZMF WITH +NON-ZERO
014524,000324: 20,2130 05546 ERRBZMF2 TC ERRORS # OVERFLOW WITH +0
014525,000325:
014526,000326: # RESTORE1 AND 2 CHECKS INSTRUCTIONS (WITH STAR) ABILITY TO READ BACK INTO
014527,000327: # ERASABLE MEMORY. NOT NORMALLY INTERESTED IN CONTENTS OF A REGISTER.
014528,000328: # FIRST TIME MANY INSTRUCTIONS ARE USED.
014529,000329: # RESTORE1 ALSO CHECKS INDEX (WITHOUT EXTRACODE) ERASABLE, CA ERASABLE,
014530,000330: # AND MASK ERASABLE.
014531,000331: 20,2131 35530 RESTORE1 CAF SRADRS # ADDRESS OF SR
014532,000332: 20,2132 55377 TS SKEEP7
014533,000333: 20,2133 35227 CA S8BITS # 00377
014534,000334: 20,2134 51377 NDX SKEEP7 # $ INDEX ERASABLE *
014535,000335: 20,2135 54000 TS 0000 # TS SR, C(SR) = 00177
014536,000336: 20,2136 10021 CCS SR # C(SR) = 00077 *
014537,000337: 20,2137 51377 NDX SKEEP7 # CHECKS C(SKEEP7) CORRECT
014538,000338: 20,2140 40000 CS 0000 # C(SR) = 00037
014539,000339: 20,2141 60021 AD SR # C(SR) = 00017 *
014540,000340: 20,2142 00006 EXTEND
014541,000341: 20,2143 20021 MSU SR # C(SR) = 00007 *
014542,000342: 20,2144 00006 EXTEND
014543,000343: 20,2145 60021 SU SR # C(SR) = 00003 *
014544,000344: 20,2146 30021 CA SR # $ C(SR) = +1, C(A) = +3, CA ERASABLE *
014545,000345: 20,2147 70021 MASK SR # $ B(SR) = C(SR) = +1, MASK ERASABLE *
014546,000346: 20,2150 05570 TC +1CHK
014547,000347: 20,2151 00006 EXTEND
014548,000348: 20,2152 70021 MP SR
014549,000349: 20,2153 00006 EXTEND
014550,000350: 20,2154 10021 DV SR
014551,000351: 20,2155 30021 CA SR # $ CA ERASABLE
014552,000352: 20,2156 05570 TC +1CHK # MAKES SURE MASK, MP, AND DV DO NOT EDIT.
014553,000353:
014554,000354: # RESTORE2 ALSO CHECKS XCH ERASABLE,INDEX (WITH EXTRACODE) ERASABLE AND
014555,000355: # FIXED MEMORY, DCS ERASABLE, CA SC, AND DCA ERASABLE.
014556,000356: 20,2157 35527 RESTORE2 CAF ADRS1 # ADDRESS OF SKEEP1
014557,000357: 20,2160 55376 TS SKEEP6
014558,000358: 20,2161 37677 CA S-1
014559,000359: 20,2162 55371 TS SKEEP1 # -1
014560,000360: 20,2163 40000 CS A
014561,000361: 20,2164 57371 XCH SKEEP1 # $ XCH ERASABLE, C(SKEEP1) = +1
014562,000362: 20,2165 57372 XCH SKEEP2 # $ XCH ERASABLE, C(SKEEP2) = -1
014563,000363: 20,2166 00006 EXTEND
014564,000364: 20,2167 51376 NDX SKEEP6 # $ NDX ERASABLE *
014565,000365: 20,2170 30001 DCA 0000 # DCA ERASABLE *
014566,000366: 20,2171 00006 EXTEND
014567,000367: 20,2172 55527 NDX ADRS1 # $ NDX FIXED MEMORY *
014568,000368: 20,2173 40001 DCS 0000 # $ DCS ERASABLE MEMORY *
014569,000369: 20,2174 05571 TC -1CHK # MAKES SURE DCS ERASABLE OK
014570,000370: 20,2175 30001 CA L # $ CA SC
014571,000371: 20,2176 05570 TC +1CHK
014572,000372: 20,2177 00006 EXTEND
014573,000373: 20,2200 51376 NDX SKEEP6 # MAKE SURE C(SKEEP6) IS STILL CORRECT
014574,000374: 20,2201 30001 DCA 0000 # $ DCA ERASABLE
014575,000375: 20,2202 05570 TC +1CHK
014576,000376: 20,2203 30001 CA L
014577,000377: 20,2204 05571 TC -1CHK
014578,000378:
014579,000379: # RESTORE3 CHECKS ABILITY TO RESTORE INSTRUCTIONS BACK INTO ERASABLE
014580,000380: # MEMORY. IT IS ONLY NECESSARY TO RESTORE ONE INSTRUCTION BECAUSE THE
014581,000381: # G REGISTER DOES NOT CHANGE.
014582,000382: # ALSO CHECKS TC TO ERASABLE MEMORY.
014583,000383: 20,2205 37653 RESTORE3 CA SBIT15 # CS
014584,000384: 20,2206 55371 TS SKEEP1 # 40000
014585,000385: 20,2207 35505 CA S+2 # TC Q
014586,000386: 20,2210 55372 TS SKEEP2
014587,000387: 20,2211 35504 CA S+1 # +1
014588,000388: 20,2212 01371 TC SKEEP1 # $ TC ERASABLE
014589,000389: 20,2213 05571 TC -1CHK # FIRST TIME BACK FROM ERASABLE.
014590,000390: 20,2214 01371 TC SKEEP1
014591,000391: 20,2215 05563 TC -0CHK # SECOND TIME BACK FROM ERASABLE.
014592,000392:
014593,000393: # BZFCHK CHECKS ALL PULSES OF BZF.
014594,000394: 20,2216 37674 BZFCHK CAF S+5
014595,000395: 20,2217 00006 EXTEND
014596,000396: 20,2220 12243 BZF ERRBZF1 # $
014597,000397: 20,2221 40000 CS A
014598,000398: 20,2222 00006 EXTEND
014599,000399: 20,2223 12244 BZF ERRBZF2 # $
014600,000400: 20,2224 35516 CA S+MAX
014601,000401: 20,2225 65504 AD S+1 # 01-00000
014602,000402: 20,2226 00006 EXTEND
014603,000403: 20,2227 12245 BZF ERRBZF3 # $
014604,000404: 20,2230 40000 CS A
014605,000405: 20,2231 00006 EXTEND
014606,000406: 20,2232 12246 BZF ERRBZF4 # $
014607,000407: 20,2233 37675 CAF S+ZERO
014608,000408: 20,2234 00006 EXTEND
014609,000409: 20,2235 12237 BZF +2 # $
014610,000410: 20,2236 05546 TC ERRORS
014611,000411: 20,2237 40000 CS A
014612,000412: 20,2240 00006 EXTEND
014613,000413: 20,2241 12247 BZF +6 # $
014614,000414: 20,2242 05546 TC ERRORS
014615,000415: 20,2243 05546 ERRBZF1 TC ERRORS # +NON-ZERO
014616,000416: 20,2244 05546 ERRBZF2 TC ERRORS # -NON-ZERO
014617,000417: 20,2245 05546 ERRBZF3 TC ERRORS # 01-00000
014618,000418: 20,2246 05546 ERRBZF4 TC ERRORS # 10-37777
014619,000419:
014620,000420: # DXCH+DIM CHECKS ALL PULSES OF DXCH AND DIM.
014621,000421: # ALSO CHECKS TS WITH OVERFLOW, TS SC, CA SC, AND AD ERASABLE.
014622,000422: 20,2247 35516 DXCH+DIM CA S+MAX
014623,000423: 20,2250 65505 AD S+2 # OVERFLOW WITH +1
014624,000424: 20,2251 55371 TS SKEEP1 # $ TS WITH OVERFLOW, +1
014625,000425: 20,2252 05546 TC ERRORS
014626,000426: 20,2253 40000 CS A
014627,000427: 20,2254 55372 TS SKEEP2
014628,000428: 20,2255 45516 CS S+MAX
014629,000429: 20,2256 54001 TS L # $ TS SC, 40000
014630,000430: 20,2257 40000 CS A # 37777
014631,000431: 20,2260 53372 DXCH SKEEP1 # $ DXCH ERASABLE
014632,000432: 20,2261 05570 TC +1CHK
014633,000433: 20,2262 30001 CA L # $ CA SC
014634,000434: 20,2263 05571 TC -1CHK
014635,000435: 20,2264 00006 EXTEND
014636,000436: 20,2265 27371 DIM SKEEP1 # $ DIM ERASABLE, DIM + NUMBER, 37776
014637,000437: 20,2266 00006 EXTEND
014638,000438: 20,2267 27372 DIM SKEEP2 # $ DIM - NUMBER, 40001
014639,000439: 20,2270 35516 CA S+MAX # 37777
014640,000440: 20,2271 61372 AD SKEEP2 # $ AD ERASABLE, +1
014641,000441: 20,2272 05570 TC +1CHK
014642,000442: 20,2273 45516 CS S+MAX # 40000
014643,000443: 20,2274 61371 AD SKEEP1 # -1
014644,000444: 20,2275 05571 TC -1CHK
014645,000445: 20,2276 35504 CA S+1 # +1
014646,000446: 20,2277 00006 EXTEND
014647,000447: 20,2300 26000 DIM A # $ DIM SC, DIM +1
014648,000448: 20,2301 00006 EXTEND
014649,000449: 20,2302 26000 DIM A # $ DIM -0
014650,000450: 20,2303 05563 TC -0CHK
014651,000451: 20,2304 00006 EXTEND
014652,000452: 20,2305 26000 DIM A # $ DIM +0
014653,000453: 20,2306 05562 TC +0CHK
014654,000454:
014655,000455: # DAS+INCR CHECKS ALL PULSES OF DAS AND INCR.
014656,000456: # ALSO CHECKS DCA FIXED, LXCH SC, DCA ERASABLE, AD ERASABLE, DCS FIXED,
014657,000457: # DCS ERASABLE, AND XCH SC.
014658,000458: 20,2307 37677 DAS+INCR CA S-1
014659,000459: 20,2310 54001 DAS++ TS L # -1
014660,000460: 20,2311 35505 CA S+2 # +2
014661,000461: 20,2312 20001 DAS A # $ DAS SC, C(A) = +4 AND C(L) = -2
014662,000462: 20,2313 67702 AD S-3 # $ AD FIXED MEMORY
014663,000463: 20,2314 05570 TC +1CHK
014664,000464: 20,2315 35504 CA S+1
014665,000465: 20,2316 60001 AD L # $ AD SC, -1
014666,000466: 20,2317 05571 TC -1CHK
014667,000467: # DAS WITH INTERFLOW IN LOW ORDER AND NET OVERFLOW
014668,000468: 20,2320 00006 DAS+- EXTEND
014669,000469: 20,2321 35517 DCA S+MAX # $DCA FIXED MEMORY
014670,000470: 20,2322 53374 DXCH SKEEP3 # 37777, 40000
014671,000471: 20,2323 37700 CA S-2
014672,000472: 20,2324 54001 TS L
014673,000473: 20,2325 36176 CA S+3 # C(A) = +3, C(L) = -2
014674,000474: 20,2326 21374 DAS SKEEP3 # $ DAS ERASABLE
014675,000475: 20,2327 22000 LXCH A # $ LXCH SC
014676,000476: 20,2330 05562 TC +0CHK
014677,000477: 20,2331 30001 CA L
014678,000478: 20,2332 05570 TC +1CHK
014679,000479: 20,2333 00006 EXTEND
014680,000480: 20,2334 31374 DCA SKEEP3 # $ DCA ERASABLE
014681,000481: 20,2335 22000 LXCH A # C(A) = -1, C(L) = +1
014682,000482: 20,2336 05571 TC -1CHK
014683,000483: 20,2337 30001 CA L
014684,000484: 20,2340 05570 TC +1CHK
014685,000485: # INCRCHK CHECKS ALL INCR PULSES EXCEPT WOVR.
014686,000486: 20,2341 25374 INCRCHK INCR SKEEP4 # $ INCR ERASABLE, -0
014687,000487: 20,2342 61374 AD SKEEP4 # $ AD ERASABLE
014688,000488: 20,2343 05563 TC -0CHK
014689,000489: 20,2344 24000 INCR A # $ INCR SC, +1
014690,000490: 20,2345 05570 TC +1CHK
014691,000491: # DAS WITH OVERFLOW IN LOW ORDER AND NET UNDERFLOW
014692,000492: 20,2346 00006 DAS-+ EXTEND
014693,000493: 20,2347 45517 DCS S+MAX # $ DCS FIXED MEMORY
014694,000494: 20,2350 53372 DXCH SKEEP1 # 40000, 37777
014695,000495: 20,2351 36176 CA S+3 # +3
014696,000496: 20,2352 54001 TS L
014697,000497: 20,2353 40000 CS A # -3
014698,000498: 20,2354 21372 DAS SKEEP1 # $
014699,000499: 20,2355 05571 TC -1CHK
014700,000500: 20,2356 00006 EXTEND
014701,000501: 20,2357 41372 DCS SKEEP1 # $ DCS ERASABLE (+1, -2)
014702,000502: 20,2360 56001 XCH L # $ XCH SC (-2, +1)
014703,000503: 20,2361 65504 AD S+1
014704,000504: 20,2362 05571 TC -1CHK
014705,000505: 20,2363 30001 CA L
014706,000506: 20,2364 05570 TC +1CHK
014707,000507:
014708,000508: # MPCHK CHECKS ALL PULSES OF MP, AUG, AND ADS.
014709,000509: 20,2365 35504 MPCHK CA S+1
014710,000510: 20,2366 00006 EXTEND
014711,000511: 20,2367 24000 AUG A # $ AUG SC, +2
014712,000512: 20,2370 55375 TS SKEEP5 # +2
014713,000513: 20,2371 40000 CS A
014714,000514: 20,2372 54002 TS Q # -2
014715,000515: 20,2373 40000 CS A
014716,000516: 20,2374 00006 MP++ EXTEND
014717,000517: 20,2375 75516 MP S+MAX # $ MP FIXED MEMORY, +1, 37776
014718,000518: 20,2376 60001 AD L # 37777
014719,000519: 20,2377 00006 MP+- EXTEND
014720,000520: 20,2400 70002 MP Q # $ MP SC, -1, 40001
014721,000521: 20,2401 26001 ADS L # $ ADS SC, 40000
014722,000522: 20,2402 65523 AD DVCON
014723,000523: 20,2403 05571 TC -1CHK
014724,000524: 20,2404 30001 CA L
014725,000525: 20,2405 00006 MP-+ EXTEND
014726,000526: 20,2406 71375 MP SKEEP5 # $ MP ERASABLE, -1, 40001
014727,000527: 20,2407 55376 TS SKEEP6
014728,000528: 20,2410 00006 EXTEND
014729,000529: 20,2411 25376 AUG SKEEP6 # $ AUG ERASABLE, -2
014730,000530: 20,2412 60001 AD L # 40000
014731,000531: 20,2413 00006 MP-- EXTEND
014732,000532: 20,2414 71376 MP SKEEP6 # $ +1, 37776
014733,000533: 20,2415 05570 TC +1CHK
014734,000534: 20,2416 40001 CS L # 40001
014735,000535: 20,2417 65523 AD DVCON
014736,000536: 20,2420 05563 TC -0CHK
014737,000537: 20,2421 35504 CA S+1
014738,000538: 20,2422 27376 ADS SKEEP6 # $ ADS ERASABLE, +1
014739,000539: 20,2423 05571 TC -1CHK
014740,000540: 20,2424 31376 CA SKEEP6
014741,000541: 20,2425 05571 TC -1CHK
014742,000542:
014743,000543: # DVCH AND DVQXCHK CHECK ALL OF PULSES OF DV AND QXCH.
014744,000544: # ALSO CHECKS TS WITH UNDERFLOW
014745,000545: 20,2426 37654 DVCHK CA SBIT14 # 20000
014746,000546: 20,2427 55371 TS SKEEP1
014747,000547: 20,2430 60000 AD A # OVERFLOW
014748,000548: 20,2431 65504 AD S+1
014749,000549: 20,2432 54001 TS L # $ TS SC WITH OVERFLOW, +1
014750,000550: 20,2433 05546 TC ERRORS
014751,000551: 20,2434 40000 CS A
014752,000552: 20,2435 55372 TS SKEEP2 # -1
014753,000553: 20,2436 37676 CA S-ZERO # -0
014754,000554: 20,2437 23371 LXCH SKEEP1 # $ LXCH ERASABLE
014755,000555: 20,2440 00006 DV++ EXTEND
014756,000556: 20,2441 11371 DV SKEEP1 # $ DV ERASABLE, C(A) = 20000, C(L) = +0
014757,000557: 20,2442 40000 CS A
014758,000558: 20,2443 22000 LXCH A
014759,000559: 20,2444 05562 TC +0CHK
014760,000560: 20,2445 00006 DV-- EXTEND
014761,000561: 20,2446 11372 DV SKEEP2 # $ 20000, +0
014762,000562: 20,2447 55374 TS SKEEP4 # 20000
014763,000563: 20,2450 40000 CS A
014764,000564: 20,2451 55373 TS SKEEP3 # -(20000)
014765,000565: 20,2452 67654 AD SBIT14
014766,000566: 20,2453 05563 TC -0CHK
014767,000567: 20,2454 30001 CA L
014768,000568: 20,2455 05563 TC -0CHK
014769,000569: 20,2456 35516 DV+- CA S+MAX
014770,000570: 20,2457 54001 TS L
014771,000571: 20,2460 35520 CA S13BITS
014772,000572: 20,2461 00006 EXTEND
014773,000573: 20,2462 11373 DV SKEEP3 # $ -(37777), +(17777)
014774,000574: 20,2463 56001 XCH L
014775,000575: 20,2464 40000 CS A
014776,000576: 20,2465 00006 DV-+ EXTEND
014777,000577: 20,2466 11374 DV SKEEP4 # $ -(37777), -(17777)
014778,000578: 20,2467 65523 AD DVCON
014779,000579: 20,2470 05571 TC -1CHK
014780,000580: 20,2471 35516 CA S+MAX
014781,000581: 20,2472 56001 XCH L # ALSO PUTS 37777 IN L FOR DV-+,-
014782,000582: 20,2473 67654 AD SBIT14
014783,000583: 20,2474 05570 TC +1CHK
014784,000584: 20,2475 45520 DV-+,+ CS S13BITS # -(17777)
014785,000585: 20,2476 00006 EXTEND
014786,000586: 20,2477 11374 DV SKEEP4
014787,000587: 20,2500 60001 AD L # -(37775)
014788,000588: 20,2501 65523 AD DVCON
014789,000589: 20,2502 05570 TC +1CHK
014790,000590: 20,2503 56001 XCH L
014791,000591: 20,2504 05571 TC -1CHK # ALSO PUTS +0 IN L FOR DVQXCH
014792,000592: 20,2505 45523 DVQXCHK CS DVCON
014793,000593: 20,2506 54002 TS Q # 40001
014794,000594: 20,2507 40000 CS A
014795,000595: 20,2510 00006 EXTEND
014796,000596: 20,2511 10002 DV Q # $ DV SC, -(37777), +(37776)
014797,000597: 20,2512 00006 EXTEND
014798,000598: 20,2513 22001 QXCH L # $ QXCH SC, C(L) = 40001, C(Q) = 37776
014799,000599: 20,2514 60002 AD Q
014800,000600: 20,2515 05571 TC -1CHK
014801,000601: 20,2516 30001 CA L
014802,000602: 20,2517 65516 AD S+MAX
014803,000603: 20,2520 05570 TC +1CHK
014804,000604: 20,2521 00006 EXTEND
014805,000605: 20,2522 23371 QXCH SKEEP1 # $ QXCH ERAS., C(Q) = +1, C(SKEEP1) = +3
014806,000606: 20,2523 30002 CA Q
014807,000607: 20,2524 05570 TC +1CHK
014808,000608: 20,2525 41371 CS SKEEP1 # -3
014809,000609: 20,2526 65505 AD S+2
014810,000610: 20,2527 05571 TC -1CHK
014811,000611:
014812,000612: # MSUCHK CHECKS ALL PULSES OF MSU EXCEPT RB WG.
014813,000613: 20,2530 37675 MSUCHK CA S+ZERO
014814,000614: 20,2531 55371 TS SKEEP1 # +0
014815,000615: 20,2532 40000 CS A
014816,000616: 20,2533 55372 TS SKEEP2 # -0
014817,000617: 20,2534 00006 EXTEND
014818,000618: 20,2535 20000 MSU A # $ MSU SC, +0
014819,000619: 20,2536 05562 TC +0CHK
014820,000620: 20,2537 00006 EXTEND
014821,000621: 20,2540 21372 MSU SKEEP2 # $ MSU ERASABLE, +1
014822,000622: 20,2541 05570 TC +1CHK
014823,000623: 20,2542 00006 EXTEND
014824,000624: 20,2543 35517 DCA S+MAX
014825,000625: 20,2544 00006 EXTEND
014826,000626: 20,2545 20001 MSU L # $ CHECKS RUS WA, ALSO -1 FROM NEG. NO.
014827,000627: 20,2546 54000 TS A
014828,000628: 20,2547 02551 TC +2
014829,000629: 20,2550 05546 TC ERRORS
014830,000630: 20,2551 05571 TC -1CHK
014831,000631:
014832,000632: # MASKCHK FINISHES CHECKING MASK INSTRUCTION.
014833,000633: 20,2552 37673 MASKCHK CA S+7
014834,000634: 20,2553 54001 TS L
014835,000635: 20,2554 75526 MASK S-7 # $ MASK FIXED MEMORY
014836,000636: 20,2555 05562 TC +0CHK
014837,000637: 20,2556 35504 CA S+1
014838,000638: 20,2557 70001 MASK L # $ MASK SC
014839,000639: 20,2560 05570 TC +1CHK
014840,000640:
014841,000641: # NDX+SU FINISHES CHECKING BOTH INDEX INSTRUCTIONS. ALSO CHECKS ALL OF SU
014842,000642: # EXCEPT RB WG.
014843,000643: 20,2561 35504 NDX+SU CA S+1
014844,000644: 20,2562 54001 TS L
014845,000645: 20,2563 55371 TS SKEEP1
014846,000646: 20,2564 50000 NDX A # $ NDX SC
014847,000647: 20,2565 60000 AD 0000 # AD L, +2
014848,000648: 20,2566 00006 EXTEND
014849,000649: 20,2567 61371 SU SKEEP1 # $ SU ERASABLE
014850,000650: 20,2570 05570 TC +1CHK
014851,000651: 20,2571 00006 EXTEND
014852,000652: 20,2572 50001 NDX L # $ NDX SC
014853,000653: 20,2573 60000 SU 0000 # $ SU SC, SU L
014854,000654: 20,2574 05571 TC -1CHK
014855,000655:
014856,000656: # D--SC CHECKS DCS SC, DXCH SC, AND DCA SC.
014857,000657: 20,2575 35505 D--SC CA S+2
014858,000658: 20,2576 54001 TS L # +2
014859,000659: 20,2577 35504 CA S+1
014860,000660: 20,2600 00006 EXTEND
014861,000661: 20,2601 40001 DCS A # $ DCS SC, C(L) = -2
014862,000662: 20,2602 05571 TC -1CHK
014863,000663: # AFTER DXCH C(A) = B(Q) = +3, C(L) = B(A) = +0, C(Q) = B(L) = -1.
014864,000664: 20,2603 52002 DXCH L # $ DXCH SC
014865,000665: 20,2604 55373 TS SKEEP3
014866,000666: 20,2605 60002 AD Q
014867,000667: 20,2606 05570 TC +1CHK
014868,000668: 20,2607 30001 CA L
014869,000669: 20,2610 05562 TC +0CHK
014870,000670: 20,2611 37677 CA S-1
014871,000671: 20,2612 54002 TS Q
014872,000672: 20,2613 40000 CS A
014873,000673: 20,2614 00006 EXTEND
014874,000674: # AFTER DCA C(A) = C(L) = C(Q) = B(Q) = -1.
014875,000675: 20,2615 30002 DCA L # $ DCA SC
014876,000676: 20,2616 60002 AD Q
014877,000677: 20,2617 61373 AD SKEEP3
014878,000678: 20,2620 05570 TC +1CHK
014879,000679: 20,2621 30001 CA L
014880,000680: 20,2622 05571 TC -1CHK
014881,000681:
014882,000682: # D--LCHK CHECKS THAT OVERFLOW IS LOST IN PROCESS OF GOING THROUGH L REG.
014883,000683: # ALSO CHECKS THAT Q WILL HOLD 16 BITS
014884,000684: 20,2623 37700 D--LCHK CA S-2
014885,000685: 20,2624 54002 TS Q
014886,000686: 20,2625 35517 CA S-MAX
014887,000687: 20,2626 26002 ADS Q
014888,000688: 20,2627 40002 CS Q
014889,000689: 20,2630 54000 TS A
014890,000690: 20,2631 05546 TC ERRORS
014891,000691: 20,2632 00006 EXTEND
014892,000692: 20,2633 30002 DCA L
014893,000693: 20,2634 54000 TS A
014894,000694: 20,2635 02637 TC +2
014895,000695: 20,2636 05546 TC ERRORS
014896,000696: 20,2637 05571 TC -1CHK
014897,000697:
014898,000698: # CHECKS OVERFLOW, UNDERFLOW,END-AROUND-CARRY, AND SIGN CHANGE OF ADDER.
014899,000699: # ALSO CHECKS ADS SC WITH OVERFLOW AND TS A WITH UNDERFLOW
014900,000700: 20,2640 37654 ADDRCHK CA SBIT14 # 20000
014901,000701: 20,2641 54002 TS Q
014902,000702: 20,2642 26002 ADS Q # $ ADS SC, OVERFLOW
014903,000703: 20,2643 26002 ADS Q # UNDERFLOW
014904,000704: 20,2644 54000 TS A # $ TS SC WITH UNDERFLOW
014905,000705: 20,2645 05546 TC ERRORS
014906,000706: 20,2646 26002 ADS Q
014907,000707: 20,2647 05570 TC +1CHK
014908,000708:
014909,000709: # RUPTCHK CHECKS THAT INTERRUPT DOES NOT OCCUR WHILE OVERFLOW OR UNDERFLOW
014910,000710: # IS IN THE A REGISTER. ALSO CHECKS THAT INHINT RELINT WORK PROPERLY.
014911,000711: 20,2650 00004 RUPTCHK INHINT
014912,000712: 20,2651 37675 CA S+ZERO
014913,000713: 20,2652 54015 TS ZRUPT
014914,000714: 20,2653 00003 RELINT
014915,000715: 20,2654 60027 AD TIME4
014916,000716: 20,2655 55371 TS SKEEP1
014917,000717: 20,2656 41371 TENMS CS SKEEP1
014918,000718: 20,2657 60027 AD TIME4 # WAIT FOR NEXT TIME4 INCREMENT
014919,000719: 20,2660 00006 EXTEND
014920,000720: 20,2661 12656 BZF TENMS
014921,000721: 20,2662 00004 INHINT
014922,000722: 20,2663 30015 CA ZRUPT
014923,000723: 20,2664 00006 EXTEND
014924,000724: 20,2665 12667 BZF +2 # NO INTERRUPT.
014925,000725: 20,2666 02650 TC RUPTCHK # THERE WAS AN INTERRUPT. START AGAIN.
014926,000726: 20,2667 35504 CAF S+1 # 2 1/2 MS UNTILE NEXT T3 INTERRUPT.
014927,000727: 20,2670 04517 TC WAITLIST
014928,000728: 20,2671 E3,1400 EBANK= LST1
014929,000729: 20,2671 02714 40003 2CADR TSKADRS
014930,000730:
014931,000731: 20,2673 35516 CA S+MAX
014932,000732: 20,2674 65522 AD OVCON # CONTROLS TIME SPENT IN OF-UF LOOP
014933,000733: 20,2675 00003 RELINT
014934,000734: 20,2676 40000 WAIT CS A
014935,000735: 20,2677 10000 CCS A
014936,000736: 20,2700 02704 TC INHNTCHK
014937,000737: 20,2701 02710 RUPTCON ADRES C(BRUPT)
014938,000738: 20,2702 65505 AD S+2
014939,000739: 20,2703 02676 TC WAIT
014940,000740: 20,2704 00004 INHNTCHK INHINT # T3 RUPT SHOULD BE WAITING
014941,000741: 20,2705 55375 TS SKEEP5
014942,000742: 20,2706 05546 TC ERRORS
014943,000743: 20,2707 00003 RELINT
014944,000744: 20,2710 40015 C(BRUPT) CS ZRUPT # INTERRUPT SHOULD HAPPEN HERE
014945,000745: 20,2711 00006 EXTEND
014946,000746: 20,2712 12720 BZF +6 # MAKES SURE AN INTERRUPT DID OCCUR
014947,000747: 20,2713 02721 TC INSTCHK # AN INTERRUPT. END OF RUPTCHK
014948,000748: 20,2714 40015 TSKADRS CS ZRUPT
014949,000749: 20,2715 62701 AD RUPTCON
014950,000750: 20,2716 05571 TC -1CHK
014951,000751: 20,2717 04563 TC TASKOVER
014952,000752: 20,2720 05546 TC ERRORS # NO INTERRUPT
014953,000753:
014954,000754: # Go perform the (bugfixed) instruction-level tests from Retread 44.
014955,000755: 20,2721 04440 INSTCHK TC CHECKNJ # CHECK FOR NEW JOB
014956,000756: 20,2722 04104 TC POSTJUMP
014957,000757: 20,2723 44000 CADR TCCHK
014958,000758:
014959,000759: # Retread tests are done. Go perform custom extended tests.
014960,000760: 20,2724 04440 INSTDONE TC CHECKNJ
014961,000761: 20,2725 04104 TC POSTJUMP
014962,000762: 20,2726 50000 CADR EXTTESTS
014963,000763:
014964,000764: # All done checking instructions out. Move on.
014965,000765: 20,2727 02001 EXTTDONE TC SMODECHK
014966,000766:
014967,000767: # IN-OUT1 CHECKS ALL PULSES OF WRITE AND READ
014968,000768: 20,2730 37677 IN-OUT1 CA S-1
014969,000769: 20,2731 00006 WRITECHK EXTEND
014970,000770: 20,2732 01002 WRITE Q
014971,000771: 20,2733 22002 LXCH Q # PUT C(Q) IN L
014972,000772: 20,2734 05571 TC -1CHK
014973,000773: 20,2735 00006 READCHK EXTEND # C(L) = 77776
014974,000774: 20,2736 00001 READ L
014975,000775: 20,2737 05571 TC -1CHK
014976,000776: 20,2740 30001 CA L
014977,000777: 20,2741 05571 TC -1CHK
014978,000778:
014979,000779: # IN-OUT2 CHECKS ALL PULSES OF ROR AND WOR
014980,000780: 20,2742 46176 IN-OUT2 CS S+3
014981,000781: 20,2743 54001 RORCHK TS L # 77774
014982,000782: 20,2744 35523 CA DVCON # 37776
014983,000783: 20,2745 00006 EXTEND
014984,000784: 20,2746 04001 ROR L # $ ROR, -1
014985,000785: 20,2747 05571 TC -1CHK
014986,000786: 20,2750 35523 WORCHK CA DVCON # C(L) STILL 77774
014987,000787: 20,2751 00006 EXTEND
014988,000788: 20,2752 05001 WOR L # $ WOR, -1
014989,000789: 20,2753 05571 TC -1CHK
014990,000790: 20,2754 30001 CA L
014991,000791: 20,2755 05571 TC -1CHK
014992,000792:
014993,000793: # IN-OUT3 CHECKS ALL PULSES OF RAND, WAND, AND RXOR
014994,000794: 20,2756 45523 IN-OUT3 CS DVCON
014995,000795: 20,2757 54001 RANDCHK TS L # 40001
014996,000796: 20,2760 35520 CA S13BITS # 17777
014997,000797: 20,2761 00006 EXTEND
014998,000798: 20,2762 02001 RAND L # $ RAND, +1
014999,000799: 20,2763 05570 TC +1CHK
015000,000800: 20,2764 35520 WANDCHK CA S13BITS # C(L) STILL 40001
015001,000801: 20,2765 00006 EXTEND
015002,000802: 20,2766 03001 WAND L # $ WAND, +1
015003,000803: 20,2767 05570 TC +1CHK
015004,000804: 20,2770 47674 CS S+5
015005,000805: 20,2771 56001 XCH L # ALSO PUT -5 IN L FOR RXORCHK
015006,000806: 20,2772 05570 TC +1CHK
015007,000807: 20,2773 36173 RXORCHK CA S+6
015008,000808: 20,2774 00006 EXTEND
015009,000809: 20,2775 06001 RXOR L # $ RXOR, -3
015010,000810: 20,2776 65505 AD S+2
015011,000811: 20,2777 05571 TC -1CHK
015012,000812: 20,3000 30001 CA L
015013,000813: 20,3001 67667 AD S+4
015014,000814: 20,3002 05571 TC -1CHK
015015,000815:
015016,000816: 20,3003 02001 TC SMODECHK
015017,000817:
015018,000818: # COUNTCHK COUNTS UP 14 BIT NUMBER WITH SIGN.
015019,000819: # TAKES APPROXIMATELY 8.7 SECONDS.
015020,000820: # ** PUT IN CCS NEWJOB FOR ROPE.
015021,000821: 20,3004 00006 COUNTCHK EXTEND
015022,000822: 20,3005 35517 DCA S+MAX
015023,000823: 20,3006 53377 DXCH SKEEP6 # PUT 37777 IN SKEEP6 AND 40000 IN SKEEP7
015024,000824: 20,3007 31376 +LOOP CA SKEEP6
015025,000825: 20,3010 56002 XCH Q
015026,000826: 20,3011 00006 EXTEND
015027,000827: 20,3012 40002 DCS L
015028,000828: 20,3013 10000 CCS A
015029,000829: 20,3014 03023 TC -NMBR
015030,000830: 20,3015 03030 TC ENDCOUNT
015031,000831: 20,3016 55376 TS SKEEP6
015032,000832: 20,3017 61377 AD SKEEP7
015033,000833: 20,3020 05571 TC -1CHK
015034,000834: 20,3021 25377 INCR SKEEP7
015035,000835: 20,3022 03007 TC +LOOP
015036,000836: 20,3023 60001 -NMBR AD L
015037,000837: 20,3024 05571 TC -1CHK
015038,000838: 20,3025 04440 TC CHECKNJ # CHECK FOR NEW JOB
015039,000839: 20,3026 41376 CS SKEEP6
015040,000840: 20,3027 03010 TC +LOOP +1
015041,000841: 20,3030 31377 ENDCOUNT CA SKEEP7 # -0
015042,000842: 20,3031 61376 AD SKEEP6 # SKEEP6 SHOULD BE +0
015043,000843: 20,3032 05563 TC -0CHK
015044,000844:
015045,000845: # O-UFLOW COUNTS DOWN OVERFLOW AND UNDERFLOW NUMBERS.
015046,000846: # TAKES APPROXIMATELY 10.8 SECONDS
015047,000847: 20,3033 35517 O-UFLOW CA S-MAX
015048,000848: 20,3034 55375 TS SKEEP5 # 40000
015049,000849: 20,3035 40000 CS A
015050,000850: 20,3036 00004 OFLOOP INHINT
015051,000851: 20,3037 65516 AD S+MAX
015052,000852: 20,3040 65504 AD S+1
015053,000853: 20,3041 56002 XCH Q
015054,000854: 20,3042 10002 CCS Q
015055,000855: 20,3043 03060 TC -NMBRS
015056,000856: 20,3044 05546 TC ERRORS # CAN PUT IN CONSTANT
015057,000857: 20,3045 55373 TS SKEEP3
015058,000858: 20,3046 05546 TC ERRORS
015059,000859: 20,3047 31373 CA SKEEP3
015060,000860: 20,3050 61375 AD SKEEP5
015061,000861: 20,3051 05571 TC -1CHK
015062,000862: 20,3052 00003 RELINT
015063,000863: 20,3053 04440 TC CHECKNJ # CHECK FOR NEW JOB
015064,000864: 20,3054 31374 CA SKEEP4
015065,000865: 20,3055 00006 EXTEND
015066,000866: 20,3056 27375 DIM SKEEP5
015067,000867: 20,3057 03036 TC OFLOOP
015068,000868: 20,3060 55374 -NMBRS TS SKEEP4
015069,000869: 20,3061 03071 TC ENDOFUF
015070,000870: 20,3062 31374 CA SKEEP4
015071,000871: 20,3063 61375 AD SKEEP5
015072,000872: 20,3064 05571 TC -1CHK
015073,000873: 20,3065 31375 CA SKEEP5
015074,000874: 20,3066 65517 AD S-MAX
015075,000875: 20,3067 67677 AD S-1
015076,000876: 20,3070 03041 TC OFLOOP +3
015077,000877: 20,3071 31375 ENDOFUF CA SKEEP5
015078,000878: 20,3072 05563 TC -0CHK
015079,000879: 20,3073 41374 CS SKEEP4
015080,000880: 20,3074 65523 AD DVCON
015081,000881: 20,3075 05571 TC -1CHK
015082,000882: 20,3076 00003 RELINT
015083,000883:
015084,000884: 20,3077 02001 TC SMODECHK
015085,000885:
015086,000886: # SKEEP7 HOLDS LOWEST OF TWO ADDRESSES BEING CHECKED.
015087,000887: # SKEEP6 HOLDS B(X+1).
015088,000888: # SKEEP5 HOLDS B(X).
015089,000889: # SKEEP4 CONTROLS CHECKING OF NON-SWITCHABLE ERASABLE MEMORY WITH
015090,000890: # BANK NUMBERS IN EB.
015091,000891: # SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS).
015092,000892: # SKEEP2 HOLDS C(EBANK) DURING CHECKNJ
015093,000893: # ERASCHK TAKES APPROXMATELY 7 SECONDS
015094,000894: 20,3100 35504 ERASCHK CA S+1
015095,000895: 20,3101 55374 TS SKEEP4
015096,000896: 20,3102 37675 0EBANK CA S+ZERO
015097,000897: 20,3103 54003 TS EBANK
015098,000898: 20,3104 35512 CA ERASCON3 # 01461
015099,000899: 20,3105 55377 TS SKEEP7 # STARTING ADDRESS
015100,000900: 20,3106 37701 CA S10BITS # 01777
015101,000901: 20,3107 55373 TS SKEEP3 # LAST ADDRESS CHECKED
015102,000902: 20,3110 03130 TC ERASLOOP
015103,000903:
015104,000904: 20,3111 35511 E134567B CA ERASCON6 # 01400
015105,000905: 20,3112 55377 TS SKEEP7 # STARTING ADDRESS
015106,000906: 20,3113 37701 CA S10BITS # 01777
015107,000907: 20,3114 55373 TS SKEEP3 # LAST ADDRESS CHECKED
015108,000908: 20,3115 03130 TC ERASLOOP
015109,000909:
015110,000910: 20,3116 35511 2EBANK CA ERASCON6 # 01400
015111,000911: 20,3117 55377 TS SKEEP7 # STARTING ADDRESS
015112,000912: 20,3120 35513 CA ERASCON4 # 01774
015113,000913: 20,3121 55373 TS SKEEP3 # LAST ADDRESS CHECKED
015114,000914: 20,3122 03130 TC ERASLOOP
015115,000915:
015116,000916: 20,3123 55374 NOEBANK TS SKEEP4 # +0
015117,000917: 20,3124 35507 CA ERASCON1 # 00061
015118,000918: 20,3125 55377 TS SKEEP7 # STARTING ADDRESS
015119,000919: 20,3126 35510 CA ERASCON2 # 01374
015120,000920: 20,3127 55373 TS SKEEP3 # LAST ADDRESS CHECKED
015121,000921:
015122,000922: 20,3130 00004 ERASLOOP INHINT
015123,000923: 20,3131 00006 EXTEND
015124,000924: 20,3132 51377 INDEX SKEEP7
015125,000925: 20,3133 30001 DCA 0000
015126,000926: 20,3134 53376 DXCH SKEEP5 # STORES C(X) AND C(X-1) IN SKEEP6 AND 5.
015127,000927: 20,3135 31377 CA SKEEP7
015128,000928: 20,3136 55111 TS ERESTORE # IF RESTART, RESTORE C(X) AND C(X+1)
015129,000929: 20,3137 54001 TS L
015130,000930: 20,3140 24001 INCR L
015131,000931: 20,3141 50000 NDX A
015132,000932: 20,3142 52001 DXCH 0000 # PUTS OWN ADDRESS IN X AND X +1
015133,000933: 20,3143 51377 NDX SKEEP7
015134,000934: 20,3144 40001 CS 0001 # CS X+1
015135,000935: 20,3145 51377 NDX SKEEP7
015136,000936: 20,3146 60000 AD 0000 # AD X
015137,000937: 20,3147 05571 TC -1CHK
015138,000938: 20,3150 31111 CA ERESTORE # HAS ERASABLE BEEN RESTORED
015139,000939: 20,3151 00006 EXTEND
015140,000940: 20,3152 13176 BZF ELOOPFIN # YES, EXIT ERASLOOP.
015141,000941: 20,3153 00006 EXTEND
015142,000942: 20,3154 51377 NDX SKEEP7
015143,000943: 20,3155 40001 DCS 0000 # COMPLEMENT OF ADDRESS OF X AND X+1
015144,000944: 20,3156 51377 NDX SKEEP7
015145,000945: 20,3157 52001 DXCH 0000 # PUT COMPLEMENT OF ADDRESS OF X AND X+1
015146,000946: 20,3160 51377 NDX SKEEP7
015147,000947: 20,3161 40000 CS 0000 # CS X
015148,000948: 20,3162 51377 NDX SKEEP7
015149,000949: 20,3163 60001 AD 0001 # AD X+1
015150,000950: 20,3164 05571 TC -1CHK
015151,000951: 20,3165 31111 CA ERESTORE # HAS ERASABLE BEEN RESTORED
015152,000952: 20,3166 00006 EXTEND
015153,000953: 20,3167 13176 BZF ELOOPFIN # YES, EXIT ERASLOOP.
015154,000954: 20,3170 00006 EXTEND
015155,000955: 20,3171 31376 DCA SKEEP5
015156,000956: 20,3172 51377 NDX SKEEP7
015157,000957: 20,3173 52001 DXCH 0000 # PUT B(X) AND B(X+1) BACK INTO X AND X+1
015158,000958: 20,3174 37675 CA S+ZERO
015159,000959: 20,3175 55111 TS ERESTORE # IF RESTART, DO NOT RESTORE C(X), C(X+1)
015160,000960: 20,3176 00003 ELOOPFIN RELINT
015161,000961: 20,3177 30003 CA EBANK # STORES C(EBANK)
015162,000962: 20,3200 55372 TS SKEEP2
015163,000963: 20,3201 04440 TC CHECKNJ # CHECK FOR NEW JOB
015164,000964: 20,3202 31372 CA SKEEP2 # REPLACES B(EBANK)
015165,000965: 20,3203 54003 TS EBANK
015166,000966: 20,3204 25377 INCR SKEEP7
015167,000967: 20,3205 41377 CS SKEEP7
015168,000968: 20,3206 61373 AD SKEEP3
015169,000969: 20,3207 00006 EXTEND
015170,000970: 20,3210 13212 BZF +2
015171,000971: 20,3211 03130 TC ERASLOOP # GO TO NEXT ADDRESS IN SAME BANK
015172,000972: 20,3212 11374 CCS SKEEP4
015173,000973: 20,3213 03123 TC NOEBANK
015174,000974: 20,3214 25374 INCR SKEEP4 # PUT +1 IN SKEEP4
015175,000975: 20,3215 30003 CA EBANK
015176,000976: 20,3216 67661 AD SBIT9
015177,000977: 20,3217 54003 TS EBANK
015178,000978: 20,3220 65525 AD ERASCON5 # 76777, CHECK FOR BANK E3
015179,000979: 20,3221 00006 EXTEND
015180,000980: 20,3222 13116 BZF 2EBANK
015181,000981: 20,3223 10003 CCS EBANK
015182,000982: 20,3224 03111 TC E134567B # GO TO EBANKS 1,3,4,5,6, AND 7
015183,000983: 20,3225 35511 CA ERASCON6 # END OF ERASCHK
015184,000984: 20,3226 54003 TS EBANK
015185,000985: # CNTRCHK PERFORMS A CS OF ALL REGISTERS FROM OCT. 60 THROUGH OCT. 10.
015186,000986: # INCLUDED ARE ALL COUNTERS, T6-1, CYCLE AND SHIFT, AND ALL RUPT REGISTERS
015187,000987: 20,3227 35506 CNTRCHK CAF CNTRCON # 00050
015188,000988: 20,3230 55372 CNTRLOOP TS SKEEP2
015189,000989: 20,3231 67666 AD SBIT4 # +10 OCTAL
015190,000990: 20,3232 50000 INDEX A
015191,000991: 20,3233 40000 CS 0000
015192,000992: 20,3234 11372 CCS SKEEP2
015193,000993: 20,3235 03230 TC CNTRLOOP
015194,000994:
015195,000995: # CYCLSHFT CHECKS THE CYCLE AND SHIFT REGISTERS
015196,000996: 20,3236 35521 CYCLSHFT CA CONC+S1 # 25252
015197,000997: 20,3237 54020 TS CYR # C(CYR) = 12525
015198,000998: 20,3240 54022 TS CYL # C(CYL) = 52524
015199,000999: 20,3241 54021 TS SR # C(SR) = 12525
015200,001000: 20,3242 54023 TS EDOP # C(EDOP) = 00125
015201,001001: 20,3243 60020 AD CYR # 37777 C(CYR) = 45252
015202,001002: 20,3244 60022 AD CYL # 00-12524 C(CYL) = 25251
015203,001003: 20,3245 60021 AD SR # 00-25251 C(SR) = 05252
015204,001004: 20,3246 60023 AD EDOP # 00-25376 C(EDOP) = +0
015205,001005: 20,3247 65524 AD CONC+S2 # C(CONC+S2) = 52400
015206,001006: 20,3250 05571 TC -1CHK
015207,001007: 20,3251 60020 AD CYR # 45252
015208,001008: 20,3252 60022 AD CYL # 72523
015209,001009: 20,3253 60021 AD SR # 77775
015210,001010: 20,3254 60023 AD EDOP # 77775
015211,001011: 20,3255 65504 AD S+1 # 77776
015212,001012: 20,3256 05571 TC -1CHK
015213,001013:
015214,001014: 20,3257 25367 INCR SCOUNT +1
015215,001015: 20,3260 02001 TC SMODECHK
015216,001016: 20,3261 03265 TC ROPECHK
015217,001017:
015218,001018: # SKEEP1 HOLDS SUM
015219,001019: # SKEEP2 HOLDS PRESENT CONTENTS OF ADDRESS IN ROPECHK AND SHOWSUM ROUTINES
015220,001020: # SKEEP2 HOLDS BANK NUMBER IN LOW ORDER BITS DURING SHOWSUM DISPLAY
015221,001021: # SKEEP3 HOLDS PRESENT ADDRESS (00000 TO 01777 IN COMMON FIXED BANKS)
015222,001022: # (04000 TO 07777 IN FXFX BANKS)
015223,001023: # SKEEP3 HOLDS BUGGER WORD DURING SHOWSUM DISPLAY
015224,001024: # SKEEP4 HOLDS BANK NUMBER AND SUPER BANK NUMBER
015225,001025: # SKEEP5 COUNTS 2 SUCCESSIVE TC SELF WORDS
015226,001026: # SKEEP6 CONTROLS ROPECHK OR SHOWSUM OPTION
015227,001027: # SKEEP7 CONTROLS WHEN ROUNTINE IS IN COMMON FIXED OR FIXED FIXED BANKS
015228,001028:
015229,001029: 20,3262 05276 STSHOSUM TC GRABDSP
015230,001030: 20,3263 05304 TC PREGBSY
015231,001031: 20,3264 03267 TC +3
015232,001032: 20,3265 37676 ROPECHK CA S-ZERO
015233,001033: 20,3266 55376 TS SKEEP6 # ROPECHK OPTION
015234,001034: 20,3267 37675 CA S+ZERO
015235,001035: 20,3270 55374 TS SKEEP4 # BANK NUMBER
015236,001036: 20,3271 35504 CA S+1
015237,001037: 20,3272 55377 COMMFX TS SKEEP7
015238,001038: 20,3273 37675 CA S+ZERO
015239,001039: 20,3274 55371 TS SKEEP1
015240,001040: 20,3275 55373 TS SKEEP3
015241,001041: 20,3276 35504 CA S+1
015242,001042: 20,3277 55375 TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS
015243,001043: 20,3300 31374 COMADRS CA SKEEP4
015244,001044: 20,3301 54001 TS L # TO SET SUPER BANK
015245,001045: 20,3302 75220 MASK HI5
015246,001046: 20,3303 61373 AD SKEEP3
015247,001047: 20,3304 04124 TC SUPDACAL # SUPER DATA CALL
015248,001048: 20,3305 03330 TC ADSUM
015249,001049: 20,3306 67657 AD SBIT11 # 02000
015250,001050: 20,3307 03341 TC ADRSCHK
015251,001051:
015252,001052: 20,3310 40000 FXFX CS A
015253,001053: 20,3311 55377 TS SKEEP7
015254,001054: 20,3312 00006 EXTEND
015255,001055: 20,3313 13316 BZF +3
015256,001056: 20,3314 37656 CA SBIT12 # 04000, STARTING ADDRESS OF BANK 02
015257,001057: 20,3315 03317 TC +2
015258,001058: 20,3316 34467 CA SBNK03 # 06000, STARTING ADDRESS OF BANK 03
015259,001059: 20,3317 55373 TS SKEEP3
015260,001060: 20,3320 37675 CA S+ZERO
015261,001061: 20,3321 55371 TS SKEEP1
015262,001062: 20,3322 35504 CA S+1
015263,001063: 20,3323 55375 TS SKEEP5 # COUNTS DOWN 2 TC SELF WORDS
015264,001064: 20,3324 51373 FXADRS INDEX SKEEP3
015265,001065: 20,3325 30000 CA 0000
015266,001066: 20,3326 03330 TC ADSUM
015267,001067: 20,3327 03341 TC ADRSCHK
015268,001068:
015269,001069: 20,3330 55372 ADSUM TS SKEEP2
015270,001070: 20,3331 61371 AD SKEEP1
015271,001071: 20,3332 55371 TS SKEEP1
015272,001072: 20,3333 37675 CAF S+ZERO
015273,001073: 20,3334 61371 AD SKEEP1
015274,001074: 20,3335 55371 TS SKEEP1
015275,001075: 20,3336 41372 CS SKEEP2
015276,001076: 20,3337 61373 AD SKEEP3
015277,001077: 20,3340 00002 TC Q
015278,001078:
015279,001079: 20,3341 22000 ADRSCHK LXCH A
015280,001080: 20,3342 11375 CCS SKEEP5 # IS CHECKSUM FINISHED
015281,001081: 20,3343 03346 TC +3 # NO
015282,001082: 20,3344 03346 TC +2 # NO
015283,001083: 20,3345 03435 TC SOPTION # GO TO ROPECHK SHOWSUM OPTION
015284,001084: 20,3346 10001 CCS L # -0 MEANS A TC SELF WORD.
015285,001085: 20,3347 03356 TC CONTINU
015286,001086: 20,3350 03356 TC CONTINU
015287,001087: 20,3351 03356 TC CONTINU
015288,001088: 20,3352 11375 CCS SKEEP5
015289,001089: 20,3353 03357 TC CONTINU +1
015290,001090: 20,3354 37677 CA S-1
015291,001091: 20,3355 03357 TC CONTINU +1 # AD IN THE BUGGER WORD
015292,001092: 20,3356 35504 CONTINU CA S+1 # MAKE SURE TWO CONSECUTIVE TC SELF WORDS
015293,001093: 20,3357 55375 TS SKEEP5
015294,001094: 20,3360 11376 CCS SKEEP6 # +1 IN SKEEP6, SHOWSUM VIA EXECUTIVE
015295,001095: 20,3361 10067 CCS NEWJOB
015296,001096: 20,3362 04365 TC CHANG1
015297,001097: 20,3363 03365 TC +2
015298,001098: 20,3364 04440 TC CHECKNJ # -0 IN SKEEP6 FOR ROPECHK
015299,001099:
015300,001100: 20,3365 25373 ADRS+1 INCR SKEEP3
015301,001101: 20,3366 11377 CCS SKEEP7
015302,001102: 20,3367 03300 TC COMADRS
015303,001103: 20,3370 03300 TC COMADRS
015304,001104: 20,3371 03324 TC FXADRS
015305,001105: 20,3372 03324 TC FXADRS
015306,001106:
015307,001107: 20,3373 41374 NXTBNK CS SKEEP4
015308,001108: 20,3374 63455 AD LSTBNKCH # LAST BANK TO BE CHECKED
015309,001109: 20,3375 00006 EXTEND
015310,001110: 20,3376 13430 BZF ENDSUMS # END OF SUMMING OF BANKS.
015311,001111: 20,3377 31374 CA SKEEP4
015312,001112: 20,3400 67657 AD SBIT11
015313,001113: 20,3401 55374 TS SKEEP4 # 37 TO 40 INCRMTS SKEEP4 BY END RND CARRY
015314,001114: 20,3402 03406 TC CHKSUPR
015315,001115: 20,3403 37653 17TO20 CA SBIT15
015316,001116: 20,3404 27374 ADS SKEEP4 # SET FOR BANK 20
015317,001117: 20,3405 03422 TC GONXTBNK
015318,001118: 20,3406 75220 CHKSUPR MASK HI5
015319,001119: 20,3407 00006 EXTEND
015320,001120: 20,3410 13420 BZF NXTSUPR # INCREMENT SUPER BANK
015321,001121: 20,3411 65520 27TO30 AD S13BITS
015322,001122: 20,3412 00006 EXTEND
015323,001123: 20,3413 13415 BZF +2 # BANK SET FOR 30
015324,001124: 20,3414 03422 TC GONXTBNK
015325,001125: 20,3415 35514 CA SIXTY # FIRST SUPER BANK
015326,001126: 20,3416 27374 ADS SKEEP4
015327,001127: 20,3417 03422 TC GONXTBNK
015328,001128: 20,3420 65515 NXTSUPR AD SUPRCON # SET BNK 30 + INCR SUPR BNK AND CANCEL
015329,001129: 20,3421 27374 ADS SKEEP4 # ERC BIT OF THE 37 TO 40 ADVANCE.
015330,001130: 20,3422 11377 GONXTBNK CCS SKEEP7
015331,001131: 20,3423 03272 TC COMMFX
015332,001132: 20,3424 35504 CA S+1
015333,001133: 20,3425 03310 TC FXFX
015334,001134: 20,3426 37663 CA SBIT7 # HAS TO BE LARGER THAN NO OF FXSW BANKS.
015335,001135: 20,3427 03272 TC COMMFX
015336,001136:
015337,001137: 20,3430 11376 ENDSUMS CCS SKEEP6
015338,001138: 20,3431 03267 TC ROPECHK +2 # START SHOWSUM AGAIN
015339,001139: 20,3432 05546 TC ERRORS # Available space.
015340,001140: 20,3433 05546 TC ERRORS
015341,001141: 20,3434 03530 TC MPNMBRS -1 # ROPECHK IS COMPLETED
015342,001142:
015343,001143: 20,3435 31374 SOPTION CA SKEEP4
015344,001144: 20,3436 75220 MASK HI5 # = BANK BITS
015345,001145: 20,3437 05201 TC LEFT5
015346,001146: 20,3440 54001 TS L # BANK NUMBER BEFORE SUPER BANK
015347,001147: 20,3441 31374 CA SKEEP4
015348,001148: 20,3442 75227 MASK S8BITS # = SUPER BANK BITS
015349,001149: 20,3443 00006 EXTEND
015350,001150: 20,3444 13452 BZF SOPT # BEFORE SUPER BANK
015351,001151: 20,3445 54021 TS SR # SUPER BANK NECESSARY
015352,001152: 20,3446 30001 CA L
015353,001153: 20,3447 77673 MASK SEVEN
015354,001154: 20,3450 60021 AD SR
015355,001155: 20,3451 54001 TS L # BANK NUMBER WITH SUPER BANK
015356,001156: 20,3452 11376 SOPT CCS SKEEP6
015357,001157: 20,3453 03505 TC SDISPLAY
015358,001158: 20,3454 00501 VNCON OCTAL 00501 # USED IN SHOWSUM. DISPLAY 3 REGISTERS.
015359,001159: 20,3455 0067 EBANK= NEWJOB
015360,001160: 20,3455 66100 LSTBNKCH BBCON* # * CONSTANT, LAST BANK.
015361,001161:
015362,001162: # CHANGE TO 31777 IF BANK 23 IS LAST BANK USED
015363,001163: 20,3456 11371 BNKCHK CCS SKEEP1 # WHEN C(SKEEP6) = -0
015364,001164: 20,3457 03463 TC +4
015365,001165: 20,3460 41510 SCADR FCADR NOKILL # * CONSTANT, USED IN SHOWSUM ONLY
015366,001166: 20,3461 03463 TC +2
015367,001167: 20,3462 37677 CA S-1 # FOR BANK 00
015368,001168: 20,3463 55371 TS SKEEP1
015369,001169: 20,3464 40001 CS L # = - BANK NUMBER
015370,001170: 20,3465 61371 AD SKEEP1
015371,001171: 20,3466 05571 TC -1CHK
015372,001172: 20,3467 03373 TC NXTBNK
015373,001173:
015374,001174: # INITIALIZE SKEEP6 TO +1 TO PERFORM SHOWSUM
015375,001175: # START OF ROUTINE THAT DISPLAYS SUM OF EACH BANK
015376,001176: 20,3470 35504 SHOWSUM CAF S+1
015377,001177: 20,3471 55376 TS SKEEP6 # SHOWSUM OPTION
015378,001178: 20,3472 37675 CAF S+ZERO
015379,001179: 20,3473 55361 TS SMODE # PUT SELF-CHECK TO SLEEP
015380,001180: 20,3474 32000 CA SELFADRS # INITIALIZE SELFRET TO GO TO SELFCHK.
015381,001181: 20,3475 55360 TS SELFRET
015382,001182: 20,3476 00004 INHINT
015383,001183: 20,3477 37657 CAF PRIO2
015384,001184: 20,3500 04344 TC NOVAC
015385,001185: 20,3501 1360 EBANK= SELFRET
015386,001186: 20,3501 03262 40002 2CADR STSHOSUM
015387,001187:
015388,001188: 20,3503 00003 RELINT
015389,001189: 20,3504 04422 TC ENDOFJOB
015390,001190:
015391,001191: 20,3505 30001 SDISPLAY CA L # = BANK NUMBER
015392,001192: 20,3506 57372 XCH SKEEP2 # SKEEP2 HOLDS BANK NUMBER DURING DISPLAY
015393,001193: 20,3507 55373 TS SKEEP3 # SKEEP3 HOLDS BUGGER WORD DURING DISPLAY
015394,001194: 20,3510 35527 NOKILL CAF ADRS1 # ADDRESS OF SKEEP1
015395,001195: 20,3511 54142 TS MPAC +2
015396,001196: 20,3512 33454 CAF VNCON # DISPLAY 3 REGISTERS
015397,001197: 20,3513 05101 TC NVSUB
015398,001198: 20,3514 03526 TC SBUSY
015399,001199: 20,3515 05266 TC FLASHON
015400,001200: 20,3516 05132 TC ENDIDLE
015401,001201: 20,3517 03522 TC +3 # FINISHED WITH SHOWSUM
015402,001202: 20,3520 03373 TC NXTBNK
015403,001203: 20,3521 03510 TC NOKILL # SO CAN LOAD WITHOUT KILLING SHOWSUM
015404,001204: 20,3522 05373 TC FREEDSP
015405,001205: 20,3523 32000 CA SELFADRS # INITIALIZE SKEEP1 TO GO TO SELFCHK.
015406,001206: 20,3524 55371 TS SKEEP1
015407,001207: 20,3525 04422 TC ENDOFJOB
015408,001208:
015409,001209: 20,3526 33460 SBUSY CAF SCADR
015410,001210: 20,3527 05321 TC NVSUBUSY
015411,001211:
015412,001212: 20,3530 02001 TC SMODECHK
015413,001213:
015414,001214: # MULTIPLY SUBROUTINE TAKES APPROXIMATELY 19 SECONDS.
015415,001215: # (37777) X (37777 THROUGH 00001)
015416,001216: # C(A) COUNTS DOWN. C(L) COUNTS UP.
015417,001217: 20,3531 35516 MPNMBRS CAF S+MAX
015418,001218: 20,3532 55372 TS SKEEP2
015419,001219: 20,3533 35516 CAF S+MAX
015420,001220: 20,3534 00006 EXTEND
015421,001221: 20,3535 71372 MP SKEEP2
015422,001222: 20,3536 60001 AD L # C(A) = 37777
015423,001223: 20,3537 65517 AD S-MAX
015424,001224: 20,3540 05563 TC -0CHK
015425,001225: 20,3541 04440 TC CHECKNJ # CHECK FOR NEW JOB
015426,001226: 20,3542 11372 CCS SKEEP2
015427,001227: 20,3543 55372 TS SKEEP2
015428,001228: 20,3544 11372 CCS SKEEP2
015429,001229: 20,3545 03533 TC MPNMBRS +2
015430,001230: # (-1) X (37777 THROUGH 00001)
015431,001231: 20,3546 35516 CAF S+MAX
015432,001232: 20,3547 55372 TS SKEEP2
015433,001233: 20,3550 37677 MPHIGH1 CAF S-1
015434,001234: 20,3551 00006 EXTEND
015435,001235: 20,3552 71372 MP SKEEP2 # C(A) = -0
015436,001236: 20,3553 05563 TC -0CHK
015437,001237: 20,3554 30001 CA L
015438,001238: 20,3555 61372 AD SKEEP2
015439,001239: 20,3556 05563 TC -0CHK
015440,001240: 20,3557 04440 TC CHECKNJ # CHECK FOR NEW JOB
015441,001241: 20,3560 11372 CCS SKEEP2
015442,001242: 20,3561 55372 TS SKEEP2
015443,001243: 20,3562 11372 CCS SKEEP2
015444,001244: 20,3563 03550 TC MPHIGH1
015445,001245:
015446,001246: # INTERCHANGE MULTIPLIER AND MULTIPLICAND
015447,001247: # (37777 THROUGH 00001) X (37777)
015448,001248: # C(A) COUNTS DOWN. C(L) COUNTS UP.
015449,001249: 20,3564 35516 CAF S+MAX
015450,001250: 20,3565 55371 TS SKEEP1
015451,001251: 20,3566 31371 MPAGAIN CA SKEEP1
015452,001252: 20,3567 00006 EXTEND
015453,001253: 20,3570 75516 MP S+MAX
015454,001254: 20,3571 60001 AD L # C(A) = 37777
015455,001255: 20,3572 65517 AD S-MAX
015456,001256: 20,3573 05563 TC -0CHK
015457,001257: 20,3574 04440 TC CHECKNJ # CHECK FOR NEW JOB
015458,001258: 20,3575 11371 CCS SKEEP1
015459,001259: 20,3576 55371 TS SKEEP1
015460,001260: 20,3577 11371 CCS SKEEP1
015461,001261: 20,3600 03566 TC MPAGAIN
015462,001262: # (37777 THROUGH 00001) X (-1)
015463,001263: 20,3601 35516 CAF S+MAX
015464,001264: 20,3602 55371 TS SKEEP1
015465,001265: 20,3603 31371 MPHIGH2 CA SKEEP1
015466,001266: 20,3604 00006 EXTEND
015467,001267: 20,3605 77677 MP S-1
015468,001268: 20,3606 05563 TC -0CHK
015469,001269: 20,3607 30001 CA L
015470,001270: 20,3610 61371 AD SKEEP1
015471,001271: 20,3611 05563 TC -0CHK
015472,001272: 20,3612 04440 TC CHECKNJ # CHECK FOR NEW JOB
015473,001273: 20,3613 11371 CCS SKEEP1
015474,001274: 20,3614 55371 TS SKEEP1
015475,001275: 20,3615 11371 CCS SKEEP1
015476,001276: 20,3616 03603 TC MPHIGH2
015477,001277:
015478,001278: 20,3617 02001 TC SMODECHK
015479,001279:
015480,001280: # ONCE THROUGH DIVIDE SUBROUTINE TAKES APPROXIMATELY 0.01 SECOND.
015481,001281: # TOTAL TIME SPENT IN DIVIDE SUBROUTINE IS APPROXIMATELY 21.5 SECONDS
015482,001282: # DIVIDE +-/17777/ +-/37777/ BY +-/20000/. THE CONTENTS OF THE A REGISTER
015483,001283: # AND THE L REGISTER WILL HAVE OPPOSITE SIGNS BEFORE DIVISION. THE
015484,001284: # QUOTIENT SHOULD BE +-/37774/ DEPENDING ON THE SIGN OF A AND THE SIGN
015485,001285: # OF THE DIVISOR. THE REMAINDER = +-1 DEPENDING ON THE SIGN OF A
015486,001286: 20,3620 47656 DVCHECK CS SBIT12 # -(04000)
015487,001287: 20,3621 55374 TS SKEEP4
015488,001288: 20,3622 25374 DVLOOP INCR SKEEP4
015489,001289: 20,3623 37654 DV1CHK CA SBIT14 # 20000
015490,001290: 20,3624 55371 TS SKEEP1
015491,001291: 20,3625 40000 CS A
015492,001292: 20,3626 55372 TS SKEEP2
015493,001293: 20,3627 45516 DV1++ CS S+MAX
015494,001294: 20,3630 54001 TS L # 40000
015495,001295: 20,3631 35520 CA S13BITS
015496,001296: 20,3632 00006 EXTEND
015497,001297: 20,3633 11371 DV SKEEP1 # +37774, +1
015498,001298: 20,3634 55377 TS SKEEP7 # 37774
015499,001299: 20,3635 35517 CA S-MAX
015500,001300: 20,3636 56001 XCH L # ALSO PUT 40000 IN L
015501,001301: 20,3637 05570 TC +1CHK
015502,001302: 20,3640 35520 DV1+- CA S13BITS # 17777
015503,001303: 20,3641 00006 EXTEND
015504,001304: 20,3642 11372 DV SKEEP2 # -37774, +1
015505,001305: 20,3643 61377 AD SKEEP7
015506,001306: 20,3644 05563 TC -0CHK
015507,001307: 20,3645 35516 CA S+MAX
015508,001308: 20,3646 56001 XCH L # ALSO PUT 37777 IN L
015509,001309: 20,3647 05570 TC +1CHK
015510,001310: 20,3650 45520 DV1-+ CS S13BITS # 60000
015511,001311: 20,3651 00006 EXTEND
015512,001312: 20,3652 11371 DV SKEEP1 # -37774, -1
015513,001313: 20,3653 55376 TS SKEEP6
015514,001314: 20,3654 61377 AD SKEEP7
015515,001315: 20,3655 05563 TC -0CHK
015516,001316: 20,3656 35516 CA S+MAX
015517,001317: 20,3657 56001 XCH L # ALSO PUT 37777 IN L
015518,001318: 20,3660 05571 TC -1CHK
015519,001319: 20,3661 45520 DV1-- CS S13BITS # 60000
015520,001320: 20,3662 00006 EXTEND
015521,001321: 20,3663 11372 DV SKEEP2 # +37774, -1
015522,001322: 20,3664 61376 AD SKEEP6
015523,001323: 20,3665 05563 TC -0CHK
015524,001324: 20,3666 35516 CA S+MAX
015525,001325: 20,3667 56001 XCH L # ALSO PUT 37777 IN L FOR DV2
015526,001326: 20,3670 05571 TC -1CHK
015527,001327: 20,3671 31376 CA SKEEP6 # -37774
015528,001328: 20,3672 67700 AD S-2 # -37776
015529,001329: 20,3673 65516 AD S+MAX
015530,001330: 20,3674 05570 TC +1CHK
015531,001331:
015532,001332: # DIVIDE +17777 + 37777 BY +20000. THE RESULT SHOULD BE +37777 WITH
015533,001333: # +17777 REMAINDER.
015534,001334: 20,3675 35520 DV2CHK CA S13BITS
015535,001335: 20,3676 00006 EXTEND
015536,001336: 20,3677 11371 DV SKEEP1
015537,001337: 20,3700 65517 AD S-MAX
015538,001338: 20,3701 05563 TC -0CHK
015539,001339: 20,3702 47654 CS SBIT14 # -20000
015540,001340: 20,3703 60001 AD L
015541,001341: 20,3704 05571 TC -1CHK
015542,001342:
015543,001343: # DIVIDE +37776 BY +37776. THE RESULT SHOULD BE +37777 AND THE
015544,001344: # REMAINDER SHOULD BE +37776.
015545,001345: 20,3705 37675 DV4CHK CA S+ZERO
015546,001346: 20,3706 54001 TS L
015547,001347: 20,3707 35523 CA DVCON
015548,001348: 20,3710 55371 TS SKEEP1 # 37776
015549,001349: 20,3711 00006 EXTEND
015550,001350: 20,3712 11371 DV SKEEP1
015551,001351: 20,3713 40000 CS A
015552,001352: 20,3714 65523 AD DVCON
015553,001353: 20,3715 05571 TC -1CHK
015554,001354: 20,3716 30001 CA L # 37776
015555,001355: 20,3717 65517 AD S-MAX
015556,001356: 20,3720 05571 TC -1CHK
015557,001357:
015558,001358: # DIVIDE SAME (ZERO). THE CONTENTS OF THE A REGISTER AND L REGISTER WILL
015559,001359: # HAVE OPPOSITE SIGNS BEFORE DIVISION. THE QUOTIENT WILL BE + OR - MAX.,
015560,001360: # DEPENDING UPON THE SIGN OF THE L REGISTER AND THE SIGN OF THE DIVISOR.
015561,001361: # C(L) REMAINS THE SAME BECAUSE IT IS THE DIVIDEND.
015562,001362: 20,3721 37675 DV5CHK CA S+ZERO
015563,001363: 20,3722 55371 TS SKEEP1 # +0
015564,001364: 20,3723 54001 TS L
015565,001365: 20,3724 40000 CS A
015566,001366: 20,3725 55372 TS SKEEP2 # -0
015567,001367: 20,3726 00006 DV5++ EXTEND
015568,001368: 20,3727 11371 DV SKEEP1 # +37777, +0
015569,001369: 20,3730 55377 TS SKEEP7 # 37777
015570,001370: 20,3731 30001 CA L
015571,001371: 20,3732 05562 TC +0CHK
015572,001372: 20,3733 40000 DV5+- CS A
015573,001373: 20,3734 00006 EXTEND
015574,001374: 20,3735 11372 DV SKEEP2 # 40000, +0
015575,001375: 20,3736 55376 TS SKEEP6 # 40000
015576,001376: 20,3737 61377 AD SKEEP7
015577,001377: 20,3740 05563 TC -0CHK
015578,001378: 20,3741 40000 CS A
015579,001379: 20,3742 56001 XCH L # ALSO PUT -0 IN L
015580,001380: 20,3743 05562 TC +0CHK
015581,001381: 20,3744 00006 DV5-+ EXTEND
015582,001382: 20,3745 11371 DV SKEEP1 # 40000, -0
015583,001383: 20,3746 61377 AD SKEEP7
015584,001384: 20,3747 05563 TC -0CHK
015585,001385: 20,3750 30001 CA L
015586,001386: 20,3751 05563 TC -0CHK
015587,001387: 20,3752 00006 DV5-- EXTEND
015588,001388: 20,3753 11372 DV SKEEP2 # 37777, -0
015589,001389: 20,3754 61376 AD SKEEP6
015590,001390: 20,3755 05563 TC -0CHK
015591,001391: 20,3756 30001 CA L
015592,001392: 20,3757 05563 TC -0CHK
015593,001393: 20,3760 31376 CA SKEEP6 # CHECK QUOTIENT
015594,001394: 20,3761 65523 AD DVCON
015595,001395: 20,3762 05571 TC -1CHK
015596,001396:
015597,001397: 20,3763 04440 TC CHECKNJ # CHECK FOR NEW JOB
015598,001398: 20,3764 31374 CA SKEEP4
015599,001399: 20,3765 00006 EXTEND
015600,001400: 20,3766 63622 BZMF DVLOOP
015601,001401: 20,3767 25370 INCR SCOUNT +2
015602,001402: 20,3770 02033 TC SELFCHK # START SELF-CHECK AGAIN
015603,001403:
015604,001404: 20,3771 ENDSLFS1 EQUALS
015605,001405:
015606,001406: 01,3015 SETLOC ENDFAILS
015607,001407:
015608,001408: 01,3015 55371 SBNKOPTN TS SKEEP1
015609,001409: 01,3016 40000 CS A # GO TO BACKUP IDLE LOOP IF C(SMODE) IS
015610,001410: 01,3017 66176 AD THREE # GREATER THAN OCTAL 12
015611,001411: 01,3020 00006 EXTEND
015612,001412: 01,3021 63031 BZMF TOSMODE -2
015613,001413: 01,3022 37675 CA S+ZERO # ZERO SMODE FOR OPTIONS ABOVE 8.
015614,001414: 01,3023 55361 TS SMODE
015615,001415: 01,3024 31371 CA SKEEP1
015616,001416: 01,3025 50000 NDX A
015617,001417: 01,3026 03026 TC SOPTON11 -1
015618,001418: 01,3027 03052 SOPTON11 TC DSKYCHK
015619,001419: 01,3030 03173 SOPTON12 TC RSTRTCHK
015620,001420:
015621,001421: 01,3031 37675 CA S+ZERO
015622,001422: 01,3032 55361 TS SMODE
015623,001423: 01,3033 04104 TOSMODE TC POSTJUMP
015624,001424: 01,3034 40033 CADR SELFCHK
015625,001425:
015626,001426: # THE FOLLOWING CONSTANTS ARE USED BY DSKYCHK.
015627,001427: 01,3035 05265 DSKYCODE OCTAL 05265 # 00
015628,001428: 01,3036 04143 OCTAL 04143 # 11
015629,001429: 01,3037 05471 OCTAL 05471 # 22
015630,001430: 01,3040 05573 OCTAL 05573 # 33
015631,001431: 01,3041 04757 OCTAL 04757 # 44
015632,001432: 01,3042 05736 OCTAL 05736 # 55
015633,001433: 01,3043 05634 OCTAL 05634 # 66
015634,001434: 01,3044 05163 OCTAL 05163 # 77
015635,001435: 01,3045 05675 OCTAL 05675 # 88
015636,001436: 01,3046 05777 OCTAL 05777 # 99
015637,001437: 01,3047 07265 +-ZERO OCTAL 07265
015638,001438: 01,3050 00013 11DEC. OCTAL 00013
015639,001439:
015640,001440: # BITS 2 AND 6 TURN ON THE COMPUTER ACTIVITY AND VERB-NOUN FLASH.
015641,001441: 01,3051 00042 S11CHAN OCTAL 00042
015642,001442:
015643,001443: 01,3052 35234 DSKYCHK CAF TEN
015644,001444: 01,3053 55373 TS SKEEP3
015645,001445: 01,3054 00004 INHINT
015646,001446: 01,3055 35504 CAF S+1 # SET UP TEN MS INTERRUPT
015647,001447: 01,3056 04517 TC WAITLIST
015648,001448: 01,3057 03113 02000 2CADR NXTNMBR
015649,001449:
015650,001450: 01,3061 00003 RELINT
015651,001451: 01,3062 03033 TC TOSMODE # GO TO IDLE LOOP
015652,001452:
015653,001453: 01,3063 55373 SDSPTAB TS SKEEP3
015654,001454: 01,3064 00004 INHINT
015655,001455: 01,3065 51373 NDX SKEEP3
015656,001456: 01,3066 43035 CS DSKYCODE
015657,001457: 01,3067 54307 SBLANKS TS DSPTAB
015658,001458: 01,3070 54310 TS DSPTAB +1
015659,001459: 01,3071 54311 TS DSPTAB +2
015660,001460: 01,3072 54312 TS DSPTAB +3
015661,001461: 01,3073 54313 TS DSPTAB +4
015662,001462: 01,3074 54314 TS DSPTAB +5
015663,001463: 01,3075 54315 TS DSPTAB +6
015664,001464: 01,3076 54316 TS DSPTAB +7
015665,001465: 01,3077 54317 TS DSPTAB +8D
015666,001466: 01,3100 54320 TS DSPTAB +9D
015667,001467: 01,3101 54321 TS DSPTAB +10D
015668,001468: 01,3102 33050 CA 11DEC.
015669,001469: 01,3103 54303 TS NOUT
015670,001470:
015671,001471: 01,3104 00004 DSKYWAIT INHINT
015672,001472: 01,3105 37660 CAF BIT10 # 5.12 SECOND WAIT
015673,001473: 01,3106 04517 TC WAITLIST
015674,001474: 01,3107 03113 02000 2CADR NXTNMBR
015675,001475:
015676,001476: 01,3111 00003 RELINT
015677,001477: 01,3112 04563 TC TASKOVER
015678,001478:
015679,001479: 01,3113 11373 NXTNMBR CCS SKEEP3
015680,001480: 01,3114 03063 TC SDSPTAB # 9 THROUGH 0
015681,001481: 01,3115 03122 TC -SIGN # -ZEROS
015682,001482: 01,3116 03137 TC +SIGN # +ZEROS
015683,001483: 01,3117 11372 CCS SKEEP2
015684,001484: 01,3120 03153 TC NODSPLAY # PUTS BLANKS IN DSKY DISPLAY
015685,001485: 01,3121 03157 TC LITESOUT # TURN OFF LIGHTS
015686,001486:
015687,001487: 01,3122 45504 -SIGN CS S+1
015688,001488: 01,3123 55373 TS SKEEP3
015689,001489: 01,3124 33051 CA S11CHAN # TURN ON VERB-NOUN FLASH
015690,001490: 01,3125 00006 EXTEND # AND COMPUTER ACTIVITY LIGHTS.
015691,001491: 01,3126 05011 WOR DSALMOUT
015692,001492: 01,3127 43047 CS +-ZERO
015693,001493: 01,3130 00004 INHINT
015694,001494: 01,3131 54307 TS DSPTAB
015695,001495: 01,3132 54312 TS DSPTAB +3
015696,001496: 01,3133 54314 TS DSPTAB +5
015697,001497: 01,3134 36176 CAF THREE
015698,001498: 01,3135 54303 TS NOUT
015699,001499: 01,3136 03104 TC DSKYWAIT
015700,001500: 01,3137 47675 +SIGN CS ZERO
015701,001501: 01,3140 55373 TS SKEEP3
015702,001502: 01,3141 35504 CA S+1
015703,001503: 01,3142 55372 TS SKEEP2
015704,001504: 01,3143 00004 INHINT
015705,001505: 01,3144 43047 CS +-ZERO
015706,001506: 01,3145 54310 TS DSPTAB +1
015707,001507: 01,3146 54313 TS DSPTAB +4
015708,001508: 01,3147 54315 TS DSPTAB +6
015709,001509: 01,3150 36176 CAF THREE
015710,001510: 01,3151 54303 TS NOUT
015711,001511: 01,3152 03104 TC DSKYWAIT
015712,001512:
015713,001513: 01,3153 55372 NODSPLAY TS SKEEP2 # +0
015714,001514: 01,3154 47656 CS BIT12 # BLANKS
015715,001515: 01,3155 00004 INHINT
015716,001516: 01,3156 03067 TC SBLANKS # PUTS BLANKS IN ALL DISPLAYS
015717,001517:
015718,001518: 01,3157 43051 LITESOUT CS S11CHAN
015719,001519: 01,3160 00006 EXTEND
015720,001520: 01,3161 03011 WAND DSALMOUT # TURN OFF COMPUTER ACTIVITY LIGHT.
015721,001521: 01,3162 04563 TC TASKOVER # END OF DSKYCHK
015722,001522:
015723,001523: 01,3163 51076 ALRMSTRT INDEX PHASE2
015724,001524: 01,3164 03164 TC +0
015725,001525: 01,3165 03234 TC TCTRCONT # Phase 1: TC trap
015726,001526: 01,3166 03255 TC NOTCCONT # Phase 2: No TC
015727,001527: 01,3167 03302 TC RPLKCONT # Phase 3: Rupt lock
015728,001528: 01,3170 03316 TC NORPCONT # Phase 4: No rupts
015729,001529: 01,3171 03332 TC WTCHCONT # Phase 5: Night watchman
015730,001530: 01,3172 03366 TC PARCONT # Phase 6: Parity fail
015731,001531:
015732,001532: 01,3173 00006 RSTRTCHK EXTEND # Entry point to the hardware alarm / restart checks
015733,001533: 01,3174 01077 WRITE 77 # Clear channel 77 by writing to it
015734,001534:
015735,001535: # Check the TC Trap alarm -- only TC executed for too long
015736,001536: 01,3175 04575 TCTRPCHK TC PHASCHNG
015737,001537: 01,3176 00102 OCT 00102
015738,001538:
015739,001539: 01,3177 00004 INHINT
015740,001540: 01,3200 36176 CAF THREE # Schedule a task to break out of the loop if the
015741,001541: 01,3201 04517 TC WAITLIST # alarm doesn't work.
015742,001542: 01,3202 03210 02000 2CADR TCTRPFAL
015743,001543:
015744,001544: 01,3204 00003 RELINT
015745,001545: 01,3205 35527 CAF ADRS1 # Trigger a TC Trap. We do this in erasable memory
015746,001546: 01,3206 55371 TS SKEEP1 # so we can break out of it if the restart
015747,001547: 01,3207 01371 TC SKEEP1 # doesn't occur as expected.
015748,001548:
015749,001549: 01,3210 33213 TCTRPFAL CAF TCTRPXIT # It's been too long with no restart. Break the
015750,001550: 01,3211 55371 TS SKEEP1 # loop at SKEEP1.
015751,001551: 01,3212 04563 TC TASKOVER
015752,001552: 01,3213 03234 TCTRPXIT TC TCTRCONT
015753,001553:
015754,001554: 01,3214 37675 NOTCFAIL CA S+ZERO # It's been too long with no restart. Zero SKEEP2
015755,001555: 01,3215 55372 TS SKEEP2 # so the CA..ADS loop exits.
015756,001556: 01,3216 04563 TC TASKOVER
015757,001557:
015758,001558: 01,3217 00006 TESTRBIT EXTEND # Read the restart cause from channel 77
015759,001559: 01,3220 06077 RXOR 77
015760,001560: 01,3221 75531 MASK CTRMASK # Filter out counter alarms, which can be caused by
015761,001561: # any other type of restart if a counter request
015762,001562: # was interrupted.
015763,001563: 01,3222 15562 TCF +0CHK # Make sure only the correct bit was set.
015764,001564:
015765,001565: 01,3223 37660 RSTRTRST CAF BIT10 # Turn off the RESTART light
015766,001566: 01,3224 00006 EXTEND
015767,001567: 01,3225 05011 WOR DSALMOUT
015768,001568: 01,3226 47660 CS BIT10
015769,001569: 01,3227 00006 EXTEND
015770,001570: 01,3230 03011 WAND DSALMOUT
015771,001571: 01,3231 00006 EXTEND
015772,001572: 01,3232 01077 WRITE 77 # Clear the restart cause from channel 77.
015773,001573: 01,3233 00002 TC Q
015774,001574:
015775,001575: 01,3234 04575 TCTRCONT TC PHASCHNG # Turn off the restart group so we don't come back
015776,001576: 01,3235 00002 OCT 00002 # here for an unexpected reason.
015777,001577:
015778,001578: 01,3236 37667 CAF TCTRPBIT # Check for the TC trap bit
015779,001579: 01,3237 03217 TC TESTRBIT
015780,001580: 01,3240 03223 TC RSTRTRST
015781,001581:
015782,001582: # Check the TC Trap alarm -- no TC executed for too long
015783,001583: 01,3241 04575 NOTCCHK TC PHASCHNG
015784,001584: 01,3242 00202 OCT 00202
015785,001585:
015786,001586: 01,3243 00004 INHINT
015787,001587: 01,3244 36176 CAF THREE # Set up a waitlist task to break us out of the
015788,001588: 01,3245 04517 TC WAITLIST # CA-ADS loop if the alarm doesn't occur
015789,001589: 01,3246 03214 02000 2CADR NOTCFAIL
015790,001590:
015791,001591: 01,3250 00003 RELINT
015792,001592: 01,3251 37700 CA S-2
015793,001593: 01,3252 55372 TS SKEEP2 # Put -2 into SKEEP2.
015794,001594:
015795,001595: # There's many ways to do an infinite loop without TC or TCF. However, most of them appear to get transients
015796,001596: # on the TC0 and TCF0 lines during instruction changeover in T12. Since neither pulse is gated to the alarm
015797,001597: # circuit, these transients make the circuit think the computer executed an actual TC or TCF.
015798,001598: # It is unclear if this is an error in the simulator or an actual design flaw.
015799,001599: # Anyways, a CA and ADS loop *doesn't* generate transients on those lines, and so the alarm works as expected.
015800,001600: 01,3253 31372 CA SKEEP2 # Add -2 to Z to loop in place.
015801,001601: 01,3254 26005 ADS Z
015802,001602: 01,3255 04575 NOTCCONT TC PHASCHNG # Turn off the restart group so we don't come back
015803,001603: 01,3256 00002 OCT 00002 # here for an unexpected reason.
015804,001604:
015805,001605: 01,3257 37667 CAF TCTRPBIT
015806,001606: 01,3260 03217 TC TESTRBIT
015807,001607: 01,3261 03223 TC RSTRTRST
015808,001608:
015809,001609: # Check Rupt Lock -- execution stuck in an interrupt for ~140ms
015810,001610: 01,3262 04575 RPTLKCHK TC PHASCHNG
015811,001611: 01,3263 00302 OCT 00302
015812,001612:
015813,001613: 01,3264 35532 CAF 300MSEC # Set up a 300ms BUSYLOOP
015814,001614: 01,3265 55373 TS SKEEP3
015815,001615: 01,3266 37675 CAF ZERO
015816,001616: 01,3267 55372 TS SKEEP2 # SKEEP2 = 0 indicates that BUSYLOOP is a task
015817,001617: 01,3270 37671 CAF ONE # SKEEP1 will be used to indicate that our task has
015818,001618: 01,3271 55371 TS SKEEP1 # exited without triggering a restart.
015819,001619: 01,3272 00004 INHINT
015820,001620: 01,3273 04517 TC WAITLIST # Execute a 300ms loop as a waitlist task (inside
015821,001621: 01,3274 03374 02000 2CADR BUSYLOOP # the TIME3 interrupt).
015822,001622:
015823,001623: 01,3276 00003 RELINT
015824,001624: 01,3277 40067 RPTWAIT CS NEWJOB # Play hardball... check in with the night watchman
015825,001625: # without actually seeing if there's a job to do.
015826,001626: 01,3300 11371 CCS SKEEP1 # We just need to stay alive until a reset or
015827,001627: 01,3301 13277 TCF RPTWAIT # BUSYLOOP exits.
015828,001628:
015829,001629: 01,3302 04575 RPLKCONT TC PHASCHNG
015830,001630: 01,3303 00002 OCT 00002
015831,001631:
015832,001632: 01,3304 37666 CAF RPTLKBIT
015833,001633: 01,3305 03217 TC TESTRBIT
015834,001634: 01,3306 03223 TC RSTRTRST
015835,001635:
015836,001636: # Check Rupt Lock -- no interrupts for ~140ms
015837,001637: 01,3307 04575 NORPTCHK TC PHASCHNG
015838,001638: 01,3310 00402 OCT 00402
015839,001639:
015840,001640: 01,3311 37671 CAF ONE # Configure BUSYLOOP to just return here
015841,001641: 01,3312 55372 TS SKEEP2
015842,001642: 01,3313 00004 INHINT # Lock interrupts before heading in...
015843,001643: 01,3314 03374 TC BUSYLOOP
015844,001644: 01,3315 00003 RELINT
015845,001645:
015846,001646: 01,3316 04575 NORPCONT TC PHASCHNG
015847,001647: 01,3317 00002 OCT 00002
015848,001648:
015849,001649: 01,3320 37666 CAF RPTLKBIT
015850,001650: 01,3321 03217 TC TESTRBIT
015851,001651: 01,3322 03223 TC RSTRTRST
015852,001652:
015853,001653: # Check the Night Watchman -- program fails to check NEWJOB for ~640ms
015854,001654: 01,3323 04575 WATCHCHK TC PHASCHNG
015855,001655: 01,3324 00502 OCT 00502
015856,001656:
015857,001657: 01,3325 37675 CA S+ZERO # Indicate to WTCHCONT that entry to it is permissible
015858,001658: 01,3326 55375 TS SKEEP5 # once
015859,001659:
015860,001660: 01,3327 35533 CA 2SEC # Set up a 2 second BUSYLOOP
015861,001661: 01,3330 55373 TS SKEEP3
015862,001662: 01,3331 03374 TC BUSYLOOP # SKEEP2 still = 1
015863,001663:
015864,001664: 01,3332 31375 WTCHCONT CA SKEEP5 # Ensure we only get one night wachman alarm.
015865,001665: 01,3333 05562 TC +0CHK # If this fails, the below logic caused a
015866,001666: 01,3334 37671 CA ONE # restart when it shouldn't have.
015867,001667: 01,3335 55375 TS SKEEP5
015868,001668:
015869,001669: 01,3336 37665 CAF WATCHBIT # Check to make sure night watchman was triggered
015870,001670: 01,3337 03217 TC TESTRBIT
015871,001671:
015872,001672: 01,3340 03223 TC RSTRTRST # Try to clear it
015873,001673: 01,3341 37665 CAF WATCHBIT # Check that we didn't successfully clear it -- it
015874,001674: 01,3342 03217 TC TESTRBIT # should be asserted for 1.28 seconds
015875,001675:
015876,001676: 01,3343 00003 RELINT
015877,001677: 01,3344 37663 CA 0.64SEC # Wait for 0.64 seconds (which will get us into the
015878,001678: 01,3345 55373 TS SKEEP3 # next night watchman window). Since we just aggravated
015879,001679: 01,3346 03374 TC BUSYLOOP # it, we shouldn't get any alarms doing this.
015880,001680:
015881,001681: 01,3347 03223 TC RSTRTRST
015882,001682: 01,3350 37665 CAF WATCHBIT # Check again that resetting the ch77 bit fails
015883,001683: 01,3351 03217 TC TESTRBIT
015884,001684:
015885,001685: 01,3352 40067 CS NEWJOB # Appease the night watchman for this new window, and
015886,001686: 01,3353 03374 TC BUSYLOOP # wait a further 0.64 seconds until the end of of it
015887,001687:
015888,001688: 01,3354 03223 TC RSTRTRST
015889,001689: 01,3355 37675 CAF S+ZERO # Make sure we can actually clear it this time
015890,001690: 01,3356 03217 TC TESTRBIT
015891,001691:
015892,001692: # Check the parity alarm. There's a couple ways this can happen -- for example, if a scaler or prime
015893,001693: # power failure generating a STRT2 signal were to happen in the middle of an erasable memory cycle,
015894,001694: # before the loaded data was written back out, that location would contain all 0s and therefore have
015895,001695: # incorrect parity.
015896,001696: # An easier guaranteed way, which we'll use here, is to try to access memory in a bank that doesn't
015897,001697: # exist. The superbank bit provides a convenient means of doing this; only superbanks 40-43 exist,
015898,001698: # so trying to hit anything in 44-47 should trigger a parity alarm.
015899,001699: 01,3357 04575 PARFLCHK TC PHASCHNG
015900,001700: 01,3360 00602 OCT 00602
015901,001701:
015902,001702: 01,3361 40067 CS NEWJOB
015903,001703: 01,3362 37663 CAF SUPER100 # Simply try to load data from the start of bank 44.
015904,001704: 01,3363 54001 TS L
015905,001705: 01,3364 35534 CAF BNK34ADR
015906,001706: 01,3365 04124 TC SUPDACAL
015907,001707:
015908,001708: 01,3366 04575 PARCONT TC PHASCHNG
015909,001709: 01,3367 00002 OCT 00002
015910,001710:
015911,001711: 01,3370 35504 CAF PRITYBIT
015912,001712: 01,3371 03217 TC TESTRBIT
015913,001713: 01,3372 03223 TC RSTRTRST
015914,001714:
015915,001715: 01,3373 03033 ALRMDONE TC TOSMODE # All done with the hardware alarm checks.
015916,001716:
015917,001717: # BUSYLOOP provides a simple means of aggravating certain hardware alarms; it fails to check NEWJOB
015918,001718: # and makes use of a TCF. Its inputs are:
015919,001719: # SKEEP2 = Run context. If positive, subroutine mode is used and control is returned to Q.
015920,001720: # If +0, waitlist task mode is used and exit is through TASKOVER. SKEEP1 is set to 0 on exit.
015921,001721: # SKEEP3 = Loop duration in TIME1 counts (10ms).
015922,001722: 01,3374 40025 BUSYLOOP CS TIME1 # Store the start time in SKEEP4
015923,001723: 01,3375 55374 TS SKEEP4
015924,001724: 01,3376 30025 BUSYLOP1 CA TIME1
015925,001725: 01,3377 61374 AD SKEEP4 # Current time - start time
015926,001726: 01,3400 67654 AD HALF # Account for possible TIME1 overflow
015927,001727: 01,3401 67654 AD HALF
015928,001728: 01,3402 56001 XCH L # Pass the (likely) overflowed value through L
015929,001729: 01,3403 41373 CS SKEEP3
015930,001730: 01,3404 60001 AD L # Calculate time delta minus expiration duration
015931,001731: 01,3405 00006 EXTEND
015932,001732: 01,3406 13410 BZF +2
015933,001733: 01,3407 13376 TCF BUSYLOP1 # Use a TCF to make sure we don't trigger TC trap
015934,001734: 01,3410 11372 CCS SKEEP2 # All done. Check if we're returning or exiting a
015935,001735: 01,3411 00002 TC Q # waitlist task.
015936,001736: 01,3412 37675 CAF ZERO
015937,001737: 01,3413 55371 TS SKEEP1 # Reset SKEEP1 to let the main test know we're done
015938,001738: 01,3414 04563 TC TASKOVER
015939,001739:
015940,001740: 01,3415 ENDSLFS2 EQUALS
End of include-file AGC_BLOCK_TWO_SELF-CHECK.agc. Parent file is MAIN.agc