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