From e3428dd36c3af7635d999d31313d8191db99564c Mon Sep 17 00:00:00 2001 From: Jeff Date: Mon, 27 Mar 2017 19:18:05 -0700 Subject: [PATCH 01/27] Pick up the most recent blog updates --- ...-24-stepping-through-pdp-10-diagnostics.md | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md b/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md index a6ef0c632..45e3f224f 100644 --- a/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md +++ b/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md @@ -12,10 +12,9 @@ machines: --- Now that the PDPjs MACRO-10 Mini-Assembler is [limping along](/blog/2017/03/21/), it's time to start assembling some -of DEC's PDP-10 "Basic Instruction" diagnostics and loading them into a test machine. - -The first diagnostic I tried was [KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](/apps/pdp10/diags/klad/dakaa/), -which has been loaded into the machine below. +of DEC's PDP-10 "Basic Instruction" diagnostics and loading them into a test machine. The first diagnostic I tried was +[KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](/apps/pdp10/diags/klad/dakaa/), which has been loaded into +the machine below. {% include machine.html id="testka10" %} @@ -59,9 +58,17 @@ Happily, this was a good outcome, because 035057 is the end of the test. If you 035057 254 00 0 00 030057 ENDXX: JRST BEGEND ;LOOP PROGRAM -I had similar success with Basic Instruction Diagnostics #2 (MAINDEC-10-DAKAB-B-D) and #3 (MAINDEC-10-DAKAC-B-D). +I had similar success with [Diagnostic #2 (MAINDEC-10-DAKAB-B-D)](/apps/pdp10/diags/klad/dakab/). -However, when I tried [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](/apps/pdp10/diags/klad/dakad/): +Problems started to crop up in [Diagnostic #3 (MAINDEC-10-DAKAC-B-D)](/apps/pdp10/diags/klad/dakac/): + + CAME [0,-1] ;PASS TEST IF C(AC)=0,,-1 + +Based on the comment, it's clear what they really meant was either "[0,,-1]" or "[XWD 0,-1]". However, they still got the +desired result, which means that even when the assembler parses an mnemonic-less instruction like "0,-1", it must still truncate +the second (address) operand. Once I generated the appropriate value (000000,777777), the test passed. + +And I had several failures running [Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](/apps/pdp10/diags/klad/dakad/): >> a 30724 /apps/pdp10/diags/klad/dakad/DAKAD.MAC starting PCjs MACRO-10 Mini-Assembler... @@ -94,9 +101,10 @@ However, when I tried [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B- 032005: 312140 034462 CAME 3,34462 ;history=2 032006: 254200 032007 HALT 32007 ;history=1 -This looked less good. Both AC3 and memory location 34462 contained 400000000000, so the CAME ("Compare AC with Memory -and Skip if Equal") instruction should have "skipped" the HALT, but it didn't. Thus was due to a bug in the -[cpuops.js](/modules/pdp10/lib/cpuops.js) *CMP()* function: +In this case, both AC3 and memory location 34462 contained 400000000000, so the CAME ("Compare AC with Memory +and Skip if Equal") instruction should have "skipped" the HALT, but it didn't. + +Thus was due to a bug in the [cpuops.js](/modules/pdp10/lib/cpuops.js) *CMP()* function: ```javascript /** @@ -114,7 +122,7 @@ PDP10.CMP = function(dst, src) }; ``` -And here's the correction: +Basically, there was a typo. Here's the correction: ```javascript return (dst < PDP10.INT_LIMIT? dst : dst - PDP10.WORD_LIMIT) - (src < PDP10.INT_LIMIT? src : src - PDP10.WORD_LIMIT); @@ -143,8 +151,8 @@ After fixing that and trying again, the diagnostic got a bit farther: 033444: 312000 034574 CAME 0,34574 ;history=2 033445: 254200 033446 HALT 33446 ;history=1 -The problem here was that after `SETO 0,0`, AC0 contained 777777777777, so when the AOBJN ("Add One to Both Halves -of AC and Jump if Negative") instruction added 000001000001 to it, the result should have been 000001000000, but +The problem here was that after `SETO 0,0`, AC0 contained 777777,777777, so when the AOBJN ("Add One to Both Halves +of AC and Jump if Negative") instruction added 000001,000001 to it, the result should have been 000001,000000, but because other another typo, this time in the *opAOBJN()* function: ```javascript @@ -179,18 +187,9 @@ not WORD_MASK, to truncate the value to 36 bits. Here's the corrected line: var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_LIMIT; ``` -The next problem I encountered involved this instruction in DEC's "DAKAC" diagnostic: - - CAME [0,-1] ;PASS TEST IF C(AC)=0,,-1 - -Based on the comment, it's clear what they really meant was either "[0,,-1]" or "[XWD 0,-1]". However, they still got the -desired result, which means that even when the assembler parses an mnemonic-less instruction like "0,-1", it must still truncate -the second (address) operand. - -The last few problems I ran into during my initial testing were in DEC's "DAKAD" diagnostic. When it tests the `SOJ` and `SOS` -instructions, it expects the carry and overflow flags to be set consistently with an *addition* of negative 1 (777777,777777) -rather than a *subtraction* of positive 1. That was an easy fix, but I'm not convinced that all flag-related issues are resolved, -so more arithmetic operation testing will be performed at a later date. +The last few problems involved the `SOJ` and `SOS` instructions, which expected the carry and overflow flags to be set +consistently with an *addition* of negative 1 (777777,777777) rather than a *subtraction* of positive 1. That was an easy fix, +but I'm not convinced that all flag-related issues are resolved, so more arithmetic operation testing is required. Finally, when the "DAKAD" diagnostic generated an indirect word reference: From b2a6a0690865ca180e0ce12ea44b3937be694d67 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 09:17:09 -0700 Subject: [PATCH 02/27] Fixed parsing of expressions with spaces --- apps/pdp10/diags/klad/README.md | 9 +- apps/pdp10/diags/klad/dakaa/README.md | 2 +- apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt | 2 +- apps/pdp10/diags/klad/dakad/DAKAD.MAC.txt | 2 +- apps/pdp10/diags/klad/dakae/DAKAE.LST.txt | 5687 ++++++++++++++++++++ apps/pdp10/diags/klad/dakae/DAKAE.MAC.txt | 2772 ++++++++++ apps/pdp10/diags/klad/dakae/DAKAEM.MAC.txt | 2739 ++++++++++ apps/pdp10/diags/klad/dakae/README.md | 286 + docs/pcx86/examples/pcx86-dbg.js | 4 +- modules/pdp10/lib/debugger.js | 4 +- modules/shared/lib/debugger.js | 9 +- 11 files changed, 11503 insertions(+), 13 deletions(-) create mode 100644 apps/pdp10/diags/klad/dakae/DAKAE.LST.txt create mode 100644 apps/pdp10/diags/klad/dakae/DAKAE.MAC.txt create mode 100644 apps/pdp10/diags/klad/dakae/DAKAEM.MAC.txt create mode 100644 apps/pdp10/diags/klad/dakae/README.md diff --git a/apps/pdp10/diags/klad/README.md b/apps/pdp10/diags/klad/README.md index a58cca5af..b44775e5a 100644 --- a/apps/pdp10/diags/klad/README.md +++ b/apps/pdp10/diags/klad/README.md @@ -10,7 +10,8 @@ PDP-10 KLAD Diagnostics PCjs has archived selected files from [PDP-10 KLAD Diagnostics Sources](http://pdp-10.trailing-edge.com/klad_sources/index.html), including: -- [KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](dakaa/) -- [KA10 Basic Instruction Diagnostic #2 (MAINDEC-10-DAKAB-B-D)](dakab/) -- [KA10 Basic Instruction Diagnostic #3 (MAINDEC-10-DAKAC-B-D)](dakac/) -- [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](dakad/) +- [KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA)](dakaa/) +- [KA10 Basic Instruction Diagnostic #2 (MAINDEC-10-DAKAB)](dakab/) +- [KA10 Basic Instruction Diagnostic #3 (MAINDEC-10-DAKAC)](dakac/) +- [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD)](dakad/) +- [KA10 Basic Instruction Diagnostic #5 (MAINDEC-10-DAKAE)](dakae/) diff --git a/apps/pdp10/diags/klad/dakaa/README.md b/apps/pdp10/diags/klad/dakaa/README.md index c39febd1d..4cc55d93c 100644 --- a/apps/pdp10/diags/klad/dakaa/README.md +++ b/apps/pdp10/diags/klad/dakaa/README.md @@ -13,7 +13,7 @@ machines: PDP-10 KA10 Basic Instruction Diagnostic #1 ------------------------------------------- -The *PDP-10 KA10 Basic Instruction Diagnostic #1* (MAINDEC-10-DAKAA-B-D) test code has been extracted from +The *PDP-10 KA10 Basic Instruction Diagnostic #1* (MAINDEC-10-DAKAA) test code has been extracted from [DAKAAM.MAC](DAKAAM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaam.mac.html)] for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below. diff --git a/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt b/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt index 6e4503259..5af64de68 100644 --- a/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt +++ b/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt @@ -1714,7 +1714,7 @@ B35000: SETZ ;PRELOAD AC,E WITH 0 B35500: SETZ ;PRELOAD AC WITH 0 SETO 1, ;PRELOAD E WITH -1,,-1 HLLM 1 ;*HLLM SHOULD PLACE 0,,-1 INTO E - CAIE 1,- 1 ;PASS IF C(E) =0,,-1 + CAIE 1,-1 ;PASS IF C(E) =0,,-1 STOP ;***** FAILURE ANALYSIS ***** diff --git a/apps/pdp10/diags/klad/dakad/DAKAD.MAC.txt b/apps/pdp10/diags/klad/dakad/DAKAD.MAC.txt index d726f2cc7..8f6ad01a7 100644 --- a/apps/pdp10/diags/klad/dakad/DAKAD.MAC.txt +++ b/apps/pdp10/diags/klad/dakad/DAKAD.MAC.txt @@ -14,7 +14,6 @@ EXIOT=4000 ;USER PRIV I/O FLAG FXU=100 ;FLOATING UNDERFLOW DCK=40 ;DIVIDE CHECK - ;MACROS ; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1) @@ -33,6 +32,7 @@ DEFINE SFLAG (A)< MOVSI 1,A JFCL 17,.+1 ;RESET ALL FLAGS JRST 2,.+1(1) ;SET A FLAG> + SUBTTL DIAGNOSTIC SECTION START: ;SETZM USER# ;CLEAR USER CONTROL WORD diff --git a/apps/pdp10/diags/klad/dakae/DAKAE.LST.txt b/apps/pdp10/diags/klad/dakae/DAKAE.LST.txt new file mode 100644 index 000000000..9f89017bd --- /dev/null +++ b/apps/pdp10/diags/klad/dakae/DAKAE.LST.txt @@ -0,0 +1,5687 @@ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 1 +DAKAET MAC 21-Dec-78 14:28 *PARAM* CONSOLE DATA SWITCH ASSIGNMENTS, AUG 1,1977 SEQ 0007 + + 1 ;DAKAE + 2 + 3 + 4 + 5 000003 DECVER==3 + 6 000000 MCNVER==0 + 7 + 8 XLIST + 9 LIST + 10 LALL + 11 NAME \MCNVER,\DECVER^ + 12 + 13 TITLE DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 + 14 ^ + 15 + 16 ;TEST DESIGNED FOR INITIAL DEBUGGING OF PROCESSOR HARDWARE + 17 ;AND TO DETECT (SOLID) FAILURES IN THE FIELD. + 18 + 19 ;COPYRIGHT 1972,1977,1978 + 20 ;DIGITAL EQUIPMENT CORPORATION + 21 ;MARLBORO, MASS. 01752 + 22 + 23 ;DICK MALISKA + 24 ;JOHN R. KIRCHOFF + 25 ;BILL SCORZELLI + 26 + 27 000137 LOC 137 + 28 000137 000000 000003 MCNVER,,DECVER + 29 + 30 NOSYM +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 2 +DAKAET MAC 21-Dec-78 14:28 DIAGNOSTIC PARAMETERS SEQ 0008 + + 31 SUBTTL DIAGNOSTIC PARAMETERS + 32 + 33 ;PARAMETER DEFINITIONS + 34 000001 EXCASB==1 + 35 000001 USRASB==1 + 36 000001 PGMEND==1 + 37 000100 DEBUG==100 + 38 + 39 ;FLAG DEFINITIONS + 40 010000 USERF=10000 ;USER MODE FLAG + 41 + 42 + 43 ;MACROS + 44 + 45 ;SPECIAL FEATURE PARAMETERS + 46 + 47 030674 SADR1=START + 48 030674 SADR2=START + 49 030674 SADR3=START + 50 030674 SADR4=START + 51 254000 030674 SADR5=JRST START + 52 254000 030674 SADR6=JRST START + 53 254000 030674 SADR7=JRST START + 54 254000 030674 SADR8=JRST START + 55 254000 030674 SADR9=JRST START + 56 254000 030674 SADR10=JRST START + 57 254000 030674 SADR11=JRST START + 58 + 59 000000 PAREA0=0 + 60 000000 PAREA1=0 + 61 000000 PAREA2=0 + 62 444153 414500 PAREA3=SIXBIT/DAKAE/ + 63 645560 000000 PAREA4=SIXBIT/TMP/ + 64 000000 PAREA5=0 + 65 000000 PAREA6=0 + 66 001000 ITERAT==1000 + 67 000001 PGMEND==1 +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 3 +DAKAET MAC 21-Dec-78 14:28 DIAGNOSTIC PARAMETERS SEQ 0009 + + 68 SUBTTL DIAGNOSTIC PARAMETERS + 69 + 70 ;ACCUMULATOR ASSIGNMENTS + 71 + 72 ;CONTROL WORDS + 73 + 74 400000 AROV=400000 ;ARITHMETIC OVERFLOW + 75 200000 CRY0=200000 ;CARRY 0 + 76 100000 CRY1=100000 ;CARRY 1 + 77 040000 FOV=40000 ;FLOATING OVERFLOW + 78 020000 BIS=20000 ;BYTE INTERRUPT + 79 010000 USERF=10000 ;USER MODE FLAG + 80 004000 EXIOT=4000 ;USER PRIV I/O FLAG + 81 000100 FXU=100 ;FLOATING UNDERFLOW + 82 000040 DCK=40 ;DIVIDE CHECK + 83 + 84 + 85 ;MACROS + 86 + 87 ; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1) + 88 ; TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION + 89 + 90 DEFINE STOP (A)< + 91 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 92 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 93 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 94 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 95 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1> + 96 + 97 ; SFLAG - USED TO CLEAR ALL FLAGS THEN TO SET REQUESTED FLAG + 98 + 99 DEFINE SFLAG (A)< + 100 MOVSI 1,A + 101 JFCL 17,.+1 ;RESET ALL FLAGS + 102 JRST 2,.+1(1) ;SET A FLAG> +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 1 +PARAM KLM 1-Aug-77 08:33 *PARAM* CONSOLE DATA SWITCH ASSIGNMENTS, AUG 1,1977 SEQ 0010 + + 103 SUBTTL *PARAM* CONSOLE DATA SWITCH ASSIGNMENTS, AUG 1,1977 + 104 + 105 DEFINE S,<;*********************************************************************> + 106 + 107 S^;*********************************************************************^ + 108 ;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE) + 109 ;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE + 110 ;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS + 111 S^;*********************************************************************^ + 112 + 113 400000 ABORT== 400000 ;ABORT PROGRAM ON PASS COMPLETION + 114 200000 RSTART==200000 ;RESTART TEST, PRINT TOTALS + 115 100000 TOTALS==100000 ;PRINT TOTALS, CONTINUE + 116 + 117 040000 NOPNT== 040000 ;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED) + 118 020000 PNTLPT==020000 ;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE) + 119 010000 DING== 010000 ;RING BELL ON ERROR + 120 + 121 004000 LOOPER==004000 ;ENTER EXERCISE/CHECK LOOP ON ERROR + 122 002000 ERSTOP==002000 ;HALT ON TEST ERROR + 123 001000 PALERS==001000 ;PRINT ALL ERRORS + 124 + 125 000400 RELIAB==000400 ;RELIABILITY MODE + 126 000200 TXTINH==000200 ;INHIBIT ERROR TEXT + 127 000100 INHPAG==000100 ;INHIBIT PAGING + 128 + 129 000040 MODDVC==000040 ;MODIFY DEVICE CODE + 130 000020 INHCSH==000020 ;INHIBIT CACHE + 131 000010 OPRSEL==000010 ;OPERATOR SELECTION + 132 + 133 000004 CHAIN== 000004 ;CHAIN CONTROL SWITCH + 134 + 135 000002 KAHZ50==000002 ;KA10 50 HERTZ POWER + 136 + 137 ;SWITCH 17 RESERVED !!! +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 2 +PARAM KLM 1-Aug-77 08:33 *PARAM* PROGRAM/SUBROUTINE PARAMETERS, FEB 26,1976 SEQ 0011 + + 138 SUBTTL *PARAM* PROGRAM/SUBROUTINE PARAMETERS, FEB 26,1976 + 139 + 140 S^;*********************************************************************^ + 141 ;*SPECIAL SUBPROGRAM LINKAGES + 142 S^;*********************************************************************^ + 143 + 144 027772 FSELNK= 27772 ;FILE SELECT LINK + 145 027773 FRDLNK= 27773 ;FILE READ LINK + 146 027774 LDLNK= 27774 ;LOAD LINKAGE ADDRESS + 147 027775 DDTLNK= 27775 ;DDT LINKAGE ADDRESS + 148 027776 MODLNK= 27776 ;OPERATIONAL MODE CHECK LINKAGE ADDRESS + 149 027777 SUBLNK= 27777 ;SUBROUTINE LINKAGE ADDRESS + 150 + 151 S^;*********************************************************************^ + 152 ;*SPECIAL SUBROUTINE FATAL HALTS + 153 ;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE + 154 S^;*********************************************************************^ + 155 + 156 ;ADDRESS TAG REASON + 157 ;--------------------- + 158 + 159 ; 1010 NOEXEC ;PROGRAM NOT CODED FOR EXEC MODE OPERATION + 160 ; 1011 PLERR ;FATAL PUSH LIST POINTER ERROR + 161 ; 1012 PLERR1 ;INITIAL PUSH LIST POINTER ERROR + 162 ; 1013 MUOERR ;MUUO WITH LUUO HANDLER WIPED OUT + 163 ; 1014 DTEBER ;DTE20 INTERRUPT WITHOUT DOORBELL + 164 ; 1015 DTECER ;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET + 165 ; 1016 CPIERR ;CPU INITIALIZATION ERROR + 166 ; 1017 EOPERR ;END OF PROGRAM ERROR + 167 ; 1020 LUOERR ;INTERRUPT WITH LUUO HANDLER WIPED OUT + 168 + 169 S^;*********************************************************************^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 3 +PARAM KLM 1-Aug-77 08:33 *PARAM* PROGRAM/SUBROUTINE PARAMETERS, FEB 26,1976 SEQ 0012 + + 170 S^;*********************************************************************^ + 171 ;OPERATOR DEFINITIONS (NON-UUO'S) + 172 S^;*********************************************************************^ + 173 + 174 260740 000000 OPDEF GO [PUSHJ P,] ;SUBROUTINE CALL + 175 263740 000000 OPDEF RTN [POPJ P,] ;SUBROUTINE RETURN + 176 261740 000000 OPDEF PUT [PUSH P,] ;PUT DATA ON PUSH LIST + 177 262740 000000 OPDEF GET [POP P,] ;GET DATA FROM PUSH LIST + 178 254000 000000 OPDEF PJRST [JRST ] ;JRST TO ROUTINE THAT RTN'S + 179 254200 000000 OPDEF HALT [JRST 4,] ;DEFINITION FOR DDT + 180 254100 000000 OPDEF JRSTF [JRST 2,] ;DEFINITION FOR DDT + 181 254500 000000 OPDEF JEN [JRST 12,] ;DEFINITION FOR DDT + 182 + 183 S^;*********************************************************************^ + 184 ;*SUBROUTINE INITIALIZATION CALL + 185 S^;*********************************************************************^ + 186 + 187 265000 030011 OPDEF PGMINT [JSP 0,SBINIT] ;SUBROUTINE INITIALIZATION + 188 + 189 S^;*********************************************************************^ + 190 ;*HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION). + 191 S^;*********************************************************************^ + 192 + 193 037640 000004 OPDEF FATAL [37B8!15B12!4] ;FATAL PROGRAMMING HALT + 194 037600 000004 OPDEF ERRHLT [37B8!14B12!4] ;PROGRAM ERROR HALT + 195 + 196 S^;*********************************************************************^ + 197 ;*TERMINAL INPUT UUO'S + 198 ;*ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE + 199 ;*CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE. + 200 S^;*********************************************************************^ + 201 + 202 037000 000003 OPDEF TTICHR [37B8!0B12!3] ;TTY, INPUT ANY CHARACTER + 203 037040 000003 OPDEF TTIYES [37B8!1B12!3] ;TTY, NORMAL RETURN Y + 204 037100 000003 OPDEF TTINO [37B8!2B12!3] ;TTY, NORMAL RETURN N + 205 037140 000003 OPDEF TTIOCT [37B8!3B12!3] ;TTY, INPUT OCTAL WORD + 206 037200 000003 OPDEF TTIDEC [37B8!4B12!3] ;TTY, INPUT DECIMAL WORD + 207 037240 000003 OPDEF TTICNV [37B8!5B12!3] ;TTY, INPUT CONVERTABLE WORD + 208 037300 000003 OPDEF TTLOOK [37B8!6B12!3] ;TTY, KEYBOARD CHECK + 209 037340 000003 OPDEF TTALTM [37B8!7B12!3] ;TTY, ALT-MODE CHECK + 210 037400 000003 OPDEF TTSIXB [37B8!10B12!3] ;TTY, INPUT SIXBIT WORD + 211 037440 000003 OPDEF TTYINP [37B8!11B12!3] ;TTY, IMAGE MODE INPUT + 212 037500 000003 OPDEF TTICLR [37B8!12B12!3] ;TTY, CLEAR INPUT +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 4 +PARAM KLM 1-Aug-77 08:33 *PARAM* PROGRAM/SUBROUTINE PARAMETERS, FEB 26,1976 SEQ 0013 + + 213 ;*TERMINAL OUTPUT UUO'S. + 214 + 215 037000 000000 OPDEF PNTA [37B8!0B12!0] ;PRINT ASCII WORD + 216 037000 000001 OPDEF PNTAF [37B8!0B12!1] ;PRINT ASCII WORD FORCED + 217 037740 000000 OPDEF PNTAL [37B8!17B12!0] ;PRINT ASCIZ LINE + 218 037740 000001 OPDEF PNTALF [37B8!17B12!1] ;PRINT ASCIZ LINE FORCED + 219 037600 000003 OPDEF PSIXL [37B8!14B12!3] ;PRINT SIXBIT'Z LINE + 220 037640 000003 OPDEF PSIXLF [37B8!15B12!3] ;PRINT SIXBIT'Z LINE FORCED + 221 037000 000000 OPDEF PNTMSG [37B8!0B12!0] ;PRINT MESSAGE IMMEDIATE + 222 037040 000000 OPDEF PNTMSF [37B8!1B12!0] ;PRINT MESSAGE IMMEDIATE FORCED + 223 037100 000000 OPDEF PSIXM [37B8!2B12!0] ;PRINT SIXBIT'Z MSG IMMEDIATE + 224 037200 000000 OPDEF PSIXMF [37B8!4B12!0] ;PRINT SIXBIT'Z MSG IMM FORCED + 225 037000 000000 OPDEF PNTCI [37B8!0B12!0] ;PRINT CHARACTER IMMEDIATE + 226 037040 000000 OPDEF PNTCIF [37B8!1B12!0] ;PRINT CHARACTER IMMEDIATE FORCED + 227 037500 000000 OPDEF PNTCHR [37B8!12B12!0] ;PRINT CHARACTER + 228 037500 000001 OPDEF PNTCHF [37B8!12B12!1] ;PRINT CHARACTER FORCED + 229 037040 000000 OPDEF PNT1 [37B8!1B12!0] ;PRINT ONE OCTAL DIGIT + 230 037040 000001 OPDEF PNT1F [37B8!1B12!1] ;PRINT 1 OCTAL DIGIT FORCED + 231 037100 000000 OPDEF PNT2 [37B8!2B12!0] ;PRINT TWO OCTAL DIGITS + 232 037100 000001 OPDEF PNT2F [37B8!2B12!1] ;PRINT 2 OCTAL DIGITS FORCED + 233 037140 000000 OPDEF PNT3 [37B8!3B12!0] ;PRINT THREE OCTAL DIGITS + 234 037140 000001 OPDEF PNT3F [37B8!3B12!1] ;PRINT THREE OCTAL DIGITS FORCED + 235 037200 000000 OPDEF PNT4 [37B8!4B12!0] ;PRINT FOUR OCTAL DIGITS + 236 037200 000001 OPDEF PNT4F [37B8!4B12!1] ;PRINT FOUR OCTAL DIGITS FORCED + 237 037240 000000 OPDEF PNT5 [37B8!5B12!0] ;PRINT FIVE OCTAL DIGITS + 238 037240 000001 OPDEF PNT5F [37B8!5B12!1] ;PRINT FIVE OCTAL DIGITS FORCED + 239 037300 000000 OPDEF PNT6 [37B8!6B12!0] ;PRINT SIX OCTAL DIGITS + 240 037300 000001 OPDEF PNT6F [37B8!6B12!1] ;PRINT SIX OCTAL DIGITS FORCED + 241 037340 000000 OPDEF PNT7 [37B8!7B12!0] ;PRINT 7 OCTAL DIGITS + 242 037340 000001 OPDEF PNT7F [37B8!7B12!1] ;PRINT 7 OCTAL DIGITS FORCED + 243 037440 000000 OPDEF PNT11 [37B8!11B12!0] ;PRINT 11 OCTAL DIGITS + 244 037440 000001 OPDEF PNT11F [37B8!11B12!1] ;PRINT 11 OCTAL DIGITS FORCED. + 245 037400 000000 OPDEF PNTADR [37B8!10B12!0] ;PRINT PHYSICAL ADDRESS + 246 037400 000001 OPDEF PNTADF [37B8!10B12!1] ;PRINT PHYSICAL ADDRESS FORCED + 247 037600 000000 OPDEF PNTOCT [37B8!14B12!0] ;PRINT FULL WORD OCTAL + 248 037600 000001 OPDEF PNTOTF [37B8!14B12!1] ;PRINT FULL WORD OCTAL FORCED + 249 037540 000000 OPDEF PNTHW [37B8!13B12!0] ;PRINT OCTAL HALF WORDS, 6 SP 6 + 250 037540 000001 OPDEF PNTHWF [37B8!13B12!1] ;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED + 251 037700 000003 OPDEF PNTOCS [37B8!16B12!3] ;PRINT OCTAL, SUPPRESS LEADING 0'S + 252 037740 000003 OPDEF PNTOCF [37B8!17B12!3] ;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED + 253 037640 000000 OPDEF PNTDEC [37B8!15B12!0] ;PRINT DECIMAL, SUPRESS LEADING 0'S + 254 037640 000001 OPDEF PNTDCF [37B8!15B12!1] ;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED + 255 037700 000000 OPDEF PNTDS [37B8!16B12!0] ;PRINT DECIMAL, SPACES FOR LD 0'S + 256 037700 000001 OPDEF PNTDSF [37B8!16B12!1] ;PRINT DECIMAL, SPACES FOR LD 0'S FORCED +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 5 +PARAM KLM 1-Aug-77 08:33 *PARAM* PROGRAM/SUBROUTINE PARAMETERS, FEB 26,1976 SEQ 0014 + + 257 037200 000002 OPDEF PNTNM [37B8!4B12!2] ;PRINT PROGRAM NAME + 258 037000 000002 OPDEF PNTSIX [37B8!0B12!2] ;PRINT SIXBIT WORD + 259 037040 000002 OPDEF PNTSXF [37B8!1B12!2] ;PRINT SIXBIT WORD FORCED + 260 037240 000002 OPDEF DROPDV [37B8!5B12!2] ;CLOSE LOGICAL FILE, USER MODE + 261 037100 000002 OPDEF PNTCW [37B8!2B12!2] ;PRINT DF10 CONTROL WORD + 262 037140 000002 OPDEF PNTCWF [37B8!3B12!2] ;PRINT DF10 CONTROL WORD FORCED + 263 037000 030242 OPDEF PCRL [37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED + 264 037040 030242 OPDEF PCRLF [37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED + 265 037000 000040 OPDEF PSP [37B8!0B12!40] ;PRINT SPACE + 266 037040 000040 OPDEF PSPF [37B8!1B12!40] ;PRINT SPACE FORCED + 267 037000 030243 OPDEF PCRL2 [37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) + 268 037040 030243 OPDEF PCRL2F [37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED + 269 037040 000007 OPDEF PBELL [37B8!1B12!7] ;PRINT TTY BELL + 270 + 271 037040 000026 OPDEF PFORCE [37B8!1B12!26] ;PRINT FORCE, CONTROL O OVERRIDE + 272 + 273 DEFINE PMSG (ARG),< + 274 PSIXM [SIXBIT\ARG'_\]> + 275 + 276 DEFINE PMSGF (ARG),< + 277 PSIXMF [SIXBIT\ARG'_\]> + 278 + 279 ;*SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING + 280 ;* CONSERVES CORE OVER ASCIZ + 281 + 282 DEFINE SIXBTZ (ARG),< [SIXBIT\ARG'_\]> + 283 + 284 ;*CONSOLE SWITCH INPUT UUO. + 285 ;*READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF + 286 ;* USER MODE. + 287 + 288 037400 000002 OPDEF SWITCH [37B8!10B12!2] ;INPUT CONSOLE SWITCHES + 289 + 290 ;*CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION + 291 ;*EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR. + 292 + 293 037540 000004 OPDEF CLOKOP [37B8!13B12!4] ;CLOCK OPERATION UUO - PDP-11 CLOCK + 294 037200 000004 OPDEF MTROP [37B8!4B12!4] ;CLOCK OPERATION UUO - DK20 METER + 295 + 296 ;*KL10 ONLY CACHE OPERATION UUO'S + 297 + 298 037040 000004 OPDEF CINVAL [37B8!1B12!4] ;CACHE INVALIDATE + 299 037100 000004 OPDEF CFLUSH [37B8!2B12!4] ;CACHE FLUSH + 300 037140 000004 OPDEF CWRTBI [37B8!3B12!4] ;CACHE WRITE-BACK & INVALIDATE +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 6 +PARAM KLM 1-Aug-77 08:33 *PARAM* PROGRAM/SUBROUTINE PARAMETERS, FEB 26,1976 SEQ 0015 + + 301 ;*END OF PASS/PROGRAM UUOS + 302 + 303 ;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT, + 304 ;*DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC. + 305 + 306 037500 000004 OPDEF ENDUUO [37B8!12B12!4] ;UUO TO DISPLAY LIGHTS + 307 037700 000004 OPDEF EOPUUO [37B8!16B12!4] ;END OF PROGRAM UUO + 308 + 309 ;*MEMORY MANAGEMENT UUO'S + 310 ;*UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING, + 311 ;*ADDRESS CONVERSION, ETC... + 312 + 313 037000 000004 OPDEF MAPMEM [37B8!0B12!4] ;MAP MEMORY + 314 037500 000002 OPDEF MEMZRO [37B8!12B12!2] ;ZERO MEMORY + 315 037440 000002 OPDEF MEMSEG [37B8!11B12!2] ;SETUP MEMORY SEGMENT + 316 037540 000002 OPDEF MAPADR [37B8!13B12!2] ;VIRTUAL TO PHYSICAL ADR CONVERT + 317 037640 000002 OPDEF MAPCNK [37B8!15B12!2] ;MAP MEMORY CHUNK + 318 037600 000002 OPDEF MAPSET [37B8!14B12!2] ;SET KI10 EXEC PAGE MAP + 319 037740 000002 OPDEF MAPPNT [37B8!17B12!2] ;PRINT MEMORY MAP + 320 + 321 ;*DEVICE CODE MODIFICATION UUO + 322 ;*ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO + 323 ;*IOT'S TO A DIFFERENT DEVICE CODE. + 324 + 325 037340 000002 OPDEF MODPCU [37B8!7B12!2] ;MODIFY PERHIPERAL CODE, USER + 326 037300 000002 OPDEF MODPCP [37B8!6B12!2] ;MODIFY PERHIPERAL CODE, PROGRAM + 327 + 328 030000 IFNDEF MODDVL, + 329 030000 IFNDEF MODDVU, + 330 + 331 ;*"DIAMON" FILE SELECTION AND READ UUOS + 332 + 333 037240 000004 OPDEF FSELECT [37B8!5B12!4] ;FILE SELECTION + 334 037300 000004 OPDEF FREAD [37B8!6B12!4] ;FILE READ - ASCII DATA + 335 037340 000004 OPDEF FRD36 [37B8!7B12!4] ;FILE READ - 36 BIT DATA + 336 037400 000004 OPDEF FRD8 [37B8!10B12!4] ;FILE READ - 8 BIT DATA + 337 + 338 ;*KI10 ONLY UUO FOR PRINTING MARGIN VALUES + 339 + 340 037700 000002 OPDEF PNTMGN [37B8!16B12!2] ;PRINT MARGIN VALUE + 341 + 342 XLIST + 343 IFNDEF KLOLD, + 368 + 369 ;*A MACRO TO REPORT AN ERROR AND NOT LOOP + 370 + 371 DEFINE ERROR1 (FORMAT,CORECT,ACTUAL,F,D,ERR)< + 372 SALL + 373 ERUUO FORMAT,[T,,[SIXBIT\F'_\] + 374 CORECT,,ACTUAL + 375 [SIXBIT\D'_\],,ERR] + 376 XALL> + 377 + 378 >;END OF KLOLD CONDITIONAL + 379 + 380 XLIST + 381 LIST +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 1 +FIXED KLM 19-Jul-77 16:36 *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 SEQ 0017 + + 382 SUBTTL *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 + 383 + 384 030000 LOC 30000 + 385 + 386 S^;*********************************************************************^ + 387 ;*PROGRAM STARTING ADDRESSES + 388 ;*THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS + 389 ;*NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE + 390 ;*OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER + 391 ;*MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS. + 392 S^;*********************************************************************^ + 393 + 394 030000 254 00 1 00 027776 BEGIN: JRST @MODLNK ;STAND-ALONE START + 395 030001 254 00 0 00 030674 $START: JRST START ;MODE CHECK STARTING ADDRESS + 396 + 397 030002 254 00 1 00 027774 DIAGMN: JRST @LDLNK ;DIAGNOSTIC MONITOR START + 398 + 399 030003 254 00 1 00 027774 SYSEXR: JRST @LDLNK ;SYSTEM EXERCISER START + 400 + 401 030004 254 00 0 00 030674 SFSTRT: JRST SADR1 ;SPECIAL FEATURE START + 402 + 403 030005 254 00 0 00 030674 PFSTRT: JRST SADR2 ;POWER FAIL RESTART + 404 + 405 030006 254 00 0 00 030674 REENTR: JRST SADR3 ;REENTER START(USUALLY USER MODE ONLY) + 406 + 407 030007 SRTDDT: ;COMMONLY MISTAKEN NAME FOR "DDTSRT" + 408 030007 254 00 1 00 027775 DDTSRT: JRST @DDTLNK ;DDT START + 409 + 410 030010 254 00 0 00 030723 BEGIN1: JRST STARTA ;LOOP START(END OF PASS COMES HERE) + 411 030011 254 00 1 00 027777 SBINIT: JRST @SUBLNK ;PMGINT LINKAGE + 412 030012 000000 000000 RETURN: 0 ;RETURN ADDRESS STORAGE + 413 + 414 030013 254000 030674 START1: SADR7 ;OPTIONAL STARTING ADR/INSTRUCTIONS + 415 030014 254000 030674 START2: SADR8 ; " + 416 030015 254000 030674 START3: SADR9 ; " + 417 030016 254000 030674 START4: SADR10 ; " + 418 030017 254000 030674 START5: SADR11 ; " +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 2 +FIXED KLM 19-Jul-77 16:36 *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 SEQ 0018 + + 419 S^;*********************************************************************^ + 420 ;*PROGRAM FIXED PARAMETER AREA + 421 S^;*********************************************************************^ + 422 + 423 030020 444153 414500 PNTNAM: PAREA3 ;SIXBIT PROGRAM NAME + 424 030021 645560 000000 PNTEXT: PAREA4 ;SIXBIT PROGRAM EXTENSION + 425 030022 000000 000000 RANDBS: PAREA1 ;RANDOM BASE NUMBER + 426 030023 000000 000000 SWTEXR: PAREA2 ;SYSTEM EXERCISER SWITCHES + 427 030024 000000 001000 ITRCNT: ITERAT ;PROGRAM ITERATIONS + 428 030025 000000 030707 $PNAME: PGMNAM ;POINTER TO PROGRAMS NAME + 429 030026 000000 000003 $PVER: MCNVER,,DECVER ;MCN & DEC VERSION LEVEL + 430 030027 000000 030000 $MODVL: MODDVL ;DEVICE CODE CHANGE LOWER LIMIT + 431 030030 000000 030000 $MODVU: MODDVU ;DEVICE CODE CHANGE UPPER LIMIT + 432 030031 777777 777777 $EMODE: IFNDEF EXCASB,<0> IFDEF EXCASB,<-1> ;EXEC ALLOWED + 433 030032 777777 777777 $UMODE: IFNDEF USRASB,<0> IFDEF USRASB,<-1> ;USER ALLOWED + 434 030033 000000 000000 $DSKUP: IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1> ;DISK UPDATE MODE + 435 030034 000000 000000 $MMAP: IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1> ;ALLOW MEMORY RTNS + 436 030035 000000 000000 PAREA7: PAREA5 ;OPTIONAL PARAMETER + 437 030036 000000 000000 PAREA8: PAREA6 ;OPTIONAL PARAMETER + 438 + 439 S^;*********************************************************************^ + 440 ;*PROGRAM VARIABLE PARAMETER AREA + 441 S^;*********************************************************************^ + 442 + 443 030037 000000 000000 USER: 0 ; 0 = EXEC, -1 = USER MODE FLAG + 444 030040 000000 000000 KAIFLG: 0 ;PROCESSOR TYPE, 0 = KA10, -1 = KI10 + 445 030041 000000 000000 KLFLG: 0 ;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10 + 446 030042 777777 777777 MONFLG: -1 ;DIAG MONITOR SPECIAL USER FLAG + 447 030043 000000 000000 MONCTL: 0 ;DIAG MON/SYS EXR FLAG + 448 030044 000000 000000 MONTEN: 0 ;-1= LOADED BY 10 + 449 030045 000000 000000 CLOCKF: 0 ;CLOCK TICKED FLAG + 450 030046 000000 000000 CONSW: 0 ;CONSOLE SWITCH SETTINGS + 451 030047 000000 000000 PASCNT: 0 ;PROGRAM PASS COUNT + 452 030050 000000 000000 RUNFLG: 0 ;PROGRAM RUN FLAG + 453 030051 000000 000000 TESTPC: 0 ;SUBTEST PC + 454 030052 000000 000000 ERRPC: 0 ;ERROR PC + 455 030053 000000 000000 ERRTLS: 0 ;ERROR TOTALS + 456 030054 000000 000000 TICKS: 0 ;PROGRAM RUNNING TIME + 457 030055 000000 000000 MARGIN: 0 ;KI10 MARGIN WORD VALUE + 458 030056 000000 000000 $ONETM: 0 ;SUBROUTINE INITIALIZATION FLAG +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 3 +FIXED KLM 19-Jul-77 16:36 *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 SEQ 0019 + + 459 S^;*********************************************************************^ + 460 ;*SPECIAL PROGRAM DISPATCH ADDRESSES + 461 S^;*********************************************************************^ + 462 + 463 030057 037 12 0 00 000004 BEGEND: ENDUUO ;END OF PASS + 464 030060 254 00 0 00 030010 $BEND1: JRST BEGIN1 ;KEEP RUNNING PROGRAM + 465 030061 037 16 0 00 000004 $BEND2: EOPUUO ;END OF PROGRAM - NO RETURN + 466 030062 254000 030674 CNTLC: SADR5 ;CONTROL C XFER ADDRESS + 467 030063 254000 030674 ALTMGO: SADR6 ;ALTMODE XFER ADDRESS + 468 030064 CPOPJ1: ;SKIP RETURN + 469 030064 350 00 0 17 000000 UUOSKP: AOS (P) ;SKIP RETURN FROM UUO + 470 030065 CPOPJ: ;NON-SKIP REGULAR RETURN + 471 030065 263 17 0 00 000000 UUOEXT: RTN ;UUO RETURN + 472 030066 255 00 0 00 000000 UUORTN: JFCL ;ADDITIONAL USERS UUO ROUTINE + 473 030067 255 00 0 00 000000 $UORTX: JFCL ;ADDITIONAL UUO LINKAGE + 474 030070 255 00 0 00 000000 $UUOER: JFCL ;INITED AS (JRST $UOERX) + 475 030071 255 00 0 00 000000 $ITRHL: JFCL ;ADDITIONAL INTERRUPT LINKAGE + 476 030072 255 00 0 00 000000 $ITRX1: JFCL ; " + 477 030073 255 00 0 00 000000 $USRHL: JFCL ; " + 478 030074 255 00 0 00 000000 $RSRTX: JFCL ;ADDITIONAL POWER FAIL LINKAGE + 479 030075 255 00 0 00 000000 $RSRTY: JFCL ; " + 480 030076 255 00 0 00 000000 RESRT1: JFCL ; INITED AS (JRST RESRTX) + 481 030077 255 00 0 00 000000 RESRT2: JFCL ; " + 482 030100 255 00 0 00 000000 $PARER: JFCL ;ADDITIONAL PARITY ERROR LINKAGE + 483 030101 255 00 0 00 000000 ERMORE: JFCL ;ADDITIONAL ERROR HANDLER LINKAGE + 484 030102 254 04 0 00 030102 HALT . ;IMPROPER TRANSFER HALT + 485 + 486 030103 000000 000000 $PSHER: 0 ;INITED AS (JRST PSHERR) + 487 030104 000000 000000 ITRCH1: 0 ;PC & FLAGS OF CURRENT INTERRUPT + 488 030105 000000 000000 0 ;INITED AS (JRST $ITRC1) + 489 + 490 S^;*********************************************************************^ + 491 ;*PROCESSOR CONTROL STORAGE + 492 S^;*********************************************************************^ + 493 + 494 030106 000000 000000 $ACC0: 0 ;INTERRUPT SAVED AC0 + 495 030107 000000 000000 $SVPI: 0 ;INTERRUPT SAVED PI + 496 030110 000000 000000 $SVAPR: 0 ;INTERRUPT SAVED APR + 497 030111 000000 000000 $SVPAG: 0 ;INTERRUPT SAVED PAG (DATAI) + 498 030112 000000 000000 $SPAG1: 0 ;INTERRUPT SAVED PAG (CONI) + 499 + 500 030113 000000 000000 $SVUUO: 0 ;CURRENT USERS UUO + 501 030114 000000 000000 $SVUPC: 0 ;PC OF CURRENT USERS UUO + 502 + 503 030115 000000 000000 REPTU: 0 ;REPEAT UUO ITERATIONS + 504 030116 000000 000000 SCOPE: 0 ;ERROR HANDLER SCOPE LOOP FLAG + 505 030117 000000 000000 %CORFLG:0 ; " CORRECT FLAG + 506 030120 000000 000000 %COREC: 0 ; " CORRECT DATA + 507 030121 000000 000000 %ACTFL: 0 ; " ACTUAL FLAG + 508 030122 000000 000000 %ACTUL: 0 ; " ACTUAL DATA + 509 030123 000000 000000 %DISCR: 0 ; " DISCREPENCY DATA +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 4 +FIXED KLM 19-Jul-77 16:36 *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 SEQ 0020 + + 510 S^;*********************************************************************^ + 511 ;*UUO DISPATCH TABLE + 512 S^;*********************************************************************^ + 513 XLIST + 514 LIST + 515 030124 030070 030070 UUODIS: LUUO1,,$UUOER + 516 030125 030070 030070 LUUO3,,LUUO2 + 517 030126 030070 030070 LUUO5,,LUUO4 + 518 030127 030070 030070 LUUO7,,LUUO6 + 519 030130 030070 030070 LUUO11,,LUUO10 + 520 030131 030070 030070 LUUO13,,LUUO12 + 521 030132 030070 030070 LUUO15,,LUUO14 + 522 030133 030070 030070 LUUO17,,LUUO16 + 523 030134 030070 030070 LUUO21,,LUUO20 + 524 030135 030070 030070 LUUO23,,LUUO22 + 525 030136 030070 030070 LUUO25,,LUUO24 + 526 030137 030070 030070 LUUO27,,LUUO26 + 527 030140 030070 030070 LUUO31,,LUUO30 + 528 030141 030070 030070 LUUO33,,LUUO32 + 529 + 530 S^;*********************************************************************^ + 531 ;*MEMORY MANAGMENT STORAGE + 532 S^;*********************************************************************^ + 533 + 534 030142 000000 000000 DF22F: 0 ;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT + 535 030143 000000 000000 MAPNEW: 0 ;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING + 536 030144 000000 000000 MEMTOT: 0 ;TOTAL MEMORY SIZE IN K (1024.) + 537 030145 000000 000000 MEMLOW: 0 ;LOWEST USABLE MEMORY + 538 030146 MEMSIZ: BLOCK ^D41 ;MEMORY SEGMENT POINTER TABLE + 539 + 540 S^;*********************************************************************^ + 541 ;*PRINT CONTROL STORAGE + 542 S^;*********************************************************************^ + 543 + 544 030217 000000 000000 PNTFLG: 0 ;PRINT FLAG, -1 WHILE IN PRINT ROUTINE + 545 030220 000000 000000 PNTENB: 0 ;PRINT ENABLE + 546 030221 000000 000000 PDISF: 0 ;PRINT DISABLED FLAG + 547 030222 000000 000000 PNTINH: 0 ;INHIBIT PRINT INPUT CHECKS + 548 030223 000000 000000 PNTSPC: 0 ;PRINT SPACE CONTROL + 549 030224 000000 000000 OPTIME: 0 ;TYPE-IN WAIT TIME + 550 030225 000000 000000 $TWCNT: 0 ;TIME WAITED + 551 030226 000000 000000 $DVOFF: 0 ;LOGICAL DEVICE INITED FLAG + 552 030227 000000 000000 TTYFIL: 0 ;TTY EXEC FILLERS FLAG + 553 030230 000000 000000 TTYSPD: 0 ;TTY EXEC BAUD RATE + 554 030231 000000 000000 $TTCHR: 0 ;ACTUAL TYPED IN CHAR + 555 030232 000000 000000 $CHRIN: 0 ;UPPER CASED & PARITY STRIPPED CHAR + 556 030233 000000 000000 $TYPNB: 0 ;TYPED IN NUMBER + 557 030234 000000 000000 $CRLF: 0 ;FREE CR/LF FLAG + 558 030235 000000 000000 $TABF: 0 ;TAB CONVERSION FLAG + 559 030236 000000 000000 $FFF: 0 ;FORM FEED CONVERSION FLAG + 560 030237 000000 000000 $VTF: 0 ;VERTICAL TAB CONVERSION FLAG + 561 030240 000000 000000 USRLFF: 0 ;USER LF FILLERS + 562 030241 000000 000000 USRCRF: 0 ;USER CR FILLERS +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 5 +FIXED KLM 19-Jul-77 16:36 *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 SEQ 0021 + + 563 S^;*********************************************************************^ + 564 ;*THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED + 565 ;*TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS: + 566 ;* MOVEI NAME + 567 ;* PNTA ;OR PNTAF + 568 S^;*********************************************************************^ + 569 + 570 030242 CRLF: ASCII/ + 571 030242 015 012 000 000 000 / + 572 030243 CRLF2: ASCII/ + 573 + 574 030243 015 012 015 012 000 / + 575 030244 054 000 000 000 000 COMMA: ASCII/,/ + 576 030245 056 000 000 000 000 PERIOD: ASCII/./ + 577 030246 040 000 000 000 000 SPACE: ASCII/ / + 578 030247 011 000 000 000 000 TAB: ASCII/ / + 579 030250 MINUS: + 580 030250 055 000 000 000 000 HYPEN: ASCII/-/ + 581 030251 053 000 000 000 000 PLUS: ASCII/+/ + 582 030252 052 000 000 000 000 AST: ASCII/*/ + 583 030253 100 000 000 000 000 ATSIN: ASCII/@/ + 584 030254 050 000 000 000 000 LFP: ASCII/(/ + 585 030255 051 000 000 000 000 RTP: ASCII/)/ + 586 030256 007 0000000000 BELL: BYTE (7) 007 + 587 030257 077 000 000 000 000 QUEST: ASCII/?/ + 588 030260 057 000 000 000 000 SLASH: ASCII!/! + 589 030261 044 000 000 000 000 DOLLAR: ASCII/$/ + 590 030262 000000 000012 RADIX: ^D10 ;DECIMAL PRINT RADIX + 591 030263 000000 000040 RADLSP: 40 ;DECIMAL PRINT LEADING CHAR + 592 030264 000000 000012 RADLSC: ^D10 ;DECIMAL PRINT LEADING CHAR COUNT + 593 + 594 S^;*********************************************************************^ + 595 ;*USER MODE OUTPUT FILE INFORMATION + 596 S^;*********************************************************************^ + 597 + 598 030265 $OBUF: BLOCK 3 ;LOGICAL FILE OUTPUT BUFFER HEADER + 599 030270 60 62 51 56 64 00 $OUTNM: SIXBIT /PRINT/ ;FILE NAME + 600 030271 60 56 64 00 00 00 $OUTEX: SIXBIT /PNT/ ;FILE NAME EXTENSION + 601 030272 BLOCK 2 + 602 + 603 S^;*********************************************************************^ + 604 ;*DISK UPDATE MODE FILE INFORMATION + 605 S^;*********************************************************************^ + 606 + 607 030274 $IBUF: BLOCK 3 + 608 030277 60 62 51 56 64 00 $INNM: SIXBIT /PRINT/ + 609 030300 60 56 64 00 00 00 $INEXT: SIXBIT /PNT/ + 610 030301 BLOCK 2 +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 6 +FIXED KLM 19-Jul-77 16:36 *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 SEQ 0022 + + 611 S^;*********************************************************************^ + 612 ;*PUSHDOWN LIST CONTROL INFORMATION + 613 S^;*********************************************************************^ + 614 + 615 030303 777577 030303 PLIST: PLIST-PLISTE,,PLIST + 616 030304 PLISTS: BLOCK 200 + 617 030504 000000 000000 PLISTE: 0 ;END OF PUSHDOWN LIST + 618 + 619 S^;*********************************************************************^ + 620 ;*POWER LINE CLOCK FREQUENCY FLAG + 621 S^;*********************************************************************^ + 622 + 623 030505 000000 000000 CYCL60: 0 ;0 = 60, -1 = 50 CYCLE + 624 + 625 S^;*********************************************************************^ + 626 ;*KL10 CACHE CONTROL FLAGS + 627 S^;*********************************************************************^ + 628 + 629 030506 000000 000000 CSHFLG: 0 ;ALLOW CACHE IF 0 + 630 030507 000000 000000 CSHMEM: 0 ;CACHE MEMORY SEGMENTS IF 0 + 631 + 632 S^;*********************************************************************^ + 633 ;*NUMBER INPUT DIGIT FLAG + 634 S^;*********************************************************************^ + 635 + 636 030510 000000 000000 TTNBRF: 0 ;-1 IF ANY DIGIT TYPED + 637 + 638 S^;*********************************************************************^ + 639 ;*KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION + 640 S^;*********************************************************************^ + 641 + 642 030511 000000 000000 PVPAGI: 0 ;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION + 643 + 644 S^;*********************************************************************^ + 645 ;*ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS + 646 S^;*********************************************************************^ + 647 + 648 030512 000000 000000 %ERHI1: 0 ;IF NON-ZERO, XCT'D AT START OF %ERUUO + 649 030513 000000 000000 %ERHI2: 0 ;IF NON-ZERO, XCT'D AT END OF %ERUUO + 650 030514 000000 000000 %ERHI3: 0 ;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO + 651 + 652 S^;*********************************************************************^ + 653 ;*SPECIAL USERS UUO INTERCEPT INSTRUCTION + 654 S^;*********************************************************************^ + 655 + 656 030515 000000 000000 $$UUO: 0 ;IF NON-ZERO, XCT'D AT START OF $UORTN +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 7 +FIXED KLM 19-Jul-77 16:36 *FIXED* FIXED CONTROL AND DISPATCH STORAGE, JULY 19,1977 SEQ 0023 + + 657 S^;*********************************************************************^ + 658 ;*USER MODE MONITOR TYPE FLAG + 659 S^;*********************************************************************^ + 660 + 661 030516 000000 000000 MONTYP: 0 ;0 = TOPS10, -1 = TOPS20 + 662 + 663 S^;*********************************************************************^ + 664 ;*SPECIAL USERS MUUO INTERCEPT INSTRUCTION + 665 S^;*********************************************************************^ + 666 + 667 030517 000000 000000 $$MUUO: 0 ;IF NON-ZERO, XCT'D AT START OF MUUOER + 668 + 669 S^;*********************************************************************^ + 670 ;*SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION + 671 S^;*********************************************************************^ + 672 + 673 030520 000000 000000 $$OUTER:0 ;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR + 674 + 675 S^;*********************************************************************^ + 676 ;*"SWITCH" CALL USAGE CONTROL + 677 S^;*********************************************************************^ + 678 + 679 030521 000000 000000 $$TOGGLE:0 ;IF NON-ZERO, USE C(CONSW) FOR SWITCHES + 680 + 681 S^;*********************************************************************^ + 682 ;*SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS + 683 S^;*********************************************************************^ + 684 + 685 030522 000000 000000 $$TAX1: 0 ;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL + 686 030523 000000 000000 $$TAX2: 0 ;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL + 687 + 688 S^;*********************************************************************^ + 689 ;*SM10 (KS-10) PROCESSOR TYPE FLAG + 690 S^;*********************************************************************^ + 691 + 692 030524 000000 000000 SM10: 0 ;IF -1 THIS IS A KS-10 + 693 + 694 S^;*********************************************************************^ + 695 ;*RIGHT HALF SWITCHES PROMPT TABLE ADDRESS + 696 S^;*********************************************************************^ + 697 + 698 030525 000000 000000 SWPTAB: 0 ;0 = NO PROMPT, ADR = ADR OF SIXBIT PROMPT TABLE + 699 + 700 S^;*********************************************************************^ + 701 ;*SPECIAL FUTURE EXPANSION ROOM + 702 S^;*********************************************************************^ + 703 + 704 S^;*********************************************************************^ + 705 ;*END OF FIXED STORAGE + 706 S^;*********************************************************************^ + 707 + 708 030577 LOC 30577 + 709 030577 000000 000000 ENDFIX: 0 ;END OF FIXED STORAGE +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 1 +SPCCPU KLM 24-Oct-78 08:57 *SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76 SEQ 0024 + + 710 SUBTTL *SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76 + 711 + 712 ;NEW DEFINITIONS USED BY THE KL10 SUBROUTINE PACKAGE + 713 + 714 000000 AC0= 0 + 715 030000 DIAGNOS=30000 ;PDP-10 DIAGNOSTIC START ADDRESS + 716 010000 DDT= 10000 ;PDP-10 DDT START ADDRESS + 717 020000 DIAMON= 20000 ;PDP-10 DIAMON LOADER START ADDRESS + 718 020000 DONG11= 1B22 ;11 DOORBELL (FROM THE 10) + 719 + 720 ;DTE20 DEVICE CODES + 721 + 722 000200 DTE== 200 ;DTE0 + 723 000204 DTE0== 204 + 724 000204 DTE1== 204 + 725 000210 DTE2== 210 + 726 000214 DTE3== 214 + 727 + 728 ;KL10 EPT COMMUNICATION AREA + 729 + 730 000440 $STD= 440 ;PDP-10 DIAGNOSTIC START ADDRESS + 731 000441 $DDT= 441 ;PDP-10 DDT START ADDRESS + 732 000442 $STL= 442 ;PDP-10 LOADER START ADDRESS + 733 000443 $STM= 443 ;PDP-10 MONITOR START ADDRESS + 734 + 735 000444 $DTFLG= 444 ;DTE20 OPERATION COMPLETE FLAG + 736 000445 $DTCLK= 445 ;DTE20 CLOCK INTERRUPT FLAG + 737 000446 $DTCI= 446 ;DTE20 CLOCK INTERRUPT INSTRUCTION + 738 000447 $DTT11= 447 ;DTE20 10 TO 11 ARGUMENT + 739 000450 $DTF11= 450 ;DTE20 11 TO 10 ARGUMENT + 740 000451 $DTCMD= 451 ;DTE20 TO 11 COMMAND WORD + 741 000452 $DTSEQ= 452 ;DTE20 OPERATION SEQUENCE NUMBER + 742 000453 $DTOPR= 453 ;DTE20 OPERATIONAL DTE # + 743 000454 $DTCHR= 454 ;DTE20 LAST TYPED CHARACTER + 744 000455 $DTMTD= 455 ;DTE20 MONITOR TTY OUTPUT COMPLETE FLAG + 745 000456 $DTMTI= 456 ;DTE20 MONITOR TTY INPUT FLAG + 746 + 747 000457 $DTSWR= 457 ;DTE20 CONSOLE SWITCH REGISTER +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 2 +SPCCPU KLM 24-Oct-78 08:57 *SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76 SEQ 0025 + + 748 ;SPECIAL "FIXED" REASSIGNMENTS + 749 + 750 030600 $$LOC=. ;SAVE CURRENT LOCATION + 751 + 752 030000 LOC 30000 + 753 030000 254 00 0 00 030600 $$BEGIN:JRST $$START ;SETUP SPECIAL START + 754 030001 254 00 0 00 030600 JRST $$START ;"DIAMON" CHAIN START ADDRESS + 755 + 756 000440 LOC 440 + 757 000440 254 00 0 00 030000 $STD: JRST BEGIN ;SETUP FOR "STD" + 758 000443 LOC 443 + 759 000443 254 00 0 00 030626 $STM: JRST $SPEC ;SIMPLE RUN CONTROL + 760 + 761 030057 LOC 30057 + 762 030057 254 00 0 00 030631 $BEGEND:JRST $SPBEND ;SETUP SPECIAL "BEGEND" + 763 + 764 ;SPECIAL MUUO, TRAP & PAGE FAIL SETUP + 765 + 766 000420 LOC 420 + 767 000420 254 04 0 00 000420 $$420: HALT . ;KI10 PAGE FAIL + 768 000421 255 00 0 00 000000 $$421: JFCL ;OVERFLOW + 769 000422 254 04 0 00 000422 $$422: HALT . ;PUSHDOWN OVERFLOW + 770 000423 254 04 0 00 000423 $$423: HALT . ;TRAP 3 + 771 000424 000000 000000 $$424: 0 ;MMUO + 772 000425 000000 000000 $$425: 0 ;MMUO PC + 773 000426 000000 000000 $$426: 0 ;KI10-PAGE FAIL, KL10-PROCESS CONTEXT + 774 000427 254 04 0 00 000427 $$427: HALT . + 775 000430 000000 000427 $$430: 427 ;MMUO NEW PC'S + 776 000431 000000 000427 $$431: 427 + 777 000432 000000 000427 $$432: 427 + 778 000433 000000 000427 $$433: 427 + 779 000434 000000 000427 $$434: 427 + 780 000435 000000 000427 $$435: 427 + 781 000436 000000 000427 $$436: 427 + 782 000437 000000 000427 $$437: 427 + 783 + 784 000500 LOC 500 + 785 000500 000000 000000 $$500: 0 ;KL10 PAGE FAIL WORD + 786 000501 000000 000000 $$501: 0 ;KL10 PAGE FAIL PC + 787 000502 000000 000503 $$502: 503 ;KL10 PAGE FAIL NEW PC + 788 000503 254 04 0 00 000503 $$503: HALT . +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 3 +SPCCPU KLM 24-Oct-78 08:57 *SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76 SEQ 0026 + + 789 030600 LOC $$LOC ;RESET CURRENT LOCATION + 790 + 791 ;SPECIAL STARTUP SEQUENCE + 792 + 793 030600 402 00 0 00 030037 $$START:SETZM USER + 794 030601 265 00 0 00 030602 JSP 0,.+1 ;IN USER MODE ? + 795 030602 603 00 0 00 010000 TLNE 0,USERF + 796 030603 476 00 0 00 030037 SETOM USER ;YES, SET CONTROL WORD + 797 030604 336 00 0 00 030042 SKIPN MONFLG ;SPECIAL USER MODE ? + 798 030605 402 00 0 00 030037 SETZM USER ;YES, RUN AS EXEC + 799 030606 332 00 0 00 030037 SKIPE USER + 800 030607 254 00 0 00 030674 JRST START ;USER MODE, DON'T NEED CPU TYPE + 801 + 802 030610 336 00 0 00 030044 $STKIL: SKIPN MONTEN ;LOADED BY "DIAMON" ? + 803 030611 476 00 0 00 030024 SETOM ITRCNT ;NO, RUN FOREVER + 804 030612 402 00 0 00 030041 SETZM KLFLG ;ASSUME KI10 + 805 030613 200 01 0 00 033460 MOVE 1,[1,,1] + 806 030614 251 01 0 00 000001 BLT 1,1 ;HOPE THIS WORKS + 807 030615 316 01 0 00 033460 CAMN 1,[1,,1] ;IF AC NE 1,,1 AFTER BLT, KL10 + 808 030616 254 00 0 00 030674 JRST START ;KI10, NO ADDITIONAL SETUP + 809 + 810 030617 402 00 0 00 000444 $STKL: SETZM $DTFLG + 811 030620 402 00 0 00 000445 SETZM $DTCLK + 812 030621 200 00 0 00 000453 MOVE $DTOPR ;GET DTE # + 813 030622 436 00 0 00 030657 ORM $$DTE0 ;INSERT IN DTE I/O INSTS + 814 030623 436 00 0 00 030670 ORM $$DTE2 + 815 030624 476 00 0 00 030041 SETOM KLFLG ;SET KL10 CONTROL FLAG + 816 030625 254 00 0 00 030674 JRST START + 817 + 818 030626 200 00 0 00 033461 $SPEC: MOVE [JRST STARTA] ;SIMPLE RUN CONTROL + 819 030627 202 00 0 00 030633 MOVEM $SPB1 + 820 030630 254 00 0 00 030674 JRST START +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 4 +SPCCPU KLM 24-Oct-78 08:57 *SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76 SEQ 0027 + + 821 ;SPECIAL "BEGEND" ROUTINE + 822 + 823 030631 350 00 0 00 030047 $SPBEND:AOS PASCNT ;INCREMENT PASS COUNT + 824 030632 370 00 0 00 030024 SOS ITRCNT ;DECREMENT ITERATION COUNT + 825 030633 336 00 0 00 030037 $SPB1: SKIPN USER + 826 030634 254 00 0 00 030642 JRST $SPBEX ;EXEC MODE + 827 + 828 030635 332 00 0 00 030024 $SPBUS: SKIPE ITRCNT ;USER MODE, COMPLETED ? + 829 030636 254 00 0 00 030723 JRST STARTA ;NO, KEEP RUNNING + 830 030637 336 00 0 00 030044 SKIPN MONTEN ;DONE, LOADED BY "DIAMON" ? + 831 030640 047 00 0 00 000012 EXIT ;NO, RETURN TO MONITOR + 832 030641 254 00 1 00 030012 JRST @RETURN ;YES, RETURN TO "DIAMON" + 833 + 834 030642 332 00 0 00 030041 $SPBEX: SKIPE KLFLG + 835 030643 254 00 0 00 030650 JRST $SPBKL ;KL10 & EXEC + 836 030644 7 004 14 0 00 030024 DATAO PI,ITRCNT ;KI10 & EXEC, DISPLAY ITER COUNT + 837 030645 332 00 0 00 030024 SKIPE ITRCNT + 838 030646 254 00 0 00 030723 JRST STARTA ;NOT COMPLETED YET + 839 030647 254 00 1 00 030012 JRST @RETURN ;DONE + 840 + 841 030650 336 00 0 00 030024 $SPBKL: SKIPN ITRCNT + 842 030651 254 00 0 00 030663 JRST $SPKLD ;KL10, EXEC & COMPLETED + 843 + 844 030652 335 00 0 00 030043 SKIPGE MONCTL + 845 030653 254 00 0 00 030723 JRST STARTA ;"DIAMON" CONTROL + 846 030654 201 00 0 00 000404 MOVEI 0,404 ;NOTIFY PDP-11 OF END OF PASS + 847 030655 202 00 0 00 000451 MOVEM 0,$DTCMD + 848 030656 402 00 0 00 000444 SETZM $DTFLG + 849 030657 7 200 20 0 00 020000 $$DTE0: CONO DTE,DONG11 + 850 030660 336 00 0 00 000444 SKIPN $DTFLG ;WAIT TILL 11 RESPONDS + 851 030661 254 00 0 00 030660 JRST .-1 + 852 030662 254 00 0 00 030723 JRST STARTA ;KEEP RUNNING + 853 + 854 ;SPECIAL KL10 COMPLETED ROUTINE + 855 + 856 030663 332 00 0 00 030044 $SPKLD: SKIPE MONTEN + 857 030664 254 00 1 00 030012 JRST @RETURN ;LOADED BY "DIAMON" + 858 + 859 030665 201 00 0 00 000403 MOVEI 0,403 ;NOTIFY PDP-11 OF COMPLETION + 860 030666 202 00 0 00 000451 MOVEM 0,$DTCMD + 861 030667 402 00 0 00 000444 SETZM $DTFLG + 862 030670 7 200 20 0 00 020000 $$DTE2: CONO DTE,DONG11 + 863 030671 336 00 0 00 000444 SKIPN $DTFLG ;SHOULD NEVER HAPPEN + 864 030672 254 00 0 00 030671 JRST .-1 ;11 NEVER RETURNS ON END OF PROGRAM + 865 030673 254 04 0 00 030000 HALT BEGIN ;IF IT DOES, HALT. +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 1 +DAKAEM MAC 28-Dec-78 13:35 DIAGNOSTIC SECTION SEQ 0028 + + 866 SUBTTL DIAGNOSTIC SECTION + 867 + 868 030674 402 00 0 00 030037 START: SETZM USER# ;CLEAR USER CONTROL WORD + 869 030675 265 00 0 00 030676 JSP 0,.+1 ;GET FLAGS + 870 030676 603 00 0 00 010000 TLNE USERF ;IN USER MODE? + 871 030677 476 00 0 00 030037 SETOM USER ;YES, SET USER CONTROL WORD + 872 030700 336 00 0 00 030042 SKIPN MONFLG ;SPECIAL USER MODE? + 873 030701 402 00 0 00 030037 SETZM USER ;YES, CLEAR USER CONTROL WORD + 874 030702 336 00 0 00 030037 SKIPN USER + 875 030703 254 00 0 00 030723 JRST STARTA + 876 030704 331 00 0 00 030043 SKIPL MONCTL + 877 030705 051 03 0 00 030707 TTCALL 3,PGMNAM ;MENTION OUR NAME + 878 030706 254 00 0 00 030723 JRST STARTA + 879 + 880 030707 PGMNAM: ASCIZ/ + 881 030707 015 012 120 104 120 PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) [DAKAE] + 882 030710 055 061 060 040 113 + 883 030711 101 061 060 040 102 + 884 030712 101 123 111 103 040 + 885 030713 111 116 123 124 122 + 886 030714 125 103 124 111 117 + 887 030715 116 040 104 111 101 + 888 030716 107 116 117 123 124 + 889 030717 111 103 040 050 065 + 890 030720 051 040 133 104 101 + 891 030721 113 101 105 135 015 + 892 030722 012 000 000 000 000 / + 893 + 894 + 895 ;THE TEST IS DESIGNED FOR INITIAL DEBUGGING OF + 896 ;PROCESSOR HARDWARE AND TO DETECT (SOLID) FAILURES + 897 ;IN THE FIELD. + 898 + 899 030723 254 00 0 00 030724 STARTA: JRST .+1 +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 2 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSR INSTRUCTION SEQ 0029 + + 900 SUBTTL TEST OF JSR INSTRUCTION + 901 + 902 ;********** + 903 + 904 ;THIS TEST VERIFIES THAT JSR STORES THE FLAGS AND PC IN LOCATION E. + 905 ;IN THIS CASE, E IS CLEARED, CRY0 IS SET AND JSR IS EXECUTED. + 906 ;NEXT, E IS CHECKED FOR ITS CONTENTS NON-ZERO. IF C(E) IS NON-ZERO, + 907 ;THIS TEST PASSES. + 908 + 909 030724 C23000: SFLAG CRY0 ^;SET CRY0 FLAG + 910 + 911 030724 205 01 0 00 200000 MOVSI 1,CRY0 + 912 030725 255 17 0 00 030726 JFCL 17,.+1 ;RESET ALL FLAGS + 913 030726 254 02 0 01 030727 JRST 2,.+1(1) ;SET CRY0 FLAG + 914 030727 402 00 0 00 030731 SETZM .+2 ;PRELOAD E WITH 0 + 915 030730 264 00 0 00 030731 JSR .+1 ;*JSR SHOULD PLACE FLAGS AND PC INTO AC + 916 030731 000000 000000 0 ;E: PRESET TO 0, SHOULD RECEIVE FLAGS AND PC FROM JSR + 917 030732 336 00 0 00 030731 SKIPN .-1 ;PASS IF C(E) IS NON-ZERO. + 918 STOP^ + 919 030733 254 04 0 00 030734 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 920 030734 324 00 0 00 030735 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 921 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 922 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 923 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 924 + 925 ;********** + 926 + 927 ;THIS TEST VERIFIES THAT JSR IGNORES THE AC FIELD; + 928 ;HENCE, IT DOES NOT MODIFY THE SPECIFIED AC. + 929 ;IN THIS CASE, CRY0 IS SET. THE AC IS PRELOADED WITH -1,,-1 AND JSR IS EXECUTED. + 930 ;THE AC IS THEN CHECKED. IF C(AC)=-1,,-1, THIS TEST PASSES. + 931 + 932 030735 C23100: SFLAG CRY0 ^;SET CRY0 + 933 + 934 030735 205 01 0 00 200000 MOVSI 1,CRY0 + 935 030736 255 17 0 00 030737 JFCL 17,.+1 ;RESET ALL FLAGS + 936 030737 254 02 0 01 030740 JRST 2,.+1(1) ;SET CRY0 FLAG + 937 030740 474 01 0 00 000000 SETO 1, ;PRELOAD AC WITH -1,,-1 + 938 030741 264 01 0 00 030742 JSR 1,.+1 ;*JSR SHOULD NOT MODIFY THE AC + 939 030742 000000 000000 0 ;STORE PC + FLAGS HERE + 940 030743 312 01 0 00 033462 CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + 941 STOP^ + 942 030744 254 04 0 00 030745 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 943 030745 324 00 0 00 030746 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 944 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 945 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 946 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 947 + 948 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 3 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSR INSTRUCTION SEQ 0030 + + 949 ;THIS TEST VERIFIES THAT JSR STORES THE FLAGS IN E-LEFT HALF. + 950 ;IN THIS TEST, CRY0 IS SET, E IS CLEARED AND JSR IS EXECUTED. + 951 ;NEXT, C(E-LEFT) ARE PLACED INTO AC0 AND AC0 IS CHECKED FOR ITS CONTENTS NON-ZERO. + 952 ;IF C(AC0) ARE NON-ZERO, THIS TEST PASSES. + 953 + 954 030746 C23200: SFLAG CRY0 ^;SET CRY0 + 955 + 956 030746 205 01 0 00 200000 MOVSI 1,CRY0 + 957 030747 255 17 0 00 030750 JFCL 17,.+1 ;RESET ALL FLAGS + 958 030750 254 02 0 01 030751 JRST 2,.+1(1) ;SET CRY0 FLAG + 959 030751 402 00 0 00 030753 SETZM .+2 ;CLEAR E + 960 030752 264 00 0 00 030753 JSR .+1 ;*JSR SHOULD STORE FLAGS IN E + 961 030753 000000 000000 0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST) + 962 030754 510 00 0 00 030753 HLLZ .-1 ;PUT FLAGS INTO AC0 + 963 030755 336 00 0 00 000000 SKIPN ;PASS IF C(AC0) NON-ZERO + 964 STOP^ + 965 030756 254 04 0 00 030757 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 966 030757 324 00 0 00 030760 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 967 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 968 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 969 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 970 + 971 ;********** + 972 + 973 ;THIS TEST VERIFIES THAT JSR TRANSFERS CONTROL TO E+1. + 974 ;IN THIS CASE, CRY0 IS SET AND E AND AC0 CLEARED; THEN, JSR IS EXECUTED. + 975 ;IF JSR RESUMES CONTROL AT E INSTEAD OF E+1, AC0 WILL BE MODIFIED; + 976 ;HENCE, THE TEST WILL FAIL WHEN AC0 IS CHECKED FOR 0 BECAUSE + 977 ;C(E) IS DECODED AS A MOVE INSTRUCTION. + 978 + 979 030760 C23300: SFLAG CRY0 ^;SET CRY0 + 980 + 981 030760 205 01 0 00 200000 MOVSI 1,CRY0 + 982 030761 255 17 0 00 030762 JFCL 17,.+1 ;RESET ALL FLAGS + 983 030762 254 02 0 01 030763 JRST 2,.+1(1) ;SET CRY0 FLAG + 984 030763 403 00 0 00 030765 SETZB .+2 ;CLEAR AC0 AND E + 985 030764 264 00 0 00 030765 JSR .+1 ;*JSR SHOULD RESUME CONTROL AT E+1 + 986 030765 000000 000000 0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST) + 987 030766 332 00 0 00 000000 SKIPE 0 ;PASS IF C(AC0)=0 + 988 STOP^ + 989 030767 254 04 0 00 030770 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 990 030770 324 00 0 00 030771 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 991 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 992 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 993 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 994 + 995 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 4 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSR INSTRUCTION SEQ 0031 + + 996 ;THIS TEST VERIFIES THAT JSR JUMPS TO E+1 + 997 ;IN THIS CASE, AC0 IS CLEARED AND CRY0 IS SET; THEN, JSR .+2 IS EXECUTED. + 998 ;IF JSR DID NOT JUMP, ONES ARE LOADED WITH AC0; AND THE TEST FAILS. + 999 ;OTHERWISE, AC0 REMAINS CLEAR AND THE TEST PASSES + 1000 + 1001 030771 C23400: SFLAG CRY0 ^;SET CRY0 + 1002 + 1003 030771 205 01 0 00 200000 MOVSI 1,CRY0 + 1004 030772 255 17 0 00 030773 JFCL 17,.+1 ;RESET ALL FLAGS + 1005 030773 254 02 0 01 030774 JRST 2,.+1(1) ;SET CRY0 FLAG + 1006 030774 400 00 0 00 000000 SETZ ;CLEAR AC0 + 1007 030775 264 00 0 00 030777 JSR .+2 ;*JSR SHOULD JUMP + 1008 030776 474 00 0 00 000000 SETO ;LOAD AC0 WITH ONES IF JSR FAILED TO JUMP + 1009 030777 000000 000000 0 ;STORE FLAGS HERE + 1010 031000 332 00 0 00 000000 SKIPE ;PASS IF JSR JUMPED CORRECTLY + 1011 STOP^ + 1012 031001 254 04 0 00 031002 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1013 031002 324 00 0 00 031003 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1014 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1015 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1016 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1017 + 1018 ;********** + 1019 + 1020 ;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC + 1021 ;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION. + 1022 ;THIS TEST WILL FAIL IF JSR STORES E INSTEAD OF PC IN E - RIGHT HALF. + 1023 ;IN CASE OF FAILURE, AR PC EN AT ET2 WAS FAULTY. + 1024 + 1025 031003 C23500: SFLAG 0 ^;CLEAR ALL FLAGS + 1026 + 1027 031003 205 01 0 00 000000 MOVSI 1,0 + 1028 031004 255 17 0 00 031005 JFCL 17,.+1 ;RESET ALL FLAGS + 1029 031005 254 02 0 01 031006 JRST 2,.+1(1) ;SET 0 FLAG + 1030 031006 264 00 0 00 031010 JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT + 1031 031007 254 04 0 00 031007 HALT . ;JSR SHOULD SKIP OVER THIS HALT + 1032 031010 000000 000000 0 ;STORE FLAGS AND PC HERE + 1033 031011 550 00 0 00 031010 HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0 + 1034 031012 306 00 0 00 031010 CAIN .-2 ;FAIL IF C(AC0)=E + 1035 STOP^ + 1036 031013 254 04 0 00 031014 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1037 031014 324 00 0 00 031015 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1038 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1039 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1040 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1041 + 1042 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 5 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSR INSTRUCTION SEQ 0032 + + 1043 ;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC + 1044 ;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION. + 1045 ;THIS TEST WILL PASS IF JSR STORES PC IN E - RIGHT HALF. + 1046 + 1047 031015 264 00 0 00 031017 C23600: JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT + 1048 031016 254 04 0 00 031016 HALT . ;JSR SHOULD SKIP OVER THIS HALT + 1049 031017 000000 000000 0 ;STORE FLAGS AND PC HERE + 1050 031020 550 00 0 00 031017 HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0 + 1051 031021 302 00 0 00 031016 CAIE C23600+1 ;PASS IF C(AC0)=C23600+1 [PC] + 1052 STOP^ + 1053 031022 254 04 0 00 031023 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1054 031023 324 00 0 00 031024 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1055 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1056 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1057 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1058 + 1059 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 6 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSA INSTRUCTION SEQ 0033 + + 1060 SUBTTL TEST OF JSA INSTRUCTION + 1061 + 1062 ;********** + 1063 + 1064 ;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1. + 1065 ;IN THIS TEST, AC1 IS CLEARED AND A CAM 0,0 IS LOADED + 1066 ;INTO THE AC OF THE JSA INSTRUCTION. + 1067 ;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH ONES. AC1 IS CHECKED FOR ZEROS. + 1068 ;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP. + 1069 + 1070 031024 400 01 0 00 000000 C23700: SETZ 1, ;CLEAR AC1 + 1071 031025 200 00 0 00 033463 MOVE [CAM] ;LOAD CAM INTO AC0 + 1072 031026 266 00 0 00 031030 JSA .+2 ;*JSA SHOULD JUMP TO E+1 + 1073 031027 474 00 0 00 000001 SETO 1 ;JSA SHOULD JUMP OVER THIS INSTRUCTION + 1074 031030 000000 000000 0 ;PASS IF JSA JUMPED + 1075 031031 332 00 0 00 000001 SKIPE 1 + 1076 STOP^ + 1077 031032 254 04 0 00 031033 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1078 031033 324 00 0 00 031034 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1079 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1080 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1081 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1082 + 1083 ;********** + 1084 + 1085 ;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1. + 1086 ;IN THIS TEST, AC1 IS CLEARED AND A MOVEI 1,1234 IS LOADED + 1087 ;INTO THE AC OF THE JSA INSTRUCTION. + 1088 ;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH 0,,1234. AC1 IS CHECKED FOR ZEROS. + 1089 ;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP. + 1090 + 1091 031034 400 01 0 00 000000 C24000: SETZ 1, ;CLEAR AC1 + 1092 031035 200 00 0 00 033464 MOVE [MOVEI 1,1234] ;LOAD MOVEI 1,1234 INTO AC + 1093 031036 266 00 0 00 031037 JSA .+1 ;*JSA SHOULD JUMP TO E+1 + 1094 031037 000000 000000 0 ;JSA SHOULD JUMP OVER THIS LOCATION + 1095 031040 306 01 0 00 001234 CAIN 1,1234 ;FAIL IF JSA DID NOT JUMP OVER PREVIOUS INSTRUCTION + 1096 STOP^ + 1097 031041 254 04 0 00 031042 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1098 031042 324 00 0 00 031043 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1099 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1100 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1101 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1102 + 1103 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 7 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSA INSTRUCTION SEQ 0034 + + 1104 ;THIS TEST VERIFIES THAT JSA LOADS PC OF LOC OF JSA+1 INTO AC RIGHT. + 1105 ;THIS TEST WILL FAIL IF JSA LOADS E INTO AC RIGHT INSTEAD OF PC. + 1106 + 1107 031043 266 00 0 00 031045 C24100: JSA .+2 ;*JSA SHOULD LOAD PC INTO AC RIGHT + 1108 031044 254 04 0 00 031044 HALT . ;JSA SHOULD JUMP OVER THIS LOCATION + 1109 031045 000000 000000 0 ;JSA SHOULD JUMP OVER THIS LOCATION + 1110 031046 552 00 0 00 000001 HRRZM 1 ;PUT C(AC-RIGHT) INTO AC1 + 1111 031047 306 01 0 00 031045 CAIN 1,.-2 ;FAIL IF E WAS LOADED INTO AC-RIGHT INSTEAD OF PC + 1112 STOP^ + 1113 031050 254 04 0 00 031051 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1114 031051 324 00 0 00 031052 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1115 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1116 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1117 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1118 + 1119 ;********** + 1120 + 1121 ;THIS TEST VERIFIES THAT JSA PLACES C(AC) INTO E + 1122 ;THIS TEST WILL FAIL IF EITHER 0,,E OR 0,,PC IS LOADED + 1123 ;INTO E INSTEAD OF C(AC) + 1124 + 1125 031052 403 00 0 00 031054 C24200: SETZB .+2 ;CLEAR AC,E + 1126 031053 266 00 0 00 031054 JSA .+1 ;*JSA SHOULD LOAD C(AC) [ZEROS] INTO E + 1127 031054 000000 000000 0 ;JSA SHOULD PLACE ZEROS HERE + 1128 031055 200 01 0 00 031054 MOVE 1,.-1 ;SAVE C(AC) + 1129 031056 306 01 0 00 031054 CAIN 1,.-2 ;FAIL IF JSA LOADED 0,,E OR 0,,PC INTO E + 1130 STOP^ + 1131 031057 254 04 0 00 031060 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1132 031060 324 00 0 00 031061 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1133 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1134 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1135 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1136 + 1137 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 8 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSA INSTRUCTION SEQ 0035 + + 1138 ;THIS TEST VERIFIES THAT JSA PLACES PC INTO AC-RIGHT + 1139 ;THIS TEST WILL FAIL IF PC IS NOT LOADED INTO AC-RIGHT + 1140 + 1141 031061 201 00 0 00 777777 C24300: MOVEI -1 ;PRELOAD AC WITH 0,,-1 + 1142 031062 266 00 0 00 031063 JSA .+1 ;*JSA SHOULD PLACE E,,PC INTO THE AC + 1143 031063 000000 000000 0 ;JSA SHOULD PLACE C(AC) HERE + 1144 031064 606 00 0 00 777777 TRNN -1 ;FAIL IF AR LT AR RT EN FAILED + 1145 STOP^ + 1146 031065 254 04 0 00 031066 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1147 031066 324 00 0 00 031067 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1148 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1149 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1150 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1151 + 1152 ;********** + 1153 + 1154 ;THIS TEST VERIFIES THAT JSA PLACES THE PC OF THE LOCATION OF JSA+1 IN AC-RIGHT + 1155 ;THIS TEST FAILS IF A PC WAS NOT LOADED INTO AC RIGHT + 1156 + 1157 031067 400 00 0 00 000000 C24400: SETZ ;CLEAR AC + 1158 031070 266 00 0 00 031071 JSA .+1 ;*JSA SHOULD LOAD PC INTO AC - RIGHT + 1159 031071 000000 000000 0 ;JSA SHOULD PLACE C(AC) HERE + 1160 031072 606 00 0 00 777777 TRNN -1 ;PASS IF AC - RIGHT IS NON-ZERO + 1161 STOP^ + 1162 031073 254 04 0 00 031074 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1163 031074 324 00 0 00 031075 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1164 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1165 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1166 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1167 + 1168 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 9 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSA INSTRUCTION SEQ 0036 + + 1169 ;THIS TEST VERIFIES THAT JSA PLACES IN AC-LEFT + 1170 ;THIS TEST FAILS IF JSA LOADS PC INSTEAD OF E INTO AC-LEFT + 1171 + 1172 031075 266 00 0 00 031077 C24500: JSA .+2 ;*JSA SHOULD LOAD E INTO AC-LEFT + 1173 031076 254 04 0 00 031076 HALT . ;JSA SHOULD JUMP OVER THIS INSTRUCTION + 1174 031077 000000 000000 0 ;E: + 1175 031100 556 00 0 00 000001 HLRZM 1 ;SAVE C(AC - LEFT) + 1176 031101 306 01 0 00 031076 CAIN 1,.-3 ;FAIL IF JSA LOADED PC INSTEAD OF E INTO AC-LEFT + 1177 STOP^ + 1178 031102 254 04 0 00 031103 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1179 031103 324 00 0 00 031104 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1180 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1181 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1182 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1183 + 1184 ;********** + 1185 + 1186 ;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC + 1187 ;FIRST, THE AC IS PRELOADED WITH -1,,-1; THEN, JSA IS EXECUTED. + 1188 ;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES + 1189 + 1190 031104 474 00 0 00 000000 C24600: SETO ;PRELOAD AC WITH -1,,-1 + 1191 031105 266 00 0 00 031107 JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC + 1192 031106 254 04 0 00 031106 HALT . ;JSA SHOULD JUMP OVER HERE, PC: + 1193 031107 000000 000000 0 ;JSA SHOULD STORE C(AC) HERE, E: + 1194 031110 312 00 0 00 033465 CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC + 1195 STOP^ + 1196 031111 254 04 0 00 031112 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1197 031112 324 00 0 00 031113 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1198 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1199 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1200 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1201 + 1202 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 10 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSA INSTRUCTION SEQ 0037 + + 1203 ;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC + 1204 ;FIRST, THE AC IS PRELOADED WITH 0 JSA IS EXECUTED. + 1205 ;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES + 1206 + 1207 031113 400 00 0 00 000000 C24700: SETZ ;PRELOAD AC WITH 0 + 1208 031114 266 00 0 00 031116 JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC + 1209 031115 254 04 0 00 031115 HALT . ;JSA SHOULD JUMP OVER HERE, PC: + 1210 031116 000000 000000 0 ;JSA SHOULD STORE C(AC) HERE, E: + 1211 031117 312 00 0 00 033466 CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC + 1212 STOP^ + 1213 031120 254 04 0 00 031121 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1214 031121 324 00 0 00 031122 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1215 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1216 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1217 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1218 + 1219 ;********** + 1220 + 1221 ;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. + 1222 ;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES; + 1223 ;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0, + 1224 ;THIS TEST PASSES. + 1225 + 1226 031122 400 00 0 00 000000 C25000: SETZ ;CLEAR AC + 1227 031123 476 00 0 00 031125 SETOM .+2 ;PRELOAD E WITH -1,,-1 + 1228 031124 266 00 0 00 031125 JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 1229 031125 000000 000000 0 ;E: SHOULD GET C(AC) FROM JSA + 1230 031126 332 00 0 00 031125 SKIPE .-1 ;PASS IF C(E)=0 + 1231 STOP^ + 1232 031127 254 04 0 00 031130 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1233 031130 324 00 0 00 031131 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1234 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1235 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1236 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1237 + 1238 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 11 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSA INSTRUCTION SEQ 0038 + + 1239 ;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. + 1240 ;AC IS FIRST PRELOADED WITH -1,,-1 AND E IS CLEARED; + 1241 ;THEN, JSA IS EXECUTED. E IS CHECKED FOR -1,,-1. IF C(E)=-1,,-1, + 1242 ;THIS TEST PASSES. + 1243 + 1244 031131 477 00 0 00 000001 C25100: SETOB 1 ;PRELOAD AC -1,,-1 + 1245 031132 402 00 0 00 031134 SETZM .+2 ;PRELOAD E WITH 0 + 1246 031133 266 00 0 00 031134 JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 1247 031134 000000 000000 0 ;E: SHOULD GET C(AC) FROM JSA + 1248 031135 312 01 0 00 031134 CAME 1,.-1 ;PASS IF C(E)=-1,,-1 + 1249 STOP^ + 1250 031136 254 04 0 00 031137 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1251 031137 324 00 0 00 031140 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1252 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1253 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1254 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1255 + 1256 ;********** + 1257 + 1258 ;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. + 1259 ;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES; + 1260 ;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0, + 1261 ;THIS TEST PASSES. + 1262 + 1263 031140 201 00 0 00 777777 C25200: MOVEI -1 ;PRELOAD AC WITH 0,,-1 + 1264 031141 266 00 0 00 031142 JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 1265 031142 000000 000000 0 ;E: SHOULD GET C(AC) FROM JSA + 1266 031143 200 01 0 00 031142 MOVE 1,.-1 ;PASS IF C(E)=0,,-1 + 1267 031144 302 01 0 00 777777 CAIE 1,-1 + 1268 STOP^ + 1269 031145 254 04 0 00 031146 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1270 031146 324 00 0 00 031147 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1271 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1272 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1273 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1274 + 1275 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 12 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JSA INSTRUCTION SEQ 0039 + + 1276 ;THIS TEST VERIFIES THAT JSA DOES NOT MODIFY AC+1 + 1277 ;IN THIS TEST, AC+1 IS PRELOADED WITH -1,,-1; THEN JSA IS EXECUTED + 1278 ;AC+1 IS THEN CHECKED FOR ITS ORIGINAL CONTENTS, -1,,-1. + 1279 ;IF C(AC+1)=-1,,-1, THIS TEST PASSES + 1280 + 1281 031147 476 00 0 00 000001 C25300: SETOM 1 ;PRELOAD AC+1 WITH -1,,-1 + 1282 031150 266 00 0 00 031151 JSA .+1 ;*JSA SHOULD NOT MODIFY AC+1 + 1283 031151 310 00 0 00 000000 CAM ;JSA SHOULD JUMP OVER THIS, E:PC: + 1284 031152 312 01 0 00 033462 CAME 1,[-1] ;PASS IF AC+1 WAS NOT MODIFIED BY JSA + 1285 STOP^ + 1286 031153 254 04 0 00 031154 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1287 031154 324 00 0 00 031155 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1288 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1289 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1290 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1291 + 1292 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 13 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JRA INSTRUCTION SEQ 0040 + + 1293 SUBTTL TEST OF JRA INSTRUCTION + 1294 + 1295 ;********** + 1296 + 1297 ;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E + 1298 ;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + 1299 + 1300 031155 200 00 0 00 033467 C25400: MOVE [JRST .+4] ;PRELOAD AC0 WITH JRST .+4 + 1301 031156 205 01 0 00 031160 MOVSI 1,.+2 ;PRELOAD AC WITH E,,0 + 1302 031157 267 01 0 00 031160 JRA 1,.+1 ;*JRA SHOULD JUMP TO NEXT INSTRUCTION + 1303 031160 334 00 0 00 000000 SKIPA ;PASS IF JRA JUMPS TO E + 1304 STOP^ + 1305 031161 254 04 0 00 031162 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1306 031162 324 00 0 00 031163 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1307 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1308 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1309 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1310 + 1311 ;********** + 1312 + 1313 ;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E + 1314 ;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + 1315 + 1316 031163 205 00 0 00 031166 C25500: MOVSI .+3 ;PRELOAD AC WITH E+1 + 1317 031164 267 00 0 00 031165 JRA .+1 ;*JRA SHOULD JUMP TO NEXT SEQUENTIAL INSTRUCTION + 1318 031165 334 00 0 00 000000 SKIPA ;PASS IF JRA JUMPS TO E + 1319 STOP^ + 1320 031166 254 04 0 00 031167 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1321 031167 324 00 0 00 031170 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1322 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1323 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1324 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1325 + 1326 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 14 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JRA INSTRUCTION SEQ 0041 + + 1327 ;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E + 1328 ;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + 1329 + 1330 031170 403 00 0 00 000001 C25600: SETZB 1 ;PRELOAD AC0, AC1 WITH ZEROS + 1331 031171 267 00 0 00 031173 JRA .+2 ;*JRA SHOULD JUMP OVER NEXT SEQUENTIAL INSTRUCTION + 1332 031172 474 01 0 00 000000 SETO 1, ;LOAD AC1 WITH ONES IF JRA DOES NOT JUMP + 1333 031173 332 00 0 00 000001 SKIPE 1 ;PASS IF JRA JUMPED + 1334 STOP^ + 1335 031174 254 04 0 00 031175 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1336 031175 324 00 0 00 031176 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1337 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1338 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1339 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1340 + 1341 ;********** + 1342 + 1343 ;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC AND JUMPS TO E + 1344 ;THIS TEST FAILS IF JRA JUMPS TO E+1 OR DOES NOT LOAD THE AC CORRECTLY. + 1345 + 1346 031176 400 00 0 00 000000 C25700: SETZ ;CLEAR AC + 1347 031177 267 00 0 00 031200 JRA .+1 ;*JRA SHOULD PLACE 0 INTO THE AC AND JUMP .+1 + 1348 031200 332 00 0 00 000000 SKIPE ;PASS IF AC WAS LOADED CORRECTLY + 1349 ;AND JRA JUMPED CORRECTLY. + 1350 STOP^ + 1351 031201 254 04 0 00 031202 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1352 031202 324 00 0 00 031203 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1353 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1354 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1355 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1356 + 1357 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 15 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JRA INSTRUCTION SEQ 0042 + + 1358 ;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC + 1359 ;FIRST, THE AC IS PRELOADED WITH 1,,2 AND AC1 AND AC2 ARE + 1360 ;INITIALIZED WITH THEIR RESPECTIVE ADDRESSES; JRA IS EXECUTED, AND + 1361 ;THE AC IS CHECKED FOR 0,,1, THE ORIGINAL C(C(AC-LEFT)). IF C(AC)=0,,1, + 1362 ;THIS TEST PASSES + 1363 + 1364 031203 200 00 0 00 033470 C26200: MOVE [XWD 1,2] ;PRELOAD AC WITH 1,,2 + 1365 031204 201 01 0 00 000001 MOVEI 1,1 ;INITIALIZE AC1 WITH 0,,1 + 1366 031205 201 02 0 00 000002 MOVEI 2,2 ;INITIALIZE AC2 WITH 0,,2 + 1367 031206 267 00 0 00 031207 JRA .+1 ;*JRA SHOULD PLACE 0,,1 INTO THE AC + 1368 031207 302 00 0 00 000001 CAIE 1 ;PASS IF C(AC)=0,,1 + 1369 STOP^ + 1370 031210 254 04 0 00 031211 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1371 031211 324 00 0 00 031212 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1372 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1373 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1374 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1375 + 1376 ;********** + 1377 + 1378 ;THIS TEST VERIFIES THAT JRA CAN RESTORE AC0 FROM AC0 WHEN AC0 IS THE + 1379 ;SPECIFIED AC AND C(AC0-LEFT)=0. + 1380 ;FIRST, AC0 IS PRELOADED AND JRA IS EXECUTED. THEN, AC0 IS CHECKED FOR + 1381 ;ITS INITIAL CONTENTS. IF THE RESULT IN AC0, IS CORRECT, THIS TEST PASSES. + 1382 + 1383 031212 551 00 0 00 033471 C26300: HRRZI [135531,,246642] ;PRELOAD AC0 WITH 0,, LITERAL ADDRESS + 1384 031213 267 00 0 00 031214 JRA .+1 ;*JRA SHOULD PLACE C(AC0) INTO AC0 + 1385 031214 302 00 0 00 033471 CAIE [135531,,246642] ;PASS IF JRA PLACED C(AC0) INTO AC0 + 1386 STOP^ + 1387 031215 254 04 0 00 031216 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1388 031216 324 00 0 00 031217 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1389 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1390 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1391 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1392 + 1393 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 16 +DAKAEM MAC 28-Dec-78 13:35 TEST OF JRA INSTRUCTION SEQ 0043 + + 1394 ;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE + 1395 ;SPECIFIED AC. + 1396 ;FIRST, AC0 IS PRELOADED WITH [LITERAL ADDRESS ,,0] AND JRA IS EXECUTED. THEN, + 1397 ;AC0 IS CHECKED FOR THE SPECIFIED LITERAL, 135246,,246135. IF + 1398 ;C(AC0)=135246,,246135, THE TEST PASSES. + 1399 + 1400 031217 515 00 0 00 033472 C26400: HRLZI [135246,,246135] ;PRELOAD AC0 WITH [LITERAL ADDRESS ,,0] + 1401 031220 267 00 0 00 031221 JRA .+1 ;*JRA SHOULD PLACE 135246,,246135 INTO AC0 + 1402 031221 312 00 0 00 033472 CAME [135246,,246135];PASS IF C(AC0)=135246,,246135 + 1403 STOP^ + 1404 031222 254 04 0 00 031223 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1405 031223 324 00 0 00 031224 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1406 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1407 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1408 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1409 + 1410 ;********** + 1411 + 1412 ;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE + 1413 ;SPECIFIED AC. + 1414 ;FIRST, AC0 IS PRELOADED WITH [-1,, ADDRESS OF JCA INSTRUCTION] AND JRA IS EXECUTED. + 1415 ;THEN, AC0 IS CHECKED FOR THE JRA INSTRUCTION. IF + 1416 ;C(AC0)= THE JRA INSTRUCTION, THE TEST PASSES. + 1417 + 1418 031224 525 00 0 00 031225 C26500: HRLOI .+1 ;PRELOAD AC WITH -1,, ADDRESS OF JRA INSTRUCTION + 1419 031225 267 00 0 00 031226 JRA .+1 ;*JRA SHOULD PLACE ITSELF INTO AC0 + 1420 031226 312 00 0 00 031225 CAME .-1 ;PASS IF AC CONTAINS JRA INSTRUCTION + 1421 STOP^ + 1422 031227 254 04 0 00 031230 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1423 031230 324 00 0 00 031231 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1424 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1425 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1426 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1427 + 1428 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 17 +DAKAEM MAC 28-Dec-78 13:35 TESTS OF BIS FLAG SEQ 0044 + + 1429 SUBTTL TESTS OF BIS FLAG + 1430 + 1431 ;********** + 1432 + 1433 ;THIS TEST VERIFIES THAT JRST 2, CAN CLEAR BIS + 1434 ;FIRST, BIS IS SET VIA JRST 2, ;THEN, BIS IS CLEARED VIA JRST 2,. + 1435 ;THE FLAGS ARE SAVED AND BIS IS CHECKED. THIS TEST PASSES IF BIS IS RESET; + 1436 ;OTHERWISE JRST 2, FAILED TO RESET BIS. + 1437 + 1438 031231 C26600: SFLAG BIS ^;SET BIS FLAG + 1439 + 1440 031231 205 01 0 00 020000 MOVSI 1,BIS + 1441 031232 255 17 0 00 031233 JFCL 17,.+1 ;RESET ALL FLAGS + 1442 031233 254 02 0 01 031234 JRST 2,.+1(1) ;SET BIS FLAG + 1443 SFLAG ^;*RESET BIS FLAG + 1444 + 1445 031234 205 01 0 00 000000 MOVSI 1, + 1446 031235 255 17 0 00 031236 JFCL 17,.+1 ;RESET ALL FLAGS + 1447 031236 254 02 0 01 031237 JRST 2,.+1(1) ;SET FLAG + 1448 031237 265 00 0 00 031240 JSP .+1 ;SAVE FLAGS + 1449 031240 603 00 0 00 020037 TLNE BIS+37 ;PASS IF BIS FLAG IS RESET + 1450 STOP^ + 1451 031241 254 04 0 00 031242 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1452 031242 324 00 0 00 031243 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1453 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1454 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1455 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1456 + 1457 ;********** + 1458 + 1459 ;THIS TEST VERIFIES THAT JRST 2, CAN SET BIS. + 1460 ;FIRST, BIS IS SET VIA JRST 2, AND THE FLAGS ARE SAVED. + 1461 ;BIS IS THEN CHECKED. IF BIS IS SET, THIS TEST PASSES. + 1462 + 1463 031243 C26700: SFLAG BIS ^;*SET BIS FLAG VIA JRST + 1464 + 1465 031243 205 01 0 00 020000 MOVSI 1,BIS + 1466 031244 255 17 0 00 031245 JFCL 17,.+1 ;RESET ALL FLAGS + 1467 031245 254 02 0 01 031246 JRST 2,.+1(1) ;SET BIS FLAG + 1468 031246 265 00 0 00 031247 JSP .+1 ;SAVE FLAGS + 1469 031247 607 00 0 00 020000 TLNN BIS ;PASS IF BIS FLAG IS SET + 1470 STOP^ + 1471 031250 254 04 0 00 031251 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1472 031251 324 00 0 00 031252 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1473 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1474 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1475 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1476 + 1477 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 18 +DAKAEM MAC 28-Dec-78 13:35 TESTS OF BIS FLAG SEQ 0045 + + 1478 ;THIS TEST VERIFIES THAT JSR ALWAYS RESETS BIS. + 1479 ;FIRST BIS IS SET; THEN JSR IS EXECUTED. THE FLAGS ARE + 1480 ;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSR, THIS TEST PASSES. + 1481 + 1482 031252 C27000: SFLAG BIS ^;SET BIS + 1483 + 1484 031252 205 01 0 00 020000 MOVSI 1,BIS + 1485 031253 255 17 0 00 031254 JFCL 17,.+1 ;RESET ALL FLAGS + 1486 031254 254 02 0 01 031255 JRST 2,.+1(1) ;SET BIS FLAG + 1487 031255 264 00 0 00 031256 JSR .+1 ;*JSR SHOULD RESET BIS + 1488 031256 000000 000000 0 ;JSR SAVES FLAGS HERE + 1489 031257 265 00 0 00 031260 JSP .+1 ;SAVE FLAGS + 1490 031260 603 00 0 00 020000 TLNE BIS ;PASS IF BIS FLAG IS RESET + 1491 STOP^ + 1492 031261 254 04 0 00 031262 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1493 031262 324 00 0 00 031263 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1494 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1495 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1496 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1497 + 1498 ;********** + 1499 + 1500 ;THIS TEST VERIFIES THAT JSP ALWAYS RESETS BIS. + 1501 ;FIRST BIS IS SET; THEN JSP IS EXECUTED. THE FLAGS ARE + 1502 ;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSP, THIS TEST PASSES. + 1503 + 1504 031263 C27001: SFLAG BIS ^;SET BIS + 1505 + 1506 031263 205 01 0 00 020000 MOVSI 1,BIS + 1507 031264 255 17 0 00 031265 JFCL 17,.+1 ;RESET ALL FLAGS + 1508 031265 254 02 0 01 031266 JRST 2,.+1(1) ;SET BIS FLAG + 1509 031266 265 00 0 00 031267 JSP .+1 ;*JSP SHOULD RESET BIS + 1510 031267 265 00 0 00 031270 JSP .+1 ;SAVE FLAGS + 1511 031270 603 00 0 00 020000 TLNE BIS ;PASS IF BIS FLAG IS RESET + 1512 STOP^ + 1513 031271 254 04 0 00 031272 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1514 031272 324 00 0 00 031273 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1515 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1516 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1517 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1518 + 1519 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 19 +DAKAEM MAC 28-Dec-78 13:35 TESTS OF BIS FLAG SEQ 0046 + + 1520 ;THIS TEST VERIFIES THAT THE BITS IN POSITIONS 8, 9 AND 10 ARE CLEARABLE. + 1521 ;FIRST, THE ARITHMETIC FLAGS ARE CLEARED; + 1522 ;THEN, BITS 8, 9 AND 10 OF THE PC-WORD IS EXAMINED. + 1523 ;IF ANY OF THESE BITS ARE SET, THIS TEST FAILS BECAUSE THEY SHOULD BE CLEAR. + 1524 + 1525 031273 C27100: SFLAG ^;CLEAR ARITHMETIC FLAGS + 1526 + 1527 031273 205 01 0 00 000000 MOVSI 1, + 1528 031274 255 17 0 00 031275 JFCL 17,.+1 ;RESET ALL FLAGS + 1529 031275 254 02 0 01 031276 JRST 2,.+1(1) ;SET FLAG + 1530 031276 265 00 0 00 031277 JSP .+1 ;SAVE FLAGS + 1531 031277 603 00 0 00 001600 TLNE 1600 ;PASS IF THESE BITS ARE CLEAR + 1532 STOP^ + 1533 031300 254 04 0 00 031301 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1534 031301 324 00 0 00 031302 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1535 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1536 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1537 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1538 + 1539 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 20 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0047 + + 1540 SUBTTL TEST OF MSCL FWT INSTRUCTIONS + 1541 + 1542 ;********** + 1543 + 1544 ;THIS TEST VERIFIES THAT MOVEM PLACES C(AC) INTO E AND DOES + 1545 ;NOT MODIFY C(AC). + 1546 ;IN THIS CASE, C(AC)=252525,,252525 ANS C(E)=707070,,707070. + 1547 ;HENCE, THE RESULT IN E SHOULD BE 252525,,252525. + 1548 ;THE AC IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS + 1549 ;FOUND IN THE AC, IT WAS CLOBBERED BY MOVEM, AND THIS TEST FAILS. + 1550 ;E IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS FOUND + 1551 ;IN E, IT WAS UPDATED INCORRECTLY BY MOVEM. + 1552 + 1553 031302 200 00 0 00 033473 C50000: MOVE [252525,,252525] ;PRELOAD AC WITH 252525,,252525 + 1554 031303 200 01 0 00 033474 MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070 + 1555 031304 202 00 0 00 000001 MOVEM 0,1 ;*MOVEM SHOULD PLACE 252525,,252525 + 1556 ;INTO E AND NOT AFFECT THE AC + 1557 031305 312 00 0 00 033473 CAME 0,[252525,,252525] ;PASS IF C(AC) IS NOT CLOBBERED + 1558 STOP^ + 1559 031306 254 04 0 00 031307 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1560 031307 324 00 0 00 031310 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1561 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1562 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1563 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1564 031310 312 01 0 00 033473 CAME 1,[252525,,252525] ;PASS IF E WAS UPDATED CORRECTLY + 1565 STOP^ + 1566 031311 254 04 0 00 031312 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1567 031312 324 00 0 00 031313 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1568 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1569 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1570 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1571 + 1572 ;********** + 1573 + 1574 ;THIS TEST VERIFIES THAT MOVES PLACES C(E) INTO THE AC IF AC IS NON-ZERO. + 1575 ;IN THIS CASE, C(AC)=707070,,707070 AND C(E)=123456,,123456. HENCE, BOTH + 1576 ;THE AC AND E SHOULD CONTAIN 123456,,123456 AFTER MOVES IS EXECUTED. + 1577 ;BOTH AC AND E ARE CHECKED FOR 123456,,123456. IF EITHER AC OR E + 1578 ;CONTAIN A DIFFERENT RESULT, THIS TEST FAILS + 1579 + 1580 031313 200 02 0 00 033474 C50100: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 1581 031314 200 01 0 00 033475 MOVE 1,[123456,,123456] ;PRELOAD E WITH 123456,,123456 + 1582 031315 203 02 0 00 000001 MOVES 2,1 ;*MOVES SHOULD PLACE 123456,,123456 + 1583 ;INTO BOTH AC AND E + 1584 031316 312 02 0 00 033475 CAME 2,[123456,,123456] ;PASS IF C(AC)=123456,,123456 + 1585 STOP^ + 1586 031317 254 04 0 00 031320 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1587 031320 324 00 0 00 031321 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1588 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1589 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1590 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1591 031321 312 01 0 00 033475 CAME 1,[123456,,123456] ;PASS IF C(E)=123456,,123456 + 1592 STOP^ + 1593 031322 254 04 0 00 031323 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1594 031323 324 00 0 00 031324 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 20-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0048 + + 1595 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1596 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1597 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1598 + 1599 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 21 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0049 + + 1600 ;THIS TEST VERIFIES THAT MOVES IS A NO-OP IF AC=0 + 1601 ;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=707070,,707070 + 1602 ;AFTER MOVES IS EXECUTED, AC AND E ARE CHECKED FOR THEIR ORIGINAL DATA. + 1603 ;IF EITHER C(AC) OR C(E) CHANGED AS A RESULT OF MOVES, THIS TEST FAILS. + 1604 + 1605 031324 200 01 0 00 033474 C50110: MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070 + 1606 031325 474 00 0 00 000000 SETO ;PRELOAD AC WITH -1,,-1 + 1607 031326 203 00 0 00 000001 MOVES 0,1 ;*MOVES SHOULD FUNCTION AS A NO-OP + 1608 031327 312 00 0 00 033462 CAME 0,[-1,,-1] ;PASS IF C(AC) WAS NOT MODIFIED + 1609 STOP^ + 1610 031330 254 04 0 00 031331 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1611 031331 324 00 0 00 031332 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1612 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1613 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1614 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1615 031332 312 01 0 00 033474 CAME 1,[707070,,707070] ;PASS IF C(E) WAS NOT MODIFIED + 1616 STOP^ + 1617 031333 254 04 0 00 031334 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1618 031334 324 00 0 00 031335 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1619 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1620 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1621 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1622 + 1623 ;********** + 1624 + 1625 ;THIS TEST VERIFIES THAT MOVSI LOADS THE WORD E,0 INTO THE AC. + 1626 ;IN THIS CASE, C(AC)=707070,,707070 AND E=0,,-1. + 1627 ;HENCE, THE RESULT IN THE AC SHOULD BE -1,,0. + 1628 ;THE AC IS CHECKED FOR -1,,0. IF C(AC)=-1,,0, THIS TEST PASSES. + 1629 + 1630 031335 200 01 0 00 033474 C50200: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 1631 031336 205 01 0 00 777777 MOVSI 1,-1 ;*MOVSI SHOULD PLACE -1,,0 INTO THE AC + 1632 031337 312 01 0 00 033476 CAME 1,[-1,,0] ;PASS IF C(AC)=1,,0 + 1633 STOP^ + 1634 031340 254 04 0 00 031341 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1635 031341 324 00 0 00 031342 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1636 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1637 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1638 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1639 + 1640 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 22 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0050 + + 1641 ;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC) + 1642 ;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3. + 1643 ;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT + 1644 ;IN E SHOULD BE 0,,1 + 1645 + 1646 031342 474 01 0 00 000000 C50300: SETO 1, ;PRELOAD AC WITH -1,,-1 + 1647 031343 200 02 0 00 033477 MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3 + 1648 031344 212 01 0 00 000002 MOVNM 1,2 ;*MOVNM SHOULD PLACE 0,,1 INTO E + 1649 ;AND NOT AFFTECT C(AC) + 1650 031345 312 01 0 00 033462 CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + 1651 STOP^ + 1652 031346 254 04 0 00 031347 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1653 031347 324 00 0 00 031350 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1654 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1655 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1656 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1657 031350 302 02 0 00 000001 CAIE 2,1 ;PASS IF C(E)=0,,1 + 1658 STOP^ + 1659 031351 254 04 0 00 031352 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1660 031352 324 00 0 00 031353 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1661 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1662 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1663 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1664 + 1665 ;********** + 1666 + 1667 ;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC) + 1668 ;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3. + 1669 ;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT + 1670 ;IN E SHOULD BE 0,,1 + 1671 + 1672 031353 474 01 0 00 000000 C50301: SETO 1, ;PRELOAD AC WITH -1,,-1 + 1673 031354 200 02 0 00 033477 MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3 + 1674 031355 202 02 0 00 031367 MOVEM 2,E50301 + 1675 031356 212 01 0 00 031367 MOVNM 1,E50301 ;*MOVNM SHOULD PLACE 0,,1 INTO E + 1676 ;AND NOT AFFTECT C(AC) + 1677 031357 312 01 0 00 033462 CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + 1678 STOP^ + 1679 031360 254 04 0 00 031361 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1680 031361 324 00 0 00 031362 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1681 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1682 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1683 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1684 031362 200 02 0 00 031367 MOVE 2,E50301 + 1685 031363 302 02 0 00 000001 CAIE 2,1 ;PASS IF C(E)=0,,1 + 1686 STOP^ + 1687 031364 254 04 0 00 031365 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1688 031365 324 00 0 00 031366 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1689 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1690 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1691 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1692 + 1693 031366 334 00 0 00 000000 SKIPA ;GO TO NEXT TEST + 1694 031367 000000 000000 E50301: 0 ;TESTED MEMORY LOCATION + 1695 +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 22-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0051 + + 1696 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 23 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0052 + + 1697 ;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E + 1698 ;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0, + 1699 ;C(AC)=0 AND C(E)=0,,1 + 1700 ;HENCE, THE RESULT IN THE AC SHOULD BE 0 + 1701 ;AND THE RESULT IN E SHOULD BE -1,,-1 + 1702 + 1703 031370 400 00 0 00 000000 C50400: SETZ ;CLEAR AC + 1704 031371 201 02 0 00 000001 MOVEI 2,1 ;PRELOAD E WITH 0,,1 + 1705 031372 213 00 0 00 000002 MOVNS 0,2 ;*MOVNS SHOULD PLACE -1,,-1 INTO E + 1706 ;AND SHOULD NOT AFFECT THE AC + 1707 031373 332 00 0 00 000000 SKIPE ;PASS IF THE AC IS UNALTERED + 1708 STOP^ + 1709 031374 254 04 0 00 031375 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1710 031375 324 00 0 00 031376 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1711 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1712 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1713 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1714 031376 312 02 0 00 033462 CAME 2,[-1] ;PASS IF C(E)=-1,,-1 + 1715 STOP^ + 1716 031377 254 04 0 00 031400 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1717 031400 324 00 0 00 031401 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1718 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1719 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1720 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1721 + 1722 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 24 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0053 + + 1723 ;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E + 1724 ;AND INTO THE AC IF THE AC IS NON-ZO. IN THIS CASE, AC=0, + 1725 ;C(AC)=0 AND C(E)=0,,1 + 1726 ;HENCE, THE RESULT IN THE AC SHOULD BE 0 + 1727 ;AND THE RESULT IN E SHOULD BE -1,,-1 + 1728 + 1729 031401 400 00 0 00 000000 C50401: SETZ ;CLEAR AC + 1730 031402 201 02 0 00 000001 MOVEI 2,1 ;PRELOAD E WITH 0,,1 + 1731 031403 202 02 0 00 031415 MOVEM 2,E50401 + 1732 031404 213 00 0 00 031415 MOVNS 0,E50401 ;*MOVNS SHOULD PLACE -1,,-1 INTO E + 1733 ;AND SHOULD NOT AFFECT THE AC + 1734 031405 332 00 0 00 000000 SKIPE ;PASS IF THE AC IS UNALTERED + 1735 STOP^ + 1736 031406 254 04 0 00 031407 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1737 031407 324 00 0 00 031410 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1738 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1739 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1740 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1741 031410 200 02 0 00 031415 MOVE 2,E50401 + 1742 031411 312 02 0 00 033462 CAME 2,[-1] ;PASS IF C(E)=-1,,-1 + 1743 STOP^ + 1744 031412 254 04 0 00 031413 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1745 031413 324 00 0 00 031414 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1746 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1747 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1748 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1749 + 1750 031414 334 00 0 00 000000 SKIPA ;GO TO NEXT TEST + 1751 031415 000000 000000 E50401: 0 ;TESTED MEMORY LOCATION + 1752 + 1753 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 25 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0054 + + 1754 ;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E + 1755 ;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1, + 1756 ;C(AC=0 AND C(E)=3 + 1757 ;HENCE, THE RESULT IN THE AC SHOULD BE -1,,3 + 1758 ;AND THE RESULT IN E SHOULD BE -1,,3. + 1759 + 1760 031416 400 01 0 00 000000 C50410: SETZ 1, ;CLEAR AC + 1761 031417 201 02 0 00 000003 MOVEI 2,3 ;PRELOAD WITH 0,,3 + 1762 031420 213 01 0 00 000002 MOVNS 1,2 ;*MOVNS SHOULD PLACE -1,,-3 INTO E + 1763 ;AND -1,,-3 INTO THE AC + 1764 031421 312 01 0 00 033477 CAME 1,[-1,,-3] ;PASS IF C(AC)=-1,,-3 + 1765 STOP^ + 1766 031422 254 04 0 00 031423 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1767 031423 324 00 0 00 031424 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1768 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1769 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1770 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1771 031424 312 02 0 00 033477 CAME 2,[-1,,-3] ;PASS IF C(E)=-1,,-3 + 1772 STOP^ + 1773 031425 254 04 0 00 031426 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1774 031426 324 00 0 00 031427 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1775 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1776 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1777 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1778 + 1779 ;********** + 1780 + 1781 ;THIS TEST VERIFIES THAT MOVMI MOVES THE WORD 0,,E INTO THE AC. + 1782 ;IN THIS CASE, C(AC)=0 AND E=0,,-2. HENCE, THE RESULT IN THE AC + 1783 ;SHOULD BE 0,,-2. + 1784 + 1785 031427 400 01 0 00 000000 C50500: SETZ 1, ;CLEAR AC + 1786 031430 215 01 0 00 777776 MOVMI 1,-2 ;*MOVMI SHOULD PLACE 0,,-2 INTO AC + 1787 031431 302 01 0 00 777776 CAIE 1,-2 ;PASS IF C(AC)=0,,-2 + 1788 STOP^ + 1789 031432 254 04 0 00 031433 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1790 031433 324 00 0 00 031434 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1791 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1792 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1793 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1794 + 1795 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 26 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0055 + + 1796 ;THIS TEST VERIFIES THAT MOVM MOVES THE MAGNITUDE OF C(E) NTO THE AC. + 1797 ;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-2. HENCE, THE RESULT IN THE AC + 1798 ;SHOULD BE 0,,2. + 1799 + 1800 031434 400 01 0 00 000000 C50501: SETZ 1, ;CLEAR AC + 1801 031435 200 03 0 00 033500 MOVE 3,[-2] ;PRELOAD E WITH -1,,-2 + 1802 031436 214 01 0 00 000003 MOVM 1,3 ;*MOVM SHOULD PLACE 0,,2 INTO AC + 1803 031437 302 01 0 00 000002 CAIE 1,2 ;PASS IF C(AC)=0,,2 + 1804 STOP^ + 1805 031440 254 04 0 00 031441 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1806 031441 324 00 0 00 031442 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1807 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1808 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1809 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1810 + 1811 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 27 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0056 + + 1812 ;THIS TEST VERIFIES THAT MOVMM PLACES THE MAGNITUDE OF C(AC) + 1813 ;INTO E. IN THIS CASE, C(AC)=-1,,-2 AND C(E)=0. HENCE, THE + 1814 ;RESULT IN E SHOULD BE 0,,2 AND C(AC) SHOULD REMAIN UNCHANGED. + 1815 + 1816 031442 200 01 0 00 033500 C50600: MOVE 1,[-1,,-2] ;PRELOAD AC WITH -1,,-2 + 1817 031443 400 02 0 00 000000 SETZ 2, ;CLEAR E + 1818 031444 216 01 0 00 000002 MOVMM 1,2 ;*MOVMM SHOULD PLACE 0,,2 INTO E + 1819 ;AND SHOULD NOT CHANGE C(AC) + 1820 031445 312 01 0 00 033500 CAME 1,[-1,,-2] ;PASS IF C(AC) IS NOT ALTERED + 1821 STOP^ + 1822 031446 254 04 0 00 031447 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1823 031447 324 00 0 00 031450 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1824 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1825 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1826 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1827 031450 302 02 0 00 000002 CAIE 2,2 ;PASS IF C(E)=0,,2 + 1828 STOP^ + 1829 031451 254 04 0 00 031452 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1830 031452 324 00 0 00 031453 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1831 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1832 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1833 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1834 + 1835 ;********** + 1836 + 1837 ;THIS TEST VERIFIES THAT MONMS PLACES THE MAGNITUDE OF C(E) INTO E + 1838 ;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0, C(AC)=0 + 1839 ;AND C(E)=-1,,-2. + 1840 ;HENCE, THE RESULT IN THE AC SHOULD BE 0 AND THE RESULT IN + 1841 ;E SHOULD BE 0,,2. + 1842 + 1843 031453 400 00 0 00 000000 C50700: SETZ ;CLEAR AC + 1844 031454 200 02 0 00 033500 MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-1 + 1845 031455 217 00 0 00 000002 MOVMS 0,2 ;*MOVMS SHOULD PLACE 0,,1 INTO E + 1846 ;AND SHOULD NOT CHANGE C(AC) + 1847 031456 332 00 0 00 000000 SKIPE ;PASS IF C(AC) IS UNALTERED + 1848 STOP^ + 1849 031457 254 04 0 00 031460 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1850 031460 324 00 0 00 031461 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1851 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1852 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1853 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1854 031461 302 02 0 00 000002 CAIE 2,2 ;PASS IF C(E)=0,,2 + 1855 STOP^ + 1856 031462 254 04 0 00 031463 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1857 031463 324 00 0 00 031464 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1858 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1859 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1860 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1861 + 1862 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 28 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL FWT INSTRUCTIONS SEQ 0057 + + 1863 ;THIS TEST VERIFIES THAT MOVMS PLACES THE MAGNITUDE OF C(E) INTO E + 1864 ;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1, C(AC)=-1,,-1 + 1865 ;AND C(E)=-1,,-2. + 1866 ;HENCE, THE RESULT IN THE AC SHOULD BE 0,,2 AND THE RESULT + 1867 ;IN E SHOULD BE 0,,2. + 1868 + 1869 031464 474 01 0 00 000000 C50710: SETO 1, ;PRELOAD AC WITH -1,,-1 + 1870 031465 200 02 0 00 033500 MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-2 + 1871 031466 217 01 0 00 000002 MOVMS 1,2 ;*MOVMS SHOULD PLACE 0,,2 INTO E + 1872 ;AND SHOULD PLACE 0,,2 INTO THE AC + 1873 031467 302 01 0 00 000002 CAIE 1,2 ;PASS IF C(AC)=0,,2 + 1874 STOP^ + 1875 031470 254 04 0 00 031471 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1876 031471 324 00 0 00 031472 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1877 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1878 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1879 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1880 031472 302 02 0 00 000002 CAIE 2,2 ;PASS IF C(E)=0,,2 + 1881 STOP^ + 1882 031473 254 04 0 00 031474 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1883 031474 324 00 0 00 031475 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1884 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1885 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1886 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1887 + 1888 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 29 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL ADD/SUB INSTRUCTIONS SEQ 0058 + + 1889 SUBTTL TEST OF MSCL ADD/SUB INSTRUCTIONS + 1890 + 1891 ;********** + 1892 + 1893 ;THIS TEST VERIFIES THAT SUBI SUBTRACTS THE WORD 0,,E FROM C(AC) + 1894 ;AND PLACES THE RESULT INTO THE AC. IN THIS CASE, C(AC)=70 AND + 1895 ;E=0,,2. HENCE, THE RESULT IN THE AC SHOULD BE 66. + 1896 + 1897 031475 201 01 0 00 000070 C51000: MOVEI 1,70 ;PRELOAD AC WITH 70 + 1898 031476 275 01 0 00 000002 SUBI 1,2 ;*SUBI SHOULD PLACE 66 INTO AC + 1899 031477 302 01 0 00 000066 CAIE 1,66 ;PASS IF C(AC)=66 + 1900 STOP^ + 1901 031500 254 04 0 00 031501 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1902 031501 324 00 0 00 031502 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1903 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1904 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1905 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1906 + 1907 ;********** + 1908 + 1909 ;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND + 1910 ;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE, + 1911 ;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND + 1912 ;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY. + 1913 + 1914 031502 201 01 0 00 000100 C51100: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + 1915 031503 201 02 0 00 000037 MOVEI 2,37 ;PRELOAD E WITH 0,,37 + 1916 031504 276 01 0 00 000002 SUBM 1,2 ;*SUBM SHOULD PLACE + 1917 ;0,,41 INTO E AND NOT CHANGE C(AC) + 1918 031505 302 01 0 00 000100 CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED + 1919 STOP^ + 1920 031506 254 04 0 00 031507 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1921 031507 324 00 0 00 031510 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1922 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1923 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1924 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1925 031510 302 02 0 00 000041 CAIE 2,41 ;PASS IF C(E)=0,,41 + 1926 STOP^ + 1927 031511 254 04 0 00 031512 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1928 031512 324 00 0 00 031513 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1929 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1930 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1931 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1932 + 1933 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 30 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL ADD/SUB INSTRUCTIONS SEQ 0059 + + 1934 ;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND + 1935 ;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE, + 1936 ;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND + 1937 ;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY. + 1938 + 1939 031513 201 01 0 00 000100 C51101: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + 1940 031514 201 02 0 00 000037 MOVEI 2,37 ;PRELOAD E WITH 0,,37 + 1941 031515 202 02 0 00 031527 MOVEM 2,E51101 + 1942 031516 276 01 0 00 031527 SUBM 1,E51101 ;*SUBM SHOULD PLACE + 1943 ;0,,41 INTO E AND NOT CHANGE C(AC) + 1944 031517 302 01 0 00 000100 CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED + 1945 STOP^ + 1946 031520 254 04 0 00 031521 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1947 031521 324 00 0 00 031522 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1948 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1949 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1950 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1951 031522 200 02 0 00 031527 MOVE 2,E51101 + 1952 031523 302 02 0 00 000041 CAIE 2,41 ;PASS IF C(E)=0,,41 + 1953 STOP^ + 1954 031524 254 04 0 00 031525 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1955 031525 324 00 0 00 031526 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1956 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1957 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1958 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1959 + 1960 031526 334 00 0 00 000000 SKIPA ;GO TO NEXT TEST + 1961 031527 000000 000000 E51101: 0 ;TEST WORD MEMORY + 1962 + 1963 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 31 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL ADD/SUB INSTRUCTIONS SEQ 0060 + + 1964 ;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND + 1965 ;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE, + 1966 ;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH + 1967 ;AC AND E SHOULD BE 0,,41. + 1968 + 1969 031530 201 01 0 00 000100 C51200: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + 1970 031531 201 02 0 00 000037 MOVEI 2,37 ;PRELOAD E WITH O,,37 + 1971 031532 277 01 0 00 000002 SUBB 1,2 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E + 1972 031533 302 01 0 00 000041 CAIE 1,41 ;PASS IF C(AC)=0,,41 + 1973 STOP^ + 1974 031534 254 04 0 00 031535 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1975 031535 324 00 0 00 031536 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1976 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1977 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1978 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1979 031536 302 02 0 00 000041 CAIE 2,41 ;PASS IF C(E)=0,,41 + 1980 STOP^ + 1981 031537 254 04 0 00 031540 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 1982 031540 324 00 0 00 031541 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 1983 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 1984 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 1985 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 1986 + 1987 ;********** + 1988 + 1989 ;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND + 1990 ;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE, + 1991 ;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH + 1992 ;AC AND E SHOULD BE 0,,41. + 1993 + 1994 031541 201 01 0 00 000100 C51201: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + 1995 031542 201 02 0 00 000037 MOVEI 2,37 ;PRELOAD E WITH O,,37 + 1996 031543 202 02 0 00 031555 MOVEM 2,E51201 + 1997 031544 277 01 0 00 031555 SUBB 1,E51201 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E + 1998 031545 302 01 0 00 000041 CAIE 1,41 ;PASS IF C(AC)=0,,41 + 1999 STOP^ + 2000 031546 254 04 0 00 031547 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2001 031547 324 00 0 00 031550 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2002 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2003 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2004 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2005 031550 200 02 0 00 031555 MOVE 2,E51201 + 2006 031551 302 02 0 00 000041 CAIE 2,41 ;PASS IF C(E)=0,,41 + 2007 STOP^ + 2008 031552 254 04 0 00 031553 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2009 031553 324 00 0 00 031554 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2010 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2011 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2012 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2013 + 2014 031554 334 00 0 00 000000 SKIPA ;GO TO NEXT TEST + 2015 031555 000000 000000 E51201: 0 ;TEST WORD MEMORY + 2016 + 2017 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 32 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0061 + + 2018 SUBTTL TEST OF MSCL CAIX INSTRUCTIONS + 2019 + 2020 ;********** + 2021 + 2022 ;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND + 2023 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E. + 2024 ;IN THIS CASE, C(AC)=0,,1 AND E=0,,2 + 2025 ;HENCE, CAIL SHOULD SKIP THE NEXT INSTRUCTION. + 2026 ;IF CAIL SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + 2027 + 2028 031556 201 01 0 00 000001 C51300: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + 2029 031557 301 01 0 00 000002 CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION + 2030 STOP^ + 2031 031560 254 04 0 00 031561 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2032 031561 324 00 0 00 031562 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2033 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2034 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2035 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2036 + 2037 ;********** + 2038 + 2039 ;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND + 2040 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E. + 2041 ;IN THIS CASE, C(AC)=0,,2 AND E=0,,2. + 2042 ;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2043 ;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + 2044 + 2045 031562 201 01 0 00 000002 C51310: MOVEI 1,2 ;PRELOAD AC WITH 0,,2 + 2046 031563 301 01 0 00 000002 CAIL 1,2 ;*CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION + 2047 031564 334 00 0 00 000000 SKIPA ;PASS IF CAIL DOES NOT SKIP + 2048 STOP^ + 2049 031565 254 04 0 00 031566 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2050 031566 324 00 0 00 031567 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2051 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2052 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2053 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2054 + 2055 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 33 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0062 + + 2056 ;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND + 2057 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E + 2058 ;IN THIS CASE, C(AC)=0,,3 AND E=0,,2 + 2059 ;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2060 ;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + 2061 + 2062 031567 201 01 0 00 000003 C51320: MOVEI 1,3 ;PRELOAD AC WITH 0,,3 + 2063 031570 301 01 0 00 000002 CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION + 2064 031571 334 00 0 00 000000 SKIPA ;PASS IF CAIL DOES NOT SKIP + 2065 STOP^ + 2066 031572 254 04 0 00 031573 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2067 031573 324 00 0 00 031574 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2068 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2069 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2070 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2071 + 2072 ;********** + 2073 + 2074 ;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND + 2075 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E + 2076 ;IN THIS CASE, C(AC)=-1,,-1 AND E=0 + 2077 ;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION + 2078 ;IF CAILE SKIPS THE NEXT INSTRUCTION, THE TEST PASSES + 2079 + 2080 031574 474 01 0 00 000000 C51400: SETO 1, ;PRELOAD AC WITH -1,,-1 + 2081 031575 303 01 0 00 000000 CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION + 2082 STOP^ + 2083 031576 254 04 0 00 031577 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2084 031577 324 00 0 00 031600 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2085 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2086 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2087 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2088 + 2089 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 34 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0063 + + 2090 ;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND + 2091 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E + 2092 ;IN THIS CASE, C(AC)=0 AND E=0 + 2093 ;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION. + 2094 ;IF CAILE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + 2095 + 2096 031600 400 01 0 00 000000 C51410: SETZ 1, ;PRELOAD AC WITH 0 + 2097 031601 303 01 0 00 000000 CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION. + 2098 STOP^ + 2099 031602 254 04 0 00 031603 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2100 031603 324 00 0 00 031604 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2101 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2102 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2103 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2104 + 2105 ;********** + 2106 + 2107 ;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND + 2108 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E + 2109 ;IN THIS CASE, C(AC)=0,,1 AND E=0 + 2110 ;HENCE, CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2111 ;IF CAILE DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES + 2112 + 2113 031604 201 01 0 00 000001 C51420: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + 2114 031605 303 01 0 00 000000 CAILE 1,0 ;*CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION + 2115 031606 334 00 0 00 000000 SKIPA ;PASS IF CAILE DOES NOT SKIP + 2116 STOP^ + 2117 031607 254 04 0 00 031610 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2118 031610 324 00 0 00 031611 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2119 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2120 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2121 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2122 + 2123 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 35 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0064 + + 2124 ;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS + 2125 ;SKIPS THE NEXT INSTRUCTION + 2126 ;IN THIS CASE, C(AC)=-1,,-1 AND E=0 + 2127 ;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION + 2128 ;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + 2129 + 2130 031611 474 01 0 00 000000 C51500: SETO 1, ;PRELOAD AC WITH -1,,-1 + 2131 031612 304 01 0 00 000000 CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + 2132 STOP^ + 2133 031613 254 04 0 00 031614 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2134 031614 324 00 0 00 031615 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2135 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2136 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2137 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2138 + 2139 ;********** + 2140 + 2141 ;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS + 2142 ;SKIPS THE NEXT INSTRUCTION + 2143 ;IN THIS CASE, C(AC)=0 AND E=0 + 2144 ;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION. + 2145 ;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + 2146 + 2147 031615 400 01 0 00 000000 C51510: SETZ 1, ;PRELOAD AC WITH 0 + 2148 031616 304 01 0 00 000000 CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + 2149 STOP^ + 2150 031617 254 04 0 00 031620 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2151 031620 324 00 0 00 031621 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2152 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2153 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2154 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2155 + 2156 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 36 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0065 + + 2157 ;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS + 2158 ;SKIPS THE NEXT INSTRUCTION + 2159 ;IN THIS CASE, C(AC)=0,,1 AND E=0 + 2160 ;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION. + 2161 ;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + 2162 + 2163 031621 201 01 0 00 000001 C51520: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + 2164 031622 304 01 0 00 000000 CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + 2165 STOP^ + 2166 031623 254 04 0 00 031624 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2167 031624 324 00 0 00 031625 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2168 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2169 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2170 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2171 + 2172 ;********** + 2173 + 2174 ;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND + 2175 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E. + 2176 ;IN THIS CASE, C(AC)=0,,5 AND E=0,,6 + 2177 ;HENCE, CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2178 ;IF CAIGE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + 2179 + 2180 031625 201 02 0 00 000005 C51600: MOVEI 2,5 ;PRELOAD AC WITH 0,,5 + 2181 031626 305 02 0 00 000006 CAIGE 2,6 ;*CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION + 2182 031627 334 00 0 00 000000 SKIPA ;PASS IF CAIGE DOES NOT SKIP + 2183 STOP^ + 2184 031630 254 04 0 00 031631 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2185 031631 324 00 0 00 031632 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2186 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2187 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2188 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2189 + 2190 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 37 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0066 + + 2191 ;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND + 2192 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E + 2193 ;IN THIS CASE, C(AC)=0,,6 AND E=0,,6 + 2194 ;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION. + 2195 ;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + 2196 + 2197 031632 201 02 0 00 000006 C51610: MOVEI 2,6 ;PRELOAD AC WITH 0,,6 + 2198 031633 305 00 0 00 000000 CAIGE ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION + 2199 STOP^ + 2200 031634 254 04 0 00 031635 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2201 031635 324 00 0 00 031636 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2202 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2203 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2204 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2205 + 2206 ;********** + 2207 + 2208 ;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND + 2209 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E. + 2210 ;IN THIS CASE, C(AC)=0,,7 AND E=0,,6 + 2211 ;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION. + 2212 ;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + 2213 + 2214 031636 201 02 0 00 000007 C51620: MOVEI 2,7 ;PRELOAD AC WITH 0,,7 + 2215 031637 305 02 0 00 000006 CAIGE 2,6 ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION + 2216 STOP^ + 2217 031640 254 04 0 00 031641 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2218 031641 324 00 0 00 031642 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2219 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2220 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2221 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2222 + 2223 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 38 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0067 + + 2224 ;THIS TEST VERIRIES THAT CAIN COMPARES C(AC) WITH E AND + 2225 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. + 2226 ;IN THIS CASE, C(AC)=0 AND E=0,,1 + 2227 ;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION. + 2228 ;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + 2229 + 2230 031642 400 06 0 00 000000 C51700: SETZ 6, ;PRELOAD AC WITH 0 + 2231 031643 306 06 0 00 000001 CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION + 2232 STOP^ + 2233 031644 254 04 0 00 031645 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2234 031645 324 00 0 00 031646 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2235 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2236 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2237 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2238 + 2239 ;********** + 2240 + 2241 ;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND + 2242 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. + 2243 ;IN THIS CASE, C(AC)=0,,1 AND E=0,,1 + 2244 ;HENCE, CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2245 ;IF CAIN DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + 2246 + 2247 031646 200 06 0 00 000001 C51710: MOVE 6,1 ;PRELOAD AC WITH 0,,1 + 2248 031647 306 06 0 00 000001 CAIN 6,1 ;*CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION + 2249 031650 334 00 0 00 000000 SKIPA ;PASS IF CAIN SKIPS + 2250 STOP^ + 2251 031651 254 04 0 00 031652 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2252 031652 324 00 0 00 031653 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2253 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2254 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2255 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2256 + 2257 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 39 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0068 + + 2258 ;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND + 2259 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. + 2260 ;IN THIS CASE, C(AC)=0,,2 AND E=0,,1 + 2261 ;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION. + 2262 ;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + 2263 + 2264 031653 201 06 0 00 000002 C51720: MOVEI 6,2 ;PRELOAD AC WITH + 2265 031654 306 06 0 00 000001 CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION + 2266 STOP^ + 2267 031655 254 04 0 00 031656 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2268 031656 324 00 0 00 031657 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2269 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2270 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2271 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2272 + 2273 ;********** + 2274 + 2275 ;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND + 2276 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. + 2277 ;IN THIS CASE, C(AC)=0,,2 AND E=0,,3. + 2278 ;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2279 ;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + 2280 + 2281 031657 201 11 0 00 000002 C52000: MOVEI 11,2 ;PRELOAD AC WITH 0,,2 + 2282 031660 307 11 0 00 000003 CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION + 2283 031661 334 00 0 00 000000 SKIPA ;PASS IF CAIG DID NOT SKIP + 2284 STOP^ + 2285 031662 254 04 0 00 031663 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2286 031663 324 00 0 00 031664 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2287 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2288 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2289 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2290 + 2291 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 40 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAIX INSTRUCTIONS SEQ 0069 + + 2292 ;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND + 2293 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. + 2294 ;IN THIS CASE, C(AC)=0,,3 AND E=0,,3. + 2295 ;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2296 ;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES. + 2297 + 2298 031664 201 11 0 00 000003 C52010: MOVEI 11,3 ;PRELOAD AC WITH 0,,3 + 2299 031665 307 11 0 00 000003 CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION + 2300 031666 334 00 0 00 000000 SKIPA ;PASS IF CAIG DID NOT SKIP + 2301 STOP^ + 2302 031667 254 04 0 00 031670 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2303 031670 324 00 0 00 031671 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2304 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2305 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2306 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2307 + 2308 ;********** + 2309 + 2310 ;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND + 2311 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. + 2312 ;IN THIS CASE, C(AC)=0,,4 AND E=0,,3. + 2313 ;HENCE, CAIG SHOULD SKIP THE NEXT INSTRUCTION. + 2314 ;IF CAIG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + 2315 + 2316 031671 201 11 0 00 000004 C52020: MOVEI 11,4 ;PRELOAD AC WITH 0,,4 + 2317 031672 307 11 0 00 000003 CAIG 11,3 ;*CAIG SHOULD SKIP THE NEXT INSTRUCTION + 2318 STOP^ + 2319 031673 254 04 0 00 031674 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2320 031674 324 00 0 00 031675 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2321 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2322 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2323 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2324 + 2325 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 41 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAMX INSTRUCTIONS SEQ 0070 + + 2326 SUBTTL TEST OF MSCL CAMX INSTRUCTIONS + 2327 + 2328 ;********** + 2329 + 2330 ;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND + 2331 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAT OR EQUAL TO C(E). + 2332 ;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=0 + 2333 ;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION. + 2334 ;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + 2335 + 2336 031675 474 01 0 00 000000 C52100: SETO 1, ;PRELOAD AC WITH -1,,-1 + 2337 031676 400 02 0 00 000000 SETZ 2, ;PRELOAD E WITH 0 + 2338 031677 313 01 0 00 000002 CAMLE 1,2 ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION + 2339 STOP^ + 2340 031700 254 04 0 00 031701 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2341 031701 324 00 0 00 031702 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2342 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2343 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2344 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2345 + 2346 ;********** + 2347 + 2348 ;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND + 2349 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E). + 2350 ;IN THIS CASE, C(AC)=0 AND C(E)=0 + 2351 ;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION. + 2352 ;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + 2353 + 2354 031702 400 01 0 00 000000 C52110: SETZ 1, ;CLEAR AC + 2355 031703 313 01 0 00 033501 CAMLE 1,[0] ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION + 2356 STOP^ + 2357 031704 254 04 0 00 031705 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2358 031705 324 00 0 00 031706 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2359 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2360 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2361 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2362 + 2363 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 42 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAMX INSTRUCTIONS SEQ 0071 + + 2364 ;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND + 2365 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E). + 2366 ;IN THIS CASE, C(AC)=0,,1 AND C(E)=0 + 2367 ;HENCE, CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2368 ;IF CAMLE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + 2369 + 2370 031706 201 01 0 00 000001 C52120: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + 2371 031707 400 02 0 00 000000 SETZ 2, ;PRELOAD E WITH 0 + 2372 031710 313 01 0 00 000002 CAMLE 1,2 ;*CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION + 2373 031711 334 00 0 00 000000 SKIPA ;PASS IF CAMLE DOES NOT SKIP + 2374 STOP^ + 2375 031712 254 04 0 00 031713 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2376 031713 324 00 0 00 031714 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2377 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2378 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2379 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2380 + 2381 ;********** + 2382 + 2383 ;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND + 2384 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). + 2385 ;IN THIS CASE, C(AC)=-1,,-2 AND C(E)=-1,,-1. + 2386 ;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2387 ;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + 2388 + 2389 031714 561 10 0 00 777776 C52200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2 + 2390 031715 317 10 0 00 033462 CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2391 031716 334 00 0 00 000000 SKIPA ;PASS IF CAMG DOES NOT SKIP + 2392 STOP^ + 2393 031717 254 04 0 00 031720 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2394 031720 324 00 0 00 031721 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2395 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2396 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2397 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2398 ;********** + 2399 + 2400 ;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND + 2401 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). + 2402 ;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-2. + 2403 ;HENCE, CAMG SHOULD SKIP THE NEXT INSTRUCTION. + 2404 + 2405 031721 561 10 0 00 777777 C52205: HRROI 10,-1 ;PRELOAD AC WITH -1,,-1 + 2406 031722 317 10 0 00 033500 CAMG 10,[-1,,-2] ;*CAMG SHOULD SKIP THE NEXT INSTRUCTION. + 2407 STOP^ + 2408 031723 254 04 0 00 031724 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2409 031724 324 00 0 00 031725 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2410 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2411 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2412 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2413 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 43 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL CAMX INSTRUCTIONS SEQ 0072 + + 2414 ;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND + 2415 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). + 2416 ;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-1. + 2417 ;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. + 2418 ;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + 2419 031725 474 10 0 00 000000 C52210: SETO 10, ;PRELOAD AC WITH -1,,-1. + 2420 031726 317 10 0 00 033462 CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION + 2421 031727 334 00 0 00 000000 SKIPA ;PASS IF CAMG DOES NOT SKIP + 2422 STOP^ + 2423 031730 254 04 0 00 031731 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2424 031731 324 00 0 00 031732 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2425 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2426 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2427 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2428 + 2429 ;********** + 2430 + 2431 ;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND + 2432 ;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). + 2433 ;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-1. + 2434 ;HENCE, CAMG SHOULD SKIP THE NEXT INSTRUCTION. + 2435 ;IF CAMG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + 2436 + 2437 031732 400 10 0 00 000000 C52220: SETZ 10, ;PRELOAD AC WITH 0 + 2438 031733 317 10 0 00 033462 CAMG 10,[-1,,-1] ;*CAMG SHOULD SKIP THE NEXT INSTRUCTION + 2439 STOP^ + 2440 031734 254 04 0 00 031735 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2441 031735 324 00 0 00 031736 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2442 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2443 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2444 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2445 + 2446 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 44 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL JUMPX INSTRUCTIONS SEQ 0073 + + 2447 SUBTTL TEST OF MSCL JUMPX INSTRUCTIONS + 2448 + 2449 ;********** + 2450 + 2451 ;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND + 2452 ;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR + 2453 ;EQUAL TO 0. IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPLE SHOULD JUMP. + 2454 + 2455 031736 474 17 0 00 000000 C52300: SETO 17, ;PRELOAD AC WITH -1,,-1 + 2456 031737 323 17 0 00 031741 JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP + 2457 STOP^ + 2458 031740 254 04 0 00 031741 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2459 031741 324 00 0 00 031742 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2460 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2461 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2462 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2463 + 2464 ;********** + 2465 + 2466 ;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND + 2467 ;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR + 2468 ;EQUAL TO 0. IN THIS CASE, C(AC)=0. HENCE, JUMPLE SHOULD JUMP. + 2469 + 2470 031742 400 17 0 00 000000 C52310: SETZ 17, ;PRELOAD AC WITH 0 + 2471 031743 323 17 0 00 031745 JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP + 2472 STOP^ + 2473 031744 254 04 0 00 031745 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2474 031745 324 00 0 00 031746 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2475 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2476 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2477 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2478 + 2479 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 45 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL JUMPX INSTRUCTIONS SEQ 0074 + + 2480 ;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND JUMPS + 2481 ;TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO + 2482 ;0. IN THIS CASE, C(AC)=0,,1. HENCE, JUMPLE SHOULD NOT JUMP. + 2483 + 2484 031746 201 17 0 00 000001 C52320: MOVEI 17,1 ;PRELOAD AC WITH 0,,1 + 2485 031747 320 17 0 00 031751 JUMP 17,.+2 ;*JUMPLE SHOULD NOT JUMP + 2486 031750 334 00 0 00 000000 SKIPA ;PASS IF JUMPLE DOES NOT JUMP + 2487 STOP^ + 2488 031751 254 04 0 00 031752 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2489 031752 324 00 0 00 031753 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2490 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2491 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2492 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2493 + 2494 ;********** + 2495 + 2496 ;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO + 2497 ;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. + 2498 ;IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPGE SHOULD NOT JUMP. + 2499 + 2500 031753 474 16 0 00 000000 C52400: SETO 16, ;PRELOAD AC WITH -1,,-1 + 2501 031754 325 16 0 00 031756 JUMPGE 16,.+2 ;*JUMPGE SHOULD NOT JUMP + 2502 031755 334 00 0 00 000000 SKIPA ;PASS IF JUMPGE DOES NOT JUMP + 2503 STOP^ + 2504 031756 254 04 0 00 031757 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2505 031757 324 00 0 00 031760 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2506 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2507 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2508 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2509 + 2510 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 46 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL JUMPX INSTRUCTIONS SEQ 0075 + + 2511 ;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH O AND JUMPS TO + 2512 ;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. + 2513 ;IN THIS CASE, C(AC)=0. HENCE, JUMPGE SHOULD JUMP. + 2514 + 2515 031760 400 16 0 00 000000 C52410: SETZ 16, ;PRELOAD AC WITH 0 + 2516 031761 325 16 0 00 031763 JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP + 2517 STOP^ + 2518 031762 254 04 0 00 031763 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2519 031763 324 00 0 00 031764 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2520 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2521 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2522 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2523 + 2524 ;********** + 2525 + 2526 ;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO + 2527 ;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. + 2528 ;IN THIS CASE, C(AC)=0,,1. HENCE, JUMPGE SHOULD JUMP. + 2529 + 2530 031764 201 16 0 00 000001 C52420: MOVEI 16,1 ;PRELOAD AC WITH 0,,1 + 2531 031765 325 16 0 00 031767 JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP + 2532 STOP^ + 2533 031766 254 04 0 00 031767 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2534 031767 324 00 0 00 031770 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2535 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2536 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2537 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2538 + 2539 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 47 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0076 + + 2540 SUBTTL TEST OF MSCL AOJX INSTRUCTIONS + 2541 + 2542 ;********** + 2543 + 2544 ;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND PLACES + 2545 ;THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED + 2546 ;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) + 2547 ;IS LESS THAN 0. IN THIS CASE, C(AC)=-1,,-2 BEFORE INCREMENTING. + 2548 ;HENCE, AOJL SHOULD JUMP. + 2549 + 2550 031770 561 15 0 00 777776 C52500: HRROI 15,-2 ;PRELOAD AC WITH -1,,-2 + 2551 031771 341 15 0 00 031773 AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) AND JUMP + 2552 STOP^ + 2553 031772 254 04 0 00 031773 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2554 031773 324 00 0 00 031774 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2555 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2556 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2557 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2558 031774 312 15 0 00 033462 CAME 15,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + 2559 STOP^ + 2560 031775 254 04 0 00 031776 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2561 031776 324 00 0 00 031777 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2562 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2563 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2564 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2565 + 2566 ;********** + 2567 + 2568 ;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND + 2569 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2570 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2571 ;SPECIFIED BY E IF C(AC) IS LESS THAN 0. + 2572 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING + 2573 ;HENCE, AOJ SHOULD NOT JUMP + 2574 + 2575 031777 474 15 0 00 000000 C52510: SETO 15, ;PRELOAD AC WITH + 2576 032000 341 15 0 00 032002 AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) + 2577 ;AND NOT JUMP + 2578 032001 334 00 0 00 000000 SKIPA ;PASS IF AOJL DID NOT JUMP + 2579 STOP^ + 2580 032002 254 04 0 00 032003 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2581 032003 324 00 0 00 032004 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2582 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2583 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2584 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2585 032004 302 15 0 00 000000 CAIE 15,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2586 STOP^ + 2587 032005 254 04 0 00 032006 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2588 032006 324 00 0 00 032007 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2589 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2590 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2591 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2592 + 2593 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 48 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0077 + + 2594 ;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND + 2595 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2596 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2597 ;SPECIFIED BY E IF C(AC) IS 0 BEFORE INCREMENTING + 2598 ;HENCE, AOJL SHOULD NOT JUMP + 2599 + 2600 032007 400 15 0 00 000000 C52520: SETZ 15, ;PRELOAD AC WITH 0 + 2601 032010 341 15 0 00 032012 AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) + 2602 ;AND NOT JUMP + 2603 032011 334 00 0 00 000000 SKIPA ;PASS IF AOJL DID NOT JUMP + 2604 STOP^ + 2605 032012 254 04 0 00 032013 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2606 032013 324 00 0 00 032014 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2607 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2608 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2609 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2610 032014 302 15 0 00 000001 CAIE 15,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2611 STOP^ + 2612 032015 254 04 0 00 032016 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2613 032016 324 00 0 00 032017 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2614 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2615 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2616 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2617 + 2618 ;********** + 2619 + 2620 ;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND + 2621 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2622 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2623 ;SPECIFIED BY E IF C(AC) IS EQUAL TO 0 + 2624 ;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING + 2625 ;HENCE, AOJE SHOULD NOT JUMP + 2626 + 2627 032017 561 14 0 00 777776 C52600: HRROI 14,-2 ;PRELOAD AC WITH -1,,-2 + 2628 032020 342 14 0 00 032022 AOJE 14,.+2 ;*AOJE SHOULD ADD 0,,1 TO C(AC) + 2629 ;AND NOT JUMP + 2630 032021 334 00 0 00 000000 SKIPA ;PASS IF AOJE DID NOT JUMP + 2631 STOP^ + 2632 032022 254 04 0 00 032023 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2633 032023 324 00 0 00 032024 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2634 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2635 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2636 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2637 032024 312 14 0 00 033462 CAME 14,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + 2638 STOP^ + 2639 032025 254 04 0 00 032026 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2640 032026 324 00 0 00 032027 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2641 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2642 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2643 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2644 + 2645 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 49 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0078 + + 2646 ;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND + 2647 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2648 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2649 ;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. + 2650 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING. + 2651 ;HENCE, AOJE SHOULD JUMP + 2652 + 2653 032027 474 14 0 00 000000 C52610: SETO 14, ;PRELOAD AC WITH -1,,-1 + 2654 032030 342 14 0 00 032032 AOJE 14,.+2 ;*AOJ SHOULD ADD 0,,1 TO C(AC) + 2655 ;AND JUMP + 2656 STOP^ + 2657 032031 254 04 0 00 032032 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2658 032032 324 00 0 00 032033 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2659 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2660 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2661 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2662 032033 302 14 0 00 000000 CAIE 14,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2663 STOP^ + 2664 032034 254 04 0 00 032035 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2665 032035 324 00 0 00 032036 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2666 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2667 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2668 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2669 + 2670 ;********** + 2671 + 2672 ;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND + 2673 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2674 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2675 ;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. + 2676 ;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING + 2677 ;HENCE, AOJE SHOULD NOT JUMP + 2678 + 2679 032036 400 14 0 00 000000 C52620: SETZ 14, ;PRELOAD AC WITH 0 + 2680 032037 342 14 0 00 032041 AOJE 14,.+2 ;*AOJE SHOULD ADD 0,11 TO C(AC) + 2681 ;AND NOT JUMP + 2682 032040 334 00 0 00 000000 SKIPA ;PASS IF AOJE DID NOT JUMP + 2683 STOP^ + 2684 032041 254 04 0 00 032042 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2685 032042 324 00 0 00 032043 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2686 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2687 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2688 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2689 032043 302 14 0 00 000001 CAIE 14,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2690 STOP^ + 2691 032044 254 04 0 00 032045 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2692 032045 324 00 0 00 032046 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2693 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2694 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2695 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2696 + 2697 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 50 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0079 + + 2698 ;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND + 2699 ;PLACES THE RESULT BACK INTO TLE$EC. THE RESULT IN THE AC IS + 2700 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2701 ;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. + 2702 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING + 2703 ;HENCE, AOJLE SHOULD + 2704 + 2705 032046 561 13 0 00 777776 C52700: HRROI 13,-2 ;PRELOAD AC WITH -1,,-2 + 2706 032047 343 13 0 00 032051 AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + 2707 ;AND JUMP + 2708 STOP^ + 2709 032050 254 04 0 00 032051 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2710 032051 324 00 0 00 032052 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2711 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2712 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2713 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2714 032052 312 13 0 00 033462 CAME 13,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + 2715 STOP^ + 2716 032053 254 04 0 00 032054 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2717 032054 324 00 0 00 032055 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2718 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2719 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2720 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2721 + 2722 ;********** + 2723 + 2724 ;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND + 2725 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2726 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2727 ;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0 + 2728 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING + 2729 ;HENCE, AOJLE SHOULD JUMP. + 2730 + 2731 032055 474 13 0 00 000000 C52710: SETO 13, ;PRELOAD AC WITH -1,,-1 + 2732 032056 343 13 0 00 032060 AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + 2733 ;AND JUMP + 2734 STOP^ + 2735 032057 254 04 0 00 032060 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2736 032060 324 00 0 00 032061 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2737 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2738 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2739 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2740 032061 302 13 0 00 000000 CAIE 13,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2741 STOP^ + 2742 032062 254 04 0 00 032063 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2743 032063 324 00 0 00 032064 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2744 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2745 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2746 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2747 + 2748 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 51 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0080 + + 2749 ;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND + 2750 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2751 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2752 ;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. + 2753 ;IN THIS CASE, C(AC) IS 0 + 2754 ;HENCE, AOJLE SHOULD NOT JUMP. + 2755 + 2756 032064 400 13 0 00 000000 C52720: SETZ 13, ;PRELOAD AC WITH 0 + 2757 032065 343 13 0 00 032067 AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + 2758 ;AND NOT JUMP + 2759 032066 334 00 0 00 000000 SKIPA ;PASS IF AOJLE DID NOT JUMP + 2760 STOP^ + 2761 032067 254 04 0 00 032070 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2762 032070 324 00 0 00 032071 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2763 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2764 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2765 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2766 032071 302 13 0 00 000001 CAIE 13,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2767 STOP^ + 2768 032072 254 04 0 00 032073 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2769 032073 324 00 0 00 032074 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2770 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2771 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2772 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2773 + 2774 ;********** + 2775 + 2776 ;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND + 2777 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2778 ;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION + 2779 ;SPECIFIED BY E. + 2780 ;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING + 2781 ;HENCE, AOJA SHOULD JUMP + 2782 + 2783 032074 561 12 0 00 777776 C53000: HRROI 12,-2 ;PRELOAD AC WITH -1,,-2 + 2784 032075 344 12 0 00 032077 AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + 2785 ;AND JUMP + 2786 STOP^ + 2787 032076 254 04 0 00 032077 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2788 032077 324 00 0 00 032100 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2789 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2790 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2791 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2792 032100 312 12 0 00 033462 CAME 12,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + 2793 STOP^ + 2794 032101 254 04 0 00 032102 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2795 032102 324 00 0 00 032103 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2796 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2797 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2798 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2799 + 2800 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 52 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0081 + + 2801 ;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND + 2802 ;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS + 2803 ;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION + 2804 ;SPECIFIED BY E. + 2805 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING + 2806 ;HENCE, AOJA SHOULD JUMP + 2807 + 2808 032103 474 12 0 00 000000 C53010: SETO 12, ;PRELOAD AC WITH -1,,-1 + 2809 032104 344 12 0 00 032106 AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + 2810 ;AND JUMP + 2811 STOP^ + 2812 032105 254 04 0 00 032106 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2813 032106 324 00 0 00 032107 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2814 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2815 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2816 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2817 032107 302 12 0 00 000000 CAIE 12,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2818 STOP^ + 2819 032110 254 04 0 00 032111 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2820 032111 324 00 0 00 032112 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2821 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2822 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2823 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2824 + 2825 ;********** + 2826 + 2827 ;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND + 2828 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2829 ;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION + 2830 ;SPECIFIED BY E. + 2831 ;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING + 2832 ;HENCE, AOJA SHOULD JUMP + 2833 + 2834 032112 400 12 0 00 000000 C53020: SETZ 12, ;PRELOAD AC WITH 0 + 2835 032113 344 12 0 00 032115 AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + 2836 ;AND JUMP + 2837 STOP^ + 2838 032114 254 04 0 00 032115 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2839 032115 324 00 0 00 032116 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2840 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2841 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2842 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2843 032116 302 12 0 00 000001 CAIE 12,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2844 STOP^ + 2845 032117 254 04 0 00 032120 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2846 032120 324 00 0 00 032121 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2847 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2848 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2849 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2850 + 2851 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 53 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0082 + + 2852 ;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND + 2853 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2854 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2855 ;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 + 2856 ;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING + 2857 ;HENCE, AOJGE SHOULD NOT JUMP + 2858 + 2859 032121 561 11 0 00 777776 C53100: HRROI 11,-2 ;PRELOAD AC WITH -1,,-2 + 2860 032122 345 11 0 00 032124 AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + 2861 ;AND NOT JUMP + 2862 032123 334 00 0 00 000000 SKIPA ;PASS IF AOJGE DID NOT JUMP + 2863 STOP^ + 2864 032124 254 04 0 00 032125 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2865 032125 324 00 0 00 032126 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2866 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2867 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2868 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2869 032126 312 11 0 00 033462 CAME 11,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + 2870 STOP^ + 2871 032127 254 04 0 00 032130 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2872 032130 324 00 0 00 032131 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2873 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2874 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2875 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2876 + 2877 ;********** + 2878 + 2879 ;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND + 2880 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2881 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2882 ;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. + 2883 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING + 2884 ;HENCE, AOJ SHOULD JUMP + 2885 + 2886 032131 474 11 0 00 000000 C53110: SETO 11, ;PRELOAD AC WITH -1,,-1 + 2887 032132 345 11 0 00 032134 AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + 2888 ;AND JUMP + 2889 STOP^ + 2890 032133 254 04 0 00 032134 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2891 032134 324 00 0 00 032135 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2892 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2893 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2894 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2895 032135 302 11 0 00 000000 CAIE 11,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2896 STOP^ + 2897 032136 254 04 0 00 032137 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2898 032137 324 00 0 00 032140 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2899 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2900 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2901 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2902 + 2903 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 54 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0083 + + 2904 ;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND + 2905 ;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS + 2906 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2907 ;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 + 2908 ;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING + 2909 ;HENCE, AOJGE SHOULD JUMP + 2910 + 2911 032140 400 11 0 00 000000 C53120: SETZ 11, ;PRELOAD AC WITH 0 + 2912 032141 345 11 0 00 032143 AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + 2913 ;AND JUMP + 2914 STOP^ + 2915 032142 254 04 0 00 032143 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2916 032143 324 00 0 00 032144 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2917 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2918 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2919 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2920 032144 302 11 0 00 000001 CAIE 11,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2921 STOP^ + 2922 032145 254 04 0 00 032146 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2923 032146 324 00 0 00 032147 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2924 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2925 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2926 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2927 + 2928 ;********** + 2929 + 2930 ;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND + 2931 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2932 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2933 ;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. + 2934 ;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING + 2935 ;HENCE, AOJN SHOULD JUMP + 2936 + 2937 032147 561 10 0 00 777776 C53200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2 + 2938 032150 346 10 0 00 032152 AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + 2939 ;AND JUMP + 2940 STOP^ + 2941 032151 254 04 0 00 032152 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2942 032152 324 00 0 00 032153 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2943 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2944 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2945 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2946 032153 312 10 0 00 033462 CAME 10,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + 2947 STOP^ + 2948 032154 254 04 0 00 032155 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2949 032155 324 00 0 00 032156 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2950 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2951 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2952 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2953 + 2954 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 55 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0084 + + 2955 ;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND + 2956 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2957 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2958 ;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. + 2959 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING + 2960 ;HENCE, AOJ SHOULD NOT JUMP. + 2961 + 2962 032156 474 10 0 00 000000 C53210: SETO 10, ;PRELOAD AC WITH -1,,-1 + 2963 032157 346 10 0 00 032161 AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + 2964 ;AND NOT JUMP + 2965 032160 334 00 0 00 000000 SKIPA ;PASS IF AOJN DID NOT JUMP + 2966 STOP^ + 2967 032161 254 04 0 00 032162 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2968 032162 324 00 0 00 032163 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2969 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2970 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2971 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2972 032163 302 10 0 00 000000 CAIE 10,0 ;PASS IF C(AC) INCREMENTED CORRRECTLY + 2973 STOP^ + 2974 032164 254 04 0 00 032165 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2975 032165 324 00 0 00 032166 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2976 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2977 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2978 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2979 + 2980 ;********** + 2981 + 2982 ;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND + 2983 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 2984 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 2985 ;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. + 2986 ;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING + 2987 ;HENCE, AOJN SHOULD JUMP. + 2988 + 2989 032166 400 10 0 00 000000 C53220: SETZ 10, ;PRELOAD AC WITH 0 + 2990 032167 346 10 0 00 032171 AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + 2991 ;AND JUMP + 2992 STOP^ + 2993 032170 254 04 0 00 032171 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 2994 032171 324 00 0 00 032172 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 2995 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 2996 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 2997 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 2998 032172 302 10 0 00 000001 CAIE 10,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + 2999 STOP^ + 3000 032173 254 04 0 00 032174 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3001 032174 324 00 0 00 032175 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3002 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3003 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3004 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3005 + 3006 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 56 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0085 + + 3007 ;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND + 3008 ;PLACES THE RESULT BACK INTO THE AC. THE REAULT IN THE AC IS + 3009 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3010 ;SPECIFIED BY E IF C(AC) IS GREATER THAN 0 + 3011 ;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INC + 3012 ;HENCE, AOJG SHOULD NOT JUMP + 3013 + 3014 032175 561 07 0 00 777776 C53300: HRROI 7,-2 ;PRELOAD AC WITH -1,,-2 + 3015 032176 347 07 0 00 032200 AOJG 7,.+2 ;*AOJG SHOULD ADD 0,11 TO C(AC) + 3016 ;AND NOT JUMP + 3017 032177 334 00 0 00 000000 SKIPA ;PASS IF AOJG DID NOT JUMP + 3018 STOP^ + 3019 032200 254 04 0 00 032201 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3020 032201 324 00 0 00 032202 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3021 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3022 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3023 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3024 032202 312 07 0 00 033462 CAME 7,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + 3025 STOP^ + 3026 032203 254 04 0 00 032204 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3027 032204 324 00 0 00 032205 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3028 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3029 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3030 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3031 + 3032 ;********** + 3033 + 3034 ;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND + 3035 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 3036 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3037 ;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. + 3038 ;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING + 3039 ;HENCE, AOJG SHOULD NOT JUMP. + 3040 + 3041 032205 474 07 0 00 000000 C53310: SETO 7, ;PRELOAD AC WITH -1,,-1 + 3042 032206 347 07 0 00 032210 AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC) + 3043 ;AND NOT JUMP + 3044 032207 334 00 0 00 000000 SKIPA ;PASS IF AOJG DID NOT JUMP + 3045 STOP^ + 3046 032210 254 04 0 00 032211 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3047 032211 324 00 0 00 032212 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3048 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3049 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3050 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3051 032212 302 07 0 00 000000 CAIE 7,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + 3052 STOP^ + 3053 032213 254 04 0 00 032214 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3054 032214 324 00 0 00 032215 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3055 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3056 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3057 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3058 + 3059 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 57 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOJX INSTRUCTIONS SEQ 0086 + + 3060 ;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND + 3061 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 3062 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3063 ;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. + 3064 ;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING + 3065 ;HENCE, AOJG SHOULD JUMP + 3066 + 3067 032215 400 07 0 00 000000 C53320: SETZ 7, ;PRELOAD AC WITH 0 + 3068 032216 347 07 0 00 032220 AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC) + 3069 ;AND JUMP + 3070 STOP^ + 3071 032217 254 04 0 00 032220 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3072 032220 324 00 0 00 032221 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3073 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3074 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3075 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3076 032221 302 07 0 00 000001 CAIE 7,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + 3077 STOP^ + 3078 032222 254 04 0 00 032223 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3079 032223 324 00 0 00 032224 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3080 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3081 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3082 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3083 + 3084 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 58 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0087 + + 3085 SUBTTL TEST OF MSCL AOSX INSTRUCTIONS + 3086 + 3087 ;********** + 3088 + 3089 ;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES + 3090 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3091 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0 + 3092 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3093 ;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2 + 3094 ;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE + 3095 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 3096 ;RESPECTIVELY. + 3097 + 3098 032224 200 06 0 00 033474 C53400: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3099 032225 561 07 0 00 777776 HRROI 7,-2 ;PRELOAD E WITH -1,,-2 + 3100 032226 351 06 0 00 000007 AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E), + 3101 ;UPDATE AC AND SKIP + 3102 STOP^ + 3103 032227 254 04 0 00 032230 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3104 032230 324 00 0 00 032231 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3105 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3106 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3107 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3108 032231 312 07 0 00 033462 CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3109 STOP^ + 3110 032232 254 04 0 00 032233 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3111 032233 324 00 0 00 032234 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3112 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3113 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3114 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3115 032234 312 06 0 00 033462 CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3116 STOP^ + 3117 032235 254 04 0 00 032236 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3118 032236 324 00 0 00 032237 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3119 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3120 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3121 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3122 + 3123 ;********** + 3124 + 3125 ;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES + 3126 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3127 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0 + 3128 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3129 ;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2 + 3130 ;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE + 3131 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 3132 ;RESPECTIVELY. + 3133 + 3134 032237 200 06 0 00 033474 C53401: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3135 032240 561 07 0 00 777776 HRROI 7,-2 ;PRELOAD E WITH -1,,-2 + 3136 032241 202 07 0 00 032255 MOVEM 7,E53401 + 3137 032242 351 06 0 00 032255 AOSL 6,E53401 ;*AOSL SHOULD ADD 0,,1 TO C(E), + 3138 ;UPDATE AC AND SKIP + 3139 STOP^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 58-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0088 + + 3140 032243 254 04 0 00 032244 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3141 032244 324 00 0 00 032245 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3142 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3143 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3144 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3145 032245 200 07 0 00 032255 MOVE 7,E53401 + 3146 032246 312 07 0 00 033462 CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3147 STOP^ + 3148 032247 254 04 0 00 032250 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3149 032250 324 00 0 00 032251 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3150 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3151 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3152 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3153 032251 312 06 0 00 033462 CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3154 STOP^ + 3155 032252 254 04 0 00 032253 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3156 032253 324 00 0 00 032254 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3157 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3158 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3159 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3160 + 3161 032254 334 00 0 00 000000 SKIPA ;GO TO NEXT TEST + 3162 032255 000000 000000 E53401: 0 ;TEST WORD MEMORY + 3163 + 3164 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 59 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0089 + + 3165 ;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES + 3166 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3167 ;THE NEXT INSTRUCTION IF C(E) ISLESS THAN 0 + 3168 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3169 ;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-1 + 3170 ;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE + 3171 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 3172 ;RESPECTIVELY. + 3173 + 3174 032256 200 06 0 00 033474 C53410: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3175 032257 474 07 0 00 000000 SETO 7, ;PRELOAD E WITH -1,,-1 + 3176 032260 351 06 0 00 000007 AOSL 6,7 ;*AOSL SHOULD ADD 00,1 TO C(E) + 3177 ;UPDATE AC AND NOT SKIP + 3178 032261 334 00 0 00 000000 SKIPA ;PASS IF AOSL DID NOT SKIP + 3179 STOP^ + 3180 032262 254 04 0 00 032263 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3181 032263 324 00 0 00 032264 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3182 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3183 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3184 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3185 032264 312 07 0 00 033501 CAME 7,[0] ;PASS IF E INCREMENTED CORRECTLY + 3186 STOP^ + 3187 032265 254 04 0 00 032266 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3188 032266 324 00 0 00 032267 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3189 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3190 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3191 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3192 032267 312 06 0 00 033501 CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3193 STOP^ + 3194 032270 254 04 0 00 032271 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3195 032271 324 00 0 00 032272 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3196 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3197 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3198 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3199 + 3200 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 60 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0090 + + 3201 ;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES + 3202 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3203 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. + 3204 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3205 ;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0 + 3206 ;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE + 3207 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 3208 ;RESPECTIVELY + 3209 + 3210 032272 200 06 0 00 033474 C53420: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3211 032273 400 07 0 00 000000 SETZ 7, ;PRELOAD E WITH 0 + 3212 032274 351 06 0 00 000007 AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E). + 3213 ;UPDATE AC AND NOT SKIP + 3214 032275 334 00 0 00 000000 SKIPA ;PASS IF AOSL DID NOT SKIP + 3215 STOP^ + 3216 032276 254 04 0 00 032277 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3217 032277 324 00 0 00 032300 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3218 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3219 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3220 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3221 032300 312 07 0 00 033502 CAME 7,[1] ;PASS IF E INCREMENTED CORRECTLY + 3222 STOP^ + 3223 032301 254 04 0 00 032302 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3224 032302 324 00 0 00 032303 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3225 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3226 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3227 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3228 032303 312 06 0 00 033502 CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3229 STOP^ + 3230 032304 254 04 0 00 032305 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3231 032305 324 00 0 00 032306 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3232 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3233 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3234 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3235 + 3236 ;********** + 3237 + 3238 ;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES + 3239 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3240 ;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0. + 3241 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3242 ;IN THIS CASE, AC=5, C(AC)=707070,,707070AND C(E)=-1,,-2 + 3243 ;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE + 3244 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 3245 ;RESPECTIVELY. + 3246 + 3247 032306 200 05 0 00 033474 C53500: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3248 032307 561 06 0 00 777776 HRROI 6,-2 ;PRELOAD E WITH -1,,-2 + 3249 032310 352 05 0 00 000006 AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + 3250 ;UPDATE AC AND NOT SKIP + 3251 032311 334 00 0 00 000000 SKIPA ;PASS IF AOSE DID NOT SKIP + 3252 STOP^ + 3253 032312 254 04 0 00 032313 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3254 032313 324 00 0 00 032314 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3255 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 60-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0091 + + 3256 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3257 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3258 032314 312 06 0 00 033462 CAME 6,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3259 STOP^ + 3260 032315 254 04 0 00 032316 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3261 032316 324 00 0 00 032317 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3262 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3263 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3264 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3265 032317 312 05 0 00 033462 CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3266 STOP^ + 3267 032320 254 04 0 00 032321 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3268 032321 324 00 0 00 032322 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3269 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3270 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3271 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3272 + 3273 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 61 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0092 + + 3274 ;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES + 3275 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3276 ;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 + 3277 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3278 ;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=-1,,-1 + 3279 ;BEFORE INCREMENTING. HENCE, AOSE SHOULD SKIP; AND THE + 3280 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 3281 ;RESPECTIVELY. + 3282 + 3283 032322 200 05 0 00 033474 C53510: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3284 032323 474 06 0 00 000000 SETO 6, ;PRELOAD E WITH -1,,-1 + 3285 032324 352 05 0 00 000006 AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + 3286 ;UPDATE AC AND SKIP + 3287 STOP^ + 3288 032325 254 04 0 00 032326 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3289 032326 324 00 0 00 032327 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3290 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3291 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3292 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3293 032327 312 06 0 00 033501 CAME 6,[0] ;PASS IF E INCREMENTED CORRECTLY + 3294 STOP^ + 3295 032330 254 04 0 00 032331 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3296 032331 324 00 0 00 032332 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3297 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3298 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3299 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3300 032332 312 05 0 00 033501 CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3301 STOP^ + 3302 032333 254 04 0 00 032334 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3303 032334 324 00 0 00 032335 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3304 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3305 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3306 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3307 + 3308 ;********** + 3309 + 3310 ;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES + 3311 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3312 ;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 + 3313 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3314 ;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(AC)=0 + 3315 ;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE + 3316 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 3317 ;RESPECTIVELY. + 3318 + 3319 032335 200 05 0 00 033474 C53520: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3320 032336 400 06 0 00 000000 SETZ 6, ;PRELOAD E WITH 0 + 3321 032337 352 05 0 00 000006 AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + 3322 ;UPDATE AC AND NOT SKIP + 3323 032340 334 00 0 00 000000 SKIPA ;PASS IF AOSE DID NOT SKIP + 3324 STOP^ + 3325 032341 254 04 0 00 032342 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3326 032342 324 00 0 00 032343 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3327 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3328 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 61-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0093 + + 3329 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3330 032343 312 06 0 00 033502 CAME 6,[1] ;PASS IF E INCREMENTED CORRECTLY + 3331 STOP^ + 3332 032344 254 04 0 00 032345 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3333 032345 324 00 0 00 032346 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3334 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3335 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3336 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3337 032346 312 05 0 00 033502 CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3338 STOP^ + 3339 032347 254 04 0 00 032350 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3340 032350 324 00 0 00 032351 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3341 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3342 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3343 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3344 + 3345 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 62 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0094 + + 3346 ;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES + 3347 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3348 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO0 + 3349 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3350 ;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-2 + 3351 ;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE + 3352 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 3353 ;RESPECTIVELY. + 3354 + 3355 032351 200 04 0 00 033474 C53600: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3356 032352 561 05 0 00 777776 HRROI 5,-2 ;PRELOAD E WITH -1,,-2 + 3357 032353 353 04 0 00 000005 AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E), + 3358 ;UPDATE AC AND SKIP ZERO + 3359 STOP^ + 3360 032354 254 04 0 00 032355 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3361 032355 324 00 0 00 032356 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3362 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3363 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3364 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3365 032356 312 05 0 00 033462 CAME 5,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3366 STOP^ + 3367 032357 254 04 0 00 032360 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3368 032360 324 00 0 00 032361 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3369 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3370 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3371 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3372 032361 312 04 0 00 033462 CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3373 STOP^ + 3374 032362 254 04 0 00 032363 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3375 032363 324 00 0 00 032364 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3376 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3377 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3378 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3379 + 3380 ;********** + 3381 + 3382 ;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES + 3383 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3384 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. + 3385 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3386 ;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-1 + 3387 ;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE + 3388 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 3389 ;RESPECTIVELY. + 3390 + 3391 032364 200 04 0 00 033474 C53610: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3392 032365 476 05 0 00 000000 SETOM 5, ;PRELOAD E WITH -1,,-1 + 3393 032366 353 04 0 00 000005 AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E) + 3394 ;UPDATE AC AND SKIP + 3395 STOP^ + 3396 032367 254 04 0 00 032370 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3397 032370 324 00 0 00 032371 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3398 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3399 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3400 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 62-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0095 + + 3401 032371 312 05 0 00 033501 CAME 5,[0] ;PASS IF E INCREMENTED CORRECTLY + 3402 STOP^ + 3403 032372 254 04 0 00 032373 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3404 032373 324 00 0 00 032374 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3405 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3406 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3407 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3408 032374 312 04 0 00 033501 CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3409 STOP^ + 3410 032375 254 04 0 00 032376 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3411 032376 324 00 0 00 032377 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3412 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3413 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3414 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3415 + 3416 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 63 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0096 + + 3417 ;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES + 3418 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3419 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0 + 3420 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3421 ;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0 + 3422 ;BEFORE INCREMENTING. HENCE, AOSLE SHOULD NOT SKIP ; AND THE + 3423 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 3424 ;RESPECTIVELY. + 3425 + 3426 032377 200 04 0 00 033474 C53620: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3427 032400 400 00 0 00 000005 SETZ 5 ;PRELOAD E WITH 0 + 3428 032401 353 04 0 00 000005 AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E) + 3429 ;UPDATE AC AND NOT SKIP + 3430 032402 334 00 0 00 000000 SKIPA ;PASS IF AOSLE DID NOT SKIP + 3431 STOP^ + 3432 032403 254 04 0 00 032404 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3433 032404 324 00 0 00 032405 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3434 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3435 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3436 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3437 032405 312 05 0 00 033502 CAME 5,[1] ;PASS IF E INCREMENTED CORRECTLY + 3438 STOP^ + 3439 032406 254 04 0 00 032407 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3440 032407 324 00 0 00 032410 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3441 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3442 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3443 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3444 032410 312 04 0 00 033502 CAME 4,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3445 STOP^ + 3446 032411 254 04 0 00 032412 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3447 032412 324 00 0 00 032413 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3448 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3449 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3450 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3451 + 3452 ;********** + 3453 + 3454 ;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES + 3455 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS + 3456 ;THE NEXT INSTRUCTION. + 3457 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3458 ;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-2 + 3459 ;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE + 3460 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 3461 ;RESPECTIVELY. + 3462 + 3463 032413 200 03 0 00 033474 C53700: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3464 032414 561 04 0 00 777776 HRROI 4,-2 ;PRELOAD E WITH -1,,-2 + 3465 032415 354 03 0 00 000004 AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + 3466 ;UPDATE AC AND SKIP + 3467 STOP^ + 3468 032416 254 04 0 00 032417 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3469 032417 324 00 0 00 032420 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3470 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3471 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 63-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0097 + + 3472 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3473 032420 312 04 0 00 033462 CAME 4,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3474 STOP^ + 3475 032421 254 04 0 00 032422 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3476 032422 324 00 0 00 032423 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3477 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3478 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3479 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3480 032423 312 03 0 00 033462 CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3481 STOP^ + 3482 032424 254 04 0 00 032425 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3483 032425 324 00 0 00 032426 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3484 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3485 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3486 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3487 + 3488 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 64 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0098 + + 3489 ;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES + 3490 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS + 3491 ;THE NEXT INSTRUCTION. + 3492 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3493 ;;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-1 + 3494 ;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP AND THE + 3495 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 3496 ;RESPECTIVELY + 3497 + 3498 032426 200 03 0 00 033474 C53710: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3499 032427 474 04 0 00 000000 SETO 4, ;PRELOAD E WITH -1,,-1 + 3500 032430 354 03 0 00 000004 AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + 3501 ;UPDATE AC AND SKIP + 3502 STOP^ + 3503 032431 254 04 0 00 032432 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3504 032432 324 00 0 00 032433 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3505 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3506 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3507 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3508 032433 312 04 0 00 033501 CAME 4,[0] ;PASS IF E INCREMENTED CORRECTLY + 3509 STOP^ + 3510 032434 254 04 0 00 032435 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3511 032435 324 00 0 00 032436 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3512 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3513 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3514 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3515 032436 312 03 0 00 033501 CAME 3,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3516 STOP^ + 3517 032437 254 04 0 00 032440 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3518 032440 324 00 0 00 032441 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3519 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3520 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3521 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3522 + 3523 ;********** + 3524 + 3525 ;THIS TEST VERIFIES THAT AOS INCREMENTS C(E) BY 0,,1 AND PLACES + 3526 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS + 3527 ;THE NEXT INSTRUCTION. + 3528 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3529 ;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0 + 3530 ;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE + 3531 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 3532 ;RESPECTIVELY + 3533 + 3534 032441 200 03 0 00 033474 C53720: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3535 032442 400 04 0 00 000000 SETZ 4, ;PRELOAD E WITH 0 + 3536 032443 354 03 0 00 000004 AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + 3537 ;UPDATE AC AND SKIP + 3538 STOP^ + 3539 032444 254 04 0 00 032445 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3540 032445 324 00 0 00 032446 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3541 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3542 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3543 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 64-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0099 + + 3544 032446 312 04 0 00 033502 CAME 4,[1] ;PASS IF E INCREMENTED CORRECTLY + 3545 STOP^ + 3546 032447 254 04 0 00 032450 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3547 032450 324 00 0 00 032451 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3548 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3549 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3550 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3551 032451 312 03 0 00 033502 CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3552 STOP^ + 3553 032452 254 04 0 00 032453 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3554 032453 324 00 0 00 032454 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3555 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3556 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3557 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3558 + 3559 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 65 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0100 + + 3560 ;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES + 3561 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3562 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 + 3563 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3564 ;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-2 + 3565 ;BEFORE INCREMENTING. HENCE, AOSGE SHOULD NOT SKIP; AND THE + 3566 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 3567 ;RESPECTIVELY + 3568 + 3569 032454 200 02 0 00 033474 C54000: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3570 032455 561 03 0 00 777776 HRROI 3,-2 ;PRELOAD E WITH -1,,-2 + 3571 032456 355 02 0 00 000003 AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + 3572 ;UPDATE AC AND NOT SKIP + 3573 032457 334 00 0 00 000000 SKIPA ;PASS IF AOSGE DID NOT SKIP + 3574 STOP^ + 3575 032460 254 04 0 00 032461 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3576 032461 324 00 0 00 032462 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3577 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3578 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3579 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3580 032462 312 03 0 00 033462 CAME 3,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3581 STOP^ + 3582 032463 254 04 0 00 032464 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3583 032464 324 00 0 00 032465 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3584 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3585 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3586 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3587 032465 312 02 0 00 033462 CAME 2,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3588 STOP^ + 3589 032466 254 04 0 00 032467 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3590 032467 324 00 0 00 032470 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3591 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3592 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3593 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3594 + 3595 ;********** + 3596 + 3597 ;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES + 3598 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3599 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 + 3600 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3601 ;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-1 + 3602 ;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE + 3603 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 3604 ;RESPECTIVELY + 3605 + 3606 032470 200 02 0 00 033474 C54010: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3607 032471 474 03 0 00 000000 SETO 3, ;PRELOAD E WITH 0 + 3608 032472 355 02 0 00 000003 AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + 3609 ;UPDATE AC AND SKIP + 3610 STOP^ + 3611 032473 254 04 0 00 032474 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3612 032474 324 00 0 00 032475 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3613 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3614 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 65-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0101 + + 3615 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3616 032475 312 03 0 00 033501 CAME 3,[0] ;PASS IF E INCREMENTED CORRECTLY + 3617 STOP^ + 3618 032476 254 04 0 00 032477 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3619 032477 324 00 0 00 032500 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3620 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3621 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3622 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3623 032500 312 02 0 00 033501 CAME 2,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3624 STOP^ + 3625 032501 254 04 0 00 032502 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3626 032502 324 00 0 00 032503 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3627 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3628 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3629 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3630 + 3631 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 66 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0102 + + 3632 ;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES + 3633 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3634 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 + 3635 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3636 ;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=0 + 3637 ;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE + 3638 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 3639 ;RESPECTIVELY + 3640 + 3641 032503 200 02 0 00 033474 C54020: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3642 032504 400 03 0 00 000000 SETZ 3, ;PRELOAD E WITH 0 + 3643 032505 355 02 0 00 000003 AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + 3644 ;UPDATE AC AND SKIP + 3645 STOP^ + 3646 032506 254 04 0 00 032507 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3647 032507 324 00 0 00 032510 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3648 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3649 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3650 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3651 032510 312 03 0 00 033502 CAME 3,[1] ;PASS IF E INCREMENTED CORRECTLY + 3652 STOP^ + 3653 032511 254 04 0 00 032512 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3654 032512 324 00 0 00 032513 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3655 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3656 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3657 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3658 032513 312 02 0 00 033502 CAME 2,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3659 STOP^ + 3660 032514 254 04 0 00 032515 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3661 032515 324 00 0 00 032516 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3662 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3663 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3664 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3665 + 3666 ;********** + 3667 + 3668 ;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES + 3669 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3670 ;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO. + 3671 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3672 ;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-2 + 3673 ;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE + 3674 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 3675 ;RESPECTIVELY + 3676 + 3677 032516 200 01 0 00 033474 C54100: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3678 032517 561 02 0 00 777776 HRROI 2,-2 ;PRELOAD E WITH -1,,-2 + 3679 032520 356 01 0 00 000002 AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + 3680 ;UPDATE AC AND SKIP + 3681 STOP^ + 3682 032521 254 04 0 00 032522 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3683 032522 324 00 0 00 032523 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3684 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3685 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3686 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 66-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0103 + + 3687 032523 312 02 0 00 033462 CAME 2,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3688 STOP^ + 3689 032524 254 04 0 00 032525 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3690 032525 324 00 0 00 032526 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3691 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3692 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3693 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3694 032526 312 01 0 00 033462 CAME 1,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3695 STOP^ + 3696 032527 254 04 0 00 032530 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3697 032530 324 00 0 00 032531 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3698 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3699 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3700 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3701 + 3702 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 67 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0104 + + 3703 ;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES + 3704 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3705 ;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO + 3706 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3707 ;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-1 + 3708 ;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE + 3709 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 3710 ;RESPECTIVELY + 3711 + 3712 032531 200 01 0 00 033474 C54110: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3713 032532 474 02 0 00 000000 SETO 2, ;PRELOAD E WITH -1,,-1 + 3714 032533 356 01 0 00 000002 AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + 3715 ;UPDATE AC AND NOT SKIP + 3716 032534 334 00 0 00 000000 SKIPA ;PASS IF AOSN DID NOT SKIP + 3717 STOP^ + 3718 032535 254 04 0 00 032536 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3719 032536 324 00 0 00 032537 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3720 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3721 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3722 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3723 032537 312 02 0 00 033501 CAME 2,[0] ;PASS IF E INCREMENTED CORRECTLY + 3724 STOP^ + 3725 032540 254 04 0 00 032541 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3726 032541 324 00 0 00 032542 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3727 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3728 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3729 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3730 032542 312 01 0 00 033501 CAME 1,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3731 STOP^ + 3732 032543 254 04 0 00 032544 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3733 032544 324 00 0 00 032545 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3734 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3735 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3736 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3737 + 3738 ;********** + 3739 + 3740 ;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES + 3741 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3742 ;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO + 3743 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3744 ;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=0 + 3745 ;BEFORE INCREMENTING. HENCE, AOSN SHOULD SKIP; AND THE + 3746 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 3747 ;RESPECTIVELY + 3748 + 3749 032545 200 01 0 00 033474 C54120: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3750 032546 400 02 0 00 000000 SETZ 2, ;PRELOAD E WITH 0 + 3751 032547 356 01 0 00 000002 AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + 3752 ;UPDATE AC AND SKIP + 3753 STOP^ + 3754 032550 254 04 0 00 032551 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3755 032551 324 00 0 00 032552 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3756 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3757 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 67-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0105 + + 3758 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3759 032552 312 02 0 00 033502 CAME 2,[1] ;PASS IF E INCREMENTED CORRECTLY + 3760 STOP^ + 3761 032553 254 04 0 00 032554 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3762 032554 324 00 0 00 032555 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3763 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3764 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3765 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3766 032555 312 01 0 00 033502 CAME 1,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 3767 STOP^ + 3768 032556 254 04 0 00 032557 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3769 032557 324 00 0 00 032560 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3770 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3771 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3772 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3773 + 3774 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 68 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0106 + + 3775 ;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES + 3776 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3777 ;THE NEST INSTRUCTION IF C(E) IS GREATER THAN 0 + 3778 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3779 ;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-2 + 3780 ;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE + 3781 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1 + 3782 ;RESPECTIVELY + 3783 + 3784 032560 200 00 0 00 033474 C54200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3785 032561 561 01 0 00 777776 HRROI 1,-2 ;PRELOAD E WITH -1,,-2 + 3786 032562 357 00 0 00 000001 AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + 3787 ;AND NOT SKIP + 3788 032563 334 00 0 00 000000 SKIPA ;PASS IF AOSG DID NOT SKIP + 3789 STOP^ + 3790 032564 254 04 0 00 032565 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3791 032565 324 00 0 00 032566 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3792 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3793 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3794 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3795 032566 312 01 0 00 033462 CAME 1,[-1] ;PASS IF E INCREMENTED CORRECTLY + 3796 STOP^ + 3797 032567 254 04 0 00 032570 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3798 032570 324 00 0 00 032571 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3799 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3800 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3801 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3802 032571 312 00 0 00 033474 CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + 3803 STOP^ + 3804 032572 254 04 0 00 032573 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3805 032573 324 00 0 00 032574 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3806 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3807 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3808 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3809 + 3810 ;********** + 3811 + 3812 ;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES + 3813 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3814 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 + 3815 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3816 ;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-1 + 3817 ;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE + 3818 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 + 3819 ;RESPECTIVELY + 3820 + 3821 032574 200 00 0 00 033474 C54210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3822 032575 474 01 0 00 000000 SETO 1, ;PRELOAD E WITH -1,,-1 + 3823 032576 357 00 0 00 000001 AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + 3824 ;AND NOT SKIP + 3825 032577 334 00 0 00 000000 SKIPA ;PASS IF AOSG DID NOT SKIP + 3826 STOP^ + 3827 032600 254 04 0 00 032601 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3828 032601 324 00 0 00 032602 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3829 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 68-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0107 + + 3830 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3831 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3832 032602 312 01 0 00 033501 CAME 1,[0] ;PASS IF E INCREMENTED CORRECTLY + 3833 STOP^ + 3834 032603 254 04 0 00 032604 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3835 032604 324 00 0 00 032605 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3836 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3837 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3838 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3839 032605 312 00 0 00 033474 CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + 3840 STOP^ + 3841 032606 254 04 0 00 032607 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3842 032607 324 00 0 00 032610 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3843 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3844 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3845 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3846 + 3847 ;*********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 69 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL AOSX INSTRUCTIONS SEQ 0108 + + 3848 ;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES + 3849 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 3850 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 + 3851 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 3852 ;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0 + 3853 ;BEFORE INCREMENTING. HENCE, AOSG SHOULD SKIP; AND THE + 3854 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1 + 3855 ;RESPECTIVELY + 3856 + 3857 032610 200 00 0 00 033474 C54220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 3858 032611 400 01 0 00 000000 SETZ 1, ;PRELOAD E WITH 0 + 3859 032612 357 00 0 00 000001 AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + 3860 ;AND SKIP + 3861 STOP^ + 3862 032613 254 04 0 00 032614 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3863 032614 324 00 0 00 032615 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3864 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3865 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3866 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3867 032615 312 01 0 00 033502 CAME 1,[1] ;PASS IF E INCREMENTED CORRECTLY + 3868 STOP^ + 3869 032616 254 04 0 00 032617 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3870 032617 324 00 0 00 032620 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3871 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3872 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3873 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3874 032620 312 00 0 00 033474 CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + 3875 STOP^ + 3876 032621 254 04 0 00 032622 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3877 032622 324 00 0 00 032623 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3878 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3879 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3880 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3881 + 3882 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 70 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0109 + + 3883 SUBTTL TEST OF MSCL SOJX INSTRUCTIONS + 3884 + 3885 ;********** + 3886 + 3887 ;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND + 3888 ;PLACES THE RESTULT BACK INTO THE AC. THE RESULT IN THE AC IS + 3889 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3890 ;SPECIFIED BY E IF C(AC) IS LESS THAN 0. + 3891 ;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJL + 3892 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + 3893 + 3894 032623 201 17 0 00 000000 C54300: MOVEI 17,0 ;PRELOAD AC WITH 0 + 3895 032624 361 17 0 00 032626 SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC) + 3896 ;AND JUMP + 3897 STOP^ + 3898 032625 254 04 0 00 032626 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3899 032626 324 00 0 00 032627 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3900 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3901 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3902 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3903 032627 312 17 0 00 033462 CAME 17,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 3904 STOP^ + 3905 032630 254 04 0 00 032631 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3906 032631 324 00 0 00 032632 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3907 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3908 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3909 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3910 + 3911 ;*********** + 3912 + 3913 ;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND + 3914 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 3915 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3916 ;SPECIFIED BY E IF C(AC) IS LESS THAN 0. + 3917 ;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJL + 3918 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + 3919 + 3920 032632 201 17 0 00 000001 C54310: MOVEI 17,1 ;PRELOAD AC WITH 0,,1 + 3921 032633 361 17 0 00 032635 SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC) + 3922 032634 334 00 0 00 000000 SKIPA ;PASS IF SOJL DID NOT JUMP + 3923 STOP^ + 3924 032635 254 04 0 00 032636 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3925 032636 324 00 0 00 032637 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3926 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3927 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3928 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3929 032637 312 17 0 00 033501 CAME 17,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + 3930 STOP^ + 3931 032640 254 04 0 00 032641 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3932 032641 324 00 0 00 032642 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3933 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3934 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3935 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3936 + 3937 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 71 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0110 + + 3938 ;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND + 3939 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 3940 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3941 ;SPECIFIED BY E IF C(AC) IS LESS THAN 0 + 3942 ;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJ + 3943 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + 3944 + 3945 032642 201 17 0 00 000002 C54320: MOVEI 17,2 ;PRELOAD AC WITH 0,,2 + 3946 032643 361 17 0 00 032645 SOJL 17,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + 3947 ;AND NOT JUMP. + 3948 032644 334 00 0 00 000000 SKIPA ;PASS IF SOJL DID NOT JUMP + 3949 STOP^ + 3950 032645 254 04 0 00 032646 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3951 032646 324 00 0 00 032647 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3952 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3953 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3954 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3955 032647 312 17 0 00 033502 CAME 17,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 3956 STOP^ + 3957 032650 254 04 0 00 032651 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3958 032651 324 00 0 00 032652 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3959 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3960 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3961 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3962 + 3963 ;********** + 3964 + 3965 ;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND + 3966 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 3967 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3968 ;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. + 3969 ;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJE + 3970 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + 3971 + 3972 032652 201 16 0 00 000000 C54400: MOVEI 16,0 ;PRELOAD AC WITH 0 + 3973 032653 362 16 0 00 032655 SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC) + 3974 ;AND NOT JUMP. + 3975 032654 334 00 0 00 000000 SKIPA ;PASS IF SOJE DID NOT JUMP + 3976 STOP^ + 3977 032655 254 04 0 00 032656 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3978 032656 324 00 0 00 032657 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3979 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3980 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3981 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3982 032657 312 16 0 00 033462 CAME 16,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 3983 STOP^ + 3984 032660 254 04 0 00 032661 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 3985 032661 324 00 0 00 032662 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 3986 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 3987 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 3988 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 3989 + 3990 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 72 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0111 + + 3991 ;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND + 3992 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 3993 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 3994 ;SPECIFIED BY E IF C(AC) IS EQUAL TO 0 + 3995 ;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJ + 3996 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + 3997 + 3998 032662 201 16 0 00 000001 C54410: MOVEI 16,1 ;PRELOAD AC WITH 0,,1 + 3999 032663 362 16 0 00 032665 SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC) + 4000 ;AND JUMP + 4001 STOP^ + 4002 032664 254 04 0 00 032665 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4003 032665 324 00 0 00 032666 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4004 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4005 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4006 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4007 032666 312 16 0 00 033501 CAME 16,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4008 STOP^ + 4009 032667 254 04 0 00 032670 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4010 032670 324 00 0 00 032671 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4011 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4012 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4013 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4014 + 4015 ;********** + 4016 + 4017 ;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND + 4018 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4019 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4020 ;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. + 4021 ;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJE + 4022 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + 4023 + 4024 032671 201 16 0 00 000002 C54420: MOVEI 16,2 ;PRELOAD AC WITH 0,,2 + 4025 032672 362 16 0 00 032674 SOJE 16,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + 4026 ;AND NOT JUMP. + 4027 032673 334 00 0 00 000000 SKIPA ;PASS IF SOJE DID NOT JUMP + 4028 STOP^ + 4029 032674 254 04 0 00 032675 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4030 032675 324 00 0 00 032676 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4031 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4032 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4033 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4034 032676 312 16 0 00 033502 CAME 16,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4035 STOP^ + 4036 032677 254 04 0 00 032700 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4037 032700 324 00 0 00 032701 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4038 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4039 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4040 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4041 + 4042 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 73 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0112 + + 4043 ;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND + 4044 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4045 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4046 ;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0 + 4047 ;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJLE + 4048 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + 4049 + 4050 032701 201 15 0 00 000000 C54500: MOVEI 15,0 ;PRELOAD AC WITH 0 + 4051 032702 363 15 0 00 032704 SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + 4052 ;AND JUMP + 4053 STOP^ + 4054 032703 254 04 0 00 032704 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4055 032704 324 00 0 00 032705 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4056 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4057 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4058 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4059 032705 312 15 0 00 033462 CAME 15,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4060 STOP^ + 4061 032706 254 04 0 00 032707 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4062 032707 324 00 0 00 032710 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4063 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4064 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4065 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4066 + 4067 ;********** + 4068 + 4069 ;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND + 4070 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4071 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4072 ;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUALTO 0. + 4073 ;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJLE + 4074 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + 4075 + 4076 032710 201 15 0 00 000001 C54510: MOVEI 15,1 ;PRELOAD AC WITH 0,,1 + 4077 032711 363 15 0 00 032713 SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + 4078 ;AND JUMP + 4079 STOP^ + 4080 032712 254 04 0 00 032713 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4081 032713 324 00 0 00 032714 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4082 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4083 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4084 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4085 032714 312 15 0 00 033501 CAME 15,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4086 STOP^ + 4087 032715 254 04 0 00 032716 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4088 032716 324 00 0 00 032717 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4089 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4090 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4091 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4092 + 4093 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 74 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0113 + + 4094 ;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND + 4095 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4096 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4097 ;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. + 4098 ;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJLE + 4099 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + 4100 + 4101 032717 201 15 0 00 000002 C54520: MOVEI 15,2 ;PRELOAD AC WITH 0,,2 + 4102 032720 363 15 0 00 032722 SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + 4103 ;AND NOT JUMP + 4104 032721 334 00 0 00 000000 SKIPA ;PASS IF SOJLE DID NOT JUMP + 4105 STOP^ + 4106 032722 254 04 0 00 032723 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4107 032723 324 00 0 00 032724 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4108 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4109 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4110 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4111 032724 312 15 0 00 033502 CAME 15,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4112 STOP^ + 4113 032725 254 04 0 00 032726 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4114 032726 324 00 0 00 032727 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4115 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4116 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4117 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4118 + 4119 ;********** + 4120 + 4121 ;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND + 4122 ;PLACES THE RESULT INTO THE AC. THE RESULT IN THE AC IS + 4123 ;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION + 4124 ;SPECIFIED BY E + 4125 ;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJA + 4126 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + 4127 + 4128 032727 201 14 0 00 000000 C54600: MOVEI 14,0 ;PRELOAD AC WITH 0 + 4129 032730 364 14 0 00 032732 SOJA 14,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + 4130 ;AND JUMP + 4131 STOP^ + 4132 032731 254 04 0 00 032732 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4133 032732 324 00 0 00 032733 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4134 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4135 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4136 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4137 032733 312 14 0 00 033462 CAME 14,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4138 STOP^ + 4139 032734 254 04 0 00 032735 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4140 032735 324 00 0 00 032736 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4141 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4142 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4143 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4144 + 4145 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 75 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0114 + + 4146 ;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND + 4147 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4148 ;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION + 4149 ;SPECIFIED BY E + 4150 ;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJA + 4151 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + 4152 + 4153 032736 201 14 0 00 000001 C54610: MOVEI 14,1 ;PRELOAD AC WITH 0,,1 + 4154 032737 364 14 0 00 032741 SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC) + 4155 ;AND JUMP + 4156 STOP^ + 4157 032740 254 04 0 00 032741 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4158 032741 324 00 0 00 032742 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4159 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4160 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4161 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4162 032742 312 14 0 00 033501 CAME 14,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4163 STOP^ + 4164 032743 254 04 0 00 032744 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4165 032744 324 00 0 00 032745 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4166 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4167 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4168 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4169 + 4170 ;********** + 4171 + 4172 ;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND + 4173 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4174 ;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION + 4175 ;SPECIFIED BY E + 4176 ;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJA + 4177 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + 4178 + 4179 032745 201 14 0 00 000002 C54620: MOVEI 14,2 ;PRELOAD AC WITH 0,,2 + 4180 032746 364 14 0 00 032750 SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC) + 4181 ;AND JUMP + 4182 STOP^ + 4183 032747 254 04 0 00 032750 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4184 032750 324 00 0 00 032751 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4185 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4186 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4187 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4188 032751 312 14 0 00 033502 CAME 14,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4189 STOP^ + 4190 032752 254 04 0 00 032753 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4191 032753 324 00 0 00 032754 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4192 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4193 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4194 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4195 + 4196 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 76 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0115 + + 4197 ;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND + 4198 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4199 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4200 ;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 + 4201 ;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJGE + 4202 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + 4203 + 4204 032754 201 13 0 00 000000 C54700: MOVEI 13,0 ;PRELOAD A C WITH 0 + 4205 032755 365 13 0 00 032757 SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT 0,,1 FROM C(AC) + 4206 ;AND NOT JUMP + 4207 032756 334 00 0 00 000000 SKIPA ;PASS IF SOJGE DID NOT JUMP + 4208 STOP^ + 4209 032757 254 04 0 00 032760 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4210 032760 324 00 0 00 032761 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4211 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4212 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4213 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4214 032761 312 13 0 00 033462 CAME 13,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4215 STOP^ + 4216 032762 254 04 0 00 032763 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4217 032763 324 00 0 00 032764 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4218 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4219 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4220 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4221 + 4222 ;********** + 4223 + 4224 ;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND + 4225 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4226 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4227 ;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 + 4228 ;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJGE + 4229 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + 4230 + 4231 032764 201 13 0 00 000001 C54710: MOVEI 13,1 ;PRELOAD AC WITH 0,,1 + 4232 032765 365 13 0 00 032767 SOJGE 13,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + 4233 ;AND JUMP + 4234 STOP^ + 4235 032766 254 04 0 00 032767 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4236 032767 324 00 0 00 032770 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4237 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4238 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4239 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4240 032770 312 13 0 00 033501 CAME 13,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4241 STOP^ + 4242 032771 254 04 0 00 032772 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4243 032772 324 00 0 00 032773 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4244 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4245 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4246 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4247 + 4248 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 77 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0116 + + 4249 ;THIS TEST VERIRIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND PLACES THE + 4250 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED + 4251 ;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC IS + 4252 ;GREATER THAN OR EQUAL TO 0. IN THIS CASE, C(AC = 0,,2 BEFORE + 4253 ;DECREMENTING. HENCE, SOJGE SHOULD JUMP AND THE RESULT IN THE AC SHOULD + 4254 ;BE 0,,1. + 4255 + 4256 032773 201 13 0 00 000002 C54720: MOVEI 13,2 ;PRELOAD AC WITH 0,,2 + 4257 032774 365 13 0 00 032776 SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT0,,1 FROM C(AC) + 4258 ;AND JUMP. + 4259 STOP^ + 4260 032775 254 04 0 00 032776 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4261 032776 324 00 0 00 032777 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4262 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4263 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4264 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4265 032777 312 13 0 00 033502 CAME 13,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4266 STOP^ + 4267 033000 254 04 0 00 033001 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4268 033001 324 00 0 00 033002 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4269 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4270 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4271 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4272 + 4273 ;********** + 4274 + 4275 ;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND + 4276 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4277 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4278 ;SPECIFIED BY E IF C(AC) IS NON-ZERO. + 4279 ;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE,SOJN + 4280 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1. + 4281 + 4282 033002 201 12 0 00 000000 C55000: MOVEI 12,0 ;PRELOAD AC WITH 0 + 4283 033003 366 12 0 00 033005 SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + 4284 ;AND JUMP. + 4285 STOP^ + 4286 033004 254 04 0 00 033005 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4287 033005 324 00 0 00 033006 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4288 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4289 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4290 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4291 033006 312 12 0 00 033462 CAME 12,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4292 STOP^ + 4293 033007 254 04 0 00 033010 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4294 033010 324 00 0 00 033011 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4295 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4296 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4297 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4298 + 4299 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 78 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0117 + + 4300 ;THIS TEST VERIRIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND + 4301 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4302 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED + 4303 ;BY E IF C(AC) IS NON-ZERO. + 4304 ;IN THIS CASE, C(AC) = 0,,1 BEFORE DECREMENTING. HENCE, SOJN + 4305 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + 4306 + 4307 033011 201 12 0 00 000001 C55010: MOVEI 12,1 ;PRELOAD AC WITH 0,,1 + 4308 033012 366 12 0 00 033014 SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + 4309 ;AND NOT JUMP. + 4310 033013 334 00 0 00 000000 SKIPA ;PASS IF SOJN DID NOT JUMP + 4311 STOP^ + 4312 033014 254 04 0 00 033015 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4313 033015 324 00 0 00 033016 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4314 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4315 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4316 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4317 033016 312 12 0 00 033501 CAME 12,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4318 STOP^ + 4319 033017 254 04 0 00 033020 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4320 033020 324 00 0 00 033021 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4321 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4322 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4323 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4324 + 4325 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 79 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0118 + + 4326 ;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND + 4327 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4328 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4329 ;SPECIFIED BY E IF C(AC) IS NON-ZERO. + 4330 ;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJN + 4331 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1. + 4332 + 4333 033021 201 12 0 00 000002 C55020: MOVEI 12,2 ;PRELOAD AC WITH 0,,2 + 4334 033022 366 12 0 00 033024 SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + 4335 ;AND JUMP. + 4336 STOP^ + 4337 033023 254 04 0 00 033024 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4338 033024 324 00 0 00 033025 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4339 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4340 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4341 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4342 033025 312 12 0 00 033502 CAME 12,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4343 STOP^ + 4344 033026 254 04 0 00 033027 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4345 033027 324 00 0 00 033030 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4346 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4347 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4348 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4349 + 4350 ;********** + 4351 + 4352 ;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND + 4353 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4354 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4355 ;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. + 4356 ;IN THIS CASE, C(AC) = 0 BEFORE DECREMENTING. HENCE, SOJG + 4357 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1. + 4358 + 4359 033030 201 11 0 00 000000 C55100: MOVEI 11,0 ;PRELOAD AC WITH 0 + 4360 033031 367 11 0 00 033033 SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC) + 4361 ;AND NOT JUMP. + 4362 033032 334 00 0 00 000000 SKIPA ;PASS IF SOJG DID NOT JUMP + 4363 STOP^ + 4364 033033 254 04 0 00 033034 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4365 033034 324 00 0 00 033035 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4366 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4367 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4368 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4369 033035 312 11 0 00 033462 CAME 11,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4370 STOP^ + 4371 033036 254 04 0 00 033037 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4372 033037 324 00 0 00 033040 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4373 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4374 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4375 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4376 + 4377 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 80 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOJX INSTRUCTIONS SEQ 0119 + + 4378 ;THIS TEST VERIRIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND + 4379 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4380 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4381 ;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. + 4382 ;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJG + 4383 ;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + 4384 + 4385 033040 201 11 0 00 000001 C55110: MOVEI 11,1 ;PRELOAD AC WITH 0,,1 + 4386 033041 367 11 0 00 033043 SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC) + 4387 ;AND NOT JUMP. + 4388 033042 334 00 0 00 000000 SKIPA ;PASS IF SOJG DID NOT JUMP + 4389 STOP^ + 4390 033043 254 04 0 00 033044 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4391 033044 324 00 0 00 033045 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4392 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4393 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4394 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4395 033045 312 11 0 00 033501 CAME 11,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4396 STOP^ + 4397 033046 254 04 0 00 033047 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4398 033047 324 00 0 00 033050 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4399 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4400 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4401 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4402 + 4403 ;********** + 4404 + 4405 ;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND + 4406 ;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS + 4407 ;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION + 4408 ;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. + 4409 ;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJG + 4410 ;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1. + 4411 + 4412 033050 201 11 0 00 000002 C55120: MOVEI 11,2 ;PRELOAD AC WITH 0,,2 + 4413 033051 367 11 0 00 033053 SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT O,,1 FROM C(AC) + 4414 ;AND JUMP. + 4415 STOP^ + 4416 033052 254 04 0 00 033053 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4417 033053 324 00 0 00 033054 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4418 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4419 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4420 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4421 033054 312 11 0 00 033502 CAME 11,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + 4422 STOP^ + 4423 033055 254 04 0 00 033056 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4424 033056 324 00 0 00 033057 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4425 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4426 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4427 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4428 + 4429 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 81 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0120 + + 4430 SUBTTL TEST OF MSCL SOSX INSTRUCTIONS + 4431 + 4432 ;********** + 4433 + 4434 ;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES + 4435 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4436 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. + 4437 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4438 ;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0 + 4439 ;BEFORE INCREMENTING. HENCE, SOSL SHOULD SKIP; AND THE + 4440 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1 + 4441 ;RESPECTIVELY. + 4442 + 4443 033057 200 00 0 00 033474 C55200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4444 033060 201 01 0 00 000000 MOVEI 1,0 ;PRELOAD E WITH 0 + 4445 033061 371 00 0 00 000001 SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E) + 4446 ;AND SKIP + 4447 STOP^ + 4448 033062 254 04 0 00 033063 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4449 033063 324 00 0 00 033064 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4450 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4451 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4452 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4453 033064 312 01 0 00 033462 CAME 1,[-1] ;PASS IF E DECREMENTED CORRECTLY + 4454 STOP^ + 4455 033065 254 04 0 00 033066 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4456 033066 324 00 0 00 033067 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4457 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4458 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4459 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4460 033067 312 00 0 00 033474 CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + 4461 STOP^ + 4462 033070 254 04 0 00 033071 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4463 033071 324 00 0 00 033072 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4464 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4465 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4466 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4467 + 4468 ;********** + 4469 + 4470 ;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES + 4471 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4472 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. + 4473 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4474 ;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1 + 4475 ;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE + 4476 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 + 4477 ;RESPECTIVELY. + 4478 + 4479 033072 200 00 0 00 033474 C55210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4480 033073 201 01 0 00 000001 MOVEI 1,1 ;PRELOAD E WITH 0,,1 + 4481 033074 371 00 0 00 000001 SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + 4482 ;AND NOT SKIP. + 4483 033075 334 00 0 00 000000 SKIPA ;PASS IF SOSL DID NOT SKIP + 4484 STOP^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 81-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0121 + + 4485 033076 254 04 0 00 033077 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4486 033077 324 00 0 00 033100 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4487 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4488 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4489 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4490 033100 312 01 0 00 033501 CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY + 4491 STOP^ + 4492 033101 254 04 0 00 033102 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4493 033102 324 00 0 00 033103 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4494 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4495 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4496 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4497 033103 312 00 0 00 033474 CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + 4498 STOP^ + 4499 033104 254 04 0 00 033105 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4500 033105 324 00 0 00 033106 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4501 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4502 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4503 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4504 + 4505 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 82 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0122 + + 4506 ;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES + 4507 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4508 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. + 4509 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4510 ;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1 + 4511 ;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE + 4512 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 + 4513 ;RESPECTIVELY. + 4514 + 4515 033106 200 00 0 00 033474 C55211: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4516 033107 201 01 0 00 000001 MOVEI 1,1 ;PRELOAD E WITH 0,,1 + 4517 033110 202 01 0 00 033125 MOVEM 1,E55211 + 4518 033111 371 00 0 00 033125 SOSL 0,E55211 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + 4519 ;AND NOT SKIP. + 4520 033112 334 00 0 00 000000 SKIPA ;PASS IF SOSL DID NOT SKIP + 4521 STOP^ + 4522 033113 254 04 0 00 033114 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4523 033114 324 00 0 00 033115 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4524 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4525 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4526 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4527 033115 200 01 0 00 033125 MOVE 1,E55211 + 4528 033116 312 01 0 00 033501 CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY + 4529 STOP^ + 4530 033117 254 04 0 00 033120 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4531 033120 324 00 0 00 033121 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4532 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4533 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4534 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4535 033121 312 00 0 00 033474 CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + 4536 STOP^ + 4537 033122 254 04 0 00 033123 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4538 033123 324 00 0 00 033124 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4539 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4540 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4541 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4542 + 4543 033124 334 00 0 00 000000 SKIPA ;GO TO NEXT TEST + 4544 033125 000000 000000 E55211: 0 ;TEST WORD MEMORY + 4545 + 4546 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 83 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0123 + + 4547 ;THIS TEST VERIFIES THAT SOS DECREMENTS C(E) BY 0,,1 AND PLACES + 4548 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4549 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. + 4550 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4551 ;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E) 0,,2 + 4552 ;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE + 4553 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1 + 4554 ;RESPECTIVELY. + 4555 + 4556 033126 200 00 0 00 033474 C55220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4557 033127 201 01 0 00 000002 MOVEI 1,2 ;PRELOAD E WITH 0,,2 + 4558 033130 371 00 0 00 000001 SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + 4559 ;AND NOT SKIP + 4560 + 4561 033131 334 00 0 00 000000 SKIPA ;PASS IF SOSL DID NOT SKIP + 4562 STOP^ + 4563 033132 254 04 0 00 033133 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4564 033133 324 00 0 00 033134 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4565 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4566 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4567 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4568 033134 312 01 0 00 033502 CAME 1,[1] ;PASS IF E DECREMENTED CORRECTLY + 4569 STOP^ + 4570 033135 254 04 0 00 033136 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4571 033136 324 00 0 00 033137 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4572 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4573 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4574 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4575 033137 312 00 0 00 033474 CAME 0,[707070,,707070] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4576 STOP^ + 4577 033140 254 04 0 00 033141 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4578 033141 324 00 0 00 033142 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4579 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4580 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4581 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4582 + 4583 ;********** + 4584 + 4585 ;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES + 4586 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4587 ;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 + 4588 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4589 ;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0 + 4590 ;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE + 4591 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 4592 ;RESPECTIVELY. + 4593 + 4594 033142 200 10 0 00 033474 C55300: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4595 033143 201 11 0 00 000000 MOVEI 11,0 ;PRELOAD E WITH 0 + 4596 033144 372 10 0 00 000011 SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E), + 4597 ;UPDATE AC AND NOT SKIP + 4598 + 4599 033145 334 00 0 00 000000 SKIPA ;PASS IF SOSE DID NOT SKIP + 4600 STOP^ + 4601 033146 254 04 0 00 033147 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 83-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0124 + + 4602 033147 324 00 0 00 033150 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4603 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4604 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4605 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4606 033150 312 11 0 00 033462 CAME 11,[-1] ;PASS IF E DECREMENTED CORRECTLY + 4607 STOP^ + 4608 033151 254 04 0 00 033152 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4609 033152 324 00 0 00 033153 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4610 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4611 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4612 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4613 033153 312 10 0 00 033462 CAME 10,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4614 STOP^ + 4615 033154 254 04 0 00 033155 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4616 033155 324 00 0 00 033156 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4617 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4618 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4619 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4620 + 4621 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 84 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0125 + + 4622 ;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES + 4623 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4624 ;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 + 4625 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4626 ;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,1 + 4627 ;BEFORE INCREMENTING. HENCE, SOSE SHOULD SKIP ; AND THE + 4628 ;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 + 4629 ;RESPECTIVELY. + 4630 + 4631 033156 200 10 0 00 033474 C55310: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4632 033157 201 11 0 00 000001 MOVEI 11,1 ;PRELOAD E WITH 0,,1 + 4633 033160 372 10 0 00 000011 SOSE 10,11 ;*SOS SHOULD SUBTRACT 0,,1 FROM C(E) + 4634 ;UPDATE AC AND SKIP + 4635 STOP^ + 4636 033161 254 04 0 00 033162 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4637 033162 324 00 0 00 033163 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4638 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4639 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4640 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4641 033163 312 11 0 00 033501 CAME 11,[0] ;PASS IF E DECREMENTED CORRECTLY + 4642 STOP^ + 4643 033164 254 04 0 00 033165 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4644 033165 324 00 0 00 033166 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4645 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4646 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4647 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4648 033166 312 10 0 00 033501 CAME 10,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4649 STOP^ + 4650 033167 254 04 0 00 033170 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4651 033170 324 00 0 00 033171 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4652 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4653 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4654 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4655 + 4656 ;********** + 4657 + 4658 ;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,11 AND PLACES + 4659 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4660 ;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0. + 4661 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4662 ;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,2 + 4663 ;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE + 4664 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 4665 ;RESPECTIVELY. + 4666 + 4667 033171 200 10 0 00 033474 C55320: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4668 033172 201 11 0 00 000002 MOVEI 11,2 ;PRELOAD E WITH 0,,2 + 4669 033173 372 10 0 00 000011 SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E), + 4670 ;UPDATE AC AND NOT SKIP + 4671 + 4672 033174 334 00 0 00 000000 SKIPA ;PASS IF SOSE DID NOT SKIP + 4673 STOP^ + 4674 033175 254 04 0 00 033176 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4675 033176 324 00 0 00 033177 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4676 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 84-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0126 + + 4677 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4678 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4679 033177 312 11 0 00 033502 CAME 11,[1] ;PASS IF E DECREMENTED CORRECTLY + 4680 STOP^ + 4681 033200 254 04 0 00 033201 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4682 033201 324 00 0 00 033202 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4683 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4684 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4685 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4686 033202 312 10 0 00 033502 CAME 10,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4687 STOP^ + 4688 033203 254 04 0 00 033204 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4689 033204 324 00 0 00 033205 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4690 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4691 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4692 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4693 + 4694 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 85 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0127 + + 4695 ;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES + 4696 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4697 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. + 4698 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4699 ;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0 + 4700 ;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE + 4701 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 4702 ;RESPECTIVELY. + 4703 + 4704 033205 200 07 0 00 033474 C55400: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4705 033206 201 10 0 00 000000 MOVEI 10,0 ;PRELOAD E WITH 0 + 4706 033207 373 07 0 00 000010 SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + 4707 ;UPDATE AC AND SKIP + 4708 STOP^ + 4709 033210 254 04 0 00 033211 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4710 033211 324 00 0 00 033212 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4711 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4712 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4713 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4714 033212 312 10 0 00 033462 CAME 10,[-1] ;PASS IF E DECREMENTED CORRECTLY + 4715 STOP^ + 4716 033213 254 04 0 00 033214 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4717 033214 324 00 0 00 033215 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4718 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4719 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4720 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4721 033215 312 07 0 00 033462 CAME 7,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4722 STOP^ + 4723 033216 254 04 0 00 033217 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4724 033217 324 00 0 00 033220 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4725 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4726 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4727 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4728 + 4729 ;********** + 4730 + 4731 ;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES + 4732 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4733 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. + 4734 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4735 ;IN THIS CASE, AC=7, C(AC)=070707,,070707 AND C(E)=0,,1 + 4736 ;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE + 4737 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 4738 ;RESPECTIVELY. + 4739 + 4740 033220 200 07 0 00 033474 C55410: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4741 033221 201 10 0 00 000001 MOVEI 10,1 ;PRELOAD E WITH 0,,1 + 4742 033222 373 07 0 00 000010 SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + 4743 ;UPDATE AC AND SKIP + 4744 STOP^ + 4745 033223 254 04 0 00 033224 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4746 033224 324 00 0 00 033225 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4747 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4748 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4749 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 85-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0128 + + 4750 033225 312 10 0 00 033501 CAME 10,[0] ;PASS IF E DECREMENTED CORRECTLY + 4751 STOP^ + 4752 033226 254 04 0 00 033227 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4753 033227 324 00 0 00 033230 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4754 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4755 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4756 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4757 033230 312 07 0 00 033501 CAME 7,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4758 STOP^ + 4759 033231 254 04 0 00 033232 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4760 033232 324 00 0 00 033233 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4761 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4762 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4763 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4764 + 4765 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 86 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0129 + + 4766 ;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES + 4767 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4768 ;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. + 4769 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4770 ;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0,,2 + 4771 ;BEFORE INCREMENTING. HENCE, SOSLE SHOULD NOT SKIP; AND THE + 4772 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 4773 ;RESPECTIVELY. + 4774 + 4775 033233 200 07 0 00 033474 C55420: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4776 033234 201 10 0 00 000002 MOVEI 10,2 ;PRELOAD E WITH 0,,2 + 4777 033235 373 07 0 00 000010 SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + 4778 ;UPDATE AC AND NOT SKIP + 4779 033236 334 00 0 00 000000 SKIPA ;PASS IF SOSLE DID NOT SKIP + 4780 STOP^ + 4781 033237 254 04 0 00 033240 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4782 033240 324 00 0 00 033241 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4783 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4784 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4785 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4786 033241 312 10 0 00 033502 CAME 10,[1] ;PASS IF E DECREMENTED CORRECTLY + 4787 STOP^ + 4788 033242 254 04 0 00 033243 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4789 033243 324 00 0 00 033244 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4790 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4791 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4792 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4793 033244 312 07 0 00 033502 CAME 7,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4794 STOP^ + 4795 033245 254 04 0 00 033246 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4796 033246 324 00 0 00 033247 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4797 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4798 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4799 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4800 + 4801 ;********** + 4802 + 4803 ;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES + 4804 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS + 4805 ;THE NEXT INSTRUCTION. + 4806 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4807 ;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0 + 4808 ;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE + 4809 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 4810 ;RESPECTIVELY. + 4811 + 4812 033247 200 06 0 00 033474 C55500: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4813 033250 201 07 0 00 000000 MOVEI 7,0 ;PRELOAD E WITH 0 + 4814 033251 374 06 0 00 000007 SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + 4815 ;UPDATE AC AND SKIP + 4816 STOP^ + 4817 033252 254 04 0 00 033253 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4818 033253 324 00 0 00 033254 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4819 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4820 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 86-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0130 + + 4821 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4822 033254 312 07 0 00 033462 CAME 7,[-1] ;PASS IF E DECREMENTED CORRECTLY + 4823 STOP^ + 4824 033255 254 04 0 00 033256 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4825 033256 324 00 0 00 033257 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4826 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4827 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4828 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4829 033257 312 06 0 00 033462 CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4830 STOP^ + 4831 033260 254 04 0 00 033261 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4832 033261 324 00 0 00 033262 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4833 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4834 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4835 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4836 + 4837 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 87 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0131 + + 4838 ;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES + 4839 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS + 4840 ;THE NEXT INSTRUCTION. + 4841 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THEAC. + 4842 ;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,1 + 4843 ;BEFORE INCREMENTING. HENCE, SOSA SHOULD BE 0 AND 0 + 4844 ;RESPECTIVELY. + 4845 + 4846 033262 200 06 0 00 033474 C55510: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4847 033263 201 07 0 00 000001 MOVEI 7,1 ;PRELOAD E WITH 0,,1 + 4848 033264 374 06 0 00 000007 SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + 4849 ;UPDATE AC AND SKIP + 4850 STOP^ + 4851 033265 254 04 0 00 033266 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4852 033266 324 00 0 00 033267 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4853 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4854 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4855 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4856 033267 312 07 0 00 033501 CAME 7,[0] ;PASS IF E DECREMENTED CORRECTLY + 4857 STOP^ + 4858 033270 254 04 0 00 033271 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4859 033271 324 00 0 00 033272 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4860 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4861 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4862 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4863 033272 312 06 0 00 033501 CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4864 STOP^ + 4865 033273 254 04 0 00 033274 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4866 033274 324 00 0 00 033275 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4867 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4868 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4869 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4870 + 4871 ;********** + 4872 + 4873 ;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES + 4874 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS + 4875 ;THE NEXT INSTRUCTION. + 4876 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4877 ;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,2 + 4878 ;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE + 4879 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 4880 ;RESPECTIVELY. + 4881 + 4882 033275 200 06 0 00 033474 C55520: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4883 033276 201 07 0 00 000002 MOVEI 7,2 ;PRELOAD E WITH 0,,2 + 4884 033277 374 06 0 00 000007 SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + 4885 ;UPDATE AC AND SKIP + 4886 STOP^ + 4887 033300 254 04 0 00 033301 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4888 033301 324 00 0 00 033302 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4889 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4890 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4891 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4892 033302 312 07 0 00 033502 CAME 7,[1] ;PASS IF E DECREMENTED CORRECTLY +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 87-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0132 + + 4893 STOP^ + 4894 033303 254 04 0 00 033304 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4895 033304 324 00 0 00 033305 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4896 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4897 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4898 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4899 033305 312 06 0 00 033502 CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4900 STOP^ + 4901 033306 254 04 0 00 033307 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4902 033307 324 00 0 00 033310 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4903 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4904 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4905 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4906 + 4907 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 88 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0133 + + 4908 ;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES + 4909 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4910 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0. + 4911 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4912 ;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0 + 4913 ;BEFORE INCREMENTING. HENCE, SOSGE SHOULD NOT SKIP ; AND THE + 4914 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 4915 ;RESPECTIVELY. + 4916 + 4917 033310 200 05 0 00 033474 C55600: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4918 033311 201 06 0 00 000000 MOVEI 6,0 ;PRELOAD E WITH 0 + 4919 033312 375 05 0 00 000006 SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + 4920 ;UPDATE AC AND NOT SKIP + 4921 033313 334 00 0 00 000000 SKIPA ;PASS IF SOSGE DID NOT SKIP + 4922 STOP^ + 4923 033314 254 04 0 00 033315 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4924 033315 324 00 0 00 033316 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4925 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4926 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4927 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4928 033316 312 06 0 00 033462 CAME 6,[-1] ;PASS IF E DECREMENTED CORRECTLY + 4929 STOP^ + 4930 033317 254 04 0 00 033320 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4931 033320 324 00 0 00 033321 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4932 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4933 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4934 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4935 033321 312 05 0 00 033462 CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4936 STOP^ + 4937 033322 254 04 0 00 033323 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4938 033323 324 00 0 00 033324 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4939 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4940 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4941 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4942 + 4943 ;********** + 4944 + 4945 ;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES + 4946 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4947 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0. + 4948 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4949 ;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,1 + 4950 ;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE + 4951 ;FINAL RESULTS IN ACAND E SHOULD BE 0 AND 0 + 4952 ;RESPECTIVELY. + 4953 + 4954 033324 200 05 0 00 033474 C55610: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4955 033325 201 06 0 00 000001 MOVEI 6,1 ;PRELOAD E WITH 0,,1 + 4956 033326 375 05 0 00 000006 SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + 4957 ;UPDATE AC AND SKIP + 4958 STOP^ + 4959 033327 254 04 0 00 033330 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4960 033330 324 00 0 00 033331 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4961 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4962 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 88-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0134 + + 4963 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4964 033331 312 06 0 00 033501 CAME 6,[0] ;PASS IF E DECREMENTED CORRECTLY + 4965 STOP^ + 4966 033332 254 04 0 00 033333 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4967 033333 324 00 0 00 033334 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4968 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4969 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4970 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4971 033334 312 05 0 00 033501 CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 4972 STOP^ + 4973 033335 254 04 0 00 033336 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4974 033336 324 00 0 00 033337 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4975 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4976 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4977 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4978 + 4979 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 89 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0135 + + 4980 ;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES + 4981 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 4982 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 + 4983 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 4984 ;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,2 + 4985 ;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE + 4986 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 4987 ;RESPECTIVELY. + 4988 + 4989 033337 200 05 0 00 033474 C55620: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 4990 033340 201 06 0 00 000002 MOVEI 6,2 ;PRELOAD E WITH 0,,2 + 4991 033341 375 05 0 00 000006 SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + 4992 ;UPDATE AC AND SKIP + 4993 STOP^ + 4994 033342 254 04 0 00 033343 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 4995 033343 324 00 0 00 033344 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 4996 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 4997 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 4998 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 4999 033344 312 06 0 00 033502 CAME 6,[1] ;PASS IF E DECREMENTED CORRECTLY + 5000 STOP^ + 5001 033345 254 04 0 00 033346 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5002 033346 324 00 0 00 033347 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5003 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5004 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5005 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5006 033347 312 05 0 00 033502 CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 5007 STOP^ + 5008 033350 254 04 0 00 033351 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5009 033351 324 00 0 00 033352 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5010 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5011 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5012 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5013 + 5014 ;********** + 5015 + 5016 ;THIS TEST VERIFIES SOSN DECREMENTS C(E) BY 0,,1 AND PLACES + 5017 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 5018 ;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO + 5019 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 5020 ;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0 + 5021 ;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE + 5022 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 5023 ;RESPECTIVELY. + 5024 + 5025 033352 200 04 0 00 033474 C55700: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 5026 033353 201 05 0 00 000000 MOVEI 5,0 ;PRELOAD E WITH 0 + 5027 033354 376 04 0 00 000005 SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + 5028 ;UPDATE AC AND SKIP + 5029 STOP^ + 5030 033355 254 04 0 00 033356 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5031 033356 324 00 0 00 033357 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5032 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5033 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5034 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 89-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0136 + + 5035 033357 312 05 0 00 033462 CAME 5,[-1] ;PASS IF E DECREMENTED CORRECTLY + 5036 STOP^ + 5037 033360 254 04 0 00 033361 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5038 033361 324 00 0 00 033362 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5039 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5040 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5041 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5042 033362 312 04 0 00 033462 CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 5043 STOP^ + 5044 033363 254 04 0 00 033364 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5045 033364 324 00 0 00 033365 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5046 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5047 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5048 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5049 + 5050 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 90 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0137 + + 5051 ;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES + 5052 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 5053 ;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO + 5054 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC + 5055 ;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,1 + 5056 ;BEFORE INCREMENTING. HENCE, SOSN SHOULD NOT SKIP ; AND THE + 5057 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 5058 ;RESPECTIVELY. + 5059 + 5060 033365 200 04 0 00 033474 C55710: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 5061 033366 201 05 0 00 000001 MOVEI 5,1 ;PRELOAD E WITH 0,,1 + 5062 033367 376 04 0 00 000005 SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + 5063 ;UPDATE AC AND NOT SKIP + 5064 033370 334 00 0 00 000000 SKIPA ;PASS IF SOSN DID NOT SKIP + 5065 STOP^ + 5066 033371 254 04 0 00 033372 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5067 033372 324 00 0 00 033373 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5068 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5069 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5070 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5071 033373 312 05 0 00 033501 CAME 5,[0] ;PASS IF E DECREMENTED CORRECTLY + 5072 STOP^ + 5073 033374 254 04 0 00 033375 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5074 033375 324 00 0 00 033376 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5075 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5076 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5077 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5078 033376 312 04 0 00 033501 CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 5079 STOP^ + 5080 033377 254 04 0 00 033400 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5081 033400 324 00 0 00 033401 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5082 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5083 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5084 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5085 + 5086 ;********** + 5087 + 5088 ;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES + 5089 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 5090 ;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO + 5091 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 5092 ;INtTHIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,2 + 5093 ;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE + 5094 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 + 5095 ;RESPECTIVELY + 5096 + 5097 033401 200 04 0 00 033474 C55720: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 5098 033402 201 05 0 00 000002 MOVEI 5,2 ;PRELOAD E WITH 0,,2 + 5099 033403 376 04 0 00 000005 SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + 5100 ;UPDATE AC AND SKIP + 5101 STOP^ + 5102 033404 254 04 0 00 033405 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5103 033405 324 00 0 00 033406 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5104 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5105 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 90-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0138 + + 5106 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5107 033406 312 05 0 00 033502 CAME 5,[1] ;PASS IF E DECREMENTED CORRECTLY + 5108 STOP^ + 5109 033407 254 04 0 00 033410 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5110 033410 324 00 0 00 033411 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5111 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5112 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5113 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5114 033411 312 04 0 00 033502 CAME 4,[1] ;PASS IF ACWAS UPDATED IF AC NON-ZERO + 5115 STOP^ + 5116 033412 254 04 0 00 033413 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5117 033413 324 00 0 00 033414 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5118 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5119 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5120 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5121 + 5122 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 91 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0139 + + 5123 ;THIS TEST VERIFIESTHAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES + 5124 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 5125 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 + 5126 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 5127 ;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0 + 5128 ;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE + 5129 ;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 + 5130 ;RESPECTIVELY. + 5131 + 5132 033414 200 03 0 00 033474 C56000: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 5133 033415 201 04 0 00 000000 MOVEI 4,0 ;PRELOAD E WITH 0 + 5134 033416 377 03 0 00 000004 SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + 5135 ;UPDATE AC AND NOT SKIP + 5136 033417 334 00 0 00 000000 SKIPA ;PASS IF SOSG DID NOT SKIP + 5137 STOP^ + 5138 033420 254 04 0 00 033421 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5139 033421 324 00 0 00 033422 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5140 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5141 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5142 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5143 033422 312 04 0 00 033462 CAME 4,[-1] ;PASS IF E DECREMENTED CORRECTLY + 5144 STOP^ + 5145 033423 254 04 0 00 033424 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5146 033424 324 00 0 00 033425 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5147 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5148 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5149 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5150 033425 312 03 0 00 033462 CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 5151 STOP^ + 5152 033426 254 04 0 00 033427 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5153 033427 324 00 0 00 033430 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5154 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5155 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5156 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5157 + 5158 ;********** + 5159 + 5160 ;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES + 5161 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 5162 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0. + 5163 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 5164 ;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,1 + 5165 ;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE + 5166 ;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 + 5167 ;RESPECTIVELY. + 5168 + 5169 033430 200 03 0 00 033474 C56010: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 5170 033431 201 04 0 00 000001 MOVEI 4,1 ;PRELOAD E WITH 0,,1 + 5171 033432 377 03 0 00 000004 SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + 5172 ;UPDATE AC AND NOT SKIP + 5173 033433 334 00 0 00 000000 SKIPA ;PASS IF SOSG DID NOT SKIP + 5174 STOP^ + 5175 033434 254 04 0 00 033435 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5176 033435 324 00 0 00 033436 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5177 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 91-1 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0140 + + 5178 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5179 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5180 033436 312 04 0 00 033501 CAME 4,[0] ;PASS IF E DECREMENTED CORRECTLY + 5181 STOP^ + 5182 033437 254 04 0 00 033440 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5183 033440 324 00 0 00 033441 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5184 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5185 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5186 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5187 033441 312 03 0 00 033501 CAME 3,[0] ;PASS IF AC WAS UPDATED IS AC NON-ZERO + 5188 STOP^ + 5189 033442 254 04 0 00 033443 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5190 033443 324 00 0 00 033444 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5191 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5192 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5193 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5194 + 5195 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 92 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0141 + + 5196 ;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES + 5197 ;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS + 5198 ;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 + 5199 ;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. + 5200 ;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,2 + 5201 ;BEFORE INCREMENTING. HENCE, SOSG SHOULD SKIP ; AND THE + 5202 ;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 011, + 5203 ;RESPECTIVELY. + 5204 + 5205 033444 200 03 0 00 033474 C56020: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + 5206 033445 201 04 0 00 000002 MOVEI 4,2 ;PRELOAD E WITH 0,,2 + 5207 033446 377 03 0 00 000004 SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + 5208 ;UPDATE AC AND SKIP + 5209 STOP^ + 5210 033447 254 04 0 00 033450 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5211 033450 324 00 0 00 033451 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5212 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5213 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5214 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5215 033451 312 04 0 00 033502 CAME 4,[1] ;PASS IF E DECREMENTED CORRECTLY + 5216 STOP^ + 5217 033452 254 04 0 00 033453 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5218 033453 324 00 0 00 033454 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5219 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5220 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5221 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5222 033454 312 03 0 00 033502 CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + 5223 STOP^ + 5224 033455 254 04 0 00 033456 HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + 5225 033456 324 00 0 00 033457 JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + 5226 ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + 5227 ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + 5228 ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^ + 5229 + 5230 ;********** +DAKAE PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) 0,3 MACRO %53(1020) 13:36 28-Dec-78 Page 93 +DAKAEM MAC 28-Dec-78 13:35 TEST OF MSCL SOSX INSTRUCTIONS SEQ 0142 + + 5231 + 5232 033457 254 00 0 00 030057 JRST BEGEND + 5233 SUBTTL *STOR* RESERVED STORAGE, JULY 19,1977 + 5234 + 5235 ;PROGRAM LITERALS + 5236 + 5237 XLIST + 5238 IFNDEF $LPAPER, + 5239 033460 LIT + 5240 033460 000001 000001 + 5241 033461 254 00 0 00 030723 + 5242 033462 777777 777777 + 5243 033463 310 00 0 00 000000 + 5244 033464 201 01 0 00 001234 + 5245 033465 031107 031106 + 5246 033466 031116 031115 + 5247 033467 254 00 0 00 031161 + 5248 033470 000001 000002 + 5249 033471 135531 246642 + 5250 033472 135246 246135 + 5251 033473 252525 252525 + 5252 033474 707070 707070 + 5253 033475 123456 123456 + 5254 033476 777777 000000 + 5255 033477 777777 777775 + 5256 033500 777777 777776 + 5257 033501 000000 000000 + 5258 033502 000000 000001 + 5259 LIST + 5260 033503 000000 000000 ENDSLD: 0 + 5261 + 5262 IFDEF DEBUG,< + 5263 033504 PATCH: BLOCK DEBUG ;PATCHING AREA + 5264 > + 5265 + 5266 ;PROGRAM VARIABLES + 5267 033604 VAR + 5268 + 5269 IFDEF PGMEND,< + 5270 033604 000000 000000 END: 0 + 5271 030000 END BEGIN > + +NO ERRORS DETECTED + +PROGRAM BREAK IS 000000 +ABSOLUTE BREAK IS 033605 +CPU TIME USED 00:18.474 + +20P CORE USED diff --git a/apps/pdp10/diags/klad/dakae/DAKAE.MAC.txt b/apps/pdp10/diags/klad/dakae/DAKAE.MAC.txt new file mode 100644 index 000000000..ad04e0213 --- /dev/null +++ b/apps/pdp10/diags/klad/dakae/DAKAE.MAC.txt @@ -0,0 +1,2772 @@ +;ACCUMULATOR ASSIGNMENTS + +;CONTROL WORDS + +AROV=400000 ;ARITHMETIC OVERFLOW +CRY0=200000 ;CARRY 0 +CRY1=100000 ;CARRY 1 +FOV=40000 ;FLOATING OVERFLOW +BIS=20000 ;BYTE INTERRUPT +USERF=10000 ;USER MODE FLAG +EXIOT=4000 ;USER PRIV I/O FLAG +FXU=100 ;FLOATING UNDERFLOW +DCK=40 ;DIVIDE CHECK + +;MACROS + +; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1) +; TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION + +DEFINE STOP (A)< + HALT .+1 ;TEST FAILED IF PROGRAM HALTS HERE + JUMPA .+1 ;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1) + ;TO JUMPA X(X IS THE ADDRESS OF THE FIRST + ;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR + ;AND CHANGE HALT INSTRUCTION TO JUMPA .+1> + +; SFLAG - USED TO CLEAR ALL FLAGS THEN TO SET REQUESTED FLAG + +DEFINE SFLAG (A)< + MOVSI 1,A + JFCL 17,.+1 ;RESET ALL FLAGS + JRST 2,.+1(1) ;SET A FLAG> + +SUBTTL DIAGNOSTIC SECTION + +START: ;SETZM USER# ;CLEAR USER CONTROL WORD + ;JSP 0,.+1 ;GET FLAGS + ;TLNE USERF ;IN USER MODE? + ;SETOM USER ;YES, SET USER CONTROL WORD + ;SKIPN MONFLG ;SPECIAL USER MODE? + ;SETZM USER ;YES, CLEAR USER CONTROL WORD + ;SKIPN USER + ;JRST STARTA + ;SKIPL MONCTL + ;TTCALL 3,PGMNAM ;MENTION OUR NAME + JRST STARTA + +PGMNAM: ASCIZ/ +PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) [DAKAE] +/ + + +;THE TEST IS DESIGNED FOR INITIAL DEBUGGING OF +;PROCESSOR HARDWARE AND TO DETECT (SOLID) FAILURES +;IN THE FIELD. + +STARTA: JRST .+1 +SUBTTL TEST OF JSR INSTRUCTION + +;********** + +;THIS TEST VERIFIES THAT JSR STORES THE FLAGS AND PC IN LOCATION E. +;IN THIS CASE, E IS CLEARED, CRY0 IS SET AND JSR IS EXECUTED. +;NEXT, E IS CHECKED FOR ITS CONTENTS NON-ZERO. IF C(E) IS NON-ZERO, +;THIS TEST PASSES. + +C23000: SFLAG CRY0 ;SET CRY0 FLAG + SETZM .+2 ;PRELOAD E WITH 0 + JSR .+1 ;*JSR SHOULD PLACE FLAGS AND PC INTO AC + 0 ;E: PRESET TO 0, SHOULD RECEIVE FLAGS AND PC FROM JSR + SKIPN .-1 ;PASS IF C(E) IS NON-ZERO. + STOP + +;********** + +;THIS TEST VERIFIES THAT JSR IGNORES THE AC FIELD; +;HENCE, IT DOES NOT MODIFY THE SPECIFIED AC. +;IN THIS CASE, CRY0 IS SET. THE AC IS PRELOADED WITH -1,,-1 AND JSR IS EXECUTED. +;THE AC IS THEN CHECKED. IF C(AC)=-1,,-1, THIS TEST PASSES. + +C23100: SFLAG CRY0 ;SET CRY0 + SETO 1, ;PRELOAD AC WITH -1,,-1 + JSR 1,.+1 ;*JSR SHOULD NOT MODIFY THE AC + 0 ;STORE PC + FLAGS HERE + CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + STOP + +;********** +;THIS TEST VERIFIES THAT JSR STORES THE FLAGS IN E-LEFT HALF. +;IN THIS TEST, CRY0 IS SET, E IS CLEARED AND JSR IS EXECUTED. +;NEXT, C(E-LEFT) ARE PLACED INTO AC0 AND AC0 IS CHECKED FOR ITS CONTENTS NON-ZERO. +;IF C(AC0) ARE NON-ZERO, THIS TEST PASSES. + +C23200: SFLAG CRY0 ;SET CRY0 + SETZM .+2 ;CLEAR E + JSR .+1 ;*JSR SHOULD STORE FLAGS IN E + 0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST) + HLLZ .-1 ;PUT FLAGS INTO AC0 + SKIPN ;PASS IF C(AC0) NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT JSR TRANSFERS CONTROL TO E+1. +;IN THIS CASE, CRY0 IS SET AND E AND AC0 CLEARED; THEN, JSR IS EXECUTED. +;IF JSR RESUMES CONTROL AT E INSTEAD OF E+1, AC0 WILL BE MODIFIED; +;HENCE, THE TEST WILL FAIL WHEN AC0 IS CHECKED FOR 0 BECAUSE +;C(E) IS DECODED AS A MOVE INSTRUCTION. + +C23300: SFLAG CRY0 ;SET CRY0 + SETZB .+2 ;CLEAR AC0 AND E + JSR .+1 ;*JSR SHOULD RESUME CONTROL AT E+1 + 0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST) + SKIPE 0 ;PASS IF C(AC0)=0 + STOP + +;********** +;THIS TEST VERIFIES THAT JSR JUMPS TO E+1 +;IN THIS CASE, AC0 IS CLEARED AND CRY0 IS SET; THEN, JSR .+2 IS EXECUTED. +;IF JSR DID NOT JUMP, ONES ARE LOADED WITH AC0; AND THE TEST FAILS. +;OTHERWISE, AC0 REMAINS CLEAR AND THE TEST PASSES + +C23400: SFLAG CRY0 ;SET CRY0 + SETZ ;CLEAR AC0 + JSR .+2 ;*JSR SHOULD JUMP + SETO ;LOAD AC0 WITH ONES IF JSR FAILED TO JUMP + 0 ;STORE FLAGS HERE + SKIPE ;PASS IF JSR JUMPED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC +;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION. +;THIS TEST WILL FAIL IF JSR STORES E INSTEAD OF PC IN E - RIGHT HALF. +;IN CASE OF FAILURE, AR PC EN AT ET2 WAS FAULTY. + +C23500: SFLAG 0 ;CLEAR ALL FLAGS + JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT + HALT . ;JSR SHOULD SKIP OVER THIS HALT + 0 ;STORE FLAGS AND PC HERE + HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0 + CAIN .-2 ;FAIL IF C(AC0)=E + STOP + +;********** +;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC +;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION. +;THIS TEST WILL PASS IF JSR STORES PC IN E - RIGHT HALF. + +C23600: JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT + HALT . ;JSR SHOULD SKIP OVER THIS HALT + 0 ;STORE FLAGS AND PC HERE + HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0 + CAIE C23600+1 ;PASS IF C(AC0)=C23600+1 [PC] + STOP + +;********** +SUBTTL TEST OF JSA INSTRUCTION + +;********** + +;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1. +;IN THIS TEST, AC1 IS CLEARED AND A CAM 0,0 IS LOADED +;INTO THE AC OF THE JSA INSTRUCTION. +;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH ONES. AC1 IS CHECKED FOR ZEROS. +;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP. + +C23700: SETZ 1, ;CLEAR AC1 + MOVE [CAM] ;LOAD CAM INTO AC0 + JSA .+2 ;*JSA SHOULD JUMP TO E+1 + SETO 1 ;JSA SHOULD JUMP OVER THIS INSTRUCTION + 0 ;PASS IF JSA JUMPED + SKIPE 1 + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1. +;IN THIS TEST, AC1 IS CLEARED AND A MOVEI 1,1234 IS LOADED +;INTO THE AC OF THE JSA INSTRUCTION. +;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH 0,,1234. AC1 IS CHECKED FOR ZEROS. +;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP. + +C24000: SETZ 1, ;CLEAR AC1 + MOVE [MOVEI 1,1234] ;LOAD MOVEI 1,1234 INTO AC + JSA .+1 ;*JSA SHOULD JUMP TO E+1 + 0 ;JSA SHOULD JUMP OVER THIS LOCATION + CAIN 1,1234 ;FAIL IF JSA DID NOT JUMP OVER PREVIOUS INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT JSA LOADS PC OF LOC OF JSA+1 INTO AC RIGHT. +;THIS TEST WILL FAIL IF JSA LOADS E INTO AC RIGHT INSTEAD OF PC. + +C24100: JSA .+2 ;*JSA SHOULD LOAD PC INTO AC RIGHT + HALT . ;JSA SHOULD JUMP OVER THIS LOCATION + 0 ;JSA SHOULD JUMP OVER THIS LOCATION + HRRZM 1 ;PUT C(AC-RIGHT) INTO AC1 + CAIN 1,.-2 ;FAIL IF E WAS LOADED INTO AC-RIGHT INSTEAD OF PC + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA PLACES C(AC) INTO E +;THIS TEST WILL FAIL IF EITHER 0,,E OR 0,,PC IS LOADED +;INTO E INSTEAD OF C(AC) + +C24200: SETZB .+2 ;CLEAR AC,E + JSA .+1 ;*JSA SHOULD LOAD C(AC) [ZEROS] INTO E + 0 ;JSA SHOULD PLACE ZEROS HERE + MOVE 1,.-1 ;SAVE C(AC) + CAIN 1,.-2 ;FAIL IF JSA LOADED 0,,E OR 0,,PC INTO E + STOP + +;********** +;THIS TEST VERIFIES THAT JSA PLACES PC INTO AC-RIGHT +;THIS TEST WILL FAIL IF PC IS NOT LOADED INTO AC-RIGHT + +C24300: MOVEI -1 ;PRELOAD AC WITH 0,,-1 + JSA .+1 ;*JSA SHOULD PLACE E,,PC INTO THE AC + 0 ;JSA SHOULD PLACE C(AC) HERE + TRNN -1 ;FAIL IF AR LT AR RT EN FAILED + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA PLACES THE PC OF THE LOCATION OF JSA+1 IN AC-RIGHT +;THIS TEST FAILS IF A PC WAS NOT LOADED INTO AC RIGHT + +C24400: SETZ ;CLEAR AC + JSA .+1 ;*JSA SHOULD LOAD PC INTO AC - RIGHT + 0 ;JSA SHOULD PLACE C(AC) HERE + TRNN -1 ;PASS IF AC - RIGHT IS NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT JSA PLACES IN AC-LEFT +;THIS TEST FAILS IF JSA LOADS PC INSTEAD OF E INTO AC-LEFT + +C24500: JSA .+2 ;*JSA SHOULD LOAD E INTO AC-LEFT + HALT . ;JSA SHOULD JUMP OVER THIS INSTRUCTION + 0 ;E: + HLRZM 1 ;SAVE C(AC - LEFT) + CAIN 1,.-3 ;FAIL IF JSA LOADED PC INSTEAD OF E INTO AC-LEFT + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC +;FIRST, THE AC IS PRELOADED WITH -1,,-1; THEN, JSA IS EXECUTED. +;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES + +C24600: SETO ;PRELOAD AC WITH -1,,-1 + JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC + HALT . ;JSA SHOULD JUMP OVER HERE, PC: + 0 ;JSA SHOULD STORE C(AC) HERE, E: + CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC + STOP + +;********** +;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC +;FIRST, THE AC IS PRELOADED WITH 0 JSA IS EXECUTED. +;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES + +C24700: SETZ ;PRELOAD AC WITH 0 + JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC + HALT . ;JSA SHOULD JUMP OVER HERE, PC: + 0 ;JSA SHOULD STORE C(AC) HERE, E: + CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. +;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES; +;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0, +;THIS TEST PASSES. + +C25000: SETZ ;CLEAR AC + SETOM .+2 ;PRELOAD E WITH -1,,-1 + JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 0 ;E: SHOULD GET C(AC) FROM JSA + SKIPE .-1 ;PASS IF C(E)=0 + STOP + +;********** +;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. +;AC IS FIRST PRELOADED WITH -1,,-1 AND E IS CLEARED; +;THEN, JSA IS EXECUTED. E IS CHECKED FOR -1,,-1. IF C(E)=-1,,-1, +;THIS TEST PASSES. + +C25100: SETOB 1 ;PRELOAD AC -1,,-1 + SETZM .+2 ;PRELOAD E WITH 0 + JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 0 ;E: SHOULD GET C(AC) FROM JSA + CAME 1,.-1 ;PASS IF C(E)=-1,,-1 + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. +;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES; +;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0, +;THIS TEST PASSES. + +C25200: MOVEI -1 ;PRELOAD AC WITH 0,,-1 + JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 0 ;E: SHOULD GET C(AC) FROM JSA + MOVE 1,.-1 ;PASS IF C(E)=0,,-1 + CAIE 1,-1 + STOP + +;********** +;THIS TEST VERIFIES THAT JSA DOES NOT MODIFY AC+1 +;IN THIS TEST, AC+1 IS PRELOADED WITH -1,,-1; THEN JSA IS EXECUTED +;AC+1 IS THEN CHECKED FOR ITS ORIGINAL CONTENTS, -1,,-1. +;IF C(AC+1)=-1,,-1, THIS TEST PASSES + +C25300: SETOM 1 ;PRELOAD AC+1 WITH -1,,-1 + JSA .+1 ;*JSA SHOULD NOT MODIFY AC+1 + CAM ;JSA SHOULD JUMP OVER THIS, E:PC: + CAME 1,[-1] ;PASS IF AC+1 WAS NOT MODIFIED BY JSA + STOP + +;********** +SUBTTL TEST OF JRA INSTRUCTION + +;********** + +;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E +;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + +C25400: MOVE [JRST .+4] ;PRELOAD AC0 WITH JRST .+4 + MOVSI 1,.+2 ;PRELOAD AC WITH E,,0 + JRA 1,.+1 ;*JRA SHOULD JUMP TO NEXT INSTRUCTION + SKIPA ;PASS IF JRA JUMPS TO E + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E +;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + +C25500: MOVSI .+3 ;PRELOAD AC WITH E+1 + JRA .+1 ;*JRA SHOULD JUMP TO NEXT SEQUENTIAL INSTRUCTION + SKIPA ;PASS IF JRA JUMPS TO E + STOP + +;********** +;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E +;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + +C25600: SETZB 1 ;PRELOAD AC0, AC1 WITH ZEROS + JRA .+2 ;*JRA SHOULD JUMP OVER NEXT SEQUENTIAL INSTRUCTION + SETO 1, ;LOAD AC1 WITH ONES IF JRA DOES NOT JUMP + SKIPE 1 ;PASS IF JRA JUMPED + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC AND JUMPS TO E +;THIS TEST FAILS IF JRA JUMPS TO E+1 OR DOES NOT LOAD THE AC CORRECTLY. + +C25700: SETZ ;CLEAR AC + JRA .+1 ;*JRA SHOULD PLACE 0 INTO THE AC AND JUMP .+1 + SKIPE ;PASS IF AC WAS LOADED CORRECTLY + ;AND JRA JUMPED CORRECTLY. + STOP + +;********** +;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC +;FIRST, THE AC IS PRELOADED WITH 1,,2 AND AC1 AND AC2 ARE +;INITIALIZED WITH THEIR RESPECTIVE ADDRESSES; JRA IS EXECUTED, AND +;THE AC IS CHECKED FOR 0,,1, THE ORIGINAL C(C(AC-LEFT)). IF C(AC)=0,,1, +;THIS TEST PASSES + +C26200: MOVE [XWD 1,2] ;PRELOAD AC WITH 1,,2 + MOVEI 1,1 ;INITIALIZE AC1 WITH 0,,1 + MOVEI 2,2 ;INITIALIZE AC2 WITH 0,,2 + JRA .+1 ;*JRA SHOULD PLACE 0,,1 INTO THE AC + CAIE 1 ;PASS IF C(AC)=0,,1 + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA CAN RESTORE AC0 FROM AC0 WHEN AC0 IS THE +;SPECIFIED AC AND C(AC0-LEFT)=0. +;FIRST, AC0 IS PRELOADED AND JRA IS EXECUTED. THEN, AC0 IS CHECKED FOR +;ITS INITIAL CONTENTS. IF THE RESULT IN AC0, IS CORRECT, THIS TEST PASSES. + +C26300: HRRZI [135531,,246642] ;PRELOAD AC0 WITH 0,, LITERAL ADDRESS + JRA .+1 ;*JRA SHOULD PLACE C(AC0) INTO AC0 + CAIE [135531,,246642] ;PASS IF JRA PLACED C(AC0) INTO AC0 + STOP + +;********** +;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE +;SPECIFIED AC. +;FIRST, AC0 IS PRELOADED WITH [LITERAL ADDRESS ,,0] AND JRA IS EXECUTED. THEN, +;AC0 IS CHECKED FOR THE SPECIFIED LITERAL, 135246,,246135. IF +;C(AC0)=135246,,246135, THE TEST PASSES. + +C26400: HRLZI [135246,,246135] ;PRELOAD AC0 WITH [LITERAL ADDRESS ,,0] + JRA .+1 ;*JRA SHOULD PLACE 135246,,246135 INTO AC0 + CAME [135246,,246135];PASS IF C(AC0)=135246,,246135 + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE +;SPECIFIED AC. +;FIRST, AC0 IS PRELOADED WITH [-1,, ADDRESS OF JCA INSTRUCTION] AND JRA IS EXECUTED. +;THEN, AC0 IS CHECKED FOR THE JRA INSTRUCTION. IF +;C(AC0)= THE JRA INSTRUCTION, THE TEST PASSES. + +C26500: HRLOI .+1 ;PRELOAD AC WITH -1,, ADDRESS OF JRA INSTRUCTION + JRA .+1 ;*JRA SHOULD PLACE ITSELF INTO AC0 + CAME .-1 ;PASS IF AC CONTAINS JRA INSTRUCTION + STOP + +;********** +SUBTTL TESTS OF BIS FLAG + +;********** + +;THIS TEST VERIFIES THAT JRST 2, CAN CLEAR BIS +;FIRST, BIS IS SET VIA JRST 2, ;THEN, BIS IS CLEARED VIA JRST 2,. +;THE FLAGS ARE SAVED AND BIS IS CHECKED. THIS TEST PASSES IF BIS IS RESET; +;OTHERWISE JRST 2, FAILED TO RESET BIS. + +C26600: SFLAG BIS ;SET BIS FLAG + SFLAG ;*RESET BIS FLAG + JSP .+1 ;SAVE FLAGS + TLNE BIS+37 ;PASS IF BIS FLAG IS RESET + STOP + +;********** + +;THIS TEST VERIFIES THAT JRST 2, CAN SET BIS. +;FIRST, BIS IS SET VIA JRST 2, AND THE FLAGS ARE SAVED. +;BIS IS THEN CHECKED. IF BIS IS SET, THIS TEST PASSES. + +C26700: SFLAG BIS ;*SET BIS FLAG VIA JRST + JSP .+1 ;SAVE FLAGS + TLNN BIS ;PASS IF BIS FLAG IS SET + STOP + +;********** +;THIS TEST VERIFIES THAT JSR ALWAYS RESETS BIS. +;FIRST BIS IS SET; THEN JSR IS EXECUTED. THE FLAGS ARE +;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSR, THIS TEST PASSES. + +C27000: SFLAG BIS ;SET BIS + JSR .+1 ;*JSR SHOULD RESET BIS + 0 ;JSR SAVES FLAGS HERE + JSP .+1 ;SAVE FLAGS + TLNE BIS ;PASS IF BIS FLAG IS RESET + STOP + +;********** + +;THIS TEST VERIFIES THAT JSP ALWAYS RESETS BIS. +;FIRST BIS IS SET; THEN JSP IS EXECUTED. THE FLAGS ARE +;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSP, THIS TEST PASSES. + +C27001: SFLAG BIS ;SET BIS + JSP .+1 ;*JSP SHOULD RESET BIS + JSP .+1 ;SAVE FLAGS + TLNE BIS ;PASS IF BIS FLAG IS RESET + STOP + +;********** +;THIS TEST VERIFIES THAT THE BITS IN POSITIONS 8, 9 AND 10 ARE CLEARABLE. +;FIRST, THE ARITHMETIC FLAGS ARE CLEARED; +;THEN, BITS 8, 9 AND 10 OF THE PC-WORD IS EXAMINED. +;IF ANY OF THESE BITS ARE SET, THIS TEST FAILS BECAUSE THEY SHOULD BE CLEAR. + +C27100: SFLAG ;CLEAR ARITHMETIC FLAGS + JSP .+1 ;SAVE FLAGS + TLNE 1600 ;PASS IF THESE BITS ARE CLEAR + STOP + +;********** +SUBTTL TEST OF MSCL FWT INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT MOVEM PLACES C(AC) INTO E AND DOES +;NOT MODIFY C(AC). +;IN THIS CASE, C(AC)=252525,,252525 ANS C(E)=707070,,707070. +;HENCE, THE RESULT IN E SHOULD BE 252525,,252525. +;THE AC IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS +;FOUND IN THE AC, IT WAS CLOBBERED BY MOVEM, AND THIS TEST FAILS. +;E IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS FOUND +;IN E, IT WAS UPDATED INCORRECTLY BY MOVEM. + +C50000: MOVE [252525,,252525] ;PRELOAD AC WITH 252525,,252525 + MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070 + MOVEM 0,1 ;*MOVEM SHOULD PLACE 252525,,252525 + ;INTO E AND NOT AFFECT THE AC + CAME 0,[252525,,252525] ;PASS IF C(AC) IS NOT CLOBBERED + STOP + CAME 1,[252525,,252525] ;PASS IF E WAS UPDATED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVES PLACES C(E) INTO THE AC IF AC IS NON-ZERO. +;IN THIS CASE, C(AC)=707070,,707070 AND C(E)=123456,,123456. HENCE, BOTH +;THE AC AND E SHOULD CONTAIN 123456,,123456 AFTER MOVES IS EXECUTED. +;BOTH AC AND E ARE CHECKED FOR 123456,,123456. IF EITHER AC OR E +;CONTAIN A DIFFERENT RESULT, THIS TEST FAILS + +C50100: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVE 1,[123456,,123456] ;PRELOAD E WITH 123456,,123456 + MOVES 2,1 ;*MOVES SHOULD PLACE 123456,,123456 + ;INTO BOTH AC AND E + CAME 2,[123456,,123456] ;PASS IF C(AC)=123456,,123456 + STOP + CAME 1,[123456,,123456] ;PASS IF C(E)=123456,,123456 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVES IS A NO-OP IF AC=0 +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=707070,,707070 +;AFTER MOVES IS EXECUTED, AC AND E ARE CHECKED FOR THEIR ORIGINAL DATA. +;IF EITHER C(AC) OR C(E) CHANGED AS A RESULT OF MOVES, THIS TEST FAILS. + +C50110: MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070 + SETO ;PRELOAD AC WITH -1,,-1 + MOVES 0,1 ;*MOVES SHOULD FUNCTION AS A NO-OP + CAME 0,[-1,,-1] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + CAME 1,[707070,,707070] ;PASS IF C(E) WAS NOT MODIFIED + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVSI LOADS THE WORD E,0 INTO THE AC. +;IN THIS CASE, C(AC)=707070,,707070 AND E=0,,-1. +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,0. +;THE AC IS CHECKED FOR -1,,0. IF C(AC)=-1,,0, THIS TEST PASSES. + +C50200: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVSI 1,-1 ;*MOVSI SHOULD PLACE -1,,0 INTO THE AC + CAME 1,[-1,,0] ;PASS IF C(AC)=1,,0 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC) +;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3. +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT +;IN E SHOULD BE 0,,1 + +C50300: SETO 1, ;PRELOAD AC WITH -1,,-1 + MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3 + MOVNM 1,2 ;*MOVNM SHOULD PLACE 0,,1 INTO E + ;AND NOT AFFTECT C(AC) + CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + STOP + CAIE 2,1 ;PASS IF C(E)=0,,1 + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC) +;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3. +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT +;IN E SHOULD BE 0,,1 + +C50301: SETO 1, ;PRELOAD AC WITH -1,,-1 + MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3 + MOVEM 2,E50301 + MOVNM 1,E50301 ;*MOVNM SHOULD PLACE 0,,1 INTO E + ;AND NOT AFFTECT C(AC) + CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + STOP + MOVE 2,E50301 + CAIE 2,1 ;PASS IF C(E)=0,,1 + STOP + + SKIPA ;GO TO NEXT TEST +E50301: 0 ;TESTED MEMORY LOCATION + +;********** +;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0, +;C(AC)=0 AND C(E)=0,,1 +;HENCE, THE RESULT IN THE AC SHOULD BE 0 +;AND THE RESULT IN E SHOULD BE -1,,-1 + +C50400: SETZ ;CLEAR AC + MOVEI 2,1 ;PRELOAD E WITH 0,,1 + MOVNS 0,2 ;*MOVNS SHOULD PLACE -1,,-1 INTO E + ;AND SHOULD NOT AFFECT THE AC + SKIPE ;PASS IF THE AC IS UNALTERED + STOP + CAME 2,[-1] ;PASS IF C(E)=-1,,-1 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZO. IN THIS CASE, AC=0, +;C(AC)=0 AND C(E)=0,,1 +;HENCE, THE RESULT IN THE AC SHOULD BE 0 +;AND THE RESULT IN E SHOULD BE -1,,-1 + +C50401: SETZ ;CLEAR AC + MOVEI 2,1 ;PRELOAD E WITH 0,,1 + MOVEM 2,E50401 + MOVNS 0,E50401 ;*MOVNS SHOULD PLACE -1,,-1 INTO E + ;AND SHOULD NOT AFFECT THE AC + SKIPE ;PASS IF THE AC IS UNALTERED + STOP + MOVE 2,E50401 + CAME 2,[-1] ;PASS IF C(E)=-1,,-1 + STOP + + SKIPA ;GO TO NEXT TEST +E50401: 0 ;TESTED MEMORY LOCATION + +;********** +;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1, +;C(AC=0 AND C(E)=3 +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,3 +;AND THE RESULT IN E SHOULD BE -1,,3. + +C50410: SETZ 1, ;CLEAR AC + MOVEI 2,3 ;PRELOAD WITH 0,,3 + MOVNS 1,2 ;*MOVNS SHOULD PLACE -1,,-3 INTO E + ;AND -1,,-3 INTO THE AC + CAME 1,[-1,,-3] ;PASS IF C(AC)=-1,,-3 + STOP + CAME 2,[-1,,-3] ;PASS IF C(E)=-1,,-3 + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVMI MOVES THE WORD 0,,E INTO THE AC. +;IN THIS CASE, C(AC)=0 AND E=0,,-2. HENCE, THE RESULT IN THE AC +;SHOULD BE 0,,-2. + +C50500: SETZ 1, ;CLEAR AC + MOVMI 1,-2 ;*MOVMI SHOULD PLACE 0,,-2 INTO AC + CAIE 1,-2 ;PASS IF C(AC)=0,,-2 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVM MOVES THE MAGNITUDE OF C(E) NTO THE AC. +;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-2. HENCE, THE RESULT IN THE AC +;SHOULD BE 0,,2. + +C50501: SETZ 1, ;CLEAR AC + MOVE 3,[-2] ;PRELOAD E WITH -1,,-2 + MOVM 1,3 ;*MOVM SHOULD PLACE 0,,2 INTO AC + CAIE 1,2 ;PASS IF C(AC)=0,,2 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVMM PLACES THE MAGNITUDE OF C(AC) +;INTO E. IN THIS CASE, C(AC)=-1,,-2 AND C(E)=0. HENCE, THE +;RESULT IN E SHOULD BE 0,,2 AND C(AC) SHOULD REMAIN UNCHANGED. + +C50600: MOVE 1,[-1,,-2] ;PRELOAD AC WITH -1,,-2 + SETZ 2, ;CLEAR E + MOVMM 1,2 ;*MOVMM SHOULD PLACE 0,,2 INTO E + ;AND SHOULD NOT CHANGE C(AC) + CAME 1,[-1,,-2] ;PASS IF C(AC) IS NOT ALTERED + STOP + CAIE 2,2 ;PASS IF C(E)=0,,2 + STOP + +;********** + +;THIS TEST VERIFIES THAT MONMS PLACES THE MAGNITUDE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0, C(AC)=0 +;AND C(E)=-1,,-2. +;HENCE, THE RESULT IN THE AC SHOULD BE 0 AND THE RESULT IN +;E SHOULD BE 0,,2. + +C50700: SETZ ;CLEAR AC + MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-1 + MOVMS 0,2 ;*MOVMS SHOULD PLACE 0,,1 INTO E + ;AND SHOULD NOT CHANGE C(AC) + SKIPE ;PASS IF C(AC) IS UNALTERED + STOP + CAIE 2,2 ;PASS IF C(E)=0,,2 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVMS PLACES THE MAGNITUDE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1, C(AC)=-1,,-1 +;AND C(E)=-1,,-2. +;HENCE, THE RESULT IN THE AC SHOULD BE 0,,2 AND THE RESULT +;IN E SHOULD BE 0,,2. + +C50710: SETO 1, ;PRELOAD AC WITH -1,,-1 + MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-2 + MOVMS 1,2 ;*MOVMS SHOULD PLACE 0,,2 INTO E + ;AND SHOULD PLACE 0,,2 INTO THE AC + CAIE 1,2 ;PASS IF C(AC)=0,,2 + STOP + CAIE 2,2 ;PASS IF C(E)=0,,2 + STOP + +;********** +SUBTTL TEST OF MSCL ADD/SUB INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT SUBI SUBTRACTS THE WORD 0,,E FROM C(AC) +;AND PLACES THE RESULT INTO THE AC. IN THIS CASE, C(AC)=70 AND +;E=0,,2. HENCE, THE RESULT IN THE AC SHOULD BE 66. + +C51000: MOVEI 1,70 ;PRELOAD AC WITH 70 + SUBI 1,2 ;*SUBI SHOULD PLACE 66 INTO AC + CAIE 1,66 ;PASS IF C(AC)=66 + STOP + +;********** + +;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE, +;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND +;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY. + +C51100: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH 0,,37 + SUBM 1,2 ;*SUBM SHOULD PLACE + ;0,,41 INTO E AND NOT CHANGE C(AC) + CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED + STOP + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + +;********** +;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE, +;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND +;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY. + +C51101: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH 0,,37 + MOVEM 2,E51101 + SUBM 1,E51101 ;*SUBM SHOULD PLACE + ;0,,41 INTO E AND NOT CHANGE C(AC) + CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED + STOP + MOVE 2,E51101 + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + + SKIPA ;GO TO NEXT TEST +E51101: 0 ;TEST WORD MEMORY + +;********** +;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE, +;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH +;AC AND E SHOULD BE 0,,41. + +C51200: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH O,,37 + SUBB 1,2 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E + CAIE 1,41 ;PASS IF C(AC)=0,,41 + STOP + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + +;********** + +;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE, +;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH +;AC AND E SHOULD BE 0,,41. + +C51201: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH O,,37 + MOVEM 2,E51201 + SUBB 1,E51201 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E + CAIE 1,41 ;PASS IF C(AC)=0,,41 + STOP + MOVE 2,E51201 + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + + SKIPA ;GO TO NEXT TEST +E51201: 0 ;TEST WORD MEMORY + +;********** +SUBTTL TEST OF MSCL CAIX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E. +;IN THIS CASE, C(AC)=0,,1 AND E=0,,2 +;HENCE, CAIL SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIL SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51300: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E. +;IN THIS CASE, C(AC)=0,,2 AND E=0,,2. +;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51310: MOVEI 1,2 ;PRELOAD AC WITH 0,,2 + CAIL 1,2 ;*CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIL DOES NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E +;IN THIS CASE, C(AC)=0,,3 AND E=0,,2 +;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51320: MOVEI 1,3 ;PRELOAD AC WITH 0,,3 + CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIL DOES NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=-1,,-1 AND E=0 +;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION +;IF CAILE SKIPS THE NEXT INSTRUCTION, THE TEST PASSES + +C51400: SETO 1, ;PRELOAD AC WITH -1,,-1 + CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=0 AND E=0 +;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAILE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51410: SETZ 1, ;PRELOAD AC WITH 0 + CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION. + STOP + +;********** + +;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=0,,1 AND E=0 +;HENCE, CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAILE DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES + +C51420: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + CAILE 1,0 ;*CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAILE DOES NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS +;SKIPS THE NEXT INSTRUCTION +;IN THIS CASE, C(AC)=-1,,-1 AND E=0 +;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION +;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51500: SETO 1, ;PRELOAD AC WITH -1,,-1 + CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS +;SKIPS THE NEXT INSTRUCTION +;IN THIS CASE, C(AC)=0 AND E=0 +;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51510: SETZ 1, ;PRELOAD AC WITH 0 + CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS +;SKIPS THE NEXT INSTRUCTION +;IN THIS CASE, C(AC)=0,,1 AND E=0 +;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51520: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E. +;IN THIS CASE, C(AC)=0,,5 AND E=0,,6 +;HENCE, CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIGE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + +C51600: MOVEI 2,5 ;PRELOAD AC WITH 0,,5 + CAIGE 2,6 ;*CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIGE DOES NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=0,,6 AND E=0,,6 +;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51610: MOVEI 2,6 ;PRELOAD AC WITH 0,,6 + CAIGE ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E. +;IN THIS CASE, C(AC)=0,,7 AND E=0,,6 +;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51620: MOVEI 2,7 ;PRELOAD AC WITH 0,,7 + CAIGE 2,6 ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIRIES THAT CAIN COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. +;IN THIS CASE, C(AC)=0 AND E=0,,1 +;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51700: SETZ 6, ;PRELOAD AC WITH 0 + CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. +;IN THIS CASE, C(AC)=0,,1 AND E=0,,1 +;HENCE, CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIN DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + +C51710: MOVE 6,1 ;PRELOAD AC WITH 0,,1 + CAIN 6,1 ;*CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIN SKIPS + STOP + +;********** +;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. +;IN THIS CASE, C(AC)=0,,2 AND E=0,,1 +;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51720: MOVEI 6,2 ;PRELOAD AC WITH + CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. +;IN THIS CASE, C(AC)=0,,2 AND E=0,,3. +;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + +C52000: MOVEI 11,2 ;PRELOAD AC WITH 0,,2 + CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIG DID NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. +;IN THIS CASE, C(AC)=0,,3 AND E=0,,3. +;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES. + +C52010: MOVEI 11,3 ;PRELOAD AC WITH 0,,3 + CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIG DID NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. +;IN THIS CASE, C(AC)=0,,4 AND E=0,,3. +;HENCE, CAIG SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52020: MOVEI 11,4 ;PRELOAD AC WITH 0,,4 + CAIG 11,3 ;*CAIG SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +SUBTTL TEST OF MSCL CAMX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAT OR EQUAL TO C(E). +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=0 +;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52100: SETO 1, ;PRELOAD AC WITH -1,,-1 + SETZ 2, ;PRELOAD E WITH 0 + CAMLE 1,2 ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E). +;IN THIS CASE, C(AC)=0 AND C(E)=0 +;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C52110: SETZ 1, ;CLEAR AC + CAMLE 1,[0] ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E). +;IN THIS CASE, C(AC)=0,,1 AND C(E)=0 +;HENCE, CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAMLE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52120: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + SETZ 2, ;PRELOAD E WITH 0 + CAMLE 1,2 ;*CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAMLE DOES NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=-1,,-2 AND C(E)=-1,,-1. +;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2 + CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. + SKIPA ;PASS IF CAMG DOES NOT SKIP + STOP +;********** + +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-2. +;HENCE, CAMG SHOULD SKIP THE NEXT INSTRUCTION. + +C52205: HRROI 10,-1 ;PRELOAD AC WITH -1,,-1 + CAMG 10,[-1,,-2] ;*CAMG SHOULD SKIP THE NEXT INSTRUCTION. + STOP +;********** +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-1. +;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. +C52210: SETO 10, ;PRELOAD AC WITH -1,,-1. + CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAMG DOES NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-1. +;HENCE, CAMG SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAMG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52220: SETZ 10, ;PRELOAD AC WITH 0 + CAMG 10,[-1,,-1] ;*CAMG SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +SUBTTL TEST OF MSCL JUMPX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND +;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR +;EQUAL TO 0. IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPLE SHOULD JUMP. + +C52300: SETO 17, ;PRELOAD AC WITH -1,,-1 + JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP + STOP + +;********** + +;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND +;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR +;EQUAL TO 0. IN THIS CASE, C(AC)=0. HENCE, JUMPLE SHOULD JUMP. + +C52310: SETZ 17, ;PRELOAD AC WITH 0 + JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP + STOP + +;********** +;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND JUMPS +;TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO +;0. IN THIS CASE, C(AC)=0,,1. HENCE, JUMPLE SHOULD NOT JUMP. + +C52320: MOVEI 17,1 ;PRELOAD AC WITH 0,,1 + JUMP 17,.+2 ;*JUMPLE SHOULD NOT JUMP + SKIPA ;PASS IF JUMPLE DOES NOT JUMP + STOP + +;********** + +;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO +;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPGE SHOULD NOT JUMP. + +C52400: SETO 16, ;PRELOAD AC WITH -1,,-1 + JUMPGE 16,.+2 ;*JUMPGE SHOULD NOT JUMP + SKIPA ;PASS IF JUMPGE DOES NOT JUMP + STOP + +;********** +;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH O AND JUMPS TO +;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=0. HENCE, JUMPGE SHOULD JUMP. + +C52410: SETZ 16, ;PRELOAD AC WITH 0 + JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP + STOP + +;********** + +;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO +;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=0,,1. HENCE, JUMPGE SHOULD JUMP. + +C52420: MOVEI 16,1 ;PRELOAD AC WITH 0,,1 + JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP + STOP + +;********** +SUBTTL TEST OF MSCL AOJX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND PLACES +;THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED +;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) +;IS LESS THAN 0. IN THIS CASE, C(AC)=-1,,-2 BEFORE INCREMENTING. +;HENCE, AOJL SHOULD JUMP. + +C52500: HRROI 15,-2 ;PRELOAD AC WITH -1,,-2 + AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) AND JUMP + STOP + CAME 15,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJ SHOULD NOT JUMP + +C52510: SETO 15, ;PRELOAD AC WITH + AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJL DID NOT JUMP + STOP + CAIE 15,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJL SHOULD NOT JUMP + +C52520: SETZ 15, ;PRELOAD AC WITH 0 + AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJL DID NOT JUMP + STOP + CAIE 15,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0 +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJE SHOULD NOT JUMP + +C52600: HRROI 14,-2 ;PRELOAD AC WITH -1,,-2 + AOJE 14,.+2 ;*AOJE SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJE DID NOT JUMP + STOP + CAME 14,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING. +;HENCE, AOJE SHOULD JUMP + +C52610: SETO 14, ;PRELOAD AC WITH -1,,-1 + AOJE 14,.+2 ;*AOJ SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 14,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJE SHOULD NOT JUMP + +C52620: SETZ 14, ;PRELOAD AC WITH 0 + AOJE 14,.+2 ;*AOJE SHOULD ADD 0,11 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJE DID NOT JUMP + STOP + CAIE 14,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO TLE$EC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJLE SHOULD + +C52700: HRROI 13,-2 ;PRELOAD AC WITH -1,,-2 + AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAME 13,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJLE SHOULD JUMP. + +C52710: SETO 13, ;PRELOAD AC WITH -1,,-1 + AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 13,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC) IS 0 +;HENCE, AOJLE SHOULD NOT JUMP. + +C52720: SETZ 13, ;PRELOAD AC WITH 0 + AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJLE DID NOT JUMP + STOP + CAIE 13,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E. +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJA SHOULD JUMP + +C53000: HRROI 12,-2 ;PRELOAD AC WITH -1,,-2 + AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAME 12,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJA SHOULD JUMP + +C53010: SETO 12, ;PRELOAD AC WITH -1,,-1 + AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 12,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJA SHOULD JUMP + +C53020: SETZ 12, ;PRELOAD AC WITH 0 + AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 12,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJGE SHOULD NOT JUMP + +C53100: HRROI 11,-2 ;PRELOAD AC WITH -1,,-2 + AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJGE DID NOT JUMP + STOP + CAME 11,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJ SHOULD JUMP + +C53110: SETO 11, ;PRELOAD AC WITH -1,,-1 + AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 11,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJGE SHOULD JUMP + +C53120: SETZ 11, ;PRELOAD AC WITH 0 + AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 11,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJN SHOULD JUMP + +C53200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2 + AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAME 10,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJ SHOULD NOT JUMP. + +C53210: SETO 10, ;PRELOAD AC WITH -1,,-1 + AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJN DID NOT JUMP + STOP + CAIE 10,0 ;PASS IF C(AC) INCREMENTED CORRRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJN SHOULD JUMP. + +C53220: SETZ 10, ;PRELOAD AC WITH 0 + AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 10,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE REAULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0 +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INC +;HENCE, AOJG SHOULD NOT JUMP + +C53300: HRROI 7,-2 ;PRELOAD AC WITH -1,,-2 + AOJG 7,.+2 ;*AOJG SHOULD ADD 0,11 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJG DID NOT JUMP + STOP + CAME 7,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJG SHOULD NOT JUMP. + +C53310: SETO 7, ;PRELOAD AC WITH -1,,-1 + AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJG DID NOT JUMP + STOP + CAIE 7,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJG SHOULD JUMP + +C53320: SETZ 7, ;PRELOAD AC WITH 0 + AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 7,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +SUBTTL TEST OF MSCL AOSX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53400: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 7,-2 ;PRELOAD E WITH -1,,-2 + AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53401: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 7,-2 ;PRELOAD E WITH -1,,-2 + MOVEM 7,E53401 + AOSL 6,E53401 ;*AOSL SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + MOVE 7,E53401 + CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + + SKIPA ;GO TO NEXT TEST +E53401: 0 ;TEST WORD MEMORY + +;********** +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) ISLESS THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C53410: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 7, ;PRELOAD E WITH -1,,-1 + AOSL 6,7 ;*AOSL SHOULD ADD 00,1 TO C(E) + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSL DID NOT SKIP + STOP + CAME 7,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C53420: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 7, ;PRELOAD E WITH 0 + AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E). + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSL DID NOT SKIP + STOP + CAME 7,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53500: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 6,-2 ;PRELOAD E WITH -1,,-2 + AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSE DID NOT SKIP + STOP + CAME 6,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C53510: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 6, ;PRELOAD E WITH -1,,-1 + AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 6,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(AC)=0 +;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C53520: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 6, ;PRELOAD E WITH 0 + AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSE DID NOT SKIP + STOP + CAME 6,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53600: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 5,-2 ;PRELOAD E WITH -1,,-2 + AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP ZERO + STOP + CAME 5,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C53610: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETOM 5, ;PRELOAD E WITH -1,,-1 + AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E) + ;UPDATE AC AND SKIP + STOP + CAME 5,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSLE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C53620: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 5 ;PRELOAD E WITH 0 + AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E) + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSLE DID NOT SKIP + STOP + CAME 5,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 4,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53700: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 4,-2 ;PRELOAD E WITH -1,,-2 + AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY + +C53710: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 4, ;PRELOAD E WITH -1,,-1 + AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 3,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOS INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C53720: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 4, ;PRELOAD E WITH 0 + AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSGE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY + +C54000: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 3,-2 ;PRELOAD E WITH -1,,-2 + AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSGE DID NOT SKIP + STOP + CAME 3,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 2,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY + +C54010: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 3, ;PRELOAD E WITH 0 + AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 3,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 2,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C54020: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 3, ;PRELOAD E WITH 0 + AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 3,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 2,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY + +C54100: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 2,-2 ;PRELOAD E WITH -1,,-2 + AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 2,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 1,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY + +C54110: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 2, ;PRELOAD E WITH -1,,-1 + AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSN DID NOT SKIP + STOP + CAME 2,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 1,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSN SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C54120: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 2, ;PRELOAD E WITH 0 + AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 2,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 1,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEST INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1 +;RESPECTIVELY + +C54200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 1,-2 ;PRELOAD E WITH -1,,-2 + AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + ;AND NOT SKIP + SKIPA ;PASS IF AOSG DID NOT SKIP + STOP + CAME 1,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY + +C54210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 1, ;PRELOAD E WITH -1,,-1 + AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + ;AND NOT SKIP + SKIPA ;PASS IF AOSG DID NOT SKIP + STOP + CAME 1,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;*********** +;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSG SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1 +;RESPECTIVELY + +C54220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 1, ;PRELOAD E WITH 0 + AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + ;AND SKIP + STOP + CAME 1,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** +SUBTTL TEST OF MSCL SOJX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESTULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0. +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJL +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54300: MOVEI 17,0 ;PRELOAD AC WITH 0 + SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 17,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;*********** + +;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0. +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJL +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + +C54310: MOVEI 17,1 ;PRELOAD AC WITH 0,,1 + SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC) + SKIPA ;PASS IF SOJL DID NOT JUMP + STOP + CAME 17,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0 +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJ +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54320: MOVEI 17,2 ;PRELOAD AC WITH 0,,2 + SOJL 17,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJL DID NOT JUMP + STOP + CAME 17,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54400: MOVEI 16,0 ;PRELOAD AC WITH 0 + SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJE DID NOT JUMP + STOP + CAME 16,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0 +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJ +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54410: MOVEI 16,1 ;PRELOAD AC WITH 0,,1 + SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 16,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54420: MOVEI 16,2 ;PRELOAD AC WITH 0,,2 + SOJE 16,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJE DID NOT JUMP + STOP + CAME 16,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJLE +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54500: MOVEI 15,0 ;PRELOAD AC WITH 0 + SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 15,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUALTO 0. +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJLE +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54510: MOVEI 15,1 ;PRELOAD AC WITH 0,,1 + SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 15,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJLE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54520: MOVEI 15,2 ;PRELOAD AC WITH 0,,2 + SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF SOJLE DID NOT JUMP + STOP + CAME 15,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJA +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54600: MOVEI 14,0 ;PRELOAD AC WITH 0 + SOJA 14,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 14,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJA +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54610: MOVEI 14,1 ;PRELOAD AC WITH 0,,1 + SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 14,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJA +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54620: MOVEI 14,2 ;PRELOAD AC WITH 0,,2 + SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 14,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJGE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54700: MOVEI 13,0 ;PRELOAD A C WITH 0 + SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF SOJGE DID NOT JUMP + STOP + CAME 13,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJGE +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54710: MOVEI 13,1 ;PRELOAD AC WITH 0,,1 + SOJGE 13,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 13,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIRIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND PLACES THE +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED +;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC IS +;GREATER THAN OR EQUAL TO 0. IN THIS CASE, C(AC = 0,,2 BEFORE +;DECREMENTING. HENCE, SOJGE SHOULD JUMP AND THE RESULT IN THE AC SHOULD +;BE 0,,1. + +C54720: MOVEI 13,2 ;PRELOAD AC WITH 0,,2 + SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT0,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 13,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NON-ZERO. +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE,SOJN +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1. + +C55000: MOVEI 12,0 ;PRELOAD AC WITH 0 + SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 12,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIRIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED +;BY E IF C(AC) IS NON-ZERO. +;IN THIS CASE, C(AC) = 0,,1 BEFORE DECREMENTING. HENCE, SOJN +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + +C55010: MOVEI 12,1 ;PRELOAD AC WITH 0,,1 + SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJN DID NOT JUMP + STOP + CAME 12,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NON-ZERO. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJN +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1. + +C55020: MOVEI 12,2 ;PRELOAD AC WITH 0,,2 + SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 12,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC) = 0 BEFORE DECREMENTING. HENCE, SOJG +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1. + +C55100: MOVEI 11,0 ;PRELOAD AC WITH 0 + SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJG DID NOT JUMP + STOP + CAME 11,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIRIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJG +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + +C55110: MOVEI 11,1 ;PRELOAD AC WITH 0,,1 + SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJG DID NOT JUMP + STOP + CAME 11,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJG +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1. + +C55120: MOVEI 11,2 ;PRELOAD AC WITH 0,,2 + SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT O,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 11,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +SUBTTL TEST OF MSCL SOSX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1 +;RESPECTIVELY. + +C55200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,0 ;PRELOAD E WITH 0 + SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E) + ;AND SKIP + STOP + CAME 1,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY. + +C55210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,1 ;PRELOAD E WITH 0,,1 + SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + ;AND NOT SKIP. + SKIPA ;PASS IF SOSL DID NOT SKIP + STOP + CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** +;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY. + +C55211: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,1 ;PRELOAD E WITH 0,,1 + MOVEM 1,E55211 + SOSL 0,E55211 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + ;AND NOT SKIP. + SKIPA ;PASS IF SOSL DID NOT SKIP + STOP + MOVE 1,E55211 + CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + + SKIPA ;GO TO NEXT TEST +E55211: 0 ;TEST WORD MEMORY + +;********** +;THIS TEST VERIFIES THAT SOS DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E) 0,,2 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1 +;RESPECTIVELY. + +C55220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,2 ;PRELOAD E WITH 0,,2 + SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + ;AND NOT SKIP + + SKIPA ;PASS IF SOSL DID NOT SKIP + STOP + CAME 1,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55300: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 11,0 ;PRELOAD E WITH 0 + SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + + SKIPA ;PASS IF SOSE DID NOT SKIP + STOP + CAME 11,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 10,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY. + +C55310: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 11,1 ;PRELOAD E WITH 0,,1 + SOSE 10,11 ;*SOS SHOULD SUBTRACT 0,,1 FROM C(E) + ;UPDATE AC AND SKIP + STOP + CAME 11,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 10,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,11 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55320: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 11,2 ;PRELOAD E WITH 0,,2 + SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + + SKIPA ;PASS IF SOSE DID NOT SKIP + STOP + CAME 11,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 10,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55400: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 10,0 ;PRELOAD E WITH 0 + SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 10,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 7,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=7, C(AC)=070707,,070707 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55410: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 10,1 ;PRELOAD E WITH 0,,1 + SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 10,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 7,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSLE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55420: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 10,2 ;PRELOAD E WITH 0,,2 + SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSLE DID NOT SKIP + STOP + CAME 10,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 7,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55500: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 7,0 ;PRELOAD E WITH 0 + SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THEAC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSA SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55510: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 7,1 ;PRELOAD E WITH 0,,1 + SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55520: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 7,2 ;PRELOAD E WITH 0,,2 + SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSGE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55600: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 6,0 ;PRELOAD E WITH 0 + SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSGE DID NOT SKIP + STOP + CAME 6,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE +;FINAL RESULTS IN ACAND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55610: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 6,1 ;PRELOAD E WITH 0,,1 + SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 6,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55620: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 6,2 ;PRELOAD E WITH 0,,2 + SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 6,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES SOSN DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55700: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 5,0 ;PRELOAD E WITH 0 + SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 5,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSN SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55710: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 5,1 ;PRELOAD E WITH 0,,1 + SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSN DID NOT SKIP + STOP + CAME 5,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;INtTHIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C55720: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 5,2 ;PRELOAD E WITH 0,,2 + SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 5,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 4,[1] ;PASS IF ACWAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIESTHAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C56000: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 4,0 ;PRELOAD E WITH 0 + SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSG DID NOT SKIP + STOP + CAME 4,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C56010: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 4,1 ;PRELOAD E WITH 0,,1 + SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSG DID NOT SKIP + STOP + CAME 4,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 3,[0] ;PASS IF AC WAS UPDATED IS AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSG SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 011, +;RESPECTIVELY. + +C56020: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 4,2 ;PRELOAD E WITH 0,,2 + SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + + ;JRST BEGEND diff --git a/apps/pdp10/diags/klad/dakae/DAKAEM.MAC.txt b/apps/pdp10/diags/klad/dakae/DAKAEM.MAC.txt new file mode 100644 index 000000000..77d487cd1 --- /dev/null +++ b/apps/pdp10/diags/klad/dakae/DAKAEM.MAC.txt @@ -0,0 +1,2739 @@ +SUBTTL DIAGNOSTIC SECTION + +START: SETZM USER# ;CLEAR USER CONTROL WORD + JSP 0,.+1 ;GET FLAGS + TLNE USERF ;IN USER MODE? + SETOM USER ;YES, SET USER CONTROL WORD + SKIPN MONFLG ;SPECIAL USER MODE? + SETZM USER ;YES, CLEAR USER CONTROL WORD + SKIPN USER + JRST STARTA + SKIPL MONCTL + TTCALL 3,PGMNAM ;MENTION OUR NAME + JRST STARTA + +PGMNAM: ASCIZ/ +PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (5) [DAKAE] +/ + + +;THE TEST IS DESIGNED FOR INITIAL DEBUGGING OF +;PROCESSOR HARDWARE AND TO DETECT (SOLID) FAILURES +;IN THE FIELD. + +STARTA: JRST .+1 +SUBTTL TEST OF JSR INSTRUCTION + +;********** + +;THIS TEST VERIFIES THAT JSR STORES THE FLAGS AND PC IN LOCATION E. +;IN THIS CASE, E IS CLEARED, CRY0 IS SET AND JSR IS EXECUTED. +;NEXT, E IS CHECKED FOR ITS CONTENTS NON-ZERO. IF C(E) IS NON-ZERO, +;THIS TEST PASSES. + +C23000: SFLAG CRY0 ;SET CRY0 FLAG + SETZM .+2 ;PRELOAD E WITH 0 + JSR .+1 ;*JSR SHOULD PLACE FLAGS AND PC INTO AC + 0 ;E: PRESET TO 0, SHOULD RECEIVE FLAGS AND PC FROM JSR + SKIPN .-1 ;PASS IF C(E) IS NON-ZERO. + STOP + +;********** + +;THIS TEST VERIFIES THAT JSR IGNORES THE AC FIELD; +;HENCE, IT DOES NOT MODIFY THE SPECIFIED AC. +;IN THIS CASE, CRY0 IS SET. THE AC IS PRELOADED WITH -1,,-1 AND JSR IS EXECUTED. +;THE AC IS THEN CHECKED. IF C(AC)=-1,,-1, THIS TEST PASSES. + +C23100: SFLAG CRY0 ;SET CRY0 + SETO 1, ;PRELOAD AC WITH -1,,-1 + JSR 1,.+1 ;*JSR SHOULD NOT MODIFY THE AC + 0 ;STORE PC + FLAGS HERE + CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + STOP + +;********** +;THIS TEST VERIFIES THAT JSR STORES THE FLAGS IN E-LEFT HALF. +;IN THIS TEST, CRY0 IS SET, E IS CLEARED AND JSR IS EXECUTED. +;NEXT, C(E-LEFT) ARE PLACED INTO AC0 AND AC0 IS CHECKED FOR ITS CONTENTS NON-ZERO. +;IF C(AC0) ARE NON-ZERO, THIS TEST PASSES. + +C23200: SFLAG CRY0 ;SET CRY0 + SETZM .+2 ;CLEAR E + JSR .+1 ;*JSR SHOULD STORE FLAGS IN E + 0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST) + HLLZ .-1 ;PUT FLAGS INTO AC0 + SKIPN ;PASS IF C(AC0) NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT JSR TRANSFERS CONTROL TO E+1. +;IN THIS CASE, CRY0 IS SET AND E AND AC0 CLEARED; THEN, JSR IS EXECUTED. +;IF JSR RESUMES CONTROL AT E INSTEAD OF E+1, AC0 WILL BE MODIFIED; +;HENCE, THE TEST WILL FAIL WHEN AC0 IS CHECKED FOR 0 BECAUSE +;C(E) IS DECODED AS A MOVE INSTRUCTION. + +C23300: SFLAG CRY0 ;SET CRY0 + SETZB .+2 ;CLEAR AC0 AND E + JSR .+1 ;*JSR SHOULD RESUME CONTROL AT E+1 + 0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST) + SKIPE 0 ;PASS IF C(AC0)=0 + STOP + +;********** +;THIS TEST VERIFIES THAT JSR JUMPS TO E+1 +;IN THIS CASE, AC0 IS CLEARED AND CRY0 IS SET; THEN, JSR .+2 IS EXECUTED. +;IF JSR DID NOT JUMP, ONES ARE LOADED WITH AC0; AND THE TEST FAILS. +;OTHERWISE, AC0 REMAINS CLEAR AND THE TEST PASSES + +C23400: SFLAG CRY0 ;SET CRY0 + SETZ ;CLEAR AC0 + JSR .+2 ;*JSR SHOULD JUMP + SETO ;LOAD AC0 WITH ONES IF JSR FAILED TO JUMP + 0 ;STORE FLAGS HERE + SKIPE ;PASS IF JSR JUMPED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC +;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION. +;THIS TEST WILL FAIL IF JSR STORES E INSTEAD OF PC IN E - RIGHT HALF. +;IN CASE OF FAILURE, AR PC EN AT ET2 WAS FAULTY. + +C23500: SFLAG 0 ;CLEAR ALL FLAGS + JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT + HALT . ;JSR SHOULD SKIP OVER THIS HALT + 0 ;STORE FLAGS AND PC HERE + HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0 + CAIN .-2 ;FAIL IF C(AC0)=E + STOP + +;********** +;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC +;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION. +;THIS TEST WILL PASS IF JSR STORES PC IN E - RIGHT HALF. + +C23600: JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT + HALT . ;JSR SHOULD SKIP OVER THIS HALT + 0 ;STORE FLAGS AND PC HERE + HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0 + CAIE C23600+1 ;PASS IF C(AC0)=C23600+1 [PC] + STOP + +;********** +SUBTTL TEST OF JSA INSTRUCTION + +;********** + +;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1. +;IN THIS TEST, AC1 IS CLEARED AND A CAM 0,0 IS LOADED +;INTO THE AC OF THE JSA INSTRUCTION. +;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH ONES. AC1 IS CHECKED FOR ZEROS. +;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP. + +C23700: SETZ 1, ;CLEAR AC1 + MOVE [CAM] ;LOAD CAM INTO AC0 + JSA .+2 ;*JSA SHOULD JUMP TO E+1 + SETO 1 ;JSA SHOULD JUMP OVER THIS INSTRUCTION + 0 ;PASS IF JSA JUMPED + SKIPE 1 + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1. +;IN THIS TEST, AC1 IS CLEARED AND A MOVEI 1,1234 IS LOADED +;INTO THE AC OF THE JSA INSTRUCTION. +;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH 0,,1234. AC1 IS CHECKED FOR ZEROS. +;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP. + +C24000: SETZ 1, ;CLEAR AC1 + MOVE [MOVEI 1,1234] ;LOAD MOVEI 1,1234 INTO AC + JSA .+1 ;*JSA SHOULD JUMP TO E+1 + 0 ;JSA SHOULD JUMP OVER THIS LOCATION + CAIN 1,1234 ;FAIL IF JSA DID NOT JUMP OVER PREVIOUS INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT JSA LOADS PC OF LOC OF JSA+1 INTO AC RIGHT. +;THIS TEST WILL FAIL IF JSA LOADS E INTO AC RIGHT INSTEAD OF PC. + +C24100: JSA .+2 ;*JSA SHOULD LOAD PC INTO AC RIGHT + HALT . ;JSA SHOULD JUMP OVER THIS LOCATION + 0 ;JSA SHOULD JUMP OVER THIS LOCATION + HRRZM 1 ;PUT C(AC-RIGHT) INTO AC1 + CAIN 1,.-2 ;FAIL IF E WAS LOADED INTO AC-RIGHT INSTEAD OF PC + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA PLACES C(AC) INTO E +;THIS TEST WILL FAIL IF EITHER 0,,E OR 0,,PC IS LOADED +;INTO E INSTEAD OF C(AC) + +C24200: SETZB .+2 ;CLEAR AC,E + JSA .+1 ;*JSA SHOULD LOAD C(AC) [ZEROS] INTO E + 0 ;JSA SHOULD PLACE ZEROS HERE + MOVE 1,.-1 ;SAVE C(AC) + CAIN 1,.-2 ;FAIL IF JSA LOADED 0,,E OR 0,,PC INTO E + STOP + +;********** +;THIS TEST VERIFIES THAT JSA PLACES PC INTO AC-RIGHT +;THIS TEST WILL FAIL IF PC IS NOT LOADED INTO AC-RIGHT + +C24300: MOVEI -1 ;PRELOAD AC WITH 0,,-1 + JSA .+1 ;*JSA SHOULD PLACE E,,PC INTO THE AC + 0 ;JSA SHOULD PLACE C(AC) HERE + TRNN -1 ;FAIL IF AR LT AR RT EN FAILED + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA PLACES THE PC OF THE LOCATION OF JSA+1 IN AC-RIGHT +;THIS TEST FAILS IF A PC WAS NOT LOADED INTO AC RIGHT + +C24400: SETZ ;CLEAR AC + JSA .+1 ;*JSA SHOULD LOAD PC INTO AC - RIGHT + 0 ;JSA SHOULD PLACE C(AC) HERE + TRNN -1 ;PASS IF AC - RIGHT IS NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT JSA PLACES IN AC-LEFT +;THIS TEST FAILS IF JSA LOADS PC INSTEAD OF E INTO AC-LEFT + +C24500: JSA .+2 ;*JSA SHOULD LOAD E INTO AC-LEFT + HALT . ;JSA SHOULD JUMP OVER THIS INSTRUCTION + 0 ;E: + HLRZM 1 ;SAVE C(AC - LEFT) + CAIN 1,.-3 ;FAIL IF JSA LOADED PC INSTEAD OF E INTO AC-LEFT + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC +;FIRST, THE AC IS PRELOADED WITH -1,,-1; THEN, JSA IS EXECUTED. +;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES + +C24600: SETO ;PRELOAD AC WITH -1,,-1 + JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC + HALT . ;JSA SHOULD JUMP OVER HERE, PC: + 0 ;JSA SHOULD STORE C(AC) HERE, E: + CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC + STOP + +;********** +;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC +;FIRST, THE AC IS PRELOADED WITH 0 JSA IS EXECUTED. +;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES + +C24700: SETZ ;PRELOAD AC WITH 0 + JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC + HALT . ;JSA SHOULD JUMP OVER HERE, PC: + 0 ;JSA SHOULD STORE C(AC) HERE, E: + CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. +;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES; +;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0, +;THIS TEST PASSES. + +C25000: SETZ ;CLEAR AC + SETOM .+2 ;PRELOAD E WITH -1,,-1 + JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 0 ;E: SHOULD GET C(AC) FROM JSA + SKIPE .-1 ;PASS IF C(E)=0 + STOP + +;********** +;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. +;AC IS FIRST PRELOADED WITH -1,,-1 AND E IS CLEARED; +;THEN, JSA IS EXECUTED. E IS CHECKED FOR -1,,-1. IF C(E)=-1,,-1, +;THIS TEST PASSES. + +C25100: SETOB 1 ;PRELOAD AC -1,,-1 + SETZM .+2 ;PRELOAD E WITH 0 + JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 0 ;E: SHOULD GET C(AC) FROM JSA + CAME 1,.-1 ;PASS IF C(E)=-1,,-1 + STOP + +;********** + +;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E. +;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES; +;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0, +;THIS TEST PASSES. + +C25200: MOVEI -1 ;PRELOAD AC WITH 0,,-1 + JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E + 0 ;E: SHOULD GET C(AC) FROM JSA + MOVE 1,.-1 ;PASS IF C(E)=0,,-1 + CAIE 1,-1 + STOP + +;********** +;THIS TEST VERIFIES THAT JSA DOES NOT MODIFY AC+1 +;IN THIS TEST, AC+1 IS PRELOADED WITH -1,,-1; THEN JSA IS EXECUTED +;AC+1 IS THEN CHECKED FOR ITS ORIGINAL CONTENTS, -1,,-1. +;IF C(AC+1)=-1,,-1, THIS TEST PASSES + +C25300: SETOM 1 ;PRELOAD AC+1 WITH -1,,-1 + JSA .+1 ;*JSA SHOULD NOT MODIFY AC+1 + CAM ;JSA SHOULD JUMP OVER THIS, E:PC: + CAME 1,[-1] ;PASS IF AC+1 WAS NOT MODIFIED BY JSA + STOP + +;********** +SUBTTL TEST OF JRA INSTRUCTION + +;********** + +;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E +;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + +C25400: MOVE [JRST .+4] ;PRELOAD AC0 WITH JRST .+4 + MOVSI 1,.+2 ;PRELOAD AC WITH E,,0 + JRA 1,.+1 ;*JRA SHOULD JUMP TO NEXT INSTRUCTION + SKIPA ;PASS IF JRA JUMPS TO E + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E +;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + +C25500: MOVSI .+3 ;PRELOAD AC WITH E+1 + JRA .+1 ;*JRA SHOULD JUMP TO NEXT SEQUENTIAL INSTRUCTION + SKIPA ;PASS IF JRA JUMPS TO E + STOP + +;********** +;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E +;THIS TEST FAILS IF JRA DOES NOT JUMP TO E. + +C25600: SETZB 1 ;PRELOAD AC0, AC1 WITH ZEROS + JRA .+2 ;*JRA SHOULD JUMP OVER NEXT SEQUENTIAL INSTRUCTION + SETO 1, ;LOAD AC1 WITH ONES IF JRA DOES NOT JUMP + SKIPE 1 ;PASS IF JRA JUMPED + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC AND JUMPS TO E +;THIS TEST FAILS IF JRA JUMPS TO E+1 OR DOES NOT LOAD THE AC CORRECTLY. + +C25700: SETZ ;CLEAR AC + JRA .+1 ;*JRA SHOULD PLACE 0 INTO THE AC AND JUMP .+1 + SKIPE ;PASS IF AC WAS LOADED CORRECTLY + ;AND JRA JUMPED CORRECTLY. + STOP + +;********** +;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC +;FIRST, THE AC IS PRELOADED WITH 1,,2 AND AC1 AND AC2 ARE +;INITIALIZED WITH THEIR RESPECTIVE ADDRESSES; JRA IS EXECUTED, AND +;THE AC IS CHECKED FOR 0,,1, THE ORIGINAL C(C(AC-LEFT)). IF C(AC)=0,,1, +;THIS TEST PASSES + +C26200: MOVE [XWD 1,2] ;PRELOAD AC WITH 1,,2 + MOVEI 1,1 ;INITIALIZE AC1 WITH 0,,1 + MOVEI 2,2 ;INITIALIZE AC2 WITH 0,,2 + JRA .+1 ;*JRA SHOULD PLACE 0,,1 INTO THE AC + CAIE 1 ;PASS IF C(AC)=0,,1 + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA CAN RESTORE AC0 FROM AC0 WHEN AC0 IS THE +;SPECIFIED AC AND C(AC0-LEFT)=0. +;FIRST, AC0 IS PRELOADED AND JRA IS EXECUTED. THEN, AC0 IS CHECKED FOR +;ITS INITIAL CONTENTS. IF THE RESULT IN AC0, IS CORRECT, THIS TEST PASSES. + +C26300: HRRZI [135531,,246642] ;PRELOAD AC0 WITH 0,, LITERAL ADDRESS + JRA .+1 ;*JRA SHOULD PLACE C(AC0) INTO AC0 + CAIE [135531,,246642] ;PASS IF JRA PLACED C(AC0) INTO AC0 + STOP + +;********** +;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE +;SPECIFIED AC. +;FIRST, AC0 IS PRELOADED WITH [LITERAL ADDRESS ,,0] AND JRA IS EXECUTED. THEN, +;AC0 IS CHECKED FOR THE SPECIFIED LITERAL, 135246,,246135. IF +;C(AC0)=135246,,246135, THE TEST PASSES. + +C26400: HRLZI [135246,,246135] ;PRELOAD AC0 WITH [LITERAL ADDRESS ,,0] + JRA .+1 ;*JRA SHOULD PLACE 135246,,246135 INTO AC0 + CAME [135246,,246135];PASS IF C(AC0)=135246,,246135 + STOP + +;********** + +;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE +;SPECIFIED AC. +;FIRST, AC0 IS PRELOADED WITH [-1,, ADDRESS OF JCA INSTRUCTION] AND JRA IS EXECUTED. +;THEN, AC0 IS CHECKED FOR THE JRA INSTRUCTION. IF +;C(AC0)= THE JRA INSTRUCTION, THE TEST PASSES. + +C26500: HRLOI .+1 ;PRELOAD AC WITH -1,, ADDRESS OF JRA INSTRUCTION + JRA .+1 ;*JRA SHOULD PLACE ITSELF INTO AC0 + CAME .-1 ;PASS IF AC CONTAINS JRA INSTRUCTION + STOP + +;********** +SUBTTL TESTS OF BIS FLAG + +;********** + +;THIS TEST VERIFIES THAT JRST 2, CAN CLEAR BIS +;FIRST, BIS IS SET VIA JRST 2, ;THEN, BIS IS CLEARED VIA JRST 2,. +;THE FLAGS ARE SAVED AND BIS IS CHECKED. THIS TEST PASSES IF BIS IS RESET; +;OTHERWISE JRST 2, FAILED TO RESET BIS. + +C26600: SFLAG BIS ;SET BIS FLAG + SFLAG ;*RESET BIS FLAG + JSP .+1 ;SAVE FLAGS + TLNE BIS+37 ;PASS IF BIS FLAG IS RESET + STOP + +;********** + +;THIS TEST VERIFIES THAT JRST 2, CAN SET BIS. +;FIRST, BIS IS SET VIA JRST 2, AND THE FLAGS ARE SAVED. +;BIS IS THEN CHECKED. IF BIS IS SET, THIS TEST PASSES. + +C26700: SFLAG BIS ;*SET BIS FLAG VIA JRST + JSP .+1 ;SAVE FLAGS + TLNN BIS ;PASS IF BIS FLAG IS SET + STOP + +;********** +;THIS TEST VERIFIES THAT JSR ALWAYS RESETS BIS. +;FIRST BIS IS SET; THEN JSR IS EXECUTED. THE FLAGS ARE +;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSR, THIS TEST PASSES. + +C27000: SFLAG BIS ;SET BIS + JSR .+1 ;*JSR SHOULD RESET BIS + 0 ;JSR SAVES FLAGS HERE + JSP .+1 ;SAVE FLAGS + TLNE BIS ;PASS IF BIS FLAG IS RESET + STOP + +;********** + +;THIS TEST VERIFIES THAT JSP ALWAYS RESETS BIS. +;FIRST BIS IS SET; THEN JSP IS EXECUTED. THE FLAGS ARE +;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSP, THIS TEST PASSES. + +C27001: SFLAG BIS ;SET BIS + JSP .+1 ;*JSP SHOULD RESET BIS + JSP .+1 ;SAVE FLAGS + TLNE BIS ;PASS IF BIS FLAG IS RESET + STOP + +;********** +;THIS TEST VERIFIES THAT THE BITS IN POSITIONS 8, 9 AND 10 ARE CLEARABLE. +;FIRST, THE ARITHMETIC FLAGS ARE CLEARED; +;THEN, BITS 8, 9 AND 10 OF THE PC-WORD IS EXAMINED. +;IF ANY OF THESE BITS ARE SET, THIS TEST FAILS BECAUSE THEY SHOULD BE CLEAR. + +C27100: SFLAG ;CLEAR ARITHMETIC FLAGS + JSP .+1 ;SAVE FLAGS + TLNE 1600 ;PASS IF THESE BITS ARE CLEAR + STOP + +;********** +SUBTTL TEST OF MSCL FWT INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT MOVEM PLACES C(AC) INTO E AND DOES +;NOT MODIFY C(AC). +;IN THIS CASE, C(AC)=252525,,252525 ANS C(E)=707070,,707070. +;HENCE, THE RESULT IN E SHOULD BE 252525,,252525. +;THE AC IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS +;FOUND IN THE AC, IT WAS CLOBBERED BY MOVEM, AND THIS TEST FAILS. +;E IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS FOUND +;IN E, IT WAS UPDATED INCORRECTLY BY MOVEM. + +C50000: MOVE [252525,,252525] ;PRELOAD AC WITH 252525,,252525 + MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070 + MOVEM 0,1 ;*MOVEM SHOULD PLACE 252525,,252525 + ;INTO E AND NOT AFFECT THE AC + CAME 0,[252525,,252525] ;PASS IF C(AC) IS NOT CLOBBERED + STOP + CAME 1,[252525,,252525] ;PASS IF E WAS UPDATED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVES PLACES C(E) INTO THE AC IF AC IS NON-ZERO. +;IN THIS CASE, C(AC)=707070,,707070 AND C(E)=123456,,123456. HENCE, BOTH +;THE AC AND E SHOULD CONTAIN 123456,,123456 AFTER MOVES IS EXECUTED. +;BOTH AC AND E ARE CHECKED FOR 123456,,123456. IF EITHER AC OR E +;CONTAIN A DIFFERENT RESULT, THIS TEST FAILS + +C50100: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVE 1,[123456,,123456] ;PRELOAD E WITH 123456,,123456 + MOVES 2,1 ;*MOVES SHOULD PLACE 123456,,123456 + ;INTO BOTH AC AND E + CAME 2,[123456,,123456] ;PASS IF C(AC)=123456,,123456 + STOP + CAME 1,[123456,,123456] ;PASS IF C(E)=123456,,123456 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVES IS A NO-OP IF AC=0 +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=707070,,707070 +;AFTER MOVES IS EXECUTED, AC AND E ARE CHECKED FOR THEIR ORIGINAL DATA. +;IF EITHER C(AC) OR C(E) CHANGED AS A RESULT OF MOVES, THIS TEST FAILS. + +C50110: MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070 + SETO ;PRELOAD AC WITH -1,,-1 + MOVES 0,1 ;*MOVES SHOULD FUNCTION AS A NO-OP + CAME 0,[-1,,-1] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + CAME 1,[707070,,707070] ;PASS IF C(E) WAS NOT MODIFIED + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVSI LOADS THE WORD E,0 INTO THE AC. +;IN THIS CASE, C(AC)=707070,,707070 AND E=0,,-1. +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,0. +;THE AC IS CHECKED FOR -1,,0. IF C(AC)=-1,,0, THIS TEST PASSES. + +C50200: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVSI 1,-1 ;*MOVSI SHOULD PLACE -1,,0 INTO THE AC + CAME 1,[-1,,0] ;PASS IF C(AC)=1,,0 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC) +;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3. +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT +;IN E SHOULD BE 0,,1 + +C50300: SETO 1, ;PRELOAD AC WITH -1,,-1 + MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3 + MOVNM 1,2 ;*MOVNM SHOULD PLACE 0,,1 INTO E + ;AND NOT AFFTECT C(AC) + CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + STOP + CAIE 2,1 ;PASS IF C(E)=0,,1 + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC) +;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3. +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT +;IN E SHOULD BE 0,,1 + +C50301: SETO 1, ;PRELOAD AC WITH -1,,-1 + MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3 + MOVEM 2,E50301 + MOVNM 1,E50301 ;*MOVNM SHOULD PLACE 0,,1 INTO E + ;AND NOT AFFTECT C(AC) + CAME 1,[-1] ;PASS IF C(AC)=-1,,-1 + STOP + MOVE 2,E50301 + CAIE 2,1 ;PASS IF C(E)=0,,1 + STOP + + SKIPA ;GO TO NEXT TEST +E50301: 0 ;TESTED MEMORY LOCATION + +;********** +;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0, +;C(AC)=0 AND C(E)=0,,1 +;HENCE, THE RESULT IN THE AC SHOULD BE 0 +;AND THE RESULT IN E SHOULD BE -1,,-1 + +C50400: SETZ ;CLEAR AC + MOVEI 2,1 ;PRELOAD E WITH 0,,1 + MOVNS 0,2 ;*MOVNS SHOULD PLACE -1,,-1 INTO E + ;AND SHOULD NOT AFFECT THE AC + SKIPE ;PASS IF THE AC IS UNALTERED + STOP + CAME 2,[-1] ;PASS IF C(E)=-1,,-1 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZO. IN THIS CASE, AC=0, +;C(AC)=0 AND C(E)=0,,1 +;HENCE, THE RESULT IN THE AC SHOULD BE 0 +;AND THE RESULT IN E SHOULD BE -1,,-1 + +C50401: SETZ ;CLEAR AC + MOVEI 2,1 ;PRELOAD E WITH 0,,1 + MOVEM 2,E50401 + MOVNS 0,E50401 ;*MOVNS SHOULD PLACE -1,,-1 INTO E + ;AND SHOULD NOT AFFECT THE AC + SKIPE ;PASS IF THE AC IS UNALTERED + STOP + MOVE 2,E50401 + CAME 2,[-1] ;PASS IF C(E)=-1,,-1 + STOP + + SKIPA ;GO TO NEXT TEST +E50401: 0 ;TESTED MEMORY LOCATION + +;********** +;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1, +;C(AC=0 AND C(E)=3 +;HENCE, THE RESULT IN THE AC SHOULD BE -1,,3 +;AND THE RESULT IN E SHOULD BE -1,,3. + +C50410: SETZ 1, ;CLEAR AC + MOVEI 2,3 ;PRELOAD WITH 0,,3 + MOVNS 1,2 ;*MOVNS SHOULD PLACE -1,,-3 INTO E + ;AND -1,,-3 INTO THE AC + CAME 1,[-1,,-3] ;PASS IF C(AC)=-1,,-3 + STOP + CAME 2,[-1,,-3] ;PASS IF C(E)=-1,,-3 + STOP + +;********** + +;THIS TEST VERIFIES THAT MOVMI MOVES THE WORD 0,,E INTO THE AC. +;IN THIS CASE, C(AC)=0 AND E=0,,-2. HENCE, THE RESULT IN THE AC +;SHOULD BE 0,,-2. + +C50500: SETZ 1, ;CLEAR AC + MOVMI 1,-2 ;*MOVMI SHOULD PLACE 0,,-2 INTO AC + CAIE 1,-2 ;PASS IF C(AC)=0,,-2 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVM MOVES THE MAGNITUDE OF C(E) NTO THE AC. +;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-2. HENCE, THE RESULT IN THE AC +;SHOULD BE 0,,2. + +C50501: SETZ 1, ;CLEAR AC + MOVE 3,[-2] ;PRELOAD E WITH -1,,-2 + MOVM 1,3 ;*MOVM SHOULD PLACE 0,,2 INTO AC + CAIE 1,2 ;PASS IF C(AC)=0,,2 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVMM PLACES THE MAGNITUDE OF C(AC) +;INTO E. IN THIS CASE, C(AC)=-1,,-2 AND C(E)=0. HENCE, THE +;RESULT IN E SHOULD BE 0,,2 AND C(AC) SHOULD REMAIN UNCHANGED. + +C50600: MOVE 1,[-1,,-2] ;PRELOAD AC WITH -1,,-2 + SETZ 2, ;CLEAR E + MOVMM 1,2 ;*MOVMM SHOULD PLACE 0,,2 INTO E + ;AND SHOULD NOT CHANGE C(AC) + CAME 1,[-1,,-2] ;PASS IF C(AC) IS NOT ALTERED + STOP + CAIE 2,2 ;PASS IF C(E)=0,,2 + STOP + +;********** + +;THIS TEST VERIFIES THAT MONMS PLACES THE MAGNITUDE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0, C(AC)=0 +;AND C(E)=-1,,-2. +;HENCE, THE RESULT IN THE AC SHOULD BE 0 AND THE RESULT IN +;E SHOULD BE 0,,2. + +C50700: SETZ ;CLEAR AC + MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-1 + MOVMS 0,2 ;*MOVMS SHOULD PLACE 0,,1 INTO E + ;AND SHOULD NOT CHANGE C(AC) + SKIPE ;PASS IF C(AC) IS UNALTERED + STOP + CAIE 2,2 ;PASS IF C(E)=0,,2 + STOP + +;********** +;THIS TEST VERIFIES THAT MOVMS PLACES THE MAGNITUDE OF C(E) INTO E +;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1, C(AC)=-1,,-1 +;AND C(E)=-1,,-2. +;HENCE, THE RESULT IN THE AC SHOULD BE 0,,2 AND THE RESULT +;IN E SHOULD BE 0,,2. + +C50710: SETO 1, ;PRELOAD AC WITH -1,,-1 + MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-2 + MOVMS 1,2 ;*MOVMS SHOULD PLACE 0,,2 INTO E + ;AND SHOULD PLACE 0,,2 INTO THE AC + CAIE 1,2 ;PASS IF C(AC)=0,,2 + STOP + CAIE 2,2 ;PASS IF C(E)=0,,2 + STOP + +;********** +SUBTTL TEST OF MSCL ADD/SUB INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT SUBI SUBTRACTS THE WORD 0,,E FROM C(AC) +;AND PLACES THE RESULT INTO THE AC. IN THIS CASE, C(AC)=70 AND +;E=0,,2. HENCE, THE RESULT IN THE AC SHOULD BE 66. + +C51000: MOVEI 1,70 ;PRELOAD AC WITH 70 + SUBI 1,2 ;*SUBI SHOULD PLACE 66 INTO AC + CAIE 1,66 ;PASS IF C(AC)=66 + STOP + +;********** + +;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE, +;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND +;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY. + +C51100: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH 0,,37 + SUBM 1,2 ;*SUBM SHOULD PLACE + ;0,,41 INTO E AND NOT CHANGE C(AC) + CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED + STOP + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + +;********** +;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE, +;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND +;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY. + +C51101: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH 0,,37 + MOVEM 2,E51101 + SUBM 1,E51101 ;*SUBM SHOULD PLACE + ;0,,41 INTO E AND NOT CHANGE C(AC) + CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED + STOP + MOVE 2,E51101 + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + + SKIPA ;GO TO NEXT TEST +E51101: 0 ;TEST WORD MEMORY + +;********** +;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE, +;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH +;AC AND E SHOULD BE 0,,41. + +C51200: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH O,,37 + SUBB 1,2 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E + CAIE 1,41 ;PASS IF C(AC)=0,,41 + STOP + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + +;********** + +;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND +;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE, +;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH +;AC AND E SHOULD BE 0,,41. + +C51201: MOVEI 1,100 ;PRELOAD AC WITH 0,,100 + MOVEI 2,37 ;PRELOAD E WITH O,,37 + MOVEM 2,E51201 + SUBB 1,E51201 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E + CAIE 1,41 ;PASS IF C(AC)=0,,41 + STOP + MOVE 2,E51201 + CAIE 2,41 ;PASS IF C(E)=0,,41 + STOP + + SKIPA ;GO TO NEXT TEST +E51201: 0 ;TEST WORD MEMORY + +;********** +SUBTTL TEST OF MSCL CAIX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E. +;IN THIS CASE, C(AC)=0,,1 AND E=0,,2 +;HENCE, CAIL SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIL SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51300: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E. +;IN THIS CASE, C(AC)=0,,2 AND E=0,,2. +;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51310: MOVEI 1,2 ;PRELOAD AC WITH 0,,2 + CAIL 1,2 ;*CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIL DOES NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E +;IN THIS CASE, C(AC)=0,,3 AND E=0,,2 +;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51320: MOVEI 1,3 ;PRELOAD AC WITH 0,,3 + CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIL DOES NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=-1,,-1 AND E=0 +;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION +;IF CAILE SKIPS THE NEXT INSTRUCTION, THE TEST PASSES + +C51400: SETO 1, ;PRELOAD AC WITH -1,,-1 + CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=0 AND E=0 +;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAILE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51410: SETZ 1, ;PRELOAD AC WITH 0 + CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION. + STOP + +;********** + +;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=0,,1 AND E=0 +;HENCE, CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAILE DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES + +C51420: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + CAILE 1,0 ;*CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAILE DOES NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS +;SKIPS THE NEXT INSTRUCTION +;IN THIS CASE, C(AC)=-1,,-1 AND E=0 +;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION +;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51500: SETO 1, ;PRELOAD AC WITH -1,,-1 + CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS +;SKIPS THE NEXT INSTRUCTION +;IN THIS CASE, C(AC)=0 AND E=0 +;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51510: SETZ 1, ;PRELOAD AC WITH 0 + CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS +;SKIPS THE NEXT INSTRUCTION +;IN THIS CASE, C(AC)=0,,1 AND E=0 +;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51520: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E. +;IN THIS CASE, C(AC)=0,,5 AND E=0,,6 +;HENCE, CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIGE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + +C51600: MOVEI 2,5 ;PRELOAD AC WITH 0,,5 + CAIGE 2,6 ;*CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIGE DOES NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E +;IN THIS CASE, C(AC)=0,,6 AND E=0,,6 +;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51610: MOVEI 2,6 ;PRELOAD AC WITH 0,,6 + CAIGE ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E. +;IN THIS CASE, C(AC)=0,,7 AND E=0,,6 +;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51620: MOVEI 2,7 ;PRELOAD AC WITH 0,,7 + CAIGE 2,6 ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIRIES THAT CAIN COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. +;IN THIS CASE, C(AC)=0 AND E=0,,1 +;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C51700: SETZ 6, ;PRELOAD AC WITH 0 + CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. +;IN THIS CASE, C(AC)=0,,1 AND E=0,,1 +;HENCE, CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIN DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + +C51710: MOVE 6,1 ;PRELOAD AC WITH 0,,1 + CAIN 6,1 ;*CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIN SKIPS + STOP + +;********** +;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E. +;IN THIS CASE, C(AC)=0,,2 AND E=0,,1 +;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C51720: MOVEI 6,2 ;PRELOAD AC WITH + CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. +;IN THIS CASE, C(AC)=0,,2 AND E=0,,3. +;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES + +C52000: MOVEI 11,2 ;PRELOAD AC WITH 0,,2 + CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIG DID NOT SKIP + STOP + +;********** +;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. +;IN THIS CASE, C(AC)=0,,3 AND E=0,,3. +;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES. + +C52010: MOVEI 11,3 ;PRELOAD AC WITH 0,,3 + CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAIG DID NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E. +;IN THIS CASE, C(AC)=0,,4 AND E=0,,3. +;HENCE, CAIG SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAIG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52020: MOVEI 11,4 ;PRELOAD AC WITH 0,,4 + CAIG 11,3 ;*CAIG SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +SUBTTL TEST OF MSCL CAMX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAT OR EQUAL TO C(E). +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=0 +;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52100: SETO 1, ;PRELOAD AC WITH -1,,-1 + SETZ 2, ;PRELOAD E WITH 0 + CAMLE 1,2 ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** + +;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E). +;IN THIS CASE, C(AC)=0 AND C(E)=0 +;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES + +C52110: SETZ 1, ;CLEAR AC + CAMLE 1,[0] ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E). +;IN THIS CASE, C(AC)=0,,1 AND C(E)=0 +;HENCE, CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAMLE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52120: MOVEI 1,1 ;PRELOAD AC WITH 0,,1 + SETZ 2, ;PRELOAD E WITH 0 + CAMLE 1,2 ;*CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAMLE DOES NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=-1,,-2 AND C(E)=-1,,-1. +;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2 + CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. + SKIPA ;PASS IF CAMG DOES NOT SKIP + STOP +;********** + +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-2. +;HENCE, CAMG SHOULD SKIP THE NEXT INSTRUCTION. + +C52205: HRROI 10,-1 ;PRELOAD AC WITH -1,,-1 + CAMG 10,[-1,,-2] ;*CAMG SHOULD SKIP THE NEXT INSTRUCTION. + STOP +;********** +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-1. +;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION. +;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES. +C52210: SETO 10, ;PRELOAD AC WITH -1,,-1. + CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION + SKIPA ;PASS IF CAMG DOES NOT SKIP + STOP + +;********** + +;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND +;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E). +;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-1. +;HENCE, CAMG SHOULD SKIP THE NEXT INSTRUCTION. +;IF CAMG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES. + +C52220: SETZ 10, ;PRELOAD AC WITH 0 + CAMG 10,[-1,,-1] ;*CAMG SHOULD SKIP THE NEXT INSTRUCTION + STOP + +;********** +SUBTTL TEST OF MSCL JUMPX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND +;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR +;EQUAL TO 0. IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPLE SHOULD JUMP. + +C52300: SETO 17, ;PRELOAD AC WITH -1,,-1 + JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP + STOP + +;********** + +;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND +;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR +;EQUAL TO 0. IN THIS CASE, C(AC)=0. HENCE, JUMPLE SHOULD JUMP. + +C52310: SETZ 17, ;PRELOAD AC WITH 0 + JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP + STOP + +;********** +;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND JUMPS +;TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO +;0. IN THIS CASE, C(AC)=0,,1. HENCE, JUMPLE SHOULD NOT JUMP. + +C52320: MOVEI 17,1 ;PRELOAD AC WITH 0,,1 + JUMP 17,.+2 ;*JUMPLE SHOULD NOT JUMP + SKIPA ;PASS IF JUMPLE DOES NOT JUMP + STOP + +;********** + +;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO +;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPGE SHOULD NOT JUMP. + +C52400: SETO 16, ;PRELOAD AC WITH -1,,-1 + JUMPGE 16,.+2 ;*JUMPGE SHOULD NOT JUMP + SKIPA ;PASS IF JUMPGE DOES NOT JUMP + STOP + +;********** +;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH O AND JUMPS TO +;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=0. HENCE, JUMPGE SHOULD JUMP. + +C52410: SETZ 16, ;PRELOAD AC WITH 0 + JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP + STOP + +;********** + +;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO +;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=0,,1. HENCE, JUMPGE SHOULD JUMP. + +C52420: MOVEI 16,1 ;PRELOAD AC WITH 0,,1 + JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP + STOP + +;********** +SUBTTL TEST OF MSCL AOJX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND PLACES +;THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED +;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) +;IS LESS THAN 0. IN THIS CASE, C(AC)=-1,,-2 BEFORE INCREMENTING. +;HENCE, AOJL SHOULD JUMP. + +C52500: HRROI 15,-2 ;PRELOAD AC WITH -1,,-2 + AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) AND JUMP + STOP + CAME 15,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJ SHOULD NOT JUMP + +C52510: SETO 15, ;PRELOAD AC WITH + AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJL DID NOT JUMP + STOP + CAIE 15,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJL SHOULD NOT JUMP + +C52520: SETZ 15, ;PRELOAD AC WITH 0 + AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJL DID NOT JUMP + STOP + CAIE 15,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0 +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJE SHOULD NOT JUMP + +C52600: HRROI 14,-2 ;PRELOAD AC WITH -1,,-2 + AOJE 14,.+2 ;*AOJE SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJE DID NOT JUMP + STOP + CAME 14,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING. +;HENCE, AOJE SHOULD JUMP + +C52610: SETO 14, ;PRELOAD AC WITH -1,,-1 + AOJE 14,.+2 ;*AOJ SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 14,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJE SHOULD NOT JUMP + +C52620: SETZ 14, ;PRELOAD AC WITH 0 + AOJE 14,.+2 ;*AOJE SHOULD ADD 0,11 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJE DID NOT JUMP + STOP + CAIE 14,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO TLE$EC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJLE SHOULD + +C52700: HRROI 13,-2 ;PRELOAD AC WITH -1,,-2 + AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAME 13,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJLE SHOULD JUMP. + +C52710: SETO 13, ;PRELOAD AC WITH -1,,-1 + AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 13,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC) IS 0 +;HENCE, AOJLE SHOULD NOT JUMP. + +C52720: SETZ 13, ;PRELOAD AC WITH 0 + AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJLE DID NOT JUMP + STOP + CAIE 13,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E. +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJA SHOULD JUMP + +C53000: HRROI 12,-2 ;PRELOAD AC WITH -1,,-2 + AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAME 12,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJA SHOULD JUMP + +C53010: SETO 12, ;PRELOAD AC WITH -1,,-1 + AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 12,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJA SHOULD JUMP + +C53020: SETZ 12, ;PRELOAD AC WITH 0 + AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 12,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJGE SHOULD NOT JUMP + +C53100: HRROI 11,-2 ;PRELOAD AC WITH -1,,-2 + AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJGE DID NOT JUMP + STOP + CAME 11,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJ SHOULD JUMP + +C53110: SETO 11, ;PRELOAD AC WITH -1,,-1 + AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 11,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJGE SHOULD JUMP + +C53120: SETZ 11, ;PRELOAD AC WITH 0 + AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 11,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING +;HENCE, AOJN SHOULD JUMP + +C53200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2 + AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAME 10,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJ SHOULD NOT JUMP. + +C53210: SETO 10, ;PRELOAD AC WITH -1,,-1 + AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJN DID NOT JUMP + STOP + CAIE 10,0 ;PASS IF C(AC) INCREMENTED CORRRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJN SHOULD JUMP. + +C53220: SETZ 10, ;PRELOAD AC WITH 0 + AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 10,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE REAULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0 +;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INC +;HENCE, AOJG SHOULD NOT JUMP + +C53300: HRROI 7,-2 ;PRELOAD AC WITH -1,,-2 + AOJG 7,.+2 ;*AOJG SHOULD ADD 0,11 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJG DID NOT JUMP + STOP + CAME 7,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING +;HENCE, AOJG SHOULD NOT JUMP. + +C53310: SETO 7, ;PRELOAD AC WITH -1,,-1 + AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF AOJG DID NOT JUMP + STOP + CAIE 7,0 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING +;HENCE, AOJG SHOULD JUMP + +C53320: SETZ 7, ;PRELOAD AC WITH 0 + AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC) + ;AND JUMP + STOP + CAIE 7,1 ;PASS IF C(AC) INCREMENTED CORRECTLY + STOP + +;********** +SUBTTL TEST OF MSCL AOSX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53400: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 7,-2 ;PRELOAD E WITH -1,,-2 + AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53401: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 7,-2 ;PRELOAD E WITH -1,,-2 + MOVEM 7,E53401 + AOSL 6,E53401 ;*AOSL SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + MOVE 7,E53401 + CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + + SKIPA ;GO TO NEXT TEST +E53401: 0 ;TEST WORD MEMORY + +;********** +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) ISLESS THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C53410: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 7, ;PRELOAD E WITH -1,,-1 + AOSL 6,7 ;*AOSL SHOULD ADD 00,1 TO C(E) + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSL DID NOT SKIP + STOP + CAME 7,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C53420: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 7, ;PRELOAD E WITH 0 + AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E). + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSL DID NOT SKIP + STOP + CAME 7,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53500: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 6,-2 ;PRELOAD E WITH -1,,-2 + AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSE DID NOT SKIP + STOP + CAME 6,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C53510: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 6, ;PRELOAD E WITH -1,,-1 + AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 6,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(AC)=0 +;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C53520: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 6, ;PRELOAD E WITH 0 + AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSE DID NOT SKIP + STOP + CAME 6,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53600: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 5,-2 ;PRELOAD E WITH -1,,-2 + AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP ZERO + STOP + CAME 5,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C53610: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETOM 5, ;PRELOAD E WITH -1,,-1 + AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E) + ;UPDATE AC AND SKIP + STOP + CAME 5,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSLE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C53620: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 5 ;PRELOAD E WITH 0 + AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E) + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSLE DID NOT SKIP + STOP + CAME 5,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 4,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C53700: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 4,-2 ;PRELOAD E WITH -1,,-2 + AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY + +C53710: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 4, ;PRELOAD E WITH -1,,-1 + AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 3,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOS INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C53720: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 4, ;PRELOAD E WITH 0 + AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSGE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY + +C54000: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 3,-2 ;PRELOAD E WITH -1,,-2 + AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSGE DID NOT SKIP + STOP + CAME 3,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 2,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY + +C54010: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 3, ;PRELOAD E WITH 0 + AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 3,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 2,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C54020: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 3, ;PRELOAD E WITH 0 + AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 3,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 2,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY + +C54100: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 2,-2 ;PRELOAD E WITH -1,,-2 + AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 2,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 1,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY + +C54110: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 2, ;PRELOAD E WITH -1,,-1 + AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF AOSN DID NOT SKIP + STOP + CAME 2,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 1,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSN SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C54120: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 2, ;PRELOAD E WITH 0 + AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E), + ;UPDATE AC AND SKIP + STOP + CAME 2,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 1,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEST INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-2 +;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1 +;RESPECTIVELY + +C54200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + HRROI 1,-2 ;PRELOAD E WITH -1,,-2 + AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + ;AND NOT SKIP + SKIPA ;PASS IF AOSG DID NOT SKIP + STOP + CAME 1,[-1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** + +;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-1 +;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY + +C54210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETO 1, ;PRELOAD E WITH -1,,-1 + AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + ;AND NOT SKIP + SKIPA ;PASS IF AOSG DID NOT SKIP + STOP + CAME 1,[0] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;*********** +;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, AOSG SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1 +;RESPECTIVELY + +C54220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + SETZ 1, ;PRELOAD E WITH 0 + AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E), + ;AND SKIP + STOP + CAME 1,[1] ;PASS IF E INCREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** +SUBTTL TEST OF MSCL SOJX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESTULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0. +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJL +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54300: MOVEI 17,0 ;PRELOAD AC WITH 0 + SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 17,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;*********** + +;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0. +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJL +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + +C54310: MOVEI 17,1 ;PRELOAD AC WITH 0,,1 + SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC) + SKIPA ;PASS IF SOJL DID NOT JUMP + STOP + CAME 17,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN 0 +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJ +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54320: MOVEI 17,2 ;PRELOAD AC WITH 0,,2 + SOJL 17,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJL DID NOT JUMP + STOP + CAME 17,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54400: MOVEI 16,0 ;PRELOAD AC WITH 0 + SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJE DID NOT JUMP + STOP + CAME 16,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0 +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJ +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54410: MOVEI 16,1 ;PRELOAD AC WITH 0,,1 + SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 16,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS EQUAL TO 0. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54420: MOVEI 16,2 ;PRELOAD AC WITH 0,,2 + SOJE 16,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJE DID NOT JUMP + STOP + CAME 16,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJLE +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54500: MOVEI 15,0 ;PRELOAD AC WITH 0 + SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 15,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUALTO 0. +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJLE +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54510: MOVEI 15,1 ;PRELOAD AC WITH 0,,1 + SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 15,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJLE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54520: MOVEI 15,2 ;PRELOAD AC WITH 0,,2 + SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF SOJLE DID NOT JUMP + STOP + CAME 15,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJA +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54600: MOVEI 14,0 ;PRELOAD AC WITH 0 + SOJA 14,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 14,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJA +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54610: MOVEI 14,1 ;PRELOAD AC WITH 0,,1 + SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 14,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION +;SPECIFIED BY E +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJA +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1 + +C54620: MOVEI 14,2 ;PRELOAD AC WITH 0,,2 + SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 14,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJGE +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1 + +C54700: MOVEI 13,0 ;PRELOAD A C WITH 0 + SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP + SKIPA ;PASS IF SOJGE DID NOT JUMP + STOP + CAME 13,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0 +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJGE +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0 + +C54710: MOVEI 13,1 ;PRELOAD AC WITH 0,,1 + SOJGE 13,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP + STOP + CAME 13,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIRIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND PLACES THE +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED +;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC IS +;GREATER THAN OR EQUAL TO 0. IN THIS CASE, C(AC = 0,,2 BEFORE +;DECREMENTING. HENCE, SOJGE SHOULD JUMP AND THE RESULT IN THE AC SHOULD +;BE 0,,1. + +C54720: MOVEI 13,2 ;PRELOAD AC WITH 0,,2 + SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT0,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 13,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NON-ZERO. +;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE,SOJN +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1. + +C55000: MOVEI 12,0 ;PRELOAD AC WITH 0 + SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 12,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIRIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED +;BY E IF C(AC) IS NON-ZERO. +;IN THIS CASE, C(AC) = 0,,1 BEFORE DECREMENTING. HENCE, SOJN +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + +C55010: MOVEI 12,1 ;PRELOAD AC WITH 0,,1 + SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJN DID NOT JUMP + STOP + CAME 12,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS NON-ZERO. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJN +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1. + +C55020: MOVEI 12,2 ;PRELOAD AC WITH 0,,2 + SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 12,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC) = 0 BEFORE DECREMENTING. HENCE, SOJG +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1. + +C55100: MOVEI 11,0 ;PRELOAD AC WITH 0 + SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJG DID NOT JUMP + STOP + CAME 11,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +;THIS TEST VERIRIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJG +;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0. + +C55110: MOVEI 11,1 ;PRELOAD AC WITH 0,,1 + SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC) + ;AND NOT JUMP. + SKIPA ;PASS IF SOJG DID NOT JUMP + STOP + CAME 11,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** + +;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND +;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS +;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION +;SPECIFIED BY E IF C(AC) IS GREATER THAN 0. +;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJG +;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1. + +C55120: MOVEI 11,2 ;PRELOAD AC WITH 0,,2 + SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT O,,1 FROM C(AC) + ;AND JUMP. + STOP + CAME 11,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY + STOP + +;********** +SUBTTL TEST OF MSCL SOSX INSTRUCTIONS + +;********** + +;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1 +;RESPECTIVELY. + +C55200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,0 ;PRELOAD E WITH 0 + SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E) + ;AND SKIP + STOP + CAME 1,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY. + +C55210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,1 ;PRELOAD E WITH 0,,1 + SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + ;AND NOT SKIP. + SKIPA ;PASS IF SOSL DID NOT SKIP + STOP + CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + +;********** +;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY. + +C55211: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,1 ;PRELOAD E WITH 0,,1 + MOVEM 1,E55211 + SOSL 0,E55211 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + ;AND NOT SKIP. + SKIPA ;PASS IF SOSL DID NOT SKIP + STOP + MOVE 1,E55211 + CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED + STOP + + SKIPA ;GO TO NEXT TEST +E55211: 0 ;TEST WORD MEMORY + +;********** +;THIS TEST VERIFIES THAT SOS DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E) 0,,2 +;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1 +;RESPECTIVELY. + +C55220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 1,2 ;PRELOAD E WITH 0,,2 + SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E), + ;AND NOT SKIP + + SKIPA ;PASS IF SOSL DID NOT SKIP + STOP + CAME 1,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 0,[707070,,707070] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55300: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 11,0 ;PRELOAD E WITH 0 + SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + + SKIPA ;PASS IF SOSE DID NOT SKIP + STOP + CAME 11,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 10,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0 +;RESPECTIVELY. + +C55310: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 11,1 ;PRELOAD E WITH 0,,1 + SOSE 10,11 ;*SOS SHOULD SUBTRACT 0,,1 FROM C(E) + ;UPDATE AC AND SKIP + STOP + CAME 11,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 10,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,11 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55320: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 11,2 ;PRELOAD E WITH 0,,2 + SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + + SKIPA ;PASS IF SOSE DID NOT SKIP + STOP + CAME 11,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 10,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55400: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 10,0 ;PRELOAD E WITH 0 + SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 10,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 7,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=7, C(AC)=070707,,070707 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55410: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 10,1 ;PRELOAD E WITH 0,,1 + SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 10,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 7,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSLE SHOULD NOT SKIP; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55420: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 10,2 ;PRELOAD E WITH 0,,2 + SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSLE DID NOT SKIP + STOP + CAME 10,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 7,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55500: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 7,0 ;PRELOAD E WITH 0 + SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THEAC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSA SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55510: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 7,1 ;PRELOAD E WITH 0,,1 + SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS +;THE NEXT INSTRUCTION. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55520: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 7,2 ;PRELOAD E WITH 0,,2 + SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 7,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSGE SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55600: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 6,0 ;PRELOAD E WITH 0 + SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSGE DID NOT SKIP + STOP + CAME 6,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE +;FINAL RESULTS IN ACAND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55610: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 6,1 ;PRELOAD E WITH 0,,1 + SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 6,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY. + +C55620: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 6,2 ;PRELOAD E WITH 0,,2 + SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 6,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES SOSN DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C55700: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 5,0 ;PRELOAD E WITH 0 + SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 5,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC +;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSN SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C55710: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 5,1 ;PRELOAD E WITH 0,,1 + SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSN DID NOT SKIP + STOP + CAME 5,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;INtTHIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1 +;RESPECTIVELY + +C55720: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 5,2 ;PRELOAD E WITH 0,,2 + SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 5,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 4,[1] ;PASS IF ACWAS UPDATED IF AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIESTHAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0 +;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1 +;RESPECTIVELY. + +C56000: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 4,0 ;PRELOAD E WITH 0 + SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSG DID NOT SKIP + STOP + CAME 4,[-1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + +;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0. +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,1 +;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0 +;RESPECTIVELY. + +C56010: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 4,1 ;PRELOAD E WITH 0,,1 + SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND NOT SKIP + SKIPA ;PASS IF SOSG DID NOT SKIP + STOP + CAME 4,[0] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 3,[0] ;PASS IF AC WAS UPDATED IS AC NON-ZERO + STOP + +;********** +;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES +;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS +;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0 +;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC. +;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,2 +;BEFORE INCREMENTING. HENCE, SOSG SHOULD SKIP ; AND THE +;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 011, +;RESPECTIVELY. + +C56020: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070 + MOVEI 4,2 ;PRELOAD E WITH 0,,2 + SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E), + ;UPDATE AC AND SKIP + STOP + CAME 4,[1] ;PASS IF E DECREMENTED CORRECTLY + STOP + CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO + STOP + +;********** + + JRST BEGEND diff --git a/apps/pdp10/diags/klad/dakae/README.md b/apps/pdp10/diags/klad/dakae/README.md new file mode 100644 index 000000000..be22678fe --- /dev/null +++ b/apps/pdp10/diags/klad/dakae/README.md @@ -0,0 +1,286 @@ +--- +layout: page +title: PDP-10 KA10 Basic Instruction Diagnostic #5 +permalink: /apps/pdp10/diags/klad/dakae/ +machines: + - id: testka10 + type: pdp10 + config: /devices/pdp10/machine/ka10/test/debugger/machine.xml + debugger: true + commands: a 30724 DAKAE.MAC +--- + +PDP-10 KA10 Basic Instruction Diagnostic #5 +------------------------------------------- + +The *PDP-10 KA10 Basic Instruction Diagnostic #5* (MAINDEC-10-DAKAE) test code has been extracted from +[DAKAEM.MAC](DAKAEM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaem.mac.html)] +for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below. + +Resources for this test include: + +- [Instructions](#dakaetxt) +- [History](#dakaehst) +- [Source Code](#dakaemac) +- [MACRO-10 Listing](DAKAE.LST.txt) +- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakae/DAKAE.SEQ.txt) + +{% include machine.html id="testka10" %} + +The Debugger's assemble ("a") command can be used to test the new built-in +[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset +of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language. +This command: + + a 30724 DAKAE.MAC + +will automatically read the [DAKAE.MAC](DAKAE.MAC.txt) source file (a slightly modified copy of [DAKAEM.MAC](DAKAEM.MAC.txt)), +assemble it, and then load the binary output at the specified address. + +--- + +DAKAE.TXT +--------- + +``` + IDENTIFICATION + -------------- + + PRODUCT CODE: AH-6859C-DD + + DIAGNOSTIC CODE: DAKAE + + PRODUCT NAME: DAKAEC0 DECSYSTEM10 PDP-10 KA10 BASIC + INSTRUCTION DIAGNOSTIC (5) + + VERSION: 0.3 + + DATE RELEASED: JANUARY 1979 + + MAINTAINED BY: DIAGNOSTIC ENGINEERING + + AUTHOR: BILL SCORZELLI + + COPYRIGHT (C) 1967, 1979 + + DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. + + THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A + SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLUSION + OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY OTHER + COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE + TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO + AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE + SOFTWARE SHALL AT ALL TIMES REMAIN IN DIGITAL EQUIPMENT + CORPORATION. + + THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT + NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL + EQUIPMENT CORPORATION. + + DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE + USE OR RELIABILITY OF ITS SOFTWARE IN EQUIPMENT WHICH IS NOT + SUPPLIED BY DIGITAL EQUIPMENT CORPORATION. + MAINDEC-10-DAKAE.TXT + PAGE 2 + + + TABLE OF CONTENTS + ----------------- + +1.0 ABSTRACT + +2.0 REQUIREMENTS + +2.1 EQUIPMENT + +2.2 STORAGE + +2.3 PRELIMINARY PROGRAMS + +3.0 PROGRAM PROCEDURES + +3.1 LOADING PROCEDURE + +3.2 STARTING PROCEDURE + +3.3 OPERATING PROCEDURE + +4.0 ERRORS + +5.0 ITERATION COUNTER + +6.0 CYCLE TIME + +7.0 OPERATIONAL VARIATIONS + +8.0 MISCELLANEOUS + +9.0 LISTING + MAINDEC-10-DAKAE.TXT + PAGE 3 + + +1.0 ABSTRACT + + THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE + FIFTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS. + THE DIAGNOSTIC TESTS THE FWT, ADD/SUB, PC CHANGE + AND COMPARE INSTRUCTIONS. + +2.0 REQUIREMENTS + +2.1 EQUIPMENT + + A PDP-10 KA10 WITH A MINIMUM OF 32K OF MEMORY + + PAPER TAPE READER + DECTAPE (OPTIONAL) + CONSOLE TELETYPE + +2.2 STORAGE + + THE PROGRAM RUNS WITHIN 32K OF MEMORY. + +2.3 PRELIMINARY PROGRAMS + + CONSOLE FUNCTIONS WORKING PROPERLY + PAPER-TAPE OR DECTAPE READ-IN WORKING PROPERLY + PREVIOUS PROCESSOR DIAGNOSTICS + MAINDEC-10-DAKAE.TXT + PAGE 4 + + +3.0 PROGRAM PROCEDURES + +3.1 LOADING PROCEDURE + + PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104) + DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320) + +3.2 STARTING PROCEDURE + + STAND-ALONE STARTING ADDRESS IS 30000. + + IF THE DIAGNOSTIC FAILS TO START CORRECTLY TRY STARTING AT THE + FIRST TEST INSTEAD OF AT THE BEGINNING OF THE CONTROL SEQUENCE. + (SEE LISTING). + +3.3 OPERATING PROCEDURE + + ONCE STARTED THE PROGRAM WILL CYCLE CONTINUALLY UNTIL STOPPED + OR AN ERROR OCCURS. + +4.0 ERRORS + + ERRORS ARE IN THE FORM OF HALT INSTRUCTIONS. THE LISTING + SHOULD BE CONSULTED TO DETERMINE THE CAUSE OF THE ERROR. A + NO OPERATION (JUMP) INSTRUCTION FOLLOWS EACH HALT. THIS + MAY BE USEFUL IN CONSTRUCTING A SCOPE LOOP TO CYCLE ON THE + FAILING INSTRUCTION. + +5.0 ITERATION COUNTER + + THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEM- + ORY INDICATORS (MI). THIS COUNT IS A DECREMENTING COUNT AND + INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION. + +6.0 CYCLE TIME + + THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND + IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS, ETC. + + MAINDEC-10-DAKAE.TXT + PAGE 5 + + +7.0 OPERATIONAL VARIATIONS + + A. DIAGNOSTIC MONITOR + + THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PRO- + VIDE RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PRO- + VIDE A QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR + AREA OF THE PROCESSOR. CERTAIN PROCEDURES ARE USED WHEN + THE PROGRAM IS USED IN THIS MANNER. THEY ARE: + + 1. THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PRO- + GRAM AND STARTS IT AT LOCATION 30002. + + 2. MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MON- + ITOR CONTROL FLAG WORD. + + B. USER MODE + + THE PROGRAM WILL OPERATE IN USER MODE AND AS SUCH PROVIDES + ASSURANCE THAT THE PROCESSOR IS PERFORMING ALL FUNCTIONS + CORRECTLY. USER MODE STARTING ADDRESS IS 30000. + + C. SYSTEM EXERCISER + + STARTING ADDRESS IS 30003. NO DATA SWITCHES ARE USED BY + THIS PROGRAM. + +8.0 MISCELLANEOUS + + NONE + +9.0 LISTING +``` + +DAKAE.HST +--------- + + THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAE + + ************************************************************************ + + ORIGINAL VERSION: 0.1 + + ORIGINAL AUTHOR: RICHARD MALISKA + + ORIGINAL RELEASE: 16-MAR-72 + + ************************************************************************ + + PRODUCT CODE: MAINDEC-10-DAKAE + + PRODUCT NAME: BASIC INSTRUCTION DIAGNOSTIC #5 + + DATE RELEASED: JANUARY 1977 + + VERSION: 0.2 + + UPDATE AUTHOR: JOHN R. KIRCHOFF + + CHANGES MADE: + + 1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE. + ************************************************************************ + + PRODUCT CODE: MAINDEC-10-DAKAE + + PRODUCT NAME: BASIC INSTRUCTION DIAGNOSTIC #5 + + DATE RELEASED: JANUARY 1979 + + VERSION: 0.3 + + UPDATE AUTHOR: BILL SCORZELLI + + CHANGES MADE: + + 1. THE COMPARE INSTRUCTION TESTS DID NOT CHECK THE COMPARE OF 2 + NEGATIVE NUMBERS WITH THE CONTENTS OF THE (AC) BEING LARGER + THAN THE CONTENTS OF (E). ADDED TEST C52205. + + ************************************************************************ + +DAKAE.MAC +--------- + +[[Download](DAKAE.MAC.txt)] + +{% highlight text %} +{% include_relative DAKAE.MAC.txt %} +{% endhighlight %} diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index fd8c1d110..3ccbb7d6b 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -720,9 +720,9 @@ function Wx(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Wx(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&dy(a,null,d)}return d} +function cy(a,b,c){var d=void 0;a.Ha=null;if(b){"{"!=a.qa[0]&&(b=b.split(a.qa[0]).join("{").split(a.qa[1]).join("}"));b=ay(a,b,'"',7,5,c);if(!b)return d;b=ay(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&dy(a,null,d)}return d} function ey(a,b){var c,d=a.qa[0],e=a.qa[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=cy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?by(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.ha}if(null== e)break;b=b.replace(d[0],e.toString())}return b}function Zx(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.gh(b),0<=f?f=a.hh(f):(f=a.ga[b],null==f&&(f=oa(b,1>>=2}f=Wx(f)}else d||a.P("invalid "+(c?c:"value")+": "+b);else d||a.P("missing "+(c||"value"));return f} function dy(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.F?by(a,c,32,8,1)+" "+c+".":by(a,c,32,16,1)+" "+by(a,c,32,8,1)+" "+by(a,c,32,2,8)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.P((null!=b?b+": ":"")+d);return e}function fy(a,b){if(b)return dy(a,b,a.ga[b]);var c=0;for(b in a.ga)dy(a,b,a.ga[b]),c++;return 0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/; - sExp = sExp.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/, "$1$2^_"); + var regExp = /(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/; + sExp = sExp.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/, "$1$2^_").replace(/\s+/g, ' '); var asValues = sExp.split(regExp); value = this.parseArray(asValues, 0, asValues.length, this.nBase, fQuiet); if (value !== undefined && fQuiet === false) { From 776e225920b280b236f1069116cb7477a12fabd0 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 09:27:32 -0700 Subject: [PATCH 03/27] Fixed parsing of expressions with spaces --- versions/pc8080/1.34.3/pc8080-dbg.js | 4 +- versions/pcx86/1.34.3/pcx86-dbg.js | 4 +- versions/pdpjs/1.34.3/pdp10-dbg.js | 174 +++++++++++++-------------- versions/pdpjs/1.34.3/pdp10.js | 78 ++++++------ versions/pdpjs/1.34.3/pdp11-dbg.js | 4 +- 5 files changed, 132 insertions(+), 132 deletions(-) diff --git a/versions/pc8080/1.34.3/pc8080-dbg.js b/versions/pc8080/1.34.3/pc8080-dbg.js index c20e4c685..0d801fa5c 100644 --- a/versions/pc8080/1.34.3/pc8080-dbg.js +++ b/versions/pc8080/1.34.3/pc8080-dbg.js @@ -202,9 +202,9 @@ function bg(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=bg(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=dg(a,b,0,b.length,a.w,c);void 0!==d&&!1===c&&jg(a,null,d)}return d} +function ig(a,b,c){var d=void 0;a.oa=null;if(b){"{"!=a.W[0]&&(b=b.split(a.W[0]).join("{").split(a.W[1]).join("}"));b=gg(a,b,'"',7,5,c);if(!b)return d;b=gg(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=dg(a,b,0,b.length,a.w,c);void 0!==d&&!1===c&&jg(a,null,d)}return d} function kg(a,b){var c,d=a.W[0],e=a.W[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=ig(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?hg(a,g):"undefined")}if(a.fa.length)for(d=a.fa[0],e=a.fa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=b.replace("["+c[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e= a.O-a.ba}if(null==e)break;b=b.replace(d[0],e.toString())}return b}function eg(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.Kb(b),0<=f?f=a.Lb(f):(f=a.T[b],null==f&&(f=ma(b,1>>=2}f=bg(f)}else d||a.i("invalid "+(c?c:"value")+": "+b);else d||a.i("missing "+(c||"value"));return f} function jg(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.w?hg(a,c,32,8,1)+" "+c+".":hg(a,c,32,16,1)+" "+hg(a,c,32,8,1)+" "+hg(a,c,32,2,8)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.i((null!=b?b+": ":"")+d);return e}function lg(a,b){if(b)return jg(a,b,a.T[b]);var c=0;for(b in a.T)jg(a,b,a.T[b]),c++;return 0>>0;else if(32>b)d=a&(1<a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Wx(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&dy(a,null,d)}return d} +function cy(a,b,c){var d=void 0;a.Ha=null;if(b){"{"!=a.qa[0]&&(b=b.split(a.qa[0]).join("{").split(a.qa[1]).join("}"));b=ay(a,b,'"',7,5,c);if(!b)return d;b=ay(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&dy(a,null,d)}return d} function ey(a,b){var c,d=a.qa[0],e=a.qa[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=cy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?by(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.ha}if(null== e)break;b=b.replace(d[0],e.toString())}return b}function Zx(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.gh(b),0<=f?f=a.hh(f):(f=a.ga[b],null==f&&(f=oa(b,1>>=2}f=Wx(f)}else d||a.P("invalid "+(c?c:"value")+": "+b);else d||a.P("missing "+(c||"value"));return f} function dy(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.F?by(a,c,32,8,1)+" "+c+".":by(a,c,32,16,1)+" "+by(a,c,32,8,1)+" "+by(a,c,32,2,8)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.P((null!=b?b+": ":"")+d);return e}function fy(a,b){if(b)return dy(a,b,a.ga[b]);var c=0;for(b in a.ga)dy(a,b,a.ga[b]),c++;return 0a?-b:b}});la("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); @@ -40,7 +40,7 @@ function va(a,b){b?11=Math.abs(a)?5:11;return ta(a,10,b)}func function za(a){return a.replace(/[&<>"']/g,function(a){return Aa[a]})}function Da(a,b){return(a+" ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, -f,e))});if(b&&"object"==typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} +f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} function Ia(a,b){var c,d={ca:null,W:null,wa:null,va:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.wa=g.load;d.va=g.exec;if(e=g.bytes)d.ca=e;else if(e=g.words)for(d.ca=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ca=Array(4*e.length),f=c=0;c>8&255,d.ca[f++]=e[c]>>16&255,d.ca[f++]=e[c]>>24&255;else(e=g.data)?d.Na=e:d.ca=g;d.ca&&(d.ca.length?1==d.ca.length&&(q(d.ca[0]),d=null):(q("Empty resource: "+a),d=null));d.W=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.Za=this.id:(this.$a=this.id.substr(0,a),this.Za=this.id.substr(a+1));this.A={ready:!1,Sa:!1,ob:!1,X:!1,error:!1};this.cb=null;this.A.error=!1;this.aa=c||0;this.D=this.v=this.G=this.H=this.xa=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date} function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.ac,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Sb,toggle:this.lc,reset:this.hc, -set:this.kc};Mb(this)}ka(bc,r);l=bc.prototype;l.reset=function(a){this.stop();a&&dc(this,this.w=0)}; -l.pa=function(a,b,c,d){if(this.H&&this.H.pa(a,b,c,d)||this.v&&this.v.pa(a,b,c,d)||this.D&&this.D.pa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart= -function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.pa.call(this,a,b,c,d)}};l.Ja=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};l.ya=function(a,b){if(!b)if(this.U&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.oa=function(a){return a?this.save():!0};l.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()}; -l.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};l.hc=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])} -l.Sb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};l.kc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};l.lc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.R=b==pc),!0):!1} -function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.bc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};l.cc=function(){};l.Xb=function(a){a||this.v.V()}; -l.Vb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.Xa(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Va+=h.B-e,h.B=e,!0;if(e>=h.B+h.Va){m=h.size-(e-k);m>f&&(m=f);h.Va=e-h.B+m;e=k+16384;f-=m;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,m,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)} -function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.D(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.w(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;dc;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Va+=h.B-e,h.B=e,!0;if(e>=h.B+h.Va){l=h.size-(e-k);l>f&&(l=f);h.Va=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)} +function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.D(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.w(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.ja&&(a.ja+=a.qa,c=!0);0<=a.ka&&a.ka<=fd(a)&&(a.qa=a.ka=-1,bd(a),a.V(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Ea))}} -l.pa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.X)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;c=a.ja&&(a.ja+=a.qa,c=!0);0<=a.ka&&a.ka<=fd(a)&&(a.qa=a.ka=-1,bd(a),a.V(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Ea))}} +m.pa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.X)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.Y/a.Z?b=1:d=!0;a.ea=b;b=a.jb*a.ea;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.R=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.T-=a.N;a.N=0;b&&(a.T=0);return c} -l.ic=function(){if(this.A.O){this.ab>=this.lb&&hd(this,!0);this.la=0;this.Da=ob();if(this.R){var a=this.Da-this.R;a>this.kb&&(this.L+=a,this.L>this.Da&&(this.L=this.Da))}try{do{var b=kd(this,this.A.Ra?1:this.Ga);try{this.Xa(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.la+=b;this.M+=b;vc(this,b);tc(this,b);this.ha-=b;if(0>=this.ha){this.ha+=this.Ga;++this.mb>=nd&&(this.H&&J(this.H,void 0),this.mb=0);break}}while(this.A.O)}catch(e){this.V();this.H&&this.H.stop(ob(),fd(this));zb(this, +m.ic=function(){if(this.A.O){this.ab>=this.lb&&hd(this,!0);this.la=0;this.Da=ob();if(this.R){var a=this.Da-this.R;a>this.kb&&(this.L+=a,this.L>this.Da&&(this.L=this.Da))}try{do{var b=kd(this,this.A.Ra?1:this.Ga);try{this.Xa(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.la+=b;this.M+=b;vc(this,b);tc(this,b);this.ha-=b;if(0>=this.ha){this.ha+=this.Ga;++this.mb>=nd&&(this.H&&J(this.H,void 0),this.mb=0);break}}while(this.A.O)}catch(e){this.V();this.H&&this.H.stop(ob(),fd(this));zb(this, e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Eb;this.R=ob();var c=this.kb;this.la&&(c=Math.round(c*this.la/this.Ga));var c=c-(this.R-this.Da),d=this.R-this.L;d&&(this.Y=Math.round(this.M/(10*d))/100,864E5<=d&&(this.U=0,gd(this)));if(0>c||this.Yc&&(this.L-=c),c=0;this.ab+=this.la;this.R+=c;a(b,c)}}}; -function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.hb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Eb,0)}}l.Xa=function(){return 0};l.V=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"]; -function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Cb=b;this.Ya=+a.addrReset||0;this.Ob=pd.bind(this);this.w=L.bind(this);this.Ba=null;this.ub=[];this.A.complete=!1}ka(od,Yc);l=od.prototype; -l.reset=function(){this.status("Model "+this.Cb);this.A.O&&this.V();this.Ha=this.Ia=this.b=this.K=0;this.i=this.Ca=this.Ya;this.I=this.ta=-1;this.F=this.j=0;this.nb=[0,0];this.ra=[0,0];this.ia=[0,0];this.sa=[0,0];this.Aa=this.i;this.C=0;this.f=this.ec;this.g=this.pc;this.Ba=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};l.Hb=function(){return 0}; -l.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ha,this.Ia,this.i,this.ta,this.I,this.j,this.C,this.Ca,this.Aa,this.Ya]);a.set(1,[]);a.set(2,[this.U,this.ea,this.A.da]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; -l.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ha=b.next().value;this.Ia=b.next().value;this.i=b.next().value;this.ta=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ca=b.next().value;this.Aa=b.next().value;this.Ya=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.da=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};l.pc=function(a,b){var c=this.G;a=this.Aa=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; -l.Xa=function(a){this.A.complete=!0;var b=this.D?sd(this.D)?1:this.A.hb?-1:0:0,c=a?this.A.hb?0:1:-1;this.A.hb=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(td(this.D,this.i,c)){this.V();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ba||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&td(this.D,this.i,c)){this.V();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ha=this.f(this.b):0<=this.ta?(this.K=this.Ia=this.f(this.ta),this.ta=-1):(this.K= +function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.hb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Eb,0)}}m.Xa=function(){return 0};m.V=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"]; +function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Cb=b;this.Ya=+a.addrReset||0;this.Ob=pd.bind(this);this.w=L.bind(this);this.Ba=null;this.ub=[];this.A.complete=!1}ka(od,Yc);m=od.prototype; +m.reset=function(){this.status("Model "+this.Cb);this.A.O&&this.V();this.Ha=this.Ia=this.b=this.K=0;this.i=this.Ca=this.Ya;this.I=this.ta=-1;this.F=this.j=0;this.nb=[0,0];this.ra=[0,0];this.ia=[0,0];this.sa=[0,0];this.Aa=this.i;this.C=0;this.f=this.ec;this.g=this.pc;this.Ba=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Hb=function(){return 0}; +m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ha,this.Ia,this.i,this.ta,this.I,this.j,this.C,this.Ca,this.Aa,this.Ya]);a.set(1,[]);a.set(2,[this.U,this.ea,this.A.da]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; +m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ha=b.next().value;this.Ia=b.next().value;this.i=b.next().value;this.ta=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ca=b.next().value;this.Aa=b.next().value;this.Ya=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.da=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};m.pc=function(a,b){var c=this.G;a=this.Aa=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; +m.Xa=function(a){this.A.complete=!0;var b=this.D?sd(this.D)?1:this.A.hb?-1:0:0,c=a?this.A.hb?0:1:-1;this.A.hb=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(td(this.D,this.i,c)){this.V();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ba||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&td(this.D,this.i,c)){this.V();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ha=this.f(this.b):0<=this.ta?(this.K=this.Ia=this.f(this.ta),this.ta=-1):(this.K= this.Ia=this.f(this.Ca=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ha=this.f(a))&Sb;a=this.K&4194304?-1:this.Ia/Zb|0;0<=a&&this.Ob(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)} function vd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function wd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}} function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function yd(a,b){this.g(b,this.f(this.b))}function zd(a,b){this.g(b,this.b)}function Ad(a,b){this.g(this.b,this.f(b))}function Bd(a,b){this.g(b,0)}function Cd(a,b){this.g(b,B-this.f(b))}function Dd(a,b){this.g(b,B)} @@ -160,52 +160,52 @@ c.W=a.W,null==c.wa&&(c.wa=a.wa),null==c.va&&(c.va=a.va)):c.b=null);Ee(c)})}}ka(D function Ee(a){if(a.G&&(!a.w&&a.j&&(Dc(a.G,a.i,a.j,1)?a.w=!0:a.j=0),!Lb(a))){if(!a.w)q("No RAM allocated");else if(a.b){if(!a.Na)return;Fe(a,a.Na,a.wa,a.va,a.i)?a.status('Loaded image "'+a.C+'"'):a.fa('Error loading image "'+a.C+'"')}a.F=!0;Mb(a)}} De.prototype.reset=function(){if(this.w&&!this.F){for(var a=this.G,b=this.i,c=this.j,d=b&16383,b=b>>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.vb&&c<=ra.Nb&&(b=c-(ra.vb-ra.Jb));b&&(a.preventDefault&&a.preventDefault(),d.fb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Lb&&(b=ra.Kb);d.fb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); -a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.fb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.Ja=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)}; -l.Ib=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.Za)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.$a+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.ya=function(a,b){if(!b)if(this.Ib(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -l.oa=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new F(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.fb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d=ra.vb&&c<=ra.Nb&&(b=c-(ra.vb-ra.Jb));b&&(a.preventDefault&&a.preventDefault(),d.fb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Lb&&(b=ra.Kb);d.fb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.fb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ja=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)}; +m.Ib=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.Za)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.$a+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.ya=function(a,b){if(!b)if(this.Ib(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +m.oa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.fb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Ke(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)&(c/Le|0))*Le+((b&c)>>>0)} function Me(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)^(c/Le|0))*Le+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b} function Ne(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break; case "&":f=Ke(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Le|0|g/Le|0)*Le+((f|g)>>>0));break;case "^!":f=Me(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Oe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Te(a,null,d)}return d} +function Oe(a,b,c,d,e,f){var g,h,k,l=!1,p=0,u=[],D=[],I=a.S;for(a.S=e;c=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Oe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Te(a,null,d)}return d} function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.rb(b),0<=f?f=a.sb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f} function Te(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.S?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ue(a){var b=a.I;a.I={};return b}function Ve(a,b){if(b)return Te(a,b,a.I[b]);var c=0;for(b in a.I)Te(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} var Qe={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Le=Math.pow(2,32); function We(a){Ie.call(this,a);this.Ga=!1;this.Ea=18;this.L=36;this.Z=["<",">"];this.ra=[];this.Fa=Z();this.M=Z(0);this.ka=Z(0);this.ha=Z(0);this.F=[];this.b=this.N=this.K=[];Xe(this);this.U=this.la=0;this.i=[];this.Ca=void 0;Ye(this);this.D=this;this.Aa={};this.aa=this.Db=0;this.Y=null;this.R=[];Ze(this,a.messages);this.ta=a.commands;this.P=0;this.Ma=this.Da=null;this.C=this.Ia=this.Ha=this.ja=this.Ba=0;this.sa=this.qa=this.ea=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, -a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(We,Ie);function $e(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,bb:void 0===b?!1:b,na:!1,S:c}}function af(a,b,c,d){a.B=b;a.bb=c||!1;a.na=!1;a.S=d}function bf(a){return[a.B,a.bb,a.na,a.S,a.gb]}function cf(a,b){var c=Z(b[0],b[1],b[2]);c.na=b[3];b[4]&&(c.yb=Je(a,c.gb=b[4]));return c}l=We.prototype; -l.Ja=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.qa=a.j;this.Ea=b.F;(b=$c(a,"messages"))&&Ze(this,b);if(a=$c(a,"commands"))this.ta=a;df(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=$e(ef(d,c,d.ka));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var p=b[e];p.type==c?m++||d.u("..."):(c=p.type,m=Kc[c],p&&d.u(n(p.id,8)+" %"+ -n(e<>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+ +n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function hf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)} -function Ze(a,b){a.D=a;a.aa=a.Db=536870916;a.Y=null;a.R=[];b=Je(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;dd&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Ca==b&&(b=rd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1} -function zf(a,b,c,d){var e=Z(b.B),f=a.La(b,1),g,h,k,m=0,p=f/Xb|0,u;for(u in Af)if(g=Af[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Bf;m=p&3;break;case 32256:k=Cf;m=p&7;break;case 29248:k=Df,m=(p&48)>>2|(p&6)>>1}break}k=k&&k[m]||"";"S"==k&&g>Ef&&(k="B");k=Ff[g||0]+k;if(g){if(28700==h)h=f/Yb&127,m=K(a,h,-1);else for(h=f>>23&15,m=K(a,h,-1),p=0;m&&p>18&15)&&(k+="("+K(a,f, +function zf(a,b,c,d){var e=Z(b.B),f=a.La(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Af)if(g=Af[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Bf;l=p&3;break;case 32256:k=Cf;l=p&7;break;case 29248:k=Df,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Ef&&(k="B");k=Ff[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f, -1)+")")}else k=Da(k,8)+hf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.La(e,1),g+=" "+hf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ra?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Ea)):h+(null!=d?"="+d.toString():""));return h} -function Hf(a,b,c,d,e){var f=-1,g,h;a.ia=null;if(b){for(var k=b.toUpperCase(),m=0;mEf&&(P="B");if(k==Ff[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&(c=b+c, -b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127 +function Hf(a,b,c,d,e){var f=-1,g,h;a.ia=null;if(b){for(var k=b.toUpperCase(),l=0;lEf&&(P="B");if(k==Ff[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&& +(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127 h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ba=0;a.la=0} -l.Pa=function(a,b,c){var d=!0;c||If(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Pa(e&16383,a==this.K)}}d&&(a.push(b),c?b.na=!0:(Jf(this,a,a.length-1,"set"),Ye(this)));return d};function If(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g>>d.i],b==a.K));h.na||Ye(a);break}}return f} +m.Pa=function(a,b,c){var d=!0;c||If(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Pa(e&16383,a==this.K)}}d&&(a.push(b),c?b.na=!0:(Jf(this,a,a.length-1,"set"),Ye(this)));return d};function If(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g>>d.i],b==a.K));h.na||Ye(a);break}}return f} function Kf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);af(e.Fa,d);f+="="+K(e,e.La(e.Fa),36)+" ";c+=f}if(b){b="";for(d=0;d=nf?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}l.Fb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Fb);0>u&&p.splice(-(u+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.F.push({vd:b,B:c,Tb:d,W:e,Ab:f})}function ng(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b>>0,h=f.Tb;if(e>=g&&ed;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);af(e.Fa,d);f+="="+K(e,e.La(e.Fa),36)+" ";c+=f}if(b){b="";for(d=0;d=nf?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Fb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Fb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({vd:b,B:c,Tb:d,W:e,Ab:f})}function ng(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b>>0,h=f.Tb;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case kf:G(h, g);af(a.M,h.i);break;case nf:f=65536;break;case of:f=32768;break;case pf:f=131072;break;case qf:f=32;break;case rf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(lg(a,e));c&&(af(a.M,d.i),xf(a,K(a,a.M.B,18)))}}function ug(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.u(m)}h[3]&&(g=h[3],f=null);h=a.ha;m=b;h.B=m.B;h.bb=m.bb;h.na=m.na;h.S=m.S;a.u(zf(a,b,g,f));e-=b.B-k;c++}}} -function Lf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(vf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ha.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Y=null;if(Lb(a)&&0p||"z"h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ha;l=b;h.B=l.B;h.bb=l.bb;h.na=l.na;h.S=l.S;a.u(zf(a,b,g,f));e-=b.B-k;c++}}} +function Lf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(vf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ha.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Y=null;if(Lb(a)&&0p||"z"I)break;var u= -I+1,P=I+m.length,cb="",Ab="";I&&(cb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==cb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Dg(a,d,a.ga,Eg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Ng:"=:"==f&&(e|=Og),Dg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Pg(a,b))&&(b=b.replace(H,Qg(a,Rg,Pg(a,h))));H=Sg(a,b);)b=b.replace(H,H.slice(0,-1)); +function Cg(a,b,c,d,e){var f;if(a.i&&(1==a.i&&(f=b.indexOf(a.J),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.I+" definition: "+b)),1I)break;var u= +I+1,P=I+l.length,cb="",Ab="";I&&(cb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==cb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Dg(a,d,a.ga,Eg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Ng:"=:"==f&&(e|=Og),Dg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Pg(a,b))&&(b=b.replace(H,Qg(a,Rg,Pg(a,h))));H=Sg(a,b);)b=b.replace(H,H.slice(0,-1)); if(!Tg(a,f,b))switch(f){case Ug:case Vg:case Wg:Kg(a,h);break;case Xg:(f=b)?(a.C=Hg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case Yg:Zg(a,b);break;case $g:Zg(a,b.replace(",",",,"));break;case ah:case bh:case ch:case Lg:case Mg:case dh:Qg(a,f,h);break;case eh:case fh:case gh:case hh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Hf(a.b,f,b,a.ga,!0)),0>H&&(H=Hg(a,h,!0)),void 0!==H?Fg(a,H,a.b.ia):a.error("unrecognized expression: "+h)}return!0} function Tg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Oa=ih(a,c,!0),Gg(a,d.za,d.Qa,d.Oa,d.zb),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case bh:d.eb||Gg(a,d.za);break;case ch:d.eb&&Gg(a,d.za);break;case Lg:case Mg:for(b=0;b=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Sg(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,eb:kh,Qa:e,zb:f,Oa:g,za:b+": 0",ba:a.ba};a.K.push(d)}return c} function ih(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=jh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d} function Kg(a,b){var c=b;null==a.w&&(a.w=a.H="",b&&(a.w=b[0],c=b=b.substr(1)));if(a.w){var d=b.indexOf(a.w);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.H+=b}if(null==a.w){var d=b=0,e,f,g=a.H.length;a.I==Vg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Fg(a,d),b=0)}b&&Fg(a,d)}return c} -function Qg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ah){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=ih(a,e[2],!0);b=[];for(c=0;c");0>m&&(m=h[c].length);b[c]=h[c].substr(d,m-d);h[c]=h[c].substr(0,d)}h=b}b=lh;c=3}else if(b==Rg)a.J="[",a.M="]",f="?"+va(++a.Y,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)], +function Qg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ah){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=ih(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=lh;c=3}else if(b==Rg)a.J="[",a.M="]",f="?"+va(++a.Y,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)], b=mh,c=0;else if(b==Lg||b==Mg){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d\nLicense: GPL version 3 or later ");for(b=0;bqh){if(rh(d,this.L)){this.C=new F(this,"1.34.3",Lh);rh(this.C)&&(Mh(this,d),a=Nh,Oh(this.C));this.C.set(Ih,Ga());Ph(this.C);var e=this.b&&!this.K;if(a==Jh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Hh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?rh(d,g):("error"==f&&"no machine state"!= +function uh(a,b){var c=new F(a,"1.34.3",vh);if(rh(c)&&Hh(c)){var d=c.get(Ih),e=b?b.get(Ih):"unknown";d!=e&&(a.fa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=nh.prototype; +m.Ua=function(a){void 0===a&&(a=this.b||(this.L?Jh:qh));if(!this.w){this.w++;var b=!1,c=!1;this.P=!1;var d=this.I||new F(this,"1.34.3");if(a==Kh)b=!0;else if(a>qh){if(rh(d,this.L)){this.C=new F(this,"1.34.3",Lh);rh(this.C)&&(Mh(this,d),a=Nh,Oh(this.C));this.C.set(Ih,Ga());Ph(this.C);var e=this.b&&!this.K;if(a==Jh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Hh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?rh(d,g):("error"==f&&"no machine state"!= g?(this.fa("Error: "+g),"unable to verify user"==g&&(Qa(Qh,""),this.i=null)):this.u(f+": "+g),Oh(d),rh(d)?(c=Hh(d),e=!0):c=!1))}e&&uh(this,c?d:null)}else a==Nh&&d.clear()}else uh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.X=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Rh(this,this.v,b,c,a),J(this,-2),this.v.da());this.P&&(Mh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0}; +m.Gb=function(a){var b=a[0],c=0>a[1];a=a[2];this.T=!0;this.A.X=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Rh(this,this.v,b,c,a),J(this,-2),this.v.da());this.P&&(Mh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0}; function Mh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.Z;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}} -function wg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",vh),h=Ga();g.set(Ih,h);f.set(Ih,h);f.set(Sh,"1.34.3");f.set(Th,window?window.location.href:null);f.set(Uh,window?window.navigator.userAgent:"");a.v&&a.v.oa&&(c&&(b&&(a.v.A.da=a.v.A.O),a.v.V()),d=a.v.oa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.X=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k=d||30<=(c.ib+=d))&&(e.textContent=c.A.O?c.Y.toFixed(2)+"Mhz":"Stopped",c.ib=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +function bi(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, "");a=a.replace(d[0],g);bi(a,b,c)}})}else c(a,null)} -function ci(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);m&&(--Zh||ab(!0));m=!1}var h,k,m=!0;Zh++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d|| +function ci(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--Zh||ab(!0));l=!1}var h,k,l=!0;Zh++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d|| (p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?$h(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Zh||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Zh|| -ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?$h(c,b,a,e,!0,f,p):ai(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return m}window.embedPDP10=function(a,b,c,d){ab(!1);return ci("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ci("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")}; -window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!vb[a]){for(var c=!0,d=vb,e=a,f=b.length,g=[],h=[],k="",m=null,p=0;p>8&255,d.I[f++]=e[c]>>16&255,d.I[f++]=e[c]>>24&255;else(e=g.data)?d.Y=e:d.I=g;d.I&&(d.I.length?1==d.I.length&&(q(d.I[0]),d=null):(q("Empty resource: "+a),d=null));d.O=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.va=this.id:(this.wa=this.id.substr(0,a),this.va=this.id.substr(a+1));this.i={ready:!1,Aa:!1,Na:!1,F:!1,error:!1};this.Ca=null;this.i.error=!1;this.w=this.j=this.s=this.v=this.fa=null;v.push(this)}function La(a,b,c){Ma[a]&&b&&(Ma[a][b]=c)}function Na(){return Date.now()||+new Date} function q(a){window&&window.alert(a)}function Oa(a){var b=!1;window&&(b=window.confirm(a));return b}function w(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.a["S"+a]=[0,0,!1,!1,this.qb,a];this.w=this.j=this.s=this.v=null;this.exports={hold:this.jb,toggle:this.Bb,reset:this.xb, set:this.Ab};B(this)}l(fb,t);k=fb.prototype;k.reset=function(a){this.stop();a&&hb(this,this.h=0)}; k.U=function(a,b,c,d){if(this.v&&this.v.U(a,b,c,d)||this.j&&this.j.U(a,b,c,d))return!0;switch(b){case "PC":return this.m[b]=c,this.C++,!0;default:return"led"==a||"rled"==a?(this.m[b]=c,this.l[b]=d?1:0,this.C++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.m[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ib(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){jb(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){ib(a, @@ -73,7 +73,7 @@ function nb(a,b){a.f=b&a.s.g;if(a.D!==a.f){a.D=a.f;b=a.D;for(var c=0;22>c;c++){v function mb(){for(var a=A(document,z,"panel"),b=0;bd.length){for(var e=0,f=Array(4096),g=0;g>>a.f;0f&&(u=f);if(h&&h.size){if(h.type==d){if(e+f<=h.ea)return h.Ea+=h.ea-e,h.ea=e,!0;if(e>=h.ea+h.Ea){u=h.size-(e-m);u>f&&(u=f);h.Ea=e-h.ea+u;e=m+16384;f-=u;g++;continue}}return Hb(Ib,e,f)}e=new Db(a,e,u,16384,d);Eb(e,h);a.a[g++]=e;e=m+16384;f-=u}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Jb[d]+" at "+ka(b)),!0):Hb(Kb,b,c)} -function Bb(a,b,c){var d=a.a[(b&a.g)>>>a.f];a.h++;d.g(c,b&16383,b);a.h--}function Fb(a){for(var b=0,c=[],d=0;d>>a.f];a.h++;d.g(c,b&16383,b);a.h--}function Fb(a){for(var b=0,c=[],d=0;db)break}this.l&=15;this.A&4194304?this.A=this.qa=this.b(this.a):0<=this.da?(this.A=this.ra=this.b(this.da),this.da=-1):(this.A=this.ra=this.b(this.Ha=this.f),this.f=(this.f+1)%$a);this.A&=8388607;this.a=this.A&262143;if(a=this.A>>18&15)this.a=this.a+ (this.qa=this.b(a))&Za;a=this.A&4194304?-1:this.ra/db|0;0<=a&&this.gb(a);this.H--}while(0>4].call(this,a,a&15)}function P(a){this.h(a)}function kc(){var a=0,b=this.b(this.a),c=b/eb&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*eb+(d<<24)+(b&16777215);a&&(b=(b+a)%J);this.c(this.a,b)} function lc(a,b){a=this.b(this.a);if(0>this.u)this.u=a,this.A=this.a|4194304;else{var c=this.u/eb&63,d=this.u>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.c(b,a);this.u=-1}}function mc(a,b){a=this.b(this.a);if(0>this.u)this.u=a,this.A=this.a|4194304;else{var c=this.u/eb&63,d=this.u>>24&63;b=this.b(b)%Math.pow(2,d)*Math.pow(2,c)%J;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.c(this.a,a);this.u=-1}}function nc(a,b){this.c(b,this.b(this.a))} -function oc(a,b){this.c(b,this.a)}function pc(a,b){this.c(this.a,this.b(b))}function qc(a,b){this.c(b,0)}function rc(a,b){this.c(b,H-this.b(b))}function sc(a,b){this.c(b,H)}function tc(a,b){var c=this.b(this.a),d=this.b(b);this.c(b,uc(a,d,c)+(c-(c&D)))}function vc(a,b){var c=this.b(b);this.c(b,uc(a,c,0))}function wc(a,b){b=this.b(b);var c=this.b(this.a);this.c(this.a,uc(a,c,b)+(b-(b&D)))} -function xc(a,b){var c=this.b(this.a),d=c;if(a&=384)switch(d-=d&D,a){case 256:d+=D;break;case 384:d+=c>F?D:0}c=d;this.c(this.a,c);b&&this.c(b,c)}function yc(a,b){var c=(this.b(this.a)&D)*E,d=this.b(b);this.c(b,uc(a,d,c)+c)}function zc(a,b){var c=this.a*E,d=this.b(b);this.c(b,uc(a,d,c)+c)}function Ac(a,b){b=(this.b(b)&D)*E;var c=this.b(this.a);this.c(this.a,uc(a,c,b)+b)}function Bc(a,b){var c=this.b(this.a),d=(c&D)*E,c=uc(a,c,d)+d;this.c(this.a,c);b&&this.c(b,c)} -function Cc(a,b){var c=this.b(this.a)&D,d=this.b(b);this.c(b,Dc(a,d,c)+c)}function Ec(a,b){var c=this.b(b);this.c(b,Dc(a,c,this.a)+this.a)}function Fc(a,b){b=this.b(b)&D;var c=this.b(this.a);this.c(this.a,Dc(a,c,b)+b)}function Gc(a,b){var c=this.b(this.a),d=c;if(a&=384)switch(d&=D,a){case 256:d+=D*E;break;case 384:d+=c>ab?D*E:0}c=d;this.c(this.a,c);b&&this.c(b,c)}function Hc(a,b){var c=this.b(this.a)/E|0,d=this.b(b);this.c(b,Dc(a,d,c)+c)}function Ic(a,b){var c=this.b(b);this.c(b,Dc(a,c,0))} +function oc(a,b){this.c(b,this.a)}function pc(a,b){this.c(this.a,this.b(b))}function qc(a,b){this.c(b,0)}function rc(a,b){this.c(b,I-this.b(b))}function sc(a,b){this.c(b,I)}function tc(a,b){var c=this.b(this.a),d=this.b(b);this.c(b,uc(a,d,c)+(c-(c&C)))}function vc(a,b){var c=this.b(b);this.c(b,uc(a,c,0))}function wc(a,b){b=this.b(b);var c=this.b(this.a);this.c(this.a,uc(a,c,b)+(b-(b&C)))} +function xc(a,b){var c=this.b(this.a),d=c;if(a&=384)switch(d-=d&C,a){case 256:d+=C;break;case 384:d+=c>F?C:0}c=d;this.c(this.a,c);b&&this.c(b,c)}function yc(a,b){var c=(this.b(this.a)&C)*E,d=this.b(b);this.c(b,uc(a,d,c)+c)}function zc(a,b){var c=this.a*E,d=this.b(b);this.c(b,uc(a,d,c)+c)}function Ac(a,b){b=(this.b(b)&C)*E;var c=this.b(this.a);this.c(this.a,uc(a,c,b)+b)}function Bc(a,b){var c=this.b(this.a),d=(c&C)*E,c=uc(a,c,d)+d;this.c(this.a,c);b&&this.c(b,c)} +function Cc(a,b){var c=this.b(this.a)&C,d=this.b(b);this.c(b,Dc(a,d,c)+c)}function Ec(a,b){var c=this.b(b);this.c(b,Dc(a,c,this.a)+this.a)}function Fc(a,b){b=this.b(b)&C;var c=this.b(this.a);this.c(this.a,Dc(a,c,b)+b)}function Gc(a,b){var c=this.b(this.a),d=c;if(a&=384)switch(d&=C,a){case 256:d+=C*E;break;case 384:d+=c>ab?C*E:0}c=d;this.c(this.a,c);b&&this.c(b,c)}function Hc(a,b){var c=this.b(this.a)/E|0,d=this.b(b);this.c(b,Dc(a,d,c)+c)}function Ic(a,b){var c=this.b(b);this.c(b,Dc(a,c,0))} function Jc(a,b){b=this.b(b)/E|0;var c=this.b(this.a);this.c(this.a,Dc(a,c,b)+b)}function Kc(a,b){var c=this.b(this.a),d=c/E|0,c=Dc(a,c,d)+d;this.c(this.a,c);b&&this.c(b,c)}function Q(a){Lc[a&7].call(this,a,a>>3&127)}function Mc(){}function Nc(){}function O(a){this.M("undefined opcode: "+ka(a));this.f=(this.f+-1)%$a;N(this)}function Oc(a){a>F&&(a!=G?a=cb-a:this.g|=163840);return a}function R(a,b){var c=(a+b)%J;Pc.call(this,a,b,c);return c} -function Qc(a,b,c){var d=!1,e=!1,f=b-b%G;a=a%G+b*G%J;b=this.o=f+Math.trunc(b/2);c>F&&(c=J-c,d=!d);b>F&&(a?(b=H-b,a=J-a):b&&(b=J-b),e=!0,d=!d);if(b>=c)return this.g|=131104,-1;f=this.Ma;f[0]=0;f[1]=0;f=this.ba;f[0]=1;f[1]=0;f=this.X;f[0]=c;f[1]=0;c=this.ca;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=J,b[1]--),Sc(this.Ma,this.ba),Tc(this.ca)))break;Uc(this.X);Uc(this.ba)}while(!Tc(this.ba)); +function S(a,b,c){var d=!1,e=!1,f=b-b%G;a=a%G+b*G%J;b=this.o=f+Math.trunc(b/2);c>F&&(c=J-c,d=!d);b>F&&(a?(b=I-b,a=J-a):b&&(b=J-b),e=!0,d=!d);if(b>=c)return this.g|=131104,-1;f=this.Ma;f[0]=0;f[1]=0;f=this.ba;f[0]=1;f[1]=0;f=this.X;f[0]=c;f[1]=0;c=this.ca;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=J,b[1]--),Rc(this.Ma,this.ba),Sc(this.ca)))break;Tc(this.X);Tc(this.ba)}while(!Sc(this.ba)); a=this.Ma[0];this.o=this.ca[0];d&&a&&(a=J-a);e&&this.o&&(this.o=J-this.o);return a} -function Vc(a,b,c){var d=a,e=b;b=!1;var f;d>F&&(d=J-d,b=!b);e>F&&(e=J-e,b=!b);if(dF)&&(f!=H||a<=F)&&(this.g|=131072),a;c=a;b=f;a=b-b%G;b=2*b%J+Math.trunc(c/G);c=a+c%G;d=b-b%G;a!=d&&(b=a+(b-d),this.g|=131072);this.o=c;return b} -function Wc(a){a?a==G?this.g|=163840:a=cb-a:this.g|=98304;return a}function S(a,b){var c=a-b;0>c&&(c+=J);Pc.call(this,c,b,a);return c}function Pc(a,b,c){a=Math.trunc(a/bb);b=Math.trunc(b/bb);c=Math.trunc(c/bb);var d=a^(a^b)&(b^c);this.g=this.g|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function T(a,b){return((a/K|0)&(b/K|0))*K+((a&b)>>>0)}function U(a,b){return T(a,(~(b/K|0)&15)*K+(~b>>>0))}function V(a,b){return(a>>0)}function W(a,b){return(a/K|0|b/K|0)*K+((a|b)>>>0)}function X(a){return a>>0)}function Z(a){return(a/E|0)+(a&D)*E}function Dc(a,b,c){switch(a&384){case 0:b-=b&D;break;case 128:b=0;break;case 256:b=D*E;break;case 384:b=c>ab?D*E:0}return b}function uc(a,b,c){switch(a&384){case 0:b&=D;break;case 128:b=0;break;case 256:b=D;break;case 384:b=c>F?D:0}return b} -function Sc(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=J&&(a[0]%=J,a[1]++)}function Rc(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Uc(a){a[1]%2&&(a[0]+=J);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function Tc(a){return!a[0]&&!a[1]} +function Uc(a,b,c){var d=a,e=b;b=!1;var f;d>F&&(d=J-d,b=!b);e>F&&(e=J-e,b=!b);if(dF)&&(f!=I||a<=F)&&(this.g|=131072),a;c=a;b=f;a=b-b%G;b=2*b%J+Math.trunc(c/G);c=a+c%G;d=b-b%G;a!=d&&(b=a+(b-d),this.g|=131072);this.o=c;return b} +function Vc(a){a?a==G?this.g|=163840:a=cb-a:this.g|=98304;return a}function Wc(a,b){var c=a-b;0>c&&(c+=J);Pc.call(this,c,b,a);return c}function Pc(a,b,c){a=Math.trunc(a/bb);b=Math.trunc(b/bb);c=Math.trunc(c/bb);var d=a^(a^b)&(b^c);this.g=this.g|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function T(a,b){return((a/K|0)&(b/K|0))*K+((a&b)>>>0)}function U(a,b){return T(a,(~(b/K|0)&15)*K+(~b>>>0))}function V(a,b){return(a>>0)}function W(a,b){return(a/K|0|b/K|0)*K+((a|b)>>>0)}function X(a){return a>>0)}function Z(a){return(a/E|0)+(a&C)*E}function Dc(a,b,c){switch(a&384){case 0:b-=b&C;break;case 128:b=0;break;case 256:b=C*E;break;case 384:b=c>ab?C*E:0}return b}function uc(a,b,c){switch(a&384){case 0:b&=C;break;case 128:b=0;break;case 256:b=C;break;case 384:b=c>F?C:0}return b} +function Rc(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=J&&(a[0]%=J,a[1]++)}function Qc(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Tc(a){a[1]%2&&(a[0]+=J);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function Sc(a){return!a[0]&&!a[1]} var jc=[P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},kc,function(a,b){0>this.u&&kc.call(this);lc.call(this,0,b)},lc,function(a,b){0>this.u&&kc.call(this);mc.call(this,0,b)},mc,function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)}, function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)}, -function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},nc,oc,pc,function(a,b){b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);a=(a/E|0)+(a&D)*E;this.c(b,a)},function(a,b){this.c(b,this.a*E)},function(a,b){a=this.b(b);a=(a/E|0)+(a&D)*E;this.c(this.a,a)},function(a,b){a=this.b(this.a);a=(a/E|0)+(a&D)*E;this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Wc.call(this,this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.a))},function(a,b){this.c(this.a, -Wc.call(this,this.b(b)))},function(a,b){a=Wc.call(this,this.b(this.a));this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Oc.call(this,this.b(this.a)))},function(a,b){this.c(b,this.a)},function(a,b){this.c(this.a,Oc.call(this,this.b(b)))},function(a,b){a=Oc.call(this,this.b(this.a));this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Vc.call(this,this.b(b),this.b(this.a),!0))},function(a,b){this.c(b,Vc.call(this,this.b(b),this.a,!0))},function(a,b){this.c(this.a,Vc.call(this,this.b(b),this.b(this.a), -!0))},function(a,b){this.c(this.a,this.c(b,Vc.call(this,this.b(b),this.b(this.a),!0)))},function(a,b){this.c(b,Vc.call(this,this.b(b),this.b(this.a)));this.c(b+1&15,this.o)},function(a,b){this.c(b,Vc.call(this,this.b(b),this.a));this.c(b+1&15,this.o)},function(a,b){this.c(this.a,Vc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,Vc.call(this,this.b(b),this.b(this.a))));this.c(b+1&15,this.o)},function(a,b){a=Qc.call(this,this.b(b),0,this.b(this.a));0>a||(this.c(b,a),this.c(b+ -1&15,this.o))},function(a,b){a=Qc.call(this,this.b(b),0,this.a);0>a||(this.c(b,a),this.c(b+1&15,this.o))},function(a,b){a=Qc.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=Qc.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=Qc.call(this,c,a,this.b(this.a));0>c||(this.c(b,c),this.c(b+1&15,this.o))},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=Qc.call(this,c,a,this.a);0>c||(this.c(b,c),this.c(b+1&15,this.o))}, -function(a,b){a=this.b(b);b=this.b(b+1&15);b=Qc.call(this,b,a,this.b(this.a));0>b||this.c(this.a,b)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=Qc.call(this,c,a,this.b(this.a));0>c||(this.c(b,this.c(this.a,c)),this.c(b+1&15,this.o))},function(a,b){var c=(this.a<<14>>14)%256;if(c){a=this.b(b);var d=a>F?-(J-a):a;0d?G:0,c=F):(d=d*Math.pow(2,c)%G,c=G-Math.pow(2,35-c)),a<=F?a+c>F&&(this.g|=131072):a-c<=F&&(this.g|=131072)):d=-35>=c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+J:d; -this.c(b,a)}},function(a,b){if(a=(this.a<<14>>14)%36){var c=this.b(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%J+Math.trunc(c/Math.pow(2,36-a));this.c(b,c)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.c(b,c)}},function(a,b){a=0;var c=this.b(b);if(c){for(;c>14)%256){var c,d=this.b(b),e=this.b(b+1&15);if(0F&& -dF&&eF&&(this.g|=131072):e-c<=F&&(this.g|=131072);e=0;f>F&&(d+=G,e+=G)}else d=d*Math.pow(2,a)%G+Math.trunc(e%G/Math.pow(2,35-a)),e=e*Math.pow(2,a)%G,c=G-Math.pow(2,35-a),f<=F?f+c>F&&(this.g|=131072):(f-c<=F&&(this.g|=131072),d+=G,e+=G)}else-36>=a?(e=-72>=a?d>F?H:0:Math.trunc(d%G/Math.pow(2,-a-35)),d<=F?d=0:(d=H,e+=G)):(c=d>F?J-Math.pow(2,36+a):0,e=Math.trunc(e%G/Math.pow(2,-a))+ -d%G*Math.pow(2,35+a)%G,d=Math.trunc(d/Math.pow(2,-a))+c,d>F&&(e+=G));this.c(b,d);this.c(b+1&15,e)}},function(a,b){if(a=(this.a<<14>>14)%72){var c=this.b(b),d=this.b(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%J+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%J+Math.trunc(d/Math.pow(2,72-a)));this.c(b,c);this.c(b+1&15,d)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),d=this.b(b+ -1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%J,c=Math.trunc(c/Math.pow(2,-a)));this.c(b,c);this.c(b+1&15,d)}},O,function(a,b){a=this.b(b);this.c(b,this.b(this.a));this.c(this.a,a)},function(a,b){a=!1;for(var c=this.b(b),d=c/E|0,c=c&D;!a;)this.c(c,this.b(d)),c==this.a&&(a=!0),d=d+1&D,c=c+1&D,this.i.B||(this.c(b,d* -E+c),a||(this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa,c=c/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.h(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.da=this.a},O,function(a){this.h(a)},function(a, -b){a=this.b(b);a+=262145;this.c(a&D,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&D);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==D&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&D)*E+this.f);M(this,this.a+1)},function(a,b){this.c(b,(this.g&D)*E+this.f);M(this,this.a)},function(a){this.h(a)},function(a){this.h(a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a, -b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,S.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,S.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,S.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,S.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this, +function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},nc,oc,pc,function(a,b){b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);a=(a/E|0)+(a&C)*E;this.c(b,a)},function(a,b){this.c(b,this.a*E)},function(a,b){a=this.b(b);a=(a/E|0)+(a&C)*E;this.c(this.a,a)},function(a,b){a=this.b(this.a);a=(a/E|0)+(a&C)*E;this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Vc.call(this,this.b(this.a)))},function(a,b){this.c(b,Vc.call(this,this.a))},function(a,b){this.c(this.a, +Vc.call(this,this.b(b)))},function(a,b){a=Vc.call(this,this.b(this.a));this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Oc.call(this,this.b(this.a)))},function(a,b){this.c(b,this.a)},function(a,b){this.c(this.a,Oc.call(this,this.b(b)))},function(a,b){a=Oc.call(this,this.b(this.a));this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Uc.call(this,this.b(b),this.b(this.a),!0))},function(a,b){this.c(b,Uc.call(this,this.b(b),this.a,!0))},function(a,b){this.c(this.a,Uc.call(this,this.b(b),this.b(this.a), +!0))},function(a,b){this.c(this.a,this.c(b,Uc.call(this,this.b(b),this.b(this.a),!0)))},function(a,b){this.c(b,Uc.call(this,this.b(b),this.b(this.a)));this.c(b+1&15,this.o)},function(a,b){this.c(b,Uc.call(this,this.b(b),this.a));this.c(b+1&15,this.o)},function(a,b){this.c(this.a,Uc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,Uc.call(this,this.b(b),this.b(this.a))));this.c(b+1&15,this.o)},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||(this.c(b,a),this.c(b+ +1&15,this.o))},function(a,b){a=S.call(this,this.b(b),0,this.a);0>a||(this.c(b,a),this.c(b+1&15,this.o))},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.b(this.a));0>c||(this.c(b,c),this.c(b+1&15,this.o))},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.a);0>c||(this.c(b,c),this.c(b+1&15,this.o))}, +function(a,b){a=this.b(b);b=this.b(b+1&15);b=S.call(this,b,a,this.b(this.a));0>b||this.c(this.a,b)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.b(this.a));0>c||(this.c(b,this.c(this.a,c)),this.c(b+1&15,this.o))},function(a,b){var c=(this.a<<14>>14)%256;if(c){a=this.b(b);var d=a>F?-(J-a):a;0d?G:0,c=F):(d=d*Math.pow(2,c)%G,c=G-Math.pow(2,35-c)),a<=F?a+c>F&&(this.g|=131072):a-c<=F&&(this.g|=131072)):d=-35>=c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+J:d;this.c(b, +a)}},function(a,b){if(a=(this.a<<14>>14)%36){var c=this.b(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%J+Math.trunc(c/Math.pow(2,36-a));this.c(b,c)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.c(b,c)}},function(a,b){a=0;var c=this.b(b);if(c){for(;c>14)%256){var c,d=this.b(b),e=this.b(b+1&15);if(0F&&dF&&eF&&(this.g|=131072):e-c<=F&&(this.g|=131072);e=0;f>F&&(d+=G,e+=G)}else d=d*Math.pow(2,a)%G+Math.trunc(e%G/Math.pow(2,35-a)),e=e*Math.pow(2,a)%G,c=G-Math.pow(2,35-a),f<=F?f+c>F&&(this.g|=131072):(f-c<=F&&(this.g|=131072),d+=G,e+=G)}else-36>=a?(e=-72>=a?d>F?I:0:Math.trunc(d%G/Math.pow(2,-a-35)),d<=F?d=0:(d=I,e+=G)):(c=d>F?J-Math.pow(2,36+a):0,e=Math.trunc(e%G/Math.pow(2,-a))+d%G*Math.pow(2, +35+a)%G,d=Math.trunc(d/Math.pow(2,-a))+c,d>F&&(e+=G));this.c(b,d);this.c(b+1&15,e)}},function(a,b){if(a=(this.a<<14>>14)%72){var c=this.b(b),d=this.b(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%J+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%J+Math.trunc(d/Math.pow(2,72-a)));this.c(b,c);this.c(b+1&15,d)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),d=this.b(b+1&15);0< +a?36<=a?(c=72<=a?0:d*Math.pow(2,a-36)%J,d=0):(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J):-36>=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%J,c=Math.trunc(c/Math.pow(2,-a)));this.c(b,c);this.c(b+1&15,d)}},O,function(a,b){a=this.b(b);this.c(b,this.b(this.a));this.c(this.a,a)},function(a,b){a=!1;for(var c=this.b(b),d=c/E|0,c=c&C;!a;)this.c(c,this.b(d)),c==this.a&&(a=!0),d=d+1&C,c=c+1&C,this.i.B||(this.c(b,d*E+c),a|| +(this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa,c=c/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.h(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.da=this.a},O,function(a){this.h(a)},function(a,b){a= +this.b(b);a+=262145;this.c(a&C,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);M(this,this.a)},function(a){this.h(a)},function(a){this.h(a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a, +b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this, this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)}, function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this,this.a)},function(a,b){0<=X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a); 0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),1));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b), 1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a, -R.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a, -b){a=this.c(b,S.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,S.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,S.call(this,this.b(b),1));M(this,this.a)},function(a,b){a=this.c(b,S.call(this,this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,S.call(this,this.b(b),1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,S.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,S.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,S.call(this,this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,S.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,S.call(this,this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)}, -function(a,b){a=this.c(this.a,S.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,S.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a, +b){a=this.c(b,R.call(this,this.b(b),I));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),I));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)}, +function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), -a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(I){g=null,a=I.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var m=h[0],u,C=/( [a-z]+=)(['"])(.*?)\2/g;u=C.exec(f);)m=0>m.indexOf(u[1])?m.replace(">",u[0]+">"):m.replace(new RegExp(u[1]+"(['\"])(.*?)\\1"),u[0]);h[0]!=m&&(g=g.replace(h[0],m))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(H){g=null,a=H.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var m=h[0],u,D=/( [a-z]+=)(['"])(.*?)\2/g;u=D.exec(f);)m=0>m.indexOf(u[1])?m.replace(">",u[0]+">"):m.replace(new RegExp(u[1]+"(['\"])(.*?)\\1"),u[0]);h[0]!=m&&(g=g.replace(h[0],m))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, "");a=a.replace(d[0],g);Jd(a,b,c)}})}else c(a,null)} -function Kd(a,b,c,d,e){function f(a){if(void 0===m){var b=h&&A(h,"machine-warning");m=b&&b[0]||h}m&&(m.innerHTML=qa(a))}function g(a){f("Error: "+a);u&&(--Gd||Ha(!0));u=!1}var h,m,u=!0;Gd++;Ma[b]={};try{if(h=document.getElementById(b)){var C;if("object"==typeof resources&&(C=resources.css)){var I=document.head||document.getElementsByTagName("head")[0],Da=document.createElement("style");Da.type="text/css";Da.styleSheet?Da.styleSheet.cssText=C:Da.appendChild(document.createTextNode(C));I.appendChild(Da)}d|| -(C=a,"pdp"==a.substr(0,3)&&(C="pdpjs"),d="/versions/"+C+"/1.34.3/components.xsl");C=function(e,m){m?Hd(d,null,a,null,!1,f,function(a,e){e?(La(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=m.transformNode(e))?(h.outerHTML=e,--Gd||Ha(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(m,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Gd|| -Ha(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Hd(c,b,a,e,!0,f,C):Id(c,null,b,a,e,!1,f,C)}else g("missing machine element: "+b)}catch(Ld){g(Ld.message)}return u}window.embedPDP10=function(a,b,c,d){Ha(!1);return Kd("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){Ha(!1);return Kd("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return x(b,a+".machine")}; -window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Sa[a]){for(var c=!0,d=Sa,e=a,f=b.length,g=[],h=[],m="",u=null,C=0;C>>0;else if(32>b)d=a&(1<a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=zj(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);d=Bj(a,b,0,b.length,a.W,c);void 0!==d&&!1===c&&Gj(a,null,d)}return d} +function Fj(a,b,c){var d=void 0;a.za=null;if(b){"{"!=a.U[0]&&(b=b.split(a.U[0]).join("{").split(a.U[1]).join("}"));b=Ej(a,b,'"',7,5,c);if(!b)return d;b=Ej(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Bj(a,b,0,b.length,a.W,c);void 0!==d&&!1===c&&Gj(a,null,d)}return d} function Cj(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.re(b),0<=f?f=a.Bd(f):(f=a.S[b],null==f&&(f=ma(b,1>>=2}f=zj(f)}else d||a.v("invalid "+(c?c:"value")+": "+b);else d||a.v("missing "+(c||"value"));return f} function Gj(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.W?K(a,c,32,8,1)+" "+c+".":K(a,c,32,16,1)+" "+K(a,c,32,8,1)+" "+K(a,c,32,2,8)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.v((null!=b?b+": ":"")+d);return e}function Hj(a,b){if(b)return Gj(a,b,a.S[b]);var c=0;for(b in a.S)Gj(a,b,a.S[b]),c++;return 0>2:0,!!e)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}var Dj={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11}; From d13e7a5fafa8efd4d7bf5f375368e9170d174d92 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 12:01:06 -0700 Subject: [PATCH 04/27] The expression parser now allows spaces inside expressions (a relaxation for certain MACRO-10 typos; eg, "- 1" where "-1" was expected) --- apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt | 2 +- modules/pdp10/lib/macro10.js | 4 ++- modules/shared/lib/debugger.js | 35 +++++++++++++++++++---- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt b/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt index 5af64de68..6e4503259 100644 --- a/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt +++ b/apps/pdp10/diags/klad/dakac/DAKAC.MAC.txt @@ -1714,7 +1714,7 @@ B35000: SETZ ;PRELOAD AC,E WITH 0 B35500: SETZ ;PRELOAD AC WITH 0 SETO 1, ;PRELOAD E WITH -1,,-1 HLLM 1 ;*HLLM SHOULD PLACE 0,,-1 INTO E - CAIE 1,-1 ;PASS IF C(E) =0,,-1 + CAIE 1,- 1 ;PASS IF C(E) =0,,-1 STOP ;***** FAILURE ANALYSIS ***** diff --git a/modules/pdp10/lib/macro10.js b/modules/pdp10/lib/macro10.js index 09850b75e..d7faa9e49 100644 --- a/modules/pdp10/lib/macro10.js +++ b/modules/pdp10/lib/macro10.js @@ -1285,7 +1285,9 @@ class Macro10 { w = this.dbg.parseInstruction(sOperator, sOperands, this.nLocation, true); } - if (w < 0) w = this.parseExpression(sExp, true); + if (w < 0) { + w = this.parseExpression(sExp, true); + } if (w !== undefined) { this.genWord(w, this.dbg.sUndefined); diff --git a/modules/shared/lib/debugger.js b/modules/shared/lib/debugger.js index 222abaa9e..be37c4132 100644 --- a/modules/shared/lib/debugger.js +++ b/modules/shared/lib/debugger.js @@ -660,6 +660,16 @@ class Debugger extends Component sOp = (iValue < iLimit? asValues[iValue++] : ""); } else { + /* + * When parseExpression() calls us, it has collapsed all runs of whitespace into single spaces, + * and although it allows single spaces to divide the elements of the expression, a space is neither + * a unary nor binary operator. It's essentially a no-op. If we encounter it here, then it followed + * another operator and is easily ignored (although perhaps it should still trigger a reset of nBase + * and nUnary -- TBD). + */ + if (sOp == ' ') { + continue; + } if (sOp == '^B') { this.nBase = 2; continue; @@ -706,15 +716,27 @@ class Debugger extends Component } aVals.push(this.truncate(v)); + + /* + * When parseExpression() calls us, it has collapsed all runs of whitespace into single spaces, + * and although it allows single spaces to divide the elements of the expression, a space is neither + * a unary nor binary operator. It's essentially a no-op. If we encounter it here, then it followed + * a value, and since we don't want to misinterpret the next operator as a unary operator, we look + * ahead and grab the next operator as appropriate. + */ + if (sOp == ' ') { + if (iValue < asValues.length - 1 && !asValues[iValue]) { + iValue++; + sOp = asValues[iValue++] + } else { + fError = true; + break; + } + } if (!sOp) break; - if (sOp == ' ') { - fError = true; - break; - } - this.assert(Debugger.aBinOpPrecedence[sOp] != null); - if (aOps.length && Debugger.aBinOpPrecedence[sOp] < Debugger.aBinOpPrecedence[aOps[aOps.length - 1]]) { + if (aOps.length && Debugger.aBinOpPrecedence[sOp] <= Debugger.aBinOpPrecedence[aOps[aOps.length - 1]]) { this.evalOps(aVals, aOps, 1); } @@ -734,6 +756,7 @@ class Debugger extends Component if (!fError) { value = aVals.pop(); + this.assert(!aVals.length); } else if (fQuiet === false) { this.println("parse error (" + (sValue || sOp) + ")"); } From d5c48df9bcad467b5a94128f18bb7e2f8441337a Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 15:22:17 -0700 Subject: [PATCH 05/27] Added support for MACRO-10 literal collapsing; it's not super-aggressive, but it's more than adequate for what DEC's diagnostics require --- apps/pdp10/diags/klad/dakae/README.md | 4 +- docs/pcx86/examples/pcx86-dbg.js | 4 +- modules/pdp10/lib/cpuops.js | 1868 +++++++++++++------------ modules/pdp10/lib/macro10.js | 82 +- modules/shared/lib/debugger.js | 24 +- versions/pc8080/1.34.3/pc8080-dbg.js | 4 +- versions/pcx86/1.34.3/pcx86-dbg.js | 4 +- versions/pdpjs/1.34.3/pdp10-dbg.js | 342 ++--- versions/pdpjs/1.34.3/pdp10.js | 52 +- versions/pdpjs/1.34.3/pdp11-dbg.js | 4 +- 10 files changed, 1243 insertions(+), 1145 deletions(-) diff --git a/apps/pdp10/diags/klad/dakae/README.md b/apps/pdp10/diags/klad/dakae/README.md index be22678fe..a6fee09dd 100644 --- a/apps/pdp10/diags/klad/dakae/README.md +++ b/apps/pdp10/diags/klad/dakae/README.md @@ -7,7 +7,7 @@ machines: type: pdp10 config: /devices/pdp10/machine/ka10/test/debugger/machine.xml debugger: true - commands: a 30724 DAKAE.MAC + commands: a 30706 DAKAE.MAC --- PDP-10 KA10 Basic Instruction Diagnostic #5 @@ -32,7 +32,7 @@ The Debugger's assemble ("a") command can be used to test the new built-in of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language. This command: - a 30724 DAKAE.MAC + a 30706 DAKAE.MAC will automatically read the [DAKAE.MAC](DAKAE.MAC.txt) source file (a slightly modified copy of [DAKAEM.MAC](DAKAEM.MAC.txt)), assemble it, and then load the binary output at the specified address. diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index 3ccbb7d6b..9d2208647 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -719,8 +719,8 @@ Vx.prototype.Cg=function(a,b,c){if(b)if(a){0>this.A&&this.C.length&&(this.A=0);i function Wx(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a|0:(b=Math.pow(2,b-1),a<-b?(a<2*-b&&(d=a%(2*b)),d+=2*b):d>=b&&(a>=2*b&&(d=a%(2*b)),d-=2*b));a!=d&&(a=d);return a} function Xx(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Wx(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&dy(a,null,d)}return d} function ey(a,b){var c,d=a.qa[0],e=a.qa[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=cy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?by(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.ha}if(null== diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js index 1786310d2..87178389c 100644 --- a/modules/pdp10/lib/cpuops.js +++ b/modules/pdp10/lib/cpuops.js @@ -165,9 +165,9 @@ PDP10.opKA10 = function(op) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opUUO = function(op, acc) +PDP10.opUUO = function(op, ac) { this.opUndefined(op); }; @@ -192,9 +192,9 @@ PDP10.opUUO = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opUFA = function(op, acc) +PDP10.opUFA = function(op, ac) { this.opUndefined(op); }; @@ -212,9 +212,9 @@ PDP10.opUFA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opDFN = function(op, acc) +PDP10.opDFN = function(op, ac) { this.opUndefined(op); }; @@ -245,9 +245,9 @@ PDP10.opDFN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSC = function(op, acc) +PDP10.opFSC = function(op, ac) { this.opUndefined(op); }; @@ -282,9 +282,9 @@ PDP10.opFSC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIBP = function(op, acc) +PDP10.opIBP = function(op, ac) { var inc = 0; var w = this.readWord(this.regEA); @@ -327,9 +327,9 @@ PDP10.opIBP = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opILDB = function(op, acc) +PDP10.opILDB = function(op, ac) { /* * We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2 @@ -339,9 +339,9 @@ PDP10.opILDB = function(op, acc) * opIBP() on phase 1. */ if (this.regBP < 0) { - PDP10.opIBP.call(this, op, acc); + PDP10.opIBP.call(this, op, ac); } - PDP10.opLDB.call(this, op, acc); + PDP10.opLDB.call(this, op, ac); }; /** @@ -361,9 +361,9 @@ PDP10.opILDB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opLDB = function(op, acc) +PDP10.opLDB = function(op, ac) { /* * We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2 @@ -392,7 +392,7 @@ PDP10.opLDB = function(op, acc) */ w = Math.trunc(w / Math.pow(2, p)) % Math.pow(2, s); } - this.writeWord(acc, w); + this.writeWord(ac, w); this.regBP = -1; }; @@ -413,9 +413,9 @@ PDP10.opLDB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIDPB = function(op, acc) +PDP10.opIDPB = function(op, ac) { /* * We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2 @@ -425,9 +425,9 @@ PDP10.opIDPB = function(op, acc) * opIBP() on phase 1. */ if (this.regBP < 0) { - PDP10.opIBP.call(this, op, acc); + PDP10.opIBP.call(this, op, ac); } - PDP10.opDPB.call(this, op, acc); + PDP10.opDPB.call(this, op, ac); }; /** @@ -447,9 +447,9 @@ PDP10.opIDPB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opDPB = function(op, acc) +PDP10.opDPB = function(op, ac) { /* * We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2 @@ -468,7 +468,7 @@ PDP10.opDPB = function(op, acc) * over-large, we "mask" the resulting byte value (b) to 36 bits, so that when we re-assemble the final * result (w), there shouldn't be any overlap or overflow. */ - var b = ((this.readWord(acc) % Math.pow(2, s)) * Math.pow(2, p)) % PDP10.WORD_LIMIT; + var b = ((this.readWord(ac) % Math.pow(2, s)) * Math.pow(2, p)) % PDP10.WORD_LIMIT; w = (w - (w % Math.pow(2, p + s))) + b + (w % Math.pow(2, p)); this.writeWord(this.regEA, w); this.regBP = -1; @@ -479,9 +479,9 @@ PDP10.opDPB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFAD = function(op, acc) +PDP10.opFAD = function(op, ac) { this.opUndefined(op); }; @@ -491,9 +491,9 @@ PDP10.opFAD = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFADI = function(op, acc) +PDP10.opFADI = function(op, ac) { this.opUndefined(op); }; @@ -503,9 +503,9 @@ PDP10.opFADI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFADM = function(op, acc) +PDP10.opFADM = function(op, ac) { this.opUndefined(op); }; @@ -515,9 +515,9 @@ PDP10.opFADM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFADB = function(op, acc) +PDP10.opFADB = function(op, ac) { this.opUndefined(op); }; @@ -527,9 +527,9 @@ PDP10.opFADB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFADR = function(op, acc) +PDP10.opFADR = function(op, ac) { this.opUndefined(op); }; @@ -539,9 +539,9 @@ PDP10.opFADR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFADRI = function(op, acc) +PDP10.opFADRI = function(op, ac) { this.opUndefined(op); }; @@ -551,9 +551,9 @@ PDP10.opFADRI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFADRM = function(op, acc) +PDP10.opFADRM = function(op, ac) { this.opUndefined(op); }; @@ -563,9 +563,9 @@ PDP10.opFADRM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFADRB = function(op, acc) +PDP10.opFADRB = function(op, ac) { this.opUndefined(op); }; @@ -575,9 +575,9 @@ PDP10.opFADRB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSB = function(op, acc) +PDP10.opFSB = function(op, ac) { this.opUndefined(op); }; @@ -587,9 +587,9 @@ PDP10.opFSB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSBI = function(op, acc) +PDP10.opFSBI = function(op, ac) { this.opUndefined(op); }; @@ -599,9 +599,9 @@ PDP10.opFSBI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSBM = function(op, acc) +PDP10.opFSBM = function(op, ac) { this.opUndefined(op); }; @@ -611,9 +611,9 @@ PDP10.opFSBM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSBB = function(op, acc) +PDP10.opFSBB = function(op, ac) { this.opUndefined(op); }; @@ -623,9 +623,9 @@ PDP10.opFSBB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSBR = function(op, acc) +PDP10.opFSBR = function(op, ac) { this.opUndefined(op); }; @@ -635,9 +635,9 @@ PDP10.opFSBR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSBRI = function(op, acc) +PDP10.opFSBRI = function(op, ac) { this.opUndefined(op); }; @@ -647,9 +647,9 @@ PDP10.opFSBRI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSBRM = function(op, acc) +PDP10.opFSBRM = function(op, ac) { this.opUndefined(op); }; @@ -659,9 +659,9 @@ PDP10.opFSBRM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFSBRB = function(op, acc) +PDP10.opFSBRB = function(op, ac) { this.opUndefined(op); }; @@ -671,9 +671,9 @@ PDP10.opFSBRB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMP = function(op, acc) +PDP10.opFMP = function(op, ac) { this.opUndefined(op); }; @@ -683,9 +683,9 @@ PDP10.opFMP = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMPI = function(op, acc) +PDP10.opFMPI = function(op, ac) { this.opUndefined(op); }; @@ -695,9 +695,9 @@ PDP10.opFMPI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMPM = function(op, acc) +PDP10.opFMPM = function(op, ac) { this.opUndefined(op); }; @@ -707,9 +707,9 @@ PDP10.opFMPM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMPB = function(op, acc) +PDP10.opFMPB = function(op, ac) { this.opUndefined(op); }; @@ -719,9 +719,9 @@ PDP10.opFMPB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMPR = function(op, acc) +PDP10.opFMPR = function(op, ac) { this.opUndefined(op); }; @@ -731,9 +731,9 @@ PDP10.opFMPR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMPRI = function(op, acc) +PDP10.opFMPRI = function(op, ac) { this.opUndefined(op); }; @@ -743,9 +743,9 @@ PDP10.opFMPRI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMPRM = function(op, acc) +PDP10.opFMPRM = function(op, ac) { this.opUndefined(op); }; @@ -755,9 +755,9 @@ PDP10.opFMPRM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFMPRB = function(op, acc) +PDP10.opFMPRB = function(op, ac) { this.opUndefined(op); }; @@ -767,9 +767,9 @@ PDP10.opFMPRB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDV = function(op, acc) +PDP10.opFDV = function(op, ac) { this.opUndefined(op); }; @@ -779,9 +779,9 @@ PDP10.opFDV = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDVI = function(op, acc) +PDP10.opFDVI = function(op, ac) { this.opUndefined(op); }; @@ -791,9 +791,9 @@ PDP10.opFDVI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDVM = function(op, acc) +PDP10.opFDVM = function(op, ac) { this.opUndefined(op); }; @@ -803,9 +803,9 @@ PDP10.opFDVM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDVB = function(op, acc) +PDP10.opFDVB = function(op, ac) { this.opUndefined(op); }; @@ -815,9 +815,9 @@ PDP10.opFDVB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDVR = function(op, acc) +PDP10.opFDVR = function(op, ac) { this.opUndefined(op); }; @@ -827,9 +827,9 @@ PDP10.opFDVR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDVRI = function(op, acc) +PDP10.opFDVRI = function(op, ac) { this.opUndefined(op); }; @@ -839,9 +839,9 @@ PDP10.opFDVRI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDVRM = function(op, acc) +PDP10.opFDVRM = function(op, ac) { this.opUndefined(op); }; @@ -851,9 +851,9 @@ PDP10.opFDVRM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opFDVRB = function(op, acc) +PDP10.opFDVRB = function(op, ac) { this.opUndefined(op); }; @@ -872,11 +872,11 @@ PDP10.opFDVRB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVE = function(op, acc) +PDP10.opMOVE = function(op, ac) { - this.writeWord(acc, this.readWord(this.regEA)); + this.writeWord(ac, this.readWord(this.regEA)); }; /** @@ -895,11 +895,11 @@ PDP10.opMOVE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVEI = function(op, acc) +PDP10.opMOVEI = function(op, ac) { - this.writeWord(acc, this.regEA); + this.writeWord(ac, this.regEA); }; /** @@ -916,11 +916,11 @@ PDP10.opMOVEI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVEM = function(op, acc) +PDP10.opMOVEM = function(op, ac) { - this.writeWord(this.regEA, this.readWord(acc)); + this.writeWord(this.regEA, this.readWord(ac)); }; /** @@ -937,11 +937,11 @@ PDP10.opMOVEM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVES = function(op, acc) +PDP10.opMOVES = function(op, ac) { - if (acc) this.writeWord(acc, this.readWord(this.regEA)); + if (ac) this.writeWord(ac, this.readWord(this.regEA)); }; /** @@ -956,13 +956,13 @@ PDP10.opMOVES = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVS = function(op, acc) +PDP10.opMOVS = function(op, ac) { var src = this.readWord(this.regEA); src = ((src / PDP10.HALF_SHIFT)|0) + ((src & PDP10.HALF_MASK) * PDP10.HALF_SHIFT); - this.writeWord(acc, src); + this.writeWord(ac, src); }; /** @@ -979,11 +979,11 @@ PDP10.opMOVS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVSI = function(op, acc) +PDP10.opMOVSI = function(op, ac) { - this.writeWord(acc, this.regEA * PDP10.HALF_SHIFT); + this.writeWord(ac, this.regEA * PDP10.HALF_SHIFT); }; /** @@ -998,11 +998,11 @@ PDP10.opMOVSI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVSM = function(op, acc) +PDP10.opMOVSM = function(op, ac) { - var src = this.readWord(acc); + var src = this.readWord(ac); src = ((src / PDP10.HALF_SHIFT)|0) + ((src & PDP10.HALF_MASK) * PDP10.HALF_SHIFT); this.writeWord(this.regEA, src); }; @@ -1019,14 +1019,14 @@ PDP10.opMOVSM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVSS = function(op, acc) +PDP10.opMOVSS = function(op, ac) { var src = this.readWord(this.regEA); src = ((src / PDP10.HALF_SHIFT)|0) + ((src & PDP10.HALF_MASK) * PDP10.HALF_SHIFT); this.writeWord(this.regEA, src); - if (acc) this.writeWord(acc, src) + if (ac) this.writeWord(ac, src) }; /** @@ -1047,11 +1047,11 @@ PDP10.opMOVSS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVN = function(op, acc) +PDP10.opMOVN = function(op, ac) { - this.writeWord(acc, PDP10.doNEG.call(this, this.readWord(this.regEA))); + this.writeWord(ac, PDP10.doNEG.call(this, this.readWord(this.regEA))); }; /** @@ -1074,9 +1074,9 @@ PDP10.opMOVN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVNI = function(op, acc) +PDP10.opMOVNI = function(op, ac) { /* * We used to perform an in-line two's complement of regEA, since doNEG() updates the flags, and the @@ -1086,7 +1086,7 @@ PDP10.opMOVNI = function(op, acc) * * TODO: Verify the "set no flags" assertion on *real* (KA10) hardware. */ - this.writeWord(acc, PDP10.doNEG.call(this, this.regEA) /* this.regEA? PDP10.TWO_POW36 - this.regEA : 0 */); + this.writeWord(ac, PDP10.doNEG.call(this, this.regEA) /* this.regEA? PDP10.TWO_POW36 - this.regEA : 0 */); }; /** @@ -1107,11 +1107,11 @@ PDP10.opMOVNI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVNM = function(op, acc) +PDP10.opMOVNM = function(op, ac) { - this.writeWord(this.regEA, PDP10.doNEG.call(this, this.readWord(acc))); + this.writeWord(this.regEA, PDP10.doNEG.call(this, this.readWord(ac))); }; /** @@ -1132,13 +1132,13 @@ PDP10.opMOVNM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVNS = function(op, acc) +PDP10.opMOVNS = function(op, ac) { var dst = PDP10.doNEG.call(this, this.readWord(this.regEA)); this.writeWord(this.regEA, dst); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -1159,11 +1159,11 @@ PDP10.opMOVNS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVM = function(op, acc) +PDP10.opMOVM = function(op, ac) { - this.writeWord(acc, PDP10.doABS.call(this, this.readWord(this.regEA))); + this.writeWord(ac, PDP10.doABS.call(this, this.readWord(this.regEA))); }; /** @@ -1186,11 +1186,11 @@ PDP10.opMOVM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVMI = function(op, acc) +PDP10.opMOVMI = function(op, ac) { - this.writeWord(acc, this.regEA); // src is an 18-bit immediate value, so there's no need to call doABS() + this.writeWord(ac, this.regEA); // src is an 18-bit immediate value, so there's no need to call doABS() }; /** @@ -1211,11 +1211,11 @@ PDP10.opMOVMI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVMM = function(op, acc) +PDP10.opMOVMM = function(op, ac) { - this.writeWord(this.regEA, PDP10.doABS.call(this, this.readWord(acc))); + this.writeWord(this.regEA, PDP10.doABS.call(this, this.readWord(ac))); }; /** @@ -1236,13 +1236,13 @@ PDP10.opMOVMM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMOVMS = function(op, acc) +PDP10.opMOVMS = function(op, ac) { var dst = PDP10.doABS.call(this, this.readWord(this.regEA)); this.writeWord(this.regEA, dst); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -1258,11 +1258,11 @@ PDP10.opMOVMS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIMUL = function(op, acc) +PDP10.opIMUL = function(op, ac) { - this.writeWord(acc, PDP10.doMUL.call(this, this.readWord(acc), this.readWord(this.regEA), true)); + this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA), true)); }; /** @@ -1278,11 +1278,11 @@ PDP10.opIMUL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIMULI = function(op, acc) +PDP10.opIMULI = function(op, ac) { - this.writeWord(acc, PDP10.doMUL.call(this, this.readWord(acc), this.regEA, true)); + this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.regEA, true)); }; /** @@ -1298,11 +1298,11 @@ PDP10.opIMULI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIMULM = function(op, acc) +PDP10.opIMULM = function(op, ac) { - this.writeWord(this.regEA, PDP10.doMUL.call(this, this.readWord(acc), this.readWord(this.regEA), true)); + this.writeWord(this.regEA, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA), true)); }; /** @@ -1318,11 +1318,11 @@ PDP10.opIMULM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIMULB = function(op, acc) +PDP10.opIMULB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.doMUL.call(this, this.readWord(acc), this.readWord(this.regEA), true))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA), true))); }; /** @@ -1338,12 +1338,12 @@ PDP10.opIMULB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMUL = function(op, acc) +PDP10.opMUL = function(op, ac) { - this.writeWord(acc, PDP10.doMUL.call(this, this.readWord(acc), this.readWord(this.regEA))); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA))); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1359,12 +1359,12 @@ PDP10.opMUL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMULI = function(op, acc) +PDP10.opMULI = function(op, ac) { - this.writeWord(acc, PDP10.doMUL.call(this, this.readWord(acc), this.regEA)); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.regEA)); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1380,11 +1380,11 @@ PDP10.opMULI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMULM = function(op, acc) +PDP10.opMULM = function(op, ac) { - this.writeWord(this.regEA, PDP10.doMUL.call(this, this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -1400,12 +1400,12 @@ PDP10.opMULM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opMULB = function(op, acc) +PDP10.opMULB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.doMUL.call(this, this.readWord(acc), this.readWord(this.regEA)))); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA)))); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1423,14 +1423,14 @@ PDP10.opMULB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIDIV = function(op, acc) +PDP10.opIDIV = function(op, ac) { - var dst = PDP10.doDIV.call(this, this.readWord(acc), 0, this.readWord(this.regEA)); + var dst = PDP10.doDIV.call(this, this.readWord(ac), 0, this.readWord(this.regEA)); if (dst < 0) return; - this.writeWord(acc, dst); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(ac, dst); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1448,14 +1448,14 @@ PDP10.opIDIV = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIDIVI = function(op, acc) +PDP10.opIDIVI = function(op, ac) { - var dst = PDP10.doDIV.call(this, this.readWord(acc), 0, this.regEA); + var dst = PDP10.doDIV.call(this, this.readWord(ac), 0, this.regEA); if (dst < 0) return; - this.writeWord(acc, dst); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(ac, dst); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1473,11 +1473,11 @@ PDP10.opIDIVI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIDIVM = function(op, acc) +PDP10.opIDIVM = function(op, ac) { - var dst = PDP10.doDIV.call(this, this.readWord(acc), 0, this.readWord(this.regEA)); + var dst = PDP10.doDIV.call(this, this.readWord(ac), 0, this.readWord(this.regEA)); if (dst < 0) return; this.writeWord(this.regEA, dst); }; @@ -1497,11 +1497,11 @@ PDP10.opIDIVM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIDIVB = function(op, acc) +PDP10.opIDIVB = function(op, ac) { - var dst = PDP10.doDIV.call(this, this.readWord(acc), 0, this.readWord(this.regEA)); + var dst = PDP10.doDIV.call(this, this.readWord(ac), 0, this.readWord(this.regEA)); if (dst < 0) return; this.writeWord(this.regEA, dst); }; @@ -1522,16 +1522,16 @@ PDP10.opIDIVB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opDIV = function(op, acc) +PDP10.opDIV = function(op, ac) { - var ext = this.readWord(acc); - var dst = this.readWord((acc + 1) & 0o17); + var ext = this.readWord(ac); + var dst = this.readWord((ac + 1) & 0o17); dst = PDP10.doDIV.call(this, dst, ext, this.readWord(this.regEA)); if (dst < 0) return; - this.writeWord(acc, dst); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(ac, dst); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1550,16 +1550,16 @@ PDP10.opDIV = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opDIVI = function(op, acc) +PDP10.opDIVI = function(op, ac) { - var ext = this.readWord(acc); - var dst = this.readWord((acc + 1) & 0o17); + var ext = this.readWord(ac); + var dst = this.readWord((ac + 1) & 0o17); dst = PDP10.doDIV.call(this, dst, ext, this.regEA); if (dst < 0) return; - this.writeWord(acc, dst); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(ac, dst); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1578,12 +1578,12 @@ PDP10.opDIVI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opDIVM = function(op, acc) +PDP10.opDIVM = function(op, ac) { - var ext = this.readWord(acc); - var dst = this.readWord((acc + 1) & 0o17); + var ext = this.readWord(ac); + var dst = this.readWord((ac + 1) & 0o17); dst = PDP10.doDIV.call(this, dst, ext, this.readWord(this.regEA)); if (dst < 0) return; this.writeWord(this.regEA, dst); @@ -1605,16 +1605,16 @@ PDP10.opDIVM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opDIVB = function(op, acc) +PDP10.opDIVB = function(op, ac) { - var ext = this.readWord(acc); - var dst = this.readWord((acc + 1) & 0o17); + var ext = this.readWord(ac); + var dst = this.readWord((ac + 1) & 0o17); dst = PDP10.doDIV.call(this, dst, ext, this.readWord(this.regEA)); if (dst < 0) return; - this.writeWord(acc, this.writeWord(this.regEA, dst)); - this.writeWord((acc + 1) & 0o17, this.regExt); + this.writeWord(ac, this.writeWord(this.regEA, dst)); + this.writeWord((ac + 1) & 0o17, this.regExt); }; /** @@ -1655,16 +1655,16 @@ PDP10.opDIVB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opASH = function(op, acc) +PDP10.opASH = function(op, ac) { /* * Convert the unsigned 18-bit value in regEA to a signed 8-bit value (+/-255). */ var s = ((this.regEA << 14) >> 14) % 256; if (s) { - var w = this.readWord(acc), bits; + var w = this.readWord(ac), bits; /* * Convert the unsigned word (w) to a signed value (i), for convenience. */ @@ -1713,7 +1713,7 @@ PDP10.opASH = function(op, acc) } } w = (i < 0? i + PDP10.WORD_LIMIT: i); - this.writeWord(acc, w); + this.writeWord(ac, w); } }; @@ -1727,22 +1727,22 @@ PDP10.opASH = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opROT = function(op, acc) +PDP10.opROT = function(op, ac) { /* * Convert the unsigned 18-bit value in regEA to a signed 8-bit value, modulo 36 (+/-35). */ var s = ((this.regEA << 14) >> 14) % 36; if (s) { - var w = this.readWord(acc); + var w = this.readWord(ac); /* * Note that a right rotation (s < 0) of s bits is equivalent to a left rotation (s > 0) of 36 + s bits. */ if (s < 0) s = 36 + s; w = ((w * Math.pow(2, s)) % PDP10.WORD_LIMIT) + Math.trunc(w / Math.pow(2, 36 - s)); - this.writeWord(acc, w); + this.writeWord(ac, w); } }; @@ -1776,16 +1776,16 @@ PDP10.opROT = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opLSH = function(op, acc) +PDP10.opLSH = function(op, ac) { /* * Convert the unsigned 18-bit value in regEA to a signed 8-bit value (+/-255). */ var s = ((this.regEA << 14) >> 14) % 256; if (s) { - var w = this.readWord(acc); + var w = this.readWord(ac); if (s > 0) { if (s >= 36) { w = 0; @@ -1799,7 +1799,7 @@ PDP10.opLSH = function(op, acc) w = Math.trunc(w / Math.pow(2, -s)); } } - this.writeWord(acc, w); + this.writeWord(ac, w); } }; @@ -1816,12 +1816,12 @@ PDP10.opLSH = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJFFO = function(op, acc) +PDP10.opJFFO = function(op, ac) { var dst = 0; - var src = this.readWord(acc); + var src = this.readWord(ac); if (src) { while (src < PDP10.INT_LIMIT) { dst++; @@ -1829,7 +1829,7 @@ PDP10.opJFFO = function(op, acc) } this.setPC(this.regEA); } - this.writeWord((acc + 1) & 0o17, dst); + this.writeWord((ac + 1) & 0o17, dst); }; /** @@ -1849,9 +1849,9 @@ PDP10.opJFFO = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opASHC = function(op, acc) +PDP10.opASHC = function(op, ac) { /* * Convert the unsigned 18-bit value in regEA to a signed 8-bit value (+/-255). @@ -1859,8 +1859,8 @@ PDP10.opASHC = function(op, acc) var s = ((this.regEA << 14) >> 14) % 256; if (s) { var bits; - var wLeft = this.readWord(acc); - var wRight = this.readWord((acc + 1) & 0o17); + var wLeft = this.readWord(ac); + var wRight = this.readWord((ac + 1) & 0o17); if (s > 0) { /* * Handle all the left shift cases below, which don't need to worry about sign-extension @@ -1977,8 +1977,8 @@ PDP10.opASHC = function(op, acc) if (wLeft > PDP10.INT_MASK) wRight += PDP10.INT_LIMIT; } } - this.writeWord(acc, wLeft); - this.writeWord((acc + 1) & 0o17, wRight); + this.writeWord(ac, wLeft); + this.writeWord((ac + 1) & 0o17, wRight); } }; @@ -1994,17 +1994,17 @@ PDP10.opASHC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opROTC = function(op, acc) +PDP10.opROTC = function(op, ac) { /* * Convert the unsigned 18-bit value in regEA to a signed 8-bit value, modulo 72 (+/-71). */ var s = ((this.regEA << 14) >> 14) % 72; if (s) { - var wLeft = this.readWord(acc); - var wRight = this.readWord((acc + 1) & 0o17); + var wLeft = this.readWord(ac); + var wRight = this.readWord((ac + 1) & 0o17); var wLeftOrig = wLeft; /* * Note that a right rotation (s < 0) of s bits is equivalent to a left rotation (s > 0) of 72 + s bits. @@ -2017,8 +2017,8 @@ PDP10.opROTC = function(op, acc) wLeft = ((wRight * Math.pow(2, s - 36)) % PDP10.WORD_LIMIT) + Math.trunc(wLeft / Math.pow(2, 72 - s)); wRight = ((wLeftOrig * Math.pow(2, s - 36)) % PDP10.WORD_LIMIT) + Math.trunc(wRight / Math.pow(2, 72 - s)); } - this.writeWord(acc, wLeft); - this.writeWord((acc + 1) & 0o17, wRight); + this.writeWord(ac, wLeft); + this.writeWord((ac + 1) & 0o17, wRight); } }; @@ -2034,17 +2034,17 @@ PDP10.opROTC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opLSHC = function(op, acc) +PDP10.opLSHC = function(op, ac) { /* * Convert the unsigned 18-bit value in regEA to a signed 8-bit value (+/-255). */ var s = ((this.regEA << 14) >> 14) % 256; if (s) { - var wLeft = this.readWord(acc); - var wRight = this.readWord((acc + 1) & 0o17); + var wLeft = this.readWord(ac); + var wRight = this.readWord((ac + 1) & 0o17); if (s > 0) { if (s >= 36) { if (s >= 72) { @@ -2070,8 +2070,8 @@ PDP10.opLSHC = function(op, acc) wLeft = Math.trunc(wLeft / Math.pow(2, -s)); } } - this.writeWord(acc, wLeft); - this.writeWord((acc + 1) & 0o17, wRight); + this.writeWord(ac, wLeft); + this.writeWord((ac + 1) & 0o17, wRight); } }; @@ -2084,12 +2084,12 @@ PDP10.opLSHC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opEXCH = function(op, acc) +PDP10.opEXCH = function(op, ac) { - var tmp = this.readWord(acc); - this.writeWord(acc, this.readWord(this.regEA)); + var tmp = this.readWord(ac); + this.writeWord(ac, this.readWord(this.regEA)); this.writeWord(this.regEA, tmp); }; @@ -2116,12 +2116,12 @@ PDP10.opEXCH = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opBLT = function(op, acc) +PDP10.opBLT = function(op, ac) { var fDone = false; - var addrDst = this.readWord(acc); + var addrDst = this.readWord(ac); var addrSrc = (addrDst / PDP10.HALF_SHIFT)|0; addrDst &= PDP10.HALF_MASK; while (!fDone) { @@ -2134,7 +2134,7 @@ PDP10.opBLT = function(op, acc) * Since the CPU isn't currently running, the CPU is presumably being stepped, so we'll treat that the * same as the "priority interrupt" condition described above, update the accumulator, rewind the PC, and leave. */ - this.writeWord(acc, addrSrc * PDP10.HALF_SHIFT + addrDst); + this.writeWord(ac, addrSrc * PDP10.HALF_SHIFT + addrDst); if (!fDone) this.advancePC(-1); fDone = true; } @@ -2156,12 +2156,12 @@ PDP10.opBLT = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOBJP = function(op, acc) +PDP10.opAOBJP = function(op, ac) { - var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_LIMIT; - this.writeWord(acc, dst); + var dst = (this.readWord(ac) + 0o000001000001) % PDP10.WORD_LIMIT; + this.writeWord(ac, dst); if (dst < PDP10.INT_LIMIT) this.setPC(this.regEA); }; @@ -2180,12 +2180,12 @@ PDP10.opAOBJP = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOBJN = function(op, acc) +PDP10.opAOBJN = function(op, ac) { - var dst = (this.readWord(acc) + 0o000001000001) % PDP10.WORD_LIMIT; - this.writeWord(acc, dst); + var dst = (this.readWord(ac) + 0o000001000001) % PDP10.WORD_LIMIT; + this.writeWord(ac, dst); if (dst >= PDP10.INT_LIMIT) this.setPC(this.regEA); }; @@ -2228,29 +2228,29 @@ PDP10.opAOBJN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJRST = function(op, acc) +PDP10.opJRST = function(op, ac) { - if (acc & 0b0001) { + if (ac & 0b0001) { /* * Enter user mode. */ this.setUserMode(); } - if (acc & 0b0010) { + if (ac & 0b0010) { /* * Restore the flags. */ this.setPS(this.regLA); } - if (acc & 0b0100) { + if (ac & 0b0100) { /* * Halt the processor. */ this.stopCPU(); } - if (acc & 0b1000) { + if (ac & 0b1000) { /* * Restore interrupt channel. */ @@ -2264,7 +2264,7 @@ PDP10.opJRST = function(op, acc) * * From the DEC PDP-10 System Reference Manual (May 1968), p. 2-57: * - * If any flag specified by F [acc] is set, clear it and take the next instruction from location E, + * If any flag specified by F [ac] is set, clear it and take the next instruction from location E, * continuing sequential operation from there. * * To select one or a combination of these flags (which are among those described above) the programmer can specify @@ -2288,14 +2288,14 @@ PDP10.opJRST = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJFCL = function(op, acc) +PDP10.opJFCL = function(op, ac) { /* - * The acc (F) bits from the opcode align perfectly with the top 4 bits of regPS; all we have to do is shift acc left 14. + * The ac (F) bits from the opcode align perfectly with the top 4 bits of regPS; all we have to do is shift ac left 14. */ - var bitsPS = acc << 14; + var bitsPS = ac << 14; if (this.regPS & bitsPS) { this.regPS &= ~bitsPS; this.setPC(this.regEA); @@ -2315,9 +2315,9 @@ PDP10.opJFCL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opXCT = function(op, acc) +PDP10.opXCT = function(op, ac) { this.regXC = this.regEA; }; @@ -2327,9 +2327,9 @@ PDP10.opXCT = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opPUSHJ = function(op, acc) +PDP10.opPUSHJ = function(op, ac) { this.opUndefined(op); }; @@ -2360,11 +2360,11 @@ PDP10.opPUSHJ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opPUSH = function(op, acc) +PDP10.opPUSH = function(op, ac) { - var p = this.readWord(acc); + var p = this.readWord(ac); if (!PDP10.SIMH) { /* * This is the behavior that is clearly documented by DEC. @@ -2385,7 +2385,7 @@ PDP10.opPUSH = function(op, acc) this.regPS |= PDP10.PSFLAG.PD_OVFL; } } - this.writeWord(acc, p); + this.writeWord(ac, p); }; /** @@ -2402,18 +2402,18 @@ PDP10.opPUSH = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opPOP = function(op, acc) +PDP10.opPOP = function(op, ac) { - var p = this.readWord(acc); + var p = this.readWord(ac); var src = this.readWord(p & PDP10.HALF_MASK); this.writeWord(this.regEA, src); - if (this.regEA == acc) p = src; // this avoids re-reading the accumulator if the write just overwrote it + if (this.regEA == ac) p = src; // this avoids re-reading the accumulator if the write just overwrote it p -= 0o000001000001; if (p < 0) p += PDP10.WORD_LIMIT; if (((p / PDP10.HALF_SHIFT)|0) == PDP10.HALF_MASK) this.regPS |= PDP10.PSFLAG.PD_OVFL; - this.writeWord(acc, p); + this.writeWord(ac, p); }; /** @@ -2421,9 +2421,9 @@ PDP10.opPOP = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opPOPJ = function(op, acc) +PDP10.opPOPJ = function(op, ac) { this.opUndefined(op); }; @@ -2443,9 +2443,9 @@ PDP10.opPOPJ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJSR = function(op, acc) +PDP10.opJSR = function(op, ac) { this.writeWord(this.regEA, this.getPS() + this.getPC()); this.setPC(this.regEA + 1); @@ -2454,6 +2454,8 @@ PDP10.opJSR = function(op, acc) /** * opJSP(0o265000): Jump and Save PC * + * From the DEC PDP-10 System Reference Manual (May 1968), p. 2-58: + * * Place the current contents of the flags (as described above) in AC left and the contents of PC in AC right * (at this time PC contains an address one greater than the location of the JSP instruction). Take the next * instruction from location E and continue sequential operation from there. The flags are unaffected except @@ -2464,36 +2466,72 @@ PDP10.opJSR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJSP = function(op, acc) +PDP10.opJSP = function(op, ac) { - this.writeWord(acc, this.getPS() + this.getPC()); + this.writeWord(ac, this.getPS() + this.getPC()); this.setPC(this.regEA); }; /** - * opJSA(0o266000) + * opJSA(0o266000): Jump and Save AC + * + * From the DEC PDP-10 System Reference Manual (May 1968), p. 2-61: + * + * Place AC in location E, the effective address E in AC left, and the contents of PC in AC right (at this time + * PC contains an address one greater than the location of the JSA instruction). Take the next instruction from + * location E + 1 and continue sequential operation from there. The original contents of E are lost. + * + * If this instruction is executed as a result of a priority interrupt or in unrelocated 41 or 61 while the processor + * is in user mode, bit 5 of the PC word stored is 1 and the processor leaves user mode. + * + * Regarding JSA and JRA: + * + * A JSA combines advantages of the JSR and JSP. JSA does modify memory, but it saves PC in an accumulator + * without losing its previous contents (at a cost of not saving the flags). It is thus convenient for multiple-entry + * subroutines. In a subroutine called by a JSR, the returning JRST must refer to the (single) entry point. + * Since a JRA can retrieve the original PC by addressing AC as an index register, it is independent of any entry point + * without tying up an accumulator to the extent a JSP would. * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJSA = function(op, acc) +PDP10.opJSA = function(op, ac) { - this.opUndefined(op); + this.writeWord(this.regEA, this.readWord(ac)); + this.writeWord(ac, this.regEA * PDP10.HALF_SHIFT + this.getPC()); + this.setPC(this.regEA + 1); }; /** - * opJRA(0o267000) + * opJRA(0o267000): Jump and Restore AC + * + * From the DEC PDP-10 System Reference Manual (May 1968), p. 2-61: + * + * Place the contents of the location addressed by AC left into AC. Take the next instruction from location E and + * continue sequential operation from there. + * + * This opcode functions as the counterpart to JSA, but ONLY if location E (the effective address stored in the JRA) indexes + * with the same AC that was used with the JSA. + * + * JSA 17,F1 + * R1: ... + * ... + * F1: 0 ; location to save AC 17, as specified by the A field of "JSA 17,F1" + * F2: ... ; first instruction executed after "JSA 17,F1" + * JRA 17,(17) ; return to R1, after restoring AC 17 * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJRA = function(op, acc) +PDP10.opJRA = function(op, ac) { - this.opUndefined(op); + var acc = this.readWord(ac); + this.writeWord(ac, this.readWord((acc / PDP10.HALF_SHIFT)|0)); + this.setPC(this.regEA); }; /** @@ -2511,11 +2549,11 @@ PDP10.opJRA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opADD = function(op, acc) +PDP10.opADD = function(op, ac) { - this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -2533,11 +2571,11 @@ PDP10.opADD = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opADDI = function(op, acc) +PDP10.opADDI = function(op, ac) { - this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), this.regEA)); }; /** @@ -2555,11 +2593,11 @@ PDP10.opADDI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opADDM = function(op, acc) +PDP10.opADDM = function(op, ac) { - this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -2577,11 +2615,11 @@ PDP10.opADDM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opADDB = function(op, acc) +PDP10.opADDB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -2599,11 +2637,11 @@ PDP10.opADDB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSUB = function(op, acc) +PDP10.opSUB = function(op, ac) { - this.writeWord(acc, PDP10.doSUB.call(this, this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.doSUB.call(this, this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -2621,11 +2659,11 @@ PDP10.opSUB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSUBI = function(op, acc) +PDP10.opSUBI = function(op, ac) { - this.writeWord(acc, PDP10.doSUB.call(this, this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.doSUB.call(this, this.readWord(ac), this.regEA)); }; /** @@ -2643,11 +2681,11 @@ PDP10.opSUBI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSUBM = function(op, acc) +PDP10.opSUBM = function(op, ac) { - this.writeWord(this.regEA, PDP10.doSUB.call(this, this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.doSUB.call(this, this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -2665,11 +2703,11 @@ PDP10.opSUBM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSUBB = function(op, acc) +PDP10.opSUBB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.doSUB.call(this, this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.doSUB.call(this, this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -2682,11 +2720,11 @@ PDP10.opSUBB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAIL = function(op, acc) +PDP10.opCAIL = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.regEA) < 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.regEA) < 0) this.setPC(this.regPC + 1); }; /** @@ -2699,11 +2737,11 @@ PDP10.opCAIL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAIE = function(op, acc) +PDP10.opCAIE = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.regEA) == 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.regEA) == 0) this.setPC(this.regPC + 1); }; /** @@ -2716,11 +2754,11 @@ PDP10.opCAIE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAILE = function(op, acc) +PDP10.opCAILE = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.regEA) <= 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.regEA) <= 0) this.setPC(this.regPC + 1); }; /** @@ -2733,9 +2771,9 @@ PDP10.opCAILE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAIA = function(op, acc) +PDP10.opCAIA = function(op, ac) { // TODO: Determine if there's any need to actually perform the comparison. this.setPC(this.regPC + 1); @@ -2751,11 +2789,11 @@ PDP10.opCAIA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAIGE = function(op, acc) +PDP10.opCAIGE = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.regEA) >= 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.regEA) >= 0) this.setPC(this.regPC + 1); }; /** @@ -2768,11 +2806,11 @@ PDP10.opCAIGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAIN = function(op, acc) +PDP10.opCAIN = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.regEA) != 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.regEA) != 0) this.setPC(this.regPC + 1); }; /** @@ -2785,11 +2823,11 @@ PDP10.opCAIN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAIG = function(op, acc) +PDP10.opCAIG = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.regEA) > 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.regEA) > 0) this.setPC(this.regPC + 1); }; /** @@ -2803,11 +2841,11 @@ PDP10.opCAIG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAML = function(op, acc) +PDP10.opCAML = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.readWord(this.regEA)) < 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.readWord(this.regEA)) < 0) this.setPC(this.regPC + 1); }; /** @@ -2821,11 +2859,11 @@ PDP10.opCAML = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAME = function(op, acc) +PDP10.opCAME = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.readWord(this.regEA)) == 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.readWord(this.regEA)) == 0) this.setPC(this.regPC + 1); }; /** @@ -2839,11 +2877,11 @@ PDP10.opCAME = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAMLE = function(op, acc) +PDP10.opCAMLE = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.readWord(this.regEA)) <= 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.readWord(this.regEA)) <= 0) this.setPC(this.regPC + 1); }; /** @@ -2857,9 +2895,9 @@ PDP10.opCAMLE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAMA = function(op, acc) +PDP10.opCAMA = function(op, ac) { // TODO: Determine if there's any need to actually perform the comparison. this.setPC(this.regPC + 1); @@ -2876,11 +2914,11 @@ PDP10.opCAMA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAMGE = function(op, acc) +PDP10.opCAMGE = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.readWord(this.regEA)) >= 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.readWord(this.regEA)) >= 0) this.setPC(this.regPC + 1); }; /** @@ -2894,11 +2932,11 @@ PDP10.opCAMGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAMN = function(op, acc) +PDP10.opCAMN = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.readWord(this.regEA)) != 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.readWord(this.regEA)) != 0) this.setPC(this.regPC + 1); }; /** @@ -2912,11 +2950,11 @@ PDP10.opCAMN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opCAMG = function(op, acc) +PDP10.opCAMG = function(op, ac) { - if (PDP10.CMP(this.readWord(acc), this.readWord(this.regEA)) > 0) this.setPC(this.regPC + 1); + if (PDP10.CMP(this.readWord(ac), this.readWord(this.regEA)) > 0) this.setPC(this.regPC + 1); }; /** @@ -2929,11 +2967,11 @@ PDP10.opCAMG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJUMPL = function(op, acc) +PDP10.opJUMPL = function(op, ac) { - if (PDP10.SIGN(this.readWord(acc)) < 0) this.setPC(this.regEA); + if (PDP10.SIGN(this.readWord(ac)) < 0) this.setPC(this.regEA); }; /** @@ -2946,11 +2984,11 @@ PDP10.opJUMPL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJUMPE = function(op, acc) +PDP10.opJUMPE = function(op, ac) { - if (PDP10.SIGN(this.readWord(acc)) == 0) this.setPC(this.regEA); + if (PDP10.SIGN(this.readWord(ac)) == 0) this.setPC(this.regEA); }; /** @@ -2963,11 +3001,11 @@ PDP10.opJUMPE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJUMPLE = function(op, acc) +PDP10.opJUMPLE = function(op, ac) { - if (PDP10.SIGN(this.readWord(acc)) <= 0) this.setPC(this.regEA); + if (PDP10.SIGN(this.readWord(ac)) <= 0) this.setPC(this.regEA); }; /** @@ -2980,9 +3018,9 @@ PDP10.opJUMPLE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJUMPA = function(op, acc) +PDP10.opJUMPA = function(op, ac) { this.setPC(this.regEA); }; @@ -2997,11 +3035,11 @@ PDP10.opJUMPA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJUMPGE = function(op, acc) +PDP10.opJUMPGE = function(op, ac) { - if (PDP10.SIGN(this.readWord(acc)) >= 0) this.setPC(this.regEA); + if (PDP10.SIGN(this.readWord(ac)) >= 0) this.setPC(this.regEA); }; /** @@ -3014,11 +3052,11 @@ PDP10.opJUMPGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJUMPN = function(op, acc) +PDP10.opJUMPN = function(op, ac) { - if (PDP10.SIGN(this.readWord(acc)) != 0) this.setPC(this.regEA); + if (PDP10.SIGN(this.readWord(ac)) != 0) this.setPC(this.regEA); }; /** @@ -3031,11 +3069,11 @@ PDP10.opJUMPN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opJUMPG = function(op, acc) +PDP10.opJUMPG = function(op, ac) { - if (PDP10.SIGN(this.readWord(acc)) > 0) this.setPC(this.regEA); + if (PDP10.SIGN(this.readWord(ac)) > 0) this.setPC(this.regEA); }; /** @@ -3049,11 +3087,11 @@ PDP10.opJUMPG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIP = function(op, acc) +PDP10.opSKIP = function(op, ac) { - if (acc) this.writeWord(acc, this.readWord(this.regEA)); + if (ac) this.writeWord(ac, this.readWord(this.regEA)); }; /** @@ -3067,13 +3105,13 @@ PDP10.opSKIP = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIPL = function(op, acc) +PDP10.opSKIPL = function(op, ac) { var dst = this.readWord(this.regEA); if (PDP10.SIGN(dst) < 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3087,13 +3125,13 @@ PDP10.opSKIPL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIPE = function(op, acc) +PDP10.opSKIPE = function(op, ac) { var dst = this.readWord(this.regEA); if (PDP10.SIGN(dst) == 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3107,13 +3145,13 @@ PDP10.opSKIPE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIPLE = function(op, acc) +PDP10.opSKIPLE = function(op, ac) { var dst = this.readWord(this.regEA); if (PDP10.SIGN(dst) <= 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3127,12 +3165,12 @@ PDP10.opSKIPLE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIPA = function(op, acc) +PDP10.opSKIPA = function(op, ac) { this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, this.readWord(this.regEA)); + if (ac) this.writeWord(ac, this.readWord(this.regEA)); }; /** @@ -3146,13 +3184,13 @@ PDP10.opSKIPA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIPGE = function(op, acc) +PDP10.opSKIPGE = function(op, ac) { var dst = this.readWord(this.regEA); if (PDP10.SIGN(dst) >= 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3166,13 +3204,13 @@ PDP10.opSKIPGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIPN = function(op, acc) +PDP10.opSKIPN = function(op, ac) { var dst = this.readWord(this.regEA); if (PDP10.SIGN(dst) != 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3186,13 +3224,13 @@ PDP10.opSKIPN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSKIPG = function(op, acc) +PDP10.opSKIPG = function(op, ac) { var dst = this.readWord(this.regEA); if (PDP10.SIGN(dst) > 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3207,11 +3245,11 @@ PDP10.opSKIPG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJ = function(op, acc) +PDP10.opAOJ = function(op, ac) { - this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); }; /** @@ -3226,11 +3264,11 @@ PDP10.opAOJ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJL = function(op, acc) +PDP10.opAOJL = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); if (PDP10.SIGN(dst) < 0) this.setPC(this.regEA); }; @@ -3246,11 +3284,11 @@ PDP10.opAOJL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJE = function(op, acc) +PDP10.opAOJE = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); if (PDP10.SIGN(dst) == 0) this.setPC(this.regEA); }; @@ -3266,11 +3304,11 @@ PDP10.opAOJE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJLE = function(op, acc) +PDP10.opAOJLE = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); if (PDP10.SIGN(dst) <= 0) this.setPC(this.regEA); }; @@ -3286,11 +3324,11 @@ PDP10.opAOJLE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJA = function(op, acc) +PDP10.opAOJA = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); this.setPC(this.regEA); }; @@ -3306,11 +3344,11 @@ PDP10.opAOJA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJGE = function(op, acc) +PDP10.opAOJGE = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); if (PDP10.SIGN(dst) >= 0) this.setPC(this.regEA); }; @@ -3326,11 +3364,11 @@ PDP10.opAOJGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJN = function(op, acc) +PDP10.opAOJN = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); if (PDP10.SIGN(dst) != 0) this.setPC(this.regEA); }; @@ -3346,11 +3384,11 @@ PDP10.opAOJN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOJG = function(op, acc) +PDP10.opAOJG = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), 1)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), 1)); if (PDP10.SIGN(dst) > 0) this.setPC(this.regEA); }; @@ -3366,12 +3404,12 @@ PDP10.opAOJG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOS = function(op, acc) +PDP10.opAOS = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3386,13 +3424,13 @@ PDP10.opAOS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOSL = function(op, acc) +PDP10.opAOSL = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); if (PDP10.SIGN(dst) < 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3407,13 +3445,13 @@ PDP10.opAOSL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOSE = function(op, acc) +PDP10.opAOSE = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); if (PDP10.SIGN(dst) == 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3428,13 +3466,13 @@ PDP10.opAOSE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOSLE = function(op, acc) +PDP10.opAOSLE = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); if (PDP10.SIGN(dst) <= 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3449,13 +3487,13 @@ PDP10.opAOSLE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOSA = function(op, acc) +PDP10.opAOSA = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3470,13 +3508,13 @@ PDP10.opAOSA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOSGE = function(op, acc) +PDP10.opAOSGE = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); if (PDP10.SIGN(dst) >= 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3491,13 +3529,13 @@ PDP10.opAOSGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOSN = function(op, acc) +PDP10.opAOSN = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); if (PDP10.SIGN(dst) != 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3512,13 +3550,13 @@ PDP10.opAOSN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAOSG = function(op, acc) +PDP10.opAOSG = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), 1)); if (PDP10.SIGN(dst) > 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3533,11 +3571,11 @@ PDP10.opAOSG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJ = function(op, acc) +PDP10.opSOJ = function(op, ac) { - this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); }; /** @@ -3552,11 +3590,11 @@ PDP10.opSOJ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJL = function(op, acc) +PDP10.opSOJL = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) < 0) this.setPC(this.regEA); }; @@ -3572,11 +3610,11 @@ PDP10.opSOJL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJE = function(op, acc) +PDP10.opSOJE = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) == 0) this.setPC(this.regEA); }; @@ -3592,11 +3630,11 @@ PDP10.opSOJE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJLE = function(op, acc) +PDP10.opSOJLE = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) <= 0) this.setPC(this.regEA); }; @@ -3612,11 +3650,11 @@ PDP10.opSOJLE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJA = function(op, acc) +PDP10.opSOJA = function(op, ac) { - this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); this.setPC(this.regEA); }; @@ -3632,11 +3670,11 @@ PDP10.opSOJA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJGE = function(op, acc) +PDP10.opSOJGE = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) >= 0) this.setPC(this.regEA); }; @@ -3652,11 +3690,11 @@ PDP10.opSOJGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJN = function(op, acc) +PDP10.opSOJN = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) != 0) this.setPC(this.regEA); }; @@ -3672,11 +3710,11 @@ PDP10.opSOJN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOJG = function(op, acc) +PDP10.opSOJG = function(op, ac) { - var dst = this.writeWord(acc, PDP10.doADD.call(this, this.readWord(acc), PDP10.WORD_MASK)); + var dst = this.writeWord(ac, PDP10.doADD.call(this, this.readWord(ac), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) > 0) this.setPC(this.regEA); }; @@ -3692,12 +3730,12 @@ PDP10.opSOJG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOS = function(op, acc) +PDP10.opSOS = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3712,13 +3750,13 @@ PDP10.opSOS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOSL = function(op, acc) +PDP10.opSOSL = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) < 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3733,13 +3771,13 @@ PDP10.opSOSL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOSE = function(op, acc) +PDP10.opSOSE = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) == 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3754,13 +3792,13 @@ PDP10.opSOSE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOSLE = function(op, acc) +PDP10.opSOSLE = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) <= 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3775,13 +3813,13 @@ PDP10.opSOSLE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOSA = function(op, acc) +PDP10.opSOSA = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3796,13 +3834,13 @@ PDP10.opSOSA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOSGE = function(op, acc) +PDP10.opSOSGE = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) >= 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3817,13 +3855,13 @@ PDP10.opSOSGE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOSN = function(op, acc) +PDP10.opSOSN = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) != 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3838,13 +3876,13 @@ PDP10.opSOSN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSOSG = function(op, acc) +PDP10.opSOSG = function(op, ac) { var dst = this.writeWord(this.regEA, PDP10.doADD.call(this, this.readWord(this.regEA), PDP10.WORD_MASK)); if (PDP10.SIGN(dst) > 0) this.setPC(this.regPC + 1); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -3857,11 +3895,11 @@ PDP10.opSOSG = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETZ = function(op, acc) +PDP10.opSETZ = function(op, ac) { - this.writeWord(acc, 0); + this.writeWord(ac, 0); }; /** @@ -3873,9 +3911,9 @@ PDP10.opSETZ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETZM = function(op, acc) +PDP10.opSETZM = function(op, ac) { this.writeWord(this.regEA, 0); }; @@ -3889,11 +3927,11 @@ PDP10.opSETZM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETZB = function(op, acc) +PDP10.opSETZB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, 0)); + this.writeWord(this.regEA, this.writeWord(ac, 0)); }; /** @@ -3905,11 +3943,11 @@ PDP10.opSETZB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opAND = function(op, acc) +PDP10.opAND = function(op, ac) { - this.writeWord(acc, PDP10.AND(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.AND(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -3921,11 +3959,11 @@ PDP10.opAND = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDI = function(op, acc) +PDP10.opANDI = function(op, ac) { - this.writeWord(acc, PDP10.AND(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.AND(this.readWord(ac), this.regEA)); }; /** @@ -3937,11 +3975,11 @@ PDP10.opANDI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDM = function(op, acc) +PDP10.opANDM = function(op, ac) { - this.writeWord(this.regEA, PDP10.AND(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.AND(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -3954,11 +3992,11 @@ PDP10.opANDM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDB = function(op, acc) +PDP10.opANDB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.AND(this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.AND(this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -3971,11 +4009,11 @@ PDP10.opANDB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCA = function(op, acc) +PDP10.opANDCA = function(op, ac) { - this.writeWord(acc, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -3988,11 +4026,11 @@ PDP10.opANDCA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCAI = function(op, acc) +PDP10.opANDCAI = function(op, ac) { - this.writeWord(acc, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), this.regEA)); }; /** @@ -4005,11 +4043,11 @@ PDP10.opANDCAI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCAM = function(op, acc) +PDP10.opANDCAM = function(op, ac) { - this.writeWord(this.regEA, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4022,11 +4060,11 @@ PDP10.opANDCAM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCAB = function(op, acc) +PDP10.opANDCAB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -4039,11 +4077,11 @@ PDP10.opANDCAB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCM = function(op, acc) +PDP10.opANDCM = function(op, ac) { - this.writeWord(acc, PDP10.AND(this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(ac, PDP10.AND(this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4056,11 +4094,11 @@ PDP10.opANDCM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCMI = function(op, acc) +PDP10.opANDCMI = function(op, ac) { - this.writeWord(acc, PDP10.AND(this.readWord(acc), PDP10.WORD_MASK - this.regEA)); + this.writeWord(ac, PDP10.AND(this.readWord(ac), PDP10.WORD_MASK - this.regEA)); }; /** @@ -4073,11 +4111,11 @@ PDP10.opANDCMI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCMM = function(op, acc) +PDP10.opANDCMM = function(op, ac) { - this.writeWord(this.regEA, PDP10.AND(this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.AND(this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4090,11 +4128,11 @@ PDP10.opANDCMM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCMB = function(op, acc) +PDP10.opANDCMB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.AND(this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.AND(this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA)))); }; /** @@ -4107,11 +4145,11 @@ PDP10.opANDCMB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opXOR = function(op, acc) +PDP10.opXOR = function(op, ac) { - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4124,11 +4162,11 @@ PDP10.opXOR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opXORI = function(op, acc) +PDP10.opXORI = function(op, ac) { - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.regEA)); }; /** @@ -4141,11 +4179,11 @@ PDP10.opXORI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opXORM = function(op, acc) +PDP10.opXORM = function(op, ac) { - this.writeWord(this.regEA, PDP10.XOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.XOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4158,11 +4196,11 @@ PDP10.opXORM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opXORB = function(op, acc) +PDP10.opXORB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -4175,11 +4213,11 @@ PDP10.opXORB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIOR = function(op, acc) +PDP10.opIOR = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4192,11 +4230,11 @@ PDP10.opIOR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIORI = function(op, acc) +PDP10.opIORI = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.regEA)); }; /** @@ -4209,11 +4247,11 @@ PDP10.opIORI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIORM = function(op, acc) +PDP10.opIORM = function(op, ac) { - this.writeWord(this.regEA, PDP10.IOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.IOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4226,11 +4264,11 @@ PDP10.opIORM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opIORB = function(op, acc) +PDP10.opIORB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -4243,11 +4281,11 @@ PDP10.opIORB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCB = function(op, acc) +PDP10.opANDCB = function(op, ac) { - this.writeWord(acc, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(ac, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4260,11 +4298,11 @@ PDP10.opANDCB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCBI = function(op, acc) +PDP10.opANDCBI = function(op, ac) { - this.writeWord(acc, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.regEA)); + this.writeWord(ac, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.regEA)); }; /** @@ -4277,11 +4315,11 @@ PDP10.opANDCBI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCBM = function(op, acc) +PDP10.opANDCBM = function(op, ac) { - this.writeWord(this.regEA, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4294,11 +4332,11 @@ PDP10.opANDCBM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opANDCBB = function(op, acc) +PDP10.opANDCBB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.AND(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.AND(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA)))); }; /** @@ -4311,11 +4349,11 @@ PDP10.opANDCBB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opEQV = function(op, acc) +PDP10.opEQV = function(op, ac) { - this.writeWord(acc, PDP10.EQV(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.EQV(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4328,11 +4366,11 @@ PDP10.opEQV = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opEQVI = function(op, acc) +PDP10.opEQVI = function(op, ac) { - this.writeWord(acc, PDP10.EQV(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.EQV(this.readWord(ac), this.regEA)); }; /** @@ -4345,11 +4383,11 @@ PDP10.opEQVI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opEQVM = function(op, acc) +PDP10.opEQVM = function(op, ac) { - this.writeWord(this.regEA, PDP10.EQV(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.EQV(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4362,11 +4400,11 @@ PDP10.opEQVM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opEQVB = function(op, acc) +PDP10.opEQVB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.EQV(this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.EQV(this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -4379,11 +4417,11 @@ PDP10.opEQVB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETCA = function(op, acc) +PDP10.opSETCA = function(op, ac) { - this.writeWord(acc, PDP10.WORD_MASK - this.readWord(acc)); + this.writeWord(ac, PDP10.WORD_MASK - this.readWord(ac)); }; /** @@ -4395,11 +4433,11 @@ PDP10.opSETCA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETCAM = function(op, acc) +PDP10.opSETCAM = function(op, ac) { - this.writeWord(this.regEA, PDP10.WORD_MASK - this.readWord(acc)); + this.writeWord(this.regEA, PDP10.WORD_MASK - this.readWord(ac)); }; /** @@ -4411,11 +4449,11 @@ PDP10.opSETCAM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETCAB = function(op, acc) +PDP10.opSETCAB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.WORD_MASK - this.readWord(acc))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.WORD_MASK - this.readWord(ac))); }; /** @@ -4428,11 +4466,11 @@ PDP10.opSETCAB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCA = function(op, acc) +PDP10.opORCA = function(op, ac) { - this.writeWord(acc, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4445,11 +4483,11 @@ PDP10.opORCA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCAI = function(op, acc) +PDP10.opORCAI = function(op, ac) { - this.writeWord(acc, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), this.regEA)); }; /** @@ -4462,11 +4500,11 @@ PDP10.opORCAI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCAM = function(op, acc) +PDP10.opORCAM = function(op, ac) { - this.writeWord(this.regEA, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -4479,11 +4517,11 @@ PDP10.opORCAM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCAB = function(op, acc) +PDP10.opORCAB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), this.readWord(this.regEA)))); }; /** @@ -4496,11 +4534,11 @@ PDP10.opORCAB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETCM = function(op, acc) +PDP10.opSETCM = function(op, ac) { - this.writeWord(acc, PDP10.WORD_MASK - this.readWord(this.regEA)); + this.writeWord(ac, PDP10.WORD_MASK - this.readWord(this.regEA)); }; /** @@ -4513,11 +4551,11 @@ PDP10.opSETCM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETCMI = function(op, acc) +PDP10.opSETCMI = function(op, ac) { - this.writeWord(acc, PDP10.WORD_MASK - this.regEA); + this.writeWord(ac, PDP10.WORD_MASK - this.regEA); }; /** @@ -4530,9 +4568,9 @@ PDP10.opSETCMI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETCMM = function(op, acc) +PDP10.opSETCMM = function(op, ac) { this.writeWord(this.regEA, PDP10.WORD_MASK - this.readWord(this.regEA)); }; @@ -4547,11 +4585,11 @@ PDP10.opSETCMM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETCMB = function(op, acc) +PDP10.opSETCMB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4564,11 +4602,11 @@ PDP10.opSETCMB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCM = function(op, acc) +PDP10.opORCM = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4581,11 +4619,11 @@ PDP10.opORCM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCMI = function(op, acc) +PDP10.opORCMI = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), PDP10.WORD_MASK - this.regEA)); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), PDP10.WORD_MASK - this.regEA)); }; /** @@ -4598,11 +4636,11 @@ PDP10.opORCMI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCMM = function(op, acc) +PDP10.opORCMM = function(op, ac) { - this.writeWord(this.regEA, PDP10.IOR(this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.IOR(this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4615,11 +4653,11 @@ PDP10.opORCMM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCMB = function(op, acc) +PDP10.opORCMB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.IOR(this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.IOR(this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA)))); }; /** @@ -4632,11 +4670,11 @@ PDP10.opORCMB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCB = function(op, acc) +PDP10.opORCB = function(op, ac) { - this.writeWord(acc, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(ac, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4649,11 +4687,11 @@ PDP10.opORCB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCBI = function(op, acc) +PDP10.opORCBI = function(op, ac) { - this.writeWord(acc, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.regEA)); + this.writeWord(ac, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.regEA)); }; /** @@ -4666,11 +4704,11 @@ PDP10.opORCBI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCBM = function(op, acc) +PDP10.opORCBM = function(op, ac) { - this.writeWord(this.regEA, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA))); + this.writeWord(this.regEA, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA))); }; /** @@ -4683,11 +4721,11 @@ PDP10.opORCBM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opORCBB = function(op, acc) +PDP10.opORCBB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.IOR(PDP10.WORD_MASK - this.readWord(acc), PDP10.WORD_MASK - this.readWord(this.regEA)))); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.IOR(PDP10.WORD_MASK - this.readWord(ac), PDP10.WORD_MASK - this.readWord(this.regEA)))); }; /** @@ -4700,11 +4738,11 @@ PDP10.opORCBB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETO = function(op, acc) +PDP10.opSETO = function(op, ac) { - this.writeWord(acc, PDP10.WORD_MASK); + this.writeWord(ac, PDP10.WORD_MASK); }; /** @@ -4716,9 +4754,9 @@ PDP10.opSETO = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETOM = function(op, acc) +PDP10.opSETOM = function(op, ac) { this.writeWord(this.regEA, PDP10.WORD_MASK); }; @@ -4732,11 +4770,11 @@ PDP10.opSETOM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opSETOB = function(op, acc) +PDP10.opSETOB = function(op, ac) { - this.writeWord(this.regEA, this.writeWord(acc, PDP10.WORD_MASK)); + this.writeWord(this.regEA, this.writeWord(ac, PDP10.WORD_MASK)); }; /** @@ -4751,13 +4789,13 @@ PDP10.opSETOB = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLL = function(op, acc) +PDP10.opHLL = function(op, ac) { var src = this.readWord(this.regEA); - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHR(op, dst, src) + (src - (src & PDP10.HALF_MASK))); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHR(op, dst, src) + (src - (src & PDP10.HALF_MASK))); }; /** @@ -4775,12 +4813,12 @@ PDP10.opHLL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLLI = function(op, acc) +PDP10.opHLLI = function(op, ac) { - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHR(op, dst, 0)); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHR(op, dst, 0)); }; /** @@ -4795,11 +4833,11 @@ PDP10.opHLLI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLLM = function(op, acc) +PDP10.opHLLM = function(op, ac) { - var src = this.readWord(acc); + var src = this.readWord(ac); var dst = this.readWord(this.regEA); this.writeWord(this.regEA, PDP10.GETHR(op, dst, src) + (src - (src & PDP10.HALF_MASK))); }; @@ -4818,14 +4856,14 @@ PDP10.opHLLM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLLS = function(op, acc) +PDP10.opHLLS = function(op, ac) { var dst = this.readWord(this.regEA); dst = PDP10.SETHR(op, dst, dst); this.writeWord(this.regEA, dst); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -4841,13 +4879,13 @@ PDP10.opHLLS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRL = function(op, acc) +PDP10.opHRL = function(op, ac) { var src = (this.readWord(this.regEA) & PDP10.HALF_MASK) * PDP10.HALF_SHIFT; - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHR(op, dst, src) + src); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHR(op, dst, src) + src); }; /** @@ -4863,13 +4901,13 @@ PDP10.opHRL = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRLI = function(op, acc) +PDP10.opHRLI = function(op, ac) { var src = this.regEA * PDP10.HALF_SHIFT; - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHR(op, dst, src) + src); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHR(op, dst, src) + src); }; /** @@ -4885,11 +4923,11 @@ PDP10.opHRLI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRLM = function(op, acc) +PDP10.opHRLM = function(op, ac) { - var src = (this.readWord(acc) & PDP10.HALF_MASK) * PDP10.HALF_SHIFT; + var src = (this.readWord(ac) & PDP10.HALF_MASK) * PDP10.HALF_SHIFT; var dst = this.readWord(this.regEA); this.writeWord(this.regEA, PDP10.GETHR(op, dst, src) + src); }; @@ -4907,15 +4945,15 @@ PDP10.opHRLM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRLS = function(op, acc) +PDP10.opHRLS = function(op, ac) { var dst = this.readWord(this.regEA); var src = (dst & PDP10.HALF_MASK) * PDP10.HALF_SHIFT; dst = PDP10.GETHR(op, dst, src) + src; this.writeWord(this.regEA, dst); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -4931,13 +4969,13 @@ PDP10.opHRLS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRR = function(op, acc) +PDP10.opHRR = function(op, ac) { var src = this.readWord(this.regEA) & PDP10.HALF_MASK; - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHL(op, dst, src) + src); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHL(op, dst, src) + src); }; /** @@ -4953,12 +4991,12 @@ PDP10.opHRR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRRI = function(op, acc) +PDP10.opHRRI = function(op, ac) { - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHL(op, dst, this.regEA) + this.regEA); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHL(op, dst, this.regEA) + this.regEA); }; /** @@ -4974,11 +5012,11 @@ PDP10.opHRRI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRRM = function(op, acc) +PDP10.opHRRM = function(op, ac) { - var src = this.readWord(acc) & PDP10.HALF_MASK; + var src = this.readWord(ac) & PDP10.HALF_MASK; var dst = this.readWord(this.regEA); this.writeWord(this.regEA, PDP10.GETHL(op, dst, src) + src); }; @@ -4998,14 +5036,14 @@ PDP10.opHRRM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHRRS = function(op, acc) +PDP10.opHRRS = function(op, ac) { var dst = this.readWord(this.regEA); dst = PDP10.SETHL(op, dst, dst); this.writeWord(this.regEA, dst); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -5020,13 +5058,13 @@ PDP10.opHRRS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLR = function(op, acc) +PDP10.opHLR = function(op, ac) { var src = (this.readWord(this.regEA) / PDP10.HALF_SHIFT)|0; - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHL(op, dst, src) + src); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHL(op, dst, src) + src); }; /** @@ -5043,12 +5081,12 @@ PDP10.opHLR = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLRI = function(op, acc) +PDP10.opHLRI = function(op, ac) { - var dst = this.readWord(acc); - this.writeWord(acc, PDP10.GETHL(op, dst, 0)); + var dst = this.readWord(ac); + this.writeWord(ac, PDP10.GETHL(op, dst, 0)); }; /** @@ -5063,11 +5101,11 @@ PDP10.opHLRI = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLRM = function(op, acc) +PDP10.opHLRM = function(op, ac) { - var src = (this.readWord(acc) / PDP10.HALF_SHIFT)|0; + var src = (this.readWord(ac) / PDP10.HALF_SHIFT)|0; var dst = this.readWord(this.regEA); this.writeWord(this.regEA, PDP10.GETHL(op, dst, src) + src); }; @@ -5084,15 +5122,15 @@ PDP10.opHLRM = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opHLRS = function(op, acc) +PDP10.opHLRS = function(op, ac) { var dst = this.readWord(this.regEA); var src = (dst / PDP10.HALF_SHIFT)|0; dst = PDP10.GETHL(op, dst, src) + src; this.writeWord(this.regEA, dst); - if (acc) this.writeWord(acc, dst); + if (ac) this.writeWord(ac, dst); }; /** @@ -5100,11 +5138,11 @@ PDP10.opHLRS = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRNE = function(op, acc) +PDP10.opTRNE = function(op, ac) { - if (PDP10.AND(this.readWord(acc), this.regEA) == 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), this.regEA) == 0) this.setPC(this.regPC + 1); }; /** @@ -5112,11 +5150,11 @@ PDP10.opTRNE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLNE = function(op, acc) +PDP10.opTLNE = function(op, ac) { - if (PDP10.AND(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT) == 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT) == 0) this.setPC(this.regPC + 1); }; /** @@ -5124,9 +5162,9 @@ PDP10.opTLNE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRNA = function(op, acc) +PDP10.opTRNA = function(op, ac) { this.setPC(this.regPC + 1); }; @@ -5136,9 +5174,9 @@ PDP10.opTRNA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLNA = function(op, acc) +PDP10.opTLNA = function(op, ac) { this.setPC(this.regPC + 1); }; @@ -5148,11 +5186,11 @@ PDP10.opTLNA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRNN = function(op, acc) +PDP10.opTRNN = function(op, ac) { - if (PDP10.AND(this.readWord(acc), this.regEA) != 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), this.regEA) != 0) this.setPC(this.regPC + 1); }; /** @@ -5160,11 +5198,11 @@ PDP10.opTRNN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLNN = function(op, acc) +PDP10.opTLNN = function(op, ac) { - if (PDP10.AND(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT) != 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT) != 0) this.setPC(this.regPC + 1); }; /** @@ -5172,11 +5210,11 @@ PDP10.opTLNN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDNE = function(op, acc) +PDP10.opTDNE = function(op, ac) { - if (PDP10.AND(this.readWord(acc), this.readWord(this.regEA)) == 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), this.readWord(this.regEA)) == 0) this.setPC(this.regPC + 1); }; /** @@ -5184,11 +5222,11 @@ PDP10.opTDNE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSNE = function(op, acc) +PDP10.opTSNE = function(op, ac) { - if (PDP10.AND(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA))) == 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA))) == 0) this.setPC(this.regPC + 1); }; /** @@ -5196,9 +5234,9 @@ PDP10.opTSNE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDNA = function(op, acc) +PDP10.opTDNA = function(op, ac) { this.setPC(this.regPC + 1); }; @@ -5208,9 +5246,9 @@ PDP10.opTDNA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSNA = function(op, acc) +PDP10.opTSNA = function(op, ac) { this.setPC(this.regPC + 1); }; @@ -5220,11 +5258,11 @@ PDP10.opTSNA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDNN = function(op, acc) +PDP10.opTDNN = function(op, ac) { - if (PDP10.AND(this.readWord(acc), this.readWord(this.regEA)) != 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), this.readWord(this.regEA)) != 0) this.setPC(this.regPC + 1); }; /** @@ -5232,11 +5270,11 @@ PDP10.opTDNN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSNN = function(op, acc) +PDP10.opTSNN = function(op, ac) { - if (PDP10.AND(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA))) != 0) this.setPC(this.regPC + 1); + if (PDP10.AND(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA))) != 0) this.setPC(this.regPC + 1); }; /** @@ -5244,11 +5282,11 @@ PDP10.opTSNN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRZ = function(op, acc) +PDP10.opTRZ = function(op, ac) { - this.writeWord(acc, PDP10.CLR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), this.regEA)); }; /** @@ -5256,11 +5294,11 @@ PDP10.opTRZ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLZ = function(op, acc) +PDP10.opTLZ = function(op, ac) { - this.writeWord(acc, PDP10.CLR(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT)); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT)); }; /** @@ -5268,13 +5306,13 @@ PDP10.opTLZ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRZE = function(op, acc) +PDP10.opTRZE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); if (PDP10.AND(dst, this.regEA) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, this.regEA)); + this.writeWord(ac, PDP10.CLR(dst, this.regEA)); }; /** @@ -5282,14 +5320,14 @@ PDP10.opTRZE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLZE = function(op, acc) +PDP10.opTLZE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.regEA * PDP10.HALF_SHIFT; if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, src)); + this.writeWord(ac, PDP10.CLR(dst, src)); }; /** @@ -5297,12 +5335,12 @@ PDP10.opTLZE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRZA = function(op, acc) +PDP10.opTRZA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), this.regEA)); }; /** @@ -5310,12 +5348,12 @@ PDP10.opTRZA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLZA = function(op, acc) +PDP10.opTLZA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT)); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT)); }; /** @@ -5323,13 +5361,13 @@ PDP10.opTLZA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRZN = function(op, acc) +PDP10.opTRZN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); if (PDP10.AND(dst, this.regEA) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, this.regEA)); + this.writeWord(ac, PDP10.CLR(dst, this.regEA)); }; /** @@ -5337,14 +5375,14 @@ PDP10.opTRZN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLZN = function(op, acc) +PDP10.opTLZN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.regEA * PDP10.HALF_SHIFT; if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, src)); + this.writeWord(ac, PDP10.CLR(dst, src)); }; /** @@ -5352,11 +5390,11 @@ PDP10.opTLZN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDZ = function(op, acc) +PDP10.opTDZ = function(op, ac) { - this.writeWord(acc, PDP10.CLR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -5364,11 +5402,11 @@ PDP10.opTDZ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSZ = function(op, acc) +PDP10.opTSZ = function(op, ac) { - this.writeWord(acc, PDP10.CLR(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA)))); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA)))); }; /** @@ -5376,14 +5414,14 @@ PDP10.opTSZ = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDZE = function(op, acc) +PDP10.opTDZE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.readWord(this.regEA); if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, src)); + this.writeWord(ac, PDP10.CLR(dst, src)); }; /** @@ -5391,14 +5429,14 @@ PDP10.opTDZE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSZE = function(op, acc) +PDP10.opTSZE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = PDP10.SWAP(this.readWord(this.regEA)); if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, src)); + this.writeWord(ac, PDP10.CLR(dst, src)); }; /** @@ -5406,12 +5444,12 @@ PDP10.opTSZE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDZA = function(op, acc) +PDP10.opTDZA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -5419,12 +5457,12 @@ PDP10.opTDZA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSZA = function(op, acc) +PDP10.opTSZA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA)))); + this.writeWord(ac, PDP10.CLR(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA)))); }; /** @@ -5432,14 +5470,14 @@ PDP10.opTSZA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDZN = function(op, acc) +PDP10.opTDZN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.readWord(this.regEA); if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, src)); + this.writeWord(ac, PDP10.CLR(dst, src)); }; /** @@ -5447,14 +5485,14 @@ PDP10.opTDZN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSZN = function(op, acc) +PDP10.opTSZN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = PDP10.SWAP(this.readWord(this.regEA)); if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.CLR(dst, src)); + this.writeWord(ac, PDP10.CLR(dst, src)); }; /** @@ -5462,11 +5500,11 @@ PDP10.opTSZN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRC = function(op, acc) +PDP10.opTRC = function(op, ac) { - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.regEA)); }; /** @@ -5474,11 +5512,11 @@ PDP10.opTRC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLC = function(op, acc) +PDP10.opTLC = function(op, ac) { - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT)); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT)); }; /** @@ -5486,13 +5524,13 @@ PDP10.opTLC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRCE = function(op, acc) +PDP10.opTRCE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); if (PDP10.AND(dst, this.regEA) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, this.regEA)); + this.writeWord(ac, PDP10.XOR(dst, this.regEA)); }; /** @@ -5500,14 +5538,14 @@ PDP10.opTRCE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLCE = function(op, acc) +PDP10.opTLCE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.regEA * PDP10.HALF_SHIFT; if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, src)); + this.writeWord(ac, PDP10.XOR(dst, src)); }; /** @@ -5515,12 +5553,12 @@ PDP10.opTLCE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRCA = function(op, acc) +PDP10.opTRCA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.regEA)); }; /** @@ -5528,12 +5566,12 @@ PDP10.opTRCA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLCA = function(op, acc) +PDP10.opTLCA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT)); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT)); }; /** @@ -5541,13 +5579,13 @@ PDP10.opTLCA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRCN = function(op, acc) +PDP10.opTRCN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); if (PDP10.AND(dst, this.regEA) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, this.regEA)); + this.writeWord(ac, PDP10.XOR(dst, this.regEA)); }; /** @@ -5555,14 +5593,14 @@ PDP10.opTRCN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLCN = function(op, acc) +PDP10.opTLCN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.regEA * PDP10.HALF_SHIFT; if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, src)); + this.writeWord(ac, PDP10.XOR(dst, src)); }; /** @@ -5570,11 +5608,11 @@ PDP10.opTLCN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDC = function(op, acc) +PDP10.opTDC = function(op, ac) { - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -5582,11 +5620,11 @@ PDP10.opTDC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSC = function(op, acc) +PDP10.opTSC = function(op, ac) { - this.writeWord(acc, PDP10.XOR(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA)))); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA)))); }; /** @@ -5594,14 +5632,14 @@ PDP10.opTSC = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDCE = function(op, acc) +PDP10.opTDCE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.readWord(this.regEA); if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, src)); + this.writeWord(ac, PDP10.XOR(dst, src)); }; /** @@ -5609,14 +5647,14 @@ PDP10.opTDCE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSCE = function(op, acc) +PDP10.opTSCE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = PDP10.SWAP(this.readWord(this.regEA)); if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, src)); + this.writeWord(ac, PDP10.XOR(dst, src)); }; /** @@ -5624,12 +5662,12 @@ PDP10.opTSCE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDCA = function(op, acc) +PDP10.opTDCA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -5637,12 +5675,12 @@ PDP10.opTDCA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSCA = function(op, acc) +PDP10.opTSCA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA)))); + this.writeWord(ac, PDP10.XOR(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA)))); }; /** @@ -5650,14 +5688,14 @@ PDP10.opTSCA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDCN = function(op, acc) +PDP10.opTDCN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.readWord(this.regEA); if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, src)); + this.writeWord(ac, PDP10.XOR(dst, src)); }; /** @@ -5665,14 +5703,14 @@ PDP10.opTDCN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSCN = function(op, acc) +PDP10.opTSCN = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = PDP10.SWAP(this.readWord(this.regEA)); if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.XOR(dst, src)); + this.writeWord(ac, PDP10.XOR(dst, src)); }; /** @@ -5680,11 +5718,11 @@ PDP10.opTSCN = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRO = function(op, acc) +PDP10.opTRO = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.regEA)); }; /** @@ -5692,11 +5730,11 @@ PDP10.opTRO = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLO = function(op, acc) +PDP10.opTLO = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT)); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT)); }; /** @@ -5704,13 +5742,13 @@ PDP10.opTLO = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTROE = function(op, acc) +PDP10.opTROE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); if (PDP10.AND(dst, this.regEA) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, this.regEA)); + this.writeWord(ac, PDP10.IOR(dst, this.regEA)); }; /** @@ -5718,13 +5756,13 @@ PDP10.opTROE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLOE = function(op, acc) +PDP10.opTLOE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); if (PDP10.AND(dst, this.regEA * PDP10.HALF_SHIFT) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, this.regEA * PDP10.HALF_SHIFT)); + this.writeWord(ac, PDP10.IOR(dst, this.regEA * PDP10.HALF_SHIFT)); }; /** @@ -5732,12 +5770,12 @@ PDP10.opTLOE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTROA = function(op, acc) +PDP10.opTROA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.regEA)); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.regEA)); }; /** @@ -5745,12 +5783,12 @@ PDP10.opTROA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLOA = function(op, acc) +PDP10.opTLOA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.regEA * PDP10.HALF_SHIFT)); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.regEA * PDP10.HALF_SHIFT)); }; /** @@ -5758,13 +5796,13 @@ PDP10.opTLOA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTRON = function(op, acc) +PDP10.opTRON = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); if (PDP10.AND(dst, this.regEA) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, this.regEA)); + this.writeWord(ac, PDP10.IOR(dst, this.regEA)); }; /** @@ -5772,14 +5810,14 @@ PDP10.opTRON = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTLON = function(op, acc) +PDP10.opTLON = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.regEA * PDP10.HALF_SHIFT; if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, src)); + this.writeWord(ac, PDP10.IOR(dst, src)); }; /** @@ -5787,11 +5825,11 @@ PDP10.opTLON = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDO = function(op, acc) +PDP10.opTDO = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -5799,11 +5837,11 @@ PDP10.opTDO = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSO = function(op, acc) +PDP10.opTSO = function(op, ac) { - this.writeWord(acc, PDP10.IOR(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA)))); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA)))); }; /** @@ -5811,14 +5849,14 @@ PDP10.opTSO = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDOE = function(op, acc) +PDP10.opTDOE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.readWord(this.regEA); if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, src)); + this.writeWord(ac, PDP10.IOR(dst, src)); }; /** @@ -5826,14 +5864,14 @@ PDP10.opTDOE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSOE = function(op, acc) +PDP10.opTSOE = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = PDP10.SWAP(this.readWord(this.regEA)); if (PDP10.AND(dst, src) == 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, src)); + this.writeWord(ac, PDP10.IOR(dst, src)); }; /** @@ -5841,12 +5879,12 @@ PDP10.opTSOE = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDOA = function(op, acc) +PDP10.opTDOA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(this.readWord(acc), this.readWord(this.regEA))); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), this.readWord(this.regEA))); }; /** @@ -5854,12 +5892,12 @@ PDP10.opTDOA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSOA = function(op, acc) +PDP10.opTSOA = function(op, ac) { this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(this.readWord(acc), PDP10.SWAP(this.readWord(this.regEA)))); + this.writeWord(ac, PDP10.IOR(this.readWord(ac), PDP10.SWAP(this.readWord(this.regEA)))); }; /** @@ -5867,14 +5905,14 @@ PDP10.opTSOA = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTDON = function(op, acc) +PDP10.opTDON = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = this.readWord(this.regEA); if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, src)); + this.writeWord(ac, PDP10.IOR(dst, src)); }; /** @@ -5882,14 +5920,14 @@ PDP10.opTDON = function(op, acc) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opTSON = function(op, acc) +PDP10.opTSON = function(op, ac) { - var dst = this.readWord(acc); + var dst = this.readWord(ac); var src = PDP10.SWAP(this.readWord(this.regEA)); if (PDP10.AND(dst, src) != 0) this.setPC(this.regPC + 1); - this.writeWord(acc, PDP10.IOR(dst, src)); + this.writeWord(ac, PDP10.IOR(dst, src)); }; /** @@ -6027,39 +6065,39 @@ PDP10.opIO = function(op) }; /** - * opNOP(op, acc) + * opNOP(op, ac) * * Used for all "defined" operations that, in fact, do nothing (eg, SETA, SETAI, CAI, JUMP). * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opNOP = function(op, acc) +PDP10.opNOP = function(op, ac) { }; /** - * opNOPM(op, acc) + * opNOPM(op, ac) * * Used for all "defined" operations that, in fact, do nothing (eg, SETMM, CAM) EXCEPT reference memory. * * @this {CPUStatePDP10} * @param {number} op - * @param {number} acc + * @param {number} ac */ -PDP10.opNOPM = function(op, acc) +PDP10.opNOPM = function(op, ac) { }; /** - * opUndefined(op, acc) + * opUndefined(op, ac) * * @this {CPUStatePDP10} * @param {number} op - * @param {number} [acc] + * @param {number} [ac] */ -PDP10.opUndefined = function(op, acc) +PDP10.opUndefined = function(op, ac) { this.println("undefined opcode: " + Str.toOct(op)); this.advancePC(-1); diff --git a/modules/pdp10/lib/macro10.js b/modules/pdp10/lib/macro10.js index d7faa9e49..56ad69785 100644 --- a/modules/pdp10/lib/macro10.js +++ b/modules/pdp10/lib/macro10.js @@ -378,19 +378,70 @@ class Macro10 { this.error("open scope from line " + this.stackScopes[0].nLine); } - for (let i = 0; i < this.aLiterals.length; i++) { - let lit = this.aLiterals[i]; - this.addSymbol(lit.name, this.nLocation, Macro10.SYMTYPE.LABEL); - lit.aWords.forEach(function(w, nLocation) { - macro10.genWord(w, lit.aFixups[nLocation]); - }); + let nLocationLiterals = this.nLocation; + for (let i = 0; i < this.aLiterals.length; i++) { /* - * TODO: Add support for "literal collapsing"; ie, if two or more literals generate the same - * set of values, then all instances after the first should refer back to the first (subject to - * exceptions identified by MACRO-10: eg, "literals that contain errors, undefined expressions, - * or EXTERNAL symbols.") + * Apparently, the time has come to implement "literal collapsing"; I was treating it as just + * a nice optimization, but it turns out that DEC has written tests that actually DEPEND on it: + * + * C26300: HRRZI [135531,,246642] ;PRELOAD AC0 WITH 0,, LITERAL ADDRESS + * JRA .+1 ;*JRA SHOULD PLACE C(AC0) INTO AC0 + * CAIE [135531,,246642] ;PASS IF JRA PLACED C(AC0) INTO AC0 + * STOP + * + * If the HRRZI and CAIE instructions don't refer to the same exact literal, the test will fail. + * For purposes of this particular test, the values they stuffed into the literals are essentially + * gibberish, but the same literal may be used in another test where the values are significant. + * + * However, I'm still going to keep it simple. In this example from p. 2-8 of the April 1978 + * MACRO-10 manual, I will NOT be attempting to collapse null words at the end of ASCIZ sequences + * with other null words, especially if they were defined before the ASCIZ: + * + * Literals having the same value are collapsed in MACRO's literal pool. + * Thus for the statements: + * + * PUSH P,[0] + * PUSH P,[0] + * MOVEI 1,[ASCIZ /TEST1/] + * + * the same address is shared by the two literals [0], and by the null word + * generated at the end of [ASCIZ /TEST1/]. */ + let lit = this.aLiterals[i]; + /* + * First things first: verify that the literal is one contiguous set of words (I'm not sure how + * it couldn't be, but better safe than sorry). + */ + let aWords = []; + let nWords = 0; + lit.aWords.forEach(function(w, nLocation) { + if (nLocation === aWords.length) aWords.push(w); + nWords++; + }); + if (nWords == aWords.length) { + /* + * So far, so good. Now we'll simply brute-force-search our way through the existing set of + * literals, looking for a complete match. + */ + for (let nLocation = nLocationLiterals; nLocation + nWords <= this.nLocation; nLocation++) { + let n; + for (n = 0; n < nWords; n++) { + if (aWords[n] !== this.aWords[nLocation + n] || lit.aFixups[n] != this.aFixups[nLocation]) break; + } + if (n == nWords) { + this.addSymbol(lit.name, nLocation, Macro10.SYMTYPE.LABEL); + lit = null; + break; + } + } + } + if (lit) { + this.addSymbol(lit.name, this.nLocation, Macro10.SYMTYPE.LABEL); + lit.aWords.forEach(function(w, nLocation) { + macro10.genWord(w, lit.aFixups[nLocation]); + }); + } } for (let i = 0; i < this.aVariables.length; i++) { @@ -701,9 +752,14 @@ class Macro10 { */ pushScope(name) { - this.stackScopes.push( - {name, aWords: this.aWords, aFixups: this.aFixups, nLocation: this.nLocation, nLocationScope: this.nLocationScope, nLine: this.nLine} - ); + this.stackScopes.push({ + name, + aWords: this.aWords, + aFixups: this.aFixups, + nLocation: this.nLocation, + nLocationScope: this.nLocationScope, + nLine: this.nLine + }); this.aWords = []; this.aFixups = []; this.nLocationScope = this.nLocation; diff --git a/modules/shared/lib/debugger.js b/modules/shared/lib/debugger.js index be37c4132..63a868901 100644 --- a/modules/shared/lib/debugger.js +++ b/modules/shared/lib/debugger.js @@ -872,26 +872,30 @@ class Debugger extends Component * * Although I started listing the operators in the RegExp in "precedential" order, that's not important; * what IS important is listing operators than contain shorter operators first. For example, bitwise - * shift operators must be listed BEFORE the logical less-than or greater-than operators. + * shift operators must be listed BEFORE the logical less-than or greater-than operators. aBinOpPrecedence + * is what determines precedence. * - * Also, to better accommodate MACRO-10 syntax, I've replaced the single '^' for XOR with '^!' (since - * MACRO-10 uses prefixes like "^D", "^O" and "^B" with numeric constants to indicate a base override). - * Similarly, I've added '!' as an alias for '|' (bitwise inclusive-or), '^-' as an alias for '~' (unary - * complement "not" operator), and '_' as a shift operator. + * Also, to better accommodate MACRO-10 syntax, I've replaced the single '^' for XOR with '^!', and I've + * added '!' as an alias for '|' (bitwise inclusive-or), '^-' as an alias for '~' (one's complement operator), + * and '_' as a shift operator (+/- values specify a left/right shift, and the count is not limited to 32). * * The MACRO-10 binary shifting suffix ('B') is a bit more problematic, since a capital B can also appear * inside symbols. So I pre-scan for that suffix and replace all non-symbolic occurrences with an internal * shift operator ('^_'). * * Note that Str.parseInt(), which parseValue() relies on, supports both the MACRO-10 base prefix overrides - * and the binary shifting suffix. But since the B suffix can also be a bracketed expression, we have to + * and the binary shifting suffix ('B'), but since that suffix can also be a bracketed expression, we have to * support it here as well. * - * MACRO-10 supports only a subset of all the PCjs operators; for example, MACRO-10 doesn't support bitwise - * exclusive-or, shift operators, or any of the boolean logical/compare operators. But unless we run into - * conflicts, I prefer sticking with this common set of operators. + * MACRO-10 supports only a subset of all the PCjs operators; for example, MACRO-10 doesn't support any of + * the boolean logical/compare operators. But unless we run into conflicts, I prefer sticking with this + * common set of operators. * - * WARNING: Whenever you make changes to this RegExp, make sure you update aBinOpPrecedence as needed, too. + * All whitespace in the expression is collapsed to single spaces, and space has been added to the list + * of "operators", but its sole function is as a separator, not as an operator. parseArray() will ignore + * single spaces as long as they are preceded and/or followed by a "real" operator. It would be dangerous + * to remove spaces entirely, because if an operator-less expression like "A B" was passed in, we would want + * that to generate an error; if we converted it to "AB", evaluation might inadvertently succeed. */ var regExp = /(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/; sExp = sExp.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/, "$1$2^_").replace(/\s+/g, ' '); diff --git a/versions/pc8080/1.34.3/pc8080-dbg.js b/versions/pc8080/1.34.3/pc8080-dbg.js index 0d801fa5c..3a18f0f96 100644 --- a/versions/pc8080/1.34.3/pc8080-dbg.js +++ b/versions/pc8080/1.34.3/pc8080-dbg.js @@ -201,8 +201,8 @@ ag.prototype.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);i function bg(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a|0:(b=Math.pow(2,b-1),a<-b?(a<2*-b&&(d=a%(2*b)),d+=2*b):d>=b&&(a>=2*b&&(d=a%(2*b)),d-=2*b));a!=d&&(a=d);return a} function cg(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=bg(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=dg(a,b,0,b.length,a.w,c);void 0!==d&&!1===c&&jg(a,null,d)}return d} function kg(a,b){var c,d=a.W[0],e=a.W[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=ig(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?hg(a,g):"undefined")}if(a.fa.length)for(d=a.fa[0],e=a.fa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=b.replace("["+c[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e= diff --git a/versions/pcx86/1.34.3/pcx86-dbg.js b/versions/pcx86/1.34.3/pcx86-dbg.js index 3ccbb7d6b..9d2208647 100644 --- a/versions/pcx86/1.34.3/pcx86-dbg.js +++ b/versions/pcx86/1.34.3/pcx86-dbg.js @@ -719,8 +719,8 @@ Vx.prototype.Cg=function(a,b,c){if(b)if(a){0>this.A&&this.C.length&&(this.A=0);i function Wx(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a|0:(b=Math.pow(2,b-1),a<-b?(a<2*-b&&(d=a%(2*b)),d+=2*b):d>=b&&(a>=2*b&&(d=a%(2*b)),d-=2*b));a!=d&&(a=d);return a} function Xx(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Wx(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&dy(a,null,d)}return d} function ey(a,b){var c,d=a.qa[0],e=a.qa[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=cy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?by(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.ha}if(null== diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js index 8f5bb4427..b2f2ac39f 100644 --- a/versions/pdpjs/1.34.3/pdp10-dbg.js +++ b/versions/pdpjs/1.34.3/pdp10-dbg.js @@ -31,8 +31,8 @@ var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi function ga(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});ga=function(){}}function ha(a){var b=0;return ja(function(){return ba?-b:b}});la("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); -var ra={rc:0,Jb:1,tc:2,uc:3,vc:4,wc:5,xc:6,yc:7,wb:8,zc:9,Kb:10,Ac:11,Bc:12,Lb:13,Cc:14,Dc:15,Ec:16,Fc:17,Gc:18,Hc:19,Ic:20,Jc:21,Kc:22,Lc:23,Mc:24,Nc:25,Oc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,vb:65,qc:66,sc:67,Pc:68,E:69,Qc:70,Rc:71,Sc:72,Tc:73,Uc:74,Vc:75,Wc:76,Xc:77,Yc:78,Zc:79,$c:80,Q:81,ad:82,bd:83,cd:84,dd:85,ed:86,fd:87, -gd:88,hd:89,Nb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,jd:97,kd:98,ld:99,d:100,e:101,md:102,nd:103,od:104,pd:105,qd:106,k:107,rd:108,sd:109,n:110,td:111,p:112,q:113,r:114,ud:115,t:116,wd:117,xd:118,yd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Mb:127}; +var ra={sc:0,Kb:1,uc:2,vc:3,wc:4,xc:5,yc:6,zc:7,xb:8,Ac:9,Lb:10,Bc:11,Cc:12,Mb:13,Dc:14,Ec:15,Fc:16,Gc:17,Hc:18,Ic:19,Jc:20,Kc:21,Lc:22,Mc:23,Nc:24,Oc:25,Pc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,rc:66,tc:67,Qc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,Vc:74,Wc:75,Xc:76,Yc:77,Zc:78,$c:79,ad:80,Q:81,bd:82,cd:83,dd:84,ed:85,fd:86,gd:87, +hd:88,jd:89,Ob:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,kd:97,ld:98,md:99,d:100,e:101,nd:102,od:103,pd:104,qd:105,rd:106,k:107,sd:108,td:109,n:110,ud:111,p:112,q:113,r:114,vd:115,t:116,xd:117,yd:118,zd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Nb:127}; function sa(a,b){var c;if(a){b||(b=10);var d,e,f=0g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function ua(a,b,c){b?12=b?6:16777215>=b?8:12);return ta(a,8,b,c?"0o":"")} @@ -41,74 +41,74 @@ function za(a){return a.replace(/[&<>"']/g,function(a){return Aa[a]})}function D function Ga(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} -function Ia(a,b){var c,d={ca:null,W:null,wa:null,va:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.wa=g.load;d.va=g.exec;if(e=g.bytes)d.ca=e;else if(e=g.words)for(d.ca=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ca=Array(4*e.length),f=c=0;c>8&255,d.ca[f++]=e[c]>>16&255,d.ca[f++]=e[c]>>24&255;else(e=g.data)?d.Na=e:d.ca=g;d.ca&&(d.ca.length?1==d.ca.length&&(q(d.ca[0]),d=null):(q("Empty resource: "+a),d=null));d.W=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.wa=g.load;d.va=g.exec;if(e=g.bytes)d.da=e;else if(e=g.words)for(d.da=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.da=Array(4*e.length),f=c=0;c>8&255,d.da[f++]=e[c]>>16&255,d.da[f++]=e[c]>>24&255;else(e=g.data)?d.Oa=e:d.da=g;d.da&&(d.da.length?1==d.da.length&&(q(d.da[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.Za=this.id:(this.$a=this.id.substr(0,a),this.Za=this.id.substr(a+1));this.A={ready:!1,Sa:!1,ob:!1,X:!1,error:!1};this.cb=null;this.A.error=!1;this.aa=c||0;this.D=this.v=this.G=this.H=this.xa=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date} +function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Cb=b.comment;this.Sb=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.$a=this.id:(this.ab=this.id.substr(0,a),this.$a=this.id.substr(a+1));this.A={ready:!1,Ua:!1,pb:!1,Y:!1,error:!1};this.eb=null;this.A.error=!1;this.ba=c||0;this.D=this.v=this.G=this.H=this.xa=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date} function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.ac,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Sb,toggle:this.lc,reset:this.hc, -set:this.kc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&&dc(this,this.w=0)}; -m.pa=function(a,b,c,d){if(this.H&&this.H.pa(a,b,c,d)||this.v&&this.v.pa(a,b,c,d)||this.D&&this.D.pa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart= -function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.pa.call(this,a,b,c,d)}};m.Ja=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.ya=function(a,b){if(!b)if(this.U&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.oa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()}; -m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.hc=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])} -m.Sb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.kc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.lc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.R=b==pc),!0):!1} -function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.bc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.cc=function(){};m.Xb=function(a){a||this.v.V()}; -m.Vb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.Xa(1);0a;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic, +set:this.lc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&&dc(this,this.w=0)}; +m.qa=function(a,b,c,d){if(this.H&&this.H.qa(a,b,c,d)||this.v&&this.v.qa(a,b,c,d)||this.D&&this.D.qa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart= +function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.qa.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.za=function(a,b){if(!b)if(this.U&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()}; +m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.ic=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])} +m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.R=b==pc),!0):!1} +function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.cc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.dc=function(){};m.Yb=function(a){a||this.v.W()}; +m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.Ya(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Va+=h.B-e,h.B=e,!0;if(e>=h.B+h.Va){l=h.size-(e-k);l>f&&(l=f);h.Va=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)} -function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.D(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.w(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.ja&&(a.ja+=a.qa,c=!0);0<=a.ka&&a.ka<=fd(a)&&(a.qa=a.ka=-1,bd(a),a.V(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Ea))}} -m.pa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.X)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.Y/a.Z?b=1:d=!0;a.ea=b;b=a.jb*a.ea;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.R=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Wa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Wa){l=h.size-(e-k);l>f&&(l=f);h.Wa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)} +function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.ka&&(a.ka+=a.ra,c=!0);0<=a.la&&a.la<=fd(a)&&(a.ra=a.la=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}} +m.qa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Y)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.Z/a.aa?b=1:d=!0;a.ga=b;b=a.kb*a.ga;if(a.aa!=b){a.aa=b;b=a.aa.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.R=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.T-=a.N;a.N=0;b&&(a.T=0);return c} -m.ic=function(){if(this.A.O){this.ab>=this.lb&&hd(this,!0);this.la=0;this.Da=ob();if(this.R){var a=this.Da-this.R;a>this.kb&&(this.L+=a,this.L>this.Da&&(this.L=this.Da))}try{do{var b=kd(this,this.A.Ra?1:this.Ga);try{this.Xa(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.la+=b;this.M+=b;vc(this,b);tc(this,b);this.ha-=b;if(0>=this.ha){this.ha+=this.Ga;++this.mb>=nd&&(this.H&&J(this.H,void 0),this.mb=0);break}}while(this.A.O)}catch(e){this.V();this.H&&this.H.stop(ob(),fd(this));zb(this, -e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Eb;this.R=ob();var c=this.kb;this.la&&(c=Math.round(c*this.la/this.Ga));var c=c-(this.R-this.Da),d=this.R-this.L;d&&(this.Y=Math.round(this.M/(10*d))/100,864E5<=d&&(this.U=0,gd(this)));if(0>c||this.Yc&&(this.L-=c),c=0;this.ab+=this.la;this.R+=c;a(b,c)}}}; -function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.hb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Eb,0)}}m.Xa=function(){return 0};m.V=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"]; -function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Cb=b;this.Ya=+a.addrReset||0;this.Ob=pd.bind(this);this.w=L.bind(this);this.Ba=null;this.ub=[];this.A.complete=!1}ka(od,Yc);m=od.prototype; -m.reset=function(){this.status("Model "+this.Cb);this.A.O&&this.V();this.Ha=this.Ia=this.b=this.K=0;this.i=this.Ca=this.Ya;this.I=this.ta=-1;this.F=this.j=0;this.nb=[0,0];this.ra=[0,0];this.ia=[0,0];this.sa=[0,0];this.Aa=this.i;this.C=0;this.f=this.ec;this.g=this.pc;this.Ba=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Hb=function(){return 0}; -m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ha,this.Ia,this.i,this.ta,this.I,this.j,this.C,this.Ca,this.Aa,this.Ya]);a.set(1,[]);a.set(2,[this.U,this.ea,this.A.da]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; -m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ha=b.next().value;this.Ia=b.next().value;this.i=b.next().value;this.ta=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ca=b.next().value;this.Aa=b.next().value;this.Ya=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.da=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};m.pc=function(a,b){var c=this.G;a=this.Aa=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; -m.Xa=function(a){this.A.complete=!0;var b=this.D?sd(this.D)?1:this.A.hb?-1:0:0,c=a?this.A.hb?0:1:-1;this.A.hb=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(td(this.D,this.i,c)){this.V();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ba||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&td(this.D,this.i,c)){this.V();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ha=this.f(this.b):0<=this.ta?(this.K=this.Ia=this.f(this.ta),this.ta=-1):(this.K= -this.Ia=this.f(this.Ca=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ha=this.f(a))&Sb;a=this.K&4194304?-1:this.Ia/Zb|0;0<=a&&this.Ob(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)} +m.jc=function(){if(this.A.O){this.bb>=this.mb&&hd(this,!0);this.ma=0;this.Ea=ob();if(this.R){var a=this.Ea-this.R;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ta?1:this.Ha);try{this.Ya(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.ma+=b;this.M+=b;vc(this,b);tc(this,b);this.ia-=b;if(0>=this.ia){this.ia+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this, +e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.R=ob();var c=this.lb;this.ma&&(c=Math.round(c*this.ma/this.Ha));var c=c-(this.R-this.Ea),d=this.R-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.U=0,gd(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.bb+=this.ma;this.R+=c;a(b,c)}}}; +function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Ya=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"]; +function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Za=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype; +m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Za;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ja=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0}; +m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Za]);a.set(1,[]);a.set(2,[this.U,this.ga,this.A.ea]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; +m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Za=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.ea=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; +m.Ya=function(a){this.A.complete=!0;var b=this.D?sd(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(td(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&td(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K= +this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)} function vd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function wd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}} function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function yd(a,b){this.g(b,this.f(this.b))}function zd(a,b){this.g(b,this.b)}function Ad(a,b){this.g(this.b,this.f(b))}function Bd(a,b){this.g(b,0)}function Cd(a,b){this.g(b,B-this.f(b))}function Dd(a,b){this.g(b,B)} -function Ed(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Fd(a,d,c)+(c-(c&x)))}function Gd(a,b){var c=this.f(b);this.g(b,Fd(a,c,0))}function Hd(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+(b-(b&x)))}function Zd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function $d(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)} +function Ed(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Fd(a,d,c)+(c-(c&x)))}function Gd(a,b){var c=this.f(b);this.g(b,Fd(a,c,0))}function Hd(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+(b-(b&x)))}function Id(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Jd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)} function ae(a,b){var c=this.b*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)}function be(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+b)}function ce(a,b){var c=this.f(this.b),d=(c&x)*y,c=Fd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function de(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,ee(a,d,c)+c)}function fe(a,b){var c=this.f(b);this.g(b,ee(a,c,this.b)+this.b)}function ge(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,ee(a,c,b)+b)} function he(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ie(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,ee(a,d,c)+c)}function je(a,b){var c=this.f(b);this.g(b,ee(a,c,0))}function ke(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,ee(a,c,b)+b)}function le(a,b){var c=this.f(this.b),d=c/y|0,c=ee(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){me[a&7].call(this,a,a>>3&127)} -function ne(){}function oe(){}function L(a){this.u("undefined opcode: "+ua(a));rd(this,-1);this.V()}function pe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;qe.call(this,a,b,c);return c} -function re(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.nb;f[0]=0;f[1]=0;f=this.ra;f[0]=1;f[1]=0;f=this.ia;f[0]=c;f[1]=0;c=this.sa;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),te(this.nb,this.ra),ue(this.sa)))break;ve(this.ia);ve(this.ra)}while(!ue(this.ra)); -a=this.nb[0];this.F=this.sa[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a} +function ne(){}function oe(){}function L(a){this.u("undefined opcode: "+ua(a));rd(this,-1);this.W()}function pe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;qe.call(this,a,b,c);return c} +function re(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ja;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),te(this.ob,this.sa),ue(this.ta)))break;ve(this.ja);ve(this.sa)}while(!ue(this.sa)); +a=this.ob[0];this.F=this.ta[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a} function we(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(dz)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b} function xe(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ye(a,b){var c=a-b;0>c&&(c+=C);qe.call(this,c,b,a);return c}function qe(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>0)}function U(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function V(a){return a>>0)}function X(a){return(a/y|0)+(a&x)*y}function ee(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Ub?x*y:0}return b}function Fd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b} @@ -124,158 +124,158 @@ this.g(b,a)}},function(a,b){if(a=(this.b<<14>>14)%36){var c=this.f(b);0>a&&(a=36 dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d>z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+ d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=(this.b<<14>>14)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),d=this.f(b+ 1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},L,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b,a)},function(a,b){a=!1;for(var c=this.f(b),d=c/y|0,c=c&x;!a;)this.g(c,this.f(d)),c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d* -y+c),a||rd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);if(b&2){var c=this.Ha,c=c/y|0;this.j=this.j&-254049|c&254048;this.j|=c&4096;c&2048?this.j&4096||(this.j|=2048):this.j&=-2049}b&4&&this.V();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.ta=this.b},L,function(a){this.w(a)},function(a,b){a= -this.f(b);a+=262145;this.g(a&x,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&x);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a){this.w(a)},function(){this.g(this.b,(this.j&x)*y+this.i);G(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);G(this,this.b)},function(a){this.w(a)},function(a){this.w(a)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a, -b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ye.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ye.call(this,this.f(b),this.f(this.b))))},ne,function(a,b){0>T(this.f(b),this.b)&&G(this, -this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+1)}, -function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){G(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b); -0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b), -1));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b, -Q.call(this,this.f(this.b),1));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0V(a)&&G(this,this.b)},function(a, -b){a=this.g(b,Q.call(this,this.f(b),B));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),B));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)}, -function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);if(b&2){var c=this.Ia,c=c/y|0;this.j=this.j&-254049|c&254048;this.j|=c&4096;c&2048?this.j&4096||(this.j|=2048):this.j&=-2049}b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.ua=this.b},L,function(a){this.w(a)},function(a,b){a= +this.f(b);a+=262145;this.g(a&x,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&x);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a){this.w(a)},function(){this.g(this.b,(this.j&x)*y+this.i);G(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b, +this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ye.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b, +this.g(b,ye.call(this,this.f(b),this.f(this.b))))},ne,function(a,b){0>T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b), +this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&& +G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){G(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a, +b){a=this.f(this.b);V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this, +this.f(b),1));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this, +this.f(this.b),1));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),B));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));G(this,this.i+1);b&&this.g(b,a)},function(a, +b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>>f.i;0>>= f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.vb&&c<=ra.Nb&&(b=c-(ra.vb-ra.Jb));b&&(a.preventDefault&&a.preventDefault(),d.fb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Lb&&(b=ra.Kb);d.fb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); -a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.fb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ja=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)}; -m.Ib=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.Za)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.$a+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.ya=function(a,b){if(!b)if(this.Ib(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -m.oa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.fb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)}; +m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.$a)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.ab+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.za=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +m.pa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Ke(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)&(c/Le|0))*Le+((b&c)>>>0)} function Me(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)^(c/Le|0))*Le+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b} function Ne(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break; case "&":f=Ke(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Le|0|g/Le|0)*Le+((f|g)>>>0));break;case "^!":f=Me(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Oe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Te(a,null,d)}return d} -function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.rb(b),0<=f?f=a.sb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f} +function Se(a,b,c){var d=void 0;a.ja=null;if(b){"{"!=a.aa[0]&&(b=b.split(a.aa[0]).join("{").split(a.aa[1]).join("}"));b=Re(a,b,'"',7,5,c);if(!b)return d;b=Re(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Oe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Te(a,null,d)}return d} +function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f} function Te(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.S?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ue(a){var b=a.I;a.I={};return b}function Ve(a,b){if(b)return Te(a,b,a.I[b]);var c=0;for(b in a.I)Te(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} var Qe={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Le=Math.pow(2,32); -function We(a){Ie.call(this,a);this.Ga=!1;this.Ea=18;this.L=36;this.Z=["<",">"];this.ra=[];this.Fa=Z();this.M=Z(0);this.ka=Z(0);this.ha=Z(0);this.F=[];this.b=this.N=this.K=[];Xe(this);this.U=this.la=0;this.i=[];this.Ca=void 0;Ye(this);this.D=this;this.Aa={};this.aa=this.Db=0;this.Y=null;this.R=[];Ze(this,a.messages);this.ta=a.commands;this.P=0;this.Ma=this.Da=null;this.C=this.Ia=this.Ha=this.ja=this.Ba=0;this.sa=this.qa=this.ea=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, -a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(We,Ie);function $e(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,bb:void 0===b?!1:b,na:!1,S:c}}function af(a,b,c,d){a.B=b;a.bb=c||!1;a.na=!1;a.S=d}function bf(a){return[a.B,a.bb,a.na,a.S,a.gb]}function cf(a,b){var c=Z(b[0],b[1],b[2]);c.na=b[3];b[4]&&(c.yb=Je(a,c.gb=b[4]));return c}m=We.prototype; -m.Ja=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.qa=a.j;this.Ea=b.F;(b=$c(a,"messages"))&&Ze(this,b);if(a=$c(a,"commands"))this.ta=a;df(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=$e(ef(d,c,d.ka));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+ -n(e<"];this.sa=[];this.Ga=Z();this.M=Z(0);this.la=Z(0);this.ia=Z(0);this.F=[];this.b=this.N=this.K=[];Xe(this);this.U=this.ma=0;this.i=[];this.Da=void 0;Ye(this);this.D=this;this.Ba={};this.ba=this.Eb=0;this.Z=null;this.R=[];Ze(this,a.messages);this.ua=a.commands;this.P=0;this.Na=this.Ea=null;this.C=this.Ja=this.Ia=this.ka=this.Ca=0;this.ta=this.ra=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, +a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(We,Ie);function $e(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,cb:void 0===b?!1:b,oa:!1,S:c}}function af(a,b,c,d){a.B=b;a.cb=c||!1;a.oa=!1;a.S=d}function bf(a){return[a.B,a.cb,a.oa,a.S,a.hb]}function cf(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Je(a,c.hb=b[4]));return c}m=We.prototype; +m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&Ze(this,b);if(a=$c(a,"commands"))this.ua=a;df(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=$e(ef(d,c,d.la));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+ +n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function hf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)} -function Ze(a,b){a.D=a;a.aa=a.Db=536870916;a.Y=null;a.R=[];b=Je(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;dd&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Ca==b&&(b=rd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1} -function zf(a,b,c,d){var e=Z(b.B),f=a.La(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Af)if(g=Af[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Bf;l=p&3;break;case 32256:k=Cf;l=p&7;break;case 29248:k=Df,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Ef&&(k="B");k=Ff[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f, --1)+")")}else k=Da(k,8)+hf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.La(e,1),g+=" "+hf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ra?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Ea)):h+(null!=d?"="+d.toString():""));return h} -function Hf(a,b,c,d,e){var f=-1,g,h;a.ia=null;if(b){for(var k=b.toUpperCase(),l=0;lEf&&(P="B");if(k==Ff[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&& +function sc(a,b,c,d){if(!uf(a))return!1;var e="";null===c&&(e=(c=!a.Ea||"tr"==a.Ea)?"tr":"t");a.C=0;b||sd(a)&&td(a,a.v.i,0);try{b=kd(a.v,b);var f=a.v.Ya(b);0>23&&a.v.Da==b&&(b=rd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1} +function zf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Af)if(g=Af[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Bf;l=p&3;break;case 32256:k=Cf;l=p&7;break;case 29248:k=Df,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Ef&&(k="B");k=Ff[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f, +-1)+")")}else k=Da(k,8)+hf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+hf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ta?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h} +function Hf(a,b,c,d,e){var f=-1,g,h;a.ja=null;if(b){for(var k=b.toUpperCase(),l=0;lEf&&(P="B");if(k==Ff[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&& (c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127 -h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ba=0;a.la=0} -m.Pa=function(a,b,c){var d=!0;c||If(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Pa(e&16383,a==this.K)}}d&&(a.push(b),c?b.na=!0:(Jf(this,a,a.length-1,"set"),Ye(this)));return d};function If(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g>>d.i],b==a.K));h.na||Ye(a);break}}return f} -function Kf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);af(e.Fa,d);f+="="+K(e,e.La(e.Fa),36)+" ";c+=f}if(b){b="";for(d=0;d=nf?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Fb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Fb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({vd:b,B:c,Tb:d,W:e,Ab:f})}function ng(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b>>0,h=f.Tb;if(e>=g&&eh||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.ma=0} +m.Qa=function(a,b,c){var d=!0;c||If(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Qa(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Jf(this,a,a.length-1,"set"),Ye(this)));return d};function If(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g>>d.i],b==a.K));h.oa||Ye(a);break}}return f} +function Kf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);af(e.Ga,d);f+="="+K(e,e.Ma(e.Ga),36)+" ";c+=f}if(b){b="";for(d=0;d=nf?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,X:e,Bb:f})}function ng(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case kf:G(h, +function wf(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trm\tdump misc registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.v,e=void 0;null==c&&(c=!0);if(b&&1b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case kf:G(h, g);af(a.M,h.i);break;case nf:f=65536;break;case of:f=32768;break;case pf:f=131072;break;case qf:f=32;break;case rf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(lg(a,e));c&&(af(a.M,d.i),xf(a,K(a,a.M.B,18)))}}function ug(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ha;l=b;h.B=l.B;h.bb=l.bb;h.na=l.na;h.S=l.S;a.u(zf(a,b,g,f));e-=b.B-k;c++}}} -function Lf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(vf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ha.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Y=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Ld= -[];"call"==Qf&&(Cb=1E5,Ld=["CALL"]);for(void 0!==Pf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Ca=da;Sf++;Cb--}}Sf||(a.u("no "+Rf+"history available"),a.Ca=void 0)}else{var hb=ef(a,ma,a.ka);if(hb){var Ka=0,Vf="ds"==eb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||wh,Ka=Pe(a,Ba);else{var Wf=ef(a,Ba);Wf&& -(Ka=Wf.B-hb.B)}0>Ka&&(Ka=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Vf?La+(oa+","):La+(ma+": "+oa+(0>Yf? -" "+Od:""))}La&&a.u(La);a.S=yh}}}}break;case "e":if("else"==g[0])break;var Zf,$f,ag=g[0],Qd=g[1];"e"==ag||"ew"==ag?(Zf=a.La,$f=a.xb):Qd=null;if(null==Qd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Hc=ef(a,Qd,a.ka);if(Hc)for(var Rd=2;Rd -Ud;){for(var Ma=null,Dh=256;65536>Hb.B>>>0;){Vd.B=a.La(Hb,2);if(null==Hb.B||!Dh--)break;if(!(Vd.B&1)){for(var Eh=a,Ic=Vd,cg=null,Ib=Ic.B,dg=Ib,Wd=1;6>=Wd&&Ib;Wd++){if(2jg)a.u("step commands:"), -a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var kg=Z(a.v.i);a.La(kg);a.P?(a.Pa(a.b,kg,!0),tf(a)||(a.H&&jd(a.H),a.P=0)):vg(a,jg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}wf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var ib=+g[2];if(2==ib||8==ib||10==ib||16==ib)a.S=ib;else{a.u("invalid base: "+ib);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.qa= -Kb;break;case "start":a.v.Fa=Kb;break;case "stop":a.v.ka=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ra?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.Z.toFixed(2)+"Mhz")+" ("+a.v.ea+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"), -a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":vg(a,g[0],g[1]);break;case "u":xf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){sg(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Cb+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){ug(a,b.substr(1));break}var Xd="commands:",Yd;for(Yd in xg)Xd+="\n"+ -Da(Yd,9)+xg[Yd];sd(a)||(Xd+="\nnote: history disabled if no exec breakpoints");a.u(Xd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(mg){a.u("Debugger "+(mg.stack||mg.message)),d=!1}return d}function ed(a,b,c){b=Je(a,b,c);for(var d in b)if(!Lf(a,b[+d]))return!1;return!0} +function vg(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instructions"),a.u("\ttr [#]\ttrace # instructions with register updates"),a.u("\ttc [#]\ttrace # cycles"),a.u("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Pe(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.Ea=b;Ua(c,function(){return Ob(a,!0)&&sc(a,e,d,!1)},function(){a.ra&&a.ra.stop();J(a.H,-1);Ob(a,!1)})}} +function xf(a,b,c,d){if(b=ef(a,b,a.M)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Pe(a,c.substr(1)),null!=c&&(d=c);else{d=ef(a,c);if(!d||d.Bh[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ia;l=b;h.B=l.B;h.cb=l.cb;h.oa=l.oa;h.S=l.S;a.u(zf(a,b,g,f));e-=b.B-k;c++}}} +function Lf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(vf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd= +[];"call"==Qf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Pf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Sf++;Cb--}}Sf||(a.u("no "+Rf+"history available"),a.Da=void 0)}else{var hb=ef(a,ma,a.la);if(hb){var Ka=0,Vf="ds"==eb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||wh,Ka=Pe(a,Ba);else{var Wf=ef(a,Ba);Wf&& +(Ka=Wf.B-hb.B)}0>Ka&&(Ka=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Vf?La+(oa+","):La+(ma+": "+oa+(0>Yf? +" "+Qd:""))}La&&a.u(La);a.S=yh}}}}break;case "e":if("else"==g[0])break;var Zf,$f,ag=g[0],Sd=g[1];"e"==ag||"ew"==ag?(Zf=a.Ma,$f=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Hc=ef(a,Sd,a.la);if(Hc)for(var Td=2;Td +Wd;){for(var Ma=null,Dh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Dh--)break;if(!(Xd.B&1)){for(var Eh=a,Ic=Xd,cg=null,Ib=Ic.B,dg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2jg)a.u("step commands:"), +a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var kg=Z(a.v.i);a.Ma(kg);a.P?(a.Qa(a.b,kg,!0),tf(a)||(a.H&&jd(a.H),a.P=0)):vg(a,jg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}wf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var ib=+g[2];if(2==ib||8==ib||10==ib||16==ib)a.S=ib;else{a.u("invalid base: "+ib);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra= +Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.la=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ta?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.aa.toFixed(2)+"Mhz")+" ("+a.v.ga+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"), +a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":vg(a,g[0],g[1]);break;case "u":xf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){sg(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){ug(a,b.substr(1));break}var Zd="commands:",$d;for($d in xg)Zd+="\n"+ +Da($d,9)+xg[$d];sd(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(mg){a.u("Debugger "+(mg.stack||mg.message)),d=!1}return d}function ed(a,b,c){b=Je(a,b,c);for(var d in b)if(!Lf(a,b[+d]))return!1;return!0} var xg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Ef=20,Ff=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "), kf=0,lf=1,mf=2,nf=3,of=4,pf=5,qf=6,rf=7,jf="PC RA EA C0 C1 OV ND PD".split(" "),yg={},Af=(yg[28672]={0:101},yg[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},yg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ef,9216:53,9472:52, 9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},yg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},yg[29248]={24576:79,24640:80,25088:81,25152:82},yg[28700]={28672:93,28676:94,28680:95,28684:96,28688:97, 28692:98,28696:99,28700:100},yg),Bf=["","I","M","S"],Cf=" L E LE A GE N G".split(" "),Df="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Gf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],sf=1E3,vf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;b([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Bg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){zg(a)}, 0)}})}} -function Ag(a){if(0<=a.ea.indexOf("p"))return a.u(a.G.join("")),0;var b=Ue(a.b);try{for(var c=0;cI)break;var u= -I+1,P=I+l.length,cb="",Ab="";I&&(cb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==cb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Dg(a,d,a.ga,Eg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Ng:"=:"==f&&(e|=Og),Dg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Pg(a,b))&&(b=b.replace(H,Qg(a,Rg,Pg(a,h))));H=Sg(a,b);)b=b.replace(H,H.slice(0,-1)); -if(!Tg(a,f,b))switch(f){case Ug:case Vg:case Wg:Kg(a,h);break;case Xg:(f=b)?(a.C=Hg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case Yg:Zg(a,b);break;case $g:Zg(a,b.replace(",",",,"));break;case ah:case bh:case ch:case Lg:case Mg:case dh:Qg(a,f,h);break;case eh:case fh:case gh:case hh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Hf(a.b,f,b,a.ga,!0)),0>H&&(H=Hg(a,h,!0)),void 0!==H?Fg(a,H,a.b.ia):a.error("unrecognized expression: "+h)}return!0} -function Tg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Oa=ih(a,c,!0),Gg(a,d.za,d.Qa,d.Oa,d.zb),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case bh:d.eb||Gg(a,d.za);break;case ch:d.eb&&Gg(a,d.za);break;case Lg:case Mg:for(b=0;bI)break;var u= +I+1,P=I+l.length,cb="",Ab="";I&&(cb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==cb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Dg(a,d,a.fa,Eg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Ng:"=:"==f&&(e|=Og),Dg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Pg(a,b))&&(b=b.replace(H,Qg(a,Rg,Pg(a,h))));H=Sg(a,b);)b=b.replace(H,H.slice(0,-1)); +if(!Tg(a,f,b))switch(f){case Ug:case Vg:case Wg:Kg(a,h);break;case Xg:(f=b)?(a.C=Hg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case Yg:Zg(a,b);break;case $g:Zg(a,b.replace(",",",,"));break;case ah:case bh:case ch:case Lg:case Mg:case dh:Qg(a,f,h);break;case eh:case fh:case gh:case hh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Hf(a.b,f,b,a.fa,!0)),0>H&&(H=Hg(a,h,!0)),void 0!==H?Fg(a,H,a.b.ja):a.error("unrecognized expression: "+h)}return!0} +function Tg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Pa=ih(a,c,!0),Gg(a,d.Aa,d.Sa,d.Pa,d.Ab),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case bh:d.fb||Gg(a,d.Aa);break;case ch:d.fb&&Gg(a,d.Aa);break;case Lg:case Mg:for(b=0;b"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Sg(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,eb:kh,Qa:e,zb:f,Oa:g,za:b+": 0",ba:a.ba};a.K.push(d)}return c} +function Hg(a,b,c,d){var e,f=b.match(/^([^,]*),,([^,]*)$/);f?(b=f[1]?Hg(a,f[1],c,d):0,void 0!==b&&(c=f[2]?Hg(a,f[2],c,d):0,void 0!==c&&(e=Y(a.b,b,18,!0)*Math.pow(2,18)+Y(a.b,c,18,!0)))):(void 0===d&&(d=0<=a.La?a.La:a.fa),e=Se(a.b,b.replace(/\.([^0-9]|$)/g,K(a.b,d,-1)+"$1"),c),void 0===e&&a.error("error parsing expression: "+b));return e} +function Pg(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Sg(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,fb:kh,Sa:e,Ab:f,Pa:g,Aa:b+": 0",ca:a.ca};a.K.push(d)}return c} function ih(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=jh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d} -function Kg(a,b){var c=b;null==a.w&&(a.w=a.H="",b&&(a.w=b[0],c=b=b.substr(1)));if(a.w){var d=b.indexOf(a.w);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.H+=b}if(null==a.w){var d=b=0,e,f,g=a.H.length;a.I==Vg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Fg(a,d),b=0)}b&&Fg(a,d)}return c} -function Qg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ah){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=ih(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=lh;c=3}else if(b==Rg)a.J="[",a.M="]",f="?"+va(++a.Y,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)], -b=mh,c=0;else if(b==Lg||b==Mg){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Bg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}rg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Eg=1,Ng=2,Og=4,Ug="ASCII",Vg="ASCIZ",ah="DEFINE",Xg="END",Yg="EXP",bh="IFE",ch="IFN",Lg="IRP",Mg="IRPC",eh="LALL",Rg="LITERAL",fh="PAGE",dh="REPEAT",Wg="SIXBIT",gh="SUBTTL",hh="TITLE",$g="XWD",lh=-1,mh=-2,kh=-3; -function nh(a,b,c){r.call(this,"Computer",a,33554432);this.A.X=!1;this.R=null;oh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Y=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.U=!1;this.I=this.C=null;this.T=this.P=!1;this.Z=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=ph(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.$a+".bus",busWidth:this.Y},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.xa)for(b= -0;b\nLicense: GPL version 3 or later ");for(b=0;bd?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.H+=b}if(null==a.D){var d=b=0,e,f,g=a.H.length;a.I==Vg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Fg(a,d),b=0)}b&&Fg(a,d)}return c} +function Qg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ah){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=ih(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=lh;c=3}else if(b==Rg)a.J="[",a.M="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)], +b=mh,c=0;else if(b==Lg||b==Mg){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Bg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}rg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Eg=1,Ng=2,Og=4,Ug="ASCII",Vg="ASCIZ",ah="DEFINE",Xg="END",Yg="EXP",bh="IFE",ch="IFN",Lg="IRP",Mg="IRPC",eh="LALL",Rg="LITERAL",fh="PAGE",dh="REPEAT",Wg="SIXBIT",gh="SUBTTL",hh="TITLE",$g="XWD",lh=-1,mh=-2,kh=-3; +function nh(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.R=null;oh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.U=!1;this.I=this.C=null;this.T=this.P=!1;this.aa=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=ph(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.ab+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.xa)for(b= +0;b\nLicense: GPL version 3 or later ");for(b=0;bqh){if(rh(d,this.L)){this.C=new F(this,"1.34.3",Lh);rh(this.C)&&(Mh(this,d),a=Nh,Oh(this.C));this.C.set(Ih,Ga());Ph(this.C);var e=this.b&&!this.K;if(a==Jh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Hh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?rh(d,g):("error"==f&&"no machine state"!= -g?(this.fa("Error: "+g),"unable to verify user"==g&&(Qa(Qh,""),this.i=null)):this.u(f+": "+g),Oh(d),rh(d)?(c=Hh(d),e=!0):c=!1))}e&&uh(this,c?d:null)}else a==Nh&&d.clear()}else uh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.X=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Rh(this,this.v,b,c,a),J(this,-2),this.v.da());this.P&&(Mh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0}; -function Mh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.Z;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}} -function wg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",vh),h=Ga();g.set(Ih,h);f.set(Ih,h);f.set(Sh,"1.34.3");f.set(Th,window?window.location.href:null);f.set(Uh,window?window.navigator.userAgent:"");a.v&&a.v.oa&&(c&&(b&&(a.v.A.da=a.v.A.O),a.v.V()),d=a.v.oa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.X=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;kqh){if(rh(d,this.L)){this.C=new F(this,"1.34.3",Lh);rh(this.C)&&(Mh(this,d),a=Nh,Oh(this.C));this.C.set(Ih,Ga());Ph(this.C);var e=this.b&&!this.K;if(a==Jh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Hh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?rh(d,g):("error"==f&&"no machine state"!= +g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(Qh,""),this.i=null)):this.u(f+": "+g),Oh(d),rh(d)?(c=Hh(d),e=!0):c=!1))}e&&uh(this,c?d:null)}else a==Nh&&d.clear()}else uh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Rh(this,this.v,b,c,a),J(this,-2),this.v.ea());this.P&&(Mh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0}; +function Mh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}} +function wg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",vh),h=Ga();g.set(Ih,h);f.set(Ih,h);f.set(Sh,"1.34.3");f.set(Th,window?window.location.href:null);f.set(Uh,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ea=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k=d||30<=(c.ib+=d))&&(e.textContent=c.A.O?c.Y.toFixed(2)+"Mhz":"Stopped",c.ib=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0>14)%36){var c=this.b(b);0>a&&(a=36+a);c=c*M 35+a)%G,d=Math.trunc(d/Math.pow(2,-a))+c,d>F&&(e+=G));this.c(b,d);this.c(b+1&15,e)}},function(a,b){if(a=(this.a<<14>>14)%72){var c=this.b(b),d=this.b(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%J+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%J+Math.trunc(d/Math.pow(2,72-a)));this.c(b,c);this.c(b+1&15,d)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),d=this.b(b+1&15);0< a?36<=a?(c=72<=a?0:d*Math.pow(2,a-36)%J,d=0):(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J):-36>=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%J,c=Math.trunc(c/Math.pow(2,-a)));this.c(b,c);this.c(b+1&15,d)}},O,function(a,b){a=this.b(b);this.c(b,this.b(this.a));this.c(this.a,a)},function(a,b){a=!1;for(var c=this.b(b),d=c/E|0,c=c&C;!a;)this.c(c,this.b(d)),c==this.a&&(a=!0),d=d+1&C,c=c+1&C,this.i.B||(this.c(b,d*E+c),a|| (this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa,c=c/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.h(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.da=this.a},O,function(a){this.h(a)},function(a,b){a= -this.b(b);a+=262145;this.c(a&C,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);M(this,this.a)},function(a){this.h(a)},function(a){this.h(a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a, -b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this, -this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)}, -function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this,this.a)},function(a,b){0<=X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a); -0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),1));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b), -1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a, -R.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a, -b){a=this.c(b,R.call(this,this.b(b),I));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),I));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)}, -function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);M(this,this.a)},function(a,b){this.c(this.a,this.b(b));this.c(b,this.a*E+this.f);M(this,this.a+1)},function(a,b){a=this.b(b);this.c(b, +this.b(a/E|0));M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a, +this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b), +this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this,this.a)},function(a,b){0<=X(this.b(b))&& +M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a, +b){a=this.b(this.a);X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),1));M(this,this.a)},function(a,b){a=this.c(b,R.call(this, +this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this, +this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),I));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));M(this,this.f+1);b&&this.c(b,a)},function(a, +b){a=this.c(this.a,R.call(this,this.b(this.a),I));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>>f.f;0a.u&&a.j.length&&(a.u=0);if(0>a.u||b!=a.j[a.u] function zj(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a|0:(b=Math.pow(2,b-1),a<-b?(a<2*-b&&(d=a%(2*b)),d+=2*b):d>=b&&(a>=2*b&&(d=a%(2*b)),d-=2*b));a!=d&&(a=d);return a} function Aj(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=zj(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Bj(a,b,0,b.length,a.W,c);void 0!==d&&!1===c&&Gj(a,null,d)}return d} function Cj(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.re(b),0<=f?f=a.Bd(f):(f=a.S[b],null==f&&(f=ma(b,1>>=2}f=zj(f)}else d||a.v("invalid "+(c?c:"value")+": "+b);else d||a.v("missing "+(c||"value"));return f} From e9134115b11409a1219efeb3e51579509f9a4f8a Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 15:33:43 -0700 Subject: [PATCH 06/27] Assorted README fixes --- ...3-24-stepping-through-pdp-10-diagnostics.md | 8 ++++---- apps/pdp10/diags/klad/dakaa/README.md | 16 ++++++++-------- apps/pdp10/diags/klad/dakab/README.md | 18 +++++++++--------- apps/pdp10/diags/klad/dakac/README.md | 18 +++++++++--------- apps/pdp10/diags/klad/dakad/README.md | 18 +++++++++--------- 5 files changed, 39 insertions(+), 39 deletions(-) diff --git a/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md b/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md index 45e3f224f..3f600724a 100644 --- a/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md +++ b/_posts/2017-03-24-stepping-through-pdp-10-diagnostics.md @@ -13,7 +13,7 @@ machines: Now that the PDPjs MACRO-10 Mini-Assembler is [limping along](/blog/2017/03/21/), it's time to start assembling some of DEC's PDP-10 "Basic Instruction" diagnostics and loading them into a test machine. The first diagnostic I tried was -[KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA-B-D)](/apps/pdp10/diags/klad/dakaa/), which has been loaded into +[KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA)](/apps/pdp10/diags/klad/dakaa/), which has been loaded into the machine below. {% include machine.html id="testka10" %} @@ -58,9 +58,9 @@ Happily, this was a good outcome, because 035057 is the end of the test. If you 035057 254 00 0 00 030057 ENDXX: JRST BEGEND ;LOOP PROGRAM -I had similar success with [Diagnostic #2 (MAINDEC-10-DAKAB-B-D)](/apps/pdp10/diags/klad/dakab/). +I had similar success with [Diagnostic #2 (MAINDEC-10-DAKAB)](/apps/pdp10/diags/klad/dakab/). -Problems started to crop up in [Diagnostic #3 (MAINDEC-10-DAKAC-B-D)](/apps/pdp10/diags/klad/dakac/): +Problems started to crop up in [Diagnostic #3 (MAINDEC-10-DAKAC)](/apps/pdp10/diags/klad/dakac/): CAME [0,-1] ;PASS TEST IF C(AC)=0,,-1 @@ -68,7 +68,7 @@ Based on the comment, it's clear what they really meant was either "[0,,-1]" or desired result, which means that even when the assembler parses an mnemonic-less instruction like "0,-1", it must still truncate the second (address) operand. Once I generated the appropriate value (000000,777777), the test passed. -And I had several failures running [Diagnostic #4 (MAINDEC-10-DAKAD-B-D)](/apps/pdp10/diags/klad/dakad/): +And I had several failures running [Diagnostic #4 (MAINDEC-10-DAKAD)](/apps/pdp10/diags/klad/dakad/): >> a 30724 /apps/pdp10/diags/klad/dakad/DAKAD.MAC starting PCjs MACRO-10 Mini-Assembler... diff --git a/apps/pdp10/diags/klad/dakaa/README.md b/apps/pdp10/diags/klad/dakaa/README.md index 4cc55d93c..aae94b3cd 100644 --- a/apps/pdp10/diags/klad/dakaa/README.md +++ b/apps/pdp10/diags/klad/dakaa/README.md @@ -54,20 +54,20 @@ MAINDEC-10-DAKAA IDENTIFICATION -------------- - PRODUCT CODE: MAINDEC-10-DAKAA-B-D + PRODUCT CODE: MAINDEC-10-DAKAA-B-D - PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC - INSTRUCTION DIAGNOSTIC (1) + PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC + INSTRUCTION DIAGNOSTIC (1) - FUNCTION: BASIC INSTRUCTIONS + FUNCTION: BASIC INSTRUCTIONS - VERSION: 0.2 + VERSION: 0.2 - DATE RELEASED: JANUARY 1977 + DATE RELEASED: JANUARY 1977 - MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP + MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP - AUTHOR: JOHN R. KIRCHOFF + AUTHOR: JOHN R. KIRCHOFF COPYRIGHT(C) 1976,1977 DIGITAL EQUIPMENT CORPORATION diff --git a/apps/pdp10/diags/klad/dakab/README.md b/apps/pdp10/diags/klad/dakab/README.md index 73922a3cd..7263e6d04 100644 --- a/apps/pdp10/diags/klad/dakab/README.md +++ b/apps/pdp10/diags/klad/dakab/README.md @@ -13,7 +13,7 @@ machines: PDP-10 KA10 Basic Instruction Diagnostic #2 ------------------------------------------- -The *PDP-10 KA10 Basic Instruction Diagnostic #2* (MAINDEC-10-DAKAB-B-D) test code has been extracted from +The *PDP-10 KA10 Basic Instruction Diagnostic #2* (MAINDEC-10-DAKAB) test code has been extracted from [DAKABM.MAC](DAKABM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakabm.mac.html)] for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below. @@ -52,20 +52,20 @@ MAINDEC-10-DAKAB.TXT IDENTIFICATION -------------- - PRODUCT CODE: MAINDEC-10-DAKAB-B-D + PRODUCT CODE: MAINDEC-10-DAKAB-B-D - PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC - INSTRUCTION DIAGNOSTIC (2) + PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC + INSTRUCTION DIAGNOSTIC (2) - FUNCTION: BASIC INSTRUCTIONS 2 + FUNCTION: BASIC INSTRUCTIONS 2 - VERSION: 0.2 + VERSION: 0.2 - DATE RELEASED: JANUARY 1977 + DATE RELEASED: JANUARY 1977 - MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP + MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP - AUTHOR: JOHN R. KIRCHOFF + AUTHOR: JOHN R. KIRCHOFF COPYRIGHT(C) 1976,1977 DIGITAL EQUIPMENT CORPORATION diff --git a/apps/pdp10/diags/klad/dakac/README.md b/apps/pdp10/diags/klad/dakac/README.md index 870792225..9320b30d7 100644 --- a/apps/pdp10/diags/klad/dakac/README.md +++ b/apps/pdp10/diags/klad/dakac/README.md @@ -13,7 +13,7 @@ machines: PDP-10 KA10 Basic Instruction Diagnostic #3 ------------------------------------------- -The *PDP-10 KA10 Basic Instruction Diagnostic #3* (MAINDEC-10-DAKAC-B-D) test code has been extracted from +The *PDP-10 KA10 Basic Instruction Diagnostic #3* (MAINDEC-10-DAKAC) test code has been extracted from [DAKACM.MAC](DAKACM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakacm.mac.html)] for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below. @@ -52,20 +52,20 @@ MAINDEC-10-DAKAC.TXT IDENTIFICATION -------------- - PRODUCT CODE: MAINDEC-10-DAKAC-B-D + PRODUCT CODE: MAINDEC-10-DAKAC-B-D - PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC - INSTRUCTION DIAGNOSTIC (3) + PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC + INSTRUCTION DIAGNOSTIC (3) - FUNCTION: LOGICAL, HALF WORD, ADDER + FUNCTION: LOGICAL, HALF WORD, ADDER - VERSION: 0.2 + VERSION: 0.2 - DATE RELEASED: JANUARY 1977 + DATE RELEASED: JANUARY 1977 - MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP + MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP - AUTHOR: JOHN R. KIRCHOFF + AUTHOR: JOHN R. KIRCHOFF COPYRIGHT(C) 1976,1977 DIGITAL EQUIPMENT CORPORATION diff --git a/apps/pdp10/diags/klad/dakad/README.md b/apps/pdp10/diags/klad/dakad/README.md index bb416d238..a7f80af34 100644 --- a/apps/pdp10/diags/klad/dakad/README.md +++ b/apps/pdp10/diags/klad/dakad/README.md @@ -13,7 +13,7 @@ machines: PDP-10 KA10 Basic Instruction Diagnostic #4 ------------------------------------------- -The *PDP-10 KA10 Basic Instruction Diagnostic #4* (MAINDEC-10-DAKAD-B-D) test code has been extracted from +The *PDP-10 KA10 Basic Instruction Diagnostic #4* (MAINDEC-10-DAKAD) test code has been extracted from [DAKADM.MAC](DAKADM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakadm.mac.html)] for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below. @@ -67,20 +67,20 @@ MAINDEC-10-DAKAD.TXT IDENTIFICATION -------------- - PRODUCT CODE: MAINDEC-10-DAKAD-B-D + PRODUCT CODE: MAINDEC-10-DAKAD-B-D - PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC - INSTRUCTION DIAGNOSTIC (4) + PRODUCT NAME: DECSYSTEM10 PDP-10 KA10 BASIC + INSTRUCTION DIAGNOSTIC (4) - FUNCTION: REGISTER ADDRESSING, PC CHANGE, XCT + FUNCTION: REGISTER ADDRESSING, PC CHANGE, XCT - VERSION: 0.2 + VERSION: 0.2 - DATE RELEASED: JANUARY 1977 + DATE RELEASED: JANUARY 1977 - MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP + MAINTAINED BY: DIAGNOSTIC ENGINEERING GROUP - AUTHOR: JOHN R. KIRCHOFF + AUTHOR: JOHN R. KIRCHOFF COPYRIGHT(C) 1976,1977 DIGITAL EQUIPMENT CORPORATION From bf6d6dcba981c4fa73556acd2ed8473a0c1ef0a1 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 15:38:06 -0700 Subject: [PATCH 07/27] Assorted README fixes --- apps/pdp10/diags/klad/dakaa/README.md | 5 ++++- apps/pdp10/diags/klad/dakab/README.md | 3 +++ apps/pdp10/diags/klad/dakac/README.md | 3 +++ apps/pdp10/diags/klad/dakad/README.md | 3 +++ apps/pdp10/diags/klad/dakae/README.md | 3 +++ 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/apps/pdp10/diags/klad/dakaa/README.md b/apps/pdp10/diags/klad/dakaa/README.md index aae94b3cd..60a3c03cd 100644 --- a/apps/pdp10/diags/klad/dakaa/README.md +++ b/apps/pdp10/diags/klad/dakaa/README.md @@ -87,6 +87,7 @@ EQUIPMENT CORPORATION. DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. + MAINDEC-10-DAKAA.TXT PAGE 2 @@ -123,6 +124,7 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 8.0 MISCELLANEOUS 9.0 LISTING + MAINDEC-10-DAKAA.TXT PAGE 3 @@ -157,7 +159,8 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 2.3 PRELIMINARY PROGRAMS CONSOLE FUNCTIONS WORKING PROPERLY - PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY + PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY + MAINDEC-10-DAKAA.TXT PAGE 4 diff --git a/apps/pdp10/diags/klad/dakab/README.md b/apps/pdp10/diags/klad/dakab/README.md index 7263e6d04..de51d0e45 100644 --- a/apps/pdp10/diags/klad/dakab/README.md +++ b/apps/pdp10/diags/klad/dakab/README.md @@ -85,6 +85,7 @@ EQUIPMENT CORPORATION. DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. + MAINDEC-10-DAKAB.TXT PAGE 2 @@ -121,6 +122,7 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 8.0 MISCELLANEOUS 9.0 LISTING + MAINDEC-10-DAKAB.TXT PAGE 3 @@ -152,6 +154,7 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. CONSOLE FUNCTIONS WORKING PROPERLY PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY PREVIOUS PROCESSOR DIAGNOSTICS + MAINDEC-10-DAKAB.TXT PAGE 4 diff --git a/apps/pdp10/diags/klad/dakac/README.md b/apps/pdp10/diags/klad/dakac/README.md index 9320b30d7..ac0beedb3 100644 --- a/apps/pdp10/diags/klad/dakac/README.md +++ b/apps/pdp10/diags/klad/dakac/README.md @@ -85,6 +85,7 @@ EQUIPMENT CORPORATION. DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. + MAINDEC-10-DAKAC.TXT PAGE 2 @@ -121,6 +122,7 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 8.0 MISCELLANEOUS 9.0 LISTING + MAINDEC-10-DAKAC.TXT PAGE 3 @@ -151,6 +153,7 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. CONSOLE FUNCTIONS WORKING PROPERLY PAPER-TAPE OR DECTAPE READ-IN WORKING PROPERLY PREVIOUS PROCESSOR DIAGNOSTICS + MAINDEC-10-DAKAC.TXT PAGE 4 diff --git a/apps/pdp10/diags/klad/dakad/README.md b/apps/pdp10/diags/klad/dakad/README.md index a7f80af34..ec7024ef2 100644 --- a/apps/pdp10/diags/klad/dakad/README.md +++ b/apps/pdp10/diags/klad/dakad/README.md @@ -100,6 +100,7 @@ EQUIPMENT CORPORATION. DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. + MAINDEC-10-DAKAD.TXT PAGE 2 @@ -136,6 +137,7 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. 8.0 MISCELLANEOUS 9.0 LISTING + MAINDEC-10-DAKAD.TXT PAGE 3 @@ -167,6 +169,7 @@ SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. CONSOLE FUNCTIONS WORKING PROPERLY PAPER-TAPE OR DECTAPE READ-IN WORKING PROPERLY PREVIOUS PROCESSOR DIAGNOSTICS + MAINDEC-10-DAKAD.TXT PAGE 4 diff --git a/apps/pdp10/diags/klad/dakae/README.md b/apps/pdp10/diags/klad/dakae/README.md index a6fee09dd..c85042863 100644 --- a/apps/pdp10/diags/klad/dakae/README.md +++ b/apps/pdp10/diags/klad/dakae/README.md @@ -81,6 +81,7 @@ DAKAE.TXT DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE IN EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL EQUIPMENT CORPORATION. + MAINDEC-10-DAKAE.TXT PAGE 2 @@ -117,6 +118,7 @@ DAKAE.TXT 8.0 MISCELLANEOUS 9.0 LISTING + MAINDEC-10-DAKAE.TXT PAGE 3 @@ -147,6 +149,7 @@ DAKAE.TXT CONSOLE FUNCTIONS WORKING PROPERLY PAPER-TAPE OR DECTAPE READ-IN WORKING PROPERLY PREVIOUS PROCESSOR DIAGNOSTICS + MAINDEC-10-DAKAE.TXT PAGE 4 From f8bf346eab0b47cb8b7cf5c8ec1be11c05f620f4 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 16:27:18 -0700 Subject: [PATCH 08/27] Renamed flags to be more consistent with DEC's names, and updated JSR and JSP to clear the BIS flag --- modules/pdp10/lib/cpuops.js | 40 ++-- modules/pdp10/lib/cpustate.js | 18 +- modules/pdp10/lib/debugger.js | 39 ++-- modules/pdp10/lib/defines.js | 56 ++--- versions/pdpjs/1.34.3/pdp10-dbg.js | 343 +++++++++++++++-------------- versions/pdpjs/1.34.3/pdp10.js | 64 +++--- 6 files changed, 285 insertions(+), 275 deletions(-) diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js index 87178389c..062e57d31 100644 --- a/modules/pdp10/lib/cpuops.js +++ b/modules/pdp10/lib/cpuops.js @@ -1696,14 +1696,14 @@ PDP10.opASH = function(op, ac) * If all those bits in the original value (w) were 0s, then adding bits to it could NOT * produce a value > INT_MASK. */ - if (w + bits > PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.OVFL; + if (w + bits > PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.AROV; } else { /* * Since w was negative, overflow occurs ONLY if any of the bits we shifted out were 0s. * If all those bits in the original value (w) were 1s, subtracting bits from it could NOT * produce a value <= INT_MASK. */ - if (w - bits <= PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.OVFL; + if (w - bits <= PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.AROV; } } else { if (s <= -35) { @@ -1873,7 +1873,7 @@ PDP10.opASHC = function(op, ac) * other than WORD_MASK indicates an overflow. */ if (wLeft > 0 && wLeft < PDP10.INT_LIMIT || wLeft > PDP10.INT_MASK && wLeft < PDP10.WORD_MASK) { - this.regPS |= PDP10.PSFLAG.OVFL; + this.regPS |= PDP10.PSFLAG.AROV; } if (s >= 71) { /* @@ -1881,7 +1881,7 @@ PDP10.opASHC = function(op, ac) * other than WORD_MASK indicates an overflow. */ if (wRight > 0 && wRight < PDP10.INT_LIMIT || wRight > PDP10.INT_MASK && wRight < PDP10.WORD_MASK) { - this.regPS |= PDP10.PSFLAG.OVFL; + this.regPS |= PDP10.PSFLAG.AROV; } wLeft = 0; } else { @@ -1896,14 +1896,14 @@ PDP10.opASHC = function(op, ac) * If all those bits in the original value were 0s, then adding bits to it could NOT produce * a value > INT_MASK. */ - if (wRight + bits > PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.OVFL; + if (wRight + bits > PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.AROV; } else { /* * Since wLeft was negative, overflow occurs ONLY if any of the bits we shifted out were 0s. * If all those bits in the original value were 1s, subtracting bits from it could NOT produce * a value <= INT_MASK. */ - if (wRight - bits <= PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.OVFL; + if (wRight - bits <= PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.AROV; } } wRight = 0; @@ -1927,14 +1927,14 @@ PDP10.opASHC = function(op, ac) * If all those bits in the original value were 0s, then adding bits to it could NOT produce * a value > INT_MASK. */ - if (wLeftOrig + bits > PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.OVFL; + if (wLeftOrig + bits > PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.AROV; } else { /* * Since wLeft was negative, overflow occurs ONLY if any of the bits we shifted out were 0s. * If all those bits in the original value were 1s, subtracting bits from it could NOT produce * a value <= INT_MASK. */ - if (wLeftOrig - bits <= PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.OVFL; + if (wLeftOrig - bits <= PDP10.INT_MASK) this.regPS |= PDP10.PSFLAG.AROV; /* * Last but not least, update the sign bits of wLeft and wRight to indicate negative values. */ @@ -2372,7 +2372,7 @@ PDP10.opPUSH = function(op, ac) p += 0o000001000001; this.writeWord(p & PDP10.HALF_MASK, this.readWord(this.regEA)); if (p >= PDP10.WORD_LIMIT) p -= PDP10.WORD_LIMIT; - if (!((p / PDP10.HALF_SHIFT)|0)) this.regPS |= PDP10.PSFLAG.PD_OVFL; + if (!((p / PDP10.HALF_SHIFT)|0)) this.regPS |= PDP10.PSFLAG.PDOV; } else { /* * This is the SIMH behavior, which appears to increment each half of AC independently. @@ -2382,7 +2382,7 @@ PDP10.opPUSH = function(op, ac) p = (p + 0o000001000000) - (p & PDP10.HALF_MASK) + addr; if (p >= PDP10.WORD_LIMIT) { p -= PDP10.WORD_LIMIT; - this.regPS |= PDP10.PSFLAG.PD_OVFL; + this.regPS |= PDP10.PSFLAG.PDOV; } } this.writeWord(ac, p); @@ -2412,7 +2412,7 @@ PDP10.opPOP = function(op, ac) if (this.regEA == ac) p = src; // this avoids re-reading the accumulator if the write just overwrote it p -= 0o000001000001; if (p < 0) p += PDP10.WORD_LIMIT; - if (((p / PDP10.HALF_SHIFT)|0) == PDP10.HALF_MASK) this.regPS |= PDP10.PSFLAG.PD_OVFL; + if (((p / PDP10.HALF_SHIFT)|0) == PDP10.HALF_MASK) this.regPS |= PDP10.PSFLAG.PDOV; this.writeWord(ac, p); }; @@ -2448,6 +2448,7 @@ PDP10.opPOPJ = function(op, ac) PDP10.opJSR = function(op, ac) { this.writeWord(this.regEA, this.getPS() + this.getPC()); + this.regPS &= ~PDP10.PSFLAG.BIS; // TODO: Verify that BIS is cleared AFTER writing this.setPC(this.regEA + 1); }; @@ -2471,6 +2472,7 @@ PDP10.opJSR = function(op, ac) PDP10.opJSP = function(op, ac) { this.writeWord(ac, this.getPS() + this.getPC()); + this.regPS &= ~PDP10.PSFLAG.BIS; // TODO: Verify that BIS is cleared AFTER writing this.setPC(this.regEA); }; @@ -2513,7 +2515,7 @@ PDP10.opJSA = function(op, ac) * Place the contents of the location addressed by AC left into AC. Take the next instruction from location E and * continue sequential operation from there. * - * This opcode functions as the counterpart to JSA, but ONLY if location E (the effective address stored in the JRA) indexes + * This opcode functions as the counterpart to JSA, but ONLY if location E (the effective address calculated by the JRA) indexes * with the same AC that was used with the JSA. * * JSA 17,F1 @@ -6119,7 +6121,7 @@ PDP10.doABS = function(src) if (src != PDP10.INT_LIMIT) { src = PDP10.TWO_POW36 - src; } else { - this.regPS |= (PDP10.PSFLAG.OVFL | PDP10.PSFLAG.CARRY1); + this.regPS |= (PDP10.PSFLAG.AROV | PDP10.PSFLAG.CRY1); } } return src; @@ -6181,7 +6183,7 @@ PDP10.doDIV = function(dst, ext, src) } if (ext >= src) { - this.regPS |= PDP10.PSFLAG.NO_DIVIDE | PDP10.PSFLAG.OVFL; + this.regPS |= PDP10.PSFLAG.DCK | PDP10.PSFLAG.AROV; return -1; } @@ -6304,7 +6306,7 @@ PDP10.doMUL = function(dst, src, fTruncate) * If ext is something OTHER than an extension of the res sign bit, then we have overflow. */ if ((ext || res > PDP10.INT_MASK) && (ext != PDP10.WORD_MASK || res <= PDP10.INT_MASK)) { - this.regPS |= PDP10.PSFLAG.OVFL; + this.regPS |= PDP10.PSFLAG.AROV; } /* * Also note that, in the truncate case, we return the low order bits (res), rather than the @@ -6328,7 +6330,7 @@ PDP10.doMUL = function(dst, src, fTruncate) PDP10.doNEG = function(src) { if (!src) { - this.regPS |= (PDP10.PSFLAG.CARRY0 | PDP10.PSFLAG.CARRY1); + this.regPS |= (PDP10.PSFLAG.CRY0 | PDP10.PSFLAG.CRY1); } else { /* @@ -6336,7 +6338,7 @@ PDP10.doNEG = function(src) * the INT_LIMIT case anyway, and since subtraction in that case doesn't alter src, we skip the subtraction. */ if (src == PDP10.INT_LIMIT) { - this.regPS |= (PDP10.PSFLAG.OVFL | PDP10.PSFLAG.CARRY1); + this.regPS |= (PDP10.PSFLAG.AROV | PDP10.PSFLAG.CRY1); } else { src = PDP10.TWO_POW36 - src; } @@ -6423,7 +6425,7 @@ PDP10.split72 = function(res, ext) var signNew = ext - (ext % PDP10.INT_LIMIT); if (sign != signNew) { ext = sign + (ext - signNew); - this.regPS |= PDP10.PSFLAG.OVFL; + this.regPS |= PDP10.PSFLAG.AROV; } this.regExt = res; return ext; @@ -6483,7 +6485,7 @@ PDP10.setAddFlags = function(dst, src, res) * 1 1 1 0 0 0 no */ var fOverflow = ((dst01 ^ res01) & (src01 ^ res01)) & 0b10; - this.regPS |= (fCarry0? PDP10.PSFLAG.CARRY0 : 0) | (fCarry1? PDP10.PSFLAG.CARRY1 : 0) | (fOverflow? PDP10.PSFLAG.OVFL : 0); + this.regPS |= (fCarry0? PDP10.PSFLAG.CRY0 : 0) | (fCarry1? PDP10.PSFLAG.CRY1 : 0) | (fOverflow? PDP10.PSFLAG.AROV : 0); }; /** diff --git a/modules/pdp10/lib/cpustate.js b/modules/pdp10/lib/cpustate.js index ecb494c6b..d4a75c7cb 100644 --- a/modules/pdp10/lib/cpustate.js +++ b/modules/pdp10/lib/cpustate.js @@ -374,11 +374,11 @@ class CPUStatePDP10 extends CPUPDP10 { { w = (w / PDP10.HALF_SHIFT)|0; this.regPS = (this.regPS & ~PDP10.PSFLAG.SET_MASK) | (w & PDP10.PSFLAG.SET_MASK); - this.regPS |= (w & PDP10.PSFLAG.USER_MODE); - if (!(w & PDP10.PSFLAG.USER_IO)) { - this.regPS &= ~PDP10.PSFLAG.USER_IO; + this.regPS |= (w & PDP10.PSFLAG.USERF); + if (!(w & PDP10.PSFLAG.EXIOT)) { + this.regPS &= ~PDP10.PSFLAG.EXIOT; } else { - if (!(this.regPS & PDP10.PSFLAG.USER_MODE)) this.regPS |= PDP10.PSFLAG.USER_IO; + if (!(this.regPS & PDP10.PSFLAG.USERF)) this.regPS |= PDP10.PSFLAG.EXIOT; } } @@ -391,7 +391,7 @@ class CPUStatePDP10 extends CPUPDP10 { */ setUserMode() { - this.regPS |= PDP10.PSFLAG.USER_MODE; + this.regPS |= PDP10.PSFLAG.USERF; } /** @@ -405,8 +405,8 @@ class CPUStatePDP10 extends CPUPDP10 { readFlags() { var flags = 0; - if (this.regPS & PDP10.PSFLAG.OVFL) flags |= PDP10.RFLAG.OVFL; - if (this.regPS & PDP10.PSFLAG.PD_OVFL) flags |= PDP10.RFLAG.PD_OVFL; + if (this.regPS & PDP10.PSFLAG.AROV) flags |= PDP10.RFLAG.AROV; + if (this.regPS & PDP10.PSFLAG.PDOV) flags |= PDP10.RFLAG.PDOV; return flags; } @@ -420,8 +420,8 @@ class CPUStatePDP10 extends CPUPDP10 { */ writeFlags(w) { - if (w & PDP10.WFLAG.OVFL_CL) this.regPS &= ~PDP10.PSFLAG.OVFL; - if (w & PDP10.WFLAG.PD_OVFL_CL) this.regPS &= ~PDP10.PSFLAG.PD_OVFL; + if (w & PDP10.WFLAG.AROV_CL) this.regPS &= ~PDP10.PSFLAG.AROV; + if (w & PDP10.WFLAG.PDOV_CL) this.regPS &= ~PDP10.PSFLAG.PDOV; } /** diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js index 89d620156..b8d66b27e 100644 --- a/modules/pdp10/lib/debugger.js +++ b/modules/pdp10/lib/debugger.js @@ -919,20 +919,23 @@ class DebuggerPDP10 extends Debugger { case DebuggerPDP10.REGS.EA: value = cpu.regEA; break; + case DebuggerPDP10.REGS.PS: + value = (cpu.getPS() / PDP10.HALF_SHIFT)|0; + break; case DebuggerPDP10.REGS.C0: - value = (cpu.regPS & PDP10.PSFLAG.CARRY0)? 1 : 0; + value = (cpu.regPS & PDP10.PSFLAG.CRY0)? 1 : 0; break; case DebuggerPDP10.REGS.C1: - value = (cpu.regPS & PDP10.PSFLAG.CARRY1)? 1 : 0; + value = (cpu.regPS & PDP10.PSFLAG.CRY1)? 1 : 0; break; case DebuggerPDP10.REGS.OV: - value = (cpu.regPS & PDP10.PSFLAG.OVFL)? 1 : 0; + value = (cpu.regPS & PDP10.PSFLAG.AROV)? 1 : 0; break; case DebuggerPDP10.REGS.ND: - value = (cpu.regPS & PDP10.PSFLAG.NO_DIVIDE)? 1 : 0; + value = (cpu.regPS & PDP10.PSFLAG.DCK)? 1 : 0; break; case DebuggerPDP10.REGS.PD: - value = (cpu.regPS & PDP10.PSFLAG.PD_OVFL)? 1 : 0; + value = (cpu.regPS & PDP10.PSFLAG.PDOV)? 1 : 0; break; } return value; @@ -955,20 +958,23 @@ class DebuggerPDP10 extends Debugger { cpu.setPC(value); this.setAddr(this.dbgAddrCode, cpu.getPC()); break; + case DebuggerPDP10.REGS.PS: + cpu.setPS(value * PDP10.HALF_SHIFT); + break; case DebuggerPDP10.REGS.C0: - flag = PDP10.PSFLAG.CARRY0; + flag = PDP10.PSFLAG.CRY0; break; case DebuggerPDP10.REGS.C1: - flag = PDP10.PSFLAG.CARRY1; + flag = PDP10.PSFLAG.CRY1; break; case DebuggerPDP10.REGS.OV: - flag = PDP10.PSFLAG.OVFL; + flag = PDP10.PSFLAG.AROV; break; case DebuggerPDP10.REGS.ND: - flag = PDP10.PSFLAG.NO_DIVIDE; + flag = PDP10.PSFLAG.DCK; break; case DebuggerPDP10.REGS.PD: - flag = PDP10.PSFLAG.PD_OVFL; + flag = PDP10.PSFLAG.PDOV; break; } if (flag) { @@ -4069,15 +4075,16 @@ if (DEBUGGER) { PC: 0, RA: 1, EA: 2, - C0: 3, // single-bit "register" representing the Carry 0 flag - C1: 4, // single-bit "register" representing the Carry 1 flag - OV: 5, // single-bit "register" representing the Overflow flag - ND: 6, // single-bit "register" representing the No Divide flag - PD: 7, // single-bit "register" representing the Pushdown Overflow flag + PS: 3, + C0: 4, // single-bit "register" representing the Carry 0 flag + C1: 5, // single-bit "register" representing the Carry 1 flag + OV: 6, // single-bit "register" representing the Overflow flag + ND: 7, // single-bit "register" representing the No Divide flag + PD: 8, // single-bit "register" representing the Pushdown Overflow flag }; DebuggerPDP10.REGNAMES = [ - "PC", "RA", "EA", "C0", "C1", "OV", "ND", "PD" + "PC", "RA", "EA", "PS", "C0", "C1", "OV", "ND", "PD" ]; /* diff --git a/modules/pdp10/lib/defines.js b/modules/pdp10/lib/defines.js index 2bdf46711..bf22ce700 100644 --- a/modules/pdp10/lib/defines.js +++ b/modules/pdp10/lib/defines.js @@ -201,21 +201,21 @@ var PDP10 = { * binary, the only options you can set relate to the operating system to be run -- which seems very hacky. */ PSFLAG: { - OVFL: 0o400000, // Overflow - CARRY0: 0o200000, // Carry 0 - CARRY1: 0o100000, // Carry 1 - FP_OVFL: 0o040000, // Floating-Point Overflow - BYTE_INT: 0o020000, // Byte Interrupt - USER_MODE: 0o010000, // Processor is in User Mode - USER_IO: 0o004000, // User I/O - FP_UNFL: 0o000100, // Floating-Point Underflow - NO_DIVIDE: 0o000040, // No Divide - SET_MASK: 0o760140, // the flags that are always settable/clearable + AROV: 0o400000, // Arithmetic Overflow + CRY0: 0o200000, // Carry 0 + CRY1: 0o100000, // Carry 1 + FOV: 0o040000, // Floating-Point Overflow + BIS: 0o020000, // Byte Interrupt + USERF: 0o010000, // User Mode Flag + EXIOT: 0o004000, // User Privileged I/O Flag + FXU: 0o000100, // Floating-Point Underflow + DCK: 0o000040, // Divide Check (aka No Divide) /* * Only the low 18 bits (above) are returned by getPS(); the following (bits 18 to 31) * are defined for internal use only. */ - PD_OVFL: 0o1000000 // Pushdown Overflow + PDOV: 0o1000000, // Pushdown Overflow + SET_MASK: 0o0760140 // flags that are always settable/clearable }, /* @@ -223,18 +223,18 @@ var PDP10 = { */ RFLAG: { PIA: 0o000007, // Priority Interrupt Assignment - OVFL: 0o000010, // Overflow - OVFL_IE: 0o000020, // Overflow Interrupt Enabled + AROV: 0o000010, // Arithmetic Overflow + AROV_IE: 0o000020, // Arithmetic Overflow Interrupt Enabled TRAP_OFF: 0o000040, // Trap Offset - FP_OVFL: 0o000100, // Floating-Point Overflow - FP_OVFL_IE: 0o000200, // Floating-Point Overflow Interrupt Enabled - CLOCK: 0o001000, // Clock Flag - CLOCK_IE: 0o002000, // Clock Interrupt Enabled + FOV: 0o000100, // Floating-Point Overflow + FOV_IE: 0o000200, // Floating-Point Overflow Interrupt Enabled + CLK: 0o001000, // Clock Flag + CLK_IE: 0o002000, // Clock Interrupt Enabled NXM: 0o010000, // Non-Existent Memory PRM: 0o020000, // Memory Protection ADB: 0o040000, // Address Break UIO: 0o100000, // User In-Out - PD_OVFL: 0o200000 // Pushdown Overflow (TODO: Verify this is correct; the May 1968 doc may have a typo) + PDOV: 0o200000 // Pushdown Overflow (TODO: Verify this is correct; the May 1968 doc may have a typo) }, /* @@ -244,20 +244,20 @@ var PDP10 = { */ WFLAG: { PIA: 0o000007, // Priority Interrupt Assignment - OVFL_CL: 0o000010, // Clear Overflow - OVFL_IE: 0o000020, // Enable Overflow Interrupt - OVFL_ID: 0o000040, // Disable Overflow Interrupt - FP_OVFL_CL: 0o000100, // Clear Floating-Point Overflow - FP_OVFL_IE: 0o000200, // Enable Floating-Point Overflow Interrupt - FP_OVFL_ID: 0o000400, // Disable Floating-Point Overflow Interrupt - CLOCK_CL: 0o001000, // Clear Clock Flag - CLOCK_IE: 0o002000, // Enable Clock Interrupt - CLOCK_ID: 0o004000, // Disable Clock Interrupt + AROV_CL: 0o000010, // Clear Overflow + AROV_IE: 0o000020, // Enable Overflow Interrupt + AROV_ID: 0o000040, // Disable Overflow Interrupt + FOV_CL: 0o000100, // Clear Floating-Point Overflow + FOV_IE: 0o000200, // Enable Floating-Point Overflow Interrupt + FOV_ID: 0o000400, // Disable Floating-Point Overflow Interrupt + CLK_CL: 0o001000, // Clear Clock Flag + CLK_IE: 0o002000, // Enable Clock Interrupt + CLK_ID: 0o004000, // Disable Clock Interrupt NXM_CL: 0o010000, // Clear Non-Existent Memory PRM_CL: 0o020000, // Clear Memory Protection ADB_CL: 0o040000, // Clear Address Break UIO_CL: 0o200000, // Clear All In-Out Devices - PD_OVFL_CL: 0o400000 // Clear Pushdown Overflow + PDOV_CL: 0o400000 // Clear Pushdown Overflow }, /* diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js index b2f2ac39f..d83d608f6 100644 --- a/versions/pdpjs/1.34.3/pdp10-dbg.js +++ b/versions/pdpjs/1.34.3/pdp10-dbg.js @@ -98,192 +98,193 @@ function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Za=+a.add m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Za;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ja=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0}; m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Za]);a.set(1,[]);a.set(2,[this.U,this.ga,this.A.ea]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Za=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.ea=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; -m.Ya=function(a){this.A.complete=!0;var b=this.D?sd(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(td(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&td(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K= -this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)} -function vd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function wd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}} -function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function yd(a,b){this.g(b,this.f(this.b))}function zd(a,b){this.g(b,this.b)}function Ad(a,b){this.g(this.b,this.f(b))}function Bd(a,b){this.g(b,0)}function Cd(a,b){this.g(b,B-this.f(b))}function Dd(a,b){this.g(b,B)} -function Ed(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Fd(a,d,c)+(c-(c&x)))}function Gd(a,b){var c=this.f(b);this.g(b,Fd(a,c,0))}function Hd(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+(b-(b&x)))}function Id(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Jd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)} -function ae(a,b){var c=this.b*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)}function be(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+b)}function ce(a,b){var c=this.f(this.b),d=(c&x)*y,c=Fd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function de(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,ee(a,d,c)+c)}function fe(a,b){var c=this.f(b);this.g(b,ee(a,c,this.b)+this.b)}function ge(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,ee(a,c,b)+b)} -function he(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ie(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,ee(a,d,c)+c)}function je(a,b){var c=this.f(b);this.g(b,ee(a,c,0))}function ke(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,ee(a,c,b)+b)}function le(a,b){var c=this.f(this.b),d=c/y|0,c=ee(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){me[a&7].call(this,a,a>>3&127)} -function ne(){}function oe(){}function L(a){this.u("undefined opcode: "+ua(a));rd(this,-1);this.W()}function pe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;qe.call(this,a,b,c);return c} -function re(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ja;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),te(this.ob,this.sa),ue(this.ta)))break;ve(this.ja);ve(this.sa)}while(!ue(this.sa)); +if(e.nc===b[c]){d=e;break a}}d=null}d&&(d.next=this.Ca,this.Ca=d)}a=a[4];for(b=0;b>>b.i].f(a&16383,a)}; +m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; +m.Ya=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K= +this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)} +function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}} +function yd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)} +function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ae(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)} +function be(a,b){var c=this.b*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}function ce(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+b)}function de(a,b){var c=this.f(this.b),d=(c&x)*y,c=Gd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function ee(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ge(a,b){var c=this.f(b);this.g(b,fe(a,c,this.b)+this.b)}function he(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)} +function ie(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function je(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ke(a,b){var c=this.f(b);this.g(b,fe(a,c,0))}function le(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}function me(a,b){var c=this.f(this.b),d=c/y|0,c=fe(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){ne[a&7].call(this,a,a>>3&127)} +function oe(){}function pe(){}function L(a){this.u("undefined opcode: "+ua(a));sd(this,-1);this.W()}function qe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;re.call(this,a,b,c);return c} +function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ja;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.sa),ve(this.ta)))break;we(this.ja);we(this.sa)}while(!ve(this.sa)); a=this.ob[0];this.F=this.ta[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a} -function we(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(dz)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b} -function xe(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ye(a,b){var c=a-b;0>c&&(c+=C);qe.call(this,c,b,a);return c}function qe(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>0)}function U(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function V(a){return a>>0)}function X(a){return(a/y|0)+(a&x)*y}function ee(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Ub?x*y:0}return b}function Fd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b} -function te(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=C&&(a[0]%=C,a[1]++)}function se(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function ve(a){a[1]%2&&(a[0]+=C);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function ue(a){return!a[0]&&!a[1]} -var ud=[N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},vd,function(a,b){0>this.I&&vd.call(this);wd.call(this,0,b)},wd,function(a,b){0>this.I&&vd.call(this);xd.call(this,0,b)},xd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, +function xe(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(dz)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b} +function ye(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ze(a,b){var c=a-b;0>c&&(c+=C);re.call(this,c,b,a);return c}function re(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>0)}function U(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function V(a){return a>>0)}function X(a){return(a/y|0)+(a&x)*y}function fe(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Ub?x*y:0}return b}function Gd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b} +function ue(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=C&&(a[0]%=C,a[1]++)}function te(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function we(a){a[1]%2&&(a[0]+=C);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function ve(a){return!a[0]&&!a[1]} +var vd=[N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},wd,function(a,b){0>this.I&&wd.call(this);xd.call(this,0,b)},xd,function(a,b){0>this.I&&wd.call(this);yd.call(this,0,b)},yd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, -function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},yd,zd,Ad,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,xe.call(this,this.f(this.b)))},function(a,b){this.g(b,xe.call(this,this.b))},function(a,b){this.g(this.b, -xe.call(this,this.f(b)))},function(a,b){a=xe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,pe.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,pe.call(this,this.f(b)))},function(a,b){a=pe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,we.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,we.call(this,this.f(b),this.b,!0))},function(a,b){this.g(this.b,we.call(this,this.f(b),this.f(this.b), -!0))},function(a,b){this.g(this.b,this.g(b,we.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,we.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,we.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,we.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,we.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=re.call(this,this.f(b),0,this.f(this.b));0>a||(this.g(b,a),this.g(b+ -1&15,this.F))},function(a,b){a=re.call(this,this.f(b),0,this.b);0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=re.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=re.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=re.call(this,c,a,this.f(this.b));0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=re.call(this,c,a,this.b);0>c||(this.g(b,c),this.g(b+1&15,this.F))}, -function(a,b){a=this.f(b);b=this.f(b+1&15);b=re.call(this,b,a,this.f(this.b));0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=re.call(this,c,a,this.f(this.b));0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){var c=(this.b<<14>>14)%256;if(c){a=this.f(b);var d=a>z?-(C-a):a;0d?A:0,c=z):(d=d*Math.pow(2,c)%A,c=A-Math.pow(2,35-c)),a<=z?a+c>z&&(this.j|=131072):a-c<=z&&(this.j|=131072)):d=-35>=c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+C:d; +function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},zd,Ad,Bd,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,ye.call(this,this.f(this.b)))},function(a,b){this.g(b,ye.call(this,this.b))},function(a,b){this.g(this.b, +ye.call(this,this.f(b)))},function(a,b){a=ye.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,qe.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,qe.call(this,this.f(b)))},function(a,b){a=qe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,xe.call(this,this.f(b),this.b,!0))},function(a,b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b), +!0))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,xe.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||(this.g(b,a),this.g(b+ +1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.b);0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.b);0>c||(this.g(b,c),this.g(b+1&15,this.F))}, +function(a,b){a=this.f(b);b=this.f(b+1&15);b=se.call(this,b,a,this.f(this.b));0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){var c=(this.b<<14>>14)%256;if(c){a=this.f(b);var d=a>z?-(C-a):a;0d?A:0,c=z):(d=d*Math.pow(2,c)%A,c=A-Math.pow(2,35-c)),a<=z?a+c>z&&(this.j|=131072):a-c<=z&&(this.j|=131072)):d=-35>=c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+C:d; this.g(b,a)}},function(a,b){if(a=(this.b<<14>>14)%36){var c=this.f(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%C+Math.trunc(c/Math.pow(2,36-a));this.g(b,c)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.g(b,c)}},function(a,b){a=0;var c=this.f(b);if(c){for(;c>14)%256){var c,d=this.f(b),e=this.f(b+1&15);if(0z&& dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d>z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+ d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=(this.b<<14>>14)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),d=this.f(b+ 1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},L,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b,a)},function(a,b){a=!1;for(var c=this.f(b),d=c/y|0,c=c&x;!a;)this.g(c,this.f(d)),c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d* -y+c),a||rd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);if(b&2){var c=this.Ia,c=c/y|0;this.j=this.j&-254049|c&254048;this.j|=c&4096;c&2048?this.j&4096||(this.j|=2048):this.j&=-2049}b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.ua=this.b},L,function(a){this.w(a)},function(a,b){a= -this.f(b);a+=262145;this.g(a&x,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&x);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a){this.w(a)},function(){this.g(this.b,(this.j&x)*y+this.i);G(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b, -this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ye.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b, -this.g(b,ye.call(this,this.f(b),this.f(this.b))))},ne,function(a,b){0>T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b), -this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&& -G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){G(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a, -b){a=this.f(this.b);V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this, -this.f(b),1));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this, -this.f(this.b),1));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),B));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));G(this,this.i+1);b&&this.g(b,a)},function(a, -b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>>f.i;0>>= -f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ia);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.ua=this.b},L,function(a){this.w(a)},function(a,b){a=this.f(b);a+=262145;this.g(a&x,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a, +b){a=this.f(b);var c=this.f(a&x);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a){this.w(a)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))}, +function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ze.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ze.call(this,this.f(b),this.f(this.b))))},oe,function(a,b){0>T(this.f(b),this.b)&& +G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+ +1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){G(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b); +0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b), +1));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b, +Q.call(this,this.f(this.b),1));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0V(a)&&G(this,this.b)},function(a, +b){a=this.g(b,Q.call(this,this.f(b),B));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),B));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)}, +function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>>f.i;0>>= +f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)}; m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.$a)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.ab+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.za=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -m.pa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Ke(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)&(c/Le|0))*Le+((b&c)>>>0)} -function Me(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)^(c/Le|0))*Le+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b} -function Ne(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break; -case "&":f=Ke(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Le|0|g/Le|0)*Le+((f|g)>>>0));break;case "^!":f=Me(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Oe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Te(a,null,d)}return d} -function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f} -function Te(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.S?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ue(a){var b=a.I;a.I={};return b}function Ve(a,b){if(b)return Te(a,b,a.I[b]);var c=0;for(b in a.I)Te(a,b,a.I[b]),c++;return 0a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)} +function Ne(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)^(c/Me|0))*Me+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b} +function Oe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break; +case "&":f=Le(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Me|0|g/Me|0)*Me+((f|g)>>>0));break;case "^!":f=Ne(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Pe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Ue(a,null,d)}return d} +function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f} +function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.S?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} -var Qe={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Le=Math.pow(2,32); -function We(a){Ie.call(this,a);this.Ha=!1;this.Fa=18;this.L=36;this.aa=["<",">"];this.sa=[];this.Ga=Z();this.M=Z(0);this.la=Z(0);this.ia=Z(0);this.F=[];this.b=this.N=this.K=[];Xe(this);this.U=this.ma=0;this.i=[];this.Da=void 0;Ye(this);this.D=this;this.Ba={};this.ba=this.Eb=0;this.Z=null;this.R=[];Ze(this,a.messages);this.ua=a.commands;this.P=0;this.Na=this.Ea=null;this.C=this.Ja=this.Ia=this.ka=this.Ca=0;this.ta=this.ra=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, -a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(We,Ie);function $e(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,cb:void 0===b?!1:b,oa:!1,S:c}}function af(a,b,c,d){a.B=b;a.cb=c||!1;a.oa=!1;a.S=d}function bf(a){return[a.B,a.cb,a.oa,a.S,a.hb]}function cf(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Je(a,c.hb=b[4]));return c}m=We.prototype; -m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&Ze(this,b);if(a=$c(a,"commands"))this.ua=a;df(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=$e(ef(d,c,d.la));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+ +var Re={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Me=Math.pow(2,32); +function Xe(a){Je.call(this,a);this.Ha=!1;this.Fa=18;this.L=36;this.aa=["<",">"];this.sa=[];this.Ga=Z();this.M=Z(0);this.la=Z(0);this.ia=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.U=this.ma=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ba=this.Eb=0;this.Z=null;this.R=[];$e(this,a.messages);this.ua=a.commands;this.P=0;this.Na=this.Ea=null;this.C=this.Ja=this.Ia=this.ka=this.Ca=0;this.ta=this.ra=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, +a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,cb:void 0===b?!1:b,oa:!1,S:c}}function bf(a,b,c,d){a.B=b;a.cb=c||!1;a.oa=!1;a.S=d}function cf(a){return[a.B,a.cb,a.oa,a.S,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype; +m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.la));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+ n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function hf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)} -function Ze(a,b){a.D=a;a.ba=a.Eb=536870916;a.Z=null;a.R=[];b=Je(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;da&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)} +function $e(a,b){a.D=a;a.ba=a.Eb=536870916;a.Z=null;a.R=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Da==b&&(b=rd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1} -function zf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Af)if(g=Af[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Bf;l=p&3;break;case 32256:k=Cf;l=p&7;break;case 29248:k=Df,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Ef&&(k="B");k=Ff[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f, --1)+")")}else k=Da(k,8)+hf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+hf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ta?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h} -function Hf(a,b,c,d,e){var f=-1,g,h;a.ja=null;if(b){for(var k=b.toUpperCase(),l=0;lEf&&(P="B");if(k==Ff[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&& -(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127 -h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.ma=0} -m.Qa=function(a,b,c){var d=!0;c||If(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Qa(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Jf(this,a,a.length-1,"set"),Ye(this)));return d};function If(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g>>d.i],b==a.K));h.oa||Ye(a);break}}return f} -function Kf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);af(e.Ga,d);f+="="+K(e,e.Ma(e.Ga),36)+" ";c+=f}if(b){b="";for(d=0;d=nf?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,X:e,Bb:f})}function ng(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case kf:G(h, -g);af(a.M,h.i);break;case nf:f=65536;break;case of:f=32768;break;case pf:f=131072;break;case qf:f=32;break;case rf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(lg(a,e));c&&(af(a.M,d.i),xf(a,K(a,a.M.B,18)))}}function ug(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ia;l=b;h.B=l.B;h.cb=l.cb;h.oa=l.oa;h.S=l.S;a.u(zf(a,b,g,f));e-=b.B-k;c++}}} -function Lf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(vf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd= -[];"call"==Qf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Pf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Sf++;Cb--}}Sf||(a.u("no "+Rf+"history available"),a.Da=void 0)}else{var hb=ef(a,ma,a.la);if(hb){var Ka=0,Vf="ds"==eb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||wh,Ka=Pe(a,Ba);else{var Wf=ef(a,Ba);Wf&& -(Ka=Wf.B-hb.B)}0>Ka&&(Ka=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Vf?La+(oa+","):La+(ma+": "+oa+(0>Yf? -" "+Qd:""))}La&&a.u(La);a.S=yh}}}}break;case "e":if("else"==g[0])break;var Zf,$f,ag=g[0],Sd=g[1];"e"==ag||"ew"==ag?(Zf=a.Ma,$f=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Hc=ef(a,Sd,a.la);if(Hc)for(var Td=2;Td -Wd;){for(var Ma=null,Dh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Dh--)break;if(!(Xd.B&1)){for(var Eh=a,Ic=Xd,cg=null,Ib=Ic.B,dg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2jg)a.u("step commands:"), -a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var kg=Z(a.v.i);a.Ma(kg);a.P?(a.Qa(a.b,kg,!0),tf(a)||(a.H&&jd(a.H),a.P=0)):vg(a,jg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}wf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var ib=+g[2];if(2==ib||8==ib||10==ib||16==ib)a.S=ib;else{a.u("invalid base: "+ib);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra= +function Ze(a){var b;if(!td(a))a.i&&a.i.length&&a.u("instruction history buffer freed"),a.U=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(uf);for(b=0;b>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1} +function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f, +-1)+")")}else k=Da(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ta?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h} +function Jf(a,b,c,d,e){var f=-1,g,h;a.ja=null;if(b){for(var k=b.toUpperCase(),l=0;lGf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&& +(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127 +h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.ma=0} +m.Qa=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Qa(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.oa||Ze(a);break}}return f} +function Mf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ga,d);f+="="+K(e,e.Ma(e.Ga),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,X:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h, +g);bf(a.M,h.i);break;case of:rd(h,g*y);break;case pf:f=65536;break;case qf:f=32768;break;case rf:f=131072;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ia;l=b;h.B=l.B;h.cb=l.cb;h.oa=l.oa;h.S=l.S;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}} +function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd= +[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var hb=ff(a,ma,a.la);if(hb){var Ka=0,Xf="ds"==eb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||yh,Ka=Qe(a,Ba);else{var Yf=ff(a,Ba);Yf&& +(Ka=Yf.B-hb.B)}0>Ka&&(Ka=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Xf?La+(oa+","):La+(ma+": "+oa+(0>$f? +" "+Qd:""))}La&&a.u(La);a.S=Ah}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Sd=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Hc=ff(a,Sd,a.la);if(Hc)for(var Td=2;Td +Wd;){for(var Ma=null,Fh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Fh--)break;if(!(Xd.B&1)){for(var Gh=a,Ic=Xd,eg=null,Ib=Ic.B,fg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2lg)a.u("step commands:"), +a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Qa(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var ib=+g[2];if(2==ib||8==ib||10==ib||16==ib)a.S=ib;else{a.u("invalid base: "+ib);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra= Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.la=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ta?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.aa.toFixed(2)+"Mhz")+" ("+a.v.ga+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"), -a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":vg(a,g[0],g[1]);break;case "u":xf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){sg(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){ug(a,b.substr(1));break}var Zd="commands:",$d;for($d in xg)Zd+="\n"+ -Da($d,9)+xg[$d];sd(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(mg){a.u("Debugger "+(mg.stack||mg.message)),d=!1}return d}function ed(a,b,c){b=Je(a,b,c);for(var d in b)if(!Lf(a,b[+d]))return!1;return!0} -var xg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Ef=20,Ff=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "), -kf=0,lf=1,mf=2,nf=3,of=4,pf=5,qf=6,rf=7,jf="PC RA EA C0 C1 OV ND PD".split(" "),yg={},Af=(yg[28672]={0:101},yg[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},yg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ef,9216:53,9472:52, -9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},yg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},yg[29248]={24576:79,24640:80,25088:81,25152:82},yg[28700]={28672:93,28676:94,28680:95,28684:96,28688:97, -28692:98,28696:99,28700:100},yg),Bf=["","I","M","S"],Cf=" L E LE A GE N G".split(" "),Df="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Gf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],sf=1E3,vf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;b([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Bg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){zg(a)}, +a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var Zd="commands:",$d;for($d in zg)Zd+="\n"+ +Da($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b=Ke(a,b,c);for(var d in b)if(!Nf(a,b[+d]))return!1;return!0} +var zg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Gf=20,Hf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "), +lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS C0 C1 OV ND PD".split(" "),Ag={},Cf=(Ag[28672]={0:101},Ag[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ag[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Gf,9216:53, +9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ag[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ag[29248]={24576:79,24640:80,25088:81,25152:82},Ag[28700]={28672:93,28676:94,28680:95,28684:96, +28688:97,28692:98,28696:99,28700:100},Ag),Df=["","I","M","S"],Ef=" L E LE A GE N G".split(" "),Ff="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),If=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],uf=1E3,xf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;b([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)}, 0)}})}} -function Ag(a){if(0<=a.ga.indexOf("p"))return a.u(a.G.join("")),0;var b=Ue(a.b);try{for(var c=0;cI)break;var u= -I+1,P=I+l.length,cb="",Ab="";I&&(cb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==cb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Dg(a,d,a.fa,Eg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Ng:"=:"==f&&(e|=Og),Dg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Pg(a,b))&&(b=b.replace(H,Qg(a,Rg,Pg(a,h))));H=Sg(a,b);)b=b.replace(H,H.slice(0,-1)); -if(!Tg(a,f,b))switch(f){case Ug:case Vg:case Wg:Kg(a,h);break;case Xg:(f=b)?(a.C=Hg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case Yg:Zg(a,b);break;case $g:Zg(a,b.replace(",",",,"));break;case ah:case bh:case ch:case Lg:case Mg:case dh:Qg(a,f,h);break;case eh:case fh:case gh:case hh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Hf(a.b,f,b,a.fa,!0)),0>H&&(H=Hg(a,h,!0)),void 0!==H?Fg(a,H,a.b.ja):a.error("unrecognized expression: "+h)}return!0} -function Tg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Pa=ih(a,c,!0),Gg(a,d.Aa,d.Sa,d.Pa,d.Ab),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case bh:d.fb||Gg(a,d.Aa);break;case ch:d.fb&&Gg(a,d.Aa);break;case Lg:case Mg:for(b=0;b"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Sg(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,fb:kh,Sa:e,Ab:f,Pa:g,Aa:b+": 0",ca:a.ca};a.K.push(d)}return c} -function ih(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=jh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d} -function Kg(a,b){var c=b;null==a.D&&(a.D=a.H="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.H+=b}if(null==a.D){var d=b=0,e,f,g=a.H.length;a.I==Vg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Fg(a,d),b=0)}b&&Fg(a,d)}return c} -function Qg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ah){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=ih(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=lh;c=3}else if(b==Rg)a.J="[",a.M="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)], -b=mh,c=0;else if(b==Lg||b==Mg){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Bg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}rg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Eg=1,Ng=2,Og=4,Ug="ASCII",Vg="ASCIZ",ah="DEFINE",Xg="END",Yg="EXP",bh="IFE",ch="IFN",Lg="IRP",Mg="IRPC",eh="LALL",Rg="LITERAL",fh="PAGE",dh="REPEAT",Wg="SIXBIT",gh="SUBTTL",hh="TITLE",$g="XWD",lh=-1,mh=-2,kh=-3; -function nh(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.R=null;oh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.U=!1;this.I=this.C=null;this.T=this.P=!1;this.aa=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=ph(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.ab+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.xa)for(b= -0;b\nLicense: GPL version 3 or later ");for(b=0;bqh){if(rh(d,this.L)){this.C=new F(this,"1.34.3",Lh);rh(this.C)&&(Mh(this,d),a=Nh,Oh(this.C));this.C.set(Ih,Ga());Ph(this.C);var e=this.b&&!this.K;if(a==Jh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Hh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?rh(d,g):("error"==f&&"no machine state"!= -g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(Qh,""),this.i=null)):this.u(f+": "+g),Oh(d),rh(d)?(c=Hh(d),e=!0):c=!1))}e&&uh(this,c?d:null)}else a==Nh&&d.clear()}else uh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Rh(this,this.v,b,c,a),J(this,-2),this.v.ea());this.P&&(Mh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0}; -function Mh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}} -function wg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",vh),h=Ga();g.set(Ih,h);f.set(Ih,h);f.set(Sh,"1.34.3");f.set(Th,window?window.location.href:null);f.set(Uh,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ea=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;kI)break;var u= +I+1,P=I+l.length,cb="",Ab="";I&&(cb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==cb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.fa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1)); +if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.C=Jg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:Sg(a,f,h);break;case gh:case hh:case ih:case jh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.fa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ja):a.error("unrecognized expression: "+h)}return!0} +function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Pa=kh(a,c,!0),Ig(a,d.Aa,d.Sa,d.Pa,d.Ab),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case dh:d.fb||Ig(a,d.Aa);break;case eh:d.fb&&Ig(a,d.Aa);break;case Ng:case Og:for(b=0;b"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,fb:mh,Sa:e,Ab:f,Pa:g,Aa:b+": 0",ca:a.ca};a.K.push(d)}return c} +function kh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=lh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d} +function Mg(a,b){var c=b;null==a.D&&(a.D=a.H="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.H+=b}if(null==a.D){var d=b=0,e,f,g=a.H.length;a.I==Xg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c} +function Sg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=kh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=nh;c=3}else if(b==Tg)a.J="[",a.M="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)], +b=oh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",gh="LALL",Tg="LITERAL",hh="PAGE",fh="REPEAT",Yg="SIXBIT",ih="SUBTTL",jh="TITLE",bh="XWD",nh=-1,oh=-2,mh=-3; +function ph(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.R=null;qh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.U=!1;this.I=this.C=null;this.T=this.P=!1;this.aa=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=rh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.ab+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.xa)for(b= +0;b\nLicense: GPL version 3 or later ");for(b=0;bsh){if(th(d,this.L)){this.C=new F(this,"1.34.3",Nh);th(this.C)&&(Oh(this,d),a=Ph,Qh(this.C));this.C.set(Kh,Ga());Rh(this.C);var e=this.b&&!this.K;if(a==Lh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Jh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?th(d,g):("error"==f&&"no machine state"!= +g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(Sh,""),this.i=null)):this.u(f+": "+g),Qh(d),th(d)?(c=Jh(d),e=!0):c=!1))}e&&wh(this,c?d:null)}else a==Ph&&d.clear()}else wh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Th(this,this.v,b,c,a),J(this,-2),this.v.ea());this.P&&(Oh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0}; +function Oh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}} +function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",xh),h=Ga();g.set(Kh,h);f.set(Kh,h);f.set(Uh,"1.34.3");f.set(Vh,window?window.location.href:null);f.set(Wh,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ea=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), -a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, -"");a=a.replace(d[0],g);bi(a,b,c)}})}else c(a,null)} -function ci(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--Zh||ab(!0));l=!1}var h,k,l=!0;Zh++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d|| -(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?$h(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Zh||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Zh|| -ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?$h(c,b,a,e,!0,f,p):ai(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ci("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ci("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")}; +m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.J[b]=c,c.onclick=function(){d.w||(d.A.Y?yg(d,!1,!0):vh(d,d.Va))},!0;case "reset":return this.J[b]=c,c.onclick=function(){if(d.A.Y&&!d.w)if(d.b&&!d.F){var a=pb("Click OK to save changes to this "+Rb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");yg(d,a,!0);!a&&d.M?window&&window.location.reload():d.Va(sh)}else d.reset(),d.v&&!d.D&&d.v.ea()},!0;case "save":if(ya(Ja(),"pcjs.org"))c.parentNode.removeChild(c); +else return this.J[b]=c,c.onclick=function(){var a=rh(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=yg(d,b);b?Xh(d,a,c):d.ha("Resume disabled, machine state not saved")}},!0}return!1}; +function rh(a,b){var c=a.i;c||((c=Pa(Sh),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Zh(a,c))||a.ha("The user ID is invalid.")):b&&a.ha("Browser local storage is not available"));return c} +function Zh(a,b){a.i=null;b=Ha(Ja()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Qa(Sh,b.data),a.i=b.data)}catch(d){q(d.message+" ("+c+")")}return a.i}function uh(a){var b=null;a.i&&(b=Ja()+"/api/v1/user?req=load&user="+a.i+"&state="+$h(a,"1.34.3"));return b} +function Xh(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=$h(a,"1.34.3");d.data=c;b=Ha(Ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(d[0],g);di(a,b,c)}})}else c(a,null)} +function ei(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ai||ab(!0));l=!1}var h,k,l=!0;ai++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d|| +(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?bi(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ai||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ai|| +ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?bi(c,b,a,e,!0,f,p):ci(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ei("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ei("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")}; window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!vb[a]){for(var c=!0,d=vb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;pc;c++){v function mb(){for(var a=A(document,z,"panel"),b=0;bd.length){for(var e=0,f=Array(4096),g=0;g>>a.f;0f&&(u=f);if(h&&h.size){if(h.type==d){if(e+f<=h.ea)return h.Ea+=h.ea-e,h.ea=e,!0;if(e>=h.ea+h.Ea){u=h.size-(e-m);u>f&&(u=f);h.Ea=e-h.ea+u;e=m+16384;f-=u;g++;continue}}return Hb(Ib,e,f)}e=new Db(a,e,u,16384,d);Eb(e,h);a.a[g++]=e;e=m+16384;f-=u}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Jb[d]+" at "+ka(b)),!0):Hb(Kb,b,c)} -function Bb(a,b,c){var d=a.a[(b&a.g)>>>a.f];a.h++;d.g(c,b&16383,b);a.h--}function Fb(a){for(var b=0,c=[],d=0;d>>a.f];a.h++;d.j(c,b&16383,b);a.h--}function Fb(a){for(var b=0,c=[],d=0;d>14)%36){var c=this.b(b);0>a&&(a=36+a);c=c*M 35+a)%G,d=Math.trunc(d/Math.pow(2,-a))+c,d>F&&(e+=G));this.c(b,d);this.c(b+1&15,e)}},function(a,b){if(a=(this.a<<14>>14)%72){var c=this.b(b),d=this.b(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%J+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%J+Math.trunc(d/Math.pow(2,72-a)));this.c(b,c);this.c(b+1&15,d)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),d=this.b(b+1&15);0< a?36<=a?(c=72<=a?0:d*Math.pow(2,a-36)%J,d=0):(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J):-36>=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%J,c=Math.trunc(c/Math.pow(2,-a)));this.c(b,c);this.c(b+1&15,d)}},O,function(a,b){a=this.b(b);this.c(b,this.b(this.a));this.c(this.a,a)},function(a,b){a=!1;for(var c=this.b(b),d=c/E|0,c=c&C;!a;)this.c(c,this.b(d)),c==this.a&&(a=!0),d=d+1&C,c=c+1&C,this.i.B||(this.c(b,d*E+c),a|| (this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa,c=c/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.h(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.da=this.a},O,function(a){this.h(a)},function(a,b){a= -this.b(b);a+=262145;this.c(a&C,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);M(this,this.a)},function(a,b){this.c(this.a,this.b(b));this.c(b,this.a*E+this.f);M(this,this.a+1)},function(a,b){a=this.b(b);this.c(b, -this.b(a/E|0));M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a, -this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b), -this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this,this.a)},function(a,b){0<=X(this.b(b))&& -M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a, -b){a=this.b(this.a);X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),1));M(this,this.a)},function(a,b){a=this.c(b,R.call(this, -this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this, -this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),I));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));M(this,this.f+1);b&&this.c(b,a)},function(a, -b){a=this.c(this.a,R.call(this,this.b(this.a),I));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a)},function(a,b){this.c(this.a,this.b(b));this.c(b,this.a*E+this.f);M(this,this.a+1)},function(a, +b){a=this.b(b);this.c(b,this.b(a/E|0));M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))}, +function(a,b){this.c(this.a,this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+ +1)},function(a,b){V(this.b(b),this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this, +this.a)},function(a,b){0<=X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&& +M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),1));M(this, +this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b, +a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),I));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)&&M(this,this.a)},function(a, +b){a=this.c(b,R.call(this,this.b(b),I));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a), +I));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>>f.f;0>>=f.f;0>>a.f;0g&&g>=-G&&(g+=J);for(var g=Math.trunc(Math.abs(g))%J,h=d;f--&&h>>a.f;0g&&g>=-G&&(g+=J);for(var g=Math.trunc(Math.abs(g))%J,h=d;f--&&h=n.Ta&&c<=n.eb&&(b=c-(n.Ta-n.$a));b&&(a.preventDefault&&a.preventDefault(),d.Da(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==n.bb&&(b=n.ab);d.Da(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); @@ -179,8 +179,8 @@ c,c.onclick=function(){var a=gd(d,!0);if(a){var b=!!(d.a&&!d.o||d.D),c=yd(d,b);b function Ed(a,b){a.f=null;b=p(pa()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya(wd,b.data),a.f=b.data)}catch(d){q(d.message+" ("+c+")")}return a.f}function jd(a){var b=null;a.f&&(b=pa()+"/api/v1/user?req=load&user="+a.f+"&state="+Fd(a,"1.34.3"));return b} function Cd(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Fd(a,"1.34.3");d.data=c;b=p(pa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), From 5a8a76249a3b024318d20f15fc5fce5ead4d0554 Mon Sep 17 00:00:00 2001 From: Jeff Date: Tue, 28 Mar 2017 16:31:02 -0700 Subject: [PATCH 09/27] Reordered flag output in the debugger to match bit order --- modules/pdp10/lib/debugger.js | 22 +++++++++++----------- versions/pdpjs/1.34.3/pdp10-dbg.js | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js index b8d66b27e..4a498140b 100644 --- a/modules/pdp10/lib/debugger.js +++ b/modules/pdp10/lib/debugger.js @@ -922,15 +922,15 @@ class DebuggerPDP10 extends Debugger { case DebuggerPDP10.REGS.PS: value = (cpu.getPS() / PDP10.HALF_SHIFT)|0; break; + case DebuggerPDP10.REGS.OV: + value = (cpu.regPS & PDP10.PSFLAG.AROV)? 1 : 0; + break; case DebuggerPDP10.REGS.C0: value = (cpu.regPS & PDP10.PSFLAG.CRY0)? 1 : 0; break; case DebuggerPDP10.REGS.C1: value = (cpu.regPS & PDP10.PSFLAG.CRY1)? 1 : 0; break; - case DebuggerPDP10.REGS.OV: - value = (cpu.regPS & PDP10.PSFLAG.AROV)? 1 : 0; - break; case DebuggerPDP10.REGS.ND: value = (cpu.regPS & PDP10.PSFLAG.DCK)? 1 : 0; break; @@ -961,15 +961,15 @@ class DebuggerPDP10 extends Debugger { case DebuggerPDP10.REGS.PS: cpu.setPS(value * PDP10.HALF_SHIFT); break; + case DebuggerPDP10.REGS.OV: + flag = PDP10.PSFLAG.AROV; + break; case DebuggerPDP10.REGS.C0: flag = PDP10.PSFLAG.CRY0; break; case DebuggerPDP10.REGS.C1: flag = PDP10.PSFLAG.CRY1; break; - case DebuggerPDP10.REGS.OV: - flag = PDP10.PSFLAG.AROV; - break; case DebuggerPDP10.REGS.ND: flag = PDP10.PSFLAG.DCK; break; @@ -2256,7 +2256,7 @@ class DebuggerPDP10 extends Debugger { { var sReg = this.getRegName(iReg); if (sReg) { - var nBits = (iReg >= DebuggerPDP10.REGS.C0? 1 : (iReg == DebuggerPDP10.REGS.RA? 23 : 18)); + var nBits = (iReg >= DebuggerPDP10.REGS.OV? 1 : (iReg == DebuggerPDP10.REGS.RA? 23 : 18)); sReg += '=' + this.toStrBase(this.getRegValue(iReg), nBits) + ' '; } return sReg; @@ -4076,15 +4076,15 @@ if (DEBUGGER) { RA: 1, EA: 2, PS: 3, - C0: 4, // single-bit "register" representing the Carry 0 flag - C1: 5, // single-bit "register" representing the Carry 1 flag - OV: 6, // single-bit "register" representing the Overflow flag + OV: 4, // single-bit "register" representing the Overflow flag + C0: 5, // single-bit "register" representing the Carry 0 flag + C1: 6, // single-bit "register" representing the Carry 1 flag ND: 7, // single-bit "register" representing the No Divide flag PD: 8, // single-bit "register" representing the Pushdown Overflow flag }; DebuggerPDP10.REGNAMES = [ - "PC", "RA", "EA", "PS", "C0", "C1", "OV", "ND", "PD" + "PC", "RA", "EA", "PS", "OV", "C0", "C1", "ND", "PD" ]; /* diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js index d83d608f6..effde3d36 100644 --- a/versions/pdpjs/1.34.3/pdp10-dbg.js +++ b/versions/pdpjs/1.34.3/pdp10-dbg.js @@ -189,7 +189,7 @@ function ff(a,b,c){var d,e;c||(c=Z());var f=c.B;if(void 0!==b){a:{var g,f=a.aa[0 null;switch(f[1].toLowerCase()){case "ops":h=0}if(null==h)break;b=b.replace(f[0],h.toString())}}"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var p,f=b,u;if(f.match(/^[a-z_][a-z0-9_]*$/i))for(f=f.toUpperCase(),h=0;ha&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)} function $e(a,b){a.D=a;a.ba=a.Eb=536870916;a.Z=null;a.R=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;db){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h, -g);bf(a.M,h.i);break;case of:rd(h,g*y);break;case pf:f=65536;break;case qf:f=32768;break;case rf:f=131072;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ia;l=b;h.B=l.B;h.cb=l.cb;h.oa=l.oa;h.S=l.S;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}} function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;b Date: Wed, 29 Mar 2017 08:14:07 -0700 Subject: [PATCH 10/27] Assemble commands can now be batched up; even if they refer to external files that must be loaded asynchronously, command processing will be suspended until assembly is complete --- modules/pdp10/lib/cpuops.js | 42 +++++----- modules/pdp10/lib/cpustate.js | 10 +-- modules/pdp10/lib/debugger.js | 45 ++++++----- versions/pdpjs/1.34.3/pdp10-dbg.js | 126 ++++++++++++++--------------- versions/pdpjs/1.34.3/pdp10.js | 6 +- 5 files changed, 118 insertions(+), 111 deletions(-) diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js index 062e57d31..46dacd569 100644 --- a/modules/pdp10/lib/cpuops.js +++ b/modules/pdp10/lib/cpuops.js @@ -1343,7 +1343,7 @@ PDP10.opIMULB = function(op, ac) PDP10.opMUL = function(op, ac) { this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA))); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -1364,7 +1364,7 @@ PDP10.opMUL = function(op, ac) PDP10.opMULI = function(op, ac) { this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.regEA)); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -1405,7 +1405,7 @@ PDP10.opMULM = function(op, ac) PDP10.opMULB = function(op, ac) { this.writeWord(this.regEA, this.writeWord(ac, PDP10.doMUL.call(this, this.readWord(ac), this.readWord(this.regEA)))); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -1430,7 +1430,7 @@ PDP10.opIDIV = function(op, ac) var dst = PDP10.doDIV.call(this, this.readWord(ac), 0, this.readWord(this.regEA)); if (dst < 0) return; this.writeWord(ac, dst); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -1455,7 +1455,7 @@ PDP10.opIDIVI = function(op, ac) var dst = PDP10.doDIV.call(this, this.readWord(ac), 0, this.regEA); if (dst < 0) return; this.writeWord(ac, dst); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -1531,7 +1531,7 @@ PDP10.opDIV = function(op, ac) dst = PDP10.doDIV.call(this, dst, ext, this.readWord(this.regEA)); if (dst < 0) return; this.writeWord(ac, dst); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -1559,7 +1559,7 @@ PDP10.opDIVI = function(op, ac) dst = PDP10.doDIV.call(this, dst, ext, this.regEA); if (dst < 0) return; this.writeWord(ac, dst); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -1614,7 +1614,7 @@ PDP10.opDIVB = function(op, ac) dst = PDP10.doDIV.call(this, dst, ext, this.readWord(this.regEA)); if (dst < 0) return; this.writeWord(ac, this.writeWord(this.regEA, dst)); - this.writeWord((ac + 1) & 0o17, this.regExt); + this.writeWord((ac + 1) & 0o17, this.regEX); }; /** @@ -2242,7 +2242,7 @@ PDP10.opJRST = function(op, ac) /* * Restore the flags. */ - this.setPS(this.regLA); + this.setPS((this.regLA / PDP10.HALF_SHIFT)|0); } if (ac & 0b0100) { /* @@ -2447,7 +2447,7 @@ PDP10.opPOPJ = function(op, ac) */ PDP10.opJSR = function(op, ac) { - this.writeWord(this.regEA, this.getPS() + this.getPC()); + this.writeWord(this.regEA, this.getPS() * PDP10.HALF_SHIFT + this.getPC()); this.regPS &= ~PDP10.PSFLAG.BIS; // TODO: Verify that BIS is cleared AFTER writing this.setPC(this.regEA + 1); }; @@ -2471,7 +2471,7 @@ PDP10.opJSR = function(op, ac) */ PDP10.opJSP = function(op, ac) { - this.writeWord(ac, this.getPS() + this.getPC()); + this.writeWord(ac, this.getPS() * PDP10.HALF_SHIFT + this.getPC()); this.regPS &= ~PDP10.PSFLAG.BIS; // TODO: Verify that BIS is cleared AFTER writing this.setPC(this.regEA); }; @@ -6157,14 +6157,14 @@ PDP10.doADD = function(dst, src) * @param {number} dst (36-bit value) * @param {number} ext (36-bit value extension) * @param {number} src (36-bit divisor) - * @return {number} (dst / src) (the remainder is stored in regExt); -1 if error (no division performed) + * @return {number} (dst / src) (the remainder is stored in regEX); -1 if error (no division performed) */ PDP10.doDIV = function(dst, ext, src) { var fNegQ = false, fNegR = false; dst = PDP10.merge72.call(this, dst, ext); - ext = this.regExt; + ext = this.regEX; if (src > PDP10.INT_MASK) { src = PDP10.WORD_LIMIT - src; @@ -6223,14 +6223,14 @@ PDP10.doDIV = function(dst, ext, src) this.assert(!this.regRem[1], "extended remainder"); dst = this.regRes[0]; - this.regExt = this.regRem[0]; + this.regEX = this.regRem[0]; if (fNegQ && dst) { dst = PDP10.WORD_LIMIT - dst; } - if (fNegR && this.regExt) { - this.regExt = PDP10.WORD_LIMIT - this.regExt; + if (fNegR && this.regEX) { + this.regEX = PDP10.WORD_LIMIT - this.regEX; } return dst; @@ -6250,7 +6250,7 @@ PDP10.doDIV = function(dst, ext, src) * @param {number} dst (36-bit value) * @param {number} src (36-bit value) * @param {boolean} [fTruncate] (true to truncate the result to 36 bits) - * @return {number} (dst * src) (the high 36 bits of the result; the low 36 bits are stored in regExt) + * @return {number} (dst * src) (the high 36 bits of the result; the low 36 bits are stored in regEX) */ PDP10.doMUL = function(dst, src, fTruncate) { @@ -6380,7 +6380,7 @@ PDP10.doSUB = function(dst, src) * @this {CPUStatePDP10} * @param {number} dst (36-bit value) * @param {number} ext (36-bit value) - * @return {number} (returns the lower 36 bits; the upper 36 bits are stored in regExt) + * @return {number} (returns the lower 36 bits; the upper 36 bits are stored in regEX) */ PDP10.merge72 = function(dst, ext) { @@ -6395,7 +6395,7 @@ PDP10.merge72 = function(dst, ext) * Compute value without the sign bit and add the low bit of extended in its place. */ dst = (dst % PDP10.INT_LIMIT) + ((ext * PDP10.INT_LIMIT) % PDP10.WORD_LIMIT); - this.regExt = sign + Math.trunc(ext / 2); + this.regEX = sign + Math.trunc(ext / 2); return dst; }; @@ -6407,7 +6407,7 @@ PDP10.merge72 = function(dst, ext) * @this {CPUStatePDP10} * @param {number} res (36-bit value) * @param {number} ext (36-bit value) - * @return {number} (returns the upper 36 bits; the lower 36 bits are stored in regExt) + * @return {number} (returns the upper 36 bits; the lower 36 bits are stored in regEX) */ PDP10.split72 = function(res, ext) { @@ -6427,7 +6427,7 @@ PDP10.split72 = function(res, ext) ext = sign + (ext - signNew); this.regPS |= PDP10.PSFLAG.AROV; } - this.regExt = res; + this.regEX = res; return ext; }; diff --git a/modules/pdp10/lib/cpustate.js b/modules/pdp10/lib/cpustate.js index d4a75c7cb..76cd8e6cb 100644 --- a/modules/pdp10/lib/cpustate.js +++ b/modules/pdp10/lib/cpustate.js @@ -184,7 +184,7 @@ class CPUStatePDP10 extends CPUPDP10 { this.regXC = -1; // if >= 0 this supersedes regPC (refers to an opcode from XCT) this.regBP = -1; // active byte pointer (-1 if none) this.regPS = 0; // assorted processor flags (see PSFLAG bit definitions) - this.regExt = 0; // internal "extension" register used for 72-bit MUL and DIV calculations + this.regEX = 0; // internal "extension" register used for 72-bit MUL and DIV calculations this.regRes = [0, 0]; // four internal "double-length" registers used for 72-bit DIV calculations this.regPow = [0, 0]; @@ -351,28 +351,26 @@ class CPUStatePDP10 extends CPUPDP10 { /** * getPS() * - * Gets the processor state flags in the format required by various program control operations (eg, JSP), - * pre-masked and pre-shifted for convenient loading into the left half of an accumulator. + * Gets the processor state flags in the format required by various program control operations (eg, JSP). * * @this {CPUStatePDP10} * @return {number} */ getPS() { - return (this.regPS & PDP10.HALF_MASK) * PDP10.HALF_SHIFT; + return (this.regPS & PDP10.HALF_MASK); } /** * setPS(w) * - * Sets the processor state flags in the format used by various program control operations (eg, JRST). + * Sets the processor state flags in the format required by various program control operations (eg, JRST). * * @this {CPUStatePDP10} * @param {number} w */ setPS(w) { - w = (w / PDP10.HALF_SHIFT)|0; this.regPS = (this.regPS & ~PDP10.PSFLAG.SET_MASK) | (w & PDP10.PSFLAG.SET_MASK); this.regPS |= (w & PDP10.PSFLAG.USERF); if (!(w & PDP10.PSFLAG.EXIOT)) { diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js index 4a498140b..e2649a12a 100644 --- a/modules/pdp10/lib/debugger.js +++ b/modules/pdp10/lib/debugger.js @@ -164,6 +164,7 @@ class DebuggerPDP10 extends Debugger { this.aMessageBuffer = []; this.messageInit(parmsDbg['messages']); this.sInitCommands = parmsDbg['commands']; + this.aCommands = []; /* * Define remaining miscellaneous DebuggerPDP10 properties. @@ -920,7 +921,7 @@ class DebuggerPDP10 extends Debugger { value = cpu.regEA; break; case DebuggerPDP10.REGS.PS: - value = (cpu.getPS() / PDP10.HALF_SHIFT)|0; + value = cpu.getPS(); break; case DebuggerPDP10.REGS.OV: value = (cpu.regPS & PDP10.PSFLAG.AROV)? 1 : 0; @@ -959,7 +960,7 @@ class DebuggerPDP10 extends Debugger { this.setAddr(this.dbgAddrCode, cpu.getPC()); break; case DebuggerPDP10.REGS.PS: - cpu.setPS(value * PDP10.HALF_SHIFT); + cpu.setPS(value); break; case DebuggerPDP10.REGS.OV: flag = PDP10.PSFLAG.AROV; @@ -2591,8 +2592,8 @@ class DebuggerPDP10 extends Debugger { * * [0]: the assemble command (assumed to be "a") * [1]: the target address (eg, "200") - * [2]: the operation code, aka instruction name (eg, "adc") - * [3]: the operation mode operand, if any (eg, "14", "[1234]", etc) + * [2]: the opcode mnemonic (eg, "hrli") + * [3]: the operands, if any * * The Debugger enters "assemble mode" whenever only the first (or first and second) arguments are present. * As long as "assemble mode is active, the user can omit the first two arguments on all later assemble commands @@ -2601,16 +2602,13 @@ class DebuggerPDP10 extends Debugger { * * Entering "assemble mode" is optional; one could enter a series of fully-qualified assemble commands; eg: * - * a ff00 cld - * a ff01 ldx 28 + * a 100 hrli 1,111111 + * a 101 hrri 1,444444 * ... * * without ever entering "assemble mode", but of course, that requires more typing and doesn't take advantage * of automatic target address advancement (see dbgAddrAssemble). * - * NOTE: As the previous example implies, you can even assemble new instructions into ROM address space; - * as our setByte() function explains, the ROM write-notification handlers only refuse writes from the CPU. - * * When filename(s) or URL(s) are provided in lieu of an opcode, we pass those on to the Macro10 component * for assembling, along with any option letters that were included with the "a" command; for example, if "ap" * was specified, then "p" will be passed to Macro10 as an option. @@ -2618,15 +2616,16 @@ class DebuggerPDP10 extends Debugger { * Macro10 options include: * * p: preprocess the specified resource(s) without assembling them - * l: generate listing information + * l: generate listing information (TODO) * * @this {DebuggerPDP10} * @param {Array.} asArgs is the complete argument array, beginning with the "a" command in asArgs[0] + * @return {boolean} */ doAssemble(asArgs) { var dbgAddr = this.parseAddr(asArgs[1], this.dbgAddrAssemble); - if (!dbgAddr) return; + if (!dbgAddr) return false; var sOpcode = asArgs[2]; @@ -2634,7 +2633,7 @@ class DebuggerPDP10 extends Debugger { this.println("begin assemble at " + this.toStrAddr(dbgAddr)); this.fAssemble = true; this.cmp.updateDisplays(); - return; + return true; } var sOptions = asArgs[0].substr(1); @@ -2658,14 +2657,16 @@ class DebuggerPDP10 extends Debugger { dbg.loadBin(dbg.macro10.getBin(), addrLoad); } catch(e) { dbg.println(e.message); + nErrorCode = -1; // fake error so that command processing stops } } else { dbg.println("error (" + nErrorCode + ") processing " + (sURL || sFile)); } dbg.macro10 = null; + if (!nErrorCode) dbg.doCommands(); }); } - return; + return false; } asArgs.shift(); @@ -2678,6 +2679,7 @@ class DebuggerPDP10 extends Debugger { this.setWord(dbgAddr, opCode); this.println(this.getInstruction(dbgAddr)); } + return true; } /** @@ -3749,7 +3751,7 @@ class DebuggerPDP10 extends Debugger { switch (asArgs[0].charAt(0)) { case 'a': - this.doAssemble(asArgs); + result = this.doAssemble(asArgs); break; case 'b': this.doBreak(asArgs[0], asArgs[1], sCmd); @@ -3868,16 +3870,23 @@ class DebuggerPDP10 extends Debugger { /** * doCommands(sCmds, fSave) * + * This function is now written so that if any async command, such as assemble ('a'), stopped the + * flow of commands by returning false, it can call us from its callback handler with no arguments, + * and command processing should continue where it left off. + * * @this {DebuggerPDP10} - * @param {string} sCmds + * @param {string} [sCmds] * @param {boolean} [fSave] * @return {boolean} true if all commands processed, false if not */ doCommands(sCmds, fSave) { - var a = this.parseCommand(sCmds, fSave); - for (var s in a) { - if (!this.doCommand(a[+s])) return false; + if (sCmds) { + this.aCommands = this.parseCommand(sCmds, fSave); + } + var sCmd; + while (sCmd = this.aCommands.shift()) { + if (!this.doCommand(sCmd)) return false; } return true; } diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js index effde3d36..2e8fc8e6a 100644 --- a/versions/pdpjs/1.34.3/pdp10-dbg.js +++ b/versions/pdpjs/1.34.3/pdp10-dbg.js @@ -42,13 +42,13 @@ function Ga(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFul function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} function Ia(a,b){var c,d={da:null,X:null,wa:null,va:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.wa=g.load;d.va=g.exec;if(e=g.bytes)d.da=e;else if(e=g.words)for(d.da=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.da=Array(4*e.length),f=c=0;c>8&255,d.da[f++]=e[c]>>16&255,d.da[f++]=e[c]>>24&255;else(e=g.data)?d.Oa=e:d.da=g;d.da&&(d.da.length?1==d.da.length&&(q(d.da[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c>8&255,d.da[f++]=e[c]>>16&255,d.da[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.da=g;d.da&&(d.da.length?1==d.da.length&&(q(d.da[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.$a=this.id:(this.ab=this.id.substr(0,a),this.$a=this.id.substr(a+1));this.A={ready:!1,Ua:!1,pb:!1,Y:!1,error:!1};this.eb=null;this.A.error=!1;this.ba=c||0;this.D=this.v=this.G=this.H=this.xa=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date} +function Za(a){if($a)try{for(var b=0;ba?this.$a=this.id:(this.ab=this.id.substr(0,a),this.$a=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Y:!1,error:!1};this.eb=null;this.A.error=!1;this.ba=c||0;this.D=this.v=this.G=this.H=this.xa=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date} function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;bc;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Wa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Wa){l=h.size-(e-k);l>f&&(l=f);h.Wa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)} +function Dc(a,b,c,d){for(var e=b,f=c,g=e>>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Xa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Xa){l=h.size-(e-k);l>f&&(l=f);h.Xa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)} function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.ka&&(a.ka+=a.ra,c=!0);0<=a.la&&a.la<=fd(a)&&(a.ra=a.la=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}} +m.za=function(a,b){var c=$c(this.H,"autoStart");null!=c?this.A.ea="true"==c?!0:"false"==c?!1:!!c:null==this.A.ea&&(this.A.ea=!this.D&&void 0===this.J.run);if(!b){if(a){ad(this);if(!this.restore(a))return!1;bd(this)}else this.reset();this.D?(a=this.D,b=this.A.ea,a.Ia=!0,a.u("Type ? for help with PDPjs Debugger commands"),cd(a),b||dd(a),a.ua&&(b=a.ua,a.ua=null,ed(a,b,!0))):this.status("No debugger detected");this.A.ea||this.u("CPU will not be auto-started "+(this.Na?"(click Run to start)":"(type 'go' to start)"))}return!0}; +m.pa=function(a){return a?this.save():!0};m.ea=function(){return this.A.O?!0:this.A.ea?(rc(this),!0):!1};m.Ib=function(){return 0};function bd(a){void 0===a.Ga&&(a.Ga=0);void 0===a.ra&&(a.ra=-1);void 0===a.la&&(a.la=-1);a.A.Ua=0<=a.Ga&&0=a.ka&&(a.ka+=a.ra,c=!0);0<=a.la&&a.la<=fd(a)&&(a.ra=a.la=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}} m.qa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Y)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.Z/a.aa?b=1:d=!0;a.ga=b;b=a.kb*a.ga;if(a.aa!=b){a.aa=b;b=a.aa.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.R=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.T-=a.N;a.N=0;b&&(a.T=0);return c} -m.jc=function(){if(this.A.O){this.bb>=this.mb&&hd(this,!0);this.ma=0;this.Ea=ob();if(this.R){var a=this.Ea-this.R;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ta?1:this.Ha);try{this.Ya(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.ma+=b;this.M+=b;vc(this,b);tc(this,b);this.ia-=b;if(0>=this.ia){this.ia+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this, +m.jc=function(){if(this.A.O){this.bb>=this.mb&&hd(this,!0);this.ma=0;this.Ea=ob();if(this.R){var a=this.Ea-this.R;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.Za(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.ma+=b;this.M+=b;vc(this,b);tc(this,b);this.ia-=b;if(0>=this.ia){this.ia+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this, e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.R=ob();var c=this.lb;this.ma&&(c=Math.round(c*this.ma/this.Ha));var c=c-(this.R-this.Ea),d=this.R-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.U=0,gd(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.bb+=this.ma;this.R+=c;a(b,c)}}}; -function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Ya=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"]; -function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Za=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype; -m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Za;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ja=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0}; -m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Za]);a.set(1,[]);a.set(2,[this.U,this.ga,this.A.ea]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; -m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Za=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.ea=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)}; +function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Za=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"]; +function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype; +m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Oa;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ja=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0}; +m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Oa]);a.set(1,[]);a.set(2,[this.U,this.ga,this.A.ea]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; +m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Oa=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.ea=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)}; m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; -m.Ya=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K= +m.Za=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K= this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)} function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}} function yd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)} @@ -125,7 +125,7 @@ this.g(b,a)}},function(a,b){if(a=(this.b<<14>>14)%36){var c=this.f(b);0>a&&(a=36 dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d>z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+ d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=(this.b<<14>>14)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),d=this.f(b+ 1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},L,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b,a)},function(a,b){a=!1;for(var c=this.f(b),d=c/y|0,c=c&x;!a;)this.g(c,this.f(d)),c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d* -y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ia);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.ua=this.b},L,function(a){this.w(a)},function(a,b){a=this.f(b);a+=262145;this.g(a&x,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a, +y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ia/y|0);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.ua=this.b},L,function(a){this.w(a)},function(a,b){a=this.f(b);a+=262145;this.g(a&x,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a, b){a=this.f(b);var c=this.f(a&x);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a){this.w(a)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))}, function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ze.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ze.call(this,this.f(b),this.f(this.b))))},oe,function(a,b){0>T(this.f(b),this.b)&& G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+ @@ -156,11 +156,11 @@ function Be(a){r.call(this,"ROM",a,128);this.X=this.b=null;this.C=+a.addr;this.j Be.prototype.Ka=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Ce(this)};Be.prototype.za=function(){this.X&&(this.D&&De(this.D,this.id,this.C,this.j,this.X),delete this.X);return!0};Be.prototype.pa=function(){return!0}; function Ce(a){if(!Lb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)zb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.j,8,!0)+")");else{var b;b=a.C;if(Dc(a.G,b,a.j,Pc)){var c;for(c=0;c>>f.i;0>>= f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)}; @@ -179,58 +179,58 @@ function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.t function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.S?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} var Re={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Me=Math.pow(2,32); -function Xe(a){Je.call(this,a);this.Ha=!1;this.Fa=18;this.L=36;this.aa=["<",">"];this.sa=[];this.Ga=Z();this.M=Z(0);this.la=Z(0);this.ia=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.U=this.ma=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ba=this.Eb=0;this.Z=null;this.R=[];$e(this,a.messages);this.ua=a.commands;this.P=0;this.Na=this.Ea=null;this.C=this.Ja=this.Ia=this.ka=this.Ca=0;this.ta=this.ra=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, +function Xe(a){Je.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.aa=["<",">"];this.sa=[];this.Ha=Z();this.M=Z(0);this.la=Z(0);this.ia=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.U=this.ma=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ba=this.Eb=0;this.Z=null;this.R=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.ka=this.Ca=0;this.ta=this.ra=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,cb:void 0===b?!1:b,oa:!1,S:c}}function bf(a,b,c,d){a.B=b;a.cb=c||!1;a.oa=!1;a.S=d}function cf(a){return[a.B,a.cb,a.oa,a.S,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype; m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.la));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+" %"+ -n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)} function $e(a,b){a.D=a;a.ba=a.Eb=536870916;a.Z=null;a.R=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1} function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f, --1)+")")}else k=Da(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ta?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h} +-1)+")")}else k=Da(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h} function Jf(a,b,c,d,e){var f=-1,g,h;a.ja=null;if(b){for(var k=b.toUpperCase(),l=0;lGf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&& (c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127 h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.ma=0} -m.Qa=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Qa(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.oa||Ze(a);break}}return f} +m.Ra=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.oa||Ze(a);break}}return f} function Mf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ga,d);f+="="+K(e,e.Ma(e.Ga),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]d;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ha,d);f+="="+K(e,e.Ma(e.Ha),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,X:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h, -g);bf(a.M,h.i);break;case of:rd(h,g*y);break;case pf:f=131072;break;case qf:f=65536;break;case rf:f=32768;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ia;l=b;h.B=l.B;h.cb=l.cb;h.oa=l.oa;h.S=l.S;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}} -function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd= -[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var hb=ff(a,ma,a.la);if(hb){var Ka=0,Xf="ds"==eb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||yh,Ka=Qe(a,Ba);else{var Yf=ff(a,Ba);Yf&& -(Ka=Yf.B-hb.B)}0>Ka&&(Ka=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Xf?La+(oa+","):La+(ma+": "+oa+(0>$f? +function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd= +[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var ib=ff(a,ma,a.la);if(ib){var Ka=0,Xf="ds"==fb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||yh,Ka=Qe(a,Ba);else{var Yf=ff(a,Ba);Yf&& +(Ka=Yf.B-ib.B)}0>Ka&&(Ka=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Xf?La+(oa+","):La+(ma+": "+oa+(0>$f? " "+Qd:""))}La&&a.u(La);a.S=Ah}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Sd=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else{var Hc=ff(a,Sd,a.la);if(Hc)for(var Td=2;Td +if(!Ud)break a;hf(a,Ud,Dh);a.Ra(a.b,Ud,!0)}vf(a,!0,c)}break;case "h":a.A.O?(c||a.u("halting"),a.W()):Nb(a,!0)||c||a.u("already halted");break;case "i":if("if"==g[0]){var Vd;var Gb=b.substr(2),Gb=Ea(Gb);Te(a,Gb)?(c||a.u("true: "+Gb),Vd=!0):(c||a.u("false: "+Gb),Vd=!1);Vd||(d=!1);break}f=!0;break;case "k":var Eh=g[0];if("?"==g[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var Wd=0,Xd=Z(),Hb=Z();for(a.u("stack trace for "+K(a,Hb.B,18));10> Wd;){for(var Ma=null,Fh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Fh--)break;if(!(Xd.B&1)){for(var Gh=a,Ic=Xd,eg=null,Ib=Ic.B,fg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2lg)a.u("step commands:"), -a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Qa(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var ib=+g[2];if(2==ib||8==ib||10==ib||16==ib)a.S=ib;else{a.u("invalid base: "+ib);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra= -Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.la=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ta?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.aa.toFixed(2)+"Mhz")+" ("+a.v.ga+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"), +a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.S=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra= +Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.la=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.aa.toFixed(2)+"Mhz")+" ("+a.v.ga+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"), a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var Zd="commands:",$d;for($d in zg)Zd+="\n"+ -Da($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b=Ke(a,b,c);for(var d in b)if(!Nf(a,b[+d]))return!1;return!0} +Da($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0} var zg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Gf=20,Hf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "), lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS OV C0 C1 ND PD".split(" "),Ag={},Cf=(Ag[28672]={0:101},Ag[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ag[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Gf,9216:53, 9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ag[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ag[29248]={24576:79,24640:80,25088:81,25152:82},Ag[28700]={28672:93,28676:94,28680:95,28684:96, @@ -238,29 +238,29 @@ lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS OV C0 C1 ND PD".spl function tg(a,b,c,d,e){this.T=b||0;this.ga=c||"";this.b=d;this.done=e;this.C=null;this.u("starting PCjs MACRO-10 Mini-Assembler...");this.j={};this.N={};this.L=[];this.K=[];this.V=[];this.na=[];this.Z=this.U=this.ca=0;this.fa=this.T;this.La=-1;this.w=[];this.I=null;this.i=0;this.F=null;this.J=this.M="";this.aa=/^[ \t]*([A-Z$%.?][0-9A-Z$%.]*:|)[ \t]*([A-Z$%.][0-9A-Z$%.]*|)([ \t]*)([^;]+|)(;?[\s\S]*)/i;this.D=this.v=null;this.H="";this.G=[];this.R=0;this.P=a.split(";");Bg(this)} function Bg(a){if(a.R==a.P.length)a.done(Cg(a));else{var b=a.P[a.R++];a.u("loading "+wa(b));".MAC"==b.slice(-4).toUpperCase()&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/
([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
 0)}})}}
-function Cg(a){if(0<=a.ga.indexOf("p"))return a.u(a.G.join("")),0;var b=Ve(a.b);try{for(var c=0;cI)break;var u=
-I+1,P=I+l.length,cb="",Ab="";I&&(cb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==cb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.fa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
+I+1,P=I+l.length,db="",Ab="";I&&(db=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==db&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.fa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
 if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.C=Jg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:Sg(a,f,h);break;case gh:case hh:case ih:case jh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.fa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ja):a.error("unrecognized expression: "+h)}return!0}
-function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Pa=kh(a,c,!0),Ig(a,d.Aa,d.Sa,d.Pa,d.Ab),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case dh:d.fb||Ig(a,d.Aa);break;case eh:d.fb&&Ig(a,d.Aa);break;case Ng:case Og:for(b=0;b"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,fb:mh,Sa:e,Ab:f,Pa:g,Aa:b+": 0",ca:a.ca};a.K.push(d)}return c}
+function Rg(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,fb:mh,Ta:e,Ab:f,Qa:g,Aa:b+": 0",ca:a.ca};a.K.push(d)}return c}
 function kh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=lh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
 function Mg(a,b){var c=b;null==a.D&&(a.D=a.H="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.H+=b}if(null==a.D){var d=b=0,e,f,g=a.H.length;a.I==Xg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
 function Sg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=kh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=nh;c=3}else if(b==Tg)a.J="[",a.M="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],
-b=oh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",gh="LALL",Tg="LITERAL",hh="PAGE",fh="REPEAT",Yg="SIXBIT",ih="SUBTTL",jh="TITLE",bh="XWD",nh=-1,oh=-2,mh=-3;
 function ph(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.R=null;qh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.U=!1;this.I=this.C=null;this.T=this.P=!1;this.aa=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=rh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.ab+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.xa)for(b=
 0;b\nLicense: GPL version 3 or later ");for(b=0;bsh){if(th(d,this.L)){this.C=new F(this,"1.34.3",Nh);th(this.C)&&(Oh(this,d),a=Ph,Qh(this.C));this.C.set(Kh,Ga());Rh(this.C);var e=this.b&&!this.K;if(a==Lh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Jh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?th(d,g):("error"==f&&"no machine state"!=
+m.Wa=function(a){void 0===a&&(a=this.b||(this.L?Lh:sh));if(!this.w){this.w++;var b=!1,c=!1;this.P=!1;var d=this.I||new F(this,"1.34.3");if(a==Mh)b=!0;else if(a>sh){if(th(d,this.L)){this.C=new F(this,"1.34.3",Nh);th(this.C)&&(Oh(this,d),a=Ph,Qh(this.C));this.C.set(Kh,Ga());Rh(this.C);var e=this.b&&!this.K;if(a==Lh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Jh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?th(d,g):("error"==f&&"no machine state"!=
 g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(Sh,""),this.i=null)):this.u(f+": "+g),Qh(d),th(d)?(c=Jh(d),e=!0):c=!1))}e&&wh(this,c?d:null)}else a==Ph&&d.clear()}else wh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Th(this,this.v,b,c,a),J(this,-2),this.v.ea());this.P&&(Oh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
@@ -270,13 +270,13 @@ function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3
 m.reset=function(){this.A.reset=!0;this.G&&this.G.reset&&(Qb(this,"Resetting "+this.G.type),this.G.reset());this.v&&this.v.reset&&(Qb(this,"Resetting "+this.v.type),this.v.reset());for(var a=qb(this.id),b=0;b=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0/g.exec(a)){var e=
 function ei(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ai||ab(!0));l=!1}var h,k,l=!0;ai++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
 (p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?bi(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ai||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ai||
 ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?bi(c,b,a,e,!0,f,p):ci(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ei("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ei("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")};
-window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!vb[a]){for(var c=!0,d=vb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p>14)%36){var c=this.b(b);0>a&&(a=36+a);c=c*M
 131072;if(71<=a){if(0F&&eF&&(this.g|=131072):e-c<=F&&(this.g|=131072);e=0;f>F&&(d+=G,e+=G)}else d=d*Math.pow(2,a)%G+Math.trunc(e%G/Math.pow(2,35-a)),e=e*Math.pow(2,a)%G,c=G-Math.pow(2,35-a),f<=F?f+c>F&&(this.g|=131072):(f-c<=F&&(this.g|=131072),d+=G,e+=G)}else-36>=a?(e=-72>=a?d>F?I:0:Math.trunc(d%G/Math.pow(2,-a-35)),d<=F?d=0:(d=I,e+=G)):(c=d>F?J-Math.pow(2,36+a):0,e=Math.trunc(e%G/Math.pow(2,-a))+d%G*Math.pow(2,
 35+a)%G,d=Math.trunc(d/Math.pow(2,-a))+c,d>F&&(e+=G));this.c(b,d);this.c(b+1&15,e)}},function(a,b){if(a=(this.a<<14>>14)%72){var c=this.b(b),d=this.b(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%J+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%J+Math.trunc(d/Math.pow(2,72-a)));this.c(b,c);this.c(b+1&15,d)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),d=this.b(b+1&15);0<
 a?36<=a?(c=72<=a?0:d*Math.pow(2,a-36)%J,d=0):(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J):-36>=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%J,c=Math.trunc(c/Math.pow(2,-a)));this.c(b,c);this.c(b+1&15,d)}},O,function(a,b){a=this.b(b);this.c(b,this.b(this.a));this.c(this.a,a)},function(a,b){a=!1;for(var c=this.b(b),d=c/E|0,c=c&C;!a;)this.c(c,this.b(d)),c==this.a&&(a=!0),d=d+1&C,c=c+1&C,this.i.B||(this.c(b,d*E+c),a||
-(this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa,c=c/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.h(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.da=this.a},O,function(a){this.h(a)},function(a,b){a=
-this.b(b);a+=262145;this.c(a&C,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a)},function(a,b){this.c(this.a,this.b(b));this.c(b,this.a*E+this.f);M(this,this.a+1)},function(a,
-b){a=this.b(b);this.c(b,this.b(a/E|0));M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},
+(this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.h(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.da=this.a},O,function(a){this.h(a)},function(a,b){a=this.b(b);
+a+=262145;this.c(a&C,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a)},function(a,b){this.c(this.a,this.b(b));this.c(b,this.a*E+this.f);M(this,this.a+1)},function(a,b){a=
+this.b(b);this.c(b,this.b(a/E|0));M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},
 function(a,b){this.c(this.a,this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+
 1)},function(a,b){V(this.b(b),this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this,
 this.a)},function(a,b){0<=X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&&

From d0ff759684fb50c3a8fe7142735328b6aaa52918 Mon Sep 17 00:00:00 2001
From: Jeff 
Date: Wed, 29 Mar 2017 10:12:45 -0700
Subject: [PATCH 11/27] Added MACRO-10 support for OPDEFs, which are macro-like
 statements used to generate words which can also be combined with addressing
 modifiers

---
 modules/pdp10/lib/cpuops.js        |   4 +-
 modules/pdp10/lib/cpustate.js      |   4 +-
 modules/pdp10/lib/debugger.js      |   4 +-
 modules/pdp10/lib/defines.js       |   8 +-
 modules/pdp10/lib/macro10.js       | 120 +++++++++++--
 versions/pdpjs/1.34.3/pdp10-dbg.js | 275 +++++++++++++++--------------
 6 files changed, 256 insertions(+), 159 deletions(-)

diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js
index 46dacd569..fe08f6ae0 100644
--- a/modules/pdp10/lib/cpuops.js
+++ b/modules/pdp10/lib/cpuops.js
@@ -372,7 +372,7 @@ PDP10.opLDB = function(op, ac)
     var w = this.readWord(this.regEA);
     if (this.regBP < 0) {
         this.regBP = w;
-        this.regRA = this.regEA | PDP10.OPCODE.I_BIT;
+        this.regRA = this.regEA | PDP10.OPCODE.I_FIELD;
         return;
     }
     var p = (this.regBP / PDP10.OPCODE.P_SCALE) & PDP10.OPCODE.P_MASK;
@@ -458,7 +458,7 @@ PDP10.opDPB = function(op, ac)
     var w = this.readWord(this.regEA);
     if (this.regBP < 0) {
         this.regBP = w;
-        this.regRA = this.regEA | PDP10.OPCODE.I_BIT;
+        this.regRA = this.regEA | PDP10.OPCODE.I_FIELD;
         return;
     }
     var p = (this.regBP / PDP10.OPCODE.P_SCALE) & PDP10.OPCODE.P_MASK;
diff --git a/modules/pdp10/lib/cpustate.js b/modules/pdp10/lib/cpustate.js
index 76cd8e6cb..46a814070 100644
--- a/modules/pdp10/lib/cpustate.js
+++ b/modules/pdp10/lib/cpustate.js
@@ -437,7 +437,7 @@ class CPUStatePDP10 extends CPUPDP10 {
      */
     getOpcode()
     {
-        if ((this.regRA & PDP10.OPCODE.I_BIT)) {
+        if ((this.regRA & PDP10.OPCODE.I_FIELD)) {
             this.regRA = this.regLA = this.readWord(this.regEA);
         } else if (this.regXC >= 0) {
             this.regRA = this.regOP = this.readWord(this.regXC);
@@ -468,7 +468,7 @@ class CPUStatePDP10 extends CPUPDP10 {
         var x = (this.regRA >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK;
         if (x) this.regEA = (this.regEA + (this.regLA = this.readWord(x))) & PDP10.ADDR_MASK;
 
-        return (this.regRA & PDP10.OPCODE.I_BIT)? -1 : ((this.regOP / PDP10.OPCODE.A_SCALE)|0);
+        return (this.regRA & PDP10.OPCODE.I_FIELD)? -1 : ((this.regOP / PDP10.OPCODE.A_SCALE)|0);
     }
 
     /**
diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js
index e2649a12a..141a96758 100644
--- a/modules/pdp10/lib/debugger.js
+++ b/modules/pdp10/lib/debugger.js
@@ -1570,7 +1570,7 @@ class DebuggerPDP10 extends Debugger {
                     }
                 }
                 sOperation = Str.pad(sOperation, 8) + (sOperand? sOperand + ',' : "");
-                if (opCode & PDP10.OPCODE.I_BIT) sOperation += '@';
+                if (opCode & PDP10.OPCODE.I_FIELD) sOperation += '@';
                 sOperation += this.toStrBase(opCode & PDP10.OPCODE.Y_MASK, -1);
                 var i = (opCode >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK;
                 if (i) sOperation += '(' + this.toStrBase(i, -1) + ')';
@@ -1747,7 +1747,7 @@ class DebuggerPDP10 extends Debugger {
                      * because if we parse them AFTER parsing the address expression, we might lose an undefined symbol
                      * indication, and if the caller needs to handle address fixups, that would be bad.
                      */
-                    if (match[1]) opCode += PDP10.OPCODE.I_BIT;
+                    if (match[1]) opCode += PDP10.OPCODE.I_FIELD;
 
                     sOperand = match[3];
                     if (sOperand) {
diff --git a/modules/pdp10/lib/defines.js b/modules/pdp10/lib/defines.js
index bf22ce700..976b3af1c 100644
--- a/modules/pdp10/lib/defines.js
+++ b/modules/pdp10/lib/defines.js
@@ -171,10 +171,14 @@ var PDP10 = {
         S_MASK:     0o77,               // S mask (after shift)
         A_SHIFT:    23,                 // A shift
         A_MASK:     0o17,               // A mask (after shift)
-        I_BIT:      0o20000000,         // indirect bit
+        A_FIELD:    0o740000000,        // A field mask
+        I_FIELD:    0o20000000,         // indirect bit mask
         X_SHIFT:    18,                 // X shift
         X_MASK:     0o17,               // X mask (after shift)
-        Y_MASK:     0o777777,           // Y mask
+        X_FIELD:    0o17000000,         // X field mask
+        Y_SHIFT:    0,                  // Y shift
+        Y_MASK:     0o777777,           // Y mask (after shift)
+        Y_FIELD:    0o777777,           // Y field mask
         R_MASK:     0o37777777,         // used to isolate the low 23 bits (I,X,Y)
         PTR_MASK:   0o77777777,         // used to isolate the low 24 bits (?,I,X,Y) of a byte pointer
         HALT:       0o5304              // operation code for HALT
diff --git a/modules/pdp10/lib/macro10.js b/modules/pdp10/lib/macro10.js
index 56ad69785..daadeff5e 100644
--- a/modules/pdp10/lib/macro10.js
+++ b/modules/pdp10/lib/macro10.js
@@ -82,7 +82,7 @@ var Lit;
  * Elements of stackScopes.
  *
  * @typedef {{
- *      name:(string),
+ *      name:(string|undefined),
  *      aWords:(Array.),
  *      aFixups:(Array.),
  *      nLocation:(number),
@@ -145,7 +145,7 @@ class Macro10 {
          */
         this.nAddrStart = null;
 
-        this.println("starting PCjs MACRO-10 Mini-Assembler...");
+        if (MAXDEBUG) this.println("starting PCjs MACRO-10 Mini-Assembler...");
 
         /*
          * Initialize all the tables that MACRO-10 uses.
@@ -288,7 +288,7 @@ class Macro10 {
         /*
          * We know that local resources ending with ".MAC" are actually stored with a ".txt" extension.
          */
-        if (sURL.slice(-4).toUpperCase() == ".MAC") sURL += ".txt";
+        if (sURL.indexOf(':') < 0 && sURL.slice(-4).toUpperCase() == ".MAC") sURL += ".txt";
 
         Web.getResource(sURL, null, true, function processMacro10(sFile, sResource, nErrorCode) {
             if (nErrorCode) {
@@ -360,7 +360,7 @@ class Macro10 {
                  * Since, at this early stage, I'm not sure whether all the resources I'm interested in
                  * assembling have had their original CR/LF line endings preserved (eg, some files may have
                  * been converted to LF-only line endings), I'm going to skip over whatever line endings
-                 * are in the array and insert my own uniform CR/LF sequences.
+                 * are in the array (stored in every OTHER entry) and insert my own uniform CR/LF sequences.
                  */
                 if (!this.parseLine(this.asLines[i] + '\r\n')) break;
                 /*
@@ -378,6 +378,9 @@ class Macro10 {
                 this.error("open scope from line " + this.stackScopes[0].nLine);
             }
 
+            /*
+             * Process all literals next.
+             */
             let nLocationLiterals = this.nLocation;
 
             for (let i = 0; i < this.aLiterals.length; i++) {
@@ -410,8 +413,8 @@ class Macro10 {
                  */
                 let lit = this.aLiterals[i];
                 /*
-                 * First things first: verify that the literal is one contiguous set of words (I'm not sure how
-                 * it couldn't be, but better safe than sorry).
+                 * First things first: verify that the literal is one contiguous zero-based set of words (I'm not sure
+                 * how it couldn't be, but better safe than sorry).
                  */
                 let aWords = [];
                 let nWords = 0;
@@ -427,6 +430,13 @@ class Macro10 {
                     for (let nLocation = nLocationLiterals; nLocation + nWords <= this.nLocation; nLocation++) {
                         let n;
                         for (n = 0; n < nWords; n++) {
+                            /*
+                             * This check requires that the initial values of the words in the literals match AND that
+                             * their fixup expressions, if any, match as well.  Here again, MACRO-10 may be more aggressive
+                             * in either verifying fixup equality or evaluating any fixups that it can immediately, but
+                             * but I prefer to leave all fixup evaluation where it is (below), after all literals and then
+                             * all variables have been added to the output.
+                             */
                             if (aWords[n] !== this.aWords[nLocation + n] || lit.aFixups[n] != this.aFixups[nLocation]) break;
                         }
                         if (n == nWords) {
@@ -444,6 +454,9 @@ class Macro10 {
                 }
             }
 
+            /*
+             * Now add all variable definitions.
+             */
             for (let i = 0; i < this.aVariables.length; i++) {
                 let name = this.aVariables[i];
                 let macro = this.tblMacros[name];
@@ -457,6 +470,9 @@ class Macro10 {
                 this.parseText(macro.sText);
             }
 
+            /*
+             * And last but not least, perform all fixups.
+             */
             this.aFixups.forEach(function processFixup(sValue, nLocation){
                 let value = macro10.parseExpression(sValue, undefined, nLocation);
                 if (value === undefined) {
@@ -624,6 +640,7 @@ class Macro10 {
             case Macro10.PSEUDO_OP.IFN:
             case Macro10.PSEUDO_OP.IRP:
             case Macro10.PSEUDO_OP.IRPC:
+            case Macro10.PSEUDO_OP.OPDEF:
             case Macro10.PSEUDO_OP.REPEAT:
                 this.addMacro(sOperator, sRemainder);
                 break;
@@ -662,6 +679,22 @@ class Macro10 {
     /**
      * parseMacro(name, sOperands)
      *
+     * For OPDEF macros, the operands are opcode values rather than conventional macro parameter values.
+     * As the MACRO-10 manual explains:
+     *
+     *      Defines the symbol as an operator equivalent to expression, giving the symbol a fullword value.
+     *      When the operator is later used with operands, the accumulator fields are added, the indirect bits
+     *      are ORed, the memory addresses are added, and the index register addresses are added.
+     *
+     *      EXAMPLE:    OPDEF CAL [MOVE 1,@SYM(2)]
+     *                  CAL 1,BOL(2)
+     *
+     *      RESULT:     MOVE 2,@SYM+BOL(4)
+     *
+     * The easiest thing to do is parse the OPDEF text, allowing it to generate its default "fullword value",
+     * then parse the operands in their own scope, extract the bits generated from the operands, and merge them
+     * into the generated OPDEF value.
+     *
      * @this {Macro10}
      * @param {string} name
      * @param {string} [sOperands]
@@ -674,6 +707,35 @@ class Macro10 {
         if (!macro) return false;
 
         if (sOperands != null) {
+            /*
+             * If this is an OPDEF, then a two-step process is required: generate the OPDEF's value, then parse
+             * the operands and merge their bits with the OPDEF's bits.
+             */
+            if (macro.nOperand == Macro10.MACRO_OP.OPDEF) {
+                var nLocation = this.nLocation;
+                this.parseText(macro.sText);
+                if (nLocation < this.nLocation) {
+                    this.pushScope();
+                    this.parseText(sOperands);
+                    var w = this.aWords[0];
+                    var sFixup = this.aFixups[0];
+                    this.popScope();
+                    if (w !== undefined) {
+                        this.aWords[nLocation] += (w & (PDP10.OPCODE.A_FIELD | PDP10.OPCODE.X_FIELD | PDP10.OPCODE.Y_FIELD));
+                        this.aWords[nLocation] |= (w & PDP10.OPCODE.I_FIELD);
+                        if (sFixup) {
+                            if (!this.aFixups[nLocation]) {
+                                this.aFixups[nLocation] = sFixup;
+                            } else {
+                                this.aFixups[nLocation] += '+' + sFixup;
+                            }
+                        }
+                        return true;
+                    }
+                }
+                this.error("OPDEF '" + name + "' error: " + sOperands);
+                return false;
+            }
             var macroPrev = this.macroCall;
             this.macroCall = macro;
             macro.aValues = this.getValues(sOperands, true);
@@ -683,7 +745,7 @@ class Macro10 {
              * (such as the SHIFT macro in /apps/pdp10/tests/macro10/TEXT.MAC) could blow the stack.  Nothing bad
              * should happen (other than a JavaScript stack limit exception aborting the assembly), but it begs
              * the question: did MACRO-10 perform any tail recursion optimizations or other tricks to prevent macros
-             * from running amok, or could they blow MACRO-10's stack just as easily?
+             * from gobbling stack, or could they blow MACRO-10's stack just as easily?
              */
             this.macroCall = macroPrev;
             return true;
@@ -737,6 +799,14 @@ class Macro10 {
      */
     parseText(sText, aParms, aValues, aDefaults)
     {
+        /*
+         * Unlike the caller of parseResources(), we don't split the text using a capture group,
+         * so all line separators are tossed, and just like parseResources(), we always include a
+         * uniform CR/LF sequence at the end of each line.
+         *
+         * TODO: Consider whether callers should always store their text snippets as line arrays, too,
+         * to avoid this re-splitting.
+         */
         var asLines = sText.split(/\r?\n/);
         for (var iLine = 0; iLine < asLines.length; iLine++) {
             var sLine = asLines[iLine] + '\r\n';
@@ -748,7 +818,7 @@ class Macro10 {
      * pushScope(name)
      *
      * @this {Macro10}
-     * @param {string} name
+     * @param {string} [name] (must be defined for literals only)
      */
     pushScope(name)
     {
@@ -778,7 +848,7 @@ class Macro10 {
             return;
         }
         var name = this.stackScopes[this.stackScopes.length - 1].name;
-        this.aLiterals.push({name, aWords: this.aWords, aFixups: this.aFixups});
+        if (name) this.aLiterals.push({name, aWords: this.aWords, aFixups: this.aFixups});
         var scope = this.stackScopes.pop();
         this.aWords = scope.aWords;
         this.aFixups = scope.aFixups;
@@ -1089,8 +1159,8 @@ class Macro10 {
     /**
      * addMacro(sOperator, sOperands)
      *
-     * If sOperator is DEFINE, then a macro definition is expected.  If it's REPEAT, then we're starting a
-     * REPEAT block instead.
+     * If sOperator is DEFINE (or OPDEF), then a macro definition is expected.  If it's REPEAT, then we're
+     * starting a REPEAT block instead.
      *
      * REPEAT blocks piggy-back on this code because they're essentially anonymous immediately-invoked macros;
      * we use an illegal MACRO-10 symbol ('?REPEAT') to name the anonymous macro while it's being defined, and the
@@ -1116,7 +1186,9 @@ class Macro10 {
 
         if (sOperator == Macro10.PSEUDO_OP.DEFINE) {
             /*
-             * This is a DEFINE (macro) block.
+             * This is a DEFINE (macro) block.  At present, this requires that all
+             * (parenthesized) parameters exist on the same line, but the (angle-bracketed)
+             * definition can continue on for multiple lines.
              */
             match = sOperands.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);
             if (!match) {
@@ -1134,6 +1206,24 @@ class Macro10 {
             nOperand = Macro10.MACRO_OP.DEFINE;
             iMatch = 3;
         }
+        else if (sOperator == Macro10.PSEUDO_OP.OPDEF) {
+            /*
+             * This is a OPDEF block.  Unlike DEFINE blocks, I'm assuming that the
+             * (square-bracketed) definition begins on the same line, but I'm not requiring
+             * it to end on the same line (I'm not sure that MACRO-10 allowed multi-line
+             * OPDEFs, but it doesn't matter to us).
+             */
+            this.chMacroOpen = '[';
+            this.chMacroClose = ']';
+            match = sOperands.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);
+            if (!match) {
+                this.error("unrecognized " + sOperator + ": " + sOperands);
+                return sOperands;
+            }
+            name = match[1];
+            nOperand = Macro10.MACRO_OP.OPDEF;
+            iMatch = 2;
+        }
         else if (sOperator == Macro10.PSEUDO_OP.LITERAL) {
             /*
              * This is a LITERAL block.
@@ -1478,6 +1568,7 @@ Macro10.PSEUDO_OP = {
     IRPC:       "IRPC",
     LALL:       "LALL",
     LITERAL:    "LITERAL",      // this is a pseudo-pseudo-op, used for internal purposes
+    OPDEF:      "OPDEF",
     PAGE:       "PAGE",
     REPEAT:     "REPEAT",
     SIXBIT:     "SIXBIT",
@@ -1493,6 +1584,7 @@ Macro10.PSEUDO_OP = {
  */
 Macro10.MACRO_OP = {
     DEFINE:         -1,
-    LITERAL:        -2,
-    RESERVED:       -3,
+    OPDEF:          -2,
+    LITERAL:        -3,
+    RESERVED:       -4,
 };
diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js
index 2e8fc8e6a..2ba69739a 100644
--- a/versions/pdpjs/1.34.3/pdp10-dbg.js
+++ b/versions/pdpjs/1.34.3/pdp10-dbg.js
@@ -37,78 +37,78 @@ function sa(a,b){var c;if(a){b||(b=10);var d,e,f=0g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function ua(a,b,c){b?12=b?6:16777215>=b?8:12);return ta(a,8,b,c?"0o":"")}
 function va(a,b){b?11=Math.abs(a)?5:11;return ta(a,10,b)}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return ta(a,16,b,c?"0x":"")}function wa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Aa[a]})}function Da(a,b){return(a+"                                        ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0"']/g,function(a){return Aa[a]})}function Ba(a,b){return(a+"                                        ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
 function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
 f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
-function Ia(a,b){var c,d={da:null,X:null,wa:null,va:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.wa=g.load;d.va=g.exec;if(e=g.bytes)d.da=e;else if(e=g.words)for(d.da=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.da=Array(4*e.length),f=c=0;c>8&255,d.da[f++]=e[c]>>16&255,d.da[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.da=g;d.da&&(d.da.length?1==d.da.length&&(q(d.da[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.xa=g.load;d.wa=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.$a=this.id:(this.ab=this.id.substr(0,a),this.$a=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Y:!1,error:!1};this.eb=null;this.A.error=!1;this.ba=c||0;this.D=this.v=this.G=this.H=this.xa=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
+function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Cb=b.comment;this.Sb=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Y:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.ya=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
 function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic,
+function bc(a,b){r.call(this,"Panel",a,512);this.K=this.L=0;this.V=b;this.i=this.I=this.j=this.w=0;this.M=this.N=-1;this.P=this.S=this.F=!1;this.U=cc;this.C={};this.b={START:[1,1,!0,!1,this.cc],STEP:[1,1,!1,!1,this.dc],ENABLE:[1,1,!1,!1,this.Yb],CONT:[1,1,!0,!1,this.Wb],DEP:[0,0,!0,!1,this.Xb],EXAM:[1,1,!0,!1,this.Zb],LOAD:[1,1,!0,!1,this.ac],TEST:[0,0,!0,!1,this.$b]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic,
 set:this.lc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&&dc(this,this.w=0)};
 m.qa=function(a,b,c,d){if(this.H&&this.H.qa(a,b,c,d)||this.v&&this.v.qa(a,b,c,d)||this.D&&this.D.qa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
-function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.qa.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.za=function(a,b){if(!b)if(this.U&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
+function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.qa.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Aa=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
 m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.ic=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])}
-m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.R=b==pc),!0):!1}
+m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.S=b==pc),!0):!1}
 function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.cc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.dc=function(){};m.Yb=function(a){a||this.v.W()};
-m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.Za(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Xa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Xa){l=h.size-(e-k);l>f&&(l=f);h.Xa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
+m.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,Cc(this));return a.data()};m.restore=function(a){a:{a=a[0];var b;for(b=0;bd.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
 function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.ka&&(a.ka+=a.ra,c=!0);0<=a.la&&a.la<=fd(a)&&(a.ra=a.la=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}}
-m.qa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Y)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.Z/a.aa?b=1:d=!0;a.ga=b;b=a.kb*a.ga;if(a.aa!=b){a.aa=b;b=a.aa.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.R=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.T-=a.N;a.N=0;b&&(a.T=0);return c}
-m.jc=function(){if(this.A.O){this.bb>=this.mb&&hd(this,!0);this.ma=0;this.Ea=ob();if(this.R){var a=this.Ea-this.R;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.Za(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.ma+=b;this.M+=b;vc(this,b);tc(this,b);this.ia-=b;if(0>=this.ia){this.ia+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
-e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.R=ob();var c=this.lb;this.ma&&(c=Math.round(c*this.ma/this.Ha));var c=c-(this.R-this.Ea),d=this.R-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.U=0,gd(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.bb+=this.ma;this.R+=c;a(b,c)}}};
-function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Za=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
+m.Aa=function(a,b){var c=$c(this.H,"autoStart");null!=c?this.A.ga="true"==c?!0:"false"==c?!1:!!c:null==this.A.ga&&(this.A.ga=!this.D&&void 0===this.J.run);if(!b){if(a){ad(this);if(!this.restore(a))return!1;bd(this)}else this.reset();this.D?(a=this.D,b=this.A.ga,a.Ia=!0,a.u("Type ? for help with PDPjs Debugger commands"),cd(a),b||dd(a),a.ua&&(b=a.ua,a.ua=null,ed(a,b,!0))):this.status("No debugger detected");this.A.ga||this.u("CPU will not be auto-started "+(this.Na?"(click Run to start)":"(type 'go' to start)"))}return!0};
+m.pa=function(a){return a?this.save():!0};m.ga=function(){return this.A.O?!0:this.A.ga?(rc(this),!0):!1};m.Ib=function(){return 0};function bd(a){void 0===a.Ga&&(a.Ga=0);void 0===a.ra&&(a.ra=-1);void 0===a.ma&&(a.ma=-1);a.A.Ua=0<=a.Ga&&0=a.la&&(a.la+=a.ra,c=!0);0<=a.ma&&a.ma<=fd(a)&&(a.ra=a.ma=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}}
+m.qa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Y)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.Z/a.ba?b=1:d=!0;a.ha=b;b=a.kb*a.ha;if(a.ba!=b){a.ba=b;b=a.ba.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.S=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.U-=a.N;a.N=0;b&&(a.U=0);return c}
+m.jc=function(){if(this.A.O){this.cb>=this.mb&&hd(this,!0);this.na=0;this.Ea=ob();if(this.S){var a=this.Ea-this.S;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.na+=b;this.M+=b;vc(this,b);tc(this,b);this.ja-=b;if(0>=this.ja){this.ja+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
+e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.S=ob();var c=this.lb;this.na&&(c=Math.round(c*this.na/this.Ha));var c=c-(this.S-this.Ea),d=this.S-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.V=0,gd(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.cb+=this.na;this.S+=c;a(b,c)}}};
+function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
 function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype;
-m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Oa;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ja=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
-m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Oa]);a.set(1,[]);a.set(2,[this.U,this.ga,this.A.ea]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
-m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Oa=b.next().value;b=a[2];this.U=b[0];gd(this,b[1]);this.A.ea=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
 m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
-m.Za=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.T=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K=
-this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
+m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.U=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K=
+this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
 function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}}
 function yd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)}
 function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ae(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}
 function be(a,b){var c=this.b*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}function ce(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+b)}function de(a,b){var c=this.f(this.b),d=(c&x)*y,c=Gd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function ee(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ge(a,b){var c=this.f(b);this.g(b,fe(a,c,this.b)+this.b)}function he(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}
 function ie(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function je(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ke(a,b){var c=this.f(b);this.g(b,fe(a,c,0))}function le(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}function me(a,b){var c=this.f(this.b),d=c/y|0,c=fe(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){ne[a&7].call(this,a,a>>3&127)}
 function oe(){}function pe(){}function L(a){this.u("undefined opcode: "+ua(a));sd(this,-1);this.W()}function qe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;re.call(this,a,b,c);return c}
-function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ja;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.sa),ve(this.ta)))break;we(this.ja);we(this.sa)}while(!ve(this.sa));
+function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ka;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.sa),ve(this.ta)))break;we(this.ka);we(this.sa)}while(!ve(this.sa));
 a=this.ob[0];this.F=this.ta[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a}
 function xe(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(dz)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b}
 function ye(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ze(a,b){var c=a-b;0>c&&(c+=C);re.call(this,c,b,a);return c}function re(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>f.i;0>>=
 f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
 a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)};
-m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.$a)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.ab+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.za=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
+m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.ab)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Aa=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
 m.pa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)}
+Xa(function(){for(var a=w(document,v,"serial"),b=0;ba.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.U?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)}
 function Ne(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)^(c/Me|0))*Me+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b}
 function Oe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break;
 case "&":f=Le(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Me|0|g/Me|0)*Me+((f|g)>>>0));break;case "^!":f=Ne(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Pe(a,b,0,b.length,a.S,c);void 0!==d&&!1===c&&Ue(a,null,d)}return d}
-function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
-function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.S?K(a,c,a.L,8,1)+"  "+c+".":K(a,c,a.L,16,1)+"  "+K(a,c,a.L,8,1)+"  "+K(a,c,a.L,2,32>=a.L?8:6)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
+function Te(a,b,c){var d=void 0;a.ka=null;if(b){"{"!=a.ba[0]&&(b=b.split(a.ba[0]).join("{").split(a.ba[1]).join("}"));b=Se(a,b,'"',7,5,c);if(!b)return d;b=Se(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Pe(a,b,0,b.length,a.T,c);void 0!==d&&!1===c&&Ue(a,null,d)}return d}
+function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
+function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.T?K(a,c,a.L,8,1)+"  "+c+".":K(a,c,a.L,16,1)+"  "+K(a,c,a.L,8,1)+"  "+K(a,c,a.L,2,32>=a.L?8:6)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
 var Re={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Me=Math.pow(2,32);
-function Xe(a){Je.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.aa=["<",">"];this.sa=[];this.Ha=Z();this.M=Z(0);this.la=Z(0);this.ia=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.U=this.ma=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ba=this.Eb=0;this.Z=null;this.R=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.ka=this.Ca=0;this.ta=this.ra=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
-a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,cb:void 0===b?!1:b,oa:!1,S:c}}function bf(a,b,c,d){a.B=b;a.cb=c||!1;a.oa=!1;a.S=d}function cf(a){return[a.B,a.cb,a.oa,a.S,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
-m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.la));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+"  %"+
-n(e<"];this.sa=[];this.Ha=Z();this.M=Z(0);this.ma=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.V=this.na=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ca=this.Eb=0;this.Z=null;this.S=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.la=this.Ca=0;this.ta=this.ra=this.ha=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
+a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,oa:!1,T:c}}function bf(a,b,c,d){a.B=b;a.eb=c||!1;a.oa=!1;a.T=d}function cf(a){return[a.B,a.eb,a.oa,a.T,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
+m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.ma));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+"  %"+
+n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)}
-function $e(a,b){a.D=a;a.ba=a.Eb=536870916;a.Z=null;a.R=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;dd&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.U],b),++a.U==a.i.length&&(a.U=0)));return!1}
-function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f,
--1)+")")}else k=Da(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h}
-function Jf(a,b,c,d,e){var f=-1,g,h;a.ja=null;if(b){for(var k=b.toUpperCase(),l=0;lGf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
+m.message=function(a,b){b&&(a+=" @"+K(this,Z(this.v.Da).B,18));if(!this.Z||a!=this.Z)if(this.Z=a,this.ca&1073741824)this.S.push(a);else{var c;if(this.ca&-2147483648&&this.v&&(c=this.v.A.O)||Nb(this,!0))this.W(),c&&(a+=" (cpu halted)");this.u(a);this.v&&(a=this.v,md(a),a.ja=0,a.H&&J(a.H,void 0))}};
+function Ze(a){var b;if(!td(a))a.i&&a.i.length&&a.u("instruction history buffer freed"),a.V=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(uf);for(b=0;b>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
+function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f,
+-1)+")")}else k=Ba(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h}
+function Jf(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;lGf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
 (c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127
-h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.ma=0}
+h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.na=0}
 m.Ra=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.oa||Ze(a);break}}return f}
 function Mf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ha,d);f+="="+K(e,e.Ma(e.Ha),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,X:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h,
 g);bf(a.M,h.i);break;case of:rd(h,g);break;case pf:f=131072;break;case qf:f=65536;break;case rf:f=32768;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ia;l=b;h.B=l.B;h.cb=l.cb;h.oa=l.oa;h.S=l.S;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
-function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.T&&(a.u("ended assemble at "+K(a,a.ia.B,18)),a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd=
-[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var ib=ff(a,ma,a.la);if(ib){var Ka=0,Xf="ds"==fb;if(Ba){if("l"==Ba.charAt(0))Ba=Ba.substr(1)||yh,Ka=Qe(a,Ba);else{var Yf=ff(a,Ba);Yf&&
-(Ka=Yf.B-ib.B)}0>Ka&&(Ka=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}La&&(La+="\n");La=Xf?La+(oa+","):La+(ma+": "+oa+(0>$f?
-" "+Qd:""))}La&&a.u(La);a.S=Ah}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Sd=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else{var Hc=ff(a,Sd,a.la);if(Hc)for(var Td=2;Td
-Wd;){for(var Ma=null,Fh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Fh--)break;if(!(Xd.B&1)){for(var Gh=a,Ic=Xd,eg=null,Ib=Ic.B,fg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2lg)a.u("step commands:"),
-a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.S=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.S);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra=
-Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.la=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.aa.toFixed(2)+"Mhz")+" ("+a.v.ga+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
+function zf(a,b,c,d){if(b=ff(a,b,a.M)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Qe(a,c.substr(1)),null!=c&&(d=c);else{d=ff(a,c);if(!d||d.Bh[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.oa=l.oa;h.T=l.T;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
+function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd=
+[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var ib=ff(a,ma,a.ma);if(ib){var La=0,Xf="ds"==fb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||Ch,La=Qe(a,Ca);else{var Yf=ff(a,Ca);Yf&&
+(La=Yf.B-ib.B)}0>La&&(La=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}Ma&&(Ma+="\n");Ma=Xf?Ma+(oa+","):Ma+(ma+": "+oa+(0>$f?
+" "+Qd:""))}Ma&&a.u(Ma);a.T=Eh}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Sd=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else{var Hc=ff(a,Sd,a.ma);if(Hc)for(var Td=2;Td
+Wd;){for(var Na=null,Jh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Jh--)break;if(!(Xd.B&1)){for(var Kh=a,Ic=Xd,eg=null,Ib=Ic.B,fg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2lg)a.u("step commands:"),
+a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.T=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.T);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra=
+Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.ma=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ba.toFixed(2)+"Mhz")+" ("+a.v.ha+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
 a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var Zd="commands:",$d;for($d in zg)Zd+="\n"+
-Da($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0}
+Ba($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0}
 var zg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Gf=20,Hf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
 lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS OV C0 C1 ND PD".split(" "),Ag={},Cf=(Ag[28672]={0:101},Ag[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ag[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Gf,9216:53,
 9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ag[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ag[29248]={24576:79,24640:80,25088:81,25152:82},Ag[28700]={28672:93,28676:94,28680:95,28684:96,
 28688:97,28692:98,28696:99,28700:100},Ag),Df=["","I","M","S"],Ef=" L E LE A GE N G".split(" "),Ff="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),If=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],uf=1E3,xf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;b([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
+function tg(a,b,c,d,e){this.U=b||0;this.ha=c||"";this.b=d;this.done=e;this.F=null;this.j={};this.N={};this.M=[];this.L=[];this.R=[];this.fa=[];this.Z=this.V=this.da=0;this.aa=this.U;this.La=-1;this.w=[];this.K=null;this.i=0;this.I=null;this.H=this.C="";this.ba=/^[ \t]*([A-Z$%.?][0-9A-Z$%.]*:|)[ \t]*([A-Z$%.][0-9A-Z$%.]*|)([ \t]*)([^;]+|)(;?[\s\S]*)/i;this.D=this.v=null;this.J="";this.G=[];this.S=0;this.P=a.split(";");Bg(this)}
+function Bg(a){if(a.S==a.P.length)a.done(Cg(a));else{var b=a.P[a.S++];a.u("loading "+wa(b));0>b.indexOf(":")&&".MAC"==b.slice(-4).toUpperCase()&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/
([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
 0)}})}}
-function Cg(a){if(0<=a.ga.indexOf("p"))return a.u(a.G.join("")),0;var b=Ve(a.b);try{for(var c=0;cI)break;var u=
-I+1,P=I+l.length,db="",Ab="";I&&(db=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==db&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.fa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.I=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
-if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.C=Jg(a,f,!0),void 0===a.C&&a.error("unrecognized expression: "+f)):a.C=a.T;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:Sg(a,f,h);break;case gh:case hh:case ih:case jh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.fa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ja):a.error("unrecognized expression: "+h)}return!0}
-function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c)return b=a.v,a.v=d,d.Qa=kh(a,c,!0),Ig(a,d.Aa,d.Ta,d.Qa,d.Ab),a.v=b,!0;if("?"!=b[0])return!1;switch(b.substr(1)){case dh:d.fb||Ig(a,d.Aa);break;case eh:d.fb&&Ig(a,d.Aa);break;case Ng:case Og:for(b=0;b"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,fb:mh,Ta:e,Ab:f,Qa:g,Aa:b+": 0",ca:a.ca};a.K.push(d)}return c}
-function kh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=lh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
-function Mg(a,b){var c=b;null==a.D&&(a.D=a.H="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.H+=b}if(null==a.D){var d=b=0,e,f,g=a.H.length;a.I==Xg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
-function Sg(a,b,c){var d,e,f,g,h,k;a.J="<";a.M=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=kh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=nh;c=3}else if(b==Tg)a.J="[",a.M="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],
-b=oh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",gh="LALL",Tg="LITERAL",hh="PAGE",fh="REPEAT",Yg="SIXBIT",ih="SUBTTL",jh="TITLE",bh="XWD",nh=-1,oh=-2,mh=-3;
-function ph(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.R=null;qh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.U=!1;this.I=this.C=null;this.T=this.P=!1;this.aa=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=rh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.ab+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.xa)for(b=
-0;b\nLicense: GPL version 3 or later ");for(b=0;bsh){if(th(d,this.L)){this.C=new F(this,"1.34.3",Nh);th(this.C)&&(Oh(this,d),a=Ph,Qh(this.C));this.C.set(Kh,Ga());Rh(this.C);var e=this.b&&!this.K;if(a==Lh||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Jh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?th(d,g):("error"==f&&"no machine state"!=
-g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(Sh,""),this.i=null)):this.u(f+": "+g),Qh(d),th(d)?(c=Jh(d),e=!0):c=!1))}e&&wh(this,c?d:null)}else a==Ph&&d.clear()}else wh(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Th(this,this.v,b,c,a),J(this,-2),this.v.ea());this.P&&(Oh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
-function Oh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.aa;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
-function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",xh),h=Ga();g.set(Kh,h);f.set(Kh,h);f.set(Uh,"1.34.3");f.set(Vh,window?window.location.href:null);f.set(Wh,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ea=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;kI)break;var u=
+I+1,P=I+l.length,db="",Ab="";I&&(db=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==db&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.aa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
+if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.F=Jg(a,f,!0),void 0===a.F&&a.error("unrecognized expression: "+f)):a.F=a.U;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:case gh:Sg(a,f,h);break;case hh:case ih:case jh:case kh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.aa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
+function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Wa==lh){var e=a.aa;Ig(a,d.va);if(e"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,Wa:qh,Ta:e,Ab:f,Qa:g,va:b+": 0",da:a.da};a.L.push(d)}return c}
+function oh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=ph(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
+function Mg(a,b){var c=b;null==a.D&&(a.D=a.J="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.J+=b}if(null==a.D){var d=b=0,e,f,g=a.J.length;a.K==Xg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
+function Sg(a,b,c){var d,e,f,g,h,k;a.H="<";a.C=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=oh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=rh;c=3}else if(b==fh){a.H="[";a.C="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
+b+": "+c),c;f=e[1];b=lh;c=2}else if(b==Tg)a.H="[",a.C="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],b=sh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",hh="LALL",Tg="LITERAL",fh="OPDEF",ih="PAGE",gh="REPEAT",Yg="SIXBIT",jh="SUBTTL",kh="TITLE",bh="XWD",rh=-1,lh=-2,sh=-3,qh=-4;
+function th(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.S=null;uh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=vh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.ya)for(b=
+0;b\nLicense: GPL version 3 or later ");for(b=0;bwh){if(xh(d,this.L)){this.C=new F(this,"1.34.3",Rh);xh(this.C)&&(Sh(this,d),a=Th,Uh(this.C));this.C.set(Oh,Ga());Vh(this.C);var e=this.b&&!this.K;if(a==Ph||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Nh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?xh(d,g):("error"==f&&"no machine state"!=
+g?(this.ia("Error: "+g),"unable to verify user"==g&&(Qa(Wh,""),this.i=null)):this.u(f+": "+g),Uh(d),xh(d)?(c=Nh(d),e=!0):c=!1))}e&&Ah(this,c?d:null)}else a==Th&&d.clear()}else Ah(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.U=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Xh(this,this.v,b,c,a),J(this,-2),this.v.ga());this.P&&(Sh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
+function Sh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
+function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",Bh),h=Ga();g.set(Oh,h);f.set(Oh,h);f.set(Yh,"1.34.3");f.set(Zh,window?window.location.href:null);f.set($h,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ga=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"),
-a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
-"");a=a.replace(d[0],g);di(a,b,c)}})}else c(a,null)}
-function ei(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ai||ab(!0));l=!1}var h,k,l=!0;ai++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
-(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?bi(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ai||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ai||
-ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?bi(c,b,a,e,!0,f,p):ci(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ei("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ei("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")};
+function J(a,b){if(a.v){var c=a.v,d=b||0,e=c.J.speed;e&&(0>=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"),
+a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
+"");a=a.replace(d[0],g);hi(a,b,c)}})}else c(a,null)}
+function ii(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ei||ab(!0));l=!1}var h,k,l=!0;ei++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
+(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?fi(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ei||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ei||
+ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?fi(c,b,a,e,!0,f,p):gi(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ii("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ii("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")};
 window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!vb[a]){for(var c=!0,d=vb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p
Date: Wed, 29 Mar 2017 10:30:02 -0700
Subject: [PATCH 12/27] Added PDP-10 diagnostic #6 (MAINDEC-10-DAKAF)

---
 apps/pdp10/diags/klad/README.md            |    1 +
 apps/pdp10/diags/klad/dakaf/DAKAF.LST.txt  | 6826 ++++++++++++++++++++
 apps/pdp10/diags/klad/dakaf/DAKAF.MAC.txt  | 3219 +++++++++
 apps/pdp10/diags/klad/dakaf/DAKAFM.MAC.txt | 3207 +++++++++
 apps/pdp10/diags/klad/dakaf/README.md      |  276 +
 modules/pdp10/lib/debugger.js              |    2 +-
 6 files changed, 13530 insertions(+), 1 deletion(-)
 create mode 100644 apps/pdp10/diags/klad/dakaf/DAKAF.LST.txt
 create mode 100644 apps/pdp10/diags/klad/dakaf/DAKAF.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakaf/DAKAFM.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakaf/README.md

diff --git a/apps/pdp10/diags/klad/README.md b/apps/pdp10/diags/klad/README.md
index b44775e5a..170a9cff8 100644
--- a/apps/pdp10/diags/klad/README.md
+++ b/apps/pdp10/diags/klad/README.md
@@ -15,3 +15,4 @@ PCjs has archived selected files from
 - [KA10 Basic Instruction Diagnostic #3 (MAINDEC-10-DAKAC)](dakac/)
 - [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD)](dakad/)
 - [KA10 Basic Instruction Diagnostic #5 (MAINDEC-10-DAKAE)](dakae/)
+- [KA10 Basic Instruction Diagnostic #6 (MAINDEC-10-DAKAF)](dakaf/)
diff --git a/apps/pdp10/diags/klad/dakaf/DAKAF.LST.txt b/apps/pdp10/diags/klad/dakaf/DAKAF.LST.txt
new file mode 100644
index 000000000..0206a7346
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakaf/DAKAF.LST.txt
@@ -0,0 +1,6826 @@
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 1
+DAKAFT	MAC	19-JAN-77 17:08		DIAGNOSTIC PARAMETERS                                                              SEQ 0007
+
+     1					;DAKAF
+     2
+     3
+     4
+     5			000002			DECVER==2
+     6			000000			MCNVER==0
+     7
+     8						XLIST
+     9						LIST
+    10						LALL
+    11						NAME	\MCNVER,\DECVER^
+    12
+    13					TITLE	DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2
+    14					^
+    15
+    16					;TEST DESIGNED FOR INITIAL DEBUGGING OF PROCESSOR HARDWARE
+    17					;AND TO DETECT (SOLID) FAILURES IN THE FIELD.
+    18
+    19					;COPYRIGHT 1972,1977
+    20					;DIGITAL EQUIPMENT CORPORATION
+    21					;MARLBORO, MASS. 01752
+    22
+    23					;JOHN R. KIRCHOFF
+    24
+    25	000137					LOC	137
+    26	000137	000000	000002			MCNVER,,DECVER
+    27
+    28						NOSYM
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 2
+DAKAFT	MAC	19-JAN-77 17:08		DIAGNOSTIC PARAMETERS                                                              SEQ 0008
+
+    29					SUBTTL	DIAGNOSTIC PARAMETERS
+    30
+    31					;PARAMETER DEFINITIONS
+    32			000001		EXCASB==1
+    33			000001		USRASB==1
+    34			000001		PGMEND==1
+    35			000100		DEBUG==100
+    36
+    37					;FLAG DEFINITIONS
+    38			010000		USERF=10000		;USER MODE FLAG
+    39
+    40
+    41					;MACROS
+    42
+    43					;SPECIAL FEATURE PARAMETERS
+    44
+    45			030712		SADR1=START
+    46			030712		SADR2=START
+    47			030712		SADR3=START
+    48			030712		SADR4=START
+    49		254000	030712		SADR5=JRST START
+    50		254000	030712		SADR6=JRST START
+    51		254000	030712		SADR7=JRST START
+    52		254000	030712		SADR8=JRST START
+    53		254000	030712		SADR9=JRST START
+    54		254000	030712		SADR10=JRST START
+    55		254000	030712		SADR11=JRST START
+    56
+    57			000000		PAREA0=0
+    58			000000		PAREA1=0
+    59			000000		PAREA2=0
+    60		444153	414600		PAREA3=SIXBIT/DAKAF/
+    61		645560	000000		PAREA4=SIXBIT/TMP/
+    62			000000		PAREA5=0
+    63			000000		PAREA6=0
+    64			001000		ITERAT==1000
+    65			000001		PGMEND==1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 3
+DAKAFT	MAC	19-JAN-77 17:08		DIAGNOSTIC PARAMETERS                                                              SEQ 0009
+
+    66					SUBTTL	DIAGNOSTIC PARAMETERS
+    67
+    68					;ACCUMULATOR ASSIGNMENTS
+    69
+    70					;CONTROL WORDS
+    71
+    72			400000		AROV=400000		;ARITHMETIC OVERFLOW
+    73			200000		CRY0=200000		;CARRY 0
+    74			100000		CRY1=100000		;CARRY 1
+    75			040000		FOV=40000		;FLOATING OVERFLOW
+    76			020000		BIS=20000		;BYTE INTERRUPT
+    77			010000		USERF=10000		;USER MODE FLAG
+    78			004000		EXIOT=4000		;USER PRIV I/O FLAG
+    79			000100		FXU=100			;FLOATING UNDERFLOW
+    80			000040		DCK=40			;DIVIDE CHECK
+    81
+    82
+    83					;MACROS
+    84
+    85					; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1)
+    86					;	 TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION
+    87
+    88					DEFINE	STOP	(A)<
+    89						HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+    90						JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+    91									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+    92									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+    93									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1>
+    94
+    95					; SFLAG - USED TO CLEAR ALL FLAGS THEN TO SET REQUESTED FLAG
+    96
+    97					DEFINE	SFLAG	(A)<
+    98						MOVSI	1,A
+    99						JFCL	17,.+1		;RESET ALL FLAGS
+   100						JRST	2,.+1(1)	;SET A FLAG>
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 1
+PARAM	KLM	18-JAN-77 11:38		*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977                               SEQ 0010
+
+   101					SUBTTL	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977
+   102
+   103					DEFINE	S,<;*********************************************************************>
+   104
+   105					S^;*********************************************************************^
+   106					;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
+   107					;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
+   108					;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS
+   109					S^;*********************************************************************^
+   110
+   111			400000		ABORT==	400000			;ABORT PROGRAM ON PASS COMPLETION
+   112			200000		RSTART==200000			;RESTART TEST, PRINT TOTALS
+   113			100000		TOTALS==100000			;PRINT TOTALS, CONTINUE
+   114
+   115			040000		NOPNT==	040000			;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED)
+   116			020000		PNTLPT==020000			;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE)
+   117			010000		DING==	010000			;RING BELL ON ERROR
+   118
+   119			004000		LOOPER==004000			;ENTER EXERCISE/CHECK LOOP ON ERROR
+   120			002000		ERSTOP==002000			;HALT ON TEST ERROR
+   121			001000		PALERS==001000			;PRINT ALL ERRORS
+   122
+   123			000400		RELIAB==000400			;RELIABILITY MODE
+   124			000200		TXTINH==000200			;INHIBIT ERROR TEXT
+   125			000100		INHPAG==000100			;INHIBIT PAGING
+   126
+   127			000040		MODDVC==000040			;MODIFY DEVICE CODE
+   128			000020		INHCSH==000020			;INHIBIT CACHE
+   129			000010		OPRSEL==000010			;OPERATOR SELECTION
+   130
+   131			000004		CHAIN==	000004			;CHAIN CONTROL SWITCH
+   132
+   133			000002		KAHZ50==000002			;KA10 50 HERTZ POWER
+   134
+   135									;SWITCH 17 RESERVED !!!
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 2
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0011
+
+   136					SUBTTL	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977
+   137
+   138					S^;*********************************************************************^
+   139					;*SPECIAL SUBPROGRAM LINKAGES
+   140					S^;*********************************************************************^
+   141
+   142			027772		FSELNK=	27772	;FILE SELECT LINK
+   143			027773		FRDLNK=	27773	;FILE READ LINK
+   144			027774		LDLNK=	27774	;LOAD LINKAGE ADDRESS
+   145			027775		DDTLNK=	27775	;DDT LINKAGE ADDRESS
+   146			027776		MODLNK=	27776	;OPERATIONAL MODE CHECK LINKAGE ADDRESS
+   147			027777		SUBLNK=	27777	;SUBROUTINE LINKAGE ADDRESS
+   148
+   149					S^;*********************************************************************^
+   150					;*SPECIAL SUBROUTINE FATAL HALTS
+   151					;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE
+   152					S^;*********************************************************************^
+   153
+   154					;ADDRESS   TAG	REASON
+   155					;---------------------
+   156
+   157					; 1010 	NOEXEC	;PROGRAM NOT CODED FOR EXEC MODE OPERATION
+   158					; 1011  PLERR	;FATAL PUSH LIST POINTER ERROR
+   159					; 1012  PLERR1	;INITIAL PUSH LIST POINTER ERROR
+   160					; 1013  MUOERR	;MUUO WITH LUUO HANDLER WIPED OUT
+   161					; 1014  DTEBER	;DTE20 INTERRUPT WITHOUT DOORBELL
+   162					; 1015  DTECER	;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET
+   163					; 1016  CPIERR	;CPU INITIALIZATION ERROR
+   164					; 1017  EOPERR	;END OF PROGRAM ERROR
+   165					; 1020  LUOERR	;INTERRUPT WITH LUUO HANDLER WIPED OUT
+   166
+   167					S^;*********************************************************************^
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 3
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0012
+
+   168					S^;*********************************************************************^
+   169					;OPERATOR DEFINITIONS (NON-UUO'S)
+   170					S^;*********************************************************************^
+   171
+   172		260740	000000		OPDEF	GO	[PUSHJ	P,]	;SUBROUTINE CALL
+   173		263740	000000		OPDEF	RTN	[POPJ	P,]	;SUBROUTINE RETURN
+   174		261740	000000		OPDEF	PUT	[PUSH	P,]	;PUT DATA ON PUSH LIST
+   175		262740	000000		OPDEF	GET	[POP	P,]	;GET DATA FROM PUSH LIST
+   176		254000	000000		OPDEF	PJRST	[JRST	]	;JRST TO ROUTINE THAT RTN'S
+   177		254200	000000		OPDEF	HALT	[JRST	4,]	;DEFINITION FOR DDT
+   178		254100	000000		OPDEF	JRSTF	[JRST	2,]	;DEFINITION FOR DDT
+   179		254500	000000		OPDEF	JEN	[JRST	12,]	;DEFINITION FOR DDT
+   180
+   181					S^;*********************************************************************^
+   182					;*SUBROUTINE INITIALIZATION CALL
+   183					S^;*********************************************************************^
+   184
+   185		265000	030011		OPDEF	PGMINT	[JSP	0,SBINIT]	;SUBROUTINE INITIALIZATION
+   186
+   187					S^;*********************************************************************^
+   188					;*HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION).
+   189					S^;*********************************************************************^
+   190
+   191		037640	000004		OPDEF	FATAL	[37B8!15B12!4]	;FATAL PROGRAMMING HALT
+   192		037600	000004		OPDEF	ERRHLT	[37B8!14B12!4]	;PROGRAM ERROR HALT
+   193
+   194					S^;*********************************************************************^
+   195					;*TERMINAL INPUT UUO'S
+   196					;*ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE
+   197					;*CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE.
+   198					S^;*********************************************************************^
+   199
+   200		037000	000003		OPDEF	TTICHR 	[37B8!0B12!3]	;TTY, INPUT ANY CHARACTER
+   201		037040	000003		OPDEF	TTIYES	[37B8!1B12!3]	;TTY, NORMAL RETURN Y
+   202		037100	000003		OPDEF	TTINO	[37B8!2B12!3]	;TTY, NORMAL RETURN N
+   203		037140	000003		OPDEF	TTIOCT	[37B8!3B12!3]	;TTY, INPUT OCTAL WORD
+   204		037200	000003		OPDEF	TTIDEC	[37B8!4B12!3]	;TTY, INPUT DECIMAL WORD
+   205		037240	000003		OPDEF	TTICNV	[37B8!5B12!3]	;TTY, INPUT CONVERTABLE WORD
+   206		037300	000003		OPDEF	TTLOOK	[37B8!6B12!3]	;TTY, KEYBOARD CHECK
+   207		037340	000003		OPDEF	TTALTM	[37B8!7B12!3]	;TTY, ALT-MODE CHECK
+   208		037400	000003		OPDEF	TTSIXB	[37B8!10B12!3]	;TTY, INPUT SIXBIT WORD
+   209		037440	000003		OPDEF	TTYINP	[37B8!11B12!3]	;TTY, IMAGE MODE INPUT
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 4
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0013
+
+   210					;*TERMINAL OUTPUT UUO'S.
+   211
+   212		037000	000000		OPDEF	PNTA	[37B8!0B12!0]	;PRINT ASCII WORD
+   213		037000	000001		OPDEF	PNTAF	[37B8!0B12!1]	;PRINT ASCII WORD FORCED
+   214		037740	000000		OPDEF	PNTAL	[37B8!17B12!0]	;PRINT ASCIZ LINE
+   215		037740	000001		OPDEF	PNTALF	[37B8!17B12!1]	;PRINT ASCIZ LINE FORCED
+   216		037600	000003		OPDEF	PSIXL	[37B8!14B12!3]	;PRINT SIXBIT'Z LINE
+   217		037640	000003		OPDEF	PSIXLF	[37B8!15B12!3]	;PRINT SIXBIT'Z LINE FORCED
+   218		037000	000000		OPDEF	PNTMSG	[37B8!0B12!0]	;PRINT MESSAGE IMMEDIATE
+   219		037040	000000		OPDEF	PNTMSF	[37B8!1B12!0]	;PRINT MESSAGE IMMEDIATE FORCED
+   220		037100	000000		OPDEF	PSIXM	[37B8!2B12!0]	;PRINT SIXBIT'Z MSG IMMEDIATE
+   221		037200	000000		OPDEF	PSIXMF	[37B8!4B12!0]	;PRINT SIXBIT'Z MSG IMM FORCED
+   222		037000	000000		OPDEF	PNTCI	[37B8!0B12!0]	;PRINT CHARACTER IMMEDIATE
+   223		037040	000000		OPDEF	PNTCIF	[37B8!1B12!0]	;PRINT CHARACTER IMMEDIATE FORCED
+   224		037500	000000		OPDEF	PNTCHR	[37B8!12B12!0]	;PRINT CHARACTER
+   225		037500	000001		OPDEF	PNTCHF	[37B8!12B12!1]	;PRINT CHARACTER FORCED
+   226		037040	000000		OPDEF	PNT1	[37B8!1B12!0]	;PRINT ONE OCTAL DIGIT
+   227		037040	000001		OPDEF	PNT1F	[37B8!1B12!1]	;PRINT 1 OCTAL DIGIT FORCED
+   228		037100	000000		OPDEF	PNT2	[37B8!2B12!0]	;PRINT TWO OCTAL DIGITS
+   229		037100	000001		OPDEF	PNT2F	[37B8!2B12!1]	;PRINT 2 OCTAL DIGITS FORCED
+   230		037140	000000		OPDEF	PNT3	[37B8!3B12!0]	;PRINT THREE OCTAL DIGITS
+   231		037140	000001		OPDEF	PNT3F	[37B8!3B12!1]	;PRINT THREE OCTAL DIGITS FORCED
+   232		037200	000000		OPDEF	PNT4	[37B8!4B12!0]	;PRINT FOUR OCTAL DIGITS
+   233		037200	000001		OPDEF	PNT4F	[37B8!4B12!1]	;PRINT FOUR OCTAL DIGITS FORCED
+   234		037240	000000		OPDEF	PNT5	[37B8!5B12!0]	;PRINT FIVE OCTAL DIGITS
+   235		037240	000001		OPDEF	PNT5F	[37B8!5B12!1]	;PRINT FIVE OCTAL DIGITS FORCED
+   236		037300	000000		OPDEF	PNT6	[37B8!6B12!0]	;PRINT SIX OCTAL DIGITS
+   237		037300	000001		OPDEF	PNT6F	[37B8!6B12!1]	;PRINT SIX OCTAL DIGITS FORCED
+   238		037340	000000		OPDEF	PNT7	[37B8!7B12!0]	;PRINT 7 OCTAL DIGITS
+   239		037340	000001		OPDEF	PNT7F	[37B8!7B12!1]	;PRINT 7 OCTAL DIGITS FORCED
+   240		037440	000000		OPDEF	PNT11	[37B8!11B12!0]	;PRINT 11 OCTAL DIGITS
+   241		037440	000001		OPDEF	PNT11F	[37B8!11B12!1]	;PRINT 11 OCTAL DIGITS FORCED.
+   242		037400	000000		OPDEF	PNTADR	[37B8!10B12!0]	;PRINT PHYSICAL ADDRESS
+   243		037400	000001		OPDEF	PNTADF	[37B8!10B12!1]	;PRINT PHYSICAL ADDRESS FORCED
+   244		037600	000000		OPDEF	PNTOCT  [37B8!14B12!0]	;PRINT FULL WORD OCTAL
+   245		037600	000001		OPDEF	PNTOTF	[37B8!14B12!1]	;PRINT FULL WORD OCTAL FORCED
+   246		037540	000000		OPDEF	PNTHW	[37B8!13B12!0]	;PRINT OCTAL HALF WORDS, 6 SP 6
+   247		037540	000001		OPDEF	PNTHWF	[37B8!13B12!1]	;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED
+   248		037700	000003		OPDEF	PNTOCS	[37B8!16B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S
+   249		037740	000003		OPDEF	PNTOCF	[37B8!17B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED
+   250		037640	000000		OPDEF	PNTDEC	[37B8!15B12!0]	;PRINT DECIMAL, SUPRESS LEADING 0'S
+   251		037640	000001		OPDEF	PNTDCF	[37B8!15B12!1]	;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED
+   252		037700	000000		OPDEF	PNTDS	[37B8!16B12!0]	;PRINT DECIMAL, SPACES FOR LD 0'S
+   253		037700	000001		OPDEF	PNTDSF	[37B8!16B12!1]	;PRINT DECIMAL, SPACES FOR LD 0'S FORCED
+   254		037200	000002		OPDEF	PNTNM	[37B8!4B12!2]	;PRINT PROGRAM NAME
+   255		037000	000002		OPDEF	PNTSIX	[37B8!0B12!2]	;PRINT SIXBIT WORD
+   256		037040	000002		OPDEF	PNTSXF	[37B8!1B12!2]	;PRINT SIXBIT WORD FORCED
+   257		037240	000002		OPDEF	DROPDV	[37B8!5B12!2]	;CLOSE LOGICAL FILE, USER MODE
+   258		037100	000002		OPDEF	PNTCW	[37B8!2B12!2]	;PRINT DF10 CONTROL WORD
+   259		037140	000002		OPDEF	PNTCWF	[37B8!3B12!2]	;PRINT DF10 CONTROL WORD FORCED
+   260		037000	030242		OPDEF	PCRL	[37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED
+   261		037040	030242		OPDEF	PCRLF	[37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED
+   262		037000	000040		OPDEF	PSP	[37B8!0B12!40]	;PRINT SPACE
+   263		037040	000040		OPDEF	PSPF	[37B8!1B12!40]	;PRINT SPACE FORCED
+   264		037000	030243		OPDEF	PCRL2	[37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE)
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 4-1
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0014
+
+   265		037040	030243		OPDEF	PCRL2F	[37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED
+   266		037040	000007		OPDEF	PBELL	[37B8!1B12!7]	;PRINT TTY BELL
+   267
+   268		037040	000026		OPDEF	PFORCE	[37B8!1B12!26]	;PRINT FORCE, CONTROL O OVERRIDE
+   269
+   270					DEFINE	PMSG	(ARG),<
+   271						PSIXM	[SIXBIT\ARG'_\]>
+   272
+   273					DEFINE	PMSGF	(ARG),<
+   274						PSIXMF	[SIXBIT\ARG'_\]>
+   275
+   276					;*SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING
+   277					;*	CONSERVES CORE OVER ASCIZ
+   278
+   279					DEFINE	SIXBTZ	(ARG),<	[SIXBIT\ARG'_\]>
+   280
+   281					;*CONSOLE SWITCH INPUT UUO.
+   282					;*READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF
+   283					;* USER MODE.
+   284
+   285		037400	000002		OPDEF	SWITCH	[37B8!10B12!2]	;INPUT CONSOLE SWITCHES
+   286
+   287					;*CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION
+   288					;*EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR.
+   289
+   290		037540	000004		OPDEF	CLOKOP	[37B8!13B12!4]	;CLOCK OPERATION UUO - PDP-11 CLOCK
+   291		037200	000004		OPDEF	MTROP	[37B8!4B12!4]	;CLOCK OPERATION UUO - DK20 METER
+   292
+   293					;*KL10 ONLY CACHE OPERATION UUO'S
+   294
+   295		037040	000004		OPDEF	CINVAL	[37B8!1B12!4]	;CACHE INVALIDATE
+   296		037100	000004		OPDEF	CFLUSH	[37B8!2B12!4]	;CACHE FLUSH
+   297		037140	000004		OPDEF	CWRTBI	[37B8!3B12!4]	;CACHE WRITE-BACK & INVALIDATE
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 5
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0015
+
+   298					;*END OF PASS/PROGRAM UUOS
+   299
+   300					;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT,
+   301					;*DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC.
+   302
+   303		037500	000004		OPDEF	ENDUUO	[37B8!12B12!4]	;UUO TO DISPLAY LIGHTS
+   304		037700	000004		OPDEF	EOPUUO	[37B8!16B12!4]	;END OF PROGRAM UUO
+   305
+   306					;*MEMORY MANAGEMENT UUO'S
+   307					;*UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING,
+   308					;*ADDRESS CONVERSION, ETC...
+   309
+   310		037000	000004		OPDEF	MAPMEM	[37B8!0B12!4]	;MAP MEMORY
+   311		037500	000002		OPDEF	MEMZRO	[37B8!12B12!2]	;ZERO MEMORY
+   312		037440	000002		OPDEF	MEMSEG	[37B8!11B12!2]	;SETUP MEMORY SEGMENT
+   313		037540	000002		OPDEF	MAPADR	[37B8!13B12!2]	;VIRTUAL TO PHYSICAL ADR CONVERT
+   314		037640	000002		OPDEF	MAPCNK	[37B8!15B12!2]	;MAP MEMORY CHUNK
+   315		037600	000002		OPDEF	MAPSET	[37B8!14B12!2]	;SET KI10 EXEC PAGE MAP
+   316		037740	000002		OPDEF	MAPPNT	[37B8!17B12!2]	;PRINT MEMORY MAP
+   317
+   318					;*DEVICE CODE MODIFICATION UUO
+   319					;*ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO
+   320					;*IOT'S TO A DIFFERENT DEVICE CODE.
+   321
+   322		037340	000002		OPDEF	MODPCU	[37B8!7B12!2]	;MODIFY PERHIPERAL CODE, USER
+   323		037300	000002		OPDEF	MODPCP	[37B8!6B12!2]	;MODIFY PERHIPERAL CODE, PROGRAM
+   324
+   325			030000			IFNDEF	MODDVL,
+   326			030000			IFNDEF	MODDVU,
+   327
+   328					;*"DIAMON" FILE SELECTION AND READ UUOS
+   329
+   330		037240	000004		OPDEF	FSELECT	[37B8!5B12!4]	;FILE SELECTION
+   331		037300	000004		OPDEF	FREAD	[37B8!6B12!4]	;FILE READ - ASCII DATA
+   332		037340	000004		OPDEF	FRD36	[37B8!7B12!4]	;FILE READ - 36 BIT DATA
+   333		037400	000004		OPDEF	FRD8	[37B8!10B12!4]	;FILE READ - 8 BIT DATA
+   334
+   335					;*KI10 ONLY UUO FOR PRINTING MARGIN VALUES
+   336
+   337		037700	000002		OPDEF	PNTMGN	[37B8!16B12!2]	;PRINT MARGIN VALUE
+   338
+   339						XLIST
+   340					IFNDEF	KLOLD,
+   366
+   367					;*A MACRO TO REPORT AN ERROR AND NOT LOOP
+   368
+   369						DEFINE	ERROR1	(FORMAT,CORECT,ACTUAL,F,D,ERR)<
+   370						SALL
+   371						ERUUO	FORMAT,[T,,[SIXBIT\F'_\]
+   372							   CORECT,,ACTUAL
+   373							   [SIXBIT\D'_\],,ERR]
+   374						XALL	>
+   375
+   376					>;END OF KLOLD CONDITIONAL
+   377
+   378						XLIST
+   379						LIST
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 1
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0017
+
+   380					SUBTTL	*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977
+   381
+   382	030000					LOC	30000
+   383
+   384					S^;*********************************************************************^
+   385					;*PROGRAM STARTING ADDRESSES
+   386					;*THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS
+   387					;*NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE
+   388					;*OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER
+   389					;*MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS.
+   390					S^;*********************************************************************^
+   391
+   392	030000	254 00 1 00 027776 	BEGIN:	JRST	@MODLNK		;STAND-ALONE START
+   393	030001	254 00 0 00 030712 	$START:	JRST	START		;MODE CHECK STARTING ADDRESS
+   394
+   395	030002	254 00 1 00 027774 	DIAGMN:	JRST	@LDLNK		;DIAGNOSTIC MONITOR START
+   396
+   397	030003	254 00 1 00 027774 	SYSEXR:	JRST	@LDLNK		;SYSTEM EXERCISER START
+   398
+   399	030004	254 00 0 00 030712 	SFSTRT:	JRST	SADR1		;SPECIAL FEATURE START
+   400
+   401	030005	254 00 0 00 030712 	PFSTRT:	JRST	SADR2		;POWER FAIL RESTART
+   402
+   403	030006	254 00 0 00 030712 	REENTR:	JRST	SADR3		;REENTER START(USUALLY USER MODE ONLY)
+   404
+   405	030007				SRTDDT:				;COMMONLY MISTAKEN NAME FOR "DDTSRT"
+   406	030007	254 00 1 00 027775 	DDTSRT:	JRST	@DDTLNK		;DDT START
+   407
+   408	030010	254 00 0 00 030741 	BEGIN1:	JRST	STARTA		;LOOP START(END OF PASS COMES HERE)
+   409	030011	254 00 1 00 027777 	SBINIT:	JRST	@SUBLNK		;PMGINT LINKAGE
+   410	030012	000000	000000		RETURN:	0			;RETURN ADDRESS STORAGE
+   411
+   412	030013	254000	030712		START1:	SADR7			;OPTIONAL STARTING ADR/INSTRUCTIONS
+   413	030014	254000	030712		START2:	SADR8			; "
+   414	030015	254000	030712		START3:	SADR9			; "
+   415	030016	254000	030712		START4:	SADR10			; "
+   416	030017	254000	030712		START5:	SADR11			; "
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 2
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0018
+
+   417					S^;*********************************************************************^
+   418					;*PROGRAM FIXED PARAMETER AREA
+   419					S^;*********************************************************************^
+   420
+   421	030020	444153	414600		PNTNAM:	PAREA3		;SIXBIT PROGRAM NAME
+   422	030021	645560	000000		PNTEXT:	PAREA4		;SIXBIT PROGRAM EXTENSION
+   423	030022	000000	000000		RANDBS:	PAREA1		;RANDOM BASE NUMBER
+   424	030023	000000	000000		SWTEXR:	PAREA2		;SYSTEM EXERCISER SWITCHES
+   425	030024	000000	001000		ITRCNT:	ITERAT		;PROGRAM ITERATIONS
+   426	030025	000000	030725		$PNAME:	PGMNAM		;POINTER TO PROGRAMS NAME
+   427	030026	000000	000002		$PVER:	MCNVER,,DECVER	;MCN & DEC VERSION LEVEL
+   428	030027	000000	030000		$MODVL:	MODDVL		;DEVICE CODE CHANGE LOWER LIMIT
+   429	030030	000000	030000		$MODVU:	MODDVU		;DEVICE CODE CHANGE UPPER LIMIT
+   430	030031	777777	777777		$EMODE:	IFNDEF EXCASB,<0> IFDEF EXCASB,<-1>	;EXEC ALLOWED
+   431	030032	777777	777777		$UMODE:	IFNDEF USRASB,<0> IFDEF USRASB,<-1>	;USER ALLOWED
+   432	030033	000000	000000		$DSKUP:	IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1>	;DISK UPDATE MODE
+   433	030034	000000	000000		$MMAP:	IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1>	;ALLOW MEMORY RTNS
+   434	030035	000000	000000		PAREA7:	PAREA5		;OPTIONAL PARAMETER
+   435	030036	000000	000000		PAREA8:	PAREA6		;OPTIONAL PARAMETER
+   436
+   437					S^;*********************************************************************^
+   438					;*PROGRAM VARIABLE PARAMETER AREA
+   439					S^;*********************************************************************^
+   440
+   441	030037	000000	000000		USER:	0		; 0 = EXEC, -1 = USER MODE FLAG
+   442	030040	000000	000000		KAIFLG:	0		;PROCESSOR TYPE, 0 = KA10, -1 = KI10
+   443	030041	000000	000000		KLFLG:	0		;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10
+   444	030042	777777	777777		MONFLG:	-1		;DIAG MONITOR SPECIAL USER FLAG
+   445	030043	000000	000000		MONCTL:	0		;DIAG MON/SYS EXR FLAG
+   446	030044	000000	000000		MONTEN:	0		;-1= LOADED BY 10
+   447	030045	000000	000000		CLOCKF:	0		;CLOCK TICKED FLAG
+   448	030046	000000	000000		CONSW:	0		;CONSOLE SWITCH SETTINGS
+   449	030047	000000	000000		PASCNT:	0		;PROGRAM PASS COUNT
+   450	030050	000000	000000		RUNFLG:	0		;PROGRAM RUN FLAG
+   451	030051	000000	000000		TESTPC:	0		;SUBTEST PC
+   452	030052	000000	000000		ERRPC:	0		;ERROR PC
+   453	030053	000000	000000		ERRTLS:	0		;ERROR TOTALS
+   454	030054	000000	000000		TICKS:	0		;PROGRAM RUNNING TIME
+   455	030055	000000	000000		MARGIN:	0		;KI10 MARGIN WORD VALUE
+   456	030056	000000	000000		$ONETM:	0		;SUBROUTINE INITIALIZATION FLAG
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 3
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0019
+
+   457					S^;*********************************************************************^
+   458					;*SPECIAL PROGRAM DISPATCH ADDRESSES
+   459					S^;*********************************************************************^
+   460
+   461	030057	037 12 0 00 000004 	BEGEND:	ENDUUO		;END OF PASS
+   462	030060	254 00 0 00 030010 	$BEND1:	JRST	BEGIN1	;KEEP RUNNING PROGRAM
+   463	030061	037 16 0 00 000004 	$BEND2:	EOPUUO		;END OF PROGRAM - NO RETURN
+   464	030062	254000	030712		CNTLC:	SADR5		;CONTROL C XFER ADDRESS
+   465	030063	254000	030712		ALTMGO:	SADR6		;ALTMODE XFER ADDRESS
+   466	030064				CPOPJ1:			;SKIP RETURN
+   467	030064	350 00 0 17 000000 	UUOSKP:	AOS	(P)	;SKIP RETURN FROM UUO
+   468	030065				CPOPJ:			;NON-SKIP REGULAR RETURN
+   469	030065	263 17 0 00 000000 	UUOEXT:	RTN		;UUO RETURN
+   470	030066	255 00 0 00 000000 	UUORTN:	JFCL		;ADDITIONAL USERS UUO ROUTINE
+   471	030067	255 00 0 00 000000 	$UORTX:	JFCL		;ADDITIONAL UUO LINKAGE
+   472	030070	255 00 0 00 000000 	$UUOER:	JFCL		;INITED AS (JRST $UOERX)
+   473	030071	255 00 0 00 000000 	$ITRHL:	JFCL		;ADDITIONAL INTERRUPT LINKAGE
+   474	030072	255 00 0 00 000000 	$ITRX1:	JFCL		; "
+   475	030073	255 00 0 00 000000 	$USRHL:	JFCL		; "
+   476	030074	255 00 0 00 000000 	$RSRTX:	JFCL		;ADDITIONAL POWER FAIL LINKAGE
+   477	030075	255 00 0 00 000000 	$RSRTY:	JFCL		; "
+   478	030076	255 00 0 00 000000 	RESRT1:	JFCL		; INITED AS (JRST RESRTX)
+   479	030077	255 00 0 00 000000 	RESRT2:	JFCL		; "
+   480	030100	255 00 0 00 000000 	$PARER:	JFCL		;ADDITIONAL PARITY ERROR LINKAGE
+   481	030101	255 00 0 00 000000 	ERMORE:	JFCL		;ADDITIONAL ERROR HANDLER LINKAGE
+   482	030102	254 04 0 00 030102 		HALT	.	;IMPROPER TRANSFER HALT
+   483
+   484	030103	000000	000000		$PSHER:	0		;INITED AS (JRST PSHERR)
+   485	030104	000000	000000		ITRCH1:	0		;PC & FLAGS OF CURRENT INTERRUPT
+   486	030105	000000	000000			0		;INITED AS (JRST $ITRC1)
+   487
+   488					S^;*********************************************************************^
+   489					;*PROCESSOR CONTROL STORAGE
+   490					S^;*********************************************************************^
+   491
+   492	030106	000000	000000		$ACC0:	0		;INTERRUPT SAVED AC0
+   493	030107	000000	000000		$SVPI:	0		;INTERRUPT SAVED PI
+   494	030110	000000	000000		$SVAPR:	0		;INTERRUPT SAVED APR
+   495	030111	000000	000000		$SVPAG:	0		;INTERRUPT SAVED PAG (DATAI)
+   496	030112	000000	000000		$SPAG1:	0		;INTERRUPT SAVED PAG (CONI)
+   497
+   498	030113	000000	000000		$SVUUO:	0		;CURRENT USERS UUO
+   499	030114	000000	000000		$SVUPC:	0		;PC OF CURRENT USERS UUO
+   500
+   501	030115	000000	000000		REPTU:	0		;REPEAT UUO ITERATIONS
+   502	030116	000000	000000		SCOPE:	0		;ERROR HANDLER SCOPE LOOP FLAG
+   503	030117	000000	000000		%CORFLG:0		; " CORRECT FLAG
+   504	030120	000000	000000		%COREC:	0		; " CORRECT DATA
+   505	030121	000000	000000		%ACTFL:	0		; " ACTUAL FLAG
+   506	030122	000000	000000		%ACTUL:	0		; " ACTUAL DATA
+   507	030123	000000	000000		%DISCR:	0		; " DISCREPENCY DATA
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 4
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0020
+
+   508					S^;*********************************************************************^
+   509					;*UUO DISPATCH TABLE
+   510					S^;*********************************************************************^
+   511						XLIST
+   512						LIST
+   513	030124	030070	030070		UUODIS:	LUUO1,,$UUOER
+   514	030125	030070	030070			LUUO3,,LUUO2
+   515	030126	030070	030070			LUUO5,,LUUO4
+   516	030127	030070	030070			LUUO7,,LUUO6
+   517	030130	030070	030070			LUUO11,,LUUO10
+   518	030131	030070	030070			LUUO13,,LUUO12
+   519	030132	030070	030070			LUUO15,,LUUO14
+   520	030133	030070	030070			LUUO17,,LUUO16
+   521	030134	030070	030070			LUUO21,,LUUO20
+   522	030135	030070	030070			LUUO23,,LUUO22
+   523	030136	030070	030070			LUUO25,,LUUO24
+   524	030137	030070	030070			LUUO27,,LUUO26
+   525	030140	030070	030070			LUUO31,,LUUO30
+   526	030141	030070	030070			LUUO33,,LUUO32
+   527
+   528					S^;*********************************************************************^
+   529					;*MEMORY MANAGMENT STORAGE
+   530					S^;*********************************************************************^
+   531
+   532	030142	000000	000000		DF22F:	0		;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT
+   533	030143	000000	000000		MAPNEW:	0		;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING
+   534	030144	000000	000000		MEMTOT:	0		;TOTAL MEMORY SIZE IN K (1024.)
+   535	030145	000000	000000		MEMLOW:	0		;LOWEST USABLE MEMORY
+   536	030146				MEMSIZ:	BLOCK ^D41	;MEMORY SEGMENT POINTER TABLE
+   537
+   538					S^;*********************************************************************^
+   539					;*PRINT CONTROL STORAGE
+   540					S^;*********************************************************************^
+   541
+   542	030217	000000	000000		PNTFLG:	0		;PRINT FLAG, -1 WHILE IN PRINT ROUTINE
+   543	030220	000000	000000		PNTENB:	0		;PRINT ENABLE
+   544	030221	000000	000000		PDISF:	0		;PRINT DISABLED FLAG
+   545	030222	000000	000000		PNTINH:	0		;INHIBIT PRINT INPUT CHECKS
+   546	030223	000000	000000		PNTSPC:	0		;PRINT SPACE CONTROL
+   547	030224	000000	000000		OPTIME:	0		;TYPE-IN WAIT TIME
+   548	030225	000000	000000		$TWCNT:	0		;TIME WAITED
+   549	030226	000000	000000		$DVOFF:	0		;LOGICAL DEVICE INITED FLAG
+   550	030227	000000	000000		TTYFIL:	0		;TTY EXEC FILLERS FLAG
+   551	030230	000000	000000		TTYSPD:	0		;TTY EXEC BAUD RATE
+   552	030231	000000	000000		$TTCHR:	0		;ACTUAL TYPED IN CHAR
+   553	030232	000000	000000		$CHRIN:	0		;UPPER CASED & PARITY STRIPPED CHAR
+   554	030233	000000	000000		$TYPNB:	0		;TYPED IN NUMBER
+   555	030234	000000	000000		$CRLF:	0		;FREE CR/LF FLAG
+   556	030235	000000	000000		$TABF:	0		;TAB CONVERSION FLAG
+   557	030236	000000	000000		$FFF:	0		;FORM FEED CONVERSION FLAG
+   558	030237	000000	000000		$VTF:	0		;VERTICAL TAB CONVERSION FLAG
+   559	030240	000000	000000		USRLFF:	0		;USER LF FILLERS
+   560	030241	000000	000000		USRCRF:	0		;USER CR FILLERS
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 5
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0021
+
+   561					S^;*********************************************************************^
+   562					;*THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED
+   563					;*TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS:
+   564					;*	MOVEI	NAME
+   565					;*	PNTA		;OR PNTAF
+   566					S^;*********************************************************************^
+   567
+   568	030242				CRLF:	ASCII/
+   569	030242	015 012 000 000 000 	/
+   570	030243				CRLF2:	ASCII/
+   571
+   572	030243	015 012 015 012 000 	/
+   573	030244	054 000 000 000 000 	COMMA:	ASCII/,/
+   574	030245	056 000 000 000 000 	PERIOD:	ASCII/./
+   575	030246	040 000 000 000 000 	SPACE:	ASCII/ /
+   576	030247	011 000 000 000 000 	TAB:	ASCII/	/
+   577	030250				MINUS:
+   578	030250	055 000 000 000 000 	HYPEN:	ASCII/-/
+   579	030251	053 000 000 000 000 	PLUS:	ASCII/+/
+   580	030252	052 000 000 000 000 	AST:	ASCII/*/
+   581	030253	100 000 000 000 000 	ATSIN:	ASCII/@/
+   582	030254	050 000 000 000 000 	LFP:	ASCII/(/
+   583	030255	051 000 000 000 000 	RTP:	ASCII/)/
+   584	030256	007 0000000000 		BELL:	BYTE (7) 007
+   585	030257	077 000 000 000 000 	QUEST:	ASCII/?/
+   586	030260	057 000 000 000 000 	SLASH:	ASCII!/!
+   587	030261	044 000 000 000 000 	DOLLAR:	ASCII/$/
+   588	030262	000000	000012		RADIX:	^D10			;DECIMAL PRINT RADIX
+   589	030263	000000	000040		RADLSP:	40			;DECIMAL PRINT LEADING CHAR
+   590	030264	000000	000012		RADLSC:	^D10			;DECIMAL PRINT LEADING CHAR COUNT
+   591
+   592					S^;*********************************************************************^
+   593					;*USER MODE OUTPUT FILE INFORMATION
+   594					S^;*********************************************************************^
+   595
+   596	030265				$OBUF:	BLOCK	3		;LOGICAL FILE OUTPUT BUFFER HEADER
+   597	030270	60 62 51 56 64 00 	$OUTNM:	SIXBIT	/PRINT/		;FILE NAME
+   598	030271	60 56 64 00 00 00 	$OUTEX:	SIXBIT	/PNT/		;FILE NAME EXTENSION
+   599	030272					BLOCK	2
+   600
+   601					S^;*********************************************************************^
+   602					;*DISK UPDATE MODE FILE INFORMATION
+   603					S^;*********************************************************************^
+   604
+   605	030274				$IBUF:	BLOCK	3
+   606	030277	60 62 51 56 64 00 	$INNM:	SIXBIT	/PRINT/
+   607	030300	60 56 64 00 00 00 	$INEXT:	SIXBIT	/PNT/
+   608	030301					BLOCK	2
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 6
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0022
+
+   609					S^;*********************************************************************^
+   610					;*PUSHDOWN LIST CONTROL INFORMATION
+   611					S^;*********************************************************************^
+   612
+   613	030303	777577	030303		PLIST:	PLIST-PLISTE,,PLIST
+   614	030304				PLISTS:	BLOCK	200
+   615	030504	000000	000000		PLISTE:	0		;END OF PUSHDOWN LIST
+   616
+   617					S^;*********************************************************************^
+   618					;*POWER LINE CLOCK FREQUENCY FLAG
+   619					S^;*********************************************************************^
+   620
+   621	030505	000000	000000		CYCL60:	0	;0 = 60, -1 = 50 CYCLE
+   622
+   623					S^;*********************************************************************^
+   624					;*KL10 CACHE CONTROL FLAGS
+   625					S^;*********************************************************************^
+   626
+   627	030506	000000	000000		CSHFLG:	0	;ALLOW CACHE IF 0
+   628	030507	000000	000000		CSHMEM:	0	;CACHE MEMORY SEGMENTS IF 0
+   629
+   630					S^;*********************************************************************^
+   631					;*NUMBER INPUT DIGIT FLAG
+   632					S^;*********************************************************************^
+   633
+   634	030510	000000	000000		TTNBRF:	0	;-1 IF ANY DIGIT TYPED
+   635
+   636					S^;*********************************************************************^
+   637					;*KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION
+   638					S^;*********************************************************************^
+   639
+   640	030511	000000	000000		PVPAGI:	0	;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION
+   641
+   642					S^;*********************************************************************^
+   643					;*ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS
+   644					S^;*********************************************************************^
+   645
+   646	030512	000000	000000		%ERHI1:	0	;IF NON-ZERO, XCT'D AT START OF %ERUUO
+   647	030513	000000	000000		%ERHI2:	0	;IF NON-ZERO, XCT'D AT END OF %ERUUO
+   648	030514	000000	000000		%ERHI3:	0	;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO
+   649
+   650					S^;*********************************************************************^
+   651					;*SPECIAL USERS UUO INTERCEPT INSTRUCTION
+   652					S^;*********************************************************************^
+   653
+   654	030515	000000	000000		$$UUO:	0	;IF NON-ZERO, XCT'D AT START OF $UORTN
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 7
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0023
+
+   655					S^;*********************************************************************^
+   656					;*KL10 PROCESSOR TYPE FLAG, 0=P0, 1=BBD NEW, 2=BBD OLD
+   657					S^;*********************************************************************^
+   658
+   659	030516	000000	000000		KLTYP:	0
+   660
+   661					S^;*********************************************************************^
+   662					;*SPECIAL USERS MUUO INTERCEPT INSTRUCTION
+   663					S^;*********************************************************************^
+   664
+   665	030517	000000	000000		$$MUUO:	0	;IF NON-ZERO, XCT'D AT START OF MUUOER
+   666
+   667					S^;*********************************************************************^
+   668					;*SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION
+   669					S^;*********************************************************************^
+   670
+   671	030520	000000	000000		$$OUTER:0	;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR
+   672
+   673					S^;*********************************************************************^
+   674					;*"SWITCH" CALL USAGE CONTROL
+   675					S^;*********************************************************************^
+   676
+   677	030521	000000	000000		$$TOGGLE:0	;IF NON-ZERO, USE C(CONSW) FOR SWITCHES
+   678
+   679					S^;*********************************************************************^
+   680					;*SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS
+   681					S^;*********************************************************************^
+   682
+   683	030522	000000	000000		$$TAX1:	0	;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL
+   684	030523	000000	000000		$$TAX2:	0	;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL
+   685
+   686					S^;*********************************************************************^
+   687					;*SPECIAL FUTURE EXPANSION ROOM
+   688					;*IF ANY FIXED AREA TAGS ARE ADDED, REDUCE THE SIZE OF
+   689					;*THIS BLOCK STATEMENT ACCORDINGLY.  THIS MUST BE DONE
+   690					;*SO THAT PREVIOUS FIXED ASSIGNMENTS DO NOT CHANGE.
+   691					S^;*********************************************************************^
+   692
+   693	030524					BLOCK	53	;HOPEFULLY THIS IS ENOUGH FOREVER
+   694
+   695					S^;*********************************************************************^
+   696					;*END OF FIXED STORAGE
+   697					S^;*********************************************************************^
+   698
+   699			030577			$ENDFX=&<777700>-1
+   700	030577					LOC	$ENDFX
+   701	030577	000000	000000		ENDFIX:	0		;END OF FIXED STORAGE
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 1
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0024
+
+   702					SUBTTL	*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76
+   703
+   704					;NEW DEFINITIONS USED BY THE KL10 SUBROUTINE PACKAGE
+   705
+   706			000000		AC0=	0
+   707			030000		DIAGNOS=30000		;PDP-10 DIAGNOSTIC START ADDRESS
+   708			010000		DDT=	10000		;PDP-10 DDT START ADDRESS
+   709			020000		DIAMON=	20000		;PDP-10 DIAMON LOADER START ADDRESS
+   710			020000		DONG11=	1B22		;11 DOORBELL (FROM THE 10)
+   711
+   712					;DTE20 DEVICE CODES
+   713
+   714			000200		DTE==	200		;DTE0
+   715			000204		DTE0==	204
+   716			000204		DTE1==	204
+   717			000210		DTE2==	210
+   718			000214		DTE3==	214
+   719
+   720					;KL10 EPT COMMUNICATION AREA
+   721
+   722			000440		$STD=	440		;PDP-10 DIAGNOSTIC START ADDRESS
+   723			000441		$DDT=	441		;PDP-10 DDT START ADDRESS
+   724			000442		$STL=	442		;PDP-10 LOADER START ADDRESS
+   725			000443		$STM=	443		;PDP-10 MONITOR START ADDRESS
+   726
+   727			000444		$DTFLG=	444		;DTE20 OPERATION COMPLETE FLAG
+   728			000445		$DTCLK=	445		;DTE20 CLOCK INTERRUPT FLAG
+   729			000446		$DTCI=	446		;DTE20 CLOCK INTERRUPT INSTRUCTION
+   730			000447		$DTT11=	447		;DTE20 10 TO 11 ARGUMENT
+   731			000450		$DTF11=	450		;DTE20 11 TO 10 ARGUMENT
+   732			000451		$DTCMD=	451		;DTE20 TO 11 COMMAND WORD
+   733			000452		$DTSEQ=	452		;DTE20 OPERATION SEQUENCE NUMBER
+   734			000453		$DTOPR=	453		;DTE20 OPERATIONAL DTE #
+   735			000454		$DTCHR=	454		;DTE20 LAST TYPED CHARACTER
+   736			000455		$DTMTD=	455		;DTE20 MONITOR TTY OUTPUT COMPLETE FLAG
+   737			000456		$DTMTI=	456		;DTE20 MONITOR TTY INPUT FLAG
+   738
+   739			000457		$DTSWR=	457		;DTE20 CONSOLE SWITCH REGISTER
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 2
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0025
+
+   740					;SPECIAL "FIXED" REASSIGNMENTS
+   741
+   742			030600			$$LOC=.			;SAVE CURRENT LOCATION
+   743
+   744	030000					LOC	30000
+   745	030000	254 00 0 00 030600 	$$BEGIN:JRST	$$START		;SETUP SPECIAL START
+   746	030001	254 00 0 00 030600 		JRST	$$START		;"DIAMON" CHAIN START ADDRESS
+   747
+   748	000440					LOC	440
+   749	000440	254 00 0 00 030000 	$STD:	JRST	BEGIN		;SETUP FOR "STD"
+   750	000443					LOC	443
+   751	000443	254 00 0 00 030636 	$STM:	JRST	$SPEC		;SIMPLE RUN CONTROL
+   752
+   753	030057					LOC	30057
+   754	030057	254 00 0 00 030641 	$BEGEND:JRST	$SPBEND		;SETUP SPECIAL "BEGEND"
+   755
+   756					;SPECIAL MUUO, TRAP & PAGE FAIL SETUP
+   757
+   758	000420					LOC	420
+   759	000420	254 04 0 00 000420 	$$420:	HALT	.		;KI10 PAGE FAIL
+   760	000421	255 00 0 00 000000 	$$421:	JFCL			;OVERFLOW
+   761	000422	254 04 0 00 000422 	$$422:	HALT	.		;PUSHDOWN OVERFLOW
+   762	000423	254 04 0 00 000423 	$$423:	HALT	.		;TRAP 3
+   763	000424	000000	000000		$$424:	0			;MMUO
+   764	000425	000000	000000		$$425:	0			;MMUO PC
+   765	000426	000000	000000		$$426:	0			;KI10-PAGE FAIL, KL10-PROCESS CONTEXT
+   766	000427	254 04 0 00 000427 	$$427:	HALT	.
+   767	000430	000000	000427		$$430:	427			;MMUO NEW PC'S
+   768	000431	000000	000427		$$431:	427
+   769	000432	000000	000427		$$432:	427
+   770	000433	000000	000427		$$433:	427
+   771	000434	000000	000427		$$434:	427
+   772	000435	000000	000427		$$435:	427
+   773	000436	000000	000427		$$436:	427
+   774	000437	000000	000427		$$437:	427
+   775
+   776	000500					LOC	500
+   777	000500	000000	000000		$$500:	0			;KL10 PAGE FAIL WORD
+   778	000501	000000	000000		$$501:	0			;KL10 PAGE FAIL PC
+   779	000502	000000	000503		$$502:	503			;KL10 PAGE FAIL NEW PC
+   780	000503	254 04 0 00 000503 	$$503:	HALT	.
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 3
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0026
+
+   781	030600					LOC	$$LOC		;RESET CURRENT LOCATION
+   782
+   783					;SPECIAL STARTUP SEQUENCE
+   784
+   785	030600	402 00 0 00 030037 	$$START:SETZM	USER
+   786	030601	265 00 0 00 030602 		JSP	0,.+1		;IN USER MODE ?
+   787	030602	603 00 0 00 010000 		TLNE	0,USERF
+   788	030603	476 00 0 00 030037 		SETOM	USER		;YES, SET CONTROL WORD
+   789	030604	336 00 0 00 030042 		SKIPN	MONFLG		;SPECIAL USER MODE ?
+   790	030605	402 00 0 00 030037 		SETZM	USER		;YES, RUN AS EXEC
+   791	030606	332 00 0 00 030037 		SKIPE	USER
+   792	030607	254 00 0 00 030712 		JRST	START		;USER MODE, DON'T NEED CPU TYPE
+   793
+   794	030610	336 00 0 00 030044 	$STKIL:	SKIPN	MONTEN		;LOADED BY "DIAMON" ?
+   795	030611	476 00 0 00 030024 		SETOM	ITRCNT		;NO, RUN FOREVER
+   796	030612	402 00 0 00 030516 		SETZM	KLTYP
+   797	030613	402 00 0 00 030041 		SETZM	KLFLG		;ASSUME KI10
+   798	030614	200 01 0 00 034277 		MOVE	1,[1,,1]
+   799	030615	251 01 0 00 000001 		BLT	1,1		;HOPE THIS WORKS
+   800	030616	316 01 0 00 034277 		CAMN	1,[1,,1]	;IF AC NE 1,,1 AFTER BLT, KL10
+   801	030617	254 00 0 00 030712 		JRST	START		;KI10, NO ADDITIONAL SETUP
+   802
+   803	030620	7 000 20 0 00 010040 	$STKL:	CONO	APR,10040	;SET BBD NOT BIT
+   804	030621	7 000 24 0 00 000000 		CONI	APR,0
+   805	030622	7 000 20 0 00 020040 		CONO	APR,20040	;CLEAR BBD NOT BIT
+   806	030623	606 00 0 00 000040 		TRNN	0,40		;IF SET, KL10
+   807	030624	350 00 0 00 030516 		AOS	KLTYP		;IF NOT, BBD
+   808	030625	402 00 0 00 000444 		SETZM	$DTFLG
+   809	030626	402 00 0 00 000445 		SETZM	$DTCLK
+   810	030627	200 00 0 00 000453 		MOVE	$DTOPR		;GET DTE #
+   811	030630	436 00 0 00 030670 		ORM	$$DTE0		;INSERT IN DTE I/O INSTS
+   812	030631	436 00 0 00 030672 		ORM	$$DTE1
+   813	030632	436 00 0 00 030704 		ORM	$$DTE2
+   814	030633	436 00 0 00 030706 		ORM	$$DTE3
+   815	030634	476 00 0 00 030041 		SETOM	KLFLG		;SET KL10 CONTROL FLAG
+   816	030635	254 00 0 00 030712 		JRST	START
+   817
+   818	030636	200 00 0 00 034300 	$SPEC:	MOVE	[JRST STARTA]	;SIMPLE RUN CONTROL
+   819	030637	202 00 0 00 030643 		MOVEM	$SPB1
+   820	030640	254 00 0 00 030712 		JRST	START
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 4
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0027
+
+   821					;SPECIAL "BEGEND" ROUTINE
+   822
+   823	030641	350 00 0 00 030047 	$SPBEND:AOS	PASCNT		;INCREMENT PASS COUNT
+   824	030642	370 00 0 00 030024 		SOS	ITRCNT		;DECREMENT ITERATION COUNT
+   825	030643	336 00 0 00 030037 	$SPB1:	SKIPN	USER
+   826	030644	254 00 0 00 030652 		JRST	$SPBEX		;EXEC MODE
+   827
+   828	030645	332 00 0 00 030024 	$SPBUS:	SKIPE	ITRCNT		;USER MODE, COMPLETED ?
+   829	030646	254 00 0 00 030741 		JRST	STARTA		;NO, KEEP RUNNING
+   830	030647	336 00 0 00 030044 		SKIPN	MONTEN		;DONE, LOADED BY "DIAMON" ?
+   831	030650	047 00 0 00 000012 		EXIT			;NO, RETURN TO MONITOR
+   832	030651	254 00 1 00 030012 		JRST	@RETURN		;YES, RETURN TO "DIAMON"
+   833
+   834	030652	332 00 0 00 030041 	$SPBEX:	SKIPE	KLFLG
+   835	030653	254 00 0 00 030660 		JRST	$SPBKL		;KL10 & EXEC
+   836	030654	7 004 14 0 00 030024 		DATAO	PI,ITRCNT	;KI10 & EXEC, DISPLAY ITER COUNT
+   837	030655	332 00 0 00 030024 		SKIPE	ITRCNT
+   838	030656	254 00 0 00 030741 		JRST	STARTA		;NOT COMPLETED YET
+   839	030657	254 00 1 00 030012 		JRST	@RETURN		;DONE
+   840
+   841	030660	336 00 0 00 030024 	$SPBKL:	SKIPN	ITRCNT
+   842	030661	254 00 0 00 030676 		JRST	$SPKLD		;KL10, EXEC & COMPLETED
+   843
+   844	030662	335 00 0 00 030043 		SKIPGE	MONCTL
+   845	030663	254 00 0 00 030741 		JRST	STARTA		;"DIAMON" CONTROL
+   846	030664	201 00 0 00 000404 		MOVEI	0,404		;NOTIFY PDP-11 OF END OF PASS
+   847	030665	202 00 0 00 000451 		MOVEM	0,$DTCMD
+   848	030666	402 00 0 00 000444 		SETZM	$DTFLG
+   849	030667	336 00 0 00 030516 		SKIPN	KLTYP
+   850	030670	7 200 20 0 00 020000 	$$DTE0:	CONO	DTE,DONG11
+   851	030671	332 00 0 00 030516 		SKIPE	KLTYP
+   852	030672	7 200 20 0 00 010000 	$$DTE1:	CONO	DTE,10000
+   853	030673	336 00 0 00 000444 		SKIPN	$DTFLG		;WAIT TILL 11 RESPONDS
+   854	030674	254 00 0 00 030673 		JRST	.-1
+   855	030675	254 00 0 00 030741 		JRST	STARTA		;KEEP RUNNING
+   856
+   857					;SPECIAL KL10 COMPLETED ROUTINE
+   858
+   859	030676	332 00 0 00 030044 	$SPKLD:	SKIPE	MONTEN
+   860	030677	254 00 1 00 030012 		JRST	@RETURN		;LOADED BY "DIAMON"
+   861
+   862	030700	201 00 0 00 000403 		MOVEI	0,403		;NOTIFY PDP-11 OF COMPLETION
+   863	030701	202 00 0 00 000451 		MOVEM	0,$DTCMD
+   864	030702	402 00 0 00 000444 		SETZM	$DTFLG
+   865	030703	336 00 0 00 030516 		SKIPN	KLTYP
+   866	030704	7 200 20 0 00 020000 	$$DTE2:	CONO	DTE,DONG11
+   867	030705	332 00 0 00 030516 		SKIPE	KLTYP
+   868	030706	7 200 20 0 00 010000 	$$DTE3:	CONO	DTE,10000
+   869	030707	336 00 0 00 000444 		SKIPN	$DTFLG		;SHOULD NEVER HAPPEN
+   870	030710	254 00 0 00 030707 		JRST	.-1		;11 NEVER RETURNS ON END OF PROGRAM
+   871	030711	254 04 0 00 030000 		HALT	BEGIN		;IF IT DOES, HALT.
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 1
+DAKAFM	MAC	19-JAN-77 17:08		DIAGNOSTIC SECTION                                                                 SEQ 0028
+
+   872					SUBTTL	DIAGNOSTIC SECTION
+   873
+   874	030712	402 00 0 00 030037 	START:	SETZM	USER#		;CLEAR USER CONTROL WORD
+   875	030713	265 00 0 00 030714 		JSP	0,.+1		;GET FLAGS
+   876	030714	603 00 0 00 010000 		TLNE	USERF		;IN USER MODE?
+   877	030715	476 00 0 00 030037 		SETOM	USER		;YES, SET USER CONTROL WORD
+   878	030716	336 00 0 00 030042 		SKIPN	MONFLG		;SPECIAL USER MODE?
+   879	030717	402 00 0 00 030037 		SETZM	USER		;YES, CLEAR USER CONTROL WORD
+   880	030720	336 00 0 00 030037 		SKIPN	USER
+   881	030721	254 00 0 00 030741 		JRST	STARTA
+   882	030722	331 00 0 00 030043 		SKIPL	MONCTL
+   883	030723	051 03 0 00 030725 		TTCALL	3,PGMNAM	;MENTION OUR NAME
+   884	030724	254 00 0 00 030741 		JRST	STARTA
+   885
+   886	030725				PGMNAM:	ASCIZ/
+   887	030725	015 012 120 104 120 	PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) [DAKAF]
+   888	030726	055 061 060 040 113
+   889	030727	101 061 060 040 102
+   890	030730	101 123 111 103 040
+   891	030731	111 116 123 124 122
+   892	030732	125 103 124 111 117
+   893	030733	116 040 104 111 101
+   894	030734	107 116 117 123 124
+   895	030735	111 103 040 050 066
+   896	030736	051 040 133 104 101
+   897	030737	113 101 106 135 015
+   898	030740	012 000 000 000 000 	/
+   899
+   900	030741	254 00 0 00 030742 	STARTA:	JRST	.+1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 2
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0029
+
+   901					SUBTTL	TEST OF MSCL BOOLEAN INSTRUCTIONS
+   902
+   903					;**********
+   904
+   905					;THIS TEST VERIFIES THAT SETZI CLEARS THE AC AND DOES NOT AFFECT E.
+   906					;FIRST, AC AND E ARE PRELOADED WITH -1,,-1, THEN, SETZI IS EXECUTED.
+   907					;AC IS THEN CHECKED FOR 0 AND E IS CHECKED FOR -1,,-1
+   908
+   909	030742	474 01 0 00 000000 	C56100:	SETO	1,		;PRELOAD AC WITH -1,,-1
+   910	030743	474 02 0 00 000000 		SETO	2,		;PRELOAD E WITH -1,,-1
+   911	030744	401 01 0 00 000002 		SETZI	1,2		;*SETZI SHOULD CLEAR THE AC
+   912	030745	332 00 0 00 000001 		SKIPE	1		;PASS IF C(AC)=0
+   913						STOP^
+   914	030746	254 04 0 00 030747 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   915	030747	324 00 0 00 030750 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   916									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   917									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   918									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   919	030750	312 02 0 00 034301 		CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+   920						STOP^
+   921	030751	254 04 0 00 030752 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   922	030752	324 00 0 00 030753 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   923									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   924									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   925									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   926
+   927					;**********
+   928
+   929					;THIS TEST VERIFIES THAT SETZM CLEARS C(E) AND DOES NOT AFFECT C(AC)
+   930					;FIRST, AC AND E ARE PRELOADED WITH -1,,-1; THEN SETZM IS EXECUTED.
+   931					;AC IS THEN CHECKED FOR -1,,-1 AND E IS CHECKED FOR 0.
+   932
+   933	030753	474 01 0 00 000000 	C56200:	SETO	1,		;PRELOAD AC WITH -1,,-1
+   934	030754	474 02 0 00 000000 		SETO	2,		;PRELOAD E WITH -1,,-1
+   935	030755	402 01 0 00 000002 		SETZM	1,2		;*SETZM SHOULD CLEAR E
+   936	030756	312 01 0 00 034301 		CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+   937						STOP^
+   938	030757	254 04 0 00 030760 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   939	030760	324 00 0 00 030761 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   940									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   941									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   942									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   943	030761	332 00 0 00 000002 		SKIPE	2		;PASS IF C(E)=0
+   944						STOP^
+   945	030762	254 04 0 00 030763 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   946	030763	324 00 0 00 030764 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   947									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   948									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   949									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   950
+   951					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 3
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0030
+
+   952					;THIS TEST VERIFIES THAT SETOI PLACES ALL ONES INTO THE AC.
+   953					;FIRST, THE AC AND E ARE CLEARED; THEN, SETOI IS EXECUTED.
+   954					;AC AND E ARE CHECKED FOR -1,,-1 AND 0 RESPECTIVELY
+   955
+   956	030764	403 01 0 00 000002 	C56300:	SETZB	1,2		;CLEAR AC,E
+   957	030765	475 01 0 00 000002 		SETOI	1,2		;*SETOI SHOULD PLACE -1,,-1 INTO THE AC
+   958	030766	312 01 0 00 034301 		CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+   959						STOP^
+   960	030767	254 04 0 00 030770 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   961	030770	324 00 0 00 030771 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   962									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   963									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   964									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   965	030771	332 00 0 00 000002 		SKIPE	2		;PASS IF C(E)=0
+   966						STOP^
+   967	030772	254 04 0 00 030773 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   968	030773	324 00 0 00 030774 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   969									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   970									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   971									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   972
+   973					;**********
+   974
+   975					;THIS TEST VERIFIES THAT SETOM PLACES ALL ONES INTO E
+   976					;FIRST, THE AC AND E ARE CLEARED, THEN SETOM IS EXECUTED.
+   977					;AC AND E ARE THEN CHECKED FOR 0 AND -1,,-1 RESPECTIVELY.
+   978
+   979	030774	403 01 0 00 000002 	C56400:	SETZB	1,2		;CLEAR AC,E
+   980	030775	476 01 0 00 000002 		SETOM	1,2		;*SETOM SHOULD PLACE -1,,-1 INTO E
+   981	030776	332 00 0 00 000001 		SKIPE	1		;PASS IF C(AC)=0
+   982						STOP^
+   983	030777	254 04 0 00 031000 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   984	031000	324 00 0 00 031001 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   985									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   986									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   987									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   988	031001	312 02 0 00 034301 		CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+   989						STOP^
+   990	031002	254 04 0 00 031003 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   991	031003	324 00 0 00 031004 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   992									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   993									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   994									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   995
+   996					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 4
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0031
+
+   997					;THIS TEST VERIFIES THAT SETOB PLACES ALL ONES INTO BOTH AC AND E.
+   998					;FIRST, BOTH AC AND E ARE CLEARED; THEN, SETOB IS EXECUTED.
+   999					;AC AND E ARE BOTH CHECKED FOR -1,,-1
+  1000
+  1001	031004	403 01 0 00 000002 	C56500:	SETZB	1,2		;CLEAR AC,E
+  1002	031005	477 01 0 00 000002 		SETOB	1,2		;*SETOB SHOULD PUT -1,,-1 INTO BOTH AC AND E
+  1003	031006	312 01 0 00 034301 		CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+  1004						STOP^
+  1005	031007	254 04 0 00 031010 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1006	031010	324 00 0 00 031011 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1007									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1008									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1009									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1010	031011	312 02 0 00 034301 		CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+  1011						STOP^
+  1012	031012	254 04 0 00 031013 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1013	031013	324 00 0 00 031014 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1014									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1015									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1016									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1017
+  1018					;**********
+  1019
+  1020					;THIS TEST VERIFIES THAT ANDI PLACES THE LOGICAL AND FUNCTION
+  1021					;OF C(AC) AND 0,,E INTO THE AC.
+  1022					;IN THIS CASE, C(AC)=777000,,707070 AND E=0,,123123.
+  1023					;HENCE, THE RESULT IN THE AC SHOULD BE 0,,103103
+  1024
+  1025	031014	200 01 0 00 034302 	C56600:	MOVE	1,[777000,,707070]	;PRELOAD AC WITH 777000,,707070
+  1026	031015	405 01 0 00 123123 		ANDI	1,123123	;*ANDI SHOULD PLACE 0,,103103 INTO THE AC
+  1027	031016	302 01 0 00 103020 		CAIE	1,103020	;PASS IF C(AC)=103103
+  1028						STOP^
+  1029	031017	254 04 0 00 031020 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1030	031020	324 00 0 00 031021 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1031									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1032									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1033									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1034
+  1035					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 5
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0032
+
+  1036					;THIS TEST VERIFIES THAT ANDM PLACES THE LOGICAL AND FUNCTION OF
+  1037					;C(AC) AND C(E) INTO E.
+  1038					;IN THIS CASE, C(AC)=777000,,000777 AND C(E)=123456,,123456.
+  1039					;HENCE, THE RESULTS IN AC AND E SHOULD BE 777000,,000777 AND
+  1040					;123000,,00456 RESPECTIVELY
+  1041
+  1042	031021	200 01 0 00 034303 	C56700:	MOVE	1,[777000,,777]	;PRELOAD E WITH 777000,,000777
+  1043	031022	200 02 0 00 034304 		MOVE	2,[123456,,123456]	;PRELOAD AC WITH 123456,,123456
+  1044	031023	406 02 0 00 000001 		ANDM	2,1		;*ANDM SHOULD PLACE 123000,,000456 INTO E
+  1045	031024	312 02 0 00 034304 		CAME	2,[123456,,123456]	;PASS IF C(AC) NOT MODIFIED
+  1046						STOP^
+  1047	031025	254 04 0 00 031026 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1048	031026	324 00 0 00 031027 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1049									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1050									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1051									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1052	031027	312 01 0 00 034305 		CAME	1,[123000,,000456]	;PASS IF C(E)=123000,,000456
+  1053						STOP^
+  1054	031030	254 04 0 00 031031 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1055	031031	324 00 0 00 031032 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1056									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1057									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1058									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1059
+  1060					;**********
+  1061
+  1062					;THIS TEST VERIFIES THAT ANDM PLACES THE LOGICAL AND FUNCTION OF
+  1063					;C(AC) AND C(E) INTO E.
+  1064					;IN THIS CASE, C(AC)=777000,,000777 AND C(E)=123456,,123456.
+  1065					;HENCE, THE RESULTS IN AC AND E SHOULD BE 777000,,000777 AND
+  1066					;123000,,00456 RESPECTIVELY
+  1067
+  1068	031032	200 01 0 00 034303 	C56701:	MOVE	1,[777000,,777]	;PRELOAD E WITH 777000,,000777
+  1069	031033	202 01 0 00 031046 		MOVEM	1,E56701
+  1070	031034	200 02 0 00 034304 		MOVE	2,[123456,,123456]	;PRELOAD AC WITH 123456,,123456
+  1071	031035	406 02 0 00 031046 		ANDM	2,E56701	;*ANDM SHOULD PLACE 123000,,000456 INTO E
+  1072	031036	312 02 0 00 034304 		CAME	2,[123456,,123456]	;PASS IF C(AC) NOT MODIFIED
+  1073						STOP^
+  1074	031037	254 04 0 00 031040 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1075	031040	324 00 0 00 031041 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1076									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1077									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1078									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1079	031041	200 01 0 00 031046 		MOVE	1,E56701
+  1080	031042	312 01 0 00 034305 		CAME	1,[123000,,000456]	;PASS IF C(E)=123000,,000456
+  1081						STOP^
+  1082	031043	254 04 0 00 031044 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1083	031044	324 00 0 00 031045 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1084									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1085									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1086									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1087
+  1088	031045	334 00 0 00 000000 		SKIPA				;GO TO NEXT TEST
+  1089	031046	000000	000000		E56701:	0				;TEST WORD MEMORY
+  1090
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 5-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0033
+
+  1091					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 6
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0034
+
+  1092					;THIS TEST VERIFIES THAT ANDCB PLACES THE LOGICAL AND FUNCTION OF
+  1093					;C(AC) AND C(E) INTO BOTH AC AND E
+  1094					;IN THIS CASE, C(AC)=-1,,0 AND C(E)=121212,,-1
+  1095					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 121212,,0,
+  1096
+  1097	031047	561 03 0 00 000000 	C57000:	HRROI	3,0		;PRELOAD AC WITH -1,,0
+  1098	031050	525 06 0 00 121212 		HRLOI	6,121212	;PRELOAD E WITH 121212,,-1
+  1099	031051	407 03 0 00 000006 		ANDB	3,6		;*ANDB SHOULD PLACE 121212,,0 INTO BOTH AC AND E
+  1100	031052	312 03 0 00 034306 		CAME	3,[121212,,0]	;PASS IF C(AC)=121212,,0
+  1101						STOP^
+  1102	031053	254 04 0 00 031054 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1103	031054	324 00 0 00 031055 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1104									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1105									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1106									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1107	031055	312 06 0 00 034306 		CAME	6,[121212,,0]	;PASS IF C(E)=121212,,0
+  1108						STOP^
+  1109	031056	254 04 0 00 031057 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1110	031057	324 00 0 00 031060 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1111									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1112									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1113									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1114
+  1115					;**********
+  1116
+  1117					;THIS TEST VERIFIES THAT ANDCB PLACES THE LOGICAL AND FUNCTION OF
+  1118					;C(AC) AND C(E) INTO BOTH AC AND E
+  1119					;IN THIS CASE, C(AC)=-1,,0 AND C(E)=121212,,-1
+  1120					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 121212,,0,
+  1121
+  1122	031060	561 03 0 00 000000 	C57001:	HRROI	3,0		;PRELOAD AC WITH -1,,0
+  1123	031061	525 06 0 00 121212 		HRLOI	6,121212	;PRELOAD E WITH 121212,,-1
+  1124	031062	202 06 0 00 031074 		MOVEM	6,E57001
+  1125	031063	407 03 0 00 031074 		ANDB	3,E57001	;*ANDB SHOULD PLACE 121212,,0 INTO BOTH AC AND E
+  1126	031064	312 03 0 00 034306 		CAME	3,[121212,,0]	;PASS IF C(AC)=121212,,0
+  1127						STOP^
+  1128	031065	254 04 0 00 031066 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1129	031066	324 00 0 00 031067 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1130									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1131									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1132									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1133	031067	200 06 0 00 031074 		MOVE	6,E57001
+  1134	031070	312 06 0 00 034306 		CAME	6,[121212,,0]	;PASS IF C(E)=121212,,0
+  1135						STOP^
+  1136	031071	254 04 0 00 031072 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1137	031072	324 00 0 00 031073 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1138									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1139									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1140									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1141
+  1142	031073	334 00 0 00 000000 		SKIPA			;GO TO NEXT TEST
+  1143	031074	000000	000000		E57001:	0			;TEST WORD MEMORY
+  1144
+  1145					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 7
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0035
+
+  1146					;THIS TEST VERIFIES THAT ANDCAI PLACES THE LOGICAL AND FUNCTION
+  1147					;OF THE WORD 0,E AND THE COMPLEMENT OF C(AC) INTO THE AC
+  1148					;IN THIS CASE, C(AC)=777,000,,707070 AND E=0,135246
+  1149					;HENCE, THE RESULT IN THE AC SHOULD BE 0,,030206
+  1150
+  1151	031075	200 05 0 00 034302 	C57100:	MOVE	5,[777000,,707070]	;PRELOAD AC WITH 777000,,707070
+  1152	031076	411 05 0 00 135246 		ANDCAI	5,135246	;*ANDCAI SHOULD PLACE 0,,30206 INTO THE AC
+  1153	031077	302 05 0 00 030206 		CAIE	5,030206	;PASS IF C(AC)=030206
+  1154						STOP^
+  1155	031100	254 04 0 00 031101 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1156	031101	324 00 0 00 031102 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1157									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1158									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1159									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1160
+  1161					;**********
+  1162
+  1163					;THIS TEST VERIFIES THAT ANDCAM PLACES THE LOGICAL AND FUNCTION OF
+  1164					;C(E) AND THE COMPLEMENT OF C(AC) INTO E.
+  1165					;IN THIS CASE, C(AC)=000767,,-1 AND C(E)=777350,,-2
+  1166					;HENCE, THE RESULTS IN AC AND E SHOULD BE 000767,,-1 AND
+  1167					;777010,,0 RESPECTIVELY.
+  1168
+  1169	031102	525 04 0 00 000767 	C57200:	HRLOI	4,767		;PRELOAD AC WITH 000767,,-1
+  1170	031103	200 06 0 00 034307 		MOVE	6,[777350,,-2]	;PRELOAD E WITH 777350,,-2
+  1171	031104	412 04 0 00 000006 		ANDCAM	4,6		;*ANDCAM SHOULD PLACE 777010,,0
+  1172									;INTO E
+  1173	031105	312 04 0 00 034310 		CAME	4,[767,,-1]	;PASS IF C(AC) IS UNCHANGED
+  1174						STOP^
+  1175	031106	254 04 0 00 031107 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1176	031107	324 00 0 00 031110 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1177									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1178									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1179									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1180	031110	312 06 0 00 034311 		CAME	6,[777010,,0]	;PASS IF C(E)=777010,,0
+  1181						STOP^
+  1182	031111	254 04 0 00 031112 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1183	031112	324 00 0 00 031113 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1184									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1185									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1186									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1187
+  1188					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 8
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0036
+
+  1189					;THIS TEST VERIFIES THAT ANDCAB PLACES THE LOGICAN AND FUNCTION OF
+  1190					;C(E) AND THE COMPLEMENT OF C(AC) INTO BOTH AC AND E.
+  1191					;IN THIS CASE, C(AC)=000777,,770077 AND C(E)=123456,246123
+  1192					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 123000,,006100
+  1193
+  1194	031113	200 01 0 00 034312 	C57300:	MOVE	1,[000777,,770077]	;PRELOAD AC WITH 000777,770077
+  1195	031114	200 02 0 00 034313 		MOVE	2,[123456,,246123]	;PRELOAD E WITH 123456,246123
+  1196	031115	413 01 0 00 000002 		ANDCAB	1,2		;*ANDCAB SHOULD PLACE 123000,006100
+  1197									;INTO BOTH AC AND E
+  1198	031116	312 01 0 00 034314 		CAME	1,[123000,,006100]	;PASS IF C(AC)=123000,006100
+  1199						STOP^
+  1200	031117	254 04 0 00 031120 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1201	031120	324 00 0 00 031121 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1202									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1203									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1204									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1205	031121	312 02 0 00 034314 		CAME	2,[123000,,006100]	;PASS IF C(E)=123000,006100
+  1206						STOP^
+  1207	031122	254 04 0 00 031123 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1208	031123	324 00 0 00 031124 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1209									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1210									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1211									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1212
+  1213					;**********
+  1214
+  1215					;THIS TEST VERIFIES THAT SETMI MOVES THE WORD 0,,E INTO THE AC
+  1216					;IN THIS CASE, C(AC)=-1,,-1 AND E=0,,123456.  HENCE, THE RESULT
+  1217					;IN THE AC SHOULD BE 0,,123456
+  1218
+  1219	031124	474 05 0 00 000000 	C57400:	SETO	5,		;PRELOAD AC WITH -1,,-1
+  1220	031125	415 05 0 00 123456 		SETMI	5,123456	;*SETMI SHOULD PLACE 0,,123456 INTO THE AC
+  1221	031126	302 05 0 00 123456 		CAIE	5,123456	;PASS IF C(AC)=0,123456
+  1222						STOP^
+  1223	031127	254 04 0 00 031130 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1224	031130	324 00 0 00 031131 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1225									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1226									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1227									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1228
+  1229					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 9
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0037
+
+  1230					;THIS TEST VERIFIES THAT SETMM IS A NO-OP.  HENCE, IT SHOULD
+  1231					;NOT MODIFY AC OR E.
+  1232					;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-1; AND NEITHER SHOULD NOT BE CHANGED
+  1233
+  1234	031131	400 16 0 00 000000 	C57500:	SETZ	16,		;CLEAR C(AC)
+  1235	031132	474 17 0 00 000000 		SETO	17,		;PRELOAD E WITH -1,,-1
+  1236	031133	416 16 0 00 000017 		SETMM	16,17		;*SETMM IS A NO-OP
+  1237	031134	332 00 0 00 000016 		SKIPE	16		;PASS IF C(AC) UNCHANGED
+  1238						STOP^
+  1239	031135	254 04 0 00 031136 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1240	031136	324 00 0 00 031137 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1241									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1242									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1243									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1244	031137	312 17 0 00 034301 		CAME	17,[-1]		;PASS IF C(E) UNCHANGED
+  1245						STOP^
+  1246	031140	254 04 0 00 031141 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1247	031141	324 00 0 00 031142 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1248									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1249									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1250									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1251
+  1252					;**********
+  1253
+  1254					;THIS TEST VERIFIES THAT SETMB PLACES C(E) INTO THE AC
+  1255					;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=100,,-200  HENCE, THE RESULT
+  1256					;IN BOTH AC AND E SHOULD BE 000100,,-200.
+  1257
+  1258	031142	474 00 0 00 000000 	C57600:	SETO	0,		;CLEAR AC
+  1259	031143	200 01 0 00 034315 		MOVE	1,[100,,-200]	;PRELOAD E WITH 100,,-200
+  1260	031144	417 00 0 00 000001 		SETMB	0,1		;*SETMB SHOULD PLACE 100,,-200 INTO THE AC
+  1261	031145	312 00 0 00 034315 		CAME	0,[100,,-200]	;PASS IF C(AC)=100,,-200
+  1262						STOP^
+  1263	031146	254 04 0 00 031147 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1264	031147	324 00 0 00 031150 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1265									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1266									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1267									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1268	031150	312 01 0 00 034315 		CAME	1,[100,,-200]	;PASS IF C(E)=100,,-200
+  1269						STOP^
+  1270	031151	254 04 0 00 031152 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1271	031152	324 00 0 00 031153 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1272									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1273									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1274									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1275
+  1276					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 10
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0038
+
+  1277					;THIS TEST VERIFIES THAT ANDCMI PLACES THE LOGICAL AND FUNCTION
+  1278					;OF C(AC) AND THE COMPLEMENT OF THE WORD 0,,E INTO THE AC.
+  1279					;IN THIS CASE, C(AC)=123456,,246135 AND E=0,,717273.
+  1280					;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,040104.
+  1281
+  1282	031153	200 15 0 00 034316 	C57700:	MOVE	15,[123456,,246135]	;PRELOAD AC WITH 123456,,246135
+  1283	031154	421 15 0 00 717273 		ANDCMI	15,717273	;*ANDCMI SHOULD PLACE 123456,,040104
+  1284									;INTO THE AC
+  1285	031155	312 15 0 00 034317 		CAME	15,[123456,,040104]	;PASS IF C(AC)=123456,,040104
+  1286						STOP^
+  1287	031156	254 04 0 00 031157 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1288	031157	324 00 0 00 031160 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1289									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1290									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1291									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1292
+  1293					;**********
+  1294
+  1295					;THIS TEST VERIFIES THAT ANDCMM PLACES THE LOGICAL AND FUNCTION OF
+  1296					;C(AC) AND THE COMPLEMENT OF C(E) INTO E.
+  1297					;IN THIS CASE,C(AC)=12321,,456654 AND C(E)= 770077,,007770
+  1298					;HENCE, THE RESULT IN E SHOULD BE 003300,,450004
+  1299
+  1300	031160	200 14 0 00 034320 	C60000:	MOVE	14,[123321,,456654]	;PRELOAD AC WITH 123321,,456654
+  1301	031161	200 15 0 00 034321 		MOVE	15,[770077,,007770]	;PRELOAD E WITH 77007770
+  1302	031162	422 14 0 00 000015 		ANDCMM	14,15			;*ANDCMM SHOULD PLACE 003300,,450004 INTO THE AC
+  1303	031163	312 14 0 00 034320 		CAME	14,[123321,,456654]	;PASS IF C(AC) UNCHANGED
+  1304						STOP^
+  1305	031164	254 04 0 00 031165 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1306	031165	324 00 0 00 031166 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1307									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1308									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1309									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1310	031166	312 15 0 00 034322 		CAME	15,[3300,,450004]	;PASS IF C(E) = 003300,,450004
+  1311						STOP^
+  1312	031167	254 04 0 00 031170 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1313	031170	324 00 0 00 031171 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1314									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1315									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1316									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1317
+  1318					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 11
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0039
+
+  1319					;THIS TEST VERIFIES THAT ANDCMB PLACES THE LOGICAL AND FUNCTION OF
+  1320					;C(AC) AND THE COMPLEMENT OF C(E) INTO BOTH AC AND E.
+  1321					;IN THIS CASE, C(AC)123456,,663322 AND C(E) = 777000,,700770
+  1322					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 000456,,063002
+  1323
+  1324	031171	200 13 0 00 034323 	C60100:	MOVE	13,[123456,,663322]	;PRELOAD AC WITH 123456,,663322
+  1325	031172	200 14 0 00 034324 		MOVE	14,[777000,,700770]	;PRELOAD E WITH 777000,,700770
+  1326	031173	423 13 0 00 000014 		ANDCMB	13,14			;*ANDCMB SHOULD PLACE 000456,,063002
+  1327										;INTO BOTH AC AND E
+  1328	031174	312 13 0 00 034325 		CAME	13,[456,,63002]		;PASS IF C(AC)=000456,,063002
+  1329						STOP^
+  1330	031175	254 04 0 00 031176 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1331	031176	324 00 0 00 031177 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1332									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1333									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1334									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1335	031177	312 14 0 00 034325 		CAME	14,[456,,63002]		;PASS IF C(E)=000456,,063002
+  1336						STOP^
+  1337	031200	254 04 0 00 031201 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1338	031201	324 00 0 00 031202 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1339									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1340									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1341									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1342
+  1343					;**********
+  1344
+  1345
+  1346					;THIS TEST VERIFIES THAT SETA IS A NO-OP. IT AFFECTS NEITHER
+  1347					;AC OR E. IN THIS CASE, C(AC)=123456,,777776 AND C(E)=010203,,123450.
+  1348					;SETA SHOULD NOT MODIFY C(AC) OR C(E)
+  1349
+  1350	031202	200 12 0 00 034326 	C60200:	MOVE	12,[123456,,777776]	;PRELOAD AC WITH 123456,,-2
+  1351	031203	200 13 0 00 034327 		MOVE	13,[010203,,123450]	;PRELOAD E WITH 010203,,123450
+  1352	031204	424 12 0 00 000013 		SETA	12,13			;*SETA IS A NO-OP
+  1353	031205	312 12 0 00 034326 		CAME	12,[123456,,-2]		;PASS IF C(AC) UNCHANGED
+  1354						STOP^
+  1355	031206	254 04 0 00 031207 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1356	031207	324 00 0 00 031210 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1357									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1358									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1359									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1360	031210	312 13 0 00 034327 		CAME	13,[010203,,123450]	;PASS IF C(E) UNCHANGED
+  1361						STOP^
+  1362	031211	254 04 0 00 031212 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1363	031212	324 00 0 00 031213 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1364									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1365									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1366									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1367
+  1368					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 12
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0040
+
+  1369					;THIS TEST VERIFIES THAT SETAI IS A NO-OP. IT DOES NOT AFFECT THE AC.
+  1370					;IN THIS CASE, C(AC)=123456,,777776 AND E=0,,123450
+  1371					;SETA SHOULD NOT MODIFY C(AC)
+  1372
+  1373	031213	200 12 0 00 034326 	C60300:	MOVE 12,[123456,,777776]	;PRELOAD AC WITH 123456,,-2
+  1374	031214	425 12 0 00 123450 		SETAI	12,123450		;*SETAI IS A NO-OP
+  1375	031215	312 12 0 00 034326 		CAME	12,[123456,,-2]		;PASS IF C(AC) UNCHANGED
+  1376						STOP^
+  1377	031216	254 04 0 00 031217 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1378	031217	324 00 0 00 031220 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1379									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1380									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1381									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1382
+  1383					;**********
+  1384
+  1385					;THIS TEST VERIFIES THAT SETAM PLACES C(AC) INTO E.
+  1386					;IN THIS CASE, C(AC)=123456,,0 AND C(E)=-1,,-1.  HENCE, THE
+  1387					;RESULT IN E SHOULD BE 123456,,0
+  1388
+  1389	031220	515 11 0 00 123456 	C60400:	HRLZI	11,123456		;PRELOAD AC WITH 123456,,0
+  1390	031221	474 12 0 00 000000 		SETO	12,			;PRELOAD E WITH -1,,-1
+  1391	031222	426 11 0 00 000012 		SETAM	11,12			;SETAM SHOULD PLACE 123456,,0 INTO E
+  1392	031223	312 11 0 00 034330 		CAME	11,[123456,,0]		;PASS IF C(AC) UNCHANGED
+  1393						STOP^
+  1394	031224	254 04 0 00 031225 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1395	031225	324 00 0 00 031226 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1396									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1397									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1398									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1399	031226	312 12 0 00 034330 		CAME	12,[123456,,0]		;PASS IF C(E)=123456,,0
+  1400						STOP^
+  1401	031227	254 04 0 00 031230 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1402	031230	324 00 0 00 031231 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1403									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1404									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1405									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1406
+  1407					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 13
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0041
+
+  1408					;THIS TEST VERIFIES THAT XORI PLACES THE LOGICAL EXCLUSIVE OR FUNCTION
+  1409					;OF C(AC) AND THE WORD 0,,E INTO THE AC.
+  1410					;IN THIS CASE, C(AC)=000777,,123456 AND E=0,,434431
+  1411					;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,517067.
+  1412
+  1413	031231	200 10 0 00 034331 	C60500:	MOVE	10,[777,,123456]	;PRELOAD AC WITH 000777,,123456
+  1414	031232	431 10 0 00 434431 		XORI	10,434431		;*XORI SHOULD PLACE 000777,,517067 INTO THE AC
+  1415	031233	312 10 0 00 034332 		CAME	10,[777,,517067]	;PASS IF C(AC)=000777,,517067
+  1416						STOP^
+  1417	031234	254 04 0 00 031235 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1418	031235	324 00 0 00 031236 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1419									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1420									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1421									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1422
+  1423					;**********
+  1424
+  1425					;THIS TEST VERIFIES THAT XORB PLACES THE LOGICAL EXCLUSIVE OR FUNCTION
+  1426					;OF C(AC) AND C(E) INTO BOTH AC AND E.
+  1427					;IN THIS CASE, C(AC)=707077,,555666 AND C(E)=123456,,765432
+  1428					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 624421,,230254
+  1429
+  1430	031236	200 07 0 00 034333 	C60600:	MOVE	7,[707077,,555666]	;PRELOAD AC WITH 707077,,555666
+  1431	031237	200 10 0 00 034334 		MOVE	10,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+  1432	031240	433 07 0 00 000010 		XORB	7,10			;*XORB SHOULD PLACE 624421,,230254
+  1433										;INTO BOTH AC AND E
+  1434	031241	312 07 0 00 034335 		CAME	7,[624421,,230254]	;PASS IF C(AC)=624421,,230254
+  1435						STOP^
+  1436	031242	254 04 0 00 031243 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1437	031243	324 00 0 00 031244 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1438									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1439									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1440									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1441	031244	312 10 0 00 034335 		CAME	10,[624421,,230254]	;PASS IF C(E)=624421,,230254
+  1442						STOP^
+  1443	031245	254 04 0 00 031246 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1444	031246	324 00 0 00 031247 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1445									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1446									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1447									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1448
+  1449					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 14
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0042
+
+  1450					;THIS TEST VERIFIES THAT IORI PLACES THE INCLUSIVE OR FUNCTION
+  1451					;OF C(AC) AND THE WORD 0,,E INTO THE AC.
+  1452					;IN THIS CASE, C(AC)=707070,,123456 AND E=0,,765567
+  1453					;HENCE, THE RESULT IN THE AC SHOULD BE 707070,,767577
+  1454
+  1455	031247	200 06 0 00 034336 	C60700:	MOVE	6,[707070,,123456]  ;PRELOAD AC WITH 707070,,123456
+  1456	031250	435 06 0 00 765567 		IORI	6,765567	;*IORI SHOULD PLACE 707070,,767577 INTO THE AC
+  1457	031251	312 06 0 00 034337 		CAME	6,[707070,,767577]  ;PASS IF C(AC)=707070,,767577
+  1458						STOP^
+  1459	031252	254 04 0 00 031253 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1460	031253	324 00 0 00 031254 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1461									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1462									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1463									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1464
+  1465					;**********
+  1466
+  1467					;THIS TEST VERIFIES THAT IORM PLACES THE INCLUSIVE OR FUNCTION
+  1468					;OF C(AC) AND C(E) INTO E.
+  1469					;IN THIS CASE, C(AC)=123456,,777666 AND C(E)=777001,,123470
+  1470					;HENCE, THE RESULT IN E SHOULD BE 777457,,777676
+  1471
+  1472	031254	200 05 0 00 034340 	C61000:	MOVE	5,[123456,,777666]  ;PRELOAD AC WITH 123456,777666
+  1473	031255	200 06 0 00 034341 		MOVE	6,[777001,,123470]  ;PRELOAD E WITH 777001,,123470
+  1474	031256	436 05 0 00 000006 		IORM	5,6		;*IORM SHOULD PLACE
+  1475									;777457,777676 INTO E
+  1476	031257	312 05 0 00 034340 		CAME	5,[123456,,777666]  ;PASS IF C(AC) UNMODIFIED
+  1477						STOP^
+  1478	031260	254 04 0 00 031261 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1479	031261	324 00 0 00 031262 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1480									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1481									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1482									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1483	031262	312 06 0 00 034342 		CAME	6,[777457,,777676] ;PASS IF C(E)=777457,777676
+  1484						STOP^
+  1485	031263	254 04 0 00 031264 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1486	031264	324 00 0 00 031265 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1487									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1488									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1489									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1490
+  1491					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 15
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0043
+
+  1492					;THIS TEST VERIFIES THAT IORB PLACES THE INCLUSIVE OR FUNCTION
+  1493					;OF C(AC) AND C(E) INTO E.
+  1494					;IN THIS CASE, C(AC)=123456,,777666 AND C(E)=777001,,123470
+  1495					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 777457,,777676
+  1496
+  1497	031265	200 05 0 00 034340 	C61100:	MOVE	5,[123456,,777666]  ;PRELOAD AC WITH 123456,777666
+  1498	031266	200 06 0 00 034341 		MOVE	6,[777001,,123470]  ;PRELOAD E WITH 777001,,123470
+  1499	031267	437 05 0 00 000006 		IORB	5,6		;*IORB SHOULD PLACE
+  1500									;777457,,777676 INTO
+  1501	031270	312 05 0 00 034342 		CAME	5,[777457,,777676]  ;PASS IF C(AC)=777457,,777676
+  1502						STOP^
+  1503	031271	254 04 0 00 031272 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1504	031272	324 00 0 00 031273 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1505									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1506									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1507									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1508	031273	312 06 0 00 034342 		CAME	6,[777457,,777676]  ;PASS IF C(E)=777457,,777676
+  1509						STOP^
+  1510	031274	254 04 0 00 031275 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1511	031275	324 00 0 00 031276 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1512									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1513									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1514									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1515
+  1516					;**********
+  1517
+  1518					;THIS TEST VERIFIES THAT ANDCBI PLACES THE LOGICAL AND FUNCTION
+  1519					;OF THE COMPLEMENTS OF BOTH C(AC) AND THE WORD 0,,E INTO THE AC
+  1520					;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,706050.
+  1521					;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,050321.
+  1522
+  1523	031276	200 04 0 00 034343 	C61200:	MOVE	4,[777000,,123456]  ;PRELOAD AC WITH 777000,,123456
+  1524	031277	441 04 0 00 706050 		ANDCBI	4,706050	;*ANDCBI SHOULD PLACE 000777,,050321
+  1525									;INTO THE AC
+  1526	031300	312 04 0 00 034344 		CAME	4,[777,,50321]	;PASS IF C(AC)=000777,,050321
+  1527						STOP^
+  1528	031301	254 04 0 00 031302 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1529	031302	324 00 0 00 031303 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1530									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1531									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1532									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1533
+  1534					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 16
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0044
+
+  1535					;THIS TEST VERIFIES THAT ANDCBM PLACES THE LOGICAL AND FUNCTION
+  1536					;OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO
+  1537					;IN THE CASE, C(AC)=777007,,771100 AND C(E)=063202,,123477
+  1538					;HENCE, THE RESULT IN E SHOULD BE 000570,,004200
+  1539
+  1540	031303	200 03 0 00 034345 	C61300:	MOVE	3,[777007,,771100]  ;PRELOAD AC WITH 777007,,771100
+  1541	031304	200 04 0 00 034346 		MOVE	4,[63202,,123477]   ;PRELOAD E WITH 063202,,123477
+  1542	031305	442 03 0 00 000004 		ANDCBM	3,4		;*ANDCBM SHOULD PLACE
+  1543									;000570,,004200 INTO E.
+  1544	031306	312 03 0 00 034345 		CAME	3,[777007,,771100] ;PASS IF C(AC) IS UNCHANGED
+  1545						STOP^
+  1546	031307	254 04 0 00 031310 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1547	031310	324 00 0 00 031311 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1548									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1549									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1550									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1551	031311	312 04 0 00 034347 		CAME	4,[570,,4200]	;PASS IF C(E)=000570,,004200
+  1552						STOP^
+  1553	031312	254 04 0 00 031313 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1554	031313	324 00 0 00 031314 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1555									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1556									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1557									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1558
+  1559					;**********
+  1560
+  1561					;THIS TEST VERIFIES THAT ANDCBB PLACES THE LOGICAL AND FUNCTION
+  1562					;OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO BOTH AC AND E
+  1563					;IN THIS CASE, C(AC)=777007,,771100 AND C(E)=063202,,123477
+  1564					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 000570,,004200
+  1565
+  1566	031314	200 03 0 00 034345 	C61400:	MOVE	3,[777007,,771100]  ;PRELOAD WITH 777007,,771100
+  1567	031315	200 04 0 00 034346 		MOVE	4,[63202,,123477]   ;PRELOAD E WITH 063202,,123477
+  1568	031316	443 03 0 00 000004 		ANDCBB	3,4		;*ANDCBB SHOULD PLACE
+  1569									;000570,,004200 INTO BOTH AC AND E
+  1570	031317	312 03 0 00 034347 		CAME	3,[570,,4200]	;PASS IF C(AC)=000570,,004200
+  1571						STOP^
+  1572	031320	254 04 0 00 031321 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1573	031321	324 00 0 00 031322 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1574									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1575									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1576									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1577	031322	312 04 0 00 034347 		CAME	4,[570,,4200]	;PASS IF C(E)=000570,,004200
+  1578						STOP^
+  1579	031323	254 04 0 00 031324 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1580	031324	324 00 0 00 031325 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1581									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1582									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1583									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1584
+  1585					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 17
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0045
+
+  1586					;THIS TEST VERIFIES THAT EQVI PLACES THE LOGICAL EQUIVALENCE FUNCTION
+  1587					;OF C(AC) AND THE WORD 0,,E INTO THE AC
+  1588					;IN THIS CASE, C(AC)=707070,,123426 AND E=0,,123363
+  1589					;HENCE, THE RESULT IN THE AC SHOULD BE 070707,,777032
+  1590
+  1591	031325	200 02 0 00 034350 	C61500:	MOVE	2,[707070,,123426]  ;PRELOAD AC WITH 707070,,123426
+  1592	031326	445 02 0 00 123363 		EQVI	2,123363	;*EQVI SHOULD PLACE
+  1593									;070707,,777032 INTO THE AC
+  1594	031327	312 02 0 00 034351 		CAME	2,[70707,,777032]  ;PASS IF C(AC)=070707,,777032
+  1595						STOP^
+  1596	031330	254 04 0 00 031331 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1597	031331	324 00 0 00 031332 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1598									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1599									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1600									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1601
+  1602					;**********
+  1603
+  1604					;THIS TEST VERIFIES THAT EQVM PLACES THE LOGICAL EQUIVALENCE FUNCTION
+  1605					;OF C(AC) AND C(E) INTO E.
+  1606					;IN THIS CASE, C(AC)= 123456,,123457 AND C(E) = 707633,,121212
+  1607					;HENCE, THE RESULT IN E SHOULD BE 153512,,775132
+  1608
+  1609	031332	200 01 0 00 034352 	C61600:	MOVE	1,[123456,,123457] ;PRELOAD AC WITH 123456,,123457
+  1610	031333	200 02 0 00 034353 		MOVE	2,[707633,,121212] ;PRELOAD AC WITH 707633,,121212
+  1611	031334	446 01 0 00 000002 		EQVM	1,2		;*EQVM SHOULD PLACE 153512,,775132 INTO	E.
+  1612	031335	312 01 0 00 034352 		CAME	1,[123456,,123457] ;PASS IF C(AC) UNCHANGED
+  1613						STOP^
+  1614	031336	254 04 0 00 031337 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1615	031337	324 00 0 00 031340 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1616									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1617									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1618									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1619	031340	312 02 0 00 034354 		CAME	2,[153512,,775132];PASS IF C(E) = 153512,,775132
+  1620						STOP^
+  1621	031341	254 04 0 00 031342 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1622	031342	324 00 0 00 031343 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1623									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1624									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1625									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1626
+  1627					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 18
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0046
+
+  1628					;THIS TEST VERIFIES THAT EQVB PLACES THE LOGICAL EQUIVALENCE FUNCTION
+  1629					;OF C(AC)AND C(E) INTO BOTH AC AND  E.
+  1630					;IN THIS CASE, C(AC) = 123456,,123457 AND C(E) = 707633,,121212
+  1631					;HENSE, THE RSULT IN BOTH AC AND 	E SHOULD BE 153512,,775132
+  1632
+  1633	031343	200 01 0 00 034352 	C61700:	MOVE	1,[123456,,123457]	;PRELOAD AC WITH 123456,,12345
+  1634	031344	200 02 0 00 034353 		MOVE	2,[707633,,121212]	;PRELOAD AC WITH 707633,,121212
+  1635	031345	447 01 0 00 000002 		EQVB	1,2			;*EQVB SHOULD PLACE 153512,,775132
+  1636										;INTO BOTHE AC AND E.
+  1637	031346	312 01 0 00 034354 		CAME	1,[153512,,775132]	;PASS IC C(AC)=153512,,775132
+  1638						STOP^
+  1639	031347	254 04 0 00 031350 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1640	031350	324 00 0 00 031351 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1641									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1642									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1643									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1644	031351	312 02 0 00 034354 		CAME	2,[153512,,775132]	;PASS IF C(E)=153512,,775132
+  1645						STOP^
+  1646	031352	254 04 0 00 031353 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1647	031353	324 00 0 00 031354 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1648									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1649									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1650									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1651
+  1652					;**********
+  1653
+  1654					;THIS TEST VERIFIES THAT SETCAI PLACES THE COMPLEMENT OF C(AC)
+  1655					;INTO THE AC.
+  1656					;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,707070
+  1657					;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,654321
+  1658
+  1659	031354	200 00 0 00 034343 	C62000:	MOVE	0,[777000,,123456]	;PRELOAD AC WITH 777000,,123456
+  1660	031355	451 00 0 00 707070 		SETCAI	0,707070		;*SETCAI SHOULD PLACE 000777,,654321
+  1661										;INTO THE AC
+  1662	031356	312 00 0 00 034355 		CAME	0,[777,,654321]	;PASS IF C(AC)=000777,,654321
+  1663						STOP^
+  1664	031357	254 04 0 00 031360 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1665	031360	324 00 0 00 031361 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1666									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1667									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1668									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1669
+  1670					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 19
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0047
+
+  1671					;THIS TEST VERIFIES THAT SETCAM PLACES THE COMPLEMENT OF C(AC)
+  1672					;INTO E.
+  1673					;IN THIS CASE, C(AC)=123456,,765432 AND C(E)=-1,,-1.
+  1674					;HENCE, THE RESULT IN E SHOULD BE 654321,,012345
+  1675
+  1676	031361	200 17 0 00 034334 	C62100:	MOVE	17,[123456,,765432]	;PRELOAD AC WITH 123456,,765432
+  1677	031362	474 00 0 00 000000 		SETO	0,			;PRELOAD E WITH -1,,-1
+  1678	031363	452 17 0 00 000000 		SETCAM	17,0			;*SETCAM SHOULD PLACE
+  1679										;654321,,012345 INTO E
+  1680	031364	312 17 0 00 034334 		CAME	17,[123456,,765432]	;PASS IF C(AC) IS UNCHANGED
+  1681						STOP^
+  1682	031365	254 04 0 00 031366 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1683	031366	324 00 0 00 031367 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1684									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1685									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1686									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1687	031367	312 00 0 00 034356 		CAME	0,[654321,,12345]	;PASS IF C(E)=654321,,012345
+  1688						STOP^
+  1689	031370	254 04 0 00 031371 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1690	031371	324 00 0 00 031372 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1691									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1692									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1693									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1694
+  1695					;**********
+  1696
+  1697					;THIS TEST VERIFIES THAT SETCAB PLACES THE COMPLEMENT OF C(AC)
+  1698					;INTO BOTH AC AND E.
+  1699					;IN THIS CASE, C(AC)=123456,,765432 AND C(E)=-1,,-1.
+  1700					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 654321,,012345
+  1701
+  1702	031372	200 17 0 00 034334 	C62200:	MOVE	17,[123456,,765432]	;PRELOAD AC WITH 123456,,76543
+  1703	031373	474 00 0 00 000000 		SETO	0,			;PRELOAD E WITH -1,,-1
+  1704	031374	453 17 0 00 000000 		SETCAB	17,0			;*SETCAB SHOULD PLACE
+  1705										;654321,,012345 INTO BOTH AC AND E
+  1706	031375	312 17 0 00 034356 		CAME	17,[654321,,12345]	;PASS IF C(AC)=654321,,012345
+  1707						STOP^
+  1708	031376	254 04 0 00 031377 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1709	031377	324 00 0 00 031400 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1710									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1711									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1712									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1713	031400	312 00 0 00 034356 		CAME	0,[654321,,12345]	;PASS IF C(E)=654321,,012345
+  1714						STOP^
+  1715	031401	254 04 0 00 031402 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1716	031402	324 00 0 00 031403 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1717									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1718									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1719									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1720
+  1721					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 20
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0048
+
+  1722					;THIS TEST VERIFIES THAT ORCAI PLACES THE INCLUSIVE OR FUNCTION
+  1723					;OF THE WORD 0,,E AND THE COMPLEMENT OF C(AC) INTO THE AC.
+  1724					;IN THIS CASE, C(AC)=777000,,123477 AND E=0,,765401
+  1725					;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,775701
+  1726
+  1727	031403	200 16 0 00 034357 	C62300:	MOVE	16,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+  1728	031404	455 16 0 00 765401 		ORCAI	16,765401		;*ORCAI SHOULD PLACE 000777,,767477
+  1729										;INTO THE AC
+  1730	031405	312 16 0 00 034360 		CAME	16,[777,,775701]	;PASS IF C(AC)=000777,,775701
+  1731						STOP^
+  1732	031406	254 04 0 00 031407 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1733	031407	324 00 0 00 031410 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1734									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1735									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1736									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1737
+  1738					;**********
+  1739
+  1740					;THIS TEST VERIFIES THAT ORCAM PLACES THE INCLUSIVE OR FUNCTION
+  1741					;OF C(E) AND THE COMPLEMENT OF C(AC) INTO
+  1742					;IN THIS CASE, C(AC)=777000,,123477 AND C(E)=707070,,707072
+  1743					;HENCE, THE RESULT IN E SHOULD BE 707777,,757372
+  1744
+  1745	031410	200 15 0 00 034357 	C62400:	MOVE	15,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+  1746	031411	200 16 0 00 034361 		MOVE	16,[707070,,707072]	;PRELOAD E WITH 707070,,707072
+  1747	031412	456 15 0 00 000016 		ORCAM	15,16			;*ORCAM SHOULD PLACE 707777,,757372
+  1748										;INTO E
+  1749	031413	312 15 0 00 034357 		CAME	15,[777000,,123477]	;PASS IF C(AC) IS UNCHANGED
+  1750						STOP^
+  1751	031414	254 04 0 00 031415 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1752	031415	324 00 0 00 031416 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1753									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1754									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1755									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1756	031416	312 16 0 00 034362 		CAME	16,[707777,,757372]	;PASS IF C(E)=707777,,757372
+  1757						STOP^
+  1758	031417	254 04 0 00 031420 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1759	031420	324 00 0 00 031421 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1760									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1761									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1762									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1763
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 21
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0049
+
+  1764					;**********
+  1765					;THIS TEST VERIFIES THAT ORCAB PLACES THE INCLUSIVE OR FUNCTION
+  1766					;OF C(E) AND THE COMPLEMENT OF C(AC) INTO BOTH AC AND E.
+  1767					;IN THIS CASE, C(AC)=777000,,123477 AND C(E)=707070,,707072
+  1768					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 707777,,757372
+  1769
+  1770	031421	200 15 0 00 034357 	C62500:	MOVE	15,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+  1771	031422	200 16 0 00 034361 		MOVE	16,[707070,,707072]	;PRELOAD E WITH 707070,,707072
+  1772	031423	457 15 0 00 000016 		ORCAB	15,16			;*ORCAB SHOULD PLACE 707777,,757372
+  1773										;INTO BOTHE AC AND E
+  1774	031424	312 15 0 00 034362 		CAME	15,[707777,,757372]	;PASS IF C(AC)=707777,,757372
+  1775						STOP^
+  1776	031425	254 04 0 00 031426 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1777	031426	324 00 0 00 031427 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1778									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1779									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1780									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1781	031427	312 16 0 00 034362 		CAME	16,[707777,,757372]	;PASS IF C(E)=707777,,757372
+  1782						STOP^
+  1783	031430	254 04 0 00 031431 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1784	031431	324 00 0 00 031432 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1785									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1786									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1787									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1788
+  1789					;**********
+  1790
+  1791					;THIS TEST VERIFIES THAT SETCMI PLACES THE COMPLEMENT OF THE
+  1792					;WORD 0,,E INTO THE AC
+  1793					;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,707070
+  1794					;HENCE, THE RESULT IN THE AC SHOULD BE -1,,070707
+  1795
+  1796	031432	200 00 0 00 034343 	C62600:	MOVE	0,[777000,,123456]	;PRELOAD AC WITH 777000,,123456
+  1797	031433	461 00 0 00 707070 		SETCMI	0,707070		;*SETCMI SHOULD PLACE -1,,070707
+  1798										;INTO THE AC
+  1799	031434	312 00 0 00 034363 		CAME	0,[-1,,070707]		;PASS IF C(AC)=-1,,070707
+  1800						STOP^
+  1801	031435	254 04 0 00 031436 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1802	031436	324 00 0 00 031437 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1803									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1804									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1805									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1806
+  1807					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 22
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0050
+
+  1808					;THIS TEST VERIFIES THAT SETCMM PLACES THE COMPLEMENT OF C(E)
+  1809					;INTO E.
+  1810					;IN THIS CASE, C(E)=123456,,765432 AND C(AC)=-1,,-1.
+  1811					;HENCE, THE RESULT IN E SHOULD BE 654321,,012345
+  1812
+  1813	031437	200 17 0 00 034334 	C62700:	MOVE	17,[123456,,765432]	;PRELOAD E WITH 123456,,76543
+  1814	031440	474 00 0 00 000000 		SETO	0,			;PRELOAD AC WITH -1,,-1
+  1815	031441	462 00 0 00 000017 		SETCMM	0,17			;*SETCMM SHOULD PLACE
+  1816										;654321,012345 INTO E
+  1817	031442	312 00 0 00 034301 		CAME	0,[-1]			;PASS IF C(AC) UNCHANGED
+  1818						STOP^
+  1819	031443	254 04 0 00 031444 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1820	031444	324 00 0 00 031445 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1821									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1822									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1823									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1824	031445	312 17 0 00 034356 		CAME	17,[654321,,12345]	;PASS IF C(E)=654321,,012345
+  1825						STOP^
+  1826	031446	254 04 0 00 031447 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1827	031447	324 00 0 00 031450 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1828									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1829									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1830									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1831
+  1832					;**********
+  1833
+  1834					;THIS TEST VERIFIES THAT SETCMB PLACES THE COMPLEMENT OF C(E)
+  1835					;INTO BOTH AC AND E.
+  1836					;IN THIS CASE, C(E)=123456,,765432 AND C(AC)=-1,,-1.
+  1837					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 654321,,012345
+  1838
+  1839	031450	200 17 0 00 034334 	C63000:	MOVE	17,[123456,,765432]	;PRELOAD E WITH 123456,,76543
+  1840	031451	474 00 0 00 000000 		SETO	0,			;PRELOAD AC WITH -1,,-1
+  1841	031452	463 00 0 00 000017 		SETCMB	0,17			;*SETCMB SHOULD PLACE
+  1842										;654321,,012345 INTO BOTH AC AND E
+  1843	031453	312 00 0 00 034356 		CAME	0,[654321,,12345]	;PASS IF C(AC)=654321,,012345
+  1844						STOP^
+  1845	031454	254 04 0 00 031455 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1846	031455	324 00 0 00 031456 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1847									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1848									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1849									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1850	031456	312 17 0 00 034356 		CAME	17,[654321,,12345]	;PASS IF C(E)=654321,,012345
+  1851						STOP^
+  1852	031457	254 04 0 00 031460 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1853	031460	324 00 0 00 031461 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1854									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1855									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1856									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1857
+  1858					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 23
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0051
+
+  1859					;THIS TEST VERIFIES THAT ORCMI PLACES THE INCLUSIVE OR FUNCTION
+  1860					;OF C(AC) AND THE COMPLEMENT OF THE WORD 0,,E INTO THE AC.
+  1861					;IN THIS CASE, C(AC)=777000,,123477 AND E=0,,765401
+  1862					;HENCE, THE RESULT IN THE AC SHOULD BE -1,,133777
+  1863
+  1864	031461	200 16 0 00 034357 	C63100:	MOVE	16,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+  1865	031462	465 16 0 00 765401 		ORCMI	16,765401		;*ORCMI SHOULD PLACE -1,,133777
+  1866										;INTO THE AC
+  1867	031463	312 16 0 00 034364 		CAME	16,[-1,,133777]		;PASS IF C(AC)=-1,,133777
+  1868						STOP^
+  1869	031464	254 04 0 00 031465 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1870	031465	324 00 0 00 031466 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1871									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1872									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1873									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1874
+  1875					;**********
+  1876
+  1877					;THIS TEST VERIFIES THAT ORCMM PLACES THE INCLUSIVE OR FUNCTION
+  1878					;OF C(AC) AND THE COMPLEMENT OC C(E) INTO
+  1879					;IN THIS CASE, C(E)=777000,,123477 AND C (AC)=707070,,707072
+  1880					;HENCE, THE RESULT IN E SHOULD BE 707777,,757372
+  1881
+  1882	031466	200 15 0 00 034357 	C63200:	MOVE	15,[777000,,123477]	;PRELOAD E WITH 777000,,123477
+  1883	031467	200 16 0 00 034361 		MOVE	16,[707070,,707072]	;PRELOAD AC WITH 707070,,707072
+  1884	031470	466 16 0 00 000015 		ORCMM	16,15			;*ORCMM SHOULD PLACE 707777,,757372
+  1885										;INTO E
+  1886	031471	312 16 0 00 034361 		CAME	16,[707070,,707072]	;PASS IF C(AC) IS UNCHANGED
+  1887						STOP^
+  1888	031472	254 04 0 00 031473 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1889	031473	324 00 0 00 031474 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1890									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1891									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1892									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1893	031474	312 15 0 00 034362 		CAME	15,[707777,,757372]	;PASS IF C(E)=707777,,757372
+  1894						STOP^
+  1895	031475	254 04 0 00 031476 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1896	031476	324 00 0 00 031477 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1897									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1898									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1899									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1900
+  1901					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 24
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0052
+
+  1902					;THIS TEST VERIFIES THAT ORCMB PLACES THE INCLUSIVE OR FUNCTION
+  1903					;OF C(AC) AND THE COMPLEMENT OF C(E) INTO BOTH AC AND E.
+  1904					;IN THIS CASE, C(E)=777000,,123477 AND C(AC)=707070,,707072
+  1905					;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 707777,,757372
+  1906
+  1907	031477	200 15 0 00 034357 	C63300:	MOVE	15,[777000,,123477]  ;PRELOAD E WITH 777000,,123477
+  1908	031500	200 16 0 00 034361 		MOVE	16,[707070,,707072]  ;PRELOAD AC WITH 707070,,707072
+  1909	031501	467 16 0 00 000015 		ORCMB	16,15		;*ORCMB SHOULD PLACE 707777,,757372
+  1910									;INTO BOTH AC AND E
+  1911	031502	312 16 0 00 034362 		CAME	16,[707777,,757372]  ;PASS IF C(AC)=707777,,757372
+  1912						STOP^
+  1913	031503	254 04 0 00 031504 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1914	031504	324 00 0 00 031505 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1915									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1916									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1917									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1918	031505	312 15 0 00 034362 		CAME	15,[707777,,757372]  ;PASS OF C(E)=707777,,757372
+  1919						STOP^
+  1920	031506	254 04 0 00 031507 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1921	031507	324 00 0 00 031510 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1922									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1923									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1924									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1925
+  1926					;**********
+  1927
+  1928					;THIS TEST VERIFIES THAT ORCBI PLACES THE LOGICAL INCLUSIVE OR
+  1929					;FUNCTION OF THE COMPLEMENTS OF BOTH C(AC) AND THE WORD 0,,E INTO THE AC.
+  1930					;IN THIS CASE, C(AC)=707070,,070706 AND E=0,,770011.
+  1931					;HENCE, THE RESULT IN THE AC SHOULD BE -1,,707777
+  1932
+  1933	031510	200 15 0 00 034365 	C63400:	MOVE	15,[707070,,070706]  ;PRELOAD AC WITH 707070,,070706
+  1934	031511	471 15 0 00 770011 		ORCBI	15,770011	;*ORCBI SHOULD PLACE -1,,707777 INTO THE AC
+  1935	031512	312 15 0 00 034366 		CAME	15,[-1,,707777]	;PASS IF C(AC)=-1,707777
+  1936						STOP^
+  1937	031513	254 04 0 00 031514 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1938	031514	324 00 0 00 031515 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1939									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1940									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1941									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1942
+  1943					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 25
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL BOOLEAN INSTRUCTIONS                                                  SEQ 0053
+
+  1944					;THIS TEST VERIFIES THAT ORCBM PLACES THE LOGICAL INCLUSIVE OR
+  1945					;FUNCTION OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO
+  1946					;IN THIS CASE, C(AC)=123456,,770077 AND C(E)=777001,,123324
+  1947					;HENCE, THE RESULT IN E SHOULD BE 654777,,657753
+  1948
+  1949	031515	200 14 0 00 034367 	C63500:	MOVE	14,[123456,,770077]  ;PRELOAD AC WITH 123456,,770077
+  1950	031516	200 15 0 00 034370 		MOVE	15,[777001,,123324]  ;PRELOAD E WITH 777001,,123324
+  1951	031517	472 14 0 00 000015 		ORCBM	14,15		;*ORCBM SHOULD PLACE 654777,,657753
+  1952									;INTO E
+  1953	031520	312 14 0 00 034367 		CAME	14,[123456,,770077]  ;PASS IF C(AC) IS UNCHANGED
+  1954						STOP^
+  1955	031521	254 04 0 00 031522 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1956	031522	324 00 0 00 031523 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1957									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1958									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1959									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1960	031523	312 15 0 00 034371 		CAME	15,[654777,,657753]   ;PASS IF C(E)=654777,,657753
+  1961						STOP^
+  1962	031524	254 04 0 00 031525 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1963	031525	324 00 0 00 031526 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1964									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1965									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1966									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1967
+  1968					;**********
+  1969
+  1970					;THIS TEST VERIFIES THAT ORCBB PLACES THE LOGICAL INCLUSIVE OR
+  1971					;FUNCTIONOF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO BOTH AC AND E
+  1972					;IN THIS CASE, C(AC)=123456,,770077 AND C(E)=777001,,657753
+  1973
+  1974	031526	200 14 0 00 034367 	C63600:	MOVE	14,[123456,,770077]  ;PRELOAD AC WITH 123456,,770077
+  1975	031527	200 15 0 00 034370 		MOVE	15,[777001,,123324]  ;PRELOAD E WITH 777001,,123324
+  1976	031530	473 14 0 00 000015 		ORCBB	14,15		;*ORCBB SHOULD PLACE 654777,,657753
+  1977									;INTO BOTH AC AND E
+  1978	031531	312 14 0 00 034371 		CAME	14,[654777,,657753]  ;PASS IF C(AC)=654777,,657753
+  1979						STOP^
+  1980	031532	254 04 0 00 031533 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1981	031533	324 00 0 00 031534 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1982									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1983									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1984									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1985	031534	312 15 0 00 034371 		CAME	15,[654777,,657753]  ;PASS IF C(E)=654777,,657753
+  1986						STOP^
+  1987	031535	254 04 0 00 031536 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1988	031536	324 00 0 00 031537 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1989									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1990									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1991									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1992
+  1993					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 26
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0054
+
+  1994					SUBTTL	TEST OF MSCL HWT INSTRUCTIONS
+  1995
+  1996					;**********
+  1997
+  1998					;THIS TEST VERIFIES THAT HLLI CLEARS AC LEFT
+  1999					;IN THIS CASE, C(AC)=707070,,123456 AND E=777000
+  2000					;HENCE, THE RESULT IN THE AC SHOULD BE 0,,123456
+  2001
+  2002	031537	200 17 0 00 034336 	C63700:	MOVE	17,[707070,,123456]	;PRELOAD AC WITH 707070,,123456
+  2003	031540	501 17 0 00 777000 		HLLI	17,777000	;*HLLI SHOULD PLACE 0,,123456 INTO THHE AC
+  2004	031541	302 17 0 00 123456 		CAIE	17,123456	;PASS IF C(AC)=0,,123456
+  2005						STOP^
+  2006	031542	254 04 0 00 031543 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2007	031543	324 00 0 00 031544 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2008									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2009									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2010									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2011
+  2012					;**********
+  2013
+  2014					;THIS TEST VERIFIES THAT HLLS PLACES C(E) INTO THE AC IF AC IS NON-ZERO
+  2015					;AND IS A NO-OP IF AC=0
+  2016					;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,765432
+  2017					;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+  2018					;AND 123456,,765432 RESPECTIVELY
+  2019
+  2020	031544	474 00 0 00 000000 	C64000:	SETO	0		;PRELOAD AC WITH -1,,-1
+  2021	031545	200 02 0 00 034334 		MOVE	2,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+  2022	031546	503 00 0 00 000002 		HLLS	0,2		;*HLLS SHOULD NOT AFFECT AC OR E
+  2023	031547	312 00 0 00 034301 		CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+  2024						STOP^
+  2025	031550	254 04 0 00 031551 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2026	031551	324 00 0 00 031552 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2027									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2028									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2029									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2030	031552	312 02 0 00 034334 		CAME	2,[123456,,765432]	;PASS IF C(C) IS UNCHANGED
+  2031						STOP^
+  2032	031553	254 04 0 00 031554 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2033	031554	324 00 0 00 031555 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2034									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2035									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2036									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2037
+  2038					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 27
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0055
+
+  2039					;THIS TEST VERIFIES THAT HLLS PLACES C(E) INTO THE AC IF AC IS NON-ZERO?
+  2040					;AND IS A NO-OP IF AC=0
+  2041					;IN THIS CASE, AC=1, C(AC)=1,,-1 AND C(E)=123456,,765432
+  2042					;HENCE, THE RESULTS IN AC AND E WHOULD BE 123456,,765432
+  2043					;AND 123456,,765432 RESPECTVIELY
+  2044
+  2045	031555	474 01 0 00 000000 	C64010:	SETO	1,		;PRELOAD AC WITH -1,,-1
+  2046	031556	200 02 0 00 034334 		MOVE	2,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+  2047	031557	503 01 0 00 000002 		HLLS	1,2		;*HLLS SHOULD PLACE 123456,,765432 INTO THE AC
+  2048	031560	312 01 0 00 034334 		CAME	1,[123456,,765432]	;PASS IF C(AC)=123456,,765432
+  2049						STOP^
+  2050	031561	254 04 0 00 031562 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2051	031562	324 00 0 00 031563 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2052									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2053									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2054									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2055	031563	312 02 0 00 034334 		CAME	2,[123456,,765432]	;PASS IF C(C) IS UNCHANGED
+  2056						STOP^
+  2057	031564	254 04 0 00 031565 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2058	031565	324 00 0 00 031566 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2059									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2060									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2061									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2062
+  2063					;**********
+  2064
+  2065					;THIS TEST VERIFIES THAT HRLS PLACES C(E-RIGHT) INTO E-LEFT, BUT
+  2066					;DOES NOT AFFECT E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E
+  2067					;IS ALSO PLACED INTO THE AC.
+  2068					;IN THIS CASE, AC=0, C(AC)=1,,-1 AND C(E)=123456,707070
+  2069					;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE -1,,-1
+  2070					;AND 707070,,707070.
+  2071
+  2072	031566	474 00 0 00 000000 	C64100:	SETO	0,		;PRELOAD AC WITH -1,,-1
+  2073	031567	200 03 0 00 034372 		MOVE	3,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+  2074	031570	507 00 0 00 000003 		HRLS	0,3		;*HRLS SHOULD PLACE 707070,,707070
+  2075									;INTO E.
+  2076	031571	312 00 0 00 034301 		CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+  2077						STOP^
+  2078	031572	254 04 0 00 031573 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2079	031573	324 00 0 00 031574 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2080									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2081									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2082									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2083	031574	312 03 0 00 034373 		CAME	3,[707070,,707070]	;PASS IF C(E)=707070,,707070
+  2084						STOP^
+  2085	031575	254 04 0 00 031576 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2086	031576	324 00 0 00 031577 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2087									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2088									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2089									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2090
+  2091					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 28
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0056
+
+  2092					;THIS TEST VERIFIES THAT HRLS PLACES C(E-RIGHT) INTO E-LEFT, BUT
+  2093					;DOES NOT AFFECT E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E
+  2094					;IS ALSO PLACED INTO THE AC.
+  2095					;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707070
+  2096					;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707070,,707070
+  2097					;AND 707070,,707070.
+  2098
+  2099	031577	474 01 0 00 000000 	C64110:	SETO	1,		;PRELOAD AC WITH -1,,-1
+  2100	031600	200 03 0 00 034372 		MOVE	3,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+  2101	031601	507 01 0 00 000003 		HRLS	1,3		;*HRLS SHOULD PLACE 707070,,707070
+  2102									;INTO BOTH AC AND E.
+  2103	031602	312 01 0 00 034373 		CAME	1,[707070,,707070]	;PASS IF C(AC)=707070,,707070
+  2104						STOP^
+  2105	031603	254 04 0 00 031604 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2106	031604	324 00 0 00 031605 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2107									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2108									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2109									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2110	031605	312 03 0 00 034373 		CAME	3,[707070,,707070]	;PASS IF C(E)=707070,,707070
+  2111						STOP^
+  2112	031606	254 04 0 00 031607 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2113	031607	324 00 0 00 031610 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2114									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2115									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2116									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2117
+  2118					;**********
+  2119
+  2120					;THIS TEST VERIFIES THAN HLLZM PLACES C(AC-LEFT) INTO E-LEFT AND
+  2121					;PLACES 0 INTO E-RIGHT
+  2122					;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,717171
+  2123					;HENCE, THE RESULT IN E SHOULD BE 123456,,0
+  2124
+  2125	031610	200 01 0 00 034374 	C64200:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+  2126	031611	200 02 0 00 034375 		MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+  2127	031612	512 01 0 00 000002 		HLLZM	1,2		;*HLLZM SHOULD PLACE 123456,,0 INTO E
+  2128	031613	312 01 0 00 034374 		CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+  2129						STOP^
+  2130	031614	254 04 0 00 031615 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2131	031615	324 00 0 00 031616 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2132									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2133									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2134									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2135	031616	312 02 0 00 034330 		CAME	2,[123456,,0]	;PASS IF C(E)=123456,,0
+  2136						STOP^
+  2137	031617	254 04 0 00 031620 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2138	031620	324 00 0 00 031621 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2139									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2140									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2141									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2142
+  2143					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 29
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0057
+
+  2144					;THIS TEST VERIFIES THAT HLLZS CLEARS THE RIGHT HALF OF E, BUT DOESN'T
+  2145					;AFFECT THE LEFT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+  2146					;ALSO PLACED INTO THE AC.
+  2147					;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,707070
+  2148					;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+  2149					;AND 123456,,0 RESPECTIVELY
+  2150
+  2151	031621	474 00 0 00 000000 	C64300:	SETO	0,		;PRELOAD AC WITH -1,,-1
+  2152	031622	200 17 0 00 034372 		MOVE	17,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+  2153	031623	513 00 0 00 000017 		HLLZS	0,17		;*HLLZS SHOULD PLACE 123456,,0 INTO E.
+  2154	031624	312 00 0 00 034301 		CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+  2155						STOP^
+  2156	031625	254 04 0 00 031626 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2157	031626	324 00 0 00 031627 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2158									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2159									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2160									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2161	031627	312 17 0 00 034330 		CAME	17,[123456,,0]	;PASS IF C(E)=123456,,0
+  2162						STOP^
+  2163	031630	254 04 0 00 031631 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2164	031631	324 00 0 00 031632 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2165									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2166									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2167									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2168
+  2169
+  2170					;**********
+  2171
+  2172					;THIS TEST VERIFIES THAT HLLZS CLEARS THE RIGHT HALF OF E, BUT DOESN'T
+  2173					;AFFECT THE LEFT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+  2174					;ALSO PLACED INTO THE AC.
+  2175					;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707070
+  2176					;HENCE, THE RESULTS IN AC AND E SHOULD BE 123456,,0
+  2177					;AND 123456,,0 RESPECTIVELY.
+  2178
+  2179	031632	474 01 0 00 000000 	C64310:	SETO	1,		;PRELOAD AC WITH -1,,-1
+  2180	031633	200 17 0 00 034372 		MOVE	17,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+  2181	031634	513 01 0 00 000017 		HLLZS	1,17		;*HLLZS SHOULD PLACE 123456,,0 INTO
+  2182									;BOTH AC AND E
+  2183	031635	312 01 0 00 034330 		CAME	1,[123456,,0]	;PASS IF C(AC)=123456,,0
+  2184						STOP^
+  2185	031636	254 04 0 00 031637 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2186	031637	324 00 0 00 031640 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2187									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2188									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2189									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2190	031640	312 17 0 00 034330 		CAME	17,[123456,,0]	;PASS IF C(E)=123456,,0
+  2191						STOP^
+  2192	031641	254 04 0 00 031642 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2193	031642	324 00 0 00 031643 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2194									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2195									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2196									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2197
+  2198					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 30
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0058
+
+  2199					;THIS TEST VERIFIES THAT HRLZM PLACES C(AC-RIGHT) INTO E-LEFT AND
+  2200					;PLACES O INTO E-RIGHT.
+  2201					;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+  2202					;HENCE, THE RESULT IN E SHOULD BE 123422,,0
+  2203
+  2204	031643	200 01 0 00 034374 	C64400:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+  2205	031644	200 02 0 00 034375 		MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+  2206	031645	516 01 0 00 000002 		HRLZM	1,2		;*HRLZM SHOULD PLACE 123422,,0 INTO E
+  2207	031646	312 01 0 00 034374 		CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+  2208						STOP^
+  2209	031647	254 04 0 00 031650 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2210	031650	324 00 0 00 031651 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2211									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2212									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2213									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2214	031651	312 02 0 00 034376 		CAME	2,[123422,,0]	;PASS IF C(E)=123422,,0
+  2215						STOP^
+  2216	031652	254 04 0 00 031653 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2217	031653	324 00 0 00 031654 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2218									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2219									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2220									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2221
+  2222					;**********
+  2223
+  2224					;THIS TEST VERIFIES THAT HRLZS PLACES C(E-RIGHT) INTO E-LEFT AND
+  2225					;CLEARS E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+  2226					;PLACED INTO THE AC.
+  2227					;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,707076
+  2228					;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE -1,,-1
+  2229					;AND 707076,,0
+  2230
+  2231	031654	474 00 0 00 000000 	C64500:	SETO	0,		;PRELOAD AC WITH -1,,-1
+  2232	031655	200 16 0 00 034377 		MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+  2233	031656	517 00 0 00 000016 		HRLZS	0,16		;*HRLZS SHOULD PLACE 707076,,0
+  2234									;INTO E.
+  2235	031657	312 00 0 00 034301 		CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+  2236						STOP^
+  2237	031660	254 04 0 00 031661 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2238	031661	324 00 0 00 031662 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2239									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2240									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2241									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2242	031662	312 16 0 00 034400 		CAME	16,[707076,,0]	;PASS IF C(AC)=707076,,0
+  2243						STOP^
+  2244	031663	254 04 0 00 031664 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2245	031664	324 00 0 00 031665 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2246									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2247									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2248									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2249
+  2250					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 31
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0059
+
+  2251					;THIS TEST VERIFIES THAT HRLZS PLACES C(E-RIGHT) INTO E-LEFT AND
+  2252					;CLEARS E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+  2253					;PLACED INTO THE AC.
+  2254					;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707076
+  2255					;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707076,,0
+  2256					;AND 707076,,0
+  2257
+  2258	031665	474 01 0 00 000000 	C64510:	SETO	1,		;PRELOAD AC WITH -1,,-1
+  2259	031666	200 16 0 00 034377 		MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+  2260	031667	517 01 0 00 000016 		HRLZS	1,16		;*HRLZS SHOULD PLACE 707076,,0
+  2261									;INTO BOTH AC AND E.
+  2262	031670	312 01 0 00 034400 		CAME	1,[707076,,0]	;PASS IF C(AC)=707076,,0
+  2263						STOP^
+  2264	031671	254 04 0 00 031672 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2265	031672	324 00 0 00 031673 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2266									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2267									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2268									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2269	031673	312 16 0 00 034400 		CAME	16,[707076,,0]	;PASS IF C(AC)=707076,,0
+  2270						STOP^
+  2271	031674	254 04 0 00 031675 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2272	031675	324 00 0 00 031676 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2273									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2274									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2275									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2276
+  2277					;**********
+  2278
+  2279					;THIS TEST VERIFIES THAT HLLOM PLACES C(AC-LEFT) INTO E-LEFT AND
+  2280					;PLACES -1 INTO E-RIGHT.
+  2281					;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+  2282					;HENCE, THE RESULT IN E SHOULD BE 123456,,-1.
+  2283
+  2284	031676	200 01 0 00 034374 	C64600:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+  2285	031677	200 02 0 00 034375 		MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+  2286	031700	522 01 0 00 000002 		HLLOM	1,2		;*HLLOM SHOULD PLACE 123456,,-1 INTO E
+  2287	031701	312 01 0 00 034374 		CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+  2288						STOP^
+  2289	031702	254 04 0 00 031703 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2290	031703	324 00 0 00 031704 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2291									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2292									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2293									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2294	031704	312 02 0 00 034401 		CAME	2,[123456,,-1]	;PASS IF C(E)=123456,,-1
+  2295						STOP^
+  2296	031705	254 04 0 00 031706 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2297	031706	324 00 0 00 031707 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2298									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2299									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2300									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2301
+  2302					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 32
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0060
+
+  2303					;THIS TEST VERIFIES THAT HRLO, C(E-RIGHT) INTO AC=LEFT AND
+  2304					;PLACES -1 INTO AC-RIGHT.  IN THIS CASE, C(AC)=123456,,135724 AND
+  2305					;C(E)=765432,,246135.  HENCE, THE RESULT IN THE AC SHOULD BE 246135,,-1
+  2306
+  2307	031707	200 15 0 00 034402 	C64700:	MOVE	15,[123456,,135724]	;PRELOAD AC WITH 123456,,135724
+  2308	031710	200 16 0 00 034403 		MOVE	16,[765432,,246135]	;PRELOAD E WITH 765432,,246135
+  2309	031711	524 15 0 00 000016 		HRLO	15,16		;*HRLO SHOULD PLACE 246135,,-1 INTO AC
+  2310	031712	312 15 0 00 034404 		CAME	15,[246135,,-1]	;PASS IF C(AC)=246135,,-1
+  2311						STOP^
+  2312	031713	254 04 0 00 031714 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2313	031714	324 00 0 00 031715 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2314									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2315									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2316									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2317	031715	312 16 0 00 034403 		CAME	16,[765432,,246135]	;PASS IF C(E) UNCHANGED
+  2318						STOP^
+  2319	031716	254 04 0 00 031717 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2320	031717	324 00 0 00 031720 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2321									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2322									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2323									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2324
+  2325					;**********
+  2326
+  2327					;THIS TEST VERIFIES THAT HRLOI PLACES 0,,E INTO AC-LEFT AND
+  2328					;PLACES ONES INTO AC-RIGHT.  IN THIS CASE, C(AC)=0 AND E=0,,123456.
+  2329					;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,-1
+  2330
+  2331	031720	400 14 0 00 000000 	C65000:	SETZ	14,		;CLEAR AC
+  2332	031721	525 14 0 00 123456 		HRLOI	14,123456	;*HRLOI SHOULD PLACE 123456,,-1 INTO THE AC
+  2333	031722	312 14 0 00 034401 		CAME	14,[123456,,-1]	;PASS IF C(AC)=123456,,-1
+  2334						STOP^
+  2335	031723	254 04 0 00 031724 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2336	031724	324 00 0 00 031725 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2337									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2338									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2339									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2340
+  2341					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 33
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0061
+
+  2342					;THIS TEST VERIFIES THAT HRLOM PLACES C(AC-RIGHT) INTO E-LEFT
+  2343					;AND PLACES -1 INTO E-RIGHT. IN THIS CASE, C(E)=0 AND C(AC)=123123,,456765
+  2344					;HENCE, THE RESULT IN E SHOULD BE 456765,,-1.
+  2345
+  2346	031725	402 00 0 00 000014 	C65100:	SETZM	14		;CLEAR E
+  2347	031726	200 13 0 00 034405 		MOVE	13,[123123,,456765]	;PRELOAD AC WITH 123123,,456765
+  2348	031727	526 13 0 00 000014 		HRLOM	13,14		;*HRLOM SHOULD PLACE 456765,,-1 INTO E
+  2349	031730	312 13 0 00 034405 		CAME	13,[123123,,456765]	;PASS IF C(AC) UNCHANGED
+  2350
+  2351						STOP^
+  2352	031731	254 04 0 00 031732 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2353	031732	324 00 0 00 031733 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2354									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2355									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2356									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2357	031733	312 14 0 00 034406 		CAME	14,[456765,,-1]	;PASS IF C(E)=456765,,-1
+  2358						STOP^
+  2359	031734	254 04 0 00 031735 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2360	031735	324 00 0 00 031736 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2361									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2362									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2363									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2364
+  2365					;**********
+  2366
+  2367
+  2368					;THIS TEST VERIFIES THAT HRLOS PLACES C(E-RIGHT) INTO E-LEFT AND
+  2369					;PLACES -1 INTO E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALOS
+  2370					;PLACED INTO THE AC.
+  2371					;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,707076
+  2372					;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 0
+  2373					;AND 707076,,0
+  2374
+  2375	031736	400 00 0 00 000000 	C65200:	SETZ	0,		;PRELOAD AC WITH 0
+  2376	031737	200 16 0 00 034377 		MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+  2377	031740	527 00 0 00 000016 		HRLOS	0,16		;*HRLZS SHOULD PLACE 707076,,-1
+  2378									;INTO E.
+  2379	031741	312 00 0 00 034407 		CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+  2380						STOP^
+  2381	031742	254 04 0 00 031743 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2382	031743	324 00 0 00 031744 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2383									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2384									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2385									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2386	031744	312 16 0 00 034410 		CAME	16,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+  2387						STOP^
+  2388	031745	254 04 0 00 031746 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2389	031746	324 00 0 00 031747 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2390									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2391									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2392									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2393
+  2394					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 34
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0062
+
+  2395					;THIS TEST VERIFIES THAT HRLOS PLACES C(E-RIGHT) INTO E-LEFT AND
+  2396					;PLACES -1 INTO E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+  2397					;PLACED INTO THE AC.
+  2398					;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,707076
+  2399					;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707076,,-1
+  2400					;AND 707076,,-1
+  2401
+  2402	031747	400 01 0 00 000000 	C65210:	SETZ	1,		;PRELOAD AC WITH 0
+  2403	031750	200 16 0 00 034377 		MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+  2404	031751	527 01 0 00 000016 		HRLOS	1,16		;*HRLZS SHOULD PLACE 707076,,-1
+  2405									;INTO BOTH AC AND E
+  2406	031752	312 01 0 00 034410 		CAME	1,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+  2407						STOP^
+  2408	031753	254 04 0 00 031754 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2409	031754	324 00 0 00 031755 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2410									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2411									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2412									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2413	031755	312 16 0 00 034410 		CAME	16,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+  2414						STOP^
+  2415	031756	254 04 0 00 031757 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2416	031757	324 00 0 00 031760 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2417									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2418									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2419									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2420
+  2421					;**********
+  2422
+  2423					;THIS TEST VERIFIES THAT HLLEM PLACES C(AC-LEFT) INTO E-LEFT
+  2424					;AND PLACES BIT 0 OF THE AC INTO BITS 18 THRU 35 OF E.  IN THIS CASE,
+  2425					;C(AC)=123456,,707076 AND C(E)=-1,,-1.  HENCE, THE RESULT IN E
+  2426					;SHOULD BE 123456,,0.
+  2427
+  2428	031760	200 12 0 00 034377 	C65300:	MOVE	12,[123456,,707076]	;PRELOAD AC WITH 123456,,707076
+  2429	031761	476 00 0 00 000013 		SETOM	13		;PRELOAD E WITH -1,,-1
+  2430	031762	532 12 0 00 000013 		HLLEM	12,13		;*HLLEM SHOULD PLACE 123456,,0 INTO E
+  2431	031763	312 12 0 00 034377 		CAME	12,[123456,,707076]	;PASS IF C(AC) UNCHANGED
+  2432						STOP^
+  2433	031764	254 04 0 00 031765 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2434	031765	324 00 0 00 031766 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2435									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2436									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2437									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2438	031766	312 13 0 00 034330 		CAME	13,[123456,,0]	;PASS IF C(E)=123456,,0
+  2439						STOP^
+  2440	031767	254 04 0 00 031770 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2441	031770	324 00 0 00 031771 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2442									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2443									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2444									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2445
+  2446					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 35
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0063
+
+  2447					;THIS TEST VERIFIES THAT HLLES PLACES C(E-LEFT) INTO E-LEFT AND
+  2448					;PLACES BIT 0 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO
+  2449					;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  2450					;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=765432,,0.
+  2451					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+  2452					;AND 765432,,-1 RESPECTIVELY.
+  2453
+  2454	031771	400 00 0 00 000000 	C65400:	SETZ	0,		;CLEAR AC
+  2455	031772	515 02 0 00 765432 		HRLZI	2,765432	;PRELOAD E WITH 765432,,0
+  2456	031773	533 00 0 00 000002 		HLLES	0,2		;*HLLES SHOULD PLACE 765432,,-1
+  2457									;INTO E
+  2458	031774	312 00 0 00 034407 		CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+  2459						STOP^
+  2460	031775	254 04 0 00 031776 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2461	031776	324 00 0 00 031777 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2462									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2463									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2464									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2465	031777	312 02 0 00 034411 		CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+  2466						STOP^
+  2467	032000	254 04 0 00 032001 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2468	032001	324 00 0 00 032002 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2469									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2470									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2471									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2472
+  2473					;**********
+  2474
+  2475					;THIS TEST VERIFIES THAT HLLES PLACES C(E-LEFT) INTO E-LEFT AND
+  2476					;PLACES BIT 0 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+  2477					;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  2478					;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=765432,,0
+  2479					;HENCE, THE RESULTS IN AC AND E SHOULD BE 765432,,-1
+  2480					;AND 765432,,-1 RESPECTIVELY
+  2481
+  2482	032002	400 01 0 00 000000 	C65410:	SETZ	1,		;CLEAR AC
+  2483	032003	515 02 0 00 765432 		HRLZI	2,765432	;PRELOAD E WITH 765432,,0
+  2484	032004	533 01 0 00 000002 		HLLES	1,2		;*HLLES SHOULD PLACE 765432,,-1
+  2485									;INTO BOTH AC AND E
+  2486	032005	312 01 0 00 034411 		CAME	1,[765432,,-1]	;PASS IF C(AC)=765432,,-1
+  2487						STOP^
+  2488	032006	254 04 0 00 032007 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2489	032007	324 00 0 00 032010 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2490									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2491									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2492									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2493	032010	312 02 0 00 034411 		CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+  2494						STOP^
+  2495	032011	254 04 0 00 032012 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2496	032012	324 00 0 00 032013 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2497									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2498									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2499									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2500
+  2501					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 36
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0064
+
+  2502					;THIS TEST VERIFIES THAT HLLEM PLACES C(AC-RIGHT) INTO E-LEFT
+  2503					;AND PLACES BIT 18 OF THE AC INTO BITS 18 THRU 35 OF E.  IN THIS CASE,
+  2504					;C(AC)=365432,123456 AND C(E)=-1,,-1.  HENCE, THE RESULT IN E
+  2505					;SHOULD BE 365432,,0.
+  2506
+  2507	032013	200 12 0 00 034412 	C65500:	MOVE	12,[365432,,123456]	;PRELOAD AC WITH 365432,,123456
+  2508	032014	476 00 0 00 000013 		SETOM	13		;PRELOAD E WITH -1,,-1
+  2509	032015	532 12 0 00 000013 		HLLEM	12,13		;*HLLEM SHOULD PLACE 365432,,0 INTO E
+  2510	032016	312 12 0 00 034412 		CAME	12,[365432,,123456]	;PASS IF C(AC) UNCHANGED
+  2511						STOP^
+  2512	032017	254 04 0 00 032020 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2513	032020	324 00 0 00 032021 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2514									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2515									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2516									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2517	032021	312 13 0 00 034413 		CAME	13,[365432,,0]	;PASS IF C(E)=365432,,0
+  2518						STOP^
+  2519	032022	254 04 0 00 032023 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2520	032023	324 00 0 00 032024 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2521									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2522									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2523									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2524
+  2525					;**********
+  2526
+  2527					;THIS TEST VERIFIES THAT HRLES PLACES C(E-RIGHT) INTO E-LEFT AND
+  2528					;PLACES BIT 18 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+  2529					;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  2530					;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=0,,765432
+  2531					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+  2532					;AND 765432,,-1 RESPECTIVELY
+  2533
+  2534	032024	400 00 0 00 000000 	C65600:	SETZ	0,		;CLEAR AC
+  2535	032025	551 02 0 00 765432 		HRRZI	2,765432	;PRELOAD E WITH 0,,765432
+  2536	032026	537 00 0 00 000002 		HRLES	0,2		;*HLLES SHOULD PLACE 765432,,-1
+  2537									;INTO
+  2538	032027	312 00 0 00 034407 		CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+  2539						STOP^
+  2540	032030	254 04 0 00 032031 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2541	032031	324 00 0 00 032032 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2542									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2543									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2544									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2545	032032	312 02 0 00 034411 		CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+  2546						STOP^
+  2547	032033	254 04 0 00 032034 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2548	032034	324 00 0 00 032035 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2549									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2550									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2551									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2552
+  2553					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 37
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0065
+
+  2554					;THIS TEST VERIFIES THAT HRLES PLACES C(E-RIGHT) INTO E-LEFT AND
+  2555					;PLACES BIT 18 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+  2556					;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  2557					;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=0,,765432
+  2558					;HENCE, THE RESULTS IN AC AND E SHOULD BE 765432,,-1
+  2559					;AND 765432,,-1 RESPECTIVELY.
+  2560
+  2561	032035	400 01 0 00 000000 	C65610:	SETZ	1,		;CLEAR AC
+  2562	032036	551 02 0 00 765432 		HRRZI	2,765432	;PRELOAD E WITH 0,765432
+  2563	032037	537 01 0 00 000002 		HRLES	1,2		;*HLLES SHOULD PLACE 765432,,-1
+  2564									;INTO BOTH AC AND E
+  2565	032040	312 01 0 00 034411 		CAME	1,[765432,,-1]	;PASS IF C(AC)=765442,,-1
+  2566						STOP^
+  2567	032041	254 04 0 00 032042 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2568	032042	324 00 0 00 032043 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2569									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2570									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2571									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2572	032043	312 02 0 00 034411 		CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+  2573						STOP^
+  2574	032044	254 04 0 00 032045 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2575	032045	324 00 0 00 032046 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2576									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2577									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2578									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2579
+  2580
+  2581					;**********
+  2582
+  2583					;THIS TEST VERIFIES THAT HLRM SHOULD PLACE C(AC-LEFT) INTO E-RIGHT
+  2584					;AND NOT AFFECT E-LEFT.  IN THIS CASE, C(AC)=123456,,701234
+  2585					;AND C(E)=0.  HENCE, THE RESULT IN E SHOULD BE 0,,123456
+  2586
+  2587	032046	200 11 0 00 034414 	C65700:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  2588	032047	402 00 0 00 000012 		SETZM	12		;CLEAR E
+  2589	032050	546 11 0 00 000012 		HLRM	11,12		;*HLRM SHOULD PLACE 0,,123456 INTO E
+  2590	032051	312 11 0 00 034414 		CAME	11,[123456,,701234]	;PASS IF C(AC) UNCHANGE
+  2591						STOP^
+  2592	032052	254 04 0 00 032053 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2593	032053	324 00 0 00 032054 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2594									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2595									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2596									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2597	032054	302 12 0 00 123456 		CAIE	12,123456	;PASS IF C(E)=0,,123456
+  2598						STOP^
+  2599	032055	254 04 0 00 032056 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2600	032056	324 00 0 00 032057 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2601									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2602									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2603									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2604
+  2605					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 38
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0066
+
+  2606					;THIS TEST VERIFIES THAT HLRS PLACES C(E-LEFT) INTO E-RIGHT AND
+  2607					;DOES NOT AFFECT E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+  2608					;IS ALSO PLACED INTO THE AC.
+  2609					;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123123,,246135
+  2610					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+  2611					;AND 123123,,123123 RESPECTIVELY.
+  2612
+  2613	032057	400 00 0 00 000000 	C66000:	SETZ	0,		;CLEAR AC
+  2614	032060	200 12 0 00 034415 		MOVE	12,[123123,,246135]	;PRELOAD E WITH 123123,,246135
+  2615	032061	547 00 0 00 000012 		HLRS	0,12		;*HLRS SHOULD PLACE 123123,,123123
+  2616									;INTO E.
+  2617	032062	312 00 0 00 034407 		CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+  2618						STOP^
+  2619	032063	254 04 0 00 032064 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2620	032064	324 00 0 00 032065 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2621									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2622									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2623									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2624	032065	312 12 0 00 034416 		CAME	12,[123123,,123123]	;PASS IF C(E)=123123,,123123
+  2625						STOP^
+  2626	032066	254 04 0 00 032067 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2627	032067	324 00 0 00 032070 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2628									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2629									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2630									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2631
+  2632
+  2633					;**********
+  2634
+  2635					;THIS TEST VERIFIES THAT HLRS PLACES C(E-LEFT) INTO E-RIGHT AND
+  2636					;DOES NOT AFFECT E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+  2637					;IS ALSO PLACED INTO THE AC.
+  2638					;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123123,,246135
+  2639					;HENCE, THE RESULTS IN AC AND E SHOULD BE 123123,,123123
+  2640					;AND 123123,,123123 RESPECTIVELY.
+  2641
+  2642	032070	400 01 0 00 000000 	C66010:	SETZ	1,		;CLEAR AC
+  2643	032071	200 12 0 00 034415 		MOVE	12,[123123,,246135]	;PRELOAD E WITH 123123,,246135
+  2644	032072	547 01 0 00 000012 		HLRS	1,12		;*HLRS SHOULD PLACE 123123,,123123
+  2645									;INTO BOTH AC AND E.
+  2646	032073	312 01 0 00 034416 		CAME	1,[123123,,123123]	;PASS IF C(AC)=123123,,123123
+  2647						STOP^
+  2648	032074	254 04 0 00 032075 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2649	032075	324 00 0 00 032076 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2650									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2651									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2652									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2653	032076	312 12 0 00 034416 		CAME	12,[123123,,123123]	;PASS IF C(E)=123123,,123123
+  2654						STOP^
+  2655	032077	254 04 0 00 032100 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2656	032100	324 00 0 00 032101 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2657									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2658									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2659									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2660
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 38-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0067
+
+  2661					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 39
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0068
+
+  2662					;THIS TEST VERIFIES THAT HRRZS CLEARS THE LEFT HALF OF E, BUT DOES NOT
+  2663					;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+  2664					;ALSO PLACED INTO THE AC.
+  2665					;IN THIS CASE, AC = 0, C(AC) = -1,,-1 AND C(E) = 123456,,701234
+  2666					;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1 AND 0,,701234
+  2667					;RESPECTIVELY.
+  2668
+  2669	032101	474 00 0 00 000000 	C66100:	SETO	0		;PRELOAD AC WITH -1,,-1
+  2670	032102	200 17 0 00 034414 		MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  2671	032103	553 00 0 00 000017 		HRRZS	0,17		;HRRZS SHOULD PLACE 0,,701234 INTO E
+  2672	032104	312 00 0 00 034301 		CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+  2673						STOP^
+  2674	032105	254 04 0 00 032106 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2675	032106	324 00 0 00 032107 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2676									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2677									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2678									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2679	032107	302 17 0 00 701234 		CAIE	17,701234	;PASS IF C(E) = 0,,701234
+  2680						STOP^
+  2681	032110	254 04 0 00 032111 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2682	032111	324 00 0 00 032112 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2683									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2684									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2685									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2686
+  2687					;**********
+  2688
+  2689					;THIS TEST VERIFIES THAT HRRZS CLEARS THE LEFT HALF OF E, BUT DOES NOT
+  2690					;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+  2691					;ALSO PLACED INTO THE AC.
+  2692					;IN THIS CASE, AC = 1, C(AC) = -1,,-1 AND C(E) = 123456,,701234
+  2693					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,701234 AND 0,,701234
+  2694					;RESPECTIVELY.
+  2695
+  2696	032112	474 01 0 00 000000 	C66110:	SETO	1,		;PRELOAD AC WITH -1,,-1
+  2697	032113	200 17 0 00 034414 		MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  2698	032114	553 01 0 00 000017 		HRRZS	1,17		;HRRZS SHOULD PLACE 0,,701234 INTO
+  2699									;BOTH AC AND E
+  2700	032115	302 01 0 00 701234 		CAIE	1,701234	;PASS IF C(AC) = 0,,701234
+  2701						STOP^
+  2702	032116	254 04 0 00 032117 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2703	032117	324 00 0 00 032120 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2704									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2705									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2706									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2707	032120	302 17 0 00 701234 		CAIE	17,701234	;PASS IF C(E) = 0,,701234
+  2708						STOP^
+  2709	032121	254 04 0 00 032122 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2710	032122	324 00 0 00 032123 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2711									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2712									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2713									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2714
+  2715					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 40
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0069
+
+  2716					;THIS TEST VERIFIES THAT HLRZI CLEARS THE AC
+  2717					;IN THIS CASE, C(AC) = -1,,-1 AND E = 0,,-1.  HENCE, THE
+  2718					;RESULT IN THE AC SHOULD BE 0.
+  2719
+  2720	032123	474 00 0 00 000007 	C66200:	SETO	7		;PRELOAD AC WITH -1,,-1
+  2721	032124	555 07 0 00 777777 		HLRZI	7,-1		;*HLRZI SHOULD CLEAR THE AC
+  2722	032125	332 00 0 00 000007 		SKIPE	7		;PASS IF C(AC) = 0
+  2723						STOP^
+  2724	032126	254 04 0 00 032127 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2725	032127	324 00 0 00 032130 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2726									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2727									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2728									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2729
+  2730					;**********
+  2731
+  2732					;THIS TEST VERIFIES THAT HLRZM PLACES C(AC-LEFT) INTO E-RIGHT AND
+  2733					;PLACES 0 INTO E-LEFT.
+  2734					;IN THIS CASE, C(AC) = 123456,,123422 AND C(E) = 707070,,717171
+  2735					;HENCE, THE RESULT IN E SHOULD BE 0,,123456.
+  2736
+  2737	032130	200 01 0 00 034374 	C66300:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+  2738	032131	200 02 0 00 034375 		MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+  2739	032132	556 01 0 00 000002 		HLRZM	1,2		;*HLRZM SHOULD PLACE 0,,123456 INTO E.
+  2740	032133	312 01 0 00 034374 		CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+  2741						STOP^
+  2742	032134	254 04 0 00 032135 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2743	032135	324 00 0 00 032136 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2744									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2745									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2746									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2747	032136	302 02 0 00 123456 		CAIE	2,123456	;PASS IF C(E) = 0,,123456
+  2748						STOP^
+  2749	032137	254 04 0 00 032140 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2750	032140	324 00 0 00 032141 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2751									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2752									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2753									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2754
+  2755					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 41
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0070
+
+  2756					;THIS TEST VERIFIES THAT HLRZM PLACES C(AC-LEFT) INTO E-RIGHT AND
+  2757					;PLACES 0 INTO E-LEFT.
+  2758					;IN THIS CASE, C(AC) = 123456,,123422 AND C(E) = 707070,,717171
+  2759					;HENCE, THE RESULT IN E SHOULD BE 0,,123456.
+  2760
+  2761	032141	200 01 0 00 034374 	C66301:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+  2762	032142	200 02 0 00 034375 		MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+  2763	032143	202 02 0 00 032155 		MOVEM	2,E66301
+  2764	032144	556 01 0 00 032155 		HLRZM	1,E66301	;*HLRZM SHOULD PLACE 0,,123456 INTO E.
+  2765	032145	312 01 0 00 034374 		CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+  2766						STOP^
+  2767	032146	254 04 0 00 032147 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2768	032147	324 00 0 00 032150 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2769									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2770									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2771									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2772	032150	200 02 0 00 032155 		MOVE	2,E66301
+  2773	032151	302 02 0 00 123456 		CAIE	2,123456	;PASS IF C(E) = 0,,123456
+  2774						STOP^
+  2775	032152	254 04 0 00 032153 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2776	032153	324 00 0 00 032154 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2777									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2778									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2779									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2780
+  2781	032154	334 00 0 00 000000 		SKIPA			;GO TO NEXT TEST
+  2782	032155	000000	000000		E66301:	0			;TEST WORD MEMORY
+  2783
+  2784					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 42
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0071
+
+  2785					;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+  2786					;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E IS
+  2787					;ALSO PLACED INTO THE AC.
+  2788					;IN THIS CASE, AC = 0, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+  2789					;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1 AND 0,,123456
+  2790					;RESPECTIVELY.
+  2791
+  2792	032156	474 00 0 00 000000 	C66400:	SETO	0,		;PRELOAD AC WITH -1,,-1
+  2793	032157	200 07 0 00 034414 		MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  2794	032160	557 00 0 00 000007 		HLRZS	0,7		;*HLRZS SHOULD PLACE 0,,123456 INTO E
+  2795	032161	312 00 0 00 034301 		CAME	0,[-1]		;PASS IF C(AC) IS UNCHANGED
+  2796						STOP^
+  2797	032162	254 04 0 00 032163 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2798	032163	324 00 0 00 032164 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2799									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2800									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2801									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2802	032164	302 07 0 00 123456 		CAIE	7,123456	;PASS IF C(E) = 0,,123456
+  2803						STOP^
+  2804	032165	254 04 0 00 032166 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2805	032166	324 00 0 00 032167 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2806									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2807									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2808									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2809
+  2810					;**********
+  2811
+  2812					;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+  2813					;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+  2814					;IS ALSO PLACED INTO THE AC.
+  2815					;IN THIS CASE, AC = 6, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+  2816					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456 AND 0123456
+  2817					;RESPECTIVELY.
+  2818
+  2819	032167	474 06 0 00 000000 	C66410:	SETO	6,		;PRELOAD AC WITH -1,,-1
+  2820	032170	200 07 0 00 034414 		MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  2821	032171	557 06 0 00 000007 		HLRZS	6,7		;*HLRZS SHOULD PLACE 0,,123456 INTO
+  2822									;BOTH AC AND E
+  2823	032172	302 06 0 00 123456 		CAIE	6,123456	;PASS IF C(AC) = 0,,123456
+  2824						STOP^
+  2825	032173	254 04 0 00 032174 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2826	032174	324 00 0 00 032175 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2827									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2828									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2829									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2830	032175	302 07 0 00 123456 		CAIE	7,123456	;PASS IF C(E) = 0,,123456
+  2831						STOP^
+  2832	032176	254 04 0 00 032177 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2833	032177	324 00 0 00 032200 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2834									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2835									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2836									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2837
+  2838					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 43
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0072
+
+  2839					;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+  2840					;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+  2841					;IS ALSO PLACED INTO THE AC.
+  2842					;IN THIS CASE, AC = 6, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+  2843					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456 AND 0123456
+  2844					;RESPECTIVELY.
+  2845
+  2846	032200	474 06 0 00 000000 	C66411:	SETO	6,		;PRELOAD AC WITH -1,,-1
+  2847	032201	200 07 0 00 034414 		MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  2848	032202	202 07 0 00 032214 		MOVEM	7,E66411
+  2849	032203	557 06 0 00 032214 		HLRZS	6,E66411	;*HLRZS SHOULD PLACE 0,,123456 INTO
+  2850									;BOTH AC AND E
+  2851	032204	302 06 0 00 123456 		CAIE	6,123456	;PASS IF C(AC) = 0,,123456
+  2852						STOP^
+  2853	032205	254 04 0 00 032206 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2854	032206	324 00 0 00 032207 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2855									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2856									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2857									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2858	032207	200 07 0 00 032214 		MOVE	7,E66411
+  2859	032210	302 07 0 00 123456 		CAIE	7,123456	;PASS IF C(E) = 0,,123456
+  2860						STOP^
+  2861	032211	254 04 0 00 032212 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2862	032212	324 00 0 00 032213 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2863									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2864									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2865									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2866
+  2867	032213	334 00 0 00 000000 		SKIPA			;GO TO NEXT TEST
+  2868	032214	000000	000000		E66411:	0			;TEST WORD MEMORY
+  2869
+  2870					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 44
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0073
+
+  2871					;THIS TEST VERIFIES THAT HRROM PLACES C(AC-RIGHT) INTO E-RIGHT AND
+  2872					;PLACES -1 INTO E-LEFT.  IN THIS CASE, C(AC) = 123456,,701234 AND
+  2873					;C(E) = 0.  HENCE, THE RESULT IN E SHOULD BE -1,,601234.
+  2874
+  2875	032215	200 05 0 00 034414 	C66500:	MOVE	5,[123456,,701234]  ;PRELOAD AC WITH 123456,,701234
+  2876	032216	402 00 0 00 000006 		SETZM	6		;CLEAR E
+  2877	032217	562 05 0 00 000006 		HRROM	5,6		;*HRROM SHOULD PLACE -1,,701234 INTO E
+  2878	032220	312 05 0 00 034414 		CAME	5,[123456,,701234]  ;PASS IF C(AC) UNCHANGED
+  2879						STOP^
+  2880	032221	254 04 0 00 032222 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2881	032222	324 00 0 00 032223 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2882									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2883									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2884									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2885	032223	312 06 0 00 034417 		CAME	6,[-1,,701234]	;PASS IF C(E) = -1,,701234
+  2886						STOP^
+  2887	032224	254 04 0 00 032225 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2888	032225	324 00 0 00 032226 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2889									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2890									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2891									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2892
+  2893
+  2894					;**********
+  2895
+  2896					;THIS TEST VERIFIES THAT HRROS PLACES -1 INTO THE LEFT HALF OF E, BUT DOES NOT
+  2897					;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO THE RESULT IN E IS
+  2898					;ALSO PLACED INTO THE AC.
+  2899					;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234
+  2900					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+  2901					;AND -1,,701234 RESPECTIVELY.
+  2902
+  2903	032226	400 00 0 00 000000 	C66600:	SETZ	0		;PRELOAD AC WITH 0
+  2904	032227	200 17 0 00 034414 		MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  2905	032230	563 00 0 00 000017 		HRROS	0,17		;HRROS SHOULD PLACE -1,,701234 INTO E
+  2906	032231	312 00 0 00 034407 		CAME	0,[0]		;PASS IF C(AC) IS UNCHANGED
+  2907						STOP^
+  2908	032232	254 04 0 00 032233 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2909	032233	324 00 0 00 032234 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2910									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2911									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2912									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2913	032234	312 17 0 00 034417 		CAME	17,[-1,,701234]	;PASS IF C(E)=-1,,701234
+  2914						STOP^
+  2915	032235	254 04 0 00 032236 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2916	032236	324 00 0 00 032237 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2917									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2918									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2919									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2920
+  2921					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 45
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0074
+
+  2922					;THIS TEST VERIFIES THAT HRROS PLACES -1 INTO THE LEFT HALF OF E, BUT DOES NOT
+  2923					;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO THE RESULT IN E IS
+  2924					;ALSO PLACED INTO THE AC.
+  2925					;IN THIS CASE, AC=16, C(AC)=0 AND C(E)=123456,,701234
+  2926					;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,701234
+  2927					;AND -1,,701234 RESPECTIVELY.
+  2928
+  2929	032237	400 16 0 00 000000 	C66610:	SETZ	16,		;PRELOAD AC WITH 0
+  2930	032240	200 17 0 00 034414 		MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  2931	032241	563 16 0 00 000017 		HRROS	16,17		;*HRROS SHOULD PLACE -1,,701234 INTO
+  2932									;BOTH AC AND E
+  2933	032242	312 16 0 00 034417 		CAME	16,[-1,,701234]	;PASS IF C(AC)=-1,,701234
+  2934						STOP^
+  2935	032243	254 04 0 00 032244 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2936	032244	324 00 0 00 032245 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2937									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2938									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2939									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2940	032245	312 17 0 00 034417 		CAME	17,[-1,,701234]	;PASS IF C(E)=-1,,701234
+  2941						STOP^
+  2942	032246	254 04 0 00 032247 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2943	032247	324 00 0 00 032250 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2944									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2945									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2946									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2947
+  2948					;**********
+  2949
+  2950					;THIS TEST VERIFIES THAT HLRO PLACES C(E-LEFT) INTO AC-RIGHT AND
+  2951					;PLACES -1 INTO AC-LEFT.  IN THIS CASE, C(AC)=0
+  2952					;C(E)=765432,,107654.  HENCE, THE RESULT IN THE AC SHOULD BE -1,,765432.
+  2953
+  2954	032250	400 04 0 00 000000 	C66700:	SETZ	4,		;CLEAR AC
+  2955	032251	200 05 0 00 034420 		MOVE	5,[765432,,107654]  ;PRELOAD E WITH 765432,,107654
+  2956	032252	564 04 0 00 000005 		HLRO	4,5		;*HLRO SHOULD PLACE -1,,765432 INTO THE AC
+  2957	032253	312 04 0 00 034421 		CAME	4,[-1,,765432]	;PASS IF C(AC)=-1,,765432
+  2958						STOP^
+  2959	032254	254 04 0 00 032255 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2960	032255	324 00 0 00 032256 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2961									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2962									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2963									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2964	032256	312 05 0 00 034420 		CAME	5,[765432,,107654]  ;PASS IF C(E) IS UNCHANGED
+  2965						STOP^
+  2966	032257	254 04 0 00 032260 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2967	032260	324 00 0 00 032261 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2968									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2969									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2970									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2971
+  2972					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 46
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0075
+
+  2973					;THIS TEST VERIFIES THAT HLROI PLACES -1,,0 INTO THE AC.
+  2974					;IN THIS CASE, C(AC)=123456,,765432 AND E=070707.  HENCE, THE
+  2975					;RESULT IN THE AC SHOULD BE -1,,0
+  2976
+  2977	032261	200 03 0 00 034334 	C67000:	MOVE	3,[123456,,765432]  ;PRELOAD AC WITH 123456,,765432
+  2978	032262	565 03 0 00 070707 		HLROI	3,070707	;*HLROI SHOULD PLACE -1,,0 INTO THE AC
+  2979	032263	312 03 0 00 034422 		CAME	3,[-1,,0]	;PASS IF C(AC)=-1,,0
+  2980						STOP^
+  2981	032264	254 04 0 00 032265 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2982	032265	324 00 0 00 032266 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2983									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2984									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2985									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2986
+  2987					;**********
+  2988
+  2989					;THIS TEST VERIFIES THAT HLROM PLACES C(AC-LEFT) INTO E RIGHT AND
+  2990					;PLACES -1 INTO E-LEFT
+  2991					;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+  2992					;HENCE, THE RESULT IN E SHOULD BE -1,,123456
+  2993
+  2994	032266	200 01 0 00 034374 	C67100:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+  2995	032267	200 02 0 00 034375 		MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+  2996	032270	566 01 0 00 000002 		HLROM	1,2		;*HLROM SHOULD PLACE -1,,123456 INTO E
+  2997	032271	312 01 0 00 034374 		CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+  2998						STOP^
+  2999	032272	254 04 0 00 032273 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3000	032273	324 00 0 00 032274 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3001									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3002									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3003									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3004	032274	312 02 0 00 034423 		CAME	2,[-1,,123456]	;PASS IF C(E)=-1,,123456
+  3005						STOP^
+  3006	032275	254 04 0 00 032276 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3007	032276	324 00 0 00 032277 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3008									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3009									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3010									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3011
+  3012					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 47
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0076
+
+  3013					;THIS TEST VERIFIES THAT HLROS PLACES C(E-LEFT) INTO E-RIGHT AND
+  3014					;PLACES -1 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+  3015					;IS ALSO PLACED INTO THE AC.
+  3016					;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234.
+  3017					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+  3018					;AND -1,,123456 RESPECTIVELY
+  3019
+  3020	032277	400 00 0 00 000000 	C67200:	SETZ	0		;PRELOAD AC WITH 0
+  3021	032300	200 07 0 00 034414 		MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  3022	032301	567 00 0 00 000007 		HLROS	0,7		;*HLROS SHOULD PLACE -1,,123456 INTO E
+  3023									;
+  3024	032302	302 00 0 00 000000 		CAIE	0,0		;PASS IF C(AC) IS UNCHANGED
+  3025						STOP^
+  3026	032303	254 04 0 00 032304 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3027	032304	324 00 0 00 032305 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3028									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3029									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3030									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3031	032305	312 07 0 00 034423 		CAME	7,[-1,,123456]	;PASS IF C(E)=-1,,123456
+  3032						STOP^
+  3033	032306	254 04 0 00 032307 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3034	032307	324 00 0 00 032310 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3035									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3036									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3037									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3038
+  3039					;**********
+  3040
+  3041					;THIS TEST VERIFIES THAT HLROS PLACES C(E-LEFT) INTO E-RIGHT AND
+  3042					;PLACES -1 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+  3043					;IS ALSO PLACED INTO THE AC.
+  3044					;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,701234.
+  3045					;HENCE, THE RESULT IN AC AND E SHOULD BE -1,,123456
+  3046					;AND -1,,123456 RESPECTIVELY.
+  3047
+  3048	032310	400 01 0 00 000000 	C67210:	SETZ	1,		;PRELOAD AC WITH 0
+  3049	032311	200 07 0 00 034414 		MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  3050	032312	567 01 0 00 000007 		HLROS	1,7		;*HLROS SHOULD PLACE -1,,123456 INTO
+  3051									;BOTH AC AND E
+  3052	032313	312 01 0 00 034423 		CAME	1,[-1,,123456]	;PASS IF C(AC)=-1,,123456
+  3053						STOP^
+  3054	032314	254 04 0 00 032315 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3055	032315	324 00 0 00 032316 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3056									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3057									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3058									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3059	032316	312 07 0 00 034423 		CAME	7,[-1,,123456]	;PASS IF C(E)=-1,,123456
+  3060						STOP^
+  3061	032317	254 04 0 00 032320 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3062	032320	324 00 0 00 032321 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3063									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3064									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3065									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3066
+  3067					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 48
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0077
+
+  3068					;THIS TEST VERIFIES THAT HRRES PLACES C(E-RIGHT) INTO E-RIGHT
+  3069					;AND PLACES BIT 18 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS NON-ZERO,
+  3070					;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  3071					;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234
+  3072					;HENCE, THE RESULT IN AC AND E SHOULD BE 0
+  3073					;AND -1,,701234 RESPECTIVELY.
+  3074
+  3075	032321	400 00 0 00 000000 	C67300:	SETZ	0,		;PRELOAD AC WITH 0
+  3076	032322	200 03 0 00 034414 		MOVE	3,[123456,,701234]  ;PRELOAD WITH 123456,,701234
+  3077	032323	573 00 0 00 000003 		HRRES	0,3		;HRRES SHOULD PLACE -1,,701234 INTO E
+  3078
+  3079	032324	332 00 0 00 000000 		SKIPE			;PASS IF C(AC) IS UNCHANGED
+  3080						STOP^
+  3081	032325	254 04 0 00 032326 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3082	032326	324 00 0 00 032327 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3083									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3084									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3085									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3086	032327	312 03 0 00 034417 		CAME	3,[-1,,701234]	;PASS IF C(E)=-1,,701234
+  3087						STOP^
+  3088	032330	254 04 0 00 032331 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3089	032331	324 00 0 00 032332 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3090									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3091									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3092									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3093
+  3094					;**********
+  3095
+  3096					;THIS TEST VERIFIES THAT HRRES, PLACES C(E-RIGHT) INTO E-RIGHT
+  3097					;AND PLACES BIT 18 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS NON-ZERO,
+  3098					;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  3099					;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,701234.
+  3100					;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,701234
+  3101					;AND -1,,701234 RESPECTIVELY.
+  3102
+  3103	032332	400 01 0 00 000000 	C67310:	SETZ	1,		;PRELOAD AC WITH 0
+  3104	032333	200 03 0 00 034414 		MOVE	3,[123456,,701234]  ;PRELOAD WITH 123456,,701234
+  3105	032334	573 01 0 00 000003 		HRRES	1,3		;HRRES SHOULD PLACE -1,,701234 INTO
+  3106									;BOTH AC AND E
+  3107	032335	312 01 0 00 034417 		CAME	1,[-1,,701234]	;PASS IF C(AC)=-1,,701234
+  3108						STOP^
+  3109	032336	254 04 0 00 032337 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3110	032337	324 00 0 00 032340 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3111									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3112									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3113									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3114	032340	312 03 0 00 034417 		CAME	3,[-1,,701234]	;PASS IF C(E)=-1,,701234
+  3115						STOP^
+  3116	032341	254 04 0 00 032342 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3117	032342	324 00 0 00 032343 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3118									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3119									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3120									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3121
+  3122					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 49
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL HWT INSTRUCTIONS                                                      SEQ 0078
+
+  3123					;THIS TEST VERIFIES THAT HLRES PLACES C(E-LEFT) INTO E-RIGHT
+  3124					;AND PLACES BIT 0 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS
+  3125					;NON-ZERO, THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  3126					;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E) 123456,,701234
+  3127					;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+  3128					;AND 0,,123456 RESPECTIVELY.
+  3129
+  3130	032343	474 00 0 00 000000 	C67400:	SETO	0,		;PRELOAD AC WITH -1,,-1
+  3131	032344	200 07 0 00 034414 		MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  3132	032345	577 00 0 00 000007 		HLRES	0,7		;*HLRES SHOULD PLACE 0,,123456 INTO E
+  3133
+  3134	032346	312 00 0 00 034301 		CAME	0,[-1]		;PASS IF C(AC) IS UNCHANGED
+  3135						STOP^
+  3136	032347	254 04 0 00 032350 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3137	032350	324 00 0 00 032351 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3138									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3139									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3140									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3141	032351	302 07 0 00 123456 		CAIE	7,123456	;PASS IF C(E)=0,,123456
+  3142						STOP^
+  3143	032352	254 04 0 00 032353 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3144	032353	324 00 0 00 032354 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3145									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3146									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3147									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3148
+  3149					;**********
+  3150
+  3151					;THIS TEST VERIFIES THAT HLRES PLACES C(E-LEFT) INTO E-RIGHT
+  3152					;AND PLACES BIT 0 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS
+  3153					;NON-ZERO, THE RESULT IN E IS ALSO PLACED INTO THE AC.
+  3154					;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E) 123456,,701234.
+  3155					;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456
+  3156					;AND 0,,123456 RESPECTIVELY.
+  3157
+  3158	032354	474 01 0 00 000000 	C67410:	SETO	1,		;PRELOAD AC WITH -1,,-1
+  3159	032355	200 07 0 00 034414 		MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+  3160	032356	577 01 0 00 000007 		HLRES	1,7		;*HLRES SHOULD PLACE 0,,123456 INTO
+  3161									;BOTH AC AND E
+  3162	032357	302 01 0 00 123456 		CAIE	1,123456	;PASS IF C(AC)=0,,123456
+  3163						STOP^
+  3164	032360	254 04 0 00 032361 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3165	032361	324 00 0 00 032362 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3166									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3167									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3168									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3169	032362	302 07 0 00 123456 		CAIE	7,123456	;PASS IF C(E)=0,,123456
+  3170						STOP^
+  3171	032363	254 04 0 00 032364 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3172	032364	324 00 0 00 032365 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3173									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3174									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3175									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3176
+  3177					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 50
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0079
+
+  3178					SUBTTL	TEST OF MSCL LOGICAL TEST INSTRUCTIONS
+  3179
+  3180					;**********
+  3181
+  3182					;THIS TEST VERIFIES THAT TRNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3183					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3184					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  3185					;HENCE, TRNE SHOULD SKIP THE NEXT INSTRUCTION.  THE AC IS ALSO
+  3186					;CHECKED FOR NO MODIFICATION.
+  3187
+  3188	032365	200 17 0 00 034414 	C67500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3189	032366	602 17 0 00 000003 		TRNE	17,3			;*TRNE SHOULD SKIP THE NEXT INSTRUCTION
+  3190						STOP^
+  3191	032367	254 04 0 00 032370 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3192	032370	324 00 0 00 032371 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3193									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3194									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3195									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3196	032371	312 17 0 00 034414 		CAME	17,[123456,,701234]	;PASS IF C AC) UNCHANGED
+  3197						STOP^
+  3198	032372	254 04 0 00 032373 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3199	032373	324 00 0 00 032374 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3200									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3201									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3202									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3203
+  3204					;**********
+  3205
+  3206					;THIS TEST VERIFIES THAT TRNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3207					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3208					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  3209					;HENCE, TRNE SHOULD NOT SKIP THE NEXT INSTRUCTION.  THE AC IS ALSO
+  3210					;CHECKED FOR NO MODIFICATION.
+  3211
+  3212	032374	200 16 0 00 034414 	C67510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3213	032375	602 16 0 00 000300 		TRNE	16,300			;*TRNE SHOULD NOT SKIP THE NEXT INSTRUCTION
+  3214	032376	334 00 0 00 000000 		SKIPA				;PASS IF TRNE DID NOT SKIP
+  3215						STOP^
+  3216	032377	254 04 0 00 032400 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3217	032400	324 00 0 00 032401 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3218									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3219									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3220									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3221	032401	312 16 0 00 034414 		CAME	16,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3222						STOP^
+  3223	032402	254 04 0 00 032403 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3224	032403	324 00 0 00 032404 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3225									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3226									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3227									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3228
+  3229					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 51
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0080
+
+  3230					;THIS TEST VERIFIES THAT TLNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3231					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3232					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  3233					;HENCE, TLNE SHOULD SKIP THE NEXT INSTRUCTION, THE AC IS ALSO
+  3234					;CHECKED FOR NO MODIFICATION.
+  3235
+  3236	032404	200 15 0 00 034414 	C67600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3237	032405	603 15 0 00 000300 		TLNE	15,300			;*TLNE CHOULD SKIP
+  3238						STOP^
+  3239	032406	254 04 0 00 032407 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3240	032407	324 00 0 00 032410 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3241									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3242									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3243									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3244	032410	312 15 0 00 034414 		CAME	15,[123456,,701234]	;PASS IF C(AC) IS UNCHANGED
+  3245						STOP^
+  3246	032411	254 04 0 00 032412 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3247	032412	324 00 0 00 032413 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3248									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3249									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3250									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3251
+  3252					;**********
+  3253
+  3254					;THIS TEST VERIFIES THAT TLNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3255					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO
+  3256					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3257					;HENCE, TLNE SHOULD NOT SKIP THE NEXT INSTRUCTION, THE AC IS ALSO
+  3258					;CHECKED FOR NO MODIFICATION
+  3259
+  3260	032413	200 14 0 00 034414 	C67610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3261	032414	603 14 0 00 000003 		TLNE	14,3			;*TLNE SHOULD NOT SKIP
+  3262	032415	334 00 0 00 000000 		SKIPA				;PASS IF TLNE DID NOT SKIP
+  3263						STOP^
+  3264	032416	254 04 0 00 032417 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3265	032417	324 00 0 00 032420 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3266									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3267									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3268									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3269	032420	312 14 0 00 034414 		CAME	14,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3270						STOP^
+  3271	032421	254 04 0 00 032422 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3272	032422	324 00 0 00 032423 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3273									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3274									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3275									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3276
+  3277					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 52
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0081
+
+  3278					;THIS TEST VERIFIES THAT TRNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+  3279					;INSTRUCTION.  HENCE, TRNA IS INDEPENDENT OF BOTH C(A) AND E
+  3280					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3281					;HENCE, TRNA SHOULD SKIP THENEXT INSTRUCTION AND NOT ALTER C(AC).
+  3282
+  3283	032423	200 13 0 00 034414 	C67700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3284	032424	604 13 0 00 000003 		TRNA	13,3			;*TRNA SHOULD ALWAYS SKIP
+  3285						STOP^
+  3286	032425	254 04 0 00 032426 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3287	032426	324 00 0 00 032427 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3288									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3289									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3290									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3291	032427	312 13 0 00 034414 		CAME	13,[123456,,701234]	;PASS IFC(AC) UNCHANGED
+  3292						STOP^
+  3293	032430	254 04 0 00 032431 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3294	032431	324 00 0 00 032432 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3295									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3296									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3297									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3298
+  3299					;**********
+  3300
+  3301					;THIS TEST VERIFhES THAT TRNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+  3302					;INSTRUCTION.  HENCE, TRNA IS INDEPENDENT OF BOTH C(A) AND E.
+  3303					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  3304					;HENCE, TRNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+  3305
+  3306	032432	200 12 0 00 034414 	C67710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3307	032433	604 12 0 00 000300 		TRNA	12,300			;*TRNA SHOQLD ALWAYS SKIP
+  3308						STOP^
+  3309	032434	254 04 0 00 032435 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3310	032435	324 00 0 00 032436 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3311									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3312									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3313									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3314	032436	312 12 0 00 034414 		CAME	12,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3315						STOP^
+  3316	032437	254 04 0 00 032440 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3317	032440	324 00 0 00 032441 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3318									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3319									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3320									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3321
+  3322					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 53
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0082
+
+  3323					;THIS TEST VERIFIaS THAT TLNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+  3324					;INSTRUCTION.  HENCE, TLNA IS INDEPENDENt OF BOTH C(AC) AND E.
+  3325					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3326					;HENCE, TLNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+  3327
+  3328	032441	200 11 0 00 034414 	C70000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3329	032442	605 11 0 00 000003 		TLNA	11,3			;*TLNA SHOULD ALWAYS SKIP
+  3330						STOP^
+  3331	032443	254 04 0 00 032444 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3332	032444	324 00 0 00 032445 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3333									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3334									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3335									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3336	032445	312 11 0 00 034414 		CAME	11,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3337						STOP^
+  3338	032446	254 04 0 00 032447 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3339	032447	324 00 0 00 032450 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3340									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3341									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3342									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3343
+  3344					;**********
+  3345
+  3346					;THIS TEST VERIFIES THAT TLNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+  3347					;INSTRUCTION.  HENCE, TLNA IS INDEPENDENT OF BOTH C(AC) AND E.
+  3348					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  3349					;HENCE, TLNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+  3350
+  3351	032450	200 10 0 00 034414 	C70010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3352	032451	605 10 0 00 000300 		TLNA	10,300			;*TLNA SHOULD ALWAYS SKIP
+  3353						STOP^
+  3354	032452	254 04 0 00 032453 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3355	032453	324 00 0 00 032454 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3356									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3357									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3358									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3359	032454	312 10 0 00 034414 		CAME	10,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3360						STOP^
+  3361	032455	254 04 0 00 032456 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3362	032456	324 00 0 00 032457 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3363									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3364									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3365									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3366
+  3367					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 54
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0083
+
+  3368					;THIS TEST VERIFIES THAT TRNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3369					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN
+  3370					;E ARE ZERO.  IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  3371					;HENCE, TRNN SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+  3372
+  3373	032457	200 07 0 00 034414 	C70100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3374	032460	606 07 0 00 000300 		TRNN	7,300			;*TRNN SHOULD SKIP
+  3375						SToP^
+  3376	032461	254 04 0 00 032462 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3377	032462	324 00 0 00 032463 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3378									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3379									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3380									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3381	032463	312 07 0 00 034414 		CAME	7,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3382						STOP^
+  3383	032464	254 04 0 00 032465 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3384	032465	324 00 0 00 032466 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3385									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3386									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3387									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3388
+  3389					;**********
+  3390
+  3391					;THIS TEST VERIFIES THAT TRNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3392					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN
+  3393					;E ARE ZERO.  IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3394					;HENCE, TRNN SHoULD NOT SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+  3395
+  3396	032466	200 06 0 00 034414 	C70110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3397	032467	606 06 0 00 000003 		TRNN	6,3			;*TRNN SHOULD NOT SKIP
+  3398	032470	334 00 0 00 000000 		SKIPA				;PASS IF TRNN DID NOT SKIP
+  3399						STOP^
+  3400	032471	254 04 0 00 032472 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3401	032472	324 00 0 00 032473 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3402									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3403									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3404									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3405	032473	312 06 0 00 034414 		CAME	6,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3406						STOP^
+  3407	032474	254 04 0 00 032475 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3408	032475	324 00 0 00 032476 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3409									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3410									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3411									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3412
+  3413					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 55
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0084
+
+  3414					;THIS TEST VERIFIES THAT TLNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3415					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3416					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3417					;HENCE, TLNN SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+  3418
+  3419	032476	200 05 0 00 034414 	C70200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3420	032477	607 05 0 00 000003 		TLNN	5,3			;*TLNN SHOULD SKIP
+  3421						STOP^
+  3422	032500	254 04 0 00 032501 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3423	032501	324 00 0 00 032502 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3424									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3425									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3426									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3427	032502	312 05 0 00 034414 		CAME	5,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3428						STOP^
+  3429	032503	254 04 0 00 032504 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3430	032504	324 00 0 00 032505 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3431									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3432									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3433									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3434
+  3435					;**********
+  3436
+  3437					;THIS TEST VERIFIES thAT TLNN SkIPS THE NEXT SEQUENTIAL INSTRUcTION
+  3438					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3439					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  3440					;HENCE, TLNN SHOULD NOT SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+  3441
+  3442	032505	200 04 0 00 034414 	C70210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3443	032506	607 04 0 00 000300 		TLNN	4,300			;*TLNN SHOULD NOT SKIP
+  3444	032507	334 00 0 00 000000 		SKIPA				;PASS IF TLNN DOES NOT SKIP
+  3445						STOP^
+  3446	032510	254 04 0 00 032511 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3447	032511	324 00 0 00 032512 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3448									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3449									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3450									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3451	032512	312 04 0 00 034414 		CAME	4,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3452						STOP^
+  3453	032513	254 04 0 00 032514 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3454	032514	324 00 0 00 032515 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3455									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3456									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3457									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3458
+  3459					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 56
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0085
+
+  3460					;THIS TEST VERIFIES THAT TSNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3461					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+  3462					;BOTH HALVES SNAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+  3463					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  3464					;HENCE, TSNE SHOULD SKIP THE NEXT INSTRUCtION AND
+  3465					;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED.
+  3466
+  3467	032515	200 03 0 00 034414 	C70300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3468	032516	200 04 0 00 034424 		MOVE	4,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+  3469	032517	613 03 0 00 000004 		TSNE	3,4			;*TSNE SHOULD SKIP
+  3470						STOP^
+  3471	032520	254 04 0 00 032521 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3472	032521	324 00 0 00 032522 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3473									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3474									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3475									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3476	032522	312 03 0 00 034414 		CAME	3,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3477						STOP^
+  3478	032523	254 04 0 00 032524 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3479	032524	324 00 0 00 032525 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3480									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3481									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3482									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3483	032525	312 04 0 00 034424 		CAME	4,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  3484						STOP^
+  3485	032526	254 04 0 00 032527 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3486	032527	324 00 0 00 032530 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3487									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3488									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3489									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3490
+  3491					;**********
+  3492
+  3493					;THIS TEST VERIFIES THAT TSNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3494					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+  3495					;BOTH HALVES SNAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+  3496					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654323
+  3497					;HENCE, TSNE SHOULD NOT SKIP THE NEXT INSTRUCTION AND
+  3498					;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED.
+  3499
+  3500	032530	200 02 0 00 034414 	C70310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3501	032531	200 03 0 00 034425 		MOVE	3,[76543,,654323]	;PRELOAD E WITH 076543,,654323
+  3502	032532	613 02 0 00 000003 		TSNE	2,3			;*TSNE SHOULD NOT SKIP
+  3503	032533	334 00 0 00 000000 		SKIPA				;PASS IF TSOE DId NOT SKIP
+  3504						STOP^
+  3505	032534	254 04 0 00 032535 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3506	032535	324 00 0 00 032536 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3507									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3508									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3509									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3510	032536	312 02 0 00 034414 		CAME	2,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3511						STOP^
+  3512	032537	254 04 0 00 032540 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3513	032540	324 00 0 00 032541 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3514									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 56-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0086
+
+  3515									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3516									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3517	032541	312 03 0 00 034425 		CAME	3,[76543,,654323]	;PASS IF C(E) UNCHANGED
+  3518						STOP^
+  3519	032542	254 04 0 00 032543 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3520	032543	324 00 0 00 032544 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3521									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3522									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3523									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3524
+  3525					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 57
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0087
+
+  3526					;THIS TEST VERIFIES THAT TSNA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3527					;NEITHER AC NOR E ARE AFFECTED.
+  3528					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  3529					;HENCE, TSNA SHOULD SKIP THE NEXT INSTRUCTION AND
+  3530					;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+  3531
+  3532	032544	200 01 0 00 034414 	C70400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3533	032545	200 02 0 00 034424 		MOVE	2,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+  3534	032546	615 01 0 00 000002 		TSNA	1,2			;*TSNA SHOULD SKIP
+  3535						STOP^
+  3536	032547	254 04 0 00 032550 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3537	032550	324 00 0 00 032551 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3538									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3539									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3540									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3541	032551	312 01 0 00 034414 		CAME	1,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3542						STOP^
+  3543	032552	254 04 0 00 032553 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3544	032553	324 00 0 00 032554 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3545									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3546									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3547									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3548	032554	312 02 0 00 034424 		CAME	2,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  3549						STOP^
+  3550	032555	254 04 0 00 032556 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3551	032556	324 00 0 00 032557 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3552									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3553									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3554									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3555
+  3556					;**********
+  3557
+  3558					;THIS TEST VERIFIES THAT TSNA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3559					;NEITHER AC NOR E ARE EFFECTED.
+  3560					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654323
+  3561					;HENCE, TSNA SHOULD SKIP THE NEXT INSTRUCTION AND
+  3562					;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+  3563
+  3564	032557	200 00 0 00 034414 	C70410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3565	032560	200 01 0 00 034425 		MOVE	1,[76543,,654323]	;PRELOAD E WITH 076543,,654323
+  3566	032561	615 00 0 00 000001 		TSNA	0,1			;*TSNA SHOULD SKIP
+  3567						STOP^
+  3568	032562	254 04 0 00 032563 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3569	032563	324 00 0 00 032564 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3570									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3571									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3572									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3573	032564	312 01 0 00 034425 		CAME	1,[76543,,654323]	;PASS IF C(E) UNCHANGED
+  3574						STOP^
+  3575	032565	254 04 0 00 032566 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3576	032566	324 00 0 00 032567 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3577									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3578									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3579									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3580
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 57-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0088
+
+  3581					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 58
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0089
+
+  3582					;THIS TEST VERIFIES THAT TSNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3583					;IF AND ONLY IF NOT ALL HITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+  3584					;BOTH HALVES SWAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+  3585					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076547,,654321
+  3586					;HENCE, TSNN SHOULD SKIP THE NEXT INSTRUCTION AND
+  3587					;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+  3588
+  3589	032567	200 17 0 00 034414 	C70500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3590	032570	200 00 0 00 034426 		MOVE	0,[76547,,654321]	;PRELOAD E WITH 076547,,654321
+  3591	032571	617 17 0 00 000000 		TSNN	17,0			;*TSNN SHOULD SKIP
+  3592						STOP^
+  3593	032572	254 04 0 00 032573 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3594	032573	324 00 0 00 032574 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3595									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3596									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3597									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3598	032574	312 17 0 00 034414 		CAME	17,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3599						STOP^
+  3600	032575	254 04 0 00 032576 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3601	032576	324 00 0 00 032577 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3602									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3603									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3604									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3605	032577	312 00 0 00 034426 		CAME	0,[76547,,654321]	;PASS IF C(E) UNCHANGED
+  3606						STOP^
+  3607	032600	254 04 0 00 032601 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3608	032601	324 00 0 00 032602 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3609									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3610									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3611									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3612
+  3613					;**********
+  3614
+  3615					;THIS TEST VERIFIES THAT TSNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3616					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+  3617					;BOTH HALVES SWAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+  3618					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  3619					;HENCE, TSNN SHOULD NOT SKIP THE NEXT INSTRUCTION AND
+  3620					;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+  3621
+  3622	032602	200 16 0 00 034414 	C70510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3623	032603	200 17 0 00 034424 		MOVE	17,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+  3624	032604	617 16 0 00 000017 		TSNN	16,17			;*TSNN SHOULD NOT SKIP
+  3625	032605	334 00 0 00 000000 		SKIPA				;PASS IF TSNN DID NOT SKIP
+  3626						STOP^
+  3627	032606	254 04 0 00 032607 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3628	032607	324 00 0 00 032610 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3629									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3630									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3631									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3632	032610	312 16 0 00 034414 		CAME	16,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+  3633						STOP^
+  3634	032611	254 04 0 00 032612 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3635	032612	324 00 0 00 032613 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3636									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 58-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0090
+
+  3637									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3638									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3639	032613	312 17 0 00 034424 		CAME	17,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  3640						STOP^
+  3641	032614	254 04 0 00 032615 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3642	032615	324 00 0 00 032616 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3643									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3644									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3645									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3646
+  3647					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 59
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0091
+
+  3648					;THIS TEST VERIFIES THAT TRZ CHANGES ALL BITS IN THE AC-RIGHT WHICH
+  3649					;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+  3650					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  3651					;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701234
+  3652
+  3653	032616	200 15 0 00 034414 	C70600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234]
+  3654	032617	620 12 0 00 000003 		TRZ	12,3			;*TRZ SHOULD PLACE 123456,,701234 INTO
+  3655										;THE AC AND NOT SKIP
+  3656	032620	334 00 0 00 000000 		SKIPA				;PASS IF TRZ DOES NOT SKIP
+  3657						STOP^
+  3658	032621	254 04 0 00 032622 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3659	032622	324 00 0 00 032623 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3660									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3661									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3662									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3663	032623	312 15 0 00 034414 		CAME	15,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  3664						STOP^
+  3665	032624	254 04 0 00 032625 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3666	032625	324 00 0 00 032626 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3667									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3668									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3669									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3670
+  3671					;**********
+  3672
+  3673					;THIS TEST VERIFIES THAT TRZ CHANGES ALL BITS IN THE AC-RIGHT WHICH
+  3674					;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+  3675					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  3676					;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701034
+  3677
+  3678	032626	200 14 0 00 034414 	C70610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3679	032627	620 14 0 00 000300 		TRZ	14,300			;*TRZ SHOULD PLACE 123456,,701234 INTO
+  3680										;THE ACAND NOT SKIP
+  3681	032630	334 00 0 00 000000 		SKIPA				;PASS IF TRX DOES NOT SKIP
+  3682						STOP^
+  3683	032631	254 04 0 00 032632 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3684	032632	324 00 0 00 032633 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3685									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3686									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3687									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3688	032633	312 14 0 00 034427 		CAME	14,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+  3689						STOP^
+  3690	032634	254 04 0 00 032635 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3691	032635	324 00 0 00 032636 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3692									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3693									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3694									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3695
+  3696					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 60
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0092
+
+  3697					;THIS TEST VERIFIES THAT TLZ CHANGES ALL BITS IN THE AC-LEFT WHICH
+  3698					;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+  3699					;IN THIS CACE, C(AC)=123456,,701234 AND E=300
+  3700					;HENCE, THE RESULT IN THE AC SHOUL BE 123456,,701234
+  3701
+  3702	032636	200 13 0 00 034414 	C70700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3703	032637	621 13 0 00 000300 		TLZ	13,300			;*TLZ SHOULD PLACE 123456,,701234 INTO
+  3704										;THE AC AND NOT SKIP
+  3705	032640	334 00 0 00 000000 		SKIPA				;PASS IF TLZ DOES NOT SKIP
+  3706						STOP^
+  3707	032641	254 04 0 00 032642 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3708	032642	324 00 0 00 032643 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3709									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3710									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3711									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3712	032643	312 13 0 00 034414 		CAME	13,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  3713						STOP^
+  3714	032644	254 04 0 00 032645 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3715	032645	324 00 0 00 032646 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3716									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3717									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3718									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3719
+  3720					;**********
+  3721
+  3722					;THIS TEST VERIFIES THAT TLZ CHANGES ALL BITS IN THE AC-LEFT WHICH
+  3723					;CORRSPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+  3724					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  3725					;HENCE, THE RESULT IN THE AC SHOULD BE 123454,,701234
+  3726
+  3727	032646	200 12 0 00 034414 	C70710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3728	032647	621 12 0 00 000003 		TLZ	12,3			;*TLZ SHOULD PLACE 123454,,701234 INTO
+  3729										;THE AC AND NOT SKIP
+  3730	032650	334 00 0 00 000000 		SKIPA				;PASS IF TLZ DOES NOT SKIP
+  3731						STOP^
+  3732	032651	254 04 0 00 032652 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3733	032652	324 00 0 00 032653 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3734									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3735									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3736									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3737	032653	312 12 0 00 034430 		CAME	12,[123454,,701234]	;PASS IF C(AC)=123454,701234
+  3738						STOP^
+  3739	032654	254 04 0 00 032655 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3740	032655	324 00 0 00 032656 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3741									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3742									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3743									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3744
+  3745					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 61
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0093
+
+  3746					;THIS TEST VERIFIES THAT TRZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3747					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3748					;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+  3749					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  3750					;HENCE, TRZE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  3751					;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+  3752
+  3753	032656	200 11 0 00 034414 	C71000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3754	032657	622 11 0 00 000003 		TRZE	11,3			;*TRZE SHOULD SKIP AND
+  3755										;PLACE 123456,,701234 INTO THE AC
+  3756						STOP^
+  3757	032660	254 04 0 00 032661 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3758	032661	324 00 0 00 032662 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3759									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3760									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3761									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3762	032662	312 11 0 00 034414 		CAME	11,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  3763						STOP^
+  3764	032663	254 04 0 00 032664 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3765	032664	324 00 0 00 032665 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3766									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3767									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3768									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3769
+  3770					;**********
+  3771
+  3772					;THIS TEST VERIFIES THAT TRZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3773					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRSPONDING TO 1'S IN E ARE ZERO.
+  3774					;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+  3775					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  3776					;HENCE, TRZE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  3777					;AND THE RESULT IN THE AC SHOUDL BE 123456,,701034
+  3778
+  3779	032665	200 10 0 00 034414 	C71010:	MOVE	10,[123456,,701234]	;PRELOAD AC WIT@ 123456,,701234
+  3780	032666	622 10 0 00 000300 		TRZE	10,300			;*TRZE SHOULD PLACE 123456,,701034 INTO
+  3781										;THE AC AND NOT SKIP
+  3782	032667	334 00 0 00 000000 		SKIPA				;PASS IF TRZE DOES NOT SKIP
+  3783						STOP^
+  3784	032670	254 04 0 00 032671 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3785	032671	324 00 0 00 032672 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3786									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3787									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3788									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3789	032672	312 10 0 00 034427 		CAME	10,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+  3790						STOP^
+  3791	032673	254 04 0 00 032674 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3792	032674	324 00 0 00 032675 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3793									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3794									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3795									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3796
+  3797					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 62
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0094
+
+  3798					;THIS TEST VERIFIES THAT TLZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3799					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3800					;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+  3801					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  3802					;HENCE, TLZE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  3803					;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+  3804
+  3805	032675	200 07 0 00 034414 	C71100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3806	032676	623 07 0 00 000300 		TLZE	7,300			;*TLZE SHOULD SKIP AND
+  3807										;PLACE 123456,,701234 INTO THE AC
+  3808						STOP^
+  3809	032677	254 04 0 00 032700 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3810	032700	324 00 0 00 032701 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3811									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3812									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3813									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3814	032701	312 07 0 00 034414 		CAME	7,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  3815						STOP^
+  3816	032702	254 04 0 00 032703 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3817	032703	324 00 0 00 032704 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3818									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3819									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3820									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3821
+  3822					;**********
+  3823
+  3824					;THIS TEST VERIFIES THAT TLZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3825					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3826					;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+  3827					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  3828					;HENCE, TLZE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  3829					;AND THE RESULT IN THE AC SHOULD BE 123454,,701234
+  3830
+  3831	032704	200 06 0 00 034414 	C71110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3832	032705	623 06 0 00 000003 		TLZE	6,3			;*TLZE SHOULD PLACE 123454,,701234 INTO
+  3833										;THE AC AND NOT SKIP
+  3834	032706	334 00 0 00 000000 		SKIPA				;PASS IF TLZE DOES NOT SKIP
+  3835						STOP^
+  3836	032707	254 04 0 00 032710 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3837	032710	324 00 0 00 032711 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3838									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3839									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3840									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3841	032711	312 06 0 00 034430 		CAME	6,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+  3842						STOP^
+  3843	032712	254 04 0 00 032713 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3844	032713	324 00 0 00 032714 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3845									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3846									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3847									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3848
+  3849					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 63
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0095
+
+  3850					;THIS TEST VERIFIES THAT TRZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3851					;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+  3852					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3853					;HENCE, TRZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  3854					;THE AC SHOULD BE 123456,,701234
+  3855
+  3856	032714	200 05 0 00 034414 	C71200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3857	032715	624 05 0 00 000003 		TRZA	5,3			;*TRZA SHOULD SKIP AND
+  3858										;PLACE 123456,,701234 INTO THE AC
+  3859						STOP^
+  3860	032716	254 04 0 00 032717 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3861	032717	324 00 0 00 032720 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3862									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3863									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3864									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3865	032720	312 05 0 00 034414 		CAME	5,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  3866						STOP^
+  3867	032721	254 04 0 00 032722 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3868	032722	324 00 0 00 032723 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3869									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3870									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3871									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3872
+  3873					;**********
+  3874
+  3875					;THIS TEST VERIFIES THAT TRZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3876					;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+  3877					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  3878					;HENCE, TRZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  3879					;THE AC SHOULD BE 123456,,701234.
+  3880
+  3881	032723	200 04 0 00 034414 	C71210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3882	032724	624 04 0 00 000300 		TRZA	4,300			;*TRZA SHOULD SKIP AND
+  3883										;PLACE 123456,,701034 INTO THE AC
+  3884						STOP^
+  3885	032725	254 04 0 00 032726 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3886	032726	324 00 0 00 032727 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3887									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3888									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3889									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3890	032727	312 04 0 00 034427 		CAME	4,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+  3891						STOP^
+  3892	032730	254 04 0 00 032731 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3893	032731	324 00 0 00 032732 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3894									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3895									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3896									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3897
+  3898					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 64
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0096
+
+  3899					;THIS TEST VERIFIES THAT TLZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRQCTION
+  3900					;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+  3901					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3902					;HENCE, TLZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  3903					;THE AC SHOULD BE 123454,,701234.
+  3904
+  3905	032732	200 03 0 00 034414 	C71300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3906	032733	625 03 0 00 000003 		TLZA	3,3			;*TLZA SHOULD SKIP AND
+  3907										;PLACE 123454,,701234 INTO THE AC
+  3908						STOP^
+  3909	032734	254 04 0 00 032735 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3910	032735	324 00 0 00 032736 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3911									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3912									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3913									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3914	032736	312 03 0 00 034430 		CAME	3,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+  3915						STOP^
+  3916	032737	254 04 0 00 032740 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3917	032740	324 00 0 00 032741 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3918									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3919									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3920									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3921
+  3922					;**********
+  3923
+  3924					;THIS TEST VERIFIES THAT TLZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3925					;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+  3926					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  3927					;HENCE, TLZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  3928					;THE AC SHOULD BE 123456,,701234.
+  3929
+  3930	032741	200 02 0 00 034414 	C71310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3931	032742	625 02 0 00 000300 		TLZA	2,300			;*TLZA SHOULD SKIP AND
+  3932										;PLACE 123456,,701234 INTO THE AC
+  3933						STOP^
+  3934	032743	254 04 0 00 032744 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3935	032744	324 00 0 00 032745 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3936									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3937									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3938									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3939	032745	312 02 0 00 034414 		CAME	2,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  3940						STOP^
+  3941	032746	254 04 0 00 032747 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3942	032747	324 00 0 00 032750 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3943									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3944									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3945									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3946
+  3947					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 65
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0097
+
+  3948					;THIS TEST VERIFIES THAT TRZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3949					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3950					;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+  3951					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  3952					;HENCE, TRZN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  3953					;AND THE RESULT IN THE AC SHOULD BE 123456,,701034.
+  3954
+  3955	032750	200 01 0 00 034414 	C71400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  3956	032751	626 01 0 00 000300 		TRZN	1,300			;*TRZN SHOULD SKIP AND
+  3957										;PLACE 123456,,701034 INTO THE AC
+  3958						STOP^
+  3959	032752	254 04 0 00 032753 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3960	032753	324 00 0 00 032754 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3961									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3962									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3963									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3964	032754	312 01 0 00 034427 		CAME	1,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+  3965						STOP^
+  3966	032755	254 04 0 00 032756 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3967	032756	324 00 0 00 032757 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3968									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3969									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3970									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3971
+  3972					;**********
+  3973
+  3974					;THIS TEST VERIFIES THAT TRZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  3975					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  3976					;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+  3977					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  3978					;HENCE, TRZN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  3979					;AND THE RESULT IN THE AC SHOULD BE 123456,,701234.
+  3980
+  3981	032757	200 00 0 00 034414 	C71410:	MOVE	0,[123456,,701234]	;PRELOAD AC WATH 123456,,701234
+  3982	032760	626 00 0 00 000003 		TRZN	0,3			;*TRZN SHOULD PLACE 123456,,701234 INTO
+  3983										;THE AC AND NOT SKIP
+  3984	032761	334 00 0 00 000000 		SKIPA				;PASS IF TRZN DOES NOT SKIP
+  3985						STOP^
+  3986	032762	254 04 0 00 032763 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3987	032763	324 00 0 00 032764 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3988									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3989									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3990									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3991	032764	312 00 0 00 034414 		CAME	0,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  3992						STOP^
+  3993	032765	254 04 0 00 032766 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  3994	032766	324 00 0 00 032767 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  3995									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  3996									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  3997									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  3998
+  3999					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 66
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0098
+
+  4000					;THIS TEST VERIFIES THAT TLZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4001					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4002					;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+  4003					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  4004					;HENCE, TLZN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4005					;AND THE RESULT IN THE AC SHOULD BE 123454,,701234.
+  4006
+  4007	032767	200 17 0 00 034414 	C71500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4008	032770	627 17 0 00 000003 		TLZN	17,3			;TLZN SHOULD SKIP AND
+  4009										;PLACE 123454,,701234 INTO THE AC
+  4010						STOP^
+  4011	032771	254 04 0 00 032772 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4012	032772	324 00 0 00 032773 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4013									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4014									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4015									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4016	032773	312 17 0 00 034430 		CAME	17,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+  4017						STOP^
+  4018	032774	254 04 0 00 032775 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4019	032775	324 00 0 00 032776 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4020									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4021									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4022									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4023
+  4024					;**********
+  4025
+  4026					;THIS TEST VERIFIES THAT TLZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4027					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4028					;THESE MASKED AC BIPS ARE THEN CHANGED TO ZEROS.
+  4029					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  4030					;HENCE, TLZN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4031					;AND THE RESULT IN THE AC SHOULD BE 123456,,701234.
+  4032
+  4033	032776	200 16 0 00 034414 	C71510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4034	032777	627 16 0 00 000300 		TLZN	16,300			;*TLZN SHOULD PLACE 123456,,701234 INTO
+  4035										;THE AC AND NOT SKIP
+  4036	033000	334 00 0 00 000000 		SKIPA				;PASS IF TLZN DOES NOT SKIP
+  4037						STOP^
+  4038	033001	254 04 0 00 033002 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4039	033002	324 00 0 00 033003 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4040									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4041									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4042									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4043	033003	312 16 0 00 034414 		CAME	16,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  4044						STOP^
+  4045	033004	254 04 0 00 033005 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4046	033005	324 00 0 00 033006 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4047									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4048									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4049									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4050
+  4051					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 67
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0099
+
+  4052					;THIS TEST VERIFIES THAT TSZ CLEARS ALL BITS OF THE AC WHICH
+  4053					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+  4054					;NOT SKIP THE NEXT INSTRUCTION. C(E) IS NOT AFFECTED.
+  4055					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321.
+  4056					;HENCE, TSZ SHOULD NOT SKIP AND C(AC) SHOULD BE 123456,,701234.
+  4057
+  4058	033006	200 15 0 00 034414 	C71600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4059	033007	200 16 0 00 034424 		MOVE	16,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+  4060	033010	631 15 0 00 000016 		TSZ	15,16			;*TSZ SHOULD NOT SKIP AND
+  4061										;PLACE 123456,,701234 INTO THE AC
+  4062	033011	334 00 0 00 000000 		SKIPA				;PASS IF TSZ DID NOT SKIP
+  4063						STOP^
+  4064	033012	254 04 0 00 033013 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4065	033013	324 00 0 00 033014 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4066									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4067									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4068									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4069	033014	312 15 0 00 034414 		CAME	15,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  4070						STOP^
+  4071	033015	254 04 0 00 033016 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4072	033016	324 00 0 00 033017 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4073									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4074									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4075									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4076	033017	312 16 0 00 034424 		CAME	16,[76543,,654321]	;PASS IF C(E) UNCHANCED
+  4077						STOP^
+  4078	033020	254 04 0 00 033021 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4079	033021	324 00 0 00 033022 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4080									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4081									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4082									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4083
+  4084					;**********
+  4085
+  4086					;THIS TEST VERIFIES THAT TSZ CLEARS ALL BITS OF THE AC WHICH
+  4087					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+  4088					;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED.
+  4089					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070.
+  4090					;HENCE, TSZ SHOULD NOT SKIP AND C(AC) SHOULD BE 020406,,501210.
+  4091
+  4092	033022	200 14 0 00 034414 	C71610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4093	033023	200 15 0 00 034431 		MOVE	15,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+  4094	033024	631 14 0 00 000015 		TSZ	14,15			;*TSZ SHOULD NOT SKIP AND
+  4095										;PLACE 020406,,501210 INTO THE AC
+  4096	033025	334 00 0 00 000000 		SKIPA				;PASS IF TSZ DID NOT SKIP
+  4097						STOP^
+  4098	033026	254 04 0 00 033027 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4099	033027	324 00 0 00 033030 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4100									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4101									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4102									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4103	033030	312 14 0 00 034432 		CAME	14,[020406,,501210]	;PASS IF C(AC)=020406,,501210
+  4104						STOP^
+  4105	033031	254 04 0 00 033032 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4106	033032	324 00 0 00 033033 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 67-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0100
+
+  4107									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4108									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4109									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4110	033033	312 15 0 00 034431 		CAME	15,[252525,,707070]	;PASS IF C(E) UNCHANGED
+  4111						STOP^
+  4112	033034	254 04 0 00 033035 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4113	033035	324 00 0 00 033036 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4114									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4115									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4116									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4117
+  4118					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 68
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0101
+
+  4119					;THIS TEST VERIFIES THAT TDZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4120					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  4121					;C(E).
+  4122					;AC BITS ARE THEN CHANGED TO ZERO.
+  4123					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543.
+  4124					;HENCE, TDZE SHOULD SKIP AND THE RESULT IN THE AC
+  4125					;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+  4126
+  4127	033036	200 13 0 00 034414 	C71700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4128	033037	200 14 0 00 034433 		MOVE	14,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  4129	033040	632 13 0 00 000014 		TDZE	13,14			;*TDZE SHOULD SKIP AND
+  4130										;PLACE 123456,,701234 INTO THE AC
+  4131						STOP^
+  4132	033041	254 04 0 00 033042 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4133	033042	324 00 0 00 033043 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4134									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4135									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4136									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4137	033043	312 13 0 00 034414 		CAME	13,[123456,,701234]	;PASS IF C(AC)=123456,,701234]
+  4138						STOP^
+  4139	033044	254 04 0 00 033045 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4140	033045	324 00 0 00 033046 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4141									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4142									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4143									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4144	033046	312 14 0 00 034433 		CAME	14,[654321,,076543]	;PASS IF C(E) UNCHANGED
+  4145						STOP^
+  4146	033047	254 04 0 00 033050 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4147	033050	324 00 0 00 033051 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4148									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4149									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4150									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4151
+  4152					;**********
+  4153
+  4154					;THIS TEST VERIFIES THAT TDZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4155					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  4156					;C(E) ARE ZERO. THESE MASKED
+  4157					;AC BITS ARE THEN CHANGED TO ZERO.
+  4158					;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 754321,,076543
+  4159					;HENCE, TDZE SHOULD NOT SKIP AND THE RESULT IN AC
+  4160					;SHOULD BE 023456,,701234 C(E) IS NOT AFFECTED
+  4161
+  4162	033051	200 12 0 00 034414 	C71710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4163	033052	200 13 0 00 034434 		MOVE	13,[754321,,076543]	;PRELOAD E WITH 754321,,076543
+  4164	033053	632 12 0 00 000013 		TDZE	12,13			;*TDZE SHOULD NOT SKIP AND
+  4165										;PLACE 023456,,701234 INTO THE AC
+  4166	033054	334 00 0 00 000000 		SKIPA				;PASS IF TDZE DOES NOT SKIP
+  4167						STOP^
+  4168	033055	254 04 0 00 033056 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4169	033056	324 00 0 00 033057 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4170									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4171									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4172									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4173	033057	312 12 0 00 034435 		CAME	12,[023456,,701234]	;PASS IF C(AC)= 023456,,701234
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 68-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0102
+
+  4174						STOP^
+  4175	033060	254 04 0 00 033061 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4176	033061	324 00 0 00 033062 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4177									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4178									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4179									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4180	033062	312 13 0 00 034434 		CAME	13,[754321,,076543]	;PASS IF C(E) UNCHANGED
+  4181						STOP^
+  4182	033063	254 04 0 00 033064 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4183	033064	324 00 0 00 033065 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4184									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4185									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4186									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4187
+  4188					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 69
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0103
+
+  4189					;THIS TEST VERIFIES THAT TSZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4190					;IF AND ONLY IF ALL BITS IN THE AC CORRECPONDING TO 1'S IN
+  4191					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  4192					;AC BITS ARE THEN CHANGED TO ZERO.
+  4193					;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 076543,,654321
+  4194					;HENCE, TSZE SHOULD SKIP AND THE RESULT IN AC
+  4195					;SHOULD BE 123456,,701234 C(E) IS NOT AFFECTED
+  4196
+  4197	033065	200 11 0 00 034414 	C72000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4198	033066	200 12 0 00 034424 		MOVE	12,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+  4199	033067	633 11 0 00 000012 		TSZE	11,12			;*TSZE SHOULD SKIP AND
+  4200										;PLACE 123456,,701234 INTO THE AC
+  4201						STOP^
+  4202	033070	254 04 0 00 033071 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4203	033071	324 00 0 00 033072 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4204									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4205									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4206									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4207	033072	312 11 0 00 034414 		CAME	11,[123456,,701234]	;PASS IF C(AC)= 123456,,701234
+  4208						STOP^
+  4209	033073	254 04 0 00 033074 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4210	033074	324 00 0 00 033075 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4211									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4212									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4213									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4214	033075	312 12 0 00 034424 		CAME	12,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  4215						STOP^
+  4216	033076	254 04 0 00 033077 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4217	033077	324 00 0 00 033100 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4218									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4219									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4220									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4221
+  4222					;**********
+  4223
+  4224					;THIS TEST VERIFIES THAT TSZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4225					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  4226					;C (E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  4227					;AC BITS ARE THEN CHANGED TO ZERO
+  4228					;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 076543,,657321
+  4229					;HENCE, TSZE SHOULD NOT SKIP AND THE RESULT IN AC
+  4230					;SHOULD BE 120456,,701234 C(E) IS NOT AFFECTED
+  4231
+  4232	033100	200 10 0 00 034414 	C72010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4233	033101	200 11 0 00 034436 		MOVE	11,[76543,,657321]	;PRELOAD E WITH 076543,,654321
+  4234	033102	633 10 0 00 000011 		TSZE	10,11			;*TSZE SHOULD NOT SKIP AND
+  4235										;PLACE 120456,,701234 INTO THE AC
+  4236	033103	334 00 0 00 000000 		SKIPA				;PASS IF TSZE DID NOT SKIP
+  4237						STOP^
+  4238	033104	254 04 0 00 033105 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4239	033105	324 00 0 00 033106 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4240									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4241									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4242									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4243	033106	312 10 0 00 034437 		CAME	10,[120456,,701234]	;PASS IF C(AC)= 120456,,701234
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 69-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0104
+
+  4244						STOP^
+  4245	033107	254 04 0 00 033110 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4246	033110	324 00 0 00 033111 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4247									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4248									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4249									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4250	033111	312 11 0 00 034436 		CAME	11,[76543,,657321]	;PASS IF C(E) UNCHANGED
+  4251						STOP^
+  4252	033112	254 04 0 00 033113 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4253	033113	324 00 0 00 033114 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4254									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4255									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4256									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4257
+  4258
+  4259					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 70
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0105
+
+  4260					;THIS TEST VERIFIES THAT TDZA CLEARS ALL BITS OF THE AC WHICH
+  4261					;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+  4262					;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+  4263					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)= 654321,,076543
+  4264					;HENCE, TD2A SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+  4265
+  4266	033114	200 07 0 00 034414 	C72100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4267	033115	200 10 0 00 034433 		MOVE	10,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  4268	033116	634 07 0 00 000010 		TDZA	7,10			;*TDZA SHOULD SKIP AND
+  4269										;PLACE 123456,,701234 INTO THE AC
+  4270						STOP^
+  4271	033117	254 04 0 00 033120 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4272	033120	324 00 0 00 033121 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4273									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4274									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4275									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4276	033121	312 07 0 00 034414 		CAME	7,[123456,,701234]	;PASS IF C(AC)= 123456,,701234
+  4277						STOP^
+  4278	033122	254 04 0 00 033123 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4279	033123	324 00 0 00 033124 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4280									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4281									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4282									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4283	033124	312 10 0 00 034433 		CAME	10,[654321,,076543]	;PASS IF C(AC)=123456,,701234
+  4284						STOP^
+  4285	033125	254 04 0 00 033126 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4286	033126	324 00 0 00 033127 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4287									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4288									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4289									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4290	033127	312 10 0 00 034433 		CAME	10,[654321,,076543]	;PASS IF C(E) UNCHANGED
+  4291						STOP^
+  4292	033130	254 04 0 00 033131 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4293	033131	324 00 0 00 033132 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4294									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4295									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4296									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4297
+  4298					;**********
+  4299
+  4300					;THIS TEST VERIFIES THAT TDZA CLEARS ALL BITS OF THE AC WHICH
+  4301					;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+  4302					;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  4303					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+  4304					;HENCE, TDZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 121052,,000204
+  4305
+  4306	033132	200 06 0 00 034414 	C72110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4307	033133	200 07 0 00 034431 		MOVE	7,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+  4308	033134	634 06 0 00 000007 		TDZA	6,7			;*TDZA SHOULD SKIP AND
+  4309									;PLACE 121052,,000204 INTO THE AC
+  4310						STOP^
+  4311	033135	254 04 0 00 033136 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4312	033136	324 00 0 00 033137 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4313									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4314									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 70-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0106
+
+  4315									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4316	033137	312 06 0 00 034440 		CAME	6,[121052,,000204]	;PASS IF C(AC)=121052,,000204
+  4317						STOP^
+  4318	033140	254 04 0 00 033141 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4319	033141	324 00 0 00 033142 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4320									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4321									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4322									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4323	033142	312 07 0 00 034431 		CAME	7,[252525,,707070]	;PASS IF C(E) UNCHANGED
+  4324						STOP^
+  4325	033143	254 04 0 00 033144 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4326	033144	324 00 0 00 033145 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4327									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4328									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4329									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4330
+  4331					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 71
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0107
+
+  4332					;THIS TEST VERIFIES TH`T TSZA CLEARS AHL BITS OF THE AC WHICH
+  4333					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+  4334					;SKIPS THE NEXT INSTRUCTION. C(E) IS NOT AFFECTED.
+  4335					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  4336					;HENCE, TSZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+  4337
+  4338	033145	200 05 0 00 034414 	C72200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4339	033146	200 06 0 00 034424 		MOVE	6,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+  4340	033147	635 05 0 00 000006 		TSZA	5,6			;*TSZA SHOULD SKIP AND
+  4341										;PLACE 123456,,701234 INTO THE AC
+  4342						STOP^
+  4343	033150	254 04 0 00 033151 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4344	033151	324 00 0 00 033152 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4345									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4346									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4347									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4348	033152	312 05 0 00 034414 		CAME	5,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  4349						STOP^
+  4350	033153	254 04 0 00 033154 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4351	033154	324 00 0 00 033155 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4352									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4353									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4354									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4355	033155	312 06 0 00 034424 		CAME	6,[076543,,654321]	;PASS IF C(E) UNCHANGED
+  4356						STOP^
+  4357	033156	254 04 0 00 033157 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4358	033157	324 00 0 00 033160 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4359									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4360									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4361									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4362
+  4363					;**********
+  4364
+  4365					;THIS TEST VERIFIES THAT TSZA CLEARS ALL BITS OF THE AC WHICH
+  4366					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+  4367					;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED.
+  4368					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+  4369					;HENCE, TSZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 0
+  4370
+  4371	033160	200 04 0 00 034414 	C72210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4372	033161	200 05 0 00 034441 		MOVE	5,[701234,,123456]	;PRELOAD E WITH 701234,,123456
+  4373	033162	635 04 0 00 000005 		TSZA	4,5			;*TSZA SHOULD SKIP AND
+  4374										;PLACE 0 INTO THE AC
+  4375						STOP^
+  4376	033163	254 04 0 00 033164 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4377	033164	324 00 0 00 033165 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4378									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4379									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4380									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4381	033165	312 04 0 00 034407 		CAME	4,[0]			;PASS IF C(AC)=0
+  4382						STOP^
+  4383	033166	254 04 0 00 033167 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4384	033167	324 00 0 00 033170 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4385									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4386									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 71-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0108
+
+  4387									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4388	033170	312 05 0 00 034441 		CAME	5,[701234,,123456]	;PASS IF C(E) UNCHANGED
+  4389						SToP^
+  4390	033171	254 04 0 00 033172 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4391	033172	324 00 0 00 033173 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4392									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4393									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4394									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4395
+  4396					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 72
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0109
+
+  4397					;THIS TEST VERIFIES THAT TDZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4398					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  4399					;C(E) ARE ZERO.  THESE MASKED
+  4400					;AC BITS ARE THEN CHANGEDTO ZERO.
+  4401					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+  4402					;HENCE, TDZN SHOULD SKIP AND THE RESULT IN THE AC
+  4403					;SHOULD BE 123456(,701230.  C(E) IS NOT AFFECTED.
+  4404
+  4405	033173	200 03 0 00 034414 	C72300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4406	033174	200 04 0 00 034442 		MOVE	4,[654321,,76547]	;PRELOAD E WITH 654321,,076547
+  4407	033175	636 03 0 00 000004 		TDZN	3,4			;*TDZN SHoULD SKIP AND
+  4408										;PLACE 123456,,701230 INTO THE AC
+  4409						STOP^
+  4410	033176	254 04 0 00 033177 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4411	033177	324 00 0 00 033200 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4412									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4413									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4414									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4415	033200	312 03 0 00 034443 		CAME	3,[123456,,701230]	;PASS IF C(AC)=123456,,701230
+  4416						STOP^
+  4417	033201	254 04 0 00 033202 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4418	033202	324 00 0 00 033203 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4419									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4420									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4421									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4422	033203	312 04 0 00 034442 		CAME	4,[654321,,076547]	;PASS IF C(E) UNCHANGED
+  4423						STOP^
+  4424	033204	254 04 0 00 033205 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4425	033205	324 00 0 00 033206 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4426									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4427									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4428									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4429
+  4430					;**********
+  4431
+  4432					;THIS TEST VERIFIES THAT TDZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4433					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  4434					;C(E) ARE ZERO.  THESE MASKED
+  4435					;AC BITS ARE THEN CHANGED TO ZERO.
+  4436					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+  4437					;HENCE, TDZN SHOULD NOT SKIP AND THE RESULT IN THE AC
+  4438					;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+  4439
+  4440	033206	200 02 0 00 034414 	C72310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4441	033207	200 03 0 00 034433 		MOVE	3,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  4442	033210	636 02 0 00 000003 		TDZN	2,3			;*TDZN SHOULD NOT SKIP AND
+  4443										;PLACE 123456,,701234 INTO THE AC
+  4444	033211	334 00 0 00 000000 		SKIPA				;PASS IF TDZN DOES NOT SKIP
+  4445						STOP^
+  4446	033212	254 04 0 00 033213 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4447	033213	324 00 0 00 033214 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4448									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4449									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4450									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4451	033214	312 02 0 00 034414 		CAME	2,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 72-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0110
+
+  4452						STOP^
+  4453	033215	254 04 0 00 033216 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4454	033216	324 00 0 00 033217 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4455									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4456									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4457									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4458	033217	312 03 0 00 034433 		CAME	3,[654321,,076543]	;PASS IF C(E) UNCHANGED
+  4459						STOP^
+  4460	033220	254 04 0 00 033221 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4461	033221	324 00 0 00 033222 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4462									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4463									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4464									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4465
+  4466					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 73
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0111
+
+  4467					;THIS TEST VERIFIES THaT TSZN SKIPS THE NEXT SEQQENPIAL INSTRUCTION
+  4468					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  4469					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  4470					;AC BITS ARE THEN CHANGED TO ZERO.
+  4471					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321.
+  4472					;HENCE, TSZN SHOULD SKIP AND THE RESULT IN THE AC
+  4473					;SHOULD BE 123456,,700234.  C(E) IS NOT AFFECTED.
+  4474
+  4475	033222	200 01 0 00 034414 	C72400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4476	033223	200 02 0 00 034444 		MOVE	2,[077543,,654321]	;PRELOAD E WITH 077543,,654321
+  4477	033224	637 01 0 00 000002 		TSZN	1,2			;*TSZN SHOULD SKIP AND
+  4478										;PLACE 123456,,700234 INTO THE AC
+  4479						STOP^
+  4480	033225	254 04 0 00 033226 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4481	033226	324 00 0 00 033227 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4482									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4483									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4484									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4485	033227	312 01 0 00 034445 		CAME	1,[123456,,700234]	;PASS IF C(AC)=123456,,700234
+  4486						STOP^
+  4487	033230	254 04 0 00 033231 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4488	033231	324 00 0 00 033232 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4489									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4490									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4491									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4492	033232	312 02 0 00 034444 		CAME	2,[77543,,654321]	;PASS IF C(E) UNCHANGED
+  4493						STOP^
+  4494	033233	254 04 0 00 033234 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4495	033234	324 00 0 00 033235 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4496									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4497									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4498									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4499
+  4500					;**********
+  4501
+  4502					;THIS TEST VERIFIES THAT TSZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4503					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  4504					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  4505					;AC BITS ARE THEN CHANGED TO ZERO.
+  4506					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321.-
+  4507					;HENCE, TSZN SHOULD NOT SKIP AND THE RESULT IN THE AC
+  4508					;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+  4509
+  4510	033235	200 00 0 00 034414 	C72410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4511	033236	200 01 0 00 034424 		MOVE	1,[76543,,654321]	;PRElOAD E WITH 076543,,654321
+  4512	033237	637 00 0 00 000001 		TSZN	0,1			;*TSZN SHOULD NOT SKIP AND
+  4513										;PLACE 123456,,701234 INTO THE AC
+  4514	033240	334 00 0 00 000000 		SKIPA				;PASS IF TSZN DOES NOT SKIP
+  4515						STOP^
+  4516	033241	254 04 0 00 033242 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4517	033242	324 00 0 00 033243 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4518									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4519									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4520									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4521	033243	312 00 0 00 034414 		CAME	0,[123456,,701234]	;PASS IF C(AC)=123456,,701234]
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 73-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0112
+
+  4522						STOP^
+  4523	033244	254 04 0 00 033245 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4524	033245	324 00 0 00 033246 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4525									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4526									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4527									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4528	033246	312 01 0 00 034424 		CAME	1,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  4529						STOP^
+  4530	033247	254 04 0 00 033250 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4531	033250	324 00 0 00 033251 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4532									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4533									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4534									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4535
+  4536					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 74
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0113
+
+  4537					;THIS TEST VERIFIES THAT TRC COMPLEMENTS ALL BITS IN THE AC-RIGHT WHICH
+  4538					;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+  4539					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  4540					;HENCE, THE RESULT IN THE AC SHOUHD BE 123456,,701237
+  4541
+  4542	033251	200 17 0 00 034414 	C72500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4543	033252	640 17 0 00 000003 		TRC	17,3			;*TRC SHOULD NOT SKIP AND
+  4544										;PLACE 123456,,701237 INTO THE AC
+  4545	033253	334 00 0 00 000000 		SKIPA				;PASS IF TRC DID NOT SKIP
+  4546						STOP^
+  4547	033254	254 04 0 00 033255 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4548	033255	324 00 0 00 033256 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4549									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4550									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4551									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4552	033256	312 17 0 00 034446 		CAME	17,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+  4553						STOP^
+  4554	033257	254 04 0 00 033260 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4555	033260	324 00 0 00 033261 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4556									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4557									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4558									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4559
+  4560					;**********
+  4561
+  4562					;THIS TEST VERIFIES THAT TRC COMPLEMENTS ALL BITS IN THE AC-RIGHT WHICH
+  4563					;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+  4564					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  4565					;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701134
+  4566
+  4567	033261	200 16 0 00 034414 	C72510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4568	033262	640 16 0 00 000300 		TRC	16,300			;*TRC SHOULD NOT SKIP AND
+  4569										;PLACE 123456,,701134 INTO THE AC
+  4570	033263	334 00 0 00 000000 		SKIPA				;PASS IF TRC DID NOT SKIP
+  4571						STOP^
+  4572	033264	254 04 0 00 033265 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4573	033265	324 00 0 00 033266 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4574									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4575									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4576									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4577	033266	312 16 0 00 034447 		CAME	16,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+  4578						STOP^
+  4579	033267	254 04 0 00 033270 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4580	033270	324 00 0 00 033271 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4581									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4582									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4583									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4584
+  4585					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 75
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0114
+
+  4586					;THIS TEST VERIFIES THAT TLC COMPLEMENTS ALL BITS IN THE AC-LEFT WHICH
+  4587					;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+  4588					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  4589					;HENCE, ThE RESULT IN THE AC SHOULD BE 123756,,701234.
+  4590
+  4591	033271	200 15 0 00 034414 	C72600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4592	033272	641 15 0 00 000300 		TLC	15,300			;*TLC SHOULD NOT SKIP AND
+  4593										;PLACE 123756,,701234 INTO THE AC
+  4594	033273	334 00 0 00 000000 		SKIPA				;PASS IF TLC DID NOT SKIP
+  4595						STOP^
+  4596	033274	254 04 0 00 033275 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4597	033275	324 00 0 00 033276 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4598									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4599									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4600									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4601	033276	312 15 0 00 034450 		CAME	15,[123756,,701234]	;PASS IF A(AC)=123756,,701234
+  4602						STOP^
+  4603	033277	254 04 0 00 033300 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4604	033300	324 00 0 00 033301 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4605									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4606									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4607									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4608
+  4609					;**********
+  4610
+  4611					;THIS TEST VERIFIES THAT TLC COMPLEMENTS ALL BITS IN THE AC-LEFT WHICH
+  4612					;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+  4613					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  4614					;HENCE, THE RESULT IN THE AC SHOULD BE 123455,,701234.
+  4615
+  4616	033301	200 14 0 00 034414 	C72610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4617	033302	641 14 0 00 000003 		TLC	14,3			;*TLC SHOULD NOT SKIP AND
+  4618										;PLACE 123455,,701234 INTO THE AC
+  4619	033303	334 00 0 00 000000 		SKIPA				;PASS IF TLC DID NOT SKIP
+  4620						STOP^
+  4621	033304	254 04 0 00 033305 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4622	033305	324 00 0 00 033306 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4623									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4624									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4625									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4626	033306	312 14 0 00 034451 		CAME	14,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+  4627						STOP^
+  4628	033307	254 04 0 00 033310 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4629	033310	324 00 0 00 033311 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4630									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4631									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4632									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4633
+  4634					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 76
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0115
+
+  4635					;THIS TEST VERIFIES THAT TRCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4636					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4637					;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+  4638					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  4639					;HENCE, TRCE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4640					;AND THE RESULT IN THE AC SHOULD BE 123456,,701237.
+  4641
+  4642	033311	200 13 0 00 034414 	C72700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4643	033312	642 13 0 00 000003 		TRCE	13,3			;*TRCE SHOULD SKIP AND
+  4644										;PLACE 123456,,701237 INTO ThE AC
+  4645						STOP^
+  4646	033313	254 04 0 00 033314 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4647	033314	324 00 0 00 033315 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4648									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4649									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4650									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4651	033315	312 13 0 00 034446 		CAME	13,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+  4652						STOP^
+  4653	033316	254 04 0 00 033317 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4654	033317	324 00 0 00 033320 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4655									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4656									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4657									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4658
+  4659					;**********
+  4660
+  4661					;THIS TEST VERIFIES THAT TRCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4662					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4663					;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+  4664					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  4665					;HENCE, TRCE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4666					;AND THE RESULT IN THE AC SHOULD BE 123456,,701134
+  4667
+  4668	033320	200 12 0 00 034414 	C72710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4669	033321	642 12 0 00 000300 		TRCE	12,300			;*TRCE SHOULD NOT SKIP AND
+  4670										;PLACE 123456,,701134 INTO THE AC
+  4671	033322	334 00 0 00 000000 		SKIPA				;PASS IF TRCE DID NOT SKIP
+  4672						STOP^
+  4673	033323	254 04 0 00 033324 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4674	033324	324 00 0 00 033325 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4675									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4676									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4677									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4678	033325	312 12 0 00 034447 		CAME	12,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+  4679						STOP^
+  4680	033326	254 04 0 00 033327 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4681	033327	324 00 0 00 033330 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4682									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4683									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4684									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4685
+  4686					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 77
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0116
+
+  4687					;THIS TEST VERIFIES THAT TLCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4688					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4689					;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+  4690					;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+  4691					;HENCE, TLCE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4692					;AND THE RESULT IN THE AC SHOULD BE 123756,,701234.
+  4693
+  4694	033330	200 11 0 00 034414 	C73000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4695	033331	643 11 0 00 000300 		TLCE	11,300			;*TLCE SHOULD SKIP AND
+  4696										;PLACE 123756,,701234 INTO THE AC
+  4697						STOP^
+  4698	033332	254 04 0 00 033333 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4699	033333	324 00 0 00 033334 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4700									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4701									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4702									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4703	033334	312 11 0 00 034450 		CAME	11,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+  4704						STOP^
+  4705	033335	254 04 0 00 033336 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4706	033336	324 00 0 00 033337 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4707									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4708									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4709									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4710
+  4711					;**********
+  4712
+  4713					;THIS TEST VERIFIES THAT TLCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4714					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4715					;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+  4716					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  4717					;HENCE, TLCE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4718					;AND THE RESULT IN THE AC SHOULD BE 123455,,701234.
+  4719
+  4720	033337	200 10 0 00 034414 	C73010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4721	033340	643 10 0 00 000003 		TLCE	10,3			;*TLCE SHOULD NOT SKIP AND
+  4722										;PLACE 123455,,701234 INTO THE AC
+  4723	033341	334 00 0 00 000000 		SKIPA				;PASS IF TLCE DID NOT SKIP
+  4724						STOP^
+  4725	033342	254 04 0 00 033343 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4726	033343	324 00 0 00 033344 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4727									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4728									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4729									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4730	033344	312 10 0 00 034451 		CAME	10,[123455,,701234]	;PASS IF C(AC)=123455,,701234]
+  4731						STOP^
+  4732	033345	254 04 0 00 033346 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4733	033346	324 00 0 00 033347 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4734									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4735									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4736									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4737
+  4738					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 78
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0117
+
+  4739					;THIS TEST VERIFIES THAT TRCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4740					;AND COMPLEMENTS ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E.
+  4741					;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+  4742					;HENCE, TRCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  4743					;THE AC SHOULD BE 123456,,701237.
+  4744
+  4745	033347	200 07 0 00 034414 	C73100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4746	033350	644 07 0 00 000003 		TRCA	7,3			;*TRCA SHOULD SKIP AND
+  4747										;PLACE 123456,,701237 INTO THE AC
+  4748						STOP^
+  4749	033351	254 04 0 00 033352 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4750	033352	324 00 0 00 033353 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4751									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4752									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4753									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4754	033353	312 07 0 00 034446 		CAME	7,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+  4755						STOP^
+  4756	033354	254 04 0 00 033355 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4757	033355	324 00 0 00 033356 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4758									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4759									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4760									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4761
+  4762					;**********
+  4763
+  4764					;THIS TEST VERIFIES THAT TRCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4765					;AND COMPLEMENTS ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E
+  4766					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  4767					;HENCE, TRCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  4768					;THE AC SHOULD BE 123456,,701134
+  4769
+  4770	033356	200 06 0 00 034414 	C73110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4771	033357	644 06 0 00 000300 		TRCA	6,300			;*TRCA SHOULD SKIP AND
+  4772										;PLACE 123456,,701134 INTO THE AC
+  4773						STOP^
+  4774	033360	254 04 0 00 033361 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4775	033361	324 00 0 00 033362 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4776									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4777									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4778									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4779	033362	312 06 0 00 034447 		CAME	6,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+  4780						STOP^
+  4781	033363	254 04 0 00 033364 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4782	033364	324 00 0 00 033365 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4783									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4784									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4785									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4786
+  4787					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 79
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0118
+
+  4788					;THIS TEST VERIFIES THAT TLCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4789					;AND COMPLEMENTS ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E
+  4790					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  4791					;HENCE, TLCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  4792					;THE AC SHOULD 123456,,701234
+  4793
+  4794	033365	200 05 0 00 034414 	C73200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4795	033366	645 05 0 00 000003 		TLCA	5,3			;*TLCA SHOULD SKIP AND
+  4796										;PLACE 12345,,701234 INTO THE AC
+  4797						STOP^
+  4798	033367	254 04 0 00 033370 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4799	033370	324 00 0 00 033371 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4800									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4801									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4802									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4803	033371	312 05 0 00 034451 		CAME	5,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+  4804						STOP^
+  4805	033372	254 04 0 00 033373 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4806	033373	324 00 0 00 033374 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4807									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4808									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4809									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4810
+  4811					;**********
+  4812
+  4813					;THIS TEST VERIFIES THAT TLCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4814					;AND COMPLEMENTS ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E
+  4815					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  4816					;HENCE, TLCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  4817					;THE AC SHOULD BE 123756,,701234
+  4818
+  4819	033374	200 04 0 00 034414 	C73210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4820	033375	645 04 0 00 000300 		TLCA	4,300			;*TLCA SHOULD SKIP AND
+  4821										;PLACE 123756,,701234 INTO THE AC
+  4822						STOP^
+  4823	033376	254 04 0 00 033377 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4824	033377	324 00 0 00 033400 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4825									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4826									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4827									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4828	033400	312 04 0 00 034450 		CAME	4,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+  4829						STOP^
+  4830	033401	254 04 0 00 033402 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4831	033402	324 00 0 00 033403 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4832									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4833									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4834									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4835
+  4836					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 80
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0119
+
+  4837					;THIS TEST VERIFIES THAT TRCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4838					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4839					;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+  4840					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  4841					;HENCE, TRCN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4842					;AND RESULT IN THE AC SHOULD BE 123456,,701134
+  4843
+  4844	033403	200 03 0 00 034414 	C73300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4845	033404	646 03 0 00 000300 		TRCN	3,300			;*SHOULD SKIP AND
+  4846										;PLACE 123456,,701134 INTO THE AC
+  4847						STOP^
+  4848	033405	254 04 0 00 033406 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4849	033406	324 00 0 00 033407 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4850									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4851									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4852									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4853	033407	312 03 0 00 034447 		CAME	3,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+  4854						STOP^
+  4855	033410	254 04 0 00 033411 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4856	033411	324 00 0 00 033412 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4857									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4858									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4859									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4860
+  4861					;**********
+  4862
+  4863					;THIS TEST VERIFIES THAT TRCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4864					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4865					;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+  4866					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  4867					;HENCE, TRCN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4868					;AND THE RESULT IN THE AC SHOULD BE 123456,,701237
+  4869
+  4870	033412	200 02 0 00 034414 	C73310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4871	033413	646 02 0 00 000003 		TRCN	2,3			;*TRCN SHOULD NOT SKIP AND
+  4872										;PLACE 123456,,701237 INTO THE AC
+  4873	033414	334 00 0 00 000000 		SKIPA				;PASS IF TRCN DID NOT SKIP
+  4874						STOP^
+  4875	033415	254 04 0 00 033416 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4876	033416	324 00 0 00 033417 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4877									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4878									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4879									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4880	033417	312 02 0 00 034446 		CAME	2,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+  4881						STOP^
+  4882	033420	254 04 0 00 033421 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4883	033421	324 00 0 00 033422 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4884									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4885									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4886									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4887
+  4888					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 81
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0120
+
+  4889					;THIS TEST VERIFIES THAT TLCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4890					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  4891					;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+  4892					;IN THE CASE, C(AC)=123456,,701234 AND E=3
+  4893					;HENCE, TLCN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4894					;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+  4895
+  4896	033422	200 01 0 00 034414 	C73400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4897	033423	647 01 0 00 000003 		TLCN	1,3			;*TLCN SHOULD SKIP AND
+  4898										;PLACE 123455,701234 INTO THE AC
+  4899						STOP^
+  4900	033424	254 04 0 00 033425 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4901	033425	324 00 0 00 033426 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4902									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4903									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4904									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4905	033426	312 01 0 00 034451 		CAME	1,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+  4906						STOP^
+  4907	033427	254 04 0 00 033430 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4908	033430	324 00 0 00 033431 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4909									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4910									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4911									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4912
+  4913					;**********
+  4914
+  4915					;THIS TEST VERIFIES THAT TLCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  4916					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZER.
+  4917					;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+  4918					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  4919					;HENCE, TLCN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  4920					;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+  4921
+  4922	033431	200 00 0 00 034414 	C73410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4923	033432	647 00 0 00 000300 		TLCN	0,300			;*TLCN SHOULD NOT SKIP AND
+  4924										;PLACE 123756,,701234 INTO THE AC
+  4925	033433	334 00 0 00 000000 		SKIPA				;PASS IF TLCN DID NOT SKIP
+  4926						STOP^
+  4927	033434	254 04 0 00 033435 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4928	033435	324 00 0 00 033436 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4929									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4930									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4931									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4932	033436	312 00 0 00 034450 		CAME	0,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+  4933						STOP^
+  4934	033437	254 04 0 00 033440 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4935	033440	324 00 0 00 033441 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4936									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4937									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4938									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4939
+  4940					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 82
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0121
+
+  4941					;THIS TEST VERIFIES THAT TSL COMPLEMENTS ALL BITS OF THE AC WHICH
+  4942					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+  4943					;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  4944					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)6543,,654321
+  4945					;HENCE, TSC SHOULD NOT SKIP AND C(AC) SHOULD BE -1,,-1
+  4946
+  4947	033441	200 17 0 00 034414 	C73500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4948	033442	200 00 0 00 034424 		MOVE	0,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+  4949	033443	651 17 0 00 000000 		TSC	17,0			;*TSC SHOULD NOT SKIP AND
+  4950										;PLACE -1,,-1 INTO THE AC
+  4951	033444	334 00 0 00 000000 		SKIPA				;PASS IF TSC DOES NOT SKIP
+  4952						STOP^
+  4953	033445	254 04 0 00 033446 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4954	033446	324 00 0 00 033447 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4955									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4956									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4957									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4958	033447	312 17 0 00 034301 		CAME	17,[-1]			;PASS IF C(AC)=-1,,-1
+  4959						STOP^
+  4960	033450	254 04 0 00 033451 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4961	033451	324 00 0 00 033452 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4962									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4963									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4964									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4965	033452	312 00 0 00 034424 		CAME	0,[076543,,654321]	;PASS IF C(E) UNCHANGED
+  4966						STOP^
+  4967	033453	254 04 0 00 033454 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4968	033454	324 00 0 00 033455 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4969									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4970									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4971									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4972
+  4973					;**********
+  4974
+  4975					;THIS TEST VERIFIES THAT TSC COMPLEMENTS ALL BITS OF THE AC WHICH
+  4976					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+  4977					;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  4978					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+  4979					;HENCE, TSC SHOULD NOT SKIP AND C(AC) SHOULD BE 624426,,553711
+  4980
+  4981	033455	200 16 0 00 034414 	C73510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  4982	033456	200 17 0 00 034431 		MOVE	17,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+  4983	033457	651 16 0 00 000017 		TSC	16,17			;*TSC SHOULD NOT SKIP AND
+  4984										;PLACE 624426,,553711 INTO THE AC
+  4985	033460	334 00 0 00 000000 		SKIPA				;PASS IF TSC DOES NOT SKIP
+  4986						STOP^
+  4987	033461	254 04 0 00 033462 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4988	033462	324 00 0 00 033463 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  4989									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4990									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4991									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4992	033463	312 16 0 00 034452 		CAME	16,[624426,,553711]	;PASS IF C(AC)=624426,,553711
+  4993						STOP^
+  4994	033464	254 04 0 00 033465 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  4995	033465	324 00 0 00 033466 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 82-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0122
+
+  4996									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  4997									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  4998									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  4999	033466	312 17 0 00 034431 		CAME	17,[252525,,707070]	;PASS IF C(E) UNCHANGED
+  5000						STOP^
+  5001	033467	254 04 0 00 033470 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5002	033470	324 00 0 00 033471 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5003									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5004									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5005									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5006
+  5007					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 83
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0123
+
+  5008					;THIS TEST VERIFIES THAT TDCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5009					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5010					;C(E) ARE ZERO.  THESE MASKED
+  5011					;AC BITS ARE THEN COMPLEMENTED
+  5012					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+  5013					;HENCE, TDCE SHOULD SKIP AND THE RESULT IN AC
+  5014					;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+  5015
+  5016	033471	200 15 0 00 034414 	C73600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5017	033472	200 16 0 00 034433 		MOVE	16,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  5018	033473	652 15 0 00 000016 		TDCE	15,16			;*TDCE SHOULD SKIP AND
+  5019										;PLACE -1,,-1 INTO THE AC
+  5020						STOP^
+  5021	033474	254 04 0 00 033475 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5022	033475	324 00 0 00 033476 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5023									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5024									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5025									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5026	033476	312 15 0 00 034301 		CAME	15,[-1]			;PASS IF C(AC)=-1,,-1
+  5027						STOP^
+  5028	033477	254 04 0 00 033500 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5029	033500	324 00 0 00 033501 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5030									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5031									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5032									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5033	033501	312 16 0 00 034433 		CAME	16,[654321,,076543]	;PASS IF C(E) UNCHANGED
+  5034						STOP^
+  5035	033502	254 04 0 00 033503 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5036	033503	324 00 0 00 033504 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5037									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5038									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5039									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5040
+  5041					;**********
+  5042
+  5043					;THIS TEST VERIFIES THAT TDCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5044					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5045					;C(E) ARE ZERO.  THESE MASKED
+  5046					;AC BITS ARE THEN COMPLEMENTED
+  5047					;IN THIS CASE, C(AC)=123456,,701234 AND C(E) 754321,,076543
+  5048					;HENCE, TDCE SHOULD NOT SKIP AND THE RESULT IN AC
+  5049					;SHOULD BE 677777,,-1 C(E) IS NOT AFFECTED.
+  5050
+  5051	033504	200 14 0 00 034414 	C73610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5052	033505	200 15 0 00 034434 		MOVE	15,[754321,,076543]	;PRELOAD E WITH 754321,,076543
+  5053	033506	652 14 0 00 000015 		TDCE	14,15			;*TDCE SHOULD NOT SKIP AND
+  5054										;PLACE 677777,,-1 INTO THE AC
+  5055	033507	334 00 0 00 000000 		SKIPA				;PASS IF TDCE DOES NOT SKIP
+  5056						STOP^
+  5057	033510	254 04 0 00 033511 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5058	033511	324 00 0 00 033512 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5059									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5060									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5061									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5062	033512	312 14 0 00 034453 		CAME	14,[677777,,-1]		;PASS IF C(AC)=677777,,-1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 83-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0124
+
+  5063						STOP^
+  5064	033513	254 04 0 00 033514 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5065	033514	324 00 0 00 033515 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5066									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5067									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5068									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5069	033515	312 15 0 00 034434 		CAME	15,[754321,,076543]	;PASS IF C(E) UNCHANGED
+  5070						STOP^
+  5071	033516	254 04 0 00 033517 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5072	033517	324 00 0 00 033520 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5073									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5074									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5075									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5076
+  5077					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 84
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0125
+
+  5078					;THIS TEST VERIFIES THAT TSCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5079					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5080					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  5081					;AC BITS ARE THEN COMPLEMENTED
+  5082					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  5083					;HENCE, TSCE SHOULD SKIP AND THE RESULT IN THE AC
+  5084					;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+  5085
+  5086	033520	200 13 0 00 034414 	C73700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5087	033521	200 14 0 00 034424 		MOVE	14,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+  5088	033522	653 13 0 00 000014 		TSCE	13,14			;*TSCE SHOULD SKIP AND
+  5089										;PLACE -1,,-1 INTO THE AC
+  5090						STOP^
+  5091	033523	254 04 0 00 033524 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5092	033524	324 00 0 00 033525 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5093									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5094									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5095									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5096	033525	312 13 0 00 034301 		CAME 	13,[-1]			;PASS IF C(E) UNCHANGED
+  5097						STOP^
+  5098	033526	254 04 0 00 033527 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5099	033527	324 00 0 00 033530 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5100									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5101									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5102									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5103
+  5104					;**********
+  5105
+  5106					;THIS TEST VERIFIES THAT TSCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5107					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5108					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  5109					;AC BITS ARE THEN COMPLEMENTED
+  5110					;IN THIS CASE, C(AC)=123456,701234 AND C(E)=076543,,657321
+  5111					;HENCE, TSCE SHOULD NOT SKIP AND THE RESULT IN THE AC
+  5112					;SHOULD BE 774777,,-1.  C(E) IS NOT AFFECTED.
+  5113
+  5114	033530	200 12 0 00 034414 	C73710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5115	033531	200 13 0 00 034436 		MOVE	13,[76543,,657321]	;PRELOAD E WITH 076543,,657321
+  5116	033532	653 12 0 00 000013 		TSCE	12,13			;*TSCE HOULD NOT SKIP AND
+  5117										;PLACE 774777,,-1 INTO THE AC
+  5118	033533	334 00 0 00 000000 		SKIPA				;PASS IF TSCE DOES NOT SKIP
+  5119						STOP^
+  5120	033534	254 04 0 00 033535 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5121	033535	324 00 0 00 033536 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5122									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5123									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5124									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5125	033536	312 12 0 00 034454 		CAME	12,[774777,,-1]		;PASS IF C(AC)=774777,,-1
+  5126						STOP^
+  5127	033537	254 04 0 00 033540 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5128	033540	324 00 0 00 033541 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5129									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5130									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5131									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5132	033541	312 13 0 00 034436 		CAME	13,[76543,,657321]	;PASS IF C(E) UNCHANGED
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 84-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0126
+
+  5133						STOP^
+  5134	033542	254 04 0 00 033543 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5135	033543	324 00 0 00 033544 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5136									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5137									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5138									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5139
+  5140					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 85
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0127
+
+  5141					;THIS TEST VERIFIES THAT TDCA COMPLEMENTS ALL BITS OF THE AC WHICH
+  5142					;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+  5143					;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  5144					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+  5145					;HENCE, TDCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+  5146
+  5147	033544	200 11 0 00 034414 	C74000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5148	033545	200 12 0 00 034433 		MOVE	12,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  5149	033546	654 11 0 00 000012 		TDCA	11,12			;*TDCA SHOULD SKIP AND
+  5150										;PLACE -1,,-1 INTO THE AC
+  5151						STOP^
+  5152	033547	254 04 0 00 033550 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5153	033550	324 00 0 00 033551 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5154									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5155									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5156									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5157	033551	312 11 0 00 034301 		CAME	11,[-1]			;PASS IF C(AC)=-1,,-1
+  5158						STOP^
+  5159	033552	254 04 0 00 033553 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5160	033553	324 00 0 00 033554 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5161									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5162									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5163									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5164	033554	312 12 0 00 034433 		CAME	12,[654321,,76543]	;PASS IF C(E) UNCHANGED
+  5165						STOP^
+  5166	033555	254 04 0 00 033556 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5167	033556	324 00 0 00 033557 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5168									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5169									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5170									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5171
+  5172					;**********
+  5173
+  5174					;THIS TEST VERIFIES THAT TDCA COMPLEMENTS ALL BITS OF THE AC WHICH
+  5175					;CORRESPOND TO 1'S IN C(E) AND SLWAYS
+  5176					;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+  5177					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+  5178					;HENCE, TDCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 371173,,006244
+  5179
+  5180	033557	200 10 0 00 034414 	C74100:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5181	033560	200 11 0 00 034431 		MOVE	11,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+  5182	033561	654 10 0 00 000011 		TDCA	10,11			;*TDCA SHOULD SKP AND
+  5183										;PLACE 371173,,006244 INTO THE AC
+  5184						STOP^
+  5185	033562	254 04 0 00 033563 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5186	033563	324 00 0 00 033564 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5187									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5188									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5189									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5190	033564	312 10 0 00 034455 		CAME	10,[371173,,6244]	;PASS IF C(AC)=371173,,006244
+  5191						STOP^
+  5192	033565	254 04 0 00 033566 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5193	033566	324 00 0 00 033567 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5194									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5195									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 85-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0128
+
+  5196									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5197	033567	312 11 0 00 034431 		CAME	11,[252525,,707070]	;PASS IF C(E) UNCHANGED
+  5198						STOP^
+  5199	033570	254 04 0 00 033571 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5200	033571	324 00 0 00 033572 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5201									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5202									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5203									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5204
+  5205					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 86
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0129
+
+  5206					;THIS TEST VERIFIES THAT TSCA COMPLEMENTS ALL BITS OF THE AC WHICH
+  5207					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+  5208					;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  5209					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  5210					;HENCE, TSCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+  5211
+  5212	033572	200 07 0 00 034414 	C74200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5213	033573	200 10 0 00 034424 		MOVE	10,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+  5214	033574	655 07 0 00 000010 		TSCA	7,10			;*TSCA CHOULD SKIP AND
+  5215										;PLACE -1,,-1 INTO THE AC
+  5216						STOP^
+  5217	033575	254 04 0 00 033576 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5218	033576	324 00 0 00 033577 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5219									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5220									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5221									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5222	033577	312 07 0 00 034301 		CAME	7,[-1]			;PASS IF C(AC)=-1,,-1
+  5223						STOP^
+  5224	033600	254 04 0 00 033601 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5225	033601	324 00 0 00 033602 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5226									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5227									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5228									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5229	033602	312 10 0 00 034424 		CAME	10,[076543,,654321]	;PASS IF C(E) UNCHANGED
+  5230						STOP^
+  5231	033603	254 04 0 00 033604 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5232	033604	324 00 0 00 033605 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5233									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5234									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5235									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5236
+  5237					;**********
+  5238
+  5239					;THIS TEST VERIFIES THAT TSCA COMPLEMENTS ALL BITS OF THE AC WHICH
+  5240					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+  5241					;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  5242					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+  5243					;HENCE, TSCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 0
+  5244
+  5245	033605	200 06 0 00 034414 	C74210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5246	033606	200 07 0 00 034441 		MOVE	7,[701234,,123456]	;PRELOAD E WITH 701234,,123456
+  5247	033607	655 06 0 00 000007 		TSCA	6,7			;*TSCA SHOULD SKIP AND
+  5248										;PLACE 0 INTO THE AC
+  5249						STOP^
+  5250	033610	254 04 0 00 033611 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5251	033611	324 00 0 00 033612 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5252									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5253									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5254									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5255	033612	312 06 0 00 034407 		CAME	6,[0]			;PASS IF C(AC)=0
+  5256						STOP^
+  5257	033613	254 04 0 00 033614 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5258	033614	324 00 0 00 033615 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5259									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5260									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 86-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0130
+
+  5261									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5262	033615	312 07 0 00 034441 		CAME	7,[701234,,123456]	;PASS IF C(E) UNCHANGED
+  5263						STOP^
+  5264	033616	254 04 0 00 033617 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5265	033617	324 00 0 00 033620 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5266									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5267									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5268									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5269
+  5270					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 87
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0131
+
+  5271					;THIS TEST VERIFIES THAT TDCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5272					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5273					;C(E) ARE ZERO.  THESE MASKED
+  5274					;AC BITS ARE THEN COMPLEMENTED
+  5275					;IN THE CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+  5276					;HENCE, TDCN SHOULD SKIP AND THE RESULT IN AC
+  5277					;SHOULD BE -1,,777773 C(E) IS NOT AFFECTED
+  5278
+  5279	033620	200 05 0 00 034414 	C74300:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5280	033621	200 06 0 00 034442 		MOVE	6,[654321,,76547]	;PRELOAD E WITH 654321,,076547
+  5281	033622	656 05 0 00 000006 		TDCN	5,6			;*TDCN SHOULD SKIP AND
+  5282										;PLACE -1,,777773 INTO THE AC
+  5283						STOP^
+  5284	033623	254 04 0 00 033624 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5285	033624	324 00 0 00 033625 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5286									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5287									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5288									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5289	033625	312 05 0 00 034456 		CAME	5,[-1,,777773]		;PASS IF C(AC)=-1,777773
+  5290						STOP^
+  5291	033626	254 04 0 00 033627 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5292	033627	324 00 0 00 033630 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5293									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5294									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5295									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5296	033630	312 06 0 00 034442 		CAME	6,[654321,,76547]	;PASS IF C(E) UNCHANGED
+  5297						STOP^
+  5298	033631	254 04 0 00 033632 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5299	033632	324 00 0 00 033633 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5300									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5301									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5302									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5303
+  5304					;**********
+  5305
+  5306					;THIS TEST VERIFIES THAT TDCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5307					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5308					;C(E) ARE ZERO.  THESE MASKED
+  5309					;AC BITS ARE THEN COMPLEMENTED
+  5310					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+  5311					;HENCE, TDCN SHOULD NOT SKIP AND THE REUSLT IN AC
+  5312					;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+  5313
+  5314	033633	200 04 0 00 034414 	C74310:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5315	033634	200 05 0 00 034433 		MOVE	5,[654321,,76543]	;PRELOAD E WITH 654321,,076543
+  5316	033635	656 04 0 00 000005 		TDCN	4,5			;*TDCN SHOULD NOT SKIP AND
+  5317										;PLACE -1,,-1 INTO THE AC
+  5318	033636	334 00 0 00 000000 		SKIPA				;PASS IF TDCN DOES NOT SKIP
+  5319						STOP^
+  5320	033637	254 04 0 00 033640 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5321	033640	324 00 0 00 033641 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5322									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5323									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5324									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5325	033641	312 04 0 00 034301 		CAME	4,[-1]			;PASS IF C(AC)=-1,,-1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 87-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0132
+
+  5326						STOP^
+  5327	033642	254 04 0 00 033643 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5328	033643	324 00 0 00 033644 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5329									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5330									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5331									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5332	033644	312 05 0 00 034433 		CAME	5,[654321,,76543]	;PASS IF C(E) UNCHANGED
+  5333						STOP^
+  5334	033645	254 04 0 00 033646 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5335	033646	324 00 0 00 033647 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5336									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5337									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5338									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5339
+  5340					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 88
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0133
+
+  5341					;THIS TEST VERIFIES THAT TSCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5342					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5343					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  5344					;AC BITS ARE THEN COMPLEMENTED
+  5345					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321
+  5346					;HENCE, TSCN SHOULD SKIP AND THE RESULT IN AC
+  5347					;SHOULD BE -1,,776777.  C(E) IS NOT AFFECTED
+  5348
+  5349	033647	200 03 0 00 034414 	C74400:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5350	033650	200 04 0 00 034444 		MOVE	4,[77543,,654321]	;PRELOAD E WITH 077543,,654321
+  5351	033651	657 03 0 00 000004 		TSCN	3,4			;*TSCN SHOULD SKIP AND
+  5352										;PLACE -1,,776777 INTO THE AC
+  5353						STOP^
+  5354	033652	254 04 0 00 033653 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5355	033653	324 00 0 00 033654 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5356									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5357									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5358									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5359	033654	312 03 0 00 034457 		CAME	3,[-1,,776777]		;PASS IF C(AC)=-1,776777
+  5360						STOP^
+  5361	033655	254 04 0 00 033656 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5362	033656	324 00 0 00 033657 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5363									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5364									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5365									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5366	033657	312 04 0 00 034444 		CAME	4,[77543,,654321]	;PASS IF C(E) UNCHANGED
+  5367						STOP^
+  5368	033660	254 04 0 00 033661 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5369	033661	324 00 0 00 033662 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5370									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5371									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5372									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5373
+  5374					;**********
+  5375
+  5376					;THIS TEST VERIFIES THAT TSCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5377					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5378					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  5379					;AC BITS ARE THEN COMPLEMENTD
+  5380					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  5381					;HENCE, TSCN SHOULD NOT SKIP AND THE RESULT IN AC
+  5382					;SHOULD BE -1,,-1.  C(E) IS NOT AFFECTED.
+  5383
+  5384	033662	200 02 0 00 034414 	C74410:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5385	033663	200 03 0 00 034424 		MOVE	3,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+  5386	033664	657 02 0 00 000003 		TSCN	2,3			;*TSCN SHOULD NOT SKIP AND
+  5387										;PLACE -1,,-1 INTO THE AC
+  5388	033665	334 00 0 00 000000 		SKIPA				;PASS IF TSCN DOES NOT SKIP
+  5389						STOP^
+  5390	033666	254 04 0 00 033667 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5391	033667	324 00 0 00 033670 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5392									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5393									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5394									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5395	033670	312 02 0 00 034301 		CAME	2,[-1]			;PASS IF C(AC)=-1,,-1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 88-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0134
+
+  5396						STOP^
+  5397	033671	254 04 0 00 033672 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5398	033672	324 00 0 00 033673 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5399									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5400									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5401									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5402	033673	312 03 0 00 034424 		CAME	3,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  5403						STOP^
+  5404	033674	254 04 0 00 033675 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5405	033675	324 00 0 00 033676 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5406									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5407									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5408									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5409
+  5410					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 89
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0135
+
+  5411					;THIS TEST VERIFIES THAT TRO CHANGES ALL BITS IN THE AC-RIGHT WHICH
+  5412					;CORRESPOND TO 1'S IN E TO ONES AND DOES ANT SKIP
+  5413					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  5414					;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701237
+  5415
+  5416	033676	200 01 0 00 034414 	C74500:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5417	033677	660 01 0 00 000003 		TRO	1,3			;*TRO SHOULD NOT SKIP AND
+  5418										;PLACE 123456,,701237 INTO THE AC
+  5419	033700	334 00 0 00 000000 		SKIPA				;PASS IF TRO DID NOT SKIP
+  5420						STOP^
+  5421	033701	254 04 0 00 033702 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5422	033702	324 00 0 00 033703 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5423									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5424									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5425									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5426	033703	312 01 0 00 034446 		CAME	1,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+  5427						STOP^
+  5428	033704	254 04 0 00 033705 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5429	033705	324 00 0 00 033706 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5430									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5431									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5432									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5433
+  5434					;**********
+  5435
+  5436					;THIS TEST VERIFIES THAT TRO CHANGES ALL BITS IN THE AC-RIGHT WHICH
+  5437					;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+  5438					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  5439					;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701224
+  5440
+  5441	033706	200 00 0 00 034414 	C74510:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5442	033707	660 00 0 00 000300 		TRO	0,300			;*TRO SHOULD NOT SKIP AND
+  5443										;PLACE 123456,,701334 INTO THE AC
+  5444	033710	334 00 0 00 000000 		SKIPA				;PASS IF TRO DID NOT SKIP
+  5445						STOP^
+  5446	033711	254 04 0 00 033712 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5447	033712	324 00 0 00 033713 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5448									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5449									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5450									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5451	033713	312 00 0 00 034460 		CAME	0,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+  5452						STOP^
+  5453	033714	254 04 0 00 033715 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5454	033715	324 00 0 00 033716 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5455									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5456									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5457									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5458
+  5459					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 90
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0136
+
+  5460					;THIS TEST VERIFIES THAT TLO CHANGES ALL BITS IN THE AC-LEFT WHICH
+  5461					;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+  5462					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  5463					;HENCE, THE RESULT IN THE AC SHOULD BE 123756,,701234
+  5464
+  5465	033716	200 17 0 00 034414 	C74600:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5466	033717	661 17 0 00 000300 		TLO	17,300			;*TLO SHOULD NOT SKIP AND
+  5467										;PLACE 123756,,701234 INTO THE AC
+  5468	033720	334 00 0 00 000000 		SKIPA				;PASS IF TLO DID NOT SKIP
+  5469						STOP^
+  5470	033721	254 04 0 00 033722 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5471	033722	324 00 0 00 033723 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5472									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5473									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5474									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5475	033723	312 17 0 00 034450 		CAME	17,[123756,,701234]	;PASS IF C(AC)=123456,,701234
+  5476						STOP^
+  5477	033724	254 04 0 00 033725 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5478	033725	324 00 0 00 033726 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5479									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5480									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5481									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5482
+  5483					;**********
+  5484
+  5485					;THIS TEST VERIFIES THAT TLO CHANGES ALL BITS IN THE AC-LEFT WHICH
+  5486					;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+  5487					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  5488					;HENCE, THE RESULT IN THE AC SHOULD BE 123457,,701234
+  5489
+  5490	033726	200 16 0 00 034461 	C74610:	MOVE	16,[123456,,70234]	;PRELOAD AC WITH 123456,,701234
+  5491	033727	661 16 0 00 000003 		TLO	16,3			;*TLO SHOULD NOT SKIP AND
+  5492										;PLACE 123457,,701234 INTO THE AC
+  5493	033730	334 00 0 00 000000 		SKIPA				;PASS IF DID NOT SKIP
+  5494						STOP^
+  5495	033731	254 04 0 00 033732 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5496	033732	324 00 0 00 033733 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5497									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5498									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5499									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5500	033733	312 16 0 00 034462 		CAME	16,[123457,,70234]	;PASS IF C(AC)=123457,,701234
+  5501						STOP^
+  5502	033734	254 04 0 00 033735 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5503	033735	324 00 0 00 033736 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5504									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5505									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5506									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5507
+  5508					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 91
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0137
+
+  5509					;THIS TEST VERIFIES THAT TROE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5510					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  5511					;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+  5512					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  5513					;HENCE, TROE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5514					;AND RESULT IN THE AC SHOUD BE 123456,,701237
+  5515
+  5516	033736	200 15 0 00 034414 	C74700:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5517	033737	662 15 0 00 000003 		TROE	15,3			;TROE SHOULD SKIP AND
+  5518										;PLACE 123456,,701237 IN TO THE AC
+  5519						STOP^
+  5520	033740	254 04 0 00 033741 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5521	033741	324 00 0 00 033742 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5522									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5523									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5524									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5525	033742	312 15 0 00 034446 		CAME	15,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+  5526						STOP^
+  5527	033743	254 04 0 00 033744 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5528	033744	324 00 0 00 033745 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5529									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5530									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5531									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5532
+  5533					;**********
+  5534
+  5535					;THIS TEST VERIFIES THAT TROE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5536					;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  5537					;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+  5538					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  5539					;HENCE, TROE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5540					;AND THE RESULT IN THE AC SHOULD BE 123456,,701334
+  5541
+  5542	033745	200 14 0 00 034414 	C74710:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5543	033746	662 14 0 00 000300 		TROE	14,300			;*TROE SHOULD NOT SKIP AND
+  5544										;PLACE 123456,,701224 INTO THE AC
+  5545	033747	334 00 0 00 000000 		SKIPA				;PASS IF DID NOT SKIP
+  5546						STOP^
+  5547	033750	254 04 0 00 033751 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5548	033751	324 00 0 00 033752 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5549									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5550									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5551									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5552	033752	312 14 0 00 034460 		CAME	14,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+  5553						STOP^
+  5554	033753	254 04 0 00 033754 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5555	033754	324 00 0 00 033755 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5556									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5557									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5558									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5559
+  5560					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 92
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0138
+
+  5561					;THIS TEST VERIFIES THAT TLOE SKIPS THE NEXT SEQUENTIAL  INSTRUCTION
+  5562					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  5563					;THESE MASKED AC BITS ARE TEN CHANGED TO ONES
+  5564					;IN THES CASE, C(AC)=123456,,701234 AND E=300
+  5565					;HENCE, TLOE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5566					;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+  5567
+  5568	033755	200 13 0 00 034414 	C75000:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5569	033756	663 13 0 00 000300 		TLOE	13,300			;*TLOE SOULD SKIP AND
+  5570										;PLAND 123756,,701234 INTO THE AC
+  5571						STOP^
+  5572	033757	254 04 0 00 033760 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5573	033760	324 00 0 00 033761 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5574									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5575									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5576									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5577	033761	312 13 0 00 034450 		CAME	13,[123756,,701234]	;PASS IF C(AC)=123456,,701234
+  5578						STOP^
+  5579	033762	254 04 0 00 033763 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5580	033763	324 00 0 00 033764 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5581									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5582									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5583									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5584
+  5585					;********
+  5586
+  5587					;THIS TEST VERIFIES THAT TLOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5588					;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING  TO 1'S IN E ARE ZERO.
+  5589					;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+  5590					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  5591					;HENCE, TLOE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5592					;AND THE RESULT IN THE AC SHOULD BE 123457,,701234
+  5593
+  5594	033764	200 12 0 00 034414 	C75010:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5595	033765	663 12 0 00 000003 		TLOE	12,3			;*TLOE SHOULD NOT SKIP AND
+  5596										;PLACE 123457,,701234 INTO THE AC
+  5597	033766	334 00 0 00 000000 		SKIPA				;PASS IF TLOE DID NOT SKIP
+  5598						STOP^
+  5599	033767	254 04 0 00 033770 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5600	033770	324 00 0 00 033771 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5601									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5602									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5603									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5604	033771	312 12 0 00 034463 		CAME	12,[123457,,701234]	;PASS IF C(AC)=123457,,701234
+  5605						STOP^
+  5606	033772	254 04 0 00 033773 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5607	033773	324 00 0 00 033774 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5608									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5609									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5610									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5611
+  5612					;*******
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 93
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0139
+
+  5613					;THIS TEST VERIFIES THAT TROA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTUCTION
+  5614					;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ONES
+  5615					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  5616					;HENCE, TROA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  5617					;THE AC SHOULD BE 123456,,701237
+  5618
+  5619	033774	200 11 0 00 034414 	C75100:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5620	033775	664 11 0 00 000003 		TROA	11,3			;*TROA SHOULD SKIP AND
+  5621										;PLACE 123456,,701237
+  5622						STOP^
+  5623	033776	254 04 0 00 033777 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5624	033777	324 00 0 00 034000 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5625									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5626									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5627									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5628	034000	312 11 0 00 034446 		CAME	11,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+  5629						STOP^
+  5630	034001	254 04 0 00 034002 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5631	034002	324 00 0 00 034003 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5632									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5633									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5634									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5635
+  5636					;**********
+  5637
+  5638					;THIS TEST VERIFIES THAT TROA ALWAYS SKIPS THE NEXT SEQUENTAIL INSTRUCTION
+  5639					;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ONES
+  5640					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  5641					;HENCE, TROA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  5642					;THE AC SHOULD BE 123456,,701334
+  5643
+  5644	034003	200 10 0 00 034414 	C75110:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5645	034004	664 10 0 00 000300 		TROA	10,300			;*TROA SHOULD SKIP AND
+  5646										;PLACE 123456,,701334 INTO THE AC
+  5647						STOP^
+  5648	034005	254 04 0 00 034006 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5649	034006	324 00 0 00 034007 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5650									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5651									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5652									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5653	034007	312 10 0 00 034460 		CAME	10,[123456,,701334]	;PASS IF C (AC)=123456,,701334
+  5654						STOP^
+  5655	034010	254 04 0 00 034011 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5656	034011	324 00 0 00 034012 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5657									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5658									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5659									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5660
+  5661					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 94
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0140
+
+  5662					;THIS TEST VERIFIES THAT TLOA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTUCTION
+  5663					;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND 1'S IN E TO ONES
+  5664					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  5665					;HENCE, TLOA SHOULD SKIP THE NEXT INSTRUCTION AND RESULT IN
+  5666					;THE AC SHOULD BE 123457,,701234
+  5667
+  5668	034012	200 07 0 00 034414 	C75200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5669	034013	665 07 0 00 000003 		TLOA	7,3			;*TLOA SHOULD SKIP AND
+  5670										;PLACE 123457,,701234 INTO THE AC
+  5671						STOP^
+  5672	034014	254 04 0 00 034015 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5673	034015	324 00 0 00 034016 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5674									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5675									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5676									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5677	034016	312 07 0 00 034463 		CAME	7,[123457,,701234]	;PASS IF C(AC)=123457,,701234]
+  5678						STOP^
+  5679	034017	254 04 0 00 034020 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5680	034020	324 00 0 00 034021 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5681									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5682									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5683									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5684
+  5685					;**********
+  5686
+  5687					;THIS TEST VERIFIES THAT TLOA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5688					;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ONES
+  5689					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  5690					;HENCE, TLOA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+  5691					;THE AC SHOULD BE 123756,,701234
+  5692
+  5693	034021	200 06 0 00 034414 	C75210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5694	034022	665 06 0 00 000300 		TLOA	6,300			;*TLOA SHOULD SKIP AND
+  5695										;PLACE 123756,,701234 INTO THE AC
+  5696						STOP^
+  5697	034023	254 04 0 00 034024 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5698	034024	324 00 0 00 034025 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5699									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5700									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5701									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5702	034025	312 06 0 00 034450 		CAME	6,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+  5703						STOP^
+  5704	034026	254 04 0 00 034027 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5705	034027	324 00 0 00 034030 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5706									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5707									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5708									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5709
+  5710					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 95
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0141
+
+  5711					;THIS TEST VERIFIES THAT TRON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5712					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  5713					;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+  5714					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  5715					;HENCE, TRON SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5716					;AND THE RESULT IN THE AC SHOULD BE 123456,,701334
+  5717
+  5718	034030	200 05 0 00 034414 	C75300:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5719	034031	666 05 0 00 000300 		TRON	5,300			;*TRON SHOULD SKIP AND
+  5720										;PLACE 123456,,701334 INTO THE AC
+  5721						STOP^
+  5722	034032	254 04 0 00 034033 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5723	034033	324 00 0 00 034034 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5724									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5725									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5726									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5727	034034	312 05 0 00 034460 		CAME	5,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+  5728						STOP^
+  5729	034035	254 04 0 00 034036 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5730	034036	324 00 0 00 034037 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5731									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5732									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5733									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5734
+  5735					;**********
+  5736
+  5737					;THIS TEST VERIFIES THAT TRON SKIPS THE NEXT SEQUENTIAL INSTUCTION
+  5738					;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+  5739					;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+  5740					;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+  5741					;HENCE, TRON SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5742					;AND THE RESULT IN THE AC SHOULD BE 123456,,701237
+  5743
+  5744	034037	200 04 0 00 034414 	C75310:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5745	034040	666 04 0 00 000003 		TRON	4,3			;*TRON SHOULD NOT  SKIP AND
+  5746										;PLACE 123456,,701237 INTO THE AC
+  5747	034041	334 00 0 00 000000 		SKIPA				;PASS IF TRON DID NOT SKIP
+  5748						STOP^
+  5749	034042	254 04 0 00 034043 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5750	034043	324 00 0 00 034044 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5751									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5752									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5753									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5754	034044	312 04 0 00 034446 		CAME	4,[123456,,701237]	;PASS IF C(AC)=123456,701237
+  5755						STOP^
+  5756	034045	254 04 0 00 034046 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5757	034046	324 00 0 00 034047 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5758									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5759									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5760									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5761
+  5762					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 96
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0142
+
+  5763					;THIS TEST VERIFIES THAT TLON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5764					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  5765					;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+  5766					;IN THIS CASE, C(AC)-123456,,701234 AND E=3
+  5767					;HENCE, TLON SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5768					;AND THE RESULT IN THE AC SHOULD BE 123457,,701234
+  5769
+  5770	034047	200 03 0 00 034414 	C75400:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5771	034050	667 03 0 00 000003 		TLON	3,3			;*TLON SHOULD SKIP AND
+  5772										;PLACE 123457,,701234 INTO THE AC
+  5773						STOP^
+  5774	034051	254 04 0 00 034052 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5775	034052	324 00 0 00 034053 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5776									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5777									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5778									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5779	034053	312 03 0 00 034463 		CAME	3,[123457,,701234]	;PASS IF C(AC)=123457,,701234
+  5780						STOP^
+  5781	034054	254 04 0 00 034055 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5782	034055	324 00 0 00 034056 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5783									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5784									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5785									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5786
+  5787					;*******
+  5788
+  5789					;THIS TEST VERIFIES THAT TLON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5790					;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+  5791					;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+  5792					;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+  5793					;HENCE, TLON SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+  5794					;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+  5795
+  5796	034056	200 02 0 00 034414 	C75410:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5797	034057	667 02 0 00 000300 		TLON	2,300			;*TLON SHOULD NOT SKIP AND
+  5798										;PLACE 123756,,701234 INTO THE AC
+  5799	034060	334 00 0 00 000000 		SKIPA				;PASS IF TLON DID NOT SKIP
+  5800						STOP^
+  5801	034061	254 04 0 00 034062 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5802	034062	324 00 0 00 034063 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5803									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5804									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5805									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5806	034063	312 02 0 00 034450 		CAME	2,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+  5807						STOP^
+  5808	034064	254 04 0 00 034065 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5809	034065	324 00 0 00 034066 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5810									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5811									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5812									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5813
+  5814					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 97
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0143
+
+  5815					;THIS TEST VERIFIES THAT TDOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5816					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5817					;C(E)ARE ZERO.  THESE MASKED
+  5818					;AC BITS ARE THEN CHANGED TO ONES
+  5819					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+  5820					;HENCE, TDOE SHOULD SKIP AND THE RESULT IN AC
+  5821					;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+  5822
+  5823	034066	200 01 0 00 034414 	C75500:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5824	034067	200 02 0 00 034433 		MOVE	2,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  5825	034070	672 01 0 00 000002 		TDOE	1,2			;*TDOE SHOULD SKIP AND
+  5826										;PLACE -1,,-1 INTO THE AC
+  5827						STOP^
+  5828	034071	254 04 0 00 034072 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5829	034072	324 00 0 00 034073 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5830									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5831									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5832									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5833	034073	312 01 0 00 034301 		CAME	1,[-1]			;PASS IF C(AC)=-1,,-1
+  5834						STOP^
+  5835	034074	254 04 0 00 034075 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5836	034075	324 00 0 00 034076 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5837									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5838									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5839									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5840	034076	312 02 0 00 034433 		CAME	2,[654321,,76543]	;PASS IF C(E) UNCHANGED
+  5841						STOP^
+  5842	034077	254 04 0 00 034100 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5843	034100	324 00 0 00 034101 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5844									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5845									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5846									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5847
+  5848					;**********
+  5849
+  5850					;THIS TEST VERIFIES THAT TDOE SKIPS THE NEXT SEQUENTAIL INSTRUCTION
+  5851					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5852					;C(E) ARE ZERO.  THESE MASKED
+  5853					;AC BITS ARE THEN CHANGED TO ONES
+  5854					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=754321,,076543
+  5855					;HENCE, TDOE SHOULD NOT SKIP AND THE RESULT IN AC
+  5856					;SHOULD BE -1,,-1 C(E) IS NOT AFFECTD
+  5857
+  5858	034101	200 00 0 00 034414 	C75510:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5859	034102	200 01 0 00 034434 		MOVE	1,[754321,,76543]	;PRELOAD E WITH 754321,,076543
+  5860	034103	672 00 0 00 000001 		TDOE	0,1			;*TDOE SHOULD NOT SKIP AND
+  5861										;PLACE -1,,-1 INTO THE AC
+  5862	034104	334 00 0 00 000000 		SKIPA				;PASS IF TDOE DOES NOT SKIP
+  5863						STOP^
+  5864	034105	254 04 0 00 034106 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5865	034106	324 00 0 00 034107 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5866									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5867									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5868									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5869	034107	312 00 0 00 034301 		CAME	0,[-1]			;PASS IF C(AC)=-1,,-1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 97-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0144
+
+  5870						STOP^
+  5871	034110	254 04 0 00 034111 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5872	034111	324 00 0 00 034112 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5873									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5874									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5875									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5876	034112	312 01 0 00 034434 		CAME	1,[754321,,76543]	;PASS IF C(E) UNCHANGED
+  5877						STOP^
+  5878	034113	254 04 0 00 034114 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5879	034114	324 00 0 00 034115 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5880									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5881									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5882									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5883
+  5884					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 98
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0145
+
+  5885					;THIS TEST VERIFIES THAT TSOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5886					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5887					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  5888					;AC BITS ARE THEN CHANGED TO ONES.
+  5889					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  5890					;HENCE, TSOE SHOULD SKIP AND THE RESULT IN AC
+  5891					;SHOULD BE -1,,-1.  C(E) IS NOT AFFECTED
+  5892
+  5893	034115	200 17 0 00 034414 	C75600:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5894	034116	200 00 0 00 034424 		MOVE	0,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+  5895	034117	673 17 0 00 000000 		TSOE	17,0			;*TSOE SHOULD SKIP AND
+  5896										;PLACE -1,,-1 INTO THE AC
+  5897						STOP^
+  5898	034120	254 04 0 00 034121 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5899	034121	324 00 0 00 034122 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5900									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5901									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5902									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5903	034122	312 17 0 00 034301 		CAME	17,[-1]			;PASS IF C(AC)=-1,,-1
+  5904						STOP^
+  5905	034123	254 04 0 00 034124 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5906	034124	324 00 0 00 034125 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5907									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5908									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5909									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5910	034125	312 00 0 00 034424 		CAME	0,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  5911						STOP^
+  5912	034126	254 04 0 00 034127 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5913	034127	324 00 0 00 034130 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5914									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5915									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5916									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5917
+  5918					;**********
+  5919
+  5920					;THIS TEST VERIFIES THAT TSOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  5921					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  5922					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  5923					;AC BITS ARE THEN  CHANGED TO ONES.
+  5924					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,657321
+  5925					;HENCE, TSOE SHOULD NOT SKIP AND THE RESULT IN THE AC
+  5926					;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED.
+  5927
+  5928	034130	200 16 0 00 034414 	C75610:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,701234
+  5929	034131	200 17 0 00 034436 		MOVE	17,[76543,,657321]	;PRELOAD E WITH 076543,,657321
+  5930	034132	673 16 0 00 000017 		TSOE	16,17			;*TSOE SHOULD NOT SKIP AND
+  5931										;*TSOE SHOULD NOT SKIP AND
+  5932										;PLACE -1,,-1 INTO THE AC
+  5933	034133	334 00 0 00 000000 		SKIPA				;PASS IF SKIP
+  5934						STOP^
+  5935	034134	254 04 0 00 034135 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5936	034135	324 00 0 00 034136 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5937									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5938									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5939									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 98-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0146
+
+  5940	034136	312 16 0 00 034301 		CAME	16,[-1]			;PASS IF C(AC)=-1,,-1
+  5941						STOP^
+  5942	034137	254 04 0 00 034140 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5943	034140	324 00 0 00 034141 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5944									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5945									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5946									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5947	034141	312 17 0 00 034436 		CAME	17,[76543,,657321]	;PASS IF C(E) UNCHANGED
+  5948						STOP^
+  5949	034142	254 04 0 00 034143 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5950	034143	324 00 0 00 034144 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5951									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5952									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5953									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5954
+  5955					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 99
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0147
+
+  5956					;THIS TEST VERIFIES THAT TDOA PLACES ONES INTO ALL BITS OF THE AC WHICH
+  5957					;CORRRESPOND TO 1'S IN C(E) AND ALWAYS
+  5958					;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+  5959					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)= 654321,,076543
+  5960					;HENCE, TDOA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+  5961
+  5962	034144	200 15 0 00 034414 	C75700:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5963	034145	200 16 0 00 034433 		MOVE	16,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  5964	034146	674 15 0 00 000016 		TDOA	15,16			;*TDOA SHOULD SKIP AND
+  5965										;PLACE -1,,-1 INTO THE AC
+  5966						STOP^
+  5967	034147	254 04 0 00 034150 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5968	034150	324 00 0 00 034151 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5969									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5970									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5971									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5972	034151	312 15 0 00 034301 		CAME	15,[-1]			;PASS IF C(AC)=-1,,-1
+  5973						STOP^
+  5974	034152	254 04 0 00 034153 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5975	034153	324 00 0 00 034154 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5976									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5977									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5978									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5979	034154	312 16 0 00 034433 		CAME	16,[654321,,076543]	;PASS IF C(E) UNCHANGED
+  5980						STOP^
+  5981	034155	254 04 0 00 034156 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  5982	034156	324 00 0 00 034157 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  5983									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  5984									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  5985									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  5986
+  5987					;**********
+  5988
+  5989					;THIS TEST VERIFIES THAT TDOA PLACE ONES ALL BIT OF THE AC WHICH
+  5990					;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+  5991					;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+  5992					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+  5993					;HENCE, TDOA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 373577,,707274
+  5994
+  5995	034157	200 14 0 00 034414 	C75710:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  5996	034160	200 15 0 00 034431 		MOVE	15,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+  5997	034161	674 14 0 00 000015 		TDOA	14,15			;*TDOA SHOULD SKIP AND
+  5998										;PLACE 373577,707274 ONTO THE AC
+  5999						STOP^
+  6000	034162	254 04 0 00 034163 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6001	034163	324 00 0 00 034164 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6002									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6003									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6004									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6005	034164	312 14 0 00 034464 		CAME	14,[373577,,707274]	;PASS IF C(AC)=373577,,707274
+  6006						STOP^
+  6007	034165	254 04 0 00 034166 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6008	034166	324 00 0 00 034167 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6009									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6010									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 99-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0148
+
+  6011									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6012	034167	312 15 0 00 034431 		CAME	15,[252525,,707070]	;PASS IF C(E) UNCHANGED
+  6013						STOP^
+  6014	034170	254 04 0 00 034171 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6015	034171	324 00 0 00 034172 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6016									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6017									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6018									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6019
+  6020					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 100
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0149
+
+  6021					;THIS TEST VERIFIES THAT TSOA PLACE ONES INTO ALL BITS OF THE AC WHICH
+  6022					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+  6023					;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  6024					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  6025					;HENCE, TSOA SHOULD SLAWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+  6026
+  6027	034172	200 13 0 00 034414 	C76000:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  6028	034173	200 14 0 00 034465 		MOVE	14,[176543,,654321]	;PRELOAD E WITH 076543,,654321
+  6029	034174	675 13 0 00 000014 		TSOA	13,14			;*TSOA SHOULD SKIP AND
+  6030										;PLACE -1,,-1 ONTO THE AC
+  6031						STOP^
+  6032	034175	254 04 0 00 034176 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6033	034176	324 00 0 00 034177 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6034									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6035									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6036									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6037	034177	312 13 0 00 034301 		CAME	13,[-1]			;PASS IF C(AC)=-1,,-1
+  6038						STOP^
+  6039	034200	254 04 0 00 034201 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6040	034201	324 00 0 00 034202 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6041									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6042									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6043									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6044	034202	312 14 0 00 034465 		CAME	14,[176543,,654321]	;PASS IF C(E) UNCHANGED
+  6045						STOP^
+  6046	034203	254 04 0 00 034204 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6047	034204	324 00 0 00 034205 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6048									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6049									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6050									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6051
+  6052					;**********
+  6053
+  6054					;THIS TEST VERIFIES THAT TSOA PLACES ONES INTO ALL BITS OF THE AC WHICH
+  6055					;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+  6056					;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+  6057					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+  6058					;HENCE, TSOA SHOULD SLWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+  6059
+  6060	034205	200 12 0 00 034414 	C76010:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  6061	034206	200 13 0 00 034441 		MOVE	13,[701234,,123456]	;PRELOAD E WITH 701234,123456
+  6062	034207	675 12 0 00 000013 		TSOA	12,13			;*TSOA SHOULD SKIP AND
+  6063										;PLACE 123456,,701234 INTO THE AC
+  6064						STOP^
+  6065	034210	254 04 0 00 034211 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6066	034211	324 00 0 00 034212 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6067									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6068									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6069									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6070	034212	312 12 0 00 034414 		CAME	12,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+  6071						STOP^
+  6072	034213	254 04 0 00 034214 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6073	034214	324 00 0 00 034215 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6074									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6075									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 100-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0150
+
+  6076									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6077	034215	312 13 0 00 034441 		CAME	13,[701234,,123456]	;PASS IF C(E) UNCHANGED
+  6078						STOP^
+  6079	034216	254 04 0 00 034217 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6080	034217	324 00 0 00 034220 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6081									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6082									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6083									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6084
+  6085					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 101
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0151
+
+  6086					;THIS TEST VERIFIES THAT TDON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  6087					;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  6088					;C(E) ARE ZERO.  THESE MASKED
+  6089					;AC BITS ARE THEN CHANGED TO ONES
+  6090					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+  6091					;HENCE, TDON SHOULD SKIP AND THE RESULT IN AC
+  6092					;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+  6093
+  6094	034220	200 11 0 00 034414 	C76100:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  6095	034221	200 12 0 00 034442 		MOVE	12,[654321,,076547]	;PRELOAD E WITH 654321,,076547
+  6096	034222	676 11 0 00 000012 		TDON	11,12			;*TDON SHOULD SKIP AND
+  6097										;PLACE -1,,-1 INTO THE AC
+  6098						STOP^
+  6099	034223	254 04 0 00 034224 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6100	034224	324 00 0 00 034225 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6101									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6102									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6103									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6104	034225	312 11 0 00 034301 		CAME	11,[-1]			;PASS IF C(AC)=-1,,-1
+  6105						STOP^
+  6106	034226	254 04 0 00 034227 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6107	034227	324 00 0 00 034230 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6108									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6109									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6110									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6111	034230	312 12 0 00 034442 		CAME	12,[654321,,076547]	;PASS IF C(E) UNCHANGED
+  6112						STOP^
+  6113	034231	254 04 0 00 034232 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6114	034232	324 00 0 00 034233 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6115									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6116									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6117									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6118
+  6119					;**********
+  6120
+  6121					;THIS TEST VERIFIES THAT TDON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  6122					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  6123					;C(E) ARE ZERO.  THESE MASKED
+  6124					;AC BITS ARE THEN CHANGED TO ONES.
+  6125					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+  6126					;THENC, TDON SHOULD NOT SKIP AND THE RESULT IN TH AC
+  6127					;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+  6128
+  6129	034233	200 10 0 00 034414 	C76110:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  6130	034234	200 11 0 00 034433 		MOVE	11,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+  6131	034235	676 10 0 00 000011 		TDON	10,11			;*TDON SHOULD NOT SKIP AND
+  6132										;PLACE -1,,-1 INTO THE AC
+  6133	034236	334 00 0 00 000000 		SKIPA				;PASS IF TDON DOES NOT SKIP
+  6134						STOP	^
+  6135	034237	254 04 0 00 034240 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6136	034240	324 00 0 00 034241 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6137									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6138									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6139									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6140	034241	312 10 0 00 034301 		CAME	10,[-1]			;PASS IF C(AC)=-1,,-1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 101-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0152
+
+  6141						STOP^
+  6142	034242	254 04 0 00 034243 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6143	034243	324 00 0 00 034244 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6144									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6145									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6146									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6147	034244	312 11 0 00 034433 		CAME	11,[654321,,076543]	;PASS IF C(E) UNCHANGED
+  6148						STOP^
+  6149	034245	254 04 0 00 034246 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6150	034246	324 00 0 00 034247 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6151									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6152									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6153									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6154
+  6155					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 102
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0153
+
+  6156					;THIS TEST VERIFIES THAT TSON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  6157					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  6158					;C(E) WITH BOTH HALVE SWAPPED ARE ZERO.  THESE MASKED
+  6159					;AC BITS ARE THEN CHANGED TO ONES
+  6160					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321
+  6161					;HENCE, TSON SHOULD SKIP AND THE RESULT IN AC
+  6162					;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+  6163
+  6164	034247	200 07 0 00 034414 	C76200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  6165	034250	200 10 0 00 034444 		MOVE	10,[77543,,654321]	;PRELOAD E WITH 077543,,654321]
+  6166	034251	677 07 0 00 000010 		TSON	7,10			;*TSON HOULD SKIP AND
+  6167										;PLACE -1,,-1 INTO THE AC
+  6168						STOP^
+  6169	034252	254 04 0 00 034253 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6170	034253	324 00 0 00 034254 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6171									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6172									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6173									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6174	034254	312 07 0 00 034301 		CAME	7,[-1]			;PASS IF C(AC)=-1,,-1
+  6175						STOP^
+  6176	034255	254 04 0 00 034256 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6177	034256	324 00 0 00 034257 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6178									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6179									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6180									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6181	034257	312 10 0 00 034444 		CAME	10,[77543,,654321]	;PASS IF C(E) UNCHANGED
+  6182						STOP^
+  6183	034260	254 04 0 00 034261 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6184	034261	324 00 0 00 034262 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6185									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6186									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6187									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6188
+  6189					;**********
+  6190
+  6191					;THIS TEST VERIFIES THAT TSON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+  6192					;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+  6193					;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+  6194					;AC BITS ARE THEN CHANGED TO ONES.
+  6195					;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+  6196					;HENCE, TSON SHOULD NOT SKIP AND THE RESULT IN AC
+  6197					;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+  6198
+  6199	034262	200 06 0 00 034414 	C76210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+  6200	034263	200 07 0 00 034424 		MOVE	7,[76543,,654321]	;PRELOAD E WITH 076543MM654321
+  6201	034264	677 06 0 00 000007 		TSON	6,7			;*TSON SHOULD NOT SKIP AND
+  6202										;PLACE -1,,-1 INTO THE AC
+  6203	034265	334 00 0 00 000000 		SKIPA				;PASS IF TSON DOES NOT SKIP
+  6204						STOP^
+  6205	034266	254 04 0 00 034267 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6206	034267	324 00 0 00 034270 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6207									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6208									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6209									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6210	034270	312 06 0 00 034301 		CAME	6,[-1]			;PASS IF C(AC)-=1,,-1
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 102-1
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0154
+
+  6211						STOP^
+  6212	034271	254 04 0 00 034272 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6213	034272	324 00 0 00 034273 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6214									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6215									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6216									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6217	034273	312 07 0 00 034424 		CAME	7,[76543,,654321]	;PASS IF C(E) UNCHANGED
+  6218						STOP^
+  6219	034274	254 04 0 00 034275 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  6220	034275	324 00 0 00 034276 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  6221									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  6222									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  6223									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  6224
+  6225					;**********
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 103
+DAKAFM	MAC	19-JAN-77 17:08		TEST OF MSCL LOGICAL TEST INSTRUCTIONS                                             SEQ 0155
+
+  6226	034276	254 00 0 00 030057 		JRST	BEGEND
+  6227					SUBTTL	*STOR* RESERVED STORAGE, JAN 18,1977
+  6228
+  6229					;PROGRAM LITERALS
+  6230
+  6231						XLIST
+  6232					IFNDEF	$LPAPER,
+  6233	034277					LIT
+  6234	034277	000001	000001
+  6235	034300	254 00 0 00 030741
+  6236	034301	777777	777777
+  6237	034302	777000	707070
+  6238	034303	777000	000777
+  6239	034304	123456	123456
+  6240	034305	123000	000456
+  6241	034306	121212	000000
+  6242	034307	777350	777776
+  6243	034310	000767	777777
+  6244	034311	777010	000000
+  6245	034312	000777	770077
+  6246	034313	123456	246123
+  6247	034314	123000	006100
+  6248	034315	000100	777600
+  6249	034316	123456	246135
+  6250	034317	123456	040104
+  6251	034320	123321	456654
+  6252	034321	770077	007770
+  6253	034322	003300	450004
+  6254	034323	123456	663322
+  6255	034324	777000	700770
+  6256	034325	000456	063002
+  6257	034326	123456	777776
+  6258	034327	010203	123450
+  6259	034330	123456	000000
+  6260	034331	000777	123456
+  6261	034332	000777	517067
+  6262	034333	707077	555666
+  6263	034334	123456	765432
+  6264	034335	624421	230254
+  6265	034336	707070	123456
+  6266	034337	707070	767577
+  6267	034340	123456	777666
+  6268	034341	777001	123470
+  6269	034342	777457	777676
+  6270	034343	777000	123456
+  6271	034344	000777	050321
+  6272	034345	777007	771100
+  6273	034346	063202	123477
+  6274	034347	000570	004200
+  6275	034350	707070	123426
+  6276	034351	070707	777032
+  6277	034352	123456	123457
+  6278	034353	707633	121212
+  6279	034354	153512	775132
+  6280	034355	000777	654321
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 1
+STOR	KLM	18-JAN-77 11:42		*STOR* RESERVED STORAGE, JAN 18,1977                                               SEQ 0156
+
+  6281	034356	654321	012345
+  6282	034357	777000	123477
+  6283	034360	000777	775701
+  6284	034361	707070	707072
+  6285	034362	707777	757372
+  6286	034363	777777	070707
+  6287	034364	777777	133777
+  6288	034365	707070	070706
+  6289	034366	777777	707777
+  6290	034367	123456	770077
+  6291	034370	777001	123324
+  6292	034371	654777	657753
+  6293	034372	123456	707070
+  6294	034373	707070	707070
+  6295	034374	123456	123422
+  6296	034375	707070	717171
+  6297	034376	123422	000000
+  6298	034377	123456	707076
+  6299	034400	707076	000000
+  6300	034401	123456	777777
+  6301	034402	123456	135724
+  6302	034403	765432	246135
+  6303	034404	246135	777777
+  6304	034405	123123	456765
+  6305	034406	456765	777777
+  6306	034407	000000	000000
+  6307	034410	707076	777777
+  6308	034411	765432	777777
+  6309	034412	365432	123456
+  6310	034413	365432	000000
+  6311	034414	123456	701234
+  6312	034415	123123	246135
+  6313	034416	123123	123123
+  6314	034417	777777	701234
+  6315	034420	765432	107654
+  6316	034421	777777	765432
+  6317	034422	777777	000000
+  6318	034423	777777	123456
+  6319	034424	076543	654321
+  6320	034425	076543	654323
+  6321	034426	076547	654321
+  6322	034427	123456	701034
+  6323	034430	123454	701234
+  6324	034431	252525	707070
+  6325	034432	020406	501210
+  6326	034433	654321	076543
+  6327	034434	754321	076543
+  6328	034435	023456	701234
+  6329	034436	076543	657321
+  6330	034437	120456	701234
+  6331	034440	121052	000204
+  6332	034441	701234	123456
+  6333	034442	654321	076547
+  6334	034443	123456	701230
+  6335	034444	077543	654321
+DAKAF PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) 0,2	MACRO %52(537) 17:12 19-JAN-77 PAGE 1-1
+STOR	KLM	18-JAN-77 11:42		*STOR* RESERVED STORAGE, JAN 18,1977                                               SEQ 0157
+
+  6336	034445	123456	700234
+  6337	034446	123456	701237
+  6338	034447	123456	701134
+  6339	034450	123756	701234
+  6340	034451	123455	701234
+  6341	034452	624426	553711
+  6342	034453	677777	777777
+  6343	034454	774777	777777
+  6344	034455	371173	006244
+  6345	034456	777777	777773
+  6346	034457	777777	776777
+  6347	034460	123456	701334
+  6348	034461	123456	070234
+  6349	034462	123457	070234
+  6350	034463	123457	701234
+  6351	034464	373577	707274
+  6352	034465	176543	654321
+  6353						LIST
+  6354	034466	000000	000000		ENDSLD:	0
+  6355
+  6356					IFDEF	DEBUG,<
+  6357	034467				PATCH:	BLOCK DEBUG		;PATCHING AREA
+  6358					>
+  6359
+  6360					;PROGRAM VARIABLES
+  6361	034567					VAR
+  6362
+  6363					IFDEF	PGMEND,<
+  6364	034567	000000	000000		END:	0
+  6365			030000			END	BEGIN	>
+
+NO ERRORS DETECTED
+
+PROGRAM BREAK IS 000000
+ABSLUTE BREAK IS 034570
+CPU TIME USED 00:27.392
+
+11K CORE USED
diff --git a/apps/pdp10/diags/klad/dakaf/DAKAF.MAC.txt b/apps/pdp10/diags/klad/dakaf/DAKAF.MAC.txt
new file mode 100644
index 000000000..477d093a6
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakaf/DAKAF.MAC.txt
@@ -0,0 +1,3219 @@
+;MACROS
+
+; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1)
+;	 TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION
+
+DEFINE	STOP	(A)<
+	HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+	JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+				;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+				;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+				;AND CHANGE HALT INSTRUCTION TO JUMPA .+1>
+
+SUBTTL	DIAGNOSTIC SECTION
+
+START:	;SETZM	USER#		;CLEAR USER CONTROL WORD
+	;JSP	0,.+1		;GET FLAGS
+	;TLNE	USERF		;IN USER MODE?
+	;SETOM	USER		;YES, SET USER CONTROL WORD
+	;SKIPN	MONFLG		;SPECIAL USER MODE?
+	;SETZM	USER		;YES, CLEAR USER CONTROL WORD
+	;SKIPN	USER
+	;JRST	STARTA
+	;SKIPL	MONCTL
+	;TTCALL	3,PGMNAM	;MENTION OUR NAME
+	JRST	STARTA
+
+PGMNAM:	ASCIZ/
+PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) [DAKAF]
+/
+
+STARTA:	JRST	.+1
+SUBTTL	TEST OF MSCL BOOLEAN INSTRUCTIONS
+
+;**********
+
+;THIS TEST VERIFIES THAT SETZI CLEARS THE AC AND DOES NOT AFFECT E.
+;FIRST, AC AND E ARE PRELOADED WITH -1,,-1, THEN, SETZI IS EXECUTED.
+;AC IS THEN CHECKED FOR 0 AND E IS CHECKED FOR -1,,-1
+
+C56100:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	SETO	2,		;PRELOAD E WITH -1,,-1
+	SETZI	1,2		;*SETZI SHOULD CLEAR THE AC
+	SKIPE	1		;PASS IF C(AC)=0
+	STOP
+	CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETZM CLEARS C(E) AND DOES NOT AFFECT C(AC)
+;FIRST, AC AND E ARE PRELOADED WITH -1,,-1; THEN SETZM IS EXECUTED.
+;AC IS THEN CHECKED FOR -1,,-1 AND E IS CHECKED FOR 0.
+
+C56200:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	SETO	2,		;PRELOAD E WITH -1,,-1
+	SETZM	1,2		;*SETZM SHOULD CLEAR E
+	CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+	STOP
+	SKIPE	2		;PASS IF C(E)=0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETOI PLACES ALL ONES INTO THE AC.
+;FIRST, THE AC AND E ARE CLEARED; THEN, SETOI IS EXECUTED.
+;AC AND E ARE CHECKED FOR -1,,-1 AND 0 RESPECTIVELY
+
+C56300:	SETZB	1,2		;CLEAR AC,E
+	SETOI	1,2		;*SETOI SHOULD PLACE -1,,-1 INTO THE AC
+	CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+	STOP
+	SKIPE	2		;PASS IF C(E)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETOM PLACES ALL ONES INTO E
+;FIRST, THE AC AND E ARE CLEARED, THEN SETOM IS EXECUTED.
+;AC AND E ARE THEN CHECKED FOR 0 AND -1,,-1 RESPECTIVELY.
+
+C56400:	SETZB	1,2		;CLEAR AC,E
+	SETOM	1,2		;*SETOM SHOULD PLACE -1,,-1 INTO E
+	SKIPE	1		;PASS IF C(AC)=0
+	STOP
+	CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETOB PLACES ALL ONES INTO BOTH AC AND E.
+;FIRST, BOTH AC AND E ARE CLEARED; THEN, SETOB IS EXECUTED.
+;AC AND E ARE BOTH CHECKED FOR -1,,-1
+
+C56500:	SETZB	1,2		;CLEAR AC,E
+	SETOB	1,2		;*SETOB SHOULD PUT -1,,-1 INTO BOTH AC AND E
+	CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDI PLACES THE LOGICAL AND FUNCTION
+;OF C(AC) AND 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,707070 AND E=0,,123123.
+;HENCE, THE RESULT IN THE AC SHOULD BE 0,,103103
+
+C56600:	MOVE	1,[777000,,707070]	;PRELOAD AC WITH 777000,,707070
+	ANDI	1,123123	;*ANDI SHOULD PLACE 0,,103103 INTO THE AC
+	CAIE	1,103020	;PASS IF C(AC)=103103
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDM PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=777000,,000777 AND C(E)=123456,,123456.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 777000,,000777 AND
+;123000,,00456 RESPECTIVELY
+
+C56700:	MOVE	1,[777000,,777]	;PRELOAD E WITH 777000,,000777
+	MOVE	2,[123456,,123456]	;PRELOAD AC WITH 123456,,123456
+	ANDM	2,1		;*ANDM SHOULD PLACE 123000,,000456 INTO E
+	CAME	2,[123456,,123456]	;PASS IF C(AC) NOT MODIFIED
+	STOP
+	CAME	1,[123000,,000456]	;PASS IF C(E)=123000,,000456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDM PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=777000,,000777 AND C(E)=123456,,123456.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 777000,,000777 AND
+;123000,,00456 RESPECTIVELY
+
+C56701:	MOVE	1,[777000,,777]	;PRELOAD E WITH 777000,,000777
+	MOVEM	1,E56701
+	MOVE	2,[123456,,123456]	;PRELOAD AC WITH 123456,,123456
+	ANDM	2,E56701	;*ANDM SHOULD PLACE 123000,,000456 INTO E
+	CAME	2,[123456,,123456]	;PASS IF C(AC) NOT MODIFIED
+	STOP
+	MOVE	1,E56701
+	CAME	1,[123000,,000456]	;PASS IF C(E)=123000,,000456
+	STOP
+
+	SKIPA				;GO TO NEXT TEST
+E56701:	0				;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT ANDCB PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=-1,,0 AND C(E)=121212,,-1
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 121212,,0,
+
+C57000:	HRROI	3,0		;PRELOAD AC WITH -1,,0
+	HRLOI	6,121212	;PRELOAD E WITH 121212,,-1
+	ANDB	3,6		;*ANDB SHOULD PLACE 121212,,0 INTO BOTH AC AND E
+	CAME	3,[121212,,0]	;PASS IF C(AC)=121212,,0
+	STOP
+	CAME	6,[121212,,0]	;PASS IF C(E)=121212,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCB PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=-1,,0 AND C(E)=121212,,-1
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 121212,,0,
+
+C57001:	HRROI	3,0		;PRELOAD AC WITH -1,,0
+	HRLOI	6,121212	;PRELOAD E WITH 121212,,-1
+	MOVEM	6,E57001
+	ANDB	3,E57001	;*ANDB SHOULD PLACE 121212,,0 INTO BOTH AC AND E
+	CAME	3,[121212,,0]	;PASS IF C(AC)=121212,,0
+	STOP
+	MOVE	6,E57001
+	CAME	6,[121212,,0]	;PASS IF C(E)=121212,,0
+	STOP
+
+	SKIPA			;GO TO NEXT TEST
+E57001:	0			;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT ANDCAI PLACES THE LOGICAL AND FUNCTION
+;OF THE WORD 0,E AND THE COMPLEMENT OF C(AC) INTO THE AC
+;IN THIS CASE, C(AC)=777,000,,707070 AND E=0,135246
+;HENCE, THE RESULT IN THE AC SHOULD BE 0,,030206
+
+C57100:	MOVE	5,[777000,,707070]	;PRELOAD AC WITH 777000,,707070
+	ANDCAI	5,135246	;*ANDCAI SHOULD PLACE 0,,30206 INTO THE AC
+	CAIE	5,030206	;PASS IF C(AC)=030206
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCAM PLACES THE LOGICAL AND FUNCTION OF
+;C(E) AND THE COMPLEMENT OF C(AC) INTO E.
+;IN THIS CASE, C(AC)=000767,,-1 AND C(E)=777350,,-2
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 000767,,-1 AND
+;777010,,0 RESPECTIVELY.
+
+C57200:	HRLOI	4,767		;PRELOAD AC WITH 000767,,-1
+	MOVE	6,[777350,,-2]	;PRELOAD E WITH 777350,,-2
+	ANDCAM	4,6		;*ANDCAM SHOULD PLACE 777010,,0
+				;INTO E
+	CAME	4,[767,,-1]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	6,[777010,,0]	;PASS IF C(E)=777010,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCAB PLACES THE LOGICAN AND FUNCTION OF
+;C(E) AND THE COMPLEMENT OF C(AC) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=000777,,770077 AND C(E)=123456,246123
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 123000,,006100
+
+C57300:	MOVE	1,[000777,,770077]	;PRELOAD AC WITH 000777,770077
+	MOVE	2,[123456,,246123]	;PRELOAD E WITH 123456,246123
+	ANDCAB	1,2		;*ANDCAB SHOULD PLACE 123000,006100
+				;INTO BOTH AC AND E
+	CAME	1,[123000,,006100]	;PASS IF C(AC)=123000,006100
+	STOP
+	CAME	2,[123000,,006100]	;PASS IF C(E)=123000,006100
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETMI MOVES THE WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=-1,,-1 AND E=0,,123456.  HENCE, THE RESULT
+;IN THE AC SHOULD BE 0,,123456
+
+C57400:	SETO	5,		;PRELOAD AC WITH -1,,-1
+	SETMI	5,123456	;*SETMI SHOULD PLACE 0,,123456 INTO THE AC
+	CAIE	5,123456	;PASS IF C(AC)=0,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETMM IS A NO-OP.  HENCE, IT SHOULD
+;NOT MODIFY AC OR E.
+;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-1; AND NEITHER SHOULD NOT BE CHANGED
+
+C57500:	SETZ	16,		;CLEAR C(AC)
+	SETO	17,		;PRELOAD E WITH -1,,-1
+	SETMM	16,17		;*SETMM IS A NO-OP
+	SKIPE	16		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[-1]		;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETMB PLACES C(E) INTO THE AC
+;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=100,,-200  HENCE, THE RESULT
+;IN BOTH AC AND E SHOULD BE 000100,,-200.
+
+C57600:	SETO	0,		;CLEAR AC
+	MOVE	1,[100,,-200]	;PRELOAD E WITH 100,,-200
+	SETMB	0,1		;*SETMB SHOULD PLACE 100,,-200 INTO THE AC
+	CAME	0,[100,,-200]	;PASS IF C(AC)=100,,-200
+	STOP
+	CAME	1,[100,,-200]	;PASS IF C(E)=100,,-200
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCMI PLACES THE LOGICAL AND FUNCTION
+;OF C(AC) AND THE COMPLEMENT OF THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=123456,,246135 AND E=0,,717273.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,040104.
+
+C57700:	MOVE	15,[123456,,246135]	;PRELOAD AC WITH 123456,,246135
+	ANDCMI	15,717273	;*ANDCMI SHOULD PLACE 123456,,040104
+				;INTO THE AC
+	CAME	15,[123456,,040104]	;PASS IF C(AC)=123456,,040104
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCMM PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND THE COMPLEMENT OF C(E) INTO E.
+;IN THIS CASE,C(AC)=12321,,456654 AND C(E)= 770077,,007770
+;HENCE, THE RESULT IN E SHOULD BE 003300,,450004
+
+C60000:	MOVE	14,[123321,,456654]	;PRELOAD AC WITH 123321,,456654
+	MOVE	15,[770077,,007770]	;PRELOAD E WITH 77007770
+	ANDCMM	14,15			;*ANDCMM SHOULD PLACE 003300,,450004 INTO THE AC
+	CAME	14,[123321,,456654]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	15,[3300,,450004]	;PASS IF C(E) = 003300,,450004
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCMB PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND THE COMPLEMENT OF C(E) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)123456,,663322 AND C(E) = 777000,,700770
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 000456,,063002
+
+C60100:	MOVE	13,[123456,,663322]	;PRELOAD AC WITH 123456,,663322
+	MOVE	14,[777000,,700770]	;PRELOAD E WITH 777000,,700770
+	ANDCMB	13,14			;*ANDCMB SHOULD PLACE 000456,,063002
+					;INTO BOTH AC AND E
+	CAME	13,[456,,63002]		;PASS IF C(AC)=000456,,063002
+	STOP
+	CAME	14,[456,,63002]		;PASS IF C(E)=000456,,063002
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETA IS A NO-OP. IT AFFECTS NEITHER
+;AC OR E. IN THIS CASE, C(AC)=123456,,777776 AND C(E)=010203,,123450.
+;SETA SHOULD NOT MODIFY C(AC) OR C(E)
+
+C60200:	MOVE	12,[123456,,777776]	;PRELOAD AC WITH 123456,,-2
+	MOVE	13,[010203,,123450]	;PRELOAD E WITH 010203,,123450
+	SETA	12,13			;*SETA IS A NO-OP
+	CAME	12,[123456,,-2]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	13,[010203,,123450]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETAI IS A NO-OP. IT DOES NOT AFFECT THE AC.
+;IN THIS CASE, C(AC)=123456,,777776 AND E=0,,123450
+;SETA SHOULD NOT MODIFY C(AC)
+
+C60300:	MOVE 12,[123456,,777776]	;PRELOAD AC WITH 123456,,-2
+	SETAI	12,123450		;*SETAI IS A NO-OP
+	CAME	12,[123456,,-2]		;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETAM PLACES C(AC) INTO E.
+;IN THIS CASE, C(AC)=123456,,0 AND C(E)=-1,,-1.  HENCE, THE
+;RESULT IN E SHOULD BE 123456,,0
+
+C60400:	HRLZI	11,123456		;PRELOAD AC WITH 123456,,0
+	SETO	12,			;PRELOAD E WITH -1,,-1
+	SETAM	11,12			;SETAM SHOULD PLACE 123456,,0 INTO E
+	CAME	11,[123456,,0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	12,[123456,,0]		;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT XORI PLACES THE LOGICAL EXCLUSIVE OR FUNCTION
+;OF C(AC) AND THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=000777,,123456 AND E=0,,434431
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,517067.
+
+C60500:	MOVE	10,[777,,123456]	;PRELOAD AC WITH 000777,,123456
+	XORI	10,434431		;*XORI SHOULD PLACE 000777,,517067 INTO THE AC
+	CAME	10,[777,,517067]	;PASS IF C(AC)=000777,,517067
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT XORB PLACES THE LOGICAL EXCLUSIVE OR FUNCTION
+;OF C(AC) AND C(E) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=707077,,555666 AND C(E)=123456,,765432
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 624421,,230254
+
+C60600:	MOVE	7,[707077,,555666]	;PRELOAD AC WITH 707077,,555666
+	MOVE	10,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+	XORB	7,10			;*XORB SHOULD PLACE 624421,,230254
+					;INTO BOTH AC AND E
+	CAME	7,[624421,,230254]	;PASS IF C(AC)=624421,,230254
+	STOP
+	CAME	10,[624421,,230254]	;PASS IF C(E)=624421,,230254
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IORI PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=707070,,123456 AND E=0,,765567
+;HENCE, THE RESULT IN THE AC SHOULD BE 707070,,767577
+
+C60700:	MOVE	6,[707070,,123456]  ;PRELOAD AC WITH 707070,,123456
+	IORI	6,765567	;*IORI SHOULD PLACE 707070,,767577 INTO THE AC
+	CAME	6,[707070,,767577]  ;PASS IF C(AC)=707070,,767577
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IORM PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=123456,,777666 AND C(E)=777001,,123470
+;HENCE, THE RESULT IN E SHOULD BE 777457,,777676
+
+C61000:	MOVE	5,[123456,,777666]  ;PRELOAD AC WITH 123456,777666
+	MOVE	6,[777001,,123470]  ;PRELOAD E WITH 777001,,123470
+	IORM	5,6		;*IORM SHOULD PLACE
+				;777457,777676 INTO E
+	CAME	5,[123456,,777666]  ;PASS IF C(AC) UNMODIFIED
+	STOP
+	CAME	6,[777457,,777676] ;PASS IF C(E)=777457,777676
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IORB PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=123456,,777666 AND C(E)=777001,,123470
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 777457,,777676
+
+C61100:	MOVE	5,[123456,,777666]  ;PRELOAD AC WITH 123456,777666
+	MOVE	6,[777001,,123470]  ;PRELOAD E WITH 777001,,123470
+	IORB	5,6		;*IORB SHOULD PLACE
+				;777457,,777676 INTO
+	CAME	5,[777457,,777676]  ;PASS IF C(AC)=777457,,777676
+	STOP
+	CAME	6,[777457,,777676]  ;PASS IF C(E)=777457,,777676
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCBI PLACES THE LOGICAL AND FUNCTION
+;OF THE COMPLEMENTS OF BOTH C(AC) AND THE WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,706050.
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,050321.
+
+C61200:	MOVE	4,[777000,,123456]  ;PRELOAD AC WITH 777000,,123456
+	ANDCBI	4,706050	;*ANDCBI SHOULD PLACE 000777,,050321
+				;INTO THE AC
+	CAME	4,[777,,50321]	;PASS IF C(AC)=000777,,050321
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCBM PLACES THE LOGICAL AND FUNCTION
+;OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO
+;IN THE CASE, C(AC)=777007,,771100 AND C(E)=063202,,123477
+;HENCE, THE RESULT IN E SHOULD BE 000570,,004200
+
+C61300:	MOVE	3,[777007,,771100]  ;PRELOAD AC WITH 777007,,771100
+	MOVE	4,[63202,,123477]   ;PRELOAD E WITH 063202,,123477
+	ANDCBM	3,4		;*ANDCBM SHOULD PLACE
+				;000570,,004200 INTO E.
+	CAME	3,[777007,,771100] ;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	4,[570,,4200]	;PASS IF C(E)=000570,,004200
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCBB PLACES THE LOGICAL AND FUNCTION
+;OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=777007,,771100 AND C(E)=063202,,123477
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 000570,,004200
+
+C61400:	MOVE	3,[777007,,771100]  ;PRELOAD WITH 777007,,771100
+	MOVE	4,[63202,,123477]   ;PRELOAD E WITH 063202,,123477
+	ANDCBB	3,4		;*ANDCBB SHOULD PLACE
+				;000570,,004200 INTO BOTH AC AND E
+	CAME	3,[570,,4200]	;PASS IF C(AC)=000570,,004200
+	STOP
+	CAME	4,[570,,4200]	;PASS IF C(E)=000570,,004200
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT EQVI PLACES THE LOGICAL EQUIVALENCE FUNCTION
+;OF C(AC) AND THE WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=707070,,123426 AND E=0,,123363
+;HENCE, THE RESULT IN THE AC SHOULD BE 070707,,777032
+
+C61500:	MOVE	2,[707070,,123426]  ;PRELOAD AC WITH 707070,,123426
+	EQVI	2,123363	;*EQVI SHOULD PLACE
+				;070707,,777032 INTO THE AC
+	CAME	2,[70707,,777032]  ;PASS IF C(AC)=070707,,777032
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT EQVM PLACES THE LOGICAL EQUIVALENCE FUNCTION
+;OF C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)= 123456,,123457 AND C(E) = 707633,,121212
+;HENCE, THE RESULT IN E SHOULD BE 153512,,775132
+
+C61600:	MOVE	1,[123456,,123457] ;PRELOAD AC WITH 123456,,123457
+	MOVE	2,[707633,,121212] ;PRELOAD AC WITH 707633,,121212
+	EQVM	1,2		;*EQVM SHOULD PLACE 153512,,775132 INTO	E.
+	CAME	1,[123456,,123457] ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[153512,,775132];PASS IF C(E) = 153512,,775132
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT EQVB PLACES THE LOGICAL EQUIVALENCE FUNCTION
+;OF C(AC)AND C(E) INTO BOTH AC AND  E.
+;IN THIS CASE, C(AC) = 123456,,123457 AND C(E) = 707633,,121212
+;HENSE, THE RSULT IN BOTH AC AND 	E SHOULD BE 153512,,775132
+
+C61700:	MOVE	1,[123456,,123457]	;PRELOAD AC WITH 123456,,12345
+	MOVE	2,[707633,,121212]	;PRELOAD AC WITH 707633,,121212
+	EQVB	1,2			;*EQVB SHOULD PLACE 153512,,775132
+					;INTO BOTHE AC AND E.
+	CAME	1,[153512,,775132]	;PASS IC C(AC)=153512,,775132
+	STOP
+	CAME	2,[153512,,775132]	;PASS IF C(E)=153512,,775132
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCAI PLACES THE COMPLEMENT OF C(AC)
+;INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,707070
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,654321
+
+C62000:	MOVE	0,[777000,,123456]	;PRELOAD AC WITH 777000,,123456
+	SETCAI	0,707070		;*SETCAI SHOULD PLACE 000777,,654321
+					;INTO THE AC
+	CAME	0,[777,,654321]	;PASS IF C(AC)=000777,,654321
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETCAM PLACES THE COMPLEMENT OF C(AC)
+;INTO E.
+;IN THIS CASE, C(AC)=123456,,765432 AND C(E)=-1,,-1.
+;HENCE, THE RESULT IN E SHOULD BE 654321,,012345
+
+C62100:	MOVE	17,[123456,,765432]	;PRELOAD AC WITH 123456,,765432
+	SETO	0,			;PRELOAD E WITH -1,,-1
+	SETCAM	17,0			;*SETCAM SHOULD PLACE
+					;654321,,012345 INTO E
+	CAME	17,[123456,,765432]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	0,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCAB PLACES THE COMPLEMENT OF C(AC)
+;INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=123456,,765432 AND C(E)=-1,,-1.
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 654321,,012345
+
+C62200:	MOVE	17,[123456,,765432]	;PRELOAD AC WITH 123456,,76543
+	SETO	0,			;PRELOAD E WITH -1,,-1
+	SETCAB	17,0			;*SETCAB SHOULD PLACE
+					;654321,,012345 INTO BOTH AC AND E
+	CAME	17,[654321,,12345]	;PASS IF C(AC)=654321,,012345
+	STOP
+	CAME	0,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCAI PLACES THE INCLUSIVE OR FUNCTION
+;OF THE WORD 0,,E AND THE COMPLEMENT OF C(AC) INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,123477 AND E=0,,765401
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,775701
+
+C62300:	MOVE	16,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	ORCAI	16,765401		;*ORCAI SHOULD PLACE 000777,,767477
+					;INTO THE AC
+	CAME	16,[777,,775701]	;PASS IF C(AC)=000777,,775701
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCAM PLACES THE INCLUSIVE OR FUNCTION
+;OF C(E) AND THE COMPLEMENT OF C(AC) INTO
+;IN THIS CASE, C(AC)=777000,,123477 AND C(E)=707070,,707072
+;HENCE, THE RESULT IN E SHOULD BE 707777,,757372
+
+C62400:	MOVE	15,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	MOVE	16,[707070,,707072]	;PRELOAD E WITH 707070,,707072
+	ORCAM	15,16			;*ORCAM SHOULD PLACE 707777,,757372
+					;INTO E
+	CAME	15,[777000,,123477]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	16,[707777,,757372]	;PASS IF C(E)=707777,,757372
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCAB PLACES THE INCLUSIVE OR FUNCTION
+;OF C(E) AND THE COMPLEMENT OF C(AC) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=777000,,123477 AND C(E)=707070,,707072
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 707777,,757372
+
+C62500:	MOVE	15,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	MOVE	16,[707070,,707072]	;PRELOAD E WITH 707070,,707072
+	ORCAB	15,16			;*ORCAB SHOULD PLACE 707777,,757372
+					;INTO BOTHE AC AND E
+	CAME	15,[707777,,757372]	;PASS IF C(AC)=707777,,757372
+	STOP
+	CAME	16,[707777,,757372]	;PASS IF C(E)=707777,,757372
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCMI PLACES THE COMPLEMENT OF THE
+;WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,707070
+;HENCE, THE RESULT IN THE AC SHOULD BE -1,,070707
+
+C62600:	MOVE	0,[777000,,123456]	;PRELOAD AC WITH 777000,,123456
+	SETCMI	0,707070		;*SETCMI SHOULD PLACE -1,,070707
+					;INTO THE AC
+	CAME	0,[-1,,070707]		;PASS IF C(AC)=-1,,070707
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETCMM PLACES THE COMPLEMENT OF C(E)
+;INTO E.
+;IN THIS CASE, C(E)=123456,,765432 AND C(AC)=-1,,-1.
+;HENCE, THE RESULT IN E SHOULD BE 654321,,012345
+
+C62700:	MOVE	17,[123456,,765432]	;PRELOAD E WITH 123456,,76543
+	SETO	0,			;PRELOAD AC WITH -1,,-1
+	SETCMM	0,17			;*SETCMM SHOULD PLACE
+					;654321,012345 INTO E
+	CAME	0,[-1]			;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCMB PLACES THE COMPLEMENT OF C(E)
+;INTO BOTH AC AND E.
+;IN THIS CASE, C(E)=123456,,765432 AND C(AC)=-1,,-1.
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 654321,,012345
+
+C63000:	MOVE	17,[123456,,765432]	;PRELOAD E WITH 123456,,76543
+	SETO	0,			;PRELOAD AC WITH -1,,-1
+	SETCMB	0,17			;*SETCMB SHOULD PLACE
+					;654321,,012345 INTO BOTH AC AND E
+	CAME	0,[654321,,12345]	;PASS IF C(AC)=654321,,012345
+	STOP
+	CAME	17,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCMI PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE COMPLEMENT OF THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,123477 AND E=0,,765401
+;HENCE, THE RESULT IN THE AC SHOULD BE -1,,133777
+
+C63100:	MOVE	16,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	ORCMI	16,765401		;*ORCMI SHOULD PLACE -1,,133777
+					;INTO THE AC
+	CAME	16,[-1,,133777]		;PASS IF C(AC)=-1,,133777
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCMM PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE COMPLEMENT OC C(E) INTO
+;IN THIS CASE, C(E)=777000,,123477 AND C (AC)=707070,,707072
+;HENCE, THE RESULT IN E SHOULD BE 707777,,757372
+
+C63200:	MOVE	15,[777000,,123477]	;PRELOAD E WITH 777000,,123477
+	MOVE	16,[707070,,707072]	;PRELOAD AC WITH 707070,,707072
+	ORCMM	16,15			;*ORCMM SHOULD PLACE 707777,,757372
+					;INTO E
+	CAME	16,[707070,,707072]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	15,[707777,,757372]	;PASS IF C(E)=707777,,757372
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCMB PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE COMPLEMENT OF C(E) INTO BOTH AC AND E.
+;IN THIS CASE, C(E)=777000,,123477 AND C(AC)=707070,,707072
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 707777,,757372
+
+C63300:	MOVE	15,[777000,,123477]  ;PRELOAD E WITH 777000,,123477
+	MOVE	16,[707070,,707072]  ;PRELOAD AC WITH 707070,,707072
+	ORCMB	16,15		;*ORCMB SHOULD PLACE 707777,,757372
+				;INTO BOTH AC AND E
+	CAME	16,[707777,,757372]  ;PASS IF C(AC)=707777,,757372
+	STOP
+	CAME	15,[707777,,757372]  ;PASS OF C(E)=707777,,757372
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCBI PLACES THE LOGICAL INCLUSIVE OR
+;FUNCTION OF THE COMPLEMENTS OF BOTH C(AC) AND THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=707070,,070706 AND E=0,,770011.
+;HENCE, THE RESULT IN THE AC SHOULD BE -1,,707777
+
+C63400:	MOVE	15,[707070,,070706]  ;PRELOAD AC WITH 707070,,070706
+	ORCBI	15,770011	;*ORCBI SHOULD PLACE -1,,707777 INTO THE AC
+	CAME	15,[-1,,707777]	;PASS IF C(AC)=-1,707777
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCBM PLACES THE LOGICAL INCLUSIVE OR
+;FUNCTION OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO
+;IN THIS CASE, C(AC)=123456,,770077 AND C(E)=777001,,123324
+;HENCE, THE RESULT IN E SHOULD BE 654777,,657753
+
+C63500:	MOVE	14,[123456,,770077]  ;PRELOAD AC WITH 123456,,770077
+	MOVE	15,[777001,,123324]  ;PRELOAD E WITH 777001,,123324
+	ORCBM	14,15		;*ORCBM SHOULD PLACE 654777,,657753
+				;INTO E
+	CAME	14,[123456,,770077]  ;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	15,[654777,,657753]   ;PASS IF C(E)=654777,,657753
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCBB PLACES THE LOGICAL INCLUSIVE OR
+;FUNCTIONOF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=123456,,770077 AND C(E)=777001,,657753
+
+C63600:	MOVE	14,[123456,,770077]  ;PRELOAD AC WITH 123456,,770077
+	MOVE	15,[777001,,123324]  ;PRELOAD E WITH 777001,,123324
+	ORCBB	14,15		;*ORCBB SHOULD PLACE 654777,,657753
+				;INTO BOTH AC AND E
+	CAME	14,[654777,,657753]  ;PASS IF C(AC)=654777,,657753
+	STOP
+	CAME	15,[654777,,657753]  ;PASS IF C(E)=654777,,657753
+	STOP
+
+;**********
+SUBTTL	TEST OF MSCL HWT INSTRUCTIONS
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLI CLEARS AC LEFT
+;IN THIS CASE, C(AC)=707070,,123456 AND E=777000
+;HENCE, THE RESULT IN THE AC SHOULD BE 0,,123456
+
+C63700:	MOVE	17,[707070,,123456]	;PRELOAD AC WITH 707070,,123456
+	HLLI	17,777000	;*HLLI SHOULD PLACE 0,,123456 INTO THHE AC
+	CAIE	17,123456	;PASS IF C(AC)=0,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLS PLACES C(E) INTO THE AC IF AC IS NON-ZERO
+;AND IS A NO-OP IF AC=0
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,765432
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+;AND 123456,,765432 RESPECTIVELY
+
+C64000:	SETO	0		;PRELOAD AC WITH -1,,-1
+	MOVE	2,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+	HLLS	0,2		;*HLLS SHOULD NOT AFFECT AC OR E
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123456,,765432]	;PASS IF C(C) IS UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLS PLACES C(E) INTO THE AC IF AC IS NON-ZERO?
+;AND IS A NO-OP IF AC=0
+;IN THIS CASE, AC=1, C(AC)=1,,-1 AND C(E)=123456,,765432
+;HENCE, THE RESULTS IN AC AND E WHOULD BE 123456,,765432
+;AND 123456,,765432 RESPECTVIELY
+
+C64010:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	2,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+	HLLS	1,2		;*HLLS SHOULD PLACE 123456,,765432 INTO THE AC
+	CAME	1,[123456,,765432]	;PASS IF C(AC)=123456,,765432
+	STOP
+	CAME	2,[123456,,765432]	;PASS IF C(C) IS UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLS PLACES C(E-RIGHT) INTO E-LEFT, BUT
+;DOES NOT AFFECT E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=1,,-1 AND C(E)=123456,707070
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE -1,,-1
+;AND 707070,,707070.
+
+C64100:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	3,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HRLS	0,3		;*HRLS SHOULD PLACE 707070,,707070
+				;INTO E.
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	3,[707070,,707070]	;PASS IF C(E)=707070,,707070
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLS PLACES C(E-RIGHT) INTO E-LEFT, BUT
+;DOES NOT AFFECT E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707070
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707070,,707070
+;AND 707070,,707070.
+
+C64110:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	3,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HRLS	1,3		;*HRLS SHOULD PLACE 707070,,707070
+				;INTO BOTH AC AND E.
+	CAME	1,[707070,,707070]	;PASS IF C(AC)=707070,,707070
+	STOP
+	CAME	3,[707070,,707070]	;PASS IF C(E)=707070,,707070
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAN HLLZM PLACES C(AC-LEFT) INTO E-LEFT AND
+;PLACES 0 INTO E-RIGHT
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,717171
+;HENCE, THE RESULT IN E SHOULD BE 123456,,0
+
+C64200:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+	HLLZM	1,2		;*HLLZM SHOULD PLACE 123456,,0 INTO E
+	CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLZS CLEARS THE RIGHT HALF OF E, BUT DOESN'T
+;AFFECT THE LEFT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,707070
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+;AND 123456,,0 RESPECTIVELY
+
+C64300:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HLLZS	0,17		;*HLLZS SHOULD PLACE 123456,,0 INTO E.
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLZS CLEARS THE RIGHT HALF OF E, BUT DOESN'T
+;AFFECT THE LEFT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707070
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 123456,,0
+;AND 123456,,0 RESPECTIVELY.
+
+C64310:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HLLZS	1,17		;*HLLZS SHOULD PLACE 123456,,0 INTO
+				;BOTH AC AND E
+	CAME	1,[123456,,0]	;PASS IF C(AC)=123456,,0
+	STOP
+	CAME	17,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLZM PLACES C(AC-RIGHT) INTO E-LEFT AND
+;PLACES O INTO E-RIGHT.
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 123422,,0
+
+C64400:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+	HRLZM	1,2		;*HRLZM SHOULD PLACE 123422,,0 INTO E
+	CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123422,,0]	;PASS IF C(E)=123422,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLZS PLACES C(E-RIGHT) INTO E-LEFT AND
+;CLEARS E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE -1,,-1
+;AND 707076,,0
+
+C64500:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLZS	0,16		;*HRLZS SHOULD PLACE 707076,,0
+				;INTO E.
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	16,[707076,,0]	;PASS IF C(AC)=707076,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLZS PLACES C(E-RIGHT) INTO E-LEFT AND
+;CLEARS E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707076,,0
+;AND 707076,,0
+
+C64510:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLZS	1,16		;*HRLZS SHOULD PLACE 707076,,0
+				;INTO BOTH AC AND E.
+	CAME	1,[707076,,0]	;PASS IF C(AC)=707076,,0
+	STOP
+	CAME	16,[707076,,0]	;PASS IF C(AC)=707076,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLOM PLACES C(AC-LEFT) INTO E-LEFT AND
+;PLACES -1 INTO E-RIGHT.
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 123456,,-1.
+
+C64600:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+	HLLOM	1,2		;*HLLOM SHOULD PLACE 123456,,-1 INTO E
+	CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123456,,-1]	;PASS IF C(E)=123456,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLO, C(E-RIGHT) INTO AC=LEFT AND
+;PLACES -1 INTO AC-RIGHT.  IN THIS CASE, C(AC)=123456,,135724 AND
+;C(E)=765432,,246135.  HENCE, THE RESULT IN THE AC SHOULD BE 246135,,-1
+
+C64700:	MOVE	15,[123456,,135724]	;PRELOAD AC WITH 123456,,135724
+	MOVE	16,[765432,,246135]	;PRELOAD E WITH 765432,,246135
+	HRLO	15,16		;*HRLO SHOULD PLACE 246135,,-1 INTO AC
+	CAME	15,[246135,,-1]	;PASS IF C(AC)=246135,,-1
+	STOP
+	CAME	16,[765432,,246135]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLOI PLACES 0,,E INTO AC-LEFT AND
+;PLACES ONES INTO AC-RIGHT.  IN THIS CASE, C(AC)=0 AND E=0,,123456.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,-1
+
+C65000:	SETZ	14,		;CLEAR AC
+	HRLOI	14,123456	;*HRLOI SHOULD PLACE 123456,,-1 INTO THE AC
+	CAME	14,[123456,,-1]	;PASS IF C(AC)=123456,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLOM PLACES C(AC-RIGHT) INTO E-LEFT
+;AND PLACES -1 INTO E-RIGHT. IN THIS CASE, C(E)=0 AND C(AC)=123123,,456765
+;HENCE, THE RESULT IN E SHOULD BE 456765,,-1.
+
+C65100:	SETZM	14		;CLEAR E
+	MOVE	13,[123123,,456765]	;PRELOAD AC WITH 123123,,456765
+	HRLOM	13,14		;*HRLOM SHOULD PLACE 456765,,-1 INTO E
+	CAME	13,[123123,,456765]	;PASS IF C(AC) UNCHANGED
+
+	STOP
+	CAME	14,[456765,,-1]	;PASS IF C(E)=456765,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLOS PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES -1 INTO E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALOS
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 0
+;AND 707076,,0
+
+C65200:	SETZ	0,		;PRELOAD AC WITH 0
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLOS	0,16		;*HRLZS SHOULD PLACE 707076,,-1
+				;INTO E.
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	16,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLOS PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES -1 INTO E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707076,,-1
+;AND 707076,,-1
+
+C65210:	SETZ	1,		;PRELOAD AC WITH 0
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLOS	1,16		;*HRLZS SHOULD PLACE 707076,,-1
+				;INTO BOTH AC AND E
+	CAME	1,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+	STOP
+	CAME	16,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLEM PLACES C(AC-LEFT) INTO E-LEFT
+;AND PLACES BIT 0 OF THE AC INTO BITS 18 THRU 35 OF E.  IN THIS CASE,
+;C(AC)=123456,,707076 AND C(E)=-1,,-1.  HENCE, THE RESULT IN E
+;SHOULD BE 123456,,0.
+
+C65300:	MOVE	12,[123456,,707076]	;PRELOAD AC WITH 123456,,707076
+	SETOM	13		;PRELOAD E WITH -1,,-1
+	HLLEM	12,13		;*HLLEM SHOULD PLACE 123456,,0 INTO E
+	CAME	12,[123456,,707076]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	13,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLES PLACES C(E-LEFT) INTO E-LEFT AND
+;PLACES BIT 0 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=765432,,0.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND 765432,,-1 RESPECTIVELY.
+
+C65400:	SETZ	0,		;CLEAR AC
+	HRLZI	2,765432	;PRELOAD E WITH 765432,,0
+	HLLES	0,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO E
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLES PLACES C(E-LEFT) INTO E-LEFT AND
+;PLACES BIT 0 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=765432,,0
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 765432,,-1
+;AND 765432,,-1 RESPECTIVELY
+
+C65410:	SETZ	1,		;CLEAR AC
+	HRLZI	2,765432	;PRELOAD E WITH 765432,,0
+	HLLES	1,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO BOTH AC AND E
+	CAME	1,[765432,,-1]	;PASS IF C(AC)=765432,,-1
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLEM PLACES C(AC-RIGHT) INTO E-LEFT
+;AND PLACES BIT 18 OF THE AC INTO BITS 18 THRU 35 OF E.  IN THIS CASE,
+;C(AC)=365432,123456 AND C(E)=-1,,-1.  HENCE, THE RESULT IN E
+;SHOULD BE 365432,,0.
+
+C65500:	MOVE	12,[365432,,123456]	;PRELOAD AC WITH 365432,,123456
+	SETOM	13		;PRELOAD E WITH -1,,-1
+	HLLEM	12,13		;*HLLEM SHOULD PLACE 365432,,0 INTO E
+	CAME	12,[365432,,123456]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	13,[365432,,0]	;PASS IF C(E)=365432,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLES PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES BIT 18 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=0,,765432
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND 765432,,-1 RESPECTIVELY
+
+C65600:	SETZ	0,		;CLEAR AC
+	HRRZI	2,765432	;PRELOAD E WITH 0,,765432
+	HRLES	0,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLES PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES BIT 18 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=0,,765432
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 765432,,-1
+;AND 765432,,-1 RESPECTIVELY.
+
+C65610:	SETZ	1,		;CLEAR AC
+	HRRZI	2,765432	;PRELOAD E WITH 0,765432
+	HRLES	1,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO BOTH AC AND E
+	CAME	1,[765432,,-1]	;PASS IF C(AC)=765442,,-1
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRM SHOULD PLACE C(AC-LEFT) INTO E-RIGHT
+;AND NOT AFFECT E-LEFT.  IN THIS CASE, C(AC)=123456,,701234
+;AND C(E)=0.  HENCE, THE RESULT IN E SHOULD BE 0,,123456
+
+C65700:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	SETZM	12		;CLEAR E
+	HLRM	11,12		;*HLRM SHOULD PLACE 0,,123456 INTO E
+	CAME	11,[123456,,701234]	;PASS IF C(AC) UNCHANGE
+	STOP
+	CAIE	12,123456	;PASS IF C(E)=0,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRS PLACES C(E-LEFT) INTO E-RIGHT AND
+;DOES NOT AFFECT E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123123,,246135
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND 123123,,123123 RESPECTIVELY.
+
+C66000:	SETZ	0,		;CLEAR AC
+	MOVE	12,[123123,,246135]	;PRELOAD E WITH 123123,,246135
+	HLRS	0,12		;*HLRS SHOULD PLACE 123123,,123123
+				;INTO E.
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	12,[123123,,123123]	;PASS IF C(E)=123123,,123123
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRS PLACES C(E-LEFT) INTO E-RIGHT AND
+;DOES NOT AFFECT E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123123,,246135
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 123123,,123123
+;AND 123123,,123123 RESPECTIVELY.
+
+C66010:	SETZ	1,		;CLEAR AC
+	MOVE	12,[123123,,246135]	;PRELOAD E WITH 123123,,246135
+	HLRS	1,12		;*HLRS SHOULD PLACE 123123,,123123
+				;INTO BOTH AC AND E.
+	CAME	1,[123123,,123123]	;PASS IF C(AC)=123123,,123123
+	STOP
+	CAME	12,[123123,,123123]	;PASS IF C(E)=123123,,123123
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRRZS CLEARS THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 0, C(AC) = -1,,-1 AND C(E) = 123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1 AND 0,,701234
+;RESPECTIVELY.
+
+C66100:	SETO	0		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRRZS	0,17		;HRRZS SHOULD PLACE 0,,701234 INTO E
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAIE	17,701234	;PASS IF C(E) = 0,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRRZS CLEARS THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 1, C(AC) = -1,,-1 AND C(E) = 123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,701234 AND 0,,701234
+;RESPECTIVELY.
+
+C66110:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRRZS	1,17		;HRRZS SHOULD PLACE 0,,701234 INTO
+				;BOTH AC AND E
+	CAIE	1,701234	;PASS IF C(AC) = 0,,701234
+	STOP
+	CAIE	17,701234	;PASS IF C(E) = 0,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRZI CLEARS THE AC
+;IN THIS CASE, C(AC) = -1,,-1 AND E = 0,,-1.  HENCE, THE
+;RESULT IN THE AC SHOULD BE 0.
+
+C66200:	SETO	7		;PRELOAD AC WITH -1,,-1
+	HLRZI	7,-1		;*HLRZI SHOULD CLEAR THE AC
+	SKIPE	7		;PASS IF C(AC) = 0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRZM PLACES C(AC-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.
+;IN THIS CASE, C(AC) = 123456,,123422 AND C(E) = 707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 0,,123456.
+
+C66300:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+	HLRZM	1,2		;*HLRZM SHOULD PLACE 0,,123456 INTO E.
+	CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAIE	2,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRZM PLACES C(AC-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.
+;IN THIS CASE, C(AC) = 123456,,123422 AND C(E) = 707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 0,,123456.
+
+C66301:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+	MOVEM	2,E66301
+	HLRZM	1,E66301	;*HLRZM SHOULD PLACE 0,,123456 INTO E.
+	CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	MOVE	2,E66301
+	CAIE	2,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+	SKIPA			;GO TO NEXT TEST
+E66301:	0			;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 0, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1 AND 0,,123456
+;RESPECTIVELY.
+
+C66400:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRZS	0,7		;*HLRZS SHOULD PLACE 0,,123456 INTO E
+	CAME	0,[-1]		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAIE	7,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 6, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456 AND 0123456
+;RESPECTIVELY.
+
+C66410:	SETO	6,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRZS	6,7		;*HLRZS SHOULD PLACE 0,,123456 INTO
+				;BOTH AC AND E
+	CAIE	6,123456	;PASS IF C(AC) = 0,,123456
+	STOP
+	CAIE	7,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 6, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456 AND 0123456
+;RESPECTIVELY.
+
+C66411:	SETO	6,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	MOVEM	7,E66411
+	HLRZS	6,E66411	;*HLRZS SHOULD PLACE 0,,123456 INTO
+				;BOTH AC AND E
+	CAIE	6,123456	;PASS IF C(AC) = 0,,123456
+	STOP
+	MOVE	7,E66411
+	CAIE	7,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+	SKIPA			;GO TO NEXT TEST
+E66411:	0			;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT HRROM PLACES C(AC-RIGHT) INTO E-RIGHT AND
+;PLACES -1 INTO E-LEFT.  IN THIS CASE, C(AC) = 123456,,701234 AND
+;C(E) = 0.  HENCE, THE RESULT IN E SHOULD BE -1,,601234.
+
+C66500:	MOVE	5,[123456,,701234]  ;PRELOAD AC WITH 123456,,701234
+	SETZM	6		;CLEAR E
+	HRROM	5,6		;*HRROM SHOULD PLACE -1,,701234 INTO E
+	CAME	5,[123456,,701234]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	6,[-1,,701234]	;PASS IF C(E) = -1,,701234
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HRROS PLACES -1 INTO THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND -1,,701234 RESPECTIVELY.
+
+C66600:	SETZ	0		;PRELOAD AC WITH 0
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRROS	0,17		;HRROS SHOULD PLACE -1,,701234 INTO E
+	CAME	0,[0]		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	17,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRROS PLACES -1 INTO THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=16, C(AC)=0 AND C(E)=123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,701234
+;AND -1,,701234 RESPECTIVELY.
+
+C66610:	SETZ	16,		;PRELOAD AC WITH 0
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRROS	16,17		;*HRROS SHOULD PLACE -1,,701234 INTO
+				;BOTH AC AND E
+	CAME	16,[-1,,701234]	;PASS IF C(AC)=-1,,701234
+	STOP
+	CAME	17,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRO PLACES C(E-LEFT) INTO AC-RIGHT AND
+;PLACES -1 INTO AC-LEFT.  IN THIS CASE, C(AC)=0
+;C(E)=765432,,107654.  HENCE, THE RESULT IN THE AC SHOULD BE -1,,765432.
+
+C66700:	SETZ	4,		;CLEAR AC
+	MOVE	5,[765432,,107654]  ;PRELOAD E WITH 765432,,107654
+	HLRO	4,5		;*HLRO SHOULD PLACE -1,,765432 INTO THE AC
+	CAME	4,[-1,,765432]	;PASS IF C(AC)=-1,,765432
+	STOP
+	CAME	5,[765432,,107654]  ;PASS IF C(E) IS UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLROI PLACES -1,,0 INTO THE AC.
+;IN THIS CASE, C(AC)=123456,,765432 AND E=070707.  HENCE, THE
+;RESULT IN THE AC SHOULD BE -1,,0
+
+C67000:	MOVE	3,[123456,,765432]  ;PRELOAD AC WITH 123456,,765432
+	HLROI	3,070707	;*HLROI SHOULD PLACE -1,,0 INTO THE AC
+	CAME	3,[-1,,0]	;PASS IF C(AC)=-1,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLROM PLACES C(AC-LEFT) INTO E RIGHT AND
+;PLACES -1 INTO E-LEFT
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE -1,,123456
+
+C67100:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+	HLROM	1,2		;*HLROM SHOULD PLACE -1,,123456 INTO E
+	CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[-1,,123456]	;PASS IF C(E)=-1,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLROS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES -1 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND -1,,123456 RESPECTIVELY
+
+C67200:	SETZ	0		;PRELOAD AC WITH 0
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLROS	0,7		;*HLROS SHOULD PLACE -1,,123456 INTO E
+				;
+	CAIE	0,0		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	7,[-1,,123456]	;PASS IF C(E)=-1,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLROS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES -1 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,701234.
+;HENCE, THE RESULT IN AC AND E SHOULD BE -1,,123456
+;AND -1,,123456 RESPECTIVELY.
+
+C67210:	SETZ	1,		;PRELOAD AC WITH 0
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLROS	1,7		;*HLROS SHOULD PLACE -1,,123456 INTO
+				;BOTH AC AND E
+	CAME	1,[-1,,123456]	;PASS IF C(AC)=-1,,123456
+	STOP
+	CAME	7,[-1,,123456]	;PASS IF C(E)=-1,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRRES PLACES C(E-RIGHT) INTO E-RIGHT
+;AND PLACES BIT 18 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234
+;HENCE, THE RESULT IN AC AND E SHOULD BE 0
+;AND -1,,701234 RESPECTIVELY.
+
+C67300:	SETZ	0,		;PRELOAD AC WITH 0
+	MOVE	3,[123456,,701234]  ;PRELOAD WITH 123456,,701234
+	HRRES	0,3		;HRRES SHOULD PLACE -1,,701234 INTO E
+
+	SKIPE			;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	3,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRRES, PLACES C(E-RIGHT) INTO E-RIGHT
+;AND PLACES BIT 18 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,701234
+;AND -1,,701234 RESPECTIVELY.
+
+C67310:	SETZ	1,		;PRELOAD AC WITH 0
+	MOVE	3,[123456,,701234]  ;PRELOAD WITH 123456,,701234
+	HRRES	1,3		;HRRES SHOULD PLACE -1,,701234 INTO
+				;BOTH AC AND E
+	CAME	1,[-1,,701234]	;PASS IF C(AC)=-1,,701234
+	STOP
+	CAME	3,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRES PLACES C(E-LEFT) INTO E-RIGHT
+;AND PLACES BIT 0 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS
+;NON-ZERO, THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E) 123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+;AND 0,,123456 RESPECTIVELY.
+
+C67400:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRES	0,7		;*HLRES SHOULD PLACE 0,,123456 INTO E
+
+	CAME	0,[-1]		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAIE	7,123456	;PASS IF C(E)=0,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRES PLACES C(E-LEFT) INTO E-RIGHT
+;AND PLACES BIT 0 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS
+;NON-ZERO, THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E) 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456
+;AND 0,,123456 RESPECTIVELY.
+
+C67410:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRES	1,7		;*HLRES SHOULD PLACE 0,,123456 INTO
+				;BOTH AC AND E
+	CAIE	1,123456	;PASS IF C(AC)=0,,123456
+	STOP
+	CAIE	7,123456	;PASS IF C(E)=0,,123456
+	STOP
+
+;**********
+SUBTTL	TEST OF MSCL LOGICAL TEST INSTRUCTIONS
+
+;**********
+
+;THIS TEST VERIFIES THAT TRNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRNE SHOULD SKIP THE NEXT INSTRUCTION.  THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION.
+
+C67500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNE	17,3			;*TRNE SHOULD SKIP THE NEXT INSTRUCTION
+	STOP
+	CAME	17,[123456,,701234]	;PASS IF C AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRNE SHOULD NOT SKIP THE NEXT INSTRUCTION.  THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION.
+
+C67510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNE	16,300			;*TRNE SHOULD NOT SKIP THE NEXT INSTRUCTION
+	SKIPA				;PASS IF TRNE DID NOT SKIP
+	STOP
+	CAME	16,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLNE SHOULD SKIP THE NEXT INSTRUCTION, THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION.
+
+C67600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNE	15,300			;*TLNE CHOULD SKIP
+	STOP
+	CAME	15,[123456,,701234]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLNE SHOULD NOT SKIP THE NEXT INSTRUCTION, THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION
+
+C67610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNE	14,3			;*TLNE SHOULD NOT SKIP
+	SKIPA				;PASS IF TLNE DID NOT SKIP
+	STOP
+	CAME	14,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TRNA IS INDEPENDENT OF BOTH C(A) AND E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRNA SHOULD SKIP THENEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C67700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNA	13,3			;*TRNA SHOULD ALWAYS SKIP
+	STOP
+	CAME	13,[123456,,701234]	;PASS IFC(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFhES THAT TRNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TRNA IS INDEPENDENT OF BOTH C(A) AND E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C67710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNA	12,300			;*TRNA SHOQLD ALWAYS SKIP
+	STOP
+	CAME	12,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIaS THAT TLNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TLNA IS INDEPENDENt OF BOTH C(AC) AND E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNA	11,3			;*TLNA SHOULD ALWAYS SKIP
+	STOP
+	CAME	11,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TLNA IS INDEPENDENT OF BOTH C(AC) AND E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNA	10,300			;*TLNA SHOULD ALWAYS SKIP
+	STOP
+	CAME	10,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN
+;E ARE ZERO.  IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRNN SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNN	7,300			;*TRNN SHOULD SKIP
+	SToP
+	CAME	7,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN
+;E ARE ZERO.  IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRNN SHoULD NOT SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNN	6,3			;*TRNN SHOULD NOT SKIP
+	SKIPA				;PASS IF TRNN DID NOT SKIP
+	STOP
+	CAME	6,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLNN SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNN	5,3			;*TLNN SHOULD SKIP
+	STOP
+	CAME	5,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES thAT TLNN SkIPS THE NEXT SEQUENTIAL INSTRUcTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLNN SHOULD NOT SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNN	4,300			;*TLNN SHOULD NOT SKIP
+	SKIPA				;PASS IF TLNN DOES NOT SKIP
+	STOP
+	CAME	4,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SNAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSNE SHOULD SKIP THE NEXT INSTRUCtION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED.
+
+C70300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	4,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSNE	3,4			;*TSNE SHOULD SKIP
+	STOP
+	CAME	3,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	4,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SNAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654323
+;HENCE, TSNE SHOULD NOT SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED.
+
+C70310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	3,[76543,,654323]	;PRELOAD E WITH 076543,,654323
+	TSNE	2,3			;*TSNE SHOULD NOT SKIP
+	SKIPA				;PASS IF TSOE DId NOT SKIP
+	STOP
+	CAME	2,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	3,[76543,,654323]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSNA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSNA SHOULD SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	2,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSNA	1,2			;*TSNA SHOULD SKIP
+	STOP
+	CAME	1,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSNA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;NEITHER AC NOR E ARE EFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654323
+;HENCE, TSNA SHOULD SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	1,[76543,,654323]	;PRELOAD E WITH 076543,,654323
+	TSNA	0,1			;*TSNA SHOULD SKIP
+	STOP
+	CAME	1,[76543,,654323]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL HITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SWAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076547,,654321
+;HENCE, TSNN SHOULD SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	0,[76547,,654321]	;PRELOAD E WITH 076547,,654321
+	TSNN	17,0			;*TSNN SHOULD SKIP
+	STOP
+	CAME	17,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	0,[76547,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SWAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSNN SHOULD NOT SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	17,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSNN	16,17			;*TSNN SHOULD NOT SKIP
+	SKIPA				;PASS IF TSNN DID NOT SKIP
+	STOP
+	CAME	16,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZ CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C70600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234]
+	TRZ	12,3			;*TRZ SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TRZ DOES NOT SKIP
+	STOP
+	CAME	15,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZ CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701034
+
+C70610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZ	14,300			;*TRZ SHOULD PLACE 123456,,701234 INTO
+					;THE ACAND NOT SKIP
+	SKIPA				;PASS IF TRX DOES NOT SKIP
+	STOP
+	CAME	14,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZ CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CACE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOUL BE 123456,,701234
+
+C70700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZ	13,300			;*TLZ SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZ DOES NOT SKIP
+	STOP
+	CAME	13,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZ CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRSPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123454,,701234
+
+C70710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZ	12,3			;*TLZ SHOULD PLACE 123454,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZ DOES NOT SKIP
+	STOP
+	CAME	12,[123454,,701234]	;PASS IF C(AC)=123454,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRZE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C71000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZE	11,3			;*TRZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	11,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRSPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRZE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOUDL BE 123456,,701034
+
+C71010:	MOVE	10,[123456,,701234]	;PRELOAD AC WIT@ 123456,,701234
+	TRZE	10,300			;*TRZE SHOULD PLACE 123456,,701034 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TRZE DOES NOT SKIP
+	STOP
+	CAME	10,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLZE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C71100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZE	7,300			;*TLZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	7,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLZE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123454,,701234
+
+C71110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZE	6,3			;*TLZE SHOULD PLACE 123454,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZE DOES NOT SKIP
+	STOP
+	CAME	6,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701234
+
+C71200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZA	5,3			;*TRZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	5,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701234.
+
+C71210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZA	4,300			;*TRZA SHOULD SKIP AND
+					;PLACE 123456,,701034 INTO THE AC
+	STOP
+	CAME	4,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRQCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123454,,701234.
+
+C71300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZA	3,3			;*TLZA SHOULD SKIP AND
+					;PLACE 123454,,701234 INTO THE AC
+	STOP
+	CAME	3,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701234.
+
+C71310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZA	2,300			;*TLZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	2,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRZN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701034.
+
+C71400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZN	1,300			;*TRZN SHOULD SKIP AND
+					;PLACE 123456,,701034 INTO THE AC
+	STOP
+	CAME	1,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRZN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234.
+
+C71410:	MOVE	0,[123456,,701234]	;PRELOAD AC WATH 123456,,701234
+	TRZN	0,3			;*TRZN SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TRZN DOES NOT SKIP
+	STOP
+	CAME	0,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLZN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123454,,701234.
+
+C71500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZN	17,3			;TLZN SHOULD SKIP AND
+					;PLACE 123454,,701234 INTO THE AC
+	STOP
+	CAME	17,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BIPS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLZN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234.
+
+C71510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZN	16,300			;*TLZN SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZN DOES NOT SKIP
+	STOP
+	CAME	16,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSZ CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION. C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321.
+;HENCE, TSZ SHOULD NOT SKIP AND C(AC) SHOULD BE 123456,,701234.
+
+C71600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	16,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSZ	15,16			;*TSZ SHOULD NOT SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	SKIPA				;PASS IF TSZ DID NOT SKIP
+	STOP
+	CAME	15,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	16,[76543,,654321]	;PASS IF C(E) UNCHANCED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZ CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070.
+;HENCE, TSZ SHOULD NOT SKIP AND C(AC) SHOULD BE 020406,,501210.
+
+C71610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	15,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TSZ	14,15			;*TSZ SHOULD NOT SKIP AND
+					;PLACE 020406,,501210 INTO THE AC
+	SKIPA				;PASS IF TSZ DID NOT SKIP
+	STOP
+	CAME	14,[020406,,501210]	;PASS IF C(AC)=020406,,501210
+	STOP
+	CAME	15,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E).
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543.
+;HENCE, TDZE SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+
+C71700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	14,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDZE	13,14			;*TDZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	13,[123456,,701234]	;PASS IF C(AC)=123456,,701234]
+	STOP
+	CAME	14,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO. THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 754321,,076543
+;HENCE, TDZE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE 023456,,701234 C(E) IS NOT AFFECTED
+
+C71710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	13,[754321,,076543]	;PRELOAD E WITH 754321,,076543
+	TDZE	12,13			;*TDZE SHOULD NOT SKIP AND
+					;PLACE 023456,,701234 INTO THE AC
+	SKIPA				;PASS IF TDZE DOES NOT SKIP
+	STOP
+	CAME	12,[023456,,701234]	;PASS IF C(AC)= 023456,,701234
+	STOP
+	CAME	13,[754321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRECPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 076543,,654321
+;HENCE, TSZE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE 123456,,701234 C(E) IS NOT AFFECTED
+
+C72000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	12,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSZE	11,12			;*TSZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	11,[123456,,701234]	;PASS IF C(AC)= 123456,,701234
+	STOP
+	CAME	12,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C (E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO
+;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 076543,,657321
+;HENCE, TSZE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE 120456,,701234 C(E) IS NOT AFFECTED
+
+C72010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	11,[76543,,657321]	;PRELOAD E WITH 076543,,654321
+	TSZE	10,11			;*TSZE SHOULD NOT SKIP AND
+					;PLACE 120456,,701234 INTO THE AC
+	SKIPA				;PASS IF TSZE DID NOT SKIP
+	STOP
+	CAME	10,[120456,,701234]	;PASS IF C(AC)= 120456,,701234
+	STOP
+	CAME	11,[76543,,657321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDZA CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)= 654321,,076543
+;HENCE, TD2A SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+
+C72100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	10,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDZA	7,10			;*TDZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	7,[123456,,701234]	;PASS IF C(AC)= 123456,,701234
+	STOP
+	CAME	10,[654321,,076543]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	10,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDZA CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TDZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 121052,,000204
+
+C72110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	7,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TDZA	6,7			;*TDZA SHOULD SKIP AND
+				;PLACE 121052,,000204 INTO THE AC
+	STOP
+	CAME	6,[121052,,000204]	;PASS IF C(AC)=121052,,000204
+	STOP
+	CAME	7,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES TH`T TSZA CLEARS AHL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION. C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+
+C72200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	6,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSZA	5,6			;*TSZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	5,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	6,[076543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZA CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+;HENCE, TSZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 0
+
+C72210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	5,[701234,,123456]	;PRELOAD E WITH 701234,,123456
+	TSZA	4,5			;*TSZA SHOULD SKIP AND
+					;PLACE 0 INTO THE AC
+	STOP
+	CAME	4,[0]			;PASS IF C(AC)=0
+	STOP
+	CAME	5,[701234,,123456]	;PASS IF C(E) UNCHANGED
+	SToP
+
+;**********
+;THIS TEST VERIFIES THAT TDZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGEDTO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+;HENCE, TDZN SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456(,701230.  C(E) IS NOT AFFECTED.
+
+C72300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	4,[654321,,76547]	;PRELOAD E WITH 654321,,076547
+	TDZN	3,4			;*TDZN SHoULD SKIP AND
+					;PLACE 123456,,701230 INTO THE AC
+	STOP
+	CAME	3,[123456,,701230]	;PASS IF C(AC)=123456,,701230
+	STOP
+	CAME	4,[654321,,076547]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDZN SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+
+C72310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	3,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDZN	2,3			;*TDZN SHOULD NOT SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	SKIPA				;PASS IF TDZN DOES NOT SKIP
+	STOP
+	CAME	2,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	3,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THaT TSZN SKIPS THE NEXT SEQQENPIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321.
+;HENCE, TSZN SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,700234.  C(E) IS NOT AFFECTED.
+
+C72400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	2,[077543,,654321]	;PRELOAD E WITH 077543,,654321
+	TSZN	1,2			;*TSZN SHOULD SKIP AND
+					;PLACE 123456,,700234 INTO THE AC
+	STOP
+	CAME	1,[123456,,700234]	;PASS IF C(AC)=123456,,700234
+	STOP
+	CAME	2,[77543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321.-
+;HENCE, TSZN SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+
+C72410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	1,[76543,,654321]	;PRElOAD E WITH 076543,,654321
+	TSZN	0,1			;*TSZN SHOULD NOT SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	SKIPA				;PASS IF TSZN DOES NOT SKIP
+	STOP
+	CAME	0,[123456,,701234]	;PASS IF C(AC)=123456,,701234]
+	STOP
+	CAME	1,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRC COMPLEMENTS ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, THE RESULT IN THE AC SHOUHD BE 123456,,701237
+
+C72500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRC	17,3			;*TRC SHOULD NOT SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRC DID NOT SKIP
+	STOP
+	CAME	17,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRC COMPLEMENTS ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701134
+
+C72510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRC	16,300			;*TRC SHOULD NOT SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	SKIPA				;PASS IF TRC DID NOT SKIP
+	STOP
+	CAME	16,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLC COMPLEMENTS ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, ThE RESULT IN THE AC SHOULD BE 123756,,701234.
+
+C72600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLC	15,300			;*TLC SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLC DID NOT SKIP
+	STOP
+	CAME	15,[123756,,701234]	;PASS IF A(AC)=123756,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLC COMPLEMENTS ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123455,,701234.
+
+C72610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLC	14,3			;*TLC SHOULD NOT SKIP AND
+					;PLACE 123455,,701234 INTO THE AC
+	SKIPA				;PASS IF TLC DID NOT SKIP
+	STOP
+	CAME	14,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRCE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701237.
+
+C72700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCE	13,3			;*TRCE SHOULD SKIP AND
+					;PLACE 123456,,701237 INTO ThE AC
+	STOP
+	CAME	13,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRCE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701134
+
+C72710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCE	12,300			;*TRCE SHOULD NOT SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	SKIPA				;PASS IF TRCE DID NOT SKIP
+	STOP
+	CAME	12,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLCE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234.
+
+C73000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCE	11,300			;*TLCE SHOULD SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	STOP
+	CAME	11,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLCE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123455,,701234.
+
+C73010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCE	10,3			;*TLCE SHOULD NOT SKIP AND
+					;PLACE 123455,,701234 INTO THE AC
+	SKIPA				;PASS IF TLCE DID NOT SKIP
+	STOP
+	CAME	10,[123455,,701234]	;PASS IF C(AC)=123455,,701234]
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701237.
+
+C73100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCA	7,3			;*TRCA SHOULD SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	STOP
+	CAME	7,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701134
+
+C73110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCA	6,300			;*TRCA SHOULD SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	STOP
+	CAME	6,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD 123456,,701234
+
+C73200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCA	5,3			;*TLCA SHOULD SKIP AND
+					;PLACE 12345,,701234 INTO THE AC
+	STOP
+	CAME	5,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123756,,701234
+
+C73210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCA	4,300			;*TLCA SHOULD SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	STOP
+	CAME	4,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRCN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND RESULT IN THE AC SHOULD BE 123456,,701134
+
+C73300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCN	3,300			;*SHOULD SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	STOP
+	CAME	3,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRCN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701237
+
+C73310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCN	2,3			;*TRCN SHOULD NOT SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRCN DID NOT SKIP
+	STOP
+	CAME	2,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THE CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLCN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C73400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCN	1,3			;*TLCN SHOULD SKIP AND
+					;PLACE 123455,701234 INTO THE AC
+	STOP
+	CAME	1,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZER.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLCN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C73410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCN	0,300			;*TLCN SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLCN DID NOT SKIP
+	STOP
+	CAME	0,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSL COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)6543,,654321
+;HENCE, TSC SHOULD NOT SKIP AND C(AC) SHOULD BE -1,,-1
+
+C73500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	0,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSC	17,0			;*TSC SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TSC DOES NOT SKIP
+	STOP
+	CAME	17,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	0,[076543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSC COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TSC SHOULD NOT SKIP AND C(AC) SHOULD BE 624426,,553711
+
+C73510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	17,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TSC	16,17			;*TSC SHOULD NOT SKIP AND
+					;PLACE 624426,,553711 INTO THE AC
+	SKIPA				;PASS IF TSC DOES NOT SKIP
+	STOP
+	CAME	16,[624426,,553711]	;PASS IF C(AC)=624426,,553711
+	STOP
+	CAME	17,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDCE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C73600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	16,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDCE	15,16			;*TDCE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	15,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	16,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E) 754321,,076543
+;HENCE, TDCE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE 677777,,-1 C(E) IS NOT AFFECTED.
+
+C73610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	15,[754321,,076543]	;PRELOAD E WITH 754321,,076543
+	TDCE	14,15			;*TDCE SHOULD NOT SKIP AND
+					;PLACE 677777,,-1 INTO THE AC
+	SKIPA				;PASS IF TDCE DOES NOT SKIP
+	STOP
+	CAME	14,[677777,,-1]		;PASS IF C(AC)=677777,,-1
+	STOP
+	CAME	15,[754321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSCE SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C73700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	14,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSCE	13,14			;*TSCE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME 	13,[-1]			;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,701234 AND C(E)=076543,,657321
+;HENCE, TSCE SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE 774777,,-1.  C(E) IS NOT AFFECTED.
+
+C73710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	13,[76543,,657321]	;PRELOAD E WITH 076543,,657321
+	TSCE	12,13			;*TSCE HOULD NOT SKIP AND
+					;PLACE 774777,,-1 INTO THE AC
+	SKIPA				;PASS IF TSCE DOES NOT SKIP
+	STOP
+	CAME	12,[774777,,-1]		;PASS IF C(AC)=774777,,-1
+	STOP
+	CAME	13,[76543,,657321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C74000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	12,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDCA	11,12			;*TDCA SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	11,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	12,[654321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND SLWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TDCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 371173,,006244
+
+C74100:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	11,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TDCA	10,11			;*TDCA SHOULD SKP AND
+					;PLACE 371173,,006244 INTO THE AC
+	STOP
+	CAME	10,[371173,,6244]	;PASS IF C(AC)=371173,,006244
+	STOP
+	CAME	11,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C74200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	10,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSCA	7,10			;*TSCA CHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	7,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	10,[076543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+;HENCE, TSCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 0
+
+C74210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	7,[701234,,123456]	;PRELOAD E WITH 701234,,123456
+	TSCA	6,7			;*TSCA SHOULD SKIP AND
+					;PLACE 0 INTO THE AC
+	STOP
+	CAME	6,[0]			;PASS IF C(AC)=0
+	STOP
+	CAME	7,[701234,,123456]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THE CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+;HENCE, TDCN SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,777773 C(E) IS NOT AFFECTED
+
+C74300:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	6,[654321,,76547]	;PRELOAD E WITH 654321,,076547
+	TDCN	5,6			;*TDCN SHOULD SKIP AND
+					;PLACE -1,,777773 INTO THE AC
+	STOP
+	CAME	5,[-1,,777773]		;PASS IF C(AC)=-1,777773
+	STOP
+	CAME	6,[654321,,76547]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDCN SHOULD NOT SKIP AND THE REUSLT IN AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C74310:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	5,[654321,,76543]	;PRELOAD E WITH 654321,,076543
+	TDCN	4,5			;*TDCN SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TDCN DOES NOT SKIP
+	STOP
+	CAME	4,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	5,[654321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321
+;HENCE, TSCN SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,776777.  C(E) IS NOT AFFECTED
+
+C74400:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	4,[77543,,654321]	;PRELOAD E WITH 077543,,654321
+	TSCN	3,4			;*TSCN SHOULD SKIP AND
+					;PLACE -1,,776777 INTO THE AC
+	STOP
+	CAME	3,[-1,,776777]		;PASS IF C(AC)=-1,776777
+	STOP
+	CAME	4,[77543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTD
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSCN SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1.  C(E) IS NOT AFFECTED.
+
+C74410:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	3,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSCN	2,3			;*TSCN SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TSCN DOES NOT SKIP
+	STOP
+	CAME	2,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	3,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRO CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES ANT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701237
+
+C74500:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRO	1,3			;*TRO SHOULD NOT SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRO DID NOT SKIP
+	STOP
+	CAME	1,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRO CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701224
+
+C74510:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRO	0,300			;*TRO SHOULD NOT SKIP AND
+					;PLACE 123456,,701334 INTO THE AC
+	SKIPA				;PASS IF TRO DID NOT SKIP
+	STOP
+	CAME	0,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLO CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C74600:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLO	17,300			;*TLO SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLO DID NOT SKIP
+	STOP
+	CAME	17,[123756,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLO CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123457,,701234
+
+C74610:	MOVE	16,[123456,,70234]	;PRELOAD AC WITH 123456,,701234
+	TLO	16,3			;*TLO SHOULD NOT SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	SKIPA				;PASS IF DID NOT SKIP
+	STOP
+	CAME	16,[123457,,70234]	;PASS IF C(AC)=123457,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TROE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TROE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND RESULT IN THE AC SHOUD BE 123456,,701237
+
+C74700:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROE	15,3			;TROE SHOULD SKIP AND
+					;PLACE 123456,,701237 IN TO THE AC
+	STOP
+	CAME	15,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TROE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TROE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701334
+
+C74710:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROE	14,300			;*TROE SHOULD NOT SKIP AND
+					;PLACE 123456,,701224 INTO THE AC
+	SKIPA				;PASS IF DID NOT SKIP
+	STOP
+	CAME	14,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLOE SKIPS THE NEXT SEQUENTIAL  INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE TEN CHANGED TO ONES
+;IN THES CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLOE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C75000:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOE	13,300			;*TLOE SOULD SKIP AND
+					;PLAND 123756,,701234 INTO THE AC
+	STOP
+	CAME	13,[123756,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;********
+
+;THIS TEST VERIFIES THAT TLOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING  TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLOE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123457,,701234
+
+C75010:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOE	12,3			;*TLOE SHOULD NOT SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	SKIPA				;PASS IF TLOE DID NOT SKIP
+	STOP
+	CAME	12,[123457,,701234]	;PASS IF C(AC)=123457,,701234
+	STOP
+
+;*******
+;THIS TEST VERIFIES THAT TROA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TROA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701237
+
+C75100:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROA	11,3			;*TROA SHOULD SKIP AND
+					;PLACE 123456,,701237
+	STOP
+	CAME	11,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TROA ALWAYS SKIPS THE NEXT SEQUENTAIL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TROA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701334
+
+C75110:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROA	10,300			;*TROA SHOULD SKIP AND
+					;PLACE 123456,,701334 INTO THE AC
+	STOP
+	CAME	10,[123456,,701334]	;PASS IF C (AC)=123456,,701334
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLOA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTUCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLOA SHOULD SKIP THE NEXT INSTRUCTION AND RESULT IN
+;THE AC SHOULD BE 123457,,701234
+
+C75200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOA	7,3			;*TLOA SHOULD SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	STOP
+	CAME	7,[123457,,701234]	;PASS IF C(AC)=123457,,701234]
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLOA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLOA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123756,,701234
+
+C75210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOA	6,300			;*TLOA SHOULD SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	STOP
+	CAME	6,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRON SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701334
+
+C75300:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRON	5,300			;*TRON SHOULD SKIP AND
+					;PLACE 123456,,701334 INTO THE AC
+	STOP
+	CAME	5,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRON SKIPS THE NEXT SEQUENTIAL INSTUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRON SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701237
+
+C75310:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRON	4,3			;*TRON SHOULD NOT  SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRON DID NOT SKIP
+	STOP
+	CAME	4,[123456,,701237]	;PASS IF C(AC)=123456,701237
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)-123456,,701234 AND E=3
+;HENCE, TLON SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123457,,701234
+
+C75400:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLON	3,3			;*TLON SHOULD SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	STOP
+	CAME	3,[123457,,701234]	;PASS IF C(AC)=123457,,701234
+	STOP
+
+;*******
+
+;THIS TEST VERIFIES THAT TLON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLON SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C75410:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLON	2,300			;*TLON SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLON DID NOT SKIP
+	STOP
+	CAME	2,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E)ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDOE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C75500:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	2,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDOE	1,2			;*TDOE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	1,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	2,[654321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDOE SKIPS THE NEXT SEQUENTAIL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=754321,,076543
+;HENCE, TDOE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTD
+
+C75510:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	1,[754321,,76543]	;PRELOAD E WITH 754321,,076543
+	TDOE	0,1			;*TDOE SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TDOE DOES NOT SKIP
+	STOP
+	CAME	0,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	1,[754321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSOE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1.  C(E) IS NOT AFFECTED
+
+C75600:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	0,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSOE	17,0			;*TSOE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	17,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	0,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN  CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,657321
+;HENCE, TSOE SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED.
+
+C75610:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,701234
+	MOVE	17,[76543,,657321]	;PRELOAD E WITH 076543,,657321
+	TSOE	16,17			;*TSOE SHOULD NOT SKIP AND
+					;*TSOE SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF SKIP
+	STOP
+	CAME	16,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	17,[76543,,657321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDOA PLACES ONES INTO ALL BITS OF THE AC WHICH
+;CORRRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)= 654321,,076543
+;HENCE, TDOA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C75700:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	16,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDOA	15,16			;*TDOA SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	15,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	16,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDOA PLACE ONES ALL BIT OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TDOA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 373577,,707274
+
+C75710:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	15,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TDOA	14,15			;*TDOA SHOULD SKIP AND
+					;PLACE 373577,707274 ONTO THE AC
+	STOP
+	CAME	14,[373577,,707274]	;PASS IF C(AC)=373577,,707274
+	STOP
+	CAME	15,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSOA PLACE ONES INTO ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSOA SHOULD SLAWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C76000:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	14,[176543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSOA	13,14			;*TSOA SHOULD SKIP AND
+					;PLACE -1,,-1 ONTO THE AC
+	STOP
+	CAME	13,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	14,[176543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSOA PLACES ONES INTO ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+;HENCE, TSOA SHOULD SLWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+
+C76010:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	13,[701234,,123456]	;PRELOAD E WITH 701234,123456
+	TSOA	12,13			;*TSOA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	12,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	13,[701234,,123456]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+;HENCE, TDON SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C76100:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	12,[654321,,076547]	;PRELOAD E WITH 654321,,076547
+	TDON	11,12			;*TDON SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	11,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	12,[654321,,076547]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;THENC, TDON SHOULD NOT SKIP AND THE RESULT IN TH AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C76110:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	11,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDON	10,11			;*TDON SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TDON DOES NOT SKIP
+	STOP
+	CAME	10,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	11,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVE SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321
+;HENCE, TSON SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C76200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	10,[77543,,654321]	;PRELOAD E WITH 077543,,654321]
+	TSON	7,10			;*TSON HOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	7,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	10,[77543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSON SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C76210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	7,[76543,,654321]	;PRELOAD E WITH 076543MM654321
+	TSON	6,7			;*TSON SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TSON DOES NOT SKIP
+	STOP
+	CAME	6,[-1]			;PASS IF C(AC)-=1,,-1
+	STOP
+	CAME	7,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+	;JRST	BEGEND
diff --git a/apps/pdp10/diags/klad/dakaf/DAKAFM.MAC.txt b/apps/pdp10/diags/klad/dakaf/DAKAFM.MAC.txt
new file mode 100644
index 000000000..6874af270
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakaf/DAKAFM.MAC.txt
@@ -0,0 +1,3207 @@
+SUBTTL	DIAGNOSTIC SECTION
+
+START:	SETZM	USER#		;CLEAR USER CONTROL WORD
+	JSP	0,.+1		;GET FLAGS
+	TLNE	USERF		;IN USER MODE?
+	SETOM	USER		;YES, SET USER CONTROL WORD
+	SKIPN	MONFLG		;SPECIAL USER MODE?
+	SETZM	USER		;YES, CLEAR USER CONTROL WORD
+	SKIPN	USER
+	JRST	STARTA
+	SKIPL	MONCTL
+	TTCALL	3,PGMNAM	;MENTION OUR NAME
+	JRST	STARTA
+
+PGMNAM:	ASCIZ/
+PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (6) [DAKAF]
+/
+
+STARTA:	JRST	.+1
+SUBTTL	TEST OF MSCL BOOLEAN INSTRUCTIONS
+
+;**********
+
+;THIS TEST VERIFIES THAT SETZI CLEARS THE AC AND DOES NOT AFFECT E.
+;FIRST, AC AND E ARE PRELOADED WITH -1,,-1, THEN, SETZI IS EXECUTED.
+;AC IS THEN CHECKED FOR 0 AND E IS CHECKED FOR -1,,-1
+
+C56100:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	SETO	2,		;PRELOAD E WITH -1,,-1
+	SETZI	1,2		;*SETZI SHOULD CLEAR THE AC
+	SKIPE	1		;PASS IF C(AC)=0
+	STOP
+	CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETZM CLEARS C(E) AND DOES NOT AFFECT C(AC)
+;FIRST, AC AND E ARE PRELOADED WITH -1,,-1; THEN SETZM IS EXECUTED.
+;AC IS THEN CHECKED FOR -1,,-1 AND E IS CHECKED FOR 0.
+
+C56200:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	SETO	2,		;PRELOAD E WITH -1,,-1
+	SETZM	1,2		;*SETZM SHOULD CLEAR E
+	CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+	STOP
+	SKIPE	2		;PASS IF C(E)=0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETOI PLACES ALL ONES INTO THE AC.
+;FIRST, THE AC AND E ARE CLEARED; THEN, SETOI IS EXECUTED.
+;AC AND E ARE CHECKED FOR -1,,-1 AND 0 RESPECTIVELY
+
+C56300:	SETZB	1,2		;CLEAR AC,E
+	SETOI	1,2		;*SETOI SHOULD PLACE -1,,-1 INTO THE AC
+	CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+	STOP
+	SKIPE	2		;PASS IF C(E)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETOM PLACES ALL ONES INTO E
+;FIRST, THE AC AND E ARE CLEARED, THEN SETOM IS EXECUTED.
+;AC AND E ARE THEN CHECKED FOR 0 AND -1,,-1 RESPECTIVELY.
+
+C56400:	SETZB	1,2		;CLEAR AC,E
+	SETOM	1,2		;*SETOM SHOULD PLACE -1,,-1 INTO E
+	SKIPE	1		;PASS IF C(AC)=0
+	STOP
+	CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETOB PLACES ALL ONES INTO BOTH AC AND E.
+;FIRST, BOTH AC AND E ARE CLEARED; THEN, SETOB IS EXECUTED.
+;AC AND E ARE BOTH CHECKED FOR -1,,-1
+
+C56500:	SETZB	1,2		;CLEAR AC,E
+	SETOB	1,2		;*SETOB SHOULD PUT -1,,-1 INTO BOTH AC AND E
+	CAME	1,[-1]		;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	2,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDI PLACES THE LOGICAL AND FUNCTION
+;OF C(AC) AND 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,707070 AND E=0,,123123.
+;HENCE, THE RESULT IN THE AC SHOULD BE 0,,103103
+
+C56600:	MOVE	1,[777000,,707070]	;PRELOAD AC WITH 777000,,707070
+	ANDI	1,123123	;*ANDI SHOULD PLACE 0,,103103 INTO THE AC
+	CAIE	1,103020	;PASS IF C(AC)=103103
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDM PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=777000,,000777 AND C(E)=123456,,123456.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 777000,,000777 AND
+;123000,,00456 RESPECTIVELY
+
+C56700:	MOVE	1,[777000,,777]	;PRELOAD E WITH 777000,,000777
+	MOVE	2,[123456,,123456]	;PRELOAD AC WITH 123456,,123456
+	ANDM	2,1		;*ANDM SHOULD PLACE 123000,,000456 INTO E
+	CAME	2,[123456,,123456]	;PASS IF C(AC) NOT MODIFIED
+	STOP
+	CAME	1,[123000,,000456]	;PASS IF C(E)=123000,,000456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDM PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=777000,,000777 AND C(E)=123456,,123456.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 777000,,000777 AND
+;123000,,00456 RESPECTIVELY
+
+C56701:	MOVE	1,[777000,,777]	;PRELOAD E WITH 777000,,000777
+	MOVEM	1,E56701
+	MOVE	2,[123456,,123456]	;PRELOAD AC WITH 123456,,123456
+	ANDM	2,E56701	;*ANDM SHOULD PLACE 123000,,000456 INTO E
+	CAME	2,[123456,,123456]	;PASS IF C(AC) NOT MODIFIED
+	STOP
+	MOVE	1,E56701
+	CAME	1,[123000,,000456]	;PASS IF C(E)=123000,,000456
+	STOP
+
+	SKIPA				;GO TO NEXT TEST
+E56701:	0				;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT ANDCB PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=-1,,0 AND C(E)=121212,,-1
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 121212,,0,
+
+C57000:	HRROI	3,0		;PRELOAD AC WITH -1,,0
+	HRLOI	6,121212	;PRELOAD E WITH 121212,,-1
+	ANDB	3,6		;*ANDB SHOULD PLACE 121212,,0 INTO BOTH AC AND E
+	CAME	3,[121212,,0]	;PASS IF C(AC)=121212,,0
+	STOP
+	CAME	6,[121212,,0]	;PASS IF C(E)=121212,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCB PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=-1,,0 AND C(E)=121212,,-1
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 121212,,0,
+
+C57001:	HRROI	3,0		;PRELOAD AC WITH -1,,0
+	HRLOI	6,121212	;PRELOAD E WITH 121212,,-1
+	MOVEM	6,E57001
+	ANDB	3,E57001	;*ANDB SHOULD PLACE 121212,,0 INTO BOTH AC AND E
+	CAME	3,[121212,,0]	;PASS IF C(AC)=121212,,0
+	STOP
+	MOVE	6,E57001
+	CAME	6,[121212,,0]	;PASS IF C(E)=121212,,0
+	STOP
+
+	SKIPA			;GO TO NEXT TEST
+E57001:	0			;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT ANDCAI PLACES THE LOGICAL AND FUNCTION
+;OF THE WORD 0,E AND THE COMPLEMENT OF C(AC) INTO THE AC
+;IN THIS CASE, C(AC)=777,000,,707070 AND E=0,135246
+;HENCE, THE RESULT IN THE AC SHOULD BE 0,,030206
+
+C57100:	MOVE	5,[777000,,707070]	;PRELOAD AC WITH 777000,,707070
+	ANDCAI	5,135246	;*ANDCAI SHOULD PLACE 0,,30206 INTO THE AC
+	CAIE	5,030206	;PASS IF C(AC)=030206
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCAM PLACES THE LOGICAL AND FUNCTION OF
+;C(E) AND THE COMPLEMENT OF C(AC) INTO E.
+;IN THIS CASE, C(AC)=000767,,-1 AND C(E)=777350,,-2
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 000767,,-1 AND
+;777010,,0 RESPECTIVELY.
+
+C57200:	HRLOI	4,767		;PRELOAD AC WITH 000767,,-1
+	MOVE	6,[777350,,-2]	;PRELOAD E WITH 777350,,-2
+	ANDCAM	4,6		;*ANDCAM SHOULD PLACE 777010,,0
+				;INTO E
+	CAME	4,[767,,-1]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	6,[777010,,0]	;PASS IF C(E)=777010,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCAB PLACES THE LOGICAN AND FUNCTION OF
+;C(E) AND THE COMPLEMENT OF C(AC) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=000777,,770077 AND C(E)=123456,246123
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 123000,,006100
+
+C57300:	MOVE	1,[000777,,770077]	;PRELOAD AC WITH 000777,770077
+	MOVE	2,[123456,,246123]	;PRELOAD E WITH 123456,246123
+	ANDCAB	1,2		;*ANDCAB SHOULD PLACE 123000,006100
+				;INTO BOTH AC AND E
+	CAME	1,[123000,,006100]	;PASS IF C(AC)=123000,006100
+	STOP
+	CAME	2,[123000,,006100]	;PASS IF C(E)=123000,006100
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETMI MOVES THE WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=-1,,-1 AND E=0,,123456.  HENCE, THE RESULT
+;IN THE AC SHOULD BE 0,,123456
+
+C57400:	SETO	5,		;PRELOAD AC WITH -1,,-1
+	SETMI	5,123456	;*SETMI SHOULD PLACE 0,,123456 INTO THE AC
+	CAIE	5,123456	;PASS IF C(AC)=0,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETMM IS A NO-OP.  HENCE, IT SHOULD
+;NOT MODIFY AC OR E.
+;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-1; AND NEITHER SHOULD NOT BE CHANGED
+
+C57500:	SETZ	16,		;CLEAR C(AC)
+	SETO	17,		;PRELOAD E WITH -1,,-1
+	SETMM	16,17		;*SETMM IS A NO-OP
+	SKIPE	16		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[-1]		;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETMB PLACES C(E) INTO THE AC
+;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=100,,-200  HENCE, THE RESULT
+;IN BOTH AC AND E SHOULD BE 000100,,-200.
+
+C57600:	SETO	0,		;CLEAR AC
+	MOVE	1,[100,,-200]	;PRELOAD E WITH 100,,-200
+	SETMB	0,1		;*SETMB SHOULD PLACE 100,,-200 INTO THE AC
+	CAME	0,[100,,-200]	;PASS IF C(AC)=100,,-200
+	STOP
+	CAME	1,[100,,-200]	;PASS IF C(E)=100,,-200
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCMI PLACES THE LOGICAL AND FUNCTION
+;OF C(AC) AND THE COMPLEMENT OF THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=123456,,246135 AND E=0,,717273.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,040104.
+
+C57700:	MOVE	15,[123456,,246135]	;PRELOAD AC WITH 123456,,246135
+	ANDCMI	15,717273	;*ANDCMI SHOULD PLACE 123456,,040104
+				;INTO THE AC
+	CAME	15,[123456,,040104]	;PASS IF C(AC)=123456,,040104
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCMM PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND THE COMPLEMENT OF C(E) INTO E.
+;IN THIS CASE,C(AC)=12321,,456654 AND C(E)= 770077,,007770
+;HENCE, THE RESULT IN E SHOULD BE 003300,,450004
+
+C60000:	MOVE	14,[123321,,456654]	;PRELOAD AC WITH 123321,,456654
+	MOVE	15,[770077,,007770]	;PRELOAD E WITH 77007770
+	ANDCMM	14,15			;*ANDCMM SHOULD PLACE 003300,,450004 INTO THE AC
+	CAME	14,[123321,,456654]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	15,[3300,,450004]	;PASS IF C(E) = 003300,,450004
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCMB PLACES THE LOGICAL AND FUNCTION OF
+;C(AC) AND THE COMPLEMENT OF C(E) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)123456,,663322 AND C(E) = 777000,,700770
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 000456,,063002
+
+C60100:	MOVE	13,[123456,,663322]	;PRELOAD AC WITH 123456,,663322
+	MOVE	14,[777000,,700770]	;PRELOAD E WITH 777000,,700770
+	ANDCMB	13,14			;*ANDCMB SHOULD PLACE 000456,,063002
+					;INTO BOTH AC AND E
+	CAME	13,[456,,63002]		;PASS IF C(AC)=000456,,063002
+	STOP
+	CAME	14,[456,,63002]		;PASS IF C(E)=000456,,063002
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETA IS A NO-OP. IT AFFECTS NEITHER
+;AC OR E. IN THIS CASE, C(AC)=123456,,777776 AND C(E)=010203,,123450.
+;SETA SHOULD NOT MODIFY C(AC) OR C(E)
+
+C60200:	MOVE	12,[123456,,777776]	;PRELOAD AC WITH 123456,,-2
+	MOVE	13,[010203,,123450]	;PRELOAD E WITH 010203,,123450
+	SETA	12,13			;*SETA IS A NO-OP
+	CAME	12,[123456,,-2]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	13,[010203,,123450]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETAI IS A NO-OP. IT DOES NOT AFFECT THE AC.
+;IN THIS CASE, C(AC)=123456,,777776 AND E=0,,123450
+;SETA SHOULD NOT MODIFY C(AC)
+
+C60300:	MOVE 12,[123456,,777776]	;PRELOAD AC WITH 123456,,-2
+	SETAI	12,123450		;*SETAI IS A NO-OP
+	CAME	12,[123456,,-2]		;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETAM PLACES C(AC) INTO E.
+;IN THIS CASE, C(AC)=123456,,0 AND C(E)=-1,,-1.  HENCE, THE
+;RESULT IN E SHOULD BE 123456,,0
+
+C60400:	HRLZI	11,123456		;PRELOAD AC WITH 123456,,0
+	SETO	12,			;PRELOAD E WITH -1,,-1
+	SETAM	11,12			;SETAM SHOULD PLACE 123456,,0 INTO E
+	CAME	11,[123456,,0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	12,[123456,,0]		;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT XORI PLACES THE LOGICAL EXCLUSIVE OR FUNCTION
+;OF C(AC) AND THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=000777,,123456 AND E=0,,434431
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,517067.
+
+C60500:	MOVE	10,[777,,123456]	;PRELOAD AC WITH 000777,,123456
+	XORI	10,434431		;*XORI SHOULD PLACE 000777,,517067 INTO THE AC
+	CAME	10,[777,,517067]	;PASS IF C(AC)=000777,,517067
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT XORB PLACES THE LOGICAL EXCLUSIVE OR FUNCTION
+;OF C(AC) AND C(E) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=707077,,555666 AND C(E)=123456,,765432
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 624421,,230254
+
+C60600:	MOVE	7,[707077,,555666]	;PRELOAD AC WITH 707077,,555666
+	MOVE	10,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+	XORB	7,10			;*XORB SHOULD PLACE 624421,,230254
+					;INTO BOTH AC AND E
+	CAME	7,[624421,,230254]	;PASS IF C(AC)=624421,,230254
+	STOP
+	CAME	10,[624421,,230254]	;PASS IF C(E)=624421,,230254
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IORI PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=707070,,123456 AND E=0,,765567
+;HENCE, THE RESULT IN THE AC SHOULD BE 707070,,767577
+
+C60700:	MOVE	6,[707070,,123456]  ;PRELOAD AC WITH 707070,,123456
+	IORI	6,765567	;*IORI SHOULD PLACE 707070,,767577 INTO THE AC
+	CAME	6,[707070,,767577]  ;PASS IF C(AC)=707070,,767577
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IORM PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=123456,,777666 AND C(E)=777001,,123470
+;HENCE, THE RESULT IN E SHOULD BE 777457,,777676
+
+C61000:	MOVE	5,[123456,,777666]  ;PRELOAD AC WITH 123456,777666
+	MOVE	6,[777001,,123470]  ;PRELOAD E WITH 777001,,123470
+	IORM	5,6		;*IORM SHOULD PLACE
+				;777457,777676 INTO E
+	CAME	5,[123456,,777666]  ;PASS IF C(AC) UNMODIFIED
+	STOP
+	CAME	6,[777457,,777676] ;PASS IF C(E)=777457,777676
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IORB PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)=123456,,777666 AND C(E)=777001,,123470
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 777457,,777676
+
+C61100:	MOVE	5,[123456,,777666]  ;PRELOAD AC WITH 123456,777666
+	MOVE	6,[777001,,123470]  ;PRELOAD E WITH 777001,,123470
+	IORB	5,6		;*IORB SHOULD PLACE
+				;777457,,777676 INTO
+	CAME	5,[777457,,777676]  ;PASS IF C(AC)=777457,,777676
+	STOP
+	CAME	6,[777457,,777676]  ;PASS IF C(E)=777457,,777676
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCBI PLACES THE LOGICAL AND FUNCTION
+;OF THE COMPLEMENTS OF BOTH C(AC) AND THE WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,706050.
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,050321.
+
+C61200:	MOVE	4,[777000,,123456]  ;PRELOAD AC WITH 777000,,123456
+	ANDCBI	4,706050	;*ANDCBI SHOULD PLACE 000777,,050321
+				;INTO THE AC
+	CAME	4,[777,,50321]	;PASS IF C(AC)=000777,,050321
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ANDCBM PLACES THE LOGICAL AND FUNCTION
+;OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO
+;IN THE CASE, C(AC)=777007,,771100 AND C(E)=063202,,123477
+;HENCE, THE RESULT IN E SHOULD BE 000570,,004200
+
+C61300:	MOVE	3,[777007,,771100]  ;PRELOAD AC WITH 777007,,771100
+	MOVE	4,[63202,,123477]   ;PRELOAD E WITH 063202,,123477
+	ANDCBM	3,4		;*ANDCBM SHOULD PLACE
+				;000570,,004200 INTO E.
+	CAME	3,[777007,,771100] ;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	4,[570,,4200]	;PASS IF C(E)=000570,,004200
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ANDCBB PLACES THE LOGICAL AND FUNCTION
+;OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=777007,,771100 AND C(E)=063202,,123477
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 000570,,004200
+
+C61400:	MOVE	3,[777007,,771100]  ;PRELOAD WITH 777007,,771100
+	MOVE	4,[63202,,123477]   ;PRELOAD E WITH 063202,,123477
+	ANDCBB	3,4		;*ANDCBB SHOULD PLACE
+				;000570,,004200 INTO BOTH AC AND E
+	CAME	3,[570,,4200]	;PASS IF C(AC)=000570,,004200
+	STOP
+	CAME	4,[570,,4200]	;PASS IF C(E)=000570,,004200
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT EQVI PLACES THE LOGICAL EQUIVALENCE FUNCTION
+;OF C(AC) AND THE WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=707070,,123426 AND E=0,,123363
+;HENCE, THE RESULT IN THE AC SHOULD BE 070707,,777032
+
+C61500:	MOVE	2,[707070,,123426]  ;PRELOAD AC WITH 707070,,123426
+	EQVI	2,123363	;*EQVI SHOULD PLACE
+				;070707,,777032 INTO THE AC
+	CAME	2,[70707,,777032]  ;PASS IF C(AC)=070707,,777032
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT EQVM PLACES THE LOGICAL EQUIVALENCE FUNCTION
+;OF C(AC) AND C(E) INTO E.
+;IN THIS CASE, C(AC)= 123456,,123457 AND C(E) = 707633,,121212
+;HENCE, THE RESULT IN E SHOULD BE 153512,,775132
+
+C61600:	MOVE	1,[123456,,123457] ;PRELOAD AC WITH 123456,,123457
+	MOVE	2,[707633,,121212] ;PRELOAD AC WITH 707633,,121212
+	EQVM	1,2		;*EQVM SHOULD PLACE 153512,,775132 INTO	E.
+	CAME	1,[123456,,123457] ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[153512,,775132];PASS IF C(E) = 153512,,775132
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT EQVB PLACES THE LOGICAL EQUIVALENCE FUNCTION
+;OF C(AC)AND C(E) INTO BOTH AC AND  E.
+;IN THIS CASE, C(AC) = 123456,,123457 AND C(E) = 707633,,121212
+;HENSE, THE RSULT IN BOTH AC AND 	E SHOULD BE 153512,,775132
+
+C61700:	MOVE	1,[123456,,123457]	;PRELOAD AC WITH 123456,,12345
+	MOVE	2,[707633,,121212]	;PRELOAD AC WITH 707633,,121212
+	EQVB	1,2			;*EQVB SHOULD PLACE 153512,,775132
+					;INTO BOTHE AC AND E.
+	CAME	1,[153512,,775132]	;PASS IC C(AC)=153512,,775132
+	STOP
+	CAME	2,[153512,,775132]	;PASS IF C(E)=153512,,775132
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCAI PLACES THE COMPLEMENT OF C(AC)
+;INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,707070
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,654321
+
+C62000:	MOVE	0,[777000,,123456]	;PRELOAD AC WITH 777000,,123456
+	SETCAI	0,707070		;*SETCAI SHOULD PLACE 000777,,654321
+					;INTO THE AC
+	CAME	0,[777,,654321]	;PASS IF C(AC)=000777,,654321
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETCAM PLACES THE COMPLEMENT OF C(AC)
+;INTO E.
+;IN THIS CASE, C(AC)=123456,,765432 AND C(E)=-1,,-1.
+;HENCE, THE RESULT IN E SHOULD BE 654321,,012345
+
+C62100:	MOVE	17,[123456,,765432]	;PRELOAD AC WITH 123456,,765432
+	SETO	0,			;PRELOAD E WITH -1,,-1
+	SETCAM	17,0			;*SETCAM SHOULD PLACE
+					;654321,,012345 INTO E
+	CAME	17,[123456,,765432]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	0,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCAB PLACES THE COMPLEMENT OF C(AC)
+;INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=123456,,765432 AND C(E)=-1,,-1.
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 654321,,012345
+
+C62200:	MOVE	17,[123456,,765432]	;PRELOAD AC WITH 123456,,76543
+	SETO	0,			;PRELOAD E WITH -1,,-1
+	SETCAB	17,0			;*SETCAB SHOULD PLACE
+					;654321,,012345 INTO BOTH AC AND E
+	CAME	17,[654321,,12345]	;PASS IF C(AC)=654321,,012345
+	STOP
+	CAME	0,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCAI PLACES THE INCLUSIVE OR FUNCTION
+;OF THE WORD 0,,E AND THE COMPLEMENT OF C(AC) INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,123477 AND E=0,,765401
+;HENCE, THE RESULT IN THE AC SHOULD BE 000777,,775701
+
+C62300:	MOVE	16,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	ORCAI	16,765401		;*ORCAI SHOULD PLACE 000777,,767477
+					;INTO THE AC
+	CAME	16,[777,,775701]	;PASS IF C(AC)=000777,,775701
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCAM PLACES THE INCLUSIVE OR FUNCTION
+;OF C(E) AND THE COMPLEMENT OF C(AC) INTO
+;IN THIS CASE, C(AC)=777000,,123477 AND C(E)=707070,,707072
+;HENCE, THE RESULT IN E SHOULD BE 707777,,757372
+
+C62400:	MOVE	15,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	MOVE	16,[707070,,707072]	;PRELOAD E WITH 707070,,707072
+	ORCAM	15,16			;*ORCAM SHOULD PLACE 707777,,757372
+					;INTO E
+	CAME	15,[777000,,123477]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	16,[707777,,757372]	;PASS IF C(E)=707777,,757372
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCAB PLACES THE INCLUSIVE OR FUNCTION
+;OF C(E) AND THE COMPLEMENT OF C(AC) INTO BOTH AC AND E.
+;IN THIS CASE, C(AC)=777000,,123477 AND C(E)=707070,,707072
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 707777,,757372
+
+C62500:	MOVE	15,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	MOVE	16,[707070,,707072]	;PRELOAD E WITH 707070,,707072
+	ORCAB	15,16			;*ORCAB SHOULD PLACE 707777,,757372
+					;INTO BOTHE AC AND E
+	CAME	15,[707777,,757372]	;PASS IF C(AC)=707777,,757372
+	STOP
+	CAME	16,[707777,,757372]	;PASS IF C(E)=707777,,757372
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCMI PLACES THE COMPLEMENT OF THE
+;WORD 0,,E INTO THE AC
+;IN THIS CASE, C(AC)=777000,,123456 AND E=0,,707070
+;HENCE, THE RESULT IN THE AC SHOULD BE -1,,070707
+
+C62600:	MOVE	0,[777000,,123456]	;PRELOAD AC WITH 777000,,123456
+	SETCMI	0,707070		;*SETCMI SHOULD PLACE -1,,070707
+					;INTO THE AC
+	CAME	0,[-1,,070707]		;PASS IF C(AC)=-1,,070707
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT SETCMM PLACES THE COMPLEMENT OF C(E)
+;INTO E.
+;IN THIS CASE, C(E)=123456,,765432 AND C(AC)=-1,,-1.
+;HENCE, THE RESULT IN E SHOULD BE 654321,,012345
+
+C62700:	MOVE	17,[123456,,765432]	;PRELOAD E WITH 123456,,76543
+	SETO	0,			;PRELOAD AC WITH -1,,-1
+	SETCMM	0,17			;*SETCMM SHOULD PLACE
+					;654321,012345 INTO E
+	CAME	0,[-1]			;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT SETCMB PLACES THE COMPLEMENT OF C(E)
+;INTO BOTH AC AND E.
+;IN THIS CASE, C(E)=123456,,765432 AND C(AC)=-1,,-1.
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 654321,,012345
+
+C63000:	MOVE	17,[123456,,765432]	;PRELOAD E WITH 123456,,76543
+	SETO	0,			;PRELOAD AC WITH -1,,-1
+	SETCMB	0,17			;*SETCMB SHOULD PLACE
+					;654321,,012345 INTO BOTH AC AND E
+	CAME	0,[654321,,12345]	;PASS IF C(AC)=654321,,012345
+	STOP
+	CAME	17,[654321,,12345]	;PASS IF C(E)=654321,,012345
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCMI PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE COMPLEMENT OF THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=777000,,123477 AND E=0,,765401
+;HENCE, THE RESULT IN THE AC SHOULD BE -1,,133777
+
+C63100:	MOVE	16,[777000,,123477]	;PRELOAD AC WITH 777000,,123477
+	ORCMI	16,765401		;*ORCMI SHOULD PLACE -1,,133777
+					;INTO THE AC
+	CAME	16,[-1,,133777]		;PASS IF C(AC)=-1,,133777
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCMM PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE COMPLEMENT OC C(E) INTO
+;IN THIS CASE, C(E)=777000,,123477 AND C (AC)=707070,,707072
+;HENCE, THE RESULT IN E SHOULD BE 707777,,757372
+
+C63200:	MOVE	15,[777000,,123477]	;PRELOAD E WITH 777000,,123477
+	MOVE	16,[707070,,707072]	;PRELOAD AC WITH 707070,,707072
+	ORCMM	16,15			;*ORCMM SHOULD PLACE 707777,,757372
+					;INTO E
+	CAME	16,[707070,,707072]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	15,[707777,,757372]	;PASS IF C(E)=707777,,757372
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCMB PLACES THE INCLUSIVE OR FUNCTION
+;OF C(AC) AND THE COMPLEMENT OF C(E) INTO BOTH AC AND E.
+;IN THIS CASE, C(E)=777000,,123477 AND C(AC)=707070,,707072
+;HENCE, THE RESULT IN BOTH AC AND E SHOULD BE 707777,,757372
+
+C63300:	MOVE	15,[777000,,123477]  ;PRELOAD E WITH 777000,,123477
+	MOVE	16,[707070,,707072]  ;PRELOAD AC WITH 707070,,707072
+	ORCMB	16,15		;*ORCMB SHOULD PLACE 707777,,757372
+				;INTO BOTH AC AND E
+	CAME	16,[707777,,757372]  ;PASS IF C(AC)=707777,,757372
+	STOP
+	CAME	15,[707777,,757372]  ;PASS OF C(E)=707777,,757372
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCBI PLACES THE LOGICAL INCLUSIVE OR
+;FUNCTION OF THE COMPLEMENTS OF BOTH C(AC) AND THE WORD 0,,E INTO THE AC.
+;IN THIS CASE, C(AC)=707070,,070706 AND E=0,,770011.
+;HENCE, THE RESULT IN THE AC SHOULD BE -1,,707777
+
+C63400:	MOVE	15,[707070,,070706]  ;PRELOAD AC WITH 707070,,070706
+	ORCBI	15,770011	;*ORCBI SHOULD PLACE -1,,707777 INTO THE AC
+	CAME	15,[-1,,707777]	;PASS IF C(AC)=-1,707777
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT ORCBM PLACES THE LOGICAL INCLUSIVE OR
+;FUNCTION OF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO
+;IN THIS CASE, C(AC)=123456,,770077 AND C(E)=777001,,123324
+;HENCE, THE RESULT IN E SHOULD BE 654777,,657753
+
+C63500:	MOVE	14,[123456,,770077]  ;PRELOAD AC WITH 123456,,770077
+	MOVE	15,[777001,,123324]  ;PRELOAD E WITH 777001,,123324
+	ORCBM	14,15		;*ORCBM SHOULD PLACE 654777,,657753
+				;INTO E
+	CAME	14,[123456,,770077]  ;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	15,[654777,,657753]   ;PASS IF C(E)=654777,,657753
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT ORCBB PLACES THE LOGICAL INCLUSIVE OR
+;FUNCTIONOF THE COMPLEMENTS OF BOTH C(AC) AND C(E) INTO BOTH AC AND E
+;IN THIS CASE, C(AC)=123456,,770077 AND C(E)=777001,,657753
+
+C63600:	MOVE	14,[123456,,770077]  ;PRELOAD AC WITH 123456,,770077
+	MOVE	15,[777001,,123324]  ;PRELOAD E WITH 777001,,123324
+	ORCBB	14,15		;*ORCBB SHOULD PLACE 654777,,657753
+				;INTO BOTH AC AND E
+	CAME	14,[654777,,657753]  ;PASS IF C(AC)=654777,,657753
+	STOP
+	CAME	15,[654777,,657753]  ;PASS IF C(E)=654777,,657753
+	STOP
+
+;**********
+SUBTTL	TEST OF MSCL HWT INSTRUCTIONS
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLI CLEARS AC LEFT
+;IN THIS CASE, C(AC)=707070,,123456 AND E=777000
+;HENCE, THE RESULT IN THE AC SHOULD BE 0,,123456
+
+C63700:	MOVE	17,[707070,,123456]	;PRELOAD AC WITH 707070,,123456
+	HLLI	17,777000	;*HLLI SHOULD PLACE 0,,123456 INTO THHE AC
+	CAIE	17,123456	;PASS IF C(AC)=0,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLS PLACES C(E) INTO THE AC IF AC IS NON-ZERO
+;AND IS A NO-OP IF AC=0
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,765432
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+;AND 123456,,765432 RESPECTIVELY
+
+C64000:	SETO	0		;PRELOAD AC WITH -1,,-1
+	MOVE	2,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+	HLLS	0,2		;*HLLS SHOULD NOT AFFECT AC OR E
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123456,,765432]	;PASS IF C(C) IS UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLS PLACES C(E) INTO THE AC IF AC IS NON-ZERO?
+;AND IS A NO-OP IF AC=0
+;IN THIS CASE, AC=1, C(AC)=1,,-1 AND C(E)=123456,,765432
+;HENCE, THE RESULTS IN AC AND E WHOULD BE 123456,,765432
+;AND 123456,,765432 RESPECTVIELY
+
+C64010:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	2,[123456,,765432]	;PRELOAD E WITH 123456,,765432
+	HLLS	1,2		;*HLLS SHOULD PLACE 123456,,765432 INTO THE AC
+	CAME	1,[123456,,765432]	;PASS IF C(AC)=123456,,765432
+	STOP
+	CAME	2,[123456,,765432]	;PASS IF C(C) IS UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLS PLACES C(E-RIGHT) INTO E-LEFT, BUT
+;DOES NOT AFFECT E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=1,,-1 AND C(E)=123456,707070
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE -1,,-1
+;AND 707070,,707070.
+
+C64100:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	3,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HRLS	0,3		;*HRLS SHOULD PLACE 707070,,707070
+				;INTO E.
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	3,[707070,,707070]	;PASS IF C(E)=707070,,707070
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLS PLACES C(E-RIGHT) INTO E-LEFT, BUT
+;DOES NOT AFFECT E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707070
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707070,,707070
+;AND 707070,,707070.
+
+C64110:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	3,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HRLS	1,3		;*HRLS SHOULD PLACE 707070,,707070
+				;INTO BOTH AC AND E.
+	CAME	1,[707070,,707070]	;PASS IF C(AC)=707070,,707070
+	STOP
+	CAME	3,[707070,,707070]	;PASS IF C(E)=707070,,707070
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAN HLLZM PLACES C(AC-LEFT) INTO E-LEFT AND
+;PLACES 0 INTO E-RIGHT
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,717171
+;HENCE, THE RESULT IN E SHOULD BE 123456,,0
+
+C64200:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+	HLLZM	1,2		;*HLLZM SHOULD PLACE 123456,,0 INTO E
+	CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLZS CLEARS THE RIGHT HALF OF E, BUT DOESN'T
+;AFFECT THE LEFT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,707070
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+;AND 123456,,0 RESPECTIVELY
+
+C64300:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HLLZS	0,17		;*HLLZS SHOULD PLACE 123456,,0 INTO E.
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLZS CLEARS THE RIGHT HALF OF E, BUT DOESN'T
+;AFFECT THE LEFT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707070
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 123456,,0
+;AND 123456,,0 RESPECTIVELY.
+
+C64310:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,707070]	;PRELOAD E WITH 123456,,707070
+	HLLZS	1,17		;*HLLZS SHOULD PLACE 123456,,0 INTO
+				;BOTH AC AND E
+	CAME	1,[123456,,0]	;PASS IF C(AC)=123456,,0
+	STOP
+	CAME	17,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLZM PLACES C(AC-RIGHT) INTO E-LEFT AND
+;PLACES O INTO E-RIGHT.
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 123422,,0
+
+C64400:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+	HRLZM	1,2		;*HRLZM SHOULD PLACE 123422,,0 INTO E
+	CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123422,,0]	;PASS IF C(E)=123422,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLZS PLACES C(E-RIGHT) INTO E-LEFT AND
+;CLEARS E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE -1,,-1
+;AND 707076,,0
+
+C64500:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLZS	0,16		;*HRLZS SHOULD PLACE 707076,,0
+				;INTO E.
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	16,[707076,,0]	;PASS IF C(AC)=707076,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLZS PLACES C(E-RIGHT) INTO E-LEFT AND
+;CLEARS E-RIGHT.  IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707076,,0
+;AND 707076,,0
+
+C64510:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLZS	1,16		;*HRLZS SHOULD PLACE 707076,,0
+				;INTO BOTH AC AND E.
+	CAME	1,[707076,,0]	;PASS IF C(AC)=707076,,0
+	STOP
+	CAME	16,[707076,,0]	;PASS IF C(AC)=707076,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLOM PLACES C(AC-LEFT) INTO E-LEFT AND
+;PLACES -1 INTO E-RIGHT.
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 123456,,-1.
+
+C64600:	MOVE	1,[123456,,123422]	;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]	;PRELOAD AC WITH 707070,,717171
+	HLLOM	1,2		;*HLLOM SHOULD PLACE 123456,,-1 INTO E
+	CAME	1,[123456,,123422]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[123456,,-1]	;PASS IF C(E)=123456,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLO, C(E-RIGHT) INTO AC=LEFT AND
+;PLACES -1 INTO AC-RIGHT.  IN THIS CASE, C(AC)=123456,,135724 AND
+;C(E)=765432,,246135.  HENCE, THE RESULT IN THE AC SHOULD BE 246135,,-1
+
+C64700:	MOVE	15,[123456,,135724]	;PRELOAD AC WITH 123456,,135724
+	MOVE	16,[765432,,246135]	;PRELOAD E WITH 765432,,246135
+	HRLO	15,16		;*HRLO SHOULD PLACE 246135,,-1 INTO AC
+	CAME	15,[246135,,-1]	;PASS IF C(AC)=246135,,-1
+	STOP
+	CAME	16,[765432,,246135]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLOI PLACES 0,,E INTO AC-LEFT AND
+;PLACES ONES INTO AC-RIGHT.  IN THIS CASE, C(AC)=0 AND E=0,,123456.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,-1
+
+C65000:	SETZ	14,		;CLEAR AC
+	HRLOI	14,123456	;*HRLOI SHOULD PLACE 123456,,-1 INTO THE AC
+	CAME	14,[123456,,-1]	;PASS IF C(AC)=123456,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLOM PLACES C(AC-RIGHT) INTO E-LEFT
+;AND PLACES -1 INTO E-RIGHT. IN THIS CASE, C(E)=0 AND C(AC)=123123,,456765
+;HENCE, THE RESULT IN E SHOULD BE 456765,,-1.
+
+C65100:	SETZM	14		;CLEAR E
+	MOVE	13,[123123,,456765]	;PRELOAD AC WITH 123123,,456765
+	HRLOM	13,14		;*HRLOM SHOULD PLACE 456765,,-1 INTO E
+	CAME	13,[123123,,456765]	;PASS IF C(AC) UNCHANGED
+
+	STOP
+	CAME	14,[456765,,-1]	;PASS IF C(E)=456765,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLOS PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES -1 INTO E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALOS
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 0
+;AND 707076,,0
+
+C65200:	SETZ	0,		;PRELOAD AC WITH 0
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLOS	0,16		;*HRLZS SHOULD PLACE 707076,,-1
+				;INTO E.
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	16,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLOS PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES -1 INTO E-RIGHT. IF AC IS NON-ZERO, THE RESULT IN E IS ALSO
+;PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,707076
+;HENCE, THE RESULTS IN AC AND E RESPECTIVELY SHOULD BE 707076,,-1
+;AND 707076,,-1
+
+C65210:	SETZ	1,		;PRELOAD AC WITH 0
+	MOVE	16,[123456,,707076]	;PRELOAD E WITH 123456,,707076
+	HRLOS	1,16		;*HRLZS SHOULD PLACE 707076,,-1
+				;INTO BOTH AC AND E
+	CAME	1,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+	STOP
+	CAME	16,[707076,,-1]	;PASS IF C(AC)=707076,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLEM PLACES C(AC-LEFT) INTO E-LEFT
+;AND PLACES BIT 0 OF THE AC INTO BITS 18 THRU 35 OF E.  IN THIS CASE,
+;C(AC)=123456,,707076 AND C(E)=-1,,-1.  HENCE, THE RESULT IN E
+;SHOULD BE 123456,,0.
+
+C65300:	MOVE	12,[123456,,707076]	;PRELOAD AC WITH 123456,,707076
+	SETOM	13		;PRELOAD E WITH -1,,-1
+	HLLEM	12,13		;*HLLEM SHOULD PLACE 123456,,0 INTO E
+	CAME	12,[123456,,707076]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	13,[123456,,0]	;PASS IF C(E)=123456,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLES PLACES C(E-LEFT) INTO E-LEFT AND
+;PLACES BIT 0 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=765432,,0.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND 765432,,-1 RESPECTIVELY.
+
+C65400:	SETZ	0,		;CLEAR AC
+	HRLZI	2,765432	;PRELOAD E WITH 765432,,0
+	HLLES	0,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO E
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLLES PLACES C(E-LEFT) INTO E-LEFT AND
+;PLACES BIT 0 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=765432,,0
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 765432,,-1
+;AND 765432,,-1 RESPECTIVELY
+
+C65410:	SETZ	1,		;CLEAR AC
+	HRLZI	2,765432	;PRELOAD E WITH 765432,,0
+	HLLES	1,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO BOTH AC AND E
+	CAME	1,[765432,,-1]	;PASS IF C(AC)=765432,,-1
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLLEM PLACES C(AC-RIGHT) INTO E-LEFT
+;AND PLACES BIT 18 OF THE AC INTO BITS 18 THRU 35 OF E.  IN THIS CASE,
+;C(AC)=365432,123456 AND C(E)=-1,,-1.  HENCE, THE RESULT IN E
+;SHOULD BE 365432,,0.
+
+C65500:	MOVE	12,[365432,,123456]	;PRELOAD AC WITH 365432,,123456
+	SETOM	13		;PRELOAD E WITH -1,,-1
+	HLLEM	12,13		;*HLLEM SHOULD PLACE 365432,,0 INTO E
+	CAME	12,[365432,,123456]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	13,[365432,,0]	;PASS IF C(E)=365432,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRLES PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES BIT 18 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=0,,765432
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND 765432,,-1 RESPECTIVELY
+
+C65600:	SETZ	0,		;CLEAR AC
+	HRRZI	2,765432	;PRELOAD E WITH 0,,765432
+	HRLES	0,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRLES PLACES C(E-RIGHT) INTO E-LEFT AND
+;PLACES BIT 18 OF E INTO BITS 18 THRU 35 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=0,,765432
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 765432,,-1
+;AND 765432,,-1 RESPECTIVELY.
+
+C65610:	SETZ	1,		;CLEAR AC
+	HRRZI	2,765432	;PRELOAD E WITH 0,765432
+	HRLES	1,2		;*HLLES SHOULD PLACE 765432,,-1
+				;INTO BOTH AC AND E
+	CAME	1,[765432,,-1]	;PASS IF C(AC)=765442,,-1
+	STOP
+	CAME	2,[765432,,-1]	;PASS IF C(E)=765432,,-1
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRM SHOULD PLACE C(AC-LEFT) INTO E-RIGHT
+;AND NOT AFFECT E-LEFT.  IN THIS CASE, C(AC)=123456,,701234
+;AND C(E)=0.  HENCE, THE RESULT IN E SHOULD BE 0,,123456
+
+C65700:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	SETZM	12		;CLEAR E
+	HLRM	11,12		;*HLRM SHOULD PLACE 0,,123456 INTO E
+	CAME	11,[123456,,701234]	;PASS IF C(AC) UNCHANGE
+	STOP
+	CAIE	12,123456	;PASS IF C(E)=0,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRS PLACES C(E-LEFT) INTO E-RIGHT AND
+;DOES NOT AFFECT E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123123,,246135
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND 123123,,123123 RESPECTIVELY.
+
+C66000:	SETZ	0,		;CLEAR AC
+	MOVE	12,[123123,,246135]	;PRELOAD E WITH 123123,,246135
+	HLRS	0,12		;*HLRS SHOULD PLACE 123123,,123123
+				;INTO E.
+	CAME	0,[0]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	12,[123123,,123123]	;PASS IF C(E)=123123,,123123
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRS PLACES C(E-LEFT) INTO E-RIGHT AND
+;DOES NOT AFFECT E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123123,,246135
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 123123,,123123
+;AND 123123,,123123 RESPECTIVELY.
+
+C66010:	SETZ	1,		;CLEAR AC
+	MOVE	12,[123123,,246135]	;PRELOAD E WITH 123123,,246135
+	HLRS	1,12		;*HLRS SHOULD PLACE 123123,,123123
+				;INTO BOTH AC AND E.
+	CAME	1,[123123,,123123]	;PASS IF C(AC)=123123,,123123
+	STOP
+	CAME	12,[123123,,123123]	;PASS IF C(E)=123123,,123123
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRRZS CLEARS THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 0, C(AC) = -1,,-1 AND C(E) = 123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1 AND 0,,701234
+;RESPECTIVELY.
+
+C66100:	SETO	0		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRRZS	0,17		;HRRZS SHOULD PLACE 0,,701234 INTO E
+	CAME	0,[-1]		;PASS IF C(AC) UNCHANGED
+	STOP
+	CAIE	17,701234	;PASS IF C(E) = 0,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRRZS CLEARS THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 1, C(AC) = -1,,-1 AND C(E) = 123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,701234 AND 0,,701234
+;RESPECTIVELY.
+
+C66110:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRRZS	1,17		;HRRZS SHOULD PLACE 0,,701234 INTO
+				;BOTH AC AND E
+	CAIE	1,701234	;PASS IF C(AC) = 0,,701234
+	STOP
+	CAIE	17,701234	;PASS IF C(E) = 0,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRZI CLEARS THE AC
+;IN THIS CASE, C(AC) = -1,,-1 AND E = 0,,-1.  HENCE, THE
+;RESULT IN THE AC SHOULD BE 0.
+
+C66200:	SETO	7		;PRELOAD AC WITH -1,,-1
+	HLRZI	7,-1		;*HLRZI SHOULD CLEAR THE AC
+	SKIPE	7		;PASS IF C(AC) = 0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRZM PLACES C(AC-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.
+;IN THIS CASE, C(AC) = 123456,,123422 AND C(E) = 707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 0,,123456.
+
+C66300:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+	HLRZM	1,2		;*HLRZM SHOULD PLACE 0,,123456 INTO E.
+	CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAIE	2,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRZM PLACES C(AC-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.
+;IN THIS CASE, C(AC) = 123456,,123422 AND C(E) = 707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE 0,,123456.
+
+C66301:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+	MOVEM	2,E66301
+	HLRZM	1,E66301	;*HLRZM SHOULD PLACE 0,,123456 INTO E.
+	CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	MOVE	2,E66301
+	CAIE	2,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+	SKIPA			;GO TO NEXT TEST
+E66301:	0			;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 0, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1 AND 0,,123456
+;RESPECTIVELY.
+
+C66400:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRZS	0,7		;*HLRZS SHOULD PLACE 0,,123456 INTO E
+	CAME	0,[-1]		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAIE	7,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 6, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456 AND 0123456
+;RESPECTIVELY.
+
+C66410:	SETO	6,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRZS	6,7		;*HLRZS SHOULD PLACE 0,,123456 INTO
+				;BOTH AC AND E
+	CAIE	6,123456	;PASS IF C(AC) = 0,,123456
+	STOP
+	CAIE	7,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRZS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES 0 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC = 6, C(AC) = -1,,-1 AND C(E) = 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456 AND 0123456
+;RESPECTIVELY.
+
+C66411:	SETO	6,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	MOVEM	7,E66411
+	HLRZS	6,E66411	;*HLRZS SHOULD PLACE 0,,123456 INTO
+				;BOTH AC AND E
+	CAIE	6,123456	;PASS IF C(AC) = 0,,123456
+	STOP
+	MOVE	7,E66411
+	CAIE	7,123456	;PASS IF C(E) = 0,,123456
+	STOP
+
+	SKIPA			;GO TO NEXT TEST
+E66411:	0			;TEST WORD MEMORY
+
+;**********
+;THIS TEST VERIFIES THAT HRROM PLACES C(AC-RIGHT) INTO E-RIGHT AND
+;PLACES -1 INTO E-LEFT.  IN THIS CASE, C(AC) = 123456,,701234 AND
+;C(E) = 0.  HENCE, THE RESULT IN E SHOULD BE -1,,601234.
+
+C66500:	MOVE	5,[123456,,701234]  ;PRELOAD AC WITH 123456,,701234
+	SETZM	6		;CLEAR E
+	HRROM	5,6		;*HRROM SHOULD PLACE -1,,701234 INTO E
+	CAME	5,[123456,,701234]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	6,[-1,,701234]	;PASS IF C(E) = -1,,701234
+	STOP
+
+
+;**********
+
+;THIS TEST VERIFIES THAT HRROS PLACES -1 INTO THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND -1,,701234 RESPECTIVELY.
+
+C66600:	SETZ	0		;PRELOAD AC WITH 0
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRROS	0,17		;HRROS SHOULD PLACE -1,,701234 INTO E
+	CAME	0,[0]		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	17,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRROS PLACES -1 INTO THE LEFT HALF OF E, BUT DOES NOT
+;AFFECT THE RIGHT HALF OF E.  IF AC IS NON-ZERO THE RESULT IN E IS
+;ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=16, C(AC)=0 AND C(E)=123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,701234
+;AND -1,,701234 RESPECTIVELY.
+
+C66610:	SETZ	16,		;PRELOAD AC WITH 0
+	MOVE	17,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HRROS	16,17		;*HRROS SHOULD PLACE -1,,701234 INTO
+				;BOTH AC AND E
+	CAME	16,[-1,,701234]	;PASS IF C(AC)=-1,,701234
+	STOP
+	CAME	17,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRO PLACES C(E-LEFT) INTO AC-RIGHT AND
+;PLACES -1 INTO AC-LEFT.  IN THIS CASE, C(AC)=0
+;C(E)=765432,,107654.  HENCE, THE RESULT IN THE AC SHOULD BE -1,,765432.
+
+C66700:	SETZ	4,		;CLEAR AC
+	MOVE	5,[765432,,107654]  ;PRELOAD E WITH 765432,,107654
+	HLRO	4,5		;*HLRO SHOULD PLACE -1,,765432 INTO THE AC
+	CAME	4,[-1,,765432]	;PASS IF C(AC)=-1,,765432
+	STOP
+	CAME	5,[765432,,107654]  ;PASS IF C(E) IS UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLROI PLACES -1,,0 INTO THE AC.
+;IN THIS CASE, C(AC)=123456,,765432 AND E=070707.  HENCE, THE
+;RESULT IN THE AC SHOULD BE -1,,0
+
+C67000:	MOVE	3,[123456,,765432]  ;PRELOAD AC WITH 123456,,765432
+	HLROI	3,070707	;*HLROI SHOULD PLACE -1,,0 INTO THE AC
+	CAME	3,[-1,,0]	;PASS IF C(AC)=-1,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLROM PLACES C(AC-LEFT) INTO E RIGHT AND
+;PLACES -1 INTO E-LEFT
+;IN THIS CASE, C(AC)=123456,,123422 AND C(E)=707070,,717171
+;HENCE, THE RESULT IN E SHOULD BE -1,,123456
+
+C67100:	MOVE	1,[123456,,123422]  ;PRELOAD AC WITH 123456,,123422
+	MOVE	2,[707070,,717171]  ;PRELOAD AC WITH 707070,,717171
+	HLROM	1,2		;*HLROM SHOULD PLACE -1,,123456 INTO E
+	CAME	1,[123456,,123422]  ;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[-1,,123456]	;PASS IF C(E)=-1,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLROS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES -1 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0
+;AND -1,,123456 RESPECTIVELY
+
+C67200:	SETZ	0		;PRELOAD AC WITH 0
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLROS	0,7		;*HLROS SHOULD PLACE -1,,123456 INTO E
+				;
+	CAIE	0,0		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	7,[-1,,123456]	;PASS IF C(E)=-1,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLROS PLACES C(E-LEFT) INTO E-RIGHT AND
+;PLACES -1 INTO E-LEFT.  IF AC IS NON-ZERO, THE RESULT IN E
+;IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,701234.
+;HENCE, THE RESULT IN AC AND E SHOULD BE -1,,123456
+;AND -1,,123456 RESPECTIVELY.
+
+C67210:	SETZ	1,		;PRELOAD AC WITH 0
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLROS	1,7		;*HLROS SHOULD PLACE -1,,123456 INTO
+				;BOTH AC AND E
+	CAME	1,[-1,,123456]	;PASS IF C(AC)=-1,,123456
+	STOP
+	CAME	7,[-1,,123456]	;PASS IF C(E)=-1,,123456
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HRRES PLACES C(E-RIGHT) INTO E-RIGHT
+;AND PLACES BIT 18 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=0 AND C(E)=123456,,701234
+;HENCE, THE RESULT IN AC AND E SHOULD BE 0
+;AND -1,,701234 RESPECTIVELY.
+
+C67300:	SETZ	0,		;PRELOAD AC WITH 0
+	MOVE	3,[123456,,701234]  ;PRELOAD WITH 123456,,701234
+	HRRES	0,3		;HRRES SHOULD PLACE -1,,701234 INTO E
+
+	SKIPE			;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAME	3,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HRRES, PLACES C(E-RIGHT) INTO E-RIGHT
+;AND PLACES BIT 18 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS NON-ZERO,
+;THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=0 AND C(E)=123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,701234
+;AND -1,,701234 RESPECTIVELY.
+
+C67310:	SETZ	1,		;PRELOAD AC WITH 0
+	MOVE	3,[123456,,701234]  ;PRELOAD WITH 123456,,701234
+	HRRES	1,3		;HRRES SHOULD PLACE -1,,701234 INTO
+				;BOTH AC AND E
+	CAME	1,[-1,,701234]	;PASS IF C(AC)=-1,,701234
+	STOP
+	CAME	3,[-1,,701234]	;PASS IF C(E)=-1,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT HLRES PLACES C(E-LEFT) INTO E-RIGHT
+;AND PLACES BIT 0 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS
+;NON-ZERO, THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=0, C(AC)=-1,,-1 AND C(E) 123456,,701234
+;HENCE, THE RESULTS IN AC AND E SHOULD BE -1,,-1
+;AND 0,,123456 RESPECTIVELY.
+
+C67400:	SETO	0,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRES	0,7		;*HLRES SHOULD PLACE 0,,123456 INTO E
+
+	CAME	0,[-1]		;PASS IF C(AC) IS UNCHANGED
+	STOP
+	CAIE	7,123456	;PASS IF C(E)=0,,123456
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT HLRES PLACES C(E-LEFT) INTO E-RIGHT
+;AND PLACES BIT 0 OF E INTO BITS 0 THRU 17 OF E.  IF AC IS
+;NON-ZERO, THE RESULT IN E IS ALSO PLACED INTO THE AC.
+;IN THIS CASE, AC=1, C(AC)=-1,,-1 AND C(E) 123456,,701234.
+;HENCE, THE RESULTS IN AC AND E SHOULD BE 0,,123456
+;AND 0,,123456 RESPECTIVELY.
+
+C67410:	SETO	1,		;PRELOAD AC WITH -1,,-1
+	MOVE	7,[123456,,701234]  ;PRELOAD E WITH 123456,,701234
+	HLRES	1,7		;*HLRES SHOULD PLACE 0,,123456 INTO
+				;BOTH AC AND E
+	CAIE	1,123456	;PASS IF C(AC)=0,,123456
+	STOP
+	CAIE	7,123456	;PASS IF C(E)=0,,123456
+	STOP
+
+;**********
+SUBTTL	TEST OF MSCL LOGICAL TEST INSTRUCTIONS
+
+;**********
+
+;THIS TEST VERIFIES THAT TRNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRNE SHOULD SKIP THE NEXT INSTRUCTION.  THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION.
+
+C67500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNE	17,3			;*TRNE SHOULD SKIP THE NEXT INSTRUCTION
+	STOP
+	CAME	17,[123456,,701234]	;PASS IF C AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRNE SHOULD NOT SKIP THE NEXT INSTRUCTION.  THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION.
+
+C67510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNE	16,300			;*TRNE SHOULD NOT SKIP THE NEXT INSTRUCTION
+	SKIPA				;PASS IF TRNE DID NOT SKIP
+	STOP
+	CAME	16,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLNE SHOULD SKIP THE NEXT INSTRUCTION, THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION.
+
+C67600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNE	15,300			;*TLNE CHOULD SKIP
+	STOP
+	CAME	15,[123456,,701234]	;PASS IF C(AC) IS UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLNE SHOULD NOT SKIP THE NEXT INSTRUCTION, THE AC IS ALSO
+;CHECKED FOR NO MODIFICATION
+
+C67610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNE	14,3			;*TLNE SHOULD NOT SKIP
+	SKIPA				;PASS IF TLNE DID NOT SKIP
+	STOP
+	CAME	14,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TRNA IS INDEPENDENT OF BOTH C(A) AND E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRNA SHOULD SKIP THENEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C67700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNA	13,3			;*TRNA SHOULD ALWAYS SKIP
+	STOP
+	CAME	13,[123456,,701234]	;PASS IFC(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFhES THAT TRNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TRNA IS INDEPENDENT OF BOTH C(A) AND E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C67710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNA	12,300			;*TRNA SHOQLD ALWAYS SKIP
+	STOP
+	CAME	12,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIaS THAT TLNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TLNA IS INDEPENDENt OF BOTH C(AC) AND E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNA	11,3			;*TLNA SHOULD ALWAYS SKIP
+	STOP
+	CAME	11,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLNA ALWAYS SKIPS THE NEXT SEQUENTIAL
+;INSTRUCTION.  HENCE, TLNA IS INDEPENDENT OF BOTH C(AC) AND E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLNA SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNA	10,300			;*TLNA SHOULD ALWAYS SKIP
+	STOP
+	CAME	10,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN
+;E ARE ZERO.  IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRNN SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNN	7,300			;*TRNN SHOULD SKIP
+	SToP
+	CAME	7,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN
+;E ARE ZERO.  IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRNN SHoULD NOT SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRNN	6,3			;*TRNN SHOULD NOT SKIP
+	SKIPA				;PASS IF TRNN DID NOT SKIP
+	STOP
+	CAME	6,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLNN SHOULD SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNN	5,3			;*TLNN SHOULD SKIP
+	STOP
+	CAME	5,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES thAT TLNN SkIPS THE NEXT SEQUENTIAL INSTRUcTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLNN SHOULD NOT SKIP THE NEXT INSTRUCTION AND NOT ALTER C(AC).
+
+C70210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLNN	4,300			;*TLNN SHOULD NOT SKIP
+	SKIPA				;PASS IF TLNN DOES NOT SKIP
+	STOP
+	CAME	4,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SNAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSNE SHOULD SKIP THE NEXT INSTRUCtION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED.
+
+C70300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	4,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSNE	3,4			;*TSNE SHOULD SKIP
+	STOP
+	CAME	3,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	4,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSNE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SNAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654323
+;HENCE, TSNE SHOULD NOT SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED.
+
+C70310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	3,[76543,,654323]	;PRELOAD E WITH 076543,,654323
+	TSNE	2,3			;*TSNE SHOULD NOT SKIP
+	SKIPA				;PASS IF TSOE DId NOT SKIP
+	STOP
+	CAME	2,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	3,[76543,,654323]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSNA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSNA SHOULD SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	2,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSNA	1,2			;*TSNA SHOULD SKIP
+	STOP
+	CAME	1,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	2,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSNA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;NEITHER AC NOR E ARE EFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654323
+;HENCE, TSNA SHOULD SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	1,[76543,,654323]	;PRELOAD E WITH 076543,,654323
+	TSNA	0,1			;*TSNA SHOULD SKIP
+	STOP
+	CAME	1,[76543,,654323]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL HITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SWAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076547,,654321
+;HENCE, TSNN SHOULD SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	0,[76547,,654321]	;PRELOAD E WITH 076547,,654321
+	TSNN	17,0			;*TSNN SHOULD SKIP
+	STOP
+	CAME	17,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	0,[76547,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSNN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN C(E) WITH
+;BOTH HALVES SWAPPED ARE ZERO.  NEITHER AC NOR E ARE AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSNN SHOULD NOT SKIP THE NEXT INSTRUCTION AND
+;BOTH C(AC) AND C(E) SHOULD BE UNMODIFIED
+
+C70510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	17,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSNN	16,17			;*TSNN SHOULD NOT SKIP
+	SKIPA				;PASS IF TSNN DID NOT SKIP
+	STOP
+	CAME	16,[123456,,701234]	;PASS IF C(AC) UNCHANGED
+	STOP
+	CAME	17,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZ CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C70600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234]
+	TRZ	12,3			;*TRZ SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TRZ DOES NOT SKIP
+	STOP
+	CAME	15,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZ CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701034
+
+C70610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZ	14,300			;*TRZ SHOULD PLACE 123456,,701234 INTO
+					;THE ACAND NOT SKIP
+	SKIPA				;PASS IF TRX DOES NOT SKIP
+	STOP
+	CAME	14,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZ CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CACE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOUL BE 123456,,701234
+
+C70700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZ	13,300			;*TLZ SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZ DOES NOT SKIP
+	STOP
+	CAME	13,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZ CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRSPOND TO 1'S IN E TO ZERO AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123454,,701234
+
+C70710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZ	12,3			;*TLZ SHOULD PLACE 123454,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZ DOES NOT SKIP
+	STOP
+	CAME	12,[123454,,701234]	;PASS IF C(AC)=123454,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRZE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C71000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZE	11,3			;*TRZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	11,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRSPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRZE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOUDL BE 123456,,701034
+
+C71010:	MOVE	10,[123456,,701234]	;PRELOAD AC WIT@ 123456,,701234
+	TRZE	10,300			;*TRZE SHOULD PLACE 123456,,701034 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TRZE DOES NOT SKIP
+	STOP
+	CAME	10,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLZE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C71100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZE	7,300			;*TLZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	7,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLZE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123454,,701234
+
+C71110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZE	6,3			;*TLZE SHOULD PLACE 123454,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZE DOES NOT SKIP
+	STOP
+	CAME	6,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701234
+
+C71200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZA	5,3			;*TRZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	5,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701234.
+
+C71210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZA	4,300			;*TRZA SHOULD SKIP AND
+					;PLACE 123456,,701034 INTO THE AC
+	STOP
+	CAME	4,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRQCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123454,,701234.
+
+C71300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZA	3,3			;*TLZA SHOULD SKIP AND
+					;PLACE 123454,,701234 INTO THE AC
+	STOP
+	CAME	3,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLZA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701234.
+
+C71310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZA	2,300			;*TLZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	2,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRZN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701034.
+
+C71400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRZN	1,300			;*TRZN SHOULD SKIP AND
+					;PLACE 123456,,701034 INTO THE AC
+	STOP
+	CAME	1,[123456,,701034]	;PASS IF C(AC)=123456,,701034
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRZN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234.
+
+C71410:	MOVE	0,[123456,,701234]	;PRELOAD AC WATH 123456,,701234
+	TRZN	0,3			;*TRZN SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TRZN DOES NOT SKIP
+	STOP
+	CAME	0,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLZN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123454,,701234.
+
+C71500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZN	17,3			;TLZN SHOULD SKIP AND
+					;PLACE 123454,,701234 INTO THE AC
+	STOP
+	CAME	17,[123454,,701234]	;PASS IF C(AC)=123454,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BIPS ARE THEN CHANGED TO ZEROS.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLZN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234.
+
+C71510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLZN	16,300			;*TLZN SHOULD PLACE 123456,,701234 INTO
+					;THE AC AND NOT SKIP
+	SKIPA				;PASS IF TLZN DOES NOT SKIP
+	STOP
+	CAME	16,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSZ CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION. C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321.
+;HENCE, TSZ SHOULD NOT SKIP AND C(AC) SHOULD BE 123456,,701234.
+
+C71600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	16,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSZ	15,16			;*TSZ SHOULD NOT SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	SKIPA				;PASS IF TSZ DID NOT SKIP
+	STOP
+	CAME	15,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	16,[76543,,654321]	;PASS IF C(E) UNCHANCED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZ CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070.
+;HENCE, TSZ SHOULD NOT SKIP AND C(AC) SHOULD BE 020406,,501210.
+
+C71610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	15,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TSZ	14,15			;*TSZ SHOULD NOT SKIP AND
+					;PLACE 020406,,501210 INTO THE AC
+	SKIPA				;PASS IF TSZ DID NOT SKIP
+	STOP
+	CAME	14,[020406,,501210]	;PASS IF C(AC)=020406,,501210
+	STOP
+	CAME	15,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E).
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543.
+;HENCE, TDZE SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+
+C71700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	14,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDZE	13,14			;*TDZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	13,[123456,,701234]	;PASS IF C(AC)=123456,,701234]
+	STOP
+	CAME	14,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO. THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 754321,,076543
+;HENCE, TDZE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE 023456,,701234 C(E) IS NOT AFFECTED
+
+C71710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	13,[754321,,076543]	;PRELOAD E WITH 754321,,076543
+	TDZE	12,13			;*TDZE SHOULD NOT SKIP AND
+					;PLACE 023456,,701234 INTO THE AC
+	SKIPA				;PASS IF TDZE DOES NOT SKIP
+	STOP
+	CAME	12,[023456,,701234]	;PASS IF C(AC)= 023456,,701234
+	STOP
+	CAME	13,[754321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRECPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 076543,,654321
+;HENCE, TSZE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE 123456,,701234 C(E) IS NOT AFFECTED
+
+C72000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	12,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSZE	11,12			;*TSZE SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	11,[123456,,701234]	;PASS IF C(AC)= 123456,,701234
+	STOP
+	CAME	12,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C (E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO
+;IN THIS CASE, C(AC)= 123456,,701234 AND C(E)= 076543,,657321
+;HENCE, TSZE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE 120456,,701234 C(E) IS NOT AFFECTED
+
+C72010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	11,[76543,,657321]	;PRELOAD E WITH 076543,,654321
+	TSZE	10,11			;*TSZE SHOULD NOT SKIP AND
+					;PLACE 120456,,701234 INTO THE AC
+	SKIPA				;PASS IF TSZE DID NOT SKIP
+	STOP
+	CAME	10,[120456,,701234]	;PASS IF C(AC)= 120456,,701234
+	STOP
+	CAME	11,[76543,,657321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDZA CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)= 654321,,076543
+;HENCE, TD2A SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+
+C72100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	10,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDZA	7,10			;*TDZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	7,[123456,,701234]	;PASS IF C(AC)= 123456,,701234
+	STOP
+	CAME	10,[654321,,076543]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	10,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDZA CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TDZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 121052,,000204
+
+C72110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	7,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TDZA	6,7			;*TDZA SHOULD SKIP AND
+				;PLACE 121052,,000204 INTO THE AC
+	STOP
+	CAME	6,[121052,,000204]	;PASS IF C(AC)=121052,,000204
+	STOP
+	CAME	7,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES TH`T TSZA CLEARS AHL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION. C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+
+C72200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	6,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSZA	5,6			;*TSZA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	5,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	6,[076543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZA CLEARS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+;HENCE, TSZA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 0
+
+C72210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	5,[701234,,123456]	;PRELOAD E WITH 701234,,123456
+	TSZA	4,5			;*TSZA SHOULD SKIP AND
+					;PLACE 0 INTO THE AC
+	STOP
+	CAME	4,[0]			;PASS IF C(AC)=0
+	STOP
+	CAME	5,[701234,,123456]	;PASS IF C(E) UNCHANGED
+	SToP
+
+;**********
+;THIS TEST VERIFIES THAT TDZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGEDTO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+;HENCE, TDZN SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456(,701230.  C(E) IS NOT AFFECTED.
+
+C72300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	4,[654321,,76547]	;PRELOAD E WITH 654321,,076547
+	TDZN	3,4			;*TDZN SHoULD SKIP AND
+					;PLACE 123456,,701230 INTO THE AC
+	STOP
+	CAME	3,[123456,,701230]	;PASS IF C(AC)=123456,,701230
+	STOP
+	CAME	4,[654321,,076547]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDZN SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+
+C72310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	3,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDZN	2,3			;*TDZN SHOULD NOT SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	SKIPA				;PASS IF TDZN DOES NOT SKIP
+	STOP
+	CAME	2,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	3,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THaT TSZN SKIPS THE NEXT SEQQENPIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321.
+;HENCE, TSZN SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,700234.  C(E) IS NOT AFFECTED.
+
+C72400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	2,[077543,,654321]	;PRELOAD E WITH 077543,,654321
+	TSZN	1,2			;*TSZN SHOULD SKIP AND
+					;PLACE 123456,,700234 INTO THE AC
+	STOP
+	CAME	1,[123456,,700234]	;PASS IF C(AC)=123456,,700234
+	STOP
+	CAME	2,[77543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSZN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ZERO.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321.-
+;HENCE, TSZN SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE 123456,,701234.  C(E) IS NOT AFFECTED.
+
+C72410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	1,[76543,,654321]	;PRElOAD E WITH 076543,,654321
+	TSZN	0,1			;*TSZN SHOULD NOT SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	SKIPA				;PASS IF TSZN DOES NOT SKIP
+	STOP
+	CAME	0,[123456,,701234]	;PASS IF C(AC)=123456,,701234]
+	STOP
+	CAME	1,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRC COMPLEMENTS ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, THE RESULT IN THE AC SHOUHD BE 123456,,701237
+
+C72500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRC	17,3			;*TRC SHOULD NOT SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRC DID NOT SKIP
+	STOP
+	CAME	17,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRC COMPLEMENTS ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701134
+
+C72510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRC	16,300			;*TRC SHOULD NOT SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	SKIPA				;PASS IF TRC DID NOT SKIP
+	STOP
+	CAME	16,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLC COMPLEMENTS ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, ThE RESULT IN THE AC SHOULD BE 123756,,701234.
+
+C72600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLC	15,300			;*TLC SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLC DID NOT SKIP
+	STOP
+	CAME	15,[123756,,701234]	;PASS IF A(AC)=123756,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLC COMPLEMENTS ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E AND DOES NOT SKIP.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, THE RESULT IN THE AC SHOULD BE 123455,,701234.
+
+C72610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLC	14,3			;*TLC SHOULD NOT SKIP AND
+					;PLACE 123455,,701234 INTO THE AC
+	SKIPA				;PASS IF TLC DID NOT SKIP
+	STOP
+	CAME	14,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRCE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701237.
+
+C72700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCE	13,3			;*TRCE SHOULD SKIP AND
+					;PLACE 123456,,701237 INTO ThE AC
+	STOP
+	CAME	13,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TRCE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701134
+
+C72710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCE	12,300			;*TRCE SHOULD NOT SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	SKIPA				;PASS IF TRCE DID NOT SKIP
+	STOP
+	CAME	12,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300.
+;HENCE, TLCE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234.
+
+C73000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCE	11,300			;*TLCE SHOULD SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	STOP
+	CAME	11,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TLCE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123455,,701234.
+
+C73010:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCE	10,3			;*TLCE SHOULD NOT SKIP AND
+					;PLACE 123455,,701234 INTO THE AC
+	SKIPA				;PASS IF TLCE DID NOT SKIP
+	STOP
+	CAME	10,[123455,,701234]	;PASS IF C(AC)=123455,,701234]
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E.
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3.
+;HENCE, TRCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701237.
+
+C73100:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCA	7,3			;*TRCA SHOULD SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	STOP
+	CAME	7,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701134
+
+C73110:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCA	6,300			;*TRCA SHOULD SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	STOP
+	CAME	6,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD 123456,,701234
+
+C73200:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCA	5,3			;*TLCA SHOULD SKIP AND
+					;PLACE 12345,,701234 INTO THE AC
+	STOP
+	CAME	5,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLCA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND COMPLEMENTS ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLCA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123756,,701234
+
+C73210:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCA	4,300			;*TLCA SHOULD SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	STOP
+	CAME	4,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRCN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND RESULT IN THE AC SHOULD BE 123456,,701134
+
+C73300:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCN	3,300			;*SHOULD SKIP AND
+					;PLACE 123456,,701134 INTO THE AC
+	STOP
+	CAME	3,[123456,,701134]	;PASS IF C(AC)=123456,,701134
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRCN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701237
+
+C73310:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRCN	2,3			;*TRCN SHOULD NOT SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRCN DID NOT SKIP
+	STOP
+	CAME	2,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THE CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLCN SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701234
+
+C73400:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCN	1,3			;*TLCN SHOULD SKIP AND
+					;PLACE 123455,701234 INTO THE AC
+	STOP
+	CAME	1,[123455,,701234]	;PASS IF C(AC)=123455,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZER.
+;THESE MASKED AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLCN SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C73410:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLCN	0,300			;*TLCN SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLCN DID NOT SKIP
+	STOP
+	CAME	0,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSL COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)6543,,654321
+;HENCE, TSC SHOULD NOT SKIP AND C(AC) SHOULD BE -1,,-1
+
+C73500:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	0,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSC	17,0			;*TSC SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TSC DOES NOT SKIP
+	STOP
+	CAME	17,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	0,[076543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSC COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND DOES
+;NOT SKIP THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TSC SHOULD NOT SKIP AND C(AC) SHOULD BE 624426,,553711
+
+C73510:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	17,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TSC	16,17			;*TSC SHOULD NOT SKIP AND
+					;PLACE 624426,,553711 INTO THE AC
+	SKIPA				;PASS IF TSC DOES NOT SKIP
+	STOP
+	CAME	16,[624426,,553711]	;PASS IF C(AC)=624426,,553711
+	STOP
+	CAME	17,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDCE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C73600:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	16,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDCE	15,16			;*TDCE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	15,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	16,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E) 754321,,076543
+;HENCE, TDCE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE 677777,,-1 C(E) IS NOT AFFECTED.
+
+C73610:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	15,[754321,,076543]	;PRELOAD E WITH 754321,,076543
+	TDCE	14,15			;*TDCE SHOULD NOT SKIP AND
+					;PLACE 677777,,-1 INTO THE AC
+	SKIPA				;PASS IF TDCE DOES NOT SKIP
+	STOP
+	CAME	14,[677777,,-1]		;PASS IF C(AC)=677777,,-1
+	STOP
+	CAME	15,[754321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSCE SHOULD SKIP AND THE RESULT IN THE AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C73700:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	14,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSCE	13,14			;*TSCE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME 	13,[-1]			;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSCE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,701234 AND C(E)=076543,,657321
+;HENCE, TSCE SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE 774777,,-1.  C(E) IS NOT AFFECTED.
+
+C73710:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	13,[76543,,657321]	;PRELOAD E WITH 076543,,657321
+	TSCE	12,13			;*TSCE HOULD NOT SKIP AND
+					;PLACE 774777,,-1 INTO THE AC
+	SKIPA				;PASS IF TSCE DOES NOT SKIP
+	STOP
+	CAME	12,[774777,,-1]		;PASS IF C(AC)=774777,,-1
+	STOP
+	CAME	13,[76543,,657321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C74000:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	12,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDCA	11,12			;*TDCA SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	11,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	12,[654321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND SLWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TDCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 371173,,006244
+
+C74100:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	11,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TDCA	10,11			;*TDCA SHOULD SKP AND
+					;PLACE 371173,,006244 INTO THE AC
+	STOP
+	CAME	10,[371173,,6244]	;PASS IF C(AC)=371173,,006244
+	STOP
+	CAME	11,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C74200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	10,[076543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSCA	7,10			;*TSCA CHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	7,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	10,[076543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSCA COMPLEMENTS ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+;HENCE, TSCA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 0
+
+C74210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	7,[701234,,123456]	;PRELOAD E WITH 701234,,123456
+	TSCA	6,7			;*TSCA SHOULD SKIP AND
+					;PLACE 0 INTO THE AC
+	STOP
+	CAME	6,[0]			;PASS IF C(AC)=0
+	STOP
+	CAME	7,[701234,,123456]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THE CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+;HENCE, TDCN SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,777773 C(E) IS NOT AFFECTED
+
+C74300:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	6,[654321,,76547]	;PRELOAD E WITH 654321,,076547
+	TDCN	5,6			;*TDCN SHOULD SKIP AND
+					;PLACE -1,,777773 INTO THE AC
+	STOP
+	CAME	5,[-1,,777773]		;PASS IF C(AC)=-1,777773
+	STOP
+	CAME	6,[654321,,76547]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDCN SHOULD NOT SKIP AND THE REUSLT IN AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C74310:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	5,[654321,,76543]	;PRELOAD E WITH 654321,,076543
+	TDCN	4,5			;*TDCN SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TDCN DOES NOT SKIP
+	STOP
+	CAME	4,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	5,[654321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321
+;HENCE, TSCN SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,776777.  C(E) IS NOT AFFECTED
+
+C74400:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	4,[77543,,654321]	;PRELOAD E WITH 077543,,654321
+	TSCN	3,4			;*TSCN SHOULD SKIP AND
+					;PLACE -1,,776777 INTO THE AC
+	STOP
+	CAME	3,[-1,,776777]		;PASS IF C(AC)=-1,776777
+	STOP
+	CAME	4,[77543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSCN SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN COMPLEMENTD
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSCN SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1.  C(E) IS NOT AFFECTED.
+
+C74410:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	3,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSCN	2,3			;*TSCN SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TSCN DOES NOT SKIP
+	STOP
+	CAME	2,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	3,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRO CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES ANT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701237
+
+C74500:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRO	1,3			;*TRO SHOULD NOT SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRO DID NOT SKIP
+	STOP
+	CAME	1,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRO CHANGES ALL BITS IN THE AC-RIGHT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOULD BE 123456,,701224
+
+C74510:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRO	0,300			;*TRO SHOULD NOT SKIP AND
+					;PLACE 123456,,701334 INTO THE AC
+	SKIPA				;PASS IF TRO DID NOT SKIP
+	STOP
+	CAME	0,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLO CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C74600:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLO	17,300			;*TLO SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLO DID NOT SKIP
+	STOP
+	CAME	17,[123756,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLO CHANGES ALL BITS IN THE AC-LEFT WHICH
+;CORRESPOND TO 1'S IN E TO ONES AND DOES NOT SKIP
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, THE RESULT IN THE AC SHOULD BE 123457,,701234
+
+C74610:	MOVE	16,[123456,,70234]	;PRELOAD AC WITH 123456,,701234
+	TLO	16,3			;*TLO SHOULD NOT SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	SKIPA				;PASS IF DID NOT SKIP
+	STOP
+	CAME	16,[123457,,70234]	;PASS IF C(AC)=123457,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TROE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TROE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND RESULT IN THE AC SHOUD BE 123456,,701237
+
+C74700:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROE	15,3			;TROE SHOULD SKIP AND
+					;PLACE 123456,,701237 IN TO THE AC
+	STOP
+	CAME	15,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TROE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TROE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701334
+
+C74710:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROE	14,300			;*TROE SHOULD NOT SKIP AND
+					;PLACE 123456,,701224 INTO THE AC
+	SKIPA				;PASS IF DID NOT SKIP
+	STOP
+	CAME	14,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLOE SKIPS THE NEXT SEQUENTIAL  INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE TEN CHANGED TO ONES
+;IN THES CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLOE SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C75000:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOE	13,300			;*TLOE SOULD SKIP AND
+					;PLAND 123756,,701234 INTO THE AC
+	STOP
+	CAME	13,[123756,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+
+;********
+
+;THIS TEST VERIFIES THAT TLOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN AC-LEFT CORRESPONDING  TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLOE SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123457,,701234
+
+C75010:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOE	12,3			;*TLOE SHOULD NOT SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	SKIPA				;PASS IF TLOE DID NOT SKIP
+	STOP
+	CAME	12,[123457,,701234]	;PASS IF C(AC)=123457,,701234
+	STOP
+
+;*******
+;THIS TEST VERIFIES THAT TROA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TROA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701237
+
+C75100:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROA	11,3			;*TROA SHOULD SKIP AND
+					;PLACE 123456,,701237
+	STOP
+	CAME	11,[123456,,701237]	;PASS IF C(AC)=123456,,701237
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TROA ALWAYS SKIPS THE NEXT SEQUENTAIL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-RIGHT WHICH CORRESPOND TO 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TROA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123456,,701334
+
+C75110:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TROA	10,300			;*TROA SHOULD SKIP AND
+					;PLACE 123456,,701334 INTO THE AC
+	STOP
+	CAME	10,[123456,,701334]	;PASS IF C (AC)=123456,,701334
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLOA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTUCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TLOA SHOULD SKIP THE NEXT INSTRUCTION AND RESULT IN
+;THE AC SHOULD BE 123457,,701234
+
+C75200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOA	7,3			;*TLOA SHOULD SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	STOP
+	CAME	7,[123457,,701234]	;PASS IF C(AC)=123457,,701234]
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TLOA ALWAYS SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;AND CHANGES ALL BITS IN AC-LEFT WHICH CORRESPOND TO 1'S IN E TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLOA SHOULD SKIP THE NEXT INSTRUCTION AND THE RESULT IN
+;THE AC SHOULD BE 123756,,701234
+
+C75210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLOA	6,300			;*TLOA SHOULD SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	STOP
+	CAME	6,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TRON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TRON SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701334
+
+C75300:	MOVE	5,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRON	5,300			;*TRON SHOULD SKIP AND
+					;PLACE 123456,,701334 INTO THE AC
+	STOP
+	CAME	5,[123456,,701334]	;PASS IF C(AC)=123456,,701334
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TRON SKIPS THE NEXT SEQUENTIAL INSTUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-RIGHT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=3
+;HENCE, TRON SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123456,,701237
+
+C75310:	MOVE	4,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TRON	4,3			;*TRON SHOULD NOT  SKIP AND
+					;PLACE 123456,,701237 INTO THE AC
+	SKIPA				;PASS IF TRON DID NOT SKIP
+	STOP
+	CAME	4,[123456,,701237]	;PASS IF C(AC)=123456,701237
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TLON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)-123456,,701234 AND E=3
+;HENCE, TLON SHOULD SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123457,,701234
+
+C75400:	MOVE	3,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLON	3,3			;*TLON SHOULD SKIP AND
+					;PLACE 123457,,701234 INTO THE AC
+	STOP
+	CAME	3,[123457,,701234]	;PASS IF C(AC)=123457,,701234
+	STOP
+
+;*******
+
+;THIS TEST VERIFIES THAT TLON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN AC-LEFT CORRESPONDING TO 1'S IN E ARE ZERO.
+;THESE MASKED AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND E=300
+;HENCE, TLON SHOULD NOT SKIP THE NEXT SEQUENTIAL INSTRUCTION
+;AND THE RESULT IN THE AC SHOULD BE 123756,,701234
+
+C75410:	MOVE	2,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	TLON	2,300			;*TLON SHOULD NOT SKIP AND
+					;PLACE 123756,,701234 INTO THE AC
+	SKIPA				;PASS IF TLON DID NOT SKIP
+	STOP
+	CAME	2,[123756,,701234]	;PASS IF C(AC)=123756,,701234
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E)ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;HENCE, TDOE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C75500:	MOVE	1,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	2,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDOE	1,2			;*TDOE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	1,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	2,[654321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDOE SKIPS THE NEXT SEQUENTAIL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=754321,,076543
+;HENCE, TDOE SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTD
+
+C75510:	MOVE	0,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	1,[754321,,76543]	;PRELOAD E WITH 754321,,076543
+	TDOE	0,1			;*TDOE SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TDOE DOES NOT SKIP
+	STOP
+	CAME	0,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	1,[754321,,76543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSOE SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1.  C(E) IS NOT AFFECTED
+
+C75600:	MOVE	17,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	0,[76543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSOE	17,0			;*TSOE SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	17,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	0,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSOE SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN  CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,657321
+;HENCE, TSOE SHOULD NOT SKIP AND THE RESULT IN THE AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED.
+
+C75610:	MOVE	16,[123456,,701234]	;PRELOAD AC WITH 123456,701234
+	MOVE	17,[76543,,657321]	;PRELOAD E WITH 076543,,657321
+	TSOE	16,17			;*TSOE SHOULD NOT SKIP AND
+					;*TSOE SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF SKIP
+	STOP
+	CAME	16,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	17,[76543,,657321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDOA PLACES ONES INTO ALL BITS OF THE AC WHICH
+;CORRRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)= 654321,,076543
+;HENCE, TDOA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C75700:	MOVE	15,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	16,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDOA	15,16			;*TDOA SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	15,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	16,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDOA PLACE ONES ALL BIT OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=252525,,707070
+;HENCE, TDOA SHOULD ALWAYS SKIP AND C(AC) SHOULD BE 373577,,707274
+
+C75710:	MOVE	14,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	15,[252525,,707070]	;PRELOAD E WITH 252525,,707070
+	TDOA	14,15			;*TDOA SHOULD SKIP AND
+					;PLACE 373577,707274 ONTO THE AC
+	STOP
+	CAME	14,[373577,,707274]	;PASS IF C(AC)=373577,,707274
+	STOP
+	CAME	15,[252525,,707070]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSOA PLACE ONES INTO ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSOA SHOULD SLAWAYS SKIP AND C(AC) SHOULD BE -1,,-1
+
+C76000:	MOVE	13,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	14,[176543,,654321]	;PRELOAD E WITH 076543,,654321
+	TSOA	13,14			;*TSOA SHOULD SKIP AND
+					;PLACE -1,,-1 ONTO THE AC
+	STOP
+	CAME	13,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	14,[176543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSOA PLACES ONES INTO ALL BITS OF THE AC WHICH
+;CORRESPOND TO 1'S IN C(E) WITH BOTH HALVES SWAPPED AND ALWAYS
+;SKIPS THE NEXT INSTRUCTION.  C(E) IS NOT AFFECTED
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=701234,,123456
+;HENCE, TSOA SHOULD SLWAYS SKIP AND C(AC) SHOULD BE 123456,,701234
+
+C76010:	MOVE	12,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	13,[701234,,123456]	;PRELOAD E WITH 701234,123456
+	TSOA	12,13			;*TSOA SHOULD SKIP AND
+					;PLACE 123456,,701234 INTO THE AC
+	STOP
+	CAME	12,[123456,,701234]	;PASS IF C(AC)=123456,,701234
+	STOP
+	CAME	13,[701234,,123456]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TDON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076547
+;HENCE, TDON SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C76100:	MOVE	11,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	12,[654321,,076547]	;PRELOAD E WITH 654321,,076547
+	TDON	11,12			;*TDON SHOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	11,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	12,[654321,,076547]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TDON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=654321,,076543
+;THENC, TDON SHOULD NOT SKIP AND THE RESULT IN TH AC
+;SHOULD BE -1,,-1 C(E) IS NOT AFFECTED
+
+C76110:	MOVE	10,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	11,[654321,,076543]	;PRELOAD E WITH 654321,,076543
+	TDON	10,11			;*TDON SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TDON DOES NOT SKIP
+	STOP
+	CAME	10,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	11,[654321,,076543]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT TSON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVE SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=077543,,654321
+;HENCE, TSON SHOULD SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C76200:	MOVE	7,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	10,[77543,,654321]	;PRELOAD E WITH 077543,,654321]
+	TSON	7,10			;*TSON HOULD SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	STOP
+	CAME	7,[-1]			;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	10,[77543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT TSON SKIPS THE NEXT SEQUENTIAL INSTRUCTION
+;IF AND ONLY IF NOT ALL BITS IN THE AC CORRESPONDING TO 1'S IN
+;C(E) WITH BOTH HALVES SWAPPED ARE ZERO.  THESE MASKED
+;AC BITS ARE THEN CHANGED TO ONES.
+;IN THIS CASE, C(AC)=123456,,701234 AND C(E)=076543,,654321
+;HENCE, TSON SHOULD NOT SKIP AND THE RESULT IN AC
+;SHOULD BE -1,,-1  C(E) IS NOT AFFECTED
+
+C76210:	MOVE	6,[123456,,701234]	;PRELOAD AC WITH 123456,,701234
+	MOVE	7,[76543,,654321]	;PRELOAD E WITH 076543MM654321
+	TSON	6,7			;*TSON SHOULD NOT SKIP AND
+					;PLACE -1,,-1 INTO THE AC
+	SKIPA				;PASS IF TSON DOES NOT SKIP
+	STOP
+	CAME	6,[-1]			;PASS IF C(AC)-=1,,-1
+	STOP
+	CAME	7,[76543,,654321]	;PASS IF C(E) UNCHANGED
+	STOP
+
+;**********
+	JRST	BEGEND
diff --git a/apps/pdp10/diags/klad/dakaf/README.md b/apps/pdp10/diags/klad/dakaf/README.md
new file mode 100644
index 000000000..7cbbc5b55
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakaf/README.md
@@ -0,0 +1,276 @@
+---
+layout: page
+title: PDP-10 KA10 Basic Instruction Diagnostic #6
+permalink: /apps/pdp10/diags/klad/dakaf/
+machines:
+  - id: testka10
+    type: pdp10
+    config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
+    debugger: true
+    commands: a 30724 DAKAF.MAC
+---
+
+PDP-10 KA10 Basic Instruction Diagnostic #6
+-------------------------------------------
+
+The *PDP-10 KA10 Basic Instruction Diagnostic #6* (MAINDEC-10-DAKAF) test code has been extracted from
+[DAKAFM.MAC](DAKAFM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakafm.mac.html)]
+for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
+
+Resources for this test include:
+
+- [Instructions](#dakaftxt)
+- [History](#dakafhst)
+- [Source Code](#dakafmac)
+- [MACRO-10 Listing](DAKAF.LST.txt)
+- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakaf/DAKAF.SEQ.txt)
+
+{% include machine.html id="testka10" %}
+
+The Debugger's assemble ("a") command can be used to test the new built-in
+[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset
+of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
+This command:
+
+	a 30724 DAKAF.MAC
+
+will automatically read the [DAKAF.MAC](DAKAF.MAC.txt) source file (a slightly modified copy of [DAKAFM.MAC](DAKAFM.MAC.txt)),
+assemble it, and then load the binary output at the specified address.
+
+---
+
+DAKAF.TXT
+---------
+
+```
+MAINDEC-10-DAKAF.TXT
+
+
+
+
+
+
+			IDENTIFICATION
+			--------------
+
+	PRODUCT CODE:   MAINDEC-10-DAKAF-B-D
+
+	PRODUCT NAME:   DECSYSTEM10 PDP-10 KA10 BASIC
+	                INSTRUCTION DIAGNOSTIC (6)
+
+	FUNCTION:       BOOLE, HWT, TEST
+
+	VERSION:        0.2
+
+	DATE RELEASED:  JANUARY 1977
+
+	MAINTAINED BY:  DIAGNOSTIC ENGINEERING GROUP
+
+	AUTHOR:         JOHN R. KIRCHOFF
+
+COPYRIGHT(C) 1976,1977
+DIGITAL EQUIPMENT CORPORATION
+MARLBORO, MASS. 01752
+
+THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
+ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
+THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,
+OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
+MADE AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM
+AND TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE TO AND
+OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
+
+THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
+NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
+EQUIPMENT CORPORATION.
+
+DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
+SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
+
+							MAINDEC-10-DAKAF.TXT
+							PAGE 2
+
+
+			TABLE OF CONTENTS
+			-----------------
+
+1.0	ABSTRACT
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+2.2	STORAGE
+
+2.3	PRELIMINARY PROGRAMS
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+3.2	STARTING PROCEDURE
+
+3.3	OPERATING PROCEDURE
+
+4.0	ERRORS
+
+5.0	ITERATION COUNTER
+
+6.0	CYCLE TIME
+
+7.0	OPERATIONAL VARIATIONS
+
+8.0	MISCELLANEOUS
+
+9.0	LISTING
+
+							MAINDEC-10-DAKAF.TXT
+							PAGE 3
+
+
+1.0	ABSTRACT
+
+	THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
+	SIXTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
+	THE DIAGNOSTIC TESTS THE BOOLE, HWT AND TEST INSTRUCTIONS.
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+	A PDP-10 KA10 WITH A MINIMUM OF 32K OF MEMORY
+
+	PAPER TAPE READER  
+	DECTAPE (OPTIONAL)
+	CONSOLE TELETYPE
+
+2.2	STORAGE
+
+	THE PROGRAM RUNS WITHIN 32K OF MEMORY.
+
+2.3	PRELIMINARY PROGRAMS
+
+	CONSOLE FUNCTIONS WORKING PROPERLY
+	PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY  
+	PREVIOUS PROCESSOR DIAGNOSTICS
+	
+							MAINDEC-10-DAKAF.TXT
+							PAGE 4
+
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+	PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
+	DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)
+
+3.2	STARTING PROCEDURE
+
+	STAND-ALONE STARTING ADDRESS IS 30000.
+
+	IF THE DIAGNOSTIC FAILS TO START CORRECTLY TRY STARTING AT THE
+	FIRST TEST INSTEAD OF AT THE BEGINNING OF THE CONTROL SEQUENCE.
+	(SEE LISTING).
+
+3.3	OPERATING PROCEDURE
+
+	ONCE STARTED THE PROGRAM WILL CYCLE CONTINUALLY UNTIL STOPPED
+	OR AN ERROR OCCURS.
+
+4.0	ERRORS
+
+	ERRORS ARE IN THE FORM OF HALT INSTRUCTIONS.  THE LISTING
+	SHOULD BE CONSULTED TO DETERMINE THE CAUSE OF THE ERROR.  A
+	NO OPERATION (JUMP) INSTRUCTION FOLLOWS EACH HALT.  THIS
+	MAY BE USEFUL IN CONSTRUCTING A SCOPE LOOP TO CYCLE ON THE
+	FAILING INSTRUCTION.
+
+5.0	ITERATION COUNTER
+
+	THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEM-
+	ORY INDICATORS (MI).  THIS COUNT IS A DECREMENTING COUNT AND
+	INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.
+
+6.0	CYCLE TIME
+
+	THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND
+	IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS, ETC.
+
+							MAINDEC-10-DAKAF.TXT
+							PAGE 5
+
+
+7.0	OPERATIONAL VARIATIONS
+
+	A.  DIAGNOSTIC MONITOR
+
+	    THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PRO-
+	    VIDE RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PRO-
+	    VIDE A QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR
+	    AREA OF THE PROCESSOR.  CERTAIN PROCEDURES ARE USED WHEN
+	    THE PROGRAM IS USED IN THIS MANNER.  THEY ARE:
+
+	    1.  THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PRO-
+		GRAM AND STARTS IT AT LOCATION 30002.
+
+	    2.  MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MON-
+		ITOR CONTROL FLAG WORD.
+
+	B.  USER MODE
+
+	    THE PROGRAM WILL OPERATE IN USER MODE AND AS SUCH PROVIDES
+	    ASSURANCE THAT THE PROCESSOR IS PERFORMING ALL FUNCTIONS
+	    CORRECTLY.  USER MODE STARTING ADDRESS IS 30000.
+
+	C.  SYSTEM EXERCISER
+
+	    STARTING ADDRESS IS 30003.  NO DATA SWITCHES ARE USED BY
+	    THIS PROGRAM.
+
+8.0	MISCELLANEOUS
+
+	NONE
+
+9.0	LISTING
+```
+
+DAKAF.HST
+---------
+
+	    THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAF
+	
+	************************************************************************
+	
+	PRODUCT CODE:       MAINDEC-10-DAKAF
+	
+	PRODUCT NAME:       BASIC INSTRUCTION DIAGNOSTIC #6
+	
+	DATE RELEASED:      JANUARY 1977
+	
+	VERSION:            0.2
+	
+	UPDATE AUTHOR:      JOHN R. KIRCHOFF
+	
+	CHANGES MADE:
+	
+	    1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE.
+	
+	************************************************************************
+	
+	ORIGINAL VERSION:   0.1
+	
+	ORIGINAL AUTHOR:    RICHARD MALISKA
+	
+	ORIGINAL RELEASE:   16-MAR-72
+	
+	************************************************************************
+
+DAKAF.MAC
+---------
+
+[[Download](DAKAF.MAC.txt)]
+ 
+{% highlight text %}
+{% include_relative DAKAF.MAC.txt %}
+{% endhighlight %}
diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js
index 141a96758..db3b5bd69 100644
--- a/modules/pdp10/lib/debugger.js
+++ b/modules/pdp10/lib/debugger.js
@@ -2637,7 +2637,7 @@ class DebuggerPDP10 extends Debugger {
         }
 
         var sOptions = asArgs[0].substr(1);
-        var match = sOpcode.match(/^(['"]?)(.*\.mac|.*\.html)\1$/i);
+        var match = sOpcode.match(/^(['"]?)(.*\.mac|.*\.html|.*\.txt)\1$/i);
         if (match) {
             var dbg = this;
             if (this.macro10) {

From c045e78395e544df677f1415a5f84e12a454e33c Mon Sep 17 00:00:00 2001
From: Jeff 
Date: Wed, 29 Mar 2017 13:26:23 -0700
Subject: [PATCH 13/27] Added the DAKAG PDP-10 diagnostics, implemented PUSHJ
 and POPJ instructions, and improved the debugging of XCT sequences

---
 apps/pdp10/diags/klad/dakag/DAKAG.LST.txt  | 3126 ++++++++++++++++++++
 apps/pdp10/diags/klad/dakag/DAKAG.MAC.txt  | 1290 ++++++++
 apps/pdp10/diags/klad/dakag/DAKAGM.MAC.txt | 1255 ++++++++
 apps/pdp10/diags/klad/dakag/README.md      |  278 ++
 modules/pdp10/lib/cpuops.js                |   66 +-
 modules/pdp10/lib/cpustate.js              |   14 +
 modules/pdp10/lib/debugger.js              |    4 +-
 versions/pdpjs/1.34.3/pdp10-dbg.js         |  268 +-
 versions/pdpjs/1.34.3/pdp10.js             |  203 +-
 9 files changed, 6252 insertions(+), 252 deletions(-)
 create mode 100644 apps/pdp10/diags/klad/dakag/DAKAG.LST.txt
 create mode 100644 apps/pdp10/diags/klad/dakag/DAKAG.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakag/DAKAGM.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakag/README.md

diff --git a/apps/pdp10/diags/klad/dakag/DAKAG.LST.txt b/apps/pdp10/diags/klad/dakag/DAKAG.LST.txt
new file mode 100644
index 000000000..3321ddaca
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakag/DAKAG.LST.txt
@@ -0,0 +1,3126 @@
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 1
+DAKAGT	MAC	19-JAN-77 16:54		DIAGNOSTIC PARAMETERS                                                              SEQ 0007
+
+     1					;DAKAG
+     2
+     3
+     4
+     5			000002			DECVER==2
+     6			000000			MCNVER==0
+     7
+     8						XLIST
+     9						LIST
+    10						LALL
+    11						NAME	\MCNVER,\DECVER^
+    12
+    13					TITLE	DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2
+    14					^
+    15
+    16					;TEST DESIGNED FOR INITIAL DEBUGGING OF PROCESSOR HARDWARE
+    17					;AND TO DETECT (SOLID) FAILURES IN THE FIELD.
+    18
+    19					;COPYRIGHT 1972,1977
+    20					;DIGITAL EQUIPMENT CORPORATION
+    21					;MARLBORO, MASS. 01752
+    22
+    23					;JOHN R. KIRCHOFF
+    24					;DICK MALISKA
+    25
+    26	000137					LOC	137
+    27	000137	000000	000002			MCNVER,,DECVER
+    28
+    29						NOSYM
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 2
+DAKAGT	MAC	19-JAN-77 16:54		DIAGNOSTIC PARAMETERS                                                              SEQ 0008
+
+    30					SUBTTL	DIAGNOSTIC PARAMETERS
+    31
+    32					;PARAMETER DEFINITIONS
+    33			000001		EXCASB==1
+    34			000001		USRASB==1
+    35			000001		PGMEND==1
+    36			000100		DEBUG==100
+    37
+    38					;FLAG DEFINITIONS
+    39			010000		USERF=10000		;USER MODE FLAG
+    40
+    41
+    42					;MACROS
+    43
+    44					;SPECIAL FEATURE PARAMETERS
+    45
+    46			030712		SADR1=START
+    47			030712		SADR2=START
+    48			030712		SADR3=START
+    49			030712		SADR4=START
+    50		254000	030712		SADR5=JRST START
+    51		254000	030712		SADR6=JRST START
+    52		254000	030712		SADR7=JRST START
+    53		254000	030712		SADR8=JRST START
+    54		254000	030712		SADR9=JRST START
+    55		254000	030712		SADR10=JRST START
+    56		254000	030712		SADR11=JRST START
+    57
+    58			000000		PAREA0=0
+    59			000000		PAREA1=0
+    60			000000		PAREA2=0
+    61		444153	414700		PAREA3=SIXBIT/DAKAG/
+    62		645560	000000		PAREA4=SIXBIT/TMP/
+    63			000000		PAREA5=0
+    64			000000		PAREA6=0
+    65			001000		ITERAT==1000
+    66			000001		PGMEND==1
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 3
+DAKAGT	MAC	19-JAN-77 16:54		DIAGNOSTIC PARAMETERS                                                              SEQ 0009
+
+    67					SUBTTL	DIAGNOSTIC PARAMETERS
+    68
+    69					;ACCUMULATOR ASSIGNMENTS
+    70
+    71					;CONTROL WORDS
+    72
+    73			400000		AROV=400000		;ARITHMETIC OVERFLOW
+    74			200000		CRY0=200000		;CARRY 0
+    75			100000		CRY1=100000		;CARRY 1
+    76			040000		FOV=40000		;FLOATING OVERFLOW
+    77			020000		BIS=20000		;BYTE INTERRUPT
+    78			010000		USERF=10000		;USER MODE FLAG
+    79			004000		EXIOT=4000		;USER PRIV I/O FLAG
+    80			000100		FXU=100			;FLOATING UNDERFLOW
+    81			000040		DCK=40			;DIVIDE CHECK
+    82
+    83
+    84					;MACROS
+    85
+    86					; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1)
+    87					;	 TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION
+    88
+    89					DEFINE	STOP	(A)<
+    90						HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+    91						JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+    92									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+    93									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+    94									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1>
+    95
+    96					; SFLAG - USED TO CLEAR ALL FLAGS THEN TO SET REQUESTED FLAG
+    97
+    98					DEFINE	SFLAG	(A)<
+    99						MOVSI	1,A
+   100						JFCL	17,.+1		;RESET ALL FLAGS
+   101						JRST	2,.+1(1)	;SET A FLAG>
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 1
+PARAM	KLM	18-JAN-77 11:38		*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977                               SEQ 0010
+
+   102					SUBTTL	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977
+   103
+   104					DEFINE	S,<;*********************************************************************>
+   105
+   106					S^;*********************************************************************^
+   107					;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
+   108					;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
+   109					;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS
+   110					S^;*********************************************************************^
+   111
+   112			400000		ABORT==	400000			;ABORT PROGRAM ON PASS COMPLETION
+   113			200000		RSTART==200000			;RESTART TEST, PRINT TOTALS
+   114			100000		TOTALS==100000			;PRINT TOTALS, CONTINUE
+   115
+   116			040000		NOPNT==	040000			;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED)
+   117			020000		PNTLPT==020000			;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE)
+   118			010000		DING==	010000			;RING BELL ON ERROR
+   119
+   120			004000		LOOPER==004000			;ENTER EXERCISE/CHECK LOOP ON ERROR
+   121			002000		ERSTOP==002000			;HALT ON TEST ERROR
+   122			001000		PALERS==001000			;PRINT ALL ERRORS
+   123
+   124			000400		RELIAB==000400			;RELIABILITY MODE
+   125			000200		TXTINH==000200			;INHIBIT ERROR TEXT
+   126			000100		INHPAG==000100			;INHIBIT PAGING
+   127
+   128			000040		MODDVC==000040			;MODIFY DEVICE CODE
+   129			000020		INHCSH==000020			;INHIBIT CACHE
+   130			000010		OPRSEL==000010			;OPERATOR SELECTION
+   131
+   132			000004		CHAIN==	000004			;CHAIN CONTROL SWITCH
+   133
+   134			000002		KAHZ50==000002			;KA10 50 HERTZ POWER
+   135
+   136									;SWITCH 17 RESERVED !!!
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 2
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0011
+
+   137					SUBTTL	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977
+   138
+   139					S^;*********************************************************************^
+   140					;*SPECIAL SUBPROGRAM LINKAGES
+   141					S^;*********************************************************************^
+   142
+   143			027772		FSELNK=	27772	;FILE SELECT LINK
+   144			027773		FRDLNK=	27773	;FILE READ LINK
+   145			027774		LDLNK=	27774	;LOAD LINKAGE ADDRESS
+   146			027775		DDTLNK=	27775	;DDT LINKAGE ADDRESS
+   147			027776		MODLNK=	27776	;OPERATIONAL MODE CHECK LINKAGE ADDRESS
+   148			027777		SUBLNK=	27777	;SUBROUTINE LINKAGE ADDRESS
+   149
+   150					S^;*********************************************************************^
+   151					;*SPECIAL SUBROUTINE FATAL HALTS
+   152					;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE
+   153					S^;*********************************************************************^
+   154
+   155					;ADDRESS   TAG	REASON
+   156					;---------------------
+   157
+   158					; 1010 	NOEXEC	;PROGRAM NOT CODED FOR EXEC MODE OPERATION
+   159					; 1011  PLERR	;FATAL PUSH LIST POINTER ERROR
+   160					; 1012  PLERR1	;INITIAL PUSH LIST POINTER ERROR
+   161					; 1013  MUOERR	;MUUO WITH LUUO HANDLER WIPED OUT
+   162					; 1014  DTEBER	;DTE20 INTERRUPT WITHOUT DOORBELL
+   163					; 1015  DTECER	;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET
+   164					; 1016  CPIERR	;CPU INITIALIZATION ERROR
+   165					; 1017  EOPERR	;END OF PROGRAM ERROR
+   166					; 1020  LUOERR	;INTERRUPT WITH LUUO HANDLER WIPED OUT
+   167
+   168					S^;*********************************************************************^
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 3
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0012
+
+   169					S^;*********************************************************************^
+   170					;OPERATOR DEFINITIONS (NON-UUO'S)
+   171					S^;*********************************************************************^
+   172
+   173		260740	000000		OPDEF	GO	[PUSHJ	P,]	;SUBROUTINE CALL
+   174		263740	000000		OPDEF	RTN	[POPJ	P,]	;SUBROUTINE RETURN
+   175		261740	000000		OPDEF	PUT	[PUSH	P,]	;PUT DATA ON PUSH LIST
+   176		262740	000000		OPDEF	GET	[POP	P,]	;GET DATA FROM PUSH LIST
+   177		254000	000000		OPDEF	PJRST	[JRST	]	;JRST TO ROUTINE THAT RTN'S
+   178		254200	000000		OPDEF	HALT	[JRST	4,]	;DEFINITION FOR DDT
+   179		254100	000000		OPDEF	JRSTF	[JRST	2,]	;DEFINITION FOR DDT
+   180		254500	000000		OPDEF	JEN	[JRST	12,]	;DEFINITION FOR DDT
+   181
+   182					S^;*********************************************************************^
+   183					;*SUBROUTINE INITIALIZATION CALL
+   184					S^;*********************************************************************^
+   185
+   186		265000	030011		OPDEF	PGMINT	[JSP	0,SBINIT]	;SUBROUTINE INITIALIZATION
+   187
+   188					S^;*********************************************************************^
+   189					;*HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION).
+   190					S^;*********************************************************************^
+   191
+   192		037640	000004		OPDEF	FATAL	[37B8!15B12!4]	;FATAL PROGRAMMING HALT
+   193		037600	000004		OPDEF	ERRHLT	[37B8!14B12!4]	;PROGRAM ERROR HALT
+   194
+   195					S^;*********************************************************************^
+   196					;*TERMINAL INPUT UUO'S
+   197					;*ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE
+   198					;*CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE.
+   199					S^;*********************************************************************^
+   200
+   201		037000	000003		OPDEF	TTICHR 	[37B8!0B12!3]	;TTY, INPUT ANY CHARACTER
+   202		037040	000003		OPDEF	TTIYES	[37B8!1B12!3]	;TTY, NORMAL RETURN Y
+   203		037100	000003		OPDEF	TTINO	[37B8!2B12!3]	;TTY, NORMAL RETURN N
+   204		037140	000003		OPDEF	TTIOCT	[37B8!3B12!3]	;TTY, INPUT OCTAL WORD
+   205		037200	000003		OPDEF	TTIDEC	[37B8!4B12!3]	;TTY, INPUT DECIMAL WORD
+   206		037240	000003		OPDEF	TTICNV	[37B8!5B12!3]	;TTY, INPUT CONVERTABLE WORD
+   207		037300	000003		OPDEF	TTLOOK	[37B8!6B12!3]	;TTY, KEYBOARD CHECK
+   208		037340	000003		OPDEF	TTALTM	[37B8!7B12!3]	;TTY, ALT-MODE CHECK
+   209		037400	000003		OPDEF	TTSIXB	[37B8!10B12!3]	;TTY, INPUT SIXBIT WORD
+   210		037440	000003		OPDEF	TTYINP	[37B8!11B12!3]	;TTY, IMAGE MODE INPUT
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 4
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0013
+
+   211					;*TERMINAL OUTPUT UUO'S.
+   212
+   213		037000	000000		OPDEF	PNTA	[37B8!0B12!0]	;PRINT ASCII WORD
+   214		037000	000001		OPDEF	PNTAF	[37B8!0B12!1]	;PRINT ASCII WORD FORCED
+   215		037740	000000		OPDEF	PNTAL	[37B8!17B12!0]	;PRINT ASCIZ LINE
+   216		037740	000001		OPDEF	PNTALF	[37B8!17B12!1]	;PRINT ASCIZ LINE FORCED
+   217		037600	000003		OPDEF	PSIXL	[37B8!14B12!3]	;PRINT SIXBIT'Z LINE
+   218		037640	000003		OPDEF	PSIXLF	[37B8!15B12!3]	;PRINT SIXBIT'Z LINE FORCED
+   219		037000	000000		OPDEF	PNTMSG	[37B8!0B12!0]	;PRINT MESSAGE IMMEDIATE
+   220		037040	000000		OPDEF	PNTMSF	[37B8!1B12!0]	;PRINT MESSAGE IMMEDIATE FORCED
+   221		037100	000000		OPDEF	PSIXM	[37B8!2B12!0]	;PRINT SIXBIT'Z MSG IMMEDIATE
+   222		037200	000000		OPDEF	PSIXMF	[37B8!4B12!0]	;PRINT SIXBIT'Z MSG IMM FORCED
+   223		037000	000000		OPDEF	PNTCI	[37B8!0B12!0]	;PRINT CHARACTER IMMEDIATE
+   224		037040	000000		OPDEF	PNTCIF	[37B8!1B12!0]	;PRINT CHARACTER IMMEDIATE FORCED
+   225		037500	000000		OPDEF	PNTCHR	[37B8!12B12!0]	;PRINT CHARACTER
+   226		037500	000001		OPDEF	PNTCHF	[37B8!12B12!1]	;PRINT CHARACTER FORCED
+   227		037040	000000		OPDEF	PNT1	[37B8!1B12!0]	;PRINT ONE OCTAL DIGIT
+   228		037040	000001		OPDEF	PNT1F	[37B8!1B12!1]	;PRINT 1 OCTAL DIGIT FORCED
+   229		037100	000000		OPDEF	PNT2	[37B8!2B12!0]	;PRINT TWO OCTAL DIGITS
+   230		037100	000001		OPDEF	PNT2F	[37B8!2B12!1]	;PRINT 2 OCTAL DIGITS FORCED
+   231		037140	000000		OPDEF	PNT3	[37B8!3B12!0]	;PRINT THREE OCTAL DIGITS
+   232		037140	000001		OPDEF	PNT3F	[37B8!3B12!1]	;PRINT THREE OCTAL DIGITS FORCED
+   233		037200	000000		OPDEF	PNT4	[37B8!4B12!0]	;PRINT FOUR OCTAL DIGITS
+   234		037200	000001		OPDEF	PNT4F	[37B8!4B12!1]	;PRINT FOUR OCTAL DIGITS FORCED
+   235		037240	000000		OPDEF	PNT5	[37B8!5B12!0]	;PRINT FIVE OCTAL DIGITS
+   236		037240	000001		OPDEF	PNT5F	[37B8!5B12!1]	;PRINT FIVE OCTAL DIGITS FORCED
+   237		037300	000000		OPDEF	PNT6	[37B8!6B12!0]	;PRINT SIX OCTAL DIGITS
+   238		037300	000001		OPDEF	PNT6F	[37B8!6B12!1]	;PRINT SIX OCTAL DIGITS FORCED
+   239		037340	000000		OPDEF	PNT7	[37B8!7B12!0]	;PRINT 7 OCTAL DIGITS
+   240		037340	000001		OPDEF	PNT7F	[37B8!7B12!1]	;PRINT 7 OCTAL DIGITS FORCED
+   241		037440	000000		OPDEF	PNT11	[37B8!11B12!0]	;PRINT 11 OCTAL DIGITS
+   242		037440	000001		OPDEF	PNT11F	[37B8!11B12!1]	;PRINT 11 OCTAL DIGITS FORCED.
+   243		037400	000000		OPDEF	PNTADR	[37B8!10B12!0]	;PRINT PHYSICAL ADDRESS
+   244		037400	000001		OPDEF	PNTADF	[37B8!10B12!1]	;PRINT PHYSICAL ADDRESS FORCED
+   245		037600	000000		OPDEF	PNTOCT  [37B8!14B12!0]	;PRINT FULL WORD OCTAL
+   246		037600	000001		OPDEF	PNTOTF	[37B8!14B12!1]	;PRINT FULL WORD OCTAL FORCED
+   247		037540	000000		OPDEF	PNTHW	[37B8!13B12!0]	;PRINT OCTAL HALF WORDS, 6 SP 6
+   248		037540	000001		OPDEF	PNTHWF	[37B8!13B12!1]	;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED
+   249		037700	000003		OPDEF	PNTOCS	[37B8!16B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S
+   250		037740	000003		OPDEF	PNTOCF	[37B8!17B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED
+   251		037640	000000		OPDEF	PNTDEC	[37B8!15B12!0]	;PRINT DECIMAL, SUPRESS LEADING 0'S
+   252		037640	000001		OPDEF	PNTDCF	[37B8!15B12!1]	;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED
+   253		037700	000000		OPDEF	PNTDS	[37B8!16B12!0]	;PRINT DECIMAL, SPACES FOR LD 0'S
+   254		037700	000001		OPDEF	PNTDSF	[37B8!16B12!1]	;PRINT DECIMAL, SPACES FOR LD 0'S FORCED
+   255		037200	000002		OPDEF	PNTNM	[37B8!4B12!2]	;PRINT PROGRAM NAME
+   256		037000	000002		OPDEF	PNTSIX	[37B8!0B12!2]	;PRINT SIXBIT WORD
+   257		037040	000002		OPDEF	PNTSXF	[37B8!1B12!2]	;PRINT SIXBIT WORD FORCED
+   258		037240	000002		OPDEF	DROPDV	[37B8!5B12!2]	;CLOSE LOGICAL FILE, USER MODE
+   259		037100	000002		OPDEF	PNTCW	[37B8!2B12!2]	;PRINT DF10 CONTROL WORD
+   260		037140	000002		OPDEF	PNTCWF	[37B8!3B12!2]	;PRINT DF10 CONTROL WORD FORCED
+   261		037000	030242		OPDEF	PCRL	[37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED
+   262		037040	030242		OPDEF	PCRLF	[37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED
+   263		037000	000040		OPDEF	PSP	[37B8!0B12!40]	;PRINT SPACE
+   264		037040	000040		OPDEF	PSPF	[37B8!1B12!40]	;PRINT SPACE FORCED
+   265		037000	030243		OPDEF	PCRL2	[37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE)
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 4-1
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0014
+
+   266		037040	030243		OPDEF	PCRL2F	[37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED
+   267		037040	000007		OPDEF	PBELL	[37B8!1B12!7]	;PRINT TTY BELL
+   268
+   269		037040	000026		OPDEF	PFORCE	[37B8!1B12!26]	;PRINT FORCE, CONTROL O OVERRIDE
+   270
+   271					DEFINE	PMSG	(ARG),<
+   272						PSIXM	[SIXBIT\ARG'_\]>
+   273
+   274					DEFINE	PMSGF	(ARG),<
+   275						PSIXMF	[SIXBIT\ARG'_\]>
+   276
+   277					;*SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING
+   278					;*	CONSERVES CORE OVER ASCIZ
+   279
+   280					DEFINE	SIXBTZ	(ARG),<	[SIXBIT\ARG'_\]>
+   281
+   282					;*CONSOLE SWITCH INPUT UUO.
+   283					;*READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF
+   284					;* USER MODE.
+   285
+   286		037400	000002		OPDEF	SWITCH	[37B8!10B12!2]	;INPUT CONSOLE SWITCHES
+   287
+   288					;*CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION
+   289					;*EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR.
+   290
+   291		037540	000004		OPDEF	CLOKOP	[37B8!13B12!4]	;CLOCK OPERATION UUO - PDP-11 CLOCK
+   292		037200	000004		OPDEF	MTROP	[37B8!4B12!4]	;CLOCK OPERATION UUO - DK20 METER
+   293
+   294					;*KL10 ONLY CACHE OPERATION UUO'S
+   295
+   296		037040	000004		OPDEF	CINVAL	[37B8!1B12!4]	;CACHE INVALIDATE
+   297		037100	000004		OPDEF	CFLUSH	[37B8!2B12!4]	;CACHE FLUSH
+   298		037140	000004		OPDEF	CWRTBI	[37B8!3B12!4]	;CACHE WRITE-BACK & INVALIDATE
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 5
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0015
+
+   299					;*END OF PASS/PROGRAM UUOS
+   300
+   301					;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT,
+   302					;*DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC.
+   303
+   304		037500	000004		OPDEF	ENDUUO	[37B8!12B12!4]	;UUO TO DISPLAY LIGHTS
+   305		037700	000004		OPDEF	EOPUUO	[37B8!16B12!4]	;END OF PROGRAM UUO
+   306
+   307					;*MEMORY MANAGEMENT UUO'S
+   308					;*UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING,
+   309					;*ADDRESS CONVERSION, ETC...
+   310
+   311		037000	000004		OPDEF	MAPMEM	[37B8!0B12!4]	;MAP MEMORY
+   312		037500	000002		OPDEF	MEMZRO	[37B8!12B12!2]	;ZERO MEMORY
+   313		037440	000002		OPDEF	MEMSEG	[37B8!11B12!2]	;SETUP MEMORY SEGMENT
+   314		037540	000002		OPDEF	MAPADR	[37B8!13B12!2]	;VIRTUAL TO PHYSICAL ADR CONVERT
+   315		037640	000002		OPDEF	MAPCNK	[37B8!15B12!2]	;MAP MEMORY CHUNK
+   316		037600	000002		OPDEF	MAPSET	[37B8!14B12!2]	;SET KI10 EXEC PAGE MAP
+   317		037740	000002		OPDEF	MAPPNT	[37B8!17B12!2]	;PRINT MEMORY MAP
+   318
+   319					;*DEVICE CODE MODIFICATION UUO
+   320					;*ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO
+   321					;*IOT'S TO A DIFFERENT DEVICE CODE.
+   322
+   323		037340	000002		OPDEF	MODPCU	[37B8!7B12!2]	;MODIFY PERHIPERAL CODE, USER
+   324		037300	000002		OPDEF	MODPCP	[37B8!6B12!2]	;MODIFY PERHIPERAL CODE, PROGRAM
+   325
+   326			030000			IFNDEF	MODDVL,
+   327			030000			IFNDEF	MODDVU,
+   328
+   329					;*"DIAMON" FILE SELECTION AND READ UUOS
+   330
+   331		037240	000004		OPDEF	FSELECT	[37B8!5B12!4]	;FILE SELECTION
+   332		037300	000004		OPDEF	FREAD	[37B8!6B12!4]	;FILE READ - ASCII DATA
+   333		037340	000004		OPDEF	FRD36	[37B8!7B12!4]	;FILE READ - 36 BIT DATA
+   334		037400	000004		OPDEF	FRD8	[37B8!10B12!4]	;FILE READ - 8 BIT DATA
+   335
+   336					;*KI10 ONLY UUO FOR PRINTING MARGIN VALUES
+   337
+   338		037700	000002		OPDEF	PNTMGN	[37B8!16B12!2]	;PRINT MARGIN VALUE
+   339
+   340						XLIST
+   341					IFNDEF	KLOLD,
+   367
+   368					;*A MACRO TO REPORT AN ERROR AND NOT LOOP
+   369
+   370						DEFINE	ERROR1	(FORMAT,CORECT,ACTUAL,F,D,ERR)<
+   371						SALL
+   372						ERUUO	FORMAT,[T,,[SIXBIT\F'_\]
+   373							   CORECT,,ACTUAL
+   374							   [SIXBIT\D'_\],,ERR]
+   375						XALL	>
+   376
+   377					>;END OF KLOLD CONDITIONAL
+   378
+   379						XLIST
+   380						LIST
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 1
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0017
+
+   381					SUBTTL	*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977
+   382
+   383	030000					LOC	30000
+   384
+   385					S^;*********************************************************************^
+   386					;*PROGRAM STARTING ADDRESSES
+   387					;*THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS
+   388					;*NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE
+   389					;*OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER
+   390					;*MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS.
+   391					S^;*********************************************************************^
+   392
+   393	030000	254 00 1 00 027776 	BEGIN:	JRST	@MODLNK		;STAND-ALONE START
+   394	030001	254 00 0 00 030712 	$START:	JRST	START		;MODE CHECK STARTING ADDRESS
+   395
+   396	030002	254 00 1 00 027774 	DIAGMN:	JRST	@LDLNK		;DIAGNOSTIC MONITOR START
+   397
+   398	030003	254 00 1 00 027774 	SYSEXR:	JRST	@LDLNK		;SYSTEM EXERCISER START
+   399
+   400	030004	254 00 0 00 030712 	SFSTRT:	JRST	SADR1		;SPECIAL FEATURE START
+   401
+   402	030005	254 00 0 00 030712 	PFSTRT:	JRST	SADR2		;POWER FAIL RESTART
+   403
+   404	030006	254 00 0 00 030712 	REENTR:	JRST	SADR3		;REENTER START(USUALLY USER MODE ONLY)
+   405
+   406	030007				SRTDDT:				;COMMONLY MISTAKEN NAME FOR "DDTSRT"
+   407	030007	254 00 1 00 027775 	DDTSRT:	JRST	@DDTLNK		;DDT START
+   408
+   409	030010	254 00 0 00 030741 	BEGIN1:	JRST	STARTA		;LOOP START(END OF PASS COMES HERE)
+   410	030011	254 00 1 00 027777 	SBINIT:	JRST	@SUBLNK		;PMGINT LINKAGE
+   411	030012	000000	000000		RETURN:	0			;RETURN ADDRESS STORAGE
+   412
+   413	030013	254000	030712		START1:	SADR7			;OPTIONAL STARTING ADR/INSTRUCTIONS
+   414	030014	254000	030712		START2:	SADR8			; "
+   415	030015	254000	030712		START3:	SADR9			; "
+   416	030016	254000	030712		START4:	SADR10			; "
+   417	030017	254000	030712		START5:	SADR11			; "
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 2
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0018
+
+   418					S^;*********************************************************************^
+   419					;*PROGRAM FIXED PARAMETER AREA
+   420					S^;*********************************************************************^
+   421
+   422	030020	444153	414700		PNTNAM:	PAREA3		;SIXBIT PROGRAM NAME
+   423	030021	645560	000000		PNTEXT:	PAREA4		;SIXBIT PROGRAM EXTENSION
+   424	030022	000000	000000		RANDBS:	PAREA1		;RANDOM BASE NUMBER
+   425	030023	000000	000000		SWTEXR:	PAREA2		;SYSTEM EXERCISER SWITCHES
+   426	030024	000000	001000		ITRCNT:	ITERAT		;PROGRAM ITERATIONS
+   427	030025	000000	030725		$PNAME:	PGMNAM		;POINTER TO PROGRAMS NAME
+   428	030026	000000	000002		$PVER:	MCNVER,,DECVER	;MCN & DEC VERSION LEVEL
+   429	030027	000000	030000		$MODVL:	MODDVL		;DEVICE CODE CHANGE LOWER LIMIT
+   430	030030	000000	030000		$MODVU:	MODDVU		;DEVICE CODE CHANGE UPPER LIMIT
+   431	030031	777777	777777		$EMODE:	IFNDEF EXCASB,<0> IFDEF EXCASB,<-1>	;EXEC ALLOWED
+   432	030032	777777	777777		$UMODE:	IFNDEF USRASB,<0> IFDEF USRASB,<-1>	;USER ALLOWED
+   433	030033	000000	000000		$DSKUP:	IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1>	;DISK UPDATE MODE
+   434	030034	000000	000000		$MMAP:	IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1>	;ALLOW MEMORY RTNS
+   435	030035	000000	000000		PAREA7:	PAREA5		;OPTIONAL PARAMETER
+   436	030036	000000	000000		PAREA8:	PAREA6		;OPTIONAL PARAMETER
+   437
+   438					S^;*********************************************************************^
+   439					;*PROGRAM VARIABLE PARAMETER AREA
+   440					S^;*********************************************************************^
+   441
+   442	030037	000000	000000		USER:	0		; 0 = EXEC, -1 = USER MODE FLAG
+   443	030040	000000	000000		KAIFLG:	0		;PROCESSOR TYPE, 0 = KA10, -1 = KI10
+   444	030041	000000	000000		KLFLG:	0		;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10
+   445	030042	777777	777777		MONFLG:	-1		;DIAG MONITOR SPECIAL USER FLAG
+   446	030043	000000	000000		MONCTL:	0		;DIAG MON/SYS EXR FLAG
+   447	030044	000000	000000		MONTEN:	0		;-1= LOADED BY 10
+   448	030045	000000	000000		CLOCKF:	0		;CLOCK TICKED FLAG
+   449	030046	000000	000000		CONSW:	0		;CONSOLE SWITCH SETTINGS
+   450	030047	000000	000000		PASCNT:	0		;PROGRAM PASS COUNT
+   451	030050	000000	000000		RUNFLG:	0		;PROGRAM RUN FLAG
+   452	030051	000000	000000		TESTPC:	0		;SUBTEST PC
+   453	030052	000000	000000		ERRPC:	0		;ERROR PC
+   454	030053	000000	000000		ERRTLS:	0		;ERROR TOTALS
+   455	030054	000000	000000		TICKS:	0		;PROGRAM RUNNING TIME
+   456	030055	000000	000000		MARGIN:	0		;KI10 MARGIN WORD VALUE
+   457	030056	000000	000000		$ONETM:	0		;SUBROUTINE INITIALIZATION FLAG
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 3
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0019
+
+   458					S^;*********************************************************************^
+   459					;*SPECIAL PROGRAM DISPATCH ADDRESSES
+   460					S^;*********************************************************************^
+   461
+   462	030057	037 12 0 00 000004 	BEGEND:	ENDUUO		;END OF PASS
+   463	030060	254 00 0 00 030010 	$BEND1:	JRST	BEGIN1	;KEEP RUNNING PROGRAM
+   464	030061	037 16 0 00 000004 	$BEND2:	EOPUUO		;END OF PROGRAM - NO RETURN
+   465	030062	254000	030712		CNTLC:	SADR5		;CONTROL C XFER ADDRESS
+   466	030063	254000	030712		ALTMGO:	SADR6		;ALTMODE XFER ADDRESS
+   467	030064				CPOPJ1:			;SKIP RETURN
+   468	030064	350 00 0 17 000000 	UUOSKP:	AOS	(P)	;SKIP RETURN FROM UUO
+   469	030065				CPOPJ:			;NON-SKIP REGULAR RETURN
+   470	030065	263 17 0 00 000000 	UUOEXT:	RTN		;UUO RETURN
+   471	030066	255 00 0 00 000000 	UUORTN:	JFCL		;ADDITIONAL USERS UUO ROUTINE
+   472	030067	255 00 0 00 000000 	$UORTX:	JFCL		;ADDITIONAL UUO LINKAGE
+   473	030070	255 00 0 00 000000 	$UUOER:	JFCL		;INITED AS (JRST $UOERX)
+   474	030071	255 00 0 00 000000 	$ITRHL:	JFCL		;ADDITIONAL INTERRUPT LINKAGE
+   475	030072	255 00 0 00 000000 	$ITRX1:	JFCL		; "
+   476	030073	255 00 0 00 000000 	$USRHL:	JFCL		; "
+   477	030074	255 00 0 00 000000 	$RSRTX:	JFCL		;ADDITIONAL POWER FAIL LINKAGE
+   478	030075	255 00 0 00 000000 	$RSRTY:	JFCL		; "
+   479	030076	255 00 0 00 000000 	RESRT1:	JFCL		; INITED AS (JRST RESRTX)
+   480	030077	255 00 0 00 000000 	RESRT2:	JFCL		; "
+   481	030100	255 00 0 00 000000 	$PARER:	JFCL		;ADDITIONAL PARITY ERROR LINKAGE
+   482	030101	255 00 0 00 000000 	ERMORE:	JFCL		;ADDITIONAL ERROR HANDLER LINKAGE
+   483	030102	254 04 0 00 030102 		HALT	.	;IMPROPER TRANSFER HALT
+   484
+   485	030103	000000	000000		$PSHER:	0		;INITED AS (JRST PSHERR)
+   486	030104	000000	000000		ITRCH1:	0		;PC & FLAGS OF CURRENT INTERRUPT
+   487	030105	000000	000000			0		;INITED AS (JRST $ITRC1)
+   488
+   489					S^;*********************************************************************^
+   490					;*PROCESSOR CONTROL STORAGE
+   491					S^;*********************************************************************^
+   492
+   493	030106	000000	000000		$ACC0:	0		;INTERRUPT SAVED AC0
+   494	030107	000000	000000		$SVPI:	0		;INTERRUPT SAVED PI
+   495	030110	000000	000000		$SVAPR:	0		;INTERRUPT SAVED APR
+   496	030111	000000	000000		$SVPAG:	0		;INTERRUPT SAVED PAG (DATAI)
+   497	030112	000000	000000		$SPAG1:	0		;INTERRUPT SAVED PAG (CONI)
+   498
+   499	030113	000000	000000		$SVUUO:	0		;CURRENT USERS UUO
+   500	030114	000000	000000		$SVUPC:	0		;PC OF CURRENT USERS UUO
+   501
+   502	030115	000000	000000		REPTU:	0		;REPEAT UUO ITERATIONS
+   503	030116	000000	000000		SCOPE:	0		;ERROR HANDLER SCOPE LOOP FLAG
+   504	030117	000000	000000		%CORFLG:0		; " CORRECT FLAG
+   505	030120	000000	000000		%COREC:	0		; " CORRECT DATA
+   506	030121	000000	000000		%ACTFL:	0		; " ACTUAL FLAG
+   507	030122	000000	000000		%ACTUL:	0		; " ACTUAL DATA
+   508	030123	000000	000000		%DISCR:	0		; " DISCREPENCY DATA
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 4
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0020
+
+   509					S^;*********************************************************************^
+   510					;*UUO DISPATCH TABLE
+   511					S^;*********************************************************************^
+   512						XLIST
+   513						LIST
+   514	030124	030070	030070		UUODIS:	LUUO1,,$UUOER
+   515	030125	030070	030070			LUUO3,,LUUO2
+   516	030126	030070	030070			LUUO5,,LUUO4
+   517	030127	030070	030070			LUUO7,,LUUO6
+   518	030130	030070	030070			LUUO11,,LUUO10
+   519	030131	030070	030070			LUUO13,,LUUO12
+   520	030132	030070	030070			LUUO15,,LUUO14
+   521	030133	030070	030070			LUUO17,,LUUO16
+   522	030134	030070	030070			LUUO21,,LUUO20
+   523	030135	030070	030070			LUUO23,,LUUO22
+   524	030136	030070	030070			LUUO25,,LUUO24
+   525	030137	030070	030070			LUUO27,,LUUO26
+   526	030140	030070	030070			LUUO31,,LUUO30
+   527	030141	030070	030070			LUUO33,,LUUO32
+   528
+   529					S^;*********************************************************************^
+   530					;*MEMORY MANAGMENT STORAGE
+   531					S^;*********************************************************************^
+   532
+   533	030142	000000	000000		DF22F:	0		;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT
+   534	030143	000000	000000		MAPNEW:	0		;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING
+   535	030144	000000	000000		MEMTOT:	0		;TOTAL MEMORY SIZE IN K (1024.)
+   536	030145	000000	000000		MEMLOW:	0		;LOWEST USABLE MEMORY
+   537	030146				MEMSIZ:	BLOCK ^D41	;MEMORY SEGMENT POINTER TABLE
+   538
+   539					S^;*********************************************************************^
+   540					;*PRINT CONTROL STORAGE
+   541					S^;*********************************************************************^
+   542
+   543	030217	000000	000000		PNTFLG:	0		;PRINT FLAG, -1 WHILE IN PRINT ROUTINE
+   544	030220	000000	000000		PNTENB:	0		;PRINT ENABLE
+   545	030221	000000	000000		PDISF:	0		;PRINT DISABLED FLAG
+   546	030222	000000	000000		PNTINH:	0		;INHIBIT PRINT INPUT CHECKS
+   547	030223	000000	000000		PNTSPC:	0		;PRINT SPACE CONTROL
+   548	030224	000000	000000		OPTIME:	0		;TYPE-IN WAIT TIME
+   549	030225	000000	000000		$TWCNT:	0		;TIME WAITED
+   550	030226	000000	000000		$DVOFF:	0		;LOGICAL DEVICE INITED FLAG
+   551	030227	000000	000000		TTYFIL:	0		;TTY EXEC FILLERS FLAG
+   552	030230	000000	000000		TTYSPD:	0		;TTY EXEC BAUD RATE
+   553	030231	000000	000000		$TTCHR:	0		;ACTUAL TYPED IN CHAR
+   554	030232	000000	000000		$CHRIN:	0		;UPPER CASED & PARITY STRIPPED CHAR
+   555	030233	000000	000000		$TYPNB:	0		;TYPED IN NUMBER
+   556	030234	000000	000000		$CRLF:	0		;FREE CR/LF FLAG
+   557	030235	000000	000000		$TABF:	0		;TAB CONVERSION FLAG
+   558	030236	000000	000000		$FFF:	0		;FORM FEED CONVERSION FLAG
+   559	030237	000000	000000		$VTF:	0		;VERTICAL TAB CONVERSION FLAG
+   560	030240	000000	000000		USRLFF:	0		;USER LF FILLERS
+   561	030241	000000	000000		USRCRF:	0		;USER CR FILLERS
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 5
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0021
+
+   562					S^;*********************************************************************^
+   563					;*THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED
+   564					;*TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS:
+   565					;*	MOVEI	NAME
+   566					;*	PNTA		;OR PNTAF
+   567					S^;*********************************************************************^
+   568
+   569	030242				CRLF:	ASCII/
+   570	030242	015 012 000 000 000 	/
+   571	030243				CRLF2:	ASCII/
+   572
+   573	030243	015 012 015 012 000 	/
+   574	030244	054 000 000 000 000 	COMMA:	ASCII/,/
+   575	030245	056 000 000 000 000 	PERIOD:	ASCII/./
+   576	030246	040 000 000 000 000 	SPACE:	ASCII/ /
+   577	030247	011 000 000 000 000 	TAB:	ASCII/	/
+   578	030250				MINUS:
+   579	030250	055 000 000 000 000 	HYPEN:	ASCII/-/
+   580	030251	053 000 000 000 000 	PLUS:	ASCII/+/
+   581	030252	052 000 000 000 000 	AST:	ASCII/*/
+   582	030253	100 000 000 000 000 	ATSIN:	ASCII/@/
+   583	030254	050 000 000 000 000 	LFP:	ASCII/(/
+   584	030255	051 000 000 000 000 	RTP:	ASCII/)/
+   585	030256	007 0000000000 		BELL:	BYTE (7) 007
+   586	030257	077 000 000 000 000 	QUEST:	ASCII/?/
+   587	030260	057 000 000 000 000 	SLASH:	ASCII!/!
+   588	030261	044 000 000 000 000 	DOLLAR:	ASCII/$/
+   589	030262	000000	000012		RADIX:	^D10			;DECIMAL PRINT RADIX
+   590	030263	000000	000040		RADLSP:	40			;DECIMAL PRINT LEADING CHAR
+   591	030264	000000	000012		RADLSC:	^D10			;DECIMAL PRINT LEADING CHAR COUNT
+   592
+   593					S^;*********************************************************************^
+   594					;*USER MODE OUTPUT FILE INFORMATION
+   595					S^;*********************************************************************^
+   596
+   597	030265				$OBUF:	BLOCK	3		;LOGICAL FILE OUTPUT BUFFER HEADER
+   598	030270	60 62 51 56 64 00 	$OUTNM:	SIXBIT	/PRINT/		;FILE NAME
+   599	030271	60 56 64 00 00 00 	$OUTEX:	SIXBIT	/PNT/		;FILE NAME EXTENSION
+   600	030272					BLOCK	2
+   601
+   602					S^;*********************************************************************^
+   603					;*DISK UPDATE MODE FILE INFORMATION
+   604					S^;*********************************************************************^
+   605
+   606	030274				$IBUF:	BLOCK	3
+   607	030277	60 62 51 56 64 00 	$INNM:	SIXBIT	/PRINT/
+   608	030300	60 56 64 00 00 00 	$INEXT:	SIXBIT	/PNT/
+   609	030301					BLOCK	2
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 6
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0022
+
+   610					S^;*********************************************************************^
+   611					;*PUSHDOWN LIST CONTROL INFORMATION
+   612					S^;*********************************************************************^
+   613
+   614	030303	777577	030303		PLIST:	PLIST-PLISTE,,PLIST
+   615	030304				PLISTS:	BLOCK	200
+   616	030504	000000	000000		PLISTE:	0		;END OF PUSHDOWN LIST
+   617
+   618					S^;*********************************************************************^
+   619					;*POWER LINE CLOCK FREQUENCY FLAG
+   620					S^;*********************************************************************^
+   621
+   622	030505	000000	000000		CYCL60:	0	;0 = 60, -1 = 50 CYCLE
+   623
+   624					S^;*********************************************************************^
+   625					;*KL10 CACHE CONTROL FLAGS
+   626					S^;*********************************************************************^
+   627
+   628	030506	000000	000000		CSHFLG:	0	;ALLOW CACHE IF 0
+   629	030507	000000	000000		CSHMEM:	0	;CACHE MEMORY SEGMENTS IF 0
+   630
+   631					S^;*********************************************************************^
+   632					;*NUMBER INPUT DIGIT FLAG
+   633					S^;*********************************************************************^
+   634
+   635	030510	000000	000000		TTNBRF:	0	;-1 IF ANY DIGIT TYPED
+   636
+   637					S^;*********************************************************************^
+   638					;*KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION
+   639					S^;*********************************************************************^
+   640
+   641	030511	000000	000000		PVPAGI:	0	;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION
+   642
+   643					S^;*********************************************************************^
+   644					;*ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS
+   645					S^;*********************************************************************^
+   646
+   647	030512	000000	000000		%ERHI1:	0	;IF NON-ZERO, XCT'D AT START OF %ERUUO
+   648	030513	000000	000000		%ERHI2:	0	;IF NON-ZERO, XCT'D AT END OF %ERUUO
+   649	030514	000000	000000		%ERHI3:	0	;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO
+   650
+   651					S^;*********************************************************************^
+   652					;*SPECIAL USERS UUO INTERCEPT INSTRUCTION
+   653					S^;*********************************************************************^
+   654
+   655	030515	000000	000000		$$UUO:	0	;IF NON-ZERO, XCT'D AT START OF $UORTN
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 7
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0023
+
+   656					S^;*********************************************************************^
+   657					;*KL10 PROCESSOR TYPE FLAG, 0=P0, 1=BBD NEW, 2=BBD OLD
+   658					S^;*********************************************************************^
+   659
+   660	030516	000000	000000		KLTYP:	0
+   661
+   662					S^;*********************************************************************^
+   663					;*SPECIAL USERS MUUO INTERCEPT INSTRUCTION
+   664					S^;*********************************************************************^
+   665
+   666	030517	000000	000000		$$MUUO:	0	;IF NON-ZERO, XCT'D AT START OF MUUOER
+   667
+   668					S^;*********************************************************************^
+   669					;*SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION
+   670					S^;*********************************************************************^
+   671
+   672	030520	000000	000000		$$OUTER:0	;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR
+   673
+   674					S^;*********************************************************************^
+   675					;*"SWITCH" CALL USAGE CONTROL
+   676					S^;*********************************************************************^
+   677
+   678	030521	000000	000000		$$TOGGLE:0	;IF NON-ZERO, USE C(CONSW) FOR SWITCHES
+   679
+   680					S^;*********************************************************************^
+   681					;*SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS
+   682					S^;*********************************************************************^
+   683
+   684	030522	000000	000000		$$TAX1:	0	;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL
+   685	030523	000000	000000		$$TAX2:	0	;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL
+   686
+   687					S^;*********************************************************************^
+   688					;*SPECIAL FUTURE EXPANSION ROOM
+   689					;*IF ANY FIXED AREA TAGS ARE ADDED, REDUCE THE SIZE OF
+   690					;*THIS BLOCK STATEMENT ACCORDINGLY.  THIS MUST BE DONE
+   691					;*SO THAT PREVIOUS FIXED ASSIGNMENTS DO NOT CHANGE.
+   692					S^;*********************************************************************^
+   693
+   694	030524					BLOCK	53	;HOPEFULLY THIS IS ENOUGH FOREVER
+   695
+   696					S^;*********************************************************************^
+   697					;*END OF FIXED STORAGE
+   698					S^;*********************************************************************^
+   699
+   700			030577			$ENDFX=&<777700>-1
+   701	030577					LOC	$ENDFX
+   702	030577	000000	000000		ENDFIX:	0		;END OF FIXED STORAGE
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 1
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0024
+
+   703					SUBTTL	*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76
+   704
+   705					;NEW DEFINITIONS USED BY THE KL10 SUBROUTINE PACKAGE
+   706
+   707			000000		AC0=	0
+   708			030000		DIAGNOS=30000		;PDP-10 DIAGNOSTIC START ADDRESS
+   709			010000		DDT=	10000		;PDP-10 DDT START ADDRESS
+   710			020000		DIAMON=	20000		;PDP-10 DIAMON LOADER START ADDRESS
+   711			020000		DONG11=	1B22		;11 DOORBELL (FROM THE 10)
+   712
+   713					;DTE20 DEVICE CODES
+   714
+   715			000200		DTE==	200		;DTE0
+   716			000204		DTE0==	204
+   717			000204		DTE1==	204
+   718			000210		DTE2==	210
+   719			000214		DTE3==	214
+   720
+   721					;KL10 EPT COMMUNICATION AREA
+   722
+   723			000440		$STD=	440		;PDP-10 DIAGNOSTIC START ADDRESS
+   724			000441		$DDT=	441		;PDP-10 DDT START ADDRESS
+   725			000442		$STL=	442		;PDP-10 LOADER START ADDRESS
+   726			000443		$STM=	443		;PDP-10 MONITOR START ADDRESS
+   727
+   728			000444		$DTFLG=	444		;DTE20 OPERATION COMPLETE FLAG
+   729			000445		$DTCLK=	445		;DTE20 CLOCK INTERRUPT FLAG
+   730			000446		$DTCI=	446		;DTE20 CLOCK INTERRUPT INSTRUCTION
+   731			000447		$DTT11=	447		;DTE20 10 TO 11 ARGUMENT
+   732			000450		$DTF11=	450		;DTE20 11 TO 10 ARGUMENT
+   733			000451		$DTCMD=	451		;DTE20 TO 11 COMMAND WORD
+   734			000452		$DTSEQ=	452		;DTE20 OPERATION SEQUENCE NUMBER
+   735			000453		$DTOPR=	453		;DTE20 OPERATIONAL DTE #
+   736			000454		$DTCHR=	454		;DTE20 LAST TYPED CHARACTER
+   737			000455		$DTMTD=	455		;DTE20 MONITOR TTY OUTPUT COMPLETE FLAG
+   738			000456		$DTMTI=	456		;DTE20 MONITOR TTY INPUT FLAG
+   739
+   740			000457		$DTSWR=	457		;DTE20 CONSOLE SWITCH REGISTER
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 2
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0025
+
+   741					;SPECIAL "FIXED" REASSIGNMENTS
+   742
+   743			030600			$$LOC=.			;SAVE CURRENT LOCATION
+   744
+   745	030000					LOC	30000
+   746	030000	254 00 0 00 030600 	$$BEGIN:JRST	$$START		;SETUP SPECIAL START
+   747	030001	254 00 0 00 030600 		JRST	$$START		;"DIAMON" CHAIN START ADDRESS
+   748
+   749	000440					LOC	440
+   750	000440	254 00 0 00 030000 	$STD:	JRST	BEGIN		;SETUP FOR "STD"
+   751	000443					LOC	443
+   752	000443	254 00 0 00 030636 	$STM:	JRST	$SPEC		;SIMPLE RUN CONTROL
+   753
+   754	030057					LOC	30057
+   755	030057	254 00 0 00 030641 	$BEGEND:JRST	$SPBEND		;SETUP SPECIAL "BEGEND"
+   756
+   757					;SPECIAL MUUO, TRAP & PAGE FAIL SETUP
+   758
+   759	000420					LOC	420
+   760	000420	254 04 0 00 000420 	$$420:	HALT	.		;KI10 PAGE FAIL
+   761	000421	255 00 0 00 000000 	$$421:	JFCL			;OVERFLOW
+   762	000422	254 04 0 00 000422 	$$422:	HALT	.		;PUSHDOWN OVERFLOW
+   763	000423	254 04 0 00 000423 	$$423:	HALT	.		;TRAP 3
+   764	000424	000000	000000		$$424:	0			;MMUO
+   765	000425	000000	000000		$$425:	0			;MMUO PC
+   766	000426	000000	000000		$$426:	0			;KI10-PAGE FAIL, KL10-PROCESS CONTEXT
+   767	000427	254 04 0 00 000427 	$$427:	HALT	.
+   768	000430	000000	000427		$$430:	427			;MMUO NEW PC'S
+   769	000431	000000	000427		$$431:	427
+   770	000432	000000	000427		$$432:	427
+   771	000433	000000	000427		$$433:	427
+   772	000434	000000	000427		$$434:	427
+   773	000435	000000	000427		$$435:	427
+   774	000436	000000	000427		$$436:	427
+   775	000437	000000	000427		$$437:	427
+   776
+   777	000500					LOC	500
+   778	000500	000000	000000		$$500:	0			;KL10 PAGE FAIL WORD
+   779	000501	000000	000000		$$501:	0			;KL10 PAGE FAIL PC
+   780	000502	000000	000503		$$502:	503			;KL10 PAGE FAIL NEW PC
+   781	000503	254 04 0 00 000503 	$$503:	HALT	.
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 3
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0026
+
+   782	030600					LOC	$$LOC		;RESET CURRENT LOCATION
+   783
+   784					;SPECIAL STARTUP SEQUENCE
+   785
+   786	030600	402 00 0 00 030037 	$$START:SETZM	USER
+   787	030601	265 00 0 00 030602 		JSP	0,.+1		;IN USER MODE ?
+   788	030602	603 00 0 00 010000 		TLNE	0,USERF
+   789	030603	476 00 0 00 030037 		SETOM	USER		;YES, SET CONTROL WORD
+   790	030604	336 00 0 00 030042 		SKIPN	MONFLG		;SPECIAL USER MODE ?
+   791	030605	402 00 0 00 030037 		SETZM	USER		;YES, RUN AS EXEC
+   792	030606	332 00 0 00 030037 		SKIPE	USER
+   793	030607	254 00 0 00 030712 		JRST	START		;USER MODE, DON'T NEED CPU TYPE
+   794
+   795	030610	336 00 0 00 030044 	$STKIL:	SKIPN	MONTEN		;LOADED BY "DIAMON" ?
+   796	030611	476 00 0 00 030024 		SETOM	ITRCNT		;NO, RUN FOREVER
+   797	030612	402 00 0 00 030516 		SETZM	KLTYP
+   798	030613	402 00 0 00 030041 		SETZM	KLFLG		;ASSUME KI10
+   799	030614	200 01 0 00 032223 		MOVE	1,[1,,1]
+   800	030615	251 01 0 00 000001 		BLT	1,1		;HOPE THIS WORKS
+   801	030616	316 01 0 00 032223 		CAMN	1,[1,,1]	;IF AC NE 1,,1 AFTER BLT, KL10
+   802	030617	254 00 0 00 030712 		JRST	START		;KI10, NO ADDITIONAL SETUP
+   803
+   804	030620	7 000 20 0 00 010040 	$STKL:	CONO	APR,10040	;SET BBD NOT BIT
+   805	030621	7 000 24 0 00 000000 		CONI	APR,0
+   806	030622	7 000 20 0 00 020040 		CONO	APR,20040	;CLEAR BBD NOT BIT
+   807	030623	606 00 0 00 000040 		TRNN	0,40		;IF SET, KL10
+   808	030624	350 00 0 00 030516 		AOS	KLTYP		;IF NOT, BBD
+   809	030625	402 00 0 00 000444 		SETZM	$DTFLG
+   810	030626	402 00 0 00 000445 		SETZM	$DTCLK
+   811	030627	200 00 0 00 000453 		MOVE	$DTOPR		;GET DTE #
+   812	030630	436 00 0 00 030670 		ORM	$$DTE0		;INSERT IN DTE I/O INSTS
+   813	030631	436 00 0 00 030672 		ORM	$$DTE1
+   814	030632	436 00 0 00 030704 		ORM	$$DTE2
+   815	030633	436 00 0 00 030706 		ORM	$$DTE3
+   816	030634	476 00 0 00 030041 		SETOM	KLFLG		;SET KL10 CONTROL FLAG
+   817	030635	254 00 0 00 030712 		JRST	START
+   818
+   819	030636	200 00 0 00 032224 	$SPEC:	MOVE	[JRST STARTA]	;SIMPLE RUN CONTROL
+   820	030637	202 00 0 00 030643 		MOVEM	$SPB1
+   821	030640	254 00 0 00 030712 		JRST	START
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 4
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0027
+
+   822					;SPECIAL "BEGEND" ROUTINE
+   823
+   824	030641	350 00 0 00 030047 	$SPBEND:AOS	PASCNT		;INCREMENT PASS COUNT
+   825	030642	370 00 0 00 030024 		SOS	ITRCNT		;DECREMENT ITERATION COUNT
+   826	030643	336 00 0 00 030037 	$SPB1:	SKIPN	USER
+   827	030644	254 00 0 00 030652 		JRST	$SPBEX		;EXEC MODE
+   828
+   829	030645	332 00 0 00 030024 	$SPBUS:	SKIPE	ITRCNT		;USER MODE, COMPLETED ?
+   830	030646	254 00 0 00 030741 		JRST	STARTA		;NO, KEEP RUNNING
+   831	030647	336 00 0 00 030044 		SKIPN	MONTEN		;DONE, LOADED BY "DIAMON" ?
+   832	030650	047 00 0 00 000012 		EXIT			;NO, RETURN TO MONITOR
+   833	030651	254 00 1 00 030012 		JRST	@RETURN		;YES, RETURN TO "DIAMON"
+   834
+   835	030652	332 00 0 00 030041 	$SPBEX:	SKIPE	KLFLG
+   836	030653	254 00 0 00 030660 		JRST	$SPBKL		;KL10 & EXEC
+   837	030654	7 004 14 0 00 030024 		DATAO	PI,ITRCNT	;KI10 & EXEC, DISPLAY ITER COUNT
+   838	030655	332 00 0 00 030024 		SKIPE	ITRCNT
+   839	030656	254 00 0 00 030741 		JRST	STARTA		;NOT COMPLETED YET
+   840	030657	254 00 1 00 030012 		JRST	@RETURN		;DONE
+   841
+   842	030660	336 00 0 00 030024 	$SPBKL:	SKIPN	ITRCNT
+   843	030661	254 00 0 00 030676 		JRST	$SPKLD		;KL10, EXEC & COMPLETED
+   844
+   845	030662	335 00 0 00 030043 		SKIPGE	MONCTL
+   846	030663	254 00 0 00 030741 		JRST	STARTA		;"DIAMON" CONTROL
+   847	030664	201 00 0 00 000404 		MOVEI	0,404		;NOTIFY PDP-11 OF END OF PASS
+   848	030665	202 00 0 00 000451 		MOVEM	0,$DTCMD
+   849	030666	402 00 0 00 000444 		SETZM	$DTFLG
+   850	030667	336 00 0 00 030516 		SKIPN	KLTYP
+   851	030670	7 200 20 0 00 020000 	$$DTE0:	CONO	DTE,DONG11
+   852	030671	332 00 0 00 030516 		SKIPE	KLTYP
+   853	030672	7 200 20 0 00 010000 	$$DTE1:	CONO	DTE,10000
+   854	030673	336 00 0 00 000444 		SKIPN	$DTFLG		;WAIT TILL 11 RESPONDS
+   855	030674	254 00 0 00 030673 		JRST	.-1
+   856	030675	254 00 0 00 030741 		JRST	STARTA		;KEEP RUNNING
+   857
+   858					;SPECIAL KL10 COMPLETED ROUTINE
+   859
+   860	030676	332 00 0 00 030044 	$SPKLD:	SKIPE	MONTEN
+   861	030677	254 00 1 00 030012 		JRST	@RETURN		;LOADED BY "DIAMON"
+   862
+   863	030700	201 00 0 00 000403 		MOVEI	0,403		;NOTIFY PDP-11 OF COMPLETION
+   864	030701	202 00 0 00 000451 		MOVEM	0,$DTCMD
+   865	030702	402 00 0 00 000444 		SETZM	$DTFLG
+   866	030703	336 00 0 00 030516 		SKIPN	KLTYP
+   867	030704	7 200 20 0 00 020000 	$$DTE2:	CONO	DTE,DONG11
+   868	030705	332 00 0 00 030516 		SKIPE	KLTYP
+   869	030706	7 200 20 0 00 010000 	$$DTE3:	CONO	DTE,10000
+   870	030707	336 00 0 00 000444 		SKIPN	$DTFLG		;SHOULD NEVER HAPPEN
+   871	030710	254 00 0 00 030707 		JRST	.-1		;11 NEVER RETURNS ON END OF PROGRAM
+   872	030711	254 04 0 00 030000 		HALT	BEGIN		;IF IT DOES, HALT.
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 1
+DAKAGM	MAC	19-JAN-77 17:37		DIAGNOSTIC SECTION                                                                 SEQ 0028
+
+   873					SUBTTL	DIAGNOSTIC SECTION
+   874
+   875	030712	402 00 0 00 030037 	START:	SETZM	USER#		;CLEAR USER CONTROL WORD
+   876	030713	265 00 0 00 030714 		JSP	0,.+1		;GET FLAGS
+   877	030714	603 00 0 00 010000 		TLNE	USERF		;IN USER MODE?
+   878	030715	476 00 0 00 030037 		SETOM	USER		;YES, SET USER CONTROL WORD
+   879	030716	336 00 0 00 030042 		SKIPN	MONFLG		;SPECIAL USER MODE?
+   880	030717	402 00 0 00 030037 		SETZM	USER		;YES, CLEAR USER CONTROL WORD
+   881	030720	336 00 0 00 030037 		SKIPN	USER
+   882	030721	254 00 0 00 030741 		JRST	STARTA
+   883	030722	331 00 0 00 030043 		SKIPL	MONCTL
+   884	030723	051 03 0 00 030725 		TTCALL	3,PGMNAM	;MENTION OUR NAME
+   885	030724	254 00 0 00 030741 		JRST	STARTA
+   886
+   887	030725				PGMNAM:	ASCIZ/
+   888	030725	015 012 120 104 120 	PDP-10 KI10 BASIC INSTRUCTION DIAGNOSTIC (7) [DAKAG]
+   889	030726	055 061 060 040 113
+   890	030727	111 061 060 040 102
+   891	030730	101 123 111 103 040
+   892	030731	111 116 123 124 122
+   893	030732	125 103 124 111 117
+   894	030733	116 040 104 111 101
+   895	030734	107 116 117 123 124
+   896	030735	111 103 040 050 067
+   897	030736	051 040 133 104 101
+   898	030737	113 101 107 135 015
+   899	030740	012 000 000 000 000 	/
+   900
+   901	030741	254 00 0 00 030742 	STARTA:	JRST	.+1
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 2
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSH INSTRUCTION                                                           SEQ 0029
+
+   902					SUBTTL	TEST OF PUSH INSTRUCTION
+   903
+   904					;**********
+   905
+   906					;THIS TEST VERIFIES THAT PUSH DECODES CORRECTLY.
+   907					;IF PUSH DECODES AS PUSHJ, THIS TEST FAILS.
+   908
+   909	030742	400 02 0 00 000000 	C27200:	SETZ	2,		;CLEAR AC
+   910	030743	261 02 0 00 030745 		PUSH	2,.+2		;*PUSH SHOULD NOT JUMP
+   911	030744	334 00 0 00 000000 		SKIPA			;PASS IF PUSH DID NOT JUMP
+   912						STOP^
+   913	030745	254 04 0 00 030746 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   914	030746	324 00 0 00 030747 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   915									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   916									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   917									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   918
+   919					;**********
+   920
+   921					;THIS TEST VERIFIES THAT PUSH DOES NOT MODIFY C(E).
+   922					;CLEAR E AND AC; THEN, EXECUTE PUSH.
+   923					;CHECK E FOR ORIGINAL CONTENTS ,0.
+   924					;PASS IF C(E)=0.
+   925
+   926	030747	403 00 0 00 000002 	C27300:	SETZB	2		;CLEAR AC,E
+   927	030750	261 02 0 00 000000 		PUSH	2,		;*PUSH SHOULD NOT ALTER C(E)
+   928	030751	332 00 0 00 000000 		SKIPE			;PASS IF C(E)=0,,0
+   929						STOP^
+   930	030752	254 04 0 00 030753 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   931	030753	324 00 0 00 030754 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   932									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   933									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   934									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   935
+   936					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 3
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSH INSTRUCTION                                                           SEQ 0030
+
+   937					;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC.
+   938					;FIRST THE AC IS CLEARED; THEN PUSH IS EXECUTED.
+   939					;THE AC IS CHECKED FOR 1,,1.  IF C(AC)=1,,1, THIS TEST PASSES.
+   940
+   941	030754	400 02 0 00 000000 	C27400:	SETZ	2,		;CLEAR AC
+   942	030755	261 02 0 00 030756 		PUSH	2,.+1		;*PUSH SHOULD ADD 1,,1 TO C(AC)
+   943	030756	312 02 0 00 032223 		CAME	2,[XWD 1,1]	;PASS IF C(AC)=1,,1
+   944						STOP^
+   945	030757	254 04 0 00 030760 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   946	030760	324 00 0 00 030761 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   947									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   948									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   949									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   950
+   951					;**********
+   952
+   953					;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC BEFORE MODIFYING C(C(AC-RIGHT)).
+   954					;FIRST, THE AC AND AC0 ARE ZEROED; THEN PUSH IS EXECUTED.
+   955					;C(C(AC-RIGHT)) [BEFORE AC UPDATING] (AC0) IS CHECKED FOR THE INITIAL VALUE, 0.
+   956					;IF C(AC0)=0, THIS TEST PASSES
+   957
+   958	030761	403 00 0 00 000002 	C27500:	SETZB	2		;CLEAR AC AND AC0
+   959	030762	261 02 0 00 032225 		PUSH	2,[16541320]	;*PUSH SHOULD NOT MODIFY C(AC0)
+   960	030763	332 00 0 00 000000 		SKIPE			;PASS IF C(AC0)=0
+   961						STOP^
+   962	030764	254 04 0 00 030765 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   963	030765	324 00 0 00 030766 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   964									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   965									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   966									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   967
+   968					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 4
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSH INSTRUCTION                                                           SEQ 0031
+
+   969					;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC BEFORE MODIFYING C(C(AC-RIGHT)).
+   970					;FIRST, THE AC AND AC0 ARE ZEROED; THEN PUSH IS EXECUTED.
+   971					;C(C(AC-RIGHT)) [BEFORE AC UPDATING] (AC0) IS CHECKED FOR
+   972					;IF C(AC0)IS NOT EQUAL TO E, THIS TEST PASSES
+   973
+   974	030766	403 01 0 00 000002 	C27600:	SETZB	1,2		;CLEAR AC AND AC0
+   975	030767	261 02 0 00 030770 		PUSH	2,.+1		;*PUSH SHOULD NOT MODIFY C(AC0)
+   976	030770	306 00 0 00 030770 		CAIN	.		;FAIL IF C(AC0)=E
+   977						STOP^
+   978	030771	254 04 0 00 030772 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   979	030772	324 00 0 00 030773 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   980									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   981									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+   982									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+   983
+   984					;**********
+   985
+   986					;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+   987					;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE, AC AND THE LOCATION SPECIFIED
+   988					;BY UPDATING C(AC-RIGHT) ARE CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=-1,,-1.
+   989					;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR -1,,-1, THE
+   990					;ORIGINAL C(E).  IF C(C(AC-RIGHT))=-1,,-1, THIS TEST PASSES.
+   991
+   992	030773	403 01 0 00 000002 	C27700:	SETZB	1,2		;CLEAR AC, C(AC-RIGHT)
+   993	030774	261 02 0 00 032226 		PUSH	2,[-1]		;*PUSH SHOULD PLACE -1,,-1 INTO AC1
+   994	030775	312 01 0 00 032226 		CAME	1,[-1]		;PASS IF C(1)=-1,,-1
+   995						STOP^
+   996	030776	254 04 0 00 030777 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+   997	030777	324 00 0 00 031000 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+   998									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+   999									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1000									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1001
+  1002					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 5
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSH INSTRUCTION                                                           SEQ 0032
+
+  1003					;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+  1004					;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE, AC
+  1005					;IS CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=0.
+  1006					;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR 0, THE
+  1007					;ORIGINAL C(E).  IF C(C(AC-RIGHT))=0, THIS TEST PASSES.
+  1008
+  1009	031000	402 00 0 00 000002 	C30000:	SETZM	2		;CLEAR AC
+  1010	031001	261 02 0 00 032227 		PUSH	2,[0]		;*PUSH SHOULD PLACE 0 INTO AC1
+  1011	031002	332 00 0 00 000001 		SKIPE	1		;PASS IF C(1)=0
+  1012						STOP^
+  1013	031003	254 04 0 00 031004 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1014	031004	324 00 0 00 031005 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1015									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1016									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1017									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1018
+  1019					;**********
+  1020
+  1021					;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+  1022					;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE,
+  1023					;AC IS PRELOADED WITH 0,,-1, AND THE LOCATION SPECIFIED
+  1024					;BY UPDATING C(AC-RIGHT) IS CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=-1,,-1.
+  1025					;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR -1,,-1, THE
+  1026					;ORIGINAL C(E).  IF C(C(AC-RIGHT))=-1,,-1, THIS TEST PASSES.
+  1027
+  1028	031005	201 02 0 00 777777 	C30100:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+  1029	031006	400 00 0 00 000000 		SETZ			;CLEAR AC, C(AC-RIGHT)
+  1030	031007	261 02 0 00 032226 		PUSH	2,[-1]		;*PUSH SHOULD PLACE -1,,-1 INTO AC0
+  1031	031010	312 00 0 00 032226 		CAME	[-1]		;PASS IF C(0)=-1,,-1
+  1032						STOP^
+  1033	031011	254 04 0 00 031012 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1034	031012	324 00 0 00 031013 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1035									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1036									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1037									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1038
+  1039					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 6
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSH INSTRUCTION                                                           SEQ 0033
+
+  1040					;THIS TEST VERIFIES THAT THERE IS A CARRY FROM AC BIT 18 TO BIT 17 OF THE AC ON PUSH.
+  1041					;THE AC IS PRELOADED WITH 0,,-1; THEN PUSH IS EXECUTED. PUSH SHOULD ADD ONE TO BOTH
+  1042					;HALVES OF THE AC, GENERATING A CARRY FROM BIT 18 TO BIT 17. IF A CARRY WAS GENERATED,
+  1043					;THIS TEST PASSES.
+  1044
+  1045	031013	201 02 0 00 777777 	C30101:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+  1046	031014	261 02 0 00 000000 		PUSH	2,0		;*PUSH SHOULD GENERATE A CARRY FROM BIT 18 TO BIT 17
+  1047	031015	312 02 0 00 032230 		CAME	2,[2,,0]	;PASS IF C(AC)=2,,0 (CARRY WAS GENERATED)
+  1048						STOP^
+  1049	031016	254 04 0 00 031017 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1050	031017	324 00 0 00 031020 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1051									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1052									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1053									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1054
+  1055					;*************
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 7
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSHJ INSTRUCTION                                                          SEQ 0034
+
+  1056					SUBTTL	TEST OF PUSHJ INSTRUCTION
+  1057
+  1058					;**********
+  1059
+  1060					;THIS TEST VERIFIES THAT PUSHJ TRANSFERS CONTROL TO THE LOCATION ADDRESSED BY E.
+  1061					;IF PUSHJ DOES NOT JUMP, THIS TEST FAILS
+  1062
+  1063	031020				C30200:	SFLAG	CRY0		^;SETS CRY0 FLAG
+  1064
+  1065	031020	205 01 0 00 200000 		MOVSI	1,CRY0
+  1066	031021	255 17 0 00 031022 		JFCL	17,.+1		;RESET ALL FLAGS
+  1067	031022	254 02 0 01 031023 		JRST	2,.+1(1)	;SET CRY0 FLAG
+  1068	031023	400 00 0 00 000000 		SETZ			;CLEAR AC
+  1069	031024	260 00 0 00 031026 		PUSHJ	.+2		;*PUSHJ SHOULD JUMP TO LOCATION E
+  1070						STOP^
+  1071	031025	254 04 0 00 031026 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1072	031026	324 00 0 00 031027 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1073									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1074									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1075									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1076
+  1077					;**********
+  1078
+  1079					;THIS TEST VERIFIES THAT PUSHJ DOES NOT MODIFY C(PC) WHERE PC IS ONE GREATER
+  1080					;THAN THE LOCATION OF THE PUSHJ INSTRUCTION.
+  1081					;IF PUSHJ MODIFIES C(PC), THIS TEST FAILS
+  1082
+  1083	031027				C30300:	SFLAG	CRY0		^;SET CRY0
+  1084
+  1085	031027	205 01 0 00 200000 		MOVSI	1,CRY0
+  1086	031030	255 17 0 00 031031 		JFCL	17,.+1		;RESET ALL FLAGS
+  1087	031031	254 02 0 01 031032 		JRST	2,.+1(1)	;SET CRY0 FLAG
+  1088	031032	403 01 0 00 031034 		SETZB	1,.+2		;CLEAR C(AC-RIGHT) AND C(PC)
+  1089	031033	260 00 0 00 031036 		PUSHJ	.+3		;*PUSHJ SHOULD NOT MODIFY C(PC)
+  1090	031034	000000	000000			0			;THIS LOCATION SHOULD NOT BE MODIFIED BY PUSHJ
+  1091	031035	310 00 0 00 000000 		CAM			;PUSHJ SHOULD JUMP OVER THIS LOCATION
+  1092	031036	332 00 0 00 031034 		SKIPE	.-2		;PASS IF PUSHJ DID NOT MODIFY C(PC)
+  1093						STOP^
+  1094	031037	254 04 0 00 031040 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1095	031040	324 00 0 00 031041 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1096									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1097									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1098									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1099
+  1100					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 8
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSHJ INSTRUCTION                                                          SEQ 0035
+
+  1101					;THIS TEST VERIFIES THAT PUSHJ DOES NOT STORE IN E
+  1102					;IF PUSHJ STORED IN E, THIS TEST FAILS
+  1103
+  1104	031041				C30400:	SFLAG	CRY0		^;SET CRY0
+  1105
+  1106	031041	205 01 0 00 200000 		MOVSI	1,CRY0
+  1107	031042	255 17 0 00 031043 		JFCL	17,.+1		;RESET ALL FLAGS
+  1108	031043	254 02 0 01 031044 		JRST	2,.+1(1)	;SET CRY0 FLAG
+  1109	031044	403 00 0 00 000001 		SETZB	1		;CLEAR AC AND C(AC-RIGHT
+  1110	031045	260 00 0 00 031046 		PUSHJ	.+1		;*PUSHJ SHOULD NOT STORE IN E
+  1111	031046	200 02 0 00 031046 		MOVE	2,.		;SAVE C(E)
+  1112	031047	312 02 0 00 031046 		CAME	2,.-1		;FAIL IF PUSHJ STORED IN E
+  1113						STOP^
+  1114	031050	254 04 0 00 031051 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1115	031051	324 00 0 00 031052 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1116									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1117									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1118									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1119
+  1120					;**********
+  1121
+  1122					;THIS TEST VERIFIES THAT PUSHJ DOES NOT STORE IN LOC 0
+  1123					;PUSHJ SHOULD STORE PC IN C(AC-RIGHT) - LOCATION 2.
+  1124					;IF PUSHJ STORES IN LOCATION 0, THIS TEST FAILS
+  1125
+  1126	031052	201 02 0 00 000001 	C30500:	MOVEI	2,1		;PRELOAD AC WITH 0,,1
+  1127	031053	400 00 0 00 000000 		SETZ	0		;CLEAR 0
+  1128	031054	260 02 0 00 031055 		PUSHJ	2,.+1		;*PUSHJ SHOULD NOT STORE IN LOCATION 0
+  1129	031055	332 00 0 00 000000 		SKIPE			;FAIL IF PUSHJ STORED IN LOCATION 0
+  1130						STOP^
+  1131	031056	254 04 0 00 031057 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1132	031057	324 00 0 00 031060 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1133									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1134									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1135									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1136
+  1137					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 9
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSHJ INSTRUCTION                                                          SEQ 0036
+
+  1138					;THIS TEST VERIFIES THAT PUSHJ STORES THE PC IN THE LOCATION SPECIFIED
+  1139					;BY C(AC-RIGHT) AFTER INCREMENTING AC.
+  1140					;IN THIS TEST, AC AND C(AC-RIGHT) ARE CLEARED; THEN, PUSHJ IS EXECUTED.
+  1141					;C(C(AC-RIGHT))IS THEN COMPARED TO ZERO.  IF C(C(AC-RIGHT)) IS NON-ZERO,
+  1142					;A PC WAS STORED AND THIS TEST PASSES.
+  1143
+  1144	031060	403 00 0 00 000001 	C30600:	SETZB	1		;CLEAR AC, C(AC-RIGHT)
+  1145	031061	260 00 0 00 031063 		PUSHJ	.+2		;*PUSHJ SHOULD STORE PC IN RIGHT HALF OF C(AC-RIGHT)
+  1146	031062	254 04 0 00 031062 		HALT	.		;PUSHJ SHOULD JUMP OVER THIS INSTRUCTION
+  1147	031063	405 01 0 00 777777 		ANDI	1,-1		;SAVE C(C(AC-RIGHT))
+  1148	031064	306 01 0 00 031063 		CAIN	1,.-1		;FAIL IF PC WAS NOT STORED IN C(AC-RIGHT)
+  1149						STOP^
+  1150	031065	254 04 0 00 031066 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1151	031066	324 00 0 00 031067 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1152									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1153									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1154									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1155
+  1156					;**********
+  1157
+  1158					;THIS TEST VERIFIES THAT PUSHJ ADDS 1,,1 TO THE AC
+  1159					;THE AC IS CLEARED AND PUSHJ IS EXECUTED
+  1160					;AC IS CHECKED FOR 1,,1 IF C(AC)=1,,1, THIS TEST PASSES
+  1161
+  1162	031067	400 00 0 00 000000 	C31000:	SETZ			;CLEAR AC
+  1163	031070	260 00 0 00 031071 		PUSHJ	.+1		;*PUSHJ SHOULD PLACE 1,,1 INTO THE AC
+  1164	031071	312 00 0 00 032223 		CAME	[1,,1]		;PASS IF C(AC)=1,,1
+  1165						STOP^
+  1166	031072	254 04 0 00 031073 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1167	031073	324 00 0 00 031074 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1168									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1169									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1170									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1171
+  1172					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 10
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSHJ INSTRUCTION                                                          SEQ 0037
+
+  1173					;THIS TEST VERIFIES THAT PUSHJ STORES THE FLAGS IN LEFT HALF OF C(AC-RIGHT)
+  1174					;FIRST, CRY0 IS SET AND AC AND C(AC-RIGHT) ARE CLEARED; THEN, PUSHJ IS EXECUTED.
+  1175					;C(C(AC-RIGHT)) IS THEN CHECKED FOR CRY0.  IF CRY0 IS SET, THIS TEST PASSES.
+  1176
+  1177	031074				C31100:	SFLAG	CRY0		^;SET CRY0
+  1178
+  1179	031074	205 01 0 00 200000 		MOVSI	1,CRY0
+  1180	031075	255 17 0 00 031076 		JFCL	17,.+1		;RESET ALL FLAGS
+  1181	031076	254 02 0 01 031077 		JRST	2,.+1(1)	;SET CRY0 FLAG
+  1182	031077	403 00 0 00 000001 		SETZB	1		;CLEAR AC AND C(AC-RIGHT)
+  1183	031100	260 00 0 00 031101 		PUSHJ	.+1		;*PUSHJ SHOULD STORE FLAGS IN LEFT HALF OF C(AC-RIGHT)
+  1184	031101	607 01 0 00 200000 		TLNN	1,CRY0		;PASS IF CRY0 STORED CORRECTLY
+  1185						STOP^
+  1186	031102	254 04 0 00 031103 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1187	031103	324 00 0 00 031104 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1188									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1189									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1190									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1191
+  1192					;**********
+  1193
+  1194					;THIS TEST VERIFIES THAT PUSHJ ADDS 1,,1 TO THE AC
+  1195					;THE AC IS PRELOADED WITH 0,,1 AND PUSHJ IS EXECUTED
+  1196					;AC IS CHECKED FOR 1,,2 IF C(AC)=1,,2, THIS TEST PASSES
+  1197
+  1198	031104	201 01 0 00 000001 	C31400:	MOVEI	1,1		;PRELOAD AC WITH 0,,1
+  1199	031105	260 01 0 00 031107 		PUSHJ	1,.+2		;*PUSHJ SHOULD PLACE 1,,2 INTO THE AC
+  1200	031106	254 04 0 00 000000 		HALT			;PUSHJ SHOULD JUMP OVER THIS INSTRUCTION
+  1201	031107	312 01 0 00 032231 		CAME	1,[XWD 1,2]	;PASS IF AC WAS INCREMENTED CORRECTLY
+  1202						STOP^
+  1203	031110	254 04 0 00 031111 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1204	031111	324 00 0 00 031112 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1205									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1206									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1207									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1208
+  1209					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 11
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSHJ INSTRUCTION                                                          SEQ 0038
+
+  1210					;THIS TEST VERIFIES THAT PUSHJ STORES THE PC IN RIGHT HALF OF C(AC-RIGHT)
+  1211					;THIS TEST PASSES IF THE PC WAS STORED CORRECTLY.
+  1212
+  1213	031112	201 01 0 00 000001 	C31500:	MOVEI	1,1		;PLACE 0,,1 INTO AC
+  1214	031113	260 01 0 00 031115 		PUSHJ	1,.+2		;*PUSHJ SHOULD STORE .+1 INTO RIGHT HALF OF C(AC-RIGHT)
+  1215	031114	254 04 0 00 000000 		HALT			;PUSHJ SHOULD JUMP OVER THIS PC
+  1216	031115	405 02 0 00 777777 		ANDI	2,-1		;SAVE RIGHT HALF OF C(AC-RIGHT)
+  1217	031116	302 02 0 00 031114 		CAIE	2,.-2		;PASS IF PC STORED CORRECTLY
+  1218						STOP^
+  1219	031117	254 04 0 00 031120 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1220	031120	324 00 0 00 031121 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1221									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1222									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1223									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1224
+  1225					;**********
+  1226
+  1227					;THIS TEST VERIFIES THAT PUSHJ ALWAYS RESETS BIS.
+  1228					;FIRST BIS IS SET; THEN PUSHJ IS EXECUTED.  THE FLAGS ARE
+  1229					;THEN SAVED AND CHECKED.  IF BIS WAS RESET VIA PUSHJ, THIS TEST PASSES.
+  1230
+  1231	031121				C31501:	SFLAG	BIS		^;SET BIS
+  1232
+  1233	031121	205 01 0 00 020000 		MOVSI	1,BIS
+  1234	031122	255 17 0 00 031123 		JFCL	17,.+1		;RESET ALL FLAGS
+  1235	031123	254 02 0 01 031124 		JRST	2,.+1(1)	;SET BIS FLAG
+  1236	031124	400 00 0 00 000000 		SETZ			;CLEAR AC
+  1237	031125	260 00 0 00 031126 		PUSHJ	.+1		;*PUSHJ SHOULD RESET BIS
+  1238	031126	265 00 0 00 031127 		JSP	.+1		;SAVE FLAGS
+  1239	031127	603 00 0 00 020000 		TLNE	BIS		;PASS IF BIS FLAG IS RESET
+  1240						STOP^
+  1241	031130	254 04 0 00 031131 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1242	031131	324 00 0 00 031132 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1243									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1244									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1245									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1246
+  1247					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 12
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF PUSHJ INSTRUCTION                                                          SEQ 0039
+
+  1248					;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON PUSHJ.
+  1249					;THE AC IS PRELOADED WITH 0,,-1; THEN PUSHJ IS EXECUTED. PUSHJ SHOULD ADD ONE TO
+  1250					;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17. IF A
+  1251					;CARRY WAS GENERATED, THE TEST PASSES.
+  1252
+  1253	031132	201 02 0 00 777777 	C31502:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+  1254	031133	260 02 0 00 031134 		PUSHJ	2,.+1		;*PUSHJ SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+  1255	031134	312 02 0 00 032230 		CAME	2,[2,,0]	;PASS IF C(AC)=2,,0 (CARRY WAS GENERATED)
+  1256						STOP^
+  1257	031135	254 04 0 00 031136 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1258	031136	324 00 0 00 031137 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1259									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1260									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1261									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1262
+  1263					;****************
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 13
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF POP INSTRUCTION                                                            SEQ 0040
+
+  1264					SUBTTL	TEST OF POP INSTRUCTION
+  1265
+  1266					;**********
+  1267
+  1268					;THIS TEST VERIFIES THAT POP SUBTRACTS 1,,1 FROM THE AC
+  1269					;THE AC IS PRELOADED WITH 1,,1; THEN, POP IS EXECUTED.
+  1270					;THE AC IS CHECKED FOR 0.  IF C(AC)=0, THIS TEST PASSES.
+  1271
+  1272	031137	200 00 0 00 032223 	C31600:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+  1273	031140	262 00 0 00 000001 		POP	1		;*POP SHOULD SUBTRACT 1,,1 FROM THE AC
+  1274	031141	332 00 0 00 000000 		SKIPE			;PASS IF AC WAS DECREMENTED CORRECTLY
+  1275						STOP^
+  1276	031142	254 04 0 00 031143 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1277	031143	324 00 0 00 031144 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1278									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1279									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1280									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1281
+  1282					;**********
+  1283
+  1284					;THIS TEST VERIFIES THAT POP SUBTRACTS 1,,1 FROM THE AC
+  1285					;THE AC IS PRELOADED WITH 2,,2; THEN, POP IS EXECUTED.
+  1286					;THE AC IS CHECKED FOR 1,,1.  IF C(AC)=1,,1, THIS TEST PASSES.
+  1287
+  1288	031144	200 00 0 00 032232 	C31700:	MOVE	[XWD 2,2]	;PRELOAD AC WITH E,,E WHERE E=2
+  1289	031145	201 02 0 00 000005 		MOVEI	2,5		;PRELOAD 2 WITH 0,,5
+  1290	031146	262 00 0 00 000002 		POP	2		;*POP SHOULD SUBTRACT 1,,1 FROM THE AC
+  1291	031147	312 00 0 00 032223 		CAME	[1,,1]		;PASS IF AC WAS DECREMENTED CORRECTLY
+  1292						STOP^
+  1293	031150	254 04 0 00 031151 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1294	031151	324 00 0 00 031152 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1295									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1296									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1297									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1298
+  1299					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 14
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF POP INSTRUCTION                                                            SEQ 0041
+
+  1300					;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E
+  1301					;IN THIS CASE, AC=0 AND AC IS PRELOADED WITH 2,,2; E=2 AND IS PRELOADED WITH 0.
+  1302					;POP IS THEN EXECUTED.  POP SHOULD PLACE 0 INTO E.  IF C(E)=0, THIS TEST PASSES.
+  1303
+  1304	031152	200 00 0 00 032232 	C32300:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+  1305	031153	402 00 0 00 000002 		SETZM	2		;CLEAR E AND C(AC-RIGHT)
+  1306	031154	262 00 0 00 000002 		POP	2		;*POP SHOULD PLACE 0 INTO E
+  1307	031155	332 00 0 00 000002 		SKIPE	2		;PASS IF C(E)=0
+  1308						STOP^
+  1309	031156	254 04 0 00 031157 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1310	031157	324 00 0 00 031160 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1311									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1312									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1313									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1314
+  1315					;**********
+  1316
+  1317					;THIS TEST VERIFIES THAT POP DOES NOT MODIFY C(C(AC-RIGHT)-1).
+  1318					;THIS TEST FAILS IF C(C(AC-RIGHT)-1) IS MODIFIED BY POP.
+  1319
+  1320	031160	200 00 0 00 032232 	C32400:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+  1321	031161	201 02 0 00 000017 		MOVEI	2,17		;PRELOAD 2 WITH 0,,17
+  1322	031162	402 00 0 00 000001 		SETZM	1		;CLEAR C(C(AC-RIGHT)-1)
+  1323	031163	262 00 0 00 000002 		POP	2		;*POP SHOULD NOT MODIFY C(C(AC-RIGHT)-1)
+  1324	031164	332 00 0 00 000001 		SKIPE	1		;PASS IF C(C(AC-RIGHT)-1) WAS UNALTERED
+  1325						STOP^
+  1326	031165	254 04 0 00 031166 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1327	031166	324 00 0 00 031167 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1328									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1329									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1330									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1331
+  1332					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 15
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF POP INSTRUCTION                                                            SEQ 0042
+
+  1333					;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.
+  1334					;IN THIS CASE, AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH 0,,3.
+  1335					;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR 0,,3 [C(C(AC-RIGHT))] .
+  1336					;IF C(E)=0,,3, THIS TEST PASSES.
+  1337
+  1338	031167	200 00 0 00 032232 	C32500:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+  1339	031170	201 02 0 00 000003 		MOVEI	2,3		;PRELOAD C(AC-RIGHT) WITH 0,,3
+  1340	031171	402 00 0 00 000003 		SETZM	3		;CLEAR E
+  1341	031172	262 00 0 00 000003 		POP	3		;*POP SHOULD PLACE 0,,3 INTO E
+  1342	031173	302 03 0 00 000003 		CAIE	3,3		;PASS IF C(E)=0,,3
+  1343						STOP^
+  1344	031174	254 04 0 00 031175 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1345	031175	324 00 0 00 031176 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1346									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1347									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1348									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1349
+  1350					;**********
+  1351
+  1352					;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.  IN THIS CASE,
+  1353					;AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH 0,,17.
+  1354					;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR 0,,17 [C(C(AC-RIGHT))] .
+  1355					;IF C(E)=0,,17, THIS TEST PASSES.
+  1356
+  1357	031176	402 00 0 00 000002 	C32600:	SETZM	2		;CLEAR E
+  1358	031177	200 00 0 00 032232 		MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+  1359	031200	201 02 0 00 000017 		MOVEI	2,17		;PRELOAD C(AC-RIGHT) WITH 0,,17
+  1360	031201	262 00 0 00 000002 		POP	2		;*POP SHOULD PLACE 0,,17 INTO E
+  1361	031202	302 02 0 00 000017 		CAIE	2,17		;PASS IF C(E)=0,,17
+  1362						STOP^
+  1363	031203	254 04 0 00 031204 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1364	031204	324 00 0 00 031205 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1365									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1366									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1367									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1368
+  1369					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 16
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF POP INSTRUCTION                                                            SEQ 0043
+
+  1370					;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.  IN THIS CASE,
+  1371					;AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH -1,,-1.
+  1372					;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR -1,,-1 [C(C(AC-RIGHT))] .
+  1373					;IF C(E)=0,,3, THIS TEST PASSES.
+  1374
+  1375	031205	200 00 0 00 032232 	C33100:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+  1376	031206	476 00 0 00 000002 		SETOM	2		;PRELOAD C(AC-RIGHT) WITH -1,,-1
+  1377	031207	402 00 0 00 000003 		SETZM	3		;CLEAR E
+  1378	031210	262 00 0 00 000003 		POP	3		;*POP SHOULD PLACE -1,,-1 INTO E
+  1379	031211	312 03 0 00 032226 		CAME	3,[-1]		;PASS IF C(E)=-1,,-1
+  1380						STOP^
+  1381	031212	254 04 0 00 031213 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1382	031213	324 00 0 00 031214 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1383									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1384									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1385									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1386
+  1387					;**********
+  1388
+  1389					;THIS TEST VERIFIES THAT POP PLACES C(C(AC-RIGHT)) INTO E AND ADDS 1,,1 TO AC.
+  1390					;IN THIS CASE, THE AC IS PRELOADED WITH 1,,17; E=1 AND E IS PRELOADED WITH 0;
+  1391					;C(AC-RIGHT) IS PRELOADED WITH -1,,-1; AND POP IS EXECUTED.  POP SHOULD PLACE -1,,-1
+  1392					;INTO E AND 0,,16 INTO AC.  IF AC AND E ARE UPDATED CORRECTLY, THIS TEST PASSES.
+  1393
+  1394	031214	200 00 0 00 032233 	C33300:	MOVE	[XWD 1,17]	;PRELOAD AC WITH 1,,17
+  1395	031215	402 00 0 00 000001 		SETZM	1		;PRELOAD E WITH 0
+  1396	031216	476 00 0 00 000017 		SETOM	17		;PRELOAD C(AC-RIGHT) WITH 1,,1
+  1397	031217	262 00 0 00 000001 		POP	1		;*POP SHOULD PLACE -1,,-1 INTO E AND 0,,16 INTO AC
+  1398	031220	312 01 0 00 032226 		CAME	1,[-1]		;PASS IF C(E)=-1,,-1
+  1399						STOP^
+  1400	031221	254 04 0 00 031222 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1401	031222	324 00 0 00 031223 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1402									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1403									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1404									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1405	031223	302 00 0 00 000016 	C33310:	CAIE	16		;PASS IF C(AC)=0,,16
+  1406						STOP^
+  1407	031224	254 04 0 00 031225 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1408	031225	324 00 0 00 031226 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1409									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1410									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1411									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1412
+  1413					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 17
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF POP INSTRUCTION                                                            SEQ 0044
+
+  1414					;THIS TEST VERIFIES THAT POP PLACES C(C(AC-RIGHT)) INTO E AND ADDS 1,,1 TO AC
+  1415					;IN THIS CASE, THE AC IS PRELOADED WITH -1,,0; E=17
+  1416					;C(AC-RIGHT) IS PRELOADED WITH 0; AND POP IS EXECUTED.  POP SHOULD PLACE 0
+  1417					;INTO E.  IF AC IS UPDATED CORRECTLY, THIS TEST PASSES.
+  1418
+  1419	031226	205 01 0 00 777777 	C33400:	MOVSI	1,-1		;PRELOAD AC WITH -1,,0
+  1420	031227	400 00 0 00 000000 		SETZ			;CLEAR C(AC-RIGHT)
+  1421	031230	262 01 0 00 000017 		POP	1,17		;*POP SHOULD PLACE 0 INTO E
+  1422	031231	332 00 0 00 000017 		SKIPE	17		;PASS IF C(E)=0
+  1423						STOP^
+  1424	031232	254 04 0 00 031233 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1425	031233	324 00 0 00 031234 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1426									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1427									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1428									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1429
+  1430					;**********
+  1431
+  1432					;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON POP.
+  1433					;THE AC IS PRELOADED WITH 2,,0; THEN POP IS EXECUTED. POP SHOULD SUBTRACT ONE FROM
+  1434					;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17.
+  1435					;IF A CARRY WAS GENERATED, THIS TEST PASSES.
+  1436
+  1437	031234	515 02 0 00 000002 	C33401:	HRLZI	2,2		;PRELOAD AC WITH 2,,0
+  1438	031235	262 02 0 00 000000 		POP	2,0		;*POP SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+  1439	031236	302 02 0 00 777777 		CAIE	2,-1		;PASS IF C(AC) = 0,,-1	(CARRY WAS GENERATED)
+  1440						STOP^
+  1441	031237	254 04 0 00 031240 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1442	031240	324 00 0 00 031241 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1443									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1444									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1445									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1446
+  1447					;************
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 18
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF POPJ INSTRUCTION                                                           SEQ 0045
+
+  1448					SUBTTL	TEST OF POPJ INSTRUCTION
+  1449
+  1450					;**********
+  1451
+  1452					;THIS TEST VERIFIES THAT POPJ JUMPS TO THE LOCATION ADDRESSED BY RIGHT HALF OF
+  1453					;C(C(AC-RIGHT)) BEFORE POPJ DECREMENTED THE AC.
+  1454					;THIS TEST PASSES IF POPJ JUMPS CORRECTLY.
+  1455
+  1456	031241	200 00 0 00 032223 	C33500:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+  1457	031242	201 01 0 00 031245 		MOVEI	1,.+3		;PRELOAD C(AC-RIGHT) WITH .+3
+  1458	031243	263 00 0 00 031245 		POPJ	.+2		;*POPJ SHOULD JUMP TO LOCATION
+  1459									;ADDRESSED BY C(C(AC-RIGHT))
+  1460						STOP^
+  1461	031244	254 04 0 00 031245 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1462	031245	324 00 0 00 031246 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1463									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1464									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1465									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1466
+  1467					;**********
+  1468
+  1469					;THIS TEST VERIFIES THAT POPJ SUBTRACTS 1,,1 FROM THE AC
+  1470					;THIS AC IS PRELOADED WITH 1,,1; THEN,POPJ IS EXECUTED.
+  1471					;THE AC IS CHECKED FOR 0.  IF C(AC)=0, THIS TEST PASSES.
+  1472
+  1473	031246	200 00 0 00 032223 	C33600:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+  1474	031247	201 01 0 00 031251 		MOVEI	1,.+2		;PRELOAD C(AC-NIGHT)WITH .+2
+  1475	031250	263 00 0 00 031251 		POPJ	.+1		;*POPJ SHOULD SUBTRACT 1,,1 FROM AC
+  1476	031251	312 00 0 00 032227 		CAME	[0]		;PASS IF C(AC)=0
+  1477						STOP^
+  1478	031252	254 04 0 00 031253 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1479	031253	324 00 0 00 031254 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1480									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1481									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1482									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1483
+  1484					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 19
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF POPJ INSTRUCTION                                                           SEQ 0046
+
+  1485					;THIS TEST VERIFIES THAT POPJ JUMPS TO THE LOCATION ADDRESSED BY RIGHT HALF OF
+  1486					;C(C(AC-RIGHT)) BEFORE POPJ DECREMENTED THE AC.
+  1487					;THIS TEST PASSES IF POPJ JUMPS CORRECTLY.
+  1488
+  1489	031254	200 00 0 00 032223 	C33700:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+  1490	031255	201 01 0 00 031257 		MOVEI	1,.+2		;PRELOAD C(AC-RIGHT) WITH C33700+3
+  1491
+  1492	031256	263 00 0 00 031260 		POPJ	.+2		;*POPJ SHOULD JUMP TO C33700+3
+  1493	031257	334 00 0 00 000000 		SKIPA			;PASS IF POPJ JUMPED CORRECTLY
+  1494						STOP^
+  1495	031260	254 04 0 00 031261 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1496	031261	324 00 0 00 031262 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1497									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1498									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1499									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1500
+  1501					;**********
+  1502
+  1503					;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON POPJ.
+  1504					;THE AC IS PRELOADED WITH 2,,0; THEN POPJ IS EXECUTED POPJ SHOULD SUBTRACT ONE FROM
+  1505					;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17.
+  1506					;IF A CARRY WAS GENERATED, THIS TEST PASSES.
+  1507
+  1508	031262	515 02 0 00 000002 	C33701:	HRLZI	2,2		;PRELOAD AC WITH 2,,0
+  1509	031263	201 00 0 00 031265 		MOVEI	0,.+2		;PRELOAD RH(AC) WITH C33701: +3
+  1510	031264	263 02 0 00 000000 		POPJ	2,0		;*POPJ SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+  1511	031265	302 02 0 00 777777 		CAIE	2,-1		;PASS IF C(AC)=0,,-1 (CARRY WAS GENERATED)
+  1512						STOP^
+  1513	031266	254 04 0 00 031267 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1514	031267	324 00 0 00 031270 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1515									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1516									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1517									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1518
+  1519					;*************
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 20
+DAKAGM	MAC	19-JAN-77 17:37		XCT INSTRUCTION - ADDITIONAL TESTS                                                 SEQ 0047
+
+  1520					SUBTTL	XCT INSTRUCTION - ADDITIONAL TESTS
+  1521
+  1522					;**********
+  1523
+  1524					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+  1525					;TO THE LOCATION OF THE XCT.
+  1526
+  1527	031270	477 00 0 00 000001 	C34000:	SETOB	1
+  1528	031271	256 00 0 00 032234 		XCT	[CAME 0,1]	;*CAME SHOULD SKIP TO C34000+3
+  1529						STOP^
+  1530	031272	254 04 0 00 031273 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1531	031273	324 00 0 00 031274 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1532									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1533									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1534									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1535
+  1536					;**********
+  1537
+  1538					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+  1539					;TO THE LOCATION OF THE XCT.
+  1540
+  1541	031274	477 00 0 00 000001 	C34100:	SETOB	1
+  1542	031275	256 00 0 00 032236 		XCT	[XCT[XCT[CAME 0,1]]]	;*CAME SHOULD SKIP TO C34100+3
+  1543						STOP^
+  1544	031276	254 04 0 00 031277 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1545	031277	324 00 0 00 031300 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1546									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1547									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1548									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1549
+  1550					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 21
+DAKAGM	MAC	19-JAN-77 17:37		XCT INSTRUCTION - ADDITIONAL TESTS                                                 SEQ 0048
+
+  1551					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+  1552					;SPECIFIED BY THE JUMP.
+  1553
+  1554	031300	256 00 0 00 032237 	C34200:	XCT	[JRST .+4]	;*JRST SHOULD JUMP TO C34200+4
+  1555
+  1556	031301	254 04 0 00 000000 		HALT			;JRST SHOULD JUMP OVER THIS LOCATION
+  1557	031302	254 04 0 00 000000 		HALT			;JRST SHOULD JUMP OVER THIS LOCATION
+  1558						STOP^
+  1559	031303	254 04 0 00 031304 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1560	031304	324 00 0 00 031305 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1561									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1562									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1563									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1564
+  1565					;**********
+  1566
+  1567					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+  1568					;SPECIFIED BY THE JUMP AND THAT WHEN THE PC IS SAVED IT CONTAINS AN
+  1569					;ADDRESS ONE GREATER THAN THE LOCATION OF FIRST XCT OF THE CHAIN.
+  1570
+  1571	031305	402 00 0 00 000003 	C34300:	SETZM	3		;CLEAR AC OF JSP
+  1572	031306	256 00 0 00 032242 		XCT	[XCT[XCT[JSP 3,.+3]]] ;*JSP SHOULD JUMP TO C34300+4 AND
+  1573	031307	254 04 0 00 000000 		HALT			;THE SAVED PC SHOULD BE C 34300+2
+  1574	031310	254 04 0 00 000000 		HALT			;PASS IF JSP JUMPED CORRECTLY
+  1575	031311	620 03 0 00 031307 		TRZ	3,.-2		;AND SAVED PC=C34300+2
+  1576	031312	602 03 0 00 777777 		TRNE	3,-1
+  1577						STOP^
+  1578	031313	254 04 0 00 031314 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1579	031314	324 00 0 00 031315 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1580									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1581									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1582									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1583
+  1584					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 22
+DAKAGM	MAC	19-JAN-77 17:37		XCT INSTRUCTION - ADDITIONAL TESTS                                                 SEQ 0049
+
+  1585					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+  1586					;TO THE LOCATION OF THE XCT.
+  1587					;IN THIS CASE, NO SKIP SHOULD OCCUR  ;HENCE, THE INSTRUCTION
+  1588					;FOLLOWING XCT SHOULD BE EXECUTED AFTER 'CAME' IS EXECUTED.
+  1589
+  1590	031315	403 00 0 00 000000 	C34400:	SETZB	0		;SET-UP AC,E SO THAT
+  1591	031316	476 00 0 00 000001 		SETOM	1		;CAME WILL NOT SKIP
+  1592	031317	256 00 0 00 032234 		XCT	[CAME 0,1]	;*CAME SHOULD CAUSE EXECUTION
+  1593									;OF INSTRUCTION FOLLOWING XCT
+  1594	031320	254 00 0 00 031322 		JRST	.+2		;PASS IF THIS INSTRUCTION IS EXECUTED
+  1595						STOP^
+  1596	031321	254 04 0 00 031322 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1597	031322	324 00 0 00 031323 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1598									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1599									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1600									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1601
+  1602					;**********
+  1603
+  1604					;THIS TEST VERIFIES INDEXING FOR XCT OF AN ADD INSTRUCTION
+  1605					;C(4)=10, AND C(6)=3, SO THE RESULT IN 6 (THE AC) SHOULD BE 16
+  1606					;C(11)=13
+  1607
+  1608	031323	201 04 0 00 000010 	C34500:	MOVEI	4,10		;PRELOAD INDEX REG WITH 10
+  1609	031324	201 11 0 00 000013 		MOVEI	11,13		;PRELOAD EFFECTIVE ADDRESS WITH 13
+  1610	031325	201 06 0 00 000003 		MOVEI	6,3		;PRELOAD AC WITH 3
+  1611	031326	256 00 0 00 032243 		XCT	[ADD 6,1(4)]	;*ADD SHOULD PLACE 16 IN AC
+  1612	031327	302 06 0 00 000016 		CAIE	6,16		;PASS IF C(AC)=16
+  1613						STOP^
+  1614	031330	254 04 0 00 031331 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1615	031331	324 00 0 00 031332 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1616									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1617									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1618									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1619
+  1620					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 23
+DAKAGM	MAC	19-JAN-77 17:37		XCT INSTRUCTION - ADDITIONAL TESTS                                                 SEQ 0050
+
+  1621					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+  1622					;TO THE LOCATION OF THE XCT
+  1623					;IN THIS CASE, NO SKIP SHOULD OCCUR  ;HENCE, THE INSTRUCTION
+  1624					;FOLLOWING XCT SHOULD BE EXECUTED AFTER CAME IS EXECUTED.
+  1625
+  1626	031332	402 00 0 00 000002 	C34600:	SETZM	2		;SETUP E SO THAT SKIPL WILL NOT SKIP
+  1627	031333	256 00 0 00 032244 		XCT	[SKIPL 1,2]	;*SKIPL SHOULD CAUSE INSTRUCTION
+  1628									;OF FOLLOWING INSTRUCTION
+  1629	031334	254 00 0 00 031336 		JRST	.+2		;PASS IF THIS INSTRUCTION IS EXECUTED.
+  1630						STOP^
+  1631	031335	254 04 0 00 031336 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1632	031336	324 00 0 00 031337 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1633									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1634									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1635									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1636	031337	332 00 0 00 000001 	C34610:	SKIPE	1		;*SKIPE SHOULD SKIP BECAUSE XCT OF SKIPL
+  1637									;PLACED 0 INTO AC1
+  1638						STOP^
+  1639	031340	254 04 0 00 031341 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1640	031341	324 00 0 00 031342 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1641									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1642									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1643									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1644
+  1645					;**********
+  1646
+  1647					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+  1648					;TO THE LOCATION OF THE XCT.
+  1649
+  1650	031342	476 00 0 00 000006 	C34700:	SETOM	6		;SETUP E SO THAT SKIPL WILL SKIP
+  1651	031343	256 00 0 00 032245 		XCT	[SKIPL 3,6]	;*SKIPL SHOULD SKIP TO C34700+3
+  1652						STOP^
+  1653	031344	254 04 0 00 031345 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1654	031345	324 00 0 00 031346 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1655									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1656									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1657									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1658	031346	331 00 0 00 000003 	C34710:	SKIPL	3		;*SKIPE SHOULD SKIP BECAUSE XCT OF SKIPL
+  1659									;PLACED 0 INTO AC1
+  1660						STOP^
+  1661	031347	254 04 0 00 031350 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1662	031350	324 00 0 00 031351 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1663									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1664									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1665									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1666
+  1667					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 24
+DAKAGM	MAC	19-JAN-77 17:37		XCT INSTRUCTION - ADDITIONAL TESTS                                                 SEQ 0051
+
+  1668					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+  1669					;SPECIFIED BY THE JUMP.
+  1670					;THIS TEST ALSO VERIFIES CORRECT UPDATING OF THE AC FOR AOBJN
+  1671
+  1672	031351	200 03 0 00 032246 	C35000:	MOVE	3,[-2,,5]	;SETUP AC SO THAT AOBJN WILL JUMP
+  1673	031352	256 00 0 00 032247 		XCT	[AOBJN 3,.+3]	;*JUMP SHOULD BE TO C35000+4
+  1674	031353	254 04 0 00 000000 		HALT			;JUMP OVER THIS INSTRUCTION
+  1675	031354	254 04 0 00 000000 		HALT			;JUMP OVER THIS INSTRUCTION
+  1676	031355	312 03 0 00 032250 		CAME	3,[-1,,6]	;PASS IF C(AC)=-1,,6 AND AOBJN JUMPED
+  1677						STOP^
+  1678	031356	254 04 0 00 031357 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1679	031357	324 00 0 00 031360 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1680									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1681									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1682									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1683
+  1684					;**********
+  1685
+  1686					;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+  1687					;SPECIFIED BY THE JUMP.
+  1688					;THIS TEST ALSO VERIFIES CORRECT UPDATING OF THE AC FOR AOBJN
+  1689
+  1690	031360	200 03 0 00 032250 	C35100:	MOVE	3,[-1,,6]	;SETUP AC SO THAT AOBJN WILL NOT JUMP
+  1691	031361	256 00 0 00 032251 		XCT	[AOBJN 3,.+2]	;*AOBJN SHOULD NOT JUMP
+  1692	031362	312 03 0 00 032252 		CAME	3,[0,,7]	;PASS IF AOBJN DID NOT JUMP AND C(AC)=0,,7
+  1693						STOP^
+  1694	031363	254 04 0 00 031364 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1695	031364	324 00 0 00 031365 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1696									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1697									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1698									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1699
+  1700					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 25
+DAKAGM	MAC	19-JAN-77 17:37		TEST XCT INSTRUCTION WITH INDIRECT ADDRESSING AND INDEXING                         SEQ 0052
+
+  1701					SUBTTL	TEST XCT INSTRUCTION WITH INDIRECT ADDRESSING AND INDEXING
+  1702
+  1703					;**********
+  1704
+  1705					;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+  1706					;FROM AN INDIRECTLY ADDRESSED LOCATION
+  1707
+  1708	031365	403 00 0 00 000002 	C35200:	SETZB	2
+  1709	031366	254 00 0 00 031371 		JRST	.+3
+  1710	031367	000000	031370				.+1
+  1711	031370	476 00 0 00 000002 		SETOM	2		;THIS INSTRUCTION SHOULD BE EXECUTED
+  1712	031371	256 00 1 00 031367 		XCT	@.-2
+  1713	031372	312 02 0 00 032226 		CAME	2,[-1,,-1]	;PASS IF 'SETOM 2' WAS EXECUTED
+  1714						STOP^
+  1715	031373	254 04 0 00 031374 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1716	031374	324 00 0 00 031375 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1717									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1718									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1719									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1720
+  1721					;**********
+  1722
+  1723					;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+  1724					;FROM AN INDEXED LOCATION
+  1725
+  1726	031375	201 04 0 00 031376 	C35300:	MOVEI	4,.+1
+  1727	031376	254 00 0 00 031400 		JRST	.+2
+  1728	031377	302 04 0 00 031376 		CAIE	4,.-1		;THIS INSTRUCTION SHOULD BE EXECUTED
+  1729	031400	256 00 0 04 000001 		XCT	1(4)
+  1730						STOP			^;PASS IF 'CAIE 4,,-1' WAS EXECUTED
+  1731
+  1732	031401	254 04 0 00 031402 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1733	031402	324 00 0 00 031403 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1734									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1735									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1736									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1
+  1737
+  1738					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 26
+DAKAGM	MAC	19-JAN-77 17:37		TEST XCT INSTRUCTION WITH INDIRECT ADDRESSING AND INDEXING                         SEQ 0053
+
+  1739					;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+  1740					;FROM AN INDIRECTLY ADDRESSED AND INDEXED LOCATION
+  1741
+  1742	031403	402 00 0 00 000005 	C35400:	SETZM	5
+  1743	031404	201 03 0 00 031407 		MOVEI	3,.+3
+  1744	031405	254 00 0 00 031407 		JRST	.+2
+  1745	031406	201 05 0 00 031411 		MOVEI	5,.+3
+  1746	031407	256 00 1 03 777777 		XCT	@-1(3)
+  1747	031410	254 00 0 00 031412 		JRST	.+2
+  1748	031411	476 00 0 00 000005 		SETOM	5		;THIS INSTRUCTION SHOULD BE EXECUTED
+  1749	031412	312 05 0 00 032226 		CAME	5,[-1,,-1]	;PASS IF 'SETOM 5' WAS EXECUTED
+  1750						STOP^
+  1751	031413	254 04 0 00 031414 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1752	031414	324 00 0 00 031415 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1753									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1754									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1755									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1756
+  1757					;**********
+  1758
+  1759					;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INDIRECTLY ADDRESSED
+  1760					;AND INDEXED INSTRUCTION
+  1761
+  1762	031415	402 00 0 00 000003 	C35500:	SETZM	3
+  1763	031416	201 10 0 00 000003 		MOVEI	10,3
+  1764	031417	254 00 0 00 031424 		JRST	.+5
+  1765	031420	254 04 0 00 000000 		HALT
+  1766	031421	254 04 0 00 000000 		HALT
+  1767	031422	200 03 1 10 031420 		MOVE	3,@.-2(10)	;THIS INSTRUCTION SHOULD BE EXECUTED
+  1768	031423	254 04 0 00 032253 		HALT	[0,,707070]
+  1769	031424	256 00 0 00 031422 		XCT	.-2
+  1770	031425	302 03 0 00 707070 		CAIE	3,707070	;PASS IF 'MOVE 3,@.-2(10)' WAS EXECUTED
+  1771						STOP^
+  1772	031426	254 04 0 00 031427 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1773	031427	324 00 0 00 031430 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1774									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1775									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1776									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1777
+  1778					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 27
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0054
+
+  1779					SUBTTL	TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER
+  1780
+  1781					;**********
+  1782
+  1783					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1784					;IN THIS CASE, 0,,0 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+  1785					;SO THAT FINAL C(AC)=0,,0.
+  1786					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1787
+  1788	031430	200 00 0 00 032227 	C35600:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+  1789	031431	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1790	031432	241 00 0 00 777775 		ROT	0,-3		;*ROT SHOULD ROTATE 0,,0 RIGHT 3 BIT POSITIONS
+  1791	031433	312 00 0 00 032227 		CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+  1792						STOP^
+  1793	031434	254 04 0 00 031435 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1794	031435	324 00 0 00 031436 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1795									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1796									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1797									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1798	031436	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1799						STOP^
+  1800	031437	254 04 0 00 031440 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1801	031440	324 00 0 00 031441 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1802									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1803									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1804									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1805
+  1806					;**********
+  1807
+  1808					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1809					;IN THIS CASE, -1,,-1 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+  1810					;SO THAT FINAL C(AC)=-1,,-1.
+  1811					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1812
+  1813	031441	200 00 0 00 032226 	C35700:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH 0,,0
+  1814	031442	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1815	031443	241 00 0 00 777775 		ROT	0,-3		;*ROT SHOULD ROTATE -1,,-1 RIGHT 3 BIT POSITIONS
+  1816	031444	312 00 0 00 032226 		CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+  1817						STOP^
+  1818	031445	254 04 0 00 031446 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1819	031446	324 00 0 00 031447 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1820									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1821									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1822									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1823	031447	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1824						STOP^
+  1825	031450	254 04 0 00 031451 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1826	031451	324 00 0 00 031452 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1827									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1828									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1829									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1830
+  1831					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 28
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0055
+
+  1832					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1833					;IN THIS CASE, 252525,,252525 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+  1834					;SO THAT FINAL C(AC)=525252,,525252.
+  1835					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1836
+  1837	031452	200 00 0 00 032255 	C36000:	MOVE	0,[252525,,252525] ;PRELOAD AC WITH 252525,,252525
+  1838	031453	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1839	031454	241 00 0 00 777775 		ROT	0,-3		;*ROT SHOULD ROTATE 252525,,252525
+  1840									;RIGHT 3 BIT POSITIONS
+  1841	031455	312 00 0 00 032256 		CAME	0,[525252,,525252] ;PASS IF C(AC)=525252,,525252
+  1842						STOP^
+  1843	031456	254 04 0 00 031457 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1844	031457	324 00 0 00 031460 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1845									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1846									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1847									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1848	031460	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1849						STOP^
+  1850	031461	254 04 0 00 031462 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1851	031462	324 00 0 00 031463 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1852									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1853									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1854									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1855
+  1856					;**********
+  1857
+  1858					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1859					;IN THIS CASE, 525252,,525252 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+  1860					;SO THAT FINAL C(AC)=252525,,252525.
+  1861					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1862
+  1863	031463	200 00 0 00 032256 	C36100:	MOVE	0,[525252,,525252] ;PRELOAD AC WITH 525252,,525252
+  1864	031464	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1865	031465	241 00 0 00 777775 		ROT	0,-3		;*ROT SHOULD ROTATE 525252,,525252
+  1866									;RIGHT 3 BIT POSITIONS
+  1867	031466	312 00 0 00 032255 		CAME	0,[252525,,252525] ;PASS IF C(AC)=252525,,252525
+  1868						STOP^
+  1869	031467	254 04 0 00 031470 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1870	031470	324 00 0 00 031471 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1871									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1872									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1873									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1874	031471	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1875						STOP^
+  1876	031472	254 04 0 00 031473 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1877	031473	324 00 0 00 031474 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1878									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1879									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1880									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1881
+  1882					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 29
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0056
+
+  1883					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1884					;IN THIS CASE, 230703,,603700 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+  1885					;SO THAT FINAL C(AC)=023070,,360370.
+  1886					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1887
+  1888	031474	200 00 0 00 032257 	C36200:	MOVE	0,[230703,,603700] ;PRELOAD AC WITH 230703,,603700
+  1889	031475	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1890	031476	241 00 0 00 777775 		ROT	0,-3		;*ROT SHOULD ROTATE 230703,,603700
+  1891									;RIGHT 3 BIT POSITIONS
+  1892	031477	312 00 0 00 032260 		CAME	0,[023070,,360370] ;PASS IF C(AC)=023070,,360370
+  1893						STOP^
+  1894	031500	254 04 0 00 031501 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1895	031501	324 00 0 00 031502 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1896									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1897									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1898									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1899	031502	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1900						STOP^
+  1901	031503	254 04 0 00 031504 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1902	031504	324 00 0 00 031505 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1903									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1904									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1905									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1906
+  1907					;**********
+  1908
+  1909					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1910					;IN THIS CASE, 007603,,607062 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+  1911					;SO THAT FINAL C(AC)=200760,,360706.
+  1912					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1913
+  1914	031505	200 00 0 00 032261 	C36300:	MOVE	0,[007603,,607062] ;PRELOAD AC WITH 007603,,607062
+  1915	031506	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1916	031507	241 00 0 00 777775 		ROT	0,-3		;*ROT SHOULD ROTATE 007603,,607062
+  1917									;RIGHT 3 BIT POSITIONS
+  1918	031510	312 00 0 00 032262 		CAME	0,[200760,,360706] ;PASS IF C(AC)=200760,,360706
+  1919						STOP^
+  1920	031511	254 04 0 00 031512 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1921	031512	324 00 0 00 031513 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1922									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1923									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1924									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1925	031513	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1926						STOP^
+  1927	031514	254 04 0 00 031515 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1928	031515	324 00 0 00 031516 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1929									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1930									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1931									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1932
+  1933					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 30
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0057
+
+  1934					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1935					;IN THIS CASE, 0,,0 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+  1936					;SO THAT FINAL C(AC)=0,,0.
+  1937					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1938
+  1939	031516	200 02 0 00 032227 	C36400:	MOVE	2,[0,,0]	;PRELOAD AC WITH 0,,0
+  1940	031517	200 03 0 00 032254 		MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1941	031520	241 02 0 00 000015 		ROT	2,15		;*ROT SHOULD ROTATE 0,,0 LEFT 15 BIT POSITIONS
+  1942	031521	312 02 0 00 032227 		CAME	2,[0,,0]	;PASS IF C(AC)=0,,0
+  1943						STOP^
+  1944	031522	254 04 0 00 031523 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1945	031523	324 00 0 00 031524 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1946									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1947									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1948									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1949	031524	312 03 0 00 032254 		CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1950						STOP^
+  1951	031525	254 04 0 00 031526 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1952	031526	324 00 0 00 031527 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1953									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1954									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1955									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1956
+  1957					;**********
+  1958
+  1959					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1960					;IN THIS CASE, -1,,-1 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+  1961					;SO THAT FINAL C(AC)=-1,,-1.
+  1962					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1963
+  1964	031527	200 02 0 00 032226 	C36500:	MOVE	2,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+  1965	031530	200 03 0 00 032254 		MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1966	031531	241 02 0 00 000015 		ROT	2,15		;*ROT SHOULD ROTATE -1,,-1 LEFT 15 BIT POSITIONS
+  1967	031532	312 02 0 00 032226 		CAME	2,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+  1968						STOP^
+  1969	031533	254 04 0 00 031534 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1970	031534	324 00 0 00 031535 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1971									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1972									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1973									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1974	031535	312 03 0 00 032254 		CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  1975						STOP^
+  1976	031536	254 04 0 00 031537 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1977	031537	324 00 0 00 031540 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1978									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1979									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1980									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1981
+  1982					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 31
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0058
+
+  1983					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  1984					;IN THIS CASE, 252525,,252525 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+  1985					;SO THAT FINAL C(AC)=525252,,525252.
+  1986					;C(AC+1) SHOULD NOT BE AFFECTED.
+  1987
+  1988	031540	200 02 0 00 032255 	C36600:	MOVE	2,[252525,,252525] ;PRELOAD AC WITH 252525,,252525
+  1989	031541	200 03 0 00 032254 		MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  1990	031542	241 02 0 00 000015 		ROT	2,15		;*ROT SHOULD ROTATE 252525,,252525
+  1991									;LEFT 15 BIT POSITIONS
+  1992	031543	312 02 0 00 032256 		CAME	2,[525252,,525252] ;PASS IF C(AC)=525252,,525252
+  1993						STOP^
+  1994	031544	254 04 0 00 031545 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  1995	031545	324 00 0 00 031546 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  1996									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  1997									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  1998									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  1999	031546	312 03 0 00 032254 		CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  2000						STOP^
+  2001	031547	254 04 0 00 031550 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2002	031550	324 00 0 00 031551 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2003									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2004									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2005									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2006
+  2007					;**********
+  2008
+  2009					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  2010					;IN THIS CASE, 525252,,525252 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+  2011					;SO THAT FINAL C(AC)=252525,,252525.
+  2012					;C(AC+1) SHOULD NOT BE AFFECTED.
+  2013
+  2014	031551	200 02 0 00 032256 	C36700:	MOVE	2,[525252,,525252] ;PRELOAD AC WITH 525252,,525252
+  2015	031552	200 03 0 00 032254 		MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  2016	031553	241 02 0 00 000015 		ROT	2,15		;*ROT SHOULD ROTATE 525252,,525252
+  2017									;LEFT 15 BIT POSITIONS
+  2018	031554	312 02 0 00 032255 		CAME	2,[252525,,252525] ;PASS IF C(AC)=252525,,252525
+  2019						STOP^
+  2020	031555	254 04 0 00 031556 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2021	031556	324 00 0 00 031557 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2022									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2023									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2024									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2025	031557	312 03 0 00 032254 		CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  2026						STOP^
+  2027	031560	254 04 0 00 031561 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2028	031561	324 00 0 00 031562 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2029									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2030									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2031									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2032
+  2033					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 32
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0059
+
+  2034					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  2035					;IN THIS CASE, 230703,,603700 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+  2036					;SO THAT FINAL C(AC)074076,,004616.
+  2037					;C(AC+1) SHOULD NOT BE AFFECTED.
+  2038
+  2039	031562	200 02 0 00 032257 	C37000:	MOVE	2,[230703,,603700] ;PRELOAD AC WITH 230703,,603700
+  2040	031563	200 03 0 00 032254 		MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  2041	031564	241 02 0 00 000015 		ROT	2,15		;*ROT SHOULD ROTATE 230703,,603700
+  2042									;LEFT 15 BIT POSITIONS
+  2043	031565	312 02 0 00 032263 		CAME	2,[074076,,004616] ;PASS IF C(AC)074076,,004616
+  2044						STOP^
+  2045	031566	254 04 0 00 031567 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2046	031567	324 00 0 00 031570 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2047									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2048									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2049									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2050	031570	312 03 0 00 032254 		CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  2051						STOP^
+  2052	031571	254 04 0 00 031572 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2053	031572	324 00 0 00 031573 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2054									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2055									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2056									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2057
+  2058					;**********
+  2059
+  2060					;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+  2061					;IN THIS CASE, 007603,,607062 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+  2062					;SO THAT FINAL C(AC)074161,,440174.
+  2063					;C(AC+1) SHOULD NOT BE AFFECTED.
+  2064
+  2065	031573	200 02 0 00 032261 	C37100:	MOVE	2,[007603,,607062] ;PRELOAD AC WITH 007603,,607062
+  2066	031574	200 03 0 00 032254 		MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  2067	031575	241 02 0 00 000015 		ROT	2,15		;*ROT SHOULD ROTATE 007603,,607062
+  2068									;LEFT 15 BIT POSITIONS
+  2069	031576	312 02 0 00 032264 		CAME	2,[074161,,440174] ;PASS IF C(AC)074161,,440174
+  2070						STOP^
+  2071	031577	254 04 0 00 031600 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2072	031600	324 00 0 00 031601 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2073									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2074									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2075									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2076	031601	312 03 0 00 032254 		CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  2077						STOP^
+  2078	031602	254 04 0 00 031603 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2079	031603	324 00 0 00 031604 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2080									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2081									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2082									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2083
+  2084					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 33
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0060
+
+  2085					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2086					;IN THIS CASE, 0,,0 0,,0 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+  2087					;SO THAT FINAL C(AC)=0,,0 AND FINAL C(AC+1)=0,,0
+  2088
+  2089	031604	200 00 0 00 032227 	C37200:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+  2090	031605	200 01 0 00 032227 		MOVE	1,[0,,0]	;PRELOAD AC+1 WITH 0,,0
+  2091	031606	245 00 0 00 000003 		ROTC	0,3		;*ROTC SHOULD ROTATE 0,,0 0,,0 LEFT 3 BIT POSITIONS
+  2092	031607	312 00 0 00 032227 		CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+  2093						STOP^
+  2094	031610	254 04 0 00 031611 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2095	031611	324 00 0 00 031612 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2096									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2097									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2098									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2099	031612	312 01 0 00 032227 		CAME	1,[0,,0]	;PASS IF C(AC+1)=0,,0
+  2100						STOP^
+  2101	031613	254 04 0 00 031614 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2102	031614	324 00 0 00 031615 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2103									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2104									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2105									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2106
+  2107					;**********
+  2108
+  2109					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2110					;IN THIS CASE, -1,,-1 -1,,-1 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+  2111					;SO THAT FINAL C(AC)=-1,,-1 AND FINAL C(AC+1)=-1,,-1
+  2112
+  2113	031615	200 00 0 00 032226 	C37300:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+  2114	031616	200 01 0 00 032226 		MOVE	1,[-1,,-1]	;PRELOAD AC+1 WITH -1,,-1
+  2115	031617	245 00 0 00 000003 		ROTC	0,3		;*ROTC SHOULD ROTATE -1,,-1
+  2116									;-1,,-1 LEFT 3 BIT POSITIONS
+  2117	031620	312 00 0 00 032226 		CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+  2118						STOP^
+  2119	031621	254 04 0 00 031622 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2120	031622	324 00 0 00 031623 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2121									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2122									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2123									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2124	031623	312 00 0 00 032226 		CAME	0,[-1,,-1]	;PASS IF C(AC+1)=-1,,-1
+  2125						STOP^
+  2126	031624	254 04 0 00 031625 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2127	031625	324 00 0 00 031626 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2128									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2129									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2130									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2131
+  2132					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 34
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0061
+
+  2133					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2134					;IN THIS CASE, 252525,,252525 252525,,252525 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+  2135					;SO THAT FINAL C(AC)=525252,,525252 AND FINAL C(AC+1)=525252,,525252
+  2136
+  2137	031626	200 00 0 00 032255 	C37400:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+  2138	031627	200 01 0 00 032255 		MOVE	1,[252525,,252525]	;PRELOAD AC+1 WITH 252525,,252525
+  2139	031630	245 00 0 00 000003 		ROTC	0,3			;*ROTC SHOULD ROTATE 252525,,252525
+  2140										;252525,,252525 LEFT 3 BIT POSITIONS
+  2141	031631	312 00 0 00 032256 		CAME	0,[525252,,525252]	;PASS IF C(AC)=525252,,525252
+  2142						STOP^
+  2143	031632	254 04 0 00 031633 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2144	031633	324 00 0 00 031634 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2145									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2146									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2147									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2148	031634	312 01 0 00 032256 		CAME	1,[525252,,525252]	;PASS IF C(AC+1)=525252,,525252
+  2149						STOP^
+  2150	031635	254 04 0 00 031636 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2151	031636	324 00 0 00 031637 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2152									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2153									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2154									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2155
+  2156					;**********
+  2157
+  2158					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2159					;IN THIS CASE, 525252,,525252 525252,,525252 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+  2160					;SO THAT FINAL C(AC)=252525,,252525 AND FINAL C(AC+1)=252525,,252525
+  2161
+  2162	031637	200 00 0 00 032256 	C37500:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+  2163	031640	200 01 0 00 032256 		MOVE	1,[525252,,525252]	;PRELOAD AC+1 WITH 525252,,525252
+  2164	031641	245 00 0 00 000003 		ROTC	0,3			;*ROTC SHOULD ROTATE 525252,,525252
+  2165										;525252,,525252 LEFT 3 BIT POSITIONS
+  2166	031642	312 00 0 00 032255 		CAME	0,[252525,,252525]	;PASS IF C(AC)=252525,,252525
+  2167						STOP^
+  2168	031643	254 04 0 00 031644 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2169	031644	324 00 0 00 031645 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2170									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2171									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2172									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2173	031645	312 01 0 00 032255 		CAME	1,[252525,,252525]	;PASS IF C(AC+1)=252525,,252525
+  2174						STOP^
+  2175	031646	254 04 0 00 031647 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2176	031647	324 00 0 00 031650 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2177									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2178									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2179									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2180
+  2181					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 35
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0062
+
+  2182					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2183					;IN THIS CASE, 230703,,603700 770037,,600377 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+  2184					;SO THAT FINAL C(AC)=307036,,37007 AND FINAL C(AC+1)=700376,,003772
+  2185
+  2186	031650	200 00 0 00 032257 	C37600:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+  2187	031651	200 01 0 00 032265 		MOVE	1,[770037,,600377]	;PRELOAD AC+1 WITH 770037,,600377
+  2188	031652	245 00 0 00 000003 		ROTC	0,3			;*ROTC SHOULD ROTATE 230703,,603700
+  2189										;770037,,600377 LEFT 3 BIT POSITIONS
+  2190	031653	312 00 0 00 032266 		CAME	0,[307036,,037007]	;PASS IF C(AC)=307036,,37007
+  2191						STOP^
+  2192	031654	254 04 0 00 031655 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2193	031655	324 00 0 00 031656 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2194									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2195									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2196									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2197	031656	312 01 0 00 032267 		CAME	1,[700376,,003772]	;PASS IF C(AC+1)=700376,,003772
+  2198						STOP^
+  2199	031657	254 04 0 00 031660 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2200	031660	324 00 0 00 031661 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2201									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2202									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2203									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2204
+  2205					;**********
+  2206
+  2207					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2208					;IN THIS CASE, 776003,,760077 007603,,607062 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+  2209					;SO THAT FINAL C(AC)=760037,,600770 AND FINAL C(AC+1)=076036,,070627
+  2210
+  2211	031661	200 00 0 00 032270 	C37700:	MOVE	0,[776003,,760077]	;PRELOAD AC WITH 776003,,760077
+  2212	031662	200 01 0 00 032261 		MOVE	1,[007603,,607062]	;PRELOAD AC+1 WITH 007603,,607062
+  2213	031663	245 00 0 00 000003 		ROTC	0,3			;*ROTC SHOULD ROTATE 776003,,760077
+  2214										;007603,,607062 LEFT 3 BIT POSITIONS
+  2215	031664	312 00 0 00 032271 		CAME	0,[760037,,600770]	;PASS IF C(AC)=076036,,070627
+  2216						STOP^
+  2217	031665	254 04 0 00 031666 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2218	031666	324 00 0 00 031667 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2219									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2220									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2221									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2222	031667	312 01 0 00 032272 		CAME	1,[076036,,070627]	;PASS IF C(AC+1)=760037,,600770
+  2223						STOP^
+  2224	031670	254 04 0 00 031671 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2225	031671	324 00 0 00 031672 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2226									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2227									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2228									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2229
+  2230					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 36
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0063
+
+  2231					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2232					;IN THIS CASE, 0,,0 0,,0 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+  2233					;SO THAT FINAL C(AC)=0,,0 AND FINAL C(AC+1)=0,,0
+  2234
+  2235	031672	200 00 0 00 032227 	C40000:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+  2236	031673	200 01 0 00 032227 		MOVE	1,[0,,0]	;PRELOAD AC+1 WITH 0,,0
+  2237	031674	245 00 0 00 000007 		ROTC	0,7		;*ROTC SHOULD ROTATE 0,,0 0,,0 LEFT 7 BIT POSITIONS
+  2238	031675	312 00 0 00 032227 		CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+  2239						STOP^
+  2240	031676	254 04 0 00 031677 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2241	031677	324 00 0 00 031700 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2242									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2243									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2244									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2245	031700	312 01 0 00 032227 		CAME	1,[0,,0]	;PASS IF C(AC+1)=0,,0
+  2246						STOP^
+  2247	031701	254 04 0 00 031702 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2248	031702	324 00 0 00 031703 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2249									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2250									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2251									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2252
+  2253					;**********
+  2254
+  2255					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2256					;IN THIS CASE, -1,,-1 -1,,-1  SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+  2257					;SO THAT FINAL C(AC)=-1,,-1 AND FINAL C(AC+1)=-1,,-1
+  2258
+  2259	031703	200 00 0 00 032226 	C40100:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+  2260	031704	200 01 0 00 032226 		MOVE	1,[-1,,-1]	;PRELOAD AC+1 WITH -1,,-1
+  2261	031705	245 00 0 00 000007 		ROTC	0,7		;*ROTC SHOULD ROTATE -1,,-1
+  2262									;-1,,-1 LEFT 7 BIT POSITIONS
+  2263	031706	312 00 0 00 032226 		CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+  2264						STOP^
+  2265	031707	254 04 0 00 031710 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2266	031710	324 00 0 00 031711 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2267									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2268									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2269									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2270	031711	312 01 0 00 032226 		CAME	1,[-1,,-1]	;PASS IF C(AC+1)=-1,,-1
+  2271						STOP^
+  2272	031712	254 04 0 00 031713 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2273	031713	324 00 0 00 031714 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2274									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2275									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2276									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2277
+  2278					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 37
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0064
+
+  2279					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2280					;IN THIS CASE, 252525,,252525 252525,,252525 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+  2281					;SO THAT FINAL C(AC)=525252,,525252 AND FINAL C(AC+1)=525252,,525252
+  2282
+  2283	031714	200 00 0 00 032255 	C40200:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+  2284	031715	200 01 0 00 032255 		MOVE	1,[252525,,252525]	;PRELOAD AC+1 WITH 252525,,252525
+  2285	031716	245 00 0 00 000007 		ROTC	0,7			;*ROTC SHOULD ROTATE 252525,,252525
+  2286										;252525,,252525 LEFT 7 BIT POSITIONS
+  2287	031717	312 00 0 00 032256 		CAME	0,[525252,,525252]	;PASS IF C(AC)=525252,,525252
+  2288						STOP^
+  2289	031720	254 04 0 00 031721 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2290	031721	324 00 0 00 031722 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2291									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2292									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2293									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2294	031722	312 01 0 00 032256 		CAME	1,[525252,,525252]	;PASS IF C(AC+1)=525252,,525252
+  2295						STOP^
+  2296	031723	254 04 0 00 031724 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2297	031724	324 00 0 00 031725 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2298									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2299									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2300									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2301
+  2302					;**********
+  2303
+  2304					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2305					;IN THIS CASE, 525252,,525252 525252,,525252 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+  2306					;SO THAT FINAL C(AC)=252525,,252525 AND FINAL C(AC+1)=252525,,252525
+  2307
+  2308	031725	200 00 0 00 032256 	C40300:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+  2309	031726	200 01 0 00 032256 		MOVE	1,[525252,,525252]	;PRELOAD AC+1 WITH 525252,,525252
+  2310	031727	245 00 0 00 000007 		ROTC	0,7			;*ROTC SHOULD ROTATE 525252,,525252
+  2311										;525252,,525252 LEFT 7 BIT POSITIONS
+  2312	031730	312 00 0 00 032255 		CAME	0,[252525,,252525]	;PASS IF C(AC)=252525,,252525
+  2313						STOP^
+  2314	031731	254 04 0 00 031732 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2315	031732	324 00 0 00 031733 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2316									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2317									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2318									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2319	031733	312 01 0 00 032255 		CAME	1,[252525,,252525]	;PASS IF C(AC+1)=252525,,252525
+  2320						STOP^
+  2321	031734	254 04 0 00 031735 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2322	031735	324 00 0 00 031736 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2323									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2324									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2325									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2326
+  2327					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 38
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0065
+
+  2328					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2329					;IN THIS CASE, 230703,,603700 770037,,600377 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+  2330					;SO THAT FINAL C(AC)=160740,,760176 AND FINAL C(AC+1)=007740,,077646
+  2331
+  2332	031736	200 00 0 00 032257 	C40400:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+  2333	031737	200 01 0 00 032265 		MOVE	1,[770037,,600377]	;PRELOAD AC+1 WITH 770037,,600377
+  2334	031740	245 00 0 00 000007 		ROTC	0,7			;*ROTC SHOULD ROTATE 230703,,603700
+  2335										;770037,,600377 LEFT 7 BIT POSITIONS
+  2336	031741	312 00 0 00 032273 		CAME	0,[160740,,760176]	;PASS IF C(AC)=160740,,760176
+  2337						STOP^
+  2338	031742	254 04 0 00 031743 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2339	031743	324 00 0 00 031744 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2340									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2341									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2342									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2343	031744	312 01 0 00 032274 		CAME	1,[007740,,077646]	;PASS IF C(AC+1)=007740,,077646
+  2344						STOP^
+  2345	031745	254 04 0 00 031746 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2346	031746	324 00 0 00 031747 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2347									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2348									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2349									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2350
+  2351					;**********
+  2352
+  2353					;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+  2354					;IN THIS CASE, 776003,,760077 007603,,607063 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+  2355					;SO THAT FINAL C(AC)=400774,,017610 AND FINAL C(AC+1)=740741,,614577
+  2356
+  2357	031747	200 00 0 00 032270 	C40500:	MOVE	0,[776003,,760077]	;PRELOAD AC WITH 776003,,760077
+  2358	031750	200 01 0 00 032261 		MOVE	1,[007603,,607062]	;PRELOAD AC+1 WITH 007603,,607062
+  2359	031751	245 00 0 00 000007 		ROTC	0,7			;*ROTC SHOULD ROTATE 776003,,760077
+  2360										;007603,,607062 LEFT 7 BIT POSITIONS
+  2361	031752	312 00 0 00 032275 		CAME	0,[400774,,017601]	;PASS IF C(AC)=400774,,017601
+  2362						STOP^
+  2363	031753	254 04 0 00 031754 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2364	031754	324 00 0 00 031755 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2365									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2366									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2367									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2368	031755	312 01 0 00 032276 		CAME	1,[740741,,614577]	;PASS IF C(AC+1)=740741,,614577
+  2369						STOP^
+  2370	031756	254 04 0 00 031757 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2371	031757	324 00 0 00 031760 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2372									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2373									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2374									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2375
+  2376					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 39
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0066
+
+  2377					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2378					;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2379					;SO THAT FINAL C(AC)=0,,0.
+  2380					;C(AC+1) SHOULD NOT BE AFFECTED
+  2381
+  2382	031760	200 00 0 00 032227 	C40600:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+  2383	031761	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  2384	031762	242 00 0 00 777745 		LSH	0,-33		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+  2385									;RIGHT 33 OCTAL BIT POSITIONS
+  2386	031763	312 00 0 00 032227 		CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+  2387						STOP^
+  2388	031764	254 04 0 00 031765 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2389	031765	324 00 0 00 031766 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2390									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2391									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2392									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2393	031766	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  2394						STOP^
+  2395	031767	254 04 0 00 031770 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2396	031770	324 00 0 00 031771 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2397									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2398									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2399									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2400
+  2401					;**********
+  2402
+  2403					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2404					;IN -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2405					;SO THAT FINAL C(AC)=0,,777.
+  2406					;C(AC+1) SHOULD NOT BE AFFECTED
+  2407
+  2408	031771	200 00 0 00 032226 	C40700:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+  2409	031772	200 01 0 00 032254 		MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+  2410	031773	242 00 0 00 777745 		LSH	0,-33		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+  2411									;RIGHT 33 OCTAL BIT POSITIONS
+  2412	031774	312 00 0 00 032277 		CAME	0,[0,777]	;PASS IF C(AC)=0,,777
+  2413						STOP^
+  2414	031775	254 04 0 00 031776 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2415	031776	324 00 0 00 031777 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2416									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2417									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2418									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2419	031777	312 01 0 00 032254 		CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+  2420						STOP^
+  2421	032000	254 04 0 00 032001 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2422	032001	324 00 0 00 032002 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2423									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2424									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2425									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2426
+  2427					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 40
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0067
+
+  2428					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2429					;IN 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2430					;SO THAT FINAL C(AC)=0,,252.
+  2431					;C(AC+1) SHOULD NOT BE AFFECTED
+  2432
+  2433	032002	200 00 0 00 032255 	C41000:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+  2434	032003	200 01 0 00 032254 		MOVE	1,[172737,,405060] 	;PRELOAD AC+1 WITH 172737,,405060
+  2435	032004	242 00 0 00 777745 		LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+  2436										;RIGHT 33 OCTAL BIT POSITIONS
+  2437	032005	312 00 0 00 032300 		CAME	0,[0,,252]		;PASS IF C(AC)=0,,252
+  2438						STOP^
+  2439	032006	254 04 0 00 032007 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2440	032007	324 00 0 00 032010 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2441									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2442									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2443									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2444	032010	312 01 0 00 032254 		CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2445						STOP^
+  2446	032011	254 04 0 00 032012 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2447	032012	324 00 0 00 032013 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2448									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2449									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2450									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2451
+  2452					;**********
+  2453
+  2454					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2455					;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2456					;SO THAT FINAL C(AC)=0,,525.
+  2457					;C(AC+1) SHOULD NOT BE AFFECTED
+  2458
+  2459	032013	200 00 0 00 032256 	C41100:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+  2460	032014	200 01 0 00 032254 		MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+  2461	032015	242 00 0 00 777745 		LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+  2462										;RIGHT 33 OCTAL BIT POSITIONS
+  2463	032016	312 00 0 00 032301 		CAME	0,[0,,525]		;PASS IF C(AC)=0,,525
+  2464						STOP^
+  2465	032017	254 04 0 00 032020 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2466	032020	324 00 0 00 032021 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2467									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2468									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2469									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2470	032021	312 01 0 00 032254 		CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2471						STOP^
+  2472	032022	254 04 0 00 032023 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2473	032023	324 00 0 00 032024 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2474									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2475									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2476									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2477
+  2478					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 41
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0068
+
+  2479					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2480					;IN THIS CASE, 230703,,603700 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2481					;SO THAT FINAL C(AC)=0,,230.
+  2482					;C(AC+1) SHOULD NOT BE AFFECTED
+  2483
+  2484	032024	200 00 0 00 032257 	C41200:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+  2485	032025	200 01 0 00 032254 		MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+  2486	032026	242 00 0 00 777745 		LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+  2487										;RIGHT 33 OCTAL BIT POSITIONS
+  2488	032027	312 00 0 00 032302 		CAME	0,[0,,230]		;PASS IF C(AC)=230703,,603700
+  2489						STOP^
+  2490	032030	254 04 0 00 032031 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2491	032031	324 00 0 00 032032 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2492									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2493									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2494									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2495	032032	312 01 0 00 032254 		CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2496						STOP^
+  2497	032033	254 04 0 00 032034 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2498	032034	324 00 0 00 032035 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2499									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2500									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2501									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2502
+  2503					;**********
+  2504
+  2505					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2506					;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2507					;SO THAT FINAL C(AC)=0,,7.
+  2508					;C(AC+1) SHOULD NOT BE AFFECTED
+  2509
+  2510	032035	200 00 0 00 032261 	C41300:	MOVE	0,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+  2511	032036	200 01 0 00 032254 		MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+  2512	032037	242 00 0 00 777745 		LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 007603,,6070062
+  2513										;RIGHT 33 OCTAL BIT POSITIONS
+  2514	032040	312 00 0 00 032252 		CAME	0,[0,,7]		;PASS IF C(AC)=0,,7
+  2515						STOP^
+  2516	032041	254 04 0 00 032042 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2517	032042	324 00 0 00 032043 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2518									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2519									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2520									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2521	032043	312 01 0 00 032254 		CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2522						STOP^
+  2523	032044	254 04 0 00 032045 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2524	032045	324 00 0 00 032046 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2525									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2526									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2527									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2528
+  2529					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 42
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0069
+
+  2530					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2531					;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+  2532					;SO THAT FINAL C(AC)=0,,0.
+  2533					;C(AC+1) SHOULD NOT BE AFFECTED
+  2534
+  2535	032046	200 01 0 00 032227 	C41400:	MOVE	1,[0,,0]	;PRELOAD AC WITH 0,,0
+  2536	032047	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2537	032050	242 01 0 00 777751 		LSH	1,-27		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+  2538									;RIGHT 27 OCTAL BIT POSITIONS
+  2539	032051	312 01 0 00 032227 		CAME	1,[0,,0]	;PASS IF C(AC)=0,,0
+  2540						STOP^
+  2541	032052	254 04 0 00 032053 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2542	032053	324 00 0 00 032054 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2543									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2544									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2545									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2546	032054	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2547						STOP^
+  2548	032055	254 04 0 00 032056 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2549	032056	324 00 0 00 032057 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2550									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2551									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2552									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2553
+  2554					;**********
+  2555
+  2556					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2557					;IN THIS CASE, -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+  2558					;SO THAT FINAL C(AC)=0,,17777.
+  2559					;C(AC+1) SHOULD NOT BE AFFECTED
+  2560
+  2561	032057	200 01 0 00 032226 	C41500:	MOVE	1,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+  2562	032060	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2563	032061	242 01 0 00 777751 		LSH	1,-27		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+  2564									;RIGHT 27 OCTAL BIT POSITIONS
+  2565	032062	312 01 0 00 032303 		CAME	1,[0,,17777]	;PASS IF C(AC)=0,17777
+  2566						STOP^
+  2567	032063	254 04 0 00 032064 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2568	032064	324 00 0 00 032065 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2569									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2570									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2571									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2572	032065	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2573						STOP^
+  2574	032066	254 04 0 00 032067 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2575	032067	324 00 0 00 032070 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2576									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2577									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2578									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2579
+  2580					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 43
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0070
+
+  2581					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2582					;IN THIS CASE, 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+  2583					;SO THAT FINAL C(AC)=0,,5252.
+  2584					;C(AC+1) SHOULD NOT BE AFFECTED
+  2585
+  2586	032070	200 01 0 00 032255 	C41600:	MOVE	1,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+  2587	032071	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2588	032072	242 01 0 00 777751 		LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+  2589										;RIGHT 27 OCTAL BIT POSITIONS
+  2590	032073	312 01 0 00 032304 		CAME	1,[0,,5252]		;PASS IF C(AC)=0,,5252
+  2591						STOP^
+  2592	032074	254 04 0 00 032075 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2593	032075	324 00 0 00 032076 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2594									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2595									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2596									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2597	032076	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2598						STOP^
+  2599	032077	254 04 0 00 032100 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2600	032100	324 00 0 00 032101 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2601									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2602									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2603									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2604
+  2605					;**********
+  2606
+  2607					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2608					;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+  2609					;SO THAT FINAL C(AC)=0,,12525.
+  2610					;C(AC+1) SHOULD NOT BE AFFECTED
+  2611
+  2612	032101	200 01 0 00 032256 	C41700:	MOVE	1,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+  2613	032102	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2614	032103	242 01 0 00 777751 		LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+  2615										;RIGHT 27 OCTAL BIT POSITIONS
+  2616	032104	312 01 0 00 032305 		CAME	1,[0,,12525]		;PASS IF C(AC)=0,,12525
+  2617						STOP^
+  2618	032105	254 04 0 00 032106 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2619	032106	324 00 0 00 032107 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2620									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2621									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2622									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2623	032107	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2624						STOP^
+  2625	032110	254 04 0 00 032111 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2626	032111	324 00 0 00 032112 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2627									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2628									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2629									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2630
+  2631					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 44
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0071
+
+  2632					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2633					;IN THIS CASE, 230703,602700 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+  2634					;SO THAT FINAL C(AC)=0,,4616.
+  2635					;C(AC+1) SHOULD NOT BE AFFECTED
+  2636
+  2637	032112	200 01 0 00 032257 	C42000:	MOVE	1,[230703,,603700]	;PRELOAD AC WITH 230703,603700
+  2638	032113	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2639	032114	242 01 0 00 777751 		LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+  2640										;RIGHT 27 OCTAL BIT POSITIONS
+  2641	032115	312 01 0 00 032306 		CAME	1,[0,,4616]		;PASS IF C(AC)=0,,4616
+  2642						STOP^
+  2643	032116	254 04 0 00 032117 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2644	032117	324 00 0 00 032120 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2645									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2646									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2647									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2648	032120	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2649						STOP^
+  2650	032121	254 04 0 00 032122 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2651	032122	324 00 0 00 032123 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2652									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2653									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2654									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2655
+  2656					;**********
+  2657
+  2658					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2659					;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+  2660					;SO THAT FINAL C(AC)=0,,174.
+  2661					;C(AC+1) SHOULD NOT BE AFFECTED
+  2662
+  2663	032123	200 01 0 00 032261 	C42100:	MOVE	1,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+  2664	032124	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2665	032125	242 01 0 00 777751 		LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 007603,,607062
+  2666										;RIGHT 27 OCTAL BIT POSITIONS
+  2667	032126	312 01 0 00 032307 		CAME	1,[0,,174]		;PASS IF C(AC)=0,,174
+  2668						STOP^
+  2669	032127	254 04 0 00 032130 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2670	032130	324 00 0 00 032131 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2671									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2672									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2673									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2674	032131	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2675						STOP^
+  2676	032132	254 04 0 00 032133 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2677	032133	324 00 0 00 032134 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2678									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2679									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2680									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2681
+  2682					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 45
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0072
+
+  2683					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2684					;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2685					;SO THAT FINAL C(AC)=0,,0.
+  2686					;C(AC+1) SHOULD NOT BE AFFECTED
+  2687
+  2688	032134	200 01 0 00 032227 	C42200:	MOVE	1,[0,0]		;PRELOAD AC WITH 0,,0
+  2689	032135	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2690	032136	242 01 0 00 777745 		LSH	1,-33		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+  2691									;RIGHT 33 OCTAL BIT POSITIONS
+  2692	032137	312 01 0 00 032227 		CAME	1,[0,,0]	;PASS IF C(AC)=0,,0
+  2693						STOP^
+  2694	032140	254 04 0 00 032141 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2695	032141	324 00 0 00 032142 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2696									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2697									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2698									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2699	032142	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2700						STOP^
+  2701	032143	254 04 0 00 032144 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2702	032144	324 00 0 00 032145 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2703									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2704									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2705									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2706
+  2707					;**********
+  2708
+  2709					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2710					;IN THIS CASE, -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2711					;SO THAT FINAL C(AC)=0,,777.
+  2712					;C(AC+1) SHOULD NOT BE AFFECTED
+  2713
+  2714	032145	200 01 0 00 032226 	C42300:	MOVE	1,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+  2715	032146	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2716	032147	242 01 0 00 777745 		LSH	1,-33		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+  2717									;RIGHT 33 OCTAL BIT POSITIONS
+  2718	032150	312 01 0 00 032277 		CAME	1,[0,,777]	;PASS IF C(AC)=0,,777
+  2719						STOP^
+  2720	032151	254 04 0 00 032152 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2721	032152	324 00 0 00 032153 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2722									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2723									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2724									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2725	032153	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2726						STOP^
+  2727	032154	254 04 0 00 032155 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2728	032155	324 00 0 00 032156 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2729									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2730									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2731									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2732
+  2733					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 46
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0073
+
+  2734					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2735					;IN THIS CASE, 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2736					;SO THAT FINAL C(AC)=0,,252.
+  2737					;C(AC+1) SHOULD NOT BE AFFECTED
+  2738
+  2739	032156	200 01 0 00 032255 	C42400:	MOVE	1,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+  2740	032157	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2741	032160	242 01 0 00 777745 		LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+  2742										;RIGHT 33 OCTAL BIT POSITIONS
+  2743	032161	312 01 0 00 032300 		CAME	1,[0,,252]		;PASS IF C(AC)=0,,252
+  2744						STOP^
+  2745	032162	254 04 0 00 032163 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2746	032163	324 00 0 00 032164 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2747									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2748									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2749									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2750	032164	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2751						STOP^
+  2752	032165	254 04 0 00 032166 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2753	032166	324 00 0 00 032167 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2754									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2755									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2756									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2757
+  2758					;**********
+  2759
+  2760					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2761					;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2762					;SO THAT FINAL C(AC)=0,,525.
+  2763					;C(AC+1) SHOULD NOT BE AFFECTED
+  2764
+  2765	032167	200 01 0 00 032256 	C42500:	MOVE	1,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+  2766	032170	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2767	032171	242 01 0 00 777745 		LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+  2768										;RIGHT 33 OCTAL BIT POSITIONS
+  2769	032172	312 01 0 00 032301 		CAME	1,[0,,525]		;PASS IF C(AC)=0,525
+  2770						STOP^
+  2771	032173	254 04 0 00 032174 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2772	032174	324 00 0 00 032175 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2773									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2774									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2775									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2776	032175	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2777						STOP^
+  2778	032176	254 04 0 00 032177 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2779	032177	324 00 0 00 032200 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2780									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2781									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2782									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2783
+  2784					;**********
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 47
+DAKAGM	MAC	19-JAN-77 17:37		TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER                        SEQ 0074
+
+  2785					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2786					;IN THIS CASE, 230703,,603700 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2787					;SO THAT FINAL C(AC)=0,,230.
+  2788					;C(AC+1) SHOULD NOT BE AFFECTED
+  2789
+  2790	032200	200 01 0 00 032257 	C42600:	MOVE	1,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+  2791	032201	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2792	032202	242 01 0 00 777745 		LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+  2793										;RIGHT 33 OCTAL BIT POSITIONS
+  2794	032203	312 01 0 00 032302 		CAME	1,[0,,230]		;PASS IF C(AC)=0,,230
+  2795						STOP^
+  2796	032204	254 04 0 00 032205 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2797	032205	324 00 0 00 032206 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2798									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2799									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2800									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2801	032206	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2802						STOP^
+  2803	032207	254 04 0 00 032210 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2804	032210	324 00 0 00 032211 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2805									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2806									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2807									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2808
+  2809					;**********
+  2810
+  2811					;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+  2812					;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+  2813					;SO THAT FINAL C(AC)=0,,7.
+  2814					;C(AC+1) SHOULD NOT BE AFFECTED
+  2815
+  2816	032211	200 01 0 00 032261 	C42700:	MOVE	1,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+  2817	032212	200 02 0 00 032254 		MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+  2818	032213	242 01 0 00 777745 		LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 007603,,607062
+  2819										;RIGHT 33 OCTAL BIT POSITIONS
+  2820	032214	312 01 0 00 032252 		CAME	1,[0,,7]		;PASS IF C(AC)=0,,7
+  2821						STOP^
+  2822	032215	254 04 0 00 032216 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2823	032216	324 00 0 00 032217 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2824									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2825									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2826									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2827	032217	312 02 0 00 032254 		CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+  2828						STOP^
+  2829	032220	254 04 0 00 032221 		HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+  2830	032221	324 00 0 00 032222 		JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+  2831									;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+  2832									;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+  2833									;AND CHANGE HALT INSTRUCTION TO JUMPA .+1^
+  2834
+  2835	032222	254 00 0 00 030057 		JRST	BEGEND		;REPEAT TEST
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 1
+STOR	KLM	18-JAN-77 11:42		*STOR* RESERVED STORAGE, JAN 18,1977                                               SEQ 0075
+
+  2836					SUBTTL	*STOR* RESERVED STORAGE, JAN 18,1977
+  2837
+  2838					;PROGRAM LITERALS
+  2839
+  2840						XLIST
+  2841					IFNDEF	$LPAPER,
+  2842	032223					LIT
+  2843	032223	000001	000001
+  2844	032224	254 00 0 00 030741
+  2845	032225	000016	541320
+  2846	032226	777777	777777
+  2847	032227	000000	000000
+  2848	032230	000002	000000
+  2849	032231	000001	000002
+  2850	032232	000002	000002
+  2851	032233	000001	000017
+  2852	032234	312 00 0 00 000001
+  2853	032235	256 00 0 00 032234
+  2854	032236	256 00 0 00 032235
+  2855	032237	254 00 0 00 031304
+  2856	032240	265 03 0 00 031311
+  2857	032241	256 00 0 00 032240
+  2858	032242	256 00 0 00 032241
+  2859	032243	270 06 0 04 000001
+  2860	032244	331 01 0 00 000002
+  2861	032245	331 03 0 00 000006
+  2862	032246	777776	000005
+  2863	032247	253 03 0 00 031355
+  2864	032250	777777	000006
+  2865	032251	253 03 0 00 031363
+  2866	032252	000000	000007
+  2867	032253	000000	707070
+  2868	032254	172737	405060
+  2869	032255	252525	252525
+  2870	032256	525252	525252
+  2871	032257	230703	603700
+  2872	032260	023070	360370
+  2873	032261	007603	607062
+  2874	032262	200760	360706
+  2875	032263	074076	004616
+  2876	032264	074161	440174
+  2877	032265	770037	600377
+  2878	032266	307036	037007
+  2879	032267	700376	003772
+  2880	032270	776003	760077
+  2881	032271	760037	600770
+  2882	032272	076036	070627
+  2883	032273	160740	760176
+  2884	032274	007740	077646
+  2885	032275	400774	017601
+  2886	032276	740741	614577
+  2887	032277	000000	000777
+  2888	032300	000000	000252
+  2889	032301	000000	000525
+  2890	032302	000000	000230
+DAKAG PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (7) 0,2	MACRO %52(537) 10:20 20-JAN-77 PAGE 1-1
+STOR	KLM	18-JAN-77 11:42		*STOR* RESERVED STORAGE, JAN 18,1977                                               SEQ 0076
+
+  2891	032303	000000	017777
+  2892	032304	000000	005252
+  2893	032305	000000	012525
+  2894	032306	000000	004616
+  2895	032307	000000	000174
+  2896						LIST
+  2897	032310	000000	000000		ENDSLD:	0
+  2898
+  2899					IFDEF	DEBUG,<
+  2900	032311				PATCH:	BLOCK DEBUG		;PATCHING AREA
+  2901					>
+  2902
+  2903					;PROGRAM VARIABLES
+  2904	032411					VAR
+  2905
+  2906					IFDEF	PGMEND,<
+  2907	032411	000000	000000		END:	0
+  2908			030000			END	BEGIN	>
+
+NO ERRORS DETECTED
+
+PROGRAM BREAK IS 000000
+ABSLUTE BREAK IS 032412
+CPU TIME USED 00:13.678
+
+10K CORE USED
diff --git a/apps/pdp10/diags/klad/dakag/DAKAG.MAC.txt b/apps/pdp10/diags/klad/dakag/DAKAG.MAC.txt
new file mode 100644
index 000000000..4a7001ec6
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakag/DAKAG.MAC.txt
@@ -0,0 +1,1290 @@
+SUBTTL	DIAGNOSTIC PARAMETERS
+
+;ACCUMULATOR ASSIGNMENTS
+
+;CONTROL WORDS
+
+AROV=400000		;ARITHMETIC OVERFLOW
+CRY0=200000		;CARRY 0
+CRY1=100000		;CARRY 1
+FOV=40000		;FLOATING OVERFLOW
+BIS=20000		;BYTE INTERRUPT
+USERF=10000		;USER MODE FLAG
+EXIOT=4000		;USER PRIV I/O FLAG
+FXU=100			;FLOATING UNDERFLOW
+DCK=40			;DIVIDE CHECK
+
+;MACROS
+
+; STOP - USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMPA .+1)
+;	 TO A (JUMPA X) TO CYCLE ON FAILING INSTRUCTION
+
+DEFINE	STOP	(A)<
+	HALT	.+1		;TEST FAILED IF PROGRAM HALTS HERE
+	JUMPA	.+1		;IF TEST FAILS, CHANGE THIS INSTRUCTION (JUMPA .+1)
+				;TO JUMPA X(X IS THE ADDRESS OF THE FIRST
+				;INSTRUCTION IN THE SUBTEST) TO LOOP ON ERROR
+				;AND CHANGE HALT INSTRUCTION TO JUMPA .+1>
+
+; SFLAG - USED TO CLEAR ALL FLAGS THEN TO SET REQUESTED FLAG
+
+DEFINE	SFLAG	(A)<
+	MOVSI	1,A
+	JFCL	17,.+1		;RESET ALL FLAGS
+	JRST	2,.+1(1)	;SET A FLAG>
+
+SUBTTL	DIAGNOSTIC SECTION
+
+START:	;SETZM	USER#		;CLEAR USER CONTROL WORD
+	;JSP	0,.+1		;GET FLAGS
+	;TLNE	USERF		;IN USER MODE?
+	;SETOM	USER		;YES, SET USER CONTROL WORD
+	;SKIPN	MONFLG		;SPECIAL USER MODE?
+	;SETZM	USER		;YES, CLEAR USER CONTROL WORD
+	;SKIPN	USER
+	;JRST	STARTA
+	;SKIPL	MONCTL
+	;TTCALL	3,PGMNAM	;MENTION OUR NAME
+	JRST	STARTA
+
+PGMNAM:	ASCIZ/
+PDP-10 KI10 BASIC INSTRUCTION DIAGNOSTIC (7) [DAKAG]
+/
+
+STARTA:	JRST	.+1
+SUBTTL	TEST OF PUSH INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH DECODES CORRECTLY.
+;IF PUSH DECODES AS PUSHJ, THIS TEST FAILS.
+
+C27200:	SETZ	2,		;CLEAR AC
+	PUSH	2,.+2		;*PUSH SHOULD NOT JUMP
+	SKIPA			;PASS IF PUSH DID NOT JUMP
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH DOES NOT MODIFY C(E).
+;CLEAR E AND AC; THEN, EXECUTE PUSH.
+;CHECK E FOR ORIGINAL CONTENTS ,0.
+;PASS IF C(E)=0.
+
+C27300:	SETZB	2		;CLEAR AC,E
+	PUSH	2,		;*PUSH SHOULD NOT ALTER C(E)
+	SKIPE			;PASS IF C(E)=0,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC.
+;FIRST THE AC IS CLEARED; THEN PUSH IS EXECUTED.
+;THE AC IS CHECKED FOR 1,,1.  IF C(AC)=1,,1, THIS TEST PASSES.
+
+C27400:	SETZ	2,		;CLEAR AC
+	PUSH	2,.+1		;*PUSH SHOULD ADD 1,,1 TO C(AC)
+	CAME	2,[XWD 1,1]	;PASS IF C(AC)=1,,1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC BEFORE MODIFYING C(C(AC-RIGHT)).
+;FIRST, THE AC AND AC0 ARE ZEROED; THEN PUSH IS EXECUTED.
+;C(C(AC-RIGHT)) [BEFORE AC UPDATING] (AC0) IS CHECKED FOR THE INITIAL VALUE, 0.
+;IF C(AC0)=0, THIS TEST PASSES
+
+C27500:	SETZB	2		;CLEAR AC AND AC0
+	PUSH	2,[16541320]	;*PUSH SHOULD NOT MODIFY C(AC0)
+	SKIPE			;PASS IF C(AC0)=0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC BEFORE MODIFYING C(C(AC-RIGHT)).
+;FIRST, THE AC AND AC0 ARE ZEROED; THEN PUSH IS EXECUTED.
+;C(C(AC-RIGHT)) [BEFORE AC UPDATING] (AC0) IS CHECKED FOR
+;IF C(AC0)IS NOT EQUAL TO E, THIS TEST PASSES
+
+C27600:	SETZB	1,2		;CLEAR AC AND AC0
+	PUSH	2,.+1		;*PUSH SHOULD NOT MODIFY C(AC0)
+	CAIN	.		;FAIL IF C(AC0)=E
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE, AC AND THE LOCATION SPECIFIED
+;BY UPDATING C(AC-RIGHT) ARE CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=-1,,-1.
+;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR -1,,-1, THE
+;ORIGINAL C(E).  IF C(C(AC-RIGHT))=-1,,-1, THIS TEST PASSES.
+
+C27700:	SETZB	1,2		;CLEAR AC, C(AC-RIGHT)
+	PUSH	2,[-1]		;*PUSH SHOULD PLACE -1,,-1 INTO AC1
+	CAME	1,[-1]		;PASS IF C(1)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE, AC
+;IS CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=0.
+;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR 0, THE
+;ORIGINAL C(E).  IF C(C(AC-RIGHT))=0, THIS TEST PASSES.
+
+C30000:	SETZM	2		;CLEAR AC
+	PUSH	2,[0]		;*PUSH SHOULD PLACE 0 INTO AC1
+	SKIPE	1		;PASS IF C(1)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE,
+;AC IS PRELOADED WITH 0,,-1, AND THE LOCATION SPECIFIED
+;BY UPDATING C(AC-RIGHT) IS CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=-1,,-1.
+;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR -1,,-1, THE
+;ORIGINAL C(E).  IF C(C(AC-RIGHT))=-1,,-1, THIS TEST PASSES.
+
+C30100:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+	SETZ			;CLEAR AC, C(AC-RIGHT)
+	PUSH	2,[-1]		;*PUSH SHOULD PLACE -1,,-1 INTO AC0
+	CAME	[-1]		;PASS IF C(0)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM AC BIT 18 TO BIT 17 OF THE AC ON PUSH.
+;THE AC IS PRELOADED WITH 0,,-1; THEN PUSH IS EXECUTED. PUSH SHOULD ADD ONE TO BOTH
+;HALVES OF THE AC, GENERATING A CARRY FROM BIT 18 TO BIT 17. IF A CARRY WAS GENERATED,
+;THIS TEST PASSES.
+
+C30101:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+	PUSH	2,0		;*PUSH SHOULD GENERATE A CARRY FROM BIT 18 TO BIT 17
+	CAME	2,[2,,0]	;PASS IF C(AC)=2,,0 (CARRY WAS GENERATED)
+	STOP
+
+;*************
+SUBTTL	TEST OF PUSHJ INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ TRANSFERS CONTROL TO THE LOCATION ADDRESSED BY E.
+;IF PUSHJ DOES NOT JUMP, THIS TEST FAILS
+
+C30200:	SFLAG	CRY0		;SETS CRY0 FLAG
+	SETZ			;CLEAR AC
+	PUSHJ	.+2		;*PUSHJ SHOULD JUMP TO LOCATION E
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ DOES NOT MODIFY C(PC) WHERE PC IS ONE GREATER
+;THAN THE LOCATION OF THE PUSHJ INSTRUCTION.
+;IF PUSHJ MODIFIES C(PC), THIS TEST FAILS
+
+C30300:	SFLAG	CRY0		;SET CRY0
+	SETZB	1,.+2		;CLEAR C(AC-RIGHT) AND C(PC)
+	PUSHJ	.+3		;*PUSHJ SHOULD NOT MODIFY C(PC)
+	0			;THIS LOCATION SHOULD NOT BE MODIFIED BY PUSHJ
+	CAM			;PUSHJ SHOULD JUMP OVER THIS LOCATION
+	SKIPE	.-2		;PASS IF PUSHJ DID NOT MODIFY C(PC)
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ DOES NOT STORE IN E
+;IF PUSHJ STORED IN E, THIS TEST FAILS
+
+C30400:	SFLAG	CRY0		;SET CRY0
+	SETZB	1		;CLEAR AC AND C(AC-RIGHT
+	PUSHJ	.+1		;*PUSHJ SHOULD NOT STORE IN E
+	MOVE	2,.		;SAVE C(E)
+	CAME	2,.-1		;FAIL IF PUSHJ STORED IN E
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ DOES NOT STORE IN LOC 0
+;PUSHJ SHOULD STORE PC IN C(AC-RIGHT) - LOCATION 2.
+;IF PUSHJ STORES IN LOCATION 0, THIS TEST FAILS
+
+C30500:	MOVEI	2,1		;PRELOAD AC WITH 0,,1
+	SETZ	0		;CLEAR 0
+	PUSHJ	2,.+1		;*PUSHJ SHOULD NOT STORE IN LOCATION 0
+	SKIPE			;FAIL IF PUSHJ STORED IN LOCATION 0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ STORES THE PC IN THE LOCATION SPECIFIED
+;BY C(AC-RIGHT) AFTER INCREMENTING AC.
+;IN THIS TEST, AC AND C(AC-RIGHT) ARE CLEARED; THEN, PUSHJ IS EXECUTED.
+;C(C(AC-RIGHT))IS THEN COMPARED TO ZERO.  IF C(C(AC-RIGHT)) IS NON-ZERO,
+;A PC WAS STORED AND THIS TEST PASSES.
+
+C30600:	SETZB	1		;CLEAR AC, C(AC-RIGHT)
+	PUSHJ	.+2		;*PUSHJ SHOULD STORE PC IN RIGHT HALF OF C(AC-RIGHT)
+	HALT	.		;PUSHJ SHOULD JUMP OVER THIS INSTRUCTION
+	ANDI	1,-1		;SAVE C(C(AC-RIGHT))
+	CAIN	1,.-1		;FAIL IF PC WAS NOT STORED IN C(AC-RIGHT)
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ ADDS 1,,1 TO THE AC
+;THE AC IS CLEARED AND PUSHJ IS EXECUTED
+;AC IS CHECKED FOR 1,,1 IF C(AC)=1,,1, THIS TEST PASSES
+
+C31000:	SETZ			;CLEAR AC
+	PUSHJ	.+1		;*PUSHJ SHOULD PLACE 1,,1 INTO THE AC
+	CAME	[1,,1]		;PASS IF C(AC)=1,,1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ STORES THE FLAGS IN LEFT HALF OF C(AC-RIGHT)
+;FIRST, CRY0 IS SET AND AC AND C(AC-RIGHT) ARE CLEARED; THEN, PUSHJ IS EXECUTED.
+;C(C(AC-RIGHT)) IS THEN CHECKED FOR CRY0.  IF CRY0 IS SET, THIS TEST PASSES.
+
+C31100:	SFLAG	CRY0		;SET CRY0
+	SETZB	1		;CLEAR AC AND C(AC-RIGHT)
+	PUSHJ	.+1		;*PUSHJ SHOULD STORE FLAGS IN LEFT HALF OF C(AC-RIGHT)
+	TLNN	1,CRY0		;PASS IF CRY0 STORED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ ADDS 1,,1 TO THE AC
+;THE AC IS PRELOADED WITH 0,,1 AND PUSHJ IS EXECUTED
+;AC IS CHECKED FOR 1,,2 IF C(AC)=1,,2, THIS TEST PASSES
+
+C31400:	MOVEI	1,1		;PRELOAD AC WITH 0,,1
+	PUSHJ	1,.+2		;*PUSHJ SHOULD PLACE 1,,2 INTO THE AC
+	HALT			;PUSHJ SHOULD JUMP OVER THIS INSTRUCTION
+	CAME	1,[XWD 1,2]	;PASS IF AC WAS INCREMENTED CORRECTLY
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ STORES THE PC IN RIGHT HALF OF C(AC-RIGHT)
+;THIS TEST PASSES IF THE PC WAS STORED CORRECTLY.
+
+C31500:	MOVEI	1,1		;PLACE 0,,1 INTO AC
+	PUSHJ	1,.+2		;*PUSHJ SHOULD STORE .+1 INTO RIGHT HALF OF C(AC-RIGHT)
+	HALT			;PUSHJ SHOULD JUMP OVER THIS PC
+	ANDI	2,-1		;SAVE RIGHT HALF OF C(AC-RIGHT)
+	CAIE	2,.-2		;PASS IF PC STORED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ ALWAYS RESETS BIS.
+;FIRST BIS IS SET; THEN PUSHJ IS EXECUTED.  THE FLAGS ARE
+;THEN SAVED AND CHECKED.  IF BIS WAS RESET VIA PUSHJ, THIS TEST PASSES.
+
+C31501:	SFLAG	BIS		;SET BIS
+	SETZ			;CLEAR AC
+	PUSHJ	.+1		;*PUSHJ SHOULD RESET BIS
+	JSP	.+1		;SAVE FLAGS
+	TLNE	BIS		;PASS IF BIS FLAG IS RESET
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON PUSHJ.
+;THE AC IS PRELOADED WITH 0,,-1; THEN PUSHJ IS EXECUTED. PUSHJ SHOULD ADD ONE TO
+;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17. IF A
+;CARRY WAS GENERATED, THE TEST PASSES.
+
+C31502:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+	PUSHJ	2,.+1		;*PUSHJ SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+	CAME	2,[2,,0]	;PASS IF C(AC)=2,,0 (CARRY WAS GENERATED)
+	STOP
+
+;****************
+SUBTTL	TEST OF POP INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT POP SUBTRACTS 1,,1 FROM THE AC
+;THE AC IS PRELOADED WITH 1,,1; THEN, POP IS EXECUTED.
+;THE AC IS CHECKED FOR 0.  IF C(AC)=0, THIS TEST PASSES.
+
+C31600:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	POP	1		;*POP SHOULD SUBTRACT 1,,1 FROM THE AC
+	SKIPE			;PASS IF AC WAS DECREMENTED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP SUBTRACTS 1,,1 FROM THE AC
+;THE AC IS PRELOADED WITH 2,,2; THEN, POP IS EXECUTED.
+;THE AC IS CHECKED FOR 1,,1.  IF C(AC)=1,,1, THIS TEST PASSES.
+
+C31700:	MOVE	[XWD 2,2]	;PRELOAD AC WITH E,,E WHERE E=2
+	MOVEI	2,5		;PRELOAD 2 WITH 0,,5
+	POP	2		;*POP SHOULD SUBTRACT 1,,1 FROM THE AC
+	CAME	[1,,1]		;PASS IF AC WAS DECREMENTED CORRECTLY
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E
+;IN THIS CASE, AC=0 AND AC IS PRELOADED WITH 2,,2; E=2 AND IS PRELOADED WITH 0.
+;POP IS THEN EXECUTED.  POP SHOULD PLACE 0 INTO E.  IF C(E)=0, THIS TEST PASSES.
+
+C32300:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	SETZM	2		;CLEAR E AND C(AC-RIGHT)
+	POP	2		;*POP SHOULD PLACE 0 INTO E
+	SKIPE	2		;PASS IF C(E)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP DOES NOT MODIFY C(C(AC-RIGHT)-1).
+;THIS TEST FAILS IF C(C(AC-RIGHT)-1) IS MODIFIED BY POP.
+
+C32400:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	MOVEI	2,17		;PRELOAD 2 WITH 0,,17
+	SETZM	1		;CLEAR C(C(AC-RIGHT)-1)
+	POP	2		;*POP SHOULD NOT MODIFY C(C(AC-RIGHT)-1)
+	SKIPE	1		;PASS IF C(C(AC-RIGHT)-1) WAS UNALTERED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.
+;IN THIS CASE, AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH 0,,3.
+;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR 0,,3 [C(C(AC-RIGHT))] .
+;IF C(E)=0,,3, THIS TEST PASSES.
+
+C32500:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	MOVEI	2,3		;PRELOAD C(AC-RIGHT) WITH 0,,3
+	SETZM	3		;CLEAR E
+	POP	3		;*POP SHOULD PLACE 0,,3 INTO E
+	CAIE	3,3		;PASS IF C(E)=0,,3
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.  IN THIS CASE,
+;AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH 0,,17.
+;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR 0,,17 [C(C(AC-RIGHT))] .
+;IF C(E)=0,,17, THIS TEST PASSES.
+
+C32600:	SETZM	2		;CLEAR E
+	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	MOVEI	2,17		;PRELOAD C(AC-RIGHT) WITH 0,,17
+	POP	2		;*POP SHOULD PLACE 0,,17 INTO E
+	CAIE	2,17		;PASS IF C(E)=0,,17
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.  IN THIS CASE,
+;AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH -1,,-1.
+;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR -1,,-1 [C(C(AC-RIGHT))] .
+;IF C(E)=0,,3, THIS TEST PASSES.
+
+C33100:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	SETOM	2		;PRELOAD C(AC-RIGHT) WITH -1,,-1
+	SETZM	3		;CLEAR E
+	POP	3		;*POP SHOULD PLACE -1,,-1 INTO E
+	CAME	3,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP PLACES C(C(AC-RIGHT)) INTO E AND ADDS 1,,1 TO AC.
+;IN THIS CASE, THE AC IS PRELOADED WITH 1,,17; E=1 AND E IS PRELOADED WITH 0;
+;C(AC-RIGHT) IS PRELOADED WITH -1,,-1; AND POP IS EXECUTED.  POP SHOULD PLACE -1,,-1
+;INTO E AND 0,,16 INTO AC.  IF AC AND E ARE UPDATED CORRECTLY, THIS TEST PASSES.
+
+C33300:	MOVE	[XWD 1,17]	;PRELOAD AC WITH 1,,17
+	SETZM	1		;PRELOAD E WITH 0
+	SETOM	17		;PRELOAD C(AC-RIGHT) WITH 1,,1
+	POP	1		;*POP SHOULD PLACE -1,,-1 INTO E AND 0,,16 INTO AC
+	CAME	1,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+C33310:	CAIE	16		;PASS IF C(AC)=0,,16
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP PLACES C(C(AC-RIGHT)) INTO E AND ADDS 1,,1 TO AC
+;IN THIS CASE, THE AC IS PRELOADED WITH -1,,0; E=17
+;C(AC-RIGHT) IS PRELOADED WITH 0; AND POP IS EXECUTED.  POP SHOULD PLACE 0
+;INTO E.  IF AC IS UPDATED CORRECTLY, THIS TEST PASSES.
+
+C33400:	MOVSI	1,-1		;PRELOAD AC WITH -1,,0
+	SETZ			;CLEAR C(AC-RIGHT)
+	POP	1,17		;*POP SHOULD PLACE 0 INTO E
+	SKIPE	17		;PASS IF C(E)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON POP.
+;THE AC IS PRELOADED WITH 2,,0; THEN POP IS EXECUTED. POP SHOULD SUBTRACT ONE FROM
+;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17.
+;IF A CARRY WAS GENERATED, THIS TEST PASSES.
+
+C33401:	HRLZI	2,2		;PRELOAD AC WITH 2,,0
+	POP	2,0		;*POP SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+	CAIE	2,-1		;PASS IF C(AC) = 0,,-1	(CARRY WAS GENERATED)
+	STOP
+
+;************
+SUBTTL	TEST OF POPJ INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT POPJ JUMPS TO THE LOCATION ADDRESSED BY RIGHT HALF OF
+;C(C(AC-RIGHT)) BEFORE POPJ DECREMENTED THE AC.
+;THIS TEST PASSES IF POPJ JUMPS CORRECTLY.
+
+C33500:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	MOVEI	1,.+3		;PRELOAD C(AC-RIGHT) WITH .+3
+	POPJ	.+2		;*POPJ SHOULD JUMP TO LOCATION
+				;ADDRESSED BY C(C(AC-RIGHT))
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POPJ SUBTRACTS 1,,1 FROM THE AC
+;THIS AC IS PRELOADED WITH 1,,1; THEN,POPJ IS EXECUTED.
+;THE AC IS CHECKED FOR 0.  IF C(AC)=0, THIS TEST PASSES.
+
+C33600:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	MOVEI	1,.+2		;PRELOAD C(AC-NIGHT)WITH .+2
+	POPJ	.+1		;*POPJ SHOULD SUBTRACT 1,,1 FROM AC
+	CAME	[0]		;PASS IF C(AC)=0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POPJ JUMPS TO THE LOCATION ADDRESSED BY RIGHT HALF OF
+;C(C(AC-RIGHT)) BEFORE POPJ DECREMENTED THE AC.
+;THIS TEST PASSES IF POPJ JUMPS CORRECTLY.
+
+C33700:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	MOVEI	1,.+2		;PRELOAD C(AC-RIGHT) WITH C33700+3
+	POPJ	.+2		;*POPJ SHOULD JUMP TO C33700+3
+	SKIPA			;PASS IF POPJ JUMPED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON POPJ.
+;THE AC IS PRELOADED WITH 2,,0; THEN POPJ IS EXECUTED POPJ SHOULD SUBTRACT ONE FROM
+;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17.
+;IF A CARRY WAS GENERATED, THIS TEST PASSES.
+
+C33701:	HRLZI	2,2		;PRELOAD AC WITH 2,,0
+	MOVEI	0,.+2		;PRELOAD RH(AC) WITH C33701: +3
+	POPJ	2,0		;*POPJ SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+	CAIE	2,-1		;PASS IF C(AC)=0,,-1 (CARRY WAS GENERATED)
+	STOP
+
+;*************
+SUBTTL	XCT INSTRUCTION - ADDITIONAL TESTS
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+
+C34000:	SETOB	1
+	XCT	[CAME 0,1]	;*CAME SHOULD SKIP TO C34000+3
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+
+C34100:	SETOB	1
+	XCT	[XCT[XCT[CAME 0,1]]]	;*CAME SHOULD SKIP TO C34100+3
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP.
+
+C34200:	XCT	[JRST .+4]	;*JRST SHOULD JUMP TO C34200+4
+	HALT			;JRST SHOULD JUMP OVER THIS LOCATION
+	HALT			;JRST SHOULD JUMP OVER THIS LOCATION
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP AND THAT WHEN THE PC IS SAVED IT CONTAINS AN
+;ADDRESS ONE GREATER THAN THE LOCATION OF FIRST XCT OF THE CHAIN.
+
+C34300:	SETZM	3		;CLEAR AC OF JSP
+	XCT	[XCT[XCT[JSP 3,.+3]]] ;*JSP SHOULD JUMP TO C34300+4 AND
+	HALT			;THE SAVED PC SHOULD BE C 34300+2
+	HALT			;PASS IF JSP JUMPED CORRECTLY
+	TRZ	3,.-2		;AND SAVED PC=C34300+2
+	TRNE	3,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+;IN THIS CASE, NO SKIP SHOULD OCCUR  ;HENCE, THE INSTRUCTION
+;FOLLOWING XCT SHOULD BE EXECUTED AFTER 'CAME' IS EXECUTED.
+
+C34400:	SETZB	0		;SET-UP AC,E SO THAT
+	SETOM	1		;CAME WILL NOT SKIP
+	XCT	[CAME 0,1]	;*CAME SHOULD CAUSE EXECUTION
+				;OF INSTRUCTION FOLLOWING XCT
+	JRST	.+2		;PASS IF THIS INSTRUCTION IS EXECUTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES INDEXING FOR XCT OF AN ADD INSTRUCTION
+;C(4)=10, AND C(6)=3, SO THE RESULT IN 6 (THE AC) SHOULD BE 16
+;C(11)=13
+
+C34500:	MOVEI	4,10		;PRELOAD INDEX REG WITH 10
+	MOVEI	11,13		;PRELOAD EFFECTIVE ADDRESS WITH 13
+	MOVEI	6,3		;PRELOAD AC WITH 3
+	XCT	[ADD 6,1(4)]	;*ADD SHOULD PLACE 16 IN AC
+	CAIE	6,16		;PASS IF C(AC)=16
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT
+;IN THIS CASE, NO SKIP SHOULD OCCUR  ;HENCE, THE INSTRUCTION
+;FOLLOWING XCT SHOULD BE EXECUTED AFTER CAME IS EXECUTED.
+
+C34600:	SETZM	2		;SETUP E SO THAT SKIPL WILL NOT SKIP
+	XCT	[SKIPL 1,2]	;*SKIPL SHOULD CAUSE INSTRUCTION
+				;OF FOLLOWING INSTRUCTION
+	JRST	.+2		;PASS IF THIS INSTRUCTION IS EXECUTED.
+	STOP
+C34610:	SKIPE	1		;*SKIPE SHOULD SKIP BECAUSE XCT OF SKIPL
+				;PLACED 0 INTO AC1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+
+C34700:	SETOM	6		;SETUP E SO THAT SKIPL WILL SKIP
+	XCT	[SKIPL 3,6]	;*SKIPL SHOULD SKIP TO C34700+3
+	STOP
+C34710:	SKIPL	3		;*SKIPE SHOULD SKIP BECAUSE XCT OF SKIPL
+				;PLACED 0 INTO AC1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP.
+;THIS TEST ALSO VERIFIES CORRECT UPDATING OF THE AC FOR AOBJN
+
+C35000:	MOVE	3,[-2,,5]	;SETUP AC SO THAT AOBJN WILL JUMP
+	XCT	[AOBJN 3,.+3]	;*JUMP SHOULD BE TO C35000+4
+	HALT			;JUMP OVER THIS INSTRUCTION
+	HALT			;JUMP OVER THIS INSTRUCTION
+	CAME	3,[-1,,6]	;PASS IF C(AC)=-1,,6 AND AOBJN JUMPED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP.
+;THIS TEST ALSO VERIFIES CORRECT UPDATING OF THE AC FOR AOBJN
+
+C35100:	MOVE	3,[-1,,6]	;SETUP AC SO THAT AOBJN WILL NOT JUMP
+	XCT	[AOBJN 3,.+2]	;*AOBJN SHOULD NOT JUMP
+	CAME	3,[0,,7]	;PASS IF AOBJN DID NOT JUMP AND C(AC)=0,,7
+	STOP
+
+;**********
+SUBTTL	TEST XCT INSTRUCTION WITH INDIRECT ADDRESSING AND INDEXING
+
+;**********
+
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+;FROM AN INDIRECTLY ADDRESSED LOCATION
+
+C35200:	SETZB	2
+	JRST	.+3
+		.+1
+	SETOM	2		;THIS INSTRUCTION SHOULD BE EXECUTED
+	XCT	@.-2
+	CAME	2,[-1,,-1]	;PASS IF 'SETOM 2' WAS EXECUTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+;FROM AN INDEXED LOCATION
+
+C35300:	MOVEI	4,.+1
+	JRST	.+2
+	CAIE	4,.-1		;THIS INSTRUCTION SHOULD BE EXECUTED
+	XCT	1(4)
+	STOP			;PASS IF 'CAIE 4,,-1' WAS EXECUTED
+
+;**********
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+;FROM AN INDIRECTLY ADDRESSED AND INDEXED LOCATION
+
+C35400:	SETZM	5
+	MOVEI	3,.+3
+	JRST	.+2
+	MOVEI	5,.+3
+	XCT	@-1(3)
+	JRST	.+2
+	SETOM	5		;THIS INSTRUCTION SHOULD BE EXECUTED
+	CAME	5,[-1,,-1]	;PASS IF 'SETOM 5' WAS EXECUTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INDIRECTLY ADDRESSED
+;AND INDEXED INSTRUCTION
+
+C35500:	SETZM	3
+	MOVEI	10,3
+	JRST	.+5
+	HALT
+	HALT
+	MOVE	3,@.-2(10)	;THIS INSTRUCTION SHOULD BE EXECUTED
+	HALT	[0,,707070]
+	XCT	.-2
+	CAIE	3,707070	;PASS IF 'MOVE 3,@.-2(10)' WAS EXECUTED
+	STOP
+
+;**********
+SUBTTL	TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C35600:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 0,,0 RIGHT 3 BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C35700:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE -1,,-1 RIGHT 3 BIT POSITIONS
+	CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36000:	MOVE	0,[252525,,252525] ;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 252525,,252525
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[525252,,525252] ;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36100:	MOVE	0,[525252,,525252] ;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 525252,,525252
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[252525,,252525] ;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=023070,,360370.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36200:	MOVE	0,[230703,,603700] ;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 230703,,603700
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[023070,,360370] ;PASS IF C(AC)=023070,,360370
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 007603,,607062 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=200760,,360706.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36300:	MOVE	0,[007603,,607062] ;PRELOAD AC WITH 007603,,607062
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 007603,,607062
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[200760,,360706] ;PASS IF C(AC)=200760,,360706
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36400:	MOVE	2,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 0,,0 LEFT 15 BIT POSITIONS
+	CAME	2,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36500:	MOVE	2,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE -1,,-1 LEFT 15 BIT POSITIONS
+	CAME	2,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36600:	MOVE	2,[252525,,252525] ;PRELOAD AC WITH 252525,,252525
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 252525,,252525
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[525252,,525252] ;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36700:	MOVE	2,[525252,,525252] ;PRELOAD AC WITH 525252,,525252
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 525252,,525252
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[252525,,252525] ;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)074076,,004616.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C37000:	MOVE	2,[230703,,603700] ;PRELOAD AC WITH 230703,,603700
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 230703,,603700
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[074076,,004616] ;PASS IF C(AC)074076,,004616
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 007603,,607062 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)074161,,440174.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C37100:	MOVE	2,[007603,,607062] ;PRELOAD AC WITH 007603,,607062
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 007603,,607062
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[074161,,440174] ;PASS IF C(AC)074161,,440174
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 0,,0 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0 AND FINAL C(AC+1)=0,,0
+
+C37200:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[0,,0]	;PRELOAD AC+1 WITH 0,,0
+	ROTC	0,3		;*ROTC SHOULD ROTATE 0,,0 0,,0 LEFT 3 BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[0,,0]	;PASS IF C(AC+1)=0,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 -1,,-1 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1 AND FINAL C(AC+1)=-1,,-1
+
+C37300:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	1,[-1,,-1]	;PRELOAD AC+1 WITH -1,,-1
+	ROTC	0,3		;*ROTC SHOULD ROTATE -1,,-1
+				;-1,,-1 LEFT 3 BIT POSITIONS
+	CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	0,[-1,,-1]	;PASS IF C(AC+1)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 252525,,252525 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252 AND FINAL C(AC+1)=525252,,525252
+
+C37400:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[252525,,252525]	;PRELOAD AC+1 WITH 252525,,252525
+	ROTC	0,3			;*ROTC SHOULD ROTATE 252525,,252525
+					;252525,,252525 LEFT 3 BIT POSITIONS
+	CAME	0,[525252,,525252]	;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	1,[525252,,525252]	;PASS IF C(AC+1)=525252,,525252
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 525252,,525252 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525 AND FINAL C(AC+1)=252525,,252525
+
+C37500:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[525252,,525252]	;PRELOAD AC+1 WITH 525252,,525252
+	ROTC	0,3			;*ROTC SHOULD ROTATE 525252,,525252
+					;525252,,525252 LEFT 3 BIT POSITIONS
+	CAME	0,[252525,,252525]	;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	1,[252525,,252525]	;PASS IF C(AC+1)=252525,,252525
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 770037,,600377 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=307036,,37007 AND FINAL C(AC+1)=700376,,003772
+
+C37600:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[770037,,600377]	;PRELOAD AC+1 WITH 770037,,600377
+	ROTC	0,3			;*ROTC SHOULD ROTATE 230703,,603700
+					;770037,,600377 LEFT 3 BIT POSITIONS
+	CAME	0,[307036,,037007]	;PASS IF C(AC)=307036,,37007
+	STOP
+	CAME	1,[700376,,003772]	;PASS IF C(AC+1)=700376,,003772
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 776003,,760077 007603,,607062 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=760037,,600770 AND FINAL C(AC+1)=076036,,070627
+
+C37700:	MOVE	0,[776003,,760077]	;PRELOAD AC WITH 776003,,760077
+	MOVE	1,[007603,,607062]	;PRELOAD AC+1 WITH 007603,,607062
+	ROTC	0,3			;*ROTC SHOULD ROTATE 776003,,760077
+					;007603,,607062 LEFT 3 BIT POSITIONS
+	CAME	0,[760037,,600770]	;PASS IF C(AC)=076036,,070627
+	STOP
+	CAME	1,[076036,,070627]	;PASS IF C(AC+1)=760037,,600770
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 0,,0 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0 AND FINAL C(AC+1)=0,,0
+
+C40000:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[0,,0]	;PRELOAD AC+1 WITH 0,,0
+	ROTC	0,7		;*ROTC SHOULD ROTATE 0,,0 0,,0 LEFT 7 BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[0,,0]	;PASS IF C(AC+1)=0,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 -1,,-1  SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1 AND FINAL C(AC+1)=-1,,-1
+
+C40100:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	1,[-1,,-1]	;PRELOAD AC+1 WITH -1,,-1
+	ROTC	0,7		;*ROTC SHOULD ROTATE -1,,-1
+				;-1,,-1 LEFT 7 BIT POSITIONS
+	CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	1,[-1,,-1]	;PASS IF C(AC+1)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 252525,,252525 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252 AND FINAL C(AC+1)=525252,,525252
+
+C40200:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[252525,,252525]	;PRELOAD AC+1 WITH 252525,,252525
+	ROTC	0,7			;*ROTC SHOULD ROTATE 252525,,252525
+					;252525,,252525 LEFT 7 BIT POSITIONS
+	CAME	0,[525252,,525252]	;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	1,[525252,,525252]	;PASS IF C(AC+1)=525252,,525252
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 525252,,525252 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525 AND FINAL C(AC+1)=252525,,252525
+
+C40300:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[525252,,525252]	;PRELOAD AC+1 WITH 525252,,525252
+	ROTC	0,7			;*ROTC SHOULD ROTATE 525252,,525252
+					;525252,,525252 LEFT 7 BIT POSITIONS
+	CAME	0,[252525,,252525]	;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	1,[252525,,252525]	;PASS IF C(AC+1)=252525,,252525
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 770037,,600377 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=160740,,760176 AND FINAL C(AC+1)=007740,,077646
+
+C40400:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[770037,,600377]	;PRELOAD AC+1 WITH 770037,,600377
+	ROTC	0,7			;*ROTC SHOULD ROTATE 230703,,603700
+					;770037,,600377 LEFT 7 BIT POSITIONS
+	CAME	0,[160740,,760176]	;PASS IF C(AC)=160740,,760176
+	STOP
+	CAME	1,[007740,,077646]	;PASS IF C(AC+1)=007740,,077646
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 776003,,760077 007603,,607063 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=400774,,017610 AND FINAL C(AC+1)=740741,,614577
+
+C40500:	MOVE	0,[776003,,760077]	;PRELOAD AC WITH 776003,,760077
+	MOVE	1,[007603,,607062]	;PRELOAD AC+1 WITH 007603,,607062
+	ROTC	0,7			;*ROTC SHOULD ROTATE 776003,,760077
+					;007603,,607062 LEFT 7 BIT POSITIONS
+	CAME	0,[400774,,017601]	;PASS IF C(AC)=400774,,017601
+	STOP
+	CAME	1,[740741,,614577]	;PASS IF C(AC+1)=740741,,614577
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C40600:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,777.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C40700:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,777]	;PASS IF C(AC)=0,,777
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,252.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41000:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[172737,,405060] 	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,252]		;PASS IF C(AC)=0,,252
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,525.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41100:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,525]		;PASS IF C(AC)=0,,525
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 230703,,603700 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,230.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41200:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,230]		;PASS IF C(AC)=230703,,603700
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,7.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41300:	MOVE	0,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+	MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 007603,,6070062
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,7]		;PASS IF C(AC)=0,,7
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41400:	MOVE	1,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+				;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,17777.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41500:	MOVE	1,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+				;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,17777]	;PASS IF C(AC)=0,17777
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,5252.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41600:	MOVE	1,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,5252]		;PASS IF C(AC)=0,,5252
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,12525.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41700:	MOVE	1,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,12525]		;PASS IF C(AC)=0,,12525
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 230703,602700 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,4616.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42000:	MOVE	1,[230703,,603700]	;PRELOAD AC WITH 230703,603700
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,4616]		;PASS IF C(AC)=0,,4616
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,174.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42100:	MOVE	1,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 007603,,607062
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,174]		;PASS IF C(AC)=0,,174
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42200:	MOVE	1,[0,0]		;PRELOAD AC WITH 0,,0
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,777.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42300:	MOVE	1,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,777]	;PASS IF C(AC)=0,,777
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,252.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42400:	MOVE	1,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,252]		;PASS IF C(AC)=0,,252
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,525.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42500:	MOVE	1,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,525]		;PASS IF C(AC)=0,525
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 230703,,603700 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,230.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42600:	MOVE	1,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,230]		;PASS IF C(AC)=0,,230
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,7.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42700:	MOVE	1,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 007603,,607062
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,7]		;PASS IF C(AC)=0,,7
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+	;JRST	BEGEND		;REPEAT TEST
diff --git a/apps/pdp10/diags/klad/dakag/DAKAGM.MAC.txt b/apps/pdp10/diags/klad/dakag/DAKAGM.MAC.txt
new file mode 100644
index 000000000..39bec0a24
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakag/DAKAGM.MAC.txt
@@ -0,0 +1,1255 @@
+SUBTTL	DIAGNOSTIC SECTION
+
+START:	SETZM	USER#		;CLEAR USER CONTROL WORD
+	JSP	0,.+1		;GET FLAGS
+	TLNE	USERF		;IN USER MODE?
+	SETOM	USER		;YES, SET USER CONTROL WORD
+	SKIPN	MONFLG		;SPECIAL USER MODE?
+	SETZM	USER		;YES, CLEAR USER CONTROL WORD
+	SKIPN	USER
+	JRST	STARTA
+	SKIPL	MONCTL
+	TTCALL	3,PGMNAM	;MENTION OUR NAME
+	JRST	STARTA
+
+PGMNAM:	ASCIZ/
+PDP-10 KI10 BASIC INSTRUCTION DIAGNOSTIC (7) [DAKAG]
+/
+
+STARTA:	JRST	.+1
+SUBTTL	TEST OF PUSH INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH DECODES CORRECTLY.
+;IF PUSH DECODES AS PUSHJ, THIS TEST FAILS.
+
+C27200:	SETZ	2,		;CLEAR AC
+	PUSH	2,.+2		;*PUSH SHOULD NOT JUMP
+	SKIPA			;PASS IF PUSH DID NOT JUMP
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH DOES NOT MODIFY C(E).
+;CLEAR E AND AC; THEN, EXECUTE PUSH.
+;CHECK E FOR ORIGINAL CONTENTS ,0.
+;PASS IF C(E)=0.
+
+C27300:	SETZB	2		;CLEAR AC,E
+	PUSH	2,		;*PUSH SHOULD NOT ALTER C(E)
+	SKIPE			;PASS IF C(E)=0,,0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC.
+;FIRST THE AC IS CLEARED; THEN PUSH IS EXECUTED.
+;THE AC IS CHECKED FOR 1,,1.  IF C(AC)=1,,1, THIS TEST PASSES.
+
+C27400:	SETZ	2,		;CLEAR AC
+	PUSH	2,.+1		;*PUSH SHOULD ADD 1,,1 TO C(AC)
+	CAME	2,[XWD 1,1]	;PASS IF C(AC)=1,,1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC BEFORE MODIFYING C(C(AC-RIGHT)).
+;FIRST, THE AC AND AC0 ARE ZEROED; THEN PUSH IS EXECUTED.
+;C(C(AC-RIGHT)) [BEFORE AC UPDATING] (AC0) IS CHECKED FOR THE INITIAL VALUE, 0.
+;IF C(AC0)=0, THIS TEST PASSES
+
+C27500:	SETZB	2		;CLEAR AC AND AC0
+	PUSH	2,[16541320]	;*PUSH SHOULD NOT MODIFY C(AC0)
+	SKIPE			;PASS IF C(AC0)=0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC BEFORE MODIFYING C(C(AC-RIGHT)).
+;FIRST, THE AC AND AC0 ARE ZEROED; THEN PUSH IS EXECUTED.
+;C(C(AC-RIGHT)) [BEFORE AC UPDATING] (AC0) IS CHECKED FOR
+;IF C(AC0)IS NOT EQUAL TO E, THIS TEST PASSES
+
+C27600:	SETZB	1,2		;CLEAR AC AND AC0
+	PUSH	2,.+1		;*PUSH SHOULD NOT MODIFY C(AC0)
+	CAIN	.		;FAIL IF C(AC0)=E
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE, AC AND THE LOCATION SPECIFIED
+;BY UPDATING C(AC-RIGHT) ARE CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=-1,,-1.
+;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR -1,,-1, THE
+;ORIGINAL C(E).  IF C(C(AC-RIGHT))=-1,,-1, THIS TEST PASSES.
+
+C27700:	SETZB	1,2		;CLEAR AC, C(AC-RIGHT)
+	PUSH	2,[-1]		;*PUSH SHOULD PLACE -1,,-1 INTO AC1
+	CAME	1,[-1]		;PASS IF C(1)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE, AC
+;IS CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=0.
+;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR 0, THE
+;ORIGINAL C(E).  IF C(C(AC-RIGHT))=0, THIS TEST PASSES.
+
+C30000:	SETZM	2		;CLEAR AC
+	PUSH	2,[0]		;*PUSH SHOULD PLACE 0 INTO AC1
+	SKIPE	1		;PASS IF C(1)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSH ADDS 1,,1 TO THE AC; THEN, MOVES C(E) INTO
+;THE LOCATION SPECIFIED BY C(AC-RIGHT).  IN THIS CASE,
+;AC IS PRELOADED WITH 0,,-1, AND THE LOCATION SPECIFIED
+;BY UPDATING C(AC-RIGHT) IS CLEARED; THEN, PUSH IS EXECUTED WITH C(E)=-1,,-1.
+;THE LOCATION SPECIFIED BY C(AC-RIGHT) IS THEN CHECKED FOR -1,,-1, THE
+;ORIGINAL C(E).  IF C(C(AC-RIGHT))=-1,,-1, THIS TEST PASSES.
+
+C30100:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+	SETZ			;CLEAR AC, C(AC-RIGHT)
+	PUSH	2,[-1]		;*PUSH SHOULD PLACE -1,,-1 INTO AC0
+	CAME	[-1]		;PASS IF C(0)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM AC BIT 18 TO BIT 17 OF THE AC ON PUSH.
+;THE AC IS PRELOADED WITH 0,,-1; THEN PUSH IS EXECUTED. PUSH SHOULD ADD ONE TO BOTH
+;HALVES OF THE AC, GENERATING A CARRY FROM BIT 18 TO BIT 17. IF A CARRY WAS GENERATED,
+;THIS TEST PASSES.
+
+C30101:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+	PUSH	2,0		;*PUSH SHOULD GENERATE A CARRY FROM BIT 18 TO BIT 17
+	CAME	2,[2,,0]	;PASS IF C(AC)=2,,0 (CARRY WAS GENERATED)
+	STOP
+
+;*************
+SUBTTL	TEST OF PUSHJ INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ TRANSFERS CONTROL TO THE LOCATION ADDRESSED BY E.
+;IF PUSHJ DOES NOT JUMP, THIS TEST FAILS
+
+C30200:	SFLAG	CRY0		;SETS CRY0 FLAG
+	SETZ			;CLEAR AC
+	PUSHJ	.+2		;*PUSHJ SHOULD JUMP TO LOCATION E
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ DOES NOT MODIFY C(PC) WHERE PC IS ONE GREATER
+;THAN THE LOCATION OF THE PUSHJ INSTRUCTION.
+;IF PUSHJ MODIFIES C(PC), THIS TEST FAILS
+
+C30300:	SFLAG	CRY0		;SET CRY0
+	SETZB	1,.+2		;CLEAR C(AC-RIGHT) AND C(PC)
+	PUSHJ	.+3		;*PUSHJ SHOULD NOT MODIFY C(PC)
+	0			;THIS LOCATION SHOULD NOT BE MODIFIED BY PUSHJ
+	CAM			;PUSHJ SHOULD JUMP OVER THIS LOCATION
+	SKIPE	.-2		;PASS IF PUSHJ DID NOT MODIFY C(PC)
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ DOES NOT STORE IN E
+;IF PUSHJ STORED IN E, THIS TEST FAILS
+
+C30400:	SFLAG	CRY0		;SET CRY0
+	SETZB	1		;CLEAR AC AND C(AC-RIGHT
+	PUSHJ	.+1		;*PUSHJ SHOULD NOT STORE IN E
+	MOVE	2,.		;SAVE C(E)
+	CAME	2,.-1		;FAIL IF PUSHJ STORED IN E
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ DOES NOT STORE IN LOC 0
+;PUSHJ SHOULD STORE PC IN C(AC-RIGHT) - LOCATION 2.
+;IF PUSHJ STORES IN LOCATION 0, THIS TEST FAILS
+
+C30500:	MOVEI	2,1		;PRELOAD AC WITH 0,,1
+	SETZ	0		;CLEAR 0
+	PUSHJ	2,.+1		;*PUSHJ SHOULD NOT STORE IN LOCATION 0
+	SKIPE			;FAIL IF PUSHJ STORED IN LOCATION 0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ STORES THE PC IN THE LOCATION SPECIFIED
+;BY C(AC-RIGHT) AFTER INCREMENTING AC.
+;IN THIS TEST, AC AND C(AC-RIGHT) ARE CLEARED; THEN, PUSHJ IS EXECUTED.
+;C(C(AC-RIGHT))IS THEN COMPARED TO ZERO.  IF C(C(AC-RIGHT)) IS NON-ZERO,
+;A PC WAS STORED AND THIS TEST PASSES.
+
+C30600:	SETZB	1		;CLEAR AC, C(AC-RIGHT)
+	PUSHJ	.+2		;*PUSHJ SHOULD STORE PC IN RIGHT HALF OF C(AC-RIGHT)
+	HALT	.		;PUSHJ SHOULD JUMP OVER THIS INSTRUCTION
+	ANDI	1,-1		;SAVE C(C(AC-RIGHT))
+	CAIN	1,.-1		;FAIL IF PC WAS NOT STORED IN C(AC-RIGHT)
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ ADDS 1,,1 TO THE AC
+;THE AC IS CLEARED AND PUSHJ IS EXECUTED
+;AC IS CHECKED FOR 1,,1 IF C(AC)=1,,1, THIS TEST PASSES
+
+C31000:	SETZ			;CLEAR AC
+	PUSHJ	.+1		;*PUSHJ SHOULD PLACE 1,,1 INTO THE AC
+	CAME	[1,,1]		;PASS IF C(AC)=1,,1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ STORES THE FLAGS IN LEFT HALF OF C(AC-RIGHT)
+;FIRST, CRY0 IS SET AND AC AND C(AC-RIGHT) ARE CLEARED; THEN, PUSHJ IS EXECUTED.
+;C(C(AC-RIGHT)) IS THEN CHECKED FOR CRY0.  IF CRY0 IS SET, THIS TEST PASSES.
+
+C31100:	SFLAG	CRY0		;SET CRY0
+	SETZB	1		;CLEAR AC AND C(AC-RIGHT)
+	PUSHJ	.+1		;*PUSHJ SHOULD STORE FLAGS IN LEFT HALF OF C(AC-RIGHT)
+	TLNN	1,CRY0		;PASS IF CRY0 STORED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ ADDS 1,,1 TO THE AC
+;THE AC IS PRELOADED WITH 0,,1 AND PUSHJ IS EXECUTED
+;AC IS CHECKED FOR 1,,2 IF C(AC)=1,,2, THIS TEST PASSES
+
+C31400:	MOVEI	1,1		;PRELOAD AC WITH 0,,1
+	PUSHJ	1,.+2		;*PUSHJ SHOULD PLACE 1,,2 INTO THE AC
+	HALT			;PUSHJ SHOULD JUMP OVER THIS INSTRUCTION
+	CAME	1,[XWD 1,2]	;PASS IF AC WAS INCREMENTED CORRECTLY
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT PUSHJ STORES THE PC IN RIGHT HALF OF C(AC-RIGHT)
+;THIS TEST PASSES IF THE PC WAS STORED CORRECTLY.
+
+C31500:	MOVEI	1,1		;PLACE 0,,1 INTO AC
+	PUSHJ	1,.+2		;*PUSHJ SHOULD STORE .+1 INTO RIGHT HALF OF C(AC-RIGHT)
+	HALT			;PUSHJ SHOULD JUMP OVER THIS PC
+	ANDI	2,-1		;SAVE RIGHT HALF OF C(AC-RIGHT)
+	CAIE	2,.-2		;PASS IF PC STORED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT PUSHJ ALWAYS RESETS BIS.
+;FIRST BIS IS SET; THEN PUSHJ IS EXECUTED.  THE FLAGS ARE
+;THEN SAVED AND CHECKED.  IF BIS WAS RESET VIA PUSHJ, THIS TEST PASSES.
+
+C31501:	SFLAG	BIS		;SET BIS
+	SETZ			;CLEAR AC
+	PUSHJ	.+1		;*PUSHJ SHOULD RESET BIS
+	JSP	.+1		;SAVE FLAGS
+	TLNE	BIS		;PASS IF BIS FLAG IS RESET
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON PUSHJ.
+;THE AC IS PRELOADED WITH 0,,-1; THEN PUSHJ IS EXECUTED. PUSHJ SHOULD ADD ONE TO
+;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17. IF A
+;CARRY WAS GENERATED, THE TEST PASSES.
+
+C31502:	MOVEI	2,-1		;PRELOAD AC WITH 0,,-1
+	PUSHJ	2,.+1		;*PUSHJ SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+	CAME	2,[2,,0]	;PASS IF C(AC)=2,,0 (CARRY WAS GENERATED)
+	STOP
+
+;****************
+SUBTTL	TEST OF POP INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT POP SUBTRACTS 1,,1 FROM THE AC
+;THE AC IS PRELOADED WITH 1,,1; THEN, POP IS EXECUTED.
+;THE AC IS CHECKED FOR 0.  IF C(AC)=0, THIS TEST PASSES.
+
+C31600:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	POP	1		;*POP SHOULD SUBTRACT 1,,1 FROM THE AC
+	SKIPE			;PASS IF AC WAS DECREMENTED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP SUBTRACTS 1,,1 FROM THE AC
+;THE AC IS PRELOADED WITH 2,,2; THEN, POP IS EXECUTED.
+;THE AC IS CHECKED FOR 1,,1.  IF C(AC)=1,,1, THIS TEST PASSES.
+
+C31700:	MOVE	[XWD 2,2]	;PRELOAD AC WITH E,,E WHERE E=2
+	MOVEI	2,5		;PRELOAD 2 WITH 0,,5
+	POP	2		;*POP SHOULD SUBTRACT 1,,1 FROM THE AC
+	CAME	[1,,1]		;PASS IF AC WAS DECREMENTED CORRECTLY
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E
+;IN THIS CASE, AC=0 AND AC IS PRELOADED WITH 2,,2; E=2 AND IS PRELOADED WITH 0.
+;POP IS THEN EXECUTED.  POP SHOULD PLACE 0 INTO E.  IF C(E)=0, THIS TEST PASSES.
+
+C32300:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	SETZM	2		;CLEAR E AND C(AC-RIGHT)
+	POP	2		;*POP SHOULD PLACE 0 INTO E
+	SKIPE	2		;PASS IF C(E)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP DOES NOT MODIFY C(C(AC-RIGHT)-1).
+;THIS TEST FAILS IF C(C(AC-RIGHT)-1) IS MODIFIED BY POP.
+
+C32400:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	MOVEI	2,17		;PRELOAD 2 WITH 0,,17
+	SETZM	1		;CLEAR C(C(AC-RIGHT)-1)
+	POP	2		;*POP SHOULD NOT MODIFY C(C(AC-RIGHT)-1)
+	SKIPE	1		;PASS IF C(C(AC-RIGHT)-1) WAS UNALTERED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.
+;IN THIS CASE, AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH 0,,3.
+;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR 0,,3 [C(C(AC-RIGHT))] .
+;IF C(E)=0,,3, THIS TEST PASSES.
+
+C32500:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	MOVEI	2,3		;PRELOAD C(AC-RIGHT) WITH 0,,3
+	SETZM	3		;CLEAR E
+	POP	3		;*POP SHOULD PLACE 0,,3 INTO E
+	CAIE	3,3		;PASS IF C(E)=0,,3
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.  IN THIS CASE,
+;AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH 0,,17.
+;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR 0,,17 [C(C(AC-RIGHT))] .
+;IF C(E)=0,,17, THIS TEST PASSES.
+
+C32600:	SETZM	2		;CLEAR E
+	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	MOVEI	2,17		;PRELOAD C(AC-RIGHT) WITH 0,,17
+	POP	2		;*POP SHOULD PLACE 0,,17 INTO E
+	CAIE	2,17		;PASS IF C(E)=0,,17
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP STORES C(C(AC-RIGHT)) INTO E.  IN THIS CASE,
+;AC IS PRELOADED WITH 2,,2 AND AC2 [C(AC-RIGHT)] IS PRELOADED WITH -1,,-1.
+;E IS CLEARED AND POP IS EXECUTED.  E IS THEN CHECKED FOR -1,,-1 [C(C(AC-RIGHT))] .
+;IF C(E)=0,,3, THIS TEST PASSES.
+
+C33100:	MOVE	[XWD 2,2]	;PRELOAD AC WITH 2,,2
+	SETOM	2		;PRELOAD C(AC-RIGHT) WITH -1,,-1
+	SETZM	3		;CLEAR E
+	POP	3		;*POP SHOULD PLACE -1,,-1 INTO E
+	CAME	3,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POP PLACES C(C(AC-RIGHT)) INTO E AND ADDS 1,,1 TO AC.
+;IN THIS CASE, THE AC IS PRELOADED WITH 1,,17; E=1 AND E IS PRELOADED WITH 0;
+;C(AC-RIGHT) IS PRELOADED WITH -1,,-1; AND POP IS EXECUTED.  POP SHOULD PLACE -1,,-1
+;INTO E AND 0,,16 INTO AC.  IF AC AND E ARE UPDATED CORRECTLY, THIS TEST PASSES.
+
+C33300:	MOVE	[XWD 1,17]	;PRELOAD AC WITH 1,,17
+	SETZM	1		;PRELOAD E WITH 0
+	SETOM	17		;PRELOAD C(AC-RIGHT) WITH 1,,1
+	POP	1		;*POP SHOULD PLACE -1,,-1 INTO E AND 0,,16 INTO AC
+	CAME	1,[-1]		;PASS IF C(E)=-1,,-1
+	STOP
+C33310:	CAIE	16		;PASS IF C(AC)=0,,16
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POP PLACES C(C(AC-RIGHT)) INTO E AND ADDS 1,,1 TO AC
+;IN THIS CASE, THE AC IS PRELOADED WITH -1,,0; E=17
+;C(AC-RIGHT) IS PRELOADED WITH 0; AND POP IS EXECUTED.  POP SHOULD PLACE 0
+;INTO E.  IF AC IS UPDATED CORRECTLY, THIS TEST PASSES.
+
+C33400:	MOVSI	1,-1		;PRELOAD AC WITH -1,,0
+	SETZ			;CLEAR C(AC-RIGHT)
+	POP	1,17		;*POP SHOULD PLACE 0 INTO E
+	SKIPE	17		;PASS IF C(E)=0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON POP.
+;THE AC IS PRELOADED WITH 2,,0; THEN POP IS EXECUTED. POP SHOULD SUBTRACT ONE FROM
+;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17.
+;IF A CARRY WAS GENERATED, THIS TEST PASSES.
+
+C33401:	HRLZI	2,2		;PRELOAD AC WITH 2,,0
+	POP	2,0		;*POP SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+	CAIE	2,-1		;PASS IF C(AC) = 0,,-1	(CARRY WAS GENERATED)
+	STOP
+
+;************
+SUBTTL	TEST OF POPJ INSTRUCTION
+
+;**********
+
+;THIS TEST VERIFIES THAT POPJ JUMPS TO THE LOCATION ADDRESSED BY RIGHT HALF OF
+;C(C(AC-RIGHT)) BEFORE POPJ DECREMENTED THE AC.
+;THIS TEST PASSES IF POPJ JUMPS CORRECTLY.
+
+C33500:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	MOVEI	1,.+3		;PRELOAD C(AC-RIGHT) WITH .+3
+	POPJ	.+2		;*POPJ SHOULD JUMP TO LOCATION
+				;ADDRESSED BY C(C(AC-RIGHT))
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT POPJ SUBTRACTS 1,,1 FROM THE AC
+;THIS AC IS PRELOADED WITH 1,,1; THEN,POPJ IS EXECUTED.
+;THE AC IS CHECKED FOR 0.  IF C(AC)=0, THIS TEST PASSES.
+
+C33600:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	MOVEI	1,.+2		;PRELOAD C(AC-NIGHT)WITH .+2
+	POPJ	.+1		;*POPJ SHOULD SUBTRACT 1,,1 FROM AC
+	CAME	[0]		;PASS IF C(AC)=0
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT POPJ JUMPS TO THE LOCATION ADDRESSED BY RIGHT HALF OF
+;C(C(AC-RIGHT)) BEFORE POPJ DECREMENTED THE AC.
+;THIS TEST PASSES IF POPJ JUMPS CORRECTLY.
+
+C33700:	MOVE	[XWD 1,1]	;PRELOAD AC WITH 1,,1
+	MOVEI	1,.+2		;PRELOAD C(AC-RIGHT) WITH C33700+3
+	POPJ	.+2		;*POPJ SHOULD JUMP TO C33700+3
+	SKIPA			;PASS IF POPJ JUMPED CORRECTLY
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THERE IS A CARRY FROM BIT18 TO BIT17 OF THE AC ON POPJ.
+;THE AC IS PRELOADED WITH 2,,0; THEN POPJ IS EXECUTED POPJ SHOULD SUBTRACT ONE FROM
+;BOTH HALVES OF THE AC, GENERATING A CARRY FROM BIT18 TO BIT17.
+;IF A CARRY WAS GENERATED, THIS TEST PASSES.
+
+C33701:	HRLZI	2,2		;PRELOAD AC WITH 2,,0
+	MOVEI	0,.+2		;PRELOAD RH(AC) WITH C33701: +3
+	POPJ	2,0		;*POPJ SHOULD GENERATE A CARRY FROM BIT18 TO BIT17
+	CAIE	2,-1		;PASS IF C(AC)=0,,-1 (CARRY WAS GENERATED)
+	STOP
+
+;*************
+SUBTTL	XCT INSTRUCTION - ADDITIONAL TESTS
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+
+C34000:	SETOB	1
+	XCT	[CAME 0,1]	;*CAME SHOULD SKIP TO C34000+3
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+
+C34100:	SETOB	1
+	XCT	[XCT[XCT[CAME 0,1]]]	;*CAME SHOULD SKIP TO C34100+3
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP.
+
+C34200:	XCT	[JRST .+4]	;*JRST SHOULD JUMP TO C34200+4
+	HALT			;JRST SHOULD JUMP OVER THIS LOCATION
+	HALT			;JRST SHOULD JUMP OVER THIS LOCATION
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP AND THAT WHEN THE PC IS SAVED IT CONTAINS AN
+;ADDRESS ONE GREATER THAN THE LOCATION OF FIRST XCT OF THE CHAIN.
+
+C34300:	SETZM	3		;CLEAR AC OF JSP
+	XCT	[XCT[XCT[JSP 3,.+3]]] ;*JSP SHOULD JUMP TO C34300+4 AND
+	HALT			;THE SAVED PC SHOULD BE C 34300+2
+	HALT			;PASS IF JSP JUMPED CORRECTLY
+	TRZ	3,.-2		;AND SAVED PC=C34300+2
+	TRNE	3,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+;IN THIS CASE, NO SKIP SHOULD OCCUR  ;HENCE, THE INSTRUCTION
+;FOLLOWING XCT SHOULD BE EXECUTED AFTER 'CAME' IS EXECUTED.
+
+C34400:	SETZB	0		;SET-UP AC,E SO THAT
+	SETOM	1		;CAME WILL NOT SKIP
+	XCT	[CAME 0,1]	;*CAME SHOULD CAUSE EXECUTION
+				;OF INSTRUCTION FOLLOWING XCT
+	JRST	.+2		;PASS IF THIS INSTRUCTION IS EXECUTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES INDEXING FOR XCT OF AN ADD INSTRUCTION
+;C(4)=10, AND C(6)=3, SO THE RESULT IN 6 (THE AC) SHOULD BE 16
+;C(11)=13
+
+C34500:	MOVEI	4,10		;PRELOAD INDEX REG WITH 10
+	MOVEI	11,13		;PRELOAD EFFECTIVE ADDRESS WITH 13
+	MOVEI	6,3		;PRELOAD AC WITH 3
+	XCT	[ADD 6,1(4)]	;*ADD SHOULD PLACE 16 IN AC
+	CAIE	6,16		;PASS IF C(AC)=16
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT
+;IN THIS CASE, NO SKIP SHOULD OCCUR  ;HENCE, THE INSTRUCTION
+;FOLLOWING XCT SHOULD BE EXECUTED AFTER CAME IS EXECUTED.
+
+C34600:	SETZM	2		;SETUP E SO THAT SKIPL WILL NOT SKIP
+	XCT	[SKIPL 1,2]	;*SKIPL SHOULD CAUSE INSTRUCTION
+				;OF FOLLOWING INSTRUCTION
+	JRST	.+2		;PASS IF THIS INSTRUCTION IS EXECUTED.
+	STOP
+C34610:	SKIPE	1		;*SKIPE SHOULD SKIP BECAUSE XCT OF SKIPL
+				;PLACED 0 INTO AC1
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A SKIP INSTRUCTION, THE SKIP IS RELATIVE
+;TO THE LOCATION OF THE XCT.
+
+C34700:	SETOM	6		;SETUP E SO THAT SKIPL WILL SKIP
+	XCT	[SKIPL 3,6]	;*SKIPL SHOULD SKIP TO C34700+3
+	STOP
+C34710:	SKIPL	3		;*SKIPE SHOULD SKIP BECAUSE XCT OF SKIPL
+				;PLACED 0 INTO AC1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP.
+;THIS TEST ALSO VERIFIES CORRECT UPDATING OF THE AC FOR AOBJN
+
+C35000:	MOVE	3,[-2,,5]	;SETUP AC SO THAT AOBJN WILL JUMP
+	XCT	[AOBJN 3,.+3]	;*JUMP SHOULD BE TO C35000+4
+	HALT			;JUMP OVER THIS INSTRUCTION
+	HALT			;JUMP OVER THIS INSTRUCTION
+	CAME	3,[-1,,6]	;PASS IF C(AC)=-1,,6 AND AOBJN JUMPED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT IF AN XCT EXECUTES A JUMP, PROGRAM FLOW IS ALTERED AS
+;SPECIFIED BY THE JUMP.
+;THIS TEST ALSO VERIFIES CORRECT UPDATING OF THE AC FOR AOBJN
+
+C35100:	MOVE	3,[-1,,6]	;SETUP AC SO THAT AOBJN WILL NOT JUMP
+	XCT	[AOBJN 3,.+2]	;*AOBJN SHOULD NOT JUMP
+	CAME	3,[0,,7]	;PASS IF AOBJN DID NOT JUMP AND C(AC)=0,,7
+	STOP
+
+;**********
+SUBTTL	TEST XCT INSTRUCTION WITH INDIRECT ADDRESSING AND INDEXING
+
+;**********
+
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+;FROM AN INDIRECTLY ADDRESSED LOCATION
+
+C35200:	SETZB	2
+	JRST	.+3
+		.+1
+	SETOM	2		;THIS INSTRUCTION SHOULD BE EXECUTED
+	XCT	@.-2
+	CAME	2,[-1,,-1]	;PASS IF 'SETOM 2' WAS EXECUTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+;FROM AN INDEXED LOCATION
+
+C35300:	MOVEI	4,.+1
+	JRST	.+2
+	CAIE	4,.-1		;THIS INSTRUCTION SHOULD BE EXECUTED
+	XCT	1(4)
+	STOP			;PASS IF 'CAIE 4,,-1' WAS EXECUTED
+
+;**********
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INSTRUCTION
+;FROM AN INDIRECTLY ADDRESSED AND INDEXED LOCATION
+
+C35400:	SETZM	5
+	MOVEI	3,.+3
+	JRST	.+2
+	MOVEI	5,.+3
+	XCT	@-1(3)
+	JRST	.+2
+	SETOM	5		;THIS INSTRUCTION SHOULD BE EXECUTED
+	CAME	5,[-1,,-1]	;PASS IF 'SETOM 5' WAS EXECUTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT XCT WILL EXECUTE AN INDIRECTLY ADDRESSED
+;AND INDEXED INSTRUCTION
+
+C35500:	SETZM	3
+	MOVEI	10,3
+	JRST	.+5
+	HALT
+	HALT
+	MOVE	3,@.-2(10)	;THIS INSTRUCTION SHOULD BE EXECUTED
+	HALT	[0,,707070]
+	XCT	.-2
+	CAIE	3,707070	;PASS IF 'MOVE 3,@.-2(10)' WAS EXECUTED
+	STOP
+
+;**********
+SUBTTL	TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C35600:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 0,,0 RIGHT 3 BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C35700:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE -1,,-1 RIGHT 3 BIT POSITIONS
+	CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36000:	MOVE	0,[252525,,252525] ;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 252525,,252525
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[525252,,525252] ;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36100:	MOVE	0,[525252,,525252] ;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 525252,,525252
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[252525,,252525] ;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=023070,,360370.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36200:	MOVE	0,[230703,,603700] ;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 230703,,603700
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[023070,,360370] ;PASS IF C(AC)=023070,,360370
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 007603,,607062 SHOULD BE ROTATED RIGHT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=200760,,360706.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36300:	MOVE	0,[007603,,607062] ;PRELOAD AC WITH 007603,,607062
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	0,-3		;*ROT SHOULD ROTATE 007603,,607062
+				;RIGHT 3 BIT POSITIONS
+	CAME	0,[200760,,360706] ;PASS IF C(AC)=200760,,360706
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36400:	MOVE	2,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 0,,0 LEFT 15 BIT POSITIONS
+	CAME	2,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36500:	MOVE	2,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE -1,,-1 LEFT 15 BIT POSITIONS
+	CAME	2,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36600:	MOVE	2,[252525,,252525] ;PRELOAD AC WITH 252525,,252525
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 252525,,252525
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[525252,,525252] ;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C36700:	MOVE	2,[525252,,525252] ;PRELOAD AC WITH 525252,,525252
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 525252,,525252
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[252525,,252525] ;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)074076,,004616.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C37000:	MOVE	2,[230703,,603700] ;PRELOAD AC WITH 230703,,603700
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 230703,,603700
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[074076,,004616] ;PASS IF C(AC)074076,,004616
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROT INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 007603,,607062 SHOULD BE ROTATED LEFT 15 BIT POSITIONS
+;SO THAT FINAL C(AC)074161,,440174.
+;C(AC+1) SHOULD NOT BE AFFECTED.
+
+C37100:	MOVE	2,[007603,,607062] ;PRELOAD AC WITH 007603,,607062
+	MOVE	3,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	ROT	2,15		;*ROT SHOULD ROTATE 007603,,607062
+				;LEFT 15 BIT POSITIONS
+	CAME	2,[074161,,440174] ;PASS IF C(AC)074161,,440174
+	STOP
+	CAME	3,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 0,,0 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0 AND FINAL C(AC+1)=0,,0
+
+C37200:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[0,,0]	;PRELOAD AC+1 WITH 0,,0
+	ROTC	0,3		;*ROTC SHOULD ROTATE 0,,0 0,,0 LEFT 3 BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[0,,0]	;PASS IF C(AC+1)=0,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 -1,,-1 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1 AND FINAL C(AC+1)=-1,,-1
+
+C37300:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	1,[-1,,-1]	;PRELOAD AC+1 WITH -1,,-1
+	ROTC	0,3		;*ROTC SHOULD ROTATE -1,,-1
+				;-1,,-1 LEFT 3 BIT POSITIONS
+	CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	0,[-1,,-1]	;PASS IF C(AC+1)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 252525,,252525 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252 AND FINAL C(AC+1)=525252,,525252
+
+C37400:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[252525,,252525]	;PRELOAD AC+1 WITH 252525,,252525
+	ROTC	0,3			;*ROTC SHOULD ROTATE 252525,,252525
+					;252525,,252525 LEFT 3 BIT POSITIONS
+	CAME	0,[525252,,525252]	;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	1,[525252,,525252]	;PASS IF C(AC+1)=525252,,525252
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 525252,,525252 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525 AND FINAL C(AC+1)=252525,,252525
+
+C37500:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[525252,,525252]	;PRELOAD AC+1 WITH 525252,,525252
+	ROTC	0,3			;*ROTC SHOULD ROTATE 525252,,525252
+					;525252,,525252 LEFT 3 BIT POSITIONS
+	CAME	0,[252525,,252525]	;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	1,[252525,,252525]	;PASS IF C(AC+1)=252525,,252525
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 770037,,600377 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=307036,,37007 AND FINAL C(AC+1)=700376,,003772
+
+C37600:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[770037,,600377]	;PRELOAD AC+1 WITH 770037,,600377
+	ROTC	0,3			;*ROTC SHOULD ROTATE 230703,,603700
+					;770037,,600377 LEFT 3 BIT POSITIONS
+	CAME	0,[307036,,037007]	;PASS IF C(AC)=307036,,37007
+	STOP
+	CAME	1,[700376,,003772]	;PASS IF C(AC+1)=700376,,003772
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 776003,,760077 007603,,607062 SHOULD BE ROTATED LEFT 3 BIT POSITIONS
+;SO THAT FINAL C(AC)=760037,,600770 AND FINAL C(AC+1)=076036,,070627
+
+C37700:	MOVE	0,[776003,,760077]	;PRELOAD AC WITH 776003,,760077
+	MOVE	1,[007603,,607062]	;PRELOAD AC+1 WITH 007603,,607062
+	ROTC	0,3			;*ROTC SHOULD ROTATE 776003,,760077
+					;007603,,607062 LEFT 3 BIT POSITIONS
+	CAME	0,[760037,,600770]	;PASS IF C(AC)=076036,,070627
+	STOP
+	CAME	1,[076036,,070627]	;PASS IF C(AC+1)=760037,,600770
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 0,,0 0,,0 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0 AND FINAL C(AC+1)=0,,0
+
+C40000:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[0,,0]	;PRELOAD AC+1 WITH 0,,0
+	ROTC	0,7		;*ROTC SHOULD ROTATE 0,,0 0,,0 LEFT 7 BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[0,,0]	;PASS IF C(AC+1)=0,,0
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, -1,,-1 -1,,-1  SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=-1,,-1 AND FINAL C(AC+1)=-1,,-1
+
+C40100:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	1,[-1,,-1]	;PRELOAD AC+1 WITH -1,,-1
+	ROTC	0,7		;*ROTC SHOULD ROTATE -1,,-1
+				;-1,,-1 LEFT 7 BIT POSITIONS
+	CAME	0,[-1,,-1]	;PASS IF C(AC)=-1,,-1
+	STOP
+	CAME	1,[-1,,-1]	;PASS IF C(AC+1)=-1,,-1
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 252525,,252525 252525,,252525 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=525252,,525252 AND FINAL C(AC+1)=525252,,525252
+
+C40200:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[252525,,252525]	;PRELOAD AC+1 WITH 252525,,252525
+	ROTC	0,7			;*ROTC SHOULD ROTATE 252525,,252525
+					;252525,,252525 LEFT 7 BIT POSITIONS
+	CAME	0,[525252,,525252]	;PASS IF C(AC)=525252,,525252
+	STOP
+	CAME	1,[525252,,525252]	;PASS IF C(AC+1)=525252,,525252
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 525252,,525252 525252,,525252 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=252525,,252525 AND FINAL C(AC+1)=252525,,252525
+
+C40300:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[525252,,525252]	;PRELOAD AC+1 WITH 525252,,525252
+	ROTC	0,7			;*ROTC SHOULD ROTATE 525252,,525252
+					;525252,,525252 LEFT 7 BIT POSITIONS
+	CAME	0,[252525,,252525]	;PASS IF C(AC)=252525,,252525
+	STOP
+	CAME	1,[252525,,252525]	;PASS IF C(AC+1)=252525,,252525
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 230703,,603700 770037,,600377 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=160740,,760176 AND FINAL C(AC+1)=007740,,077646
+
+C40400:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[770037,,600377]	;PRELOAD AC+1 WITH 770037,,600377
+	ROTC	0,7			;*ROTC SHOULD ROTATE 230703,,603700
+					;770037,,600377 LEFT 7 BIT POSITIONS
+	CAME	0,[160740,,760176]	;PASS IF C(AC)=160740,,760176
+	STOP
+	CAME	1,[007740,,077646]	;PASS IF C(AC+1)=007740,,077646
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT A ROTC INSTRUCTION FUNCTIONS CORRECTLY.
+;IN THIS CASE, 776003,,760077 007603,,607063 SHOULD BE ROTATED LEFT 7 BIT POSITIONS
+;SO THAT FINAL C(AC)=400774,,017610 AND FINAL C(AC+1)=740741,,614577
+
+C40500:	MOVE	0,[776003,,760077]	;PRELOAD AC WITH 776003,,760077
+	MOVE	1,[007603,,607062]	;PRELOAD AC+1 WITH 007603,,607062
+	ROTC	0,7			;*ROTC SHOULD ROTATE 776003,,760077
+					;007603,,607062 LEFT 7 BIT POSITIONS
+	CAME	0,[400774,,017601]	;PASS IF C(AC)=400774,,017601
+	STOP
+	CAME	1,[740741,,614577]	;PASS IF C(AC+1)=740741,,614577
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C40600:	MOVE	0,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,777.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C40700:	MOVE	0,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	1,[172737,,405060] ;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,777]	;PASS IF C(AC)=0,,777
+	STOP
+	CAME	1,[172737,,405060] ;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,252.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41000:	MOVE	0,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	1,[172737,,405060] 	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,252]		;PASS IF C(AC)=0,,252
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,525.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41100:	MOVE	0,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,525]		;PASS IF C(AC)=0,,525
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 230703,,603700 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,230.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41200:	MOVE	0,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,230]		;PASS IF C(AC)=230703,,603700
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,7.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41300:	MOVE	0,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+	MOVE	1,[172737,,405060]	;PRELOAD AC+1 WITH 172737,,405060
+	LSH	0,-33			;*LSH SHOULD LOGICALLY SHIFT 007603,,6070062
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	0,[0,,7]		;PASS IF C(AC)=0,,7
+	STOP
+	CAME	1,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41400:	MOVE	1,[0,,0]	;PRELOAD AC WITH 0,,0
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+				;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,17777.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41500:	MOVE	1,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+				;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,17777]	;PASS IF C(AC)=0,17777
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,5252.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41600:	MOVE	1,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,5252]		;PASS IF C(AC)=0,,5252
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,12525.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C41700:	MOVE	1,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,12525]		;PASS IF C(AC)=0,,12525
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 230703,602700 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,4616.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42000:	MOVE	1,[230703,,603700]	;PRELOAD AC WITH 230703,603700
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,4616]		;PASS IF C(AC)=0,,4616
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 27 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,174.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42100:	MOVE	1,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-27			;*LSH SHOULD LOGICALLY SHIFT 007603,,607062
+					;RIGHT 27 OCTAL BIT POSITIONS
+	CAME	1,[0,,174]		;PASS IF C(AC)=0,,174
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 0,,0 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,0.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42200:	MOVE	1,[0,0]		;PRELOAD AC WITH 0,,0
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33		;*LSH SHOULD LOGICALLY SHIFT 0,,0
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,0]	;PASS IF C(AC)=0,,0
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, -1,,-1 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,777.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42300:	MOVE	1,[-1,,-1]	;PRELOAD AC WITH -1,,-1
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33		;*LSH SHOULD LOGICALLY SHIFT -1,,-1
+				;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,777]	;PASS IF C(AC)=0,,777
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 252525,,252525 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,252.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42400:	MOVE	1,[252525,,252525]	;PRELOAD AC WITH 252525,,252525
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 252525,,252525
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,252]		;PASS IF C(AC)=0,,252
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 525252,,525252 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,525.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42500:	MOVE	1,[525252,,525252]	;PRELOAD AC WITH 525252,,525252
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 525252,,525252
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,525]		;PASS IF C(AC)=0,525
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 230703,,603700 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,230.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42600:	MOVE	1,[230703,,603700]	;PRELOAD AC WITH 230703,,603700
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 230703,,603700
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,230]		;PASS IF C(AC)=0,,230
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+;**********
+
+;THIS TEST VERIFIES THAT THE LSH INSTRUCTION FUNCTIONS CORRECTLY
+;IN THIS CASE, 007603,,607062 SHOULD BE LOGICALLY SHIFTED RIGHT 33 OCTAL BIT POSITIONS
+;SO THAT FINAL C(AC)=0,,7.
+;C(AC+1) SHOULD NOT BE AFFECTED
+
+C42700:	MOVE	1,[007603,,607062]	;PRELOAD AC WITH 007603,,607062
+	MOVE	2,[172737,,405060]	;PRELOAD C(AC+1) WITH 172737,,405060
+	LSH	1,-33			;*LSH SHOULD LOGICALLY SHIFT 007603,,607062
+					;RIGHT 33 OCTAL BIT POSITIONS
+	CAME	1,[0,,7]		;PASS IF C(AC)=0,,7
+	STOP
+	CAME	2,[172737,,405060]	;PASS IF C(AC+1) NOT AFFECTED
+	STOP
+
+	JRST	BEGEND		;REPEAT TEST
diff --git a/apps/pdp10/diags/klad/dakag/README.md b/apps/pdp10/diags/klad/dakag/README.md
new file mode 100644
index 000000000..62973ef8f
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakag/README.md
@@ -0,0 +1,278 @@
+---
+layout: page
+title: PDP-10 KA10 Basic Instruction Diagnostic #7
+permalink: /apps/pdp10/diags/klad/dakag/
+machines:
+  - id: testka10
+    type: pdp10
+    config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
+    debugger: true
+    commands: a 30724 DAKAG.MAC
+---
+
+PDP-10 KA10 Basic Instruction Diagnostic #7
+-------------------------------------------
+
+The *PDP-10 KA10 Basic Instruction Diagnostic #7* (MAINDEC-10-DAKAG) test code has been extracted from
+[DAKAGM.MAC](DAKAGM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakagm.mac.html)]
+for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
+
+Resources for this test include:
+
+- [Instructions](#dakagtxt)
+- [History](#dakaghst)
+- [Source Code](#dakagmac)
+- [MACRO-10 Listing](DAKAG.LST.txt)
+- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakag/DAKAG.SEQ.txt)
+
+{% include machine.html id="testka10" %}
+
+The Debugger's assemble ("a") command can be used to test the new built-in
+[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset
+of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
+This command:
+
+	a 30724 DAKAG.MAC
+
+will automatically read the [DAKAG.MAC](DAKAG.MAC.txt) source file (a slightly modified copy of [DAKAGM.MAC](DAKAGM.MAC.txt)),
+assemble it, and then load the binary output at the specified address.
+
+---
+
+DAKAG.TXT
+---------
+
+```
+MAINDEC-10-DAKAG.TXT
+
+
+
+
+
+
+ 
+			IDENTIFICATION
+			--------------
+
+	PRODUCT CODE:   MAINDEC-10-DAKAG-B-D
+
+	PRODUCT NAME:   DECSYSTEM10 PDP-10 KA10 BASIC
+	                INSTRUCTION DIAGNOSTIC (7)
+
+	FUNCTION:       PUSH, POP, XCT, BASIC SHIFT/ROTATE
+
+	VERSION:        0.2
+
+	DATE RELEASED:  JANUARY 1977
+
+	MAINTAINED BY:  DIAGNOSTIC ENGINEERING GROUP
+
+	AUTHOR:         JOHN R. KIRCHOFF
+
+COPYRIGHT(C) 1976,1977
+DIGITAL EQUIPMENT CORPORATION
+MARLBORO, MASS. 01752
+
+THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
+ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
+THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,
+OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
+MADE AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM
+AND TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE TO AND
+OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
+
+THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
+NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
+EQUIPMENT CORPORATION.
+
+DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
+SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
+
+							MAINDEC-10-DAKAG.TXT
+							PAGE 2
+
+
+			TABLE OF CONTENTS
+			-----------------
+
+1.0	ABSTRACT
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+2.2	STORAGE
+
+2.3	PRELIMINARY PROGRAMS
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+3.2	STARTING PROCEDURE
+
+3.3	OPERATING PROCEDURE
+
+4.0	ERRORS
+
+5.0	ITERATION COUNTER
+
+6.0	CYCLE TIME
+
+7.0	OPERATIONAL VARIATIONS
+
+8.0	MISCELLANEOUS
+
+9.0	LISTING
+
+							MAINDEC-10-DAKAG.TXT
+							PAGE 3
+
+
+1.0	ABSTRACT
+
+	THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
+	SEVENTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
+	THE DIAGNOSTIC TESTS THE PUSH, POP, XCT AND BASIC
+	SHIFT ROTATE INSTRUCTIONS.
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+	A PDP-10 KA10 WITH A MINIMUM OF 32K OF MEMORY
+
+	PAPER TAPE READER 
+	DECTAPE (OPTIONAL)
+	CONSOLE TELETYPE
+
+2.2	STORAGE
+
+	THE PROGRAM RUNS WITHIN 32K OF MEMORY.
+
+2.3	PRELIMINARY PROGRAMS
+
+	CONSOLE FUNCTIONS WORKING PROPERLY
+	PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY 
+	PREVIOUS PROCESSOR DIAGNOSTICS
+	
+							MAINDEC-10-DAKAG.TXT
+							PAGE 4
+
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+	PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
+	DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)
+
+3.2	STARTING PROCEDURE
+
+	STAND-ALONE STARTING ADDRESS IS 30000.
+
+	IF THE DIAGNOSTIC FAILS TO START CORRECTLY TRY STARTING AT THE
+	FIRST TEST INSTEAD OF AT THE BEGINNING OF THE CONTROL SEQUENCE.
+	(SEE LISTING).
+
+3.3	OPERATING PROCEDURE
+
+	ONCE STARTED THE PROGRAM WILL CYCLE CONTINUALLY UNTIL STOPPED
+	OR AN ERROR OCCURS.
+
+4.0	ERRORS
+
+	ERRORS ARE IN THE FORM OF HALT INSTRUCTIONS.  THE LISTING
+	SHOULD BE CONSULTED TO DETERMINE THE CAUSE OF THE ERROR.  A
+	NO OPERATION (JUMP) INSTRUCTION FOLLOWS EACH HALT.  THIS
+	MAY BE USEFUL IN CONSTRUCTING A SCOPE LOOP TO CYCLE ON THE
+	FAILING INSTRUCTION.
+
+5.0	ITERATION COUNTER
+
+	THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEM-
+	ORY INDICATORS (MI).  THIS COUNT IS A DECREMENTING COUNT AND
+	INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.
+
+6.0	CYCLE TIME
+
+	THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND
+	IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS, ETC.
+
+							MAINDEC-10-DAKAG.TXT
+							PAGE 5
+
+
+7.0	OPERATIONAL VARIATIONS
+
+	A.  DIAGNOSTIC MONITOR
+
+	    THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PRO-
+	    VIDE RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PRO-
+	    VIDE A QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR
+	    AREA OF THE PROCESSOR.  CERTAIN PROCEDURES ARE USED WHEN
+	    THE PROGRAM IS USED IN THIS MANNER.  THEY ARE:
+
+	    1.  THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PRO-
+		GRAM AND STARTS IT AT LOCATION 30002.
+
+	    2.  MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MON-
+		ITOR CONTROL FLAG WORD.
+
+	B.  USER MODE
+
+	    THE PROGRAM WILL OPERATE IN USER MODE AND AS SUCH PROVIDES
+	    ASSURANCE THAT THE PROCESSOR IS PERFORMING ALL FUNCTIONS
+	    CORRECTLY.  USER MODE STARTING ADDRESS IS 30000.
+
+	C.  SYSTEM EXERCISER
+
+	    STARTING ADDRESS IS 30003.  NO DATA SWITCHES ARE USED BY
+	    THIS PROGRAM.
+
+8.0	MISCELLANEOUS
+
+	NONE
+
+9.0	LISTING
+```
+
+DAKAG.HST
+---------
+
+	    THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAG
+	
+	************************************************************************
+	
+	PRODUCT CODE:       MAINDEC-10-DAKAG
+	
+	PRODUCT NAME:       BASIC INSTRUCTION DIAGNOSTIC #7
+	
+	DATE RELEASED:      JANUARY 1977
+	
+	VERSION:            0.2
+	
+	UPDATE AUTHOR:      JOHN R. KIRCHOFF
+	
+	CHANGES MADE:
+	
+	    1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE.
+	
+	************************************************************************
+	
+	ORIGINAL VERSION:   0.1
+	
+	ORIGINAL AUTHOR:    RICHARD MALISKA
+	
+	ORIGINAL RELEASE:   16-MAR-72
+	
+	************************************************************************
+
+DAKAG.MAC
+---------
+
+[[Download](DAKAG.MAC.txt)]
+ 
+{% highlight text %}
+{% include_relative DAKAG.MAC.txt %}
+{% endhighlight %}
diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js
index fe08f6ae0..6daeadeb9 100644
--- a/modules/pdp10/lib/cpuops.js
+++ b/modules/pdp10/lib/cpuops.js
@@ -336,17 +336,18 @@ PDP10.opILDB = function(op, ac)
      * is with regEA containing the address of the bits to be loaded.
      *
      * We can implement this as a simple combination of opIBP() and opLDB(), but taking care that we only call
-     * opIBP() on phase 1.
+     * opIBP() on phase 1 (and only if the BIS flag is not set).
      */
-    if (this.regBP < 0) {
+    if (!(this.regPS & PDP10.PSFLAG.BIS)) {
         PDP10.opIBP.call(this, op, ac);
+        this.regPS |= PDP10.PSFLAG.BIS;
     }
     PDP10.opLDB.call(this, op, ac);
 };
 
 /**
  * opLDB(0o135000): Load Byte
- *
+ *z
  * From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
  *
  *      Retrieve a byte of S bits from the location and position specified by the pointer contained in location E,
@@ -393,6 +394,7 @@ PDP10.opLDB = function(op, ac)
         w = Math.trunc(w / Math.pow(2, p)) % Math.pow(2, s);
     }
     this.writeWord(ac, w);
+    this.regPS &= ~PDP10.PSFLAG.BIS;
     this.regBP = -1;
 };
 
@@ -422,10 +424,11 @@ PDP10.opIDPB = function(op, ac)
      * is with regEA containing the address of the bits to be stored.
      *
      * We can implement this as a simple combination of opIBP() and opDDB(), but taking care that we only call
-     * opIBP() on phase 1.
+     * opIBP() on phase 1 (and only if the BIS flag is not set).
      */
-    if (this.regBP < 0) {
+    if (!(this.regPS & PDP10.PSFLAG.BIS)) {
         PDP10.opIBP.call(this, op, ac);
+        this.regPS |= PDP10.PSFLAG.BIS;
     }
     PDP10.opDPB.call(this, op, ac);
 };
@@ -471,6 +474,7 @@ PDP10.opDPB = function(op, ac)
     var b = ((this.readWord(ac) % Math.pow(2, s)) * Math.pow(2, p)) % PDP10.WORD_LIMIT;
     w = (w - (w % Math.pow(2, p + s))) + b + (w % Math.pow(2, p));
     this.writeWord(this.regEA, w);
+    this.regPS &= ~PDP10.PSFLAG.BIS;
     this.regBP = -1;
 };
 
@@ -2323,7 +2327,19 @@ PDP10.opXCT = function(op, ac)
 };
 
 /**
- * opPUSHJ(0o260000)
+ * opPUSHJ(0o260000): Push Down and Jump
+ *
+ * From the DEC PDP-10 System Reference Manual (May 1968), p. 2-62:
+ *
+ *      Add 1000001 [base 8] to AC to increment both halves by one and place the result back in AC.  If the addition
+ *      causes the count in AC left to reach zero, set the Pushdown Overflow flag.  Then place the current contents of
+ *      the flags (as described above) in the left half of the location now addressed by AC right and the contents of
+ *      PC in the right half of that location (at this time PC contains an address one greater than the location of
+ *      the PUSHJ instruction).  Take the next instruction from location E and continue sequential operation from there.
+ *
+ *      The flags are unaffected except Byte Interrupt, which is cleared.  The original contents of the location added
+ *      to the list are lost.  If this instruction is executed as a result of a priority interrupt or in unrelocated
+ *      41 or 61 while the processor is in user mode, bit 5 of the PC word stored is 1 and the processor leaves user mode.
  *
  * @this {CPUStatePDP10}
  * @param {number} op
@@ -2331,7 +2347,12 @@ PDP10.opXCT = function(op, ac)
  */
 PDP10.opPUSHJ = function(op, ac)
 {
-    this.opUndefined(op);
+    var p = (this.readWord(ac) + 0o000001000001) % PDP10.WORD_LIMIT;
+    this.writeWord(ac, p);
+    if (!((p / PDP10.HALF_SHIFT)|0)) this.regPS |= PDP10.PSFLAG.PDOV;
+    this.writeWord(p & PDP10.ADDR_MASK, this.getPS() * PDP10.HALF_SHIFT + this.getPC());
+    this.regPS &= ~PDP10.PSFLAG.BIS;            // TODO: Verify that BIS is cleared AFTER calling getPS()
+    this.setPC(this.regEA);
 };
 
 /**
@@ -2370,16 +2391,16 @@ PDP10.opPUSH = function(op, ac)
          * This is the behavior that is clearly documented by DEC.
          */
         p += 0o000001000001;
-        this.writeWord(p & PDP10.HALF_MASK, this.readWord(this.regEA));
+        this.writeWord(p & PDP10.ADDR_MASK, this.readWord(this.regEA));
         if (p >= PDP10.WORD_LIMIT) p -= PDP10.WORD_LIMIT;
         if (!((p / PDP10.HALF_SHIFT)|0)) this.regPS |= PDP10.PSFLAG.PDOV;
     } else {
         /*
          * This is the SIMH behavior, which appears to increment each half of AC independently.
          */
-        var addr = (p + 1) & PDP10.HALF_MASK;
+        var addr = (p + 1) & PDP10.ADDR_MASK;
         this.writeWord(addr, this.readWord(this.regEA));
-        p = (p + 0o000001000000) - (p & PDP10.HALF_MASK) + addr;
+        p = (p + 0o000001000000) - (p & PDP10.ADDR_MASK) + addr;
         if (p >= PDP10.WORD_LIMIT) {
             p -= PDP10.WORD_LIMIT;
             this.regPS |= PDP10.PSFLAG.PDOV;
@@ -2407,7 +2428,7 @@ PDP10.opPUSH = function(op, ac)
 PDP10.opPOP = function(op, ac)
 {
     var p = this.readWord(ac);
-    var src = this.readWord(p & PDP10.HALF_MASK);
+    var src = this.readWord(p & PDP10.ADDR_MASK);
     this.writeWord(this.regEA, src);
     if (this.regEA == ac) p = src;     // this avoids re-reading the accumulator if the write just overwrote it
     p -= 0o000001000001;
@@ -2417,7 +2438,16 @@ PDP10.opPOP = function(op, ac)
 };
 
 /**
- * opPOPJ(0o263000)
+ * opPOPJ(0o263000): Pop Up and Jump
+ *
+ * From the DEC PDP-10 System Reference Manual (May 1968), p. 2-63:
+ *
+ *      Subtract 1000001 [base 8] from AC to decrement both halves by one and place the result back in AC.
+ *      If the subtraction causes the count in AC left to reach -1, set the Pushdown Overflow flag.  Take the
+ *      next instruction from the location addressed by the right half of the location that was addressed by
+ *      AC right prior to the decrementing, and continue sequential operation from there.
+ *
+ *      SIDEBAR: The effective address E is ignored.
  *
  * @this {CPUStatePDP10}
  * @param {number} op
@@ -2425,7 +2455,13 @@ PDP10.opPOP = function(op, ac)
  */
 PDP10.opPOPJ = function(op, ac)
 {
-    this.opUndefined(op);
+    var p = this.readWord(ac);
+    var pc = this.readWord(p & PDP10.ADDR_MASK);
+    p -= 0o000001000001;
+    if (p < 0) p += PDP10.WORD_LIMIT;
+    if (((p / PDP10.HALF_SHIFT)|0) == PDP10.HALF_MASK) this.regPS |= PDP10.PSFLAG.PDOV;
+    this.writeWord(ac, p);
+    this.setPC(pc & PDP10.ADDR_MASK);
 };
 
 /**
@@ -2448,7 +2484,7 @@ PDP10.opPOPJ = function(op, ac)
 PDP10.opJSR = function(op, ac)
 {
     this.writeWord(this.regEA, this.getPS() * PDP10.HALF_SHIFT + this.getPC());
-    this.regPS &= ~PDP10.PSFLAG.BIS;            // TODO: Verify that BIS is cleared AFTER writing
+    this.regPS &= ~PDP10.PSFLAG.BIS;            // TODO: Verify that BIS is cleared AFTER calling getPS()
     this.setPC(this.regEA + 1);
 };
 
@@ -2472,7 +2508,7 @@ PDP10.opJSR = function(op, ac)
 PDP10.opJSP = function(op, ac)
 {
     this.writeWord(ac, this.getPS() * PDP10.HALF_SHIFT + this.getPC());
-    this.regPS &= ~PDP10.PSFLAG.BIS;            // TODO: Verify that BIS is cleared AFTER writing
+    this.regPS &= ~PDP10.PSFLAG.BIS;            // TODO: Verify that BIS is cleared AFTER calling getPS()
     this.setPC(this.regEA);
 };
 
diff --git a/modules/pdp10/lib/cpustate.js b/modules/pdp10/lib/cpustate.js
index 46a814070..2953addd0 100644
--- a/modules/pdp10/lib/cpustate.js
+++ b/modules/pdp10/lib/cpustate.js
@@ -500,6 +500,19 @@ class CPUStatePDP10 extends CPUPDP10 {
         return this.regPC;
     }
 
+    /**
+     * getXC()
+     *
+     * NOTE: This function is nothing more than a convenience, and we fully expect it to be inlined at runtime.
+     *
+     * @this {CPUStatePDP10}
+     * @return {number}
+     */
+    getXC()
+    {
+        return this.regXC >= 0? this.regXC : this.regPC;
+    }
+
     /**
      * getLastAddr()
      *
@@ -534,6 +547,7 @@ class CPUStatePDP10 extends CPUPDP10 {
     setPC(addr)
     {
         this.regPC = addr % PDP10.ADDR_LIMIT;
+        this.regXC = -1;
     }
 
     /**
diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js
index db3b5bd69..2f92c32f4 100644
--- a/modules/pdp10/lib/debugger.js
+++ b/modules/pdp10/lib/debugger.js
@@ -3344,7 +3344,7 @@ class DebuggerPDP10 extends Debugger {
         this.println(this.getRegDump(fMisc));
 
         if (fInstruction) {
-            this.setAddr(this.dbgAddrCode, cpu.getPC());
+            this.setAddr(this.dbgAddrCode, cpu.getXC());
             this.doUnassemble(this.toStrAddr(this.dbgAddrCode));
         }
     }
@@ -3881,7 +3881,7 @@ class DebuggerPDP10 extends Debugger {
      */
     doCommands(sCmds, fSave)
     {
-        if (sCmds) {
+        if (sCmds != null) {
             this.aCommands = this.parseCommand(sCmds, fSave);
         }
         var sCmd;
diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js
index 2ba69739a..68f759f32 100644
--- a/versions/pdpjs/1.34.3/pdp10-dbg.js
+++ b/versions/pdpjs/1.34.3/pdp10-dbg.js
@@ -41,23 +41,23 @@ function za(a){return a.replace(/[&<>"']/g,function(a){return Aa[a]})}function B
 function Ga(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
 function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
 f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
-function Ia(a,b){var c,d={ea:null,X:null,xa:null,wa:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.xa=g.load;d.wa=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.X=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.xa=g.load;d.wa=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.Y=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Y:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.ya=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
+function Za(a){if($a)try{for(var b=0;ba?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Z:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.ya=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
 function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic,
 set:this.lc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&&dc(this,this.w=0)};
-m.qa=function(a,b,c,d){if(this.H&&this.H.qa(a,b,c,d)||this.v&&this.v.qa(a,b,c,d)||this.D&&this.D.qa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
-function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.qa.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Aa=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.pa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
+m.ra=function(a,b,c,d){if(this.H&&this.H.ra(a,b,c,d)||this.v&&this.v.ra(a,b,c,d)||this.D&&this.D.ra(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
+function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.ra.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Aa=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.qa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
 m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.ic=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])}
 m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.S=b==pc),!0):!1}
 function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.cc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.dc=function(){};m.Yb=function(a){a||this.v.W()};
@@ -75,97 +75,97 @@ m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else
 m.Zb=function(a){if(!a&&!this.v.A.O){var b;this.S&&wc(this);this.U==cc?b=yc(this.G,this.i):b=this.v.f(this.i);dc(this,this.w=b)}};m.ac=function(a){a||this.v.A.O||jc(this,this.j)};m.$b=function(a){a?(this.F=!0,gc(this,!0)):(this.F=!1,gc(this),kc(this,0))};m.bc=function(a,b){this.j=a?this.j|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Kc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
+m.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.qa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,Cc(this));return a.data()};m.restore=function(a){a:{a=a[0];var b;for(b=0;bd.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Gc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
 function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.la&&(a.la+=a.ra,c=!0);0<=a.ma&&a.ma<=fd(a)&&(a.ra=a.ma=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}}
-m.qa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Y)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.Z/a.ba?b=1:d=!0;a.ha=b;b=a.kb*a.ha;if(a.ba!=b){a.ba=b;b=a.ba.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.S=0;hd(a);return d}function kd(a,b){for(var c=a.P.length-1;0<=c;c--){var d=a.P[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.U-=a.N;a.N=0;b&&(a.U=0);return c}
-m.jc=function(){if(this.A.O){this.cb>=this.mb&&hd(this,!0);this.na=0;this.Ea=ob();if(this.S){var a=this.Ea-this.S;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.na+=b;this.M+=b;vc(this,b);tc(this,b);this.ja-=b;if(0>=this.ja){this.ja+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
-e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.S=ob();var c=this.lb;this.na&&(c=Math.round(c*this.na/this.Ha));var c=c-(this.S-this.Ea),d=this.S-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.V=0,gd(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.cb+=this.na;this.S+=c;a(b,c)}}};
-function rc(a,b){if(!Bb(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
+m.qa=function(a){return a?this.save():!0};m.ga=function(){return this.A.O?!0:this.A.ga?(rc(this),!0):!1};m.Ib=function(){return 0};function bd(a){void 0===a.Ga&&(a.Ga=0);void 0===a.ma&&(a.ma=-1);void 0===a.oa&&(a.oa=-1);a.A.Ua=0<=a.Ga&&0=a.na&&(a.na+=a.ma,c=!0);0<=a.oa&&a.oa<=fd(a)&&(a.ma=a.oa=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}}
+m.ra=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Z)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.ba/a.ha?b=1:d=!0;a.ja=b;b=a.kb*a.ja;if(a.ha!=b){a.ha=b;b=a.ha.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.U=0;hd(a);return d}function kd(a,b){for(var c=a.S.length-1;0<=c;c--){var d=a.S[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c}
+m.jc=function(){if(this.A.O){this.cb>=this.mb&&hd(this,!0);this.sa=0;this.Ea=ob();if(this.U){var a=this.Ea-this.U;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.sa+=b;this.M+=b;vc(this,b);tc(this,b);this.ka-=b;if(0>=this.ka){this.ka+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
+e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.U=ob();var c=this.lb;this.sa&&(c=Math.round(c*this.sa/this.Ha));var c=c-(this.U-this.Ea),d=this.U-this.L;d&&(this.ba=Math.round(this.M/(10*d))/100,864E5<=d&&(this.X=0,gd(this)));if(0>c||this.bac&&(this.L-=c),c=0;this.cb+=this.sa;this.U+=c;a(b,c)}}};
+function rc(a,b){if(!Ab(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
 function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype;
-m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.K=0;this.i=this.Da=this.Oa;this.I=this.ua=-1;this.F=this.j=0;this.ob=[0,0];this.sa=[0,0];this.ka=[0,0];this.ta=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
-m.save=function(){var a=new F(this);a.set(0,[this.b,this.K,this.Ia,this.Ja,this.i,this.ua,this.I,this.j,this.C,this.Da,this.Ba,this.Oa]);a.set(1,[]);a.set(2,[this.V,this.ha,this.A.ga]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
-m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.K=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.ua=b.next().value;this.I=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Oa=b.next().value;b=a[2];this.V=b[0];gd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
+m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.I=0;this.i=this.Da=this.Oa;this.K=this.P=-1;this.F=this.j=0;this.ob=[0,0];this.ta=[0,0];this.la=[0,0];this.ua=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
+m.save=function(){var a=new F(this);a.set(0,[this.b,this.I,this.Ia,this.Ja,this.i,this.P,this.K,this.j,this.C,this.Da,this.Ba,this.Oa]);a.set(1,[]);a.set(2,[this.X,this.ja,this.A.ga]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
+m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.P=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Oa=b.next().value;b=a[2];this.X=b[0];gd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
 m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
-m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.U=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.K&4194304?this.K=this.Ia=this.f(this.b):0<=this.ua?(this.K=this.Ja=this.f(this.ua),this.ua=-1):(this.K=
-this.Ja=this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.K&=8388607;this.b=this.K&262143;if(a=this.K>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.K&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
-function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.I=-1}}
-function yd(a,b){a=this.f(this.b);if(0>this.I)this.I=a,this.K=this.b|4194304;else{var c=this.I/$b&63,d=this.I>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.I=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)}
-function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ae(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}
+m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ia=this.f(this.b):0<=this.P?(this.I=this.Ja=this.f(this.P),this.P=-1):(this.I=this.Ja=
+this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.I&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
+function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}}
+function yd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)}
+function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Kd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}
 function be(a,b){var c=this.b*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}function ce(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+b)}function de(a,b){var c=this.f(this.b),d=(c&x)*y,c=Gd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function ee(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ge(a,b){var c=this.f(b);this.g(b,fe(a,c,this.b)+this.b)}function he(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}
 function ie(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function je(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ke(a,b){var c=this.f(b);this.g(b,fe(a,c,0))}function le(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}function me(a,b){var c=this.f(this.b),d=c/y|0,c=fe(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){ne[a&7].call(this,a,a>>3&127)}
 function oe(){}function pe(){}function L(a){this.u("undefined opcode: "+ua(a));sd(this,-1);this.W()}function qe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;re.call(this,a,b,c);return c}
-function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.sa;f[0]=1;f[1]=0;f=this.ka;f[0]=c;f[1]=0;c=this.ta;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.sa),ve(this.ta)))break;we(this.ka);we(this.sa)}while(!ve(this.sa));
-a=this.ob[0];this.F=this.ta[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a}
+function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.ta;f[0]=1;f[1]=0;f=this.la;f[0]=c;f[1]=0;c=this.ua;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.ta),ve(this.ua)))break;we(this.la);we(this.ta)}while(!ve(this.ta));
+a=this.ob[0];this.F=this.ua[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a}
 function xe(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(dz)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b}
 function ye(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ze(a,b){var c=a-b;0>c&&(c+=C);re.call(this,c,b,a);return c}function re(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>0)}function U(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function V(a){return a>>0)}function X(a){return(a/y|0)+(a&x)*y}function fe(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Ub?x*y:0}return b}function Gd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b}
 function ue(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=C&&(a[0]%=C,a[1]++)}function te(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function we(a){a[1]%2&&(a[0]+=C);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function ve(a){return!a[0]&&!a[1]}
-var vd=[N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},wd,function(a,b){0>this.I&&wd.call(this);xd.call(this,0,b)},xd,function(a,b){0>this.I&&wd.call(this);yd.call(this,0,b)},yd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},
+var vd=[N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},wd,function(a,b){this.j&8192||(wd.call(this),this.j|=8192);xd.call(this,0,b)},xd,function(a,b){this.j&8192||(wd.call(this),this.j|=8192);yd.call(this,0,b)},yd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},
 function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},
-function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},zd,Ad,Bd,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,ye.call(this,this.f(this.b)))},function(a,b){this.g(b,ye.call(this,this.b))},function(a,b){this.g(this.b,
-ye.call(this,this.f(b)))},function(a,b){a=ye.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,qe.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,qe.call(this,this.f(b)))},function(a,b){a=qe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,xe.call(this,this.f(b),this.b,!0))},function(a,b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b),
-!0))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,xe.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||(this.g(b,a),this.g(b+
-1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.b);0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.b);0>c||(this.g(b,c),this.g(b+1&15,this.F))},
-function(a,b){a=this.f(b);b=this.f(b+1&15);b=se.call(this,b,a,this.f(this.b));0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){var c=(this.b<<14>>14)%256;if(c){a=this.f(b);var d=a>z?-(C-a):a;0d?A:0,c=z):(d=d*Math.pow(2,c)%A,c=A-Math.pow(2,35-c)),a<=z?a+c>z&&(this.j|=131072):a-c<=z&&(this.j|=131072)):d=-35>=c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+C:d;
-this.g(b,a)}},function(a,b){if(a=(this.b<<14>>14)%36){var c=this.f(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%C+Math.trunc(c/Math.pow(2,36-a));this.g(b,c)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.g(b,c)}},function(a,b){a=0;var c=this.f(b);if(c){for(;c>14)%256){var c,d=this.f(b),e=this.f(b+1&15);if(0z&&
-dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d>z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+
-d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=(this.b<<14>>14)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),d=this.f(b+
-1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},L,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b,a)},function(a,b){a=!1;for(var c=this.f(b),d=c/y|0,c=c&x;!a;)this.g(c,this.f(d)),c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d*
-y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ia/y|0);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.ua=this.b},L,function(a){this.w(a)},function(a,b){a=this.f(b);a+=262145;this.g(a&x,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,
-b){a=this.f(b);var c=this.f(a&x);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a){this.w(a)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},
-function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ze.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ze.call(this,this.f(b),this.f(this.b))))},oe,function(a,b){0>T(this.f(b),this.b)&&
-G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+
-1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){G(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);
-0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),
-1));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,
-Q.call(this,this.f(this.b),1));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0V(a)&&G(this,this.b)},function(a,
-b){a=this.g(b,Q.call(this,this.f(b),B));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),B));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},
-function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>>f.i;0>>=
+function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},zd,Ad,Bd,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,ye.call(this,this.f(this.b)))},function(a,b){this.g(b,
+ye.call(this,this.b))},function(a,b){this.g(this.b,ye.call(this,this.f(b)))},function(a,b){a=ye.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,qe.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,qe.call(this,this.f(b)))},function(a,b){a=qe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,xe.call(this,this.f(b),this.b,!0))},function(a,
+b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,xe.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=se.call(this,
+this.f(b),0,this.f(this.b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.b);0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,
+c,a,this.b);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);b=this.f(b+1&15);b=se.call(this,b,a,this.f(this.b));0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){var c=(this.b<<14>>14)%256;if(c){a=this.f(b);var d=a>z?-(C-a):a;0d?A:0,c=z):(d=d*Math.pow(2,c)%A,c=A-Math.pow(2,35-c)),a<=z?a+c>z&&(this.j|=131072):a-c<=z&&(this.j|=131072)):d=-35>=
+c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+C:d;this.g(b,a)}},function(a,b){if(a=(this.b<<14>>14)%36){var c=this.f(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%C+Math.trunc(c/Math.pow(2,36-a));this.g(b,c)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.g(b,c)}},function(a,b){a=0;var c=this.f(b);if(c){for(;c>14)%256){var c,d=this.f(b),e=this.f(b+
+1&15);if(0z&&dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d>z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-
+Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=(this.b<<14>>14)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,
+b){if(a=(this.b<<14>>14)%256){var c=this.f(b),d=this.f(b+1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},L,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b,a)},function(a,b){a=!1;for(var c=this.f(b),d=c/y|0,c=c&x;!a;)this.g(c,this.f(d)),
+c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d*y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ia/y|0);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.P=this.b},L,function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Sb,
+(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){a=this.f(b);a+=262145;this.g(a&Sb,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Sb);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Sb);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a);G(this,c&Sb)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b+
+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,
+b){this.g(b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ze.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ze.call(this,this.f(b),this.f(this.b))))},oe,function(a,b){0>T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+
+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,
+a)},function(a,b){a=this.f(this.b);0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){G(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,
+Q.call(this,this.f(b),1));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,
+b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),
+B));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)||G(this,this.i+
+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>>f.i;0>>=
 f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
+function Ge(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
 a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)};
 m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.ab)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Aa=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
-m.pa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.U?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)}
 function Ne(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)^(c/Me|0))*Me+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b}
@@ -179,69 +179,69 @@ function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.t
 function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.T?K(a,c,a.L,8,1)+"  "+c+".":K(a,c,a.L,16,1)+"  "+K(a,c,a.L,8,1)+"  "+K(a,c,a.L,2,32>=a.L?8:6)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
 var Re={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Me=Math.pow(2,32);
-function Xe(a){Je.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.ba=["<",">"];this.sa=[];this.Ha=Z();this.M=Z(0);this.ma=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.V=this.na=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ca=this.Eb=0;this.Z=null;this.S=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.la=this.Ca=0;this.ta=this.ra=this.ha=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
-a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,oa:!1,T:c}}function bf(a,b,c,d){a.B=b;a.eb=c||!1;a.oa=!1;a.T=d}function cf(a){return[a.B,a.eb,a.oa,a.T,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.oa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
-m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ra=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.ma));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Kc[c],p&&d.u(n(p.id,8)+"  %"+
+function Xe(a){Je.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.ba=["<",">"];this.sa=[];this.Ha=Z();this.M=Z(0);this.na=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.V=this.oa=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ca=this.Eb=0;this.X=null;this.S=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.ma=this.Ca=0;this.ta=this.la=this.ha=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
+a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,pa:!1,T:c}}function bf(a,b,c,d){a.B=b;a.eb=c||!1;a.pa=!1;a.T=d}function cf(a){return[a.B,a.eb,a.pa,a.T,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.pa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
+m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.la=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.na));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Gc[c],p&&d.u(n(p.id,8)+"  %"+
 n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)}
-function $e(a,b){a.D=a;a.ca=a.Eb=536870916;a.Z=null;a.S=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;dd&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
+function sc(a,b,c,d){if(!wf(a))return!1;var e="";null===c&&(e=(c=!a.Ea||"tr"==a.Ea)?"tr":"t");a.C=0;b||td(a)&&ud(a,a.v.i,0);try{b=kd(a.v,b);var f=a.v.$a(b);0>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
 function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f,
 -1)+")")}else k=Ba(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h}
 function Jf(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;lGf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
 (c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127
-h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.na=0}
-m.Ra=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.oa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.oa||Ze(a);break}}return f}
-function Mf(a,b){for(var c=1;ch||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.oa=0}
+m.Ra=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.pa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.pa||Ze(a);break}}return f}
+function Mf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ha,d);f+="="+K(e,e.Ma(e.Ha),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,X:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&e>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,Y:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h,
-g);bf(a.M,h.i);break;case of:rd(h,g);break;case pf:f=131072;break;case qf:f=65536;break;case rf:f=32768;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.oa=l.oa;h.T=l.T;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
-function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Lb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Nd=
-[];"call"==Sf&&(Cb=1E5,Nd=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Cb--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var ib=ff(a,ma,a.ma);if(ib){var La=0,Xf="ds"==fb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||Ch,La=Qe(a,Ca);else{var Yf=ff(a,Ca);Yf&&
-(La=Yf.B-ib.B)}0>La&&(La=0);65536Eb?".":String.fromCharCode(Eb)),Gc=Gc-7}Ma&&(Ma+="\n");Ma=Xf?Ma+(oa+","):Ma+(ma+": "+oa+(0>$f?
-" "+Qd:""))}Ma&&a.u(Ma);a.T=Eh}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Sd=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else{var Hc=ff(a,Sd,a.ma);if(Hc)for(var Td=2;Td
-Wd;){for(var Na=null,Jh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Jh--)break;if(!(Xd.B&1)){for(var Kh=a,Ic=Xd,eg=null,Ib=Ic.B,fg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.pa=l.pa;h.T=l.T;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
+function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.X=null;if(Cb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Od=
+[];"call"==Sf&&(Db=1E5,Od=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Db--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var jb=ff(a,ma,a.na);if(jb){var Ma=0,Xf="ds"==gb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||Ch,Ma=Qe(a,Ca);else{var Yf=ff(a,Ca);Yf&&
+(Ma=Yf.B-jb.B)}0>Ma&&(Ma=0);65536Fb?".":String.fromCharCode(Fb)),Hc=Hc-7}Na&&(Na+="\n");Na=Xf?Na+(oa+","):Na+(ma+": "+oa+(0>$f?
+" "+Rd:""))}Na&&a.u(Na);a.T=Eh}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Td=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Td=null;if(null==Td)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else{var Ic=ff(a,Td,a.na);if(Ic)for(var Ud=2;Ud
+Xd;){for(var Oa=null,Jh=256;65536>Ib.B>>>0;){Yd.B=a.Ma(Ib,2);if(null==Ib.B||!Jh--)break;if(!(Yd.B&1)){for(var Kh=a,Jc=Yd,eg=null,Jb=Jc.B,fg=Jb,Zd=1;6>=Zd&&Jb;Zd++){if(2lg)a.u("step commands:"),
-a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.T=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.T);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.ra=
-Kb;break;case "start":a.v.Ga=Kb;break;case "stop":a.v.ma=Kb;break;default:a.u("unknown cs option");break a}void 0!==Kb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ba.toFixed(2)+"Mhz")+" ("+a.v.ha+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
-a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var Zd="commands:",$d;for($d in zg)Zd+="\n"+
-Ba($d,9)+zg[$d];td(a)||(Zd+="\nnote: history disabled if no exec breakpoints");a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0}
+1E3:0;jglg)a.u("step commands:"),
+a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var kb=+g[2];if(2==kb||8==kb||10==kb||16==kb)a.T=kb;else{a.u("invalid base: "+kb);break}}a.u("default base: "+a.T);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.ma=
+Lb;break;case "start":a.v.Ga=Lb;break;case "stop":a.v.oa=Lb;break;default:a.u("unknown cs option");break a}void 0!==Lb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ha.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
+a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var $d="commands:",ae;for(ae in zg)$d+="\n"+
+Ba(ae,9)+zg[ae];td(a)||($d+="\nnote: history disabled if no exec breakpoints");a.u($d);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){null!=b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0}
 var zg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Gf=20,Hf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
 lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS OV C0 C1 ND PD".split(" "),Ag={},Cf=(Ag[28672]={0:101},Ag[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ag[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Gf,9216:53,
 9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ag[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ag[29248]={24576:79,24640:80,25088:81,25152:82},Ag[28700]={28672:93,28676:94,28680:95,28684:96,
 28688:97,28692:98,28696:99,28700:100},Ag),Df=["","I","M","S"],Ef=" L E LE A GE N G".split(" "),Ff="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),If=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],uf=1E3,xf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;bb.indexOf(":")&&".MAC"==b.slice(-4).toUpperCase()&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/
([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
 0)}})}}
 function Cg(a){if(0<=a.ha.indexOf("p"))return a.u(a.G.join("")),0;var b=Ve(a.b);try{for(var c=0;cI)break;var u=
-I+1,P=I+l.length,db="",Ab="";I&&(db=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==db&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.aa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
+I+1,P=I+l.length,eb="",Bb="";I&&(eb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Bb=b[P]).match(/[0-9A-Z$%.]/i)||("'"==eb&&I--,"'"==Bb&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.aa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
 if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.F=Jg(a,f,!0),void 0===a.F&&a.error("unrecognized expression: "+f)):a.F=a.U;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:case gh:Sg(a,f,h);break;case hh:case ih:case jh:case kh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.aa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
 function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Wa==lh){var e=a.aa;Ig(a,d.va);if(ed?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.J+=b}if(null==a.D){var d=b=0,e,f,g=a.J.length;a.K==Xg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
 function Sg(a,b,c){var d,e,f,g,h,k;a.H="<";a.C=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=oh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=rh;c=3}else if(b==fh){a.H="[";a.C="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
-b+": "+c),c;f=e[1];b=lh;c=2}else if(b==Tg)a.H="[",a.C="]",f="?"+va(++a.Z,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],b=sh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",hh="LALL",Tg="LITERAL",fh="OPDEF",ih="PAGE",gh="REPEAT",Yg="SIXBIT",jh="SUBTTL",kh="TITLE",bh="XWD",rh=-1,lh=-2,sh=-3,qh=-4;
-function th(a,b,c){r.call(this,"Computer",a,33554432);this.A.Y=!1;this.S=null;uh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.Z=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=vh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.Z},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.ya)for(b=
+function th(a,b,c){r.call(this,"Computer",a,33554432);this.A.Z=!1;this.S=null;uh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.X=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=vh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.X},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.ya)for(b=
 0;b\nLicense: GPL version 3 or later ");for(b=0;bwh){if(xh(d,this.L)){this.C=new F(this,"1.34.3",Rh);xh(this.C)&&(Sh(this,d),a=Th,Uh(this.C));this.C.set(Oh,Ga());Vh(this.C);var e=this.b&&!this.K;if(a==Ph||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Nh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?xh(d,g):("error"==f&&"no machine state"!=
 g?(this.ia("Error: "+g),"unable to verify user"==g&&(Qa(Wh,""),this.i=null)):this.u(f+": "+g),Uh(d),xh(d)?(c=Nh(d),e=!0):c=!1))}e&&Ah(this,c?d:null)}else a==Th&&d.clear()}else Ah(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.U=!0;this.A.Y=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Xh(this,this.v,b,c,a),J(this,-2),this.v.ga());this.P&&(Sh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
+function Xh(a,b,c,d,e){if(!b.A.Z){b.A.Z=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.Aa(f,d)&&f&&(q("Unable to restore state for "+b.type),a.M&&!a.V?(c.clear(),a.b=wh,window&&window.location.reload()):a.P=!0,b.Aa(null),e=!1),!d&&b.Cb){var g=b.Cb.split("|");for(a=0;aa[1];a=a[2];this.U=!0;this.A.Z=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Xh(this,this.v,b,c,a),J(this,-2),this.v.ga());this.P&&(Sh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
 function Sh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
-function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",Bh),h=Ga();g.set(Oh,h);f.set(Oh,h);f.set(Yh,"1.34.3");f.set(Zh,window?window.location.href:null);f.set($h,window?window.navigator.userAgent:"");a.v&&a.v.pa&&(c&&(b&&(a.v.A.ga=a.v.A.O),a.v.W()),d=a.v.pa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Y=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.Z.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.ba.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0>8&255,d.I[f++]=e[c]>>16&255,d.I[f++]=e[c]>>24&255;else(e=g.data)?d.Y=e:d.I=g;d.I&&(d.I.length?1==d.I.length&&(q(d.I[0]),d=null):(q("Empty resource: "+a),d=null));d.O=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.va=this.id:(this.wa=this.id.substr(0,a),this.va=this.id.substr(a+1));this.i={ready:!1,Aa:!1,Na:!1,F:!1,error:!1};this.Ca=null;this.i.error=!1;this.w=this.j=this.s=this.v=this.fa=null;v.push(this)}function La(a,b,c){Ma[a]&&b&&(Ma[a][b]=c)}function Na(){return Date.now()||+new Date}
+function Aa(a){if(!Ba){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ba=c}return Ba[a]}function Ca(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ea(a){r.init.push(a)}
+function Fa(a){if(Ga)try{for(var b=0;ba?this.va=this.id:(this.wa=this.id.substr(0,a),this.va=this.id.substr(a+1));this.h={ready:!1,Aa:!1,Na:!1,F:!1,error:!1};this.Ca=null;this.h.error=!1;this.w=this.j=this.s=this.u=this.ga=null;v.push(this)}function La(a,b,c){Ma[a]&&b&&(Ma[a][b]=c)}function Na(){return Date.now()||+new Date}
 function q(a){window&&window.alert(a)}function Oa(a){var b=!1;window&&(b=window.confirm(a));return b}function w(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.a["S"+a]=[0,0,!1,!1,this.qb,a];this.w=this.j=this.s=this.v=null;this.exports={hold:this.jb,toggle:this.Bb,reset:this.xb,
-set:this.Ab};B(this)}l(fb,t);k=fb.prototype;k.reset=function(a){this.stop();a&&hb(this,this.h=0)};
-k.U=function(a,b,c,d){if(this.v&&this.v.U(a,b,c,d)||this.j&&this.j.U(a,b,c,d))return!0;switch(b){case "PC":return this.m[b]=c,this.C++,!0;default:return"led"==a||"rled"==a?(this.m[b]=c,this.l[b]=d?1:0,this.C++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.m[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ib(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){jb(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){ib(a,
-b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){jb(a,b)}}(this,b),!0):t.prototype.U.call(this,a,b,c,d)}};k.Z=function(a,b,c,d){this.v=a;this.s=b;this.j=c;this.w=d;kb(this);lb(this)};k.V=function(a,b){if(!b)if(this.P&&mb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.R=function(a){return a?this.save():!0};k.save=function(){var a=new L(this);a.set(0,[this.f,this.h,this.g]);return a.data()};
-k.restore=function(a){if(a=a[0])nb(this,this.f=a[0]),hb(this,this.h=a[1]),ob(this,a[2]);return!0};k.xb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}lb(this);return!0};function pb(a,b,c){if(a=a.m[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function kb(a,b){for(var c in a.l)pb(a,c,null!=b?b:a.l[c])}function qb(a,b,c){if(a=a.m[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function lb(a){for(var b in a.a)qb(a,b,a.a[b][1])}
+function fb(a,b){t.call(this,"Panel",a);this.A=this.C=0;this.P=b;this.f=this.v=this.g=this.i=0;this.D=this.H=-1;this.K=this.L=this.o=!1;this.N=gb;this.l={};this.a={START:[1,1,!0,!1,this.rb],STEP:[1,1,!1,!1,this.sb],ENABLE:[1,1,!1,!1,this.mb],CONT:[1,1,!0,!1,this.kb],DEP:[0,0,!0,!1,this.lb],EXAM:[1,1,!0,!1,this.nb],LOAD:[1,1,!0,!1,this.pb],TEST:[0,0,!0,!1,this.ob]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.qb,a];this.w=this.j=this.s=this.u=null;this.exports={hold:this.jb,toggle:this.Bb,reset:this.xb,
+set:this.Ab};B(this)}l(fb,t);k=fb.prototype;k.reset=function(a){this.stop();a&&hb(this,this.i=0)};
+k.U=function(a,b,c,d){if(this.u&&this.u.U(a,b,c,d)||this.j&&this.j.U(a,b,c,d))return!0;switch(b){case "PC":return this.m[b]=c,this.C++,!0;default:return"led"==a||"rled"==a?(this.m[b]=c,this.l[b]=d?1:0,this.C++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.m[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ib(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){jb(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){ib(a,
+b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){jb(a,b)}}(this,b),!0):t.prototype.U.call(this,a,b,c,d)}};k.Z=function(a,b,c,d){this.u=a;this.s=b;this.j=c;this.w=d;kb(this);lb(this)};k.V=function(a,b){if(!b)if(this.P&&mb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.R=function(a){return a?this.save():!0};k.save=function(){var a=new L(this);a.set(0,[this.f,this.i,this.g]);return a.data()};
+k.restore=function(a){if(a=a[0])nb(this,this.f=a[0]),hb(this,this.i=a[1]),ob(this,a[2]);return!0};k.xb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}lb(this);return!0};function pb(a,b,c){if(a=a.m[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function kb(a,b){for(var c in a.l)pb(a,c,null!=b?b:a.l[c])}function qb(a,b,c){if(a=a.m[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function lb(a){for(var b in a.a)qb(a,b,a.a[b][1])}
 k.jb=function(a,b,c){if(ib(this,b)){if(c){var d=this;setTimeout(function(){jb(d,b);a&&a()},+c);return!1}jb(this,b)}return!0};
 k.Ab=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d,e,f=0g&&(g+=Math.pow(2,36)),g=0>>a.f];a.h++;b=c.h(b&16383,b);a.h--;a=b}else a=this.j.b(this.f);hb(this,this.h=a)}};k.pb=function(a){a||this.j.i.B||nb(this,this.g)};k.ob=function(a){a?(this.o=!0,kb(this,!0)):(this.o=!1,kb(this),ob(this,0))};k.qb=function(a,b){this.g=a?this.g|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.a["S"+b][1]=a.g&1<>>a.f];a.i++;b=c.i(b&16383,b);a.i--;a=b}else a=this.j.b(this.f);hb(this,this.i=a)}};k.pb=function(a){a||this.j.h.B||nb(this,this.g)};k.ob=function(a){a?(this.o=!0,kb(this,!0)):(this.o=!1,kb(this),ob(this,0))};k.qb=function(a,b){this.g=a?this.g|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.a["S"+b][1]=a.g&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.f;0f&&(u=f);if(h&&h.size){if(h.type==d){if(e+f<=h.ea)return h.Ea+=h.ea-e,h.ea=e,!0;if(e>=h.ea+h.Ea){u=h.size-(e-m);u>f&&(u=f);h.Ea=e-h.ea+u;e=m+16384;f-=u;g++;continue}}return Hb(Ib,e,f)}e=new Db(a,e,u,16384,d);Eb(e,h);a.a[g++]=e;e=m+16384;f-=u}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Jb[d]+" at "+ka(b)),!0):Hb(Kb,b,c)}
-function Bb(a,b,c){var d=a.a[(b&a.g)>>>a.f];a.h++;d.j(c,b&16383,b);a.h--}function Fb(a){for(var b=0,c=[],d=0;d>>a.f;0f&&(u=f);if(h&&h.size){if(h.type==d){if(e+f<=h.fa)return h.Ea+=h.fa-e,h.fa=e,!0;if(e>=h.fa+h.Ea){u=h.size-(e-m);u>f&&(u=f);h.Ea=e-h.fa+u;e=m+16384;f-=u;g++;continue}}return Hb(Ib,e,f)}e=new Db(a,e,u,16384,d);Eb(e,h);a.a[g++]=e;e=m+16384;f-=u}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Jb[d]+" at "+ka(b)),!0):Hb(Kb,b,c)}
+function Bb(a,b,c){var d=a.a[(b&a.g)>>>a.f];a.i++;d.j(c,b&16383,b);a.i--}function Fb(a){for(var b=0,c=[],d=0;d=a.ha&&(a.ha+=a.na,c=!0);0<=a.oa&&a.oa<=$b(a)&&(a.na=a.oa=-1,Zb(a),N(a),c=!0);c&&a.M($b(a)+" cycles: checksum="+la(a.xa))}}
-k.U=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.m[b]=c,!0;case "run":return this.m[b]=c,c.onclick=function(){var a;if(a=d.v)if(a=d.v,a.i.F)a=!0;else{var b=null,c,h=w(a.id);for(c=0;ca.W/a.ga&&(b=1);a.ia=b;b=a.Ia*a.ia;if(a.ga!=b){a.ga=b;b=a.ga.toFixed(2)+"Mhz";var d=a.m.setSpeed;d&&(d.textContent=b);a.M("target speed: "+b)}c&&a.v&&(c=a.v,c.fa&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.fa.focus(),window&&window.scrollTo(b,d)))}xb(a,a.D);a.D=0;a.C=Na();a.L=0;bc(a)}function dc(a){for(var b=[],c=0;c=a.ia&&(a.ia+=a.na,c=!0);0<=a.oa&&a.oa<=$b(a)&&(a.na=a.oa=-1,Zb(a),N(a),c=!0);c&&a.M($b(a)+" cycles: checksum="+la(a.xa))}}
+k.U=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.m[b]=c,!0;case "run":return this.m[b]=c,c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.h.F)a=!0;else{var b=null,c,h=w(a.id);for(c=0;ca.W/a.ha&&(b=1);a.ja=b;b=a.Ia*a.ja;if(a.ha!=b){a.ha=b;b=a.ha.toFixed(2)+"Mhz";var d=a.m.setSpeed;d&&(d.textContent=b);a.M("target speed: "+b)}c&&a.u&&(c=a.u,c.ga&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.ga.focus(),window&&window.scrollTo(b,d)))}xb(a,a.D);a.D=0;a.C=Na();a.L=0;bc(a)}function dc(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function ec(a,b){var c=a.N-=a.H;a.H=0;b&&(a.N=0);return c}
-k.yb=function(){if(this.i.B){this.za>=this.Ka&&bc(this,!0);this.aa=0;this.ma=Na();if(this.L){var a=this.ma-this.L;a>this.Ja&&(this.C+=a,this.C>this.ma&&(this.C=this.ma))}try{do{for(var b,c=this.i.Ba?1:this.pa,d=this.K.length-1;0<=d;d--){var e=this.K[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.Fa(b)}catch(f){if("number"!=typeof f)throw f;}b=ec(this,!0);this.aa+=b;this.D+=b;yb(this,b);wb(this,b);this.ja-=b;if(0>=this.ja){this.ja+=this.pa;++this.La>=fc&&(this.v&&zb(this.v,void 0),this.La=0);break}}while(this.i.B)}catch(f){N(this);
-this.v&&this.v.stop(Na(),$b(this));a=f.stack||f.message;this.i.error=!0;this.G(a);return}if(this.i.B){a=setTimeout;b=this.Wa;this.L=Na();c=this.Ja;this.aa&&(c=Math.round(c*this.aa/this.pa));c-=this.L-this.ma;if(d=this.L-this.C)this.W=Math.round(this.D/(10*d))/100,864E5<=d&&(this.P=0,ac(this));if(0>c||this.Wc&&(this.C-=c),c=0;this.za+=this.aa;this.L+=c;a(b,c)}}};
-function vb(a){var b;a.i.error?(a.M(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.i.B)a.M(a.toString()+" busy");else{ac(a);a.i.B=!0;a.i.Qa=!0;if(b=a.m.run)b.textContent="Halt";a.v&&a.v.start(a.C,$b(a));a.w||a.status("Started");setTimeout(a.Wa,0)}}k.Fa=function(){return 0};function N(a){var b=!1;if(a.i.B){ec(a);xb(a,a.D);a.D=0;a.i.B=!1;if(b=a.m.run)b.textContent="Run";a.v&&a.v.stop(Na(),$b(a));b=!0;a.w||a.status("Stopped")}a.i.complete=void 0;return b}var cc=30,fc=15,Wb=["power","reset"];
-function gc(a){var b=+a.model||1001;Vb.call(this,a,1E6);this.fb=b;this.ua=+a.addrReset||0;this.gb=hc.bind(this);this.h=O.bind(this);this.la=null;this.Sa=[];this.i.complete=!1}l(gc,Vb);k=gc.prototype;
-k.reset=function(){this.status("Model "+this.fb);this.i.B&&N(this);this.qa=this.ra=this.a=this.A=0;this.f=this.Ha=this.ua;this.u=this.da=-1;this.o=this.g=0;this.Ma=[0,0];this.ba=[0,0];this.X=[0,0];this.ca=[0,0];this.ka=this.f;this.l=0;this.b=this.ub;this.c=this.Fb;this.la=null;Yb(this);this.i.error=!1;Vb.prototype.reset.call(this)};k.Ya=function(){return 0};
-k.save=function(){var a=new L(this);a.set(0,[this.a,this.A,this.qa,this.ra,this.f,this.da,this.u,this.g,this.l,this.Ha,this.ka,this.ua]);a.set(1,[]);a.set(2,[this.P,this.ia,this.i.J]);a.set(3,ic(this));a.set(4,dc(this));return a.data()};
-k.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ga(b);this.a=b.next().value;this.A=b.next().value;this.qa=b.next().value;this.ra=b.next().value;this.f=b.next().value;this.da=b.next().value;this.u=b.next().value;this.g=b.next().value;this.l=b.next().value;this.Ha=b.next().value;this.ka=b.next().value;this.ua=b.next().value;b=a[2];this.P=b[0];ac(this,b[1]);this.i.J=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.f].b(a&16383,a)};k.Fb=function(a,b){var c=this.s;a=this.ka=a;c.a[(a&c.g)>>>c.f].c(b,a&16383,a);return b};
-k.Fa=function(a){this.i.complete=!0;var b=a?this.i.Qa?0:1:-1;this.i.Qa=!1;this.N=this.H=a;this.l=this.l&-5|0;do{if(a=this.l)if(a=this.l&11)this.l&2?this.la||(this.l&=-3):this.l&1&&this.l++,a=!1;if(a){if(this.l&4&&this.w.h(this.f,b)){N(this);break}if(0>b)break}this.l&=15;this.A&4194304?this.A=this.qa=this.b(this.a):0<=this.da?(this.A=this.ra=this.b(this.da),this.da=-1):(this.A=this.ra=this.b(this.Ha=this.f),this.f=(this.f+1)%$a);this.A&=8388607;this.a=this.A&262143;if(a=this.A>>18&15)this.a=this.a+
-(this.qa=this.b(a))&Za;a=this.A&4194304?-1:this.ra/db|0;0<=a&&this.gb(a);this.H--}while(0>4].call(this,a,a&15)}function P(a){this.h(a)}function kc(){var a=0,b=this.b(this.a),c=b/eb&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*eb+(d<<24)+(b&16777215);a&&(b=(b+a)%J);this.c(this.a,b)}
-function lc(a,b){a=this.b(this.a);if(0>this.u)this.u=a,this.A=this.a|4194304;else{var c=this.u/eb&63,d=this.u>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.c(b,a);this.u=-1}}function mc(a,b){a=this.b(this.a);if(0>this.u)this.u=a,this.A=this.a|4194304;else{var c=this.u/eb&63,d=this.u>>24&63;b=this.b(b)%Math.pow(2,d)*Math.pow(2,c)%J;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.c(this.a,a);this.u=-1}}function nc(a,b){this.c(b,this.b(this.a))}
-function oc(a,b){this.c(b,this.a)}function pc(a,b){this.c(this.a,this.b(b))}function qc(a,b){this.c(b,0)}function rc(a,b){this.c(b,I-this.b(b))}function sc(a,b){this.c(b,I)}function tc(a,b){var c=this.b(this.a),d=this.b(b);this.c(b,uc(a,d,c)+(c-(c&C)))}function vc(a,b){var c=this.b(b);this.c(b,uc(a,c,0))}function wc(a,b){b=this.b(b);var c=this.b(this.a);this.c(this.a,uc(a,c,b)+(b-(b&C)))}
+k.yb=function(){if(this.h.B){this.za>=this.Ka&&bc(this,!0);this.ca=0;this.ma=Na();if(this.L){var a=this.ma-this.L;a>this.Ja&&(this.C+=a,this.C>this.ma&&(this.C=this.ma))}try{do{for(var b,c=this.h.Ba?1:this.pa,d=this.K.length-1;0<=d;d--){var e=this.K[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.Fa(b)}catch(f){if("number"!=typeof f)throw f;}b=ec(this,!0);this.ca+=b;this.D+=b;yb(this,b);wb(this,b);this.ba-=b;if(0>=this.ba){this.ba+=this.pa;++this.La>=fc&&(this.u&&zb(this.u,void 0),this.La=0);break}}while(this.h.B)}catch(f){N(this);
+this.u&&this.u.stop(Na(),$b(this));a=f.stack||f.message;this.h.error=!0;this.G(a);return}if(this.h.B){a=setTimeout;b=this.Wa;this.L=Na();c=this.Ja;this.ca&&(c=Math.round(c*this.ca/this.pa));c-=this.L-this.ma;if(d=this.L-this.C)this.W=Math.round(this.D/(10*d))/100,864E5<=d&&(this.P=0,ac(this));if(0>c||this.Wc&&(this.C-=c),c=0;this.za+=this.ca;this.L+=c;a(b,c)}}};
+function vb(a){var b;a.h.error?(a.M(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.h.B)a.M(a.toString()+" busy");else{ac(a);a.h.B=!0;a.h.Qa=!0;if(b=a.m.run)b.textContent="Halt";a.u&&a.u.start(a.C,$b(a));a.w||a.status("Started");setTimeout(a.Wa,0)}}k.Fa=function(){return 0};function N(a){var b=!1;if(a.h.B){ec(a);xb(a,a.D);a.D=0;a.h.B=!1;if(b=a.m.run)b.textContent="Run";a.u&&a.u.stop(Na(),$b(a));b=!0;a.w||a.status("Stopped")}a.h.complete=void 0;return b}var cc=30,fc=15,Wb=["power","reset"];
+function gc(a){var b=+a.model||1001;Vb.call(this,a,1E6);this.fb=b;this.ua=+a.addrReset||0;this.gb=hc.bind(this);this.i=O.bind(this);this.la=null;this.Sa=[];this.h.complete=!1}l(gc,Vb);k=gc.prototype;
+k.reset=function(){this.status("Model "+this.fb);this.h.B&&N(this);this.qa=this.ra=this.a=this.v=0;this.f=this.Ha=this.ua;this.A=this.aa=-1;this.o=this.g=0;this.Ma=[0,0];this.da=[0,0];this.X=[0,0];this.ea=[0,0];this.ka=this.f;this.l=0;this.b=this.ub;this.c=this.Fb;this.la=null;Yb(this);this.h.error=!1;Vb.prototype.reset.call(this)};k.Ya=function(){return 0};
+k.save=function(){var a=new L(this);a.set(0,[this.a,this.v,this.qa,this.ra,this.f,this.aa,this.A,this.g,this.l,this.Ha,this.ka,this.ua]);a.set(1,[]);a.set(2,[this.P,this.ja,this.h.J]);a.set(3,ic(this));a.set(4,dc(this));return a.data()};
+k.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ga(b);this.a=b.next().value;this.v=b.next().value;this.qa=b.next().value;this.ra=b.next().value;this.f=b.next().value;this.aa=b.next().value;this.A=b.next().value;this.g=b.next().value;this.l=b.next().value;this.Ha=b.next().value;this.ka=b.next().value;this.ua=b.next().value;b=a[2];this.P=b[0];ac(this,b[1]);this.h.J=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.f].b(a&16383,a)};k.Fb=function(a,b){var c=this.s;a=this.ka=a;c.a[(a&c.g)>>>c.f].c(b,a&16383,a);return b};
+k.Fa=function(a){this.h.complete=!0;var b=a?this.h.Qa?0:1:-1;this.h.Qa=!1;this.N=this.H=a;this.l=this.l&-5|0;do{if(a=this.l)if(a=this.l&11)this.l&2?this.la||(this.l&=-3):this.l&1&&this.l++,a=!1;if(a){if(this.l&4&&this.w.i(this.f,b)){N(this);break}if(0>b)break}this.l&=15;this.v&4194304?this.v=this.qa=this.b(this.a):0<=this.aa?(this.v=this.ra=this.b(this.aa),this.aa=-1):(this.v=this.ra=this.b(this.Ha=this.f),this.f=(this.f+1)%$a);this.v&=8388607;this.a=this.v&262143;if(a=this.v>>18&15)this.a=this.a+
+(this.qa=this.b(a))&Za;a=this.v&4194304?-1:this.ra/db|0;0<=a&&this.gb(a);this.H--}while(0>4].call(this,a,a&15)}function P(a){this.i(a)}function kc(){var a=0,b=this.b(this.a),c=b/eb&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*eb+(d<<24)+(b&16777215);a&&(b=(b+a)%J);this.c(this.a,b)}
+function lc(a,b){a=this.b(this.a);if(0>this.A)this.A=a,this.v=this.a|4194304;else{var c=this.A/eb&63,d=this.A>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.c(b,a);this.g&=-8193;this.A=-1}}function mc(a,b){a=this.b(this.a);if(0>this.A)this.A=a,this.v=this.a|4194304;else{var c=this.A/eb&63,d=this.A>>24&63;b=this.b(b)%Math.pow(2,d)*Math.pow(2,c)%J;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.c(this.a,a);this.g&=-8193;this.A=-1}}
+function nc(a,b){this.c(b,this.b(this.a))}function oc(a,b){this.c(b,this.a)}function pc(a,b){this.c(this.a,this.b(b))}function qc(a,b){this.c(b,0)}function rc(a,b){this.c(b,I-this.b(b))}function sc(a,b){this.c(b,I)}function tc(a,b){var c=this.b(this.a),d=this.b(b);this.c(b,uc(a,d,c)+(c-(c&C)))}function vc(a,b){var c=this.b(b);this.c(b,uc(a,c,0))}function wc(a,b){b=this.b(b);var c=this.b(this.a);this.c(this.a,uc(a,c,b)+(b-(b&C)))}
 function xc(a,b){var c=this.b(this.a),d=c;if(a&=384)switch(d-=d&C,a){case 256:d+=C;break;case 384:d+=c>F?C:0}c=d;this.c(this.a,c);b&&this.c(b,c)}function yc(a,b){var c=(this.b(this.a)&C)*E,d=this.b(b);this.c(b,uc(a,d,c)+c)}function zc(a,b){var c=this.a*E,d=this.b(b);this.c(b,uc(a,d,c)+c)}function Ac(a,b){b=(this.b(b)&C)*E;var c=this.b(this.a);this.c(this.a,uc(a,c,b)+b)}function Bc(a,b){var c=this.b(this.a),d=(c&C)*E,c=uc(a,c,d)+d;this.c(this.a,c);b&&this.c(b,c)}
 function Cc(a,b){var c=this.b(this.a)&C,d=this.b(b);this.c(b,Dc(a,d,c)+c)}function Ec(a,b){var c=this.b(b);this.c(b,Dc(a,c,this.a)+this.a)}function Fc(a,b){b=this.b(b)&C;var c=this.b(this.a);this.c(this.a,Dc(a,c,b)+b)}function Gc(a,b){var c=this.b(this.a),d=c;if(a&=384)switch(d&=C,a){case 256:d+=C*E;break;case 384:d+=c>ab?C*E:0}c=d;this.c(this.a,c);b&&this.c(b,c)}function Hc(a,b){var c=this.b(this.a)/E|0,d=this.b(b);this.c(b,Dc(a,d,c)+c)}function Ic(a,b){var c=this.b(b);this.c(b,Dc(a,c,0))}
 function Jc(a,b){b=this.b(b)/E|0;var c=this.b(this.a);this.c(this.a,Dc(a,c,b)+b)}function Kc(a,b){var c=this.b(this.a),d=c/E|0,c=Dc(a,c,d)+d;this.c(this.a,c);b&&this.c(b,c)}function Q(a){Lc[a&7].call(this,a,a>>3&127)}function Mc(){}function Nc(){}function O(a){this.M("undefined opcode: "+ka(a));this.f=(this.f+-1)%$a;N(this)}function Oc(a){a>F&&(a!=G?a=cb-a:this.g|=163840);return a}function R(a,b){var c=(a+b)%J;Pc.call(this,a,b,c);return c}
-function S(a,b,c){var d=!1,e=!1,f=b-b%G;a=a%G+b*G%J;b=this.o=f+Math.trunc(b/2);c>F&&(c=J-c,d=!d);b>F&&(a?(b=I-b,a=J-a):b&&(b=J-b),e=!0,d=!d);if(b>=c)return this.g|=131104,-1;f=this.Ma;f[0]=0;f[1]=0;f=this.ba;f[0]=1;f[1]=0;f=this.X;f[0]=c;f[1]=0;c=this.ca;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=J,b[1]--),Rc(this.Ma,this.ba),Sc(this.ca)))break;Tc(this.X);Tc(this.ba)}while(!Sc(this.ba));
-a=this.Ma[0];this.o=this.ca[0];d&&a&&(a=J-a);e&&this.o&&(this.o=J-this.o);return a}
+function S(a,b,c){var d=!1,e=!1,f=b-b%G;a=a%G+b*G%J;b=this.o=f+Math.trunc(b/2);c>F&&(c=J-c,d=!d);b>F&&(a?(b=I-b,a=J-a):b&&(b=J-b),e=!0,d=!d);if(b>=c)return this.g|=131104,-1;f=this.Ma;f[0]=0;f[1]=0;f=this.da;f[0]=1;f[1]=0;f=this.X;f[0]=c;f[1]=0;c=this.ea;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=J,b[1]--),Rc(this.Ma,this.da),Sc(this.ea)))break;Tc(this.X);Tc(this.da)}while(!Sc(this.da));
+a=this.Ma[0];this.o=this.ea[0];d&&a&&(a=J-a);e&&this.o&&(this.o=J-this.o);return a}
 function Uc(a,b,c){var d=a,e=b;b=!1;var f;d>F&&(d=J-d,b=!b);e>F&&(e=J-e,b=!b);if(dF)&&(f!=I||a<=F)&&(this.g|=131072),a;c=a;b=f;a=b-b%G;b=2*b%J+Math.trunc(c/G);c=a+c%G;d=b-b%G;a!=d&&(b=a+(b-d),this.g|=131072);this.o=c;return b}
 function Vc(a){a?a==G?this.g|=163840:a=cb-a:this.g|=98304;return a}function Wc(a,b){var c=a-b;0>c&&(c+=J);Pc.call(this,c,b,a);return c}function Pc(a,b,c){a=Math.trunc(a/bb);b=Math.trunc(b/bb);c=Math.trunc(c/bb);var d=a^(a^b)&(b^c);this.g=this.g|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function T(a,b){return((a/K|0)&(b/K|0))*K+((a&b)>>>0)}function U(a,b){return T(a,(~(b/K|0)&15)*K+(~b>>>0))}function V(a,b){return(a>>0)}function W(a,b){return(a/K|0|b/K|0)*K+((a|b)>>>0)}function X(a){return a>>0)}function Z(a){return(a/E|0)+(a&C)*E}function Dc(a,b,c){switch(a&384){case 0:b-=b&C;break;case 128:b=0;break;case 256:b=C*E;break;case 384:b=c>ab?C*E:0}return b}function uc(a,b,c){switch(a&384){case 0:b&=C;break;case 128:b=0;break;case 256:b=C;break;case 384:b=c>F?C:0}return b}
 function Rc(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=J&&(a[0]%=J,a[1]++)}function Qc(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Tc(a){a[1]%2&&(a[0]+=J);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function Sc(a){return!a[0]&&!a[1]}
-var jc=[P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},kc,function(a,b){0>this.u&&kc.call(this);lc.call(this,0,b)},lc,function(a,b){0>this.u&&kc.call(this);mc.call(this,0,b)},mc,function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},
-function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},
-function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},function(a){this.h(a)},nc,oc,pc,function(a,b){b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);a=(a/E|0)+(a&C)*E;this.c(b,a)},function(a,b){this.c(b,this.a*E)},function(a,b){a=this.b(b);a=(a/E|0)+(a&C)*E;this.c(this.a,a)},function(a,b){a=this.b(this.a);a=(a/E|0)+(a&C)*E;this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Vc.call(this,this.b(this.a)))},function(a,b){this.c(b,Vc.call(this,this.a))},function(a,b){this.c(this.a,
-Vc.call(this,this.b(b)))},function(a,b){a=Vc.call(this,this.b(this.a));this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Oc.call(this,this.b(this.a)))},function(a,b){this.c(b,this.a)},function(a,b){this.c(this.a,Oc.call(this,this.b(b)))},function(a,b){a=Oc.call(this,this.b(this.a));this.c(this.a,a);b&&this.c(b,a)},function(a,b){this.c(b,Uc.call(this,this.b(b),this.b(this.a),!0))},function(a,b){this.c(b,Uc.call(this,this.b(b),this.a,!0))},function(a,b){this.c(this.a,Uc.call(this,this.b(b),this.b(this.a),
-!0))},function(a,b){this.c(this.a,this.c(b,Uc.call(this,this.b(b),this.b(this.a),!0)))},function(a,b){this.c(b,Uc.call(this,this.b(b),this.b(this.a)));this.c(b+1&15,this.o)},function(a,b){this.c(b,Uc.call(this,this.b(b),this.a));this.c(b+1&15,this.o)},function(a,b){this.c(this.a,Uc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,Uc.call(this,this.b(b),this.b(this.a))));this.c(b+1&15,this.o)},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||(this.c(b,a),this.c(b+
-1&15,this.o))},function(a,b){a=S.call(this,this.b(b),0,this.a);0>a||(this.c(b,a),this.c(b+1&15,this.o))},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.b(this.a));0>c||(this.c(b,c),this.c(b+1&15,this.o))},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.a);0>c||(this.c(b,c),this.c(b+1&15,this.o))},
-function(a,b){a=this.b(b);b=this.b(b+1&15);b=S.call(this,b,a,this.b(this.a));0>b||this.c(this.a,b)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.b(this.a));0>c||(this.c(b,this.c(this.a,c)),this.c(b+1&15,this.o))},function(a,b){var c=(this.a<<14>>14)%256;if(c){a=this.b(b);var d=a>F?-(J-a):a;0d?G:0,c=F):(d=d*Math.pow(2,c)%G,c=G-Math.pow(2,35-c)),a<=F?a+c>F&&(this.g|=131072):a-c<=F&&(this.g|=131072)):d=-35>=c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+J:d;this.c(b,
-a)}},function(a,b){if(a=(this.a<<14>>14)%36){var c=this.b(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%J+Math.trunc(c/Math.pow(2,36-a));this.c(b,c)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.c(b,c)}},function(a,b){a=0;var c=this.b(b);if(c){for(;c>14)%256){var c,d=this.b(b),e=this.b(b+1&15);if(0F&&dF&&eF&&(this.g|=131072):e-c<=F&&(this.g|=131072);e=0;f>F&&(d+=G,e+=G)}else d=d*Math.pow(2,a)%G+Math.trunc(e%G/Math.pow(2,35-a)),e=e*Math.pow(2,a)%G,c=G-Math.pow(2,35-a),f<=F?f+c>F&&(this.g|=131072):(f-c<=F&&(this.g|=131072),d+=G,e+=G)}else-36>=a?(e=-72>=a?d>F?I:0:Math.trunc(d%G/Math.pow(2,-a-35)),d<=F?d=0:(d=I,e+=G)):(c=d>F?J-Math.pow(2,36+a):0,e=Math.trunc(e%G/Math.pow(2,-a))+d%G*Math.pow(2,
-35+a)%G,d=Math.trunc(d/Math.pow(2,-a))+c,d>F&&(e+=G));this.c(b,d);this.c(b+1&15,e)}},function(a,b){if(a=(this.a<<14>>14)%72){var c=this.b(b),d=this.b(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%J+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%J+Math.trunc(d/Math.pow(2,72-a)));this.c(b,c);this.c(b+1&15,d)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),d=this.b(b+1&15);0<
-a?36<=a?(c=72<=a?0:d*Math.pow(2,a-36)%J,d=0):(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J):-36>=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%J,c=Math.trunc(c/Math.pow(2,-a)));this.c(b,c);this.c(b+1&15,d)}},O,function(a,b){a=this.b(b);this.c(b,this.b(this.a));this.c(this.a,a)},function(a,b){a=!1;for(var c=this.b(b),d=c/E|0,c=c&C;!a;)this.c(c,this.b(d)),c==this.a&&(a=!0),d=d+1&C,c=c+1&C,this.i.B||(this.c(b,d*E+c),a||
-(this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.h(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.da=this.a},O,function(a){this.h(a)},function(a,b){a=this.b(b);
-a+=262145;this.c(a&C,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&C);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a){this.h(a)},function(){this.c(this.a,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a)},function(a,b){this.c(this.a,this.b(b));this.c(b,this.a*E+this.f);M(this,this.a+1)},function(a,b){a=
-this.b(b);this.c(b,this.b(a/E|0));M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},
-function(a,b){this.c(this.a,this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+
-1)},function(a,b){V(this.b(b),this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this,
-this.a)},function(a,b){0<=X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&&
-M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),1));M(this,
-this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b,
-a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),I));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)&&M(this,this.a)},function(a,
-b){a=this.c(b,R.call(this,this.b(b),I));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),
-I));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0a||(this.c(b,a),this.c(b+1&15,this.o))},function(a,b){a=S.call(this,this.b(b),0,this.a);0>a||(this.c(b,a),this.c(b+1&15,this.o))},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=S.call(this,this.b(b),0,this.b(this.a));0>a||this.c(this.a,a)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.b(this.a));0>c||(this.c(b,c),this.c(b+1&15,this.o))},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,
+c,a,this.a);0>c||(this.c(b,c),this.c(b+1&15,this.o))},function(a,b){a=this.b(b);b=this.b(b+1&15);b=S.call(this,b,a,this.b(this.a));0>b||this.c(this.a,b)},function(a,b){a=this.b(b);var c=this.b(b+1&15),c=S.call(this,c,a,this.b(this.a));0>c||(this.c(b,this.c(this.a,c)),this.c(b+1&15,this.o))},function(a,b){var c=(this.a<<14>>14)%256;if(c){a=this.b(b);var d=a>F?-(J-a):a;0d?G:0,c=F):(d=d*Math.pow(2,c)%G,c=G-Math.pow(2,35-c)),a<=F?a+c>F&&(this.g|=131072):a-c<=F&&(this.g|=131072)):d=-35>=
+c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+J:d;this.c(b,a)}},function(a,b){if(a=(this.a<<14>>14)%36){var c=this.b(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%J+Math.trunc(c/Math.pow(2,36-a));this.c(b,c)}},function(a,b){if(a=(this.a<<14>>14)%256){var c=this.b(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.c(b,c)}},function(a,b){a=0;var c=this.b(b);if(c){for(;c>14)%256){var c,d=this.b(b),e=this.b(b+
+1&15);if(0F&&dF&&eF&&(this.g|=131072):e-c<=F&&(this.g|=131072);e=0;f>F&&(d+=G,e+=G)}else d=d*Math.pow(2,a)%G+Math.trunc(e%G/Math.pow(2,35-a)),e=e*Math.pow(2,a)%G,c=G-Math.pow(2,35-a),f<=F?f+c>F&&(this.g|=131072):(f-c<=F&&(this.g|=131072),d+=G,e+=G)}else-36>=a?(e=-72>=a?d>F?I:0:Math.trunc(d%G/Math.pow(2,-a-35)),d<=F?d=0:(d=I,e+=G)):(c=d>F?J-
+Math.pow(2,36+a):0,e=Math.trunc(e%G/Math.pow(2,-a))+d%G*Math.pow(2,35+a)%G,d=Math.trunc(d/Math.pow(2,-a))+c,d>F&&(e+=G));this.c(b,d);this.c(b+1&15,e)}},function(a,b){if(a=(this.a<<14>>14)%72){var c=this.b(b),d=this.b(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%J+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%J+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%J+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%J+Math.trunc(d/Math.pow(2,72-a)));this.c(b,c);this.c(b+1&15,d)}},function(a,
+b){if(a=(this.a<<14>>14)%256){var c=this.b(b),d=this.b(b+1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%J,c=Math.trunc(c/Math.pow(2,-a)));this.c(b,c);this.c(b+1&15,d)}},O,function(a,b){a=this.b(b);this.c(b,this.b(this.a));this.c(this.a,a)},function(a,b){a=!1;for(var c=this.b(b),d=c/E|0,c=c&C;!a;)this.c(c,this.b(d)),
+c==this.a&&(a=!0),d=d+1&C,c=c+1&C,this.h.B||(this.c(b,d*E+c),a||(this.f=(this.f+-1)%$a),a=!0)},function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a=G&&M(this,this.a)},function(a,b){b&1&&(this.g|=4096);if(b&2){var c=this.qa/E|0;this.g=this.g&-254049|c&254048;this.g|=c&4096;c&2048?this.g&4096||(this.g|=2048):this.g&=-2049}b&4&&N(this);b&8&&this.i(a);M(this,this.a)},function(a,b){a=b<<14;this.g&a&&(this.g&=~a,M(this,this.a))},function(){this.aa=
+this.a},O,function(a,b){a=(this.b(b)+262145)%J;this.c(b,a);a/E|0||(this.g|=262144);this.c(a&Za,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a)},function(a,b){a=this.b(b);a+=262145;this.c(a&Za,this.b(this.a));a>=J&&(a-=J);a/E|0||(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&Za);this.c(this.a,c);this.a==b&&(a=c);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,a)},function(a,b){a=this.b(b);var c=this.b(a&Za);a-=262145;0>a&&(a+=J);(a/E|0)==C&&(this.g|=262144);this.c(b,
+a);M(this,c&Za)},function(){this.c(this.a,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a+1)},function(a,b){this.c(b,(this.g&C)*E+this.f);this.g&=-8193;M(this,this.a)},function(a,b){this.c(this.a,this.b(b));this.c(b,this.a*E+this.f);M(this,this.a+1)},function(a,b){a=this.b(b);this.c(b,this.b(a/E|0));M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,R.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,R.call(this,this.b(b),this.b(this.a)))},
+function(a,b){this.c(this.a,this.c(b,R.call(this,this.b(b),this.b(this.a))))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(b,Wc.call(this,this.b(b),this.a))},function(a,b){this.c(this.a,Wc.call(this,this.b(b),this.b(this.a)))},function(a,b){this.c(this.a,this.c(b,Wc.call(this,this.b(b),this.b(this.a))))},Mc,function(a,b){0>V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.a)&&M(this,
+this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){V(this.b(b),this.a)&&M(this,this.f+1)},function(a,b){0V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),this.b(this.a))||M(this,this.f+1)},function(a,b){0>=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(){M(this,this.f+1)},function(a,b){0<=V(this.b(b),this.b(this.a))&&M(this,this.f+1)},function(a,b){V(this.b(b),
+this.b(this.a))&&M(this,this.f+1)},function(a,b){0X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))||M(this,this.a)},function(a,b){0>=X(this.b(b))&&M(this,this.a)},function(){M(this,this.a)},function(a,b){0<=X(this.b(b))&&M(this,this.a)},function(a,b){X(this.b(b))&&M(this,this.a)},function(a,b){0X(a)&&M(this,this.f+1);
+b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){M(this,this.f+1);b&&this.c(b,this.b(this.a))},function(a,b){a=this.b(this.a);0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.b(this.a);0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),1));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),1));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,
+this.b(this.a),1));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),1));0X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)||M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),
+I));0>=X(a)&&M(this,this.a)},function(a,b){this.c(b,R.call(this,this.b(b),I));M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0<=X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));X(a)&&M(this,this.a)},function(a,b){a=this.c(b,R.call(this,this.b(b),I));0X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,
+b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)||M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0>=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));0<=X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=this.c(this.a,R.call(this,this.b(this.a),I));X(a)&&M(this,this.f+1);b&&this.c(b,a)},function(a,b){a=
+this.c(this.a,R.call(this,this.b(this.a),I));0>>f.f;0>>f.f;0>>=f.f;0>>a.f;0g&&g>=-G&&(g+=J);for(var g=Math.trunc(Math.abs(g))%J,h=d;f--&&h>>a.f;0g&&g>=-G&&(g+=J);for(var g=Math.trunc(Math.abs(g))%J,h=d;f--&&h=n.Ta&&c<=n.eb&&(b=c-(n.Ta-n.$a));b&&(a.preventDefault&&a.preventDefault(),d.Da(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==n.bb&&(b=n.ab);d.Da(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
-a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.Da(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.Z=function(a,b,c,d){this.v=a;this.s=b;this.j=c;this.w=d;B(this)};
-k.Za=function(a){if(!this.a){var b=Xb(this.v,"connection");if(b){var c=b.split("->");if(2==c.length){var d=sa(c[0]);if(d!=this.va)return;c=sa(c[1]);if(this.a=Pa(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.l=e.receiveData){this.g=a;this.status("Connected "+this.wa+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.V=function(a,b){if(!b)if(this.Za(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
+a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.Da(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.Z=function(a,b,c,d){this.u=a;this.s=b;this.j=c;this.w=d;B(this)};
+k.Za=function(a){if(!this.a){var b=Xb(this.u,"connection");if(b){var c=b.split("->");if(2==c.length){var d=sa(c[0]);if(d!=this.va)return;c=sa(c[1]);if(this.a=Pa(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.l=e.receiveData){this.g=a;this.status("Connected "+this.wa+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.V=function(a,b){if(!b)if(this.Za(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
 k.R=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new L(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.Da=function(a){if("number"==typeof a)this.f.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d\nLicense: GPL version 3 or later ");for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bhd){if(id(d,this.C)){this.l=new L(this,"1.34.3",rd);id(this.l)&&(sd(this,d),a=td,ud(this.l));this.l.set(od,ta());vd(this.l);var e=this.a&&!this.A;if(a==pd||Oa("Click OK to restore the previous "+Ya+" machine state, or CANCEL to reset the machine.")){if(c=nd(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?id(d,g):("error"==f&&"no machine state"!=
-g?(this.G("Error: "+g),"unable to verify user"==g&&(ya(wd,""),this.f=null)):this.M(f+": "+g),ud(d),id(d)?(c=nd(d),e=!0):c=!1))}e&&ld(this,c?d:null)}else a==td&&d.clear()}else ld(this);delete this.C;delete this.u}e=w(this.id);for(f=0;fa[1];a=a[2];this.N=!0;this.i.F=!0;var d=this.m.power;d&&(d.textContent="Shutdown");this.j&&(xd(this,this.j,b,c,a),zb(this,-2),this.j.J());this.K&&(sd(this,b),b.clear());!c&&this.l&&(this.l.clear(),delete this.l);this.h=0};
+k.sa=function(a){void 0===a&&(a=this.a||(this.C?pd:hd));if(!this.i){this.i++;var b=!1,c=!1;this.K=!1;var d=this.v||new L(this,"1.34.3");if(a==qd)b=!0;else if(a>hd){if(id(d,this.C)){this.l=new L(this,"1.34.3",rd);id(this.l)&&(sd(this,d),a=td,ud(this.l));this.l.set(od,ta());vd(this.l);var e=this.a&&!this.A;if(a==pd||Oa("Click OK to restore the previous "+Ya+" machine state, or CANCEL to reset the machine.")){if(c=nd(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?id(d,g):("error"==f&&"no machine state"!=
+g?(this.G("Error: "+g),"unable to verify user"==g&&(ya(wd,""),this.f=null)):this.M(f+": "+g),ud(d),id(d)?(c=nd(d),e=!0):c=!1))}e&&ld(this,c?d:null)}else a==td&&d.clear()}else ld(this);delete this.C;delete this.v}e=w(this.id);for(f=0;fa[1];a=a[2];this.N=!0;this.h.F=!0;var d=this.m.power;d&&(d.textContent="Shutdown");this.j&&(xd(this,this.j,b,c,a),zb(this,-2),this.j.J());this.K&&(sd(this,b),b.clear());!c&&this.l&&(this.l.clear(),delete this.l);this.i=0};
 function sd(a,b){if(Oa("There may be a problem with your "+Ya+" machine.\n\nTo help us diagnose it, click OK to send this "+Ya+" machine state to http://www.pcjs.org.")){var c=a.X;a=a.f||"";b=b.toString();var d={};d.app=Ya;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;p("http://www.pcjs.org/api/v1/report",d,!0)}}
-function yd(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new L(a,"1.34.3"),g=new L(a,"1.34.3",md),h=ta();g.set(od,h);f.set(od,h);f.set(zd,"1.34.3");f.set(Ad,window?window.location.href:null);f.set(Bd,window?window.navigator.userAgent:"");a.j&&a.j.R&&(c&&(b&&(a.j.i.J=a.j.i.B),N(a.j)),d=a.j.R(b,c),"object"===typeof d&&f.set(a.j.id,d),c&&(a.j.i.F=!1,!1===d&&(e=null)));for(var h=w(a.id),m=0;m=d||30<=(c.Ga+=d))&&(e.textContent=c.i.B?c.W.toFixed(2)+"Mhz":"Stopped",c.Ga=0)}if(a.g&&(a=a.g,b=b||0,a.C)){c=a.j.i.B;d=!!(a.j.l&8);if(0>=b||60<=(a.A+=b)){e=a.j.f;if(a.m.PC){var f=a.w&&a.w.l||8,e=e||0,e=8==f?ka(e,void 0):la(e,void 0);a.m.PC.textContent!=e&&(a.m.PC.textContent=e)}a.A=0}-1>b?a.f=a.j.f:0=d||30<=(c.Ga+=d))&&(e.textContent=c.h.B?c.W.toFixed(2)+"Mhz":"Stopped",c.Ga=0)}if(a.g&&(a=a.g,b=b||0,a.C)){c=a.j.h.B;d=!!(a.j.l&8);if(0>=b||60<=(a.A+=b)){e=a.j.f;if(a.m.PC){var f=a.w&&a.w.l||8,e=e||0,e=8==f?ka(e,void 0):la(e,void 0);a.m.PC.textContent!=e&&(a.m.PC.textContent=e)}a.A=0}-1>b?a.f=a.j.f:0).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(H){g=null,a=H.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var m=h[0],u,D=/( [a-z]+=)(['"])(.*?)\2/g;u=D.exec(f);)m=0>m.indexOf(u[1])?m.replace(">",u[0]+">"):m.replace(new RegExp(u[1]+"(['\"])(.*?)\\1"),u[0]);h[0]!=m&&(g=g.replace(h[0],m))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
 "");a=a.replace(d[0],g);Jd(a,b,c)}})}else c(a,null)}
-function Kd(a,b,c,d,e){function f(a){if(void 0===m){var b=h&&A(h,"machine-warning");m=b&&b[0]||h}m&&(m.innerHTML=qa(a))}function g(a){f("Error: "+a);u&&(--Gd||Ha(!0));u=!1}var h,m,u=!0;Gd++;Ma[b]={};try{if(h=document.getElementById(b)){var D;if("object"==typeof resources&&(D=resources.css)){var H=document.head||document.getElementsByTagName("head")[0],Ca=document.createElement("style");Ca.type="text/css";Ca.styleSheet?Ca.styleSheet.cssText=D:Ca.appendChild(document.createTextNode(D));H.appendChild(Ca)}d||
+function Kd(a,b,c,d,e){function f(a){if(void 0===m){var b=h&&A(h,"machine-warning");m=b&&b[0]||h}m&&(m.innerHTML=qa(a))}function g(a){f("Error: "+a);u&&(--Gd||Ha(!0));u=!1}var h,m,u=!0;Gd++;Ma[b]={};try{if(h=document.getElementById(b)){var D;if("object"==typeof resources&&(D=resources.css)){var H=document.head||document.getElementsByTagName("head")[0],Da=document.createElement("style");Da.type="text/css";Da.styleSheet?Da.styleSheet.cssText=D:Da.appendChild(document.createTextNode(D));H.appendChild(Da)}d||
 (D=a,"pdp"==a.substr(0,3)&&(D="pdpjs"),d="/versions/"+D+"/1.34.3/components.xsl");D=function(e,m){m?Hd(d,null,a,null,!1,f,function(a,e){e?(La(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=m.transformNode(e))?(h.outerHTML=e,--Gd||Ha(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(m,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Gd||
 Ha(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Hd(c,b,a,e,!0,f,D):Id(c,null,b,a,e,!1,f,D)}else g("missing machine element: "+b)}catch(Ld){g(Ld.message)}return u}window.embedPDP10=function(a,b,c,d){Ha(!1);return Kd("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){Ha(!1);return Kd("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return x(b,a+".machine")};
 window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Sa[a]){for(var c=!0,d=Sa,e=a,f=b.length,g=[],h=[],m="",u=null,D=0;D
Date: Wed, 29 Mar 2017 13:59:50 -0700
Subject: [PATCH 14/27] DAKAG PDP-10 diagnostic passes now (fixed the relative
 addressing location used within literal scopes)

---
 modules/pdp10/lib/macro10.js       |   9 +-
 versions/pdpjs/1.34.3/pdp10-dbg.js | 132 ++++++++++++++---------------
 2 files changed, 72 insertions(+), 69 deletions(-)

diff --git a/modules/pdp10/lib/macro10.js b/modules/pdp10/lib/macro10.js
index daadeff5e..755a5e7f8 100644
--- a/modules/pdp10/lib/macro10.js
+++ b/modules/pdp10/lib/macro10.js
@@ -832,7 +832,7 @@ class Macro10 {
         });
         this.aWords = [];
         this.aFixups = [];
-        this.nLocationScope = this.nLocation;
+        if (this.nLocationScope < 0) this.nLocationScope = this.nLocation;
         this.nLocation = 0;
     }
 
@@ -960,7 +960,9 @@ class Macro10 {
          */
         var match = sOperand.match(/^([^,]*),,([^,]*)$/);
         if (!match) {
-            if (nLocation === undefined) nLocation = (this.nLocationScope >= 0? this.nLocationScope : this.nLocation);
+            if (nLocation === undefined) {
+                nLocation = (this.nLocationScope >= 0? this.nLocationScope : this.nLocation);
+            }
             /*
              * Check for the "period" syntax that MACRO-10 uses to represent the value of the current location.
              * The Debugger's parseInstruction() method understands that syntax, but its parseExpression() method
@@ -1428,7 +1430,8 @@ class Macro10 {
         var sExp = (sOperator + sSeparator + sOperands).trim();
 
         if (sOperands.indexOf(",,") < 0) {
-            w = this.dbg.parseInstruction(sOperator, sOperands, this.nLocation, true);
+            var nLocation = this.nLocationScope >= 0? this.nLocationScope : this.nLocation;
+            w = this.dbg.parseInstruction(sOperator, sOperands, nLocation, true);
         }
 
         if (w < 0) {
diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js
index 68f759f32..07b0d56e0 100644
--- a/versions/pdpjs/1.34.3/pdp10-dbg.js
+++ b/versions/pdpjs/1.34.3/pdp10-dbg.js
@@ -41,23 +41,23 @@ function za(a){return a.replace(/[&<>"']/g,function(a){return Aa[a]})}function B
 function Ga(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
 function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
 f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
-function Ia(a,b){var c,d={ea:null,Y:null,xa:null,wa:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.xa=g.load;d.wa=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ya=g.load;d.xa=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.Y=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Z:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.ya=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
+function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Cb=b.comment;this.Sb=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Z:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.za=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
 function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic,
 set:this.lc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&&dc(this,this.w=0)};
 m.ra=function(a,b,c,d){if(this.H&&this.H.ra(a,b,c,d)||this.v&&this.v.ra(a,b,c,d)||this.D&&this.D.ra(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
-function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.ra.call(this,a,b,c,d)}};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Aa=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.qa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
+function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.ra.call(this,a,b,c,d)}};m.La=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Ba=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.qa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
 m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.ic=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])}
 m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.S=b==pc),!0):!1}
 function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.cc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.dc=function(){};m.Yb=function(a){a||this.v.W()};
@@ -75,33 +75,33 @@ m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else
 m.Zb=function(a){if(!a&&!this.v.A.O){var b;this.S&&wc(this);this.U==cc?b=yc(this.G,this.i):b=this.v.f(this.i);dc(this,this.w=b)}};m.ac=function(a){a||this.v.A.O||jc(this,this.j)};m.$b=function(a){a?(this.F=!0,gc(this,!0)):(this.F=!1,gc(this),kc(this,0))};m.bc=function(a,b){this.j=a?this.j|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;gd.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Gc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
 function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.na&&(a.na+=a.ma,c=!0);0<=a.oa&&a.oa<=fd(a)&&(a.ma=a.oa=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Fa))}}
+function Yc(a,b){r.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.jb=0;this.mb=b;this.ja=c;this.kb=Math.round(this.mb/1E4)/100;this.ha=this.kb*this.ja;this.lb=this.Ia=this.ka=this.cb=0;this.A.O=this.A.ib=!1;this.A.ga=a.autoStart;"string"==typeof this.A.ga&&(this.A.ga="true"==this.A.ga);this.A.Ua=!1;this.Ga=this.na=0;this.Ha=+a.csStart;this.ma=+a.csInterval;this.oa=+a.csStop;this.S=[];this.Fb=this.jc.bind(this);this.X=this.M=this.V=this.N=this.L=this.Fa=this.U=this.sa=this.nb=this.ba=
+0;this.Na=null;Mb(this)}ka(Yc,r);m=Yc.prototype;m.La=function(a,b,c,d){this.H=a;this.G=b;this.D=d;this.Na=a.j;for(a=0;a=a.na&&(a.na+=a.ma,c=!0);0<=a.oa&&a.oa<=fd(a)&&(a.ma=a.oa=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Ga))}}
 m.ra=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Z)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.ba/a.ha?b=1:d=!0;a.ja=b;b=a.kb*a.ja;if(a.ha!=b){a.ha=b;b=a.ha.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.U=0;hd(a);return d}function kd(a,b){for(var c=a.S.length-1;0<=c;c--){var d=a.S[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c}
-m.jc=function(){if(this.A.O){this.cb>=this.mb&&hd(this,!0);this.sa=0;this.Ea=ob();if(this.U){var a=this.Ea-this.U;a>this.lb&&(this.L+=a,this.L>this.Ea&&(this.L=this.Ea))}try{do{var b=kd(this,this.A.Ua?1:this.Ha);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.sa+=b;this.M+=b;vc(this,b);tc(this,b);this.ka-=b;if(0>=this.ka){this.ka+=this.Ha;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
-e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.U=ob();var c=this.lb;this.sa&&(c=Math.round(c*this.sa/this.Ha));var c=c-(this.U-this.Ea),d=this.U-this.L;d&&(this.ba=Math.round(this.M/(10*d))/100,864E5<=d&&(this.X=0,gd(this)));if(0>c||this.bac&&(this.L-=c),c=0;this.cb+=this.sa;this.U+=c;a(b,c)}}};
+m.jc=function(){if(this.A.O){this.cb>=this.mb&&hd(this,!0);this.sa=0;this.Fa=ob();if(this.U){var a=this.Fa-this.U;a>this.lb&&(this.L+=a,this.L>this.Fa&&(this.L=this.Fa))}try{do{var b=kd(this,this.A.Ua?1:this.Ia);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.sa+=b;this.M+=b;vc(this,b);tc(this,b);this.ka-=b;if(0>=this.ka){this.ka+=this.Ia;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
+e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.U=ob();var c=this.lb;this.sa&&(c=Math.round(c*this.sa/this.Ia));var c=c-(this.U-this.Fa),d=this.U-this.L;d&&(this.ba=Math.round(this.M/(10*d))/100,864E5<=d&&(this.X=0,gd(this)));if(0>c||this.bac&&(this.L-=c),c=0;this.cb+=this.sa;this.U+=c;a(b,c)}}};
 function rc(a,b){if(!Ab(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
-function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Ca=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype;
-m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ia=this.Ja=this.b=this.I=0;this.i=this.Da=this.Oa;this.K=this.P=-1;this.F=this.j=0;this.ob=[0,0];this.ta=[0,0];this.la=[0,0];this.ua=[0,0];this.Ba=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Ca=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
-m.save=function(){var a=new F(this);a.set(0,[this.b,this.I,this.Ia,this.Ja,this.i,this.P,this.K,this.j,this.C,this.Da,this.Ba,this.Oa]);a.set(1,[]);a.set(2,[this.X,this.ja,this.A.ga]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
-m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ia=b.next().value;this.Ja=b.next().value;this.i=b.next().value;this.P=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Da=b.next().value;this.Ba=b.next().value;this.Oa=b.next().value;b=a[2];this.X=b[0];gd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
-m.qc=function(a,b){var c=this.G;a=this.Ba=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
-m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Ca||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ia=this.f(this.b):0<=this.P?(this.I=this.Ja=this.f(this.P),this.P=-1):(this.I=this.Ja=
-this.f(this.Da=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ia=this.f(a))&Sb;a=this.I&4194304?-1:this.Ja/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
+function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Da=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype;
+m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ja=this.Ka=this.b=this.I=0;this.i=this.Ea=this.Oa;this.K=this.P=-1;this.F=this.j=0;this.ob=[0,0];this.ta=[0,0];this.la=[0,0];this.ua=[0,0];this.Ca=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Da=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
+m.save=function(){var a=new F(this);a.set(0,[this.b,this.I,this.Ja,this.Ka,this.i,this.P,this.K,this.j,this.C,this.Ea,this.Ca,this.Oa]);a.set(1,[]);a.set(2,[this.X,this.ja,this.A.ga]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
+m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ja=b.next().value;this.Ka=b.next().value;this.i=b.next().value;this.P=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ea=b.next().value;this.Ca=b.next().value;this.Oa=b.next().value;b=a[2];this.X=b[0];gd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
+m.qc=function(a,b){var c=this.G;a=this.Ca=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
+m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Da||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ja=this.f(this.b):0<=this.P?(this.I=this.Ka=this.f(this.P),this.P=-1):(this.I=this.Ka=
+this.f(this.Ea=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ja=this.f(a))&Sb;a=this.I&4194304?-1:this.Ka/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
 function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}}
 function yd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)}
 function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Kd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}
@@ -125,7 +125,7 @@ c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+C:d;this.g(b,a)}},function(a,b){
 1&15);if(0z&&dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d>z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-
 Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=(this.b<<14>>14)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,
 b){if(a=(this.b<<14>>14)%256){var c=this.f(b),d=this.f(b+1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},L,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b,a)},function(a,b){a=!1;for(var c=this.f(b),d=c/y|0,c=c&x;!a;)this.g(c,this.f(d)),
-c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d*y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ia/y|0);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.P=this.b},L,function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Sb,
+c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d*y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ja/y|0);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.P=this.b},L,function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Sb,
 (this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){a=this.f(b);a+=262145;this.g(a&Sb,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Sb);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Sb);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a);G(this,c&Sb)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b+
 1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,
 b){this.g(b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ze.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ze.call(this,this.f(b),this.f(this.b))))},oe,function(a,b){0>T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+
@@ -153,18 +153,18 @@ this.f(b);R(a,this.b*y)||G(this,this.i+1);this.g(b,U(a,this.b*y))},function(a,b)
 R(a,c)||G(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));R(a,c)||G(this,this.i+1);this.g(b,U(a,c))},function(a,b){G(this,this.i+1);this.g(b,U(this.f(b),this.f(this.b)))},function(a,b){G(this,this.i+1);this.g(b,U(this.f(b),X(this.f(this.b))))},function(a,b){a=this.f(b);var c=this.f(this.b);R(a,c)&&G(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));R(a,c)&&G(this,this.i+1);this.g(b,U(a,c))},O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
 O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O],ne=[function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a,b){switch(b){case 0:a=this.f(this.b);a&8&&(this.j&=-131073);a&131072&&(this.j&=-262145);break;default:this.w(a)}},function(a,b){switch(b){case 0:a=0;this.j&131072&&(a|=8);this.j&262144&&(a|=65536);this.g(this.b,a);break;default:this.w(a)}},function(a){this.w(a)},function(a){this.w(a)}];
 function Be(a){r.call(this,"ROM",a,128);this.Y=this.b=null;this.C=+a.addr;this.j=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=wa(this.w);if(this.w){a=this.w;var b=xa(this.F);"json"!=b&&"hex"!=b&&(a=Ja()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;Ha(a,null,!0,function(a,b,f){f?(c.ia("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(mb(c.bb,a,b),(a=Ia(a,b))?(c.b=a.ea,c.Y=a.Y):c.w=null);Ce(c)})}}ka(Be,r);
-Be.prototype.Ka=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Ce(this)};Be.prototype.Aa=function(){this.Y&&(this.D&&De(this.D,this.id,this.C,this.j,this.Y),delete this.Y);return!0};Be.prototype.qa=function(){return!0};
+Be.prototype.La=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Ce(this)};Be.prototype.Ba=function(){this.Y&&(this.D&&De(this.D,this.id,this.C,this.j,this.Y),delete this.Y);return!0};Be.prototype.qa=function(){return!0};
 function Ce(a){if(!Cb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)zb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.j,8,!0)+")");else{var b;b=a.C;if(Dc(a.G,b,a.j,Pc)){var c;for(c=0;c>>f.i;0>>=
 f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
-a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ka=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)};
-m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.ab)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Aa=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
+a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.La=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)};
+m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.ab)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
 m.qa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.U?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)}
@@ -179,33 +179,33 @@ function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.t
 function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.T?K(a,c,a.L,8,1)+"  "+c+".":K(a,c,a.L,16,1)+"  "+K(a,c,a.L,8,1)+"  "+K(a,c,a.L,2,32>=a.L?8:6)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
 var Re={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Me=Math.pow(2,32);
-function Xe(a){Je.call(this,a);this.Ia=!1;this.Fa=18;this.L=36;this.ba=["<",">"];this.sa=[];this.Ha=Z();this.M=Z(0);this.na=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.V=this.oa=0;this.i=[];this.Da=void 0;Ze(this);this.D=this;this.Ba={};this.ca=this.Eb=0;this.X=null;this.S=[];$e(this,a.messages);this.ua=a.commands;this.Ga=[];this.P=0;this.Oa=this.Ea=null;this.C=this.Na=this.Ja=this.ma=this.Ca=0;this.ta=this.la=this.ha=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
+function Xe(a){Je.call(this,a);this.Ja=!1;this.Ga=18;this.L=36;this.ba=["<",">"];this.sa=[];this.Ia=Z();this.M=Z(0);this.na=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.V=this.oa=0;this.i=[];this.Ea=void 0;Ze(this);this.D=this;this.Ca={};this.ca=this.Eb=0;this.X=null;this.S=[];$e(this,a.messages);this.ua=a.commands;this.Ha=[];this.P=0;this.Oa=this.Fa=null;this.C=this.Na=this.Ka=this.ma=this.Da=0;this.ta=this.la=this.ha=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
 a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,pa:!1,T:c}}function bf(a,b,c,d){a.B=b;a.eb=c||!1;a.pa=!1;a.T=d}function cf(a){return[a.B,a.eb,a.pa,a.T,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.pa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
-m.Ka=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.la=a.j;this.Fa=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.na));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Gc[c],p&&d.u(n(p.id,8)+"  %"+
+m.La=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.la=a.j;this.Ga=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.na));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Gc[c],p&&d.u(n(p.id,8)+"  %"+
 n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)}
-function $e(a,b){a.D=a;a.ca=a.Eb=536870916;a.X=null;a.S=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;dd&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Da==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
+function sc(a,b,c,d){if(!wf(a))return!1;var e="";null===c&&(e=(c=!a.Fa||"tr"==a.Fa)?"tr":"t");a.C=0;b||td(a)&&ud(a,a.v.i,0);try{b=kd(a.v,b);var f=a.v.$a(b);0>23&&a.v.Ea==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
 function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f,
--1)+")")}else k=Ba(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Fa)):h+(null!=d?"="+d.toString():""));return h}
+-1)+")")}else k=Ba(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Ga)):h+(null!=d?"="+d.toString():""));return h}
 function Jf(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;lGf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
 (c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127
-h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Ca=0;a.oa=0}
+h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Da=0;a.oa=0}
 m.Ra=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.pa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.pa||Ze(a);break}}return f}
 function Mf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ha,d);f+="="+K(e,e.Ma(e.Ha),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]d;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ia,d);f+="="+K(e,e.Ma(e.Ia),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,Y:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h,
 g);bf(a.M,h.i);break;case of:rd(h,g);break;case pf:f=131072;break;case qf:f=65536;break;case rf:f=32768;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,0<=d.P?d.P:d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.pa=l.pa;h.T=l.T;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
 function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.X=null;if(Cb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Od=
-[];"call"==Sf&&(Db=1E5,Od=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Da=da;Uf++;Db--}}Uf||(a.u("no "+Tf+"history available"),a.Da=void 0)}else{var jb=ff(a,ma,a.na);if(jb){var Ma=0,Xf="ds"==gb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||Ch,Ma=Qe(a,Ca);else{var Yf=ff(a,Ca);Yf&&
+D)a.u("missing breakpoint address");else{var H=Z();if("*"!=D&&(H=ff(a,D,a.M),!H))break a;"c"==P?null==H.B?(Ye(a),a.u("all breakpoints cleared")):Kf(a,a.b,H)||Kf(a,a.N,H)||Kf(a,a.K,H)||a.u("breakpoint missing: "+K(a,H.B,18)):null!=H.B&&(hf(a,H,I),"p"==P?a.Ra(a.b,H):"r"==P?a.Ra(a.N,H):"w"==P?a.Ra(a.K,H):a.u("unknown breakpoint command: "+P))}}}break;case "c":a.za&&(a.za.value="");break;case "d":a:{var fb,gb=g[0],ma=g[1],Ca=g[2],Ch=g[3];if("?"==ma){var hb="";for(fb in ac)a.Ca[fb]&&(hb&&(hb+=","),hb+=
+fb);hb+=",state,symbols";a.u("dump memory commands:");a.u("\tdw [a] [n]    dump n words at address a");a.u("\tds [a] [n]    dump n words at address a as JSON");a.u("\tdh [p] [n]    dump n instructions from history position p");hb.length&&a.u("dump extension commands:\n\t"+hb)}else if("state"==ma){var Ld=yg(a.H,!0);"console"==Ca?console.log(Ld):(a.za&&(a.za.value=""),Ld&&a.u(Ld))}else if("symbols"==ma)for(var Md=0;Mdna.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Od=
+[];"call"==Sf&&(Db=1E5,Od=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Ea=da;Uf++;Db--}}Uf||(a.u("no "+Tf+"history available"),a.Ea=void 0)}else{var jb=ff(a,ma,a.na);if(jb){var Ma=0,Xf="ds"==gb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||Ch,Ma=Qe(a,Ca);else{var Yf=ff(a,Ca);Yf&&
 (Ma=Yf.B-jb.B)}0>Ma&&(Ma=0);65536Fb?".":String.fromCharCode(Fb)),Hc=Hc-7}Na&&(Na+="\n");Na=Xf?Na+(oa+","):Na+(ma+": "+oa+(0>$f?
 " "+Rd:""))}Na&&a.u(Na);a.T=Eh}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Td=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Td=null;if(null==Td)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else{var Ic=ff(a,Td,a.na);if(Ic)for(var Ud=2;Ud
@@ -228,55 +228,55 @@ Xd;){for(var Oa=null,Jh=256;65536>Ib.B>>>0;){Yd.B=a.Ma(Ib,2);if(null==Ib.B||!Jh-
 case "l":if("ln"==g[0]){vg(a,g[1],!0);break}f=!0;break;case "m":a:{var pa,qa=null,M=g[1];"?"==M&&(M=void 0);if(void 0!==M){var Da=0;if("all"==M)Da=1879046143,M=null;else if("on"==M)qa=!0,M=null;else if("off"==M)qa=!1,M=null;else{"keys"==M&&(M="key");"kbd"==M&&(M="keyboard");for(pa in ac)if(M==pa){Da=ac[pa];qa=!!(a.ca&Da);break}if(!Da){a.u("unknown message category: "+M);break a}}if(Da)if("on"==g[2])a.ca|=Da,qa=!0;else if("off"==g[2]&&(a.ca&=~Da,qa=!1,1073741824==Da)){for(var jg=1E3<=a.S.length?a.S.length-
 1E3:0;jglg)a.u("step commands:"),
 a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var kb=+g[2];if(2==kb||8==kb||10==kb||16==kb)a.T=kb;else{a.u("invalid base: "+kb);break}}a.u("default base: "+a.T);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.ma=
-Lb;break;case "start":a.v.Ga=Lb;break;case "stop":a.v.oa=Lb;break;default:a.u("unknown cs option");break a}void 0!==Lb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ha.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
+Lb;break;case "start":a.v.Ha=Lb;break;case "stop":a.v.oa=Lb;break;default:a.u("unknown cs option");break a}void 0!==Lb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ha.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
 a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var $d="commands:",ae;for(ae in zg)$d+="\n"+
-Ba(ae,9)+zg[ae];td(a)||($d+="\nnote: history disabled if no exec breakpoints");a.u($d);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){null!=b&&(a.Ga=Ke(a,b,c));for(;b=a.Ga.shift();)if(!Nf(a,b))return!1;return!0}
+Ba(ae,9)+zg[ae];td(a)||($d+="\nnote: history disabled if no exec breakpoints");a.u($d);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){null!=b&&(a.Ha=Ke(a,b,c));for(;b=a.Ha.shift();)if(!Nf(a,b))return!1;return!0}
 var zg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Gf=20,Hf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
 lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS OV C0 C1 ND PD".split(" "),Ag={},Cf=(Ag[28672]={0:101},Ag[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ag[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Gf,9216:53,
 9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ag[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ag[29248]={24576:79,24640:80,25088:81,25152:82},Ag[28700]={28672:93,28676:94,28680:95,28684:96,
 28688:97,28692:98,28696:99,28700:100},Ag),Df=["","I","M","S"],Ef=" L E LE A GE N G".split(" "),Ff="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),If=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],uf=1E3,xf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;bb.indexOf(":")&&".MAC"==b.slice(-4).toUpperCase()&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/
([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
 0)}})}}
-function Cg(a){if(0<=a.ha.indexOf("p"))return a.u(a.G.join("")),0;var b=Ve(a.b);try{for(var c=0;cI)break;var u=
 I+1,P=I+l.length,eb="",Bb="";I&&(eb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Bb=b[P]).match(/[0-9A-Z$%.]/i)||("'"==eb&&I--,"'"==Bb&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.aa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
-if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.F=Jg(a,f,!0),void 0===a.F&&a.error("unrecognized expression: "+f)):a.F=a.U;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:case gh:Sg(a,f,h);break;case hh:case ih:case jh:case kh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,a.aa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
-function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Wa==lh){var e=a.aa;Ig(a,d.va);if(eb.indexOf(",,")&&(H=Jf(a.b,f,b,0<=a.va?a.va:a.aa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
+function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Wa==lh){var e=a.aa;Ig(a,d.wa);if(ea.va&&(a.va=a.aa);a.aa=0}
+function nh(a){if(a.w.length){var b=a.w[a.w.length-1].name;b&&a.M.push({name:b,R:a.R,fa:a.fa});b=a.w.pop();a.R=b.R;a.fa=b.fa;a.aa=b.aa;a.va=b.va;a.w.length||-1==a.va||a.error("scope restore error")}else a.error("scope nesting error")}tg.prototype.error=function(a){throw Error("error"+(this.da?" at line "+va(this.da):"")+": "+a);};function Dg(a,b){a.u("warning"+(a.da?" at line "+va(a.da):"")+": "+b)}
 function ph(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,Wa:qh,Ta:e,Ab:f,Qa:g,va:b+": 0",da:a.da};a.L.push(d)}return c}
+function Jg(a,b,c,d){var e,f=b.match(/^([^,]*),,([^,]*)$/);f?(b=f[1]?Jg(a,f[1],c,d):0,void 0!==b&&(c=f[2]?Jg(a,f[2],c,d):0,void 0!==c&&(e=Y(a.b,b,18,!0)*Math.pow(2,18)+Y(a.b,c,18,!0)))):(void 0===d&&(d=0<=a.va?a.va:a.aa),e=Te(a.b,b.replace(/\.([^0-9]|$)/g,K(a.b,d,-1)+"$1"),c),void 0===e&&a.error("error parsing expression: "+b));return e}
+function Rg(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,Wa:qh,Ta:e,Ab:f,Qa:g,wa:b+": 0",da:a.da};a.L.push(d)}return c}
 function oh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=ph(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
 function Mg(a,b){var c=b;null==a.D&&(a.D=a.J="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.J+=b}if(null==a.D){var d=b=0,e,f,g=a.J.length;a.K==Xg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
 function Sg(a,b,c){var d,e,f,g,h,k;a.H="<";a.C=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=oh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=rh;c=3}else if(b==fh){a.H="[";a.C="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
 b+": "+c),c;f=e[1];b=lh;c=2}else if(b==Tg)a.H="[",a.C="]",f="?"+va(++a.X,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],b=sh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",hh="LALL",Tg="LITERAL",fh="OPDEF",ih="PAGE",gh="REPEAT",Yg="SIXBIT",jh="SUBTTL",kh="TITLE",bh="XWD",rh=-1,lh=-2,sh=-3,qh=-4;
-function th(a,b,c){r.call(this,"Computer",a,33554432);this.A.Z=!1;this.S=null;uh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.X=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=vh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.X},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.ya)for(b=
-0;b\nLicense: GPL version 3 or later ");for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bwh){if(xh(d,this.L)){this.C=new F(this,"1.34.3",Rh);xh(this.C)&&(Sh(this,d),a=Th,Uh(this.C));this.C.set(Oh,Ga());Vh(this.C);var e=this.b&&!this.K;if(a==Ph||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Nh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?xh(d,g):("error"==f&&"no machine state"!=
 g?(this.ia("Error: "+g),"unable to verify user"==g&&(Qa(Wh,""),this.i=null)):this.u(f+": "+g),Uh(d),xh(d)?(c=Nh(d),e=!0):c=!1))}e&&Ah(this,c?d:null)}else a==Th&&d.clear()}else Ah(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.U=!0;this.A.Z=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Xh(this,this.v,b,c,a),J(this,-2),this.v.ga());this.P&&(Sh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
 function Sh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
 function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",Bh),h=Ga();g.set(Oh,h);f.set(Oh,h);f.set(Yh,"1.34.3");f.set(Zh,window?window.location.href:null);f.set($h,window?window.navigator.userAgent:"");a.v&&a.v.qa&&(c&&(b&&(a.v.A.ga=a.v.A.O),a.v.W()),d=a.v.qa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Z=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.ba.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.ba.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0
Date: Wed, 29 Mar 2017 16:52:20 -0700
Subject: [PATCH 15/27] More MACRO-10 updates (eg, LOC pseudo-op, SIXBIT/ASCII
 expression support)

---
 apps/pdp10/diags/klad/DFKCAT.MAC.txt          |   571 +
 apps/pdp10/diags/klad/KLDDT.MAC.txt           |  6773 +++++++
 apps/pdp10/diags/klad/PARAM.KLM.txt           |  1086 ++
 apps/pdp10/diags/klad/README.md               |    65 +
 .../diags/klad/{SMFILE.MAC => SMFILE.MAC.txt} |     0
 apps/pdp10/diags/klad/UUOERR.KLM.txt          |   289 +
 apps/pdp10/diags/klad/dakaa/README.md         |     2 +-
 apps/pdp10/diags/klad/dakab/README.md         |     2 +-
 apps/pdp10/diags/klad/dakac/README.md         |     2 +-
 apps/pdp10/diags/klad/dakad/README.md         |     2 +-
 apps/pdp10/diags/klad/dakae/README.md         |     2 +-
 apps/pdp10/diags/klad/dakaf/README.md         |     2 +-
 apps/pdp10/diags/klad/dakag/README.md         |     2 +-
 apps/pdp10/diags/klad/dakah/DAKAH.LST.txt     |  7091 +++++++
 apps/pdp10/diags/klad/dakah/DAKAH.MAC.txt     |  1775 ++
 apps/pdp10/diags/klad/dakah/DAKAHM.MAC.txt    |  1775 ++
 apps/pdp10/diags/klad/dakah/DAKAHT.MAC.txt    |   117 +
 apps/pdp10/diags/klad/dakah/README.md         |   279 +
 apps/pdp10/diags/klad/dakai/DAKAI.LST.txt     | 16210 ++++++++++++++++
 apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt     |  1872 ++
 apps/pdp10/diags/klad/dakai/DAKAIM.MAC.txt    |  1733 ++
 apps/pdp10/diags/klad/dakai/DAKAIT.MAC.txt    |   136 +
 apps/pdp10/diags/klad/dakai/README.md         |   422 +
 modules/pdp10/lib/macro10.js                  |   225 +-
 24 files changed, 40339 insertions(+), 94 deletions(-)
 create mode 100644 apps/pdp10/diags/klad/DFKCAT.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/KLDDT.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/PARAM.KLM.txt
 rename apps/pdp10/diags/klad/{SMFILE.MAC => SMFILE.MAC.txt} (100%)
 create mode 100644 apps/pdp10/diags/klad/UUOERR.KLM.txt
 create mode 100644 apps/pdp10/diags/klad/dakah/DAKAH.LST.txt
 create mode 100644 apps/pdp10/diags/klad/dakah/DAKAH.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakah/DAKAHM.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakah/DAKAHT.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakah/README.md
 create mode 100644 apps/pdp10/diags/klad/dakai/DAKAI.LST.txt
 create mode 100644 apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakai/DAKAIM.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakai/DAKAIT.MAC.txt
 create mode 100644 apps/pdp10/diags/klad/dakai/README.md

diff --git a/apps/pdp10/diags/klad/DFKCAT.MAC.txt b/apps/pdp10/diags/klad/DFKCAT.MAC.txt
new file mode 100644
index 000000000..8da332c9b
--- /dev/null
+++ b/apps/pdp10/diags/klad/DFKCAT.MAC.txt
@@ -0,0 +1,571 @@
+;MAINDEC-10-DFKCA
+
+DECVER=002
+MCNVER=000
+
+	XLIST
+DEFINE	NAME	(MCNVER,DECVER),<
+
+TITLE	DFKCA	KL10 ADVANCED INSTRUCTION DIAGNOSTIC #1, VERSION MCNVER,DECVER >
+	LIST
+	LALL
+
+NAME	\MCNVER,\DECVER
+
+	XALL
+
+;COPYRIGHT 1975
+;DIGITAL EQUIPMENT CORPORATION
+;MARLBORO, MASS. 01752
+
+;JOHN R. KIRCHOFF
+
+LOC	137
+MCNVER,,DECVER
+	NOSYM
+SUBTTL	DIAGNOSTIC PARAMETERS
+
+;OPERATOR DEFINITIONS
+
+OPDEF	ER1	[1B8]
+OPDEF	ER2	[2B8]
+OPDEF	ER3	[3B8]
+OPDEF	ER4	[4B8]
+OPDEF	ER5	[5B8]
+OPDEF	ER6	[6B8]
+OPDEF	ER7	[7B8]
+OPDEF	ER10	[10B8]
+OPDEF	ER11	[11B8]
+OPDEF	ER12	[12B8]
+OPDEF	ER13	[13B8]
+
+LUUO1==ERRMES
+LUUO2==ERRMES
+LUUO3==ERRMES
+LUUO4==ERRMES
+LUUO5==ERRMES
+LUUO6==ERRMES
+LUUO7==ERRMES
+LUUO10==ERRMES
+LUUO11==ERRMES
+LUUO12==ERRMES
+LUUO13==ERRMES
+
+;SUBROUTINE ASSEMBLY DEFINITIONS
+
+DEBUG=100
+EXCASB=1
+USRASB=1
+KI10=1
+KL10=1
+KL10P0=1
+PGMEND=1
+ERDIAG=1
+KLOLD=1
+MODDVU=BEGIN
+MODDVL=BEGIN
+;MACROS
+
+DEFINE	SAVEAC	(A,B)<
+	MOVEI	AC+2,.
+	MOVEM	AC+2,TESTPC		;SETUP SUBTEST PC
+	MOVEI	AC+2,&17		;INFORM ERROR ROUTINE WHICH
+	MOVEM	AC+2,ERRLOP#		;AC IS USED FOR ITERATION>
+
+;BEGIN ASSEMBLY PARAMETERS
+
+SADR1=BEGIN
+SADR2=RESRT1
+SADR3=RENTR1
+SADR4=BEGIN
+SADR5=BEGIN
+SADR6=BEGIN
+SADR7=HALT BEGIN
+SADR8=HALT BEGIN
+SADR9=HALT BEGIN
+SADR10=HALT BEGIN
+SADR11=HALT BEGIN
+
+PAREA1=0
+PAREA2=0
+PAREA3=SIXBIT/DFKCA/
+PAREA4=SIXBIT/LPT/
+PAREA5=0
+PAREA6=0
+
+ITERAT=1000
+DEFINE	DMVE	(L,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVE INSTRUCTION
+;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
+;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
+;FROM MEMORY TO AC, AC+1 VIA THE DMOVE INSTRUCTION.
+;C(AC) AND C(AC+1) ARE THEN COMPARED WITH THE TEST WORDS
+;[XWD A,B] AND [XWD C,D], RESPECTIVELY.  THE TEST PASSES IF THESE
+;COMPARISONS AGREE.
+
+Q'L'0:	MOVE	AC+5,[XWD A,B]		;INITIALIZE TEST WORDS
+	MOVE	AC+6,[XWD C,D]		;FOR COMPARISON
+	MOVE	AC,[XWD 707070,707070]
+	MOVE	AC+1,[XWD 070707,070707]  ;INITIALIZE AC,AC+1
+	DMOVE	AC,[XWD A,B		;*MOVE DOUBLE WORD A,B ; C,D
+		    XWD C,D]		;FROM MEMORY TO AC, AC+1
+	CAME	AC,&17		;WAS AC LOADED CORRECTLY?
+	ER3	AC,L'1			;FAIL IF CONTENTS(AC) NOT = A,B
+	CAME	AC+1,&17		;WAS AC+1 LOADED CORRECTLY?
+	ER4	AC+1,L'2		;FAIL IF CONTENTS(AC+1) NOT = C,D
+	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH>
+
+
+DEFINE 	DMVE17	(L,T,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVE INSTRUCTION
+;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
+;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
+;FROM MEMORY TO AC, AC+1 VIA THE DMOVE INSTRUCTION.
+;C(AC) AND C(AC+1) ARE THEN COMPARED WITH THE TEST
+;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
+;THE TEST PASSES IF THESE COMPARISONS AGREE.
+
+Q'T'0:	MOVEM	AC,%SV17#		;SAVE AC17
+Q'L'0:	MOVE	AC+5,[XWD A,B]		;INITIALIZE TEST WORDS
+	MOVE	AC+6,[XWD C,D]		;FOR COMPARISON
+	MOVE	AC,[XWD 707070,707070]
+	MOVE	AC+1,[XWD 070707,070707]  ;INITIALIZE AC,AC+1
+	DMOVE	AC,[XWD A,B		;*MOVE DOUBLE WORD A,B ; C,D
+		    XWD C,D]		;FROM MEMORY TO AC, AC+1
+Q'T'3:	CAMN	AC,&17		;WAS AC LOADED CORRECTLY?
+	JRST	.+4			;HERE IF NO ERROR
+	MOVEM	AC,AC-1			;STORE INCORRECT RESLUTS
+	MOVE	AC,%SV17		;RESTORE P
+	ER3	AC-1,L'1		;FAIL IF CONTENTS(AC) NOT = A,B
+	CAMN	AC+1,&17		;WAS AC+1 LOADED CORRECTLY?
+	JRST	.+4			;HERE IF NO ERROR
+	MOVEM	AC+1,AC-1		;STORE INCORRECT WORD
+	MOVE	AC,%SV17		;RESTORE P
+	ER4	AC-1,L'2
+	MOVE	AC,%SV17		;RESTORE AC UNCONDITIONALLY
+	JUMPL	SAC,Q'T'0		;LOOP ON ERROR SWITCH>
+DEFINE	DMVN	(L,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVN INSTRUCTION
+;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
+;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
+;[XWD A,B] AND [XWD C,D] IS MOVED FROM MEMORY TO AC, AC+1 VIA
+;THE DMOVN INSTRUCTION.  C(AC) AND C(AC+1) ARE THEN COMPARED
+;WITH THE NEGATIVE (TWOS COMPLEMENT) OF THE TEST
+;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
+;THE TEST PASSES IF THESE COMPARISONS AGREE.
+
+Q'L'0:	DMOVE	AC,[XWD 707070,707070
+		    XWD 070707,070707]  ;INITIALIZE AC,AC+1
+	SETCM	AC+5,[XWD A,B]		;INITIALIZE TEST WORDS FOR COMPARISON
+	IFIDN	<0,0>,<
+	SETZ	AC+6,
+	ADDI	AC+5,1	>
+	IFIDN	<400000,0>,<
+	SETZ	AC+6,
+	ADDI	AC+5,1	>
+	IFDIF	<0,0>,<
+	IFDIF	<400000,0>,<
+	MOVN	AC+6,[XWD C,D]
+	TLZ	AC+6,1B18		;CLEAR SIGN BIT OF LOW ORDER WORD >>
+	DMOVN	AC,[XWD A,B		;*MOVE NEGATIVE OF DOUBLE WORD A,B ;
+		    XWD C,D]		;C,D FROM MEMORY TO AC, AC+1
+	CAME	AC,&17		;WAS AC LOADED CORRECTLY?
+	ER3	AC,L'1			;FAIL IF CONTENTS(AC) NOT = COMPLEMENT OF A,B
+	CAME	AC+1,&17		;WAS AC+1 LOADED CORRECTLY?
+	ER4	AC+1,L'2		;FAIL IF CONTENTS(AC+1) NOT = MINUS C,D
+	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH>
+DEFINE	DMVN17	(L,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVN INSTRUCTION
+;FIRST, AC, AC+1 ARE PRELOADED WITH DATA OTHER THAN THE TEST WORDS.
+;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
+;[XWD A,B] AND [XWD C,D] IS MOVED FROM MEMORY TO AC, AC+1 VIA
+;THE DMOVN INSTRUCTION.  C(AC) AND C(AC+1) ARE THEN COMPARED
+;WITH THE NEGATIVE (TWOS COMPLEMENT) OF THE TEST
+;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
+;THE TEST PASSES IF THESE COMPARISONS AGREE.
+
+Q'L'0:	MOVEM	AC,%SV17		;SAVE P
+	DMOVE	AC,[XWD 707070,707070
+		    XWD 070707,070707]  ;INITIALIZE AC,AC+1
+	SETCM	AC+5,[XWD A,B]		;INITIALIZE TEST WORDS FOR COMPARISON
+	IFIDN	<0,0>,<
+	SETZ	AC+6,
+	ADDI	AC+5,1	>
+	IFIDN	<400000,0>,<
+	SETZ	AC+6,
+	ADDI	AC+5,1	>
+	IFDIF	<0,0>,<
+	IFDIF	<400000,0>,<
+	MOVN	AC+6,[XWD C,D]
+	TLZ	AC+6,1B18		;CLEAR SIGN BIT OF LOW ORDER WORD >>
+	DMOVN	AC,[XWD A,B		;*MOVE NEGATIVE OF DOUBLE WORD A,B ;
+		    XWD C,D]		;C,D FROM MEMORY TO AC, AC+1
+	CAMN	AC,&17		;WAS AC LOADED CORRECTLY?
+	JRST	.+4			;HERE IF TESTS OK
+	MOVEM	AC,AC-1			;SAVE BAD WORD
+	MOVE	AC,%SV17		;RESTORE P
+	ER3	AC-1,L'1		;FAIL IF CONTENTS(AC) NOT = COMPLEMENT OF A,B
+	CAMN	AC+1,&17		;WAS AC+1 LOADED CORRECTLY?
+	JRST	.+4			;HERE IF TESTS OK
+	MOVEM	AC,AC-1
+	MOVE	AC,%SV17		;RESTORE P
+	ER4	AC+1,L'2		;FAIL IF CONTENTS(AC+1) NOT = MINUS C,D
+	MOVE	AC,%SV17		;RESTORE P UNCODITIONALLY
+	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH>
+DEFINE	DMVNF	(L,A,B,C,D,KIEF,KIUF,KLEF,KLUF)	<
+;**KI10**
+;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES NOT SET OVERFLOW
+;OR CARRY FLAGS ON THE KI10.  FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
+;THEN,DMOVN IS EXECUTED.  NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
+;IF ANY OF THESE FLAGS ARE SET, THE TEST FAILS.
+
+;**KL10**
+;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES SET OVERFLOW
+;OR CARRY FLAGS ON THE KL10.  FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
+;THEN,DMOVN IS EXECUTED.  NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
+;IF THE PROPER FLAGS ARE NOT SET, THE TEST FAILS.
+
+Q'L'0:	JFCL	17,.+1			;CLEAR OVFL AND CRY0,1 FLAGS
+	DMOVN	AC+1,[XWD A,B		;*DMOVN TEST
+		      XWD C,D]
+	JSP	AC,.+1			;READ FLAGS
+Q'L'1:	TLZ	AC,027777		;CLEAR EXTRA JUNK
+	TLNE	AC,USERF		;IN USER MODE ?
+	JRST	Q'L'4			;YES
+	SKIPE	KLFLG			;KL10 ?
+	JRST	Q'L'3			;YES
+;KI10 EXEC MODE
+	CAME	AC,[KIEF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF OVFL OR CRY0,1 FLG SET
+Q'L'2:	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH
+	JRST	Q'L'6
+;KL10 EXEC MODE
+Q'L'3:	CAME	AC,[KLEF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF FLAGS NOT SET
+	JRST	Q'L'2
+;KL10/KI10 USER MODE
+Q'L'4:	SKIPE	KLFLG			;KL10 ?
+	JRST	Q'L'5			;YES
+;KI10 USER MODE
+	CAME	AC,[KIUF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF ANY FLAGS SET
+	JRST	Q'L'2
+;KL10 USER MODE
+Q'L'5:	CAME	AC,[KLUF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF FLAGS NOT SET
+	JRST	Q'L'2
+
+Q'L'6:	JRST	.+1>
+DEFINE	DMVM	(L,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVEM INSTRUCTION
+;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
+;TEST WORDS AND AC,AC+1 ARE LOADED WITH THE TEST WORDS.
+;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
+;FROM AC, AC+1 TO MEMORY (TSTWD, TSTWD+1) VIA
+;THE DMOVEM INSTRUCTION.  C(TSTWD) AND C(TSTWD+1) ARE THEN
+;COMPARED WITH THE TEST WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
+;THE TEST PASSES IF THESE COMPARISONS AGREE.
+
+Q'L'0:	DMOVE	AC,[XWD 707070,707070
+		    XWD 070707,070707]	;INITIALIZE TEST WORDS
+	MOVEM	AC,TSTWD		;TSTWD, TSTWD+1 ARE IN MEMORY JUST
+	MOVEM	AC+1,TSTWD+1		;AFTER THE FINAL TEST OF THIS PROGRAM
+	DMOVE	AC,[XWD A,B
+		    XWD C,D]		;INITIALIZE AC,AC+1
+	DMOVEM	AC,TSTWD		;*MOVE DOUBLE WORD FROM AC, AC+1
+					;TO MEMORY (TSTWD, TSTWD+1)
+	DMOVE	AC,TSTWD		;PUT RESULTS OF TEST IN AC,AC+1 FOR COMPARISON
+	CAME	AC,[XWD A,B]		;WAS TSTWD LOADED CORRECTLY?
+	ER5	AC,L'1			;FAIL IF CONTENTS(TSTWD) NOT = A,B
+	CAME	AC+1,[XWD C,D]		;WAS TSTWD+1 LOADED CORRECTLY?
+	ER6	AC+1,L'2		;FAIL IF CONTENTS(TSTWD+1) NOT = C,D
+	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH>
+
+DEFINE	DMVNM	(L,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVNM INSTRUCTION
+;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
+;TEST WORDS AND AC, AC+1 ARE LOADED WITH THE TEST WORDS.
+;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
+;[XWD A,B] AND [XWD C,D] IS MOVED FROM AC, AC+1 TO MEMORY
+;(TSTWD, TSTWD+1) VIA THE DMOVNM INSTRUCTION.
+;C(TSTWD) AND C(TSTWD+1) ARE THEN COMPARED WITH THE
+;NEGATIVE (TWOS COMPLEMENT) OF THE TEST
+;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
+;THE TEST PASSES IF THESE COMPARISONS AGREE.
+
+Q'L'0:	DMOVE	AC,[XWD 707070,707070
+		    XWD 070707,070707]
+	DMOVEM	AC,TSTWD		;INITIALIZE TEST WORDS
+	DMOVE	AC,[XWD A,B
+		    XWD C,D]		;INITIALIZE AC,AC+1
+	DMOVN	AC+5,[XWD A,B
+		      XWD C,D]		;SET-UP TO CHECK RESULTS
+	DMOVNM	AC,TSTWD		;*MOVE NEGATIVE OF DOUBLE WORD FROM AC, AC+1
+					;TO MEMORY (TSTWD, TSTWD+1)
+	DMOVE	AC,TSTWD		;PUT TEST RESULTS IN AC,AC+1
+	CAME	AC,&17		;WAS TSTWD LOADED CORRECTLY?
+	ER5	AC,L'1			;FAIL IF CONTENTS(TSTWD) NOT = COMPLEMENT OF A,B
+	CAME	AC+1,&17		;WAS TSTWD+1 LOADED CORRECTLY?
+	ER6	AC+1,L'2		;FAIL IF CONTENTS(TSTWD) NOT = MINUS C,D
+	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH>
+DEFINE	DMVM17	(L,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVEM INSTRUCTION
+;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
+;TEST WORDS AND AC,AC+1 ARE LOADED WITH THE TEST WORDS.
+;THEN, THE DATA SPECIFIED BY [XWD A,B] AND [XWD C,D] IS MOVED
+;FROM AC, AC+1 TO MEMORY (TSTWD, TSTWD+1) VIA THE DMOVEM INSTRUCTION.
+;C(TSTWD) AND C(TSTWD+1) ARE THEN COMPARED WITH THE TEST
+;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
+;THE TEST PASSES IF THESE COMPARISONS AGREE.
+
+Q'L'0:	MOVEM	AC,%SV17		;SAVE AC17 CAUSE IT HAS PDP
+	DMOVE	AC,[XWD 707070,707070
+		    XWD 070707,070707]	;INITIALIZE TEST WORDS
+	MOVEM	AC,TSTWD		;TSTWD, TSTWD+1 ARE IN MEMORY JUST
+	MOVEM	AC+1,TSTWD+1		;AFTER THE FINAL TEST OF THIS PROGRAM
+	DMOVE	AC,[XWD A,B
+		    XWD C,D]		;INITIALIZE AC,AC+1
+	DMOVEM	AC,TSTWD		;*MOVE DOUBLE WORD FROM AC, AC+1
+					;TO MEMORY (TSTWD, TSTWD+1)
+	DMOVE	AC,TSTWD		;PUT RESULTS OF TEST IN AC,AC+1 FOR COMPARISON
+	CAMN	AC,[XWD A,B]		;WAS TSTWD LOADED CORRECTLY?
+	JRST	.+4			;HERE IF TESTS OK
+	MOVEM	AC,AC-1			;SAVE BAD WORD
+	MOVE	AC,%SV17		;RESTORE P
+	ER5	AC-1,L'1		;FAIL IF CONTENTS(TSTWD) NOT = A,B
+	CAMN	AC+1,[XWD C,D]		;WAS TSTWD+1 LOADED CORRECTLY?
+	JRST	.+4			;HERE IF TESTS OK
+	MOVEM	AC,AC-1			;SAVE BAD WORD
+	MOVE	AC,%SV17		;RESTORE P
+	ER6	AC+1,L'2		;FAIL IF CONTENTS(TSTWD+1) NOT = C,D
+	MOVE	AC,%SV17		;RESTORE AC UNCONDITIONALLY
+	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH>
+DEFINE	DMVNM17	(L,A,B,C,D)	<
+;THIS MACRO TESTS THE DMOVNM INSTRUCTION
+;FIRST, TSTWD, TSTWD+1 ARE PRELOADED WITH DATA OTHER THAN THE
+;TEST WORDS AND AC, AC+1 ARE LOADED WITH THE TEST WORDS.
+;THEN, THE NEGATIVE (TWOS COMPLEMENT) OF THE DATA SPECIFIED BY
+;[XWD A,B] AND [XWD C,D] IS MOVED FROM AC, AC+1 TO MEMORY
+;(TSTWD, TSTWD+1) VIA THE DMOVNM INSTRUCTION.
+;C(TSTWD) AND C(TSTWD+1) ARE THEN COMPARED WITH THE
+;NEGATIVE (TWOS COMPLEMENT) OF THE TEST
+;WORDS [XWD A,B] AND [XWD C,D], RESPECTIVELY.
+;THE TEST PASSES IF THESE COMPARISONS AGREE.
+
+Q'L'0:	DMOVE	AC,[XWD 707070,707070
+		    XWD 070707,070707]
+	DMOVEM	AC,TSTWD		;INITIALIZE TEST WORDS
+	DMOVE	AC,[XWD A,B
+		    XWD C,D]		;INITIALIZE AC,AC+1
+	DMOVN	AC+5,[XWD A,B
+		      XWD C,D]		;SET-UP TO CHECK RESULTS
+	DMOVNM	AC,TSTWD		;*MOVE NEGATIVE OF DOUBLE WORD FROM AC, AC+1
+					;TO MEMORY (TSTWD, TSTWD+1)
+
+	DMOVE	AC,TSTWD		;PUT TEST RESULTS IN AC,AC+1
+	CAMN	AC,&17		;WAS TSTWD LOADED CORRECTLY?
+	JRST	.+4
+	MOVEM	AC,AC-1			;SAVE BAD WORD
+	MOVE	AC,%SV17		;RESTORE P
+	ER5	AC-1,L'1		;FAIL IF CONTENTS(TSTWD) NOT = COMPLEMENT OF A,B
+	CAMN	AC+1,&17		;WAS TSTWD+1 LOADED CORRECTLY?
+	JRST	.+4			;HERE IF TESTS OK
+	MOVEM	AC,AC-1			;SAVE BAD WORD
+	MOVE	AC,%SV17
+	ER6	AC+1,L'2		;FAIL IF CONTENTS(TSTWD) NOT = MINUS C,D
+	MOVE	AC,%SV17
+	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH>
+DEFINE	DMVNMF	(L,A,B,C,D,KIEF,KIUF,KLEF,KLUF)	<
+;**KI10**
+;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES NOT SET OVERFLOW
+;OR CARRY FLAGS ON THE KI10.  FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
+;THEN,DMOVN IS EXECUTED.  NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
+;IF ANY OF THESE FLAGS ARE SET, THE TEST FAILS.
+
+;**KL10**
+;THIS MACRO VERIFIES THAT THE DMOVN INSTRUCTION DOES SET OVERFLOW
+;OR CARRY FLAGS ON THE KL10.  FIRST, OVFL AND CRY0,1 FLAGS ARE CLEARED;
+;THEN,DMOVN IS EXECUTED.  NEXT, OVFL AND CRY0,1 FLAGS ARE EXAMINED.
+;IF THE PROPER FLAGS ARE NOT SET, THE TEST FAILS.
+
+Q'L'0:	JFCL	17,.+1			;CLEAR OVFL AND CRY0,1 FLAGS
+	DMOVE	AC,[XWD A,B
+		    XWD C,D]		;SETUP INITIAL
+	DMOVNM	AC,TSTWD		;*DMOVNM TEST
+	JSP	AC,.+1			;READ FLAGS
+Q'L'1:	TLZ	AC,027777		;CLEAR EXTRA JUNK
+	TLNE	AC,USERF		;IN USER MODE ?
+	JRST	Q'L'4			;YES
+	SKIPE	KLFLG			;KL10 ?
+	JRST	Q'L'3			;YES
+;KI10 EXEC MODE
+	CAME	AC,[KIEF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF OVFL OR CRY0,1 FLG SET
+Q'L'2:	JUMPL	SAC,Q'L'0		;LOOP ON ERROR SWITCH
+	JRST	Q'L'6
+;KL10 EXEC MODE
+Q'L'3:	CAME	AC,[KLEF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF FLAGS NOT SET
+	JRST	Q'L'2
+;KL10/KI10 USER MODE
+Q'L'4:	SKIPE	KLFLG			;KL10 ?
+	JRST	Q'L'5			;YES
+;KI10 USER MODE
+	CAME	AC,[KIUF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF ANY FLAGS SET
+	JRST	Q'L'2
+;KL10 USER MODE
+Q'L'5:	CAME	AC,[KLUF,,Q'L'1]
+	ER13	AC,L'1			;FAIL IF FLAGS NOT SET
+	JRST	Q'L'2
+
+Q'L'6:	JRST	.+1>
+DEFINE	DFA	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+R'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFAD	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,R'T'00		;LOOP ON ERROR SWITCH>
+
+DEFINE	DFS	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+R'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFSB	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,R'T'00		;LOOP ON ERROR SWITCH>
+
+DEFINE	DFM	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+R'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFMP	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,R'T'00		;LOOP ON ERROR SWITCH>
+
+DEFINE	DFD	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+R'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFDV	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,R'T'00		;LOOP ON ERROR SWITCH>
+DEFINE	DFARP	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+	DMOVE	AC,[A,,B
+		C,,D]
+	DFAD	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T
+	JUMPL	AC+4,.-^D6		;LOOP ON ERROR SWITCH>
+DEFINE	SDFA	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+S'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFAD	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,S'T'00		;LOOP ON ERROR SWITCH>
+
+DEFINE	SDFS	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+S'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFSB	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,S'T'00		;LOOP ON ERROR SWITCH>
+
+DEFINE	SDFM	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+S'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFMP	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,S'T'00		;LOOP ON ERROR SWITCH>
+
+DEFINE	SDFMKL	(T,A,B,C,D,E,F,G,H,I,M,K,L,KL1,KL2,KL3,KL4)	<
+S'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFMP	AC,[E,,F
+		G,,H]
+	SKIPE	KLFLG
+	JRST	S'T'05
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+S'T'06:	JUMPL	AC+4,S'T'00		;LOOP ON ERROR SWITCH
+	JRST	S'T'07
+
+S'T'05:	CAME	AC,[KL1,,KL2]
+	ER3	AC,T'01
+	CAME	AC+1,[KL3,,KL4]
+	ER4	AC+1,T'01
+	JRST	S'T'06
+
+S'T'07:	JRST	.+1	>
+DEFINE	SDFD	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+S'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFDV	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+	JUMPL	AC+4,S'T'00		;LOOP ON ERROR SWITCH>
+
+DEFINE	SDFDKL	(T,A,B,C,D,E,F,G,H,I,M,K,L,KL1,KL2,KL3,KL4)	<
+S'T'00:	DMOVE	AC,[A,,B
+		C,,D]
+	DFDV	AC,[E,,F
+		G,,H]
+	SKIPE	KLFLG
+	JRST	S'T'05
+	CAME	AC,[I,,M]
+	ER3	AC,T'01
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T'01
+S'T'06:	JUMPL	AC+4,S'T'00		;LOOP ON ERROR SWITCH
+	JRST	S'T'07
+
+S'T'05:	CAME	AC,[KL1,,KL2]
+	ER3	AC,T'01
+	CAME	AC+1,[KL3,,KL4]
+	ER4	AC+1,T'01
+	JRST	S'T'06
+
+S'T'07:	JRST	.+1	>
+DEFINE	SDFARP	(T,A,B,C,D,E,F,G,H,I,M,K,L)	<
+	DMOVE	AC,[A,,B
+		C,,D]
+	DFAD	AC,[E,,F
+		G,,H]
+	CAME	AC,[I,,M]
+	ER3	AC,T
+	CAME	AC+1,[K,,L]
+	ER4	AC+1,T
+	JUMPL	AC+4,.-^D6		;LOOP ON ERROR SWITCH>
diff --git a/apps/pdp10/diags/klad/KLDDT.MAC.txt b/apps/pdp10/diags/klad/KLDDT.MAC.txt
new file mode 100644
index 000000000..3bf5d6ce2
--- /dev/null
+++ b/apps/pdp10/diags/klad/KLDDT.MAC.txt
@@ -0,0 +1,6773 @@
+;MAINDEC-10-KLDDT
+
+
+
+DECVER=012
+MCNVER=000
+
+
+TITLE	KLDDT	DECSYSTEM DIAGNOSTICS DDT, VERSION 0.12
+
+
+;RELEASED AS VERSION 0.12 MAY 5,1978
+;CORRECTED TOPS20 USER TERMINAL OPERATIONS (IF UNDER PA1050), MAY 5,1978
+;MODIFIED FOR APPROP MUUO/JSYS OPERATION, JUNE 20,1977
+;MODIFIED FROM  DDT, APRIL 6,1977
+;CHANGED TO ALLOW EXEC TO USE USER SYMBOL TABLE POINTERS
+;AND ALLOW $G TO START PROGRAM FROM .JBSA
+;KL10 EXEC MODE OPERATION CHANGED TO CONFORM TO DIAGNOSTICS PROCEDURES
+
+
+;COPYRIGHT 1974,1975,1976,1977
+;DIGITAL EQUIPMENT CORPORATION
+;MARLBORO, MASS. 01752
+
+;JOHN R. KIRCHOFF
+
+	LOC	137
+MCNVER,,DECVER
+
+NOSYM
+SALL
+
+FTEXEC==-1
+ABSDDT==10000,,0
+
+	LOC	441
+	JRST	DDT		;EPT DDT START ADDRESS
+SUBTTL	DEFINITIONS
+
+	COMMENT	\
+
+TABLE OF CONTENTS FOR DDT
+
+	DEFINE	DDT SYMBOLS
+	START	DDT
+	DDT	COMMAND PARSER
+	SYMBOL	TABLE LOGIC
+	TEXT	COMMANDS (" AND $")
+	REGISTER EXAMINATION LOGIC
+	MODE	CONTROL SWITCHES
+	PATCH	COMMAND  -- PATCH BEGIN
+	PATCH	COMMAND -- PATCH END
+	PAGE	TABLE CONTROL ($U)
+	GO	AND EXECUTE LOGIC
+	SINGLE	STEP EXECUTE LOGIC
+	ENTER	AND LEAVE DDT LOGIC
+	BREAK	POINT LOGIC
+	MEMORY	MANAGER SUBROUTINES
+	BINARY	TO SYMBOLIC CONVERSION
+	SEARCH	LOGIC
+	OUTPUT	SUBROUTINES
+	PUNCH	PAPER TAPE LOGIC
+	TELETYPE IO LOGIC
+	DDT	COMMAND FILE LOGIC
+	DISPATCH TABLE
+	FANCY	TERMINAL INPUT LOGIC
+	OP	DECODER
+	VARIABLE STORAGE
+	STORAGE	-- $X LOGIC AND PATCH COMMAND
+	STORAGE	-- BREAKPOINTS
+	STORAGE	-- SYMBOL TABLE LOGIC
+	STORAGE	-- SAVE AREAS FOR PREVIOUS CONTEXT
+	STORAGE	-- STATE VARIABLES
+	STORAGE	-- PUSH DOWN LIST
+\
+
+;DDT VERSION IDENTIFICATION
+
+$EDITN==177			;EDIT NUMBER
+$VERSN==37			;VERSION NUMBER
+%DDTVR==<$VERSN>B11+$EDITN	;COMPOSIT VERSION IDENT
+
+;SWITCHES FOR DDT FEATURES
+;FTEXEC		;EXEC MODE FACILITIES (ALSO RUNS IN USER MODE)
+;FTPTP		;PAPER TAPE FACILITIES (EXEC MODE ONLY)
+;FTFILE		;FILE DDT
+;FTYANK		;PAPER TAPE INPUT FACILITIES ($Y)
+;FTVMX		;BUILD DDT.VMX FOR TOPS10 VIRTUAL MEMORY
+;FTDEC20	;DEC20 FACILITIES
+;FTMON		;DEC20 MONITOR DDT
+;FTEDIT		;INCLUDE FANCY EDITING FEATURES WITH DEC20 EDDT
+;ABSDDT		;RELOCATABLE ASSEMBLY IF 0, ABSOLUTE ASSEMBLY
+				;WITH ORIGIN GIVEN BY B0-17 OTHERWISE
+
+	IFNDEF	ABSDDT,
+	IFNDEF	FTEXEC,
+	IFNDEF	FTPTP,
+	IFNDEF	FTFILE,
+	IFNDEF	FTYANK,
+	IFNDEF	FTVMX,
+	IFNDEF	FTDEC20,
+	IFNDEF	FTMON,
+	IFNDEF	FTEDIT,
+
+;NORMALIZE ALL SWITCH VALUES TO 0 OR -1 SO BOOLEAN EXPRESSIONS IN
+;CONDITIONALS WORK CORRECTLY.
+
+DEFINE ..N (SW)<
+	IRP	SW,<
+	IFN	SW,>>
+
+	..N 
+
+;	IFN	FTDEC20,<
+	SEARCH	MONSYM,MACSYM
+	OPDEF	CALL [040B8]
+	OPDEF	MRPAC [JSYS 772]	;>
+
+	IFE  FTFILE,
+
+EXTERN .JBREL,.JBSA,.JBHRL,.JBSYM,.JBFF,.JBHSM,.JBHNM,.JBUSY,.JBDA
+
+	IFE	FTDEC20,<
+	IFN	FTEXEC,<
+;	TITLE	EDDT -EXEC MODE DDT >
+	IFN	FTEXEC!FTFILE,<
+	XJBSYM==36
+	XJBUSY==32
+	XZLOW==40>
+
+	IFE	FTEXEC,<
+	IFE	FTFILE,<
+	TITLE	UDDT -USER MODE DDT >
+	IFN	FTFILE,<
+	TITLE	FILDDT -FILE DDT
+	CT.RES==5		;NUMBER OF PAGES TO KEEP IN CORE
+	MX.SIZ==^D1024		;MAX PAGES IN FILE
+	T30SYM==131>		;SPMON (10/30)
+	>			;END IFE FTEXEC
+
+ZLOW==140
+
+INTERNAL .JBVER,.JBDDT
+.JBDDT=74
+.JBVER=137
+	IFE	FTEXEC,<
+	LOC	.JBVER		;DO NOT SET  IF EXEC DDT(OK USER OR FILDDT)
+	%DDTVR			;PUT VERSION # IN .JBVER
+	>
+
+	IFE	FTFILE!FTVMX,<
+	LOC	.JBDDT
+	XWD	DDTEND,DDTX
+	>
+RELOC 0
+
+	IFE	FTVMX,,B53>>
+
+	OPDEF	PAGE. [CALLI 145]	;PAGING UUO
+	.GTUPM==100
+	>			;END IFE FTDEC20
+
+	IFN	FTEXEC,<
+	OPDEF	SKPUSR [SKIPL USRFLG]	;SKIP IN USER MODE
+	OPDEF	SKPEXC [SKIPGE USRFLG]	;SKIP IN EXEC MODE
+	OPDEF	SKPKA [SKIPG KAFLG]	;SKIP FOR KA10
+	OPDEF	SKPKI [SKIPE KAFLG]	;SKIP FOR KI10
+	OPDEF	SKPKL [SKIPL KAFLG]	;SKIP FOR KL10
+	OPDEF	SKPNKL [SKIPGE KAFLG]	;SKIP NOT KL10
+	>			;END IFN FTEXEC
+XLIST
+
+SUBTTL	MAKE TOPS20 DDT
+	IFN	FTDEC20,<
+;IN ADDITION TO DIFFERENT MONITOR CALLS AND PAGING CONVENTIONS,
+;THE FOLLOWING FUNCTIONAL DIFFERENCES EXIST UNDER FTDEC20:
+; 1. EVAL ALWAYS CALLED BEFORE OPEVAL - ALLOWS USER REDEFINITION
+;	OF BUILT-IN OPCODES.
+; 2. PRESERVE PREVIOUSLY SAVED ACS WHEN SWITCHING USER/EXEC MODE.
+;	DEC20 DUMP PROCEDURE ASSUMES CRASH ACS ARE SAVED IN EDDT.
+; 3. FORCE SAVE OF ACS ALWAYS WHEN ENTERING BREAKPOINT.  HELPFUL
+;	WHEN UNKNOWN BREAKPOINT ENCOUNTERED BECAUSE SET BY
+;	ANOTHER PROCESS OR LEFT OVER FROM ABORTED DDT.
+; 4. PRINT $ FOR EACH PC INCREMENT ON $X.
+; 5. TRY FOR FULL-WORD MATCH ON BINARY TO SYMBOLIC CONVERSIONS.
+;	NECESSARY FOR CORRECT JSYS MNEMONIC PRINTOUT.
+; 6. USE 1000 AS MAX SYMBOL OFFSET FOR RELATIVE LOCATION PRINTOUT.
+
+ZLOW==20			;LOWER LIMIT FOR $$Z
+
+	IFE	FTEXEC,<
+	IFE	FTMON,<
+
+	TITLE	UDDT		;DEC20 USER DDT
+	INTERN	PHDDT
+
+RUNLOC==770000			;RUNTIME LOCATION OF CODE
+VARLOC==776000			;RUNTIME LOCATION OF VARIABLES
+
+;ONCE-ONLY CODE TO BLT DDT TO RUNTIME LOCATION. RUN IMMEDIATELY
+;AFTER LOADING.
+
+BLTDDT:	MOVEI	1,.FHSLF
+	SETZB	2,3
+	SCVEC			;FLUSH PA1050 INFO
+	MOVE	2,[1,,DDT]
+	SEVEC			;SET PROPER ENTRY VECTOR
+	SETO	1,
+	MOVE	2,[.FHSLF,,700]
+	MOVE	3,[1B0+100]
+	PMAP			;CLEAR PAGES AROUND RUN LOCATION
+	MOVE	1,[PHDDT,,DDT]
+	BLT	1,DDT+DDTEND-PHDDT	;MOVE PROGRAM
+	MOVE	10,[PMAP]	;SETUP EXIT CODE IN ACS
+	MOVE	11,[HALTF]
+	SETO	1,		;SETUP TO CLEAR ALL PAGES
+	MOVE	2,[.FHSLF,,0]
+	MOVE	3,[1B0+700]
+	JRST	10		;CLEAR MAP AND EXIT
+
+	LIT
+	>			;END OF USER DDT ONCE ONLY CODE
+
+	IFN	FTMON,<		;MONITOR DDT ONCE ONLY CODE
+
+	TITLE	MDDT		;DEC20 MONITOR DDT
+	INTERN	MDDT,DDTSYM,DDTUSY
+
+	TWOSEG	400000
+MDDT=DDT
+DDTSYM=DDT+1
+DDTUSY=DDT+2			;PTR TO UNDEF SYMTAB
+VARLOC==774000			;PRIVATE STG AREA, 1 PAGE MAX
+	>			;END OF MDDT ONCE-ONLY CODE
+
+PHDDT:
+	IFE	FTMON,<
+	PHASE	RUNLOC>		;PHASE IF USER VERSION ONLY
+	>			;END IFE FTEXEC
+	IFN	FTEXEC,<
+
+	TITLE	EDDT		;DEC20 EXEC DDT
+	INTERN	DDT,DDTX>
+	>			;END IFN FTDEC20
+LIST
+
+SUBTTL	DEFINE DDT SYMBOLS
+	IFN	FTFILE,<
+CM==2				;DEFINE SOFTWARE CHANS.
+DP==3
+	>
+;DEFINE ACCUMULATORS
+
+F=0				;FLAGS
+P=17				;PUSH DOWN (KLDDT)
+R=				;POINTERS TO TABLES, CORE, ETC.
+S=
+W=				;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER
+T=5				;TRANSFER DATA
+W1=6
+W2=7
+SCH=10				;MODE CONTROL SWITCH FOR OUTPUT
+AR=11				;MODE CONTROL SWITCH FOR OUTPUT
+ODF=12				;MODE CONTROL SWITCH FOR OUTPUT - CURRENT RADIX
+TT=13				;TEMPORARY
+TT1=14				;TEMPORARY
+TT2=15				;TEMPORARY (USED FOR PTR INPUT ONLY)
+				; AND FOR DTE COMMUNICATIONS
+
+;DEFINE PUSH DOWN LENGTH
+LPDL==50			;MAX LENGTH PUSH DOWN LIST
+
+NXMKA==1B23			;NON-EX-MEM FLAG FOR KA10
+NXMKI==1B29			;NON-EX-MEM FLAG FOR KI10
+NXMKL==1B25			;NON-EX-MEM FLAG FOR KL10
+
+NBP==^D8			;NUMBER OF BREAKPOINTS
+
+	IFN	FTDEC20,<
+LPDL==100
+P=17>				;OVERRIDES P=1 ABOVE
+T1=1
+T2=2
+T3=3
+
+TRPENB==1B22			;SAYS PAGING TRAPS ENABLED
+
+;*** FLAGS IN F ***
+
+FEF==   1B0			;"E" FLAG
+COMF==  1B1			;COMMA TYPED
+TIF==   1B2			;TRUNCATE TO 18 BITS - SET BY SPACE OR COMMA
+DVF==   1B3			;DIVIDE
+FPF==   1B4			;"." TYPED
+CCF==   1B5			;"$$" TYPED
+STF==   1B6			;SUPPRESS TYPEOUT
+SAF==   1B7			;RIGHT ANGLEBRACKET TYPED
+FAF==   1B8			;LEFT ANGLEBRACKET TYPED
+;==     1B9			;NOT USED
+MLF==   1B10			;MULTIPLY
+PTF==   1B11			;ARITHMETIC OPERATOR TYPED
+CF==    1B12			;"$" TYPED
+LTF==   1B13			;LETTER TYPED IN CURRENT SYLLABLE
+ROF==   1B14			;REGISTER OPEN
+SF==    1B15			;SYLLABLE
+MF==    1B16			;MINUS SIGN TYPED
+QF==    1B17			;QUANTITY TYPED IN TO WORD ASSEMBLER
+
+; 18-21 NOT USED
+MDLCLF==1B22			;MULT DEF LOCAL SYMBOL (EVAL)
+PNAMEF==1B23			;PROGRAM NAME SEEN IN SYM TABLE SEARCH
+POWF==  1B24			;ARGUMENT FOR EXPONENT COMING
+LF1==   1B25			;OUTPUT ONE REGISTER IN FORCED MODE
+;==     1B26			;NOT USED
+CF1==   1B27			;OUTPUT ONE REGISTER AS CONSTANT
+NAF==   1B28			;NEGATIVE ADDRESSES PERMISSABLE
+; 29-32 NOT USED
+OUTF==  1B33			;OUTPUT
+ITF==   1B34			;INSTRUCTION TYPED
+Q2F==   1B35			;NUMBER TYPED AFTER $
+
+;DEFINE SYMBOL TABLE SYMBOL TYPES
+GLOBL==04B5			;GLOBAL SYMBOL
+LOCL==10B5
+PNAME==74B5			;PROGRAM NAME
+DELI==20B5			;DELETE INPUT
+DELO==40B5			;DELETE OUTPUT
+
+;DEFINE UNDEFINED SYMBOL TABLE (.JBUSY) TYPES
+
+STADD==1B0			;IF 1, THEN ADDITIVE REQUEST
+STLH==1B1			;IF 1, THEN REQUEST FOR LEFT HALF
+STNEG==1B4			;IF 1, THEN NEGATIVE REQUEST
+
+	IFE	FTDEC20,<
+	IFE	FTFILE,<
+	INTERN	DDTEND		;DECLARE END OF DDT AS INTERNAL, FOR
+				; USER TO SEE (USER MODE) AND ONCE ONLY CODE
+				; (MONITOR)
+	IFE	FTEXEC,< ENTRY DDT>
+	IFN	FTEXEC,<
+	INTERNAL DDT
+	ENTRY	DDTX>>		;NEEDED BY MONITOR
+
+	IFN	FTEXEC!FTFILE,<
+
+DEFINE OD(A,B),<
+	A=:>
+
+;KL10 "FUNNY" I/O INSTRUCTIONS
+OD APRID,700000			;READ APR ID
+OD WRFIL,700100			;WRITE CACHE REFIL ALGORITHM
+OD RDERA,700400			;READ ERROR ADDRESS REGISTER
+OD SBDIAG,700500		;S-BUS DIAG
+OD RDPERF,702000		;READ PERF. COUNTER
+OD RDTIME,702040		;READ TIME OF DAY
+OD RDMACC,702400		;READ MBOX ACCOUNTING
+OD RDEACC,702440		;READ EBOX ACCOUNTING
+OD WRPAE,702100			;WRITE PERF. ANALYSIS ENABLES
+OD SWPIA,701440			;SWEEP INVALIDATE ALL
+OD SWPVA,701500			; "   VALIDATE ALL
+OD SWPUA,701540			; "   UNLOAD ALL
+OD SWPIO,701640			; "   INVALIDATE 1 PAGE
+OD SWPVO,701700			; "   VALIDATE 1 PAGE
+OD SWPUO,701740			; "   UNLOAD 1 PAGE
+	>			;END IFN FTEXEC!FTFILE
+XLIST
+
+SUBTTL	WRITE DDT.VMX
+	IFN	FTVMX,<
+	IFN	FTFILE,<
+	PRINTX	?CAN NOT BUILD BOTH VMDDT AND FILDDT
+	END
+	>
+	IFN	FTEXEC,<
+	PRINTX	%BUILDING BOTH EDDT AND VMDDT
+	>
+
+	IFE	ABSDDT&<-1B17>,<
+	PRINTX	%VMDDT WITH AN OFFSET OF ZERO REQUESTED.
+	PRINTX	% OFFSET OF 700000 WILL BE USED
+	ABSDDT==ABSDDT!7B2
+	>
+
+DEFINE MERR (TXT)<
+	JRST	[OUTSTR [ASCIZ "
+? TXT
+"]
+		 EXIT]
+	>
+
+MAKDDT:	RESET
+	INIT	1,17
+	SIXBIT	/DSK/
+	0
+	 MERR CAN NOT INIT DEVICE DSK:
+	ENTER	1,DDTVMX
+	 MERR CAN NOT ENTER DSK:DDT.VMX
+	OUT	1,IOWD
+	SKIPA
+	 MERR OUTPUT ERROR WRITING DSK:DDT.VMX
+	CLOSE	1,
+	STATZ	1,740000
+	 MERR OUTPUT ERROR CLOSING DSK:DDT.VMX
+	OUTSTR	[ASCIZ "
+DSK:DDT.VMX WRITTEN
+"]
+	EXIT
+
+DDTVMX:	SIXBIT	/DDT/
+	SIXBIT	/VMX/
+	EXP	0,0
+IOWD:	IOWD	DDTEND-DDT+1,DDTORG
+	EXP	0
+	XLIST			;MAKDDT LITERALS
+	LIT
+	LIST
+
+DDTORG:	PHASE	ABSDDT_<-^D18>
+	>
+	>			;END IFE FTDEC20
+LIST
+
+SUBTTL	START DDT
+
+DDTOFS:				;OFFSET BASE FOR DISPATCH TABLES
+
+	IFE	FTFILE,<
+DDTX:
+	IFN	FTYANK,<
+	SETZM	COMAND		;INDICATE NO COMMAND FILE IF STARTING BY DDT COMMAND
+	>
+	REPEAT	0,<
+DDT: IFN FTDEC20&<^-FTEXEC>,<
+	JRST	.+2		;SKIP SYMTAB PTRS
+	Z	.DDSYM
+	JUMP	.DDUSY
+	MOVEM	T,SETRT1	;SAVE AN AC
+	MOVE	T,BP1+1
+	CAMN	T,[JSA T,BCOM]	;VARIABLES AREA INITIALIZED?
+	JRST	DDTIN1		;YES
+	MOVE	T,[PHVAR,,VARLOC]	;NO, DO IT
+	BLT	T,VAREND-1
+DDTIN1:	MOVE	T,SETRT1	;RESTORE SCRATCH AC
+	>			;END IFN FTDEC20...
+>
+DDT:	JRST	.+2
+	ASCII	/DDT/
+	JSR	SAVE
+	 PUSHJ P,REMOVB
+	XLIST
+	REPEAT	0,<
+	IFN	FTEXEC!FTDEC20,<
+	MOVE	W1,[ASCII /DDT/]
+	IFN	FTEXEC,<
+	SKPUSR
+	MOVE	W1,[ASCII /EDDT/]
+	>
+IFN FTMON,<
+	MOVE	W1,[ASCIZ/MDDT/]	;IF TOPS-20 MDDT, SAY "MDDT"
+	>
+	PUSHJ	P,TEXT2		;TYPE MESSAGE SAYING WHICH DDT
+	>			;END FTEXEC!FTDEC20
+	>			;END FTFILE
+
+	IFN	FTVMX,<		;IF THIS IS VMDDT
+	MOVE	W1,[ASCII "VMDDT"]	;PREPARE TO SAY VMDDT
+	PUSHJ	P,TEXT2		;PRINT THE MESSAGE
+	>			;END VMDDT SWITCH
+	>
+LIST
+	MOVE	W1,DDT+1
+	PUSHJ	P,TEXT2		;TYPE DDT MESSAGE
+XLIST
+
+SUBTTL	FILDDT -- COMMAND SCANNER
+	IFN	FTFILE,<
+DDT:	CALLI
+	SETZM	COMAND		;CLEAR $Y FLAG
+	SETZM	FWAZER		;CLEAR BLOCK OF STORAGE
+	MOVE	T,[FWAZER,,FWAZER+1]
+	BLT	T,LWAZER
+	MOVE	P,[IOWD LPDL,PDL]	;PRESET PUSH DOWN LIST
+	MOVSI	T,'DSK'		;PRESET DEVICE
+	MOVEM	T,FILDEV+1
+	OUTSTR	[ASCIZ /File: /]
+	SETOM	DEPNCT		;PRESET DEPOSIT ERROR COUNT TO -1
+	PUSHJ	P,TINCH
+	 JRST FDINO		;IN CASE NULL LINE TYPED IN
+	SETOM	CRASHS		;PRESET FOR FILE MODE
+	MOVEI	TT,0		;CLEAR NAME
+	MOVE	TT1,[POINT 6,TT]	;PRESET ACCUMULATOR
+
+FDILP:	CAIN	T,"/"		;SEE IF SWITCH
+	JRST	FDISW		;YES--GO DO IT
+	CAIN	T,":"		;SEE IF DEVICE
+	JRST	[JUMPE TT,FDIERR
+		 MOVEM TT,FILDEV+1
+		 JRST  FDILNP]
+	CAIN	T,"."		;SEE IF EXTENSION FLAGGED
+	JRST	[MOVEM TT,FILBLK
+		 SETOM FDIDOT
+		 JRST  FDILNP]
+	CAIE	T,"["		;SEE IF PPN FLAGGED
+	JRST	FDILET		;NO--MUST BE IN NAME
+	PUSHJ	P,FDIOCT	;YES--GET PROJECT
+	JUMPLE	TT2,FDIERR	;DISALLOW JUNK
+	CAIG	TT2,377777	;DISALLOW INVALID NUMBERS
+	CAIE	T,","		;VERIFY
+	JRST	FDIERR		;BOMB ERROR
+	HRLZM	TT2,FILBLK+3	;STORE
+	PUSHJ	P,FDIOCT	;GET PROGRAMMER
+	JUMPLE	TT2,FDIERR	;DISALLOW JUNK
+	CAILE	TT2,-1		;DISALLOW INVALID
+	JRST	FDIERR		;  NUMBERS
+	HRRM	TT2,FILBLK+3	;STORE
+	JUMPE	T,FDILDP	;EXIT IF DONE
+	CAIE	T,"]"		;SEE IF END OF PPN
+	JRST	FDIERR		;NO--BOMB OUT
+	JRST	FDILOP		;GET MORE WORDS
+
+;STILL FTFILE
+
+FDIOCT:	MOVEI	TT2,0		;CLEAR ANSWER
+FDIOC1:	PUSHJ	P,TINCH		;GET CHAR
+	 POPJ P,		;IF DONE
+	TLNE	TT2,(7B2)	;IF OVERFLOWING,
+	POPJ	P,		;  GIVE UP
+	CAIL	T,"0"		;SEE IF
+	CAILE	T,"7"		;  OCTAL
+	POPJ	P,		;NO--GIVE UP
+	LSH	TT2,3		;YES--MULT AC
+	ADDI	TT2,-"0"(T)	;INCREMENT
+	JRST	FDIOC1		;LOOP
+
+FDILET:	CAIL	T,"0"		;SEE IF ALPHA-NUM
+	CAILE	T,"Z"
+	JRST	FDIERR
+	CAILE	T,"9"
+	CAIL	T,"A"
+	JRST	.+2
+	JRST	FDIERR
+	SUBI	T,40		;YES--MAKE SIXBIT
+	TLNE	TT1,(77B5)	;DON'T OVERFLOW
+	IDPB	T,TT1		;STORE
+	JRST	FDILOP		;AND LOOP
+
+;STILL FTFILE
+
+FDIERF:	OUTSTR	[ASCIZ /? Can't get at file
+/]
+	JRST	FDIERE
+
+FDIHLP:	ASCIZ	\
+Type  dev:file.ext[p,pn]/switches
+
+/M  examine monitor
+/P  patch monitor or file
+	type ^Z to exit from file patching
+/S  reload symbol table from file
+
+	IF	no spec, examine monitor
+file defaults:  if /P or /S:  DSK:SYSTEM.XPN
+		else:  DSK:CRASH.XPN
+
+use $Y to read DSK:FILDDT.DDT and write LPT:FILDDT.LST
+
+\
+
+BADEXE:	OUTSTR	[ASCIZ "
+?BAD DIRECTORY IN .EXE FILE
+"]
+	JRST	FDIERE
+
+;STILL FTFILE
+
+TINCH:	INCHWL	T		;GET NEXT CHAR
+	CAIE	T,177
+	CAIN	T,15
+	JRST	TINCH
+	CAIE	T,40
+	CAIN	T,11
+	JRST	TINCH
+	CAIE	T,3
+	CAIN	T,32
+	JRST	[RESET
+		 EXIT 1,
+		 JRST DDT]
+	JUMPE	T,TINCH
+	CAIGE	T,175
+	CAIGE	T,40
+	JRST	[MOVEI T,0
+		 POPJ  P,]
+	CAIL	T,140
+	SUBI	T,40
+	JRST	CPOPJ1
+
+
+FDISW:	PUSHJ	P,TINCH		;GET SWITCH
+	 JRST FDIERR
+	CAIN	T,"H"		;HELP
+	JRST	[OUTSTR FDIHLP
+		 JRST   FDIERE]
+	CAIN	T,"P"		;PATCH
+	JRST	[SETOM PATCHS
+		 JRST FDILOP]
+	CAIN	T,"S"		;LOAD SYMBOLS
+	JRST	[SETOM SYMGET
+		 JRST  FDILOP]
+	CAIN	T,"M"		;MONITOR
+	JRST	[SETZM CRASHS
+		 JRST  FDILOP]
+				;FALL INTO ERROR
+
+;STILL FTFILE
+
+				;FALL HERE FROM ABOVE
+FDIERR:	OUTSTR	[ASCIZ \? Command error -- type /H for help
+\]
+
+FDIERE:	CLRBFI			;CLEAR ANY TYPE AHEAD
+	JRST	DDT		;AND START OVER
+
+
+FDILNP:	MOVEI	TT,0		;CLEAR WORD
+	MOVE	TT1,[POINT 6,TT]	;RESET POINTER
+FDILOP:	PUSHJ	P,TINCH		;GET NEXT CHAR
+	 SKIPA
+	JRST	FDILP		;LOOP BACK TO PROCESS IT
+
+FDILDP:	SKIPE	TT		;ALL DONE--SEE IF FILE NAME ASSEMBLED
+	JRST	[SKIPE FDIDOT
+		 HLLZM TT,FILBLK+1
+		 SKIPN FDIDOT
+		 MOVEM TT,FILBLK
+		 JRST  .+1]
+
+FDINO:	SKIPE	PATCHS		;SEE IF /P
+	SKIPN	CRASHS		;AND NOT /M
+	JRST	.+2		;NO
+	SETOM	SYMGET		;YES--SET /S
+	MOVEI	T,17		;PRESET I/O MODE
+	MOVEM	T,FILDEV
+	MOVE	T,['CRASH ']
+	SKIPE	SYMGET		;SEE IF /S OR /P
+	MOVE	T,['SYSTEM']
+	SKIPN	FILBLK		;PRESET FILE NAME
+	MOVEM	T,FILBLK
+	MOVSI	T,'XPN'		;AND FILE EXT
+	SKIPN	FDIDOT
+	HLLZM	T,FILBLK+1
+
+;STILL FTFILE
+
+	SKIPN	SYMGET		;SEE IF /S
+	SKIPE	CRASHS		;SEE IF /M
+	JRST	.+2		;/S OR -/M
+	JRST	FDINOT		;PROCEED IF NOT
+
+	OPEN	1,FILDEV	;YES--OPEN FILE
+	 JRST FDIERF
+	PUSH	P,FILBLK+3	;SAVE PPN
+	LOOKUP	1,FILBLK	;LOOK IT UP
+	 JRST	[HLRZ T,FILBLK+1
+		 CAIE T,'XPN'
+		 JRST FDIERF
+		 MOVSI T,'EXE'
+		 MOVEM T,FILBLK+1
+		 MOVE T,(P)
+		 MOVEM T,FILBLK+3
+		 LOOKUP 1,FILBLK
+		  JRST FDIERF
+		 JRST .+1]
+	HLRE	T,FILBLK+3	;GET LENGTH
+	SKIPGE	T
+	MOVNS	T
+	SKIPL	FILBLK+3
+	IMULI	T,^D128
+	MOVEM	T,MONSIZ	;STORE AS WORDS
+	POP	P,FILBLK+3	;RESTORE PPN
+	SKIPE	PATCHS		;SEE IF PATCHING
+	SKIPN	CRASHS		;YES--SEE IF FILE
+	JRST	FDINOE		;NO--SKIP ENTER
+	SETZM	FILBLK+2	;CLEAR E+2
+	HLLZS	FILBLK+1	;CLEAR RH(E+1)
+	ENTER	1,FILBLK	;/P AND -/M
+	 JRST FDIERF
+FDINOE:	USETI	1,1		;POSITION TO START
+	INPUT	1,[IOWD 2003,WIND0
+		   0]		;READ DIRECTORY
+	STATZ	1,740000	;CHECK FOR ERRORS
+	 JRST	[OUTSTR [ASCIZ \? I/O error\]
+		 HALT   .-3]
+	HLRZ	T,WIND0		;GET FIRST WORD
+	CAIE	T,1776		;IS THIS IN .EXE FORMAT?
+	JRST	FDIXPN		;NO--SEE IF .XPN FORMAT
+
+SUBTTL	FILDDT -- PROCESS .EXE FILE
+
+;FILE IS IN .EXE FORMAT -- PROCESS DIRECTORY
+	HRRZ	W1,WIND0	;GET WORD COUNT
+	TRZN	W1,1		;IS WORD COUNT ODD?
+	JRST	BADEXE		;NO--SOMETHING IS WRONG
+	LSH	W1,-1		;CONVERT TO # OF ENTRIES
+	MOVEI	W2,WIND0+1	;FIRST ENTRY
+FDIXL0:	HRRZ	TT1,1(W2)	;GET PROCESS PAGE NUMBER
+	CAIL	TT1,MX.SIZ	;OUT OF RANGE
+	JRST	BIGEXE		;YES--FILE IS BIG
+	ADDI	TT1,PAGTBL	;FIRST PAGTBL SLOT
+	MOVE	TT2,(W2)	;GET ENTRY
+	LDB	TT,[POINT 9,1(W2),8]	;GET COUNT
+FDIXL1:	TLNN	TT2,1777	;JUNK IN LH
+	CAIL	TT1,PAGTBL+MX.SIZ	;IN TABLE?
+	JRST	BADEXE		;BAD DIRECTORY
+	MOVEM	TT2,(TT1)	;STORE IN PAGTBL
+	TRNN	TT2,3777	;ALLOCATED BUT ZERO?
+	SETZM	(TT1)		;YES--GIVE A ? ON FETCH
+	ADDI	TT1,1		;INCREMENT POINTERS
+	TRNE	TT2,3777	;DO NOT CHANGE ALLOCATED BUT
+				; ZERO TO PAGE 1
+	ADDI	TT2,1		; ..
+	SOJGE	TT,FDIXL1	;LOOP OVER THIS ENTRY
+	ADDI	W2,2		;STEP TO NEXT ENTRY
+	SOJG	W1,FDIXL0	;LOOP OVER ENTRE DIRECTORY
+	JRST	FDISET
+FDIXPN:	SETOM	XPNFMT		;FLAG AS .XPN FORMAT
+	SKIPE	WIND0		;IN .XPN FORMAT
+	JRST	[OUTSTR [ASCIZ /% Not in .XPN format
+/]
+		 SETZM SYMGET
+		 JRST    .+1]
+	MOVE	T,MONSIZ	;SIZE OF FILE
+	ADDI	T,777		;ROUND UP
+	LSH	T,-9		;CONVERT TO PAGES
+	CAIL	T,MX.SIZ	;TOO BIG
+	MOVEI	T,MX.SIZ-1	;YES--ROUND DOWN
+FDIXPL:	TLO	T,(1B2)		;SET WRITEABLE BIT
+	MOVEM	T,PAGTBL(T)	;STORE POINTER
+	TLZ	T,-1		;CLEAR FLAGS
+	SOJGE	T,FDIXPL	;LOOP OVER WHOLE FILE
+
+SUBTTL	FILDDT -- SETUP SYMBOLS
+
+;PAGTBL IS SETUP MOVE AC'S (IF ARROUND) AND START DDT
+FDISET:	SKIPE	SYMGET		;SEE IF /S
+	PUSHJ	P,SYMFIX	;YES--GO GET THEM
+	SKIPE	CRASHS		;ARE WE LOOKING AT A CRASH
+	SKIPE	PATCHS		; AND NOT PATCHING?
+	JRST	FDIST1		;NO--CONTINUE
+	SKIPE	SYMGET		;GETTING SYMBOLS
+	JRST	FDIST1		;YES--LEAVE AC'S WHERE THEY ARE
+	MOVE	T,[RADIX50 0,CRSHAC]
+	MOVEM	T,SYM		;LOOKUP CRSHAC
+	PUSHJ	P,EVAL		; IN SYMBOL TABLE
+	 JRST FDIST1		;CAN NOT FIND IT
+	MOVSI	W1,-20		;NUMBER OF AC'S
+	HRRI	R,(T)		;WHERE THE AC'S ARE
+FDIGAC:	PUSHJ	P,FETCH		;GET THE AC
+	 JRST FDIST1		;CAN NOT FETCH
+	MOVEM	T,AC0(W1)	;STORE AC
+	ADDI	R,1		;POINT TO NEXT CELL
+	AOBJN	W1,FDIGAC	;GET THE AC'S
+	OUTSTR	[ASCIZ "[ACS COPIED FROM CRSHAC TO 0-17]
+"]
+
+FDIST1:	SKIPN	CRASHS		;SEE IF REASON TO HOLD OPEN
+	RELEAS	1,		;NO--CLEAR FILE
+	SKIPE	SYMGET		;SEE IF /S
+	SKIPE	PATCHS		;SEE IF /P
+	JRST	FDINOT		;CONTINUE IF /P OR -/S
+	SKIPE	CRASHS		;SEE IF -/M
+	JRST	DDT		;IF /S AND NOT /P OR /M, START OVER
+
+FDINOT:	JRST	DD1		;GO START DDT
+
+BIGEXE:	OUTSTR	[ASCIZ "?TOO MANY PAGES IN .EXE FILE
+?REBUILD FILDDT WITH MX.SIZ SET LARGER
+"]
+	JRST	FDIERE		;PUNT
+
+
+;STILL FTFILE
+
+EXTERN .JBREN,.JBCOR
+
+SYMFIX:	PUSHJ	P,SYMPTR	;GO GET SYMBOL POINTER IN T AND TT
+	MOVEM	TT,FIUPTR	;SAVE JOBUSY
+	HLRES	TT,TT
+	MOVMS	TT,TT
+	MOVEM	T,FISPTR	;SAVE IT
+	HLRES	T,T
+	MOVMS	T,T		;LENGTH OF SYMBOL TABLE
+	SKIPN	W,SAVEFF	;PICK UP START OF SYMBOL TABLE
+	MOVE	W,.JBFF		;GET FROM LOADER IF FIRST TIME
+	MOVEM	W,SAVEFF	;SAVE FOR FUTURE PASSES
+	ADDI	W,200		;LEAVE SPACE FOR EXTRA SYMBOL DEFNS.
+	HRRZ	W1,W		;SAVE LOC FOR COPY
+	ADD	W,T		;ADD TABLE LENGTH
+	ADD	W,TT		;INCLUDE USY TABLE
+	HRRZM	W,.JBFF		;UPDATE MONITOR TO END FOR ITS BUFFER
+	HRLM	W,.JBSA		; ALLOCATION MECHANISMS
+	HRLM	W,.JBCOR	;INDICATE SYMBOLS FOR SAVE
+	CALLI	W,11		;GET CORE
+	 JRST	[OUTSTR [ASCIZ /? Not enough core
+/]
+		 JRST   DDT]
+
+	MOVE	R,FIUPTR	;GET USY POINTER
+	JUMPGE	R,SYMCPY	;SKIP IF NONE
+	HRRM	W1,FIUPTR
+UCOPY:	PUSHJ	P,FETCH
+	 JRST ERR
+	MOVEM	T,(W1)
+	AOS	W1
+	AOBJN	R,UCOPY
+
+SYMCPY:	MOVE	R,FISPTR	;WHEREABOUTS OF MONITOR SYMBOLS
+	HRRM	W1,FISPTR	;NOW POINT TO FILDDT SYMBOLS
+	JUMPGE	R,CPOPJ		;RETURN IF NO TABLE
+TCOPY:	PUSHJ	P,FETCH		;GET A WORD
+	 JRST ERR
+	MOVEM	T,0(W1)		;STASH IT
+	AOS	W1
+	AOBJN	R,TCOPY
+	POPJ	P,		;RETURN TO CALLER
+
+;STILL FTFILE
+
+REPEAT 0,<
+THE MONITOR CAN BE LOADED IN ANY OF THREE WAYS(IN ORDER OF PREFERENCE):
+	1. UNDER TIME SHARING WITH REGULAR LOADER AND COMMON
+	2. UNDER SPECIAL 10/30 MONITOR(SPMON) WITH REGULAR 10/30 LOADER & COMMON
+	3. UNDER SPECIAL 10/30 MONITOR(SPMON) WITH BUILD
+
+THE 3 WAYS LEAVE XJBSYM(36),.JBSYM(116) & T30SYM(131) IN DIFFERENT STATES:
+
+	XJBSYM          .JBSYM          T30SYM
+
+	1.  JUNK            S.T.PTR         JUNK
+	2.  JUNK            JUNK(NON-NEG)   S.T.PTR
+	3.  S.T.PTR         S.T.PTR         JUNK
+
+ALSO, MORE LIKELY, IS THAT EDDT HAS ALREADY RUN ONCE:
+	S.T.PTR		OLD S.T.PTR JUNK
+	>
+
+
+SYMPTR:	MOVSI	S,-LN.TRY	;PRESET TABLE FOR TRIES AT PTRS
+SYMPT1:	HLRZ	R,PTRTRY(S)	;GET USY LOCATION
+	MOVEI	T,0		;(IN CASE SKIP)
+	JUMPE	R,SYMPT2	;JUMP IF NONE
+	PUSHJ	P,FETCH		;GET IT
+	 JRST ERR
+SYMPT2:	MOVE	TT,T		;SAVE AS ANSWER
+	HRRZ	R,PTRTRY(S)	;GET SYM LOCATION
+	PUSHJ	P,FETCH		;GET POINTER
+	 JRST ERR
+	JUMPL	T,SYMPT3	;IF GOOD, CONTINUE
+	AOBJN	S,SYMPT1	;ELSE LOOP
+SYMPT3:	MOVE	S,PTRTRY(S)	;GOOD--PICK UP LOCATIONS
+	JUMPGE	TT,SYMPT4	;MAKE SURE USY TABLE IS OK
+	HLRE	W,TT		;  BY COMPARING
+	MOVMS	W		;  ITS END
+	ADDI	W,(TT)		;  WITH START OF SYM
+	CAIE	W,(T)		;IF EQUAL, OK
+SYMPT4:	MOVEI	TT,0		;NO--CLEAR USY POINTER
+	POPJ	P,		;RETURN
+
+PTRTRY:	XJBUSY,,XJBSYM		;IN CASE EDDT HAS RUN
+	.JBUSY,,.JBSYM		;REGULAR LOADER RAN LAST
+	0,,T30SYM		;10/30 LOADER
+	XJBUSY,,XJBSYM		;BUILD OR JUNK
+LN.TRY==.-PTRTRY
+
+	>			;END FTFILE
+LIST
+
+SUBTTL	DDT COMMAND PARSER
+
+DD1:	PUSHJ	P,CRF
+DD1.5:	TLZ	F,(ROF)		;CLOSE ANY OPEN REGISTER
+	MOVE	T,[XWD SCHM,SCH]
+	BLT	T,ODF		;LOAD ACS
+	MOVS	T,[SVBTS,,PSVBTS]
+	BLT	T,SVBTS+2
+DD2:	CLEARM	PRNC		;PARENTHESES COUNT
+	MOVE	P,[IOWD LPDL,PDL]
+LIS:	SETZM	WAKALL		;SET WAKEUP SET TO PUNCT AND CTRLS
+	IFN	FTDEC20,<
+	MOVEI	R,.JBSYM	;VALIDATE JOB DATA AREA - CHECK .JBSYM
+	PUSHJ	P,FETCH
+	 SETZ T,		;CAN'T REF PAGE 0, NO JOBDAT
+	SKIPL	T		;VALID SYMTAB PTR?
+	SETZM	JDTFLG#>		;NO, NOTE NO JOBDAT
+	SKIPGE	R,@USYMP	;GET UND SYM PTR, OK?
+	PUSHJ	P,FETCH		;MAYBE, SEE IF CAN REFERENCE IT
+	 SETZM @USYMP		;NO GOOD, FLUSH IT
+	MOVE	T,@USYMP	;GET UNDEF SYMBOL POINTER
+	JUMPL	T,LIS0B		;IF POINTER OK, TRANSFER
+	SKIPGE	T,@SYMP		;IF POINTER NOT OK, USE .JBSYM ADR
+	JRST	LIS0A		; SO LONG AS IT IS NEGATIVE
+	IFE	FTFILE,<
+	MOVEI	R,.JBHSM	;IF LO ADR NOT OK, TRY HIGH
+	IFN	FTEXEC,	; UNLESS IN EXEC MODE
+	PUSHJ	P,HFETCH>	;GET HIGH SYM TABLE POINTER
+	 MOVEI T,0		;IT DOESN'T EXIST
+	JUMPG	T,.-1		;IF POINTER .G. 0, GIVE 0 RESULT
+LIS0A:	HRRZS	T		;USE ADR OF SYM TABLE TO INIT
+	MOVEM	T,@USYMP	;  UNDEFINED SYM TABLE POINTER
+LIS0B:	MOVEM	T,ESTUT		;INIT UNDEFINED SYM ASSEMBLER
+	TLZ	F,(-1B17-ROF-STF)	;CLEAR FLAGS EXCEPT ROF, STF
+	TRZ	F,LF1+CF1+ITF+Q2F	;CLEAR FLAGS
+LIS0:	TLZ	F,(-1B17-ROF-STF-FAF-SAF)	;CLEAR FLAGS EXCEPT ...
+	TRZ	F,NAF		; ..
+	SETZM	WRD
+LIS1:	SETZM	FRASE
+LIS2:	MOVEI	T,1
+	MOVEM	T,FRASE1
+	TLZ	F,(MLF+DVF)
+L1:	TLZ	F,(CF+CCF+SF+FPF)	;TURN OFF CONTROL, SYL, PERIOD FLAG
+L1A:	SETZM	SYL
+L1RPR:	SETZM	SYM
+	MOVEI	T,6
+	MOVEM	T,TEM		;INIT SYMBOL COUNTER
+	MOVE	T,[POINT 7,TXT]
+	MOVEM	T,CHP		;SETUP FOR OPEVAL SYMBOL
+	SETZM	DEN
+	SETZM	WRD2
+
+;CONTINUED ON NEXT PAGE
+
+L2:	PUSHJ	P,TIN		;PICK UP CHARACTER
+	CAIL	T,"A"+40	;LOWER CASE A
+	CAILE	T,"Z"+40	;LOWER CASE Z
+	JRST	.+2
+	TRC	T,40		;CHANGE LOWER CASE TO UPPER CASE
+	TLNE	F,(CF)		;CONTROL FLAG
+	JRST	L21
+	CAIG	T,"Z"		;Z
+	CAIGE	T,"A"		;A
+	JRST	.+2
+	JRST	LET
+L21:	MOVE	R,T
+	CAILE	T,137		;DISPATCH TABLE HAS ENTRIES ONLY .LE. 137
+	JRST	ERR
+	IDIVI	R,3		;REMAINDER GIVES COLUMN, QUOTIENT GIVES ROW
+	LDB	W,BDISP(R+1)	;GET 12 BIT ADDRESS FROM DISPATCH TABLE
+	CAIGE	W,MULT-DDTOFS	;FIRST EVAL ROUTINE
+	JRST	DDTOFS(W)
+	MOVE	T,SYL
+	TLZN	F,(LTF)
+	JRST	POWER
+	CAIN	W,SPACE-DDTOFS	;IS TERMINATOR A SPACE?
+	SKIPE	WRD		;IS CONSTRUCTED WORD SO FAR ZERO?
+	SKIPA	T,[OPEVAL,,EVAL]	;SEARCH EVAL 1ST IFF: -SPACE .OR. (WRD).NE.0
+	MOVS	T,[OPEVAL,,EVAL]	;SEARCH OPEVAL 1ST IFF: SPACE .AND. (WRD)=0
+	MOVEM	T,SYMORD	;SAVE SYMBOL TABLE SEARCH ORDER
+	JRST	L213
+
+L212:	HLRZS	T,SYMORD	;GET ADDRESS OF THE OTHER LOOKUP ROUTINE
+	JUMPE	T,UND1		;IF ADR=0, THEN SYMBOL UNDEFINED
+L213:	PUSHJ	P,(T)		;CALL OPEVAL OR EVAL
+	 JRST L212		;SYMBOL NOT FOUND
+	CAIN	W,ASSEM-DDTOFS	;DEFINED SYMBOL FOLLOWED BY #?
+	JRST	ERR		;IF DEFINED, DON'T ALLOW #
+L4:	TLZE	F,(MF)
+	MOVN	T,T
+	TLNN	F,(SF)
+	CAIE	W,LPRN-DDTOFS
+	JRST	.+2
+	JRST	LPRN
+
+	EXCH	T,FRASE1
+	TLNN	F,(DVF)
+	IMULB	T,FRASE1
+	TLZE	F,(DVF)
+	IDIVB	T,FRASE1
+	CAIGE	W,ASSEM-DDTOFS
+	JRST	DDTOFS(W)	;MULTIPLY OR DIVIDE
+	ADDB	T,FRASE
+	CAIGE	W,SPACE-DDTOFS
+	JRST	DDTOFS(W)	; + - @ ,
+
+	ADD	T,WRD
+	TLNE	F,(TIF)		;TRUNCATE INDICATOR FLAG
+	HLL	T,WRD		;TRUNCATE
+	MOVEM	T,WRD
+	TLNN	F,(QF)
+	MOVE	T,LWT
+	SETZM	R
+	MOVE	W1,ESTUT
+	CAMN	W1,@USYMP	;IF THERE ARE ANY UNDEFINED SYMBOLS IN
+	JRST	L5		;THE CURRENT EXPRESSION, ANYTHING EXCEPT
+	CAILE	W,CARR-DDTOFS	;FURTHER EXPRESSION INPUT, OR DEPOSITING
+	JRST	ERR		;  INTO MEMORY IS ILLEGAL
+L5:	CAIG	W,RPRN-DDTOFS
+	JRST	DDTOFS(W)
+	PUSH	P,KILRET	;WHEN INSIDE ( ), CURRENT EXPRESSION
+	SKIPN	PRNC		;INVALID FOR ANYTHING OTHER
+	JRST	DDTOFS(W)	;  THAN MORE EXPRESSION INPUT
+	JRST	ERR
+
+WRONG:	MOVE	W1,[ASCII /XXX/]
+	PUSHJ	P,TEXT
+	JRST	WRONG2
+
+ERR:	MOVSI	W1,(BYTE (7)"?","G"-100)	;QUESTION-DING
+	JRST	WRONG1
+
+UNDEF:	MOVEI	W1,"U"
+WRONG1:	MOVE	P,[IOWD LPDL,PDL]
+	PUSHJ	P,TEXT
+	PUSHJ	P,TTYCLR	;CLEAR INPUT BUFFER
+WRONG2:	TLNN	F,(ROF)		;REGISTER OPEN?
+	JRST	DD1		;NO, CRLF.  OTHERWISE, FALL INTO RET
+RET:	MOVE	P,[IOWD LPDL,PDL]
+	PUSHJ	P,LCT		;COMMON RETURN FOR TAB;,JRST LIS
+	JRST	DD2
+
+
+UND1:	MOVE	R,ESTUT		;UNDEFINED SYM ASSEMBLER
+	JUMPE	R,UNDEF		;UNDEFINED IF NO UNDEF SYM TABLE
+	HLRE	S,ESTUT
+	ASH	S,-1		;SETUP EVAL END TEST
+	PUSHJ	P,EVAL2
+	CAIN	W,ASSEM-DDTOFS
+	TLNN	F,(ROF)
+	JRST	UNDEF
+	SKIPE	PRNC
+	JRST	UNDEF
+	MOVEI	T,"#"
+	CAIE	W,ASSEM-DDTOFS
+	PUSHJ	P,TOUT
+
+	MOVN	R,[XWD 2,2]
+	ADDB	R,ESTUT
+	MOVE	T,SYM
+	TLO	T,(GLOBL)
+	PUSHJ	P,DSYMER	;DEPOSIT AND TYPE ? IF IT FAILS
+	HRRZ	T,LLOCO
+	TLNE	F,(MF)
+	TLO	T,(STNEG)	;SET FLAG TO SHOW SUBTRACTIVE REQUEST
+	TLO	T,(STADD)	;SET FLAG TO SHOW UNCHAINED REQUEST
+	ADDI	R,1
+	PUSHJ	P,DSYMER
+	MOVEI	T,0
+	JRST	L4
+
+QUESTN:	PUSHJ	P,CRF		;HERE FOR "?"
+	TLNE	F,(LTF)		;HAS A SYMBOL BEEN TYPED?
+	JRST	QLIST		;NO
+	MOVE	R,@USYMP	;YES, LIST UNDEFINED SYMBOLS
+QUEST1:	JUMPGE	R,DD1
+	MOVE	T, (R)
+	SKIPA	W1,@USYMP
+
+QUEST2:	ADD	W1,[XWD 2,2]
+	CAME	T,(W1)
+	JRST	QUEST2
+	CAME	R,W1
+	JRST	QUEST4
+	PUSHJ	P,SPT
+	PUSHJ	P,CRF
+QUEST4:	ADD	R,[XWD 2,2]
+	JRST	QUEST1
+
+QLIST:	PUSHJ	P,SYMSET	;LIST REFERENCES TO THE SYMBOL
+QLIST1:	SETZM	QLPNT		;ZERO FLAG SHOWING REFERENCE
+QLIST2:	MOVE	T,(R)		;PICK UP SYMBOL
+	TLZN	T,(PNAME)	;A PROGRAM NAME?
+	JRST	QLIST6		;YES
+	CAMN	T,SYM		;NO, IS AN OCCURANCE FOUND?
+	HRRZM	R,QLPNT		;YES, REMEMBER WHERE
+QLIST3:	AOBJN	R,.+1		;LOOK THRU TABLE
+	AOBJN	R,QLIST4	;END OF TABLE SEGMENT?
+	IFE	FTFILE,<
+	TRNN	R,1B18		;YES, WRAP AROUND
+	SKIPL	R,SAVHSM
+	>
+	MOVE	R,@SYMP
+QLIST4:	AOJLE	S,QLIST2	;THRU SEARCHING?
+	JRST	DD1		;YES
+
+QLIST6:	SKIPN	QLPNT		;FOUND THE SYMBOL?
+	JRST	QLIST3		;NO
+	PUSHJ	P,SPT1		;YES, PRINT THE PROGRAM NAME
+	MOVE	T,@QLPNT	;GET THE SYMBOL BACK AND
+	TLNN	T,(GLOBL)	; TEST FOR A GLOBAL SYMBOL
+	JRST	QLIST7		;NOT GLOBAL
+	PUSHJ	P,TSPC		;IS GLOBAL, TYPE " G"
+	MOVEI	T,"G"
+	PUSHJ	P,TOUT
+QLIST7:	PUSHJ	P,CRF
+	SETZM	QLPNT		;RESET FLAG
+	JRST	QLIST3		; AND SEARCH THE NEXT SET OF SYMBOLS
+
+NUM:	ANDI	T,17		;T HOLDS CHARACTER
+	TLNE	F,(CF+FPF)
+	JRST	NM1
+	MOVE	W,SYL
+	LSH	W,3
+	ADD	W,T
+	MOVEM	W,SYL
+	MOVE	W,DEN
+	IMULI	W,12		;CONVERT TO DECIMAL
+	ADD	W,T
+	MOVEM	W,DEN
+	AOJA	T,LE1A
+
+DOLLAR:	SKIPA	T,[46+101-13]	;RADIX 50 $ TO BE
+PERC:	MOVEI	T,47+101-13	;PERCENT SIGN
+LET:	TLC	F,(SF+FPF)	;EXPONENT IFF (LTF)'*(FEF)'*(T=105)*(SF)*(FPF)=1
+	TLZN	F,(LTF+FEF+SF+FPF)
+	CAIE	T,105		; E
+	TLOA	F,(LTF)
+	TLOA	F,(FEF)
+	JRST	LET1
+	TLZN	F,(MF)
+	SKIPA	W1,SYL
+	MOVN	W1,SYL
+	MOVEM	W1,FSV
+	CLEARM	DEN
+LET1:	SUBI	T,101-13	;FORM RADIX 50 SYMBOL
+LE1A:	TLO	F,(SF+QF)
+LE2:	SOSGE	TEM		;IGNORE CHARACS AFTER 6
+	JRST	L2
+	MOVEI	W,50
+	IMULM	W,SYM		;MULTIPLY BY RADIX 50
+	ADDM	T,SYM		;  AND ADD NEW CHAR INTO SYM
+	MOVEI	T,"A"-13(T)	;CONVERT LETTERS BACK TO ASCII
+	IDPB	T,CHP
+	JRST	L2
+
+NUM1:	EXCH	T,WRD2		;FORM NUMBER AFTER $
+	IMULI	T,12
+	ADDM	T,WRD2
+	TRO	F,Q2F
+	JRST	L2
+
+NM1:	TLNE	F,(CF)
+	JRST	NUM1
+	MOVEI	W1,6		;FORM FLOATING POINT NUMBER
+	AOS	NM1A
+	XCT	NM1A		;MOVEI W2,..
+	MOVSI	R,201400
+NM1A1:	TRZE	W2,1
+	FMPR	R,FT(W1)
+	JUMPE	W2,NM1B
+	LSH	W2,-1
+	SOJG	W1,NM1A1
+NM1B:	MOVSI	W1,211000(T)
+	FMPR	R,W1		;COMPUTE VALUE OF NEW DIGIT
+	FADRB	R,FH		;ADD VALUE INTO FLOATING NO.
+	MOVEM	R,SYL
+	AOJA	T,LE1A
+
+POWER:	TLNN	F,(FEF)
+	JRST	L4		;NO EXPONENT
+	CAIE	W,PLUS
+	CAIN	W,MINUS
+	TROE	F,POWF
+	TRZA	F,POWF
+	JRST	(W)		; E+-
+
+	MOVE	W2,DEN
+	CLEARM	FRASE
+	MOVEI	W1,FT-1
+	TLZE	F,(MF)
+	MOVEI	W1,FT01
+	SKIPA	T,FSV
+POW2:	LSH	W2,-1
+	TRZE	W2,1
+	FMPR	T,(W1)
+	JUMPE	W2,L4
+	SOJA	W1,POW2
+
+PERIOD:	MOVE	T,LLOC
+	TLNE	F,(SF)		;SYLLABLE STARTED
+	MOVE	T,DEN
+	MOVEM	T,SYL
+	TLNE	F,(FPF)		;HAS A PERIOD BEEN SEEN BEFORE?
+	TLO	F,(LTF)		;YES, TWO PERIODS MAKES A SYMBOL
+	TLON	F,(FPF+SF+QF)
+	MOVEI	T,0
+	IDIVI	T,400
+	SKIPE	T
+	TLC	T,243000
+	TLC	W1,233000
+	FAD	T,[0]		;NORMALIZE T AND W1
+	FAD	W1,[0]
+	FADR	T,W1
+	MOVEM	T,FH
+	HLLZS	NM1A
+	MOVEI	T,45		;RADIX 50 PERIOD
+	JRST	LE2
+
+	IFE	FTFILE,<
+PILOC:	MOVEI	T,SAVPI>	;GET ADDRESS FOR $I
+QUANIN:;TLO T,(DDTINT)		;(FUTURE) FLAG DDT INTERNAL REGISTERS
+	JRST	QUAN1
+
+QUAN:	TLNN	F,(CCF)		;$Q OR $$Q, WHICH?
+	SKIPA	T,LWT		;$Q STRAIGHT
+QUANSW:	MOVS	T,LWT		;$$Q SWAPPED (ALSO FOR $V)
+QUAN1:	MOVEM	T,SYL
+QUAN2:	TLO	F,(SF+QF)	;WRD,SYL STARTED
+	TLZ	F,(CF+CCF)
+	JRST	L2
+
+;HERE WHEN ESC TYPED
+
+CONTRO:	TLOE	F,(CF)
+	TLO	F,(CCF)
+	SETOM	WAKALL		;SET WAKEUP ON EVERYTHING
+	JRST	L2
+
+	IFN	FTFILE,
+
+SUBTTL SYMBOL TABLE LOGIC
+;SYMBOL EVALUATION ROUTINE
+
+EVAL:	PUSHJ	P,CSHVER	;GO SEE IF CACHE IS USEFUL
+	 JRST EVALC4		;ITS NOT. GO DO OLD STYLE LOOKUP
+	MOVSI	S,-NSYMCS	;SCAN SYMBOL CACHE FIRST
+EVALC1:	SKIPN	R,SYMCSH(S)	;GET POINTER
+	JRST	EVALC3		;NOT IN USE
+	MOVE	T,0(R)		;GET SYM
+	TLZ	T,(PNAME)	;FLUSH BITS
+	CAMN	T,SYM		;SAME?
+	JRST	EVALC2		;YES, DONE
+EVALC3:	AOBJN	S,EVALC1	;KEEP LOOKING
+EVALC4:	PUSHJ	P,SYMSET	;SET UP SYM TABLE POINTER AND COUNT
+
+;CERTAIN CALLS ENTER HERE WITH S AND R ALREADY SETUP
+
+EVAL2:	TRZ	F,PNAMEF!MDLCLF	;CLEAR FLAGS FOR EVAL
+	SETZM	SYMPNT		;CLEAR LOCAL SYM POINTER
+	JUMPE	S,CPOPJ		;XFER IF SYM TABLE EMPTY
+	JUMPGE	R,CPOPJ		;XFER IF POINTER NOT VALID
+
+EVAL3:	MOVE	T,0(R)		;GET SYM FROM SYM TABLE
+	TLZN	T,(PNAME)	;PROGRAM NAME? ALSO CLEAR THE FLAGS
+	JRST	[JUMPE T,EVAL4	;YES, IGNORE IF SYMBOL IS NULL
+		TRO F,PNAMEF	;SET PROGRAM NAME FLAG
+		JRST EVAL4]
+	CAMN	T,SYM		;SYMBOL MATCH?
+	JRST	EVAL6		;YES
+EVAL4:	AOBJN	R,.+1		;NO VALID MATCH, CONTINUE LOOKING
+	AOBJN	R,EVAL4A	;POINTER EXPIRED?
+	IFE	FTFILE,<
+	TRNN	R,1B18		;TEST FOR HIGH SEGMENT SYM TABLE
+	SKIPL	R,SAVHSM	;WAS LOW SEG, GET HIGH SEG POINTER, IF ANY
+	>
+	MOVE	R,@SYMP		;WRAP AROUND TO LOW SEG END OF TABLE
+EVAL4A:	AOJLE	S,EVAL3		;TRANSFER IF ANY SYMBOLS LEFT
+	SKIPN	R,SYMPNT	;SEARCH FINISHED, ANY LOCAL SYMS OUTSIDE
+	POPJ	P,		;CURRENT PROGRAM AREA?
+	TRNE	F,MDLCLF	;YES, WITH A UNIQUE VALUE?
+	JRST	ERR		;NO, AMBIGIOUS
+EVAL5:	HRRZ	W1,R
+	PUSHJ	P,SYMCSI	;ADD SYM TO CACHE
+EVALC2:	MOVE	T,1(R)		;GET VALUE OF SYMBOL
+CPOPJ1:	AOS	(P)		;FOUND SYMBOL, SKIP
+CPOPJ:	POPJ	P,
+EVAL6:	MOVE	T,(R)		;SYM MATCHES, GET FLAGS BACK
+	TLNE	T,(DELI)	;IS SYMBOL DELETED FOR INPUT?
+	JRST	EVAL4		;YES
+	TLNN	T,(GLOBL)	;GLOBAL SYMS VALID ANYWHERE
+	TRNN	F,PNAMEF	;HAS SECOND PROGRAM TABLE BEEN STARTED?
+	JRST	EVAL5		;LOCALS ALWAYS VALID IN CURRENT PROGRAM
+	SKIPN	T,SYMPNT	;LOCAL OUTSIDE OF CURRENT PROGRAM
+	JRST	EVAL7		;YES, AND THE 1ST ONE OF THEM
+	MOVE	T,1(T)		;GET VALUE OF PREVIOUS LOCAL
+	CAME	T,1(R)		;IS IT THE SAME VALUE?
+	TRO	F,MDLCLF	;NO, MULTIPLY DEFINED
+EVAL7:	MOVEM	R,SYMPNT	;SAVE POINTER TO THIS LOCAL
+	JRST	EVAL4		;CONTINUE LOOKING FOR GLOBALS
+
+;BIT 40 - DELETE OUTPUT
+; 20 - DELETE INPUT
+; 10 - LOCAL
+; 04 -GLOBAL
+; NO BITS - PROGRAM NAME
+
+;SYMBOL TABLE POINTER AND COUNT SET UP ROUTINE
+
+SYMSET:	IFE	FTFILE,<
+	MOVEI	R,.JBHSM	;TRY TO GET HIGH SEG SYM TABLE POINTER
+	IFN	FTEXEC,	;NO HI SYM TABLE POINTER IN EXEC MODE
+	PUSHJ	P,HFETCH
+	 MOVEI T,0		;NO HIGH SEGMENT
+	MOVEM	T,SAVHSM	;SAVE HIGH SEG POINTER (OR 0)
+	>
+	HLLZ	S,@SYMP		;GET WORD COUNT FOR LOW SEG TABLE
+	IFE	FTFILE,<
+	SKIPGE	T		;IF .JBHSM .GT. 0, INVALID
+	ADD	S,T		;ADD WORD COUNT FOR HIGH SEG TABLE
+	>
+	ASH	S,-^D19		;PUSH TO RIGHT HALF AND DIVIDE BY 2
+	SKIPL	T,PRGM		;GET $: POINTER, GOOD ONLY IF .LT. 0
+	JRST	SYMS4		;NOT GOOD, USE .JBSYM
+	IFE	FTFILE,<
+	TRNE	T,1B18		;POINTER FROM .JBSYM OR .JBHSM?
+	JRST	[PUSH  P,T	;SAVE T
+		 MOVEI R,.JBHNM	;NAME WORD
+		 PUSHJ P,HFETCH	;GET FROM HISEG
+		   SETCM T,SEGNAM ;SHOULD NEVER FAIL
+		 MOVE  R,T	;SAVE IN BETTER AC
+		 POP   P,T	;RESTORE T
+		 CAME  R,SEGNAM	;SAME HISEG?
+		 JRST  SYMS4	;NO
+		 JRST  SYMS2]	;YES
+	>
+	SKIPL	T,@SYMP		;PRGM CAME FROM .JBSYM
+	JRST	SYMS5		;.JBSYM POINTER INVALID
+SYMS2:	HLRE	R,T		;GET NEGATIVE LENGTH
+	SUB	T,R		;GET LAST ADR OF TABLE
+	MOVS	R,PRGM		;GET NEG. LENGTH FOR $: POINTER
+	ADD	R,T		; AND CALCULATE STARTING ADR
+	HLL	R,PRGM		; AND SET UP TABLE LENGTH
+	JUMPL	R,CPOPJ		;NO, POINTER IS OK AS LONG AS IT IS .LT. 0
+SYMS4:	SKIPL	R,@SYMP		;SET UP POINTER INTO LOW SEG TABLE
+SYMS5:	IFE	FTFILE,<
+	MOVE	R,SAVHSM	;LOW SEG POINTER BAD, TRY HI SEG
+	>
+	IFN	FTFILE,<
+	MOVEI	R,0
+	>
+	POPJ	P,
+
+SETNAM:	SETZM	PRGM		;FORGET OLD PROGRAM
+	PUSHJ	P,CLRCSH	;CLEAR SYMBOL CACHE
+	SKIPGE	R,@SYMP		;LOOK UP PROGRAM NAME FOR $:
+	PUSHJ	P,SETSUB	;SEARCH LO SEG SYM TABLE
+	JUMPL	R,SETN2		;XFER IF NAME FOUND
+	IFE	FTFILE,<
+	MOVEI	R,.JBHSM
+	IFN	FTEXEC,	;NO HI SYM TABLE POINTER IN EXEC MODE
+	PUSHJ	P,HFETCH	;GET .JBHSM
+	 JRST UNDEF		;NO HI SEG, NAME$: UNDEFINED
+	SKIPGE	R,T		;IS HI SEG POINTER GOOD?
+	PUSHJ	P,SETSUB	;YES, LOOK THRU HI SYM TABLE
+	>
+	JUMPGE	R,UNDEF		;UNDEFINED IF NOT IN HI SEG
+	IFE	FTFILE,<
+	HRRI	W,1B18		;SET FLAG SHOWING HI SEGMENT
+	MOVEI	R,.JBHNM	;GET ADR OF HI SEG PROGRAM NAME
+	IFN	FTEXEC,
+	PUSHJ	P,HFETCH	;  AND GO GET THE NAME
+	 MOVEI T,0		;NO HI SEG NAME, OR EXEC MODE
+	MOVEM	T,SEGNAM >	;SAVE HI SEG NAME
+SETN2:	MOVEM	W,PRGM		;SAVE -WC IN LH, HISEG=1 FLAG IN RH
+	JRST	RET		;DONE, THANK YOU
+
+				;SUBROUTINE TO SEARCH A SYM TABLE FOR A PROGRAM NAME
+SETSB1:	MOVE	T,(R)		;ENTRY POINT IS "SETSUB"
+	CAMN	T,SYM		;MATCH FOR PROGRAM NAME?
+	POPJ	P,		;YES, RETURN WITH "ANSWER" IN W
+	ADD	R,[2,,2]	;GO TO NEXT ENTRY
+	TLNN	T,(PNAME)	;WAS LAST ENTRY A PROG NAME?
+SETSUB:	HLLZ	W,R		;(ENTRY POINT) YES, SAVE POINTER TO HERE
+	JUMPL	R,SETSB1	;XFER IF ANY SYMBOLS LEFT
+	POPJ	P,		;SEARCH FAILED, RETURN
+
+KILL:	TLNN	F,(LTF)		;DELETE SYMBOLS
+	JRST	ERR
+	PUSHJ	P,EVAL
+	JRST	KILL1
+	MOVE	T,(R)		;GET SYM WITH FLAGS
+	TLO	T,(DELO)	;ASSUME DELETE OUTPUT
+	TLNE	F,(CCF)		;$$K?
+	MOVSI	T,(DELO!DELI!37777B17)	;MAKE SYM IMPOSSIBLE LOCAL, DELETED IN AND OUT
+	PUSHJ	P,DSYMER	;DEPOSIT IF LEGAL, ELSE ?
+KILRET:	JRST	RET		;USED AS A CONSTANT
+
+
+KILL1:	SKIPL	R,@USYMP	;REMOVE UNDEFINED SYMS
+	JRST	UNDEF
+KILL1A:	HLRE	S,R		;GET LENGTH OF UNDEFINED TABLE, AND
+	ASH	S,-1		;DIVIDE BY 2 TO GET # OF ENTRIES
+	IFE	FTFILE,<
+	SETZM	SAVHSM		;LOOK ONLY IN LOW SEG
+	>
+KILL2:	PUSHJ	P,EVAL2
+	JRST	RET
+REPEAT 0,<			;IF ASSEMBLED OUT, DON'T ZERO CHAINED ADDRESSES
+	PUSH	P,R
+	SKIPL	R,1(R)		;CHAINED REQUEST?
+	JRST	KILL4		;YES
+KILL3:	POP	P,R >
+	PUSHJ	P,REMUN
+	 JRST ERR		;CAN'T MODIFY SYMTAB
+	MOVE	R,@USYMP	;START TABLE SEARCH OVER
+	JRST	KILL1A
+
+REPEAT 0,<			;IF ASSEMBLED OUT, DON'T ZERO CHAINED ADDRESSES
+KILL4A:	SKIPE	R,S		;GET CHAIN ADR, STOP IF 0
+KILL4:	PUSHJ	P,FETCH		;GET NEXT ADR OF CHAIN
+	 JRST KILL3		;FAILED, QUIT SEARCHING LIST
+	HRRZ	S,T		;SAVE CHAIN POINTER
+	HLLZS	T		;GET RID OF CHAIN ADDRESS, AND
+	PUSHJ	P,DEPMEM	;  DEPOSIT BACK INTO MEMORY
+	 JFCL			;IGNORE IF WRITE LOCKED SEG
+	JRST	KILL4A >
+
+REMUN:	MOVE	S,@USYMP	;REMOVE ONE UNDEFINED SYMBOL
+	MOVE	T,(S)		;MOVE SYMBOL 2 LOCATIONS
+	PUSHJ	P,DEPSYM
+	 POPJ P,		;CAN'T MODIFY SYMTAB
+	MOVE	T,1(S)
+	ADDI	R,1
+	PUSHJ	P,DSYMER
+	SUBI	R,1
+	MOVE	S,[2,,2]
+	ADDB	S,@USYMP
+	JRST	CPOPJ1
+
+TAG:	TLNN	F,(LTF)		; NO LETTERS IS ERROR
+	JRST	ERR		; GO SAY ERROR
+	TLNE	F,(FAF)		; DEFINE SYMBOLS
+	JRST	DEFIN		;A.LT.B:
+	TLNE	F,(CF)		;DEFINE SYMBOL AS OPEN REGISTER
+	JRST	SETNAM
+	MOVE	W,LLOCO
+	HRRZM	W,DEFV
+
+DEFIN:	PUSHJ	P,EVAL		;DEFINED SYMBOL?
+	JRST	DEF1		;NO - DEFINE
+	MOVE	T,0(R)		;YES, GET FLAGS FOR SYMBOL TYPE
+	TLNE	T,(PNAME)	;PROGRAM NAME?
+	JRST	DEF2		;NO, REDEFINE SYMBOL
+
+DEF1:	SKIPL	R,@SYMP		;DEFINE A NEW SYMBOL
+	IFE	FTFILE,<
+	JRST	[MOVEI R,.JBHSM
+		IFN FTEXEC, ;NO HI SYM POINTER IN EXEC MODE
+		PUSHJ P,HFETCH	;GET HI SEG SYM POINTER
+		 JRST ERR	;THERE IS NO SYM POINTER ANYWHERE
+		SUB T,[2,,2]	;MAKE ROOM FOR ANOTHER ENTRY
+		PUSHJ P,DSYMER	; AND STORE IT BACK
+		MOVE R,T
+		JRST DEF1A]
+	>
+	IFN	FTFILE,<
+	JRST	ERR
+	>
+	SUB	R,[2,,2]
+	MOVEM	R,@SYMP		;DECREMENT LO SEG SYM POINTER
+DEF1A:	SKIPL	@USYMP		;DOES AN UNDEFINED TABLE EXIST?
+	JRST	DEF2		;NO
+	MOVE	S,R
+	SOS	R,@USYMP	;MOVE HI NUMBERED ENTRY ON UNDEFINED
+	MOVE	T,1(S)		;  TABLE TO LOW END
+	PUSHJ	P,DSYMER
+	SOS	R,@USYMP	;SAME FOR SECOND WORD
+	MOVE	T,(S)
+	PUSHJ	P,DSYMER
+	MOVE	R,S		;GET DEFINED SYM POINTER BACK
+DEF2:	MOVSI	T,(GLOBL)
+	IORB	T,SYM
+	PUSHJ	P,DSYMER
+	MOVE	T,DEFV
+	MOVEI	R,1(R)
+	PUSHJ	P,DSYMER
+	MOVE	R,@USYMP
+
+DEF3:	JUMPGE	R,RET		;PATCH IN VALUE FOR UNDEF SYM ENTRY
+	MOVE	T,SYM
+	TLO	T,(GLOBL)	;UNDEFINED TABLE HAS GLOBAL ENTRIES
+	CAME	T,(R)
+	JRST	DEF4
+	PUSH	P,R		;SAVE POINTER INTO UNDEF TABLE
+	SKIPL	R,1(R)		;IS ENTRY AN ADDITIVE REQUEST?
+	JRST	DEF7		;NO, CHAINED IN RIGHT HALF
+	PUSHJ	P,FETCH		;GET OBJECT CELL
+	 JRST ERR
+	TLNN	R,(STNEG)	;ADDITIVE OR SUBTRACTIVE?
+	SKIPA	S,DEFV		;ADDITIVE
+	MOVN	S,DEFV		;SUBTRACTIVE
+	TLNE	R,(STLH)	;RIGHT OR LEFT HALF?
+	JRST	[HRLZS S	;LEFT HALF
+		ADD T,S		;ADD INTO LEFT HALF
+		JRST DEF5]
+	ADD	S,T		;RIGHT HALF, ADD HALVES
+	HRR	T,S		;  AND REPLACE RIGHT HALF
+DEF5:	PUSHJ	P,DMEMER	;STORE RESULT BACK INTO MEMORY
+DEF6:	POP	P,R		;GET UNDEF TABLE POINTER BACK
+	PUSHJ	P,REMUN
+	 JRST ERR		;CAN'T MODIFY SYMTAB
+DEF4:	ADD	R,[XWD 2,2]	;REMOVE THE NOW DEFINED SYMBOL
+	JRST	DEF3
+
+DEF7:	JUMPE	R,DEF6		;JUMP IF ALL DONE
+	PUSHJ	P,FETCH		;GET OBJECT CELL
+	 JRST ERR
+	HRRZ	S,T		;SAVE CHAIN POINTER
+	HRR	T,DEFV		;REPLACE WITH NEW VALUE
+	PUSHJ	P,DMEMER	; AND STORE BACK INTO MEMORY
+	HRRZ	R,S		;LOOP TO END
+	JRST	DEF7		;  OF CHAIN
+
+SUBTTL	TEXT COMMANDS (" AND $")
+
+TEXI:	TRZE	F,Q2F		;QUANT AFTER $ ?
+	JRST	[MOVE T,WRD2	;YES
+		CAIE T,5	; $5" ?
+		JRST ERR	;NO, ONLY CASE KNOWN
+		MOVE T,SYM	;YES, TAKE PREVIOUS SYL AS RADIX50
+		TLZ F,(FPF+FEF+LTF) ;REINIT SYL
+		JRST QUAN1]
+	HRRZ	T,LLOCO		;GET ADR OF OPEN REG
+	MOVEM	T,TEM		;SAVE IT FOR LOCAL USE
+	PUSHJ	P,TEXIN0	;GET TERMINATOR
+	MOVEM	T,SYL		;SAVE TERMINATOR
+	PUSHJ	P,TEXIN		;GET FIRST CHARACTER
+	CAIN	T,33		;ESC?
+	JRST	QUAN2		;YES, EQUALS ONE ASCII/SIXBIT CHAR
+	PUSHJ	P,TEXIN1	;CONVERT TO SIXBIT IF NECESSARY
+TEXI4:	MOVE	W1,[POINT 7,W]	;SETUP TO BUILD WORD IN W
+	TLNE	F,(CF)		;SIXBIT?
+	HRLI	W1,(POINT 6,0)	;YES, MODIFY BYTE POINTER
+	MOVEI	W,0		;INIT WORD TO 0
+TEXI2:	CAMN	T,SYL		;REACHED TERMINATOR?
+	JRST	[MOVE T,W	;GET LAST WORD
+		HRRZ R,TEM
+		CAMN R,LLOCO	;MULTIPLE-WORD INPUT?
+		JRST QUAN1	;NO, JUST RETURN QUANTITY
+		PUSHJ P,PSHLLC	;YES, SAVE OLD LOC
+		MOVEM R,LLOC	;SET LOC TO END OF INPUT
+		MOVEM R,LLOCO
+		JRST QUAN1]	;GO USE AS QUANTITY
+	TLNN	W1,(76B5)	;ROOM FOR ANOTHER BYTE IN WORD?
+	JRST	TEXI3		;NO
+	IDPB	T,W1		;YES, STORE IT
+	PUSHJ	P,TEXIN0	;GET ANOTHER INPUT CHARACTER
+	JRST	TEXI2
+
+;HERE WHEN WORD FULL
+
+TEXI3:	MOVSI	W1,(POINT 0,0)
+	TLNN	F,(ROF)		;REGISTER OPEN?
+	JRST	TEXI2		;NO, LOSE ANY ADDITIONAL INPUT
+	PUSH	P,T		;SAVE CHARACTER
+	MOVE	T,W		;GET FULL WORD
+	HRRZ	R,TEM		;GET LOC OF NEXT REGISTER
+	PUSHJ	P,DEPMEM	;STORE WORD
+	 JRST ERR		;CAN'T
+	AOS	TEM		;BUMP LOC
+	POP	P,T		;RECOVER CHARACTER
+	JRST	TEXI4		;GO REINIT WORD AND CONTINUE INPUT
+
+;GET INPUT CHARACTER, CONVERT TO SIXBIT IF NECESSARY
+
+TEXIN0:	PUSHJ	P,TEXIN		;GET CHAR
+TEXIN1:	TLNN	F,(CF)		;SIXBIT MODE?
+	POPJ	P,		;NO
+CONV6:	CAIL	T,"A"+40	;IS CHAR BETWEEN LOWER CASE "A" AND
+	CAILE	T,"Z"+40	; LOWER CASE "Z"?
+	SKIPA			;NO
+	TRC	T,40		;YES, CONVERT TO UPPER CASE
+	CAIL	T," "		;IS CHAR IN SIXBIT SET?
+	CAILE	T,"_"
+	JRST	ERR		;NO
+	ANDI	T,77		;YES, MASK TO 6 BITS
+	TRC	T,40		;CONVERT TO SIXBIT FORM
+	POPJ	P,
+
+;***ROUTINES BEYOND HERE EVALUATE THEIR ARGUMENT***
+
+MULT:	TLOA	F,(PTF+MLF)	;*
+DIVD:	TLO	F,(DVF+PTF)	;SINGLE QUOTE
+	JRST	L1
+
+ASSEM:	JRST	PLUS		;#
+MINUS:	TLO	F,(MF)
+PLUS:	TLO	F,(PTF)
+	JRST	LIS2
+
+LPRN:	PUSH	P,F		;RECURSE FOR OPEN PAREN
+	PUSH	P,WRD
+	PUSH	P,FRASE
+	PUSH	P,FRASE1
+	AOS,PRNC
+	JRST	LIS
+
+INDIRE:	HRLZI	W,20		;@
+	IORB	W,WRD
+	TLO	F,(QF)
+	JRST	LIS2
+
+ACCF:	MOVE	R,T		;COMMA PROCESSOR
+	XCT	ACCCF		;MOVEI T,..
+	TLOE	F,(COMF)	;COMMA TYPED BEFORE?
+	JRST	ACCF1		;YES
+	HRRM	R,ACCCF		;NO, SAVE LEFT HALF OF A,,B
+	HLLZ	T,R
+	LDB	W1,[POINT 3,WRD,2]	;CHECK FOR IO INSTRUCTION
+	IDIVI	W1,7
+	LSH	R,27(W1)
+	ADD	T,R
+	ADDB	T,WRD
+	JRST	SPAC1
+
+ACCF1:	ADD	T,WRD		; FOR ",," GET LEFT HALF TOGETHER
+	HRLZM	T,WRD		; AND PUT IT IN LEFT HALF
+	JRST	SPAC1
+
+SPACE:	TLNE	F,(QF)
+SPAC1:	TLO	F,(TIF)
+	TLZ	F,(MF+PTF)
+	JRST	LIS1
+
+RPRN:	TLNN	F,(QF)		;)
+	MOVEI	T,0
+	MOVS	T,T
+	SOSGE,PRNC
+	JRST	ERR
+	POP	P,FRASE1
+	POP	P,FRASE
+	POP	P,WRD
+	POP	P,F
+	TLNE	F,(PTF)
+	TLNE	F,(SF)
+	JRST	RPRN1
+	MOVEM	T,SYL
+	TLO	F,(QF+SF)
+	JRST	L1RPR
+RPRN1:	ADDB	T,WRD
+	TLO	F,(QF)
+	JRST	L1A
+
+SUBTTL REGISTER EXAMINATION LOGIC
+
+LINEF:	PUSHJ	P,DEPRA		;NEXT REGISTER
+	PUSHJ	P,CRN		;DO CR ONLY
+	AOS	T,LLOC		;BUMP LOC
+LI1:				;PUSHJ P,LINCHK		;TRUNCATE ADRS (UNLESS INSIDE DDT)
+	HRRZM	T,LLOC
+	HRRZM	T,LLOCO
+	PUSHJ	P,PAD
+	MOVEI	T,"/"
+	CAME	SCH,SCHM	;TEMP MODE SAME AS PERM?
+	JRST	[CAIN SCH,FTOC	;NO, CONSTANT?
+		MOVEI T,"["	;YES
+		CAIN SCH,PIN	;INSTRUCTION?
+		MOVEI T,"]"	;YES
+		JRST .+1]	;USE APPROPRIATE INDICATION
+	TLNE	F,(STF)
+	MOVEI	T,"!"
+	PUSHJ	P,TOUT
+LI2:	TLZ	F,(ROF)
+	PUSHJ	P,LCT
+	MOVE	R,LLOCO
+	PUSHJ	P,FETCH
+	IFE	FTDEC20,<
+	JRST	ERR>
+	IFN	FTDEC20,<
+	 JRST	[TLO F,(ROF)	;SAY REGISTER OPENED
+		MOVEI W1,"?"	;BUT ONLY TYPE "?"
+		JRST TEXT]>
+	TLO	F,(ROF)
+	TLNE	F,(STF)
+	JRST	DD2
+	JRST	CONSYM		;RETURN IS A POPJ
+
+;CRLF AND OPEN NEXT REGISTER SUBROUTINE
+
+LI0:	PUSHJ	P,CRF
+	AOS	T,LLOC
+	JRST	LI1
+
+	REPEAT	0,<
+LINCHK:	CAML	T,[DDTINT SAVPI]	;TRUNCATE ADDRESSES
+	CAMLE	T,[DDTINT BNADR+2]
+	HRRZS	T
+	MOVEM	T,LLOC
+	MOVEM	T,LLOCO
+	POPJ	P,
+	>
+VARRW:	PUSHJ	P,DEPRA		;^
+	PUSHJ	P,CRF
+	SOS	T,LLOC
+	JRST	LI1
+
+CARR:	PUSHJ	P,DEPRA		;CLOSE REGISTER
+	PUSHJ	P,TIN		;GLOBBLE UP FOLLOWING LINEFEED
+CARR1:	SETZM	CHINP		;REINIT INPUT LINE
+	SETZM	CHINC
+	HRRZ	T,LLOC		;GET CURRENT LOC
+	TLNE	F,(CF)		; $ PRECEEDED?
+	JRST	LI1		;YES, GO OPEN REGISTER
+	JRST	DD1.5
+
+SLASH:	TLNN	F,(CCF)		; $$/ ?
+	JRST	SLAS2		;NO
+	SETCMM	EFAFLG		;YES, COMPLEMENT EFF ADR FLAG
+	JRST	RET		;OPEN NO REGISTER
+
+OCON:	TLNE	F,(QF)		;QUANT TYPED?
+	MOVEI	SCH,FTOC	;YES, CHANGE TEMP MODE TO CONSTANT
+	TRO	F,LF1+CF1	;OPEN AS CONSTANT
+	JRST	SLAS2		;TYPE
+
+OSYM:	TLNE	F,(QF)		;QUANT TYPED?
+	MOVEI	SCH,PIN		;YES, CHANGE TEMP MODE TO INSTRUCTION
+	TRZ	F,CF1		;OPEN SYMBOLICALLY
+	TROA	F,LF1
+SUPTYO:	TLOA	F,(STF)		;SUPPRESS TYPEOUT
+SLAS2:	TLZ	F,(STF)		;TYPE OUT NOT SUPPRESSED
+SLASH2:	PUSHJ	P,CEFF		;COMPUTE EFF ADR
+	TLNN	F,(QF)		;WAS ANY QUANTITY TYPED?
+	JRST	SLAS1		;NO. DO NOT CHANGE MAIN SEQUENCE
+	PUSHJ	P,PSHLLC	;PUSH OLD SEQUENCE
+	HRRZM	T,LLOC		;SETUP NEW SEQUENCE
+SLAS1:	HRRZM	T,LLOCO
+	JRST	LI2
+
+ICON:	PUSHJ	P,DEPRS		;BACKSLASH
+	PUSHJ	P,CEFF		;COMPUTE EFF ADR
+	JRST	SLAS1
+
+TAB:	PUSHJ	P,DEPRS		;OPEN REGISTER OF Q
+	PUSHJ	P,CEFF		;COMPUTE EFF ADR
+	MOVEI	T,-1(T)
+	PUSHJ	P,PSHLLC	;PUSH OLD SEQUENCE
+	MOVEM	T,LLOC		;SETUP NEW SEQUENCE
+	HRROI	T,700000	;3 RUBOUTS
+	PUSHJ	P,TEXTT
+	JRST	LI0
+
+;ROUTINE TO COMPUTE EFFECTIVE ADDRESS OF QUANTITY IN T.  COMPUTATION
+;IS PERFORMED USING USER PROGRAM VARIABLES.
+; T/ QUANTITY
+;	PUSHJ P,CEFF
+; RETURN +1 ALWAYS, T/ EFFECTIVE ADDRESS IN RH
+;PRINTS "??" AND BOMBS OUT IF INDIRECT WORD NOT ACCESSIBLE
+
+CEFF:	SKIPE	EFAFLG		;PERMANENT MODE CHANGED?
+	TLC	F,(CF)		;YES, COMPLEMENT EFFECT OF ESC
+	TLZN	F,(CF)		;ESC BEFORE COMMAND?
+	POPJ	P,		;NO, USE RH ONLY
+	TLNN	T,17		;INDEXING?
+	JRST	CEFF1		;NO
+	PUSH	P,T		;YES, SAVE QUANTITY
+	LDB	R,[POINT 4,T,17]	;GET INDEX ADDRESS
+	PUSHJ	P,FETCH		;FETCH CONTENTS OF XR
+	 JFCL			;ASSUME AC'S ALWAYS ACCESSABLE
+	POP	P,R		;RECOVER ORIGINAL QUANTITY
+	ADD	T,R		;T=Y+C(XR)
+	HLL	T,R		;KEEP ORIGINAL LH
+CEFF1:	TLNN	T,(Z @0)	;HAVE INDIRECTION?
+	POPJ	P,		;NO, DONE
+	HRRZ	R,T		;YES, GET INDIRECT ADDRESS
+	PUSHJ	P,FETCH		;FETCH CONTENTS
+	 JRST CEFF2		;FETCH FAILED
+	JRST	CEFF		;REPEAT USING INDIRECT WORD
+
+CEFF2:	MOVSI	W1,(ASCII /??/)	;INDIRECT FETCH FAILED
+	PUSHJ	P,TEXT		;PRINT LOSS INDICATION
+	JRST	DD1		;LEAVE REGISTER NOT OPEN, DO CRLF, ETC.
+
+;ROUTINES TO HANDLE RING BUFFER OF LOCATIONS
+
+;'PUSH' CURRENT LOCATION
+
+PSHLLC:	AOS	TT,SAVLP	;BUMP POINTER
+	CAIL	TT,NSAVTB	;AT END OF TABLE?
+	SETZB	TT,SAVLP	;YES, WRAPAROUND
+	PUSH	P,LLOC		;GET CURRENT LOCATION
+	POP	P,SAVLTB(TT)	;ADD IT TO TABLE
+	POPJ	P,
+
+;'POP' CURRENT LOCATION
+
+POPLLC:	MOVE	TT,SAVLP	;GET POINTER
+	MOVE	TT,SAVLTB(TT)	;REMOVE FROM TABLE
+	MOVEM	TT,LLOC		;SET AS CURRENT LOC
+	SOS	TT,SAVLP	;DECREMENT PTR
+	JUMPGE	TT,POPLC1	;AT TOP OF TABLE?
+	MOVEI	TT,NSAVTB-1	;YES, WRAPAROUND
+	MOVEM	TT,SAVLP
+POPLC1:	POPJ	P,
+
+DEPRA:	TLNE	F,(CF)		;$ PRECEEDED?
+	PUSHJ	P,POPLLC	;YES, POP OLD SEQUENCE
+	TLNE	F,(ROF)		;IF REGISTER IS BEING CHANGED
+	TLNN	F,(QF)		;REMOVE ALL PREVIOUS UNDEFINED
+	JRST	DEPRS		;SYMBOL REFERENCES TO IT
+	MOVE	R,@USYMP	;GET POINTER TO ALL OLD UNDEF ITEMS
+	MOVEM	W1,@USYMP	;INCLUDE THE NEW ITEMS IN UNDEF LIST
+	IFN	FTFILE,<
+	SKIPN	CRASHS		;SEE IF /M
+	JRST	DEPRS		;YES--NO UNDEF FIXUPS
+	>
+	MOVEM	T,LWT		;SAVE T IN LWT, DEPRS DOES IT ANYWAY
+DEPRA2:	JUMPGE	R,DEPRA5	;IF JOBUSY SYM TABLE EDITED, STOP
+	PUSH	P,R
+	MOVE	W,1(R)		;GET FLAGS AND POINTER
+	JUMPG	W,DPRS3		;1B0=0 IMPLIES CHAINING
+DEPRA4:	POP	P,R
+	HRRZ	T,1(R)		;GET ADDRESS OF FIXUP
+	SKIPE	T		;DELETE ENTRY IF ADR=0, OR
+	CAMN	T,LLOCO		; IF ADR IS BEING CHANGED
+	JRST	[PUSHJ P,REMUN	;REMOVE ENTRY FROM JOBUSY
+		 JRST DEPRA5	;FAILED, NO UNDEF FIXUPS
+		JRST .+1]
+	ADD	R,[2,,2]	;CONTINUE SEARCHING TABLE
+	JRST	DEPRA2
+
+DEPRA5:	MOVE	T,LWT		;RESTORE QUANTITY
+	JRST	DEPRS		;DO THE STORE
+
+DPRS3:	HRROI	S,1(R)		;GET 1ST CHAIN ADR FROM JOBUSY TABLE
+				;  AND SET FLAG TO USE DEPSYM FIRST TIME
+DPRS4:	HRRZ	R,W		;GET NEXT ADR (AFTER ADR IN S)
+	JUMPE	R,DEPRA4	;STOP ON 0 ADR
+	PUSHJ	P,FETCH		;GET CONTENTS OF ADR IN R
+	 JRST DEPRA4		;****UNDEFINED SYMBOL TABLE OR FIXUP
+				; CHAIN POINTS TO ILL. MEM. TRY
+				; TO CONTINUE.
+	EXCH	T,W
+	EXCH	S,R
+	CAME	S,LLOCO		;IS THIS WORD BEING CHANGED?
+	JRST	DPRS4		;NO, CONTINUE SEARCHING LIST
+	HRR	T,W		;PATCH CHAIN ADR AROUND ITEM
+	TLNN	R,-1		;SEE IF NEED TO USE DEPSYM
+	TDZA	TT1,TT1		;NO--USE DEPMEM
+	MOVEI	TT1,DEPSYM-DEPMEM	;YES.  NOTE THAT R CAME FROM S
+				;  WHICH HAS -1 IN LH FIRST TIME AROUND
+				;  LOOP AND 0 OTHER TIMES.
+	PUSHJ	P,DEPMEM(TT1)	;CALL EITHER DEPMEM OR DEPSYM
+	 HALT .
+	JRST	DPRS4		;CONTINUE DOWN CHAIN
+
+SUBTTL MODE CONTROL SWITCHES
+
+TEXO:	MOVEI	R,TEXTT-HLFW	;$T ASSUME 7 BIT ASCII
+	MOVE	T,WRD2
+	CAIN	T,6		;CHECK FOR $6T
+	MOVEI	R,SIXBP-HLFW	;SET MODE SWITCH FOR SIXBIT
+	CAIN	T,5		;CHECK FOR $5T
+	MOVEI	R,R50PNT-HLFW	;SET MODE SWITCH FOR RADIX 50
+HWRDS:	ADDI	R,HLFW-TFLOT	;H
+SFLOT:	ADDI	R,TFLOT-PIN	;F
+SYMBOL:	ADDI	R,PIN-FTOC	;S
+CON:	ADDI	R,FTOC		;C
+	HRRZM	R,SCH
+	JRST	BASE1
+
+RELA:	TRZE	F,Q2F		;CHANGE ADDRESS MODE TO RELATIVE
+	JRST	BASECH
+	MOVEI	R,PADSO-TOC
+ABSA:	ADDI	R,TOC		;A
+	HRRZM	R,AR
+	JRST	BASE1S
+
+BASECH:	MOVE	T,WRD2		;$NR  CHANGE OUTPUT RADIX TO N, N .GT. 1
+	CAIGE	T,2
+	JRST	ERR
+	HRRZM	T,ODF
+BASE1:	SKIPE	S,OLDAR
+	MOVE	AR,S
+BASE1S:	SETZM	OLDAR
+BASE1O:	MOVS	S,[XWD SCHM,SCH]
+	TLNN	F,(CCF)
+	JRST	LIS1
+	BLT	S,ODFM		;WITH $$, MAKE MODES PERMANENT
+	MOVE	S,[SVBTS,,PSVBTS]
+	BLT	S,PSVBTS+2
+	JRST	RET
+
+SEMIC:	MOVEM	T,LWT		;SEMICOLON TYPES IN CURRENT MODE
+	JRST	@SCH
+
+EQUAL:	TROA	F,LF1+CF1	;=
+PSYM:	TRZ	F,CF1		;@
+	TRO	F,LF1
+	PUSHJ	P,CONSYM
+	JRST	RET
+
+;OPEN ANGBKT, CLOSE ANGBKT
+
+FIRARG:	TLNE	F,(CF+CCF)	;$ PRECEEDED?
+	JRST	PTCH		;YES, PATCH COMMAND
+	MOVEM	T,DEFV		;NO, SET FIRST ARG
+	TLO	F,(FAF)
+	JRST	ULIM1
+
+ULIM:	TLNE	F,(CF+CCF)	;$ PRECEEDED?
+	JRST	PTCHE		;YES, PATCH END COMMAND
+	TLO	F,(SAF)		;NO, SET SECOND ARG
+	HRRZM	T,ULIMIT
+ULIM1:	TLNN	F,(QF)
+	JRST	ERR
+	JRST	LIS0
+
+SUBTTL	PATCH COMMAND  -- PATCH BEGIN
+
+PTCH:	TLNN	F,(TIF+COMF+PTF+MF)	;EXPRESSION TYPED?
+	TLNN	F,(ROF)		;NO REGISTER OPEN?
+	JRST	ERR		;YES, ERROR
+	TLNE	F,(QF)		;ANYTHING TYPED?
+	JRST	[PUSHJ P,EVAL	;YES, LOOKUP SYMBOL
+		 JRST ERR	;STRANGE TYPEIN, LOSE
+		JRST PTCH4]	;FOUND, USE VALUE AS PATCH LOC
+	MOVSI	W,-NPSYM	;SETUP TO SCAN PATCH SYMBOLS
+PTCH1:	MOVE	T,PCHSYM(W)	;GET A POSSIBLITY
+	MOVEM	T,SYM		;SET IT UP FOR EVAL
+	PUSHJ	P,EVAL		;TRY TO FIND VALUE
+	 AOBJN W,PTCH1		;NOT FOUND, TRY NEXT SYMBOL
+	JUMPGE	W,[MOVEI R,.JBFF	;NONE OF THE SYMBOLS EXIST, USE .JBFF
+		HRRZ T,0(R)
+		JRST PTCH2]
+PTCH4:	MOVEI	R,1(R)		;POINT TO VALUE WORD
+PTCH2:	CAIGE	T,.JBDA		;HAVE REASONABLE PATCH ADDRESS?
+	JRST	ERR		;NO
+	HRRZM	T,PTLOC		;YES, SAVE IT
+	HRLM	R,PTLOC		;SAVE WHERE IT CAME FROM
+	HRRZ	R,LLOCO		;LOC OF OPEN REGISTER
+	HRRZM	R,PTLLC		;SAVE IT
+	PUSHJ	P,FETCH		;GET CONTENTS
+	 JRST ERR		;FETCH FAILED
+	MOVEM	T,PTWRD		;SAVE ORIGINAL WORD
+	PUSHJ	P,DEPERR	;BE SURE IT CAN BE CHANGED, ERR IF NOT
+	TLNE	F,(CCF)		;SAVE BEFORE/AFTER FLAG
+	HRROS	PTLLC		;0 MEANS BEFORE, 1 (NEGATIVE) MEANS AFTER
+	SKIPL	PTLLC		;PATCH AFTER?
+	JRST	PTCH3		;NO
+	HRRZ	R,PTLOC		;YES, MOVE INSTRUCTION TO PTLOC NOW
+	MOVE	T,PTWRD
+	PUSHJ	P,DEPERR	;STORE IT
+PTCH3:	PUSHJ	P,CRF		;OPEN REG AT PTLOC AND PRINT CONTENTS
+	HRRZ	T,PTLOC
+	PUSHJ	P,LI1
+	SKIPGE	PTLLC		;PATCH AFTER?
+	PUSHJ	P,LI0		;YES, OPEN SECOND LOC IN PATCH AREA
+	POPJ	P,		;DONE FOR NOW
+
+;TABLE OF SYMBOLS IDENTIFYING PATCH AREAS
+
+PCHSYM:	RADIX50	0,PATCH		;ANOTHER LIKELY POSSIBILITY
+	RADIX50	0,PAT..		;USUAL LINK10 SYMBOL
+	RADIX50	0,PAT		;TOPS-10 SYMBOL
+NPSYM==.-PCHSYM
+
+SUBTTL	PATCH COMMAND -- PATCH END
+
+PTCHE:	SKIPN	PTLOC		;PATCH IN PROGRESS?
+	JRST	ERR		;NO, ERROR
+	TLZ	F,(CF+CCF)	;FLUSH FLAGS BEFORE DEPRA
+	PUSHJ	P,DEPRA		;STORE LAST WORD IF ANY
+	SKIPGE	PTLLC		;PATCH BEFORE?
+	JRST	PTCHE1		;NO
+	HRRZ	R,LLOC		;YES, MOVE ORIG INSTRUCTION NOW
+	AOS	R		;MOVE IT TO NEXT LOC
+	MOVE	T,PTWRD
+	PUSHJ	P,DEPERR	;STORE IT
+	PUSHJ	P,LI0		;OPEN FOR USER TO SEE
+PTCHE1:	HRRZ	R,LLOC		;STORE JUMPA 1,ORIG+1
+	AOS	R		; IN NEXT LOC
+	HRRZ	T,PTLLC
+	ADD	T,[JUMPA 1,1]
+	PUSHJ	P,DEPERR
+	PUSHJ	P,LI0		;OPEN FOR USER TO SEE
+	HRRZ	R,LLOC		;STORE JUMPA 2,ORIG+2
+	AOS	R		; IN NEXT LOC
+	HRRZ	T,PTLLC
+	ADD	T,[JUMPA 2,2]
+	PUSHJ	P,DEPERR
+	PUSHJ	P,LI0		;OPEN FOR USER TO SEE
+	AOS	T,LLOC		;GET NEXT FREE PATCH LOC
+	HLRZ	R,PTLOC		;UPDATE WORD THAT PATLOC CAME FROM
+	HRRM	T,0(R)
+	HRRZ	R,PTLLC		;GET ORIG ADDRESS
+	HRRZ	T,PTLOC		;PUT JUMPA PATCH INTO IT
+	HRLI	T,(JUMPA 0,)
+	PUSHJ	P,DEPERR
+	PUSHJ	P,CRF
+	HRRZ	T,R		;NOW OPEN ORIG REGISTER FOR USER TO SEE
+	PUSHJ	P,LI1
+	SETZM	PTLOC		;SAY NO PATCH IN PROGRESS
+	POPJ	P,		;DONE
+SETPAG==ERR
+XLIST
+
+REPEAT	0,<
+SUBTTL	PAGE TABLE CONTROL ($U)
+
+	IFE	FTDEC20,<
+	IFE	FTEXEC!FTFILE,< SETPAG==ERR>
+	IFN	FTEXEC!FTFILE,<
+
+;COMMAND TO MAKE LIFE EASIER ON THE KI10 AND KL10.
+;FORMAT IS:
+;	$U
+;
+; 1. $U - RESTORE NORMAL MODE
+; 2. K$U - SET USER PAGING WITH UPT AT PAGE K
+; 3. K$NU - SET EXEC PAGING WITH UPT AT K AND EPT AT N
+;
+SETPAG:	TLZE	F,(QF)		;USER SPECIFIED
+	JRST	SETPG1		;YES--CHARGE AHEAD
+	TRZE	F,Q2F		;EXEC TYPED
+	JRST	ERR		;YES--ERROR
+	SETZM	EPTUPT		;JUST $U CLEAR FLAG WORD
+	JRST	RET		;DONE
+SETPG1:	TRO	T,400000	;DO NOT STORE ZERO
+	PUSH	P,EPTUPT	;SAVE OLD VALUE
+	PUSH	P,T		;SAVE NEW VALUE
+	SETZM	EPTUPT		;RESTORE PHYSICAL ADDRESSING
+	MOVE	R,T		;COPY ADDRESS
+	LSH	R,9		;CONVERT TO WORD ADDR
+	TLNN	R,777377	;TEST FOR JUNK
+	PUSHJ	P,FETCH		;TEST ADDRESS
+	 JRST SETPGE		;ERROR
+	TRZN	F,Q2F		;EXEC GIVEN
+	JRST	SETPGX		;NO--DONE
+	MOVE	R,WRD2		;GET SECOND WORD
+	TRO	R,400000	;MAKE SURE NON-ZERO
+	HRLM	R,(P)		;STORE IN ANSWER
+	LSH	R,9		;TEST FOR VALID
+	TLNN	R,777377	; POINTER
+	PUSHJ	P,FETCH		; ..
+	 JRST SETPGE		;BAD ADDRESS
+SETPGX:	POP	P,EPTUPT	;SET ANSWER
+	POP	P,T		;RESTORE T
+	JRST	RET		;DONE
+
+SETPGE:	POP	P,T		;UNDO THIS COMMAND
+	POP	P,EPTUPT	; ..
+	JRST	ERR		;SET ERROR
+	>			;END EDDT AND FILDDT SWITCH
+	>			;END IFE FTDEC20
+	>
+LIST
+
+SUBTTL GO AND EXECUTE LOGIC
+
+	IFE	FTFILE,<
+CNTRLZ:	IFN	FTEXEC,<
+	SKPUSR			;SEE IF USER MODE
+	JRST	ERR>		;NO--ERROR
+;	IFE	FTDEC20,<
+	MOVE	T,[CALLI 1,12]	;>	;GET MONRET
+;	IFN	FTDEC20,<
+	MOVE	T,[HALTF]	;>	;HALT THIS FORK
+	JRST	XEC0		;GO EXECUTE IT
+
+GO:	HRLI	T,(JRST)	;G
+	TLOE	F,(QF)		;DID USER TYPE AN ARG TO $G?
+	JRST	XEC		;YES, GO DO IT
+XLIST
+	REPEAT	0,<
+	IFN	FTDEC20,<
+	IFN	FTEXEC,<
+	SKPUSR
+	JRST	ERR>		;NO SUCH COMMAND IN EDDT
+	MOVEI	T1,.FHSLF
+	GEVEC			;GET ENTRY VECTOR
+	HLRZ	TT,T2		;GET ITS LENGTH
+	CAIN	TT,(JRST)	;TOPS10 FORMAT?
+	JRST	GO1		;YES
+	CAIL	TT,1000		;REASONABLE?
+	JRST	ERR		;NO
+	HRR	T,T2		;SETUP FIRST LOCATION
+	TRNN	F,Q2F		;SECOND QUANT? (I.E. $1G)
+	SETZM	WRD2		;NO, ASSUME ZERO
+	CAMG	TT,WRD2		;WITHIN RANGE?
+	JRST	ERR		;NO
+	ADD	T,WRD2		;ADD OFFSET WITHIN VECTOR
+	JRST	XEC		;NOW HAVE JRST ADR  IN T, XCT IT
+GO1:>				;END IFN FTDEC20
+	HRR	T,.JBSA		;NO, GET ADDR FROM .JBSA
+	IFN	FTEXEC,<
+	SKPEXC			;EXEC MODE HAS NO .JBSA, SO ERROR
+	>
+>
+LIST
+	HRR	T,.JBSA
+	TRNN	T,-1		;WAS C(.JBSA) NONZERO?
+	JRST	ERR		;NO, SO ERROR
+
+XEC:	TLNN	F,(QF)		;SKIP IF QUANTITY TYPED
+	TDZA	T,T		;MAKE SURE COUNT IS ZERO
+	TLNN	T,777000	;SKIP IF VALID INSTRUCTION
+	JRST	$X		;GOTO SINGLE STEP EXECUTE ROUTINE
+XEC0:	MOVEM	T,TEM
+	PUSHJ	P,CRF
+	PUSHJ	P,INSRTB
+	SETZM	SKPCT		;INIT SKIP COUNT
+	JSP	T,RESTORE
+	XCT	TEM
+XEC1:	 AOS SKPCT		;NOTE NOSKIP, SKIP, DOUBLE SKIP
+	 AOS SKPCT
+	JSR	SAVE		;SAVE CONTEXT
+	 PUSHJ P,REMOVB		;REMOVE BRKPTS
+	MOVEI	TT,3
+	SUB	TT,SKPCT	;COMPUTE AMOUNT OF PC INCREMENT
+	IFE	FTDEC20,<
+	CAIG	TT,1		;INSTRUCTION SKIPPED?
+	JRST	DD1		;NO
+	MOVE	W1,[ASCII ""]	;MAKE SURE IT IS CLEAR
+	PUSHJ	P,TEXT2		; THAT THIS WAS A SKIP
+	PUSHJ	P,CRF		;TYPE 2 CR-LFEEDS
+	JRST	DD1
+	>
+	IFN	FTDEC20,<
+	MOVEI	W1,"$"
+	PUSHJ	P,TEXT		;PRINT $ FOR EACH INCREMENT
+	SOJG	TT,.-2
+	JRST	DD1>
+	>
+
+	IFN	FTFILE,<
+BCOM==>
+	>
+
+SUBTTL	SINGLE STEP EXECUTE LOGIC
+
+	IFE	FTFILE,<
+
+;$X IS A  FEATURE THAT OPERATES AS FOLLOWS:
+;	$X OR N$X OR $$X OR N$$X, WHERE N .LT. 2^27, WILL DISPATCH TO
+;	THIS CODE.  THE FOLLOWING ACTIONS WILL BE PERFORMED:
+;
+;   $X EXECUTE A SINGLE INSTRUCTION, THEN INCREMENT THE PC.  THE
+;	OPERANDS TO THE INSTRUCTION WILL BE PRINTED OUT AS THEY
+;	EXIST **AFTER** EXECUTION OF THE INSTRUCTION.  AN EXTRA
+;	LINE FEED WILL BE PRINTED IF THE INSTRUCTION SKIPPED OR
+;	JUMPED.  THE NEXT INSTRUCTION WILL THEN BE PRINTED.
+;	$P WILL ALWAYS DO THE RIGHT THING AFTER ANY NUMBER OF $X'S.
+;
+;  N$X REPEAT THE $X CYCLE N TIMES.
+;
+; N$$X SAME AS N$X EXCEPT THAT ALL PRINTOUT IS SUPPRESSED FOR
+;	ALL BUT THE LAST $X CYCLE.
+;
+;  $$X PERFORM A NON-PRINTING $X CYCLE UNTIL THE PC REACHES EITHER
+;	.+1 OR .+2; I.E. UNTIL ONE OF THE NEXT 2 INSTRUCTIONS IS
+;	EXECUTED.  THIS IS USEFUL FOR TREATING A SUBROUTINE CALL
+;	AS A SINGLE INSTRUCTION FOR THE PURPOSES OF $X.
+
+
+;FLAGS USED IN $X LOGIC ONLY
+
+	FAC== 1			;SIGNALS AC TO BE PRINTED
+	DFAC== 2		;SIGNALS INST THAT USES 2 AC'S
+	FLG== 4			;INST MODIFIES FLAGS (JRST,JFCL)
+	IMM== 10		;SIGNALS IMMEDIATE MODE INST
+	EA== 20			;SIGNALS MEMORY REFERENCE INST
+	DEA== 40		;SIGNALS INST THAT REFERENCES 2 MEM LOCS
+	FLA== 100		;SIGNALS FLOATING AC OPERAND
+	FLE== 200		;SIGNALS FLOATING MEM OPERAND
+
+;COME HERE FROM $X COMMAND, WITH T SET TO ZERO IF NO QUANTITY WAS
+;   TYPED.
+
+$X:	MOVEM	T,XTEM		;STORE REPETITION COUNT
+	JUMPG	T,$X00		;JUMP IF POSITIVE COUNT
+	HRRZ	T,PROC0		;ZERO, FETCH CURRENT PC
+	MOVEM	T,LOCSAV	;AND REMEMBER IT
+	SETOM	XTEM		;SET REPETITION COUNT NEGATIVE
+	TLNN	F,(CCF)		;$$X WITH NO ARG?
+	MOVNS	XTEM		;NO, ONLY $X. TREAT AS 1$X
+$X00:	PUSHJ	P,CRF		;OUTPUT CRLF TO START
+
+;HERE ON REPEATED $X CYCLES
+
+$X01:	SOSN	XTEM		;DECREMENT AND TEST COUNTER
+	TLZ	F,(CCF)		;CLEAR $$ FLAG TO END REPETITIONS
+	TLZ	F,(QF!CF!STF)	;TURN OFF QUANT, $, ! FLAGS
+	MOVEM	F,FLAGS		;SAVE REGULAR DDT FLAGS
+	HRRZI	T,100		;SETUP MAX XCT DEPTH
+	HRRZM	T,XCTS
+	HRRZ	R,PROC0		;FETCH ADR OF CURRENT INST
+	CAIN	R,XEC1		;JUST HIT BREAKPOINT OR DID $X LAST?
+	JRST	ERR		;NO, JUST ENTERED DDT, SO ERROR
+	SKIPL	XTEM		;INDEFINITE $$X BEING EXECUTED?
+	MOVEM	R,LOCSAV	;NO, REMEMBER OLD PC FOR THIS INST
+$X02:	PUSHJ	P,FETCH		;FETCH CURRENT INSTRUCTION
+	 JRST ERR		;ERROR
+$XO3:	MOVEM	T,I.NST		;STORE CURRENT INSTRUCTION
+	JSR	SWAP		;SWAP TO USER CONTEXT
+	MOVEM	T,SAFETY	;SAVE T
+	MOVEI	T,@I.NST	;COMPUTE EFFECTIVE ADR OF INST
+	DPB	T,[POINT 23,I.NST,35]	;STORE COMPUTED ADR IN CURRENT INST
+	HRRZM	T,I.NSTEA	;REMEMBER IT AGAIN
+	MOVE	T,SAFETY	;RESTORE T
+	JSR	SWAP		;SWAP BACK TO DDT CONTEXT
+	LDB	W1,[POINT 4,I.NST,12]	;EXTRACT AC FIELD
+	MOVEM	W1,I.NSTAC	;STORE IT AWAY
+	MOVSI	T,777000	;MASK FOR OPCODE
+	AND	T,I.NST		;FETCH OPCODE
+	HLRZ	F,T		;SAVE IN RH FOR LATER
+	CAMLE	T,$XTBL(T)	;IN RANGE OF CURRENT TABLE ENTRY?
+	AOJA	T,.-1		;NO, KEEP SEARCHING
+	JRST	@$XTBL(T)	;YES, DISPATCH
+
+	IFE	FTEXEC,<
+	MONUI== JUSTI		;IF USER DDT, TREAT MONITOR UUOS
+	MONUE== JUSTE		;  AS HARDWARE INSTRUCTIONS
+	MONUAI==SETI
+	MONUAE==SETEA
+	MONINI==ERR		;CANNOT TRACE INIT
+	>
+
+;OPCODE DISPATCH TABLE.
+;   LH OF EACH ENTRY CONTAINS LARGEST OPCODE COVERED BY THAT ENTRY,
+;   RH CONTAINS DISPATCH ADDRESS.
+
+$XTBL:	SETZB	SET		; 400-403  SETZX
+	ORCBB	CHECKI		; 404-473  ALL LOGICAL EXCEPT SETX
+	SETOB	SET		; 474-477  SETOX
+	HLRES	CHEKIS		; 500-577  HALFWORD
+	TSON	TESTS		; 600-677  TEST CLASS
+	777000,,IOTS		; 700-777  I/O INSTRUCTIONS
+	0 ,, ERR		;     000  ALWAYS ILLEGAL
+	037000,,USRUUO		; 001-037  USER UUOS
+	CALL	MONUAE		;     040  CALL
+	INIT	MONINI		;     041  INIT
+	CALLI	MONUAI		; 042-047  UNDEFINED AND CALLI
+	TTCALL	MONUE		; 050-051  OPEN,TTCALL
+	054000,,MONUAI		; 052-054  UNDEFINED
+	OUT	MONUE		; 055-057  RENAME,IN,OUT
+	STATO	MONUI		; 060-061  SETSTS,STATO
+	GETSTS	MONUE		;     062  GETSTS
+	OUTBUF	MONUI		; 063-065  STATZ,INBUF,OUTBUF
+	OUTPUT	MONUE		; 066-067  INPUT,OUTPUT
+	USETO	MONUI		; 070-075  CLOSE,RELEAS,MTAPE,UGETF,USETI,USETO
+	ENTER	MONUE		; 076-077  LOOKUP,ENTER
+	103000,,SETI		; 100-103  UNDEFINED
+	104000,,DOIT		;     104  JSYS
+	107000,,SETI		; 105-107  UNDEFINED
+	DFDV	DFLOT		; 110-113  DFAD,DFSB,DFMP,DFDV		*** KI10
+	117000,,SETI		; 114-117  UNDEFINED
+	DMOVN	DMOV		; 120-121  DMOVE,DMOVN			*** KI10
+	FIX	FXAFLE		;     122  FIX				*** KI10
+	123000,,SETI		;     123  UNDEFINED
+	DMOVNM	DMOV		; 124-125  DMOVEM,DMOVNM		*** KI10
+	FIXR	FXAFLE		;     126  FIXR				*** KI10
+	FLTR	FLAFXE		;     127  FLTR				*** KI10
+	UFA	IUFA		;     130  UFA
+	DFN	IDFN		;     131  DFN
+	FSC	IFSC		;     132  FSC
+	IBP	JUSTE		;     133  IBP
+	DPB	SETEA		; 134-137  XLDB,XDPB
+	FDVRB	FLOAT		; 140-177  FADXX,FSBXX,FMPXX,FDVXX
+
+;CONTINUATION OF OPCODE DISPATCH TABLE.
+
+	MOVMS	CHEKIS		; 200-217  MOVXX
+	IMULB	CHECKI		; 220-223  IMULX
+	DIVB	MULDIV		; 224-237  MULX,XDIVX
+	LSH	SETI		; 240-242  ASH,ROT,LSH
+	JFFO	IJFFO		;     243  JFFO
+	LSHC	DBLI		; 244-246  ASHC,ROTC,LSHC
+	247000,,SETI		;     247  UNDEFINED
+	EXCH	SETEA		;     250  EXCH
+	BLT	SETI		;     251  BLT
+	AOBJN	IAOBJ		; 252-253  AOBJP,AOBJN
+	JRST	IJRST		;     254  JRST
+	JFCL	IJFCL		;     255  JFCL
+	XCT	IIXCT		;     256  XCT
+	MAP	SETEA		;     257  MAP				*** KI10
+	PUSHJ	IIPUSHJ		;     260  PUSHJ
+	POP	SETEA		; 261-262  PUSH,POP
+	POPJ	IPOPJ		;     263  POPJ
+	JSR	I.JSR		;     264  JSR
+	JSP	I.JSP		;     265  JSP
+	JSA	I.JSA		;     266  JSA
+	JRA	IAOBJ		;     267  JRA
+	SUBB	CHECKI		; 270-277  ADDX,SUBX
+	CAIG	SETI		; 300-307  CAIXX
+	CAMG	SETEA		; 310-317  CAMXX
+	SOSG	JMPSKP		; 320-377  JUMPXX,SKIPXX,AOJXX,AOSXX,SOJXX,SOSXX
+
+;MONITOR UUO HANDLER
+
+	IFN	FTEXEC,<
+MONUAI:	TLO	F,FAC		;REMEMBER TO PRINT AC
+MONUI:	SKPEXC			;SKIP IF EXEC MODE
+	JRST	JUSTI		;USER MODE, TREAT UUO AS SINGLE INST
+	JRST	MONUE		;EXEC MODE, TRACE THE UUO
+
+MONUAE:	TLO	F,FAC		;REMEMBER TO PRINT AC
+MONUE:	SKPEXC			;SKIP IF EXEC MODE
+	JRST	JUSTE		;USER MODE, TREAT UUO AS SINGLE INST
+	SKPKA			;CAN SIMULATE ON A KA
+	JRST	ERR		;PUNT ON A KL OR KI
+	JRST	USRUUO		;EXEC MODE, TRACE THE UUO
+
+MONINI:	SKPEXC			;SKIP IF EXEC MODE
+	JRST	ERR		;USER MODE, CAN'T FOLLOW AN INIT
+				;EXEC MODE, TRACE NORMALLY
+	>
+;USER UUO HANDLER
+
+USRUUO:	MOVEI	R,40		;SETUP JOBUUO
+	EXCH	F,FLAGS		;RESTORE REGULAR FLAGS
+	MOVE	T,I.NST		;FETCH INST WITH EFF ADR COMPUTED
+	PUSHJ	P,DEPMEM	;STORE USER UUO IN JOBUUO
+	 JRST ERR		;ERROR
+	EXCH	F,FLAGS		;RESTORE $X FLAGS
+	MOVE	T,[XCT 41]	;PRETEND INSTRUCTION WAS AN XCT
+	JRST	$XO3
+
+;INTERPRET UFA
+
+IUFA:	TLOA	F,FLA+FLE+DFAC	;REMEMBER FLTG PT, USES 2 AC'S
+
+;INTERPRET DFN
+
+IDFN:	TLO	F,FLA!FLE	;DFN, REMEMBER AC AND E FLOAT
+	JRST	SETEA
+
+;INTERPRET FLOATING POINT INSTRUCTIONS
+
+FLOAT:	ANDI	F,7000		;FLOATING PT, GET MODE
+	CAIN	F,1000		;LONG MODE?
+	TLOA	F,DFAC		;YES, PRINT 2 AC'S
+	CAIE	F,5000		;IMMEDIATE MODE?
+	TLOA	F,FLA+FLE+FAC+EA	;NO, PRINT AC AND E BOTH FLOATING
+FLOATI:	TLO	F,FLA+FLE+FAC+IMM	;YES, PRINT AC AND E IMMEDIATE FLTG
+	JRST	DOIT
+
+;INTERPRET JRST
+
+IJRST:	TLO	F,IMM		;REMEMBER TO PRINT E
+	TRNE	W1,2		;IS INSTRUCTION JRSTF?
+	TLO	F,FLG		;YES, REMEMBER TO PRINT FLAGS
+IJRST0:	PUSHJ	P,FETCH		;FETCH INST OR INDIRECT WORD
+	 JRST ERR		;ERROR
+	MOVE	W1,T		;COPY INTO W1
+	LDB	R,[POINT 4,T,17]	;LOAD INDEX FIELD
+	JUMPE	R,IJRST1	;JUMP IF NO INDEXING TO PERFORM
+	MOVE	T,AC0(R)	;FETCH CONTENTS OF INDEX REGISTER
+	TLZ	T,(Z @(17))	;CLEAR I AND X FIELDS IN INDEX REG
+	ADDI	T,(W1)		;COMPUTE INDEXED ADDRESS
+	TLZ	T,(Z @(17))	;CLEAR ANY OVERFLOW
+IJRST1:	MOVEI	R,(T)		;COPY RESULTING ADDRESS
+	TLNE	W1,(@)		;INDIRECT?
+	JRST	IJRST0		;YES, FOLLOW NEXT LEVEL OF INDIRECTION
+
+;LH OF T NOW CONTAINS FLAGS THAT WILL BE RESTORED
+
+	IFN	FTEXEC!FTMON,<
+	IFN	FTEXEC,<	;DEC20 MONITOR DDT DOESN'T HAVE SKPEXC
+	SKPEXC			;NOW IN EXEC MODE?
+	JRST	IJRST3		;NO, USER MODE
+	>
+	MOVE	W1,I.NSTAC	;YES, FETCH AC FIELD OF JRST INST
+	TRNE	W1,1		;JUMP TO USER MODE?
+	JRST	JRSPRC		;YES, CAN'T TRACE. GO DO $P
+	TRNE	W1,2		;JRSTF?
+	TLNN	T,(1B5)		;YES, GOING TO ENTER USER MODE?
+	JRST	IJRST3		;NO TO EITHER, HANDLE NORMALLY
+JRSPRC:	EXCH	F,FLAGS		; $X OPERATION IMPOSSIBLE. RESTORE FLAGS
+	TLZ	F,(QF+CCF)	;CLEAR QUANT AND $$ FLAGS
+	JRST	PROCD1		;AND EXECUTE $P TO GO INTO USER MODE
+	>
+
+IJRST3:	HRRI	T,NOSKIP	;MODIFY THE JRST EFFECTIVE ADR
+	MOVEM	T,BCOM		;STORE NEW FLAGS,,NOSKIP
+	MOVE	T,I.NST		;FETCH INST AGAIN
+	HRRM	T,PROC0		;STORE EFF ADR AS NEW PC
+	HRRI	T,BCOM		;TURN INTO JRST @BCOM
+	TLO	T,(@)
+	MOVEM	T,I.NST		;AND STORE
+	JRST	DOIT		;DO IT
+
+;INTERPRET XCT
+
+IIXCT:
+	IFN	FTEXEC!FTMON,<
+	DPB	W1,[POINT 4,I.XCT,12]>	; USE IN XCT PAGED
+	MOVE	F,FLAGS		;GET BACK NORMAL DDT FLAGS
+	SOSG	XCTS		;CHECK XCT COUNTER
+	JRST	ERR		;ERROR - DEPTH EXCEEDED
+	TLNE	F,(CCF)		;$$X?
+	JRST	IIXCT1		;YES, DON'T PRINT ANYTHING
+	HRRZ	T,I.NSTEA	;GET EFF ADR OF XCT
+	PUSHJ	P,PINST		;PRINT INST BEING XCT'ED
+	PUSHJ	P,CRF		;OUTPUT CRLF AFTER INST
+IIXCT1:	HRRZ	R,I.NSTEA	;GET EFF ADR OF XCT AGAIN
+	JRST	$X02		;PROCESS EXECUTED INST
+
+;INTERPRET PUSHJ
+
+IIPUSHJ:AOS T,PROC0		;GET CURRENT PC +1
+	HLL	T,SAVPI		;PUT FLAGS IN LH
+	MOVEM	T,I.NSTPC	;STORE AWAY TO BE STACKED
+	MOVSI	T,(1B4)		;CLEAR BIS FLAG IN NEW PC WORD
+	ANDCAM	T,SAVPI
+	SOS	T,I.NST		;GET EFF ADR OF PUSHJ, -1 TO FOOL DOIT
+	HRRM	T,PROC0		;STORE NEW PC -1
+	HRLZI	T,(-)	;WANT TO TURN PUSHJ INTO A PUSH
+	DPB	T,[POINT 5,I.NST,17]	;CLEAR I AND AC FIELD
+	JRST	IPOPJ2		;REST OF CODE COMMON WITH POPJ
+
+;INTERPRET POPJ
+
+IPOPJ:	EXCH	F,FLAGS		;POPJ, RESTORE NORMAL DDT FLAGS
+	HRRZ	R,AC0(W1)	;FETCH CONTENTS OF CORRECT USER AC
+	PUSHJ	P,FETCH		;FETCH PCWORD IT POINTS TO
+	 JRST ERR		;ERROR
+	EXCH	F,FLAGS		;RESTORE $X FLAGS
+	HRRI	T,-1(T)		;DECREMENT PC TO FOOL CODE AT DOIT
+	HRRM	T,PROC0		;STORE AS CURRENT PC
+	HRLZI	T,(-)	;SETUP TO TURN POPJ INTO POP
+
+;COMMON CODE FOR PUSHJ, POPJ
+
+IPOPJ2:	ADDM	T,I.NST		;TURN PUSHJ INTO PUSH OR POPJ INTO POP
+	HRRZI	T,I.NSTPC	;SETUP ADR OF PC WORD FOR PUSHJ
+	HRRM	T,I.NST
+	TLOA	F,FAC		;REMEMBER TO PRINT AC
+
+;INTERPRET FSC
+
+IFSC:	TLO	F,FAC+FLA+IMM	;FLOATING AC, FIXED IMMEDIATE E
+	JRST	DOIT
+
+;INTERPRET JSA
+
+I.JSA:	AOS	T,PROC0		;JSA, SETUP RETURN PC
+	HRL	T,I.NSTEA	;PUT EFF ADR IN LH LIKE JSA DOES
+	EXCH	T,AC0(W1)	;STORE IN USER AC, GET OLD CONTENTS
+	JRST	I.JSR2		;STORE OLD CONTENTS LIKE JSR, THEN JUMP
+
+;INTERPRET JSR
+
+I.JSR:	AOS	T,PROC0		;JSR, GET CURRENT PC
+	HLL	T,SAVPI		;SETUP LH OF PC WORD
+	TLO	F,FAC		;REMEMBER NOT TO PRINT AC FIELD
+	MOVSI	W1,(1B4)	;CLEAR BIS FLAG IN NEW PC WORD
+	ANDCAM	W1,SAVPI
+I.JSR2:	TLO	F,EA		;PRINT E NORMALLY
+	EXCH	F,FLAGS		;RESTORE NORMAL DDT FLAGS
+	HRRZ	R,I.NSTEA	;FETCH EFF ADR OF JSR OR JSA
+	PUSHJ	P,DEPMEM	;STORE PC WORD
+	 JRST ERR		;ERROR
+	EXCH	F,FLAGS		;RESTORE $X FLAGS
+	HRRZ	T,I.NSTEA	;GET EFF ADR AGAIN
+	AOJA	T,I.JSR4	;INC PAST STORED PC WORD
+
+;INTERPRET JSP
+
+I.JSP:	AOS	T,PROC0		;JSP, SETUP RETURN PC
+	HLL	T,SAVPI		;SETUP LH OF PC WORD
+	MOVEM	T,AC0(W1)	;STORE IN USER AC
+	MOVSI	T,(1B4)		;CLEAR BIS FLAG IN NEW PC WORD
+	ANDCAM	T,SAVPI
+	HRRZ	T,I.NSTEA	;GET BACK EFF ADR
+I.JSR4:	HRRM	T,PROC0		;STORE NEW PC
+	TLC	F,FAC		;REMEMBER TO PRINT AC
+	JRST	TELL		;GO PERFORM PRINTOUT
+
+
+;INTERPRET KI10 INSTRUCTIONS
+
+DFLOT:	TLO	F,FLA+FLE	;REMEMBER THAT AC AND E ARE FLOATING
+DMOV:	TLO	F,DFAC+DEA	;REMEMBER AC AND E BOTH DOUBLE
+	JRST	SETEA
+
+FXAFLE:	TLOA	F,FLE		;REMEMBER THAT E FLOATS (FIX,FIXR)
+FLAFXE:	TLO	F,FLA		;REMEMBER THAT AC FLAOATS (FLTR)
+	JRST	SETEA
+
+;INTERPRET JFFO
+
+IJFFO:	TLO	F,DFAC		;REMEMBER JFFO USES 2 AC'S
+
+;INTERPRET JUMP AND SKIP INSTRUCTIONS
+
+JMPSKP:	TRNE	F,10000		;JUMP/SKIP, WHICH IS IT?
+	JRST	SKP		;SKIP CLASS
+
+;INTERPRET AOBJN AND AOBJP
+
+IAOBJ:	TLOA	F,FAC+IMM	;HANDLE AS IMMEDIATE MODE INST WITH AC
+
+;INTERPRET JFCL
+
+IJFCL:	TLO	F,FLG		;REMEMBER TO PRINT FLAGS
+	MOVEI	T,JMP		;JUMP CLASS OR AOBJ, COME BACK TO $X
+	HRRM	T,I.NST		;STORE MODIFIED INST
+	JRST	DOIT		;GO EXECUTE CONDITIONAL INST
+
+;HERE AFTER EXECUTING CONDITIONAL JUMP INSTRUCTION THAT ACTUALLY
+;   DOES JUMP
+
+JMP:	EXCH	T,I.NSTEA	;SAVE T, GET EFF ADR OF JUMP
+	HRRM	T,PROC0		;STORE EFF ADR AS NEW PC
+	EXCH	T,I.NSTEA
+	JRST	NOSKIP		;NOW DO PRINTOUT
+
+;HERE FOR ALL SKIP INSTRUCTIONS
+
+SKP:	JUMPN	W1,SETEA	;SKIP CLASS - AC FIELD ZERO?
+JUSTE:	TLOA	F,EA		;YES, JUST PRINT E
+
+;INTERPRET SHIFT COMBINED INSTRUCTIONS
+
+DBLI:	TLO	F,FAC+DFAC+IMM	;REMEMBER 2 AC'S USED, IMMEDIATE
+	JRST	DOIT		;EXECUTE NORMALLY
+
+;INTERPRET TEST CLASS INSTRUCTIONS
+
+TESTS:	TRNN	F,10000		;SKIP ON TD OR TS BUT NOT ON TR OR TL
+	TLOA	F,FAC+IMM	;IMMEDIATE MODE
+	TLO	F,FAC+EA	;NORMAL MODE
+	JRST	DOIT
+
+;I/O INSTRUCTIONS
+
+IOTS:	TRNE	W1,4		;SKIP IF BLKI,DATAI,BLKO,DATAO
+	CAIN	W1,5		;SKIP IF NOT CONI
+	TLOA	F,EA		;MEM REF INSTRUCTION
+JUSTI:	TLO	F,IMM		;IMMEDIATE INST
+	JRST	DOIT
+
+;ALL PATHS CONVERGE HERE
+
+CHEKIS:	TRC	F,3000		;HERE TO TEST FOR IMMEDIATE OR SELF MODE
+	TRCE	F,3000		;SKIP IF SELF MODE
+	JRST	CHECKI		;NO, CHECK IMMEDIATE
+	JRST	SKP		;YES, GO TEST FOR NONZERO AC FIELD
+SET:	ANDI	F,3000		;HERE FOR SETZX,SETOX
+	CAIE	F,2000		;SETZM,SETOM?
+	TLO	F,FAC		;NO, AC IS ALWAYS AFFECTED
+	TRNE	F,2000		;SETZM,SETZB,SETOM,SETOB?
+	TLO	F,EA		;YES, MEM IS ALWAYS AFFECTED
+	JRST	DOIT
+
+;FIXED POINT MULTIPLY AND DIVIDE (NOT INCLUDING IMULX)
+
+MULDIV:	ANDI	F,3000		;MASK MODE BITS
+	CAIE	F,2000		;TO MEMORY ONLY?
+	TLO	F,DFAC		;NO, INST USES 2 AC'S
+CHECKI:	TRNE	F,1000		;TEST FOR IMMEDIATE MODE INST
+	TRNE	F,2000
+SETEA:	TLOA	F,FAC+EA	;MEM REF INSTRUCTION
+SETI:	TLO	F,FAC+IMM	;IMMEDIATE MODE INSTRUCTION
+DOIT:	EXCH	F,FLAGS		;RESTORE NORMAL DDT FLAGS
+	PUSHJ	P,TTYLEV	;RESTORE STATUS OF CTY (EXEC MODE)
+	JSR	SWAP		;SWAP TO USER CONTEXT
+	XCT	I.XCT		;EXECUTE THE INSTRUCTION (IF IN EXEC MODE
+				; ON A KI10 THIS MAY BE EXECUTIVE XCT)
+	 JRST IXS1		;NO SKIP, INCREMENT PC ONCE
+	 JRST IXS2		;SKIP, INCREMENT PC TWICE
+	AOS	PROC0		;DOUBLE SKIP, INCREMENT PC THRICE
+IXS2:	AOS	PROC0
+IXS1:	AOS	PROC0
+
+;HERE AFTER SIMULATING OR EXECUTING INSTRUCTION.
+;  PERFORM REQUIRED PRINTOUT.
+
+NOSKIP:	JSR	SWAP		;RESTORE DDT CONTEXT
+	PUSHJ	P,TTYRET	;RESTORE DDT TTY MODES
+	JRST	.+2
+TELL:	EXCH	F,FLAGS		;GET DDT'S FLAGS
+	IFN	FTEXEC!FTMON,<
+	MOVEI	T,0		;CLEAR THE AC FIELD OF I.XCT
+	DPB	T,[POINT 4,I.XCT,12]	;SO NEXT INSTRUCTION HAPPENS OK
+	>
+	TLNE	F,(CCF)		;IF $$X, DON'T PRINT ANYTHING
+	JRST	NXTIT
+	EXCH	F,FLAGS		;RESTORE $X'S FLAGS
+	PUSH	P,SCH		;SAVE CURRENT OUTPUT MODE
+	TLNE	F,FLA		;FLOATING AC?
+	MOVEI	SCH,TFLOT	;YES, SETUP TO OUTPUT IN FLOATING PT
+	TLNE	F,FAC		;AC TO BE PRINTED?
+	PUSHJ	P,FAC0		;YES, DO IT
+	TLNE	F,DFAC		;INST USE 2 AC'S?
+	PUSHJ	P,DBL0		;YES, PRINT LOW-ORDER AC
+	TLNE	F,FLG		;INSTRUCTION ACCESS THE FLAGS?
+	PUSHJ	P,FLG0		;YES, PRINT FLAGS
+	MOVE	SCH,(P)		;RESTORE OLD MODE
+	TLNE	F,FLE		;FLOATING MEMORY OPERAND?
+	MOVEI	SCH,TFLOT	;YES, SETUP FLTG OUTPUT
+	TLNE	F,IMM		;IMMEDIATE MODE?
+	PUSHJ	P,IMM0		;YES, JUST PRINT E
+	TLNE	F,EA		;MEM REF INST?
+	PUSHJ	P,EA0		;YES, PRINT C(E)
+	TLNE	F,DEA		;DOUBLE-WORD MEM OPERAND?
+	PUSHJ	P,DEA0		;YES, OUTPUT 2ND WORD
+	POP	P,SCH		;RESTORE CURRENT OUTPUT MODE
+	EXCH	F,FLAGS		;RESTORE DDT FLAGS
+	PUSHJ	P,CRF		;OUTPUT CRLF
+
+;NOW TEST WHETHER TO CONTINUE, AND PRINT NEXT INST IF REQUIRED.
+
+NXTIT:	HRRZ	T,PROC0		;FETCH NEW PC
+	MOVEI	W1,1(T)		;COMPUTE PC+1
+	HRRZM	W1,BCOM		;STORE FOR $P
+	HRRZ	W1,LOCSAV	;FETCH OLD PC
+	SKIPL	XTEM		;INDEFINITE $$X IN PROGRESS?
+	JRST	NXT0		;NO
+	CAIE	T,1(W1)		;YES, ARE WE NOW AT OLD PC +1?
+	CAIN	T,2(W1)		;  OR +2?
+	JRST	$XQUIT		;YES, STOP ITERATION NOW
+NXT0:	PUSHJ	P,LISTEN	;NO, HAS USER TYPED ANYTHING?
+	 JRST NXT1		;NO, CONTINUE
+$XQUIT:	SETZM	XTEM		;YES, STOP ITERATION BY ZEROING COUNTER
+	TLZ	F,(CCF)		;  AND CLEARING CONTROL FLAG
+NXT1:	TLNE	F,(CCF)		;$$ STILL IN EFFECT?
+	JRST	NXT2		;YES, DON'T PRINT ANYTHING
+	HRRZ	T,PROC0		;NO, GET CURRENT PC AGAIN
+	CAIN	T,1(W1)		;DOES IT EQUAL OLD PC +1?
+	JRST	NXT1A		;YES--JUST CONTINUE
+	CAIN	T,2(W1)		;SKIP OR JUMP
+	SKIPA	W1,[ASCII ""]	;SKIP
+	MOVE	W1,[ASCII ""]	;JUMP
+	PUSHJ	P,TEXT2		;SAY SKIP OR JUMP
+	PUSHJ	P,CRF		;ADD CRLF
+NXT1A:	HRRZ	T,PROC0		;FETCH CURRENT PC AGAIN
+	PUSHJ	P,PINST		;PRINT INSTRUCTION ABOUT TO BE EXECUTED
+	SKIPE	XTEM		;ARE WE STILL LOOPING?
+	PUSHJ	P,CRF		;YES, PRINT CRLF AFTER INST
+NXT2:	SKIPE	XTEM		;SKIP IF REPEAT COUNTER IS ZERO
+	JRST	$X01		;NONZERO, REPEAT $X CYCLE AGAIN
+	JRST	TTYCLR		;ZERO, FLUSH ANY WAITING INPUT CHARACTERS
+				;   AND RETURN FROM $X INSTRUCTION
+
+;OUTPUT ROUTINES
+
+;ROUTINE TO PRINT SECOND ACCUMULATOR
+
+DBL0:	AOS	T,I.NSTAC	;INCREMENT AC NUMBER
+	TRZA	T,777760	;ENSURE 17 WRAPS AROUND TO 0
+
+;ROUTINE TO PRINT CONTENTS OF ACCUMULATOR
+
+FAC0:	MOVE	T,I.NSTAC	;FETCH AC NUMBER
+	JRST	EA2
+
+;ROUTINE TO PRINT THE FLAGS
+
+FLG0:	PUSHJ	P,LCT		;PRINT TAB
+	HLRZ	T,SAVPI		;GET LH OF PC WORD
+	JRST	IMM1		;PRINT FLAGS
+
+;ROUTINE TO PRINT JUST E FOR AN IMMEDIATE MODE INSTRUCTION
+
+IMM0:	PUSHJ	P,LCT		;PRINT TAB
+	HRRZ	T,I.NSTEA	;FETCH E
+	TLNE	F,FLE		;FLTG PT MEM OPERAND?
+	MOVS	T,T		;YES, IMMEDIATE SWAPS HALVES
+IMM1:	EXCH	F,FLAGS		;RESTORE DDT FLAGS
+	PUSHJ	P,CONSYM	;OUTPUT CONTENTS OF T
+	JRST	EA6		;RESTORE $X FLAGS AND RETURN
+
+;ROUTINE TO PRINT 2ND MEMORY OPERAND
+
+DEA0:	AOS	I.NSTEA		;INC TO ADR OF 2ND OPERAND
+
+;ROUTINE TO PRINT MEMORY OPERAND
+
+EA0:	MOVE	T,I.NSTEA	;FETCH ADR OF MEM OPERAND
+EA2:	EXCH	F,FLAGS		;HERE FROM DBL0,FAC0
+	PUSH	P,T		;SAVE ARG
+	PUSHJ	P,LCT		;OUTPUT TAB
+	POP	P,T		;RESTORE ADR OF LOC TO BE PRINTED
+	PUSHJ	P,LI1		;PRINT ADR/ CONTENTS
+EA6:	EXCH	F,FLAGS		;RESTORE $X FLAGS
+	POPJ	P,
+
+;ROUTINE TO PRINT INSTRUCTION ALWAYS IN SYMBOLIC DESPITE CURRENT MODE
+
+PINST:	PUSH	P,SCH		;SAVE CURRENT OUTPUT MODE
+	MOVEI	SCH,PIN		;SET TO PRINT SYMBOLIC INST MODE
+	PUSHJ	P,LI1		;OUTPUT INST
+	POP	P,SCH		;RESTORE CURRENT MODE
+	POPJ	P,
+
+;ROUTINE TO SWAP BETWEEN DDT AND USER CONTEXTS.
+;   AC'S AND FLAGS ARE SWAPPED, BUT BREAKPOINTS AND OTHER STUFF
+;   ARE NOT TOUCHED, SINCE CONTROL IS EXPECTED TO RETURN TO DDT SOON.
+
+SWAPG:	EXCH	0,AC0		;SWAP AC 0
+	MOVEM	0,SAV0		;SAVE 0 FOR WORK
+	HLLZ	0,SWAP		;GET CURRENT FLAGS
+	HLR	0,SAVPI		;GET SAVED FLAGS
+	HRLM	0,SWAP		;SWITCH FLAGS
+	HLLM	0,SAVPI
+	MOVE	0,[EXCH 1,AC0+1]	;SETUP INST FOR SWAPPING AC'S
+SWAPL:	XCT	0		;SWAP AN AC
+	ADD	0,[Z 1,1]	;INC AC AND MEM FIELDS
+	TLNN	0,1000		;AC 20 REACHED?
+	JRST	SWAPL		;NO, LOOP
+	MOVE	0,SAV0		;YES, RESTORE SAVED AC
+	JRSTF	@SWAP		;RETURN, RESTORING NEW FLAGS
+	>			;END IFE FTFILE
+
+
+SUBTTL ENTER AND LEAVE DDT LOGIC
+
+;SKIPS IF CONTEXT ALREADY SAVED
+
+	IFE	FTFILE,<
+SAVEG:				;SAVE THE ACS AND PI SYSTEM
+	IFN	FTEXEC,<
+	SKIPN	TRCON		;TRACE FACILITY IN USE?
+	JRST	SAVEG1		;NO
+	DATAI	PI,TRCDMP	;YES, DUMP CURRENT POINTER
+	DATAO	PI,[0]		;TURN IT OFF
+SAVEG1:
+	MOVEM	0,TEM
+	SETZM	TOPS20
+	JSP	0,.+1
+	TLNN	0,(1B5)
+	JRST	.+6
+	MOVE	[112,,11]
+	GETTAB
+	CAM
+	CAIN	40000
+	SETOM	TOPS20
+	MOVE	0,TEM
+	MOVEM	T,TEM		;FREE AN AC
+;	IFE	FTDEC20,<
+	SKIPE	TOPS20
+	JRST	SAVEG2
+	JSP	T,.+1		;GET USR FLAG
+	XOR	T,SAVPI		;COMPARE WITH OLD USR FLAG(LAST DDT EXIT)
+	TLNE	T,(1B5)		;SAME?
+	SETZM	SARS	;>		;NO, SAVE AC'S AND PC FOR EXIT
+				; SO EXEC/USER MODE FLOP RESTORED AS ENTERED
+SAVEG2:	JSP	T,.+1		;GET PC WORD AGAIN
+	ROT	T,5		;ROTATE USER MODE BIT TO SIGN
+	MOVEM	T,USRFLG	; AND SAVE IT
+	MOVE	T,TEM		;RESTORE THE AC
+	>			;END FTEXEC
+;NOW SAVE USER STATUSES AND MODES AND SETUP DDT MODES.  DON'T SAVE
+;MODES IF ALREADY SAVED (I.E. WHEN REENTERING DDT), BUT DO SET DDT
+;MODES IN CASE THEY WERE CHANGED.
+
+	SKIPE	SARS		;ALREADY SAVED?
+	AOS	SAVE		;YES, SKIP RETURN
+	IFN	FTEXEC,<
+	SKPEXC
+	JRST	SAV11
+	SKIPE	SARS		;ALREADY SAVED?
+	JRST	SAV3		;YES
+	CONI	PI,SAVPI
+	HRRZS	SAVPI+1
+SAV3:	CONO	PI, @SAVPI+1>
+SAV11:	SKIPE	SARS		;ALREADY SAVED?
+	JRST	SAV5		;YES
+	MOVEM	17,AC17		;SAVE ACS
+	HRRZI	17,AC0
+	BLT	17,AC0+16
+	MOVE	T,SAVE		;SAVE PC FLAGS
+	HLLM	T, SAVPI
+SAV5:	MOVE	P,[IOWD LPDL,PDL]	;SETUP STACK
+				; ..
+
+;IF EDDT, DETERMINE PROCESSOR
+;TYPE.  USER DDT DOES NOT NEED TO KNOW PROCESSOR TYPE
+
+	IFN	FTEXEC,<
+	MOVNI	T,1		;LOAD T WITH ALL ONES
+	AOBJN	T,.+1		;ADD ONE TO BOTH HALFS
+	MOVEM	T,KAFLG		;0 MEANS KI10; 1,,0 MEANS KA10
+	SETZ	T,		;TEST FOR KL10
+	BLT	T,0		;NOP BLT
+	CAMN	T,[1,,1]	;KL WILL STORE POINTER AS 1,,1
+	SETOM	KAFLG		;A KL10
+	IFE	FTDEC20,<
+	SKIPE	TOPS20
+	JRST	SAV20
+;	HRRI	T,XJBSYM	;GET EXEC SYMBOL POINTER ADR
+;	SKPEXC			;EXEC MODE?
+	HRRI	T,.JBSYM	;NO, GET USER MODE SYM POINTER ADR
+	HRRM	T,SYMP		; AND SAVE IT
+;	HRRI	T,XJBUSY	;GET EXEC UNDEF SYM TABLE POINTER ADR
+;	SKPEXC			;EXEC MODE?
+	HRRI	T,.JBUSY	;NO, GET USER MODE UNDEF SYM POINTER ADR
+	HRRM	T,USYMP		; AND SAVE RESULTING ADR
+	SKPEXC
+	JRST	SAV12		;TRANSFER IF IN USER MODE
+	SKPKA			;IS THIS A KA10?
+	JRST	SAV12		;NO--LEAVE APR ALONE
+	CONI	T		;GET APR FLAGS
+	TRNE	T,NXMKA		;TEST NXM FLAG AND
+	TLO	T,(1B0)		;  MOVE IT TO BIT 0
+	TLZ	T,37		;FLUSH I AND X SO INDIRECT WORKS
+	MOVEM	T,SAVAPR	;SAVE STATE OF APR REGISTER
+	JRST	SAV12
+	>>			;END IFN EDDT
+				; ..
+
+;SAVE STATE AND SETUP DDT MODES...
+
+;	IFN	FTDEC20,<
+SAV20:	SETOM	LASTPG#		;FORGET LAST PAGE ACCESS
+	IFN	FTEXEC,<
+	SKPUSR
+	JRST	SAV2>
+	MOVSI	T,(1B0)
+	MOVEI	T1,.FHSLF
+	SKPIR			;PSI SYSTEM ON?
+	 SETZ T,		;NO
+	SKIPN	SARS		;SKIP IF ALREADY HAVE SAVED STATUS
+	MOVEM	T,SAVSTS#	;REMEMBER STATUS
+SAV2:	;>				;END IFN FTDEC20
+SAV12:	PUSHJ	P,TTYRET	;INITIALIZE TTY
+	REPEAT	0,<		;WAIT FOR 5.3 RELEASE FOR THIS TEST
+	IFN	FTYANK,			;END IFN FTYANK
+	>			;END OF REPEAT 0 CONDITIONAL
+	MOVEI	F,0		;INIT FLAG REGISTER
+	SETOM	SARS		;FLAG PROTECTING SAVED REGISTERS
+	MOVE	T,[XWD SCHM,SCH]
+	BLT	T,ODF		;LOAD THE ACS WITH MODE SWITCHES
+	JRST	@SAVE
+
+RESTOR:				;RESTORE ACS AND PI SYSTEM
+	HRRM	T,SAVE
+	PUSHJ	P,TTYLEV	;RESTORE STATUS OF CONSOL TTY (EXEC MODE)
+	MOVE	T,SAVPI
+	TLZ	T,010037	;DON'T TRY TO RESTORE USER MODE FLAG
+	HLLM	T, SAVE
+	IFN	FTEXEC,<
+	SKPEXC
+	JRST	RESTR2
+	AND	T, SAVPI+1
+	IORI	T, 2000		;TURN ON CHANNELS
+	TRZ	T,1000		;MAKE SURE WE DON'T ASK FOR BOTH
+	HRRZM	T, SAVPI
+	>			;END FTEXEC
+RESTR2:	HRLZI	17,AC0
+	BLT	17,17
+	SETZM	SARS
+	IFN	FTEXEC,<
+	SKPEXC
+	JRST	RESTR3		;TRANSFER IF IN USER MODE
+	IFE	FTDEC20,<
+	SKIPGE	SAVAPR		;WANT NXM SET?
+	MOVES	777777		;YES--ASSUME KA-10
+	>
+	SKIPE	TRCON		;TRACE FACILITY ON?
+	DATAO	PI,TRCON	;YES, START TRACING
+	CONO	PI,@SAVPI
+RESTR3:>
+	JRST	2,@SAVE
+
+SUBTTL BREAK POINT LOGIC
+
+BCOMG:	POP	T,LEAV		;MOVE INSTRUCTION TO LEAV
+	MOVEI	T,B1SKP-B1INS+1(T)
+	HRRM	T,BCOM3		;CONDITIONAL BREAK SETUP
+	MOVEI	T,B1CNT-B1SKP(T)
+	HRRM	T,BCOM2		;PROCEED COUNTER SETUP
+	MOVE	T,BP1-B1CNT(T)	;GET PC WORD
+	HLLM	T,LEAV1		;SAVE FLAGS FOR RESTORING
+	EXCH	T,BCOM		; ALSO SAVE PC WORD IN BCOM
+
+	XCT	BCOM3		;(SKIPE) CONDITIONAL BPT SETUP?
+	XCT	@BCOM3		;YES, XCT IT
+	XCT	BCOM2		;(SOSG) PROCEED COUNTER NOW 0?
+	JRST	BREAK
+
+	MOVEM	T,AC0+T
+	LDB	T,[POINT 9,LEAV,8]	;GET INSTRUCTION
+	CAIL	T,264		;JSR
+	CAILE	T,266		;JSA,JSP
+	TRNN	T,700		;UUO
+	JRST	PROC1		;MUST BE INTERPRETED
+	CAIE	T,260		;PUSHJ
+	CAIN	T,256		;XCT
+	JRST	PROC1		;MUST BE INTERPRETED
+	IFN	FTEXEC,<
+	MOVSI	T,010000	;DON'T TRY TO RESTORE USER MODE BIT
+	ANDCAM	T,LEAV1 >
+	MOVE	T,AC0+T
+	JRST	2,@LEAV1	;RESTORE FLAGS, GO TO LEAVG
+
+BREAK: IFN FTDEC20,<
+	SETZM	SARS>		;BE SURE TO SAVE ACS ON BKPT
+	JSR	SAVE		;SAVE THE WORLD
+	 PUSHJ P,REMOVB		;REMOVE BREAKPOINTS
+	PUSHJ	P,TTYCLR	;FLUSH WAITING TTY CHARACTERS FOR INPUT
+	SOS	T,BCOM3
+	HRRZS	T		;GET ADR OF CONDITIONAL BREAK INST
+	SUBI	T,B1ADR-3	;CHANGE TO ADDRESS OF $0B
+	IDIVI	T,3		;QUOTIENT IS BREAK POINT NUMBER
+	HRRM	T,BREAK2	;SAVE BREAK POINT #
+	MOVE	W1,[BYTE (7) "$","0","B",76,0]	;PRELIMINARY TYPEOUT MESSAGE
+REPEAT 0,>
+	SKIPG	@BCOM2		;TEST PROCEED COUNTER
+	TRO	W1,76_1		;CHANGE T TO /$0BGG/
+	DPB	T,[POINT 4,W1,13]	;INSERT BREAK POINT # IN MESSAGE
+	PUSHJ	P,TEXT2
+	MOVE	T,BCOM
+	HLLM	T, SAVPI	;SAVE PROCESSOR FLAGS
+	MOVEI	T,-1(T)
+	PUSHJ	P,PSHLLC	;PUSH OLD SEQUENCE
+	MOVEM	T,LWT		;BKPT ADR BECOMES LAST WORD TYPED
+	MOVEM	T,LLOC		;BKPT ADR BECOMES CURRENT LOC
+	PUSHJ	P,PAD		;TYPE PC AT BREAK
+	HRRZ	T,@BCOM3
+	HRRM	T,PROC0		;SETUP ADDRESS OF BREAK
+	HLRZ	T,@BCOM3
+	JUMPE	T,BREAK1	;TEST FOR REGISTER TO EXAMINE
+	PUSHJ	P,LCT		;PRINT TAB
+	HLRZ	T,@BCOM3
+	MOVEM	T,LLOC		;EXAMINE ADR BECOMES CURRENT LOC
+	PUSHJ	P,LI1		;EXAMINE REGISTER C($NB)LEFT
+BREAK1:	MOVSI	S,400000
+	XCT	BREAK2		;ROT BY # OF BREAK POINT
+	PUSHJ	P,LISTEN	;DONT PROCEED IF TTY KEY HIT
+	TDNN	S,AUTOPI	;DONT PROCEED IF NOT AUTOMATIC
+	JRST	RET		;DONT PROCEED
+	JRST	PROCD1
+
+PROCED:	HRRZ	TT,BCOM2	;SEE IF PROCEED POSSIBLE
+	JUMPE	TT,ERR		;JUMP IF NOT SETUP
+	TLNN	F,(QF)		;N$P	;PROCEED AT A BREAKPOINT
+	MOVEI	T,1
+	MOVEM	T,@BCOM2
+	HRRZ	R,BCOM3
+	PUSHJ	P,AUTOP
+PROCD1:	PUSHJ	P,CRF
+	XCT	PROC0		;(HRRZI) GET ADR OF BPT
+	PUSHJ	P,FETCH
+	JRST	BPLUP1		;ONLY GET HERE IF MEMORY SHRANK
+	MOVEM	T,LEAV
+	PUSHJ	P,INSRTB
+	JRST	PROC2
+
+PROC1:	MOVE	T,AC0+T
+	JSR	SAVE
+	 JFCL
+	MOVE	T,BCOM		;STORE FLAGS WHERE "RESTORE"
+	HLLM	T,SAVPI		;  CAN FIND THEM
+PROC2:	MOVEI	W,100
+	MOVEM	W,TEM1		;SETUP MAX LOOP COUNT
+	HLLZS	BCOM2		;CLEAR FLAG, PREVENT SECOND $P
+	JRST	IXCT5
+
+IXCT4:
+	IFN	FTEXEC,< SKPUSR
+	JRST	IXCT41>		;INIT NOT SPECIAL CASE IN EXEC MODE
+	SUBI	T,041		;IS UUO "INIT"?
+	JUMPE	T,BPLUP
+	AOJGE	T,IXCT6		;DONT PROCEED FOR INIT
+				;DONT INTERPRET FOR SYSTEM UUOS
+IXCT41:	MOVEM	R,40		;INTERPRET FOR NON-SYSTEM UUOS
+	MOVEI	R,41
+IXCT:	SOSL	TEM1
+	PUSHJ	P,FETCH
+	JRST	BPLUP		;BREAKPOINT LOOPING OR FETCH FAILED
+	MOVEM	T,LEAV
+IXCT5:	LDB	T,[POINT 9,LEAV,8]	;GET INSTRUCTION
+	CAIN	T,254		;DON'T DO ANYTHING TO JRST
+	JRST	IXCT6
+IXCT51:	HRLZI	17,AC0
+	BLT	17,17
+	MOVEI	T,@LEAV
+	DPB	T,[POINT 23,LEAV,35]	;STORE EFFECTIVE ADDRESS
+	LDB	W1,[POINT 4,LEAV,12]	;PICK UP AC FIELD
+	LDB	T,[POINT 9,LEAV,8]	;PICK UP INSTRUCTION FIELD
+	MOVE	P,[IOWD LPDL,PDL]
+	CAIN	T,260
+	JRST  IPUSHJ		;INTERPRET PUSHJ
+
+	CAIN	T,264
+	JRST	IJSR		;INTERPRET JSR
+	CAIN	T,265
+	JRST	IJSP		;INTERPRET JSP
+	CAIN	T,266
+	JRST	IJSA		;INTERPRET JSA
+	MOVE	R,LEAV
+	TRNN	T,700
+	JRST	IXCT4		;INTERPRET UUO
+	CAIN	T,256
+	JSP	T,[JUMPE W1,IXCT	;INTERPRET XCT IF AC = 0
+		TLNN T,(1B5)	;AC FIELD NOT 0 - IN EXEC MODE?
+		JRST IXCT6	;YES, DON'T INTERPRET MAPPED XCT
+		JRST IXCT]	;NO,  INTERPRET. IGNORE AC FIELD
+IXCT6:	JSP	T,RESTORE
+LEAVG:	XCT	LEAV		;DO BPT INSTRUCTION
+	 JRST @BCOM
+	 SKIPA			;SINGLE SKIP
+	AOS	BCOM		;DOUBLE SKIP
+	AOS	BCOM
+	JRST	@BCOM
+
+BPLUP:	PUSHJ	P,REMOVB	;BREAKPOINT PROCEED ERROR
+BPLUP1:	JSR	SAVE
+	 JFCL
+	JRST	ERR
+
+IPUSHJ:	DPB	W1,[POINT 4,CPUSHP,12]	;STORE AC FIELD INTO A PUSH
+	HLL	T,SAVPI		;PICK UP FLAGS
+	HLLM	T,BCOM		;SET UP THE OLD PC WORD
+	MOVSI	T,(1B4)		;TURN OFF BIS FLAG IN NEW PC WORD
+	ANDCAM	T,SAVPI
+	JSP	T,RESTORE	;RESTORE THE MACHINE STATE
+	XCT	CPUSHP		;(PUSH ..,BCOM)
+	JRST	@LEAV		;JUMP TO "E" OF THE PUSHJ
+
+IJSA:	MOVE	T,BCOM		;INTERPRET JSA
+	HRL	T,LEAV
+	EXCH	T,AC0(W1)
+	JRST	IJSR2
+
+IJSR:	MOVE	T,BCOM		;INTERPRET JSR
+	HLL	T,SAVPI		;SET UP THE OLD PC WORD
+	MOVSI	W,(1B4)		;TURN OFF BIS IN NEW PC WORD
+	ANDCAM	W,SAVPI
+IJSR2:	MOVE	R,LEAV
+	PUSHJ	P,DEPMEM
+	 JRST BPLUP		;ERROR, CAN'T STORE
+	AOSA	T,LEAV
+IJSR3:	MOVE	T,LEAV
+	JRST	RESTORE
+
+IJSP:	MOVE	W,BCOM		;INTERPRET JSP
+	HLL	W,SAVPI		;PICK UP PC WORD FLAGS
+	MOVEM	W,AC0(W1)	;INSERT OLD PC WORD INTO AC
+	MOVSI	T,(1B4)		;TURN OFF BIS FLAG IN NEW PC WORD
+	ANDCAM	T,SAVPI
+	JRST	IJSR3
+
+;INSERT BREAKPOINTS
+
+INSRTB:	MOVE	S,[JSR BP1]
+INSRT1:	SKIPE	R,B1ADR-BP1(S)
+	PUSHJ	P,FETCH
+	JRST	INSRT3
+	MOVEM	T,B1INS-BP1(S)
+	MOVE	T,S
+	PUSHJ	P,DEPMEM
+	 JFCL			;HERE ONLY IF CAN'T WRITE IN HIGH SEG
+INSRT3:	ADDI	S,3
+	CAMG	S,[JSR BPN]
+	JRST	INSRT1
+	POPJ	P,
+
+;REMOVE BREAKPOINTS
+
+REMOVB:	MOVEI	S,BNADR
+REMOV1:	MOVE	T,B1INS-B1ADR(S)
+	SKIPE	R,(S)
+	PUSHJ	P,DEPMEM
+	 JFCL			;HERE ONLY IF NO WRITE IN HIGH SEG
+	SUBI	S,3
+	CAIL	S,B1ADR
+	JRST	REMOV1
+	POPJ	P,
+
+;ALL $B COMMANDS GET HERE IN FORM: $B
+
+
+BPS:	TLZE	F,(QF)		;HAS  BEEN TYPED?
+	JRST	BPS1		;YES
+	TRZE	F,Q2F		;NO, HAS  BEEN TYPED?
+	JRST	BPS2		;YES
+	MOVE	T,[XWD B1ADR,B1ADR+1]	;NO, COMMAND IS $B - CLEAR ALL BREAKPOINTS
+	CLEARM	B1ADR
+	BLT	T,AUTOPI	;CLEAR OUT ALL BREAKPOINTS AND AUTO PROCEED REGISTER
+	JRST	RET
+
+BPS1:	MOVE	R,T
+	PUSHJ	P,FETCH		;CAN BREAKPOINT BE INSERTED HERE?
+	 JRST ERR		;NO
+	PUSHJ	P,DEPERR	; AGAIN NO
+	TRZN	F,Q2F		;HAS  BEEN TYPED?
+	JRST	BPS3		;NO
+	TRO	F,2		;YES, PROCESS THE COMMAND A$NB
+BPS2:	MOVE	T,WRD2
+	CAIL	T,1
+	CAILE	T,NBP
+	JRST	ERR
+	IMULI	T,3
+	ADDI	T,B1ADR-3
+	TRZN	F,2
+	JRST	MASK2
+	EXCH	R,T
+	JRST	BPS5
+
+BPS3:	MOVE	T,R		;PUT THE BREAKPOINT ADR BACK IN T
+	MOVEI	R,B1ADR		;PROCESS THE COMMAND A$B
+BPS4:	HRRZ	W,(R)
+	CAIE	W,(T)
+	SKIPN	(R)
+	JRST	BPS5
+	ADDI	R,3
+	CAIG	R,BNADR
+	JRST	BPS4
+	JRST	ERR
+BPS5:	MOVEM	T,(R)
+	SETZM	1(R)
+	SETZM	2(R)
+
+AUTOP:	SUBI	R,B1ADR		;AUTO PROCEED SETUP SUBROUTINE
+	IDIVI	R,3
+	MOVEI	S,1
+	LSH	S,(R)
+	ANDCAM	S,AUTOPI
+	TLNE	F,(CCF)
+	IORM	S,AUTOPI
+	POPJ	P,
+
+	>			;END FTFILE
+
+	IFN	FTFILE,>
+SUBTTL MEMORY MANAGER SUBROUTINES
+
+;DEPOSIT INTO MEMORY SUBROUTINE
+
+DEPRS:	MOVEM	T,LWT		;DEPOSIT REGISTER AND SAVE AS LWT
+	MOVE	R,LLOCO		;QUAN TYPED IN REGIS EXAM
+	TLZE	F,(ROF)
+	TLNN	F,(QF)
+	POPJ	P,0
+	JRST	DMEMER
+
+;DEPOSIT INTO MEMORY SUBROUTINE
+
+	IFE	FTFILE,<
+DEPSYM:
+DEPMEM:	IFE	FTDEC20,<
+	SKIPE	TOPS20
+	JRST	DEPM20
+	PUSHJ	P,CHKPAG	;GET PAGE ACCESS BITS INTO TT1
+	JUMPL	TT1,CPOPJ	;ILLEGAL ADDRESS IF NEGATIVE
+	TLNE	TT1,(1B1)	;IS PAGE KNOWN TO BE WRITEABLE?
+	JRST	DEP1		;YES--GO DO THE DEPOSIT RIGHT AWAY
+	JUMPN	TT1,DEP4	;IF WE KNOW ANYTHING THEN IT MUST BE
+				; A WRITE LOCKED HISEG
+	JSP	TT1,CHKADR	;LEGAL ADDRESS?
+	JRST	DEP4		;YES BUT IN HI SEGMENT
+DEP1:	TRNN	R,777760
+	JRST	DEPAC		;DEPOSIT IN AC
+	MOVEM	T,(R)
+	JRST	CPOPJ1		;SKIP RETURN
+
+DEPAC:	MOVEM	T,AC0(R)	;DEPOSIT IN AC
+	JRST	CPOPJ1		;SKIP RETURN
+DEP4:	IFN	FTEXEC,<
+	SKPUSR			;IN EXEC MODE WE CAN NOT DO
+	POPJ	P,0		; SETUWP -- INDICATE ERROR
+	>
+	MOVEI	TT1,0
+	SETUWP	TT1,		;IS HI SEGMENT PROTECTED? TURN OFF
+	 POPJ P,		;PROTECTED, NO SKIP RETURN
+	MOVEM	T,(R)		;STORE WORD IN HI SEGMENT
+	TRNE	TT1,1		;WAS WRITE PROTECT ON?
+	SETUWP	TT1,		;YES, TURN IT BACK ON
+	 JFCL
+	JRST	CPOPJ1		;SKIP RETURN
+;	>			;END IFE FTDEC20
+;	IFN	FTDEC20,<	;DEPSYM, DEPMEM FOR DEC20
+DEPM20:	TRNN	R,777760	;AC?
+	JRST	[MOVEM T,AC0(R)	;YES, DO IT
+		JRST CPOPJ1]
+	PUSHJ	P,CHKADR	;GET ACCESS
+	JUMPE	TT,DEP2		;EMPTY PAGE OK
+	TLNN	TT,(PM%WT+PM%CPY)	;WRITE OR COPY-WRITE?
+	POPJ	P,		;NO, FAIL
+DEP2:	SETOM	LASTPG		;WRITE MAY CHANGE ACCESS
+	MOVEM	T,0(R)		;DO IT
+	JRST	CPOPJ1
+;	>			;END IFN FTDEC20
+
+DSYMER:	PUSHJ	P,CLRCSH	;DEPOSIT FOR SYM TABLE ROUTINES
+	>			;END IFE FTFILE
+DEPERR:
+DMEMER:	PUSHJ	P,DEPMEM	;DEPOSIT AND GO TO ERR IF IT FAILS
+	 JRST ERR
+	POPJ	P,
+XLIST
+
+	IFN	FTFILE,<
+DSYMER:	PUSHJ	P,DEPSYM	;TRY SYMBOL TABLE DEPOSIT
+	 HALT .			;GIVE UP
+	POPJ	P,		;AND RETURN
+
+DEPSYM:	PUSH	P,TT		;SAVE THREE LOCATIONS
+	PUSH	P,TT1		;  TO PROTECT FILDDT
+	PUSH	P,R		; ..
+	MOVE	TT,FISPTR	;GET DEF POINTER
+	HLRE	TT1,TT		;GET LENGTH
+	SUB	TT,TT1		;COMPUTE END OF SYMBOLS
+	TLZ	TT,-1		;CLEAR JUNK
+	MOVE	TT1,FIUPTR	;GET START OF UNDEF S.T.
+	CAMLE	TT1,ESTUT	; IN THE CASE OF UND1 CODE ALREADY
+				; TRYING TO EXTEND S.T.
+	MOVE	TT1,ESTUT	;YES--USE THAT VALUE
+	SKIPL	TT1		;MIGHT NOT BE ANY UNDEFINED SYMBOLS
+	MOVE	TT1,FISPTR	;FAILING THAT, GET START OF SYMBOLS
+	TLZ	TT1,-1		;CLEAR JUNK
+	TLZ	R,-1		; ..
+	CAIG	TT1,(R)		;SEE IF TOO LOW
+	CAIGE	TT,(R)		;OR TOO HIGH
+	HALT	.		;YES--QUIT
+	POP	P,R
+	POP	P,TT1		;OK--RESTORE TEMPS
+	POP	P,TT		; AND PROCEDE
+	CAME	T,(R)		;SEE IF DIFFERENT
+	SETOM	CHGSFL		;YES--FLAG THAT SYMBOLS CHANGED
+	MOVEM	T,(R)		;STORE NEW VALUE
+	JRST	CPOPJ1		;RETURN
+
+DEPMEM:	HRRZ	TT1,R		;COPY ADDRESS
+	CAIG	TT1,17		;IS IT AN AC?
+	JRST	[MOVEM T,AC0(TT1)	;STORE
+		 JRST CPOPJ1]
+	SKIPN	PATCHS		;SEE IF PATCHING
+	JRST	DEPNPT		;NO--GIVE NOOP
+	PUSHJ	P,CVTADR	;CHANGE ADDRESS PER $U
+	 POPJ P,0		;ERROR
+	SKIPN	CRASHS		;SEE IF CRASHING
+	JRST	MONPOK		;NO--POKE MONITOR
+	PUSH	P,T		;PRESERVE T
+	PUSHJ	P,FETCH		;YES--GET WORD
+	 JRST	[POP P,T
+		 POPJ P,]
+	POP	P,T		;RESTORE WORD TO STORE
+	MOVSI	TT2,(1B5)	;SET CHANGED BIT
+	CAME	T,@FETADR	;UNLESS NO CHANGE
+	IORM	TT2,@FETPAG	; ..
+	MOVEM	T,@FETADR	;CHANGE WINDOW
+DEPRET:	JRST	CPOPJ1		;GIVE GOOD RETURN
+
+MONPOK:	PUSH	P,T		;SAVE ARGUMENT
+	MOVEM	T,POKER+2	;SET AS NEW VALUE
+	HRRZM	R,POKER		;SET ADDRESS
+				;NOTE--LAST TYPEOUT IS IN POKER+1
+				;  SO THAT USER MUST KNOW WHAT
+				;  HE IS CHANGING
+	MOVE	T,[3,,POKER]	;GET POINTER
+	CALLI	T,114		;POKE. MONITOR
+	 JRST ERR		;COMPLAIN IF WE CAN'T
+	POP	P,T		;RESTORE VALUE
+	JRST	CPOPJ1		;SKIP RETURN
+
+POKER:	BLOCK	3		;ARGUMENTS FOR POKING
+
+DEPNPT:	AOSG	DEPNCT		;FIRST TRY?
+	OUTSTR	[ASCIZ \
+?Patching was not enabled by /P
+\]
+	JRST	CPOPJ1
+DEPNCT:	BLOCK	1
+
+;STILL UNDER FTFILE
+
+;HERE WHEN ^Z TYPED TO CLOSE OUT
+
+CNTRLZ:	SKIPE	CRASHS		;SEE IF NOT /M
+	SKIPN	PATCHS		;OR NOT /P
+	JRST	NOCHNZ		;RIGHT--JUST WRAP UP
+	SKIPN	CHGSFL		;SEE IF SYMBOL TABLE CHANGED
+	JRST	NOSCPY		;JUMP IF NOT
+	PUSHJ	P,SYMPTR	;YES--REFETCH FILE POINTER
+	HLRE	W1,FIUPTR	;GET LENGTH OF UNDEFINED S.T.
+	HLRE	R,FISPTR	;GET LENGTH OF STANDARD S.T.
+	ADD	W1,R		;ADD TOGETHER
+	MOVM	W1,W1		;MAKE POSITIVE
+	HRRZ	R,TT		;GET BASE OF UNDEFINED S.T.
+	SKIPN	TT		;IN CASE NOTHING THERE
+	HRRZ	R,T		;USE BASE OF DEFINED S.T.
+	ADD	W1,R		;ADD BASE AND LENGTH OF TABLES
+	MOVEM	W1,MONSIZ	;STORE AS NEW SIZE OF .XPN FILE
+	MOVE	W1,FIUPTR	;PREPARE TO
+	MOVE	R,T
+	JUMPGE	W1,NOUCPY	;JUMP IF NONE
+	JUMPE	TT,NOUCPY
+	MOVE	R,TT		;  COPY UNDEF SYMS
+OUCPY:	MOVE	T,(W1)
+	PUSHJ	P,DMEMER
+	AOS	R
+	AOBJN	W1,OUCPY
+
+NOUCPY:	HRRZ	T,TT		;GET START
+	HLL	T,FIUPTR	;GET NEW LENGTH
+	PUSH	P,R		;SAVE START OF SYMBOLS
+	HLRZ	R,S		;GET LOCATION POINTER IS KEPT
+	PUSHJ	P,DMEMER	;STORE NEW POINTER
+
+	HRRZ	R,(P)		;START AT BEGINNING
+	MOVE	W1,FISPTR	;PREPARE TO COPY SYMS
+	JUMPGE	W1,NOSCP
+OSCPY:	MOVE	T,(W1)
+	PUSHJ	P,DMEMER
+	AOS	R
+	AOBJN	W1,OSCPY
+
+NOSCP:	POP	P,T		;GET START
+	HLL	T,FISPTR	;GET NEW LENGTH
+	HRRZ	R,S		;GET LOCATION POINTER IS KEPT
+	PUSHJ	P,DMEMER	;STORE NEW POINTER
+
+;STILL UNDER FTFILE
+
+NOSCPY:	SETZM	WINNUM		;START WITH WINDOW ZERO
+WRTLP:	MOVE	T,WINNUM	;GET WINDOW NUMBER
+	MOVE	T,WINDIR(T)	;GET PAGTBL ADDRESS
+	MOVSI	TT1,(1B5)	;SEE IF PAGE CHANGED
+	TDNE	TT1,(T)		; ..
+	PUSHJ	P,WRTWIN	;WRITE THE WINDOW
+	AOS	T,WINNUM	;STEP TO NEXT WINDOW
+	CAIGE	T,CT.RES	;MORE
+	JRST	WRTLP		;NO--KEEP GOING
+	MOVSI	TT,-MX.SIZ	;LOOK FOR CHNAGED BITS
+	MOVSI	TT1,(1B5)	; ..
+	TDNN	TT1,PAGTBL(TT)	; ..
+	AOBJN	TT,.-1		; ..
+	SKIPG	TT		;ANY FOUND
+	OUTSTR	[ASCIZ "
+?FILDDT INTERNAL ERROR -- VERIFY YOUR PATCHES
+"]
+	CLOSE	1,
+	STATZ	1,760000	;ALL OK
+	OUTSTR	[ASCIZ "
+?OUTPUT ERROR ON CLOSE
+"]
+NOCHNZ:	CALLI	12
+	>			;END FILDDT CASE
+LIST
+;FETCH FROM MEMORY SUBROUTINE
+
+;HFETCH GETS A WORD FROM THE HISEG GIVEN AN OFFSET INTO THE SEGMENT
+;CALL WITH:
+;	R = HISEG OFFSET
+;	PUSHJ P,HFETCH
+;	  NO HISEG RETURN
+;	HERE WITH WORD IN T
+;
+HFETCH:
+	IFN	FTEXEC,<
+;	SKPUSR			;NO HISEG SYMBOLS IN EXEC MODE (OR KLDDT)
+	POPJ	P,0>		; ..
+	PUSHJ	P,GETHSO	;GET START OF HISEG
+	JUMPE	T,CPOPJ		;EXIT IF NONE
+	ADD	R,T		;RELOCATE
+;FALL INTO FETCH
+
+;SUBROTINE GET A WORD FROM MEMORY
+;CALL WITH:
+;	R = JUNK,,ADDRESS
+;	PUSHJ  P,FETCH
+;	  HERE IF ADDRESS IS NOT VALID
+;	HERE WITH WORD IN T AND R UNCHANGED
+;
+;AC'S TT1 AND TT2 CHANGED
+
+FETCH: IFE FTDEC20,<
+	IFE	FTFILE,<
+	SKIPE	TOPS20
+	JRST	FET20
+	PUSHJ	P,CHKPAG	;GET ACCESS BITS FOR PAGE
+	JUMPL	TT1,CPOPJ	;ERROR IF PAGE DOES NOT EXIST
+	TLNE	TT1,(1B2)	;IS PAGE READABLE?
+	JRST	FET1		;YES--GO READ IT
+	JUMPN	TT1,CPOPJ	;EXIT IF KNOW CONCEALED
+	JSP	TT1,CHKADR	;LEGAL ADDRESS?
+	JFCL			;HIGH OR LOW OK FOR FETCH
+FET1:	TRNN	R,777760	;ACCUMULATOR?
+	SKIPA	T,AC0(R)	;YES
+	MOVE	T,(R)		;NO
+	JRST	CPOPJ1>		;SKIP RETURN ONLY FOR LEGAL ADDRESS
+;	>			;END OF IFE FTDEC20
+;	IFN	FTDEC20,<	;FETCH FOR DEC20
+FET20:	TRNN	R,777760	;AC?
+	JRST	[MOVE T,AC0(R)	;YES, DO IT
+		JRST CPOPJ1]
+	PUSHJ	P,CHKADR	;GET ACCESS
+	TLNE	TT,(PA%EX)	;EXISTS?
+	TLNN	TT,(PM%RD)	;HAVE READ?
+	POPJ	P,		;NO, FAIL
+	MOVE	T,0(R)		;YES, DO IT
+	JRST	CPOPJ1
+;	>			;END IFN FTDEC20
+XLIST
+
+	IFN	FTFILE,<
+	HRRZ	TT1,R		;STRIP OF COUNT
+	CAIG	TT1,17		;IS IT AN AC
+	JRST	[MOVE T,AC0(TT1)	;YES--GET THE AC
+		 JRST CPOPJ1]	;GIVE GOOD RETURN
+	PUSH	P,R		;SAVE JUNK IN R
+	TLZ	R,-1		;CLEAR JUNK
+	PUSHJ	P,CVTADR	;MAP THE ADDRESS
+	 SKIPA			;ERROR
+	PUSHJ	P,FETX		;GET THE WORD
+	 SOS -1(P)		;ERROR
+	POP	P,R		;RESTORE R
+	JRST	CPOPJ1		;RETURN
+FETX:	SKIPN	CRASHS		;CRASH.SAV EXIST?
+	JRST	MONPEK		;NO - GO PEEK AT RUNNING MONITOR
+	HRRZ	TT1,R		;STRIP OFF POSSIBLE COUNT
+	LSH	TT1,-9		;CONVERT TO PAGE #
+	CAIL	TT1,MX.SIZ	;TOO BIG?
+	POPJ	P,0		;YES--PUNT
+	SKIPN	PAGTBL(TT1)	;SOMETHING THERE?
+	POPJ	P,0		;NO--ERROR
+	ADDI	TT1,PAGTBL	;SET TO START OF TABLE
+	MOVEM	TT1,FETPAG	;SAVE FOR LATER
+	LDB	T,[POINT 9,@FETPAG,17]	;GET WINDOW NUMBER
+	SOJGE	T,INCORE	;JUMP IF IN CORE
+	AOS	T,WINNUM	;STEP TO NEXT WINDOW
+	CAIL	T,CT.RES	;ARE THERE THAT MANY?
+	SETZB	T,WINNUM	;NO--WRAP AROUND
+	MOVEI	TT2,1(T)	;STORE WINDOW # PLUS 1
+	DPB	TT2,[POINT 9,@FETPAG,17]	;IN PAGTBL
+	MOVSI	TT1,(1B5)	;CHANGE BIT
+	TDNE	TT1,@WINDIR(T)	;DID THIS PAGE CHANGE?
+	PUSHJ	P,WRTWIN	;YES--WRITE OUT WINDOW
+	MOVE	T,WINNUM	;GET WINDOW NUMBER BACK
+	MOVEI	TT1,0		;MARK CURRENT PAGE AS NOT IN CORE
+	DPB	TT1,[POINT 9,@WINDIR(T),17]
+	MOVE	TT1,FETPAG	;FIX UP DIRECTORY
+	MOVEM	TT1,WINDIR(T)	; ..
+	PUSHJ	P,REDWIN	;READ NEW DATA
+	MOVE	T,WINNUM	;GET NUMBER OF CURRENT WINDOW
+INCORE:	LSH	T,9		;CONVERT TO WORDS
+	ADDI	T,WIND0		;BUMP TO BASE OF WINDOWS
+	LDB	TT1,[POINT 9,R,35]	;GET WORD OFFSET
+	ADD	T,TT1		;ADDRESS OF WORD
+	MOVEM	T,FETADR	;SAVE FOR DEPOSIT
+	MOVE	T,(T)		;GET DATA
+	JRST	CPOPJ1		;GOOD RETURN
+
+MONPEK:	HRRZ	T,R
+	CALLI	T,33
+	JRST	CPOPJ1
+
+WRTWIN:	SKIPA	T,[OUT 1,TT1]
+REDWIN:	MOVE	T,[IN 1,TT1]
+	PUSH	P,T		;SAVE UUO
+	MOVE	T,WINNUM	;GET CURRENT WINDOW NUMBER
+	MOVSI	TT2,(1B5)	;CLEAR MODIFIED BIT
+	ANDCAM	TT2,@WINDIR(T)	; IN THE PAGE TABLE
+	HRRZ	TT1,@WINDIR(T)	;GET FILE PAGE #
+	LSH	TT1,2		;CONVERT TO BLOCK
+	USETI	1,1(TT1)	;POINT FILSER
+	LSH	T,9		;CONVERT WINDOW # TO WORDS
+	ADDI	T,WIND0		;BASE OF WINDOWS
+	MOVSI	TT1,-1000	;NEGATIVE WORD COUNT
+	HRRI	TT1,-1(T)	;IOWD
+	MOVEI	TT2,0		;TERMINATE LIST
+	POP	P,T		;RESTORE UUO
+	XCT	T		;DO I/O
+	 POPJ P,0		;DONE
+	GETSTS	1,T
+	SETSTS	1,17
+	TLNN	T,740000
+	POPJ	P,0		;JUST EOF
+	OUTSTR	[ASCII "?FATAL I/O ERROR
+"]
+	CALLI	1,12		;SAY .
+	SETSTS	1,17		;CLEAR ERROR BITS
+	POPJ	P,0		;IGNORE ERROR
+	>			;END FILDDT CONDITIONAL
+LIST
+
+	IFE	FTDEC20,<
+CHKADR:	SKIPE	TOPS20
+	JRST	CHKA20
+	HRRZ	TT,.JBREL	;GET HIGHEST ADDRESS IN LOW SEGMENT
+	IFN	FTEXEC,<
+	SKPUSR
+	JRST	CHKA4		;DO MAP IN EXEC MODE
+	>
+	CAIL	TT,(R)		;CHECK FOR WITHIN LOW SEGMENT
+	JRST	1(TT1)		;ADDRESS IS OK IN LOW SEGMENT, SKIP RETURN
+	SKIPN	.JBHRL		;ANY HISEG?
+	POPJ	P,0		;NO--ERROR
+	PUSH	P,T		;SAVE T
+	PUSHJ	P,GETHSO	;GET START OF HISEG
+	HRRZ	TT,R		;COPY DESIRED ADDRESS
+	SUB	TT,T		;GET OFFSET INTO HISEG
+	POP	P,T
+	JUMPL	TT,CPOPJ	;MUST BE POSITIVE
+	HRRZ	TT,.JBHRL	;TOP OF HISEG
+	CAIGE	TT,(R)		;IS ADDRESS TOO BIG?
+	POPJ	P,0		;YES--ERROR
+	JRST	(TT1)		;NO--INDICATE HISEG
+
+CHKPAG:	IFN	FTEXEC,<
+	MOVEI	TT1,0		;PRESET UNKNOWN ANSWER
+	SKPUSR			;SKIP IF IN USER MODE
+	POPJ	P,0		;DO NOT DO UUO'S IN EXEC MODE
+	>
+	HRRZ	TT1,R		;COPY ADDRESS
+	LSH	TT1,-9		;SHIFT LEFT 9 BITS
+	HRLI	TT1,6		;FUNCTION TO GET ACCESS BITS
+	PAGE. TT1,		;ASK THE MONITOR
+	 TDZA TT1,TT1		;RETURN ZERO IF UNKNOWN
+	TRO	TT1,1		;MAKE SURE NON-ZERO IF UUO WON
+	POPJ	P,0		;ELSE RETURN GOOD STUFF
+
+GETHSO:	IFN	FTEXEC,<
+	SKPUSR
+	JRST	[MOVEI T,400000
+		 POPJ  P,0]
+	>
+	SKIPE	TOPS20
+	JRST	GETH20
+	MOVE	T,[-2,,.GTUPM]
+	GETTAB	T,
+	 MOVEI T,0
+	HLRZ	T,T
+	CAIGE	T,777
+	MOVEI	T,400000
+	POPJ	P,
+;	>			;END IFE FTDEC20
+;	IFN	FTDEC20,<
+CHKA20:	IFN	FTEXEC,<
+	SKPUSR
+	JRST	CHKA4>
+	PUSH	P,T2
+	PUSH	P,R
+	HRRZ	T2,0(P)		;GET DESIRED ADDRESS
+	XOR	T2,LASTPG	;COMPARE WITH LAST ONE TESTED
+	TRNN	T2,777000	;SAME PAGE?
+	JRST	CHKA1		;YES, ALREADY HAVE ACCESS
+	XORM	T2,LASTPG	;NO, SET NEW LAST PAGE
+	JSP	T1,.+1		;GET USER FLAG
+	TLNN	T1,(PC%USR)	;IN USER MODE?
+	JRST	[HRRZ T1,0(P)	;NO, MONITOR. GET ADDRESS
+		MRPAC		;READ MONITOR PAGE ACCESS
+		JRST CHKA2]	;RETURN IT
+	LDB	T1,[POINT 9,0(P),26]	;GET PAGE NUMBER
+	HRLI	T1,.FHSLF
+	RPACS			;READ PAGE ACCESS
+CHKA2:	HLLM	T2,LASTPG	;SAVE ACCESS WITH ADDRESS
+CHKA1:	HLLZ	TT,T2		;RETURN ACCESS IN TT
+	POP	P,R
+	POP	P,T2
+	POPJ	P,
+;	>			;END FTDEC20
+
+	IFN	FTEXEC,<
+CHKA4:	SKPNKL			;KL10?
+	JRST	[MAP TT,0(R)	;YES, GET PAGING DATA
+		TLNN TT,(1B8)	;MAPPED REF?
+		JRST CHKA5	;NO, ALLOW IT
+		TLNN TT,(1B1)	;HARD PAGE FAIL?
+		TLNN TT,(1B2)	;OR NO ACCESS?
+		JRST CHKA3	;YES
+		TLNN TT,(1B3+1B4) ;WRITE ALLOWED?
+		JRST CHKA7	;NO
+		JRST CHKA5]	;YES
+	SKPKI			;KI10?
+	JRST	CHKA8		;NO, NO MAP INSTRUCTION
+	MAP	TT,0(R)		;GET ACCESS BITS FOR PAGE
+	TRNN	TT,1B18		;PAGE FAIL?
+	JRST	CHKA6		;NO, GO INSPECT DATA
+	TRNE	TT,1B22		;YES, HAVE MATCH?
+	JRST	CHKA3		;NO, PAGE HAS NO ACCESS
+CHKA6:	TRNN	TT,1B20+1B22	;WRITABLE OR NO MATCH? (UNMAPPED REF)
+	IFN	FTDEC20,<
+CHKA7:	SKIPA	TT,[PM%RD+PA%EX]	;NO
+CHKA8:
+CHKA5:	MOVSI	TT,(PM%RD+PM%WT+PA%EX)	;YES
+	POPJ	P,
+
+CHKA3:	MOVSI	TT,(1B5)	;SAY NO ACCESS
+	POPJ	P,
+	>
+	IFE	FTDEC20,<
+CHKA7:	JRST	(TT1)		;CAN NOT WRITE -- INDICATE HISEG
+CHKA5:	JRST	1(TT1)		;CAN WRITE -- INDICATE LOWSEG
+CHKA3:	POPJ	P,0		;PAGE FAIL -- INDICATE ERROR
+CHKA8:	CONO	APR,NXMKA	;CLEAR NXM FLAG
+	MOVE	TT,(R)		;SEE IF NXM SETS
+	CONSO	APR,NXMKA	;TEST NXM FLAG
+	JRST	1(TT1)		;OK
+	POPJ	P,0		;ERROR
+	>>			;END FTEXEC AND FTDEC20
+;	IFN	FTDEC20,<
+GETH20:	IFN	FTEXEC,<
+	SKPUSR
+	JRST	GETHSZ>		;NO HIGHSEG IN EXEC MODE
+;	SKIPN	JDTFLG#		;JOB DATA AREA VALID?
+;	JRST	GETHSZ		;NO, ASSUME NO HIGHSEG
+;	MOVE	T,.JBHSO	;CHECK SPECIAL LOSEG CELL
+;	LSH	T,^D9		;MAKE PAGE INTO ADDRESS
+;	SKIPN	T		;BUT IF NOTHING SETUP,
+;	MOVEI	T,400000	;ASSUME USUAL
+;	SKIPN	.JBHRL		;ANY HIGHSEG?
+GETHSZ:	SETZ	T,		;NO, SAY NO HIGHSEG
+	POPJ	P,		;	>;END IFN FTDEC20
+XLIST
+
+	IFN	FTFILE,<
+;MAP AN ADDRESS
+CVTADR:	SKIPN	EPTUPT		;$U GIVEN
+	JRST	CPOPJ1		;NO
+	HLRZ	T,EPTUPT	;EXEC PAGING
+	JUMPE	T,CVTAD2	;NO
+	LDB	T,[POINT 9,R,26];GET PAGE #
+	CAIGE	T,340		;IS THERE A MAP ENTRY?
+	JRST	CPOPJ1		;NO--LOOK IN PHYSICAL CORE
+	CAIL	T,400		;PER PROCESS
+	JRST	CVTAD1		;NO--JUST LIKE USER
+	PUSH	P,R		;SAVE ARGUMENT
+	LSH	T,-1		;CONVERT TO 1/2 WORD
+	HRRZ	R,EPTUPT	;GET ADDRESS OF UPT
+	ANDI	R,17777		;JUST PAGE #
+	LSH	R,9		;CONVERT TO WORD
+	ADDI	R,400-<340/2>(T)	;FOR THIS PAGE
+	JRST	CVTAD3		;COMPUTE ADDRESS
+CVTAD1:	HLRZ	T,EPTUPT	;GET EPT ADDRESS
+	SKIPA
+CVTAD2:	HRRZ	T,EPTUPT	;GET UPT ADDRESS
+	ANDI	T,17777		;JUST PAGE #
+	PUSH	P,R		;SAVE R
+	LSH	T,9		;CONVERT TO WORD
+	LSH	R,-12		;CONVERT TO 1/2 WORD IN MAP
+	ANDI	R,377		;MASK OUT JUNK
+	ADD	R,T		;ADDRESS OF MAP ENTRY
+CVTAD3:	PUSHJ	P,FETX		;FETCH PAGE TABLE ENTRY
+	 MOVEI T,017000		;ERROR
+	POP	P,R		;RESTORE R
+	TRNN	R,1000		;ODD PAGE
+	HLRZ	T,T		;NO--FLIP ENTRY
+	TRZN	T,400000	;VAILD ENTRY
+	POPJ	P,0		;NO--ERROR
+	ANDI	T,17777		;JUST PAGE #
+	LSH	T,9		;CONVERT TO PAGE #
+	ANDI	R,000777	;GET NEW ADDRESS
+	IOR	R,T		; ..
+	JRST	CPOPJ1		;GIVE GOOD RETURN
+	>			;END FTFILE
+LIST
+
+SUBTTL BINARY TO SYMBOLIC CONVERSION
+
+;	PUSHJ P,LOOK		;AC T CONTAINS BINARY TO BE INTERPRETED
+;	  RETURN 1		;NOTHING AT ALL FOUND THAT'S USEFUL
+;	  RETURN 2		;SOMETHING FOUND, BUT NO EXACT MATCH
+;	  RETURN 3		;EXACT MATCH FOUND AND PRINTED
+
+LOOK:	MOVEM	T,TEM		;SAVE VALUE BEING LOOKED UP
+	PUSHJ	P,CSHVER	;SEE IF CACHE IS USEFUL
+	 JRST LOOKC2		;ITS NOT. DO IT THE OLD WAY
+	MOVE	T,TEM		;RECOVER VALUE
+	MOVSI	R,-NSYMCS	;CHECK SYMBOL CACHE FIRST
+LOOKC1:	SKIPE	W1,SYMCSH(R)	;GET POINTER AND CHECK IN USE
+	CAME	T,1(W1)		;VALUE SAME?
+	SKIPA			;NO. DON'T LOOK AT IT THEN
+	JRST	[MOVE W2,0(W1)	;CHECK SYMBOL
+		TLNE W2,(DELI+DELO) ;DELETED?
+		JRST .+1	;YES, IGNORE IT
+		MOVEM W1,SYMPNT	;GOOD ONE
+		JUMPL W1,LOOKO2	;WAS OUTSIDE LOCAL
+		JRST LOOKO4]	;WAS GLOBAL OR PROGRAM
+	AOBJN	R,LOOKC1
+LOOKC2:	PUSHJ	P,SYMSET	;SET UP SYM SEARCH POINTER AND COUNT
+	SETZM	SYMPNT		;INIT "OUTSIDE LOCAL" FLAG
+	TRZ	F,MDLCLF!PNAMEF	;INIT FLAGS
+	TLZ	F,(1B0)		;CLEAR SYMBOL TYPED FLAG
+	MOVE	T,TEM		;RESTORE VALUE BEING LOOKED UP
+	JUMPGE	R,CPOPJ		;RETURN, NOTHING FOUND
+
+LOOK1:	MOVE	W2,(R)		;GET FLAGS FOR SYMBOL
+	TLNN	W2,(PNAME)	;PROGRAM NAME?
+	JRST	[JUMPE W2,LOOK3	;YES, IGNORE NULL PROGRAM NAMES
+		TRO F,PNAMEF	;SET PROGRAM NAME FLAG
+		JRST LOOK3]	;GET NEXT SYMBOL
+	CAML	T,1(R)		;VALUE TOO LARGE?
+	TLNE	W2,(DELI!DELO)	;DELETED?
+	JRST	LOOK3		;YES, GET NEXT SYMBOL
+	TLNN	W2,(GLOBL)	;NOT PROGRAM NAME. GLOBAL SYMBOL?
+	TRNN	F,PNAMEF	;LOCAL SYMBOL. INSIDE SPECIFIED PROGRAM?
+	JRST	LOOK5		;CHECK FOR BEST VALUE SO FAR
+	CAIGE	T,20		;QUANT IS IN AC RANGE?
+	JRST	LOOK3		;YES, IGNORE OUTSIDE LOCALS
+	MOVE	W,1(R)		;GET VALUE
+	XOR	W,T		;COMPARE
+	JUMPL	W,LOOK3		;REJECT IF SIGNS DIFFERENT
+	SKIPN	W2,SYMPNT	;HAVE ANY OUTSIDE LOCAL NOW?
+	JRST	LOOK2		;NO, USE THIS ONE
+	MOVE	W,1(R)		;COMPARE VALUES
+	SUB	W,1(W2)
+	JUMPLE	W,LOOK3		;REJECT UNLESS BETTER
+
+LOOK2:	TRZ	F,MDLCLF	;NOTE NO AMBIGUITY NOW
+	HRRZM	R,SYMPNT	;SAVE POINTER TO SYMBOL
+LOOK3:	AOBJN	R,.+1
+	AOBJN	R,LOOK3A	;ADVANCE POINTER TO NEXT SYM. ANY LEFT?
+	IFE	FTFILE,<
+	TRNN	R,1B18		;HIGH SEGMENT SEARCH?
+	SKIPL	R,SAVHSM	;NO, SEARCH HIGH SEG TABLE , IF ANY
+	>
+	MOVE	R,@SYMP		;NO, WRAP AROUND END OF TABLE
+LOOK3A:	AOJLE	S,LOOK1		;TRANSFER IF MORE SYMBOLS TO LOOK AT
+	SKIPE	W2,SYMPNT	;OUTSIDE LOCALS FOUND?
+	TRNE	F,MDLCLF	;THAT ARE NOT MULTIPLY SYMBOLED?
+	JRST	LOOK4		;NO
+	JUMPGE	F,LOOKO1	;JUMP IF NO REGULAR SYMBOL FOUND
+	MOVE	W,1(W2)		;GET OUTSIDE LOCAL VALUE
+	CAMG	W,1(W1)		;BETTER THAN REGULAR SYM VALUE?
+	JRST	LOOK4		;NO, USE REGULAR SYM
+LOOKO1:	HRLI	W1,(1B0)	;FLAG OUTSIDE LOCAL
+	PUSHJ	P,SYMCSI	;ADD TO SYMBOL CACHE
+LOOKO2:	MOVE	W1,SYMPNT	;PICK UP POINTER TO SYMBOL
+	CAME	T,1(W1)		;VALUE IDENTICAL?
+	JRST	[SUB T,1(W1)	;NO, COMPUTE DIFFERENCE
+		JRST CPOPJ1]	;RETURN INEXACT
+	PUSHJ	P,SPT0		;YES, TYPE IT OUT
+	MOVEI	T,"#"
+	PUSHJ	P,TOUT		;TYPE # TO SHOW POSSIBLE AMBIGUITY
+	JRST	LOOKO3		;DOUBLE SKIP RETURN
+
+LOOK4:	SETZM	SYMPNT		;FORGET ANY OUTSIDE LOCAL SEEN
+	JUMPGE	F,CPOPJ		;RETURN 1 IF NO GOOD SYMBOLS FOUND
+	SUB	T,1(W1)		;SOMETHING FOUND, CALCULATE HOW FAR OFF
+	JRST	CPOPJ1		;RETURN 2, SOMETHING FOUND BUT NOT EXACT
+
+LOOK5:	MOVE	W2,1(R)		;GET VALUE FROM TABLE
+	XOR	W2,T		;COMPARE SIGNS
+	JUMPL	W2,LOOK3	;REJECT IF SIGNS DIFFERENT
+	JUMPGE	F,LOOK6		;TRANSFER IF NOTHING FOUND YET
+	MOVE	W,1(R)		;GET VALUE FROM TABLE
+	SUB	W,1(W1)		;COMPARE WITH BEST VALUE SO FAR
+	JUMPLE	W,LOOK3		;REJECT IF WORSE
+LOOK6:	HRR	W1,R		;SAVE AS BEST VALUES SO FAR
+	TLO	F,(1B0)		;SET FLAG SHOWING SOMETHING FOUND
+	JUMPN	W2,LOOK3	;IF NOT PERFECT, CONTINUE LOOKING
+	HRLI	W1,0		;FLAG GLOBAL OR PROGRAM LOCAL
+	PUSHJ	P,SYMCSI	;ADD TO SYMBOL CACHE
+LOOKO4:	PUSHJ	P,SPT0		;PERFECT, TYPE IT OUT
+LOOKO3:	AOS	(P)		;SKIP TWICE
+	JRST	CPOPJ1
+;ADD SYMBOL TO SYMBOL CACHE
+
+SYMCSI:	AOS	W2,SYMCSP	;ROUND-ROBIN INSERT
+	CAIL	W2,NSYMCS	;WRAPAROUND?
+	SETZB	W2,SYMCSP	;YES
+	MOVEM	W1,SYMCSH(W2)	;STORE POINTER
+	POPJ	P,
+
+
+;VERIFY CACHE IS NOW USEFUL, I.E. IT POINTS TO THE PROPER SYMBOL
+;TABLE
+
+CSHVER:	PUSHJ	P,SYMSET	;GET CURRENT POINTERS
+	CAMN	R,OLDSYM	;SAME AS PREVIOUS?
+	JRST	CPOPJ1		;YES. GO USE IT
+	MOVEM	R,OLDSYM	;SAVE CURRENT SYMBOL POINTER
+				; AND FALL THROUGH TO FLUSH CACHE
+;CLEAR SYMBOL CACHE
+
+CLRCSH:	MOVE	TT1,[SYMCSH,,SYMCSH+1]
+	SETZM	-1(TT1)
+	BLT	TT1,SYMCSH+NSYMCS-1
+	POPJ	P,
+
+CONSYM:	MOVEM	T,LWT
+	IFN	FTFILE,<
+	MOVEM	T,POKER+1>	;STORE FOR /P/M LOGIC
+	TRNN	F,LF1
+	JRST	@SCH		;PIN OR FTOC
+	TRNE	F,CF1
+	JRST  FTOC
+
+PIN:	TLC	T,700000	;PRINT INSTRUCTION
+	TLCN	T,700000
+	JRST	INOUT		;IN-OUT INSTRUCTION OR NEG NUM
+	AND	T,[XWD 777000,0]	;EXTRACT OPCODE BITS
+	JUMPE	T,HLFW		;TYPE AS HALF WORDS
+;	IFN	FTDEC20,<
+	TLNE	T,(700B8)	;NO BUILT-IN OPCODES .L. 100
+;>
+	PUSHJ	P,OPTYPE
+;	IFN	FTDEC20,<
+	TRNE	F,ITF		;INSTRUCTION TYPED?
+	JRST	PFULI1		;YES
+	MOVE	T,LWT		;NO, GET WORD
+	PUSHJ	P,LOOK		;TRY FOR FULL WORD MATCH
+	 JRST PFULI1		;NOT FOUND
+	 JRST PFULI1		;CLOSE IS NOT GOOD ENOUGH
+	POPJ	P,		;FOUND AND PRINTED
+
+PFULI1:	;>
+	MOVSI	T,777000
+	AND	T,LWT
+	TRNE	F,ITF		;HAS INSTRUCTION BEEN TYPED?
+	JRST	PIN2		;YES
+	PUSHJ	P,LOOK		;NO, LOOK IN SYMBOL TABLE
+	 JRST HLFW		;NOTHING FOUND, OUTPUT AS HALFWORDS
+	 JRST HLFW		;NO EXACT MATCH, OUTPUT AS HALFWORDS
+PIN2:	  TRO F,NAF		;EXACT MATCH TYPED, ALLOW NEG ADDRESSES
+
+	PUSHJ	P,TSPC
+	LDB	T,[XWD 270400,LWT]	;GET AC FIELD
+	JUMPE	T,PI4
+	HLRZ	W,LWT
+	CAIL	W,(JRST)
+	CAILE	W,256777	;IS INST BETWEEN JRST AND XCT?
+	JRST	[PUSHJ P,PAD	;NO, PRINT SYMBOLIC AC
+		JRST PI3A]
+	PUSHJ	P,TOC		;YES, PRINT NUMERIC AC
+PI3A:	MOVEI	W1,","
+	PUSHJ	P,TEXT
+PI4:	MOVE	W1,LWT
+	MOVEI	T,"@"
+	TLNE	W1,20		;CHECK FOR INDIRECT BIT
+	PUSHJ	P,TOUT
+	HRRZ	T,LWT
+	LDB	W,[XWD 331100,LWT]	;INSTRUCTION BITS
+	IFN	FTDEC20,<
+	MOVE	W1,W		;GET COPY
+	TRC	W1,600
+	TRNN	W1,710		;IS INST TRXX OR TLXX?
+	JRST	[PUSHJ P,TOC	;YES, PRINT ADDRESS NUMERIC
+		JRST PI7]>	;END IFN FTDEC20
+	CAIL	W,240
+	CAILE	W,247
+	JRST	PI8		;ALL (EXCEPT ASH,ROT,LSH) HAVE SYMBOLIC ADRS
+	TLNN	W1,20
+	CAIN	W,_-33
+	JRST	PI8		;JFFO AND @ GET SYMBOLIC ADDRESSES
+	PUSHJ	P,PADS3A	;ONLY ABSOLUTE ADDRESSING FOR LSH, ASH, AND ROT
+PI7:	TRZ	F,NAF
+	LDB	R,[XWD 220400,LWT]	;INDEX REGISTER CHECK
+	JUMPE	R,CPOPJ		;EXIT
+	MOVEI	T,"("
+	PUSHJ	P,TOUT
+	MOVE	T,R
+	PUSHJ	P,PAD
+	MOVEI	T,")"
+	JRST	TOUT		;EXIT
+
+PI8:	PUSHJ	P,PAD
+	JRST	PI7
+
+HLFW:	REPEAT	0,< MOVE T,LWT
+	CAML	T,[DDTINT SAVPI]
+	CAMLE	T,[DDTINT BNADR+2]
+	SKIPA
+	JRST	PAD>
+	HLRZ	T,LWT		;PRINT AS HALF WORDS
+	JUMPE	T,HLFW1		;TYPE ONLY RIGHT ADR IF LEFT ADR=0
+	TRO	F,NAF		;ALLOW NEGATIVE ADDRESSES
+	PUSHJ	P,PAD
+	MOVSI	W1,(ASCII /,,/)
+	PUSHJ	P,TEXT2		;TYPE ,,
+HLFW1:	HRRZ	T,LWT
+
+;PRINT ADDRESSES (ARG USUALLY 18 BITS BUT CAN BE 36 BITS)
+
+PAD:	ANDI	T,-1
+	JRST	@AR		;PADSO OR PAD1
+
+PADSO:	JUMPE	T,FP7B		;PRINT A ZERO
+	PUSHJ	P,LOOK
+	 JRST PADS3		;NOTHING FOUND, TYPE NUMERIC
+	 SKIPA W2,1(W1)		;SOMETHING FOUND, GET VALUE
+	 POPJ P,		;EXACT MATCH FOUND AND TYPED
+	IFN	FTDEC20,<
+	CAIGE	T,1000>
+	IFE	FTDEC20,<
+	IFE	FTEXEC!FTFILE,<
+	CAIGE	T,100>		;IN USER MODE, PRINT NUMERIC IF SYMBOL OFF
+	IFN	FTEXEC!FTFILE,<
+	CAIGE	T,200>		;  BY 100(8) OR MORE- 200(8) FOR KLDDT
+	>
+	CAIGE	W2,30000	;PRINT ADRS .LT. 30000 NUMERICALLY (KLDDT)
+	JRST	PADS3		;PRINT ADDRESS NUMERICALLY
+	MOVE	W2,TEM		;GET ORIGINAL QUANTITY
+	CAIL	W2,-100		;ADDRESS BETWEEN -100 AND -1?
+	JRST	PADS3		;YES, PRINT NUMERICALLY
+	MOVEM	T,TEM
+	PUSHJ	P,SPT0
+	MOVEI	T,"#"
+	SKIPE	SYMPNT		;SYMBOL IS OUTSIDE LOCAL?
+	PUSHJ	P,TOUT		;YES, FLAG
+	MOVEI	T,"+"
+PADS1A:	PUSHJ	P,TOUT
+	HRRZ	T,TEM
+PAD1:	JRST	TOC		;EXIT
+PADS3:	MOVE	T,TEM
+PADS3A:	TRNE	F,NAF
+	CAIGE	T,776000
+	JRST	TOC
+PADS3B:	MOVNM	T,TEM
+	MOVEI	T,"-"
+	JRST	PADS1A
+
+INOUT:	TDC	T,[XWD -1,400000]	;IO INSTRUCTION OR NEG NUM
+	TDCN	T,[XWD -1,400000]
+	JRST	PADS3B		;TYPE AS NEG NUM
+	LDB	R,[POINT 7,T,9]	;PICK OUT IO DEVICE BITS
+	CAIL	R,700_-2	;IF DEVICE .L. 700, THEN TYPE
+	JRST	HLFW		;TYPE AS HALF WORDS
+	LDB	R,[POINT 3,T,12]
+	DPB	R,[POINT 6,T,8]	;MOVE IO BITS OVER FOR OP DECODER
+	PUSHJ	P,OPTYPE
+	PUSHJ	P,TSPC
+	MOVSI	T,077400
+	AND	T,LWT
+	JUMPE	T,PI4
+	PUSHJ	P,LOOK		;LOOK FOR DEVICE NUMBER
+	 JRST INOUT2		;NOTHING FOUND, PRINT AS OCTAL
+	 JRST INOUT2		;NO EXACT MATCH, PRINT AS OCTAL
+	 JRST PI3A		;EXACT MATCH TYPED
+INOUT2:	MOVE	T,TEM
+	LSH	T,-30
+	PUSHJ	P,TOC
+	JRST	PI3A
+
+MASK:	TLNE	F,(QF)
+	JRST	MASK1
+	IFE	FTFILE,<
+	MOVEI	T,MSK
+MASK2:	MOVEI	W,1
+	MOVEM	W,FRASE1
+	JRST	QUANIN
+	>
+	IFN	FTFILE,
+MASK1:	MOVEM	T,MSK
+	JRST	RET
+
+SUBTTL SEARCH LOGIC
+
+EFFEC:	TLO	F,(LTF)
+	HRRZ	T,T
+WORD:	MOVEI	R,322000-326000	;JUMPE-JUMPN
+NWORD:	ADDI	R,326000+40*T	;JUMPN T,
+	HRLM	R,SEAR2
+	TLZN	F,(QF)
+	JRST	ERR
+	SETCAM	T,WRD
+	MOVSI	T,FRASE-DEN-1	;PREVENT TYPE OUT OF DDT PARTS
+	SETCMM	FRASE(T)
+	AOBJN	T,.-1
+	MOVE	T,ULIMIT
+	TLNE	F,(SAF)
+	TLO	F,(QF)		;SIMULATE A $Q TYPED
+	PUSHJ	P,SETUP
+	PUSHJ	P,CRF
+SEAR1:	PUSHJ	P,FETCH
+	IFE	FTDEC20,<
+	JRST	SEAR2B>
+	IFN	FTDEC20,<
+	 JRST	[MOVEI R,777	;FETCH FAILED, BUMP TO NEXT PAGE
+		IORB R,DEFV
+		JRST SEAR2A]>	;CONTINUE SEARCH
+	TLNE	F,(LTF)		;CHECK FOR EFFECTIVE ADDRESS SEARCH
+	JRST	EFFEC0
+	EQV	T,WRD
+	AND	T,MSK
+SEAR2G:	XCT	SEAR2		;(JUMPE T, OR JUMPN T,) TO SEAR3 IF FOUND
+SEAR2A:	AOS	R,DEFV		;GET NEXT LOCATION
+	TRNN	R,777		;CHECK LISTEN ONLY ONCE PER PAGE
+	PUSHJ	P,LISTEN	;ANYTHING TYPED?
+	 CAMLE R,ULIMIT		;OR END OF SEARCH?
+	JRST	SEARFN		;YES
+	JRST	SEAR1		;NO, LOOK SOME MORE
+
+	IFE	FTDEC20,<
+SEAR2B:	MOVEI	R,400000-1	;MOVE UP TO HI SEGMENT
+	IORB	R,DEFV		;PUT IN MEMORY TOO
+	TRNN	R,400000	;ALREADY IN HI SEGMENT?
+	JRST	SEAR2A>		;NO
+SEARFN:	SETCMM	LWT		;COMPLEMENT BITS BACK AND STOP SEARCH
+	JRST	DD1
+
+SEAR3:	PUSHJ	P,LISTEN	;ANY TYPEIN?
+	 SKIPA			;NO
+	JRST	SEARFN		;YES, TERMINATE SEARCH
+	MOVE	R,DEFV
+	PUSHJ	P,FETCH
+	JRST	ERR
+	TLZ	F,(STF)		;GET RID OF SUPPRESS TYPEOUT MODE
+	MOVE	T,DEFV
+	PUSHJ	P,PSHLLC	;PUSH OLD LOCATION COUNTER
+	PUSHJ	P,LI1		;CALL REGISTER EXAMINATION LOGIC TO TYPE OUT
+	PUSHJ	P,CRF
+	SETCMM	LWT
+	SETCMM	TEM
+SEAR4:	JRST  SEAR2A
+
+EFFEC0:	MOVEI	W,100
+	MOVEM	W,TEM
+EFFEC1:	MOVE	W,T
+	LDB	R,[POINT 4,T,17]	;GET IR FIELD
+	JUMPE	R,EFFEC2
+	PUSHJ	P,FETCH
+	JRST	ERR
+	HRRZS	T		;GET RID OF BITS IN LEFT IN ORDER
+	ADDI	T,(W)		;  PREVENT AROV WHEN ADDING ADDRESSES
+EFFEC2:	HRR	R,T
+	TLNN	W,20		;INDIRECT BIT CHECK
+	JRST	EFFEC3
+	SOSE,TEM
+	PUSHJ	P,FETCH
+	JRST	SEAR4
+	JRST	EFFEC1
+EFFEC3:	EQV	T,WRD
+	ANDI	T,777777
+	JRST	SEAR2G
+
+SETUP:	TLNN	F,(QF)		;QUANTITY TYPED?
+	IFE	FTDEC20,<
+	MOVEI	T,777777>	;NO, DEFAULT HIGH ADR IS TOP OF MEMORY
+	IFN	FTDEC20,<
+	IFN	FTEXEC,<
+	HRRZ	T,.JBFF>	;DEFAULT UPPER LIMIT
+	IFE	FTEXEC,<
+	MOVEI	T,777777>>
+	HRRZM	T,ULIMIT	;SAVE LAST ADDRESS OF SEARCH
+	HRRZS	R,DEFV		;GET 1ST ADDRESS
+	TLNN	F,(FAF)		;WAS A 1ST ADR SPECIFIED?
+	SETZB	R,DEFV		;NO, MAKE IT ZERO
+	CAMLE	R,ULIMIT	;LIMITS IN A REASONABLE ORDER?
+	JRST	ERR		;NO
+	POPJ	P,		;YES, RETURN
+
+ZERO:	TLNN	F,(CCF)
+	JRST	ERR
+	PUSHJ	P,SETUP
+	HRRZ	S,@SYMP		;GET 1ST ADR OF SYMBOL TABLE
+	HLRE	W1,@SYMP	;GET LENGTH OF SYM TABLE
+	SUB	W1,S		;GET NEG OF LAST ADR
+	MOVNS	W1		;GET POS LAST ADR
+	MOVEI	T,0		;0 TO STORE IN MEMORY
+ZERO1:	TRNN	R,777760
+	JRST	ZEROR		;OK TO ZERO AC'S
+	IFE	FTDEC20,<
+	IFN	FTEXEC,<
+	SKPUSR
+	>
+	IFN	FTEXEC!FTFILE,<
+	JRST	[CAIGE R,XZLOW
+		MOVEI R,XZLOW	;IN EXEC MODE, DON'T ZERO 20-40
+		JRST ZERO3 ] >
+	>
+	IFE	FTFILE,<
+	CAIGE	R,ZLOW
+	MOVEI	R,ZLOW		;DON'T ZERO 20 THRU ZLOW
+ZERO3:	CAIL	R,DDTX
+	CAILE	R,DDTEND
+	JRST	.+2
+	MOVEI	R,DDTEND	;DON'T ZERO DDT
+	IFE	FTDEC20,<
+	CAML	R,S
+	CAMLE	R,W1>
+	JRST	.+2
+	HRRZ	R,W1		;DON'T ZERO SYMBOL TABLE
+	>
+	IFN	FTFILE,<
+ZERO3:>
+ZEROR:	CAMLE	R,ULIMIT	;ABOVE LIMITS?
+	JRST	DD1		;YES, STOP
+	PUSHJ	P,DEPMEM	;DEPOSIT T
+	IFE	FTFILE,<
+	 TROA R,377777		;
+	AOJA	R,ZERO1
+	TRNN	R,400000	;HI SEGMENT?
+	AOJA	R,ZERO1		;NO, KEEP GOING
+	>
+	JRST	DD1		;FINISH
+	IFN	FTFILE,
+
+SUBTTL OUTPUT SUBROUTINES
+
+FTOC:				;NUMERIC OUTPUT SUBROUTINE
+TOC:	HRRZ	W1,ODF
+	CAIN	W1,10		;IS OUPUT RADIX NOT OCTAL, OR
+	TLNN	T,-1		;ARE THERE  NO LEFT HALF BITS?
+	JRST	TOCA		;YES, DO NOTHING SPECIAL
+	HRRM	T,TOCS		;NO, TYPE AS HALF WORD CONSTANT
+	HLRZS	T		;GET LEFT HALF
+	PUSHJ	P,TOC0		;TYPE LEFT HALF
+	MOVSI	W1,(ASCII /,,/)
+	PUSHJ	P,TEXT2		;TYPE ,,
+	XCT	TOCS		;GET RIGHT HALF BACK
+TOCA:	HRRZ	W1,ODF		;IS OUTPUT RADIX DECIMAL?
+	CAIN	W1,12
+	JRST	TOC4		;YES,TYPE SIGNED WITH PERIOD
+TOC0:	LSHC	T,-43
+	LSH	W1,-1		;W1=T+1
+	DIVI	T,@ODF
+	HRLM	W1,0(P)
+	SKIPE	T
+	PUSHJ	P,TOC0
+	HLRZ	T,0(P)
+	ADDI	T,"0"
+	JRST	TOUT
+
+TOC4:	MOVE	A,T		;TYPE AS SIGNED DECIMAL INTEGER
+	JUMPGE	T,TOC5
+	MOVEI	T,"-"
+	PUSHJ	P,TOUT
+TOC5:	PUSHJ	P,FP7		;DECIMAL PRINT ROUTINE
+TOC6:	MOVEI	T,"."
+	JRST	TOUT
+
+;SYMBOL OUTPUT SUBROUTINE
+
+SPT0:	HRRZM	W1,SPSAV	;SAVE POINTER TO TYPED SYM
+SPT:				;RADIX 50 SYMBOL PRINT
+	LDB	T,[POINT 32,0(W1),35]	;GET SYMBOL
+SPT1:	IDIVI	T,50
+	HRLM	W1,0(P)
+	JUMPE	T,SPT2
+	PUSHJ	P,SPT1
+SPT2:	HLRZ	T,0(P)
+	JUMPE	T,CPOPJ		;FLUSH NULL CHARACTERS
+	ADDI	T,260-1
+	CAILE	T,271
+	ADDI	T,301-272
+	CAILE	T,332
+	SUBI	T,334-244
+	CAIN	T,243
+	MOVEI	T,256
+	JRST	TOUT
+
+SYMD:				;$D ;DELETE LAST SYM & PRINT NEW
+	HRRZ	R,SPSAV		;PICK UP POINTER TO LAST SYM
+	JUMPE	R,ERR
+	MOVE	T,(R)		;PICK UP SYMBOL
+	TLO	T,(DELO)	;TURN ON "SUPPRESS OUTPUT" BIT
+	PUSHJ	P,DSYMER	;STORE BACK IN SYMBOL TABLE
+	MOVE	T,LWT
+	JRST	CONSYM		;PRINT OUT NEXT BEST SYMBOL
+
+;FLOATING POINT OUTPUT
+
+TFLOT:	MOVE	A,T
+	JUMPGE	A, TFLOT1
+	MOVNS	A
+	JFCL			;PREVENT OVERFLOW MESSAGE
+				; FROM FORTRAN PROGRAMS
+	MOVEI	T,"-"
+	PUSHJ	P,TOUT
+	TLZE	A,400000
+	JRST	FP1A
+TFLOT1:	TLNN	A, 400
+	JRST	TOC5		;IF UNNORMALIZED, TYPE AS DECIMAL INTEGER
+
+FP1:	MOVEI	B,0
+	CAMGE	A,FT01
+	JRST	FP4
+	CAML	A,FT8
+	AOJA	B,FP4
+FP1A:	MOVEI	C,0
+
+FP3:	MULI	A,400
+	ASHC	B,-243(A)
+	SETZM	TEM1		;INIT 8 DIGIT COUNTER
+	SKIPE	A,B		;DON'T TYPE A LEADING 0
+	PUSHJ	P,FP7		;PRINT INTEGER PART OF 8 DIGITS
+	PUSHJ	P,TOC6		;PRINT DECIMAL POINT
+	MOVNI	A,10
+	ADD	A,TEM1
+	MOVE	W1,C
+FP3A:	MOVE	T,W1
+	MULI	T,12
+	PUSHJ	P,FP7B
+	SKIPE,W1
+	AOJL	A,FP3A
+	POPJ	P,
+
+FP4:	MOVNI	C,6
+	MOVEI	W2,0
+FP4A:	ASH	W2,1
+	XCT,FCP(B)
+	JRST	FP4B
+	FMPR	A,@FCP+1(B)
+	IORI	W2,1
+FP4B:	AOJN	C,FP4A
+	PUSH	P,W2		;SAVE EXPONENT
+	PUSH	P,FSGN(B)	;SAVE "E+" OR "E-"
+	PUSHJ	P,FP3		;PRINT OUT FFF.FFF PART OF NUMBER
+	POP	P,W1		;GET "E+" OR "E-" BACK
+	PUSHJ	P,TEXT
+	POP	P,A		;GET EXPONENT BACK
+
+FP7:	IDIVI	A,12		;DECIMAL OUTPUT SUBROUTINE
+	MOVMS	B		;MAKE POSITIVE
+	AOS	TEM1
+	HRLM	B,(P)
+	JUMPE	A,FP7A1
+	PUSHJ	P,FP7
+
+FP7A1:	HLRZ	T,(P)
+FP7B:	ADDI	T,260
+	JRST	TOUT
+
+	353473426555		;1.0E32
+	266434157116		;1.0E16
+FT8:	233575360400		;1.0E8
+	216470400000		;1.0E4
+	207620000000		;1.0E2
+	204500000000		;1.0E1
+FT:	201400000000		;1.0E0
+	026637304365		;1.0E-32
+	113715126246		;1.0E-16
+	146527461671		;1.0E-8
+	163643334273		;1.0E-4
+	172507534122		;1.0E-2
+FT01:	175631463146		;1.0E-1
+FT0=FT01+1
+
+FCP:	CAMLE	A, FT0(C)
+	CAMGE	A, FT(C)
+	Z	FT0(C)
+
+FSGN:	ASCII	.E-.
+	ASCII	.E+.
+
+TEXTT:	MOVE	W1,T
+TEXT:	TLNN	W1,774000	;LEFT JUSTIFIED UNLESS LEFT CHAR IS NULL
+	LSH	W1,35
+TEXT2:	MOVEI	T,0		;7 BIT ASCII TEXT OUTPUT SUBROUTINE
+	LSHC	T,7
+	PUSHJ	P,TOUT
+	JUMPN	W1,TEXT2
+	POPJ	P,
+
+R50PNT:	LSH	T,-36		;RADIX 50 SYMBOL PRINTER
+	TRZ	T,3
+	PUSHJ	P,TOC
+	PUSHJ	P,TSPC
+	MOVEI	W1,LWT		;SETUP FOR SPT
+	JRST	SPT
+
+SIXBP:	MOVNI	W2,6		;SIXBIT PRINTER
+	MOVE	W1,LWT
+SIXBP1:	MOVEI	T,0
+	ROTC	T,6
+	ADDI	T,40
+	PUSHJ	P,TOUT
+	AOJL	W2,SIXBP1
+	POPJ	P,
+
+CRN:	MOVEI	T,15		;CARRIAGE RETURN
+	JRST	TOUT
+
+
+CRF:	PUSHJ	P,CRN
+	MOVEI	T,12		;LINE FEED
+	JRST	TOUT
+
+LCT: IFE FTDEC20,<
+	MOVEI	T,11
+	IFN	FTEXEC,<
+	SKPEXC	>
+	JRST	TOUT>		;IN USER MODE, TYPE A TAB
+	IFN	FTEXEC!FTDEC20,<
+	PUSHJ	P,TSPC
+	PUSHJ	P,TSPC >
+
+TSPC:	MOVEI	T,40		;SPACE
+	JRST	TOUT
+
+BITO:	MOVEI	R,BITT		;BYTE OUTPUT SUBROUTINE
+	SKIPN	OLDAR
+	MOVEM	AR,OLDAR
+	HRRZI	AR,TOC
+	TRZN	F,Q2F
+	JRST	ERR
+	MOVE	T,WRD2
+	MOVEM	T,SVBTS
+	MOVEI	T,^D36
+	IDIV	T,WRD2
+	SKIPE	T+1
+	ADDI	T,1
+	MOVEM	T,SVBTS2
+	HRRZ	SCH,R
+	JRST	BASE1O
+
+BITT:	MOVE	T,SVBTS2
+	MOVEM	T,SVBT2
+	MOVE	T+1,LWT
+	MOVEM	T+1,SVBT3
+	PUSH	P,LWT
+BITT2:	MOVEI	T,0
+	MOVE	T+2,SVBTS
+	LSHC	T,(T+2)
+	MOVEM	T,LWT
+	MOVEM	T+1,SVBT3
+	CAIE	AR,PADSO
+	PUSHJ	P,TOCA
+	CAIE	AR,TOC
+	PUSHJ	P,PIN
+	SOSG	SVBT2
+	JRST	BITT4
+	MOVEI	T,","
+	PUSHJ	P,TOUT
+	MOVE	T+1,SVBT3
+	JRST	BITT2
+
+BITT4:	POP	P,LWT
+	POPJ	P,
+XLIST
+
+SUBTTL PUNCH PAPER TAPE LOGIC
+
+	IFN	FTPTP,>			;END OF IFN FTPTP
+				;FOR PAPER TAPE IO
+LIST
+
+SUBTTL TELETYPE IO LOGIC
+
+	IFN	FTEXEC,<	;EXECUTIVE MODE TELETYPE I/O
+
+	DTE==200
+	DTEII=142		;DTE20 INTERRUPT INST
+	DTEUNS=143		;UNUSED
+	DTEEPW=144		;EXAMINE PROTECTION WORD
+	DTEERW=145		;EXAMINE RELOCATION WORD
+	DTEDPW=146		;DEPOSIT PROTECTION WORD
+	DTEDRW=147		;DEPOSIT RELOCATION WORD
+	DTEFLG=444
+	DTET11=447
+	DTEF11=450
+	DTECMD=451
+	DTEOPR=453
+	DTEMTD=455
+	DTEMTI=456
+	.DTMTO==10B27
+	.DTMMC==11B27
+	.DTNMC==12B27
+
+	DTEN==4			;MAX NUMBER OF DTE'S
+	TO11DB==1B22		;TO 11 DOORBELL
+	CL11PT==1B26		;CLEAR TO 10 DOORBELL
+	PI0ENB==1B32		;PI CHANNEL 0 ENABLE
+	PIENB==1B31		;ENABLE PI SETTING
+	DTEPRV==1B20		;RESTRICTED BIT
+;APR INTERNAL CLOCK SERVICE
+
+;CONI/CONO MTR,
+
+MTR==024			;DEVICE CODE
+
+MTRLOD==1B18			;LOAD  BITS 21-23
+;	19-20			;UNUSED, MBZ
+MTREPA==1B21			;ENABLE EXEC PI ACCOUNTING
+MTRENA==1B22			;ENABLE EXEC NON-PI ACCOUNTING
+MTRAMN==1B23			;ACCOUNTING METERS ON
+MTRTBF==1B24			;TIME BASE OFF
+MTRTBN==1B25			;TIME BASE ON
+MTRCTB==1B26			;CLEAR TIME BASE
+;	27-32			;UNUSED, MBZ
+MTRPIA==7B35			;PI ASSIGNMENT
+
+;CONI/CONO TIM
+
+TIM==020			;DEVICE ASSIGNMENT
+
+TIMCIC==1B18			;CLEAR INTERVAL COUNTER
+;	19-20			;UNUSED, MBZ
+TIMITO==1B21			;INTERVAL TIMER ON
+TIMDON==1B22			;DONE/CLEAR DONE
+TIMICO==1B23			;COUNTER OVERFLOW
+
+;GET TYPEIN CHARACTER - EXEC MODE
+
+XTIN:	PUSHJ	P,XLISTE	;TELETYPE CHARACTER INPUT
+	 JRST .-1
+	JUMPE	T,XTIN		;FILTER NULLS
+	CAIE	T,175
+	CAIN	T,176
+	MOVEI	T,33		;CHANGE ALL ALT MODES TO NEW
+	IFN	FTDEC20&<^-FTEDIT>,<	;IF NO FANCY EDITING...
+	CAIE	T,"U"-100	;^U?
+	CAIN	T,177		;RUBOUT?
+	JRST	WRONG		;YES, TYPE XXX
+	>
+	IFE	FTDEC20&<^-FTEDIT>,<	;IF FANCY EDITING...
+	CAIE	T,177		;DON'T ECHO EDIT CHARACTERS
+	CAIN	T,"U"-100
+	JRST	XTIN1
+	CAIE	T,"R"-100
+	CAIN	T,"W"-100
+	JRST	XTIN1>
+	CAIN	T,15		;CR?
+	JRST	[MOVEI T,12	;YES, PRESET LF FOR NEXT TIME
+		MOVEM T,XNXTCH
+		MOVEI T,15	;ECHO AND RETURN CR NOW
+		JRST .+1]
+	SKIPN	TEXINF		;DON'T ECHO TAB UNLESS TEXT INPUT
+	CAIE	T,11
+	PUSHJ	P,ECHO		;ECHO THE CHAR
+XTIN1:	POPJ	P,
+
+;TYPEOUT CHARACTER FROM T
+
+XTOUT:	SKPNKL			;KL10?
+	JRST	KLXTYO		;YES
+	HRLM	T,(P)
+	IMULI	T,200401	;GENERATE PARITY
+	AND	T,[11111111]
+	IMUL	T,[11111111]
+	HLR	T,(P)
+	TLNE	T,10
+	TRC	T,200		;MAKE PARITY EVEN
+	CONSZ	TTY,20
+	JRST	.-1
+	DATAO	TTY,T
+	ANDI	T,177		;FLUSH PARITY
+	POPJ	P,0
+XLIST
+	REPEAT	0,<
+KLXTYO:	PUSHJ	P,EBRIDX	;GET INDEX OF EPR IN TT2
+	MOVEI	T,.DTMTO(T)	;GET MONITOR OUTPUT COMMAND AND CHAR IN T
+	MOVEM	T,DTECMD(TT2)	;PUT IN COMMAND WORD
+	SETZM	DTEMTD(TT2)	;CLEAR DONE FLAG.
+	XCT	DING11		;RING THE DOORBELL
+	SKIPN	DTEMTD(TT2)	;DONE YET?
+	JRST	.-1		;NO, LOOP
+	ANDI	T,377		;CLEAN UP CHARACTER IN T
+	POPJ	P,0		;RETURN
+>
+LIST
+KLXTYO:	PUSH	P,0
+	MOVE	0,T
+	PUSHJ	P,$DTEXX	;PRINT CHAR
+	POP	P,0
+	ANDI	T,177
+	POPJ	P,
+
+$DTEXX:	PUSHJ	P,EBRIDX	;GET INDEX OF EBR IN TT2
+	SETZM	DTEFLG(TT2)
+	MOVEM	0,DTECMD(TT2)	;LOAD COMMAND CODE
+	XCT	DING11		;RING -11 DOORBELL
+	SKIPN	DTEFLG(TT2)
+	JRST	.-1		;WAIT TILL DONE
+	MOVE	0,DTEF11(TT2)
+	SETZM	DTEFLG(TT2)
+	POPJ	P,
+;SKIP IF HAVE INPUT CHAR AND RETURN IT IN T
+
+XLISTE:	SKIPE	T,XNXTCH	;PRESET CHAR?
+	JRST	[SETZM XNXTCH	;YES, RETURN IT ONCE
+		JRST XLIST1]
+	IFN	FTYANK,<
+	SKIPE	COMAND		;COMAND FILE?
+	JRST	XPTRIN		;YES, READ IT
+	>
+	SKPNKL
+	JRST	KLXLIS		;DO KL10 INPUT
+	CONSO	TTY,40		;NO, LISTEN FOR TTY
+	POPJ	P,
+	DATAI	TTY,T
+XLIST1:	ANDI	T,177
+	JRST	CPOPJ1
+XLIST
+	REPEAT	0,<
+
+KLXLIS:	PUSHJ	P,EBRIDX	;GET EPT INDEX IN TT2
+	SKIPN	DTEMTI(TT2)	;ANY INPUT YET?
+	POPJ	P,		;NO
+	MOVE	T,DTEF11(TT2)	;GET IT
+	SETZM	DTEMTI(TT2)	;YES
+	JRST	XLIST1
+>
+LIST
+KLXLIS:	PUSH	P,0
+	MOVEI	3400		;SETUP DDT MODE INPUT REQ CODE
+	PUSHJ	P,$DTEXX	;REQUEST TTY INPUT FROM PDP-11
+	MOVEM	0,T
+	POP	P,0
+	ANDI	T,177
+	CAIN	T,003		;CONTROL C ?
+	JRST	KLCC		;YES
+	SKIPN	T		;ANY RESPONSE ?
+	POPJ	P,		;NO, NON-SKIP RETURN
+	JRST	XLIST1
+KLCC:	MOVE	T,[JRST KLCC1]
+	JRST	XEC0		;RESTORE BP'S ETC.
+
+KLCC1:	CONO	0,0		;CLEAR APR
+	MOVEM	0,KLCC0#
+	CONI	10,0
+	TRNN	600000		;IS CACHE ON ?
+	JRST	KLCC2		;NO
+	BLKO	14,0		;YES, FLUSH CACHE
+	CONSZ	0,200000
+	JRST	.-1		;WAIT TILL BUSY GOES AWAY
+
+KLCC2:	PUSH	P,TT2
+	PUSHJ	P,EBRIDX
+	MOVEI	403
+	MOVEM	DTECMD(TT2)	;END OF PROGRAM CALL
+	POP	P,TT2
+	MOVE	0,KLCC0
+	XCT	DING11		;DOORBELL THE -11
+	JRST	.		;HANG UP, -11 WILL ABORT
+;SAVE USER STATUS ('RETURN' TO DDT)
+
+XTTYRE:	SKPNKL
+	JRST	LTTYRE		;DO KL10 SAVE STATUS
+	SKIPE	SAVTTY		;ALREADY HAVE IT?
+	JRST	TTY1		;YES
+	CONI	TTY,SAVTTY	;SAVE PI ASSMT
+	CONO	TTY,0		;SET PI ASSMT TO 0
+	MOVSI	W2,(1000000)
+	CONSZ	TTY,120		;WAIT FOR PREVIOUS ACTIVITY TO FINISH
+	SOJG	W2,.-1		;BUT DON'T WAIT FOREVER
+	CONI	TTY,W2		;UPDATE STATUS BITS
+	DPB	W2,[POINT 15,SAVTTY,32]
+	DATAI	TTY,W2
+	HRLM	W2,SAVTTY
+TTY1:	CONO	TTY,3410	;INIT TTY FOR DDT
+	POPJ	P,
+
+;RESTORE USER STATUS ('LEAVE' DDT)
+
+XTTYLE:	SKPNKL
+	JRST	LTTYLE		;DO KL10 RESTORE STATUS
+	CONSZ	TTY,120		;WAIT FOR LAST OUTPUT
+	JRST	.-1
+	CONO	TTY,1200	;CLEAR DONE FLAGS
+	MOVE	T,SAVTTY
+	CONO	TTY,0(T)	;RESTORE USER STATE
+	SETZM	SAVTTY		;NOTE USER STATE NOW IN EFFECT
+	POPJ	P,
+
+LTTYRE:	SETZM	DTEFLG
+	SETZM	DTET11
+	SETZM	DTEF11
+	MOVE	T,DTEOPR
+	OR	T,[CONO 200,TO11DB]
+	MOVEM	T,DING11
+	POPJ	P,
+
+LTTYLE:	MOVEI	T,3000
+	PUSHJ	P,KLXTYO
+	JRST	LTTYRE
+
+EBRIDX:	SETZM	TT2
+	POPJ	P,
+XLIST
+REPEAT	0,<
+;ROUTINES TO SAVE AND RESTORE KL10 TTY STATUS
+; WHICH AMOUNTS TO SAVING AND RESTORING DTE INTERRUPT
+; INSTRUCTION IN LOCATION DTEII
+
+LTTYLE:	MOVE	T,MSTRDT	;GET ID OF MASTER DTE
+	LSH	T,3		;FIND EPT CHUNK
+	MOVE	W2,SAVEBR	;THE OLD EBR
+	LSH	W2,^D9		;MAKE IT A CORE ADDRESS
+	ADDI	W2,0(T)		;POINT TO BEGINNING OF EPT CHUNK
+	MOVEI	T,DTEII(W2)	;WHERE TO DO RESTORE
+	HRLI	T,SAVTTY	;WHERE TO RESTORE FROM
+	BLT	T,DTEDRW(W2)	;UP THROUGH DEPOSIT, LAST WORD
+	HRRZ	T,MTRCNI	;GET SAVED MTR CONI
+	CONO	MTR,MTRLOD(T)	;RESTORE ALL STATES
+	HRRZ	T,TIMCNI	;GET SAVED TIM CONI
+	TRZ	T,TIMDON+TIMICO	;FLUSH CONI-ONLY BITS
+	CONO	TIM,0(T)	;RESTORE STATE
+	SETZM	SAVTTY		;NOTE PGM MODES NOW IN EFFECT
+	CONSZ	PAG,TRPENB	;IS PAGING NOW ENABLED?
+	SKIPN	DTEEPW(W2)	;YES SECONDARY PROTOCOL IN EFFECT,
+	POPJ	P,		;JUST RETURN, DON'T TURN IT OFF
+	MOVEI	T,.DTNMC	;WE WERE IN REGULAR PROTOCOL, SETUP OFF COMMAND
+	JRST	DTEDCM		;DO COMMAND
+
+
+
+;CODE TO SAVE TTY STATE (I.E. THE DTE STATE FOR THE MASTER -11)
+
+LTTYRE:	SKIPE	SAVTTY		;PGM MODES IN EFFECT?
+	JRST	LTTYR1		;NO, DON'T SAVE
+	CONI	MTR,MTRCNI	;SAVE MTR STATE
+	CONI	TIM,TIMCNI	;SAVE TIM STATE
+	CONI	PAG,T		;READ EBR
+	ANDI	T,017777
+	CONSO	PAG,TRPENB	;PAGING ON NOW?
+	JRST	LTTYR0		;NO. EBR IS BOTH PHYSICAL AND VIRTUAL
+	MOVEI	W1,0		;YES. MUST SCAN MAP FOR VIRTUAL ADDRESS
+	LSH	T,^D9		;MAKE THIS A PHYSCIAL ADDRESS
+LTTYR5:	MAP	W2,0(W1)	;GET PHYSICAL ADDRESS
+	TLNN	W2,(1B2)	;ACCESSIBLE?
+	JRST	LTTYR6		;NO. SKIP THIS PAGE
+	AND	W2,[37777777]	;GET PHYSICAL ADDRESS
+	CAMN	W2,T		;IS THIS ONE THE EBR?
+	JRST	[MOVE T,W1	;YES. GET VIRTUAL ADDRESS
+		LSH T,-^D9	;MAKE IT A PAGE
+		JRST LTTYR0]	;AND DONE
+LTTYR6:	ADDI	W1,1000		;NEXT PAGE
+	CAIG	W1,777777	;SCANNED ENTIRE SECTION?
+	JRST	LTTYR5		;NO. LOOK AT SOME MORE PAGES
+	HALT	.		;YES. CAN'T FIND EPT.
+LTTYR0:	MOVEM	T,SAVEBR	;SAVE EPT VIRTUAL ADDRESS
+	MOVSI	T,-DTEN		;POLL ALL DTES
+	MOVE	W2,[CONSO DTE,DTEPRV]	;GET TEST WORD
+	MOVE	W1,[CONSO DTE,PI0ENB+7]	;TEST FOR PI0 ENABLED
+				;   OR PI ASSIGNMENT UP
+	MOVE	W,[CONO DTE,0]	;PROTOTYPE CONO
+LTTYR2:	XCT	W1		;PI 0 UP ON THIS GUY?
+	JRST	[HRRI W,PIENB+PI0ENB	;NO. SET PI0
+		XCT W
+		XCT W1		;NOW UP?
+		JRST LTTYR4	;NO. DOESN'T EXIST THEN
+		TRZ W,PI0ENB	;TURN OFF ZERO
+		XCT W		;DO IT
+		JRST .+1]	;AND PROCEED
+	XCT	W2		;THIS THE MASTER?
+	JRST	[MOVEI T,0(T)	;YES. GET ITS NUMBER
+		MOVEM T,MSTRDT	;SAVE IT
+		LSH T,^D<35-9>	;POSITION CODE IN B9
+		ADD T,[CONO DTE,TO11DB] ;GET THE INSTRUCTION
+		MOVEM T,DING11	;SAVE IT
+		JRST LTTYR3]	;AND DONE
+LTTYR4:	ADD	W2,[1B9]	;NEXT DTE
+	ADD	W,[1B9]
+	ADD	W1,[1B9]	;ADJUST ALL I/O INSTRUCTIONS
+	AOBJN	T,LTTYR2	;POLL ALL OF THEM
+	HALT	.		;CAN'T HAPPEN!!!!!!!!!!!!!
+LTTYR3:	MOVE	T,SAVEBR	;GET EBR AGAIN
+	LSH	T,^D9		;MAKE IT A CORE ADDRESS
+	MOVE	W2,MSTRDT	;GET MASTER'S NUMBER
+	LSH	W2,3		;HIS CHUNK
+	ADD	T,W2		;THE POSITION IN THE EPT
+	MOVE	W2,T		;SAVE EBR FOR INDEXING
+	MOVSI	T,DTEII(T)	;START OF EPT LOCATIONS TO SAVE
+	HRRI	T,SAVTTY	;WHERE TO SAVE THEM
+	BLT	T,SAVDRW
+	SKIPN	DTEEPW(W2)	;USING PRIMARY PROTOCAL?
+	JRST	LTTYR1		;NO. GO ON
+	MOVE	T,MSTRDT	;GET MASTER'S ID
+	LSH	T,^D<35-9>	;POSITION CODE IN B9
+	ADD	T,[CONSZ DTE,TO11DB]	;GET TEST INSTRUCTION
+	XCT	T		;WAIT FOR -11 TO ANSWER ALL DOORBELLS
+	JRST	.-1		;THE WAIT
+LTTYR1:	CONO	MTR,MTRLOD+MTRTBF	;TURN OFF ALL METERS AND TIME BASE
+	CONO	TIM,0		;TURN OFF INTERVAL TIMER
+	MOVSI	T,(HALT)
+	MOVEM	T,DTEII(W2)	;NO INTERRUPTS
+	SETZM	DTEEPW(W2)	;CLEAR EXAMINE PROTECTION WORD
+	MOVEI	T,.DTMMC	;TURN ON SECONDARY TTY I/O SYSTEM
+DTEDCM:	PUSHJ	P,EBRIDX	;GET EPT INDEX IN TT2
+	SETZM	DTEFLG(TT2)	;CLEAR DONE FLAG
+	MOVEM	T,DTECMD(TT2)	;STORE COMMAND FOR 11
+	XCT	DING11		;RING HIS DOORBELL
+	SKIPN	DTEFLG(TT2)	;WAIT FOR FINISH
+	JRST	.-1
+	POPJ	P,		;RETURN
+
+;ROUTINE TO LOAD EPT ADDRESS IN TT2. CALLED BY ROUTINES WISHING
+;TO LOCATE THE MONITOR PROTOCOL LOCATIONS
+
+EBRIDX:	MOVE	TT2,SAVEBR	;GET EBR ADDRSSS
+	LSH	TT2,^D9		;MAKE IT A CORE ADDRESS
+	POPJ	P,		;AND DONE
+	>			;END IFN FTEXEC
+>
+LIST
+
+;TELETYPE OUTPUT - COMMON START POINT
+
+TOUT:	SETZM	CHINP		;RESET INPUT LINE
+	SETZM	CHINC
+ECHO:	PUSH	P,T		;SAVE ORIG CHAR
+	CAIN	T,33		;CONVERT ESC
+	JRST	[MOVEI T,"$"
+		JRST ECHO1]
+	CAIE	T,15		;CR OR LF?
+	CAIN	T,12
+	JRST	ECHO1		;YES, NO CONVERSION
+	CAIN	T,"G"-100	;BELL?
+	JRST	ECHO1		;NO CONVERSION
+	CAIN	T,11		;TAB?
+	IFE	FTEXEC,<
+	JRST	ECHO1>		;NO CONVERSION OF TAB IN USER MODE
+	IFN	FTEXEC,<
+	JRST	[SKPEXC
+		JRST ECHO1	;DITTO
+		MOVEI T," "	;CONVERT TAB TO SPACES IN EXEC MODE
+		PUSHJ P,TOUT0
+		MOVEI T," "
+		PUSHJ P,TOUT0
+		MOVEI T," "
+		JRST ECHO1]
+	>			;END FTEXEC
+	CAIL	T,40		;CONTROL CHAR?
+	JRST	ECHO1		;NO
+	MOVEI	T,"^"		;YES, INDICATE
+	PUSHJ	P,TOUT0
+	MOVE	T,0(P)		;RECOVER ORIG CHAR
+	ADDI	T,100		;CONVERT TO PRINTING EQUIVALENT
+ECHO1:	PUSHJ	P,TOUT0		;DO DEVICE-DEPENDENT OUTPUT
+	POP	P,T
+	POPJ	P,
+
+	IFE	FTDEC20,<
+OPDEF TTCALL [51B8]
+
+TOUT0:
+	IFN	FTEXEC,< SKPUSR
+	JRST	XTOUT >
+	IFN	FTFILE,< SKIPE COMAND	;IS THERE A COMMAND FILE?
+	JRST	PUTCHR>		;YES
+
+	SKIPE	TOPS20
+	JRST	.+3
+	TTCALL	1,T		;OUTPUT A CHARACTER
+	POPJ	P,
+	EXCH	T1,T
+	PBOUT
+	EXCH	T1,T
+	POPJ	P,
+
+LISTEN:
+	IFN	FTEXEC,< SKPUSR
+	JRST	XLISTE >
+	IFE	FTFILE,<
+	IFN	FTYANK,<
+	SKIPE	COMAND
+	JRST	PTRIN>>
+	IFN	FTFILE,<	;FILDDT?
+	SKIPE	COMAND		;STILL READING COMAND FILE?
+	POPJ	P,0		; IF YES, DO NOT LOOK FOR INPUT
+				; 1. SPEED UP FILDDT AND
+				; 2. ALLOW USER TO TYPE AHEAD
+				;  (ONE CONTROL C)
+	>
+	SOSLE	LCNT		;TIME TO DO TTCALL
+	POPJ	P,0		;NO--RETURN
+	MOVEI	T,12		;YES--RESET COUNT
+	MOVEM	T,LCNT		; ..
+	SKIPE	TOPS20
+	JRST	.+4
+	TTCALL	2,T		;GET NEXT CHAR, NO IO WAIT
+	POPJ	P,		;NO CHARACTER EXISTED, RETURN
+	JRST	CPOPJ1		;CHARACTER WAS THERE, SKIP RETURN
+	EXCH	T1,T
+	MOVEI	T1,.PRIIN
+	SIBE
+	AOS	(P)
+	EXCH	T1,T
+	POPJ	P,
+	IFN	FTEXEC,<
+TTYRET:	SKPUSR
+	JRST	XTTYRET
+	SKIPN	TOPS20
+	POPJ	P,
+	SKIPE	SAVTTY		;ALREADY HAVE STATE ?
+	JRST	TTYR1		;YES
+	MOVEI	T1,.PRIIN
+	RFMOD			;GET MODES
+	MOVEM	T2,SAVTTY
+	RFCOC			;GET CC MODES
+	MOVEM	T2,SAVTT2
+	MOVEM	T3,SAVTT3
+TTYR1:	MOVEI	T1,.PRIIN
+	RFMOD
+	TRZ	T2,TT%WAK+TT%DAM
+	TRO	T2,TT%WKF+TT%WKN+TT%WKP+TT%ECO+01B29
+	SFMOD
+	MOVE	T2,TTYCC2
+	MOVE	T3,TTYCC3
+	SFCOC			;SETUP PROPER DDT MODES
+	MOVEI	T1,.FHSLF
+	DIR
+	POPJ	P, >
+
+TTYCC2:	BYTE	(2)	0,1,1,1,1,1,1,2,1,2,3,1,1,2,1,1,1,1
+TTYCC3:	BYTE	(2)	1,1,1,1,1,1,1,1,1,3,1,1,1,1
+	IFE	FTEXEC,
+TTYCLR:
+	IFN	FTEXEC,< SKPUSR >
+	POPJ	P,
+	SKIPE	TOPS20
+	JRST	.+5
+	TTCALL	14,		;CLEAR ^O, SKIP ON INPUT CHARS
+	 POPJ P,		;NO INPUT CHARS, OR EXEC MODE
+	TTCALL	11,		;FLUSH ALL
+	JRST	.+7
+	MOVEI	1,.PRIOU
+	RFMOD
+	TLZ	2,(TT%OSP)
+	SFMOD
+	MOVEI	1,.PRIIN
+	CFIBF
+	PUSHJ	P,LISTEN
+	 JFCL
+	POPJ	P,		;WAITING INPUT CHARACTERS
+
+	IFN	FTEXEC,<
+TTYLEV:	SKPUSR
+	JRST	XTTYLEV
+	SKIPN	TOPS20
+	POPJ	P,
+	MOVEI	T1,.PRIIN
+	MOVE	T2,SAVTTY
+	SFMOD			;RESTORE MODES
+	MOVE	T2,SAVTT2
+	MOVE	T3,SAVTT3
+	SFCOC			;RESTORE CC MODES
+	MOVEI	1,.FHSLF
+	SKIPGE	SAVSTS
+	EIR
+	SETZM	SAVTTY
+	POPJ	P, >
+
+	IFE	FTEXEC,
+	>			;END IFE FTDEC20
+
+TEXIN:	AOSA	TEXINF		;NOTE TEXT INPUT
+TIN:	SETZM	TEXINF		;NOTE NOT TEXT INPUT
+	IFN	FTDEC20&FTEXEC&<^-FTEDIT>,<
+	SKPUSR			;EXEC MODE?
+	JRST	XTIN>		;YES, SIMPLE INPUT
+TIN1:	SOSGE	CHINC		;CHARACTER LEFT IN LINE BUFFER?
+	JRST	CHIN1		;NO, GO REFILL BUFFER
+	ILDB	T,CHINP		;GET CHARACTER
+	POPJ	P,
+;REFILL LINE BUFFER WITH EDITING
+
+CHIN1:	SKPUSR			;EXEC MODE?
+	JRST	XCHIN1		;YES, USE SIMULATION ROUTINES
+	SKIPN	TOPS20
+	JRST	XCHIN1		;TOPS-10
+	SKIPE	T1,CHINP	;REINIT LINE?
+	JRST	CHIN2		;NO
+	MOVEI	T1,NLINBF*5	;YES, SETUP MAX CHAR COUNT
+	MOVEM	T1,LINSPC
+	MOVE	T1,LINBP	;SETUP POINTER
+	MOVEM	T1,CHINP
+CHIN2:	MOVEM	T1,TEXTIB+.RDBKL	;SET BACKUP LIMIT
+	SKIPG	LINSPC		;ROOM LEFT IN BUFFER?
+	JRST	ERR		;NO, TOO MUCH TYPIN
+	SETZ	T1,
+	SKIPE	WAKALL		;WAKEUP ON EVERYTHING?
+	MOVEI	T1,ONES4	;YES, USE WAKEUP TABLE
+	MOVEM	T1,ETXTB
+	PUSH	P,LINSPC	;SAVE CURRENT SPACE
+	PUSH	P,CHINP		;AND POINTER
+	SKIPN	TEXINF		;TEXT INPUT?
+	PUSHJ	P,TTYTOF	;NO, SUPPRESS TAB ECHO
+	MOVEI	T1,TEXTIB	;POINT TO ARG BLOCK
+	TEXTI			;INPUT TO NEXT BREAK CHAR
+	 JRST ERR		;BAD ARGS (IMPOSSIBLE)
+	PUSHJ	P,TTYTON	;RESTORE NORMAL TAB ECHO
+	POP	P,CHINP		;RESTORE POINTER TO CHARS JUST TYPED
+	MOVE	T1,TEXTIB+.RDFLG	;GET FLAGS
+	TXNE	T1,RD%BFE+RD%BLR	;DELETIONS?
+	JRST	CHIN3		;YES
+	POP	P,T1		;RECOVER OLD SPACE COUNT
+	SUB	T1,LINSPC	;COMPUTE NUMBER CHARS JUST TYPED
+	MOVEM	T1,CHINC	;SETUP COUNT
+	JRST	TIN1		;GO RETURN NEXT CHAR
+
+;USER HAS DELETED BACK INTO TEXT ALREADY PROCESSED, THEREFORE
+;LINE MUST BE REPROCESSED FROM BEGINNING.  POSSIBLY ALL TEXT HAS BEEN
+;DELETED.
+
+CHIN3:	MOVEI	T1,NLINBF*5	;COMPUTE NUMBER CHARS NOW IN LINE
+	SUB	T1,LINSPC
+	JUMPE	T1,WRONG	;JUMP IF WHOLE LINE DELETED
+	MOVEM	T1,CHINC	;LINE NOT NULL, SETUP CHAR COUNT
+	MOVE	T1,LINBP	;REINIT POINTER
+	MOVEM	T1,CHINP
+	JRST	DD2		;CLEAR WORLD AND REDO LINE
+
+	IFN	<^-FTDEC20>!,<
+	IFNDEF	T1,<
+	T1==A
+	PURGT1==-1
+	>
+XCHIN1:	SKIPE	T1,CHINP	;REINIT LINE?
+	JRST	XCHIN2		;NO
+	MOVEI	T1,NLINBF*5	;YES, SETUP MAX CHAR COUNT
+	MOVEM	T1,LINSPC
+	MOVE	T1,LINBP	;SETUP POINTER
+	MOVEM	T1,CHINP
+XCHIN2:	MOVEM	T1,LINDB	;SET BEGINNING OF DELETE BUFFER
+	SKIPG	LINSPC		;ROOM LEFT IN BUFFER?
+	JRST	ERR		;NO, TOO MUCH TYPIN
+	MOVEI	T1,LINBP-TEXTIB	;SIZE OF BLOCK
+	SKIPE	WAKALL		;WAKEUP ON EVERYTHING?
+	MOVEI	T1,ETXTB-TEXTIB	;YES, INCLUDE WAKEUP TABLE
+	MOVEM	T1,TEXTIB	;SET SIZE IN BLOCK
+	PUSH	P,LINSPC	;SAVE CURRENT SPACE
+	PUSH	P,CHINP		;AND POINTER
+	MOVEI	T1,TEXTIB	;POINT TO ARG BLOCK
+	PUSHJ	P,TXTI
+	 JRST ERR		;BAD ARGS (IMPOSSIBLE)
+	POP	P,CHINP		;RESTORE POINTER TO CHARS JUST TYPED
+	POP	P,T1		;RECOVER OLD SPACE COUNT
+	IFN	FTYANK,<
+	AOSN	PTDFLG		;EOF ON COMMAND FILE
+	JRST	[SETZM CHINC
+		SETZM CHINP
+		JRST DD2]	;YES--GET BACK TO TOP LEVEL
+	>			;END FTYANK
+	SKIPN	0(P)		;REPROCESS NEEDED?
+	JRST	[MOVEI T1,NLINBF*5
+		SUB T1,LINSPC	;YES, COMPUTE NUMBER CHARS IN LINE
+		JUMPE T1,WRONG	;JUMP IF WHOLE LINE DELETED
+		MOVEM T1,CHINC	;LINE NOT NULL, SETUP CHAR COUNT
+		MOVE T1,LINBP	;REINIT POINTER
+		MOVEM T1,CHINP
+		JRST DD2]	;CLEAR WORLD AND REDO LINE
+	SUB	T1,LINSPC	;COMPUTE NUMBER CHARS JUST TYPED
+	JUMPG	T1,[MOVEM T1,CHINC	;SETUP COUNT
+		JRST TIN1]	;GO RETURN NEXT CHAR
+
+;CONTINUED ON NEXT PAGE
+
+;USER HAS DELETED BACK INTO TEXT ALREADY PROCESSED, THEREFORE LINE
+;MUST BE REPROCESSED FROM BEGINNING. POSSIBLY ALL TEXT HAS BEEN
+;DELETED.
+
+	PUSHJ	P,RDBKIN
+	SETZM	0(P)		;REQUEST REPROCESS OF LINE
+	MOVE	T1,LINBP	;RESET DELETE BOUNDARY TO BEGINNING OF LINE
+	JRST	XCHIN2
+
+	IFDEF	PURGT1,>
+	>			;END IFN ^-FTDEC20...
+
+ONES4:	OCT	-1,-1,-1,-1	;WAKEUP MASK
+
+;ROUTINES TO TURN TAB ECHO ON/OFF
+
+TTYTOF:	MOVE	T1,TTYCC2	;NORMAL MODE WORD
+	TRZA	T1,3B19		;TURN TAB OFF
+TTYTON:	MOVE	T1,TTYCC2
+	PUSH	P,T2		;PRESERVE REGS
+	PUSH	P,T3
+	MOVEM	T1,T2
+	MOVEI	T1,.PRIIN
+	MOVE	T3,TTYCC3
+	SFCOC			;SET CONTROL CHAR MODES
+	POP	P,T3
+	POP	P,T2
+	POPJ	P,
+XLIST
+
+	IFN	FTDEC20,<
+TOUT0: IFN FTEXEC,<
+	SKPUSR
+	JRST	XTOUT>
+	EXCH	T1,T
+	PBOUT			;CHAR TO TTY FROM T1
+	EXCH	T1,T
+	POPJ	P,
+
+LISTEN:	IFN	FTEXEC,<
+	SKPUSR
+	JRST	XLISTE>
+	EXCH	T1,T
+	MOVEI	T1,.PRIIN	;PRIMARY INPUT (TTY)
+	SIBE			;INPUT BUFFER EMPTY?
+	 AOS 0(P)		;NO, GIVE SKIP RETURN
+	EXCH	T1,T
+	POPJ	P,		;RETURN NOSKIP
+
+;HANDLE TTY WHEN RETURNING TO DDT FROM USER CONTEXT
+
+TTYRET:	IFN	FTEXEC,<
+	SKPUSR
+	JRST	XTTYRET>
+	SKIPE	SAVTTY		;ALREADY HAVE STATE?
+	JRST	TTYR1		;YES
+	MOVEI	T1,.PRIIN
+	RFMOD			;GET MODES
+	MOVEM	T2,SAVTTY
+	RFCOC			;GET CC MODES
+	MOVEM	T2,SAVTT2
+	MOVEM	T3,SAVTT3
+TTYR1:	MOVEI	T1,.PRIIN
+	RFMOD
+	TXZ	T2,TT%WAK+TT%DAM
+	TXO	T2,
+	SFMOD
+	MOVE	T2,TTYCC2
+	MOVE	T3,TTYCC3
+	SFCOC			;SETUP PROPER DDT MODES
+	MOVEI	T1,.FHSLF
+	IFN	FTEXEC,<
+	SKPEXC>
+	DIR
+	POPJ	P,
+
+TTYLEV:	IFN	FTEXEC,<
+	SKPUSR
+	JRST	XTTYLE>
+	MOVEI	T1,.PRIIN
+	MOVE	T2,SAVTTY
+	SFMOD			;RESTORE MODES
+	MOVE	T2,SAVTT2
+	MOVE	T3,SAVTT3
+	SFCOC			;RESTORE CC MODES
+	MOVEI	T1,.FHSLF
+	SKIPGE	SAVSTS		;PSI SYSTEM ON FOR USER?
+	EIR			;YES
+	SETZM	SAVTTY		;NOTE USER MODES IN EFFECT
+	POPJ	P,
+
+TTYCLR:	MOVEI	T1,.PRIIN
+	IFN	FTEXEC,<
+	SKPEXC>			;SKIP CFIBF IF EXEC
+	CFIBF
+	PUSHJ	P,LISTEN
+	 JFCL
+	POPJ	P,0
+
+TTYCC2:	BYTE	(2) 0,1,1,1,1,1,1,2,1,2,3,1,1,2,1,1,1,1
+TTYCC3:	BYTE	(2) 1,1,1,1,1,1,1,1,1,3,1,1,1,1
+	>			;END IFN FTDEC20
+
+	IFE	FTDEC20,<
+SUBTTL DDT COMMAND FILE LOGIC
+
+;START PAPER TAPE INPUT
+	IFN	FTYANK,<
+TAPIN:
+	IFN	FTEXEC,< SKPEXC	;SKIP IF EXEC MODE
+	JRST	UTAPIN		;USER MODE
+	CONSO	PTR,400		;TAPE IN READER?
+	JRST	ERR		;NO - ERROR
+	SETZM	EPTPTR		;YES. INDICATE START READING IN
+	SETOM	COMAND		;SHOW THERE IS A COMMAND FILE
+	JRST	RET
+	>			;END IFN EEDT&1
+UTAPIN:
+	HIADDR=W		; NEW JOB BOUNDARY(.JBREL)
+	CM=17			;CHAN FOR COMMANDS
+	INIT	CM,0		; ASCII MODE
+	SIXBIT	/DSK/		;ALWAYS ON DEVICE DSK
+	XWD	0,CBUF		; ESTABLISH RING HEADER
+	JRST	ERR		; NOT ASSIGNED, ERROR
+	TLNE	F,(QF)		;NAME GIVEN?
+	SKIPA	T,SYL		;YES. USE IT
+	IFE	FTFILE,<
+	MOVE	T,[SIXBIT /PATCH/]	;NO, DEFAULT=PATCH
+	>
+	IFN	FTFILE,<
+	MOVE	T,[SIXBIT /FILDDT/]
+	>
+	MOVEM	T,COMNDS	;SAVE NAME IN LOOKUP BLOCK
+	MOVSI	T,'DDT'		;EXTENSION
+	MOVEM	T,COMNDS+1	; ..
+	SETZM	COMNDS+3	;CLEAR PPN
+	LOOKUP	CM,COMNDS	; LOOKUP CMD FILE(IN CASE DIR DEV)
+	JRST	ERR		; NOT FOUND
+	MOVE	T,.JBFF		; LOAD .JBFF
+	MOVEM	T,SVJBFF	; AND SAVE IT
+	IFE	FTFILE,<
+	HRRZ	T,.JBREL	; LOAD .JBREL
+	MOVEI	HIADDR,2000(T)	; NEEDED, NOW PRPARE NEW .JBREL
+	IORI	HIADDR,1777	; NEW .JBREL TO ASK FOR
+	HRRZ	TT,@SYMP	; BOTTM OF SYM TBL
+	HLRE	TT1,@SYMP	; NEG LENGTH
+	SUB	TT,TT1		; TOP OF SYMBOL TBL
+	MOVEM	TT,.JBFF	; ASSUME THIS NEW .JBFF AND SAVE IT
+	SUB	T,TT		; COMPUTE WDS BETWEEN SYM TOP AND .JBREL
+	CAILE	T,207		; ENUFF FOR DSK BUFF+FUDGE FACTOR?
+	JRST	HAVECM		; YES
+	CALLI	HIADDR,11	; NO, GET ANOTHER 1K
+	JRST	ERR		; NOT AVIL, TREAT AS NO CMD FILE
+	>			;END FTFILE
+
+HAVECM:	SETOM	COMAND		; FLAG CMD FILE FOUND
+	SETZM	CHINP
+	SETZM	CHINC
+	INBUF	CM,1		; 1 BUFFER ONLY
+	IFN	FTFILE,<
+	INIT	DP,1		;ALSO DO LISTING FILE
+	 SIXBIT /LPT/
+	 XWD LBUF,0
+	 JRST	[SETZM COMAND
+		 JRST  ERR]
+	MOVSI	TT,'LST'
+	MOVEM	TT,COMNDS+1
+	SETZM	COMNDS+3
+	SETZM	COMNDS+2
+	ENTER	DP,COMNDS
+	 JRST	[SETZM COMAND
+		 JRST  ERR]
+	OUTBUF	DP,2
+	>
+	JRST	RET
+	>			;END IFN FTYANK
+
+	IFN	FTYANK,<
+	IFN	FTEXEC,<
+XPTRIN:	PUSHJ	P,PTRXNX	;GET NEXT CHAR FROM PTR
+	 JRST PTRDON		;THROUGH
+	JRST	PTRCHR		;PROCESS THE CHAR.
+	>
+PTRIN:	PUSHJ	P,PTRNX		;GET NEXT CHAR
+	 JRST PTRDON		;EOF ON COMMAND FILE
+PTRCHR:	CAIE	T,177		;RUBOUT?
+	SKIPN	TT2,T		;NULL?
+	JRST	PTRNXT		;IGNORE IT
+	IFN	FTEXEC,<
+	SKPEXC			;EXEC MODE?
+	JRST	PTRCH2
+	CAIE	T,15		;YES. CR?
+	JRST	CPOPJ1		;NO. ECHO OF CHAR WILL HAPPEN LATER
+	PUSHJ	P,PTRXNX	;READ (AND IGNORE) NEXT CHAR
+	 JFCL			; WHICH OUGHT TO BE A LINE-FEED
+	MOVEI	T,15		;RETURN CR AS CHAR
+	JRST	CPOPJ1
+PTRCH2:		>;END IFN FTEXEC
+	CAIE	T,33		;ESCAPE?
+	CAIL	T,175		;ALT-MODE?
+	MOVEI	T,"$"		;YES, ECHO "$"
+	PUSHJ	P,ECHO		;ECHO CHAR
+	MOVE	T,TT2		;RESTORE T
+	JRST	CPOPJ1		;SKIP-RETURN WITH DATA
+
+PTRNXT:
+	IFN	FTEXEC,< SKPUSR
+	JRST	XPTRIN>
+	JRST	PTRIN
+
+;THROUGH WITH  COMMAND FILE
+PTRDON:	SETZM	COMAND
+	PUSH	P,CHINC
+	PUSH	P,CHINP
+	PUSHJ	P,CRF		;2 CR-LFS
+	PUSHJ	P,CRF
+	POP	P,CHINP
+	POP	P,CHINC
+	SETOM	PTDFLG
+	POPJ	P,		;NON-SKIP RETURN
+
+;COMMAND FILE IO
+PTRNX:	SOSLE	CBUF+2		;DATA LEFT?
+	JRST	PTRNX1		;YES
+	INPUT	CM,		;GET NEXT BUF
+	STATZ	CM,740000	;ERROR?
+	HALT	.+1		;TOO BAD
+	STATZ	CM,20000	;EOF?
+	JRST	PTRNX2		;YES
+PTRNX1:	ILDB	T,CBUF+1
+	JRST	CPOPJ1		;SKIP-RETURN WITH DATA
+PTRNX2:	RELEASE	CM,		;EOF - DONE
+	IFN	FTFILE,<
+	CLOSE	DP,
+	RELEAS	DP,
+	>
+	MOVE	TT,SVJBFF
+	MOVEM	TT,.JBFF	;RESET .JBFF
+	POPJ	P,		;NON-SKIP MEANS DONE WITH COMMAND FILE
+
+	IFN	FTEXEC,<
+PTRXNX:	SKIPE	TT2,EPTPTR	;DATA IN PTR BUF?
+	JRST	PTRXN3		;YES
+	MOVE	TT2,[POINT 7,EPTRBF]	;NO SET UP TO STORE IN PTR BUFFER
+	SETZM	EPTRBF		;SWITCH FOR END OF TAPE TEST
+	CONO	PTR,20		;START PTR GOING
+PTRXN1:	CONSO	PTR,400		;EOT?
+	JRST	PTRXN4		;YES
+	CONSO	PTR,10		;DATA?
+	JRST	PTRXN1		;WAIT SOME MORE
+	DATAI	PTR,T		;READ A CHAR
+	JUMPE	T,PTRXN1	;IGNORE NULLS
+PTRXN2:	IDPB	T,TT2		;SAVE IN DATA BUFFER
+	CAIE	T,12		;LF
+	CAMN	TT2,EPTRND	; OR BUFFER FULL?
+	SKIPA	TT2,[POINT 7,EPTRBF]	;YES. START TAKING CHARS OUT OF BUF
+	JRST	PTRXN1		;NO - READ ANOTHER
+	CONO	PTR,0		;SHUT OFF PTR BEFORE READING NEXT CHAR
+
+PTRXN3:	ILDB	T,TT2		;GET A CHAR
+	CAIE	T,12		;LF
+	CAMN	TT2,EPTRND	; OR END OF BUFFER?
+	SETZ	TT2,		;YES, START PTR FOR NEXT CHAR
+	MOVEM	TT2,EPTPTR	;SAVE PNTR FOR NEXT CHAR
+	JRST	CPOPJ1		;HAVE A CHAR RETURN
+
+;EOT
+PTRXN4:	SKIPN	EPTRBF		;ANY DATA?
+	POPJ	P,		;NO - DONE RETURN
+	SETZ	T,		;YES -  FILL REST OF BUFFER WITH 0'S
+	JRST	PTRXN2
+
+EPTPTR:	0
+EPTRBF:	BLOCK	5		;BUFFER SO PTR WONT CHATTER
+EPTRND:	POINT	7,EPTRBF+4,34	;PNTR FOR LAST CHAR IN BUF
+	>			;END IFN FTEXEC
+COMAND:	0
+SVJBFF:	0
+CBUF:	BLOCK	3
+COMNDS:	SIXBIT	/PATCH/
+	SIXBIT	/DDT/
+	0
+	0
+	>			;END FTYANK
+
+	IFN	FTFILE,<
+PUTCHR:	SOSLE	LBUF+2		;ANY ROOM?
+	JRST	PUTOK		;YES
+	OUTPUT	DP,
+	STATZ	DP,740000	;ERRORS?
+	HALT	.+1		;YES
+
+PUTOK:
+	IDPB	T,LBUF+1	;DEPOSIT CHAR.
+	POPJ	P,
+
+	>			;END OF IFN FTFILE
+	>			;END IFE FTDEC20
+LIST
+
+SUBTTL DISPATCH TABLE
+
+BDISP:	POINT	12,DISP(R),11
+	POINT	12,DISP(R),23
+	POINT	12,DISP(R),35
+DISP:
+DEFINE D (Z1,Z2,Z3)<
+	BYTE	(12) Z1-DDTOFS,Z2-DDTOFS,Z3-DDTOFS
+	IFN	<!!>&<-1,,770000>,
+	 >
+;THIS MACRO PACKS 3 ADDRESSES INTO ONE WORD; EACH ADR IS 12 BITS
+
+	IFE	FTYANK,
+	IFE	FTEXEC&FTPTP,< PUNCH==ERR
+	BLKEND==ERR
+	LOADER==ERR>
+	IFN	FTDEC20,
+
+D (ERR,ERR,ERR);	(0)
+D (CNTRLZ,ERR,ERR);	(3)
+D (ERR,ERR,VARRW);	(6)
+D (TAB,LINEF,ERR);	(11)
+D (ERR,CARR,ERR);	(14)
+D (ERR,ERR,ERR);	(17)
+D (PUNCH,ERR,ERR);	(22)
+D (ERR,ERR,ERR);	(25)
+D (ERR,ERR,CNTRLZ);	(30)
+D (CONTROL,ERR,ERR);	(33)
+D (ERR,ERR,SPACE);	(36)
+D (SUPTYO,TEXI,ASSEM);	(41)
+D (DOLLAR,PERC,ERR);	(44)
+D (DIVD,LPRN,RPRN);	(47)
+D (MULT,PLUS,ACCF);	(52)
+D (MINUS,PERIOD,SLASH);	(55)
+D (NUM,NUM,NUM);	(60)
+D (NUM,NUM,NUM);	(63)
+D (NUM,NUM,NUM);	(66)
+D (NUM,TAG,SEMIC);	(71)
+D (FIRARG,EQUAL,ULIM);	(74)
+D (QUESTN,INDIRE,ABSA);	(77)
+D (BPS,CON,SYMD);	(102)
+D (EFFEC,SFLOT,GO);	(105)
+D (HWRDS,PILOC,BLKEND);	(110)
+D (KILL,LOADER,MASK);	(113)
+D (NWORD,BITO,PROCEDE);	(116)
+D (QUAN,RELA,SYMBOL);	(121)
+D (TEXO,SETPAG,ERR);	(124)
+D (WORD,XEC,TAPIN);	(127)
+D (ZERO,OCON,ICON);	(132)
+D (OSYM,VARRW,PSYM);	(135)
+
+;THIS TABLE DOES NOT HAVE ENTRIES FOR CHARS .GE. 140; THESE
+; ARE DETECTED AS ERRORS NEAR L21:
+
+SUBTTL	FANCY TERMINAL INPUT LOGIC
+
+	IFN	^-FTDEC20!,<
+TXTI:
+DOTXTI:	PUSH	P,A		;SAVE ALL AC'S USED
+	PUSH	P,B
+	PUSH	P,C
+	PUSH	P,T
+	PUSH	P,W1
+	PUSH	P,W2
+	MOVE	W1,LINSPC	;COUNT OF BYTES IN DESTINATION
+	SKIPN	W2,LINDB	;WAS IT NON-ZERO?
+	MOVE	W2,CHINP	;NO. USE DEFAULT
+
+; VERIFY ALL OF THE STRING POINTERS
+
+RDTXT1:	MOVE	A,CHINP		;HAVE A DEST POINTER?
+	PUSHJ	P,RDCBP		;YES. CHECK IT OUT
+	MOVEM	A,CHINP		;GET CONVERTED POINTER
+	SKIPN	A,LINBP		;HAVE A ^R BUFFER?
+	JRST	RDTOPM		;NO. GO AROUND THEN
+	PUSHJ	P,RDCBP		;YES. VERIFY IT
+	MOVEM	A,LINBP		;STORE VERIFIED POINTER
+RDTOPM:	MOVE	A,W2		;GET TOP OF BUFFER
+	PUSHJ	P,RDCBP		;VERIFY IT
+	MOVE	W2,A		;ALL VERIFIED NOW
+	JUMPLE	W1,WRAP0	;MAKE SURE COUNT HAS ROOM IN IT
+				; ..
+
+;MAIN LOOP - DOES INPUT OF BYTE AND DISPATCH ON CHARACTER CLASS
+;ACTION ROUTINES EXIT TO:
+; INSRT - APPEND CHARACTER AND CONTINUE
+; NINSRT - CONTINUE WITHOUT APPENDING CHARACTER
+; DING - BUFFER NOW EMPTY, POSSIBLE RETURN TO USER
+; WRAP, WRAP0 - RETURNS TO USER
+
+NINSRT:	MOVEM	W1,LINSPC	;STORE COUNT
+	PUSHJ	P,RDBIN		;DO BIN
+	MOVE	A,B		;SAVE BYTE
+	IDIVI	B,CHRWRD	;SETUP TO GET CHAR CLASS
+	LDB	B,CCBTAB(C)	;GET IT FROM BYTE TABLE
+	IDIVI	B,2		;SETUP TO REF DISPATCH TABLE
+	JUMPE	C,[HLRZ T,DISPTC(B)	;GET LH ENTRY
+		JRST .+2]
+	HRRZ	T,DISPTC(B)	;GET RH ENTRY
+	MOVE	B,A		;ROUTINES GET BYTE IN B
+	JRST	0(T)		;DISPATCH TO ACTION ROUTINE
+
+;RETURN FROM ACTION ROUTINE TO APPEND CHARACTER AND CONTINUE.
+; B/ CHARACTER
+
+INSRT:	SKIPE	WAKALL		;BREAK ON EVERYTHING?
+	JRST	WRAP		;YES. WRAP IT UP THEN
+	IDPB	B,CHINP		;APPEND BYTE TO USER STRING
+	SOJG	W1,NINSRT	;CONTINUE IF STILL HAVE COUNT
+	JRST	WRAP0		;COUNT EXHAUSTED, RETURN
+
+;RETURNS TO USER.
+
+;RETURN TO USER IF BUFFER EMPTY
+
+NDING:	CAME	W2,CHINP	;BUFFER EMPTY?
+	JRST	NINSRT		;NO, GO GET MORE INPUT
+	JRST	WRAP0
+
+;APPEND LAST CHARACTER AND RETURN
+
+WRAP:	IDPB	B,CHINP		;APPEND BYTE
+	SUBI	W1,1		;UPDATE COUNT
+
+;STORE NULL ON STRING AND RETURN
+
+WRAP0:	JUMPLE	W1,WRAP1	;DON'T STORE NULL IF COUNT EXHAUSTED
+	SETZ	B,
+	MOVE	A,CHINP
+	IDPB	B,A		;STORE NULL WITHOUT CHANGING USER PTR
+
+;UPDATE USER VARIABLES AND RETURN
+
+WRAP1:	MOVEM	W1,LINSPC	;UPDATE USER'S BYTE COUNT
+	POP	P,W2
+	POP	P,W1
+	POP	P,T
+	POP	P,C
+	POP	P,B
+	POP	P,A
+	JRST	CPOPJ1
+
+;PARAMETERS FOR CLASS TABLE
+
+CCBITS==4			;BITS/BYTE
+CHRWRD==^D36/CCBITS		;BYTES/WORD
+
+;DEFINED CHARACTER CLASSES:
+
+TOP==0				;TOPS10 BREAK
+BRK==1				;REGULAR BREAK SET
+ZER==2				;NULL
+EOLC==3				;EOL
+PUN==4				;PUNCTUATION
+SAFE==5				;ALL OTHERS
+RUBO==6				;DELETE A CHARACTER
+RTYP==7				;RETYPE THE LINE
+KLL==10				;DELETE THE LINE
+KWRD==11			;DELETE A WORD
+RDCRC==12			;CARRIAGE RETURN
+RDQTC==13			;QUOTE CHARACTER
+
+;TABLE OF BYTE PTRS TO REFERENCE CLASS TABLE
+
+	XX==CCBITS-1
+	XALL
+CCBTAB:	REPEAT	CHRWRD,<
+	 POINT CCBITS,CTBL(B),XX
+	 XX=XX+CCBITS>
+	SALL
+
+;CLASS DISPATCH TABLE
+
+DISPTC:	WRAP,,WRAP
+	ZNULL,,EOL1
+	WRAP,,INSRT
+	DELC,,RTYPE
+	DELIN,,KLWORD
+	RDCR,,RDQT
+
+;CHARACTER CLASS TABLE
+
+DEFINE CCN (A,B)<
+	REPEAT	B,<
+	 CC1 (A)>>
+
+DEFINE CC1 (C)<
+	QQ=QQ+CCBITS
+	IFG	QQ-^D35,<
+	 QW
+	 QW=0
+	 QQ=CCBITS-1>
+	QW=QW+B>
+
+	QW==0
+	QQ==-1
+
+CTBL:	CC1(ZER)		;0
+	CCN(PUN,6)		;1-6
+	CC1(TOP)		;7
+	CCN(PUN,2)		;10-11
+	CC1(EOLC)		;12
+	CC1(PUN)		;VT
+	CC1(TOP)		;FF
+	CC1(RDCRC)		;CR
+	CCN(PUN,4)		;16-21 (^N-^Q)
+	CC1(RTYP)		;^R
+	CCN(PUN,2)		;^S,^T
+	CC1(KLL)		;^U
+	CC1(RDQTC)		;^V
+	CC1(KWRD)		;^W
+	CCN(PUN,2)		;^X,^Y
+	CCN(BRK,2)		;^Z,$
+	CCN(PUN,4)		;34-37
+	CCN(PUN,^D16)		;40-/
+	CCN(SAFE,^D10)		;0-9
+	CCN(PUN,7)		;:-@
+	CCN(SAFE,^D26)		;A-Z
+	CCN(PUN,6)		;]-140
+	CCN(SAFE,^D26)		;A-Z
+	CCN(PUN,4)		;173-176
+	CC1(RUBO)		;177
+	QW			;GET LAST WORD IN
+
+;LOCAL ROUTINES TO DO LOGICAL BIN AND BOUT.
+
+RDBIN:	SKIPE	B,SAVCHR	;WANT TO BACK UP?
+	JRST	[SETZM SAVCHR	;ONLY ONCE
+		 POPJ P,0]	;RETURN
+	IFN	FTEXEC,<
+	SKPUSR
+	JRST	[PUSH P,T	;SAVE T
+	   IFN FTYANK,<
+		SKIPE COMAND
+		PUSHJ P,XPTRIN>
+		PUSHJ P,XTIN	;GET A BYTE
+		MOVE B,T	;PUT IN CORRECT PLACE
+		POP P,T		;RESTORE T
+		JRST RDBIN1]	;SKIP NEXT INST
+	>
+	IFN	FTDEC20,	;SHOULD NOT BE HERE IN USER MODE
+	IFE	FTDEC20,<
+	IFN	FTYANK,<
+	PUSH	P,T		;SAVE AN AC
+	SKIPE	COMAND		;COMMAND FILE OPEN?
+	PUSHJ	P,PTRIN		;READ COMMAND FILE
+	JRST	[MOVEI T," "	;ASSUME EOF
+		SKIPL PTDFLG	;WAS IT EOF?
+		INCHRW T	;NO--READ A BYTE
+		JRST .+1]	;CONTINUE
+	MOVE	B,T		;COPY BYTE
+	POP	P,T>		;RESTORE T
+	SKIPE	TOPS20
+	JRST	.+3
+	IFE	FTYANK,>	;READ BYTE UNDER TOPS-10
+	JRST	RDBIN1
+	PUSH	P,1
+	PBIN
+	MOVE	B,1
+	POP	P,1
+RDBIN1:	MOVEM	B,LASCHR	;SAVE LAST CHAR READ
+	POPJ	P,0		;RETURN
+
+
+;RDBOUT
+; B/ BYTE
+;	PUSHJ P,RDBOUT
+; RETURN +1 ALWAYS
+
+RDBOUT:	PUSH	P,T		;SAVE AN AC
+	PUSH	P,CHINC
+	PUSH	P,CHINP
+	MOVE	T,B		;SET FOR ECHO
+	PUSHJ	P,TOUT		;TYPE IT
+	POP	P,CHINP
+	POP	P,CHINC
+	POP	P,T
+	POPJ	P,0
+
+;RDSOUT - OUTPUT STRING ALA RDBOUT
+; B/ STRING PTR
+;	PUSHJ P,RDSOUT
+; RETURN +1 ALWAYS
+
+RDSOUT:	MOVE	A,B		;COPY POINTER
+	PUSHJ	P,RDCBP
+RDSL:	ILDB	B,A
+	JUMPE	B,CPOPJ		;EXIT ON NULL
+	PUSHJ	P,RDBOUT
+	JRST	RDSL
+
+;CHECK BYTE POINTER GIVEN AS ARGUMENT
+; A/ BYTE POINTER
+;	PUSHJ P,RDCBP
+; RETURN +1: OK, LH INITIALIZED IF NECESSARY
+
+RDCBP:	HLRZ	B,A		;GET LH
+	CAIN	B,-1		;IS DEFAULT?
+	HRLI	A,()	;YES, FILL IN 7-BIT
+	LDB	B,[POINT 6,A,11]	;CHECK BYTE SIZE
+	CAIGE	B,7		;7 OR GREATER?
+	HALT	.		;BAD BYTE SIZE
+	IBP	A		;INCR IT AND DECR IT ONCE SO WILL
+	JRST	DBP		; BE IN KNOWN STATE FOR COMPARES
+
+;LOCAL ROUTINES FOR EDITING FUNCTIONS
+
+;DELETE CHARACTER FROM DESTINATION - BACKUP PTR AND CHECK
+;FOR TOP OF BUFFER
+;	PUSHJ P,BACK
+; RETURN +1: AT TOP OF BUFFER, NO CHARACTER TO DELETE
+; RETURN +2: CHARACTER DELETED
+
+BACK:	CAMN	W2,CHINP	;AT TOP OF BUFFER?
+	POPJ	P,0		;YES
+	MOVE	A,CHINP		;GET DEST PTR
+	PUSHJ	P,DBP		;DECREMENT IT
+	MOVEM	A,CHINP		;PUT IT BACK
+	AOJA	W1,CPOPJ1	;UPDATE COUNT AND RETURN
+
+;PUT BYTE BACK INTO SOURCE
+; B/ BYTE
+;	PUSHJ P,RDBKIN
+; RETURN +1 ALWAYS
+
+RDBKIN:
+DOBKIN:	MOVE	A,LASCHR	;GET LAST BYTE READ
+	MOVEM	A,SAVCHR	;MAKE NEXT BYTE READ
+	POPJ	P,0
+
+;FIND BEGINNING OF CURRENT LINE.
+;	PUSHJ P,FNDLIN
+; RETURN +1: AT TOP OF BUFFER
+; RETURN +2: A/ BACKED-UP BYTE PTR TO BEGINNING OF LINE
+;	B/ BYTE COUNT CONSISTENT WITH CHINP IN A
+
+FNDLIN:	CAMN	W2,CHINP	;AT TOP OF BUFFER?
+	POPJ	P,0		;YES
+	PUSH	P,CHINP		;SAVE CURRENT LINE VARIABLES
+	PUSH	P,W1
+FNDLN1:	MOVE	A,CHINP		;BACKUP ONE CHARACTER
+	PUSHJ	P,DBP
+	MOVEM	A,CHINP
+	ADDI	W1,1
+	CAMN	W2,CHINP	;NOW AT TOP OF BUFFER?
+	JRST	FNDLN2		;YES, RETURN
+	LDB	B,CHINP		;NO, LOOK AT NEXT CHAR TO BE DELETED
+	CAIN	B,12		;EOL OR LF?
+	JRST	FNDLN2		;YES, RETURN
+	JRST	FNDLN1		;NO, KEEP LOOKING
+
+FNDLN2:	MOVE	A,CHINP		;RETURN NEW LINE VARIABLES
+	MOVE	B,W1
+	POP	P,W1		;RESTORE OLD LINE VARIABLES
+	POP	P,CHINP
+	JRST	CPOPJ1
+
+;ACTION ROUTINES
+
+;ZERO BYTE
+
+ZNULL:	SKIPE	WAKALL		;USER HAVE A MASK?
+	JRST	INSRT		;YES. GO SEE ABOUT IT THEN
+	JRST	WRAP0		;NO. ALWAYS BREAK THEN
+
+;CARRIAGE RETURN - IF LINE FEED FOLLOWS, TREAT LIKE EOL
+
+RDCR:	CAIGE	W1,2		;ROOM FOR CR AND LF?
+	JRST	[PUSHJ P,RDBKIN	;NO, PUT THE CR BACK
+		JRST WRAP0]	;WILL GET IT NEXT TIME
+	PUSHJ	P,RDBIN		;GET THE NEXT CHAR
+	CAIN	B,12		;LF?
+	JRST	RDCR1		;YES, NORMAL NEWLINE
+	PUSHJ	P,RDBKIN	;NO, PUT BACK THE SECOND BYTE
+	MOVEI	B,15		;APPEND A REAL CR
+	JRST	WRAP
+
+RDCR1:	MOVEI	B,15
+	IDPB	B,CHINP		;APPEND CR
+	SOS	W1
+RDCR2:	MOVEI	B,12
+EOL1:	JRST	WRAP		;YES
+
+;QUOTE CHARACTER (^V) - INHIBITS EDITING ACTION OF FOLLOWING CHARACTER
+
+RDQT:	CAIGE	W1,2		; ROOM FOR BOTH?
+	JRST	[PUSHJ P,RDBKIN	; NO. BACK UP
+		JRST WRAP0]	; AND WAIT FOR NEXT TIME
+	IDPB	B,CHINP		;STORE QUOTE
+	SOS	W1		; ONE LESS
+	PUSHJ	P,RDBIN		;GET THE NEXT CHAR
+	JRST	WRAP		;YES
+
+;DELETE CHARACTER (RUBOUT)
+
+DELC:	PUSHJ	P,BACK		;BACKUP PTR
+	 JRST WRAP0		;NOTHING LEFT IN BUFFER
+	MOVE	T,CHINP
+	ILDB	B,T		;GET CHAR JUST DELETED
+	CAIN	B,12		;WAS IT LF?
+	JRST	DELC2		;YES
+	PUSH	P,B
+	MOVEI	B,"\"
+	PUSHJ	P,RDBOUT
+	POP	P,B
+	PUSHJ	P,RDBOUT	;TYPE IT OUT
+	MOVEI	B,"\"		;INDICATE DELETION
+	PUSHJ	P,RDBOUT
+DELC4:	JRST	NINSRT		;CONTINUE INPUT UNLESS BUFFER EMPTY ETC.
+
+DELC2:	CAMN	W2,CHINP	;AT BEGINNING OF DEST BUFFER?
+	JRST	DELC1		;YES
+	LDB	B,CHINP		;NO, CHECK CHARACTER PRECEEDING LF
+	CAIE	B,15		;A CR?
+	JRST	DELC1		;NO, LEAVE IT ALONE
+	PUSHJ	P,BACK		;YES, DELETE IT ALSO
+	 JRST WRAP		;(CAN'T HAPPEN)
+DELC1:	HRROI	B,[ASCIZ /
+/]
+	PUSHJ	P,RDSOUT	;DO CRLF WHEN DELETING EOL OR CRLF
+	JRST	DELC4
+
+;DELETE LINE (CONTROL-U)
+
+DELIN:	MOVEI	C,0
+	PUSHJ	P,FNDLIN	;FIND BEGINNING OF LINE
+	 JRST NDING		;NOTHING IN BUFFER
+	LDB	C,CHINP		;GET LAST CHAR IN BUFFER
+	MOVEM	A,CHINP		;SET LINE VARIABLES TO BEGINNING
+	MOVEM	B,W1
+	JRST	NDING		;CONTINUE INPUT UNLESS BUFFER EMPTY ETC.
+
+;DELETE WORD (CONTROL-W)
+
+KLWORD:	PUSHJ	P,BACK		;DELETE AT LEAST ONE CHARACTER
+	 JRST WRAP0		;WASN'T ONE
+	MOVE	T,CHINP
+	ILDB	B,T		;GET CHAR JUST DELETED
+	CAIN	B,12		;LF OR EOL?
+	JRST	BWRD3		;YES, DON'T DELETE
+BWRD1:	PUSHJ	P,BACK		;DELETE NEXT CHARACTER
+	 JRST BWRD2		;NO MORE LEFT
+	MOVE	T,CHINP		;LOOK AT CHARACTER JUST DELETED
+	ILDB	B,T
+	IDIVI	B,CHRWRD	;GET ITS CHARACTER CLASS
+	LDB	B,CCBTAB(C)
+	CAIN	B,SAFE		;IS IT A WORD SEPARATOR?
+	JRST	BWRD1		;KEEP DELETING
+BWRD3:	IBP	CHINP		;YES, KEEP THAT CHARACTER
+	SUBI	W1,1
+BWRD2:	MOVEI	B,"_"		;INDICATE WORD DELETION
+	PUSHJ	P,RDBOUT
+	JRST	NINSRT		;CONTINUE INPUT UNLESS BUFFER EMPTY ETC.
+
+;RETYPE LINE (CONTROL-R)
+
+RTYPE:	PUSHJ	P,RTYPES	;DO THE WORK
+	JRST	NINSRT
+
+;SUBROUTINE TO RETYPE LINE
+
+RTYPES:	HRROI	B,[ASCIZ /
+/]
+	PUSHJ	P,RDSOUT	;NON-DISPLAY, GET CLEAN LINE
+	PUSHJ	P,FNDLIN	;FIND BEGINNING OF LINE
+	 MOVE A,W2		;AT TOP OF BUFFER - USE IT
+	MOVE	T,A		;SAVE PTR TO BEGINNING OF LINE
+	CAME	T,W2		;BEG OF LINE IS TOP OF BUFFER?
+	JRST	RTYP1		;NO, DON'T TYPE ^R BFR
+	SKIPE	T,LINBP		;GET ^R BFR IF ANY
+RTYW1:	CAMN	T,W2		;UP TO TOP OF BFR?
+	JRST	RTYP4		;YES, DONE WITH ^R BFR
+	ILDB	B,T		;GET CHAR FROM ^R BFR
+	JUMPN	B,[PUSHJ P,RDBOUT	;TYPE IT
+		JRST RTYW1]
+RTYP4:	MOVE	T,W2		;DONE WITH ^R BFR, NOW DO MAIN BFR
+RTYP1:	CAMN	T,CHINP		;BACK TO END OF LINE?
+	POPJ	P,0		;YES
+	ILDB	B,T		;NO, GET NEXT BYTE
+	PUSHJ	P,RDBOUT	;TYPE IT
+	JRST	RTYP1		;LOOP UNTIL AT END OF BUFFER
+
+;DECREMENT BYTE POINTER
+; A/ BYTE PTR
+;	PUSHJ P,DBP
+; RETURNS +1, CLOBBERS B AND C
+
+DBP:	LDB	B,[POINT 6,A,5]	;GET P
+	LDB	C,[POINT 6,A,11]	;GET S
+	ADD	B,C		;NEW P = P + S
+	CAIGE	B,^D36		;NEW P .GE 36?
+	JRST	DBP1		;NO, BYTE IS IN SAME WORD.
+	HRRI	A,-1(A)		;DECREMENT ADDRESS
+	MOVEI	B,^D36		;MAKE P = REMAINDER (36,S)
+	IDIV	B,C
+	MOVEI	B,0(C)
+DBP1:	DPB	B,[POINT 6,A,5]
+	POPJ	P,0
+	>			;END IFN ^-FTDEC20...
+
+SUBTTL	OP DECODER
+
+;DESCRIPTION OF OP DECODER FOR DDT:
+;
+;         THE ENTIRE INSTRUCTION SET FOR THE PDP-10 CAN BE COMPACTED INTO
+;A SPACE MUCH SMALLER THAN ONE REGISTER FOR EVERY SYMBOL.  THIS OCCURS
+;BECAUSE OF THE MACHINE ORGANIZATION AND INSTRUCTION MNEMONICS CHOSEN
+;FOR THE PDP-10.  FOR EXAMPLE, IF BITS (0-2) OF AN INSTRUCTION EQUAL
+;101(2) THE INSTRUCTION IS A HALF WORD INSTRUCTION AND AN "H" MAY
+;BE ASSUMED. "T" MAY BE ASSUMED FOR ALL TEST INSTRUCTIONS (WHICH
+;BEGIN WITH 110(2).
+;
+;      THE TABLE TBL IN DDT CONSISTS OF 9 BIT BYTES, 4 TO A WORD.
+;THE NUMBERS IN THE BYTES HAVE THE FOLLOWING SIGNIFICANCE:
+;0-37(8):	THIS IS A DISPATCH COMMAND FOR THE OP-DECODER INTERPRETER.
+;	LET THE RIGHT MOST TWO BITS EQUAL N; LET THE NEXT 3 BITS
+;	EQUAL P.
+;
+;	THE CONTENTS OF INST (INSTRUCTION) CONTAIN IN THE RIGHT
+;	MOST NINE BITS THE BINARY FOR THE MACHINE INSTRUCTION.
+;	P AND N REFER TO THE CONTENTS OF INST, AND THE OP DECODER
+;	WILL PRODUCE AN ANSWER D GIVEN P, N, AND THE CONTENTS
+;	OF INSTX N+1 GIVES THE NUMBER OF BITS IN INST; P GIVES THE
+;	POSITION (FROM THE RIGHT EDGE) OF THE N+1 BITS.
+;
+;	EXAMPLE: P = 6
+;	         N = 2
+;
+;;	C(INST) = .010 101 100(2)
+;
+;	THE RESULT = D = 010(2) = 2(8)
+;
+;	D IS USED AS A DISPATCH ON THE NEXT BYTES IN THE TABLE.
+;	IF D = 5, 5 BYTES IN THE TABLE (DON'T COUNT THE BYTES WHICH
+;	PRINT TEXT OR ARE THE EXTEND BYTE, 41-73(8))
+;	ARE SKIPPED OVER AND THE 6TH BYTE RESUMES
+;	THE INTERPRETATION.
+;
+;40(8) THIS IS A STOP CODE; WHEN THIS IS REACHED INTERPRETATION
+;	IS FINISHED.
+;41(8)-72(8) THE ALPHABET IS ENCODED INTO THIS RANGE.
+;	41- A
+;	42- B
+;	72- Z
+;	WHEN A BYTE IN THIS RANGE IS REACHED, ITS CORRESPONDING
+;	LETTER IS TYPED.
+
+;73(8) THIS IS THE "EXTEND" BYTE. THE NEXT BYTE IN THE TABLE
+;	IS A TRANSFER BYTE BUT MUST HAVE THE ADDRESS EXTENDED
+;	BY <1000-74*2+FIR.> FIRST.
+;
+;74(8)-777(8) THIS IS A TRANSFER BYTE.  IF THE BYTE IN THIS RANGE IS
+;	CONSIDERED TO BE A, TRANSFER INTERPRETATION TO THE
+;	RD BYTE IN THE TABLE.
+;
+;MACROS ASSEMBLE THE TABLE TBL:
+; 1.   A NUMBER FOLLOWED BY ^ ASSEMBLES A DISPATCH BYTE.  THE FIRST
+;	DIGIT IS THE POSITION; THE SECOND DIGIT IS THE SIZE.
+; 2.   A POINT (.) ASSEMBLES A STOP CODE.
+; 3.   A NAME FOLLOWED BY A SLASH ASSEMBLES A TRANSFER TO THE
+;	SYMBOLICALLY NAMED BYTE.
+; 4.   A STRING OF LETTERS TERMINATED BY A SPACE, COMMA, OR POINT,
+;	ASSEMBLE INTO A STRING OF BYTES, EACH BYTE BEING ONE LETTER.
+;
+;EXAMPLE OF BINARY TO SYMBOLIC DECODING:
+;	THE MACHINE CODE FOR JRST IS 254
+;		INST    0  1  0  1  0  1  1  0  0
+;	THE INTERPRETER STARTS WITH THE FIRST BYTE IN THE TABLE (63^).
+;	THE RESULT OF APPLYING THIS TO C(INST) GIVES 2.  SKIPPING OVER
+;	2 BYTES IN THE TABLE AND INTERPRETING THE THIRD RESULTS IN
+;	HAK/ BEING INTERPRETED.  AT HAK:, THERE IS A 33^.  APPLYING
+;	THIS TO C(INST) RESULTS IN 5 NON PRINTING BYTES BEING SKIPPED
+;	OVER:
+;		1.  MV/
+;			MOV PRINTING TEXT
+;		2.  MO/
+;		3.  ML/
+;		4.  DV/
+;		5.  SH/
+;
+;H1/ IS THE NEXT BYTE INTERPRETER.  AT H1: 03^ IS FOUND SO
+;4 BYTES ARE SKIPPED OVER:
+;		EXC PRINTING TEXT
+;		1.  S3/
+;		BL PRINTING TEXT
+;		T PRINTING TEXT
+;		2.  .
+;		3.  AO/
+;		4.  AOB/
+;		THE NEXT LETTERS JRS ARE TYPED OUT.  THEN T/ IS FOUND.  AT
+;T; A T IS TYPED OUT; THEN A "." IS FOUND AND EVERYTHING STOPS.
+;
+;		THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A
+;	TREE SEARCH METHOD IS USED.
+
+REPEAT 0,<
+
+DEFINE REDEF (XX)<
+DEFINE INFO (AA,BB)<
+AA XX'BB>>
+
+
+DEFINE BYT9 (L)<
+XLIST
+REDEF %
+	ZZ==0
+	ZZZ==0
+	ZZM==1
+
+	IRPC	L,<
+	Z=="L"
+	IFE	Z-":",,<==CLOC>
+		IFNDEF FIR.,
+		IFGE CLOC+73-1000-FIR.,
+		Z==0>
+	IFE	Z-"/",
+		IF2,
+		Z==0>
+	IFE	Z-"^",
+	Z==0>
+	IFE	**,
+					ZZZ==ZZZ/100>>
+				IFE Z-".",
+				Z==0>
+	IFN	Z,*ZZM
+	ZZM==ZZM*100>
+	IFE	Z,>
+LIST>
+
+DEFINE OUTP (A)<
+	BINRY==BINRY*400+BINRY*400+A
+	BINC==BINC-1
+	IFE	BINC,
+	CLOC==CLOC+1>
+
+TBL:				;OPDECODER BYTE TABLE
+	.XCREF			;KEEP THIS MESS OUT OF CREF
+
+BINRY==0
+CLOC==0				;SET BYTE LOCATION COUNTER TO 0
+BINC==4				;INIT BYTES/WORD COUNTER
+
+BYT9 <63^UUO/FLO/HAK/ACCP/BOOLE/H HWT/T ACBM/>
+
+;IO INSTRUCTIONS
+BYT9 <21^BD/CON,11^OI/S,01^Z/O/>
+BYT9 
+
+;UUOS
+BYT9 
+BYT9 
+BYT9 
+BYT9 
+BYT9 
+;BYTE AND FLOATING INSTRUCTIONS
+
+BYT9 
+BYT9 <21^LMB/R,IMB/LMB:02^.,L:L.,M:M.,B:B.,BYTE:32^.,I110//,I120/,03^UF,PA/DF,N/>
+BYT9 
+
+;FWT,FIXED POINT ARITH,MISC.
+
+BYT9 
+BYT9 <21^ADD IMB/SU BIMB:B IMB:02^.,I:I.,M/B/MO:22^>
+BYT9 
+BYT9 
+BYT9 
+BYT9 
+BYT9 
+BYT9 
+BYT9 <01^.,J/SH:02^A S2/ROT S1/L S2:S S3:H S1/21^JFF O/.,S1:21^.,C:C.,>
+
+;ARITH COMP,SKIP,JUMP
+
+BYT9 
+BYT9 
+BYT9 
+BYT9 <03^.,L/E:E.,L E/PA/G E/N:N.,G.,>
+
+;HALF WORDS
+
+BYT9 
+BYT9 <21^L HW4/R HW4:L HW3:32^IMS/Z IMS/O IMS/EIMS/>
+
+;TEST INSTRUCTIONS
+
+BYT9 
+BYT9 
+
+
+;BOOLEAN
+
+BYT9 
+BYT9 
+BYT9 
+BYT9 
+BYT9 
+
+;INSTRUCTION GROUP 120
+BYT9 
+BYT9 
+
+;MORE UUO'S
+BYT9 
+BYT9 
+
+;INSTRUCTION GROUP 110 - DF ARITHMETIC
+BYT9 
+
+REPEAT BINC,
+	IFN	BINRY,
+	.CREF			;TURN CREF BACK ON
+	>			;END OF REPEAT 0
+
+;THE FOLLOWING IS AN ALTERNATE SET OF MACROS FOR BUILDING THE OP
+;TABLE.  THEY ASSEMBLE MUCH FASTER THAN THE ONES ABOVE. THEY ARE:
+;.ADR - DECLARE TAG; .TRA - TRANSFER BYTE; .TRAX - EXTENDED TRANSFER
+;BYTE; .DIS - DISPATCH BYTE; .TXT - TEXT BYTES; .END - TEXT BYTES
+;FOLLOWED BY STOP BYTE.
+
+DEFINE BYT9 (A) <
+	XLIST
+	IRP	A,<
+A>
+	LIST>
+
+	IF1,<
+
+DEFINE .ADR (A) <
+%'A== CLOC
+FIR.== CLOC
+DEFINE .ADR (B) <
+%'B== CLOC
+LASTB==CLOC+74-FIR.>>
+
+DEFINE .TRA (A)
+DEFINE .TRAX (A)
+
+SYN .TRA, .DIS
+
+DEFINE .TXT (A) <
+	IFNB	, >>
+DEFINE .END (A) <
+	IFNB	, >
+CLOC== CLOC+1>
+
+	>			;END OF IF1
+	IF2,<
+
+DEFINE .ADR (A)>
+
+DEFINE .TRA (A) 
+
+DEFINE .TRAX (A),
+	IFL	Z1,>
+
+DEFINE .DIS (A) 
+
+DEFINE .TXT (A) ,>>
+
+DEFINE .END (A) <
+	IFNB	, >
+OUTP 40>
+
+DEFINE OUTP (A)<
+	IFGE	-1000,
+	IFE	-^D27,
+	IFE	BINC-^D18,
+	IFE	BINC-9,
+	IFE	BINC,< BYTE (9) BINR1,BINR2,BINR3,
+	BINC==^D36>
+CLOC==CLOC+1 >
+	>
+
+TBL:	.XCREF			;OPDECODER BYTE TABLE
+
+CLOC== 0			;SET BYTE LOCATION COUNTER TO 0
+BINC== ^D36			;INIT BYTES/WORD COUNTER
+
+;**********THE ARGUMENT FOR THE FOLLOWING "BYT9" MACRO
+;**************TERMINATES AT THE NEXT COMMENT WITH: **************
+
+	IFN	FTDEC20,<
+	BYT9	<
+.DIS 63,.END,.TRA FLO,.TRA HAK,.TRA ACCP,.TRA BOOLE
+	.TXT H,.TRA HWT,.TXT T,.TRA ACBM>
+	>			;END FTDEC20
+
+	IFE	FTDEC20,<
+	BYT9	<
+.DIS 63,.TRA UUO,.TRA FLO,.TRA HAK,.TRA ACCP,.TRA BOOLE
+	.TXT H,.TRA HWT,.TXT T,.TRA ACBM>
+	>			;END FTDEC20
+
+	BYT9	<
+
+;IO INSTRUCTIONS
+
+.DIS 21,.TRA BD,.TXT CON,.DIS 11,.TRA OI,.TXT S,.DIS 01,.TRA Z,.TRA O
+.ADR BD,.DIS 01,.TXT BLK,.TRA IO,.TXT DATA,.ADR IO,.DIS 11,.TRA I,.TRA O
+	.ADR OI,.DIS 01,.TRA O,.TRA I
+;UUOS
+
+.ADR UUO,.DIS 51,.END,.TXT,.DIS 32,.TRA U40,.TRAX U50,.TRA U60
+	.DIS 21,.TRAX U703,.DIS 11,.TRA USET,.DIS 01
+.TXT LOOKU,.TRA P,.TXT ENTE,.TRA R,.ADR USET,.TXT USET,.DIS 01,.TRA I,.TRA O
+.ADR U40,.DIS 03,.TRAX CAL,.TXT INI,.TRA T,.END,.END,.END,.END,.END,.TXT CALL,.TRA I
+.ADR U60,.DIS 21,.TRA U603,.DIS 01,.TXT IN,.TRA BPUT,.TXT OUT
+	.ADR BPUT,.DIS 11,.TXT BU,.ADR F,.END F,.TXT,.TXT PU,.TRA T
+.ADR U603,.DIS 01,.TRA U6062,.TXT STAT,.DIS 11,.ADR O,.END O,.TXT,.ADR Z,.END Z,.TXT
+	.ADR U6062,.DIS 11,.TXT S,.TRA U62,.TXT G,.ADR U62,.TXT ETST,.TRA S
+
+;BYTE AND FLOATING INSTRUCTIONS
+
+.ADR FLO,.DIS 51,.TRA BYTE,.TXT F,.DIS 32,.TXT,.TXT AD,.TRA A,.TXT SB
+	.TRA A,.TXT MP,.TRA A,.TXT DV,.ADR A
+.DIS 21,.TRA LMB,.TXT R,.TRA IMB,.ADR LMB,.DIS 02,.END,.TXT
+	.ADR L,.END L,.TXT,.ADR M,.END M,.TXT
+.ADR B,.END B,.TXT,.ADR BYTE,.DIS 32,.TRAX I100,.TRAX I110,.TRA I120,.TXT
+	.DIS 03,.TXT UF,.TRA PA,.TXT DF,.TRA N
+.TXT FS,.TRA C,.TXT IB,.ADR P,.END P,.TXT,.TXT I,.TRA LD
+	.ADR LD,.TXT LD,.TRA B,.TXT I,.TRA DP,.ADR DP,.TXT DP,.TRA B
+
+;FWT-FIXED POINT ARITH-MISC
+
+.ADR HAK,.DIS 33,.TRA MV,.ADR MV,.TXT MOV,.TRA MO,.TRA ML,.TRA DV
+	.TRA SH,.TRA H1,.TRA JP
+.DIS 21,.TXT ADD,.TRA IMB,.TXT SU,.ADR BIMB,.TXT B,.ADR IMB,.DIS 02,.END,.TXT
+	.ADR I,.END I,.TXT,.TRA M,.TRA B,.ADR MO,.DIS 22
+.ADR EIMS,.TXT E,.TRA IMS,.TXT S,.TRA IMS,.TXT N,.TRA IMS,.TXT M
+	.ADR IMS,.DIS 02,.END,.TXT,.TRA I,.TRA M,.ADR S,.END S,.TXT
+.ADR ML,.DIS 21,.TXT I,.TRA ML1,.ADR ML1,.TXT MUL,.TRA IMB
+	.ADR DV,.DIS 21,.TXT I,.TRA DV1
+.ADR DV1,.TXT DI,.ADR DV2,.TXT V,.TRA IMB,.ADR H1,.DIS 03,.TXT EXC,.TRA S3,.TXT BL
+	.ADR T,.END T,.TXT,.TRA AO,.ADR AO,.TXT AOBJ
+.TRA AOB,.TXT JRS,.TRA T,.TXT JFC,.TRA L,.TXT XC,.TRA T,.TXT MA,.TRA P
+	.ADR AOB,.DIS 01,.TRA P,.TRA N
+.ADR JP,.DIS 03,.TRA PU,.ADR PU,.TXT PUSH,.TRA PUS,.TRA PO
+	.ADR PO,.TXT POP,.TRA POP,.TXT JS,.ADR R,.END R,.TXT
+.TXT JS,.TRA P,.TXT JS,.ADR PA,.END A,.TXT,.TXT JR,.TRA PA
+	.ADR PUS,.DIS 01,.ADR J,.END J,.END,.TXT,.ADR POP
+.DIS 01,.END,.TXT,.TRA J,.ADR SH,.DIS 02,.TXT A,.TRA S2,.TXT ROT,.TRA S1,.TXT L
+	.ADR S2,.TXT S,.ADR S3,.TXT H,.TRA S1,.DIS 21,.TXT JFF,.TRA O,.END
+	.ADR S1,.DIS 21,.END,.TXT,.ADR C,.END C,.TXT
+
+;ARITH COMP-SKIP-JUMP
+
+.ADR ACCP,.DIS 42,.TXT CA,.TRA CA1,.TRA SJ,.TXT A,.TRA JS,.TXT S
+	.ADR JS,.TXT O,.DIS 31
+.TXT J,.TRA COMP,.TXT S,.TRA COMP,.ADR CA1,.DIS 31,.TXT I,.TRA COMP,.TXT M,.TRA COMP
+.ADR SJ,.DIS 31,.TXT JUM,.TRA PSJ,.TXT SKI,.ADR PSJ,.TXT P,.ADR COMP
+.DIS 03,.END,.TXT,.TRA L,.ADR E,.END E,.TXT,.TXT L,.TRA E,.TRA PA,.TXT G,.TRA E
+	.ADR N,.END N,.TXT,.END G,.TXT
+
+;HALF WORDS
+
+.ADR HWT,.DIS 51,.TRA HW1,.DIS 21,.TXT R,.TRA HW2,.TXT L,.ADR HW2,.TXT R,.TRA HW3
+.ADR HW1,.DIS 21,.TXT L,.TRA HW4,.TXT R,.ADR HW4,.TXT L
+	.ADR HW3,.DIS 32,.TRA IMS,.TXT Z,.TRA IMS,.TXT O,.TRA IMS,.TRA EIMS
+
+;TEST INSTRUCTIONS
+
+.ADR ACBM,.DIS 31,.TRA AC1,.DIS 01,.TXT D,.TRA AC2,.TXT S,.TRA AC2
+	.ADR AC1,.DIS 01,.TXT R,.TRA AC2,.TXT L
+.ADR AC2,.DIS 42,.TXT N,.TRA EAN,.TXT Z,.TRA EAN,.TXT C,.TRA EAN,.TXT O
+	.ADR EAN,.DIS 12,.END,.TXT,.TRA E,.TRA PA,.TRA N
+
+;BOOLEAN
+
+.ADR BOOLE,.DIS 24,.TRA ST,.ADR AN,.TXT AND,.TRA B2,.TRA AN,.TRA ST,.TRA AN,.TRA ST
+.TXT X,.ADR OR,.TXT OR,.TRA B2,.TXT I,.TRA OR,.TRA AN,.TXT EQ
+	.TRA DV2,.TRA ST,.TRA OR,.TRA ST,.TRA OR,.TRA OR
+.ADR ST,.TXT SET,.ADR B2,.DIS 24,.TXT Z,.TRA IMB,.TRA IMB
+	.ADR CA,.TXT C,.TRA TA,.ADR TM,.TXT M,.TRA IMB
+.ADR CM,.TXT C,.TRA TM,.ADR TA,.TXT A,.TRA IMB,.TRA IMB,.TRA IMB
+	.ADR CB,.TXT C,.TRA BIMB,.TRA IMB,.TRA CA
+.TRA CA,.TRA CM,.TRA CM,.TRA CB,.TXT O,.TRA IMB
+
+;INSTRUCTION GROUP 120
+.ADR I120,.DIS 11,.TRAX DMOV,.DIS 01,.TXT FIX,.TRAX FIX2,.DIS 21,.END EXTEND
+	.TXT FLT,.ADR FIX2,.DIS 21,.END,.TRA R
+.ADR DMOV,.TXT DMOV,.DIS 01,.TXT E,.TRAX EM,.TXT N
+	.ADR EM,.DIS 21,.END,.TRA M
+
+;MORE UUO'S
+
+.ADR U50,.DIS 03,.TXT OPE,.TRA N,.TXT TT,.ADR CAL,.TXT CAL,.TRA L,.END,.END,.END
+	.TXT,.TXT RENAM,.TRA E,.TXT I,.TRA N,.TXT OU,.TRA T
+.ADR U703,.DIS 02,.TXT CLOS,.TRA E,.TXT RELEA,.TRA S
+	.TXT MTAP,.TRA E,.TXT UGET,.TRA F
+
+;INSTRUCTION GROUP 110 - DF ARITHMETIC
+.ADR I110,.DIS 21,.TXT DF,.TRAX DF,.TXT D,.TRAX FXDP,.ADR DF,.DIS 02
+	.END AD,.END SB,.TXT M,.TRA P,.END DV
+
+;KL10 FIXED POINT DOUBLE PRECISION OPERATIONS
+.ADR FXDP,.DIS 02,.END ADD,.END SUB,.END MUL,.END DIV
+
+;OPCODES 100 TO 107 COME HERE
+.ADR I100,.DIS 21,.END,.DIS 02,.END,.END ADJSP,.END,.END
+;**********THIS TERMINATES THE "BYT9" MACRO ARGUMENT******
+	>
+
+	IF1,< BLOCK /4>
+	IF2,< IFN BINC-^D36, >
+
+	IFNDEF	CLOC.,
+	IFN	CLOC.-CLOC,
+
+	.CREF			;TURN CREF BACK ON
+
+BTAB:	POINT	9,TBL		;TABLE USED TO GET NEXT BYTE POINTER
+	POINT	9,TBL,8		;FOR TRANSFER BYTE
+	POINT	9,TBL,17
+	POINT	9,TBL,26
+
+OPEVAL:	MOVEI	T,0		;EVALUATE FOR AN OP CODE
+	IDPB	T,CHP		;INSERT NULL IN TEXT FOR SYMBOL
+	MOVEM	P,SAVPDL
+	TRZA	F,OUTF
+OPTYPE:	TRO	F,OUTF		;TYPE AN OPCODE SYMBOLICALLY
+	LSH	T,-33
+	MOVEM	T,INST		;GET OPCODE INTO RIGHT 9 BITS
+	MOVE	T,[XWD 440700,TXT]
+	MOVEM	T,CHP		;FOR OPEVAL,SETUP POINTER TO INPUT TEXT
+	TRZ	F,ITF		;CLEAR INSTRUCTION TYPED FLAG
+	CLEARB	R,W1
+	MOVE	W2,BTAB
+DC1:	ILDB	T,W2		;GET NEXT BYTE IN TBL
+	CAILE	T,40
+	CAIL	T,74
+	SOJGE	R,DC1		;SKIP OVER # BYTES = C(R)
+	JUMPG	R,DC1		;SKIP OVER ALPHA TEXT (AND EXTEND BYTES) WITHOUT COUNTING
+	SUBI	T,40
+	JUMPE	T,DECX		;TRANSFER ON ASTOP CODE
+	JUMPG	T,DC2
+	DPB	T,[XWD 340500,PNTR]	;SETUP R ON A DISPATCH BYTE
+	TRZ	T,-4
+	AOS	T
+	DPB	T,[XWD 300600,PNTR]
+	TRNN	F,OUTF
+	JRST	DC6		;FOR OPEVAL ONLY
+	LDB	R,PNTR		;GET # BYTES TO SKIP OVER
+	JRST	DC1
+
+DC2:	HRREI	T,-33(T)	;TOTAL SUBTRACTED NOW IS 73
+	JUMPL	T,DECT		;TYPE OUT A LETTER
+	JUMPG	T,DC3		;XFER IF BYTE .GE. 74
+	ILDB	T,W2		;BYTE IS EXTEND BYTE (73), GET NEXT
+	MOVEI	T,1000-74*2+1(T)	; BYTE AND ADD IN EXTENSION (-OFFSET)
+DC3:	MOVEI	W1,FIR.-1(T)	;BYTE IS AN XFER (1ST XFER IS 74)
+	IDIVI	W1,4
+	MOVE	W2,BTAB(W2)	;CALCULATE POINTER TO NEXT BYTE
+	ADDI	W2,(W1)
+	JRST	DC1
+
+DECT:	TRNE	F,OUTF
+	JRST	DC8		;TYPE OUT A LETTER
+	ILDB	W1,CHP		;GET NEXT INPUT LETTER
+	CAIE	W1,133(T)	;COMPARE WITH ASSUMED NEXT LETTER
+	JRST	NOMAT		;DOESNT MATCH
+	JRST	DC1		;MATCHES, TRY NEXT
+
+DECX:	TRNE	F,OUTF		;STOP (CODE 40) HAS BEEN SEEN
+	POPJ	P,		;IF FOR OUTPUT, RETURN
+	ILDB	W1,CHP		;GET NEXT INPUT CHAR IF ANY
+	JUMPE	W1,DC7		;DOES # OF CHARS MATCH
+NOMAT:	POP	P,R		;NO, BACK UP AND TRY SOME MORE
+	POP	P,W2
+	POP	P,PNTR
+	POP	P,CHP
+NOMAT1:	AOS	R		;ASSUME NEXT NUMBER FOR BIN VALUE
+	DPB	R,PNTR		;STUFF INTO ANSWER
+	LDB	R,PNTR
+	JUMPN	R,DC6AA		;IF =0, BYTE WAS TOO BIG
+	CAME	P,SAVPDL
+	JRST	NOMAT		;NOT AT TOP LEVEL
+	POPJ	P,		;UNDEFINED, FINALLY
+
+DC6:	MOVEI	R,0		;ASSUME 0 FOR INITIAL BINARY VALUE
+	DPB	R,PNTR
+DC6AA:	CAMN	P,SAVPDL
+	JRST	DC6BB
+	LDB	T,-2(P)		;OLD VALUE OF PNTR
+	CAME	T,(P)
+	JRST	NOMAT1
+DC6BB:	PUSH	P,CHP
+	PUSH	P,PNTR
+	PUSH	P,W2
+	PUSH	P,R
+	JRST	DC1
+
+DC7:	MOVE	P,SAVPDL	;RESTORE PUSH DOWN POINTER
+	MOVE	T,INST
+	LSH	T,33		;PUSH BINARY INTO POSITION FOR OPEVAL
+	LDB	R,[POINT 3,T,8]
+	TLC	T,700000
+	TLCN	T,700000
+	DPB	R,[POINT 10,T,12]	;ONLY DONE FOR IO INSTRUCTIONS
+	JRST	CPOPJ1		;SYMBOL FOUND, SKIP RETURN
+
+DC8:	TRO	F,ITF		;SET INSTRUCTION TYPED FLAG
+	MOVEI	T,133(T)
+	PUSHJ	P,TOUT		;OUTPUT A LETTER
+	CLEARM	SPSAV		;SO $D WONT TRY TO DELETE OP CODES
+	JRST	DC1
+
+;*** LITERALS XLISTED ***
+
+	XLIST
+	LIT
+	LIST
+END.C:				;END OF CODE
+
+SUBTTL VARIABLE STORAGE
+
+	IFN	FTDEC20,< IFDEF VARLOC,<
+PHVAR:	PHASE	VARLOC>>	;PHASE VARIABLES FOR UDDT AND MDDT
+
+BEG.V:				;BEGINNING OF VARIABLES
+NM1A:	MOVEI	W2,0
+ACCCF:	MOVEI	T,.-.		;LEFT HALF OF A,,B
+SEAR2:	JUMPE	T,SEAR3		;OR JUMPN T
+TOCS:	MOVEI	T,.-.		;GET RIGHT HALF BACK
+
+;VARIABLES FOR LINE BUFFER INPUT
+
+TEXINF:	0			;NON-0 FOR TEXT INPUT MODE
+CHINC:	0			;COUNT OF CHARACTERS
+WAKALL:	0			;NON-0 TO WAKEUP ON EVERYTHING
+;*** DO NOT REORDER THE FOLLOWING ***
+TEXTIB:	10			;TEXTI ARG BLOCK - SIZE
+;	IFN	FTDEC20,<
+	RD%BRK+RD%TOP+RD%PUN+RD%RND+RD%JFN+RD%BBG+RD%SUI ;FLAGS
+	.PRIIN,,.PRIOU		;INPUT/OUTPUT JFNS
+;	>
+CHINP:	0			;POINTER TO NEXT CHAR
+LINSPC:	0			;FREE SPACE COUNT
+LINDB:	POINT	7,LINBF		;BEGINNING OF BUFFER
+LINBP:	POINT	7,LINBF		;BEGINNING OF ^R BUFFER
+ETXTB:	0			;WAKEUP TABLE (ALL ONES)
+	0			;BACKUP LIMIT POINTER
+;***END OF "DO NOT REORDER" BLOCK***
+
+	IFN	^-FTDEC20!,<
+SAVCHR:	0			;PRESET RESULT FOR NEXT CALL TO RDBIN
+LASCHR:	0			;ANSWER FROM LAST CALL TO RDBIN
+	>
+
+NLINBF==^D20
+LINBF:	BLOCK	NLINBF		;LINE BUFFER
+
+SUBTTL	STORAGE -- $X LOGIC AND PATCH COMMAND
+
+	IFE	FTFILE,<
+;VARIABLES USED IN $X LOGIC
+
+I.XCT:	XCT	I.NST
+I.NST:	0			;INSTRUCTION BEING EXECUTED
+SAV0:	0			;SAVES AC 0 IN SWAP ROUTINE
+XCTS:	0			;XCT DEPTH COUNTER
+I.NSTAC:0			;AC FIELD OF INST BEING EXECUTED
+I.NSTEA:0			;E FIELD OF INST BEING EXECUTED
+XTEM:	0			;$X REPEAT COUNTER
+I.NSTPC:0			;PC OF INST BEING EXECUTED
+FLAGS:	0			;SAVES DDT FLAG REGISTER
+LOCSAV:	0			;SAVES LOCATION OF INST BEING EXECUTED
+SAFETY:	0			;SAVES T
+	>			;END FTFILE
+
+;VARIABLES FOR PATCH COMMAND
+
+PTLOC:	0			; SOURCE OF PATCH ADR ,, PATCH ADR
+PTLLC:	0			; BEFORE/AFTER FLAG ,, OLD LLOCO
+PTWRD:	0			; ORIGINAL WORD AT OLD LLOCO
+
+SUBTTL  STORAGE -- BREAKPOINTS
+	IFE	FTFILE,<
+SAVE:	0			;SAVE THE ACS AND PI SYSTEM
+	JRST	SAVEG
+
+BP1:	REPEAT	NBP,<
+	0			;JSR TO HERE FOR BREAKPOINT
+	JSA	T, BCOM
+	0			;HOLDS INSTRUCTION WHILE BREAKPOINT IS IN PLACE
+	>
+
+B1INS=BP1+2
+BPN=.-3
+
+BCOM:	0
+	JRST	BCOMG
+BCOM3:	SKIPE	0		;ADDR MOD TO LOOK AT COND. INST.
+BCOM2:	SOSG	0		;ADDR MOD TO LOOK AT PROCEED COUNTER
+LEAV1:	XWD	0,LEAVG
+BREAK2:	ROT	S,.-.		;ROT BY # OF BREAK POINT
+PROC0:	HRRZI	R,XEC1		;MODIFIED TO ADDR OF BREAKPOINT
+LEAV:	0			;INSTRUCTION MODIFIED
+CPUSHP:	PUSH	.-.,BCOM	;GETS MODIFIED IN AC FIELD
+SWAP:	0
+	JRST	SWAPG
+	>			;END IFE FTFILE
+
+SVBTS:	0
+SVBTS2:	0
+OLDAR:	0
+SVBT3:	0
+SVBT2:	0
+PSVBTS:	BLOCK	3
+
+SUBTTL	STORAGE -- SYMBOL TABLE LOGIC
+
+PNTR:	EXP	INST		;POINTER TO BITS IN INST
+INST:	0			;BINARY FOR INSTRUCTION
+CHP:	0			;CHAR POINTER INTO TXT, TXT+1
+TXT:	BLOCK	2		;STORE INPUT TEXT FOR OPEVAL
+SAVPDL:	0			;SAVE PUSH DOWN LIST POINTER
+WRD:	0
+WRD2:	0
+PRNC:	0
+
+FRASE:	0			;DONT CHANGE ORDER, SEE  SEARC+3
+SYL:	0
+LWT:	0
+TEM2:	0
+FRASE1:
+TEM3:	0
+DEN:	0
+
+SAVHSM:	BLOCK	1		;C(.JBHSM), USED BY EVAL, LOOK
+SEGNAM:	0			;THE HIGH SEGMENT NAME (OR 0)
+				;WHEN $: IS SUCCESSFULLY DONE
+PRGM:	0
+ESTUT:	0
+FSV:	0
+FH:	0
+SYM:	0
+	IFE	FTDEC20,<
+	IFE	FTFILE,<
+SYMP:	Z	.JBSYM		;POINTS TO LOW SEG SYM TABLE POINTER
+USYMP:	Z	.JBUSY		;POINTS TO UNDEF SYM TABLE POINTER
+	>
+	IFN	FTFILE,<
+SYMP:	Z	FISPTR
+USYMP:	Z	FIUPTR
+	>>
+	IFN	FTDEC20,<
+	IFN	FTEXEC,<
+SYMP:	Z	.JBSYM
+USYMP:	Z	.JBUSY>
+	IFE	FTEXEC,<
+SYMP:	Z	.DDSYM
+USYMP:	Z	.DDUSY
+	>
+JDTFLG:	-1			;JOB DATA AREA VALID IF NON-0
+	>			;END IFN FTDEC20
+
+SYMPNT:	0			;USED BY SYM TABLE SEARCHES
+SPSAV:	0			;POINTER TO LAST SYMBOL TYPED
+DEFV:	0
+ULIMIT:	0
+LLOC:	0
+LLOCO:	0
+SAVLP:	0			;POINTER TO SAVLOC TABLE
+NSAVTB==20			;SIZE OF SAVLOC TABLE (RING BUFFER)
+SAVLTB:	BLOCK	NSAVTB		;SAVLOC TABLE
+SYMORD:	0			;HOLDS ADDRESSES OF EVAL-OPEVAL ROUTINES
+				;SPECIFYING WHICH ORDER TO SEARCH THEM FOR SYMBOLS
+QLPNT:	0			;USED IN "QLIST" AS POINTER TO A SYMBOL
+LCNT:	12			;USED IN LISTEN
+SKPCT:	0			;SKIP COUNT FOR XCT
+EFAFLG:	0			;EFF ADR COMP MODE
+	IFN	FTEXEC!FTFILE,<
+;EPTUPT:	0			;LH - EPT POINTER , RH - UPT POINTER
+	>
+	IFN	FTYANK,<
+PTDFLG:	0			;EOF SEEN ON COMMAND FILE
+	>
+
+SUBTTL	STORAGE -- SAVE AREAS FOR PREVIOUS CONTEXT
+
+	IFE	FTFILE,<
+SAVAPR:	0			;USED TO SAVE APR REGISTER IN EXEC MODE
+SAVPI:	0
+	1177
+
+;THESE LOCATIONS MUST BE IN ORDER - THEY ARE USED TO SAVE AND
+;RESTORE THE STATE OF DTE FOR KL10
+
+SAVTTY:	0
+	IFN	FTEXEC,<
+;SAVUNS:	0
+;SAVEPW:	0
+;SAVERW:	0
+;SAVDPW:	0
+;SAVDRW:	0
+
+;SAVEBR:	0			;SAVED EXEC BASE REG
+;MTRCNI:	0			;RESULT OF CONI MTR,
+;TIMCNI:	0			;RESULT OF CONI TIM,
+;MSTRDT:	0			;ID OF MASTER -11
+DING11:	0			;PROTOTYPE CONO WORD FOR DTE
+	>			;END IFN EDDT
+
+;	IFN	FTDEC20,<
+SAVTT2:	0
+SAVTT3:	0
+LASTPG:	0
+SAVSTS:	0
+;	>			;END IFN FTDEC20
+	>			;END IFE FTFILE
+MSK:	XWD	-1,-1
+	IFN	FTEXEC,<	;CELLS FOR TRACE FACILITY
+TRCON:	0			;ASSUMED AT $M+1
+TRCDMP:	0>			;ASSUMED AT $M+2
+
+	IFE	FTFILE,<
+B1ADR:	0
+B1SKP:	0
+B1CNT:	0
+
+REPEAT NBP*3-3, < 0>
+
+BNADR=.-3
+AUTOPI:	0
+
+AC0:	BLOCK	17
+
+AC17:	0
+	>
+
+SUBTTL	STORAGE -- STATE VARIABLES
+
+SCHM:	EXP	PIN		;DO NOT CHANGE ORDER
+ARM:	EXP	PADSO
+ODFM:	EXP	10
+
+SARS:	0
+TEM:	0
+TEM1:	0
+
+NSYMCS==20			;SIZE OF SYMBOL TABLE CACHE
+SYMCSH:	BLOCK	NSYMCS		;SYMBOL TABLE CACHE
+SYMCSP:	BLOCK	1		;POINTER TO NEXT FREE ENTRY
+OLDSYM:	BLOCK	1		;REMEMBER CACHE SYMBOL TABLE
+	IFN	FTEXEC,<
+USRFLG:	0			;-1 IN USER MODE, 0 IN EXEC MODE
+KAFLG:	0			;0 FOR KI10; 1,,0 FOR KA10 OR PDP-6
+TOPS20:	0			;0 FOR TOPS10, -1 FOR TOPS20
+XNXTCH:	0			;PRESET INPUT CHAR AT XLISTE
+	>			;END IFN FTEXEC
+XLIST
+
+	IFN	FTFILE,<	;FILDDT STUFF
+FWAZER:!			;START OF AREA TO ZERO
+FILDEV:	BLOCK	3		;OPEN BLOCK FOR CRASH FILE
+FILBLK:	BLOCK	4		;LOOKUP BLOCK FOR CRASH FILE
+LBUF:	BLOCK	3
+SYMGET:	Z			;-1 IF /S, 0 IF NOT
+CRASHS:	Z			;-1 IF CRASH.SAV ON DISK ,0 IF PEEK AT MONITOR
+FDIDOT:	Z			;-1 IF . TYPED IN, 0 IF NOT
+PATCHS:	Z			;-1 IF PATCHING MODE
+CHGSFL:	Z			;CHANGED SYMBOL TABLE
+AC0=.
+AC17=.+17
+CRSHAC:	BLOCK	20		;CRASH AC'S
+FETPAG:	BLOCK	1		;ADDRESS OF PAGTBL ENTRY FOR LAST
+				; CALL TO FETCH
+FETADR:	BLOCK	1		;INCORE ADDRESS OF DATA WORD FROM LAST
+				; CALL TO FETCH
+WINNUM:	BLOCK	1		;WINDOW TO READ OR WRITE
+WINDIR:	BLOCK	CT.RES		;ADDRESS OF PAGTBL ENTRY FOR
+				; EACH WINDOW SLOT
+PAGTBL:	BLOCK	MX.SIZ		;1 WORD FOR EVERY VIRT. PAGE
+				;BITS 0-4 .EXE FORMAT FLAGS
+				;BIT 5 PAGE IN CORE CHANGED
+				;BITS 9-17 WINDOW # PLUS 1
+				;RH - FILE PAGE NUMBER
+WIND0:	BLOCK	CT.RES*1000	;WINDOWS
+XPNFMT:	BLOCK	1		;FILE IS IN .XPN FORMAT
+LWAZER==.-1			;END OF AREA TO ZERO
+
+FISPTR:	Z			;POINTER TO SYMBOLS
+FIUPTR:	Z			;POINTER TO UNDEF SYMS
+
+MONSIZ:	BLOCK	1		;HIGHEST LOC+1 IN CRASH.SAV FILE
+				;(USED SO WE WON'T EXAMINE PAST END)
+SAVEFF:	Z			;WHERE TO LOAD SYMBOLS IF /S
+	>			;END IFN FTFILE
+LIST
+
+SUBTTL	STORAGE -- PUSH DOWN LIST
+
+PDL:	BLOCK	LPDL		;STORAGE FOR PUSH DOWN LIST
+
+END.V==.
+	IFN	FTDEC20,< IFE FTEXEC,<
+VAREND:				;END OF INITIALIZED VARIABLES AREA
+.DDSYM:	0			;SYMTAB PTR (COPIED FROM .JBSYM USUALLY)
+.DDUSY:	0			;UNDEF SYMTAB PTR (COPIED FROM .JBUSY " )
+
+SETRT1:	0			;SCRATCH FOR VARIABLE INITIALIZATION
+END.V==.
+	DEPHASE
+	>>
+
+DDTEND:
+
+	IFDEF	VARLOC,< IFDEF RUNLOC,< IFDEF PHDDT,<
+	IFL	-,<
+	PRINTX	?VARIABLES OVERLAP CODE
+	>>>>
+
+DEFINE PRSIZE(CODEN,DATAN),<
+	IF2,< PRINTX [ CODEN WORDS CODE + DATAN WORDS DATA]
+	>>
+
+	RADIX	10
+	PRSIZE(\,\)
+	RADIX	8
+
+;THE FOLLOWING DEFINES CERTAIN SYMBOLS RELEVANT TO HARDWARE OR TO
+;DDT ITSELF.  THESE ARE *NOT* NEEDED FOR THE ASSEMBLY OF DDT AND
+;IN FACT MAY BE IN CONFLICT WITH DEFINITIONS WHICH ARE USED
+;DURING ASSEMBLY (E.G. TTY).  HENCE, THESE DEFINITIONS ARE ASSEMBLED
+;LAST AND ON PASS 2 ONLY.  THE SYMBOLS ARE ALL DECLARED INTERNAL
+;SO THAT THEY WILL BE KEPT IN THE PROGRAM SYMBOL TABLE AFTER
+;LOADING.  THESE SYMBOLS ARE THEN USED DURING DDT INSTRUCTION
+;ASSEMBLY OR DEASSEMBLY ONLY.
+
+	IFE	FTDEC20,<	;DDT SYMTAB NEVER USED ON DEC20
+	IF2,<
+DEFINE XP (SS,VV)<
+	SS=VV
+	INTERN	SS>
+
+OPDEF DDTINT [Z 0,]		;ADDRESS FLAG FOR INTERNAL REGISTERS
+
+;DEFINE $ SYMBOLS INTERNAL TO DDT
+
+	IFE	FTFILE,<
+RADIX 10
+
+DEFINE DBPNT (Z.)>
+
+ZZ==0
+REPEAT NBP,>
+RADIX 8
+
+XP $M,
+XP $I,
+	>			;END FTFILE
+
+;DEFINE I/O DEVICE MNEMONICS
+
+	IFN	FTEXEC,<
+
+XP  PI,004B11
+XP PAG,010B11
+XP CCI,014B11
+XP DLB,060B11
+XP DLC,064B11
+XP CLK,070B11
+XP PTP,100B11
+XP PTR,104B11
+XP CDP,110B11
+XP CDR,114B11
+XP TTY,120B11
+XP LPT,124B11
+XP DIS,130B11
+XP PLT,140B11
+XP  CR,150B11
+XP DSK,170B11
+XP DTE,200B11
+XP UTC,210B11
+XP UTS,214B11
+XP MTC,220B11
+XP MTS,224B11
+XP MTM,230B11
+XP DLS,240B11
+XP DPC,250B11
+XP DCSA,300B11
+XP DCSB,304B11
+XP DTC,320B11
+XP DTS,324B11
+XP TMC,340B11
+XP TMS,344B11 >
+
+;DEFINE EXTENDED OPERATIONS
+
+	IFE	FTFILE,<
+XP JOV,2554B11
+XP JEN,2545B11
+XP HALT,2542B11 >
+	>			;END IF2
+	>			;END IFE FTDEC20
+
+;ONLY STARTING ADDRESS FOR FILDDT AND VMDDT
+;NO START ADDRESS FOR EXEC OR USER DDT
+;BECAUSE USER PROGRAMS AND MONITOR ARE LOADED
+;WITH EXEC OR USER DDT
+;BUT STILL WANT TO BE STARTED AT THEIR OWN START ADDRESSES
+
+	REPEAT	0,<
+	IFN	FTVMX,
+	IFN	FTFILE,
+
+	IFE	FTEXEC,<
+	IFN	FTDEC20,<
+	IFE	FTMON,<
+	END	BLTDDT>>>	;UDDT HAS SPECIAL START ADR
+>
+
+;	END
+	END	DDT		;KLDDT HAS START ADDRESS
diff --git a/apps/pdp10/diags/klad/PARAM.KLM.txt b/apps/pdp10/diags/klad/PARAM.KLM.txt
new file mode 100644
index 000000000..f1b30908d
--- /dev/null
+++ b/apps/pdp10/diags/klad/PARAM.KLM.txt
@@ -0,0 +1,1086 @@
+SUBTTL	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, SEPT 18,1979
+
+DEFINE	S,<; *********************************************************************>
+
+; **********************************************************************
+;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
+;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
+;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS
+; **********************************************************************
+
+ABORT==	400000			;ABORT PROGRAM ON PASS COMPLETION
+RSTART==200000			;RESTART TEST, PRINT TOTALS
+TOTALS==100000			;PRINT TOTALS, CONTINUE
+
+NOPNT==	040000			;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED)
+PNTLPT==020000			;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE)
+DING==	010000			;RING BELL ON ERROR
+
+LOOPER==004000			;ENTER EXERCISE/CHECK LOOP ON ERROR
+ERSTOP==002000			;HALT ON TEST ERROR
+PALERS==001000			;PRINT ALL ERRORS
+
+RELIAB==000400			;RELIABILITY MODE
+TXTINH==000200			;INHIBIT ERROR TEXT
+INHPAG==000100			;INHIBIT PAGING
+
+MODDVC==000040			;MODIFY DEVICE CODE
+INHCSH==000020			;INHIBIT CACHE
+OPRSEL==000010			;OPERATOR SELECTION
+
+CHAIN==	000004			;CHAIN CONTROL SWITCH
+
+KAHZ50==000002			;KA10 50 HERTZ POWER
+
+				;SWITCH 17 RESERVED !!!
+SUBTTL	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, SEPT 18,1979
+
+; **********************************************************************
+;*SPECIAL SUBPROGRAM LINKAGES
+; **********************************************************************
+
+FSELNK=	27772	;FILE SELECT LINK
+FRDLNK=	27773	;FILE READ LINK
+LDLNK=	27774	;LOAD LINKAGE ADDRESS
+DDTLNK=	27775	;DDT LINKAGE ADDRESS
+MODLNK=	27776	;OPERATIONAL MODE CHECK LINKAGE ADDRESS
+SUBLNK=	27777	;SUBROUTINE LINKAGE ADDRESS
+
+; **********************************************************************
+;*SPECIAL SUBROUTINE FATAL HALTS
+;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE
+; **********************************************************************
+
+;ADDRESS   TAG	REASON
+;---------------------
+
+; 1010 	NOEXEC	;PROGRAM NOT CODED FOR EXEC MODE OPERATION
+; 1011  PLERR	;FATAL PUSH LIST POINTER ERROR
+; 1012  PLERR1	;INITIAL PUSH LIST POINTER ERROR
+; 1013  MUOERR	;MUUO WITH LUUO HANDLER WIPED OUT
+; 1014  DTEBER	;DTE20 INTERRUPT WITHOUT DOORBELL
+; 1015  DTECER	;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET
+; 1016  CPIERR	;CPU INITIALIZATION ERROR
+; 1017  EOPERR	;END OF PROGRAM ERROR
+; 1020  LUOERR	;INTERRUPT WITH LUUO HANDLER WIPED OUT
+
+; **********************************************************************
+; **********************************************************************
+;OPERATOR DEFINITIONS (NON-UUO'S)
+; **********************************************************************
+
+OPDEF	GO	[PUSHJ	P,]	;SUBROUTINE CALL
+OPDEF	RTN	[POPJ	P,]	;SUBROUTINE RETURN
+OPDEF	PUT	[PUSH	P,]	;PUT DATA ON PUSH LIST
+OPDEF	GET	[POP	P,]	;GET DATA FROM PUSH LIST
+OPDEF	PJRST	[JRST	]	;JRST TO ROUTINE THAT RTN'S
+OPDEF	HALT	[JRST	4,]	;DEFINITION FOR DDT
+OPDEF	JRSTF	[JRST	2,]	;DEFINITION FOR DDT
+OPDEF	JEN	[JRST	12,]	;DEFINITION FOR DDT
+
+; **********************************************************************
+;SUBROUTINE INITIALIZATION CALL
+; **********************************************************************
+
+OPDEF	PGMINT	[JSP	0,SBINIT]	;SUBROUTINE INITIALIZATION
+
+; **********************************************************************
+;HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION).
+; **********************************************************************
+
+OPDEF	FATAL	[37B8!15B12!4]	;FATAL PROGRAMMING HALT
+OPDEF	ERRHLT	[37B8!14B12!4]	;PROGRAM ERROR HALT
+
+; **********************************************************************
+;TERMINAL INPUT UUO'S
+;ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE
+;CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE.
+; **********************************************************************
+
+OPDEF	TTICHR 	[37B8!0B12!3]	;TTY, INPUT ANY CHARACTER
+OPDEF	TTIYES	[37B8!1B12!3]	;TTY, NORMAL RETURN Y
+OPDEF	TTINO	[37B8!2B12!3]	;TTY, NORMAL RETURN N
+OPDEF	TTIOCT	[37B8!3B12!3]	;TTY, INPUT OCTAL WORD
+OPDEF	TTIDEC	[37B8!4B12!3]	;TTY, INPUT DECIMAL WORD
+OPDEF	TTICNV	[37B8!5B12!3]	;TTY, INPUT CONVERTABLE WORD
+OPDEF	TTLOOK	[37B8!6B12!3]	;TTY, KEYBOARD CHECK
+OPDEF	TTALTM	[37B8!7B12!3]	;TTY, ALT-MODE CHECK
+OPDEF	TTSIXB	[37B8!10B12!3]	;TTY, INPUT SIXBIT WORD
+OPDEF	TTYINP	[37B8!11B12!3]	;TTY, IMAGE MODE INPUT
+OPDEF	TTICLR	[37B8!12B12!3]	;TTY, CLEAR INPUT
+;TERMINAL OUTPUT UUO'S.
+
+OPDEF	PNTA	[37B8!0B12!0]	;PRINT ASCII WORD
+OPDEF	PNTAF	[37B8!0B12!1]	;PRINT ASCII WORD FORCED
+OPDEF	PNTAL	[37B8!17B12!0]	;PRINT ASCIZ LINE
+OPDEF	PNTALF	[37B8!17B12!1]	;PRINT ASCIZ LINE FORCED
+OPDEF	PSIXL	[37B8!14B12!3]	;PRINT SIXBIT'Z LINE
+OPDEF	PSIXLF	[37B8!15B12!3]	;PRINT SIXBIT'Z LINE FORCED
+OPDEF	PNTMSG	[37B8!0B12!0]	;PRINT MESSAGE IMMEDIATE
+OPDEF	PNTMSF	[37B8!1B12!0]	;PRINT MESSAGE IMMEDIATE FORCED
+OPDEF	PSIXM	[37B8!2B12!0]	;PRINT SIXBIT'Z MSG IMMEDIATE
+OPDEF	PSIXMF	[37B8!4B12!0]	;PRINT SIXBIT'Z MSG IMM FORCED
+OPDEF	PNTCI	[37B8!0B12!0]	;PRINT CHARACTER IMMEDIATE
+OPDEF	PNTCIF	[37B8!1B12!0]	;PRINT CHARACTER IMMEDIATE FORCED
+OPDEF	PNTCHR	[37B8!12B12!0]	;PRINT CHARACTER
+OPDEF	PNTCHF	[37B8!12B12!1]	;PRINT CHARACTER FORCED
+OPDEF	PNT1	[37B8!1B12!0]	;PRINT ONE OCTAL DIGIT
+OPDEF	PNT1F	[37B8!1B12!1]	;PRINT 1 OCTAL DIGIT FORCED
+OPDEF	PNT2	[37B8!2B12!0]	;PRINT TWO OCTAL DIGITS
+OPDEF	PNT2F	[37B8!2B12!1]	;PRINT 2 OCTAL DIGITS FORCED
+OPDEF	PNT3	[37B8!3B12!0]	;PRINT THREE OCTAL DIGITS
+OPDEF	PNT3F	[37B8!3B12!1]	;PRINT THREE OCTAL DIGITS FORCED
+OPDEF	PNT4	[37B8!4B12!0]	;PRINT FOUR OCTAL DIGITS
+OPDEF	PNT4F	[37B8!4B12!1]	;PRINT FOUR OCTAL DIGITS FORCED
+OPDEF	PNT5	[37B8!5B12!0]	;PRINT FIVE OCTAL DIGITS
+OPDEF	PNT5F	[37B8!5B12!1]	;PRINT FIVE OCTAL DIGITS FORCED
+OPDEF	PNT6	[37B8!6B12!0]	;PRINT SIX OCTAL DIGITS
+OPDEF	PNT6F	[37B8!6B12!1]	;PRINT SIX OCTAL DIGITS FORCED
+OPDEF	PNT7	[37B8!7B12!0]	;PRINT 7 OCTAL DIGITS
+OPDEF	PNT7F	[37B8!7B12!1]	;PRINT 7 OCTAL DIGITS FORCED
+OPDEF	PNT11	[37B8!11B12!0]	;PRINT 11 OCTAL DIGITS
+OPDEF	PNT11F	[37B8!11B12!1]	;PRINT 11 OCTAL DIGITS FORCED.
+OPDEF	PNTADR	[37B8!10B12!0]	;PRINT PHYSICAL ADDRESS
+OPDEF	PNTADF	[37B8!10B12!1]	;PRINT PHYSICAL ADDRESS FORCED
+OPDEF	PNTOCT  [37B8!14B12!0]	;PRINT FULL WORD OCTAL
+OPDEF	PNTOTF	[37B8!14B12!1]	;PRINT FULL WORD OCTAL FORCED
+OPDEF	PNTHW	[37B8!13B12!0]	;PRINT OCTAL HALF WORDS, 6 SP 6
+OPDEF	PNTHWF	[37B8!13B12!1]	;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED
+OPDEF	PNTOCS	[37B8!16B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S
+OPDEF	PNTOCF	[37B8!17B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED
+OPDEF	PNTDEC	[37B8!15B12!0]	;PRINT DECIMAL, SUPRESS LEADING 0'S
+OPDEF	PNTDCF	[37B8!15B12!1]	;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED
+OPDEF	PNTDS	[37B8!16B12!0]	;PRINT DECIMAL, SPACES FOR LD 0'S
+OPDEF	PNTDSF	[37B8!16B12!1]	;PRINT DECIMAL, SPACES FOR LD 0'S FORCED
+OPDEF	PNTNM	[37B8!4B12!2]	;PRINT PROGRAM NAME
+OPDEF	PNTSIX	[37B8!0B12!2]	;PRINT SIXBIT WORD
+OPDEF	PNTSXF	[37B8!1B12!2]	;PRINT SIXBIT WORD FORCED
+OPDEF	DROPDV	[37B8!5B12!2]	;CLOSE LOGICAL FILE, USER MODE
+OPDEF	PNTCW	[37B8!2B12!2]	;PRINT DF10 CONTROL WORD
+OPDEF	PNTCWF	[37B8!3B12!2]	;PRINT DF10 CONTROL WORD FORCED
+OPDEF	PCRL	[37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED
+OPDEF	PCRLF	[37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED
+OPDEF	PSP	[37B8!0B12!40]	;PRINT SPACE
+OPDEF	PSPF	[37B8!1B12!40]	;PRINT SPACE FORCED
+OPDEF	PCRL2	[37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE)
+OPDEF	PCRL2F	[37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED
+OPDEF	PBELL	[37B8!1B12!7]	;PRINT TTY BELL
+
+OPDEF	PFORCE	[37B8!1B12!26]	;PRINT FORCE, CONTROL O OVERRIDE
+
+DEFINE	PMSG	(ARG),<
+	PSIXM	[SIXBIT\ARG'_\]>
+
+DEFINE	PMSGF	(ARG),<
+	PSIXMF	[SIXBIT\ARG'_\]>
+
+;SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING
+;	CONSERVES CORE OVER ASCIZ
+
+DEFINE	SIXBTZ	(ARG),<	[SIXBIT\ARG'_\]>
+
+;CONSOLE SWITCH INPUT UUO.
+;READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF
+; USER MODE.
+
+OPDEF	SWITCH	[37B8!10B12!2]	;INPUT CONSOLE SWITCHES
+
+;CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION
+;EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR.
+
+OPDEF	CLOKOP	[37B8!13B12!4]	;CLOCK OPERATION UUO - PDP-11 CLOCK
+OPDEF	MTROP	[37B8!4B12!4]	;CLOCK OPERATION UUO - DK20 METER
+
+;KL10 ONLY CACHE OPERATION UUO'S
+
+OPDEF	CINVAL	[37B8!1B12!4]	;CACHE INVALIDATE
+OPDEF	CFLUSH	[37B8!2B12!4]	;CACHE FLUSH
+OPDEF	CWRTBI	[37B8!3B12!4]	;CACHE WRITE-BACK & INVALIDATE
+;END OF PASS/PROGRAM UUOS
+
+;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT,
+;DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC.
+
+OPDEF	ENDUUO	[37B8!12B12!4]	;UUO TO DISPLAY LIGHTS
+OPDEF	EOPUUO	[37B8!16B12!4]	;END OF PROGRAM UUO
+
+;MEMORY MANAGEMENT UUO'S
+;UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING,
+;ADDRESS CONVERSION, ETC...
+
+OPDEF	MAPMEM	[37B8!0B12!4]	;MAP MEMORY
+OPDEF	MEMZRO	[37B8!12B12!2]	;ZERO MEMORY
+OPDEF	MEMSEG	[37B8!11B12!2]	;SETUP MEMORY SEGMENT
+OPDEF	MAPADR	[37B8!13B12!2]	;VIRTUAL TO PHYSICAL ADR CONVERT
+OPDEF	MAPCNK	[37B8!15B12!2]	;MAP MEMORY CHUNK
+OPDEF	MAPSET	[37B8!14B12!2]	;SET KI10 EXEC PAGE MAP
+OPDEF	MAPPNT	[37B8!17B12!2]	;PRINT MEMORY MAP
+
+;DEVICE CODE MODIFICATION UUO
+;ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO
+;IOT'S TO A DIFFERENT DEVICE CODE.
+
+OPDEF	MODPCU	[37B8!7B12!2]	;MODIFY PERHIPERAL CODE, USER
+OPDEF	MODPCP	[37B8!6B12!2]	;MODIFY PERHIPERAL CODE, PROGRAM
+
+	IFNDEF	MODDVL,
+	IFNDEF	MODDVU,
+
+;"DIAMON" FILE SELECTION AND READ UUOS
+
+OPDEF	FSELECT	[37B8!5B12!4]	;FILE SELECTION
+OPDEF	FREAD	[37B8!6B12!4]	;FILE READ - ASCII DATA
+OPDEF	FRD36	[37B8!7B12!4]	;FILE READ - 36 BIT DATA
+OPDEF	FRD8	[37B8!10B12!4]	;FILE READ - 8 BIT DATA
+
+;KI10 ONLY UUO FOR PRINTING MARGIN VALUES
+
+OPDEF	PNTMGN	[37B8!16B12!2]	;PRINT MARGIN VALUE
+
+	XLIST
+IFNDEF	KLOLD,
+
+;A MACRO TO REPORT AN ERROR AND NOT LOOP
+
+	DEFINE	ERROR1	(FORMAT,CORECT,ACTUAL,F,D,ERR)<
+							SALL
+	ERUUO	FORMAT,[T,,[SIXBIT\F'_\]
+		   CORECT,,ACTUAL
+		   [SIXBIT\D'_\],,ERR]
+							XALL>
+
+>;END OF KLOLD CONDITIONAL
+
+	XLIST
+IFDEF	$PAPER,
+SUBTTL	STANDARD PROGRAM ASSIGNMENTS
+
+; **********************************************************************
+;ACCUMULATORS
+; **********************************************************************
+
+P=	17			;PUSHDOWN POINTER AC (IF PUSH LIST USED)
+REPT==	15			;ERROR HANDLER REPEAT AC
+REPT1==	16			; "
+
+; **********************************************************************
+;PDP-10 STANDARD PC CONTROL FLAGS (SAVED ON PUSHJ, JSR, ETC..)
+; **********************************************************************
+
+AROV==	400000			;ARITHMETIC OVERFLOW
+CRY0==	200000			;CARRY 0
+CRY1==	100000			;CARRY 1
+FOV==	40000			;FLOATING POINT OVERFLOW
+BIS==	20000			;BYTE INTERRUPT
+USERF==	10000			;USER MODE
+EXIOT==	4000			;USER PRIV I/O
+FXU==	100			;FLOATING POINT UNDERFLOW
+DCK==	40			;DIVIDE CHECK
+
+; **********************************************************************
+;PDP-10 STANDARD ADDRESS ASSIGNMENTS
+; **********************************************************************
+
+LUUO==	40			;UUO STORAGE, UUO 1-37
+LUUOI==	41			;UUO SERVICE INSTRUCTION
+
+; **********************************************************************
+;JOB DATA AREA EXTERNALS (OLD DEFINITIONS)
+; **********************************************************************
+
+JOBUUO==40
+JOB41==	41
+JOBREL==44
+JOBDDT==74
+JOBSYM==116
+JOBUSY==117
+JOBSA==	120
+JOBFF==	121
+JOBREN==124
+JOBAPR==125
+JOBCNI==126
+JOBTPC==127
+JOBOPC==130
+JOBVER==137
+; **********************************************************************
+;JOB DATA AREA EXTERNALS (NEW DEFINITIONS)
+; **********************************************************************
+
+.JBUUO==40
+.JB41==	41
+.JBREL==44
+.JBDDT==74
+.JBSYM==116
+.JBUSY==117
+.JBSA==	120
+.JBFF==	121
+.JBREN==124
+.JBAPR==125
+.JBCNI==126
+.JBTPC==127
+.JBOPC==130
+.JBVER==137
+
+; **********************************************************************
+;USER MODE APR ASSIGNMENTS (FOR "APRENB" CALL)
+; **********************************************************************
+
+PDLOVU==200000			;PUSHDOWN LIST OVERFLOW
+MPVU==	20000			;MEMORY PROTECTION VIOLATION
+NXMU==	10000			;NON-X-MEMORY
+PARU==	4000			;PARITY ERROR
+CLKU==	1000			;CLOCK
+FOVU==	100			;FLOATING OVERFLOW
+AROVU==	10			;ARITHMETIC OVERFLOW
+
+; **********************************************************************
+;USER MODE PRINT OUTPUT CHANNEL ASSIGNMENTS (FOR SUBROUTINE PACKAGE)
+;THE USER SHOULD BE CAUTIONED NOT TO USE THESE CHANNELS WHEN
+;USING THE SUBROUTINE PACKAGE AND CODING USER MODE PROGRAMS.
+; **********************************************************************
+
+$DEVCH==17			;LOGICAL DEVICE CHANNEL
+$DVCH1==16			;LOGICAL DEV UPDATE INPUT CHANNEL
+
+; **********************************************************************
+;PDP-10 SPECIAL COMPATABILITY ASSIGNMENTS
+; **********************************************************************
+
+PAG==	010		;PAGING I/O DEVICE CODE, KI/KL
+
+CCA==	014		;CACHE I/O DEVICE CODE, KL10
+; **********************************************************************
+;PDP-10 STANDARD APR CONO ASSIGNMENTS
+; **********************************************************************
+
+IOCLR==	200000			;CLEAR ALL I/O DEVICES
+CLKDIS==4000			;DISABLE CLOCK INTERRUPTS
+CLKENB==2000			;ENABLE CLOCK INTERRUPTS
+CLKCLR==1000			;CLEAR CLOCK FLAG
+
+; **********************************************************************
+;PDP-10 STANDARD APR CONI ASSIGNMENTS, RIGHT HALF
+; **********************************************************************
+
+CLKENB==2000			;CLOCK INTERRUPT ENABLED
+CLK==	1000			;CLOCK FLAG
+ANXM==	10000			;KA10, NON-X-MEMORY
+INXM==	100			;KI10
+
+; **********************************************************************
+;PDP-10 STANDARD PI CONO ASSIGNMENTS
+; **********************************************************************
+
+PWFCLR==400000			;CLEAR POWER FAIL FLAG
+PARCLR==200000			;CLEAR PARITY ERROR FLAG
+PARDIS==100000			;DISABLE PARITY INTERRUPTS
+PARENB==40000			;ENABLE PARITY INTERRUPTS
+PICLR==	10000			;CLEAR PI SYSTEM
+REQSET==4000			;SET PROGRAM PI REQUEST
+CHNON==	2000			;TURN ON CHANNEL
+CHNOFF==1000			;TURN OFF CHANNEL
+PIOFF==	400			;TURN OFF PI SYSTEM
+PION==	200			;TURN ON PI SYSTEM
+
+; **********************************************************************
+;PDP-10 STANDARD PI CONI ASSIGNMENTS
+; **********************************************************************
+
+PION==	200			;PI SYSTEM ON
+
+; **********************************************************************
+;PDP-10 STANDARD PI CHANNEL ASSIGNMENTS
+; **********************************************************************
+
+PICHN1==100			;PI CHANNEL 1
+PICHN2==40			;PI CHANNEL 2
+PICHN3==20			;PI CHANNEL 3
+PICHN4==10			;PI CHANNEL 4
+PICHN5==4			;PI CHANNEL 5
+PICHN6==2			;PI CHANNEL 6
+PICHN7==1			;PI CHANNEL 7
+PICHNA==177			;ALL PI CHANNELS, 1 THRU 7
+	XLIST
+	IFDEF	KA10,<
+IFDEF	$PAPER,
+; **********************************************************************
+;KA10 APR CHANNEL ASSIGNMENTS
+; **********************************************************************
+
+AAPRC1==1			;APR INTERRUPT CHANNEL
+
+; **********************************************************************
+;KA10 APR CONO ASSIGNMENTS
+; **********************************************************************
+
+APDCLR==400000			;CLEAR PUSHDOWN OVERFLOW
+AABCLR==40000			;CLEAR ADDRESS BREAK
+AMPCLR==20000			;CLEAR MEMORY PROTECTION
+ANXCLR==10000			;CLEAR NON-X-MEMORY
+AFODIS==400			;DISABLE FLOATING POINT OVERFLOW
+AFOENB==200			;ENABLE FLOATING POINT OVERFLOW
+AFOCLR==100			;CLEAR FLOATING POINT OVERFLOW
+AOVDIS==40			;DISABLE OVERFLOW
+AOVENB==20			;ENABLE OVERFLOW
+AOVCLR==10			;CLEAR OVERFLOW
+
+; **********************************************************************
+;KA10 APR CONI ASSIGNMENTS
+; **********************************************************************
+
+APDLOV==200000			;PUSHDOWN OVERFLOW
+AUSRIO==100000			;USER I/O
+AADRBK==40000			;ADDRESS BREAK
+AMPV==	20000			;MEMORY PROTECTION VIOLATION
+ANXM==	10000			;NON-EXISTENT MEMORY
+AFOENB==200			;FLT PT INTERRUPT ENABLED
+AFOV==	100			;FLOATING POINT OVERFLOW
+ATRPOS==40			;TRAPS OFFSET
+AOVENB==20			;OVERFLOW INTERRUPT ENABLED
+AOVFLO==10			;ARITHMETIC OVERFLOW
+
+; **********************************************************************
+;KA10 PI CONI ASSIGNMENTS
+; **********************************************************************
+
+APWRFL==400000			;POWER FAILURE
+APARER==200000			;PARITY ERROR
+APAREN==100000			;PARITY INTERRUPT ENABLED
+
+>				;END CONDITIONAL ON KA10
+	XLIST
+	IFDEF	KI10,<
+IFDEF	$PAPER,
+; **********************************************************************
+;KI10 PC CONTROL FLAGS
+; **********************************************************************
+
+LIP==	2000			;LAST INSTRUCTION PUBLIC
+TN0==	400			;TN=00, NO TRAP ;TN=01, ARITH TRAP
+TN1==	200			;TN=10, PDL OV  ;TN=11, TRAP 3
+
+; **********************************************************************
+;KI10 SPECIAL EXEC MODE FLAGS
+; **********************************************************************
+
+UOLIP==	400000			;UUO OLD L.I.P.
+UOUSR==	4000			;UUO OLD USER
+
+; **********************************************************************
+;KI10 APR CHANNEL ASSIGNMENTS
+; **********************************************************************
+
+IAPRC1==1			;APR CLOCK CHANNEL
+IAPRE1==10			;APR ERROR CHANNEL
+
+; **********************************************************************
+;KI10 APR CONO ASSIGNMENTS
+; **********************************************************************
+
+ITMSET==400000			;SET TIME OUT TIMER
+ITMDIS==100000			;DISABLE TIME OUT
+ITMENB==40000			;ENABLE TIME OUT
+IASRTC==20000			;CLEAR AUTO RESTART
+IASRTS==10000			;SET AUTO RESTART
+IIOPFC==200			;CLEAR I/O PAGE FAIL
+INXCLR==100			;CLEAR NON-X-MEM
+
+; **********************************************************************
+;KI10 APR CONI ASSIGNMENTS, RIGHT HALF
+; **********************************************************************
+
+ITMOUT==400000			;TIMER TIMED OUT
+IPARER==200000			;PARITY ERROR
+IPAREN==100000			;PARITY ENABLED
+ITMOEN==40000			;TIME OUT ENABLED
+IPWRFL==20000			;POWER FAIL
+IASRTE==10000			;AUTO RESTART ENABLED
+IIOPFL==200			;I/O PAGE FAIL
+INXM==	100			;NON-X-MEMORY
+; **********************************************************************
+;KI10 APR CONI ASSIGMENTS, LEFT HALF
+; **********************************************************************
+
+IMLAPD==200000			;MEMORY OVERLAP DISABLED
+IFMMAN==100000			;FAST MEMORY MANUAL
+IMIPGD==40000			;MI PROGRAM DISABLE
+ICNSLR==20000			;CONSOLE READ ONLY
+ICNSLL==10000			;CONSOLE LOCKED
+IP50HZ==4000			;50 HZ POWER
+IMGINM==2000			;MANUAL MARGINS
+IMAINT==1000			;MAINTENANCE MODE
+IPWRLO==400			;POWER LOW
+IMGNLO==200			;MARGIN COMPARATOR LOW
+SENSE1==40			;SENSE SWITCHES		1
+SENSE2==20			;			2
+SENSE3==10			;			3
+SENSE4==4			;			4
+SENSE5==2			;			5
+SENSE6==1			;			6
+
+; **********************************************************************
+;KI10 APR DATAO ASSIGNMENTS
+; **********************************************************************
+
+IEVNPR==20000			;WRITE EVEN PARITY
+ISPDOF==10000			;SPEED MARGINS OFF
+ISPDON==4000			;SPEED MARGINS ON
+IMGNOF==2000			;MARGINS OFF - LH
+IMGNON==1000			;MARGINS ON - LH
+
+; **********************************************************************
+;KI10 PI CONO ASSIGNMENTS
+; **********************************************************************
+
+IRQCLR==20000			;CLEAR PROGRAM PI REQUEST
+; **********************************************************************
+;KI10 PI CONI ASSIGNMENTS
+; **********************************************************************
+
+IINSTF==400000			;ADDRESS CONDITIONS, INST FETCH
+IDATAF==200000			;	    	     DATA FETCH
+IWRITE==100000			;		     WRITE
+IADSTP==40000			;ADDRESS STOP
+IADBRK==20000			;ADDRESS BREAK
+IADEXC==10000			;ADDRESS SWITCHES EXEC
+IADUSR==4000			;  "	  "       USER
+IPRSTP==2000			;PARITY STOP
+INXSTP==1000			;NON-X-MEM STOP
+
+; **********************************************************************
+;KI10 PAG CONI ASSIGNMENTS
+; **********************************************************************
+
+EXCMEM==400			;EXEC MEMORY SPACE
+AMCLRB==40			;ASSOCIATIVE MEMORY CLEAR BIT
+
+; **********************************************************************
+;KI10 PAG DATAO ASSIGNMENTS, LEFT HALF
+; **********************************************************************
+
+LDUSRB==400000			;LOAD USER BASE REGISTER
+SMLUSR==40000			;SMALL USER, 32K OR UNDER
+USRCMP==20000			;USER ADR COMPARE ENABLE
+
+; **********************************************************************
+;KI10 PAG DATAO ASSIGNMENTS, RIGHT HALF
+; **********************************************************************
+
+LDEXCB==400000			;LOAD EXEC BASE REGISTER
+TRPENB==20000			;ENABLE TRAPS
+
+; **********************************************************************
+;KI10 PAG DATAI ASSIGNMENTS
+; **********************************************************************
+
+SMLUSR==40000			;SMALL USER
+USRCMP==20000			;USER ADR COMPARE ENABLED
+TRPENB==20000			;RH, TRAPS ENABLED
+
+; **********************************************************************
+;KI10 PTR DATAO ASSIGNMENTS
+; **********************************************************************
+
+				;ADDRESS CONDITIONS, ADDRESS BREAK ;AS ABOVE, PI CONI
+				;ADDRESS SWITCHES, 14-35
+; **********************************************************************
+;KI10 EXEC PAGE MAP PAGE ASSIGNMENTS
+; **********************************************************************
+
+PGFTRP==420			;PAGE FAULT TRAP
+AROVTP==421			;ARITHMETIC TRAP
+PDOVTP==422			;PUSHDOWN OVERFLOW TRAP
+TRP3TP==423			;TRAP 3 TRAP
+
+; **********************************************************************
+;KI10 USER PAGE MAP PAGE ASSIGNMENTS
+; **********************************************************************
+
+PGFTRP==420			;PAGE FAULT TRAP
+AROVTP==421			;ARITHMETIC TRAP
+PDOVTP==422			;PUSHDOWN OVERFLOW TRAP
+TRP3TP==423			;TRAP 3 TRAP
+
+MUUO==	424			;MUUO STORAGE
+MUUOPC==425			;C(PC) OF MUUO STORAGE
+
+EXCPFW==426			;EXEC PAGE FAIL WORD
+USRPFW==427			;USER PAGE FAIL WORD
+
+KNTRP==	430			;KERNAL	 	NO TRAP - NEW PC'S-
+KTRP==	431			;"	 	TRAP
+SNTRP==	432			;SUPERVISOR	NO TRAP
+STRP==	433			;"		TRAP
+CNTRP==	434			;CONCEAL 	NO TRAP
+CTRP==	435			;"		TRAP
+PNTRP==	436			;PUBLIC		NO TRAP
+PTRP==	437			;"		TRAP
+
+>			;END CONDITIONAL ON KI10
+	XLIST
+	IFDEF	KL10,<
+	IFNDEF	KL10P0,<
+IFDEF	$PAPER,
+;KL10 CONO APR 000 ASSIGMENTS
+; **********************************************************************
+
+LIOCLR==200000			;CLEAR ALL I/O DEVICES
+LFLGEN==100000			;ENABLE SELECTED FLAG
+LFLGDS==40000			;DISABLE SELECTED FLAG
+LFLGCL==20000			;CLEAR SELECTED FLAG
+LFLGST==10000			;SET SELECTED FLAG
+LSBUSE==4000			;SBUS ERROR FLAG
+LNXMER==2000			;NON-EXISTENT MEMORY FLAG
+LPARER==1000			;PARITY ERROR FLAG
+LIOPFE==400			;I/O PAGE FAIL FLAG
+LPWRFL==100			;POWER FAIL FLAG
+LCASWD==20			;CACHE SWEEP DONE FLAG
+LAPRP7==7			;APR PI CHANNEL 7
+LAPRP6==6			;APR PI CHANNEL 6
+LAPRP5==5			;APR PI CHANNEL 5
+LAPRP4==4			;APR PI CHANNEL 4
+LAPRP3==3			;APR PI CHANNEL 3
+LAPRP2==2			;APR PI CHANNEL 2
+LAPRP1==1			;APR PI CHANNEL 1
+LESBER==104000			;ENABLE SBUS ERRORS
+LDSBER==044000			;DISABLE SBUS ERRORS
+LCSBER==024000			;CLR SBUS ERRORS
+LSSBER==014000			;SET SBUS ERROR
+LENXER==102000			;ENABLE NON-EXISTENT MEMORY
+LDNXER==042000			;DISABLE NON-EXISTENT MEORY
+LCNXER==022000			;CLR NON-EXISTENT MEMORY
+LSNXER==012000			;SET NON-EXISTENT MEMORY
+LEPAER==101000			;ENABLE PARITY ERRORS
+LDPAER==041000			;DISABLE PARITY ERRORS
+LCPAER==021000			;CLR PARITY ERROR
+LSPAER==011000			;SET PARITY ERROR
+LEIOPF==100400			;ENABLE I/O PAGE FAILS
+LDIOPF==040400			;DISABLE I/O PAGE FAILS
+LCIOPF==020400			;CLR I/O PAGE FAIL
+LSIOPF==010400			;SET I/O PAGE FAIL
+LEPWRF==100100			;ENABLE POWER FAIL
+LDPWRF==040100			;DISABLE POWER FAIL
+LCPWRF==020100			;CLR POWER FAIL
+LSPWRF==010100			;SET POWER FAIL
+LECASD==100020			;ENABLE CACHE SWEEP DONE
+LDCASD==040020			;DISABLE CACHE SWEEP DONE
+LCCASD==020020			;CLR CACHE SWEEP DONE
+LSCASD==010020			;SET CACHE SWEEP DONE
+LAPRAL==127520			;CLR ALL ERROR FLAGS & ENABLE
+; **********************************************************************
+;KL10 CONI APR 000 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LSBSEN==4000			;SBUS ERRORS ENABLED
+LNXMEN==2000			;NON-EXISTENT MEMORY ERRORS ENABLED
+LPAREN==1000			;PARITY ERRORS ENABLED
+LIOPFE=400			;I/O PAFE FAILURES ENABLED
+LPWRFE==100			;POWER FAILURES ENABLED
+LCASDE==20			;CACHE SWEEP DONE ENABLED
+
+; **********************************************************************
+;KL10 CONI APR 000 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+LCASWB==200000			;CACHE SWEEP BUSY
+LSBUSE==4000			;SBUS ERROR FLAG
+LNXMER==2000			;NON-EXISTENT MEMORY FLAG
+LPARER==1000			;PARITY ERROR FLAG
+LIOPFE==400			;I/O PAGE FAIL FLAG
+LPWRFL==100			;POWER FAIL FLAG
+LCASWD==20			;CACHE SWEEP DONE FLAG
+LAPRP7==7			;APR PI CHANNEL 7
+LAPRP6==6			;APR PI CHANNEL 6
+LAPRP5==5			;APR PI CHANNEL 5
+LAPRP4==4			;APR PI CHANNEL 4
+LAPRP3==3			;APR PI CHANNEL 3
+LAPRP2==2			;APR PI CHANNEL 2
+LAPRP1==1			;APR PI CHANNEL 1
+LINT==10			;APR INTERRUPT
+
+; **********************************************************************
+;KL10 DATAO APR 000 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LINSTF==400			;ADDRESS BREAK REQUEST FOR INST. FETCH
+LDATAF==200			;ADDRESS BREAK REQUEST FOR DATA FETCH
+LWRITE==100			;ADDRESS BREAK REQUEST FOR DATA WRITE
+LUSCMP==40			;USER ADDRESS COMPARE
+LEXCMP==0			;EXEC ADDRESS COMPARE
+
+; **********************************************************************
+;KL10 DATAO APR 000 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+;DATAO APR,ADDRESS SWITCHES=13-35
+>
+	XLIST
+	IFDEF	KL10P0,<
+IFDEF	$PAPER,
+;KL10 CONO APR 000 ASSIGMENTS
+; **********************************************************************
+LIOCLR==200000			;CLEAR ALL I/O DEVICES
+LFLGEN==100000			;ENABLE SELECTED FLAG
+LFLGDS==40000			;DISABLE SELECTED FLAG
+LFLGCL==20000			;CLEAR SELECTED FLAG
+LFLGST==10000			;SET SELECTED FLAG
+LSBUSE==4000			;SBUS ERROR FLAG
+LNXMER==2000			;NON-EXISTENT MEMORY FLAG
+LIOPFE==1000			;I/O PAGE FAIL FLAG
+LPARER==400			;MB PARITY ERROR FLAG
+LCADRP==200			;CACHE ADDRESS PARITY ERROR FLAG
+LSADRP==100			;S-BUS ADDRESS PARITY ERROR FLAG
+LPWRFL==40			;POWER FAIL FLAG
+LCASWD==20			;CACHE SWEEP DONE FLAG
+LAPRP7==7			;APR PI CHANNEL 7
+LAPRP6==6			;APR PI CHANNEL 6
+LAPRP5==5			;APR PI CHANNEL 5
+LAPRP4==4			;APR PI CHANNEL 4
+LAPRP3==3			;APR PI CHANNEL 3
+LAPRP2==2			;APR PI CHANNEL 2
+LAPRP1==1			;APR PI CHANNEL 1
+LESBER==104000			;ENABLE SBUS ERRORS
+LDSBER==044000			;DISABLE SBUS ERRORS
+LCSBER==024000			;CLR SBUS ERRORS
+LSSBER==014000			;SET SBUS ERROR
+LENXER==102000			;ENABLE NON-EXISTENT MEMORY
+LDNXER==042000			;DISABLE NON-EXISTENT MEORY
+LCNXER==022000			;CLR NON-EXISTENT MEMORY
+LSNXER==012000			;SET NON-EXISTENT MEMORY
+LEIOPF==101000			;ENABLE I/O PAGE FAILS
+LDIOPF==041000			;DISABLE I/O PAGE FAILS
+LCIOPF==021000			;CLR I/O PAGE FAIL
+LSIOPF==011000			;SET I/O PAGE FAIL
+LEPAER==100400			;ENABLE PARITY ERRORS
+LDPAER==040400			;DISABLE PARITY ERRORS
+LCPAER==020400			;CLR PARITY ERROR
+LSPAER==010400			;SET PARITY ERROR
+LECAER==100200			;ENABLE CACHE ADR PARITY ERRORS
+LDCAER==040200			; " DISABLE
+LCCAER==020200			; " CLR
+LSCAER==010200			; " SET
+LESAER==100100			;ENABLE S-BUS ADR PARITY ERRORS
+LDSAER==040100			; " DISABLE
+LCSAER==020100			; " CLR
+LSSAER==010100			; " SET
+LEPWRF==100040			;ENABLE POWER FAIL
+LDPWRF==040400			;DISABLE POWER FAIL
+LCPWRF==020040			;CLR POWER FAIL
+LSPWRF==010040			;SET POWER FAIL
+LECASD==100020			;ENABLE CACHE SWEEP DONE
+LDCASD==040020			;DISABLE CACHE SWEEP DONE
+LCCASD==020020			;CLR CACHE SWEEP DONE
+LSCASD==010020			;SET CACHE SWEEP DONE
+LAPRAL==127760			;CLR ALL ERROR FLAGS & ENABLE
+; **********************************************************************
+;KL10 CONI APR 000 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LSBSEN==4000			;SBUS ERRORS ENABLED
+LNXMEN==2000			;NON-EXISTENT MEMORY ERRORS ENABLED
+LIOPFE==1000			;I/O PAGE FAILURES ENABLED
+LPAREN==400			;PARITY ERRORS ENABLED
+LCADEN==200			;CACHE ADR PARITY ERRORS ENABLED
+LSADEN==100			;S-BUS ADR PARITY ERRORS ENABLED
+LPWRFE==40			;POWER FAILURES ENABLED
+LCASDE==20			;CACHE SWEEP DONE ENABLED
+
+; **********************************************************************
+;KL10 CONI APR 000 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+LCASWB==200000			;CACHE SWEEP BUSY
+LSBUSE==4000			;SBUS ERROR FLAG
+LNXMER==2000			;NON-EXISTENT MEMORY FLAG
+LIOPFE==1000			;I/O PAGE FAIL FLAG
+LPARER==400			;PARITY ERROR FLAG
+LCADRP==200			;CACHE ADR PARITY ERROR FLAG
+LSADRP==100			;S-BUS ADR PARITY ERROR FLAG
+LPWRFL==40			;POWER FAIL FLAG
+LCASWD==20			;CACHE SWEEP DONE FLAG
+LAPRP7==7			;APR PI CHANNEL 7
+LAPRP6==6			;APR PI CHANNEL 6
+LAPRP5==5			;APR PI CHANNEL 5
+LAPRP4==4			;APR PI CHANNEL 4
+LAPRP3==3			;APR PI CHANNEL 3
+LAPRP2==2			;APR PI CHANNEL 2
+LAPRP1==1			;APR PI CHANNEL 1
+LINT==10			;APR INTERRUPT
+
+; **********************************************************************
+;KL10 DATAO APR 000 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LINSTF==400			;ADDRESS BREAK REQUEST FOR INST. FETCH
+LDATAF==200			;ADDRESS BREAK REQUEST FOR DATA FETCH
+LWRITE==100			;ADDRESS BREAK REQUEST FOR DATA WRITE
+LUSCMP==40			;USER ADDRESS COMPARE
+LEXCMP==0			;EXEC ADDRESS COMPARE
+
+; **********************************************************************
+;KL10 DATAO APR 000 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+;DATAO APR,ADDRESS SWITCHES=13-35
+>
+	XLIST
+IFDEF	$PAPER,
+; **********************************************************************
+;KL10 DATAI APR 000 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LINSTF==400			;ADDRESS BREAK REQUEST FOR INST. FETCH
+LDATAF==200			;ADDRESS BREAK REQUEST FOR DATA FETCH
+LWRITE==100			;ADDRESS BREAK REQUEST FOR DATA WRITE
+LUSCMP==40			;USER ADDRESS COMPARE
+LEXCMP==0			;EXEC ADDRESS COMPARE
+
+; **********************************************************************
+;KL10 DATAI APR 000 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+;DATAI APR,ADDRESS SWITCHES=13-35
+
+; **********************************************************************
+;KL10 BLKO APR 000 ASSIGMENTS (IMMEDIATE MODE)
+; **********************************************************************
+
+;REFILL ALGORITHM BITS 18-20
+;REFILL ALGORITHM ADDRESS 27-33
+
+; **********************************************************************
+;KL10 BLKI APR 000 ASSIGMENTS
+; **********************************************************************
+
+;MICRO-CODE OPTIONS = 0-8
+;MICRO-CODE VERSION NUMBER = 9-17
+;HARDWARE OPTIONS =18-23
+;PROCESSOR SERIAL NUMBER = 24-35
+; **********************************************************************
+;KL10 CONO PI 004 ASSIGMENTS
+; **********************************************************************
+
+LEVNPA==400000			;WRITE EVEN PARITY ADDRESS
+LEVNPD==200000			;WRITE EVEN PARITY DATA
+LEVNCD==100000			;WRITE EVEN CACHE DIRECTORY PARITY *P0
+LRQCLR==20000			;DROP INTERRUPT ON SELECTED CHANNEL
+LPICLR==10000			;CLEAR PI SYSTEM
+LREQSE==4000			;REQUEST INTERRUPT ON SELECTED CHANNEL
+LCHNON=2000			;TURN ON SELECTED CHANNEL
+LCHNOF==1000			;TURN OFF SELECTED CHANNEL
+LPIOFF==400			;TURN PI SYSTEM OFF
+LPION==200			;TURN PI SYSTEM ON
+LPICH1==100			;PI CHANNEL 1
+LPICH2==40			;PI CHANNEL 2
+LPICH3==20			;PI CHANNEL 3
+LPICH4==10			;PI CHANNEL 4
+LPICH5==4			;PI CHANNEL 5
+LPICH6==2			;PI CHANNEL 6
+LPICH7==1			;PI CHANNEL 7
+LPICHA==177			;ALL PI CHANNELS
+
+; **********************************************************************
+;KL10 CONI PI 004 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LPRCH1==100			;PROGRAM REQUEST ON CHANNEL 1
+LPRCH2==40			;PROGRAM REQUEST ON CHANNEL 2
+LPRCH3==20			;PROGRAM REQUEST ON CHANNEL 3
+LPRCH4==10			;PROGRAM REQUEST ON CHANNEL 4
+LPRCH5==4			;PROGRAM REQUEST ON CHANNEL 5
+LPRCH6==2			;PROGRAM REQUEST ON CHANNEL 6
+LPRCH7==1			;PROGRAM REQUEST ON CHANNEL 7
+; **********************************************************************
+;KL10 CONI PI 004 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+LEVNPA==400000			;WRITE EVEN PARITY ADDRESS
+LEVNPD==200000			;WRITE EVEN PARITY DATA
+LEVNCD==100000			;WRITE EVEN CACHE DIRECTORY PARITY *P0
+LPIIP1==40000			;PI IN PROGRESS ON CHANNEL 1
+LPIIP2==20000			;PI IN PROGRESS ON CHANNEL 2
+LPIIP3==10000			;PI IN PROGRESS ON CHANNEL 3
+LPIIP4==4000			;PI IN PROGRESS ON CHANNEL 4
+LPIIP5==2000			;PI IN PROGRESS ON CHANNEL 5
+LPIIP6==1000			;PI IN PROGRESS ON CHANNEL 6
+LPIIP7==400			;PI IN PROGRESS ON CHANNEL 7
+LPION==200			;PI SYSTEM ON
+LPICH1==100			;PI CHANNEL 1 ON
+LPICH2==40			;PI CHANNEL 2 ON
+LPICH3==20			;PI CHANNEL 3 ON
+LPICH4==10			;PI CHANNEL 4 ON
+LPICH5==4			;PI CHANNEL 5 ON
+LPICH6==2			;PI CHANNEL 6 ON
+LPICH7==1			;PI CHANNEL 7 ON
+; **********************************************************************
+;KL10 DATAO PAG 010 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LLACBL==400000			;LOAD AC BLOCKS
+LLPRCN==200000			;LOAD PREVIOUS CONTEXT SECTION
+LLDUSB==100000			;LOAD USER BASE REGISTER
+LCWSX==40			;
+
+;CURRENT AC BLOCKS BITS 6 - 8
+;PREVIOUS AC BLOCKS BITS 9 - 11
+;PREVIOUS CONTEXT SECTION BITS 13 - 17
+
+; **********************************************************************
+;KL10 DATAO PAG 010 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+;USER BASE REGISTER BITS 23 - 35
+
+; **********************************************************************
+;KL10 DATAI PAG 010 ASSIGMENTS (LEFT HALF)
+; **********************************************************************
+
+LLACBL==400000			;LOAD AC BLOCKS
+LLPRCN==200000			;LOAD PREVIOUS CONTEXT SECTION
+LLDUSB==100000			;LOAD USER BASE REGISTER
+LCWSX==40			;
+
+;CURRENT AC BLOCKS BITS 6 - 8
+;PREVIOUS AC BLOCKS BITS 9 - 11
+;PREVIOUS CONTEXT SECTION BITS 13 - 17
+
+; **********************************************************************
+;KL10 DATAI PAG 010 ASSIGMENTS (RIGHT HALF)
+; **********************************************************************
+
+;USER BASE REGISTER BITS 23 - 35
+; **********************************************************************
+;KL10 CONO PAG 010 ASSIGMENTS
+; **********************************************************************
+
+LCASLO==400000			;CACHE STRATEGY LOOK
+LCASLD==200000			;CACHE STRATEGY LOAD
+LSMODE==40000			;SECTION MODE
+LTRPEN==20000			;TRAP AND PAGE ENABLE
+
+;EXEC BASE REGISTER = 23-35
+
+; **********************************************************************
+;KL10 CONI PAG 010 ASSIGMENTS
+; **********************************************************************
+
+
+LCSLOO==400000			;CACHE STRATEGY LOOK
+LCSLOA==200000			;CACHE STRATEGY LOAD
+LSECMO==40000			;SECTION MODE
+LTRPAE==20000			;TRAP AND PAGE ENABLE
+
+;EXEC BASE REGISTER = 23-35
+
+; **********************************************************************
+;KL10 BLKO PAG 010 ASSIGMENTS (IMMEDIATE MODE)
+; **********************************************************************
+
+	XLIST
+	IFNDEF	KL10P0,<
+IFDEF	$PAPER,
+; **********************************************************************
+;KL10 EXEC PAGE MAP PAGE ASSIGNMENTS
+; **********************************************************************
+
+LAROVT==421			;ARITHMETIC TRAP
+LPDOVT==422			;PUSHDOWN OVERFLOW TRAP
+LTRP3T==423			;TRAP 3 TRAP
+
+; **********************************************************************
+;KL10 USER PAGE MAP PAGE ASSIGNMENTS
+; **********************************************************************
+
+LEUPFW==420			;EXEC & USER PAGE FAIL WORD
+LAROVT==421			;ARITHMETIC TRAP
+LPDOVT==422			;PUSHDOWN OVERFLOW TRAP
+LTRP3T==423			;TRAP 3 TRAP
+
+LMUUO==	424			;MUUO STORAGE
+LMUUOP==425			;C(PC) OF MUUO STORAGE
+
+LPFWPC==426			;C(PC) OF PAGE FAIL WORD
+LPGFTR==427			;PAGE FAIL NEW PC TRAP
+
+LKNTRP==430			;KERNAL	 	NO TRAP - NEW PC'S-
+LKTRP==	431			;"	 	TRAP
+LSNTRP==432			;SUPERVISOR	NO TRAP
+LSTRP==	433			;"		TRAP
+LCNTRP==434			;CONCEAL 	NO TRAP
+LCTRP==	435			;"		TRAP
+LPNTRP==436			;PUBLIC		NO TRAP
+LPTRP==	437			;"		TRAP
+
+>
+	XLIST
+	IFDEF	KL10P0,<
+IFDEF	$PAPER,
+; **********************************************************************
+;KL10 EXEC PAGE MAP PAGE ASSIGNMENTS
+; **********************************************************************
+
+LAROVT==421			;ARITHMETIC TRAP
+LPDOVT==422			;PUSHDOWN OVERFLOW TRAP
+LTRP3T==423			;TRAP 3 TRAP
+
+LTBASH==510			;TIME-BASE, HI
+LTBASL==511			;TIME-BASE, LO
+LPRFMH==512			;PERFORMANCE ANAYLYSIS, HI
+LPRFML==513			;PERFORMANCE ANAYLYSIS, LO
+
+; **********************************************************************
+;KL10 USER PAGE MAP PAGE ASSIGNMENTS
+; **********************************************************************
+
+LAROVT==421			;ARITHMETIC TRAP
+LPDOVT==422			;PUSHDOWN OVERFLOW TRAP
+LTRP3T==423			;TRAP 3 TRAP
+
+LMUUO==	424			;MUUO STORAGE
+LMUUOP==425			;C(PC) OF MUUO STORAGE
+LCNTXT==426			;PROCESS CONTEXT WORD
+
+LKNTRP==430			;KERNAL	 	NO TRAP - NEW PC'S-
+LKTRP==	431			;"	 	TRAP
+LSNTRP==432			;SUPERVISOR	NO TRAP
+LSTRP==	433			;"		TRAP
+LCNTRP==434			;CONCEAL 	NO TRAP
+LCTRP==	435			;"		TRAP
+LPNTRP==436			;PUBLIC		NO TRAP
+LPTRP==	437			;"		TRAP
+
+LEUPFW==500			;EXEC & USER PAGE FAIL WORD
+LPFWPC==501			;C(PC) OF PAGE FAIL WORD
+LPGFTR==502			;PAGE FAIL NEW PC
+
+LEBXMH==504			;E-BOX CLOCK TICK METER, HI
+LEBXML==505			;E-BOX CLOCK TICK METER, LO
+LMBXMH==506			;M-BOX CYCLE METER, HI
+LMBXML==507			;M-BOX CYCLE METER, LO
+
+>>				;END CONDITIONAL ON KL10
+	LIST
diff --git a/apps/pdp10/diags/klad/README.md b/apps/pdp10/diags/klad/README.md
index 170a9cff8..7db33e335 100644
--- a/apps/pdp10/diags/klad/README.md
+++ b/apps/pdp10/diags/klad/README.md
@@ -11,8 +11,73 @@ PCjs has archived selected files from
 [PDP-10 KLAD Diagnostics Sources](http://pdp-10.trailing-edge.com/klad_sources/index.html), including:
 
 - [KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA)](dakaa/)
+	- TEST OF JUMP, JUMPA AND SKIPX INSTRUCTIONS
+    - TEST OF MOVE, SKIP AND COMPARE INSTRUCTIONS
+    - TEST OF SKIP, FULL WORD TRANSFER AND HALF WORD TRANSFER INSTRUCTIONS
+    - TEST OF BOOLEAN INSTRUCTIONS (SETM, SETZ, AND, XOR, EQV)
 - [KA10 Basic Instruction Diagnostic #2 (MAINDEC-10-DAKAB)](dakab/)
+	- TEST OF THE ADD INSTRUCTION
+	- SPECIAL KI10 FOUR BIT ADDER TEST
+	- TEST OF SUB AND COMPARE INSTRUCTIONS
+	- TEST OF COMPARE (CAMX) INSTRUCTIONS
+	- TEST OF MOVS INSTRUCTION
+	- TEST OF COMPARE (CAXX) INSTRUCTIONS
+	- TEST OF BOOLEAN INSTRUCTIONS
+	- TEST OF MOVN INSTRUCTION
+	- TEST OF MOVM INSTRUCTION
 - [KA10 Basic Instruction Diagnostic #3 (MAINDEC-10-DAKAC)](dakac/)
+	- TEST OF LOGICAL TEST INSTRUCTIONS
+	- TEST OF HWT INSTRUCTIONS
+	- SUPPLEMENTARY ADDER TESTS - FLT 1 + 0
+	- SUPPLEMENTARY ADDER TESTS - O + FLT 0
+	- SUPPLEMENTARY ADDER TESTS - FLT 1 + FLT 1
+	- SUPPLEMENTARY ADDER TESTS - FLT 0 + 0FLT
 - [KA10 Basic Instruction Diagnostic #4 (MAINDEC-10-DAKAD)](dakad/)
+	- TEST OF AC HARDWARE AND INDEX REGISTERS
+	- TEST OF INDEX REGISTER ADDRESSING
+	- TEST OF EXCH INSTRUCTION
+	- TEST OF MOVEM INSTRUCTION
+	- TEST OF JFCL INSTRUCTION AND ARITHMETIC FLAGS
+	- TEST OF JRST INSTRUCTION AND ARITHMETIC FLAGS
+	- TEST OF JSP INSTRUCTION
+	- TEST JRST INSTRUCTION
+	- TEST OF AOBJX INSTRUCTIONS
+	- TEST SETTING OF ARITHMETIC FLAGS VIA MOVNX AND MOVMX
+	- TEST OF AOS AND SOS INSTRUCTIONS
+	- TEST OF INTERACTION OF JFCL, JRST, AND JSP WITH ARITHMETIC FLAGS
+	- TEST OF JUMPX INSTRUCTIONS
+	- TEST OF AOJ AND SOJ INSTRUCTIONS
+	- TEST OF MEMORY, BOTH AND SELF MODE INSTRUCTIONS
+	- XCT INSTRUCTION - BASIC TESTS
+	- INDIRECT ADDRESSING - BASIC TESTS
+	- TEST INDIRECT ADDRESSING WITH INDEXING
 - [KA10 Basic Instruction Diagnostic #5 (MAINDEC-10-DAKAE)](dakae/)
+	- TEST OF JSR INSTRUCTION
+	- TEST OF JSA INSTRUCTION
+	- TEST OF JRA INSTRUCTION
+	- TESTS OF BIS FLAG
+	- TEST OF MSCL FWT INSTRUCTIONS
+	- TEST OF MSCL ADD/SUB INSTRUCTIONS
+	- TEST OF MSCL CAIX INSTRUCTIONS
+	- TEST OF MSCL CAMX INSTRUCTIONS
+	- TEST OF MSCL JUMPX INSTRUCTIONS
+	- TEST OF MSCL AOJX INSTRUCTIONS
+	- TEST OF MSCL AOSX INSTRUCTIONS
+	- TEST OF MSCL SOJX INSTRUCTIONS
+	- TEST OF MSCL SOSX INSTRUCTIONS
 - [KA10 Basic Instruction Diagnostic #6 (MAINDEC-10-DAKAF)](dakaf/)
+	- TEST OF MSCL BOOLEAN INSTRUCTIONS
+	- TEST OF MSCL HWT INSTRUCTIONS
+	- TEST OF MSCL LOGICAL TEST INSTRUCTIONS
+- [KA10 Basic Instruction Diagnostic #7 (MAINDEC-10-DAKAG)](dakag/)
+	- TEST OF PUSH INSTRUCTION
+	- TEST OF PUSHJ INSTRUCTION
+	- TEST OF POP INSTRUCTION
+	- TEST OF POPJ INSTRUCTION
+	- XCT INSTRUCTION - ADDITIONAL TESTS
+	- TEST XCT INSTRUCTION WITH INDIRECT ADDRESSING AND INDEXING
+	- TEST OF SHIFT/ROTATE INSTRUCTIONS USED IN THE ERROR HANDLER
+- [KA10 Basic Instruction Diagnostic #8 (MAINDEC-10-DAKAH)](dakah/)
+	- TESTS OF PI, INTERRUPTS, LUUO'S, I/O
+- [KA10 Basic Instruction Diagnostic #9 (MAINDEC-10-DAKAI)](dakai/)
+	- SHIFT-ROTATE TEST (PART 1)
diff --git a/apps/pdp10/diags/klad/SMFILE.MAC b/apps/pdp10/diags/klad/SMFILE.MAC.txt
similarity index 100%
rename from apps/pdp10/diags/klad/SMFILE.MAC
rename to apps/pdp10/diags/klad/SMFILE.MAC.txt
diff --git a/apps/pdp10/diags/klad/UUOERR.KLM.txt b/apps/pdp10/diags/klad/UUOERR.KLM.txt
new file mode 100644
index 000000000..2a899e7ff
--- /dev/null
+++ b/apps/pdp10/diags/klad/UUOERR.KLM.txt
@@ -0,0 +1,289 @@
+SUBTTL	*UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975
+
+;THIS SUBROUTINE PROVIDES ERROR REPORTING THRU THE USE OF UUO'S.
+
+ERRMES:	MOVEM	0,%ERAC0#	;SAVE AC0
+	IFDEF	EXCASB,>
+	MOVEM	1,%ERAC1#	;SAVE AC1
+	MOVEM	2,%ERAC2#	;SAVE AC2
+	AOS	ERRTLS		;INCREMENT ERROR TOTALS
+	HRRZ	0,$SVUPC	;GET PC OF UUO
+	CAMN	0,ERRPC		;PC = PC OF LAST ERROR ?
+	AOS	MICNT#		;YES, ADD 1 TO ERROR COUNT
+	MOVE	0,MICNT
+	HRL	0,$SVUPC
+	SKIPN	KLFLG		;NOT KL10
+	SKIPE	USER		;AND NOT USER?
+	JRST	.+2
+	DATAO	PI,0		;YES, DISPLAY ERROR PC,ERROR COUNT
+	SETZM	PROCED#		;CLEAR PROCEED FLAG
+	SWITCH
+	TLNE	NOPNT		;PRINTOUT ?
+	JRST	%ERRS1		;NO, RESTORE AC'S AND RETURN
+	MOVE	1,$SVUUO
+	LSH	1,-^D27
+	MOVEM	1,%ACS1A#	;SAVE UUO NUMBER
+	MOVE	0,%ERAC0
+	MOVE	1,%ERAC1
+	SKIPGE	@ERRLOP		;ERR LOOP AC > OR = 0 ?
+	JRST	%ERRS4		;NO, SEE IF PRINT ALL
+%ERMS1:	SETZM	MICNT		;CLEAR ERROR COUNT
+	SKIPL	MONCTL		;DIAG MON OR SYS EXER ?
+	JRST	.+4		;NO, DON'T NEED TITLE
+	SKIPN	%ERFST#		;FIRST ERROR ?
+	PNTNM			;YES, PRINT PROGRAM TITLE
+	SETOM	%ERFST
+	SKIPN	PASCNT		;FIRST PASS ?
+	JRST	.+4		;YES
+	PMSG	<^TEST PASS COUNT = >
+	MOVE	PASCNT
+	PNTDEC
+	PMSG	<^PC =   >
+	HRRZ	0,$SVUPC	;GET PC OF UUO
+	MOVEM	0,ERRPC		;SAVE FOR COMPARE
+	PNT6			;PRINT UUO ADDRESS
+	XLIST
+	IFDEF	ERDIAG,
+	MOVE	1,$SVUUO	;GET AC # OF UUO
+	LSH	1,-27
+	ANDI	1,17
+	MOVE	0,(1)		;GET C(AC)
+	CAIG	1,1		;IS AC # = TO SAVE AC ?
+	MOVE	0,%ERAC0(1)	;YES, GET SAVED AC
+	PNTHW			;PRINT C(AC)
+
+	MOVE	CONSW
+	TLNE	TXTINH		;PRINT FAILURE DES AND FLT NBR ?
+	JRST	%ERMORE		;NO, RESTORE AC'S ETC.
+
+;PRINT FAILURE DESCRIPTOR
+
+	MOVE	1,%ACS1A	;GET UUO NUMBER
+	CAIG	1,1		;PRINT DESCRIPTOR ?
+	JRST	%ERMS3		;NO, JUST PRINT FAULT NUMBER
+	PCRL
+	MOVE	%FLTTB(1)
+	PNTAL			;PRINT FAULT DESCRIPTOR
+
+;PRINT FAULT NUMBER
+
+%ERMS3:	PMSG	<^FAULT NUMBER = >
+	MOVEI	TLET
+	PNTA			;PRINT TEST LETTER
+
+	HRRZ	$SVUUO
+	TRNE	700000
+	JRST	%ER6X
+	TRNE	070000
+	JRST	%ER5X
+	TRNE	007000
+	JRST	%ER4X
+	PNT3			;PRINT FAULT NUMBER
+%ER7X:	PCRL
+	JRST	%ERMORE
+
+%ER4X:	PNT4
+	JRST	%ER7X
+%ER5X:	PNT5
+	JRST	%ER7X
+%ER6X:	PNT6
+	JRST	%ER7X
+
+;FAILURE DESCRIPTORS
+
+TLET:	0			;TEST LETTER
+%FLTTB:	0			;DESCRIPTOR TABLE
+%NODES:	[0]			;NO DESCRIPTOR
+SPDES:	[0]			;SPECIAL USER FAILURE DESCRIPTOR
+$ACF:	[ASCIZ/C(AC) FAILED/]
+%AC1F:	[ASCIZ/C(AC+1) FAILED/]
+%EF:	[ASCIZ/C(E) FAILED/]
+%E1F:	[ASCIZ/C(E+1) FAILED/]
+%ARF:	[ASCIZ/C(C(ACR)) FAILED/]
+%AR1F:	[ASCIZ/C(C(ACR+1)) FAILED/]
+%ALF:	[ASCIZ/C(C(ACL)) FAILED/]
+%EEF:	[ASCIZ/C(C(E)) FAILED/]
+%FF:	[ASCIZ/FLAG FAILED/]
+>
+	XLIST
+	IFDEF	ERRELB,<
+	LIST
+;RELIABILITY FORMAT ERROR PRINTER
+
+%ERMS2:	SETZM	%RAND#		;CLEAR PNT C(RAN) FLAG
+	MOVE	1,%ACS1A
+	CAIL	1,11		;UUO # 11-13
+	SETOM	%RAND		;YES, SET PNT C(RAN) FLAG
+	TRZ	1,10		;MAKE UUO # 1-7
+	MOVEM	1,%ACS1A
+	MOVE	2,ERRPC		;GET UUO ADDRESS
+	MOVE	2,-1(2)		;GET INST IN UUO-1
+	CAIL	1,4		;UUO # < THAN 4 ?
+	MOVE	2,$SVUUO	;YES, GET UUO
+	MOVEM	2,%CNTE#	;SAVE E ADDRESS
+	MOVE	2,%ERAC2
+	MOVE	1,%ERAC1
+	MOVE	0,%ERAC0
+	MOVEI	1,@%CNTE	;GET ADRS FIELD OF UUO OR UUO-1
+	MOVEM	1,%EE1#
+	MOVE	1,%ERAC1
+	MOVE	1,@%EE1		;GET C(E)
+	MOVEM	1,%EE1A#
+	MOVE	1,%ERAC1
+	MOVEI	1,@$SVUUO	;GET ADDRESS FIELD OF UUO
+	MOVEM	1,%EE2#
+	MOVE	1,%ACS1A
+	CAIN	1,3		;UUO # 3 ?
+	JRST	.+4		;YES
+	MOVE	1,%ERAC1
+	MOVE	1,@%EE2		;GET C(E) OF UUO
+	MOVEM	1,%EE2A#
+	MOVE	2,%ACS1A	;GET UUO #
+	MOVE	1,%CNTE
+	LSH	1,-27		;GET AC NUMBER
+	ANDI	1,17
+	CAIG	2,5		;UUO # 6,7 OR 2
+	CAIN	2,2
+	JRST	%ERR2		;YES, GO PNT E AND C(E)
+;PRINT ERROR AC
+
+	PMSG	<^AC =   >
+	MOVE	0,1
+	PNT2			;PRINT AC NUMBER
+	PMSG	<^C(AC)= >
+	MOVE	0,(1)		;GET C(AC)
+	CAIG	1,2		;IS AC # = SAVED AC ?
+	MOVE	0,%ERAC0(1)	;YES, GET SAVED AC
+%ERRB:	PNTHW			;PRINT C(AC) OR UUO2 (E)
+
+;PRINT ERROR INFO
+
+	CAIN	2,5		;UUO # 5
+	JRST	%ERR4		;YES, GO PNT 'TST','SKP', OR ETC.
+
+	PMSG	<^COR =  >
+	MOVE	0,(1)		;GET C(AC)
+	CAIG	1,2		;IS AC # = SAVED AC ?
+	MOVE	0,%ERAC0(1)	;YES, GET SAVED AC
+	CAIE	2,2
+	MOVE	0,%EE1A		;UUO # 2, GET C(E)
+	PNTHW			;PRINT C(E) OR UUO2 C(AC)
+	CAIL	2,4		;UUO # >3 ?
+	JRST	%ERRC		;YES, RESTORE AC'S AND RETURN
+
+	PMSG	<^    ORIGINAL>
+%ERRB1:	MOVE	1,$SVUUO
+	LSH	1,-27		;GET AC # OF UUO
+	ANDI	1,17
+	PMSG	<^C(AC)= >
+	MOVE	0,(1)		;GET C(AC)
+	CAIG	1,2		;IS AC # = SAVED AC ?
+	MOVE	0,%ERAC0(1)	;YES, GET SAVED AC
+	SKIPE	%RAND		;PRINT C(RAN) FLAG SET ?
+	MOVE	0,RAN#		;YES
+	PNTHW			;PRINT C(AC) OR C(RAN)
+	CAIN	2,3		;UUO # 3 ?
+	JRST	%ERR2		;YES, PRINT E, RESTORE AC'S AND RETURN
+	CAIN	2,7		;UUO # 7 ?
+	JRST	%ERRC		;YES, BYPASS PRINTING C(E)
+	PMSG	<^C(E) = >
+	MOVE	0,%EE2A
+	PNTHW			;PRINT C(E)
+	JRST	%ERRC
+
+%ERR2:	PMSG	<^E =    >
+	MOVE	0,%EE2
+	CAIN	2,2		;UUO # 2 ?
+	MOVE	0,%EE1
+	PNT6			;PRINT E OF UUO OR UUO-1
+	CAIL	2,6		;UUO 6 OR 7 ?
+	JRST	%ERRB1		;YES, GO PNT C(AC), C(E) AND RETURN
+	CAIN	2,3		;UUO # 3 ?
+	JRST	%ERRC		;YES, RESTORE AC'S AND RETURN
+
+	PMSG	<^C(E) = >
+	MOVE	0,%EE1A		;GET C(E)
+	JRST	%ERRB
+;PRINT ASCII COMMENT
+
+%ERR4:	HRRZI	0,@$SVUUO
+	PNTA			;PRINT 'TST','SKP', OR ETC.
+	JRST	%ERRC
+
+;COMPLETE PRINTOUT
+
+%ERRC:	PCRL
+
+	XLIST
+	IFDEF	UUOTXT,<
+	LIST
+	MOVE	0,CONSW
+	TLNN	TXTINH		;PRINT DIAGNOSTIC COMMENT ?
+	CAIE	2,7		;UUO # 7 ?
+	JRST	%ERMORE		;NO, RESTORE AC'S AND RETURN
+	MOVE	0,%EE2		;YES
+	PNTAL			;PRINT DIAGNOSTIC COMMENT
+	PCRL
+>
+	LIST
+	JRST	%ERMORE
+
+>
+	LIST
+;RESTORE AC'S AND RETURN OR HALT
+
+%ERMORE:XCT	ERMORE
+	PNTMGN			;PRINT MARGINS
+	SWITCH
+
+%ERRS1:	TTALTM			;ALTMODE CHECK
+	JRST	.+4		;NONE
+	MOVEI	.+3		;SAVE CONT ADDRESS
+	MOVEM	JOBOPC
+	JRST	@ALTMGO		;PERFORM TRANSFER
+	MOVE	CONSW
+	TLNE	0,ERSTOP	;HALT ON ERROR SWITCH SET ?
+	ERRHLT			;YES
+	TLNN	0,LOOPER	;LOOP ON ERROR SWITCH SET ?
+	SETOM	PROCED		;NO, SET THE PROCEED FLAG
+	TLNE	0,DING		;RING BELL SWITCH SET ?
+	PBELL			;YES, GO RING BELL
+
+%ERRS2:	MOVE	2,%ERAC2	;RESTORE AC'S
+	MOVE	1,%ERAC1
+	SETOM	@ERRLOP		;SET C(ERR LOOP AC) TO -1
+	SKIPN	PROCED		;LOOP ON ERROR ?
+	JRST	%ERRS5		;YES
+	AOS	@ERRLOP		;NO, INC C(ERR LOOP AC)
+	AOS	@ERRLOP		;SO IT ='S 1
+	SKIPL	MONCTL		;UNDER DIAGNOSTIC MONITOR ?
+	JRST	%ERRS5		;NO, CONTINUE PROGRAM
+	MOVE	0,ERRTLS	;YES
+	CAIL	0,5		;PRINTED ALLOWED ERRORS ?
+	JRST	$BEND2
+
+%ERRS5:	MOVE	0,%ERAC0	;NO, CONTINUE PROGRAM
+	IFDEF	EXCASB,>
+	JRST	UUOEXT
+
+%ERRS4:	MOVE	0,CONSW
+	TLNN	PALERS		;PRINT ALL ERRORS ?
+	JRST	%ERRS1		;NO
+	JRST	%ERMS1		;YES
diff --git a/apps/pdp10/diags/klad/dakaa/README.md b/apps/pdp10/diags/klad/dakaa/README.md
index 60a3c03cd..4661100e6 100644
--- a/apps/pdp10/diags/klad/dakaa/README.md
+++ b/apps/pdp10/diags/klad/dakaa/README.md
@@ -280,5 +280,5 @@ DAKAA.MAC
 [[Download](DAKAA.MAC.txt)]
 
 {% highlight text %}
-{% include_relative DAKAA.MAC.txt %}
+{% include_relative DAKAAM.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakab/README.md b/apps/pdp10/diags/klad/dakab/README.md
index de51d0e45..cc8cf42cc 100644
--- a/apps/pdp10/diags/klad/dakab/README.md
+++ b/apps/pdp10/diags/klad/dakab/README.md
@@ -273,5 +273,5 @@ DAKAB.MAC
 [[Download](DAKAB.MAC.txt)]
 
 {% highlight text %}
-{% include_relative DAKAB.MAC.txt %}
+{% include_relative DAKABM.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakac/README.md b/apps/pdp10/diags/klad/dakac/README.md
index ac0beedb3..93d4a17b3 100644
--- a/apps/pdp10/diags/klad/dakac/README.md
+++ b/apps/pdp10/diags/klad/dakac/README.md
@@ -272,5 +272,5 @@ DAKAC.MAC
 [[Download](DAKAC.MAC.txt)]
 
 {% highlight text %}
-{% include_relative DAKAC.MAC.txt %}
+{% include_relative DAKACM.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakad/README.md b/apps/pdp10/diags/klad/dakad/README.md
index ec7024ef2..c3fea4b6a 100644
--- a/apps/pdp10/diags/klad/dakad/README.md
+++ b/apps/pdp10/diags/klad/dakad/README.md
@@ -288,5 +288,5 @@ DAKAD.MAC
 [[Download](DAKAD.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAD.MAC.txt %}
+{% include_relative DAKADM.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakae/README.md b/apps/pdp10/diags/klad/dakae/README.md
index c85042863..c76a97251 100644
--- a/apps/pdp10/diags/klad/dakae/README.md
+++ b/apps/pdp10/diags/klad/dakae/README.md
@@ -285,5 +285,5 @@ DAKAE.MAC
 [[Download](DAKAE.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAE.MAC.txt %}
+{% include_relative DAKAEM.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakaf/README.md b/apps/pdp10/diags/klad/dakaf/README.md
index 7cbbc5b55..643776ee3 100644
--- a/apps/pdp10/diags/klad/dakaf/README.md
+++ b/apps/pdp10/diags/klad/dakaf/README.md
@@ -272,5 +272,5 @@ DAKAF.MAC
 [[Download](DAKAF.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAF.MAC.txt %}
+{% include_relative DAKAFM.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakag/README.md b/apps/pdp10/diags/klad/dakag/README.md
index 62973ef8f..16e811452 100644
--- a/apps/pdp10/diags/klad/dakag/README.md
+++ b/apps/pdp10/diags/klad/dakag/README.md
@@ -274,5 +274,5 @@ DAKAG.MAC
 [[Download](DAKAG.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAG.MAC.txt %}
+{% include_relative DAKAGM.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakah/DAKAH.LST.txt b/apps/pdp10/diags/klad/dakah/DAKAH.LST.txt
new file mode 100644
index 000000000..fb636eeda
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakah/DAKAH.LST.txt
@@ -0,0 +1,7091 @@
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 1
+DAKAHT	MAC	19-JAN-77 17:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0007
+
+     1					;DAKAH
+     2
+     3
+     4
+     5			000002			DECVER==2
+     6			000000			MCNVER==0
+     7
+     8						XLIST
+     9						LIST
+    10						LALL
+    11						NAME	\MCNVER,\DECVER^
+    12
+    13					TITLE	DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2
+    14					^
+    15
+    16					;TEST DESIGNED FOR INITIAL DEBUGGING OF PROCESSOR HARDWARE
+    17					;AND TO DETECT (SOLID) FAILURES IN THE FIELD.
+    18
+    19					;COPYRIGHT 1972,1977
+    20					;DIGITAL EQUIPMENT CORPORATION
+    21					;MARLBORO, MASS. 01752
+    22
+    23					;JOHN R. KIRCHOFF
+    24
+    25	000137					LOC	137
+    26	000137	000000	000002			MCNVER,,DECVER
+    27
+    28						NOSYM
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 2
+DAKAHT	MAC	19-JAN-77 17:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0008
+
+    29					SUBTTL	DIAGNOSTIC PARAMETERS
+    30
+    31					;CONTROL WORDS
+    32
+    33			004000		EXIOT=4000		;USER PRIV I/O FLAG
+    34			010000		USERF=10000		;USER MODE FLAG
+    35
+    36			000400		DACT=400
+    37			000774		ME=774
+    38			002377		PIG0=2377
+    39			040000		PIH1=40000
+    40			020000		PIH2=20000
+    41			010000		PIH3=10000
+    42			004000		PIH4=4000
+    43			002000		PIH5=2000
+    44			001000		PIH6=1000
+    45			000400		PIH7=400
+    46			002000		PIOSET=2000
+    47			001000		PIOCLR=1000
+    48			004000		PIREQ=4000
+    49			000200		ACT=200
+    50			020000		PROT=20000
+    51			010000		NONEX=10000
+    52			004000		UMIOT=4000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 3
+DAKAHT	MAC	19-JAN-77 17:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0009
+
+    53					;SUBROUTINE DEFINITIONS
+    54
+    55			030726		SADR1=START
+    56			030726		SADR2=START
+    57			030726		SADR3=START
+    58			030726		SADR4=START
+    59			030726		SADR5=START
+    60			030726		SADR6=START
+    61		254000	030726		SADR7=JRST START
+    62		254000	030726		SADR8=JRST START
+    63		254000	030726		SADR9=JRST START
+    64		254000	030726		SADR10=JRST START
+    65		254000	030726		SADR11=JRST START
+    66			000000		PAREA1=0
+    67			000000		PAREA2=0
+    68			000000		PAREA3=0
+    69			000000		PAREA4=0
+    70			000000		PAREA5=0
+    71			000000		PAREA6=0
+    72			000001		ITERAT=1
+    73			000001		EXCASB==1
+    74			000001		PGMEND==1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 4
+DAKAHT	MAC	19-JAN-77 17:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0010
+
+    75
+    76					;MACROS
+    77
+    78					;STOP -	USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMP .+1)
+    79					;	TO A (JUMP .-X) TO CYCLE ON FAILING INSTRUCTION.
+    80
+    81					DEFINE	STOP	(A)<
+    82						HALT	.+1
+    83						JUMP	.+1
+    84									>
+    85
+    86					;SFLAG - USED TO CLEAR ALL FLAGS THEN TO SET REQUESTED
+    87					;	 FLAG FOR TESTING.
+    88
+    89					DEFINE	SFLAG	(A)<
+    90						MOVSI	1,A
+    91						JFCL	17,.+1
+    92						JRST	2,.+1(1)
+    93									>
+    94
+    95					;CHANEL - USED FOR 2 CHANNEL SYSTEM CHECK
+    96
+    97					DEFINE	CHANEL	(A)<
+    98						SKIPN	PI7SYS#
+    99						JRST	A
+   100									>
+   101
+   102					;RETURN - USED TO SETUP UUO TRAP
+   103
+   104					DEFINE	RETURN	(A)<
+   105						MOVE	2,[JSP 2,A]
+   106						MOVEM	2,41
+   107						SETOB	2,40
+   108									>
+   109
+   110					;CLEAN - USED TO CLEAR THE PROCESSOR EXCEPT CLOCK
+   111					;	CLEAR DEVICES AND PI SYSTEM
+   112
+   113					DEFINE	CLEAN	(A)<
+   114						CONO	634440
+   115						CONO	PI,10000
+   116									>
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 1
+PARAM	KLM	18-JAN-77 11:38		*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977                               SEQ 0011
+
+   117					SUBTTL	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977
+   118
+   119					DEFINE	S,<;*********************************************************************>
+   120
+   121					S^;*********************************************************************^
+   122					;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
+   123					;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
+   124					;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS
+   125					S^;*********************************************************************^
+   126
+   127			400000		ABORT==	400000			;ABORT PROGRAM ON PASS COMPLETION
+   128			200000		RSTART==200000			;RESTART TEST, PRINT TOTALS
+   129			100000		TOTALS==100000			;PRINT TOTALS, CONTINUE
+   130
+   131			040000		NOPNT==	040000			;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED)
+   132			020000		PNTLPT==020000			;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE)
+   133			010000		DING==	010000			;RING BELL ON ERROR
+   134
+   135			004000		LOOPER==004000			;ENTER EXERCISE/CHECK LOOP ON ERROR
+   136			002000		ERSTOP==002000			;HALT ON TEST ERROR
+   137			001000		PALERS==001000			;PRINT ALL ERRORS
+   138
+   139			000400		RELIAB==000400			;RELIABILITY MODE
+   140			000200		TXTINH==000200			;INHIBIT ERROR TEXT
+   141			000100		INHPAG==000100			;INHIBIT PAGING
+   142
+   143			000040		MODDVC==000040			;MODIFY DEVICE CODE
+   144			000020		INHCSH==000020			;INHIBIT CACHE
+   145			000010		OPRSEL==000010			;OPERATOR SELECTION
+   146
+   147			000004		CHAIN==	000004			;CHAIN CONTROL SWITCH
+   148
+   149			000002		KAHZ50==000002			;KA10 50 HERTZ POWER
+   150
+   151									;SWITCH 17 RESERVED !!!
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 2
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0012
+
+   152					SUBTTL	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977
+   153
+   154					S^;*********************************************************************^
+   155					;*SPECIAL SUBPROGRAM LINKAGES
+   156					S^;*********************************************************************^
+   157
+   158			027772		FSELNK=	27772	;FILE SELECT LINK
+   159			027773		FRDLNK=	27773	;FILE READ LINK
+   160			027774		LDLNK=	27774	;LOAD LINKAGE ADDRESS
+   161			027775		DDTLNK=	27775	;DDT LINKAGE ADDRESS
+   162			027776		MODLNK=	27776	;OPERATIONAL MODE CHECK LINKAGE ADDRESS
+   163			027777		SUBLNK=	27777	;SUBROUTINE LINKAGE ADDRESS
+   164
+   165					S^;*********************************************************************^
+   166					;*SPECIAL SUBROUTINE FATAL HALTS
+   167					;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE
+   168					S^;*********************************************************************^
+   169
+   170					;ADDRESS   TAG	REASON
+   171					;---------------------
+   172
+   173					; 1010 	NOEXEC	;PROGRAM NOT CODED FOR EXEC MODE OPERATION
+   174					; 1011  PLERR	;FATAL PUSH LIST POINTER ERROR
+   175					; 1012  PLERR1	;INITIAL PUSH LIST POINTER ERROR
+   176					; 1013  MUOERR	;MUUO WITH LUUO HANDLER WIPED OUT
+   177					; 1014  DTEBER	;DTE20 INTERRUPT WITHOUT DOORBELL
+   178					; 1015  DTECER	;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET
+   179					; 1016  CPIERR	;CPU INITIALIZATION ERROR
+   180					; 1017  EOPERR	;END OF PROGRAM ERROR
+   181					; 1020  LUOERR	;INTERRUPT WITH LUUO HANDLER WIPED OUT
+   182
+   183					S^;*********************************************************************^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 3
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0013
+
+   184					S^;*********************************************************************^
+   185					;OPERATOR DEFINITIONS (NON-UUO'S)
+   186					S^;*********************************************************************^
+   187
+   188		260740	000000		OPDEF	GO	[PUSHJ	P,]	;SUBROUTINE CALL
+   189		263740	000000		OPDEF	RTN	[POPJ	P,]	;SUBROUTINE RETURN
+   190		261740	000000		OPDEF	PUT	[PUSH	P,]	;PUT DATA ON PUSH LIST
+   191		262740	000000		OPDEF	GET	[POP	P,]	;GET DATA FROM PUSH LIST
+   192		254000	000000		OPDEF	PJRST	[JRST	]	;JRST TO ROUTINE THAT RTN'S
+   193		254200	000000		OPDEF	HALT	[JRST	4,]	;DEFINITION FOR DDT
+   194		254100	000000		OPDEF	JRSTF	[JRST	2,]	;DEFINITION FOR DDT
+   195		254500	000000		OPDEF	JEN	[JRST	12,]	;DEFINITION FOR DDT
+   196
+   197					S^;*********************************************************************^
+   198					;*SUBROUTINE INITIALIZATION CALL
+   199					S^;*********************************************************************^
+   200
+   201		265000	030011		OPDEF	PGMINT	[JSP	0,SBINIT]	;SUBROUTINE INITIALIZATION
+   202
+   203					S^;*********************************************************************^
+   204					;*HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION).
+   205					S^;*********************************************************************^
+   206
+   207		037640	000004		OPDEF	FATAL	[37B8!15B12!4]	;FATAL PROGRAMMING HALT
+   208		037600	000004		OPDEF	ERRHLT	[37B8!14B12!4]	;PROGRAM ERROR HALT
+   209
+   210					S^;*********************************************************************^
+   211					;*TERMINAL INPUT UUO'S
+   212					;*ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE
+   213					;*CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE.
+   214					S^;*********************************************************************^
+   215
+   216		037000	000003		OPDEF	TTICHR 	[37B8!0B12!3]	;TTY, INPUT ANY CHARACTER
+   217		037040	000003		OPDEF	TTIYES	[37B8!1B12!3]	;TTY, NORMAL RETURN Y
+   218		037100	000003		OPDEF	TTINO	[37B8!2B12!3]	;TTY, NORMAL RETURN N
+   219		037140	000003		OPDEF	TTIOCT	[37B8!3B12!3]	;TTY, INPUT OCTAL WORD
+   220		037200	000003		OPDEF	TTIDEC	[37B8!4B12!3]	;TTY, INPUT DECIMAL WORD
+   221		037240	000003		OPDEF	TTICNV	[37B8!5B12!3]	;TTY, INPUT CONVERTABLE WORD
+   222		037300	000003		OPDEF	TTLOOK	[37B8!6B12!3]	;TTY, KEYBOARD CHECK
+   223		037340	000003		OPDEF	TTALTM	[37B8!7B12!3]	;TTY, ALT-MODE CHECK
+   224		037400	000003		OPDEF	TTSIXB	[37B8!10B12!3]	;TTY, INPUT SIXBIT WORD
+   225		037440	000003		OPDEF	TTYINP	[37B8!11B12!3]	;TTY, IMAGE MODE INPUT
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 4
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0014
+
+   226					;*TERMINAL OUTPUT UUO'S.
+   227
+   228		037000	000000		OPDEF	PNTA	[37B8!0B12!0]	;PRINT ASCII WORD
+   229		037000	000001		OPDEF	PNTAF	[37B8!0B12!1]	;PRINT ASCII WORD FORCED
+   230		037740	000000		OPDEF	PNTAL	[37B8!17B12!0]	;PRINT ASCIZ LINE
+   231		037740	000001		OPDEF	PNTALF	[37B8!17B12!1]	;PRINT ASCIZ LINE FORCED
+   232		037600	000003		OPDEF	PSIXL	[37B8!14B12!3]	;PRINT SIXBIT'Z LINE
+   233		037640	000003		OPDEF	PSIXLF	[37B8!15B12!3]	;PRINT SIXBIT'Z LINE FORCED
+   234		037000	000000		OPDEF	PNTMSG	[37B8!0B12!0]	;PRINT MESSAGE IMMEDIATE
+   235		037040	000000		OPDEF	PNTMSF	[37B8!1B12!0]	;PRINT MESSAGE IMMEDIATE FORCED
+   236		037100	000000		OPDEF	PSIXM	[37B8!2B12!0]	;PRINT SIXBIT'Z MSG IMMEDIATE
+   237		037200	000000		OPDEF	PSIXMF	[37B8!4B12!0]	;PRINT SIXBIT'Z MSG IMM FORCED
+   238		037000	000000		OPDEF	PNTCI	[37B8!0B12!0]	;PRINT CHARACTER IMMEDIATE
+   239		037040	000000		OPDEF	PNTCIF	[37B8!1B12!0]	;PRINT CHARACTER IMMEDIATE FORCED
+   240		037500	000000		OPDEF	PNTCHR	[37B8!12B12!0]	;PRINT CHARACTER
+   241		037500	000001		OPDEF	PNTCHF	[37B8!12B12!1]	;PRINT CHARACTER FORCED
+   242		037040	000000		OPDEF	PNT1	[37B8!1B12!0]	;PRINT ONE OCTAL DIGIT
+   243		037040	000001		OPDEF	PNT1F	[37B8!1B12!1]	;PRINT 1 OCTAL DIGIT FORCED
+   244		037100	000000		OPDEF	PNT2	[37B8!2B12!0]	;PRINT TWO OCTAL DIGITS
+   245		037100	000001		OPDEF	PNT2F	[37B8!2B12!1]	;PRINT 2 OCTAL DIGITS FORCED
+   246		037140	000000		OPDEF	PNT3	[37B8!3B12!0]	;PRINT THREE OCTAL DIGITS
+   247		037140	000001		OPDEF	PNT3F	[37B8!3B12!1]	;PRINT THREE OCTAL DIGITS FORCED
+   248		037200	000000		OPDEF	PNT4	[37B8!4B12!0]	;PRINT FOUR OCTAL DIGITS
+   249		037200	000001		OPDEF	PNT4F	[37B8!4B12!1]	;PRINT FOUR OCTAL DIGITS FORCED
+   250		037240	000000		OPDEF	PNT5	[37B8!5B12!0]	;PRINT FIVE OCTAL DIGITS
+   251		037240	000001		OPDEF	PNT5F	[37B8!5B12!1]	;PRINT FIVE OCTAL DIGITS FORCED
+   252		037300	000000		OPDEF	PNT6	[37B8!6B12!0]	;PRINT SIX OCTAL DIGITS
+   253		037300	000001		OPDEF	PNT6F	[37B8!6B12!1]	;PRINT SIX OCTAL DIGITS FORCED
+   254		037340	000000		OPDEF	PNT7	[37B8!7B12!0]	;PRINT 7 OCTAL DIGITS
+   255		037340	000001		OPDEF	PNT7F	[37B8!7B12!1]	;PRINT 7 OCTAL DIGITS FORCED
+   256		037440	000000		OPDEF	PNT11	[37B8!11B12!0]	;PRINT 11 OCTAL DIGITS
+   257		037440	000001		OPDEF	PNT11F	[37B8!11B12!1]	;PRINT 11 OCTAL DIGITS FORCED.
+   258		037400	000000		OPDEF	PNTADR	[37B8!10B12!0]	;PRINT PHYSICAL ADDRESS
+   259		037400	000001		OPDEF	PNTADF	[37B8!10B12!1]	;PRINT PHYSICAL ADDRESS FORCED
+   260		037600	000000		OPDEF	PNTOCT  [37B8!14B12!0]	;PRINT FULL WORD OCTAL
+   261		037600	000001		OPDEF	PNTOTF	[37B8!14B12!1]	;PRINT FULL WORD OCTAL FORCED
+   262		037540	000000		OPDEF	PNTHW	[37B8!13B12!0]	;PRINT OCTAL HALF WORDS, 6 SP 6
+   263		037540	000001		OPDEF	PNTHWF	[37B8!13B12!1]	;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED
+   264		037700	000003		OPDEF	PNTOCS	[37B8!16B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S
+   265		037740	000003		OPDEF	PNTOCF	[37B8!17B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED
+   266		037640	000000		OPDEF	PNTDEC	[37B8!15B12!0]	;PRINT DECIMAL, SUPRESS LEADING 0'S
+   267		037640	000001		OPDEF	PNTDCF	[37B8!15B12!1]	;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED
+   268		037700	000000		OPDEF	PNTDS	[37B8!16B12!0]	;PRINT DECIMAL, SPACES FOR LD 0'S
+   269		037700	000001		OPDEF	PNTDSF	[37B8!16B12!1]	;PRINT DECIMAL, SPACES FOR LD 0'S FORCED
+   270		037200	000002		OPDEF	PNTNM	[37B8!4B12!2]	;PRINT PROGRAM NAME
+   271		037000	000002		OPDEF	PNTSIX	[37B8!0B12!2]	;PRINT SIXBIT WORD
+   272		037040	000002		OPDEF	PNTSXF	[37B8!1B12!2]	;PRINT SIXBIT WORD FORCED
+   273		037240	000002		OPDEF	DROPDV	[37B8!5B12!2]	;CLOSE LOGICAL FILE, USER MODE
+   274		037100	000002		OPDEF	PNTCW	[37B8!2B12!2]	;PRINT DF10 CONTROL WORD
+   275		037140	000002		OPDEF	PNTCWF	[37B8!3B12!2]	;PRINT DF10 CONTROL WORD FORCED
+   276		037000	030242		OPDEF	PCRL	[37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED
+   277		037040	030242		OPDEF	PCRLF	[37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED
+   278		037000	000040		OPDEF	PSP	[37B8!0B12!40]	;PRINT SPACE
+   279		037040	000040		OPDEF	PSPF	[37B8!1B12!40]	;PRINT SPACE FORCED
+   280		037000	030243		OPDEF	PCRL2	[37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE)
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 4-1
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0015
+
+   281		037040	030243		OPDEF	PCRL2F	[37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED
+   282		037040	000007		OPDEF	PBELL	[37B8!1B12!7]	;PRINT TTY BELL
+   283
+   284		037040	000026		OPDEF	PFORCE	[37B8!1B12!26]	;PRINT FORCE, CONTROL O OVERRIDE
+   285
+   286					DEFINE	PMSG	(ARG),<
+   287						PSIXM	[SIXBIT\ARG'_\]>
+   288
+   289					DEFINE	PMSGF	(ARG),<
+   290						PSIXMF	[SIXBIT\ARG'_\]>
+   291
+   292					;*SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING
+   293					;*	CONSERVES CORE OVER ASCIZ
+   294
+   295					DEFINE	SIXBTZ	(ARG),<	[SIXBIT\ARG'_\]>
+   296
+   297					;*CONSOLE SWITCH INPUT UUO.
+   298					;*READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF
+   299					;* USER MODE.
+   300
+   301		037400	000002		OPDEF	SWITCH	[37B8!10B12!2]	;INPUT CONSOLE SWITCHES
+   302
+   303					;*CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION
+   304					;*EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR.
+   305
+   306		037540	000004		OPDEF	CLOKOP	[37B8!13B12!4]	;CLOCK OPERATION UUO - PDP-11 CLOCK
+   307		037200	000004		OPDEF	MTROP	[37B8!4B12!4]	;CLOCK OPERATION UUO - DK20 METER
+   308
+   309					;*KL10 ONLY CACHE OPERATION UUO'S
+   310
+   311		037040	000004		OPDEF	CINVAL	[37B8!1B12!4]	;CACHE INVALIDATE
+   312		037100	000004		OPDEF	CFLUSH	[37B8!2B12!4]	;CACHE FLUSH
+   313		037140	000004		OPDEF	CWRTBI	[37B8!3B12!4]	;CACHE WRITE-BACK & INVALIDATE
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 5
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0016
+
+   314					;*END OF PASS/PROGRAM UUOS
+   315
+   316					;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT,
+   317					;*DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC.
+   318
+   319		037500	000004		OPDEF	ENDUUO	[37B8!12B12!4]	;UUO TO DISPLAY LIGHTS
+   320		037700	000004		OPDEF	EOPUUO	[37B8!16B12!4]	;END OF PROGRAM UUO
+   321
+   322					;*MEMORY MANAGEMENT UUO'S
+   323					;*UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING,
+   324					;*ADDRESS CONVERSION, ETC...
+   325
+   326		037000	000004		OPDEF	MAPMEM	[37B8!0B12!4]	;MAP MEMORY
+   327		037500	000002		OPDEF	MEMZRO	[37B8!12B12!2]	;ZERO MEMORY
+   328		037440	000002		OPDEF	MEMSEG	[37B8!11B12!2]	;SETUP MEMORY SEGMENT
+   329		037540	000002		OPDEF	MAPADR	[37B8!13B12!2]	;VIRTUAL TO PHYSICAL ADR CONVERT
+   330		037640	000002		OPDEF	MAPCNK	[37B8!15B12!2]	;MAP MEMORY CHUNK
+   331		037600	000002		OPDEF	MAPSET	[37B8!14B12!2]	;SET KI10 EXEC PAGE MAP
+   332		037740	000002		OPDEF	MAPPNT	[37B8!17B12!2]	;PRINT MEMORY MAP
+   333
+   334					;*DEVICE CODE MODIFICATION UUO
+   335					;*ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO
+   336					;*IOT'S TO A DIFFERENT DEVICE CODE.
+   337
+   338		037340	000002		OPDEF	MODPCU	[37B8!7B12!2]	;MODIFY PERHIPERAL CODE, USER
+   339		037300	000002		OPDEF	MODPCP	[37B8!6B12!2]	;MODIFY PERHIPERAL CODE, PROGRAM
+   340
+   341			030000			IFNDEF	MODDVL,
+   342			030000			IFNDEF	MODDVU,
+   343
+   344					;*"DIAMON" FILE SELECTION AND READ UUOS
+   345
+   346		037240	000004		OPDEF	FSELECT	[37B8!5B12!4]	;FILE SELECTION
+   347		037300	000004		OPDEF	FREAD	[37B8!6B12!4]	;FILE READ - ASCII DATA
+   348		037340	000004		OPDEF	FRD36	[37B8!7B12!4]	;FILE READ - 36 BIT DATA
+   349		037400	000004		OPDEF	FRD8	[37B8!10B12!4]	;FILE READ - 8 BIT DATA
+   350
+   351					;*KI10 ONLY UUO FOR PRINTING MARGIN VALUES
+   352
+   353		037700	000002		OPDEF	PNTMGN	[37B8!16B12!2]	;PRINT MARGIN VALUE
+   354
+   355						XLIST
+   356					IFNDEF	KLOLD,
+   382
+   383					;*A MACRO TO REPORT AN ERROR AND NOT LOOP
+   384
+   385						DEFINE	ERROR1	(FORMAT,CORECT,ACTUAL,F,D,ERR)<
+   386						SALL
+   387						ERUUO	FORMAT,[T,,[SIXBIT\F'_\]
+   388							   CORECT,,ACTUAL
+   389							   [SIXBIT\D'_\],,ERR]
+   390						XALL	>
+   391
+   392					>;END OF KLOLD CONDITIONAL
+   393
+   394						XLIST
+   395						LIST
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 1
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0018
+
+   396					SUBTTL	*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977
+   397
+   398	030000					LOC	30000
+   399
+   400					S^;*********************************************************************^
+   401					;*PROGRAM STARTING ADDRESSES
+   402					;*THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS
+   403					;*NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE
+   404					;*OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER
+   405					;*MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS.
+   406					S^;*********************************************************************^
+   407
+   408	030000	254 00 1 00 027776 	BEGIN:	JRST	@MODLNK		;STAND-ALONE START
+   409	030001	254 00 0 00 030726 	$START:	JRST	START		;MODE CHECK STARTING ADDRESS
+   410
+   411	030002	254 00 1 00 027774 	DIAGMN:	JRST	@LDLNK		;DIAGNOSTIC MONITOR START
+   412
+   413	030003	254 00 1 00 027774 	SYSEXR:	JRST	@LDLNK		;SYSTEM EXERCISER START
+   414
+   415	030004	254 00 0 00 030726 	SFSTRT:	JRST	SADR1		;SPECIAL FEATURE START
+   416
+   417	030005	254 00 0 00 030726 	PFSTRT:	JRST	SADR2		;POWER FAIL RESTART
+   418
+   419	030006	254 00 0 00 030726 	REENTR:	JRST	SADR3		;REENTER START(USUALLY USER MODE ONLY)
+   420
+   421	030007				SRTDDT:				;COMMONLY MISTAKEN NAME FOR "DDTSRT"
+   422	030007	254 00 1 00 027775 	DDTSRT:	JRST	@DDTLNK		;DDT START
+   423
+   424	030010	254 00 0 00 030737 	BEGIN1:	JRST	STARTA		;LOOP START(END OF PASS COMES HERE)
+   425	030011	254 00 1 00 027777 	SBINIT:	JRST	@SUBLNK		;PMGINT LINKAGE
+   426	030012	000000	000000		RETURN:	0			;RETURN ADDRESS STORAGE
+   427
+   428	030013	254000	030726		START1:	SADR7			;OPTIONAL STARTING ADR/INSTRUCTIONS
+   429	030014	254000	030726		START2:	SADR8			; "
+   430	030015	254000	030726		START3:	SADR9			; "
+   431	030016	254000	030726		START4:	SADR10			; "
+   432	030017	254000	030726		START5:	SADR11			; "
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 2
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0019
+
+   433					S^;*********************************************************************^
+   434					;*PROGRAM FIXED PARAMETER AREA
+   435					S^;*********************************************************************^
+   436
+   437	030020	000000	000000		PNTNAM:	PAREA3		;SIXBIT PROGRAM NAME
+   438	030021	000000	000000		PNTEXT:	PAREA4		;SIXBIT PROGRAM EXTENSION
+   439	030022	000000	000000		RANDBS:	PAREA1		;RANDOM BASE NUMBER
+   440	030023	000000	000000		SWTEXR:	PAREA2		;SYSTEM EXERCISER SWITCHES
+   441	030024	000000	000001		ITRCNT:	ITERAT		;PROGRAM ITERATIONS
+   442	030025	000000	030712		$PNAME:	PGMNAM		;POINTER TO PROGRAMS NAME
+   443	030026	000000	000002		$PVER:	MCNVER,,DECVER	;MCN & DEC VERSION LEVEL
+   444	030027	000000	030000		$MODVL:	MODDVL		;DEVICE CODE CHANGE LOWER LIMIT
+   445	030030	000000	030000		$MODVU:	MODDVU		;DEVICE CODE CHANGE UPPER LIMIT
+   446	030031	777777	777777		$EMODE:	IFNDEF EXCASB,<0> IFDEF EXCASB,<-1>	;EXEC ALLOWED
+   447	030032	000000	000000		$UMODE:	IFNDEF USRASB,<0> IFDEF USRASB,<-1>	;USER ALLOWED
+   448	030033	000000	000000		$DSKUP:	IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1>	;DISK UPDATE MODE
+   449	030034	000000	000000		$MMAP:	IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1>	;ALLOW MEMORY RTNS
+   450	030035	000000	000000		PAREA7:	PAREA5		;OPTIONAL PARAMETER
+   451	030036	000000	000000		PAREA8:	PAREA6		;OPTIONAL PARAMETER
+   452
+   453					S^;*********************************************************************^
+   454					;*PROGRAM VARIABLE PARAMETER AREA
+   455					S^;*********************************************************************^
+   456
+   457	030037	000000	000000		USER:	0		; 0 = EXEC, -1 = USER MODE FLAG
+   458	030040	000000	000000		KAIFLG:	0		;PROCESSOR TYPE, 0 = KA10, -1 = KI10
+   459	030041	000000	000000		KLFLG:	0		;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10
+   460	030042	777777	777777		MONFLG:	-1		;DIAG MONITOR SPECIAL USER FLAG
+   461	030043	000000	000000		MONCTL:	0		;DIAG MON/SYS EXR FLAG
+   462	030044	000000	000000		MONTEN:	0		;-1= LOADED BY 10
+   463	030045	000000	000000		CLOCKF:	0		;CLOCK TICKED FLAG
+   464	030046	000000	000000		CONSW:	0		;CONSOLE SWITCH SETTINGS
+   465	030047	000000	000000		PASCNT:	0		;PROGRAM PASS COUNT
+   466	030050	000000	000000		RUNFLG:	0		;PROGRAM RUN FLAG
+   467	030051	000000	000000		TESTPC:	0		;SUBTEST PC
+   468	030052	000000	000000		ERRPC:	0		;ERROR PC
+   469	030053	000000	000000		ERRTLS:	0		;ERROR TOTALS
+   470	030054	000000	000000		TICKS:	0		;PROGRAM RUNNING TIME
+   471	030055	000000	000000		MARGIN:	0		;KI10 MARGIN WORD VALUE
+   472	030056	000000	000000		$ONETM:	0		;SUBROUTINE INITIALIZATION FLAG
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 3
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0020
+
+   473					S^;*********************************************************************^
+   474					;*SPECIAL PROGRAM DISPATCH ADDRESSES
+   475					S^;*********************************************************************^
+   476
+   477	030057	037 12 0 00 000004 	BEGEND:	ENDUUO		;END OF PASS
+   478	030060	254 00 0 00 030010 	$BEND1:	JRST	BEGIN1	;KEEP RUNNING PROGRAM
+   479	030061	037 16 0 00 000004 	$BEND2:	EOPUUO		;END OF PROGRAM - NO RETURN
+   480	030062	000000	030726		CNTLC:	SADR5		;CONTROL C XFER ADDRESS
+   481	030063	000000	030726		ALTMGO:	SADR6		;ALTMODE XFER ADDRESS
+   482	030064				CPOPJ1:			;SKIP RETURN
+   483	030064	350 00 0 17 000000 	UUOSKP:	AOS	(P)	;SKIP RETURN FROM UUO
+   484	030065				CPOPJ:			;NON-SKIP REGULAR RETURN
+   485	030065	263 17 0 00 000000 	UUOEXT:	RTN		;UUO RETURN
+   486	030066	255 00 0 00 000000 	UUORTN:	JFCL		;ADDITIONAL USERS UUO ROUTINE
+   487	030067	255 00 0 00 000000 	$UORTX:	JFCL		;ADDITIONAL UUO LINKAGE
+   488	030070	255 00 0 00 000000 	$UUOER:	JFCL		;INITED AS (JRST $UOERX)
+   489	030071	255 00 0 00 000000 	$ITRHL:	JFCL		;ADDITIONAL INTERRUPT LINKAGE
+   490	030072	255 00 0 00 000000 	$ITRX1:	JFCL		; "
+   491	030073	255 00 0 00 000000 	$USRHL:	JFCL		; "
+   492	030074	255 00 0 00 000000 	$RSRTX:	JFCL		;ADDITIONAL POWER FAIL LINKAGE
+   493	030075	255 00 0 00 000000 	$RSRTY:	JFCL		; "
+   494	030076	255 00 0 00 000000 	RESRT1:	JFCL		; INITED AS (JRST RESRTX)
+   495	030077	255 00 0 00 000000 	RESRT2:	JFCL		; "
+   496	030100	255 00 0 00 000000 	$PARER:	JFCL		;ADDITIONAL PARITY ERROR LINKAGE
+   497	030101	255 00 0 00 000000 	ERMORE:	JFCL		;ADDITIONAL ERROR HANDLER LINKAGE
+   498	030102	254 04 0 00 030102 		HALT	.	;IMPROPER TRANSFER HALT
+   499
+   500	030103	000000	000000		$PSHER:	0		;INITED AS (JRST PSHERR)
+   501	030104	000000	000000		ITRCH1:	0		;PC & FLAGS OF CURRENT INTERRUPT
+   502	030105	000000	000000			0		;INITED AS (JRST $ITRC1)
+   503
+   504					S^;*********************************************************************^
+   505					;*PROCESSOR CONTROL STORAGE
+   506					S^;*********************************************************************^
+   507
+   508	030106	000000	000000		$ACC0:	0		;INTERRUPT SAVED AC0
+   509	030107	000000	000000		$SVPI:	0		;INTERRUPT SAVED PI
+   510	030110	000000	000000		$SVAPR:	0		;INTERRUPT SAVED APR
+   511	030111	000000	000000		$SVPAG:	0		;INTERRUPT SAVED PAG (DATAI)
+   512	030112	000000	000000		$SPAG1:	0		;INTERRUPT SAVED PAG (CONI)
+   513
+   514	030113	000000	000000		$SVUUO:	0		;CURRENT USERS UUO
+   515	030114	000000	000000		$SVUPC:	0		;PC OF CURRENT USERS UUO
+   516
+   517	030115	000000	000000		REPTU:	0		;REPEAT UUO ITERATIONS
+   518	030116	000000	000000		SCOPE:	0		;ERROR HANDLER SCOPE LOOP FLAG
+   519	030117	000000	000000		%CORFLG:0		; " CORRECT FLAG
+   520	030120	000000	000000		%COREC:	0		; " CORRECT DATA
+   521	030121	000000	000000		%ACTFL:	0		; " ACTUAL FLAG
+   522	030122	000000	000000		%ACTUL:	0		; " ACTUAL DATA
+   523	030123	000000	000000		%DISCR:	0		; " DISCREPENCY DATA
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 4
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0021
+
+   524					S^;*********************************************************************^
+   525					;*UUO DISPATCH TABLE
+   526					S^;*********************************************************************^
+   527						XLIST
+   528						LIST
+   529	030124	030070	030070		UUODIS:	LUUO1,,$UUOER
+   530	030125	030070	030070			LUUO3,,LUUO2
+   531	030126	030070	030070			LUUO5,,LUUO4
+   532	030127	030070	030070			LUUO7,,LUUO6
+   533	030130	030070	030070			LUUO11,,LUUO10
+   534	030131	030070	030070			LUUO13,,LUUO12
+   535	030132	030070	030070			LUUO15,,LUUO14
+   536	030133	030070	030070			LUUO17,,LUUO16
+   537	030134	030070	030070			LUUO21,,LUUO20
+   538	030135	030070	030070			LUUO23,,LUUO22
+   539	030136	030070	030070			LUUO25,,LUUO24
+   540	030137	030070	030070			LUUO27,,LUUO26
+   541	030140	030070	030070			LUUO31,,LUUO30
+   542	030141	030070	030070			LUUO33,,LUUO32
+   543
+   544					S^;*********************************************************************^
+   545					;*MEMORY MANAGMENT STORAGE
+   546					S^;*********************************************************************^
+   547
+   548	030142	000000	000000		DF22F:	0		;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT
+   549	030143	000000	000000		MAPNEW:	0		;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING
+   550	030144	000000	000000		MEMTOT:	0		;TOTAL MEMORY SIZE IN K (1024.)
+   551	030145	000000	000000		MEMLOW:	0		;LOWEST USABLE MEMORY
+   552	030146				MEMSIZ:	BLOCK ^D41	;MEMORY SEGMENT POINTER TABLE
+   553
+   554					S^;*********************************************************************^
+   555					;*PRINT CONTROL STORAGE
+   556					S^;*********************************************************************^
+   557
+   558	030217	000000	000000		PNTFLG:	0		;PRINT FLAG, -1 WHILE IN PRINT ROUTINE
+   559	030220	000000	000000		PNTENB:	0		;PRINT ENABLE
+   560	030221	000000	000000		PDISF:	0		;PRINT DISABLED FLAG
+   561	030222	000000	000000		PNTINH:	0		;INHIBIT PRINT INPUT CHECKS
+   562	030223	000000	000000		PNTSPC:	0		;PRINT SPACE CONTROL
+   563	030224	000000	000000		OPTIME:	0		;TYPE-IN WAIT TIME
+   564	030225	000000	000000		$TWCNT:	0		;TIME WAITED
+   565	030226	000000	000000		$DVOFF:	0		;LOGICAL DEVICE INITED FLAG
+   566	030227	000000	000000		TTYFIL:	0		;TTY EXEC FILLERS FLAG
+   567	030230	000000	000000		TTYSPD:	0		;TTY EXEC BAUD RATE
+   568	030231	000000	000000		$TTCHR:	0		;ACTUAL TYPED IN CHAR
+   569	030232	000000	000000		$CHRIN:	0		;UPPER CASED & PARITY STRIPPED CHAR
+   570	030233	000000	000000		$TYPNB:	0		;TYPED IN NUMBER
+   571	030234	000000	000000		$CRLF:	0		;FREE CR/LF FLAG
+   572	030235	000000	000000		$TABF:	0		;TAB CONVERSION FLAG
+   573	030236	000000	000000		$FFF:	0		;FORM FEED CONVERSION FLAG
+   574	030237	000000	000000		$VTF:	0		;VERTICAL TAB CONVERSION FLAG
+   575	030240	000000	000000		USRLFF:	0		;USER LF FILLERS
+   576	030241	000000	000000		USRCRF:	0		;USER CR FILLERS
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 5
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0022
+
+   577					S^;*********************************************************************^
+   578					;*THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED
+   579					;*TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS:
+   580					;*	MOVEI	NAME
+   581					;*	PNTA		;OR PNTAF
+   582					S^;*********************************************************************^
+   583
+   584	030242				CRLF:	ASCII/
+   585	030242	015 012 000 000 000 	/
+   586	030243				CRLF2:	ASCII/
+   587
+   588	030243	015 012 015 012 000 	/
+   589	030244	054 000 000 000 000 	COMMA:	ASCII/,/
+   590	030245	056 000 000 000 000 	PERIOD:	ASCII/./
+   591	030246	040 000 000 000 000 	SPACE:	ASCII/ /
+   592	030247	011 000 000 000 000 	TAB:	ASCII/	/
+   593	030250				MINUS:
+   594	030250	055 000 000 000 000 	HYPEN:	ASCII/-/
+   595	030251	053 000 000 000 000 	PLUS:	ASCII/+/
+   596	030252	052 000 000 000 000 	AST:	ASCII/*/
+   597	030253	100 000 000 000 000 	ATSIN:	ASCII/@/
+   598	030254	050 000 000 000 000 	LFP:	ASCII/(/
+   599	030255	051 000 000 000 000 	RTP:	ASCII/)/
+   600	030256	007 0000000000 		BELL:	BYTE (7) 007
+   601	030257	077 000 000 000 000 	QUEST:	ASCII/?/
+   602	030260	057 000 000 000 000 	SLASH:	ASCII!/!
+   603	030261	044 000 000 000 000 	DOLLAR:	ASCII/$/
+   604	030262	000000	000012		RADIX:	^D10			;DECIMAL PRINT RADIX
+   605	030263	000000	000040		RADLSP:	40			;DECIMAL PRINT LEADING CHAR
+   606	030264	000000	000012		RADLSC:	^D10			;DECIMAL PRINT LEADING CHAR COUNT
+   607
+   608					S^;*********************************************************************^
+   609					;*USER MODE OUTPUT FILE INFORMATION
+   610					S^;*********************************************************************^
+   611
+   612	030265				$OBUF:	BLOCK	3		;LOGICAL FILE OUTPUT BUFFER HEADER
+   613	030270	60 62 51 56 64 00 	$OUTNM:	SIXBIT	/PRINT/		;FILE NAME
+   614	030271	60 56 64 00 00 00 	$OUTEX:	SIXBIT	/PNT/		;FILE NAME EXTENSION
+   615	030272					BLOCK	2
+   616
+   617					S^;*********************************************************************^
+   618					;*DISK UPDATE MODE FILE INFORMATION
+   619					S^;*********************************************************************^
+   620
+   621	030274				$IBUF:	BLOCK	3
+   622	030277	60 62 51 56 64 00 	$INNM:	SIXBIT	/PRINT/
+   623	030300	60 56 64 00 00 00 	$INEXT:	SIXBIT	/PNT/
+   624	030301					BLOCK	2
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 6
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0023
+
+   625					S^;*********************************************************************^
+   626					;*PUSHDOWN LIST CONTROL INFORMATION
+   627					S^;*********************************************************************^
+   628
+   629	030303	777577	030303		PLIST:	PLIST-PLISTE,,PLIST
+   630	030304				PLISTS:	BLOCK	200
+   631	030504	000000	000000		PLISTE:	0		;END OF PUSHDOWN LIST
+   632
+   633					S^;*********************************************************************^
+   634					;*POWER LINE CLOCK FREQUENCY FLAG
+   635					S^;*********************************************************************^
+   636
+   637	030505	000000	000000		CYCL60:	0	;0 = 60, -1 = 50 CYCLE
+   638
+   639					S^;*********************************************************************^
+   640					;*KL10 CACHE CONTROL FLAGS
+   641					S^;*********************************************************************^
+   642
+   643	030506	000000	000000		CSHFLG:	0	;ALLOW CACHE IF 0
+   644	030507	000000	000000		CSHMEM:	0	;CACHE MEMORY SEGMENTS IF 0
+   645
+   646					S^;*********************************************************************^
+   647					;*NUMBER INPUT DIGIT FLAG
+   648					S^;*********************************************************************^
+   649
+   650	030510	000000	000000		TTNBRF:	0	;-1 IF ANY DIGIT TYPED
+   651
+   652					S^;*********************************************************************^
+   653					;*KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION
+   654					S^;*********************************************************************^
+   655
+   656	030511	000000	000000		PVPAGI:	0	;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION
+   657
+   658					S^;*********************************************************************^
+   659					;*ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS
+   660					S^;*********************************************************************^
+   661
+   662	030512	000000	000000		%ERHI1:	0	;IF NON-ZERO, XCT'D AT START OF %ERUUO
+   663	030513	000000	000000		%ERHI2:	0	;IF NON-ZERO, XCT'D AT END OF %ERUUO
+   664	030514	000000	000000		%ERHI3:	0	;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO
+   665
+   666					S^;*********************************************************************^
+   667					;*SPECIAL USERS UUO INTERCEPT INSTRUCTION
+   668					S^;*********************************************************************^
+   669
+   670	030515	000000	000000		$$UUO:	0	;IF NON-ZERO, XCT'D AT START OF $UORTN
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 7
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0024
+
+   671					S^;*********************************************************************^
+   672					;*KL10 PROCESSOR TYPE FLAG, 0=P0, 1=BBD NEW, 2=BBD OLD
+   673					S^;*********************************************************************^
+   674
+   675	030516	000000	000000		KLTYP:	0
+   676
+   677					S^;*********************************************************************^
+   678					;*SPECIAL USERS MUUO INTERCEPT INSTRUCTION
+   679					S^;*********************************************************************^
+   680
+   681	030517	000000	000000		$$MUUO:	0	;IF NON-ZERO, XCT'D AT START OF MUUOER
+   682
+   683					S^;*********************************************************************^
+   684					;*SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION
+   685					S^;*********************************************************************^
+   686
+   687	030520	000000	000000		$$OUTER:0	;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR
+   688
+   689					S^;*********************************************************************^
+   690					;*"SWITCH" CALL USAGE CONTROL
+   691					S^;*********************************************************************^
+   692
+   693	030521	000000	000000		$$TOGGLE:0	;IF NON-ZERO, USE C(CONSW) FOR SWITCHES
+   694
+   695					S^;*********************************************************************^
+   696					;*SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS
+   697					S^;*********************************************************************^
+   698
+   699	030522	000000	000000		$$TAX1:	0	;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL
+   700	030523	000000	000000		$$TAX2:	0	;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL
+   701
+   702					S^;*********************************************************************^
+   703					;*SPECIAL FUTURE EXPANSION ROOM
+   704					;*IF ANY FIXED AREA TAGS ARE ADDED, REDUCE THE SIZE OF
+   705					;*THIS BLOCK STATEMENT ACCORDINGLY.  THIS MUST BE DONE
+   706					;*SO THAT PREVIOUS FIXED ASSIGNMENTS DO NOT CHANGE.
+   707					S^;*********************************************************************^
+   708
+   709	030524					BLOCK	53	;HOPEFULLY THIS IS ENOUGH FOREVER
+   710
+   711					S^;*********************************************************************^
+   712					;*END OF FIXED STORAGE
+   713					S^;*********************************************************************^
+   714
+   715			030577			$ENDFX=&<777700>-1
+   716	030577					LOC	$ENDFX
+   717	030577	000000	000000		ENDFIX:	0		;END OF FIXED STORAGE
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 1
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0025
+
+   718					SUBTTL	*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76
+   719
+   720					;NEW DEFINITIONS USED BY THE KL10 SUBROUTINE PACKAGE
+   721
+   722			000000		AC0=	0
+   723			030000		DIAGNOS=30000		;PDP-10 DIAGNOSTIC START ADDRESS
+   724			010000		DDT=	10000		;PDP-10 DDT START ADDRESS
+   725			020000		DIAMON=	20000		;PDP-10 DIAMON LOADER START ADDRESS
+   726			020000		DONG11=	1B22		;11 DOORBELL (FROM THE 10)
+   727
+   728					;DTE20 DEVICE CODES
+   729
+   730			000200		DTE==	200		;DTE0
+   731			000204		DTE0==	204
+   732			000204		DTE1==	204
+   733			000210		DTE2==	210
+   734			000214		DTE3==	214
+   735
+   736					;KL10 EPT COMMUNICATION AREA
+   737
+   738			000440		$STD=	440		;PDP-10 DIAGNOSTIC START ADDRESS
+   739			000441		$DDT=	441		;PDP-10 DDT START ADDRESS
+   740			000442		$STL=	442		;PDP-10 LOADER START ADDRESS
+   741			000443		$STM=	443		;PDP-10 MONITOR START ADDRESS
+   742
+   743			000444		$DTFLG=	444		;DTE20 OPERATION COMPLETE FLAG
+   744			000445		$DTCLK=	445		;DTE20 CLOCK INTERRUPT FLAG
+   745			000446		$DTCI=	446		;DTE20 CLOCK INTERRUPT INSTRUCTION
+   746			000447		$DTT11=	447		;DTE20 10 TO 11 ARGUMENT
+   747			000450		$DTF11=	450		;DTE20 11 TO 10 ARGUMENT
+   748			000451		$DTCMD=	451		;DTE20 TO 11 COMMAND WORD
+   749			000452		$DTSEQ=	452		;DTE20 OPERATION SEQUENCE NUMBER
+   750			000453		$DTOPR=	453		;DTE20 OPERATIONAL DTE #
+   751			000454		$DTCHR=	454		;DTE20 LAST TYPED CHARACTER
+   752			000455		$DTMTD=	455		;DTE20 MONITOR TTY OUTPUT COMPLETE FLAG
+   753			000456		$DTMTI=	456		;DTE20 MONITOR TTY INPUT FLAG
+   754
+   755			000457		$DTSWR=	457		;DTE20 CONSOLE SWITCH REGISTER
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 2
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0026
+
+   756					;SPECIAL "FIXED" REASSIGNMENTS
+   757
+   758			030600			$$LOC=.			;SAVE CURRENT LOCATION
+   759
+   760	030000					LOC	30000
+   761	030000	254 00 0 00 030600 	$$BEGIN:JRST	$$START		;SETUP SPECIAL START
+   762	030001	254 00 0 00 030600 		JRST	$$START		;"DIAMON" CHAIN START ADDRESS
+   763
+   764	000440					LOC	440
+   765	000440	254 00 0 00 030000 	$STD:	JRST	BEGIN		;SETUP FOR "STD"
+   766	000443					LOC	443
+   767	000443	254 00 0 00 030636 	$STM:	JRST	$SPEC		;SIMPLE RUN CONTROL
+   768
+   769	030057					LOC	30057
+   770	030057	254 00 0 00 030641 	$BEGEND:JRST	$SPBEND		;SETUP SPECIAL "BEGEND"
+   771
+   772					;SPECIAL MUUO, TRAP & PAGE FAIL SETUP
+   773
+   774	000420					LOC	420
+   775	000420	254 04 0 00 000420 	$$420:	HALT	.		;KI10 PAGE FAIL
+   776	000421	255 00 0 00 000000 	$$421:	JFCL			;OVERFLOW
+   777	000422	254 04 0 00 000422 	$$422:	HALT	.		;PUSHDOWN OVERFLOW
+   778	000423	254 04 0 00 000423 	$$423:	HALT	.		;TRAP 3
+   779	000424	000000	000000		$$424:	0			;MMUO
+   780	000425	000000	000000		$$425:	0			;MMUO PC
+   781	000426	000000	000000		$$426:	0			;KI10-PAGE FAIL, KL10-PROCESS CONTEXT
+   782	000427	254 04 0 00 000427 	$$427:	HALT	.
+   783	000430	000000	000427		$$430:	427			;MMUO NEW PC'S
+   784	000431	000000	000427		$$431:	427
+   785	000432	000000	000427		$$432:	427
+   786	000433	000000	000427		$$433:	427
+   787	000434	000000	000427		$$434:	427
+   788	000435	000000	000427		$$435:	427
+   789	000436	000000	000427		$$436:	427
+   790	000437	000000	000427		$$437:	427
+   791
+   792	000500					LOC	500
+   793	000500	000000	000000		$$500:	0			;KL10 PAGE FAIL WORD
+   794	000501	000000	000000		$$501:	0			;KL10 PAGE FAIL PC
+   795	000502	000000	000503		$$502:	503			;KL10 PAGE FAIL NEW PC
+   796	000503	254 04 0 00 000503 	$$503:	HALT	.
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 3
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0027
+
+   797	030600					LOC	$$LOC		;RESET CURRENT LOCATION
+   798
+   799					;SPECIAL STARTUP SEQUENCE
+   800
+   801	030600	402 00 0 00 030037 	$$START:SETZM	USER
+   802	030601	265 00 0 00 030602 		JSP	0,.+1		;IN USER MODE ?
+   803	030602	603 00 0 00 010000 		TLNE	0,USERF
+   804	030603	476 00 0 00 030037 		SETOM	USER		;YES, SET CONTROL WORD
+   805	030604	336 00 0 00 030042 		SKIPN	MONFLG		;SPECIAL USER MODE ?
+   806	030605	402 00 0 00 030037 		SETZM	USER		;YES, RUN AS EXEC
+   807	030606	332 00 0 00 030037 		SKIPE	USER
+   808	030607	254 00 0 00 030726 		JRST	START		;USER MODE, DON'T NEED CPU TYPE
+   809
+   810	030610	336 00 0 00 030044 	$STKIL:	SKIPN	MONTEN		;LOADED BY "DIAMON" ?
+   811	030611	476 00 0 00 030024 		SETOM	ITRCNT		;NO, RUN FOREVER
+   812	030612	402 00 0 00 030516 		SETZM	KLTYP
+   813	030613	402 00 0 00 030041 		SETZM	KLFLG		;ASSUME KI10
+   814	030614	200 01 0 00 036415 		MOVE	1,[1,,1]
+   815	030615	251 01 0 00 000001 		BLT	1,1		;HOPE THIS WORKS
+   816	030616	316 01 0 00 036415 		CAMN	1,[1,,1]	;IF AC NE 1,,1 AFTER BLT, KL10
+   817	030617	254 00 0 00 030726 		JRST	START		;KI10, NO ADDITIONAL SETUP
+   818
+   819	030620	7 000 20 0 00 010040 	$STKL:	CONO	APR,10040	;SET BBD NOT BIT
+   820	030621	7 000 24 0 00 000000 		CONI	APR,0
+   821	030622	7 000 20 0 00 020040 		CONO	APR,20040	;CLEAR BBD NOT BIT
+   822	030623	606 00 0 00 000040 		TRNN	0,40		;IF SET, KL10
+   823	030624	350 00 0 00 030516 		AOS	KLTYP		;IF NOT, BBD
+   824	030625	402 00 0 00 000444 		SETZM	$DTFLG
+   825	030626	402 00 0 00 000445 		SETZM	$DTCLK
+   826	030627	200 00 0 00 000453 		MOVE	$DTOPR		;GET DTE #
+   827	030630	436 00 0 00 030670 		ORM	$$DTE0		;INSERT IN DTE I/O INSTS
+   828	030631	436 00 0 00 030672 		ORM	$$DTE1
+   829	030632	436 00 0 00 030704 		ORM	$$DTE2
+   830	030633	436 00 0 00 030706 		ORM	$$DTE3
+   831	030634	476 00 0 00 030041 		SETOM	KLFLG		;SET KL10 CONTROL FLAG
+   832	030635	254 00 0 00 030726 		JRST	START
+   833
+   834	030636	200 00 0 00 036416 	$SPEC:	MOVE	[JRST STARTA]	;SIMPLE RUN CONTROL
+   835	030637	202 00 0 00 030643 		MOVEM	$SPB1
+   836	030640	254 00 0 00 030726 		JRST	START
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 4
+SPCCPU	KLM	26-FEB-76 05:50		*SPCCPU* SPECIAL BASIC CPU PROCESSOR CONTROL, 26-FEB-76                            SEQ 0028
+
+   837					;SPECIAL "BEGEND" ROUTINE
+   838
+   839	030641	350 00 0 00 030047 	$SPBEND:AOS	PASCNT		;INCREMENT PASS COUNT
+   840	030642	370 00 0 00 030024 		SOS	ITRCNT		;DECREMENT ITERATION COUNT
+   841	030643	336 00 0 00 030037 	$SPB1:	SKIPN	USER
+   842	030644	254 00 0 00 030652 		JRST	$SPBEX		;EXEC MODE
+   843
+   844	030645	332 00 0 00 030024 	$SPBUS:	SKIPE	ITRCNT		;USER MODE, COMPLETED ?
+   845	030646	254 00 0 00 030737 		JRST	STARTA		;NO, KEEP RUNNING
+   846	030647	336 00 0 00 030044 		SKIPN	MONTEN		;DONE, LOADED BY "DIAMON" ?
+   847	030650	047 00 0 00 000012 		EXIT			;NO, RETURN TO MONITOR
+   848	030651	254 00 1 00 030012 		JRST	@RETURN		;YES, RETURN TO "DIAMON"
+   849
+   850	030652	332 00 0 00 030041 	$SPBEX:	SKIPE	KLFLG
+   851	030653	254 00 0 00 030660 		JRST	$SPBKL		;KL10 & EXEC
+   852	030654	7 004 14 0 00 030024 		DATAO	PI,ITRCNT	;KI10 & EXEC, DISPLAY ITER COUNT
+   853	030655	332 00 0 00 030024 		SKIPE	ITRCNT
+   854	030656	254 00 0 00 030737 		JRST	STARTA		;NOT COMPLETED YET
+   855	030657	254 00 1 00 030012 		JRST	@RETURN		;DONE
+   856
+   857	030660	336 00 0 00 030024 	$SPBKL:	SKIPN	ITRCNT
+   858	030661	254 00 0 00 030676 		JRST	$SPKLD		;KL10, EXEC & COMPLETED
+   859
+   860	030662	335 00 0 00 030043 		SKIPGE	MONCTL
+   861	030663	254 00 0 00 030737 		JRST	STARTA		;"DIAMON" CONTROL
+   862	030664	201 00 0 00 000404 		MOVEI	0,404		;NOTIFY PDP-11 OF END OF PASS
+   863	030665	202 00 0 00 000451 		MOVEM	0,$DTCMD
+   864	030666	402 00 0 00 000444 		SETZM	$DTFLG
+   865	030667	336 00 0 00 030516 		SKIPN	KLTYP
+   866	030670	7 200 20 0 00 020000 	$$DTE0:	CONO	DTE,DONG11
+   867	030671	332 00 0 00 030516 		SKIPE	KLTYP
+   868	030672	7 200 20 0 00 010000 	$$DTE1:	CONO	DTE,10000
+   869	030673	336 00 0 00 000444 		SKIPN	$DTFLG		;WAIT TILL 11 RESPONDS
+   870	030674	254 00 0 00 030673 		JRST	.-1
+   871	030675	254 00 0 00 030737 		JRST	STARTA		;KEEP RUNNING
+   872
+   873					;SPECIAL KL10 COMPLETED ROUTINE
+   874
+   875	030676	332 00 0 00 030044 	$SPKLD:	SKIPE	MONTEN
+   876	030677	254 00 1 00 030012 		JRST	@RETURN		;LOADED BY "DIAMON"
+   877
+   878	030700	201 00 0 00 000403 		MOVEI	0,403		;NOTIFY PDP-11 OF COMPLETION
+   879	030701	202 00 0 00 000451 		MOVEM	0,$DTCMD
+   880	030702	402 00 0 00 000444 		SETZM	$DTFLG
+   881	030703	336 00 0 00 030516 		SKIPN	KLTYP
+   882	030704	7 200 20 0 00 020000 	$$DTE2:	CONO	DTE,DONG11
+   883	030705	332 00 0 00 030516 		SKIPE	KLTYP
+   884	030706	7 200 20 0 00 010000 	$$DTE3:	CONO	DTE,10000
+   885	030707	336 00 0 00 000444 		SKIPN	$DTFLG		;SHOULD NEVER HAPPEN
+   886	030710	254 00 0 00 030707 		JRST	.-1		;11 NEVER RETURNS ON END OF PROGRAM
+   887	030711	254 04 0 00 030000 		HALT	BEGIN		;IF IT DOES, HALT.
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0029
+
+   888					SUBTTL	DIAGNOSTIC SECTION
+   889
+   890						LALL
+   891
+   892	030712				PGMNAM:	ASCIZ	/
+   893	030712	015 012 120 104 120 	PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC # 8 [DAKAH]
+   894	030713	055 061 060 040 113
+   895	030714	101 061 060 040 102
+   896	030715	101 123 111 103 040
+   897	030716	111 116 123 124 122
+   898	030717	125 103 124 111 117
+   899	030720	116 040 104 111 101
+   900	030721	107 116 117 123 124
+   901	030722	111 103 040 043 040
+   902	030723	070 040 133 104 101
+   903	030724	113 101 110 135 015
+   904	030725	012 000 000 000 000 	/
+   905	030726	402 00 0 00 030037 	START:	SETZM	USER#		;CLEAR USER CONTROL WORD
+   906	030727	265 00 0 00 030730 		JSP	0,.+1		;GET FLAGS
+   907	030730	603 00 0 00 010000 		TLNE	USERF		;IN USER MODE?
+   908	030731	476 00 0 00 030037 		SETOM	USER		;YES, SET USER CONTROL WORD
+   909	030732	336 00 0 00 030037 		SKIPN	USER
+   910	030733	254 00 0 00 030737 		JRST	STARTA
+   911	030734	051 03 0 00 030712 		TTCALL	3,PGMNAM	;MENTION OUR NAME
+   912						OUTSTR	[ASCIZ	/
+   913					?EXEC MODE DIAGNOSTIC ONLY
+   914	030735	051 03 0 00 036417 	/]				;TELL USER
+   915	030736	254 04 0 00 030736 		HALT	.		;AND DIE...
+   916
+   917	030737				STARTA:
+   918	030737	402 00 0 00 036671 	ST:	SETZM	MATPOF#		;CLR MA TRAP OFFSET FLAG.
+   919	030740	332 01 0 00 035772 	MOD:	SKIPE 1,SAV40		;RESTORE THESE LOC IF PROG
+   920	030741	202 01 0 00 010040 		MOVEM 1,10040			;IF PROG MODIFIED
+   921	030742	332 01 0 00 035773 		SKIPE 1,SAV41
+   922	030743	202 01 0 00 010041 		MOVEM 1,10041
+   923	030744	332 01 0 00 035774 		SKIPE 1,SAV42
+   924	030745	202 01 0 00 010042 		MOVEM 1,10042
+   925	030746	332 01 0 00 035775 		SKIPE 1,SAV43
+   926	030747	202 01 0 00 010043 		MOVEM 1,10043
+   927	030750	7 000 24 0 00 036667 		CONI CPSAV#
+   928	030751	7 004 24 0 00 036673 		CONI PI,PISAV#
+   929
+   930	030752	7 000 04 0 00 000000 		DATAI			;DO WE HAVE FP
+   931	030753	335 00 0 00 030043 		SKIPGE	MONCTL		;MONITR CONTROL ?
+   932	030754	200 00 0 00 030043 		MOVE	0,MONCTL	;YES
+   933	030755	464 00 0 00 036426 		ORCM [1B35]
+   934	030756	452 00 0 00 036670 		SETCAM FPTRAP#
+   935	030757	476 00 0 00 036672 		SETOM PI7SYS#
+   936
+   937	030760	7 000 04 0 00 000000 		DATAI			;IS THIS MACH WITH USER
+   938	030761	335 00 0 00 030043 		SKIPGE	MONCTL		;MONITR CONTROL ?
+   939	030762	200 00 0 00 030043 		MOVE	0,MONCTL	;YES
+   940	030763	464 00 0 00 036427 		ORCM [1B34]
+   941	030764	452 00 0 00 036674 		SETCAM USMOD#
+   942
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 1-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0030
+
+   943	030765	332 00 0 00 036671 		SKIPE	MATPOF#		;START AT 3776?
+   944	030766	254 00 0 00 036352 		JRST	MOD200		;YES. GO CK MA 29 SET.
+   945
+   946					;MACH/OPTION DEPENDENT
+   947					;TEST UU0
+   948
+   949						RETURN MOD1		^;TEST UUO FOR NOT GOING TO 60
+   950
+   951	030767	200 02 0 00 036430 		MOVE	2,[JSP 2,MOD1]
+   952	030770	202 02 0 00 000041 		MOVEM	2,41
+   953	030771	477 02 0 00 000040 		SETOB	2,40
+   954
+   955	030772	200 01 0 00 036431 		MOVE	1,[JRST .+4]	;IF THIS ROUT STOPS THE
+   956	030773	200 02 0 00 036432 		MOVE	2,[JSP MOD1+1]	;TRAP WAS TO 60. IF UU0 HANG
+   957	030774	202 02 0 00 000061 		MOVEM	2,61		;THE MACH, CHECK XCTF0 AND
+   958	030775	000000	000000			0			;UU0F0 FLAGS FOR NOT SETING
+   959	030776	334 00 0 00 000000 	MOD1:	SKIPA			;CHECK MA 31 SET
+   960						STOP			^;IR 1XX GATE FAIL
+   961
+   962	030777	254 04 0 00 031000 		HALT	.+1
+   963	031000	320 00 0 00 031001 		JUMP	.+1
+   964
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0031
+
+   965
+   966	031001				MOD2:	RETURN	MOD3		^;TEST 40 TO MA LOGIC (UU0)
+   967
+   968	031001	200 02 0 00 036433 		MOVE	2,[JSP 2,MOD3]
+   969	031002	202 02 0 00 000041 		MOVEM	2,41
+   970	031003	477 02 0 00 000040 		SETOB	2,40
+   971
+   972	031004	200 01 0 00 036434 		MOVE	1,[JRST .+3]	;IF 40 WAS NOT (J) TO MA
+   973	031005	000000	000000			0			;THIS UU0 WILL STORE IN LOC 0
+   974	031006	334 00 0 00 000000 	MOD3:	SKIPA			;CHECK MA-30 SET
+   975						STOP			^;ON THE MA1 PRINT
+   976
+   977	031007	254 04 0 00 031010 		HALT	.+1
+   978	031010	320 00 0 00 031011 		JUMP	.+1
+   979
+   980
+   981	031011				MOD4:	RETURN	MOD5		^;IF THE MA FROM AR
+   982
+   983	031011	200 02 0 00 036435 		MOVE	2,[JSP 2,MOD5]
+   984	031012	202 02 0 00 000041 		MOVEM	2,41
+   985	031013	477 02 0 00 000040 		SETOB	2,40
+   986
+   987	031014	200 02 0 00 036436 		MOVE	2,[JSP MOD5+1]	;INHIBIT (AT6) FAILED THE
+   988	031015	202 00 0 00 000061 		MOVEM	61		;UU0 WOULD STORE IN E ORED
+   989	031016	000000	000020			20			;WITH 40 RATHER THAN C(40)
+   990	031017	334 00 0 00 000000 	MOD5:	SKIPA			;MA FM AR(J) CAME UP  CHECK
+   991						STOP			^;AND OF AT6-IR UU0 ON MA1 PRINT
+   992
+   993	031020	254 04 0 00 031021 		HALT	.+1
+   994	031021	320 00 0 00 031022 		JUMP	.+1
+   995
+   996
+   997	031022				MOD6:	RETURN	MOD7		^;TEST UU0 ABILITY TO STORE
+   998
+   999	031022	200 02 0 00 036437 		MOVE	2,[JSP 2,MOD7]
+  1000	031023	202 02 0 00 000041 		MOVEM	2,41
+  1001	031024	477 02 0 00 000040 		SETOB	2,40
+  1002
+  1003	031025	000000	000000			0			;IF C(40) UNCHANGED SCE FAIL
+  1004	031026	316 02 0 00 000040 	MOD7:	CAMN	2,40		;CK IR UU0 INPUT TO SCE
+  1005						STOP			^;ON S2 PRINT
+  1006
+  1007	031027	254 04 0 00 031030 		HALT	.+1
+  1008	031030	320 00 0 00 031031 		JUMP	.+1
+  1009
+  1010
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 3
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0032
+
+  1011	031031				MOD8:	RETURN	MOD9		^;TEST SACINH FOR UU0
+  1012
+  1013	031031	200 02 0 00 036440 		MOVE	2,[JSP 2,MOD9]
+  1014	031032	202 02 0 00 000041 		MOVEM	2,41
+  1015	031033	477 02 0 00 000040 		SETOB	2,40
+  1016
+  1017	031034	474 00 0 00 000000 		SETO			;IF FAIL WILL MODIFY AC
+  1018	031035	000000	000000			0			;SACINH THE IR UU0 INPUT
+  1019	031036	312 00 0 00 036441 	MOD9:	CAME	[-1]		;ON S2 PRINT FAILED
+  1020						STOP^
+  1021	031037	254 04 0 00 031040 		HALT	.+1
+  1022	031040	320 00 0 00 031041 		JUMP	.+1
+  1023									^
+  1024
+  1025	031041				MOD10:	RETURN	MOD11		^;TEST UU0 FACINH, IF THE
+  1026
+  1027	031041	200 02 0 00 036442 		MOVE	2,[JSP 2,MOD11]
+  1028	031042	202 02 0 00 000041 		MOVEM	2,41
+  1029	031043	477 02 0 00 000040 		SETOB	2,40
+  1030
+  1031	031044	201 00 0 00 777777 		MOVEI	-1		;UU0 FETCHES A AC THE
+  1032	031045	000000	000000			0			;AC WILL BE STORED
+  1033	031046	316 00 0 00 000040 	MOD11:	CAMN	40		;FAC INH THE IR UU0 INPUT
+  1034						STOP			^;ON F2 PRINT FAIL
+  1035
+  1036	031047	254 04 0 00 031050 		HALT	.+1
+  1037	031050	320 00 0 00 031051 		JUMP	.+1
+  1038
+  1039
+  1040	031051				MOD12:	RETURN	MOD13		^;TEST UU0 IR TO ARLT
+  1041
+  1042	031051	200 02 0 00 036443 		MOVE	2,[JSP 2,MOD13]
+  1043	031052	202 02 0 00 000041 		MOVEM	2,41
+  1044	031053	477 02 0 00 000040 		SETOB	2,40
+  1045
+  1046	031054	077740	000000			XWD	077740,0	;THE AND OF (ET0,IR UU0)
+  1047	031055	336 00 0 00 000040 	MOD13:	SKIPN	40		;ON ARC-2 PRINT FAILED
+  1048						STOP^
+  1049	031056	254 04 0 00 031057 		HALT	.+1
+  1050	031057	320 00 0 00 031060 		JUMP	.+1
+  1051									^
+  1052
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 4
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0033
+
+  1053	031060				MOD14:	RETURN	MOD15		^;UU0 FAIL
+  1054
+  1055	031060	200 02 0 00 036444 		MOVE	2,[JSP 2,MOD15]
+  1056	031061	202 02 0 00 000041 		MOVEM	2,41
+  1057	031062	477 02 0 00 000040 		SETOB	2,40
+  1058
+  1059	031063	000740	000000			XWD	000740,0		;CHECK ARLT FM FLAGS (J) B
+  1060	031064	336 00 0 00 000040 	MOD15:	SKIPN	40		;THE PA ON ARC-2 PRINT
+  1061						STOP^
+  1062	031065	254 04 0 00 031066 		HALT	.+1
+  1063	031066	320 00 0 00 031067 		JUMP	.+1
+  1064									^
+  1065
+  1066	031067				MOD16:	RETURN	MOD17		^;UU0 FAIL
+  1067
+  1068	031067	200 02 0 00 036445 		MOVE	2,[JSP 2,MOD17]
+  1069	031070	202 02 0 00 000041 		MOVEM	2,41
+  1070	031071	477 02 0 00 000040 		SETOB	2,40
+  1071
+  1072	031072	077000	000000			XWD	077000,0		;CHECK ARLT FM FLAGS (J) A
+  1073	031073	336 00 0 00 000040 	MOD17:	SKIPN	40		;THE PA ON ARC-2 PRINT
+  1074						STOP^
+  1075	031074	254 04 0 00 031075 		HALT	.+1
+  1076	031075	320 00 0 00 031076 		JUMP	.+1
+  1077									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 5
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0034
+
+  1078
+  1079			000040			ZZ=40
+  1080					MOD18:	REPEAT	^D10,
+  1081					<	RETURN .+4		;TEST IRLT TO AR
+  1082						XWD	ZZ,0
+  1083						SKIPN	40
+  1084						STOP
+  1085						ZZ=ZZ+ZZ
+  1086					>
+  1087						RETURN .+4		^
+  1088	031076	200 02 0 00 036446 		MOVE	2,[JSP 2,.+4]
+  1089	031077	202 02 0 00 000041 		MOVEM	2,41
+  1090	031100	477 02 0 00 000040 		SETOB	2,40
+  1091									^;TEST IRLT TO AR
+  1092	031101	000040	000000			XWD	ZZ,0
+  1093	031102	336 00 0 00 000040 		SKIPN	40
+  1094						STOP^
+  1095	031103	254 04 0 00 031104 		HALT	.+1
+  1096	031104	320 00 0 00 031105 		JUMP	.+1
+  1097									^
+  1098			000100			ZZ=ZZ+ZZ
+  1099
+  1100						RETURN .+4		^
+  1101	031105	200 02 0 00 036447 		MOVE	2,[JSP 2,.+4]
+  1102	031106	202 02 0 00 000041 		MOVEM	2,41
+  1103	031107	477 02 0 00 000040 		SETOB	2,40
+  1104									^;TEST IRLT TO AR
+  1105	031110	000100	000000			XWD	ZZ,0
+  1106	031111	336 00 0 00 000040 		SKIPN	40
+  1107						STOP^
+  1108	031112	254 04 0 00 031113 		HALT	.+1
+  1109	031113	320 00 0 00 031114 		JUMP	.+1
+  1110									^
+  1111			000200			ZZ=ZZ+ZZ
+  1112
+  1113						RETURN .+4		^
+  1114	031114	200 02 0 00 036450 		MOVE	2,[JSP 2,.+4]
+  1115	031115	202 02 0 00 000041 		MOVEM	2,41
+  1116	031116	477 02 0 00 000040 		SETOB	2,40
+  1117									^;TEST IRLT TO AR
+  1118	031117	000200	000000			XWD	ZZ,0
+  1119	031120	336 00 0 00 000040 		SKIPN	40
+  1120						STOP^
+  1121	031121	254 04 0 00 031122 		HALT	.+1
+  1122	031122	320 00 0 00 031123 		JUMP	.+1
+  1123									^
+  1124			000400			ZZ=ZZ+ZZ
+  1125
+  1126						RETURN .+4		^
+  1127	031123	200 02 0 00 036451 		MOVE	2,[JSP 2,.+4]
+  1128	031124	202 02 0 00 000041 		MOVEM	2,41
+  1129	031125	477 02 0 00 000040 		SETOB	2,40
+  1130									^;TEST IRLT TO AR
+  1131	031126	000400	000000			XWD	ZZ,0
+  1132	031127	336 00 0 00 000040 		SKIPN	40
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 5-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0035
+
+  1133						STOP^
+  1134	031130	254 04 0 00 031131 		HALT	.+1
+  1135	031131	320 00 0 00 031132 		JUMP	.+1
+  1136									^
+  1137			001000			ZZ=ZZ+ZZ
+  1138
+  1139						RETURN .+4		^
+  1140	031132	200 02 0 00 036452 		MOVE	2,[JSP 2,.+4]
+  1141	031133	202 02 0 00 000041 		MOVEM	2,41
+  1142	031134	477 02 0 00 000040 		SETOB	2,40
+  1143									^;TEST IRLT TO AR
+  1144	031135	001000	000000			XWD	ZZ,0
+  1145	031136	336 00 0 00 000040 		SKIPN	40
+  1146						STOP^
+  1147	031137	254 04 0 00 031140 		HALT	.+1
+  1148	031140	320 00 0 00 031141 		JUMP	.+1
+  1149									^
+  1150			002000			ZZ=ZZ+ZZ
+  1151
+  1152						RETURN .+4		^
+  1153	031141	200 02 0 00 036453 		MOVE	2,[JSP 2,.+4]
+  1154	031142	202 02 0 00 000041 		MOVEM	2,41
+  1155	031143	477 02 0 00 000040 		SETOB	2,40
+  1156									^;TEST IRLT TO AR
+  1157	031144	002000	000000			XWD	ZZ,0
+  1158	031145	336 00 0 00 000040 		SKIPN	40
+  1159						STOP^
+  1160	031146	254 04 0 00 031147 		HALT	.+1
+  1161	031147	320 00 0 00 031150 		JUMP	.+1
+  1162									^
+  1163			004000			ZZ=ZZ+ZZ
+  1164
+  1165						RETURN .+4		^
+  1166	031150	200 02 0 00 036454 		MOVE	2,[JSP 2,.+4]
+  1167	031151	202 02 0 00 000041 		MOVEM	2,41
+  1168	031152	477 02 0 00 000040 		SETOB	2,40
+  1169									^;TEST IRLT TO AR
+  1170	031153	004000	000000			XWD	ZZ,0
+  1171	031154	336 00 0 00 000040 		SKIPN	40
+  1172						STOP^
+  1173	031155	254 04 0 00 031156 		HALT	.+1
+  1174	031156	320 00 0 00 031157 		JUMP	.+1
+  1175									^
+  1176			010000			ZZ=ZZ+ZZ
+  1177
+  1178						RETURN .+4		^
+  1179	031157	200 02 0 00 036455 		MOVE	2,[JSP 2,.+4]
+  1180	031160	202 02 0 00 000041 		MOVEM	2,41
+  1181	031161	477 02 0 00 000040 		SETOB	2,40
+  1182									^;TEST IRLT TO AR
+  1183	031162	010000	000000			XWD	ZZ,0
+  1184	031163	336 00 0 00 000040 		SKIPN	40
+  1185						STOP^
+  1186	031164	254 04 0 00 031165 		HALT	.+1
+  1187	031165	320 00 0 00 031166 		JUMP	.+1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 5-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0036
+
+  1188									^
+  1189			020000			ZZ=ZZ+ZZ
+  1190
+  1191						RETURN .+4		^
+  1192	031166	200 02 0 00 036456 		MOVE	2,[JSP 2,.+4]
+  1193	031167	202 02 0 00 000041 		MOVEM	2,41
+  1194	031170	477 02 0 00 000040 		SETOB	2,40
+  1195									^;TEST IRLT TO AR
+  1196	031171	020000	000000			XWD	ZZ,0
+  1197	031172	336 00 0 00 000040 		SKIPN	40
+  1198						STOP^
+  1199	031173	254 04 0 00 031174 		HALT	.+1
+  1200	031174	320 00 0 00 031175 		JUMP	.+1
+  1201									^
+  1202			040000			ZZ=ZZ+ZZ
+  1203
+  1204						RETURN .+4		^
+  1205	031175	200 02 0 00 036457 		MOVE	2,[JSP 2,.+4]
+  1206	031176	202 02 0 00 000041 		MOVEM	2,41
+  1207	031177	477 02 0 00 000040 		SETOB	2,40
+  1208									^;TEST IRLT TO AR
+  1209	031200	040000	000000			XWD	ZZ,0
+  1210	031201	336 00 0 00 000040 		SKIPN	40
+  1211						STOP^
+  1212	031202	254 04 0 00 031203 		HALT	.+1
+  1213	031203	320 00 0 00 031204 		JUMP	.+1
+  1214									^
+  1215			100000			ZZ=ZZ+ZZ
+  1216
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 6
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0037
+
+  1217	031204				MOD19:	RETURN	MOD19A		^;TEST PROPER STORAGE
+  1218
+  1219	031204	200 02 0 00 036460 		MOVE	2,[JSP 2,MOD19A]
+  1220	031205	202 02 0 00 000041 		MOVEM	2,41
+  1221	031206	477 02 0 00 000040 		SETOB	2,40
+  1222
+  1223	031207	000000	000000			0			;OF UU0
+  1224	031210	332 00 0 00 000040 	MOD19A:	SKIPE	40
+  1225						STOP^
+  1226	031211	254 04 0 00 031212 		HALT	.+1
+  1227	031212	320 00 0 00 031213 		JUMP	.+1
+  1228									^
+  1229
+  1230	031213				MOD20:	RETURN	MOD20A		^;CK FOR STORING OF E
+  1231
+  1232	031213	200 02 0 00 036461 		MOVE	2,[JSP 2,MOD20A]
+  1233	031214	202 02 0 00 000041 		MOVEM	2,41
+  1234	031215	477 02 0 00 000040 		SETOB	2,40
+  1235
+  1236	031216	000000	777777			XWD	0,-1		;ON A UU0
+  1237	031217	200 00 0 00 000040 	MOD20A:	MOVE	40
+  1238	031220	302 00 0 00 777777 		CAIE	-1
+  1239						STOP^
+  1240	031221	254 04 0 00 031222 		HALT	.+1
+  1241	031222	320 00 0 00 031223 		JUMP	.+1
+  1242									^
+  1243
+  1244	031223				MOD21:	RETURN	MOD21A		^;CK FOR STORING OF E
+  1245
+  1246	031223	200 02 0 00 036462 		MOVE	2,[JSP 2,MOD21A]
+  1247	031224	202 02 0 00 000041 		MOVEM	2,41
+  1248	031225	477 02 0 00 000040 		SETOB	2,40
+  1249
+  1250	031226	077740	000000			XWD	077740,0	;ON A UU0
+  1251	031227	200 00 0 00 000040 	MOD21A:	MOVE	40
+  1252	031230	312 00 0 00 036463 		CAME	[XWD 077740,0]
+  1253						STOP^
+  1254	031231	254 04 0 00 031232 		HALT	.+1
+  1255	031232	320 00 0 00 031233 		JUMP	.+1
+  1256									^
+  1257
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 7
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0038
+
+  1258	031233				MOD22:	RETURN	MOD22A		^;CK FOR STORING OF
+  1259
+  1260	031233	200 02 0 00 036464 		MOVE	2,[JSP 2,MOD22A]
+  1261	031234	202 02 0 00 000041 		MOVEM	2,41
+  1262	031235	477 02 0 00 000040 		SETOB	2,40
+  1263
+  1264	031236	077740	777777			XWD	077740,-1	;E AND IR ON UU0
+  1265	031237	200 00 0 00 000040 	MOD22A:	MOVE	40
+  1266	031240	312 00 0 00 036465 		CAME	[XWD 077740,-1]
+  1267						STOP^
+  1268	031241	254 04 0 00 031242 		HALT	.+1
+  1269	031242	320 00 0 00 031243 		JUMP	.+1
+  1270									^
+  1271
+  1272	031243				MOD23:	RETURN	MOD23A		^;UU0 TEST THE PC+1
+  1273
+  1274	031243	200 02 0 00 036466 		MOVE	2,[JSP 2,MOD23A]
+  1275	031244	202 02 0 00 000041 		MOVEM	2,41
+  1276	031245	477 02 0 00 000040 		SETOB	2,40
+  1277
+  1278	031246	000000	000000			0			;INHIBIT FEATURE LOC 41
+  1279	031247	405 02 0 00 777777 	MOD23A:	ANDI	2,-1		;CONTAINS TSP 2,X
+  1280	031250	306 02 0 00 031250 		CAIN	2,.		;PC+1 INH THE IR UU0 INPUT
+  1281						STOP			^;FAILED. SEE PC1 PRINT
+  1282
+  1283	031251	254 04 0 00 031252 		HALT	.+1
+  1284	031252	320 00 0 00 031253 		JUMP	.+1
+  1285
+  1286
+  1287	031253				MOD24:	RETURN	MOD24A		^;PC STORED IN CORRECTLY
+  1288
+  1289	031253	200 02 0 00 036467 		MOVE	2,[JSP 2,MOD24A]
+  1290	031254	202 02 0 00 000041 		MOVEM	2,41
+  1291	031255	477 02 0 00 000040 		SETOB	2,40
+  1292
+  1293	031256	000000	777777			XWD	0,-1		;FROM THE JSP AT 41
+  1294	031257	405 02 0 00 777777 	MOD24A:	ANDI 2,-1		;ON A UUO INST
+  1295	031260	302 02 0 00 031257 		CAIE	2,.-1
+  1296						STOP^
+  1297	031261	254 04 0 00 031262 		HALT	.+1
+  1298	031262	320 00 0 00 031263 		JUMP	.+1
+  1299									^
+  1300
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 8
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0039
+
+  1301	031263				MOD25:	;SET PRIVILEGE TO FLAG
+  1302						;SET UU0 TRAP
+  1303						;TEST IOT INST FOR
+  1304						;NOT TRAPING. SEE IR-2
+  1305						;PRINT IR UU0 CAME UP
+  1306	031263				MOD26:	;CK AND OF IR IOTA, NOT ALLOW, ETC
+  1307
+  1308	031263				MOD27:	SFLAG	0		^;MAKE SURE EX IOT USER=0
+  1309
+  1310	031263	205 01 0 00 000000 		MOVSI	1,0
+  1311	031264	255 17 0 00 031265 		JFCL	17,.+1
+  1312	031265	254 02 0 01 031266 		JRST	2,.+1(1)
+  1313
+  1314						RETURN	MOD28		^;CK FOR NOT TRAP ON IOT
+  1315
+  1316	031266	200 02 0 00 036470 		MOVE	2,[JSP 2,MOD28]
+  1317	031267	202 02 0 00 000041 		MOVEM	2,41
+  1318	031270	477 02 0 00 000040 		SETOB	2,40
+  1319
+  1320	031271	7 000 24 0 00 000000 		CONI			;IF IOTS TRAP NOW THE
+  1321	031272	300 00 0 00 000000 		CAI			;AND GATE EX USER (0), EX IOT USER
+  1322	031273	334 00 0 00 000000 		SKIPA			;DID NOT RESPOND TO EX USER (0)
+  1323	031274				MOD28:	STOP			^;SEE EX ALLOW IOTS ON EX PRINT
+  1324
+  1325	031274	254 04 0 00 031275 		HALT	.+1
+  1326	031275	320 00 0 00 031276 		JUMP	.+1
+  1327
+  1328
+  1329	031276	474 01 0 00 000000 	MOD29:	SETO	1,		;THE IOTS FAIL TO STORE C(E)
+  1330	031277	7 000 04 0 00 000001 		DATAI	1		;CHECK IR IOT ON IR2 PRINT
+  1331	031300	7 000 24 0 00 000001 		CONI	1		;LOOKS LIKE IR DECODE FAILED
+  1332	031301	316 01 0 00 036441 		CAMN	1,[-1]
+  1333						STOP^
+  1334	031302	254 04 0 00 031303 		HALT	.+1
+  1335	031303	320 00 0 00 031304 		JUMP	.+1
+  1336									^
+  1337
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 9
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0040
+
+  1338	031304	200 01 0 00 036471 	MOD30:	MOVE	1,[123456654321]	;CHECK SCE FOR DATAI
+  1339	031305	7 000 04 0 00 000001 		DATAI	1		;THE CONTENTS OF LOC1
+  1340	031306	316 01 0 00 036471 		CAMN	1,[123456654321]	;WERE NOT MODIFIED. SEE
+  1341						STOP			^;S1 PRINT SCE AND DECODE ON IOT
+  1342
+  1343	031307	254 04 0 00 031310 		HALT	.+1
+  1344	031310	320 00 0 00 031311 		JUMP	.+1
+  1345
+  1346
+  1347	031311	200 01 0 00 036471 	MOD31:	MOVE	1,[123456654321]	;CHECK SCE FOR CONI.  THE
+  1348	031312	7 000 24 0 00 000001 		CONI	1		;CONTENTS OF LOC1 WERE NOT
+  1349	031313	316 01 0 00 036471 		CAMN	1,[123456654321]	;MODIFIED.  SEE S2 PRINT SCE
+  1350						STOP			^;AND DECODE ON IOT PRINT
+  1351
+  1352	031314	254 04 0 00 031315 		HALT	.+1
+  1353	031315	320 00 0 00 031316 		JUMP	.+1
+  1354
+  1355
+  1356	031316	474 00 0 00 000000 	MOD32:	SETO			;SACINH FAIL FOR INST
+  1357	031317	7 000 24 0 00 000001 		CONI	1		;CONI FAILED. CHECK
+  1358	031320	312 00 0 00 036441 		CAME	[-1]		;IR IOT INPUT TO SACINH
+  1359						STOP			^;ON THE S2 PRINT
+  1360
+  1361	031321	254 04 0 00 031322 		HALT	.+1
+  1362	031322	320 00 0 00 031323 		JUMP	.+1
+  1363
+  1364
+  1365	031323	7 774 20 0 00 000000 	MOD33:	CONO	ME,0		;CLEAR LAST DEVICE
+  1366	031324	7 774 24 0 00 000002 		CONI	ME,2		;AR CLEAR AT(ET0)FAILED
+  1367	031325	306 02 0 00 000002 		CAIN	2,2		;ON INST CONT CK AR
+  1368						STOP			^;CLEAR ETO, CONI ON ARC-2 PRINT
+  1369
+  1370	031326	254 04 0 00 031327 		HALT	.+1
+  1371	031327	320 00 0 00 031330 		JUMP	.+1
+  1372
+  1373
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 10
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0041
+
+  1374	031330	7 774 14 0 00 036425 	MOD34:	DATAO	ME,[0]		;AR CLR ON A DATAI
+  1375	031331	7 774 04 0 00 000003 		DATAI	ME,3		;INST FAILED CHECK
+  1376	031332	306 03 0 00 000003 		CAIN	3,3		;IOT DATAI INPUT ON THE
+  1377						STOP			^;OR GATE TO AR CLR. SEE ARC-2 PRINT
+  1378
+  1379	031333	254 04 0 00 031334 		HALT	.+1
+  1380	031334	320 00 0 00 031335 		JUMP	.+1
+  1381
+  1382
+  1383	031335	400 00 0 00 000000 		SETZ			;CONSZ FAIL TO SKIP. CK
+  1384	031336	7 000 30 0 00 000000 		CONSZ			;PC+1 AT AND OF AD=0, IOT CONSZ,
+  1385						STOP			^;IOT T5 ON PC1 PRINT
+  1386
+  1387	031337	254 04 0 00 031340 		HALT	.+1
+  1388	031340	320 00 0 00 031341 		JUMP	.+1
+  1389
+  1390
+  1391	031341	7 774 20 0 00 000000 		CONO	ME,0		;CONSZ FAIL TO SKIP CK
+  1392	031342	7 774 30 0 00 700000 		CONSZ	ME,700000		;FOR NO AR CLR AT (ETO). SEE ARC-2
+  1393						STOP			^;PRINT THE IOT CONSX INPUT
+  1394
+  1395	031343	254 04 0 00 031344 		HALT	.+1
+  1396	031344	320 00 0 00 031345 		JUMP	.+1
+  1397
+  1398
+  1399	031345	7 774 20 0 00 000000 		CONO	ME,0		;CONSO SKIPED.  CHECK PC+1
+  1400	031346	7 774 34 0 00 000000 		CONSO	ME,0		;(IOT T5,AD=0,IOT CONSO,IOT CONSZ
+  1401	031347	334 00 0 00 000000 		SKIPA			;AND GATES) ON PC1 PRINT
+  1402						STOP^
+  1403	031350	254 04 0 00 031351 		HALT	.+1
+  1404	031351	320 00 0 00 031352 		JUMP	.+1
+  1405									^
+  1406
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 11
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0042
+
+  1407	031352	400 01 0 00 000000 	MOD35:	SETZ	1,		;CHECK POINTER INC ON IOT BLK
+  1408	031353	7 774 10 0 00 000001 		BLKO	ME,1		;IF C(1)=0 THEN AR FM AD(J) (ET0)
+  1409	031354	300 00 0 00 000000 		CAI			;ON ARC-3 PRINT, OR AD+1 BOTH (FT9)
+  1410	031355	300 00 0 00 000000 		CAI			;ON AD2 PRINT FAILED
+  1411	031356	312 01 0 00 036415 		CAME	1,[XWD 1,1]	;IF IR 12 FAIL TO SET, PROG
+  1412						STOP			^;BLOWS UP
+  1413
+  1414	031357	254 04 0 00 031360 		HALT	.+1
+  1415	031360	320 00 0 00 031361 		JUMP	.+1
+  1416
+  1417	031361	400 01 0 00 000000 	MOD36:	SETZ	1,		;PC+1 INH FOR BLK FAILED
+  1418	031362	7 774 10 0 00 000001 		BLKO	ME,1		;CHECK IOT BLK INPUT TO
+  1419	031363	300 00 0 00 000000 		CAI			;PC+1 INH ON THE PC1 PRINT
+  1420	031364	334 00 0 00 000000 		SKIPA
+  1421						STOP^
+  1422	031365	254 04 0 00 031366 		HALT	.+1
+  1423	031366	320 00 0 00 031367 		JUMP	.+1
+  1424									^
+  1425	031367	400 01 0 00 000000 	MOD37:	SETZ	1,		;BLKO PC+1 AT ET0 TIME
+  1426	031370	7 774 10 0 00 000001 		BLKO	ME,1		;FAILED. CHECK THE AND GATE
+  1427						STOP			^;BLK, CYC(0) CRY(0) ON PC1 PRINT
+  1428
+  1429	031371	254 04 0 00 031372 		HALT	.+1
+  1430	031372	320 00 0 00 031373 		JUMP	.+1
+  1431
+  1432	031373	474 01 0 00 000000 	MOD38:	SETO	1,		;BLKO PERFORMED A SKIP WHEN
+  1433	031374	7 774 10 0 00 000001 		BLKO	ME,1		;END CRY0 SHOULD=1
+  1434	031375	334 00 0 00 000000 		SKIPA			;CK PC+1,SEE ABOVE ROUTINE
+  1435						STOP^
+  1436	031376	254 04 0 00 031377 		HALT	.+1
+  1437	031377	320 00 0 00 031400 		JUMP	.+1
+  1438									^
+  1439	031400	7 004 20 0 00 010000 	MOD39:	CONO PI,10000		;JUST IN CASE
+  1440	031401	7 000 20 0 00 435447 		CONO	435447		;SET SOME CPA FLAGS
+  1441	031402	7 000 24 0 00 000000 		CONI	0		;(1) DID FLAGS SET? NO CONO FAIL
+  1442	031403	336 00 0 00 000000 		SKIPN	0		;YES: CONI FAIL CK IOB TO AR
+  1443						STOP			^;AND MANY OTHERS.  IE SINGLE STEP
+  1444
+  1445	031404	254 04 0 00 031405 		HALT	.+1
+  1446	031405	320 00 0 00 031406 		JUMP	.+1
+  1447
+  1448	031406	7 000 20 0 00 000000 	MOD40:	CONO			;PIA 35 FAIL TO SET (CPU)
+  1449	031407	7 000 20 0 00 000001 		CONO	1		;OR READ SINGLE STEP
+  1450	031410	7 000 24 0 00 000000 		CONI			;SEE CPA PRINT
+  1451	031411	606 00 0 00 000001 		TRNN	1
+  1452						STOP^
+  1453	031412	254 04 0 00 031413 		HALT	.+1
+  1454	031413	320 00 0 00 031414 		JUMP	.+1
+  1455									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 12
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0043
+
+  1456
+  1457	031414	7 000 20 0 00 000000 	MOD41:	CONO			;PIA 3+(CFU) FAIL TO SET
+  1458	031415	7 000 20 0 00 000002 		CONO	2		;OR READ.  SEE CPA PRINT
+  1459	031416	7 000 24 0 00 000000 		CONI			;SINGLE STEP
+  1460	031417	606 00 0 00 000002 		TRNN	2
+  1461						STOP^
+  1462	031420	254 04 0 00 031421 		HALT	.+1
+  1463	031421	320 00 0 00 031422 		JUMP	.+1
+  1464									^
+  1465
+  1466	031422	7 000 20 0 00 000000 	MOD42:	CONO			;PIA 33 (CPU) FAIL TO SET
+  1467	031423	7 000 20 0 00 000004 		CONO	4		;OR READ.  SEE CPA PRINT
+  1468	031424	7 000 24 0 00 000000 		CONI			;SINGLE STEP
+  1469	031425	606 00 0 00 000004 		TRNN	4
+  1470						STOP^
+  1471	031426	254 04 0 00 031427 		HALT	.+1
+  1472	031427	320 00 0 00 031430 		JUMP	.+1
+  1473									^
+  1474
+  1475	031430	7 000 20 0 00 000001 	MOD43:	CONO	1		;PIA 35 (CPU) FAIL TO CLEAR
+  1476	031431	7 000 20 0 00 000000 		CONO			;OR READ INCORRECT
+  1477	031432	7 000 24 0 00 000000 		CONI			;SEE CPA PRINT
+  1478	031433	602 00 0 00 000001 		TRNE	1		;SINGLE STEP
+  1479						STOP^
+  1480	031434	254 04 0 00 031435 		HALT	.+1
+  1481	031435	320 00 0 00 031436 		JUMP	.+1
+  1482									^
+  1483
+  1484	031436	7 000 20 0 00 000002 	MOD44:	CONO	2		;PIA 34 (CPU) FAIL TO CLEAR
+  1485	031437	7 000 20 0 00 000000 		CONO			;OR READ INCORRECTLY
+  1486	031440	7 000 24 0 00 000000 		CONI			;SEE CPA PRINT
+  1487	031441	602 00 0 00 000002 		TRNE	2		;SINGLE STEP
+  1488						STOP^
+  1489	031442	254 04 0 00 031443 		HALT	.+1
+  1490	031443	320 00 0 00 031444 		JUMP	.+1
+  1491									^
+  1492
+  1493	031444	7 000 20 0 00 000004 	MOD45:	CONO	4		;PIA 33 (CPU) FAIL TO CLEAR
+  1494	031445	7 000 20 0 00 000000 		CONO			;OR READ INCORRECTLY
+  1495	031446	7 000 24 0 00 000000 		CONI			;SEE CPA PRINT
+  1496	031447	602 00 0 00 000004 		TRNE	4		;SINGLE STEP
+  1497						STOP^
+  1498	031450	254 04 0 00 031451 		HALT	.+1
+  1499	031451	320 00 0 00 031452 		JUMP	.+1
+  1500									^
+  1501
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 13
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0044
+
+  1502	031452	7 000 20 0 00 000007 	MOD46:	CONO	7		;SET SOME CP FLAGS
+  1503	031453	7 000 34 0 00 000000 		CONSO			;CONSO FAILED  CK
+  1504	031454	334 00 0 00 000000 		SKIPA
+  1505						STOP^
+  1506	031455	254 04 0 00 031456 		HALT	.+1
+  1507	031456	320 00 0 00 031457 		JUMP	.+1
+  1508									^
+  1509	031457	7 000 20 0 00 000007 	MOD47:	CONO	7		;CONSO FAILED
+  1510	031460	7 000 34 0 00 000007 		CONSO	7
+  1511						STOP^
+  1512	031461	254 04 0 00 031462 		HALT	.+1
+  1513	031462	320 00 0 00 031463 		JUMP	.+1
+  1514									^
+  1515	031463	7 000 20 0 00 000007 	MOD48:	CONO	7		;CONSZ FAIL
+  1516	031464	7 000 30 0 00 000007 		CONSZ	7		;CHECK PC+1 AT AND
+  1517	031465	334 00 0 00 000000 		SKIPA			;OF AD=0, CONSZ, IOT T5
+  1518						STOP			^;ON PC1 PRINT
+  1519
+  1520	031466	254 04 0 00 031467 		HALT	.+1
+  1521	031467	320 00 0 00 031470 		JUMP	.+1
+  1522
+  1523	031470	7 000 20 0 00 000040 	MOD50:	CONO	40		;CPU AROV ENABLE
+  1524	031471	7 000 20 0 00 000020 		CONO	20		;TRY TO SET
+  1525	031472	7 000 34 0 00 000020 		CONSO	20
+  1526						STOP			^;IOB OR FLOP
+  1527
+  1528	031473	254 04 0 00 031474 		HALT	.+1
+  1529	031474	320 00 0 00 031475 		JUMP	.+1
+  1530
+  1531	031475	7 000 20 0 00 000020 		CONO	20		;SET AROV EN
+  1532	031476	7 000 20 0 00 000000 		CONO			;CK FOR NOT CLEARING
+  1533	031477	7 000 34 0 00 000020 		CONSO	20
+  1534						STOP^
+  1535	031500	254 04 0 00 031501 		HALT	.+1
+  1536	031501	320 00 0 00 031502 		JUMP	.+1
+  1537									^
+  1538	031502	7 000 20 0 00 000020 		CONO	20		;SET AROV EN
+  1539	031503	7 000 20 0 00 000040 		CONO	40		;TRY TO CLEAR
+  1540	031504	7 000 30 0 00 000020 		CONSZ	20
+  1541						STOP^
+  1542	031505	254 04 0 00 031506 		HALT	.+1
+  1543	031506	320 00 0 00 031507 		JUMP	.+1
+  1544									^
+  1545	031507	7 000 20 0 00 000040 		CONO	40		;CLEAR AROV EN
+  1546	031510	7 000 20 0 00 000000 		CONO			;CK FOR NOT SETTING
+  1547	031511	7 000 30 0 00 000020 		CONSZ	20
+  1548						STOP^
+  1549	031512	254 04 0 00 031513 		HALT	.+1
+  1550	031513	320 00 0 00 031514 		JUMP	.+1
+  1551									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 14
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0045
+
+  1552	031514	7 000 20 0 00 000400 	MOD51:	CONO	400		;FOV EN CLEAR
+  1553	031515	7 000 20 0 00 000200 		CONO	200		;TRY TO SET
+  1554	031516	7 000 34 0 00 000200 		CONSO	200
+  1555						STOP^
+  1556	031517	254 04 0 00 031520 		HALT	.+1
+  1557	031520	320 00 0 00 031521 		JUMP	.+1
+  1558									^
+  1559
+  1560	031521	7 000 20 0 00 000200 		CONO	200		;SET FOV EN
+  1561	031522	7 000 20 0 00 000000 		CONO			;CK FOR NOT CLEARING
+  1562	031523	7 000 34 0 00 000200 		CONSO	200
+  1563						STOP^
+  1564	031524	254 04 0 00 031525 		HALT	.+1
+  1565	031525	320 00 0 00 031526 		JUMP	.+1
+  1566									^
+  1567
+  1568	031526	7 000 20 0 00 000200 		CONO	200		;SET FOV EN
+  1569	031527	7 000 20 0 00 000400 		CONO	400		;TRY TO CLEAR
+  1570	031530	7 000 30 0 00 000200 		CONSZ	200
+  1571						STOP^
+  1572	031531	254 04 0 00 031532 		HALT	.+1
+  1573	031532	320 00 0 00 031533 		JUMP	.+1
+  1574									^
+  1575
+  1576	031533	7 000 20 0 00 000400 		CONO	400		;CLEAR FOV EN
+  1577	031534	7 000 20 0 00 000000 		CONO			;CK FOR NOT SETTING
+  1578	031535	7 000 30 0 00 000200 		CONSZ	200
+  1579						STOP^
+  1580	031536	254 04 0 00 031537 		HALT	.+1
+  1581	031537	320 00 0 00 031540 		JUMP	.+1
+  1582									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 15
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0046
+
+  1583
+  1584	031540	7 000 20 0 00 004000 	MOD52:	CONO	4000		;CLEAR CLK EN
+  1585	031541	7 000 20 0 00 002000 		CONO	2000		;TRY TO SET
+  1586	031542	7 000 34 0 00 002000 		CONSO	2000
+  1587						STOP^
+  1588	031543	254 04 0 00 031544 		HALT	.+1
+  1589	031544	320 00 0 00 031545 		JUMP	.+1
+  1590									^
+  1591
+  1592	031545	7 000 20 0 00 002000 		CONO	2000		;SET CLK EN
+  1593	031546	7 000 20 0 00 000000 		CONO			;CK FOR NOT CLEARING
+  1594	031547	7 000 34 0 00 002000 		CONSO	2000
+  1595						STOP^
+  1596	031550	254 04 0 00 031551 		HALT	.+1
+  1597	031551	320 00 0 00 031552 		JUMP	.+1
+  1598									^
+  1599
+  1600	031552	7 000 20 0 00 002000 		CONO	2000		;SET CLK EN
+  1601	031553	7 000 20 0 00 004000 		CONO	4000		;TRY TO CLEAR
+  1602	031554	7 000 30 0 00 002000 		CONSZ	2000
+  1603						STOP^
+  1604	031555	254 04 0 00 031556 		HALT	.+1
+  1605	031556	320 00 0 00 031557 		JUMP	.+1
+  1606									^
+  1607
+  1608	031557	7 000 20 0 00 004000 		CONO	4000		;CLEAR CLK EN
+  1609	031560	7 000 20 0 00 000000 		CONO			;TEST FOR NOT SETTING
+  1610	031561	7 000 30 0 00 002000 		CONSZ	2000
+  1611						STOP^
+  1612	031562	254 04 0 00 031563 		HALT	.+1
+  1613	031563	320 00 0 00 031564 		JUMP	.+1
+  1614									^
+  1615
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 16
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0047
+
+  1616	031564	310 00 0 00 777777 	MOD53:	CAM	-1		;SET NON-EX VIA F(CE)
+  1617	031565	7 000 20 0 00 010000 		CONO	10000		;TRY TO CLEAR
+  1618	031566	7 000 30 0 00 010000 		CONSZ	10000
+  1619						STOP			^;FAIL TO CLEAR
+  1620
+  1621	031567	254 04 0 00 031570 		HALT	.+1
+  1622	031570	320 00 0 00 031571 		JUMP	.+1
+  1623
+  1624
+  1625	031571	7 000 20 0 00 010000 		CONO	10000		;CLEAR NON-EX
+  1626	031572	310 00 0 00 777777 		CAM	-1		;TRY TO SET VIA F(CE)
+  1627	031573	7 000 34 0 00 010000 		CONSO	10000		;FAIL TO SET
+  1628						STOP			^;CK MEM CNTL, CPA
+  1629
+  1630	031574	254 04 0 00 031575 		HALT	.+1
+  1631	031575	320 00 0 00 031576 		JUMP	.+1
+  1632
+  1633
+  1634	031576	7 000 20 0 00 010000 		CONO	10000		;CLEAR NON-EX
+  1635	031577	202 00 0 00 777777 		MOVEM	-1		;TRY TO SET VIA S(CE)
+  1636	031600	7 000 34 0 00 010000 		CONSO	10000		;FAIL TO SET
+  1637						STOP^
+  1638	031601	254 04 0 00 031602 		HALT	.+1
+  1639	031602	320 00 0 00 031603 		JUMP	.+1
+  1640									^
+  1641
+  1642	031603	7 000 20 0 00 010000 		CONO	10000		;CLEAR NON-EX
+  1643	031604	272 00 0 00 777777 		ADDM	-1		;TRY TO SET VIA PSE
+  1644	031605	7 000 34 0 00 010000 		CONSO	10000		;FAIL TO SET
+  1645						STOP^
+  1646	031606	254 04 0 00 031607 		HALT	.+1
+  1647	031607	320 00 0 00 031610 		JUMP	.+1
+  1648									^
+  1649
+  1650	031610	310 00 0 00 777777 		CAM	-1		;SET NON EX
+  1651	031611	7 000 20 0 00 000000 		CONO			;TEST FOR NOT CLEARING
+  1652	031612	7 000 34 0 00 010000 		CONSO	10000		;ON CONO 0
+  1653						STOP^
+  1654	031613	254 04 0 00 031614 		HALT	.+1
+  1655	031614	320 00 0 00 031615 		JUMP	.+1
+  1656									^
+  1657	031615	7 000 20 0 00 010000 		CONO	10000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 17
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0048
+
+  1658
+  1659	031616	7 000 20 0 00 400000 	MOD54:	CONO	400000		;CLEAR PDL OV
+  1660	031617	474 00 0 00 000000 		SETO			;TRY TO SET
+  1661	031620	261 00 0 00 000000 		PUSH			;VIA PUSH
+  1662	031621	7 000 34 0 00 200000 		CONSO 200000		;TEST FOR SET
+  1663						STOP			^;CPA PRINT
+  1664
+  1665	031622	254 04 0 00 031623 		HALT	.+1
+  1666	031623	320 00 0 00 031624 		JUMP	.+1
+  1667
+  1668
+  1669	031624	474 00 0 00 000000 		SETO
+  1670	031625	261 00 0 00 000000 		PUSH			;SET PDL OV
+  1671	031626	7 000 20 0 00 400000 		CONO 400000		;TRY TO CLEAR .CK
+  1672	031627	7 000 30 0 00 200000 		CONSZ 200000		;CPA PDL OV SET (ET0) POP GATE
+  1673						STOP			^;FLOP/IOB CPA PRINT
+  1674
+  1675	031630	254 04 0 00 031631 		HALT	.+1
+  1676	031631	320 00 0 00 031632 		JUMP	.+1
+  1677
+  1678
+  1679	031632	474 00 0 00 000000 		SETO
+  1680	031633	261 00 0 00 000000 		PUSH			;SET PDL OV
+  1681	031634	7 000 20 0 00 000000 		CONO			;CK FOR NOT CLEARING
+  1682	031635	7 000 34 0 00 200000 		CONSO 200000
+  1683						STOP^
+  1684	031636	254 04 0 00 031637 		HALT	.+1
+  1685	031637	320 00 0 00 031640 		JUMP	.+1
+  1686									^
+  1687
+  1688	031640	7 000 20 0 00 400000 		CONO	400000		;TEST FOR NOT
+  1689	031641	474 00 0 00 000000 		SETO			;SETTING PDL-OV
+  1690	031642	350 00 0 00 000000 		AOS			;CPA PDL OV SET FAIL
+  1691	031643	7 000 30 0 00 200000 		CONSZ 200000		;IR PUSH CRY(0) (1) AT ET0
+  1692						STOP			^;AND GATE.  THE PUSH INPUT
+  1693
+  1694	031644	254 04 0 00 031645 		HALT	.+1
+  1695	031645	320 00 0 00 031646 		JUMP	.+1
+  1696
+  1697
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 18
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0049
+
+  1698	031646	7 000 20 0 00 400000 	MOD55:	CONO	400000		;CK PDL FLAG
+  1699	031647	400 00 0 00 000000 		SETZ			;CPA PDL OV SET
+  1700	031650	261 00 0 00 000000 		PUSH			;CK AND GATE OK
+  1701	031651	7 000 30 0 00 200000 		CONSZ 200000		;ET0 IR PUSH,ADCRY0 (1)
+  1702						STOP			^;THE CRY FLAG SHOULD PREVENT
+  1703
+  1704	031652	254 04 0 00 031653 		HALT	.+1
+  1705	031653	320 00 0 00 031654 		JUMP	.+1
+  1706
+  1707
+  1708	031654	7 000 20 0 00 400000 		CONO	400000		;TRY TO SET PDL-OV
+  1709	031655	474 00 0 00 000000 		SETO			;VIA PUSHJ
+  1710	031656	260 00 0 00 031657 		PUSHJ	.+1		;THE AND GATE OF
+  1711	031657	7 000 34 0 00 200000 		CONSO 200000		;PUSH,PUSHJ TO FROM
+  1712						STOP			^;CPA PDL OV SET FAILED. SEE CPA PRINT
+  1713
+  1714	031660	254 04 0 00 031661 		HALT	.+1
+  1715	031661	320 00 0 00 031662 		JUMP	.+1
+  1716
+  1717
+  1718	031662	7 000 20 0 00 400000 		CONO	400000		;TRY TO SET VIA POPS
+  1719	031663	201 00 0 00 000001 		MOVEI	1		;CHECK AND GATE OF
+  1720	031664	262 00 0 00 000000 		POP			;IR POPS, ET0, AD CRY 0(0)
+  1721	031665	7 000 34 0 00 200000 		CONSO 200000		;TO CPA PDL OV SET
+  1722						STOP^
+  1723	031666	254 04 0 00 031667 		HALT	.+1
+  1724	031667	320 00 0 00 031670 		JUMP	.+1
+  1725									^
+  1726
+  1727	031670	7 000 20 0 00 400000 		CONO	400000		;CHECK POPS FOR NOT
+  1728	031671	200 00 0 00 036415 		MOVE	[XWD 1,1]		;SETTING PDL-OV
+  1729	031672	262 00 0 00 000000 		POP			;AD CRY0(0) SHOULD PREVENT
+  1730	031673	7 000 30 0 00 200000 		CONSZ 200000		;SEE ABOVE
+  1731						STOP^
+  1732	031674	254 04 0 00 031675 		HALT	.+1
+  1733	031675	320 00 0 00 031676 		JUMP	.+1
+  1734									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 19
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0050
+
+  1735
+  1736	031676	205 00 0 00 400000 	MOD56:	MOVSI	400000		;SET AROV FLAG
+  1737	031677	270 00 0 00 036472 		ADD	[XWD 400000,0]	;CK IOB INPUT IOB1
+  1738	031700	7 000 34 0 00 000010 		CONSO	10		;PRINT FOR MISSING
+  1739						STOP			^;IOB BIT 32
+  1740
+  1741	031701	254 04 0 00 031702 		HALT	.+1
+  1742	031702	320 00 0 00 031703 		JUMP	.+1
+  1743
+  1744
+  1745	031703	255 17 0 00 031704 		JFCL	17,.+1		;CHECK AROV STATUS
+  1746	031704	7 000 30 0 00 000010 		CONSZ	10		;BIT 32 ON IOB
+  1747						STOP			^;SEE IOB1 PRINT
+  1748
+  1749	031705	254 04 0 00 031706 		HALT	.+1
+  1750	031706	320 00 0 00 031707 		JUMP	.+1
+  1751
+  1752
+  1753	031707	7 000 30 0 00 404440 		CONSZ	404440		;STATUS BITS NOT USED
+  1754						STOP			^;SHOULD BE 0  IOB1 PRINT
+  1755
+  1756	031710	254 04 0 00 031711 		HALT	.+1
+  1757	031711	320 00 0 00 031712 		JUMP	.+1
+  1758
+  1759
+  1760	031712	7 000 20 0 00 200000 		CONO	200000		;CLEAR THE WORLD
+  1761	031713	400 00 0 00 000000 		SETZ			;ON IOT THE
+  1762	031714	7 000 00 0 00 000000 		BLKI			;AND GATE OF IOT BLKI
+  1763	031715	300 00 0 00 000000 		CAI			;BLKO WHICH MAKES IOT BLK
+  1764	031716	312 00 0 00 036415 		CAME	[XWD 1,1]		;FAILED LOOK AT THE
+  1765						STOP			^;BLKI INPUT
+  1766
+  1767	031717	254 04 0 00 031720 		HALT	.+1
+  1768	031720	320 00 0 00 031721 		JUMP	.+1
+  1769
+  1770
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 20
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0051
+
+  1771	031721	205 00 0 00 400000 	MOD57:	MOVSI	400000		;SET AROV FLAG
+  1772	031722	270 00 0 00 036472 		ADD	[XWD 400000,0]	;A CONO WITH OUT
+  1773	031723	7 000 20 0 00 000000 		CONO			;BIT 32 CLEARED IT
+  1774	031724	255 10 0 00 031726 		JFCL	10,.+2		;SEE ARF PRINT CPA CONO
+  1775						STOP			^;AND BIT 32
+  1776
+  1777	031725	254 04 0 00 031726 		HALT	.+1
+  1778	031726	320 00 0 00 031727 		JUMP	.+1
+  1779
+  1780
+  1781	031727	205 00 0 00 400000 		MOVSI	400000		;SET AROV FLAG
+  1782	031730	270 00 0 00 036472 		ADD	[XWD 400000,0]	;TRY TO CLEAR WITH
+  1783	031731	7 000 20 0 00 000010 		CONO	10		;A CONO
+  1784	031732	255 10 0 00 031734 		JFCL	10,.+2		;IT FAILED TO CLEAR
+  1785	031733	334 00 0 00 000000 		SKIPA			;CHECK ARF PRINT
+  1786						STOP			^;CPA CONO AND BIT 32
+  1787
+  1788	031734	254 04 0 00 031735 		HALT	.+1
+  1789	031735	320 00 0 00 031736 		JUMP	.+1
+  1790
+  1791
+  1792	031736	205 01 0 00 040000 		MOVSI	1,40000
+  1793	031737	255 17 0 00 031740 		JFCL	17,.+1		;SET FOV FLAG
+  1794	031740	254 02 0 01 031741 		JRST	2,.+1(1)		;VIA RESET FLAGS
+  1795	031741	7 000 20 0 00 000000 		CONO			;CONO WITHOUT BIT29
+  1796	031742	255 01 0 00 031744 		JFCL	1,.+2		;CLEARED IT.  SEE ARF PRINT
+  1797						STOP			^;CPA CONO SET AND IOB 29
+  1798
+  1799	031743	254 04 0 00 031744 		HALT	.+1
+  1800	031744	320 00 0 00 031745 		JUMP	.+1
+  1801
+  1802
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 21
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0052
+
+  1803	031745	205 01 0 00 040000 	MOD58:	MOVSI	1,40000
+  1804	031746	255 17 0 00 031747 		JFCL	17,.+1		;SET FOV FLAG
+  1805	031747	254 02 0 01 031750 		JRST	2,.+1(1)		;VIA RESET FLAGS
+  1806	031750	7 000 20 0 00 000100 		CONO	100		;CONO FAIL TO CLEAR FOV
+  1807	031751	255 01 0 00 031753 		JFCL	1,.+2		;SEE ARF PRINT
+  1808	031752	334 00 0 00 000000 		SKIPA			;CONO CPU AND IOB
+  1809						STOP			^;BIT 29
+  1810
+  1811	031753	254 04 0 00 031754 		HALT	.+1
+  1812	031754	320 00 0 00 031755 		JUMP	.+1
+  1813
+  1814
+  1815	031755	255 01 0 00 031756 		JFCL	1,.+1		;AR FOV FLAG TO IOB
+  1816	031756	7 000 30 0 00 000100 		CONSZ	100		;FAIL SEE IOB1 PRINT
+  1817						STOP			^;AND CPA STATUS, AR FOV (1)
+  1818
+  1819	031757	254 04 0 00 031760 		HALT	.+1
+  1820	031760	320 00 0 00 031761 		JUMP	.+1
+  1821
+  1822
+  1823	031761	205 01 0 00 040000 		MOVSI	1,40000
+  1824	031762	255 17 0 00 031763 		JFCL	17,.+1		;SET FOV VIA
+  1825	031763	254 02 0 01 031764 		JRST	2,.+1(1)		;RESTOR FLAGS
+  1826	031764	7 000 34 0 00 000100 		CONSO	100		;FOV TO IOB FAIL
+  1827						STOP			^;SEE IOB1 PRINT
+  1828
+  1829	031765	254 04 0 00 031766 		HALT	.+1
+  1830	031766	320 00 0 00 031767 		JUMP	.+1
+  1831
+  1832
+  1833	031767	7 000 20 0 00 040000 		CONO	40000		;CPA ADDR BREAK
+  1834	031770	7 000 30 0 00 040000 		CONSZ 40000		;STATUS FAIL
+  1835						STOP			^;SEE CPA OR IOB1 PRINT
+  1836
+  1837	031771	254 04 0 00 031772 		HALT	.+1
+  1838	031772	320 00 0 00 031773 		JUMP	.+1
+  1839
+  1840
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 22
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0053
+
+  1841	031773	7 000 20 0 00 000007 	MOD59:	CONO	7		;A CONO TO P1 MODIFIED
+  1842	031774	7 004 20 0 00 000000 		CONO	PI,0		;CPU AS A DEVICE.  BIO
+  1843	031775	7 000 34 0 00 000007 		CONSO	7		;CPA SEL IS CONFUSED
+  1844						STOP^
+  1845	031776	254 04 0 00 031777 		HALT	.+1
+  1846	031777	320 00 0 00 032000 		JUMP	.+1
+  1847									^
+  1848
+  1849	032000	7 000 20 0 00 010000 		CONO	10000		;JUST CHECKING FOR
+  1850	032001	310 00 0 00 032001 		CAM .			;NOT NONEX AGAIN
+  1851	032002	7 000 30 0 00 010000 		CONSZ	10000
+  1852						STOP^
+  1853	032003	254 04 0 00 032004 		HALT	.+1
+  1854	032004	320 00 0 00 032005 		JUMP	.+1
+  1855									^
+  1856
+  1857	032005	7 004 20 0 00 200000 		CONO	PI,200000	;SEE IF PAR ERR
+  1858	032006	7 004 30 0 00 200000 		CONSZ	PI,200000	;IS A ZERO
+  1859						STOP^
+  1860	032007	254 04 0 00 032010 		HALT	.+1
+  1861	032010	320 00 0 00 032011 		JUMP	.+1
+  1862									^
+  1863
+  1864	032011	7 004 20 0 00 400000 		CONO	PI,400000	;SEE IF POWER FAIL
+  1865	032012	7 004 30 0 00 400000 		CONSZ	PI,400000	;IS A ZERO
+  1866						STOP^
+  1867	032013	254 04 0 00 032014 		HALT	.+1
+  1868	032014	320 00 0 00 032015 		JUMP	.+1
+  1869									^
+  1870
+  1871	032015	201 00 0 00 777777 		MOVEI	-1		;WAIT FOR CLOCK
+  1872	032016	7 000 30 0 00 001000 		CONSZ	1000		;FLAG TO SET
+  1873	032017	254 00 0 00 032022 		JRST	.+3
+  1874	032020	367 00 0 00 032016 		SOJG	.-2
+  1875						STOP			^;NO CLOCK FLAG
+  1876
+  1877	032021	254 04 0 00 032022 		HALT	.+1
+  1878	032022	320 00 0 00 032023 		JUMP	.+1
+  1879
+  1880
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 23
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0054
+
+  1881	032023	7 004 20 0 00 100000 	MOD60:	CONO	PI,100000	;CLEAR CPA PARITY ENB
+  1882	032024	7 004 20 0 00 040000 		CONO PI,40000		;TRY TO SET IT
+  1883	032025	7 004 34 0 00 100000 		CONSO	PI,100000	;ALSO PI AS DEVICE
+  1884						STOP^
+  1885	032026	254 04 0 00 032027 		HALT	.+1
+  1886	032027	320 00 0 00 032030 		JUMP	.+1
+  1887									^
+  1888
+  1889	032030	7 004 20 0 00 040000 		CONO	PI,40000	;SET CPA PAR ENB
+  1890	032031	7 004 20 0 00 000000 		CONO	PI,		;CK FOR NOT CLEAR
+  1891	032032	7 004 34 0 00 100000 		CONSO	PI,100000
+  1892						STOP^
+  1893	032033	254 04 0 00 032034 		HALT	.+1
+  1894	032034	320 00 0 00 032035 		JUMP	.+1
+  1895									^
+  1896
+  1897	032035	7 004 20 0 00 040000 		CONO	PI,40000	;SET CPA PAR ENB
+  1898	032036	7 004 20 0 00 100000 		CONO	PI,100000	;TRY TO CLEAR
+  1899	032037	7 004 30 0 00 100000 		CONSZ PI,100000
+  1900						STOP^
+  1901	032040	254 04 0 00 032041 		HALT	.+1
+  1902	032041	320 00 0 00 032042 		JUMP	.+1
+  1903									^
+  1904
+  1905	032042	7 004 20 0 00 100000 		CONO	PI,100000	;CLEAR CPA PAR ENB
+  1906	032043	7 004 20 0 00 000000 		CONO	PI,		;CK FOR NOT SET
+  1907
+  1908	032044	7 004 30 0 00 100000 		CONSZ	PI,100000	;ON CONO
+  1909						STOP^
+  1910	032045	254 04 0 00 032046 		HALT	.+1
+  1911	032046	320 00 0 00 032047 		JUMP	.+1
+  1912									^
+  1913
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 24
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0055
+
+  1914	032047				MOD70:	CLEAN			^;SEE IOB1
+  1915
+  1916	032047	7 000 20 0 00 634440 		CONO	634440
+  1917	032050	7 004 20 0 00 010000 		CONO	PI,10000
+  1918
+  1919	032051	7 004 24 0 00 000000 		CONI	PI,0		;READ PI STATUS
+  1920	032052	602 00 0 00 077400 		TRNE	77400		;A PI HOLD FLOP FAIL TO
+  1921						STOP			^;CLEAR OR IOB PI INPUT
+  1922
+  1923	032053	254 04 0 00 032054 		HALT	.+1
+  1924	032054	320 00 0 00 032055 		JUMP	.+1
+  1925
+  1926	032055	200 01 0 00 036473 		MOVE	1,[MOVEI 40]	;STORE A MOVIT IN
+  1927	032056	202 01 0 01 000000 		MOVEM	1,(1)		;LOCATIONS 40 TO 60
+  1928	032057	312 01 0 00 036474 		CAME	1,[MOVEI 57]
+  1929	032060	344 01 0 00 032056 		AOJA	1,.-2
+  1930
+  1931					DEFINE	BLURB<
+  1932					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  1933					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  1934					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  1935					;INSTRUCTION
+  1936					>
+  1937					DEFINE	PIO	(A)
+  1938					<	CLEAN
+  1939						CONO	PI,PIOSET+A	;PIO FAIL TO SET IF LIGHT OUT
+  1940						CONSO	PI,A		;OTHERWISE FAIL TO READ
+  1941						STOP			;STATUS SE P12-IOB1 PRINT
+  1942
+  1943						CLEAN			;CHECK PIO CLEAR
+  1944						CONO	PI,PIOSET+A	;SET PIO
+  1945						CONO	PI,PIOCLR+A	;TRY TO CLEAR
+  1946						CONSZ	PI,A		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  1947						STOP			;NO LIGHT=STATUS FAIL IOB1 PRINT
+  1948
+  1949						CLEAN			;CHECK FOR PI RESET
+  1950						CONO	PI,PIOSET+A	;ABILITY TO CLEAR PIO FLAG
+  1951						CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  1952						CONSZ	PI,A		;TO PIO FLAGS
+  1953						STOP
+  1954
+  1955						CLEAN			;TEST PIO SET
+  1956						CONO	PI,PIOSET	;SEE PI2 PRINT
+  1957						CONSZ	PI,A		;IT SET FLOP WITHOUT
+  1958						STOP			;A IOB BIT
+  1959
+  1960						CLEAN			;TEST PIO CLR
+  1961						CONO	PI,PIOSET+A	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  1962						CONO	PI,PIOCLR	;THE FLOP CLEARED
+  1963						CONSO	PI,A		;WITH OUT A IOB BIT
+  1964						STOP			;SEE PI2 PRINT
+  1965					>
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0056
+
+  1966
+  1967	032061				MOD71:	CLEAN			^;CHECK PIO SET
+  1968
+  1969	032061	7 000 20 0 00 634440 		CONO	634440
+  1970	032062	7 004 20 0 00 010000 		CONO	PI,10000
+  1971
+  1972	032063	7 004 20 0 00 002177 		CONO	PI,PIOSET+177	;THE PI CHANNEL FLOPS
+  1973	032064	7 004 34 0 00 000177 		CONSO	PI,177		;FAILED TO SET
+  1974						STOP			^;CHECK PI1 PRINT
+  1975
+  1976	032065	254 04 0 00 032066 		HALT	.+1
+  1977	032066	320 00 0 00 032067 		JUMP	.+1
+  1978
+  1979
+  1980	032067				MOD72:	PIO 100^	CLEAN^
+  1981	032067	7 000 20 0 00 634440 		CONO	634440
+  1982	032070	7 004 20 0 00 010000 		CONO	PI,10000
+  1983									^
+  1984	032071	7 004 20 0 00 002100 		CONO	PI,PIOSET+100	;PIO FAIL TO SET IF LIGHT OUT
+  1985	032072	7 004 34 0 00 000100 		CONSO	PI,100		;OTHERWISE FAIL TO READ
+  1986						STOP			^
+  1987	032073	254 04 0 00 032074 		HALT	.+1
+  1988	032074	320 00 0 00 032075 		JUMP	.+1
+  1989									^;STATUS SE P12-IOB1 PRINT
+  1990
+  1991						CLEAN			^
+  1992	032075	7 000 20 0 00 634440 		CONO	634440
+  1993	032076	7 004 20 0 00 010000 		CONO	PI,10000
+  1994									^;CHECK PIO CLEAR
+  1995	032077	7 004 20 0 00 002100 		CONO	PI,PIOSET+100	;SET PIO
+  1996	032100	7 004 20 0 00 001100 		CONO	PI,PIOCLR+100	;TRY TO CLEAR
+  1997	032101	7 004 30 0 00 000100 		CONSZ	PI,100		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  1998						STOP			^
+  1999	032102	254 04 0 00 032103 		HALT	.+1
+  2000	032103	320 00 0 00 032104 		JUMP	.+1
+  2001									^;NO LIGHT=STATUS FAIL IOB1 PRINT
+  2002
+  2003						CLEAN			^
+  2004	032104	7 000 20 0 00 634440 		CONO	634440
+  2005	032105	7 004 20 0 00 010000 		CONO	PI,10000
+  2006									^;CHECK FOR PI RESET
+  2007	032106	7 004 20 0 00 002100 		CONO	PI,PIOSET+100	;ABILITY TO CLEAR PIO FLAG
+  2008	032107	7 004 20 0 00 010000 		CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  2009	032110	7 004 30 0 00 000100 		CONSZ	PI,100		;TO PIO FLAGS
+  2010						STOP^
+  2011	032111	254 04 0 00 032112 		HALT	.+1
+  2012	032112	320 00 0 00 032113 		JUMP	.+1
+  2013									^
+  2014
+  2015						CLEAN			^
+  2016	032113	7 000 20 0 00 634440 		CONO	634440
+  2017	032114	7 004 20 0 00 010000 		CONO	PI,10000
+  2018									^;TEST PIO SET
+  2019	032115	7 004 20 0 00 002000 		CONO	PI,PIOSET	;SEE PI2 PRINT
+  2020	032116	7 004 30 0 00 000100 		CONSZ	PI,100		;IT SET FLOP WITHOUT
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0057
+
+  2021						STOP			^
+  2022	032117	254 04 0 00 032120 		HALT	.+1
+  2023	032120	320 00 0 00 032121 		JUMP	.+1
+  2024									^;100 IOB BIT
+  2025
+  2026						CLEAN			^
+  2027	032121	7 000 20 0 00 634440 		CONO	634440
+  2028	032122	7 004 20 0 00 010000 		CONO	PI,10000
+  2029									^;TEST PIO CLR
+  2030	032123	7 004 20 0 00 002100 		CONO	PI,PIOSET+100	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  2031	032124	7 004 20 0 00 001000 		CONO	PI,PIOCLR	;THE FLOP CLEARED
+  2032	032125	7 004 34 0 00 000100 		CONSO	PI,100		;WITH OUT 100 IOB BIT
+  2033						STOP			^
+  2034	032126	254 04 0 00 032127 		HALT	.+1
+  2035	032127	320 00 0 00 032130 		JUMP	.+1
+  2036									^;SEE PI2 PRINT
+  2037					^
+  2038						PIO 40^	CLEAN^
+  2039	032130	7 000 20 0 00 634440 		CONO	634440
+  2040	032131	7 004 20 0 00 010000 		CONO	PI,10000
+  2041									^
+  2042	032132	7 004 20 0 00 002040 		CONO	PI,PIOSET+40	;PIO FAIL TO SET IF LIGHT OUT
+  2043	032133	7 004 34 0 00 000040 		CONSO	PI,40		;OTHERWISE FAIL TO READ
+  2044						STOP			^
+  2045	032134	254 04 0 00 032135 		HALT	.+1
+  2046	032135	320 00 0 00 032136 		JUMP	.+1
+  2047									^;STATUS SE P12-IOB1 PRINT
+  2048
+  2049						CLEAN			^
+  2050	032136	7 000 20 0 00 634440 		CONO	634440
+  2051	032137	7 004 20 0 00 010000 		CONO	PI,10000
+  2052									^;CHECK PIO CLEAR
+  2053	032140	7 004 20 0 00 002040 		CONO	PI,PIOSET+40	;SET PIO
+  2054	032141	7 004 20 0 00 001040 		CONO	PI,PIOCLR+40	;TRY TO CLEAR
+  2055	032142	7 004 30 0 00 000040 		CONSZ	PI,40		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  2056						STOP			^
+  2057	032143	254 04 0 00 032144 		HALT	.+1
+  2058	032144	320 00 0 00 032145 		JUMP	.+1
+  2059									^;NO LIGHT=STATUS FAIL IOB1 PRINT
+  2060
+  2061						CLEAN			^
+  2062	032145	7 000 20 0 00 634440 		CONO	634440
+  2063	032146	7 004 20 0 00 010000 		CONO	PI,10000
+  2064									^;CHECK FOR PI RESET
+  2065	032147	7 004 20 0 00 002040 		CONO	PI,PIOSET+40	;ABILITY TO CLEAR PIO FLAG
+  2066	032150	7 004 20 0 00 010000 		CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  2067	032151	7 004 30 0 00 000040 		CONSZ	PI,40		;TO PIO FLAGS
+  2068						STOP^
+  2069	032152	254 04 0 00 032153 		HALT	.+1
+  2070	032153	320 00 0 00 032154 		JUMP	.+1
+  2071									^
+  2072
+  2073						CLEAN			^
+  2074	032154	7 000 20 0 00 634440 		CONO	634440
+  2075	032155	7 004 20 0 00 010000 		CONO	PI,10000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0058
+
+  2076									^;TEST PIO SET
+  2077	032156	7 004 20 0 00 002000 		CONO	PI,PIOSET	;SEE PI2 PRINT
+  2078	032157	7 004 30 0 00 000040 		CONSZ	PI,40		;IT SET FLOP WITHOUT
+  2079						STOP			^
+  2080	032160	254 04 0 00 032161 		HALT	.+1
+  2081	032161	320 00 0 00 032162 		JUMP	.+1
+  2082									^;40 IOB BIT
+  2083
+  2084						CLEAN			^
+  2085	032162	7 000 20 0 00 634440 		CONO	634440
+  2086	032163	7 004 20 0 00 010000 		CONO	PI,10000
+  2087									^;TEST PIO CLR
+  2088	032164	7 004 20 0 00 002040 		CONO	PI,PIOSET+40	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  2089	032165	7 004 20 0 00 001000 		CONO	PI,PIOCLR	;THE FLOP CLEARED
+  2090	032166	7 004 34 0 00 000040 		CONSO	PI,40		;WITH OUT 40 IOB BIT
+  2091						STOP			^
+  2092	032167	254 04 0 00 032170 		HALT	.+1
+  2093	032170	320 00 0 00 032171 		JUMP	.+1
+  2094									^;SEE PI2 PRINT
+  2095					^
+  2096
+  2097	032171				MOD73:	CHANEL	MOD75^
+  2098	032171	336 00 0 00 036672 		SKIPN	PI7SYS#
+  2099	032172	254 00 0 00 032440 		JRST	MOD75
+  2100									^
+  2101						PIO 20^	CLEAN^
+  2102	032173	7 000 20 0 00 634440 		CONO	634440
+  2103	032174	7 004 20 0 00 010000 		CONO	PI,10000
+  2104									^
+  2105	032175	7 004 20 0 00 002020 		CONO	PI,PIOSET+20	;PIO FAIL TO SET IF LIGHT OUT
+  2106	032176	7 004 34 0 00 000020 		CONSO	PI,20		;OTHERWISE FAIL TO READ
+  2107						STOP			^
+  2108	032177	254 04 0 00 032200 		HALT	.+1
+  2109	032200	320 00 0 00 032201 		JUMP	.+1
+  2110									^;STATUS SE P12-IOB1 PRINT
+  2111
+  2112						CLEAN			^
+  2113	032201	7 000 20 0 00 634440 		CONO	634440
+  2114	032202	7 004 20 0 00 010000 		CONO	PI,10000
+  2115									^;CHECK PIO CLEAR
+  2116	032203	7 004 20 0 00 002020 		CONO	PI,PIOSET+20	;SET PIO
+  2117	032204	7 004 20 0 00 001020 		CONO	PI,PIOCLR+20	;TRY TO CLEAR
+  2118	032205	7 004 30 0 00 000020 		CONSZ	PI,20		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  2119						STOP			^
+  2120	032206	254 04 0 00 032207 		HALT	.+1
+  2121	032207	320 00 0 00 032210 		JUMP	.+1
+  2122									^;NO LIGHT=STATUS FAIL IOB1 PRINT
+  2123
+  2124						CLEAN			^
+  2125	032210	7 000 20 0 00 634440 		CONO	634440
+  2126	032211	7 004 20 0 00 010000 		CONO	PI,10000
+  2127									^;CHECK FOR PI RESET
+  2128	032212	7 004 20 0 00 002020 		CONO	PI,PIOSET+20	;ABILITY TO CLEAR PIO FLAG
+  2129	032213	7 004 20 0 00 010000 		CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  2130	032214	7 004 30 0 00 000020 		CONSZ	PI,20		;TO PIO FLAGS
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-3
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0059
+
+  2131						STOP^
+  2132	032215	254 04 0 00 032216 		HALT	.+1
+  2133	032216	320 00 0 00 032217 		JUMP	.+1
+  2134									^
+  2135
+  2136						CLEAN			^
+  2137	032217	7 000 20 0 00 634440 		CONO	634440
+  2138	032220	7 004 20 0 00 010000 		CONO	PI,10000
+  2139									^;TEST PIO SET
+  2140	032221	7 004 20 0 00 002000 		CONO	PI,PIOSET	;SEE PI2 PRINT
+  2141	032222	7 004 30 0 00 000020 		CONSZ	PI,20		;IT SET FLOP WITHOUT
+  2142						STOP			^
+  2143	032223	254 04 0 00 032224 		HALT	.+1
+  2144	032224	320 00 0 00 032225 		JUMP	.+1
+  2145									^;20 IOB BIT
+  2146
+  2147						CLEAN			^
+  2148	032225	7 000 20 0 00 634440 		CONO	634440
+  2149	032226	7 004 20 0 00 010000 		CONO	PI,10000
+  2150									^;TEST PIO CLR
+  2151	032227	7 004 20 0 00 002020 		CONO	PI,PIOSET+20	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  2152	032230	7 004 20 0 00 001000 		CONO	PI,PIOCLR	;THE FLOP CLEARED
+  2153	032231	7 004 34 0 00 000020 		CONSO	PI,20		;WITH OUT 20 IOB BIT
+  2154						STOP			^
+  2155	032232	254 04 0 00 032233 		HALT	.+1
+  2156	032233	320 00 0 00 032234 		JUMP	.+1
+  2157									^;SEE PI2 PRINT
+  2158					^
+  2159						PIO 10^	CLEAN^
+  2160	032234	7 000 20 0 00 634440 		CONO	634440
+  2161	032235	7 004 20 0 00 010000 		CONO	PI,10000
+  2162									^
+  2163	032236	7 004 20 0 00 002010 		CONO	PI,PIOSET+10	;PIO FAIL TO SET IF LIGHT OUT
+  2164	032237	7 004 34 0 00 000010 		CONSO	PI,10		;OTHERWISE FAIL TO READ
+  2165						STOP			^
+  2166	032240	254 04 0 00 032241 		HALT	.+1
+  2167	032241	320 00 0 00 032242 		JUMP	.+1
+  2168									^;STATUS SE P12-IOB1 PRINT
+  2169
+  2170						CLEAN			^
+  2171	032242	7 000 20 0 00 634440 		CONO	634440
+  2172	032243	7 004 20 0 00 010000 		CONO	PI,10000
+  2173									^;CHECK PIO CLEAR
+  2174	032244	7 004 20 0 00 002010 		CONO	PI,PIOSET+10	;SET PIO
+  2175	032245	7 004 20 0 00 001010 		CONO	PI,PIOCLR+10	;TRY TO CLEAR
+  2176	032246	7 004 30 0 00 000010 		CONSZ	PI,10		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  2177						STOP			^
+  2178	032247	254 04 0 00 032250 		HALT	.+1
+  2179	032250	320 00 0 00 032251 		JUMP	.+1
+  2180									^;NO LIGHT=STATUS FAIL IOB1 PRINT
+  2181
+  2182						CLEAN			^
+  2183	032251	7 000 20 0 00 634440 		CONO	634440
+  2184	032252	7 004 20 0 00 010000 		CONO	PI,10000
+  2185									^;CHECK FOR PI RESET
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-4
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0060
+
+  2186	032253	7 004 20 0 00 002010 		CONO	PI,PIOSET+10	;ABILITY TO CLEAR PIO FLAG
+  2187	032254	7 004 20 0 00 010000 		CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  2188	032255	7 004 30 0 00 000010 		CONSZ	PI,10		;TO PIO FLAGS
+  2189						STOP^
+  2190	032256	254 04 0 00 032257 		HALT	.+1
+  2191	032257	320 00 0 00 032260 		JUMP	.+1
+  2192									^
+  2193
+  2194						CLEAN			^
+  2195	032260	7 000 20 0 00 634440 		CONO	634440
+  2196	032261	7 004 20 0 00 010000 		CONO	PI,10000
+  2197									^;TEST PIO SET
+  2198	032262	7 004 20 0 00 002000 		CONO	PI,PIOSET	;SEE PI2 PRINT
+  2199	032263	7 004 30 0 00 000010 		CONSZ	PI,10		;IT SET FLOP WITHOUT
+  2200						STOP			^
+  2201	032264	254 04 0 00 032265 		HALT	.+1
+  2202	032265	320 00 0 00 032266 		JUMP	.+1
+  2203									^;10 IOB BIT
+  2204
+  2205						CLEAN			^
+  2206	032266	7 000 20 0 00 634440 		CONO	634440
+  2207	032267	7 004 20 0 00 010000 		CONO	PI,10000
+  2208									^;TEST PIO CLR
+  2209	032270	7 004 20 0 00 002010 		CONO	PI,PIOSET+10	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  2210	032271	7 004 20 0 00 001000 		CONO	PI,PIOCLR	;THE FLOP CLEARED
+  2211	032272	7 004 34 0 00 000010 		CONSO	PI,10		;WITH OUT 10 IOB BIT
+  2212						STOP			^
+  2213	032273	254 04 0 00 032274 		HALT	.+1
+  2214	032274	320 00 0 00 032275 		JUMP	.+1
+  2215									^;SEE PI2 PRINT
+  2216					^
+  2217
+  2218	032275				MOD74:	PIO 4^	CLEAN^
+  2219	032275	7 000 20 0 00 634440 		CONO	634440
+  2220	032276	7 004 20 0 00 010000 		CONO	PI,10000
+  2221									^
+  2222	032277	7 004 20 0 00 002004 		CONO	PI,PIOSET+4	;PIO FAIL TO SET IF LIGHT OUT
+  2223	032300	7 004 34 0 00 000004 		CONSO	PI,4		;OTHERWISE FAIL TO READ
+  2224						STOP			^
+  2225	032301	254 04 0 00 032302 		HALT	.+1
+  2226	032302	320 00 0 00 032303 		JUMP	.+1
+  2227									^;STATUS SE P12-IOB1 PRINT
+  2228
+  2229						CLEAN			^
+  2230	032303	7 000 20 0 00 634440 		CONO	634440
+  2231	032304	7 004 20 0 00 010000 		CONO	PI,10000
+  2232									^;CHECK PIO CLEAR
+  2233	032305	7 004 20 0 00 002004 		CONO	PI,PIOSET+4	;SET PIO
+  2234	032306	7 004 20 0 00 001004 		CONO	PI,PIOCLR+4	;TRY TO CLEAR
+  2235	032307	7 004 30 0 00 000004 		CONSZ	PI,4		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  2236						STOP			^
+  2237	032310	254 04 0 00 032311 		HALT	.+1
+  2238	032311	320 00 0 00 032312 		JUMP	.+1
+  2239									^;NO LIGHT=STATUS FAIL IOB1 PRINT
+  2240
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-5
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0061
+
+  2241						CLEAN			^
+  2242	032312	7 000 20 0 00 634440 		CONO	634440
+  2243	032313	7 004 20 0 00 010000 		CONO	PI,10000
+  2244									^;CHECK FOR PI RESET
+  2245	032314	7 004 20 0 00 002004 		CONO	PI,PIOSET+4	;ABILITY TO CLEAR PIO FLAG
+  2246	032315	7 004 20 0 00 010000 		CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  2247	032316	7 004 30 0 00 000004 		CONSZ	PI,4		;TO PIO FLAGS
+  2248						STOP^
+  2249	032317	254 04 0 00 032320 		HALT	.+1
+  2250	032320	320 00 0 00 032321 		JUMP	.+1
+  2251									^
+  2252
+  2253						CLEAN			^
+  2254	032321	7 000 20 0 00 634440 		CONO	634440
+  2255	032322	7 004 20 0 00 010000 		CONO	PI,10000
+  2256									^;TEST PIO SET
+  2257	032323	7 004 20 0 00 002000 		CONO	PI,PIOSET	;SEE PI2 PRINT
+  2258	032324	7 004 30 0 00 000004 		CONSZ	PI,4		;IT SET FLOP WITHOUT
+  2259						STOP			^
+  2260	032325	254 04 0 00 032326 		HALT	.+1
+  2261	032326	320 00 0 00 032327 		JUMP	.+1
+  2262									^;4 IOB BIT
+  2263
+  2264						CLEAN			^
+  2265	032327	7 000 20 0 00 634440 		CONO	634440
+  2266	032330	7 004 20 0 00 010000 		CONO	PI,10000
+  2267									^;TEST PIO CLR
+  2268	032331	7 004 20 0 00 002004 		CONO	PI,PIOSET+4	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  2269	032332	7 004 20 0 00 001000 		CONO	PI,PIOCLR	;THE FLOP CLEARED
+  2270	032333	7 004 34 0 00 000004 		CONSO	PI,4		;WITH OUT 4 IOB BIT
+  2271						STOP			^
+  2272	032334	254 04 0 00 032335 		HALT	.+1
+  2273	032335	320 00 0 00 032336 		JUMP	.+1
+  2274									^;SEE PI2 PRINT
+  2275					^
+  2276						PIO 2^	CLEAN^
+  2277	032336	7 000 20 0 00 634440 		CONO	634440
+  2278	032337	7 004 20 0 00 010000 		CONO	PI,10000
+  2279									^
+  2280	032340	7 004 20 0 00 002002 		CONO	PI,PIOSET+2	;PIO FAIL TO SET IF LIGHT OUT
+  2281	032341	7 004 34 0 00 000002 		CONSO	PI,2		;OTHERWISE FAIL TO READ
+  2282						STOP			^
+  2283	032342	254 04 0 00 032343 		HALT	.+1
+  2284	032343	320 00 0 00 032344 		JUMP	.+1
+  2285									^;STATUS SE P12-IOB1 PRINT
+  2286
+  2287						CLEAN			^
+  2288	032344	7 000 20 0 00 634440 		CONO	634440
+  2289	032345	7 004 20 0 00 010000 		CONO	PI,10000
+  2290									^;CHECK PIO CLEAR
+  2291	032346	7 004 20 0 00 002002 		CONO	PI,PIOSET+2	;SET PIO
+  2292	032347	7 004 20 0 00 001002 		CONO	PI,PIOCLR+2	;TRY TO CLEAR
+  2293	032350	7 004 30 0 00 000002 		CONSZ	PI,2		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  2294						STOP			^
+  2295	032351	254 04 0 00 032352 		HALT	.+1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-6
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0062
+
+  2296	032352	320 00 0 00 032353 		JUMP	.+1
+  2297									^;NO LIGHT=STATUS FAIL IOB1 PRINT
+  2298
+  2299						CLEAN			^
+  2300	032353	7 000 20 0 00 634440 		CONO	634440
+  2301	032354	7 004 20 0 00 010000 		CONO	PI,10000
+  2302									^;CHECK FOR PI RESET
+  2303	032355	7 004 20 0 00 002002 		CONO	PI,PIOSET+2	;ABILITY TO CLEAR PIO FLAG
+  2304	032356	7 004 20 0 00 010000 		CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  2305	032357	7 004 30 0 00 000002 		CONSZ	PI,2		;TO PIO FLAGS
+  2306						STOP^
+  2307	032360	254 04 0 00 032361 		HALT	.+1
+  2308	032361	320 00 0 00 032362 		JUMP	.+1
+  2309									^
+  2310
+  2311						CLEAN			^
+  2312	032362	7 000 20 0 00 634440 		CONO	634440
+  2313	032363	7 004 20 0 00 010000 		CONO	PI,10000
+  2314									^;TEST PIO SET
+  2315	032364	7 004 20 0 00 002000 		CONO	PI,PIOSET	;SEE PI2 PRINT
+  2316	032365	7 004 30 0 00 000002 		CONSZ	PI,2		;IT SET FLOP WITHOUT
+  2317						STOP			^
+  2318	032366	254 04 0 00 032367 		HALT	.+1
+  2319	032367	320 00 0 00 032370 		JUMP	.+1
+  2320									^;2 IOB BIT
+  2321
+  2322						CLEAN			^
+  2323	032370	7 000 20 0 00 634440 		CONO	634440
+  2324	032371	7 004 20 0 00 010000 		CONO	PI,10000
+  2325									^;TEST PIO CLR
+  2326	032372	7 004 20 0 00 002002 		CONO	PI,PIOSET+2	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  2327	032373	7 004 20 0 00 001000 		CONO	PI,PIOCLR	;THE FLOP CLEARED
+  2328	032374	7 004 34 0 00 000002 		CONSO	PI,2		;WITH OUT 2 IOB BIT
+  2329						STOP			^
+  2330	032375	254 04 0 00 032376 		HALT	.+1
+  2331	032376	320 00 0 00 032377 		JUMP	.+1
+  2332									^;SEE PI2 PRINT
+  2333					^
+  2334						PIO 1^	CLEAN^
+  2335	032377	7 000 20 0 00 634440 		CONO	634440
+  2336	032400	7 004 20 0 00 010000 		CONO	PI,10000
+  2337									^
+  2338	032401	7 004 20 0 00 002001 		CONO	PI,PIOSET+1	;PIO FAIL TO SET IF LIGHT OUT
+  2339	032402	7 004 34 0 00 000001 		CONSO	PI,1		;OTHERWISE FAIL TO READ
+  2340						STOP			^
+  2341	032403	254 04 0 00 032404 		HALT	.+1
+  2342	032404	320 00 0 00 032405 		JUMP	.+1
+  2343									^;STATUS SE P12-IOB1 PRINT
+  2344
+  2345						CLEAN			^
+  2346	032405	7 000 20 0 00 634440 		CONO	634440
+  2347	032406	7 004 20 0 00 010000 		CONO	PI,10000
+  2348									^;CHECK PIO CLEAR
+  2349	032407	7 004 20 0 00 002001 		CONO	PI,PIOSET+1	;SET PIO
+  2350	032410	7 004 20 0 00 001001 		CONO	PI,PIOCLR+1	;TRY TO CLEAR
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-7
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0063
+
+  2351	032411	7 004 30 0 00 000001 		CONSZ	PI,1		;LIGHT=FAIL TO CLEAR PI2 PRINT
+  2352						STOP			^
+  2353	032412	254 04 0 00 032413 		HALT	.+1
+  2354	032413	320 00 0 00 032414 		JUMP	.+1
+  2355									^;NO LIGHT=STATUS FAIL IOB1 PRINT
+  2356
+  2357						CLEAN			^
+  2358	032414	7 000 20 0 00 634440 		CONO	634440
+  2359	032415	7 004 20 0 00 010000 		CONO	PI,10000
+  2360									^;CHECK FOR PI RESET
+  2361	032416	7 004 20 0 00 002001 		CONO	PI,PIOSET+1	;ABILITY TO CLEAR PIO FLAG
+  2362	032417	7 004 20 0 00 010000 		CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+  2363	032420	7 004 30 0 00 000001 		CONSZ	PI,1		;TO PIO FLAGS
+  2364						STOP^
+  2365	032421	254 04 0 00 032422 		HALT	.+1
+  2366	032422	320 00 0 00 032423 		JUMP	.+1
+  2367									^
+  2368
+  2369						CLEAN			^
+  2370	032423	7 000 20 0 00 634440 		CONO	634440
+  2371	032424	7 004 20 0 00 010000 		CONO	PI,10000
+  2372									^;TEST PIO SET
+  2373	032425	7 004 20 0 00 002000 		CONO	PI,PIOSET	;SEE PI2 PRINT
+  2374	032426	7 004 30 0 00 000001 		CONSZ	PI,1		;IT SET FLOP WITHOUT
+  2375						STOP			^
+  2376	032427	254 04 0 00 032430 		HALT	.+1
+  2377	032430	320 00 0 00 032431 		JUMP	.+1
+  2378									^;1 IOB BIT
+  2379
+  2380						CLEAN			^
+  2381	032431	7 000 20 0 00 634440 		CONO	634440
+  2382	032432	7 004 20 0 00 010000 		CONO	PI,10000
+  2383									^;TEST PIO CLR
+  2384	032433	7 004 20 0 00 002001 		CONO	PI,PIOSET+1	;PERHAPS PI RESET OCCURED (NO IOB-23)
+  2385	032434	7 004 20 0 00 001000 		CONO	PI,PIOCLR	;THE FLOP CLEARED
+  2386	032435	7 004 34 0 00 000001 		CONSO	PI,1		;WITH OUT 1 IOB BIT
+  2387						STOP			^
+  2388	032436	254 04 0 00 032437 		HALT	.+1
+  2389	032437	320 00 0 00 032440 		JUMP	.+1
+  2390									^;SEE PI2 PRINT
+  2391					^
+  2392	032440				MOD75:	CLEAN^
+  2393	032440	7 000 20 0 00 634440 		CONO	634440
+  2394	032441	7 004 20 0 00 010000 		CONO	PI,10000
+  2395									^
+  2396	032442				MOD76:	CLEAN^
+  2397	032442	7 000 20 0 00 634440 		CONO	634440
+  2398	032443	7 004 20 0 00 010000 		CONO	PI,10000
+  2399									^
+  2400	032444	7 004 20 0 00 002100 		CONO	PI,PIOSET+100	;PI RESET OCCURED
+  2401	032445	7 004 20 0 00 000000 		CONO	PI,0		;WITH OUT IOB-23
+  2402	032446	7 004 34 0 00 000100 		CONSO	PI,100		;SEE PI1 PRINT
+  2403						STOP^
+  2404	032447	254 04 0 00 032450 		HALT	.+1
+  2405	032450	320 00 0 00 032451 		JUMP	.+1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 25-8
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0064
+
+  2406									^
+  2407
+  2408						CLEAN			^;PI RESET OCCURED
+  2409
+  2410	032451	7 000 20 0 00 634440 		CONO	634440
+  2411	032452	7 004 20 0 00 010000 		CONO	PI,10000
+  2412
+  2413	032453	7 004 20 0 00 002100 		CONO	PI,PIOSET+100	;WITH OUT PI SEL
+  2414	032454	7 774 20 0 00 001000 		CONO	ME,1000		;SEE PI1 PRINT
+  2415	032455	7 004 34 0 00 000100 		CONSO	PI,100
+  2416						STOP^
+  2417	032456	254 04 0 00 032457 		HALT	.+1
+  2418	032457	320 00 0 00 032460 		JUMP	.+1
+  2419									^
+  2420
+  2421						CLEAN^
+  2422	032460	7 000 20 0 00 634440 		CONO	634440
+  2423	032461	7 004 20 0 00 010000 		CONO	PI,10000
+  2424									^
+  2425	032462	7 004 20 0 00 002100 		CONO	PI,PIOSET+100	;CHECK SELECTION
+  2426	032463	7 774 20 0 00 001100 		CONO	ME,PIOCLR+100	;ON CONO SETL. SEE
+  2427	032464	7 004 34 0 00 000100 		CONSO	PI,100		;PI1 PRINT  CONO ME
+  2428						STOP			^;SHOULD NOT EFFECT PI
+  2429
+  2430	032465	254 04 0 00 032466 		HALT	.+1
+  2431	032466	320 00 0 00 032467 		JUMP	.+1
+  2432
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 26
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0065
+
+  2433	032467				MOD77:	CLEAN^
+  2434	032467	7 000 20 0 00 634440 		CONO	634440
+  2435	032470	7 004 20 0 00 010000 		CONO	PI,10000
+  2436									^
+  2437	032471	7 004 20 0 00 000200 		CONO	PI,ACT		;SET ACTIVE THEN
+  2438	032472	7 004 20 0 00 010000 		CONO	PI,10000	;TRY TO CLEAR VIA PI RESET
+  2439	032473	7 004 30 0 00 000200 		CONSZ	PI,200		;FAIL TO CLEAR  SEE P11 PRINT
+  2440						STOP			^;THE PI ACT FLAG
+  2441
+  2442	032474	254 04 0 00 032475 		HALT	.+1
+  2443	032475	320 00 0 00 032476 		JUMP	.+1
+  2444
+  2445						CLEAN^
+  2446	032476	7 000 20 0 00 634440 		CONO	634440
+  2447	032477	7 004 20 0 00 010000 		CONO	PI,10000
+  2448									^
+  2449	032500	7 004 20 0 00 000200 		CONO	PI,ACT		;SET ACTIVE THEN
+  2450	032501	7 004 20 0 00 000400 		CONO	PI,400		;TRY TO CLEAR VIA CONO
+  2451	032502	7 004 30 0 00 000200 		CONSZ	PI,200		;AND BIT27 SEE PI1
+  2452						STOP			^;PRINT ACTIVE FLAG
+  2453
+  2454	032503	254 04 0 00 032504 		HALT	.+1
+  2455	032504	320 00 0 00 032505 		JUMP	.+1
+  2456
+  2457						CLEAN^
+  2458	032505	7 000 20 0 00 634440 		CONO	634440
+  2459	032506	7 004 20 0 00 010000 		CONO	PI,10000
+  2460									^
+  2461	032507	7 004 20 0 00 000200 		CONO	PI,ACT		;SEE ACT VIA CONO BIT 28
+  2462	032510	7 004 34 0 00 000200 		CONSO	PI,200		;LIGHT=0 FAIL TO SET
+  2463						STOP			^;LIGHT=(1) FAIL TO READ PI1-IOB1
+  2464
+  2465	032511	254 04 0 00 032512 		HALT	.+1
+  2466	032512	320 00 0 00 032513 		JUMP	.+1
+  2467
+  2468						CLEAN^
+  2469	032513	7 000 20 0 00 634440 		CONO	634440
+  2470	032514	7 004 20 0 00 010000 		CONO	PI,10000
+  2471									^
+  2472	032515	7 004 20 0 00 000200 		CONO	PI,ACT		;SEE ABOVE
+  2473	032516	7 004 20 0 00 000200 		CONO	PI,ACT
+  2474	032517	7 004 34 0 00 000200 		CONSO	PI,200
+  2475						STOP			^;PI ACT FAIL
+  2476
+  2477	032520	254 04 0 00 032521 		HALT	.+1
+  2478	032521	320 00 0 00 032522 		JUMP	.+1
+  2479
+  2480
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 27
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0066
+
+  2481					DEFINE	NOTPIR	(A)<
+  2482						CLEAN			;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2483						CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2484						CONSZ	PI,A		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2485						STOP			;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2486					>
+  2487	032522				MOD78:	BLURB^
+  2488					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  2489					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  2490					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  2491					;INSTRUCTION
+  2492					^
+  2493					;CHECK CHANNEL 1, PIR1 FLOP OR RI REQ1 LEVEL
+  2494						NOTPIR	40000^
+  2495						CLEAN			^
+  2496	032522	7 000 20 0 00 634440 		CONO	634440
+  2497	032523	7 004 20 0 00 010000 		CONO	PI,10000
+  2498									^;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2499	032524	7 004 20 0 00 000200 		CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2500	032525	7 004 30 0 00 040000 		CONSZ	PI,40000		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2501						STOP			^
+  2502	032526	254 04 0 00 032527 		HALT	.+1
+  2503	032527	320 00 0 00 032530 		JUMP	.+1
+  2504									^;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2505					^
+  2506					;CHECK CHANNEL 2, PIR2  FLOP OR PI REQ2 LEVEL
+  2507						NOTPIR	20000^
+  2508						CLEAN			^
+  2509	032530	7 000 20 0 00 634440 		CONO	634440
+  2510	032531	7 004 20 0 00 010000 		CONO	PI,10000
+  2511									^;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2512	032532	7 004 20 0 00 000200 		CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2513	032533	7 004 30 0 00 020000 		CONSZ	PI,20000		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2514						STOP			^
+  2515	032534	254 04 0 00 032535 		HALT	.+1
+  2516	032535	320 00 0 00 032536 		JUMP	.+1
+  2517									^;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2518					^
+  2519					;CHECK CHANNEL 3, PIR3 FLOP OR PI REQ3 LEVEL
+  2520						NOTPIR	10000^
+  2521						CLEAN			^
+  2522	032536	7 000 20 0 00 634440 		CONO	634440
+  2523	032537	7 004 20 0 00 010000 		CONO	PI,10000
+  2524									^;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2525	032540	7 004 20 0 00 000200 		CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2526	032541	7 004 30 0 00 010000 		CONSZ	PI,10000		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2527						STOP			^
+  2528	032542	254 04 0 00 032543 		HALT	.+1
+  2529	032543	320 00 0 00 032544 		JUMP	.+1
+  2530									^;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2531					^
+  2532					;CHECK CHANNEL 4, PIR4 FLOP OR PI REQ4 LEVEL
+  2533						NOTPIR	4000^
+  2534						CLEAN			^
+  2535	032544	7 000 20 0 00 634440 		CONO	634440
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 27-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0067
+
+  2536	032545	7 004 20 0 00 010000 		CONO	PI,10000
+  2537									^;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2538	032546	7 004 20 0 00 000200 		CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2539	032547	7 004 30 0 00 004000 		CONSZ	PI,4000		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2540						STOP			^
+  2541	032550	254 04 0 00 032551 		HALT	.+1
+  2542	032551	320 00 0 00 032552 		JUMP	.+1
+  2543									^;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2544					^
+  2545					;CHECK CHANNEL 5, PIR5 FLOP OR PI REQ5 LEVEL
+  2546						NOTPIR	2000^
+  2547						CLEAN			^
+  2548	032552	7 000 20 0 00 634440 		CONO	634440
+  2549	032553	7 004 20 0 00 010000 		CONO	PI,10000
+  2550									^;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2551	032554	7 004 20 0 00 000200 		CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2552	032555	7 004 30 0 00 002000 		CONSZ	PI,2000		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2553						STOP			^
+  2554	032556	254 04 0 00 032557 		HALT	.+1
+  2555	032557	320 00 0 00 032560 		JUMP	.+1
+  2556									^;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2557					^
+  2558					;CHECK CHANNEL 6, PIR6 FLOP OR PI REQ6 LEVEL
+  2559						NOTPIR	1000^
+  2560						CLEAN			^
+  2561	032560	7 000 20 0 00 634440 		CONO	634440
+  2562	032561	7 004 20 0 00 010000 		CONO	PI,10000
+  2563									^;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2564	032562	7 004 20 0 00 000200 		CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2565	032563	7 004 30 0 00 001000 		CONSZ	PI,1000		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2566						STOP			^
+  2567	032564	254 04 0 00 032565 		HALT	.+1
+  2568	032565	320 00 0 00 032566 		JUMP	.+1
+  2569									^;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2570					^
+  2571					;CHECK CHANNEL 7, PIR 7 FLOP OR PI REQ7 LEVEL
+  2572						NOTPIR	400^
+  2573						CLEAN			^
+  2574	032566	7 000 20 0 00 634440 		CONO	634440
+  2575	032567	7 004 20 0 00 010000 		CONO	PI,10000
+  2576									^;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+  2577	032570	7 004 20 0 00 000200 		CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+  2578	032571	7 004 30 0 00 000400 		CONSZ	PI,400		;PIR (1) INPUT TO AND GATE OF PIH (0)
+  2579						STOP			^
+  2580	032572	254 04 0 00 032573 		HALT	.+1
+  2581	032573	320 00 0 00 032574 		JUMP	.+1
+  2582									^;BOTTEM OF PAGE.  ALSO PIR-FLOP
+  2583					^
+  2584
+  2585					DEFINE	NOTREQ	(A,B)<
+  2586						CLEAN			;A TEST OF PI OK TO PREVENT INTERRUPT
+  2587						CONO	PI,PIREQ+A	;ACTIVE CLEARED, REQUEST FLAG SET
+  2588						CONSZ	PI,B		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2589						STOP			;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2590					>
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 27-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0068
+
+  2591
+  2592	032574				MOD79:	BLURB^
+  2593					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  2594					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  2595					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  2596					;INSTRUCTION
+  2597					^
+  2598					;TEST PI ACT ABILITY TO PREVENT PI REQ1, INTERRUPT VIA ACTIVE
+  2599						NOTREQ	100,40000^
+  2600						CLEAN			^
+  2601	032574	7 000 20 0 00 634440 		CONO	634440
+  2602	032575	7 004 20 0 00 010000 		CONO	PI,10000
+  2603									^;100 TEST OF PI OK TO PREVENT INTERRUPT
+  2604	032576	7 004 20 0 00 004100 		CONO	PI,PIREQ+100	;ACTIVE CLEARED, REQUEST FLAG SET
+  2605	032577	7 004 30 0 00 040000 		CONSZ	PI,40000		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2606						STOP			^
+  2607	032600	254 04 0 00 032601 		HALT	.+1
+  2608	032601	320 00 0 00 032602 		JUMP	.+1
+  2609									^;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2610					^
+  2611					;TEST PIOK2 ABILITY TO PREVENT PI REQ2, INTERRUPT
+  2612						NOTREQ	40,20000^
+  2613						CLEAN			^
+  2614	032602	7 000 20 0 00 634440 		CONO	634440
+  2615	032603	7 004 20 0 00 010000 		CONO	PI,10000
+  2616									^;40 TEST OF PI OK TO PREVENT INTERRUPT
+  2617	032604	7 004 20 0 00 004040 		CONO	PI,PIREQ+40	;ACTIVE CLEARED, REQUEST FLAG SET
+  2618	032605	7 004 30 0 00 020000 		CONSZ	PI,20000		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2619						STOP			^
+  2620	032606	254 04 0 00 032607 		HALT	.+1
+  2621	032607	320 00 0 00 032610 		JUMP	.+1
+  2622									^;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2623					^
+  2624					;TEST PIOK3 ABILITY TO PREVENT PI REQ3, INTERRUPT
+  2625						NOTREQ	20,10000^
+  2626						CLEAN			^
+  2627	032610	7 000 20 0 00 634440 		CONO	634440
+  2628	032611	7 004 20 0 00 010000 		CONO	PI,10000
+  2629									^;20 TEST OF PI OK TO PREVENT INTERRUPT
+  2630	032612	7 004 20 0 00 004020 		CONO	PI,PIREQ+20	;ACTIVE CLEARED, REQUEST FLAG SET
+  2631	032613	7 004 30 0 00 010000 		CONSZ	PI,10000		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2632						STOP			^
+  2633	032614	254 04 0 00 032615 		HALT	.+1
+  2634	032615	320 00 0 00 032616 		JUMP	.+1
+  2635									^;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2636					^
+  2637					;TEST PIOK4 ABILITY TO PREVENT PI REQ4, INTERRUPT
+  2638						NOTREQ	10,4000^
+  2639						CLEAN			^
+  2640	032616	7 000 20 0 00 634440 		CONO	634440
+  2641	032617	7 004 20 0 00 010000 		CONO	PI,10000
+  2642									^;10 TEST OF PI OK TO PREVENT INTERRUPT
+  2643	032620	7 004 20 0 00 004010 		CONO	PI,PIREQ+10	;ACTIVE CLEARED, REQUEST FLAG SET
+  2644	032621	7 004 30 0 00 004000 		CONSZ	PI,4000		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2645						STOP			^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 27-3
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0069
+
+  2646	032622	254 04 0 00 032623 		HALT	.+1
+  2647	032623	320 00 0 00 032624 		JUMP	.+1
+  2648									^;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2649					^
+  2650					;TEST PIOK5 ABILITY TO PREVENT PI REQ5, INTERRUPT
+  2651						NOTREQ	4,2000^
+  2652						CLEAN			^
+  2653	032624	7 000 20 0 00 634440 		CONO	634440
+  2654	032625	7 004 20 0 00 010000 		CONO	PI,10000
+  2655									^;4 TEST OF PI OK TO PREVENT INTERRUPT
+  2656	032626	7 004 20 0 00 004004 		CONO	PI,PIREQ+4	;ACTIVE CLEARED, REQUEST FLAG SET
+  2657	032627	7 004 30 0 00 002000 		CONSZ	PI,2000		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2658						STOP			^
+  2659	032630	254 04 0 00 032631 		HALT	.+1
+  2660	032631	320 00 0 00 032632 		JUMP	.+1
+  2661									^;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2662					^
+  2663					;TEST PIOK6 ABILITY TO PREVENT PI REQ6, INTERRUPT
+  2664						NOTREQ 2,1000^
+  2665						CLEAN			^
+  2666	032632	7 000 20 0 00 634440 		CONO	634440
+  2667	032633	7 004 20 0 00 010000 		CONO	PI,10000
+  2668									^;2 TEST OF PI OK TO PREVENT INTERRUPT
+  2669	032634	7 004 20 0 00 004002 		CONO	PI,PIREQ+2	;ACTIVE CLEARED, REQUEST FLAG SET
+  2670	032635	7 004 30 0 00 001000 		CONSZ	PI,1000		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2671						STOP			^
+  2672	032636	254 04 0 00 032637 		HALT	.+1
+  2673	032637	320 00 0 00 032640 		JUMP	.+1
+  2674									^;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2675					^
+  2676					;TEST PIOK7 ABILITY TO PREVENT PI REQ7, INTERRUPT
+  2677						NOTREQ	1,400^
+  2678						CLEAN			^
+  2679	032640	7 000 20 0 00 634440 		CONO	634440
+  2680	032641	7 004 20 0 00 010000 		CONO	PI,10000
+  2681									^;1 TEST OF PI OK TO PREVENT INTERRUPT
+  2682	032642	7 004 20 0 00 004001 		CONO	PI,PIREQ+1	;ACTIVE CLEARED, REQUEST FLAG SET
+  2683	032643	7 004 30 0 00 000400 		CONSZ	PI,400		;INTR OCCURED PIOK INPUT, PIOK TO PI
+  2684						STOP			^
+  2685	032644	254 04 0 00 032645 		HALT	.+1
+  2686	032645	320 00 0 00 032646 		JUMP	.+1
+  2687									^;REQ FAIL.  SEE BOTTEM PI2 PRINT
+  2688					^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 28
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0070
+
+  2689
+  2690					DEFINE	PIRCLR	(A)<
+  2691						CLEAN
+  2692						CONO	PI,PIREQ+A	;SET REQUEST FLOP BUT
+  2693						SETZ			;NOT ACTIVE THEN CLEAR
+  2694						CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+  2695						SKIPE			;PI RESET FAILED TO CLEAR
+  2696						STOP			;THE PIR FLAG.`SEE PI2 PRINT
+  2697					>
+  2698
+  2699			000100		ZZ=100				;CHECK CLEAR TO PIR FLAGS
+  2700						REPEAT	7,<
+  2701						PIRCLR	ZZ
+  2702						ZZ=ZZ/2>
+  2703
+  2704						PIRCLR	ZZ^
+  2705						CLEAN^
+  2706	032646	7 000 20 0 00 634440 		CONO	634440
+  2707	032647	7 004 20 0 00 010000 		CONO	PI,10000
+  2708									^
+  2709	032650	7 004 20 0 00 004100 		CONO	PI,PIREQ+ZZ	;SET REQUEST FLOP BUT
+  2710	032651	400 00 0 00 000000 		SETZ			;NOT ACTIVE THEN CLEAR
+  2711	032652	7 004 20 0 00 010200 		CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+  2712	032653	332 00 0 00 000000 		SKIPE			;PI RESET FAILED TO CLEAR
+  2713						STOP			^
+  2714	032654	254 04 0 00 032655 		HALT	.+1
+  2715	032655	320 00 0 00 032656 		JUMP	.+1
+  2716									^;THE PIR FLAG.`SEE PI2 PRINT
+  2717					^
+  2718			000040			ZZ=ZZ/2
+  2719
+  2720						PIRCLR	ZZ^
+  2721						CLEAN^
+  2722	032656	7 000 20 0 00 634440 		CONO	634440
+  2723	032657	7 004 20 0 00 010000 		CONO	PI,10000
+  2724									^
+  2725	032660	7 004 20 0 00 004040 		CONO	PI,PIREQ+ZZ	;SET REQUEST FLOP BUT
+  2726	032661	400 00 0 00 000000 		SETZ			;NOT ACTIVE THEN CLEAR
+  2727	032662	7 004 20 0 00 010200 		CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+  2728	032663	332 00 0 00 000000 		SKIPE			;PI RESET FAILED TO CLEAR
+  2729						STOP			^
+  2730	032664	254 04 0 00 032665 		HALT	.+1
+  2731	032665	320 00 0 00 032666 		JUMP	.+1
+  2732									^;THE PIR FLAG.`SEE PI2 PRINT
+  2733					^
+  2734			000020			ZZ=ZZ/2
+  2735
+  2736						PIRCLR	ZZ^
+  2737						CLEAN^
+  2738	032666	7 000 20 0 00 634440 		CONO	634440
+  2739	032667	7 004 20 0 00 010000 		CONO	PI,10000
+  2740									^
+  2741	032670	7 004 20 0 00 004020 		CONO	PI,PIREQ+ZZ	;SET REQUEST FLOP BUT
+  2742	032671	400 00 0 00 000000 		SETZ			;NOT ACTIVE THEN CLEAR
+  2743	032672	7 004 20 0 00 010200 		CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 28-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0071
+
+  2744	032673	332 00 0 00 000000 		SKIPE			;PI RESET FAILED TO CLEAR
+  2745						STOP			^
+  2746	032674	254 04 0 00 032675 		HALT	.+1
+  2747	032675	320 00 0 00 032676 		JUMP	.+1
+  2748									^;THE PIR FLAG.`SEE PI2 PRINT
+  2749					^
+  2750			000010			ZZ=ZZ/2
+  2751
+  2752						PIRCLR	ZZ^
+  2753						CLEAN^
+  2754	032676	7 000 20 0 00 634440 		CONO	634440
+  2755	032677	7 004 20 0 00 010000 		CONO	PI,10000
+  2756									^
+  2757	032700	7 004 20 0 00 004010 		CONO	PI,PIREQ+ZZ	;SET REQUEST FLOP BUT
+  2758	032701	400 00 0 00 000000 		SETZ			;NOT ACTIVE THEN CLEAR
+  2759	032702	7 004 20 0 00 010200 		CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+  2760	032703	332 00 0 00 000000 		SKIPE			;PI RESET FAILED TO CLEAR
+  2761						STOP			^
+  2762	032704	254 04 0 00 032705 		HALT	.+1
+  2763	032705	320 00 0 00 032706 		JUMP	.+1
+  2764									^;THE PIR FLAG.`SEE PI2 PRINT
+  2765					^
+  2766			000004			ZZ=ZZ/2
+  2767
+  2768						PIRCLR	ZZ^
+  2769						CLEAN^
+  2770	032706	7 000 20 0 00 634440 		CONO	634440
+  2771	032707	7 004 20 0 00 010000 		CONO	PI,10000
+  2772									^
+  2773	032710	7 004 20 0 00 004004 		CONO	PI,PIREQ+ZZ	;SET REQUEST FLOP BUT
+  2774	032711	400 00 0 00 000000 		SETZ			;NOT ACTIVE THEN CLEAR
+  2775	032712	7 004 20 0 00 010200 		CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+  2776	032713	332 00 0 00 000000 		SKIPE			;PI RESET FAILED TO CLEAR
+  2777						STOP			^
+  2778	032714	254 04 0 00 032715 		HALT	.+1
+  2779	032715	320 00 0 00 032716 		JUMP	.+1
+  2780									^;THE PIR FLAG.`SEE PI2 PRINT
+  2781					^
+  2782			000002			ZZ=ZZ/2
+  2783
+  2784						PIRCLR	ZZ^
+  2785						CLEAN^
+  2786	032716	7 000 20 0 00 634440 		CONO	634440
+  2787	032717	7 004 20 0 00 010000 		CONO	PI,10000
+  2788									^
+  2789	032720	7 004 20 0 00 004002 		CONO	PI,PIREQ+ZZ	;SET REQUEST FLOP BUT
+  2790	032721	400 00 0 00 000000 		SETZ			;NOT ACTIVE THEN CLEAR
+  2791	032722	7 004 20 0 00 010200 		CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+  2792	032723	332 00 0 00 000000 		SKIPE			;PI RESET FAILED TO CLEAR
+  2793						STOP			^
+  2794	032724	254 04 0 00 032725 		HALT	.+1
+  2795	032725	320 00 0 00 032726 		JUMP	.+1
+  2796									^;THE PIR FLAG.`SEE PI2 PRINT
+  2797					^
+  2798			000001			ZZ=ZZ/2
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 28-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0072
+
+  2799
+  2800						PIRCLR	ZZ^
+  2801						CLEAN^
+  2802	032726	7 000 20 0 00 634440 		CONO	634440
+  2803	032727	7 004 20 0 00 010000 		CONO	PI,10000
+  2804									^
+  2805	032730	7 004 20 0 00 004001 		CONO	PI,PIREQ+ZZ	;SET REQUEST FLOP BUT
+  2806	032731	400 00 0 00 000000 		SETZ			;NOT ACTIVE THEN CLEAR
+  2807	032732	7 004 20 0 00 010200 		CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+  2808	032733	332 00 0 00 000000 		SKIPE			;PI RESET FAILED TO CLEAR
+  2809						STOP			^
+  2810	032734	254 04 0 00 032735 		HALT	.+1
+  2811	032735	320 00 0 00 032736 		JUMP	.+1
+  2812									^;THE PIR FLAG.`SEE PI2 PRINT
+  2813					^
+  2814			000000			ZZ=ZZ/2
+  2815
+  2816					DEFINE	FILAC<
+  2817						MOVE	17,[MOVEI 17]	;FILL ACS WITH
+  2818						MOVEM	17,(17)		;MOVEI TO AC 0
+  2819						CAME	17,[MOVEI 0]	;THE CURRENT LOC
+  2820						SOJA	17,.-2
+  2821						MOVE	17,[MOVEI 17]
+  2822					>
+  2823
+  2824						FILAC^
+  2825	032736	200 17 0 00 036475 		MOVE	17,[MOVEI 17]	;FILL ACS WITH
+  2826	032737	202 17 0 17 000000 		MOVEM	17,(17)		;MOVEI TO AC 0
+  2827	032740	312 17 0 00 036476 		CAME	17,[MOVEI 0]	;THE CURRENT LOC
+  2828	032741	364 17 0 00 032737 		SOJA	17,.-2
+  2829	032742	200 17 0 00 036475 		MOVE	17,[MOVEI 17]
+  2830					^
+  2831
+  2832						CLEAN			^;CHECK PC+1 INHIBIT ON INTERRUPT
+  2833
+  2834	032743	7 000 20 0 00 634440 		CONO	634440
+  2835	032744	7 004 20 0 00 010000 		CONO	PI,10000
+  2836
+  2837	032745	200 00 0 00 036476 		MOVE	[MOVEI]
+  2838	032746	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+  2839	032747	334 00 0 00 000000 		SKIPA			;PC+1 INH ON PC1 PRINT FAIL
+  2840						STOP			^;SEE P1 CYC(1) INPUT
+  2841
+  2842	032750	254 04 0 00 032751 		HALT	.+1
+  2843	032751	320 00 0 00 032752 		JUMP	.+1
+  2844
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 29
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0073
+
+  2845						BLURB^
+  2846					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  2847					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  2848					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  2849					;INSTRUCTION
+  2850					^
+  2851	032752				MOD80:	CLEAN^
+  2852	032752	7 000 20 0 00 634440 		CONO	634440
+  2853	032753	7 004 20 0 00 010000 		CONO	PI,10000
+  2854									^
+  2855	032754	200 00 0 00 036476 		MOVE	[MOVEI]		;IF LOC 0 EXECUTED C(0)=0
+  2856	032755	7 004 20 0 00 004300 		CONO PI,ACT+PIREQ+100	;CAUSE AN INTERRUPT
+  2857	032756	336 00 0 00 000000 		SKIPN	0		;MA FM PICH (1) PULSE FAIL
+  2858						STOP			^;SEE MA1 PRINT
+  2859
+  2860	032757	254 04 0 00 032760 		HALT	.+1
+  2861	032760	320 00 0 00 032761 		JUMP	.+1
+  2862
+  2863						CLEAN^
+  2864	032761	7 000 20 0 00 634440 		CONO	634440
+  2865	032762	7 004 20 0 00 010000 		CONO	PI,10000
+  2866									^
+  2867	032763	200 00 0 00 036476 		MOVE	[MOVEI]
+  2868	032764	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT IF MA
+  2869	032765	306 00 0 00 000040 		CAIN	40		;34 SET FAIL C(0)=40
+  2870						STOP			^;SEE MA1 PRINT
+  2871
+  2872	032766	254 04 0 00 032767 		HALT	.+1
+  2873	032767	320 00 0 00 032770 		JUMP	.+1
+  2874
+  2875						CLEAN^
+  2876	032770	7 000 20 0 00 634440 		CONO	634440
+  2877	032771	7 004 20 0 00 010000 		CONO	PI,10000
+  2878									^
+  2879	032772	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+  2880	032773	306 00 0 00 000002 		CAIN	2		;MA 30 SET FAILED
+  2881						STOP			^;SEE MA1 PRINT
+  2882
+  2883	032774	254 04 0 00 032775 		HALT	.+1
+  2884	032775	320 00 0 00 032776 		JUMP	.+1
+  2885
+  2886						CLEAN^
+  2887	032776	7 000 20 0 00 634440 		CONO	634440
+  2888	032777	7 004 20 0 00 010000 		CONO	PI,10000
+  2889									^
+  2890	033000	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+  2891	033001	306 00 0 00 000046 		CAIN	46		;MA 33 SET OUCCRED ON CH1
+  2892						STOP			^;SEE MA1 PRINT
+  2893
+  2894	033002	254 04 0 00 033003 		HALT	.+1
+  2895	033003	320 00 0 00 033004 		JUMP	.+1
+  2896
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 30
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0074
+
+  2897	033004				MOD81:	CLEAN^
+  2898	033004	7 000 20 0 00 634440 		CONO	634440
+  2899	033005	7 004 20 0 00 010000 		CONO	PI,10000
+  2900									^
+  2901	033006	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+  2902	033007	306 00 0 00 000052 		CAIN	52		;MA 32 SET OCCURED ON CH1
+  2903						STOP			^;SEE MA1 PRINT
+  2904
+  2905	033010	254 04 0 00 033011 		HALT	.+1
+  2906	033011	320 00 0 00 033012 		JUMP	.+1
+  2907
+  2908
+  2909						CLEAN^
+  2910	033012	7 000 20 0 00 634440 		CONO	634440
+  2911	033013	7 004 20 0 00 010000 		CONO	PI,10000
+  2912									^
+  2913	033014	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+  2914	033015	306 00 0 00 000043 		CAIN	43		;MA 35 SET OUCCURED ON CH1
+  2915						STOP			^;SEE MA1 PRINT
+  2916
+  2917	033016	254 04 0 00 033017 		HALT	.+1
+  2918	033017	320 00 0 00 033020 		JUMP	.+1
+  2919
+  2920
+  2921						CLEAN^
+  2922	033020	7 000 20 0 00 634440 		CONO	634440
+  2923	033021	7 004 20 0 00 010000 		CONO	PI,10000
+  2924									^
+  2925	033022	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
+  2926	033023	306 00 0 00 000040 		CAIN	40		;MA 33 SET FAILED ON CH2
+  2927						STOP			^;SEE MA1 PRINT
+  2928
+  2929	033024	254 04 0 00 033025 		HALT	.+1
+  2930	033025	320 00 0 00 033026 		JUMP	.+1
+  2931
+  2932
+  2933						CLEAN^
+  2934	033026	7 000 20 0 00 634440 		CONO	634440
+  2935	033027	7 004 20 0 00 010000 		CONO	PI,10000
+  2936									^
+  2937	033030	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;CAUSE INTERRUPT
+  2938	033031	306 00 0 00 000040 		CAIN	40		;MA 32 SET FAILED ON CH4
+  2939						STOP			^;SEE MA1 PRINT
+  2940
+  2941	033032	254 04 0 00 033033 		HALT	.+1
+  2942	033033	320 00 0 00 033034 		JUMP	.+1
+  2943
+  2944
+  2945						CLEAN^
+  2946	033034	7 000 20 0 00 634440 		CONO	634440
+  2947	033035	7 004 20 0 00 010000 		CONO	PI,10000
+  2948									^
+  2949	033036	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
+  2950	033037	306 00 0 00 000046 		CAIN	46		;MA 34 SET OCCURED ON CH2
+  2951						STOP			^;SEE MA1 PRINT
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 30-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0075
+
+  2952
+  2953	033040	254 04 0 00 033041 		HALT	.+1
+  2954	033041	320 00 0 00 033042 		JUMP	.+1
+  2955
+  2956
+  2957						BLURB^
+  2958					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  2959					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  2960					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  2961					;INSTRUCTION
+  2962					^
+  2963	033042				MOD82:	CLEAN			^;CHECK IF AN INTERRUPT OCCURES
+  2964
+  2965	033042	7 000 20 0 00 634440 		CONO	634440
+  2966	033043	7 004 20 0 00 010000 		CONO	PI,10000
+  2967
+  2968	033044	400 00 0 00 000000 		SETZ	0		;C(0) FILLED BY XCT OF MOVEI
+  2969	033045	7 004 20 0 00 004377 		CONO	PI,ACT+PIREQ+177	;ACTIVATE ALL INTERRUPTS
+  2970	033046	336 00 0 00 000000 		SKIPN	0		;CK PIR FM IOB [1] PI1 PRINT
+  2971						STOP			^;AND PIRQ LEVEL PI1 PRINT
+  2972
+  2973	033047	254 04 0 00 033050 		HALT	.+1
+  2974	033050	320 00 0 00 033051 		JUMP	.+1
+  2975
+  2976
+  2977						CLEAN^
+  2978	033051	7 000 20 0 00 634440 		CONO	634440
+  2979	033052	7 004 20 0 00 010000 		CONO	PI,10000
+  2980									^
+  2981	033053	400 00 0 00 000000 		SETZ	0		;ON INTERRUPT NO PI HOLDS
+  2982	033054	7 004 20 0 00 004377 		CONO	PI,ACT+PIREQ+177	;WERE SET CHECK PIH
+  2983	033055	7 004 34 0 00 077400 		CONSO	PI,77400		;FM PICHRQ PULSE ON
+  2984						STOP			^;PI1 PRINT
+  2985
+  2986	033056	254 04 0 00 033057 		HALT	.+1
+  2987	033057	320 00 0 00 033060 		JUMP	.+1
+  2988
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 31
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0076
+
+  2989					DEFINE	PIHCLR	(A,B)<
+  2990						CLEAN
+  2991						CONO	PI,PIREQ+ACT+A	;CAUSE INTERRUPT TO SET HOLD
+  2992						CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  2993						CONSZ	PI,B		;FAIL TO CLEAR SEE PI2
+  2994						STOP
+  2995					>
+  2996
+  2997			000100		ZZ=100
+  2998			040000		YY=40000				;CHECK RESET TO PIH FLOPS
+  2999					MOD83:	REPEAT	7,<
+  3000						PIHCLR	ZZ,YY
+  3001						ZZ=ZZ/2
+  3002						YY=YY/2
+  3003					>
+  3004
+  3005						PIHCLR	ZZ,YY^
+  3006						CLEAN^
+  3007	033060	7 000 20 0 00 634440 		CONO	634440
+  3008	033061	7 004 20 0 00 010000 		CONO	PI,10000
+  3009									^
+  3010	033062	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+ZZ	;CAUSE INTERRUPT TO SET HOLD
+  3011	033063	7 004 20 0 00 010000 		CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  3012	033064	7 004 30 0 00 040000 		CONSZ	PI,YY		;FAIL TO CLEAR SEE PI2
+  3013						STOP^
+  3014	033065	254 04 0 00 033066 		HALT	.+1
+  3015	033066	320 00 0 00 033067 		JUMP	.+1
+  3016									^
+  3017					^
+  3018			000040			ZZ=ZZ/2
+  3019			020000			YY=YY/2
+  3020
+  3021
+  3022						PIHCLR	ZZ,YY^
+  3023						CLEAN^
+  3024	033067	7 000 20 0 00 634440 		CONO	634440
+  3025	033070	7 004 20 0 00 010000 		CONO	PI,10000
+  3026									^
+  3027	033071	7 004 20 0 00 004240 		CONO	PI,PIREQ+ACT+ZZ	;CAUSE INTERRUPT TO SET HOLD
+  3028	033072	7 004 20 0 00 010000 		CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  3029	033073	7 004 30 0 00 020000 		CONSZ	PI,YY		;FAIL TO CLEAR SEE PI2
+  3030						STOP^
+  3031	033074	254 04 0 00 033075 		HALT	.+1
+  3032	033075	320 00 0 00 033076 		JUMP	.+1
+  3033									^
+  3034					^
+  3035			000020			ZZ=ZZ/2
+  3036			010000			YY=YY/2
+  3037
+  3038
+  3039						PIHCLR	ZZ,YY^
+  3040						CLEAN^
+  3041	033076	7 000 20 0 00 634440 		CONO	634440
+  3042	033077	7 004 20 0 00 010000 		CONO	PI,10000
+  3043									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 31-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0077
+
+  3044	033100	7 004 20 0 00 004220 		CONO	PI,PIREQ+ACT+ZZ	;CAUSE INTERRUPT TO SET HOLD
+  3045	033101	7 004 20 0 00 010000 		CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  3046	033102	7 004 30 0 00 010000 		CONSZ	PI,YY		;FAIL TO CLEAR SEE PI2
+  3047						STOP^
+  3048	033103	254 04 0 00 033104 		HALT	.+1
+  3049	033104	320 00 0 00 033105 		JUMP	.+1
+  3050									^
+  3051					^
+  3052			000010			ZZ=ZZ/2
+  3053			004000			YY=YY/2
+  3054
+  3055
+  3056						PIHCLR	ZZ,YY^
+  3057						CLEAN^
+  3058	033105	7 000 20 0 00 634440 		CONO	634440
+  3059	033106	7 004 20 0 00 010000 		CONO	PI,10000
+  3060									^
+  3061	033107	7 004 20 0 00 004210 		CONO	PI,PIREQ+ACT+ZZ	;CAUSE INTERRUPT TO SET HOLD
+  3062	033110	7 004 20 0 00 010000 		CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  3063	033111	7 004 30 0 00 004000 		CONSZ	PI,YY		;FAIL TO CLEAR SEE PI2
+  3064						STOP^
+  3065	033112	254 04 0 00 033113 		HALT	.+1
+  3066	033113	320 00 0 00 033114 		JUMP	.+1
+  3067									^
+  3068					^
+  3069			000004			ZZ=ZZ/2
+  3070			002000			YY=YY/2
+  3071
+  3072
+  3073						PIHCLR	ZZ,YY^
+  3074						CLEAN^
+  3075	033114	7 000 20 0 00 634440 		CONO	634440
+  3076	033115	7 004 20 0 00 010000 		CONO	PI,10000
+  3077									^
+  3078	033116	7 004 20 0 00 004204 		CONO	PI,PIREQ+ACT+ZZ	;CAUSE INTERRUPT TO SET HOLD
+  3079	033117	7 004 20 0 00 010000 		CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  3080	033120	7 004 30 0 00 002000 		CONSZ	PI,YY		;FAIL TO CLEAR SEE PI2
+  3081						STOP^
+  3082	033121	254 04 0 00 033122 		HALT	.+1
+  3083	033122	320 00 0 00 033123 		JUMP	.+1
+  3084									^
+  3085					^
+  3086			000002			ZZ=ZZ/2
+  3087			001000			YY=YY/2
+  3088
+  3089
+  3090						PIHCLR	ZZ,YY^
+  3091						CLEAN^
+  3092	033123	7 000 20 0 00 634440 		CONO	634440
+  3093	033124	7 004 20 0 00 010000 		CONO	PI,10000
+  3094									^
+  3095	033125	7 004 20 0 00 004202 		CONO	PI,PIREQ+ACT+ZZ	;CAUSE INTERRUPT TO SET HOLD
+  3096	033126	7 004 20 0 00 010000 		CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  3097	033127	7 004 30 0 00 001000 		CONSZ	PI,YY		;FAIL TO CLEAR SEE PI2
+  3098						STOP^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 31-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0078
+
+  3099	033130	254 04 0 00 033131 		HALT	.+1
+  3100	033131	320 00 0 00 033132 		JUMP	.+1
+  3101									^
+  3102					^
+  3103			000001			ZZ=ZZ/2
+  3104			000400			YY=YY/2
+  3105
+  3106
+  3107						PIHCLR	ZZ,YY^
+  3108						CLEAN^
+  3109	033132	7 000 20 0 00 634440 		CONO	634440
+  3110	033133	7 004 20 0 00 010000 		CONO	PI,10000
+  3111									^
+  3112	033134	7 004 20 0 00 004201 		CONO	PI,PIREQ+ACT+ZZ	;CAUSE INTERRUPT TO SET HOLD
+  3113	033135	7 004 20 0 00 010000 		CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+  3114	033136	7 004 30 0 00 000400 		CONSZ	PI,YY		;FAIL TO CLEAR SEE PI2
+  3115						STOP^
+  3116	033137	254 04 0 00 033140 		HALT	.+1
+  3117	033140	320 00 0 00 033141 		JUMP	.+1
+  3118									^
+  3119					^
+  3120			000000			ZZ=ZZ/2
+  3121			000200			YY=YY/2
+  3122
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 32
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0079
+
+  3123
+  3124
+  3125						BLURB^
+  3126					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  3127					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  3128					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  3129					;INSTRUCTION
+  3130					^
+  3131					DEFINE	OFFPIR	(A,B)<
+  3132						CLEAN
+  3133						CONO	PI,PIREQ+ACT+A	;SETS PIH. THEN CLR
+  3134						JRST 10,.+1		;PIR TURNED BACK ON
+  3135						CONSZ PI,B		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3136						STOP
+  3137					>
+  3138
+  3139			000100		ZZ=100
+  3140			040000		YY=40000			;TEST THE RESET TO PIR
+  3141					MOD85:	REPEAT	7,<
+  3142						OFFPIR	ZZ,YY
+  3143						ZZ=ZZ/2
+  3144						YY=YY/2
+  3145					>
+  3146
+  3147						OFFPIR	ZZ,YY^
+  3148						CLEAN^
+  3149	033141	7 000 20 0 00 634440 		CONO	634440
+  3150	033142	7 004 20 0 00 010000 		CONO	PI,10000
+  3151									^
+  3152	033143	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+ZZ	;SETS PIH. THEN CLR
+  3153	033144	254 10 0 00 033145 		JRST 10,.+1		;PIR TURNED BACK ON
+  3154	033145	7 004 30 0 00 040000 		CONSZ PI,YY		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3155						STOP^
+  3156	033146	254 04 0 00 033147 		HALT	.+1
+  3157	033147	320 00 0 00 033150 		JUMP	.+1
+  3158									^
+  3159					^
+  3160			000040			ZZ=ZZ/2
+  3161			020000			YY=YY/2
+  3162
+  3163
+  3164						OFFPIR	ZZ,YY^
+  3165						CLEAN^
+  3166	033150	7 000 20 0 00 634440 		CONO	634440
+  3167	033151	7 004 20 0 00 010000 		CONO	PI,10000
+  3168									^
+  3169	033152	7 004 20 0 00 004240 		CONO	PI,PIREQ+ACT+ZZ	;SETS PIH. THEN CLR
+  3170	033153	254 10 0 00 033154 		JRST 10,.+1		;PIR TURNED BACK ON
+  3171	033154	7 004 30 0 00 020000 		CONSZ PI,YY		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3172						STOP^
+  3173	033155	254 04 0 00 033156 		HALT	.+1
+  3174	033156	320 00 0 00 033157 		JUMP	.+1
+  3175									^
+  3176					^
+  3177			000020			ZZ=ZZ/2
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 32-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0080
+
+  3178			010000			YY=YY/2
+  3179
+  3180
+  3181						OFFPIR	ZZ,YY^
+  3182						CLEAN^
+  3183	033157	7 000 20 0 00 634440 		CONO	634440
+  3184	033160	7 004 20 0 00 010000 		CONO	PI,10000
+  3185									^
+  3186	033161	7 004 20 0 00 004220 		CONO	PI,PIREQ+ACT+ZZ	;SETS PIH. THEN CLR
+  3187	033162	254 10 0 00 033163 		JRST 10,.+1		;PIR TURNED BACK ON
+  3188	033163	7 004 30 0 00 010000 		CONSZ PI,YY		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3189						STOP^
+  3190	033164	254 04 0 00 033165 		HALT	.+1
+  3191	033165	320 00 0 00 033166 		JUMP	.+1
+  3192									^
+  3193					^
+  3194			000010			ZZ=ZZ/2
+  3195			004000			YY=YY/2
+  3196
+  3197
+  3198						OFFPIR	ZZ,YY^
+  3199						CLEAN^
+  3200	033166	7 000 20 0 00 634440 		CONO	634440
+  3201	033167	7 004 20 0 00 010000 		CONO	PI,10000
+  3202									^
+  3203	033170	7 004 20 0 00 004210 		CONO	PI,PIREQ+ACT+ZZ	;SETS PIH. THEN CLR
+  3204	033171	254 10 0 00 033172 		JRST 10,.+1		;PIR TURNED BACK ON
+  3205	033172	7 004 30 0 00 004000 		CONSZ PI,YY		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3206						STOP^
+  3207	033173	254 04 0 00 033174 		HALT	.+1
+  3208	033174	320 00 0 00 033175 		JUMP	.+1
+  3209									^
+  3210					^
+  3211			000004			ZZ=ZZ/2
+  3212			002000			YY=YY/2
+  3213
+  3214
+  3215						OFFPIR	ZZ,YY^
+  3216						CLEAN^
+  3217	033175	7 000 20 0 00 634440 		CONO	634440
+  3218	033176	7 004 20 0 00 010000 		CONO	PI,10000
+  3219									^
+  3220	033177	7 004 20 0 00 004204 		CONO	PI,PIREQ+ACT+ZZ	;SETS PIH. THEN CLR
+  3221	033200	254 10 0 00 033201 		JRST 10,.+1		;PIR TURNED BACK ON
+  3222	033201	7 004 30 0 00 002000 		CONSZ PI,YY		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3223						STOP^
+  3224	033202	254 04 0 00 033203 		HALT	.+1
+  3225	033203	320 00 0 00 033204 		JUMP	.+1
+  3226									^
+  3227					^
+  3228			000002			ZZ=ZZ/2
+  3229			001000			YY=YY/2
+  3230
+  3231
+  3232						OFFPIR	ZZ,YY^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 32-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0081
+
+  3233						CLEAN^
+  3234	033204	7 000 20 0 00 634440 		CONO	634440
+  3235	033205	7 004 20 0 00 010000 		CONO	PI,10000
+  3236									^
+  3237	033206	7 004 20 0 00 004202 		CONO	PI,PIREQ+ACT+ZZ	;SETS PIH. THEN CLR
+  3238	033207	254 10 0 00 033210 		JRST 10,.+1		;PIR TURNED BACK ON
+  3239	033210	7 004 30 0 00 001000 		CONSZ PI,YY		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3240						STOP^
+  3241	033211	254 04 0 00 033212 		HALT	.+1
+  3242	033212	320 00 0 00 033213 		JUMP	.+1
+  3243									^
+  3244					^
+  3245			000001			ZZ=ZZ/2
+  3246			000400			YY=YY/2
+  3247
+  3248
+  3249						OFFPIR	ZZ,YY^
+  3250						CLEAN^
+  3251	033213	7 000 20 0 00 634440 		CONO	634440
+  3252	033214	7 004 20 0 00 010000 		CONO	PI,10000
+  3253									^
+  3254	033215	7 004 20 0 00 004201 		CONO	PI,PIREQ+ACT+ZZ	;SETS PIH. THEN CLR
+  3255	033216	254 10 0 00 033217 		JRST 10,.+1		;PIR TURNED BACK ON
+  3256	033217	7 004 30 0 00 000400 		CONSZ PI,YY		;PIR TURNED BACK ON.PIH(1) CLR PIR
+  3257						STOP^
+  3258	033220	254 04 0 00 033221 		HALT	.+1
+  3259	033221	320 00 0 00 033222 		JUMP	.+1
+  3260									^
+  3261					^
+  3262			000000			ZZ=ZZ/2
+  3263			000200			YY=YY/2
+  3264
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 33
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0082
+
+  3265					DEFINE	TSTREQ	(A)<
+  3266						CLEAN			;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3267						CONO PI,ACT+PIREQ+A	;INTERRUPT SETS PIH IF SECOND
+  3268						SETZ			;INTERRUPT OCCURED PIH (0)
+  3269						CONO	PI,ACT+PIREQ+A	;FAILED TO INHIBIT PIREQ
+  3270						SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3271						STOP
+  3272					>
+  3273
+  3274						BLURB^
+  3275					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  3276					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  3277					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  3278					;INSTRUCTION
+  3279					^
+  3280			000100		ZZ=100
+  3281					MOD86:	REPEAT	7,<
+  3282						TSTREQ	ZZ
+  3283						ZZ=ZZ/2
+  3284					>
+  3285
+  3286						TSTREQ	ZZ^
+  3287						CLEAN			^
+  3288	033222	7 000 20 0 00 634440 		CONO	634440
+  3289	033223	7 004 20 0 00 010000 		CONO	PI,10000
+  3290									^;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3291	033224	7 004 20 0 00 004300 		CONO PI,ACT+PIREQ+ZZ	;INTERRUPT SETS PIH IF SECOND
+  3292	033225	400 00 0 00 000000 		SETZ			;INTERRUPT OCCURED PIH (0)
+  3293	033226	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+ZZ	;FAILED TO INHIBIT PIREQ
+  3294	033227	332 00 0 00 000000 		SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3295						STOP^
+  3296	033230	254 04 0 00 033231 		HALT	.+1
+  3297	033231	320 00 0 00 033232 		JUMP	.+1
+  3298									^
+  3299					^
+  3300			000040			ZZ=ZZ/2
+  3301
+  3302
+  3303						TSTREQ	ZZ^
+  3304						CLEAN			^
+  3305	033232	7 000 20 0 00 634440 		CONO	634440
+  3306	033233	7 004 20 0 00 010000 		CONO	PI,10000
+  3307									^;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3308	033234	7 004 20 0 00 004240 		CONO PI,ACT+PIREQ+ZZ	;INTERRUPT SETS PIH IF SECOND
+  3309	033235	400 00 0 00 000000 		SETZ			;INTERRUPT OCCURED PIH (0)
+  3310	033236	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+ZZ	;FAILED TO INHIBIT PIREQ
+  3311	033237	332 00 0 00 000000 		SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3312						STOP^
+  3313	033240	254 04 0 00 033241 		HALT	.+1
+  3314	033241	320 00 0 00 033242 		JUMP	.+1
+  3315									^
+  3316					^
+  3317			000020			ZZ=ZZ/2
+  3318
+  3319
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 33-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0083
+
+  3320						TSTREQ	ZZ^
+  3321						CLEAN			^
+  3322	033242	7 000 20 0 00 634440 		CONO	634440
+  3323	033243	7 004 20 0 00 010000 		CONO	PI,10000
+  3324									^;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3325	033244	7 004 20 0 00 004220 		CONO PI,ACT+PIREQ+ZZ	;INTERRUPT SETS PIH IF SECOND
+  3326	033245	400 00 0 00 000000 		SETZ			;INTERRUPT OCCURED PIH (0)
+  3327	033246	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+ZZ	;FAILED TO INHIBIT PIREQ
+  3328	033247	332 00 0 00 000000 		SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3329						STOP^
+  3330	033250	254 04 0 00 033251 		HALT	.+1
+  3331	033251	320 00 0 00 033252 		JUMP	.+1
+  3332									^
+  3333					^
+  3334			000010			ZZ=ZZ/2
+  3335
+  3336
+  3337						TSTREQ	ZZ^
+  3338						CLEAN			^
+  3339	033252	7 000 20 0 00 634440 		CONO	634440
+  3340	033253	7 004 20 0 00 010000 		CONO	PI,10000
+  3341									^;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3342	033254	7 004 20 0 00 004210 		CONO PI,ACT+PIREQ+ZZ	;INTERRUPT SETS PIH IF SECOND
+  3343	033255	400 00 0 00 000000 		SETZ			;INTERRUPT OCCURED PIH (0)
+  3344	033256	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+ZZ	;FAILED TO INHIBIT PIREQ
+  3345	033257	332 00 0 00 000000 		SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3346						STOP^
+  3347	033260	254 04 0 00 033261 		HALT	.+1
+  3348	033261	320 00 0 00 033262 		JUMP	.+1
+  3349									^
+  3350					^
+  3351			000004			ZZ=ZZ/2
+  3352
+  3353
+  3354						TSTREQ	ZZ^
+  3355						CLEAN			^
+  3356	033262	7 000 20 0 00 634440 		CONO	634440
+  3357	033263	7 004 20 0 00 010000 		CONO	PI,10000
+  3358									^;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3359	033264	7 004 20 0 00 004204 		CONO PI,ACT+PIREQ+ZZ	;INTERRUPT SETS PIH IF SECOND
+  3360	033265	400 00 0 00 000000 		SETZ			;INTERRUPT OCCURED PIH (0)
+  3361	033266	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+ZZ	;FAILED TO INHIBIT PIREQ
+  3362	033267	332 00 0 00 000000 		SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3363						STOP^
+  3364	033270	254 04 0 00 033271 		HALT	.+1
+  3365	033271	320 00 0 00 033272 		JUMP	.+1
+  3366									^
+  3367					^
+  3368			000002			ZZ=ZZ/2
+  3369
+  3370
+  3371						TSTREQ	ZZ^
+  3372						CLEAN			^
+  3373	033272	7 000 20 0 00 634440 		CONO	634440
+  3374	033273	7 004 20 0 00 010000 		CONO	PI,10000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 33-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0084
+
+  3375									^;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3376	033274	7 004 20 0 00 004202 		CONO PI,ACT+PIREQ+ZZ	;INTERRUPT SETS PIH IF SECOND
+  3377	033275	400 00 0 00 000000 		SETZ			;INTERRUPT OCCURED PIH (0)
+  3378	033276	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+ZZ	;FAILED TO INHIBIT PIREQ
+  3379	033277	332 00 0 00 000000 		SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3380						STOP^
+  3381	033300	254 04 0 00 033301 		HALT	.+1
+  3382	033301	320 00 0 00 033302 		JUMP	.+1
+  3383									^
+  3384					^
+  3385			000001			ZZ=ZZ/2
+  3386
+  3387
+  3388						TSTREQ	ZZ^
+  3389						CLEAN			^
+  3390	033302	7 000 20 0 00 634440 		CONO	634440
+  3391	033303	7 004 20 0 00 010000 		CONO	PI,10000
+  3392									^;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+  3393	033304	7 004 20 0 00 004201 		CONO PI,ACT+PIREQ+ZZ	;INTERRUPT SETS PIH IF SECOND
+  3394	033305	400 00 0 00 000000 		SETZ			;INTERRUPT OCCURED PIH (0)
+  3395	033306	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+ZZ	;FAILED TO INHIBIT PIREQ
+  3396	033307	332 00 0 00 000000 		SKIPE			;SEE BOTTOM OF PI2 PRINT
+  3397						STOP^
+  3398	033310	254 04 0 00 033311 		HALT	.+1
+  3399	033311	320 00 0 00 033312 		JUMP	.+1
+  3400									^
+  3401					^
+  3402			000000			ZZ=ZZ/2
+  3403
+  3404
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 34
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0085
+
+  3405					DEFINE	PIHOK	(A,B)<
+  3406						CLEAN
+  3407						CONO	PI,ACT+PIREQ+A	;INTERRUPT SHOULD SET HOLD(PIH)
+  3408						SETZ			;IF SECOND INTERRUPT OCCURS PIH
+  3409						CONO	PI,ACT+PIREQ+B	;FAILED TO PREVENT PIOK THUS
+  3410						SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+  3411						STOP			;OF PI2 PRINT
+  3412					>
+  3413						BLURB^
+  3414					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  3415					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  3416					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  3417					;INSTRUCTION
+  3418					^
+  3419
+  3420			000100		ZZ=100
+  3421			000040		YY=40				;TEST PRIORITY CHAIN
+  3422					MOD87:	REPEAT	6,<
+  3423						PIHOK	ZZ,YY
+  3424						ZZ=ZZ/2
+  3425						YY=YY/2
+  3426					>
+  3427
+  3428						PIHOK	ZZ,YY^
+  3429						CLEAN^
+  3430	033312	7 000 20 0 00 634440 		CONO	634440
+  3431	033313	7 004 20 0 00 010000 		CONO	PI,10000
+  3432									^
+  3433	033314	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+ZZ	;INTERRUPT SHOULD SET HOLD(PIH)
+  3434	033315	400 00 0 00 000000 		SETZ			;IF SECOND INTERRUPT OCCURS PIH
+  3435	033316	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+YY	;FAILED TO PREVENT PIOK THUS
+  3436	033317	332 00 0 00 000000 		SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+  3437						STOP			^
+  3438	033320	254 04 0 00 033321 		HALT	.+1
+  3439	033321	320 00 0 00 033322 		JUMP	.+1
+  3440									^;OF PI2 PRINT
+  3441					^
+  3442			000040			ZZ=ZZ/2
+  3443			000020			YY=YY/2
+  3444
+  3445
+  3446						PIHOK	ZZ,YY^
+  3447						CLEAN^
+  3448	033322	7 000 20 0 00 634440 		CONO	634440
+  3449	033323	7 004 20 0 00 010000 		CONO	PI,10000
+  3450									^
+  3451	033324	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+ZZ	;INTERRUPT SHOULD SET HOLD(PIH)
+  3452	033325	400 00 0 00 000000 		SETZ			;IF SECOND INTERRUPT OCCURS PIH
+  3453	033326	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+YY	;FAILED TO PREVENT PIOK THUS
+  3454	033327	332 00 0 00 000000 		SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+  3455						STOP			^
+  3456	033330	254 04 0 00 033331 		HALT	.+1
+  3457	033331	320 00 0 00 033332 		JUMP	.+1
+  3458									^;OF PI2 PRINT
+  3459					^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 34-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0086
+
+  3460			000020			ZZ=ZZ/2
+  3461			000010			YY=YY/2
+  3462
+  3463
+  3464						PIHOK	ZZ,YY^
+  3465						CLEAN^
+  3466	033332	7 000 20 0 00 634440 		CONO	634440
+  3467	033333	7 004 20 0 00 010000 		CONO	PI,10000
+  3468									^
+  3469	033334	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+ZZ	;INTERRUPT SHOULD SET HOLD(PIH)
+  3470	033335	400 00 0 00 000000 		SETZ			;IF SECOND INTERRUPT OCCURS PIH
+  3471	033336	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+YY	;FAILED TO PREVENT PIOK THUS
+  3472	033337	332 00 0 00 000000 		SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+  3473						STOP			^
+  3474	033340	254 04 0 00 033341 		HALT	.+1
+  3475	033341	320 00 0 00 033342 		JUMP	.+1
+  3476									^;OF PI2 PRINT
+  3477					^
+  3478			000010			ZZ=ZZ/2
+  3479			000004			YY=YY/2
+  3480
+  3481
+  3482						PIHOK	ZZ,YY^
+  3483						CLEAN^
+  3484	033342	7 000 20 0 00 634440 		CONO	634440
+  3485	033343	7 004 20 0 00 010000 		CONO	PI,10000
+  3486									^
+  3487	033344	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+ZZ	;INTERRUPT SHOULD SET HOLD(PIH)
+  3488	033345	400 00 0 00 000000 		SETZ			;IF SECOND INTERRUPT OCCURS PIH
+  3489	033346	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+YY	;FAILED TO PREVENT PIOK THUS
+  3490	033347	332 00 0 00 000000 		SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+  3491						STOP			^
+  3492	033350	254 04 0 00 033351 		HALT	.+1
+  3493	033351	320 00 0 00 033352 		JUMP	.+1
+  3494									^;OF PI2 PRINT
+  3495					^
+  3496			000004			ZZ=ZZ/2
+  3497			000002			YY=YY/2
+  3498
+  3499
+  3500						PIHOK	ZZ,YY^
+  3501						CLEAN^
+  3502	033352	7 000 20 0 00 634440 		CONO	634440
+  3503	033353	7 004 20 0 00 010000 		CONO	PI,10000
+  3504									^
+  3505	033354	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+ZZ	;INTERRUPT SHOULD SET HOLD(PIH)
+  3506	033355	400 00 0 00 000000 		SETZ			;IF SECOND INTERRUPT OCCURS PIH
+  3507	033356	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+YY	;FAILED TO PREVENT PIOK THUS
+  3508	033357	332 00 0 00 000000 		SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+  3509						STOP			^
+  3510	033360	254 04 0 00 033361 		HALT	.+1
+  3511	033361	320 00 0 00 033362 		JUMP	.+1
+  3512									^;OF PI2 PRINT
+  3513					^
+  3514			000002			ZZ=ZZ/2
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 34-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0087
+
+  3515			000001			YY=YY/2
+  3516
+  3517
+  3518						PIHOK	ZZ,YY^
+  3519						CLEAN^
+  3520	033362	7 000 20 0 00 634440 		CONO	634440
+  3521	033363	7 004 20 0 00 010000 		CONO	PI,10000
+  3522									^
+  3523	033364	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+ZZ	;INTERRUPT SHOULD SET HOLD(PIH)
+  3524	033365	400 00 0 00 000000 		SETZ			;IF SECOND INTERRUPT OCCURS PIH
+  3525	033366	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+YY	;FAILED TO PREVENT PIOK THUS
+  3526	033367	332 00 0 00 000000 		SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+  3527						STOP			^
+  3528	033370	254 04 0 00 033371 		HALT	.+1
+  3529	033371	320 00 0 00 033372 		JUMP	.+1
+  3530									^;OF PI2 PRINT
+  3531					^
+  3532			000001			ZZ=ZZ/2
+  3533			000000			YY=YY/2
+  3534
+  3535
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 35
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0088
+
+  3536					DEFINE	SETPIH	(A,B)<
+  3537						CLEAN			;CHECK REQ AND PIH FLOPS
+  3538						CONO	PI,ACT+PIREQ+A	;CAUSE INTERRUPT, SHOULD SET
+  3539						CONSO	PI,B		;HOLD (PIH) SEE PI2 PRINT
+  3540						STOP			;BOTH PIR+PIH SHOULD BE SET
+  3541					>
+  3542	033372				MOD88:	SETPIH	100,40000	^;CH 1
+  3543
+  3544						CLEAN			^
+  3545	033372	7 000 20 0 00 634440 		CONO	634440
+  3546	033373	7 004 20 0 00 010000 		CONO	PI,10000
+  3547									^;CHECK REQ AND PIH FLOPS
+  3548	033374	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT, SHOULD SET
+  3549	033375	7 004 34 0 00 040000 		CONSO	PI,40000		;HOLD (PIH) SEE PI2 PRINT
+  3550						STOP			^
+  3551	033376	254 04 0 00 033377 		HALT	.+1
+  3552	033377	320 00 0 00 033400 		JUMP	.+1
+  3553									^;BOTH PIR+PIH SHOULD BE SET
+  3554
+  3555						SETPIH	40,20000	^;CH 2
+  3556
+  3557						CLEAN			^
+  3558	033400	7 000 20 0 00 634440 		CONO	634440
+  3559	033401	7 004 20 0 00 010000 		CONO	PI,10000
+  3560									^;CHECK REQ AND PIH FLOPS
+  3561	033402	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT, SHOULD SET
+  3562	033403	7 004 34 0 00 020000 		CONSO	PI,20000		;HOLD (PIH) SEE PI2 PRINT
+  3563						STOP			^
+  3564	033404	254 04 0 00 033405 		HALT	.+1
+  3565	033405	320 00 0 00 033406 		JUMP	.+1
+  3566									^;BOTH PIR+PIH SHOULD BE SET
+  3567
+  3568						CHANEL	MOD90^
+  3569	033406	336 00 0 00 036672 		SKIPN	PI7SYS#
+  3570	033407	254 00 0 00 033446 		JRST	MOD90
+  3571									^
+  3572	033410				MOD89:	SETPIH	20,10000	^;CH 3
+  3573
+  3574						CLEAN			^
+  3575	033410	7 000 20 0 00 634440 		CONO	634440
+  3576	033411	7 004 20 0 00 010000 		CONO	PI,10000
+  3577									^;CHECK REQ AND PIH FLOPS
+  3578	033412	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;CAUSE INTERRUPT, SHOULD SET
+  3579	033413	7 004 34 0 00 010000 		CONSO	PI,10000		;HOLD (PIH) SEE PI2 PRINT
+  3580						STOP			^
+  3581	033414	254 04 0 00 033415 		HALT	.+1
+  3582	033415	320 00 0 00 033416 		JUMP	.+1
+  3583									^;BOTH PIR+PIH SHOULD BE SET
+  3584
+  3585						SETPIH	10,4000		^;CH 4
+  3586
+  3587						CLEAN			^
+  3588	033416	7 000 20 0 00 634440 		CONO	634440
+  3589	033417	7 004 20 0 00 010000 		CONO	PI,10000
+  3590									^;CHECK REQ AND PIH FLOPS
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 35-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0089
+
+  3591	033420	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+10	;CAUSE INTERRUPT, SHOULD SET
+  3592	033421	7 004 34 0 00 004000 		CONSO	PI,4000		;HOLD (PIH) SEE PI2 PRINT
+  3593						STOP			^
+  3594	033422	254 04 0 00 033423 		HALT	.+1
+  3595	033423	320 00 0 00 033424 		JUMP	.+1
+  3596									^;BOTH PIR+PIH SHOULD BE SET
+  3597
+  3598						SETPIH	4,2000		^;CH 5
+  3599
+  3600						CLEAN			^
+  3601	033424	7 000 20 0 00 634440 		CONO	634440
+  3602	033425	7 004 20 0 00 010000 		CONO	PI,10000
+  3603									^;CHECK REQ AND PIH FLOPS
+  3604	033426	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+4	;CAUSE INTERRUPT, SHOULD SET
+  3605	033427	7 004 34 0 00 002000 		CONSO	PI,2000		;HOLD (PIH) SEE PI2 PRINT
+  3606						STOP			^
+  3607	033430	254 04 0 00 033431 		HALT	.+1
+  3608	033431	320 00 0 00 033432 		JUMP	.+1
+  3609									^;BOTH PIR+PIH SHOULD BE SET
+  3610
+  3611						SETPIH	2,1000		^;CH 6
+  3612
+  3613						CLEAN			^
+  3614	033432	7 000 20 0 00 634440 		CONO	634440
+  3615	033433	7 004 20 0 00 010000 		CONO	PI,10000
+  3616									^;CHECK REQ AND PIH FLOPS
+  3617	033434	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+2	;CAUSE INTERRUPT, SHOULD SET
+  3618	033435	7 004 34 0 00 001000 		CONSO	PI,1000		;HOLD (PIH) SEE PI2 PRINT
+  3619						STOP			^
+  3620	033436	254 04 0 00 033437 		HALT	.+1
+  3621	033437	320 00 0 00 033440 		JUMP	.+1
+  3622									^;BOTH PIR+PIH SHOULD BE SET
+  3623
+  3624						SETPIH	1,400		^;CH 7
+  3625
+  3626						CLEAN			^
+  3627	033440	7 000 20 0 00 634440 		CONO	634440
+  3628	033441	7 004 20 0 00 010000 		CONO	PI,10000
+  3629									^;CHECK REQ AND PIH FLOPS
+  3630	033442	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+1	;CAUSE INTERRUPT, SHOULD SET
+  3631	033443	7 004 34 0 00 000400 		CONSO	PI,400		;HOLD (PIH) SEE PI2 PRINT
+  3632						STOP			^
+  3633	033444	254 04 0 00 033445 		HALT	.+1
+  3634	033445	320 00 0 00 033446 		JUMP	.+1
+  3635									^;BOTH PIR+PIH SHOULD BE SET
+  3636
+  3637	033446				MOD90:	CLEAN^
+  3638	033446	7 000 20 0 00 634440 		CONO	634440
+  3639	033447	7 004 20 0 00 010000 		CONO	PI,10000
+  3640									^
+  3641
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 36
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0090
+
+  3642					DEFINE	PIADDR	(A,B)<
+  3643						CLEAN			;CHECK ABILITY TO INTERRUPT TO
+  3644						SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3645						CONO	PI,ACT+PIREQ+A	;ACTIVATE AN INTERRUPT. IF C(0)=0
+  3646						CAIE	B		;NO INTERRUPT OCCURED, C(0)=ADDR
+  3647						STOP			;OF INTERRUPT EXECUTED
+  3648					>
+  3649
+  3650						BLURB^
+  3651					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  3652					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  3653					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  3654					;INSTRUCTION
+  3655					^
+  3656	033450				MOD91:	PIADDR	100,42		^;CH 1 TO LOC 42
+  3657
+  3658						CLEAN			^
+  3659	033450	7 000 20 0 00 634440 		CONO	634440
+  3660	033451	7 004 20 0 00 010000 		CONO	PI,10000
+  3661									^;CHECK ABILITY TO INTERRUPT TO
+  3662	033452	400 00 0 00 000000 		SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3663	033453	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;ACTIVATE AN INTERRUPT. IF C(0)=0
+  3664	033454	302 00 0 00 000042 		CAIE	42		;NO INTERRUPT OCCURED, C(0)=ADDR
+  3665						STOP			^
+  3666	033455	254 04 0 00 033456 		HALT	.+1
+  3667	033456	320 00 0 00 033457 		JUMP	.+1
+  3668									^;OF INTERRUPT EXECUTED
+  3669
+  3670						PIADDR	40,44		^;CH 2 TO LOC 44
+  3671
+  3672						CLEAN			^
+  3673	033457	7 000 20 0 00 634440 		CONO	634440
+  3674	033460	7 004 20 0 00 010000 		CONO	PI,10000
+  3675									^;CHECK ABILITY TO INTERRUPT TO
+  3676	033461	400 00 0 00 000000 		SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3677	033462	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;ACTIVATE AN INTERRUPT. IF C(0)=0
+  3678	033463	302 00 0 00 000044 		CAIE	44		;NO INTERRUPT OCCURED, C(0)=ADDR
+  3679						STOP			^
+  3680	033464	254 04 0 00 033465 		HALT	.+1
+  3681	033465	320 00 0 00 033466 		JUMP	.+1
+  3682									^;OF INTERRUPT EXECUTED
+  3683
+  3684						CHANEL	MOD93^
+  3685	033466	336 00 0 00 036672 		SKIPN	PI7SYS#
+  3686	033467	254 00 0 00 033533 		JRST	MOD93
+  3687									^
+  3688	033470				MOD92:	PIADDR	20,46		^;CH 3 TO LOC 46
+  3689
+  3690						CLEAN			^
+  3691	033470	7 000 20 0 00 634440 		CONO	634440
+  3692	033471	7 004 20 0 00 010000 		CONO	PI,10000
+  3693									^;CHECK ABILITY TO INTERRUPT TO
+  3694	033472	400 00 0 00 000000 		SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3695	033473	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;ACTIVATE AN INTERRUPT. IF C(0)=0
+  3696	033474	302 00 0 00 000046 		CAIE	46		;NO INTERRUPT OCCURED, C(0)=ADDR
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 36-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0091
+
+  3697						STOP			^
+  3698	033475	254 04 0 00 033476 		HALT	.+1
+  3699	033476	320 00 0 00 033477 		JUMP	.+1
+  3700									^;OF INTERRUPT EXECUTED
+  3701
+  3702						PIADDR	10,50		^;CH 4 TO LOC 50
+  3703
+  3704						CLEAN			^
+  3705	033477	7 000 20 0 00 634440 		CONO	634440
+  3706	033500	7 004 20 0 00 010000 		CONO	PI,10000
+  3707									^;CHECK ABILITY TO INTERRUPT TO
+  3708	033501	400 00 0 00 000000 		SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3709	033502	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+10	;ACTIVATE AN INTERRUPT. IF C(0)=0
+  3710	033503	302 00 0 00 000050 		CAIE	50		;NO INTERRUPT OCCURED, C(0)=ADDR
+  3711						STOP			^
+  3712	033504	254 04 0 00 033505 		HALT	.+1
+  3713	033505	320 00 0 00 033506 		JUMP	.+1
+  3714									^;OF INTERRUPT EXECUTED
+  3715
+  3716						PIADDR	4,52		^;CH 5 TO LOC 52
+  3717
+  3718						CLEAN			^
+  3719	033506	7 000 20 0 00 634440 		CONO	634440
+  3720	033507	7 004 20 0 00 010000 		CONO	PI,10000
+  3721									^;CHECK ABILITY TO INTERRUPT TO
+  3722	033510	400 00 0 00 000000 		SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3723	033511	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+4	;ACTIVATE AN INTERRUPT. IF C(0)=0
+  3724	033512	302 00 0 00 000052 		CAIE	52		;NO INTERRUPT OCCURED, C(0)=ADDR
+  3725						STOP			^
+  3726	033513	254 04 0 00 033514 		HALT	.+1
+  3727	033514	320 00 0 00 033515 		JUMP	.+1
+  3728									^;OF INTERRUPT EXECUTED
+  3729
+  3730						PIADDR	2,54		^;CH 6 TO LOC 54
+  3731
+  3732						CLEAN			^
+  3733	033515	7 000 20 0 00 634440 		CONO	634440
+  3734	033516	7 004 20 0 00 010000 		CONO	PI,10000
+  3735									^;CHECK ABILITY TO INTERRUPT TO
+  3736	033517	400 00 0 00 000000 		SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3737	033520	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+2	;ACTIVATE AN INTERRUPT. IF C(0)=0
+  3738	033521	302 00 0 00 000054 		CAIE	54		;NO INTERRUPT OCCURED, C(0)=ADDR
+  3739						STOP			^
+  3740	033522	254 04 0 00 033523 		HALT	.+1
+  3741	033523	320 00 0 00 033524 		JUMP	.+1
+  3742									^;OF INTERRUPT EXECUTED
+  3743
+  3744						PIADDR	1,56		^;CH 7 TO LOC 56
+  3745
+  3746						CLEAN			^
+  3747	033524	7 000 20 0 00 634440 		CONO	634440
+  3748	033525	7 004 20 0 00 010000 		CONO	PI,10000
+  3749									^;CHECK ABILITY TO INTERRUPT TO
+  3750	033526	400 00 0 00 000000 		SETZ			;LOC 40-60 SHOULD SEE MOVEI
+  3751	033527	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+1	;ACTIVATE AN INTERRUPT. IF C(0)=0
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 36-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0092
+
+  3752	033530	302 00 0 00 000056 		CAIE	56		;NO INTERRUPT OCCURED, C(0)=ADDR
+  3753						STOP			^
+  3754	033531	254 04 0 00 033532 		HALT	.+1
+  3755	033532	320 00 0 00 033533 		JUMP	.+1
+  3756									^;OF INTERRUPT EXECUTED
+  3757
+  3758
+  3759	033533				MOD93:	CLEAN^
+  3760	033533	7 000 20 0 00 634440 		CONO	634440
+  3761	033534	7 004 20 0 00 010000 		CONO	PI,10000
+  3762									^
+  3763
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 37
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0093
+
+  3764					DEFINE	TWOPIR	(A,B)<
+  3765						CLEAN			;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+  3766						SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+  3767						CONO	PI,ACT+PIREQ+A	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+  3768						CAIN B			;PIR (0) INPUT TO PIOK
+  3769						STOP
+  3770					>
+  3771						BLURB^
+  3772					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  3773					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  3774					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  3775					;INSTRUCTION
+  3776					^
+  3777	033535				MOD94:	TWOPIR	100,46		^;CH 1+2
+  3778
+  3779						CLEAN			^
+  3780	033535	7 000 20 0 00 634440 		CONO	634440
+  3781	033536	7 004 20 0 00 010000 		CONO	PI,10000
+  3782									^;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+  3783	033537	400 00 0 00 000000 		SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+  3784	033540	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+  3785	033541	306 00 0 00 000046 		CAIN 46			;PIR (0) INPUT TO PIOK
+  3786						STOP^
+  3787	033542	254 04 0 00 033543 		HALT	.+1
+  3788	033543	320 00 0 00 033544 		JUMP	.+1
+  3789									^
+  3790
+  3791						TWOPIR	40,46		^;CH 2+3
+  3792
+  3793						CLEAN			^
+  3794	033544	7 000 20 0 00 634440 		CONO	634440
+  3795	033545	7 004 20 0 00 010000 		CONO	PI,10000
+  3796									^;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+  3797	033546	400 00 0 00 000000 		SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+  3798	033547	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+  3799	033550	306 00 0 00 000046 		CAIN 46			;PIR (0) INPUT TO PIOK
+  3800						STOP^
+  3801	033551	254 04 0 00 033552 		HALT	.+1
+  3802	033552	320 00 0 00 033553 		JUMP	.+1
+  3803									^
+  3804
+  3805						CHANEL MOD96^
+  3806	033553	336 00 0 00 036672 		SKIPN	PI7SYS#
+  3807	033554	254 00 0 00 033611 		JRST	MOD96
+  3808									^
+  3809	033555				MOD95:	TWOPIR	20,56		^;CH 3+4
+  3810
+  3811						CLEAN			^
+  3812	033555	7 000 20 0 00 634440 		CONO	634440
+  3813	033556	7 004 20 0 00 010000 		CONO	PI,10000
+  3814									^;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+  3815	033557	400 00 0 00 000000 		SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+  3816	033560	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+  3817	033561	306 00 0 00 000056 		CAIN 56			;PIR (0) INPUT TO PIOK
+  3818						STOP^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 37-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0094
+
+  3819	033562	254 04 0 00 033563 		HALT	.+1
+  3820	033563	320 00 0 00 033564 		JUMP	.+1
+  3821									^
+  3822
+  3823						TWOPIR	10,52		^;CH 4+5
+  3824
+  3825						CLEAN			^
+  3826	033564	7 000 20 0 00 634440 		CONO	634440
+  3827	033565	7 004 20 0 00 010000 		CONO	PI,10000
+  3828									^;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+  3829	033566	400 00 0 00 000000 		SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+  3830	033567	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+10	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+  3831	033570	306 00 0 00 000052 		CAIN 52			;PIR (0) INPUT TO PIOK
+  3832						STOP^
+  3833	033571	254 04 0 00 033572 		HALT	.+1
+  3834	033572	320 00 0 00 033573 		JUMP	.+1
+  3835									^
+  3836
+  3837						TWOPIR	4,56		^;CH 5+6
+  3838
+  3839						CLEAN			^
+  3840	033573	7 000 20 0 00 634440 		CONO	634440
+  3841	033574	7 004 20 0 00 010000 		CONO	PI,10000
+  3842									^;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+  3843	033575	400 00 0 00 000000 		SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+  3844	033576	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+4	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+  3845	033577	306 00 0 00 000056 		CAIN 56			;PIR (0) INPUT TO PIOK
+  3846						STOP^
+  3847	033600	254 04 0 00 033601 		HALT	.+1
+  3848	033601	320 00 0 00 033602 		JUMP	.+1
+  3849									^
+  3850
+  3851						TWOPIR	2,56		^;CH 6+7
+  3852
+  3853						CLEAN			^
+  3854	033602	7 000 20 0 00 634440 		CONO	634440
+  3855	033603	7 004 20 0 00 010000 		CONO	PI,10000
+  3856									^;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+  3857	033604	400 00 0 00 000000 		SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+  3858	033605	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+2	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+  3859	033606	306 00 0 00 000056 		CAIN 56			;PIR (0) INPUT TO PIOK
+  3860						STOP^
+  3861	033607	254 04 0 00 033610 		HALT	.+1
+  3862	033610	320 00 0 00 033611 		JUMP	.+1
+  3863									^
+  3864
+  3865	033611				MOD96:	CLEAN^
+  3866	033611	7 000 20 0 00 634440 		CONO	634440
+  3867	033612	7 004 20 0 00 010000 		CONO	PI,10000
+  3868									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 38
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0095
+
+  3869					DEFINE	MULPIR	(A,B)<
+  3870						CLEAN
+  3871						SETZ			;TEST MULTI REQUEST BREAK ON
+  3872						CONO	PI,ACT+PIREQ+A	;CORRECT CHANNEL TO CORRECT
+  3873						CAIE B			;LOC C(0)=INTERRUPTED ADDR
+  3874						STOP
+  3875					>
+  3876
+  3877						BLURB^
+  3878					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  3879					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  3880					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  3881					;INSTRUCTION
+  3882					^
+  3883	033613				MOD97:	MULPIR	100,42^
+  3884						CLEAN^
+  3885	033613	7 000 20 0 00 634440 		CONO	634440
+  3886	033614	7 004 20 0 00 010000 		CONO	PI,10000
+  3887									^
+  3888	033615	400 00 0 00 000000 		SETZ			;TEST MULTI REQUEST BREAK ON
+  3889	033616	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CORRECT CHANNEL TO CORRECT
+  3890	033617	302 00 0 00 000042 		CAIE 42			;LOC C(0)=INTERRUPTED ADDR
+  3891						STOP^
+  3892	033620	254 04 0 00 033621 		HALT	.+1
+  3893	033621	320 00 0 00 033622 		JUMP	.+1
+  3894									^
+  3895					^
+  3896						MULPIR	40,44^
+  3897						CLEAN^
+  3898	033622	7 000 20 0 00 634440 		CONO	634440
+  3899	033623	7 004 20 0 00 010000 		CONO	PI,10000
+  3900									^
+  3901	033624	400 00 0 00 000000 		SETZ			;TEST MULTI REQUEST BREAK ON
+  3902	033625	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;CORRECT CHANNEL TO CORRECT
+  3903	033626	302 00 0 00 000044 		CAIE 44			;LOC C(0)=INTERRUPTED ADDR
+  3904						STOP^
+  3905	033627	254 04 0 00 033630 		HALT	.+1
+  3906	033630	320 00 0 00 033631 		JUMP	.+1
+  3907									^
+  3908					^
+  3909						CHANEL	MOD99^
+  3910	033631	336 00 0 00 036672 		SKIPN	PI7SYS#
+  3911	033632	254 00 0 00 033676 		JRST	MOD99
+  3912									^
+  3913	033633				MOD98:	MULPIR	20,46^
+  3914						CLEAN^
+  3915	033633	7 000 20 0 00 634440 		CONO	634440
+  3916	033634	7 004 20 0 00 010000 		CONO	PI,10000
+  3917									^
+  3918	033635	400 00 0 00 000000 		SETZ			;TEST MULTI REQUEST BREAK ON
+  3919	033636	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;CORRECT CHANNEL TO CORRECT
+  3920	033637	302 00 0 00 000046 		CAIE 46			;LOC C(0)=INTERRUPTED ADDR
+  3921						STOP^
+  3922	033640	254 04 0 00 033641 		HALT	.+1
+  3923	033641	320 00 0 00 033642 		JUMP	.+1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 38-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0096
+
+  3924									^
+  3925					^
+  3926						MULPIR	10,50^
+  3927						CLEAN^
+  3928	033642	7 000 20 0 00 634440 		CONO	634440
+  3929	033643	7 004 20 0 00 010000 		CONO	PI,10000
+  3930									^
+  3931	033644	400 00 0 00 000000 		SETZ			;TEST MULTI REQUEST BREAK ON
+  3932	033645	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+10	;CORRECT CHANNEL TO CORRECT
+  3933	033646	302 00 0 00 000050 		CAIE 50			;LOC C(0)=INTERRUPTED ADDR
+  3934						STOP^
+  3935	033647	254 04 0 00 033650 		HALT	.+1
+  3936	033650	320 00 0 00 033651 		JUMP	.+1
+  3937									^
+  3938					^
+  3939						MULPIR	4,52^
+  3940						CLEAN^
+  3941	033651	7 000 20 0 00 634440 		CONO	634440
+  3942	033652	7 004 20 0 00 010000 		CONO	PI,10000
+  3943									^
+  3944	033653	400 00 0 00 000000 		SETZ			;TEST MULTI REQUEST BREAK ON
+  3945	033654	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+4	;CORRECT CHANNEL TO CORRECT
+  3946	033655	302 00 0 00 000052 		CAIE 52			;LOC C(0)=INTERRUPTED ADDR
+  3947						STOP^
+  3948	033656	254 04 0 00 033657 		HALT	.+1
+  3949	033657	320 00 0 00 033660 		JUMP	.+1
+  3950									^
+  3951					^
+  3952						MULPIR	2,54^
+  3953						CLEAN^
+  3954	033660	7 000 20 0 00 634440 		CONO	634440
+  3955	033661	7 004 20 0 00 010000 		CONO	PI,10000
+  3956									^
+  3957	033662	400 00 0 00 000000 		SETZ			;TEST MULTI REQUEST BREAK ON
+  3958	033663	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+2	;CORRECT CHANNEL TO CORRECT
+  3959	033664	302 00 0 00 000054 		CAIE 54			;LOC C(0)=INTERRUPTED ADDR
+  3960						STOP^
+  3961	033665	254 04 0 00 033666 		HALT	.+1
+  3962	033666	320 00 0 00 033667 		JUMP	.+1
+  3963									^
+  3964					^
+  3965						MULPIR	1,56^
+  3966						CLEAN^
+  3967	033667	7 000 20 0 00 634440 		CONO	634440
+  3968	033670	7 004 20 0 00 010000 		CONO	PI,10000
+  3969									^
+  3970	033671	400 00 0 00 000000 		SETZ			;TEST MULTI REQUEST BREAK ON
+  3971	033672	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+1	;CORRECT CHANNEL TO CORRECT
+  3972	033673	302 00 0 00 000056 		CAIE 56			;LOC C(0)=INTERRUPTED ADDR
+  3973						STOP^
+  3974	033674	254 04 0 00 033675 		HALT	.+1
+  3975	033675	320 00 0 00 033676 		JUMP	.+1
+  3976									^
+  3977					^
+  3978	033676				MOD99:	CLEAN^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 38-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0097
+
+  3979	033676	7 000 20 0 00 634440 		CONO	634440
+  3980	033677	7 004 20 0 00 010000 		CONO	PI,10000
+  3981									^
+  3982
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 39
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0098
+
+  3983					DEFINE	JENOK	(A,B)<
+  3984						CLEAN
+  3985						CONO	PI,ACT+PIREQ+A	;SET THE PIH FLOP THEN REMOVE
+  3986						CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  3987						JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  3988						CONSO	PI,B		;EFFECT PIH FLOP UNLESS AND
+  3989						STOP
+  3990					>
+  3991
+  3992	033700				MOD100:	JENOK	100,40000	^;PIH 1
+  3993
+  3994						CLEAN^
+  3995	033700	7 000 20 0 00 634440 		CONO	634440
+  3996	033701	7 004 20 0 00 010000 		CONO	PI,10000
+  3997									^
+  3998	033702	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;SET THE PIH FLOP THEN REMOVE
+  3999	033703	7 004 20 0 00 000400 		CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  4000	033704	254 10 0 00 033705 		JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  4001	033705	7 004 34 0 00 040000 		CONSO	PI,40000		;EFFECT PIH FLOP UNLESS AND
+  4002						STOP^
+  4003	033706	254 04 0 00 033707 		HALT	.+1
+  4004	033707	320 00 0 00 033710 		JUMP	.+1
+  4005									^
+  4006
+  4007						JENOK	40,20000	^;PIH 2
+  4008
+  4009						CLEAN^
+  4010	033710	7 000 20 0 00 634440 		CONO	634440
+  4011	033711	7 004 20 0 00 010000 		CONO	PI,10000
+  4012									^
+  4013	033712	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;SET THE PIH FLOP THEN REMOVE
+  4014	033713	7 004 20 0 00 000400 		CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  4015	033714	254 10 0 00 033715 		JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  4016	033715	7 004 34 0 00 020000 		CONSO	PI,20000		;EFFECT PIH FLOP UNLESS AND
+  4017						STOP^
+  4018	033716	254 04 0 00 033717 		HALT	.+1
+  4019	033717	320 00 0 00 033720 		JUMP	.+1
+  4020									^
+  4021
+  4022						CHANEL	MOD102^
+  4023	033720	336 00 0 00 036672 		SKIPN	PI7SYS#
+  4024	033721	254 00 0 00 033772 		JRST	MOD102
+  4025									^
+  4026	033722				MOD101:	JENOK	20,10000	^;PIH 3
+  4027
+  4028						CLEAN^
+  4029	033722	7 000 20 0 00 634440 		CONO	634440
+  4030	033723	7 004 20 0 00 010000 		CONO	PI,10000
+  4031									^
+  4032	033724	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;SET THE PIH FLOP THEN REMOVE
+  4033	033725	7 004 20 0 00 000400 		CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  4034	033726	254 10 0 00 033727 		JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  4035	033727	7 004 34 0 00 010000 		CONSO	PI,10000		;EFFECT PIH FLOP UNLESS AND
+  4036						STOP^
+  4037	033730	254 04 0 00 033731 		HALT	.+1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 39-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0099
+
+  4038	033731	320 00 0 00 033732 		JUMP	.+1
+  4039									^
+  4040
+  4041						JENOK	10,4000		^;PIH 4
+  4042
+  4043						CLEAN^
+  4044	033732	7 000 20 0 00 634440 		CONO	634440
+  4045	033733	7 004 20 0 00 010000 		CONO	PI,10000
+  4046									^
+  4047	033734	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+10	;SET THE PIH FLOP THEN REMOVE
+  4048	033735	7 004 20 0 00 000400 		CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  4049	033736	254 10 0 00 033737 		JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  4050	033737	7 004 34 0 00 004000 		CONSO	PI,4000		;EFFECT PIH FLOP UNLESS AND
+  4051						STOP^
+  4052	033740	254 04 0 00 033741 		HALT	.+1
+  4053	033741	320 00 0 00 033742 		JUMP	.+1
+  4054									^
+  4055
+  4056						JENOK	4,2000		^;PIH 5
+  4057
+  4058						CLEAN^
+  4059	033742	7 000 20 0 00 634440 		CONO	634440
+  4060	033743	7 004 20 0 00 010000 		CONO	PI,10000
+  4061									^
+  4062	033744	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+4	;SET THE PIH FLOP THEN REMOVE
+  4063	033745	7 004 20 0 00 000400 		CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  4064	033746	254 10 0 00 033747 		JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  4065	033747	7 004 34 0 00 002000 		CONSO	PI,2000		;EFFECT PIH FLOP UNLESS AND
+  4066						STOP^
+  4067	033750	254 04 0 00 033751 		HALT	.+1
+  4068	033751	320 00 0 00 033752 		JUMP	.+1
+  4069									^
+  4070
+  4071						JENOK	2,1000		^;PIH 6
+  4072
+  4073						CLEAN^
+  4074	033752	7 000 20 0 00 634440 		CONO	634440
+  4075	033753	7 004 20 0 00 010000 		CONO	PI,10000
+  4076									^
+  4077	033754	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+2	;SET THE PIH FLOP THEN REMOVE
+  4078	033755	7 004 20 0 00 000400 		CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  4079	033756	254 10 0 00 033757 		JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  4080	033757	7 004 34 0 00 001000 		CONSO	PI,1000		;EFFECT PIH FLOP UNLESS AND
+  4081						STOP^
+  4082	033760	254 04 0 00 033761 		HALT	.+1
+  4083	033761	320 00 0 00 033762 		JUMP	.+1
+  4084									^
+  4085
+  4086						JENOK	1,400		^;PIH 7
+  4087
+  4088						CLEAN^
+  4089	033762	7 000 20 0 00 634440 		CONO	634440
+  4090	033763	7 004 20 0 00 010000 		CONO	PI,10000
+  4091									^
+  4092	033764	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+1	;SET THE PIH FLOP THEN REMOVE
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 39-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0100
+
+  4093	033765	7 004 20 0 00 000400 		CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+  4094	033766	254 10 0 00 033767 		JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+  4095	033767	7 004 34 0 00 000400 		CONSO	PI,400		;EFFECT PIH FLOP UNLESS AND
+  4096						STOP^
+  4097	033770	254 04 0 00 033771 		HALT	.+1
+  4098	033771	320 00 0 00 033772 		JUMP	.+1
+  4099									^
+  4100
+  4101	033772				MOD102:	CLEAN^
+  4102	033772	7 000 20 0 00 634440 		CONO	634440
+  4103	033773	7 004 20 0 00 010000 		CONO	PI,10000
+  4104									^
+  4105
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 40
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0101
+
+  4106					DEFINE	ONEPIH	(A,B)<
+  4107						CLEAN
+  4108						CONO	PI,ACT+PIREQ+A	;CHECK FOR REDUNDANT
+  4109						CONSZ PI,B		;PIH FLAGS.SEE TOP PI2 PRINT
+  4110						STOP
+  4111					>
+  4112
+  4113			020000		WW=20000
+  4114			000100		ZZ=100
+  4115			037400		YY=37400
+  4116					MOD103:	REPEAT	7,<
+  4117						ONEPIH	ZZ,YY
+  4118						YY=YY+WW
+  4119						WW=WW/2
+  4120						ZZ=ZZ/2
+  4121					>
+  4122
+  4123						ONEPIH	ZZ,YY^
+  4124						CLEAN^
+  4125	033774	7 000 20 0 00 634440 		CONO	634440
+  4126	033775	7 004 20 0 00 010000 		CONO	PI,10000
+  4127									^
+  4128	033776	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+ZZ	;CHECK FOR REDUNDANT
+  4129	033777	7 004 30 0 00 037400 		CONSZ PI,YY		;PIH FLAGS.SEE TOP PI2 PRINT
+  4130						STOP^
+  4131	034000	254 04 0 00 034001 		HALT	.+1
+  4132	034001	320 00 0 00 034002 		JUMP	.+1
+  4133									^
+  4134					^
+  4135			057400			YY=YY+WW
+  4136			010000			WW=WW/2
+  4137			000040			ZZ=ZZ/2
+  4138
+  4139
+  4140						ONEPIH	ZZ,YY^
+  4141						CLEAN^
+  4142	034002	7 000 20 0 00 634440 		CONO	634440
+  4143	034003	7 004 20 0 00 010000 		CONO	PI,10000
+  4144									^
+  4145	034004	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+ZZ	;CHECK FOR REDUNDANT
+  4146	034005	7 004 30 0 00 057400 		CONSZ PI,YY		;PIH FLAGS.SEE TOP PI2 PRINT
+  4147						STOP^
+  4148	034006	254 04 0 00 034007 		HALT	.+1
+  4149	034007	320 00 0 00 034010 		JUMP	.+1
+  4150									^
+  4151					^
+  4152			067400			YY=YY+WW
+  4153			004000			WW=WW/2
+  4154			000020			ZZ=ZZ/2
+  4155
+  4156
+  4157						ONEPIH	ZZ,YY^
+  4158						CLEAN^
+  4159	034010	7 000 20 0 00 634440 		CONO	634440
+  4160	034011	7 004 20 0 00 010000 		CONO	PI,10000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 40-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0102
+
+  4161									^
+  4162	034012	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+ZZ	;CHECK FOR REDUNDANT
+  4163	034013	7 004 30 0 00 067400 		CONSZ PI,YY		;PIH FLAGS.SEE TOP PI2 PRINT
+  4164						STOP^
+  4165	034014	254 04 0 00 034015 		HALT	.+1
+  4166	034015	320 00 0 00 034016 		JUMP	.+1
+  4167									^
+  4168					^
+  4169			073400			YY=YY+WW
+  4170			002000			WW=WW/2
+  4171			000010			ZZ=ZZ/2
+  4172
+  4173
+  4174						ONEPIH	ZZ,YY^
+  4175						CLEAN^
+  4176	034016	7 000 20 0 00 634440 		CONO	634440
+  4177	034017	7 004 20 0 00 010000 		CONO	PI,10000
+  4178									^
+  4179	034020	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+ZZ	;CHECK FOR REDUNDANT
+  4180	034021	7 004 30 0 00 073400 		CONSZ PI,YY		;PIH FLAGS.SEE TOP PI2 PRINT
+  4181						STOP^
+  4182	034022	254 04 0 00 034023 		HALT	.+1
+  4183	034023	320 00 0 00 034024 		JUMP	.+1
+  4184									^
+  4185					^
+  4186			075400			YY=YY+WW
+  4187			001000			WW=WW/2
+  4188			000004			ZZ=ZZ/2
+  4189
+  4190
+  4191						ONEPIH	ZZ,YY^
+  4192						CLEAN^
+  4193	034024	7 000 20 0 00 634440 		CONO	634440
+  4194	034025	7 004 20 0 00 010000 		CONO	PI,10000
+  4195									^
+  4196	034026	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+ZZ	;CHECK FOR REDUNDANT
+  4197	034027	7 004 30 0 00 075400 		CONSZ PI,YY		;PIH FLAGS.SEE TOP PI2 PRINT
+  4198						STOP^
+  4199	034030	254 04 0 00 034031 		HALT	.+1
+  4200	034031	320 00 0 00 034032 		JUMP	.+1
+  4201									^
+  4202					^
+  4203			076400			YY=YY+WW
+  4204			000400			WW=WW/2
+  4205			000002			ZZ=ZZ/2
+  4206
+  4207
+  4208						ONEPIH	ZZ,YY^
+  4209						CLEAN^
+  4210	034032	7 000 20 0 00 634440 		CONO	634440
+  4211	034033	7 004 20 0 00 010000 		CONO	PI,10000
+  4212									^
+  4213	034034	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+ZZ	;CHECK FOR REDUNDANT
+  4214	034035	7 004 30 0 00 076400 		CONSZ PI,YY		;PIH FLAGS.SEE TOP PI2 PRINT
+  4215						STOP^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 40-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0103
+
+  4216	034036	254 04 0 00 034037 		HALT	.+1
+  4217	034037	320 00 0 00 034040 		JUMP	.+1
+  4218									^
+  4219					^
+  4220			077000			YY=YY+WW
+  4221			000200			WW=WW/2
+  4222			000001			ZZ=ZZ/2
+  4223
+  4224
+  4225						ONEPIH	ZZ,YY^
+  4226						CLEAN^
+  4227	034040	7 000 20 0 00 634440 		CONO	634440
+  4228	034041	7 004 20 0 00 010000 		CONO	PI,10000
+  4229									^
+  4230	034042	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+ZZ	;CHECK FOR REDUNDANT
+  4231	034043	7 004 30 0 00 077000 		CONSZ PI,YY		;PIH FLAGS.SEE TOP PI2 PRINT
+  4232						STOP^
+  4233	034044	254 04 0 00 034045 		HALT	.+1
+  4234	034045	320 00 0 00 034046 		JUMP	.+1
+  4235									^
+  4236					^
+  4237			077200			YY=YY+WW
+  4238			000100			WW=WW/2
+  4239			000000			ZZ=ZZ/2
+  4240
+  4241
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 41
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0104
+
+  4242					DEFINE	FASTPIH	(A,B,C)<
+  4243						CLEAN
+  4244						CONO	PI,ACT+PIREQ+B	;SET PIH AND PIH ON
+  4245						CONO	PI,ACT+PIREQ+A	;NEXT HIGHER CHANNEL
+  4246						JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+  4247						CONSO PI,C		;CHECK FOR FAST TURN OFF (PIH)
+  4248						STOP
+  4249					>
+  4250
+  4251	034046				MOD104:	FASTPIH	100,40,20000^
+  4252						CLEAN^
+  4253	034046	7 000 20 0 00 634440 		CONO	634440
+  4254	034047	7 004 20 0 00 010000 		CONO	PI,10000
+  4255									^
+  4256	034050	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;SET PIH AND PIH ON
+  4257	034051	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;NEXT HIGHER CHANNEL
+  4258	034052	254 10 0 00 034053 		JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+  4259	034053	7 004 34 0 00 020000 		CONSO PI,20000		;CHECK FOR FAST TURN OFF (PIH)
+  4260						STOP^
+  4261	034054	254 04 0 00 034055 		HALT	.+1
+  4262	034055	320 00 0 00 034056 		JUMP	.+1
+  4263									^
+  4264					^
+  4265						CHANEL	MOD106^
+  4266	034056	336 00 0 00 036672 		SKIPN	PI7SYS#
+  4267	034057	254 00 0 00 034130 		JRST	MOD106
+  4268									^
+  4269	034060				MOD105:	FASTPIH	40,20,10000^
+  4270						CLEAN^
+  4271	034060	7 000 20 0 00 634440 		CONO	634440
+  4272	034061	7 004 20 0 00 010000 		CONO	PI,10000
+  4273									^
+  4274	034062	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;SET PIH AND PIH ON
+  4275	034063	7 004 20 0 00 004240 		CONO	PI,ACT+PIREQ+40	;NEXT HIGHER CHANNEL
+  4276	034064	254 10 0 00 034065 		JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+  4277	034065	7 004 34 0 00 010000 		CONSO PI,10000		;CHECK FOR FAST TURN OFF (PIH)
+  4278						STOP^
+  4279	034066	254 04 0 00 034067 		HALT	.+1
+  4280	034067	320 00 0 00 034070 		JUMP	.+1
+  4281									^
+  4282					^
+  4283						FASTPIH	20,10,4000^
+  4284						CLEAN^
+  4285	034070	7 000 20 0 00 634440 		CONO	634440
+  4286	034071	7 004 20 0 00 010000 		CONO	PI,10000
+  4287									^
+  4288	034072	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+10	;SET PIH AND PIH ON
+  4289	034073	7 004 20 0 00 004220 		CONO	PI,ACT+PIREQ+20	;NEXT HIGHER CHANNEL
+  4290	034074	254 10 0 00 034075 		JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+  4291	034075	7 004 34 0 00 004000 		CONSO PI,4000		;CHECK FOR FAST TURN OFF (PIH)
+  4292						STOP^
+  4293	034076	254 04 0 00 034077 		HALT	.+1
+  4294	034077	320 00 0 00 034100 		JUMP	.+1
+  4295									^
+  4296					^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 41-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0105
+
+  4297						FASTPIH	10,4,2000^
+  4298						CLEAN^
+  4299	034100	7 000 20 0 00 634440 		CONO	634440
+  4300	034101	7 004 20 0 00 010000 		CONO	PI,10000
+  4301									^
+  4302	034102	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+4	;SET PIH AND PIH ON
+  4303	034103	7 004 20 0 00 004210 		CONO	PI,ACT+PIREQ+10	;NEXT HIGHER CHANNEL
+  4304	034104	254 10 0 00 034105 		JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+  4305	034105	7 004 34 0 00 002000 		CONSO PI,2000		;CHECK FOR FAST TURN OFF (PIH)
+  4306						STOP^
+  4307	034106	254 04 0 00 034107 		HALT	.+1
+  4308	034107	320 00 0 00 034110 		JUMP	.+1
+  4309									^
+  4310					^
+  4311						FASTPIH	4,2,1000^
+  4312						CLEAN^
+  4313	034110	7 000 20 0 00 634440 		CONO	634440
+  4314	034111	7 004 20 0 00 010000 		CONO	PI,10000
+  4315									^
+  4316	034112	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+2	;SET PIH AND PIH ON
+  4317	034113	7 004 20 0 00 004204 		CONO	PI,ACT+PIREQ+4	;NEXT HIGHER CHANNEL
+  4318	034114	254 10 0 00 034115 		JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+  4319	034115	7 004 34 0 00 001000 		CONSO PI,1000		;CHECK FOR FAST TURN OFF (PIH)
+  4320						STOP^
+  4321	034116	254 04 0 00 034117 		HALT	.+1
+  4322	034117	320 00 0 00 034120 		JUMP	.+1
+  4323									^
+  4324					^
+  4325						FASTPIH	2,1,400^
+  4326						CLEAN^
+  4327	034120	7 000 20 0 00 634440 		CONO	634440
+  4328	034121	7 004 20 0 00 010000 		CONO	PI,10000
+  4329									^
+  4330	034122	7 004 20 0 00 004201 		CONO	PI,ACT+PIREQ+1	;SET PIH AND PIH ON
+  4331	034123	7 004 20 0 00 004202 		CONO	PI,ACT+PIREQ+2	;NEXT HIGHER CHANNEL
+  4332	034124	254 10 0 00 034125 		JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+  4333	034125	7 004 34 0 00 000400 		CONSO PI,400		;CHECK FOR FAST TURN OFF (PIH)
+  4334						STOP^
+  4335	034126	254 04 0 00 034127 		HALT	.+1
+  4336	034127	320 00 0 00 034130 		JUMP	.+1
+  4337									^
+  4338					^
+  4339	034130				MOD106:	CLEAN^
+  4340	034130	7 000 20 0 00 634440 		CONO	634440
+  4341	034131	7 004 20 0 00 010000 		CONO	PI,10000
+  4342									^
+  4343
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 42
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0106
+
+  4344			000100		ZZ=100
+  4345			040000		YY=40000
+  4346					MOD107:	REPEAT	7,<
+  4347						CLEAN
+  4348						CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4349						CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+  4350						STOP			;OF PIR STB, IOB PIRQ, PIO
+  4351						ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4352						YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT>
+  4353
+  4354						CLEAN^
+  4355	034132	7 000 20 0 00 634440 		CONO	634440
+  4356	034133	7 004 20 0 00 010000 		CONO	PI,10000
+  4357									^
+  4358	034134	7 004 20 0 00 002300 		CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4359	034135	7 004 30 0 00 040000 		CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+  4360						STOP			^
+  4361	034136	254 04 0 00 034137 		HALT	.+1
+  4362	034137	320 00 0 00 034140 		JUMP	.+1
+  4363									^;OF PIR STB, IOB PIRQ, PIO
+  4364			000040			ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4365			020000			YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT
+  4366
+  4367						CLEAN^
+  4368	034140	7 000 20 0 00 634440 		CONO	634440
+  4369	034141	7 004 20 0 00 010000 		CONO	PI,10000
+  4370									^
+  4371	034142	7 004 20 0 00 002240 		CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4372	034143	7 004 30 0 00 020000 		CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+  4373						STOP			^
+  4374	034144	254 04 0 00 034145 		HALT	.+1
+  4375	034145	320 00 0 00 034146 		JUMP	.+1
+  4376									^;OF PIR STB, IOB PIRQ, PIO
+  4377			000020			ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4378			010000			YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT
+  4379
+  4380						CLEAN^
+  4381	034146	7 000 20 0 00 634440 		CONO	634440
+  4382	034147	7 004 20 0 00 010000 		CONO	PI,10000
+  4383									^
+  4384	034150	7 004 20 0 00 002220 		CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4385	034151	7 004 30 0 00 010000 		CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+  4386						STOP			^
+  4387	034152	254 04 0 00 034153 		HALT	.+1
+  4388	034153	320 00 0 00 034154 		JUMP	.+1
+  4389									^;OF PIR STB, IOB PIRQ, PIO
+  4390			000010			ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4391			004000			YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT
+  4392
+  4393						CLEAN^
+  4394	034154	7 000 20 0 00 634440 		CONO	634440
+  4395	034155	7 004 20 0 00 010000 		CONO	PI,10000
+  4396									^
+  4397	034156	7 004 20 0 00 002210 		CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4398	034157	7 004 30 0 00 004000 		CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 42-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0107
+
+  4399						STOP			^
+  4400	034160	254 04 0 00 034161 		HALT	.+1
+  4401	034161	320 00 0 00 034162 		JUMP	.+1
+  4402									^;OF PIR STB, IOB PIRQ, PIO
+  4403			000004			ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4404			002000			YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT
+  4405
+  4406						CLEAN^
+  4407	034162	7 000 20 0 00 634440 		CONO	634440
+  4408	034163	7 004 20 0 00 010000 		CONO	PI,10000
+  4409									^
+  4410	034164	7 004 20 0 00 002204 		CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4411	034165	7 004 30 0 00 002000 		CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+  4412						STOP			^
+  4413	034166	254 04 0 00 034167 		HALT	.+1
+  4414	034167	320 00 0 00 034170 		JUMP	.+1
+  4415									^;OF PIR STB, IOB PIRQ, PIO
+  4416			000002			ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4417			001000			YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT
+  4418
+  4419						CLEAN^
+  4420	034170	7 000 20 0 00 634440 		CONO	634440
+  4421	034171	7 004 20 0 00 010000 		CONO	PI,10000
+  4422									^
+  4423	034172	7 004 20 0 00 002202 		CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4424	034173	7 004 30 0 00 001000 		CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+  4425						STOP			^
+  4426	034174	254 04 0 00 034175 		HALT	.+1
+  4427	034175	320 00 0 00 034176 		JUMP	.+1
+  4428									^;OF PIR STB, IOB PIRQ, PIO
+  4429			000001			ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4430			000400			YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT
+  4431
+  4432						CLEAN^
+  4433	034176	7 000 20 0 00 634440 		CONO	634440
+  4434	034177	7 004 20 0 00 010000 		CONO	PI,10000
+  4435									^
+  4436	034200	7 004 20 0 00 002201 		CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+  4437	034201	7 004 30 0 00 000400 		CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+  4438						STOP			^
+  4439	034202	254 04 0 00 034203 		HALT	.+1
+  4440	034203	320 00 0 00 034204 		JUMP	.+1
+  4441									^;OF PIR STB, IOB PIRQ, PIO
+  4442			000000			ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+  4443			000200			YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 43
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0108
+
+  4444
+  4445					DEFINE	CPINTR	(A)<		;PROVIDE AN INTERRUPT TO PI
+  4446						MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4447						ADD			;AND OTHER SOURCES
+  4448						CONO	42220+A>
+  4449
+  4450					DEFINE	IOBRQ	(A,B,C)<
+  4451						CLEAN			;CLEAR THE WORLD EXCEPT CP
+  4452						CPINTR	A
+  4453						CONO	PI,PIOSET+ACT+B	;TURN ON CK FLOP TO ALLOW
+  4454						CONSO	PI,C		;INTERRUPT. CK INPUT TO PIR FLOP
+  4455						STOP
+  4456					>
+  4457
+  4458			000001		ZZ=1
+  4459			040000		YY=40000
+  4460					MOD108:	REPEAT	7,<		;TEST FOR NO INTERRUPT FROM BUSS
+  4461						CLEAN			;CLEAR WORLD
+  4462						CPINTR ZZ		;INTERRUPT TO BUSS INPUT TO PIR
+  4463						CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4464						STOP
+  4465						ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4466						YY=YY/2
+  4467					>
+  4468							;TEST FOR NO INTERRUPT FROM BUSS
+  4469						CLEAN			^
+  4470	034204	7 000 20 0 00 634440 		CONO	634440
+  4471	034205	7 004 20 0 00 010000 		CONO	PI,10000
+  4472									^;CLEAR WORLD
+  4473						CPINTR ZZ		^		;PROVIDE AN INTERRUPT TO PI
+  4474	034206	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4475	034207	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4476	034210	7 000 20 0 00 042221 		CONO	42220+ZZ^;INTERRUPT TO BUSS INPUT TO PIR
+  4477	034211	7 004 30 0 00 040000 		CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4478						STOP^
+  4479	034212	254 04 0 00 034213 		HALT	.+1
+  4480	034213	320 00 0 00 034214 		JUMP	.+1
+  4481									^
+  4482			000002			ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4483			020000			YY=YY/2
+  4484
+  4485							;TEST FOR NO INTERRUPT FROM BUSS
+  4486						CLEAN			^
+  4487	034214	7 000 20 0 00 634440 		CONO	634440
+  4488	034215	7 004 20 0 00 010000 		CONO	PI,10000
+  4489									^;CLEAR WORLD
+  4490						CPINTR ZZ		^		;PROVIDE AN INTERRUPT TO PI
+  4491	034216	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4492	034217	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4493	034220	7 000 20 0 00 042222 		CONO	42220+ZZ^;INTERRUPT TO BUSS INPUT TO PIR
+  4494	034221	7 004 30 0 00 020000 		CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4495						STOP^
+  4496	034222	254 04 0 00 034223 		HALT	.+1
+  4497	034223	320 00 0 00 034224 		JUMP	.+1
+  4498									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 43-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0109
+
+  4499			000003			ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4500			010000			YY=YY/2
+  4501
+  4502							;TEST FOR NO INTERRUPT FROM BUSS
+  4503						CLEAN			^
+  4504	034224	7 000 20 0 00 634440 		CONO	634440
+  4505	034225	7 004 20 0 00 010000 		CONO	PI,10000
+  4506									^;CLEAR WORLD
+  4507						CPINTR ZZ		^		;PROVIDE AN INTERRUPT TO PI
+  4508	034226	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4509	034227	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4510	034230	7 000 20 0 00 042223 		CONO	42220+ZZ^;INTERRUPT TO BUSS INPUT TO PIR
+  4511	034231	7 004 30 0 00 010000 		CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4512						STOP^
+  4513	034232	254 04 0 00 034233 		HALT	.+1
+  4514	034233	320 00 0 00 034234 		JUMP	.+1
+  4515									^
+  4516			000004			ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4517			004000			YY=YY/2
+  4518
+  4519							;TEST FOR NO INTERRUPT FROM BUSS
+  4520						CLEAN			^
+  4521	034234	7 000 20 0 00 634440 		CONO	634440
+  4522	034235	7 004 20 0 00 010000 		CONO	PI,10000
+  4523									^;CLEAR WORLD
+  4524						CPINTR ZZ		^		;PROVIDE AN INTERRUPT TO PI
+  4525	034236	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4526	034237	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4527	034240	7 000 20 0 00 042224 		CONO	42220+ZZ^;INTERRUPT TO BUSS INPUT TO PIR
+  4528	034241	7 004 30 0 00 004000 		CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4529						STOP^
+  4530	034242	254 04 0 00 034243 		HALT	.+1
+  4531	034243	320 00 0 00 034244 		JUMP	.+1
+  4532									^
+  4533			000005			ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4534			002000			YY=YY/2
+  4535
+  4536							;TEST FOR NO INTERRUPT FROM BUSS
+  4537						CLEAN			^
+  4538	034244	7 000 20 0 00 634440 		CONO	634440
+  4539	034245	7 004 20 0 00 010000 		CONO	PI,10000
+  4540									^;CLEAR WORLD
+  4541						CPINTR ZZ		^		;PROVIDE AN INTERRUPT TO PI
+  4542	034246	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4543	034247	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4544	034250	7 000 20 0 00 042225 		CONO	42220+ZZ^;INTERRUPT TO BUSS INPUT TO PIR
+  4545	034251	7 004 30 0 00 002000 		CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4546						STOP^
+  4547	034252	254 04 0 00 034253 		HALT	.+1
+  4548	034253	320 00 0 00 034254 		JUMP	.+1
+  4549									^
+  4550			000006			ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4551			001000			YY=YY/2
+  4552
+  4553							;TEST FOR NO INTERRUPT FROM BUSS
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 43-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0110
+
+  4554						CLEAN			^
+  4555	034254	7 000 20 0 00 634440 		CONO	634440
+  4556	034255	7 004 20 0 00 010000 		CONO	PI,10000
+  4557									^;CLEAR WORLD
+  4558						CPINTR ZZ		^		;PROVIDE AN INTERRUPT TO PI
+  4559	034256	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4560	034257	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4561	034260	7 000 20 0 00 042226 		CONO	42220+ZZ^;INTERRUPT TO BUSS INPUT TO PIR
+  4562	034261	7 004 30 0 00 001000 		CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4563						STOP^
+  4564	034262	254 04 0 00 034263 		HALT	.+1
+  4565	034263	320 00 0 00 034264 		JUMP	.+1
+  4566									^
+  4567			000007			ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4568			000400			YY=YY/2
+  4569
+  4570							;TEST FOR NO INTERRUPT FROM BUSS
+  4571						CLEAN			^
+  4572	034264	7 000 20 0 00 634440 		CONO	634440
+  4573	034265	7 004 20 0 00 010000 		CONO	PI,10000
+  4574									^;CLEAR WORLD
+  4575						CPINTR ZZ		^		;PROVIDE AN INTERRUPT TO PI
+  4576	034266	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4577	034267	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4578	034270	7 000 20 0 00 042227 		CONO	42220+ZZ^;INTERRUPT TO BUSS INPUT TO PIR
+  4579	034271	7 004 30 0 00 000400 		CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+  4580						STOP^
+  4581	034272	254 04 0 00 034273 		HALT	.+1
+  4582	034273	320 00 0 00 034274 		JUMP	.+1
+  4583									^
+  4584			000010			ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+  4585			000200			YY=YY/2
+  4586
+  4587
+  4588	034274				MOD109:	IOBRQ	1,100,77400^
+  4589						CLEAN			^
+  4590	034274	7 000 20 0 00 634440 		CONO	634440
+  4591	034275	7 004 20 0 00 010000 		CONO	PI,10000
+  4592									^;CLEAR THE WORLD EXCEPT CP
+  4593						CPINTR	1^		;PROVIDE AN INTERRUPT TO PI
+  4594	034276	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4595	034277	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4596	034300	7 000 20 0 00 042221 		CONO	42220+1^
+  4597	034301	7 004 20 0 00 002300 		CONO	PI,PIOSET+ACT+100	;TURN ON CK FLOP TO ALLOW
+  4598	034302	7 004 34 0 00 077400 		CONSO	PI,77400		;INTERRUPT. CK INPUT TO PIR FLOP
+  4599						STOP^
+  4600	034303	254 04 0 00 034304 		HALT	.+1
+  4601	034304	320 00 0 00 034305 		JUMP	.+1
+  4602									^
+  4603					^
+  4604						IOBRQ	2,40,77400^
+  4605						CLEAN			^
+  4606	034305	7 000 20 0 00 634440 		CONO	634440
+  4607	034306	7 004 20 0 00 010000 		CONO	PI,10000
+  4608									^;CLEAR THE WORLD EXCEPT CP
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 43-3
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0111
+
+  4609						CPINTR	2^		;PROVIDE AN INTERRUPT TO PI
+  4610	034307	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4611	034310	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4612	034311	7 000 20 0 00 042222 		CONO	42220+2^
+  4613	034312	7 004 20 0 00 002240 		CONO	PI,PIOSET+ACT+40	;TURN ON CK FLOP TO ALLOW
+  4614	034313	7 004 34 0 00 077400 		CONSO	PI,77400		;INTERRUPT. CK INPUT TO PIR FLOP
+  4615						STOP^
+  4616	034314	254 04 0 00 034315 		HALT	.+1
+  4617	034315	320 00 0 00 034316 		JUMP	.+1
+  4618									^
+  4619					^
+  4620						CHANEL	MOD111^
+  4621	034316	336 00 0 00 036672 		SKIPN	PI7SYS#
+  4622	034317	254 00 0 00 034375 		JRST	MOD111
+  4623									^
+  4624	034320				MOD110:	IOBRQ	3,20,77400^
+  4625						CLEAN			^
+  4626	034320	7 000 20 0 00 634440 		CONO	634440
+  4627	034321	7 004 20 0 00 010000 		CONO	PI,10000
+  4628									^;CLEAR THE WORLD EXCEPT CP
+  4629						CPINTR	3^		;PROVIDE AN INTERRUPT TO PI
+  4630	034322	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4631	034323	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4632	034324	7 000 20 0 00 042223 		CONO	42220+3^
+  4633	034325	7 004 20 0 00 002220 		CONO	PI,PIOSET+ACT+20	;TURN ON CK FLOP TO ALLOW
+  4634	034326	7 004 34 0 00 077400 		CONSO	PI,77400		;INTERRUPT. CK INPUT TO PIR FLOP
+  4635						STOP^
+  4636	034327	254 04 0 00 034330 		HALT	.+1
+  4637	034330	320 00 0 00 034331 		JUMP	.+1
+  4638									^
+  4639					^
+  4640						IOBRQ	4,10,77400^
+  4641						CLEAN			^
+  4642	034331	7 000 20 0 00 634440 		CONO	634440
+  4643	034332	7 004 20 0 00 010000 		CONO	PI,10000
+  4644									^;CLEAR THE WORLD EXCEPT CP
+  4645						CPINTR	4^		;PROVIDE AN INTERRUPT TO PI
+  4646	034333	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4647	034334	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4648	034335	7 000 20 0 00 042224 		CONO	42220+4^
+  4649	034336	7 004 20 0 00 002210 		CONO	PI,PIOSET+ACT+10	;TURN ON CK FLOP TO ALLOW
+  4650	034337	7 004 34 0 00 077400 		CONSO	PI,77400		;INTERRUPT. CK INPUT TO PIR FLOP
+  4651						STOP^
+  4652	034340	254 04 0 00 034341 		HALT	.+1
+  4653	034341	320 00 0 00 034342 		JUMP	.+1
+  4654									^
+  4655					^
+  4656						IOBRQ	5,4,77400^
+  4657						CLEAN			^
+  4658	034342	7 000 20 0 00 634440 		CONO	634440
+  4659	034343	7 004 20 0 00 010000 		CONO	PI,10000
+  4660									^;CLEAR THE WORLD EXCEPT CP
+  4661						CPINTR	5^		;PROVIDE AN INTERRUPT TO PI
+  4662	034344	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4663	034345	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 43-4
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0112
+
+  4664	034346	7 000 20 0 00 042225 		CONO	42220+5^
+  4665	034347	7 004 20 0 00 002204 		CONO	PI,PIOSET+ACT+4	;TURN ON CK FLOP TO ALLOW
+  4666	034350	7 004 34 0 00 077400 		CONSO	PI,77400		;INTERRUPT. CK INPUT TO PIR FLOP
+  4667						STOP^
+  4668	034351	254 04 0 00 034352 		HALT	.+1
+  4669	034352	320 00 0 00 034353 		JUMP	.+1
+  4670									^
+  4671					^
+  4672						IOBRQ	6,2,77400^
+  4673						CLEAN			^
+  4674	034353	7 000 20 0 00 634440 		CONO	634440
+  4675	034354	7 004 20 0 00 010000 		CONO	PI,10000
+  4676									^;CLEAR THE WORLD EXCEPT CP
+  4677						CPINTR	6^		;PROVIDE AN INTERRUPT TO PI
+  4678	034355	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4679	034356	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4680	034357	7 000 20 0 00 042226 		CONO	42220+6^
+  4681	034360	7 004 20 0 00 002202 		CONO	PI,PIOSET+ACT+2	;TURN ON CK FLOP TO ALLOW
+  4682	034361	7 004 34 0 00 077400 		CONSO	PI,77400		;INTERRUPT. CK INPUT TO PIR FLOP
+  4683						STOP^
+  4684	034362	254 04 0 00 034363 		HALT	.+1
+  4685	034363	320 00 0 00 034364 		JUMP	.+1
+  4686									^
+  4687					^
+  4688						IOBRQ	7,1,77400^
+  4689						CLEAN			^
+  4690	034364	7 000 20 0 00 634440 		CONO	634440
+  4691	034365	7 004 20 0 00 010000 		CONO	PI,10000
+  4692									^;CLEAR THE WORLD EXCEPT CP
+  4693						CPINTR	7^		;PROVIDE AN INTERRUPT TO PI
+  4694	034366	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4695	034367	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4696	034370	7 000 20 0 00 042227 		CONO	42220+7^
+  4697	034371	7 004 20 0 00 002201 		CONO	PI,PIOSET+ACT+1	;TURN ON CK FLOP TO ALLOW
+  4698	034372	7 004 34 0 00 077400 		CONSO	PI,77400		;INTERRUPT. CK INPUT TO PIR FLOP
+  4699						STOP^
+  4700	034373	254 04 0 00 034374 		HALT	.+1
+  4701	034374	320 00 0 00 034375 		JUMP	.+1
+  4702									^
+  4703					^
+  4704	034375				MOD111:	CLEAN^
+  4705	034375	7 000 20 0 00 634440 		CONO	634440
+  4706	034376	7 004 20 0 00 010000 		CONO	PI,10000
+  4707									^
+  4708
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 44
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0113
+
+  4709	034377				MOD115:	CLEAN			^;TEST CP FOR NO INTERRUPT
+  4710
+  4711	034377	7 000 20 0 00 634440 		CONO	634440
+  4712	034400	7 004 20 0 00 010000 		CONO	PI,10000
+  4713
+  4714	034401	7 000 20 0 00 000001 		CONO	1		;ASSIGN A CHANNEL TO
+  4715	034402	7 004 20 0 00 002377 		CONO	PI,PIG0		;PROCESSOR, ENABLE PI. IF
+  4716	034403	7 004 30 0 00 077400 		CONSZ	PI,77400	;INTERRUPT PROCESS PUT BIT ON PI BUSS
+  4717						STOP			^;CHECK TOB IPRQ ON CPA PRINT
+  4718
+  4719	034404	254 04 0 00 034405 		HALT	.+1
+  4720	034405	320 00 0 00 034406 		JUMP	.+1
+  4721
+  4722
+  4723						BLURB^
+  4724					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  4725					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  4726					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  4727					;INSTRUCTION
+  4728					^
+  4729
+  4730	034406				MOD116:	CLEAN^
+  4731	034406	7 000 20 0 00 634440 		CONO	634440
+  4732	034407	7 004 20 0 00 010000 		CONO	PI,10000
+  4733									^
+  4734						CPINTR	1		^;ENABLE PROCESSOR INTERRUPT
+  4735							;PROVIDE AN INTERRUPT TO PI
+  4736	034410	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4737	034411	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4738	034412	7 000 20 0 00 042221 		CONO	42220+1
+  4739	034413	400 00 0 00 000000 		SETZ
+  4740	034414	7 004 20 0 00 002377 		CONO	PI,PIG0		;PROCESSOR DECODE TO PI BUSS
+  4741	034415	302 00 0 00 000042 		CAIE	42		;FAIL, SEE TOP RIGHT OF CPU
+  4742						STOP			^;PRINT C(0)=ADDR OF XCT INST
+  4743
+  4744	034416	254 04 0 00 034417 		HALT	.+1
+  4745	034417	320 00 0 00 034420 		JUMP	.+1
+  4746
+  4747
+  4748	034420				MOD117:	CLEAN^
+  4749	034420	7 000 20 0 00 634440 		CONO	634440
+  4750	034421	7 004 20 0 00 010000 		CONO	PI,10000
+  4751									^
+  4752						CPINTR	2		^;ENABLE PROCESSOR INTERRUPT
+  4753							;PROVIDE AN INTERRUPT TO PI
+  4754	034422	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4755	034423	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4756	034424	7 000 20 0 00 042222 		CONO	42220+2
+  4757	034425	400 00 0 00 000000 		SETZ			;WILL BE FILLED BY ADDR OF XCT INST
+  4758	034426	7 004 20 0 00 002377 		CONO	PI,PIG0		;ACTIVATE PI SYS
+  4759	034427	302 00 0 00 000044 		CAIE	44		;EXPECT CHANNEL 2
+  4760						STOP			^;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
+  4761
+  4762	034430	254 04 0 00 034431 		HALT	.+1
+  4763	034431	320 00 0 00 034432 		JUMP	.+1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 44-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0114
+
+  4764
+  4765						CHANEL	MOD120^
+  4766	034432	336 00 0 00 036672 		SKIPN	PI7SYS#
+  4767	034433	254 00 0 00 034507 		JRST	MOD120
+  4768									^
+  4769	034434				MOD118:	CLEAN^
+  4770	034434	7 000 20 0 00 634440 		CONO	634440
+  4771	034435	7 004 20 0 00 010000 		CONO	PI,10000
+  4772									^
+  4773						CPINTR	4		^;ENABLE PROCESSOR INTERRUPT
+  4774							;PROVIDE AN INTERRUPT TO PI
+  4775	034436	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4776	034437	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4777	034440	7 000 20 0 00 042224 		CONO	42220+4
+  4778	034441	400 00 0 00 000000 		SETZ			;WILL BE FILL BY ADDR OF XCT INST
+  4779	034442	7 004 20 0 00 002377 		CONO	PI,PIG0		;ACT PI SYS
+  4780	034443	302 00 0 00 000050 		CAIE	50		;EXPECT CHANNEL 4
+  4781						STOP			^;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
+  4782
+  4783	034444	254 04 0 00 034445 		HALT	.+1
+  4784	034445	320 00 0 00 034446 		JUMP	.+1
+  4785
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 45
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0115
+
+  4786
+  4787						BLURB^
+  4788					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  4789					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  4790					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  4791					;INSTRUCTION
+  4792					^
+  4793	034446				MOD119:	CLEAN			^;ENABLE AN INTERRUPT ON CHANNEL 1-7
+  4794
+  4795	034446	7 000 20 0 00 634440 		CONO	634440
+  4796	034447	7 004 20 0 00 010000 		CONO	PI,10000
+  4797
+  4798						CPINTR	7		^;CHECK PROCESSOR INTERRUPT
+  4799							;PROVIDE AN INTERRUPT TO PI
+  4800	034450	205 00 0 00 400000 		MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+  4801	034451	270 00 0 00 000000 		ADD			;AND OTHER SOURCES
+  4802	034452	7 000 20 0 00 042227 		CONO	42220+7
+  4803	034453	7 004 20 0 00 002377 		CONO	PI,PIG0
+  4804	034454	302 00 0 00 000056 		CAIE	56
+  4805						STOP			^;CH 7 FAIL TO INTERRUPT
+  4806
+  4807	034455	254 04 0 00 034456 		HALT	.+1
+  4808	034456	320 00 0 00 034457 		JUMP	.+1
+  4809
+  4810	034457	7 000 20 0 00 000006 		CONO	6
+  4811	034460	302 00 0 00 000054 		CAIE	54
+  4812						STOP			^;CH 6 FAIL TO INTERRUPT
+  4813
+  4814	034461	254 04 0 00 034462 		HALT	.+1
+  4815	034462	320 00 0 00 034463 		JUMP	.+1
+  4816
+  4817	034463	7 000 20 0 00 000005 		CONO	5
+  4818	034464	302 00 0 00 000052 		CAIE	52
+  4819						STOP			^;CH 5 FAIL TO INTERRUPT
+  4820
+  4821	034465	254 04 0 00 034466 		HALT	.+1
+  4822	034466	320 00 0 00 034467 		JUMP	.+1
+  4823
+  4824	034467	7 000 20 0 00 000004 		CONO	4
+  4825	034470	302 00 0 00 000050 		CAIE	50
+  4826						STOP			^;CH 4 FAIL TO INTERRUPT
+  4827
+  4828	034471	254 04 0 00 034472 		HALT	.+1
+  4829	034472	320 00 0 00 034473 		JUMP	.+1
+  4830
+  4831	034473	7 000 20 0 00 000003 		CONO	3
+  4832	034474	302 00 0 00 000046 		CAIE	46
+  4833						STOP			^;CH 3 FAIL TO INTERRUPT
+  4834
+  4835	034475	254 04 0 00 034476 		HALT	.+1
+  4836	034476	320 00 0 00 034477 		JUMP	.+1
+  4837
+  4838	034477	7 000 20 0 00 000002 		CONO	2
+  4839	034500	302 00 0 00 000044 		CAIE	44
+  4840						STOP			^;CH 2 FAIL TO INTERRUPT
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 45-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0116
+
+  4841
+  4842	034501	254 04 0 00 034502 		HALT	.+1
+  4843	034502	320 00 0 00 034503 		JUMP	.+1
+  4844
+  4845	034503	7 000 20 0 00 000001 		CONO	1
+  4846	034504	302 00 0 00 000042 		CAIE	42
+  4847						STOP			^;CH 1 FAIL TO INTERRUPT
+  4848
+  4849	034505	254 04 0 00 034506 		HALT	.+1
+  4850	034506	320 00 0 00 034507 		JUMP	.+1
+  4851
+  4852	034507				MOD120:	CLEAN^
+  4853	034507	7 000 20 0 00 634440 		CONO	634440
+  4854	034510	7 004 20 0 00 010000 		CONO	PI,10000
+  4855									^
+  4856
+  4857						BLURB^
+  4858					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  4859					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  4860					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  4861					;INSTRUCTION
+  4862					^
+  4863	034511				MOD121:	CLEAN^
+  4864	034511	7 000 20 0 00 634440 		CONO	634440
+  4865	034512	7 004 20 0 00 010000 		CONO	PI,10000
+  4866									^
+  4867	034513	400 00 0 00 000000 		SETZ			;C(0) MODIFIED IF INTERRUPT
+  4868	034514	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  4869	034515	255 10 0 00 034516 		JFCL	10,.+1		;CLEAR AROV
+  4870	034516	7 000 20 0 00 000021 		CONO	20+1		;ENABLE AROV CH1
+  4871	034517	332 00 0 00 000000 		SKIPE			;INTERRUPT OCCURED SEE CPA PRINT
+  4872						STOP			^;CPA AROV EN(1) AND GATE TO PIRQ
+  4873
+  4874	034520	254 04 0 00 034521 		HALT	.+1
+  4875	034521	320 00 0 00 034522 		JUMP	.+1
+  4876
+  4877
+  4878	034522				MOD122:	CLEAN^
+  4879	034522	7 000 20 0 00 634440 		CONO	634440
+  4880	034523	7 004 20 0 00 010000 		CONO	PI,10000
+  4881									^
+  4882	034524	400 00 0 00 000000 		SETZ
+  4883	034525	7 004 20 0 00 002377 		CONO	PI,PIG0
+  4884	034526	205 00 0 00 400000 		MOVSI	400000
+  4885	034527	270 00 0 00 000000 		ADD			;SET AROV
+  4886	034530	7 000 20 0 00 000001 		CONO	1		;AROV CNT NO ENABLE
+  4887	034531	332 00 0 00 000000 		SKIPE			;INT OCCURED SEE CPU PRINT
+  4888						STOP^
+  4889	034532	254 04 0 00 034533 		HALT	.+1
+  4890	034533	320 00 0 00 034534 		JUMP	.+1
+  4891									^
+  4892
+  4893	034534				MOD123:	CLEAN^
+  4894	034534	7 000 20 0 00 634440 		CONO	634440
+  4895	034535	7 004 20 0 00 010000 		CONO	PI,10000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 45-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0117
+
+  4896									^
+  4897	034536	400 00 0 00 000000 		SETZ
+  4898	034537	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  4899	034540	205 00 0 00 400000 		MOVSI	400000		;SET AROV
+  4900	034541	270 00 0 00 000000 		ADD			;FLOP
+  4901	034542	7 000 20 0 00 000021 		CONO	21		;FLOP AND AROV (EN)
+  4902	034543	302 00 0 00 000042 		CAIE	42		;NO INTERRUPT CHECK AND GATE
+  4903						STOP			^;TO PIRQ ON CPU PRINT
+  4904
+  4905	034544	254 04 0 00 034545 		HALT	.+1
+  4906	034545	320 00 0 00 034546 		JUMP	.+1
+  4907
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 46
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0118
+
+  4908
+  4909	034546				MOD124:	CLEAN^
+  4910	034546	7 000 20 0 00 634440 		CONO	634440
+  4911	034547	7 004 20 0 00 010000 		CONO	PI,10000
+  4912									^
+  4913	034550	400 00 0 00 000000 		SETZ
+  4914	034551	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  4915	034552	7 000 34 0 00 001000 		CONSO	1000
+  4916	034553	254 00 0 00 034552 		JRST	.-1		;WAIT IF CLK=0
+  4917	034554	7 000 20 0 00 002001 		CONO	2001		;SET CLOCK ENABLE
+  4918	034555	302 00 0 00 000042 		CAIE	42		;SHOULD INTERRUPT TO LOC 42
+  4919						STOP			^;SEE CPU PRINT AND CLK ENABLE
+  4920
+  4921	034556	254 04 0 00 034557 		HALT	.+1
+  4922	034557	320 00 0 00 034560 		JUMP	.+1
+  4923
+  4924
+  4925						BLURB^
+  4926					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  4927					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  4928					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  4929					;INSTRUCTION
+  4930					^
+  4931	034560				MOD125:	CLEAN^
+  4932	034560	7 000 20 0 00 634440 		CONO	634440
+  4933	034561	7 004 20 0 00 010000 		CONO	PI,10000
+  4934									^
+  4935	034562	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PISYS
+  4936	034563	7 000 20 0 00 000001 		CONO	1		;TRY TO SET NONEX MEM
+  4937	034564	400 00 0 00 000000 		SETZ			;NO INTERRUPT SET
+  4938	034565	310 00 0 00 777777 		CAM	-1		;NONEX INPUT TO
+  4939	034566	302 00 0 00 000042 		CAIE	42		;PIRQ ON CPA
+  4940						STOP			^;PRINT
+  4941
+  4942	034567	254 04 0 00 034570 		HALT	.+1
+  4943	034570	320 00 0 00 034571 		JUMP	.+1
+  4944
+  4945
+  4946	034571				MOD127:	CLEAN^
+  4947	034571	7 000 20 0 00 634440 		CONO	634440
+  4948	034572	7 004 20 0 00 010000 		CONO	PI,10000
+  4949									^
+  4950	034573	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  4951	034574	7 000 20 0 00 000001 		CONO	1		;CPU TO CHANNEL 1
+  4952	034575	474 00 0 00 000000 		SETO			;SET THE
+  4953	034576	260 00 0 00 034577 		PUSHJ	.+1		;PDL FLAG
+  4954	034577	302 00 0 00 000042 		CAIE	42		;IT FAILED TO INTERRUPT
+  4955						STOP			^;SEE ITS INPUT TO PIRQ ON CPA PRINT
+  4956
+  4957	034600	254 04 0 00 034601 		HALT	.+1
+  4958	034601	320 00 0 00 034602 		JUMP	.+1
+  4959
+  4960
+  4961	034602				MOD128:	CLEAN^
+  4962	034602	7 000 20 0 00 634440 		CONO	634440
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 46-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0119
+
+  4963	034603	7 004 20 0 00 010000 		CONO	PI,10000
+  4964									^
+  4965	034604	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  4966	034605	7 000 20 0 00 000001 		CONO	1
+  4967	034606	400 00 0 00 000000 		SETZ
+  4968	034607	7 004 20 0 00 040000 		CONO	PI,40000	;ENABLE PAR
+  4969	034610	332 00 0 00 000000 		SKIPE			;INTERRUPT OCCURED
+  4970						STOP			^;CHECK CPU PIRQ INPUT
+  4971
+  4972	034611	254 04 0 00 034612 		HALT	.+1
+  4973	034612	320 00 0 00 034613 		JUMP	.+1
+  4974
+  4975
+  4976	034613				MOD129:	CLEAN^
+  4977	034613	7 000 20 0 00 634440 		CONO	634440
+  4978	034614	7 004 20 0 00 010000 		CONO	PI,10000
+  4979									^
+  4980	034615	255 01 0 00 034616 		JFCL	1,.+1		;CLEAR FOV
+  4981	034616	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  4982	034617	400 00 0 00 000000 		SETZ
+  4983	034620	7 004 20 0 00 000201 		CONO	PI,201		;FOV ENABLE. INTERRUPT
+  4984	034621	332 00 0 00 000000 		SKIPE			;OCCURED CK PIRQ INPUTS
+  4985						STOP			^;ON CPU PRINT
+  4986
+  4987	034622	254 04 0 00 034623 		HALT	.+1
+  4988	034623	320 00 0 00 034624 		JUMP	.+1
+  4989
+  4990
+  4991	034624				MOD130:	CLEAN^
+  4992	034624	7 000 20 0 00 634440 		CONO	634440
+  4993	034625	7 004 20 0 00 010000 		CONO	PI,10000
+  4994									^
+  4995						SFLAG 40000		^;SET FOV FLAG
+  4996
+  4997	034626	205 01 0 00 040000 		MOVSI	1,40000
+  4998	034627	255 17 0 00 034630 		JFCL	17,.+1
+  4999	034630	254 02 0 01 034631 		JRST	2,.+1(1)
+  5000
+  5001	034631	400 00 0 00 000000 		SETZ
+  5002	034632	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  5003	034633	7 000 20 0 00 000001 		CONO	1		;CH1 TO PROCESSOR
+  5004	034634	332 00 0 00 000000 		SKIPE			;FOV ENABLE FAIL TO PREVENT
+  5005						STOP			^;INTERRUPT SEE CPU PRINT
+  5006
+  5007	034635	254 04 0 00 034636 		HALT	.+1
+  5008	034636	320 00 0 00 034637 		JUMP	.+1
+  5009
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 47
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0120
+
+  5010						BLURB^
+  5011					;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+  5012					;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+  5013					;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+  5014					;INSTRUCTION
+  5015					^
+  5016	034637				MOD131:	CLEAN^
+  5017	034637	7 000 20 0 00 634440 		CONO	634440
+  5018	034640	7 004 20 0 00 010000 		CONO	PI,10000
+  5019									^
+  5020						SFLAG 40000		^;SET FOV FLAG
+  5021
+  5022	034641	205 01 0 00 040000 		MOVSI	1,40000
+  5023	034642	255 17 0 00 034643 		JFCL	17,.+1
+  5024	034643	254 02 0 01 034644 		JRST	2,.+1(1)
+  5025
+  5026	034644	7 004 20 0 00 002377 		CONO	PI,PIG0		;ENABLE PI
+  5027	034645	400 00 0 00 000000 		SETZ
+  5028	034646	7 000 20 0 00 000201 		CONO	201		;ENABLE FOV+CH1
+  5029	034647	302 00 0 00 000042 		CAIE	42		;FAIL TO INTERRUPT SEE
+  5030						STOP			^;PIRQ INPUTS ON CPA PRINT
+  5031
+  5032	034650	254 04 0 00 034651 		HALT	.+1
+  5033	034651	320 00 0 00 034652 		JUMP	.+1
+  5034
+  5035	034652				MOD132:	CLEAN^
+  5036	034652	7 000 20 0 00 634440 		CONO	634440
+  5037	034653	7 004 20 0 00 010000 		CONO	PI,10000
+  5038									^
+  5039	034654	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;INTERRUPT
+  5040						REPEAT	^D10,
+  5041					<	JRST .+1>
+  5042	034655	254 00 0 00 034656 		JRST .+1
+  5043	034656	254 00 0 00 034657 		JRST .+1
+  5044	034657	254 00 0 00 034660 		JRST .+1
+  5045	034660	254 00 0 00 034661 		JRST .+1
+  5046	034661	254 00 0 00 034662 		JRST .+1
+  5047	034662	254 00 0 00 034663 		JRST .+1
+  5048	034663	254 00 0 00 034664 		JRST .+1
+  5049	034664	254 00 0 00 034665 		JRST .+1
+  5050	034665	254 00 0 00 034666 		JRST .+1
+  5051	034666	254 00 0 00 034667 		JRST .+1
+  5052	034667	7 004 34 0 00 040000 		CONSO	PI,40000	;PIH WAS RESET BY JRST (NO BIT 9)
+  5053						STOP			^;SEE PI RESTORE LOGIC ON PI1 PRINT
+  5054
+  5055	034670	254 04 0 00 034671 		HALT	.+1
+  5056	034671	320 00 0 00 034672 		JUMP	.+1
+  5057
+  5058	034672				MOD133:	CLEAN^
+  5059	034672	7 000 20 0 00 634440 		CONO	634440
+  5060	034673	7 004 20 0 00 010000 		CONO	PI,10000
+  5061									^
+  5062	034674	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;INTERRUPT
+  5063						REPEAT	^D10,
+  5064					<	CAI 10,0>
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 47-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0121
+
+  5065	034675	300 10 0 00 000000 		CAI 10,0
+  5066	034676	300 10 0 00 000000 		CAI 10,0
+  5067	034677	300 10 0 00 000000 		CAI 10,0
+  5068	034700	300 10 0 00 000000 		CAI 10,0
+  5069	034701	300 10 0 00 000000 		CAI 10,0
+  5070	034702	300 10 0 00 000000 		CAI 10,0
+  5071	034703	300 10 0 00 000000 		CAI 10,0
+  5072	034704	300 10 0 00 000000 		CAI 10,0
+  5073	034705	300 10 0 00 000000 		CAI 10,0
+  5074	034706	300 10 0 00 000000 		CAI 10,0
+  5075	034707	7 004 34 0 00 040000 		CONSO	PI,40000	;PIH WAS RESET BY BIT9(NO JRST)
+  5076						STOP			^;SEE PI RESTORE LOGIC ON PI1 PRINT
+  5077
+  5078	034710	254 04 0 00 034711 		HALT	.+1
+  5079	034711	320 00 0 00 034712 		JUMP	.+1
+  5080
+  5081	034712				MOD134:	CLEAN			^;TEST PI CYC(1) INPUT TO PI OV
+  5082
+  5083	034712	7 000 20 0 00 634440 		CONO	634440
+  5084	034713	7 004 20 0 00 010000 		CONO	PI,10000
+  5085
+  5086	034714	474 00 0 00 000000 		SETO			;PROVIDE ALL CONDITIONS TO SET
+  5087	034715	7 000 00 0 00 000000 		BLKI			;PI OV EXCEPT PI CYC(1)
+  5088	034716	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;IF C(0)=43 REPLACE THE B137
+  5089	034717	302 00 0 00 000042 		CAIE	42		;AND GATE TO PI OV SEE
+  5090						STOP			^;PI1 PRINT
+  5091
+  5092	034720	254 04 0 00 034721 		HALT	.+1
+  5093	034721	320 00 0 00 034722 		JUMP	.+1
+  5094
+  5095	034722				MOD135:	CLEAN^
+  5096	034722	7 000 20 0 00 634440 		CONO	634440
+  5097	034723	7 004 20 0 00 010000 		CONO	PI,10000
+  5098									^
+  5099	034724	200 00 0 00 036477 		MOVE	[BLKO ME,0]	;PUT A BLKI IN
+  5100	034725	202 00 0 00 000042 		MOVEM	42		;LOC 42
+  5101	034726	400 00 0 00 000000 		SETZ			;PROVIDE FOR NO OVERFLOW
+  5102	034727	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;INTERRUPT. IF C(0)=43
+  5103	034730	306 00 0 00 000043 		CAIN	43		;AND GATE TO PIOU THE AD
+  5104						STOP			^;CRY0(1) INPUT FAILED. SEE PI1 PRINT
+  5105
+  5106	034731	254 04 0 00 034732 		HALT	.+1
+  5107	034732	320 00 0 00 034733 		JUMP	.+1
+  5108
+  5109	034733	254 00 0 00 034734 		JRST	MOD136
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 48
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0122
+
+  5110					;HOLE LEFT FOR RELOCATION TEST
+  5111
+  5112
+  5113	034734				MOD136:	CLEAN^
+  5114	034734	7 000 20 0 00 634440 		CONO	634440
+  5115	034735	7 004 20 0 00 010000 		CONO	PI,10000
+  5116									^
+  5117	034736	200 00 0 00 036500 		MOVE	[AOS]		;PUT AN AOS IN LOC 42
+  5118	034737	202 00 0 00 000042 		MOVEM	42		;PROVIDE ALL INPUTS TO
+  5119	034740	474 00 0 00 000000 		SETO			;PIOU EXCEPT IOT BLK
+  5120	034741	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CANT TEST GATE
+  5121	034742	332 00 0 00 000000 		SKIPE			;THINK UNNECESSARY
+  5122						STOP			^;BUT DO IT ANYWAY
+  5123
+  5124	034743	254 04 0 00 034744 		HALT	.+1
+  5125	034744	320 00 0 00 034745 		JUMP	.+1
+  5126
+  5127
+  5128	034745				MOD137:	CLEAN^
+  5129	034745	7 000 20 0 00 634440 		CONO	634440
+  5130	034746	7 004 20 0 00 010000 		CONO	PI,10000
+  5131									^
+  5132	034747	200 00 0 00 036477 		MOVE	[BLKO ME,0]	;SETUP A BLKO TO SET
+  5133	034750	202 00 0 00 000042 		MOVEM	42		;THE PI OV FLOP
+  5134	034751	474 00 0 00 000000 		SETO
+  5135	034752	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CAUSE FIRST INTERRUPT
+  5136	034753	400 00 0 00 000000 		SETZ			;PI SHOULD SET AT THIS
+  5137						CLEAN			^;TIME, IF PI OV IS NOT
+  5138
+  5139	034754	7 000 20 0 00 634440 		CONO	634440
+  5140	034755	7 004 20 0 00 010000 		CONO	PI,10000
+  5141
+  5142	034756	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CLEARED AT ST1 NEXT INTERRUPT
+  5143	034757	306 00 0 00 000043 		CAIN	43		;WILL OCCUR AT LOC 43
+  5144						STOP			^;SET PI 1 PRINT.
+  5145
+  5146	034760	254 04 0 00 034761 		HALT	.+1
+  5147	034761	320 00 0 00 034762 		JUMP	.+1
+  5148
+  5149
+  5150	034762				MOD140:	CLEAN^
+  5151	034762	7 000 20 0 00 634440 		CONO	634440
+  5152	034763	7 004 20 0 00 010000 		CONO	PI,10000
+  5153									^
+  5154	034764	200 00 0 00 036477 		MOVE	[BLKO ME,0]	;PUT A BLKO IN LOC 42
+  5155	034765	202 00 0 00 000042 		MOVEM	42		;WHEN EXECUTED THIS SHOULD
+  5156	034766	474 00 0 00 000000 		SETO			;SET PIOV. IF PI OV IS NOT
+  5157	034767	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;CONNECTED TO MA REGISTER
+  5158	034770	405 00 0 00 777777 		ANDI	-1		;42 WILL BE EXECUTED TWICE
+  5159	034771	306 00 0 00 000001 		CAIN	1		;SEE MA 35 SET AT IT0
+  5160						STOP			^;AND PI OV(1) ON MA1 PRINT
+  5161
+  5162	034772	254 04 0 00 034773 		HALT	.+1
+  5163	034773	320 00 0 00 034774 		JUMP	.+1
+  5164
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 48-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0123
+
+  5165
+  5166	034774				MOD141:	CLEAN			^;CHECK BLKO NOT RESET PIH
+  5167
+  5168	034774	7 000 20 0 00 634440 		CONO	634440
+  5169	034775	7 004 20 0 00 010000 		CONO	PI,10000
+  5170
+  5171	034776	200 00 0 00 036501 		MOVE	[MOVEI 42]	;RESTORE LOC 42
+  5172	034777	202 00 0 00 000042 		MOVEM	42		;TO MOVEI
+  5173	035000	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+100	;SET PIH VIA INTERRUPT
+  5174	035001	400 00 0 00 000000 		SETZ			;IF PIH1(0) THEN PI CYC(1)
+  5175	035002	7 774 10 0 00 000000 		BLKO	ME,0		;INPUT TO PI RESTORE FAILED
+  5176
+  5177	035003	300 00 0 00 000000 		CAI
+  5178	035004	7 004 34 0 00 040000 		CONSO	PI,40000		;SET PI1 PRINT
+  5179						STOP^
+  5180	035005	254 04 0 00 035006 		HALT	.+1
+  5181	035006	320 00 0 00 035007 		JUMP	.+1
+  5182									^
+  5183
+  5184	035007				MOD142:	CLEAN			^;CHECK PI RESTORE LOGIC
+  5185
+  5186	035007	7 000 20 0 00 634440 		CONO	634440
+  5187	035010	7 004 20 0 00 010000 		CONO	PI,10000
+  5188
+  5189	035011	200 00 0 00 036502 		MOVE	[DATAO ME,0]	;DATAO AND PIOV SHOULD PRODUCE
+  5190	035012	202 00 0 00 000042 		MOVEM	42		;PI RESTORE. CHECK THIS INPUT
+  5191	035013	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+100	;TO PI RESTORE ON PI1 PRINT
+  5192	035014	7 004 30 0 00 040000 		CONSZ	PI,40000		;ALSO CHECK PI CYC(1) INPUT
+  5193						STOP			^;ON SAME PAGE
+  5194
+  5195	035015	254 04 0 00 035016 		HALT	.+1
+  5196	035016	320 00 0 00 035017 		JUMP	.+1
+  5197
+  5198
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 49
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0124
+
+  5199	035017				MOD143:	CLEAN^
+  5200	035017	7 000 20 0 00 634440 		CONO	634440
+  5201	035020	7 004 20 0 00 010000 		CONO	PI,10000
+  5202									^
+  5203	035021	200 00 0 00 036503 		MOVE	[DATAI ME,0]	;IF MACHINE HANGS OR
+  5204	035022	202 00 0 00 000042 		MOVEM	42		;PIH(1) CHECK DATAO/DATAI
+  5205	035023	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+100	;INPUT TO PRIORITY SYSTEM
+  5206	035024	7 004 30 0 00 040000 		CONSZ	PI,40000		;SEE PI1 PRINT (LOWER LEFT)
+  5207						STOP^
+  5208	035025	254 04 0 00 035026 		HALT	.+1
+  5209	035026	320 00 0 00 035027 		JUMP	.+1
+  5210									^
+  5211
+  5212	035027				MOD144:	CLEAN^
+  5213	035027	7 000 20 0 00 634440 		CONO	634440
+  5214	035030	7 004 20 0 00 010000 		CONO	PI,10000
+  5215									^
+  5216	035031	200 00 0 00 036477 		MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
+  5217	035032	202 00 0 00 000042 		MOVEM	42		;POINTER SHOULD SET PIOV. THE
+  5218	035033	474 00 0 00 000000 		SETO			;INST AT LOC 43 A (MOVEI 43)
+  5219	035034	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
+  5220	035035	7 004 34 0 00 040000 		CONSO	PI,40000	;PI OV AND ASSOCIATED LOGIC
+  5221						STOP			^;ON PI1 PRINT
+  5222
+  5223	035036	254 04 0 00 035037 		HALT	.+1
+  5224	035037	320 00 0 00 035040 		JUMP	.+1
+  5225
+  5226
+  5227	035040				MOD145:	CLEAN^
+  5228	035040	7 000 20 0 00 634440 		CONO	634440
+  5229	035041	7 004 20 0 00 010000 		CONO	PI,10000
+  5230									^
+  5231	035042	200 00 0 00 036477 		MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
+  5232	035043	202 00 0 00 000042 		MOVEM	42		;POINTER SHOULD SET PIOV. THE
+  5233	035044	474 00 0 00 000000 		SETO			;INST AT LOC 43 A (MOVEI 43)
+  5234	035045	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
+  5235	035046	302 00 0 00 000043 		CAIE	43		;CHECK PI OV INPUT TO MA35
+  5236						STOP			^;SET ON MA1 PRINT
+  5237
+  5238	035047	254 04 0 00 035050 		HALT	.+1
+  5239	035050	320 00 0 00 035051 		JUMP	.+1
+  5240
+  5241
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 50
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0125
+
+  5242	035051				MOD147:	CLEAN			^;TEST PI CYC(0) GET TO PIR STB
+  5243
+  5244	035051	7 000 20 0 00 634440 		CONO	634440
+  5245	035052	7 004 20 0 00 010000 		CONO	PI,10000
+  5246
+  5247	035053	200 00 0 00 036477 		MOVE	[BLKO ME,0]	;PUT A BLKO WITH POINTER TO
+  5248	035054	202 00 0 00 000044 		MOVEM	44		;SET PI OV IN CHANNEL 2 BLKO
+  5249	035055	200 00 0 00 036504 		MOVE	[MOVEI 1,42]	;WILL SET NONEX MEM CAUSING
+  5250	035056	202 00 0 00 000042 		MOVEM	42		;INTERRUPT ON CH1 THE INSTRUCTION
+  5251	035057	561 00 0 00 777776 		HRROI	-2		;AT LOC 45 MUST BE EXECUTED
+  5252	035060	7 004 20 0 00 002100 		CONO PI,PIOSET+100
+  5253	035061	7 000 20 0 00 000001 		CONO	1		;OR PI CYC(0) GATE TO PIR STB FAILED
+  5254	035062	7 004 20 0 00 004240 		CONO PI,PIREQ+ACT+40
+  5255	035063	302 00 0 00 000045 		CAIE	45		;AND OF MC RQ PULSE PICYC(0)
+  5256						STOP^
+  5257	035064	254 04 0 00 035065 		HALT	.+1
+  5258	035065	320 00 0 00 035066 		JUMP	.+1
+  5259									^
+  5260	035066	302 01 0 00 000042 		CAIE	1,42
+  5261						STOP			^;NONEX FAIL TO INTERRUPT CH1
+  5262
+  5263	035067	254 04 0 00 035070 		HALT	.+1
+  5264	035070	320 00 0 00 035071 		JUMP	.+1
+  5265
+  5266
+  5267	035071				MOD148:	CLEAN			^;PUT A SKIPA IN THE
+  5268
+  5269	035071	7 000 20 0 00 634440 		CONO	634440
+  5270	035072	7 004 20 0 00 010000 		CONO	PI,10000
+  5271
+  5272	035073	200 00 0 00 036505 		MOVE	[SKIPA]		;INTERRUPT SPOT
+  5273	035074	202 00 0 00 000042 		MOVEM	42
+  5274	035075	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+100
+  5275						STOP^
+  5276	035076	254 04 0 00 035077 		HALT	.+1
+  5277	035077	320 00 0 00 035100 		JUMP	.+1
+  5278									^
+  5279
+  5280	035100				MOD149:	CLEAN^
+  5281	035100	7 000 20 0 00 634440 		CONO	634440
+  5282	035101	7 004 20 0 00 010000 		CONO	PI,10000
+  5283									^
+  5284	035102	200 00 0 00 036506 		MOVE	[JSR .+4]
+  5285	035103	202 00 0 00 000042 		MOVEM	42
+  5286	035104	7 004 20 0 00 004300 		CONO	PI,PIREQ+ACT+100
+  5287						STOP^
+  5288	035105	254 04 0 00 035106 		HALT	.+1
+  5289	035106	320 00 0 00 035107 		JUMP	.+1
+  5290									^
+  5291	035107	000000	000000			0
+  5292
+  5293	035110				MOD150:	CLEAN			^;INTERRUPT TO A PUSHJ
+  5294
+  5295	035110	7 000 20 0 00 634440 		CONO	634440
+  5296	035111	7 004 20 0 00 010000 		CONO	PI,10000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 50-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0126
+
+  5297
+  5298	035112	200 00 0 00 036507 		MOVE	[PUSHJ .+4]
+  5299	035113	202 00 0 00 000042 		MOVEM	42
+  5300	035114	205 00 0 00 777777 		MOVSI	-1
+  5301	035115	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100
+  5302	035116	405 01 0 00 777777 		ANDI	1,-1
+  5303	035117	302 01 0 00 035116 		CAIE	1,.-1
+  5304						STOP			^;PC STORED INCORRECTLY
+  5305
+  5306	035120	254 04 0 00 035121 		HALT	.+1
+  5307	035121	320 00 0 00 035122 		JUMP	.+1
+  5308
+  5309	035122	302 00 0 00 000001 		CAIE	1		;THE PUSHJ
+  5310						STOP			^;POINTER WORD IN ERROR
+  5311
+  5312	035123	254 04 0 00 035124 		HALT	.+1
+  5313	035124	320 00 0 00 035125 		JUMP	.+1
+  5314
+  5315						CLEAN^
+  5316	035125	7 000 20 0 00 634440 		CONO	634440
+  5317	035126	7 004 20 0 00 010000 		CONO	PI,10000
+  5318									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 51
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0127
+
+  5319	035127				MOD151:	CLEAN^
+  5320	035127	7 000 20 0 00 634440 		CONO	634440
+  5321	035130	7 004 20 0 00 010000 		CONO	PI,10000
+  5322									^
+  5323	035131	200 00 0 00 036510 		MOVE [MOVEI 43]		;TEST CLEAR MA ON INTERRUPT
+  5324	035132	202 00 0 00 000043 		MOVEM 43
+  5325	035133	200 00 0 00 036511 		MOVE [BLKO ME,4]
+  5326	035134	202 00 0 00 000042 		MOVEM 42
+  5327	035135	477 00 0 00 000004 		SETOB 4
+  5328	035136	541 04 0 00 000004 		HRRI 4,4
+  5329	035137	7 004 20 0 00 004300 		CONO PI,PIREQ+ACT+100
+  5330	035140	302 00 0 00 000043 		CAIE 43
+  5331						STOP^
+  5332	035141	254 04 0 00 035142 		HALT	.+1
+  5333	035142	320 00 0 00 035143 		JUMP	.+1
+  5334									^
+  5335
+  5336
+  5337	035143	402 00 0 00 000060 	MOD152:	SETZM	60		;TEST TRAP TO 60
+  5338	035144	200 00 0 00 036512 		MOVE	[JSP MOD153]	;GO HERE IF TRAP TO 40
+  5339	035145	202 00 0 00 000041 		MOVEM	41		;ERROR
+  5340	035146	200 00 0 00 036513 		MOVE	[JSP MOD153+1]
+  5341	035147	202 00 0 00 000061 		MOVEM	61		;OK TRAP
+  5342	035150	100000	000000			XWD	100000,0	;OP CODE 100-127
+  5343						STOP^
+  5344	035151	254 04 0 00 035152 		HALT	.+1
+  5345	035152	320 00 0 00 035153 		JUMP	.+1
+  5346									^
+  5347	035153				MOD153:	STOP^
+  5348	035153	254 04 0 00 035154 		HALT	.+1
+  5349	035154	320 00 0 00 035155 		JUMP	.+1
+  5350									^
+  5351	035155	336 00 0 00 000060 		SKIPN	60		;NOTHING STORED IN C(60)
+  5352						STOP^
+  5353	035156	254 04 0 00 035157 		HALT	.+1
+  5354	035157	320 00 0 00 035160 		JUMP	.+1
+  5355									^
+  5356
+  5357	035160	336 00 0 00 036674 	MOD154:	SKIPN	USMOD#		;TEST RELOC IF SPECIFIED
+  5358	035161	254 00 0 00 036303 		JRST	MOD195
+  5359
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 52
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0128
+
+  5360					DEFINE	UMON<
+  5361						CONO	634440		;PREPARE TO TURN ON USER
+  5362						CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5363						DATAO	[XWD -1,0]>
+  5364
+  5365					DEFINE	UMOFF<
+  5366						MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5367						MOVEM	41		;UUO. PROG RETURNS TO END
+  5368						XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5369					>
+  5370
+  5371					DEFINE	HOLD<
+  5372						JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5373						JUMP	.+1		;SO WAITING FOR OPERATOR
+  5374					>
+  5375
+  5376	035162	254 02 1 00 036514 	MOD160:	JRST	2,@[XWD 0,.+1]	;CLEAR EX IOT USER, IF LIGHT
+  5377	035163	265 00 0 00 035164 		JSP	.+1		;OUT FLAG TRANSFER TO AR FAIL
+  5378
+  5379	035164	603 00 0 00 004000 		TLNE UMIOT		;BIT 6. OR FLOP FAIL TO CLEAR
+  5380						STOP^
+  5381	035165	254 04 0 00 035166 		HALT	.+1
+  5382	035166	320 00 0 00 035167 		JUMP	.+1
+  5383									^
+  5384
+  5385	035167	254 02 1 00 036515 		JRST	2,@[XWD UMIOT,.+1]	;SET THEN CLEAR EX IOT USER
+  5386	035170	254 02 1 00 036516 		JRST	2,@[XWD 0,.+1]	;CK AND GATE ARF FLAGS FM BR (J),
+  5387	035171	265 00 0 00 035172 		JSP	.+1		;BR6(0) FAIL TO CLEAR
+  5388
+  5389	035172	603 00 0 00 004000 		TLNE UMIOT		;EX IOT USER ON EX PRINT
+  5390						STOP^
+  5391	035173	254 04 0 00 035174 		HALT	.+1
+  5392	035174	320 00 0 00 035175 		JUMP	.+1
+  5393									^
+  5394
+  5395	035175	254 02 1 00 036517 		JRST	2,@[XWD 0,.+1]	;CLEAR THEN SET EX IOT USER
+  5396	035176	254 02 1 00 036520 		JRST	2,@[XWD UMIOT,.+1]	;IF LIGHT=1 FLAGS TO AR FAIL
+  5397	035177	265 00 0 00 035200 		JSP	.+1		;IF LIGHT=0 FLOP FAIL TO SET. CK
+  5398	035200	607 00 0 00 004000 		TLNN	UMIOT		;BR6(1), EX USER(0), ARF FLAGS(J), EX PRINT
+  5399						STOP^
+  5400	035201	254 04 0 00 035202 		HALT	.+1
+  5401	035202	320 00 0 00 035203 		JUMP	.+1
+  5402									^
+  5403
+  5404	035203	254 02 1 00 036521 		JRST	2,@[XWD 0,.+1]	;CLEAR USER. IOB1 PRINT
+  5405	035204	7 000 30 0 00 100000 		CONSZ	1B20		;READ PROCESSOR STATUS
+  5406						STOP^
+  5407	035205	254 04 0 00 035206 		HALT	.+1
+  5408	035206	320 00 0 00 035207 		JUMP	.+1
+  5409									^
+  5410
+  5411	035207	254 02 1 00 036522 		JRST	2,@[XWD UMIOT,.+1]	;SET USER IOB1 PRINT
+  5412	035210	7 000 34 0 00 100000 		CONSO	1B20		;CPA STATUS FAIL
+  5413						STOP^
+  5414	035211	254 04 0 00 035212 		HALT	.+1
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 52-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0129
+
+  5415	035212	320 00 0 00 035213 		JUMP	.+1
+  5416									^
+  5417
+  5418	035213				MOD161:	UMOFF^
+  5419	035213	200 00 0 00 036523 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5420	035214	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5421	035215	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5422					^
+  5423	035216	603 00 0 00 010000 		TLNE	USERF		;FLAGS TO AR BIT5 (USER MODE) FAIL
+  5424						HOLD^
+  5425	035217	324 00 0 00 035217 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5426	035220	320 00 0 00 035221 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5427					^
+  5428
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 53
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0130
+
+  5429					;TRY TO TURN ON USER MODE VIA RESTORE FLAGS THEN
+  5430					;TURN OFF VIA UU0. SEE EX PRINT
+  5431
+  5432	035221	200 00 0 00 036524 	MOD162:	MOVE	[JSP	MD162A]
+  5433	035222	202 00 0 00 000041 		MOVEM	41
+  5434						UMON^
+  5435	035223	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5436	035224	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5437	035225	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5438	035226	254 02 1 00 036526 		JRST	2,@[XWD USERF+UMIOT,MD162B]	;ALSO PRIVI IO
+  5439
+  5440	035227				MD162A:	HOLD	^		;TRAP HERE, NO MEMORY ACCESS, USER MODE
+  5441
+  5442	035227	324 00 0 00 035227 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5443	035230	320 00 0 00 035231 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5444
+  5445
+  5446	035231				MD162B:	UMOFF^
+  5447	035231	200 00 0 00 036527 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5448	035232	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5449	035233	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5450					^
+  5451	035234	607 00 0 00 010000 		TLNN	USERF		;JSP STORED FLAGS IN C(0)
+  5452						HOLD^
+  5453	035235	324 00 0 00 035235 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5454	035236	320 00 0 00 035237 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5455					^
+  5456
+  5457					;TEST UUO TURN OFF OF USER MODE. PRIVI I/O ALLOWS
+  5458					;IOT TO OCCUR IN CASE USER STILL ON. SEE EX PRINT
+  5459
+  5460	035237				MOD163:	UMON^
+  5461	035237	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5462	035240	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5463	035241	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5464	035242	254 02 1 00 036530 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5465						UMOFF^
+  5466	035243	200 00 0 00 036531 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5467	035244	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5468	035245	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5469					^
+  5470						UMOFF^
+  5471	035246	200 00 0 00 036532 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5472	035247	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5473	035250	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5474					^
+  5475	035251	603 00 0 00 010000 		TLNE	USERF		;FLAGS STORED VIA JSP AT 41
+  5476						HOLD^
+  5477	035252	324 00 0 00 035252 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5478	035253	320 00 0 00 035254 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5479					^
+  5480
+  5481	035254				MOD164:	UMON^
+  5482	035254	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5483	035255	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 53-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0131
+
+  5484	035256	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5485	035257	254 02 1 00 036533 		JRST	2,@[XWD USERF+UMIOT,.+1]	;SET USER+PRIV I/O
+  5486	035260	200 00 0 00 036534 		MOVE	[JUMPA .+3]	;SET RETURN FOR THE
+  5487	035261	202 00 0 00 000041 		MOVEM	41		;UUO. EX ILL OP SHOULD
+  5488	035262	040000	000000			XWD	40000,0		;NOT TURN OFF USER FLAG
+  5489	035263	265 00 0 00 035264 		JSP	.+1		;BECAUSE AR FM PC(J)(ET0)
+  5490	035264	607 00 0 00 010000 		TLNN	USERF		;PULSE IF NOT PRESENT. SEE EX
+  5491						HOLD^
+  5492	035265	324 00 0 00 035265 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5493	035266	320 00 0 00 035267 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5494					^
+  5495						UMOFF^
+  5496	035267	200 00 0 00 036535 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5497	035270	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5498	035271	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5499					^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 54
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0132
+
+  5500
+  5501					;PERFORM A UUO. THE PURPOSE OF THIS IS TO SET THE
+  5502					;EX ILL OP FLOP.  THE FLOP SHOULD BE CLEARED BY THE
+  5503					;JSP AT 41. IF HOWEVER THIS DID NOT OCCUR, ANY
+  5504					;STORE PC INSTRUCTION IN USER MODE WOULD CLEAR
+  5505					;USER MODE.  THIS TEST THEREFORE TEST THE CLEAR
+  5506					;TO EX ILL OP VIA AR FM PC(J) (ET0) ON EX PRINT
+  5507
+  5508	035272				MOD165:	UMOFF^
+  5509	035272	200 00 0 00 036536 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5510	035273	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5511	035274	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5512					^
+  5513						UMON^
+  5514	035275	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5515	035276	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5516	035277	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5517	035300	254 02 1 00 036537 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5518	035301	265 00 0 00 035302 		JSP	.+1		;DONT FORGET FAIL TO CLEAR
+  5519	035302	265 00 0 00 035303 		JSP	.+1		;MAY BE PHONEY SET EX ILL OP
+  5520	035303	607 00 0 00 010000 		TLNN	USERF		;OR PHONEY CLEAR EX-USER
+  5521						HOLD^
+  5522	035304	324 00 0 00 035304 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5523	035305	320 00 0 00 035306 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5524					^
+  5525						UMOFF^
+  5526	035306	200 00 0 00 036540 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5527	035307	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5528	035310	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5529					^
+  5530
+  5531	035311				MOD166:	UMOFF^
+  5532	035311	200 00 0 00 036541 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5533	035312	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5534	035313	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5535					^
+  5536						UMON^
+  5537	035314	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5538	035315	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5539	035316	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5540	035317	254 01 0 00 035320 		JRST	1,.+1		;SET USER MODE VIA ET0
+  5541	035320	265 00 0 00 035321 		JSP	.+1		;IR JRST, IR12(1). IT FAILED
+  5542	035321	607 00 0 00 010000 		TLNN	USERF		;REPLACE B135 ON EX PRINT
+  5543						HOLD^
+  5544	035322	324 00 0 00 035322 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5545	035323	320 00 0 00 035324 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5546					^
+  5547						UMOFF^
+  5548	035324	200 00 0 00 036542 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5549	035325	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5550	035326	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5551					^
+  5552
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 55
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0133
+
+  5553					;THIS TEST WILL TRY TO SET THE PRIV I/O BIT WHEN IN
+  5554					;USER MODE. IF THE EX IOT USER FLOP SETS EX USER (0) INPUT
+  5555					;TO THE FLAG FAILED  SEE EX PRINT
+  5556
+  5557	035327				MOD167:	UMON^
+  5558	035327	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5559	035330	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5560	035331	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5561	035332	254 02 1 00 036543 		JRST	2,@[XWD USERF,.+1]	;SET USER
+  5562	035333	254 02 1 00 036544 		JRST	2,@[XWD USERF+UMIOT,.+1]	;TRY TO SET PRIV I/O
+  5563	035334	265 00 0 00 035335 		JSP	.+1
+  5564	035335	603 00 0 00 004000 		TLNE	UMIOT
+  5565						HOLD^
+  5566	035336	324 00 0 00 035336 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5567	035337	320 00 0 00 035340 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5568					^
+  5569						UMOFF^
+  5570	035340	200 00 0 00 036545 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5571	035341	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5572	035342	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5573					^
+  5574
+  5575	035343				MOD170:	UMON^
+  5576	035343	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5577	035344	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5578	035345	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5579	035346	254 02 1 00 036546 		JRST	2,@[XWD USERF,.+1]	;SET USER MODE
+  5580	035347	200 00 0 00 036547 		MOVE	[JSP .+4]		;SET TRAP RETURN
+  5581	035350	202 00 0 00 000041 		MOVEM	41			;1 PAST THE IOT INST
+  5582	035351	402 00 0 00 000040 		SETZM	40			;FAIL TO TRAP. EX ALLOW IOT
+  5583	035352	700000	000000			XWD	700000,0		;ALLOWED THE IOT IN USER
+  5584	035353	336 00 0 00 000040 		SKIPN	40			;MODE. SEE EX PRINT
+  5585						HOLD^
+  5586	035354	324 00 0 00 035354 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5587	035355	320 00 0 00 035356 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5588					^
+  5589						UMOFF^
+  5590	035356	200 00 0 00 036550 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5591	035357	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5592	035360	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5593					^
+  5594
+  5595	035361				MOD171:	UMON^
+  5596	035361	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5597	035362	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5598	035363	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5599	035364	254 02 1 00 036551 		JRST	2,@[XWD USERF+UMIOT,.+1]	;SET PRIVI+USER
+  5600	035365	200 00 0 00 036552 		MOVE	[JSP .+4]		;SET TRAP RETURN 1 PAST
+  5601	035366	202 00 0 00 000041 		MOVEM	41			;THE TRAP INST
+  5602	035367	403 00 0 00 000040 		SETZB	40			;THE EX IOT USER FLOP
+  5603	035370	700000	000000			XWD	700000,0		;SHOULD ALLOW THE IOT
+  5604	035371	300 00 0 00 000000 		CAI
+  5605	035372	332 00 0 00 000040 		SKIPE	40			;CHECK EX ALLOW IOT. EX PRINT
+  5606						HOLD^
+  5607	035373	324 00 0 00 035373 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 55-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0134
+
+  5608	035374	320 00 0 00 035375 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5609					^
+  5610						UMOFF^
+  5611	035375	200 00 0 00 036553 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5612	035376	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5613	035377	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5614					^
+  5615
+  5616	035400				MOD172:	UMON^
+  5617	035400	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5618	035401	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5619	035402	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5620	035403	254 02 1 00 036554 		JRST	2,@[XWD USERF+UMIOT,.+1]	;USER AND PRIV I/O
+  5621	035404	200 00 0 00 036555 		MOVE	[JSP .+3]		;THEN CAUSE A PI REQUEST
+  5622	035405	202 00 0 00 000042 		MOVEM	42			;PI CYC(1) SHOULD SET EX PI SYNC
+  5623	035406	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;WHICH SHOULD CLEAR EX USER
+  5624	035407	265 00 0 00 035410 		JSP	.+1			;AT ET1 OF JSP AT 42. IT
+  5625	035410	603 00 0 00 010000 		TLNE	USERF			;FAILED. SEE EX PRINT
+  5626						HOLD^
+  5627	035411	324 00 0 00 035411 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5628	035412	320 00 0 00 035413 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5629					^
+  5630
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 56
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0135
+
+  5631					;THIS TEST WILL INSURE THAT EX ILL OP IS CLEARED
+  5632					;BY IOT BLK.  THIS LOGIC IS NECESSARY FOR RETURNING TO
+  5633					;THE PROPER RELOCATION WHEN A UUO IS INTERRUPTED AND
+  5634					;MUST BE RE EXECUTED.
+  5635
+  5636
+  5637	035413	200 00 0 00 036556 	MOD173:	MOVE [JUMPA .+3]
+  5638	035414	202 00 0 00 000041 		MOVEM 41
+  5639	035415	040000	000000			XWD 040000,0		;PERHAPS TURN OFF USER MODE
+  5640	035416	400 00 0 00 000000 		SETZ			;PREVIOUS UUO SET EX ILL OP
+  5641	035417	7 000 00 0 00 000000 		BLKI			;THIS IOT SHOULD CLEAR IT
+  5642	035420	300 00 0 00 000000 		CAI
+  5643	035421	254 02 1 00 036557 		JRST 2,@[XWD USERF,.+1]	;NOW ENTER USER MODE IF
+  5644	035422	265 00 0 00 035423 		JSP	.+1		;EX ILL OP SET JSP WILL CLEAR
+  5645	035423	265 00 0 00 035424 		JSP	.+1		;EX USER FLAG.  SEE EX PRINT
+  5646	035424	607 00 0 00 010000 		TLNN	USERF
+  5647						HOLD^
+  5648	035425	324 00 0 00 035425 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5649	035426	320 00 0 00 035427 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5650					^
+  5651						UMOFF^
+  5652	035427	200 00 0 00 036560 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5653	035430	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5654	035431	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5655					^
+  5656
+  5657	035432				MOD174:	UMON^
+  5658	035432	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5659	035433	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5660	035434	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5661	035435	254 02 1 00 036561 		JRST	2,@[XWD USERF,.+1]
+  5662	035436	200 00 0 00 036562 		MOVE	[JSP .+4]	;SET RETURN
+  5663	035437	202 00 0 00 000041 		MOVEM	41		;SEE IR2 PRINT
+  5664	035440	402 00 0 00 000040 		SETZM	40		;IR JRST A IR10(1)
+  5665	035441	254 04 0 00 035441 		HALT	.		;THIS HALT SHOULD TRAP
+  5666	035442	336 00 0 00 000040 		SKIPN	40		;BUT DID NOT
+  5667						HOLD^
+  5668	035443	324 00 0 00 035443 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5669	035444	320 00 0 00 035445 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5670					^
+  5671						UMOFF^
+  5672	035445	200 00 0 00 036563 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5673	035446	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5674	035447	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5675					^
+  5676
+  5677	035450				MOD175:	UMON^
+  5678	035450	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5679	035451	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5680	035452	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5681	035453	254 02 1 00 036564 		JRST	2,@[XWD USERF,.+1]
+  5682	035454	200 00 0 00 036565 		MOVE	[JSP .+4]	;SET RETURN
+  5683	035455	202 00 0 00 000041 		MOVEM	41		;SEE IR2 PRINT
+  5684	035456	402 00 0 00 000040 		SETZM	40		;THE ENABLE PI SHOULD
+  5685	035457	254 12 0 00 035460 		JEN	.+1		;TRAP TO 40
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 56-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0136
+
+  5686	035460	336 00 0 00 000040 		SKIPN	40		;BUT DID NOT
+  5687						HOLD^
+  5688	035461	324 00 0 00 035461 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5689	035462	320 00 0 00 035463 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5690					^
+  5691						UMOFF^
+  5692	035463	200 00 0 00 036566 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5693	035464	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5694	035465	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5695					^
+  5696
+  5697	035466				MOD176:	UMON^
+  5698	035466	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5699	035467	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5700	035470	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5701	035471	254 02 1 00 036567 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5702	035472	200 00 0 00 036570 		MOVE	[JSP .+4]	;SET PRIVI IO BIT
+  5703	035473	202 00 0 00 000041 		MOVEM	41		;THIS SHOULD PREVENT JRST IO,
+  5704	035474	402 00 0 00 000040 		SETZM	40		;FROM TRAPPING. SEE IR UUO
+  5705	035475	254 10 0 00 035476 		JRST	10,.+1		;ON IR2 PRINT
+  5706	035476	332 00 0 00 000040 		SKIPE	40
+  5707						HOLD^
+  5708	035477	324 00 0 00 035477 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5709	035500	320 00 0 00 035501 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5710					^
+  5711						UMOFF^
+  5712	035501	200 00 0 00 036571 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5713	035502	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5714	035503	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5715					^
+  5716
+  5717	035504				MOD177:	UMON^
+  5718	035504	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5719	035505	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5720	035506	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5721	035507	254 01 0 00 035510 		JRST	1,.+1		;SEE IF JUST A PLAIN
+  5722	035510	200 00 0 00 036572 		MOVE	[JSP .+4]	;JRST WILL TRAP
+  5723	035511	202 00 0 00 000041 		MOVEM	41		;SEE IR2 PRINT FOR
+  5724	035512	402 00 0 00 000040 		SETZM	40		;DECODE IR-UUO
+  5725	035513	254 00 0 00 035514 		JRST	.+1
+  5726	035514	332 00 0 00 000040 		SKIPE	40
+  5727						HOLD^
+  5728	035515	324 00 0 00 035515 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5729	035516	320 00 0 00 035517 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5730					^
+  5731						UMOFF^
+  5732	035517	200 00 0 00 036573 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5733	035520	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5734	035521	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5735					^
+  5736
+  5737	035522				MOD178:	UMON^
+  5738	035522	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5739	035523	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5740	035524	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 56-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0137
+
+  5741	035525	254 01 0 00 035526 		JRST	1,.+1		;SEE IF IR 9+10 WITH OUT
+  5742	035526	200 00 0 00 036574 		MOVE	[JSP .+4]	;A JRST WILL TRAP
+  5743	035527	202 00 0 00 000041 		MOVEM	41		;SEE IR UUO ON IR-2 PRINT
+  5744	035530	402 00 0 00 000040 		SETZM	40
+  5745	035531	255 14 0 00 035532 		JFCL	14,.+1
+  5746	035532	332 00 0 00 000040 		SKIPE	40
+  5747						HOLD^
+  5748	035533	324 00 0 00 035533 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5749	035534	320 00 0 00 035535 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5750					^
+  5751						UMOFF^
+  5752	035535	200 00 0 00 036575 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5753	035536	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5754	035537	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5755					^
+  5756
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 57
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0138
+
+  5757					;CHECK THAT AN IOT AT INTERRUPT LEVEL WILL NOT LOOK
+  5758					;LIKE A UUO SEE IR-2 PRINT
+  5759
+  5760	035540				MOD179:	UMON^
+  5761	035540	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5762	035541	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5763	035542	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5764	035543	7 000 20 0 00 000001 		CONO	1
+  5765	035544	200 00 0 00 036576 		MOVE	[BLKI]
+  5766	035545	202 00 0 00 000042 		MOVEM	42
+  5767	035546	200 00 0 00 036577 		MOVE	[JSP M179+1]
+  5768	035547	202 00 0 00 000041 		MOVEM	41
+  5769	035550	403 00 0 00 000040 		SETZB	40
+  5770	035551	200 00 0 00 036600 		MOVE [JSP M179]
+  5771	035552	202 00 0 00 000043 		MOVEM 43
+  5772	035553	474 00 0 00 000000 		SETO
+  5773	035554	7 004 20 0 00 002300 		CONO	PI,ACT+PIOSET+100
+  5774	035555	254 01 0 00 035556 		JRST	1,.+1
+  5775	035556	310 00 0 00 777777 		CAM	-1
+  5776	035557	332 00 0 00 000040 	M179:	SKIPE	40
+  5777						HOLD^
+  5778	035560	324 00 0 00 035560 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5779	035561	320 00 0 00 035562 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5780					^
+  5781						UMOFF^
+  5782	035562	200 00 0 00 036601 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  5783	035563	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  5784	035564	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  5785					^
+  5786
+  5787	035565				MODXX1:	UMON	^		;TEST TRAP (60) TURN OFF OF
+  5788
+  5789	035565	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5790	035566	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5791	035567	7 000 14 0 00 036525 		DATAO	[XWD -1,0]
+  5792	035570	200 00 0 00 036602 		MOVE	[JSP .+5]	;USER MODE
+  5793	035571	202 00 0 00 000061 		MOVEM	61
+  5794	035572	254 01 0 00 035573 		JRST	1,.+1
+  5795	035573	100000	000000			XWD	100000,0	;OP CODE 100
+  5796						HOLD	^		;IT FAILED TO TRAP
+  5797
+  5798	035574	324 00 0 00 035574 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5799	035575	320 00 0 00 035576 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5800
+  5801	035576	265 00 0 00 035577 		JSP	.+1		;IT SHOULD ALSO
+  5802	035577	603 00 0 00 010000 		TLNE	USERF		;TURN OFF USER MODE
+  5803						HOLD^
+  5804	035600	324 00 0 00 035600 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5805	035601	320 00 0 00 035602 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5806					^
+  5807
+  5808	035602				MODXX2:	UMON^
+  5809	035602	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5810	035603	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5811	035604	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 57-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0139
+
+  5812	035605	200 00 0 00 036603 		MOVE	[JSP .+4]	;TEST IR TO C(40)
+  5813	035606	202 00 0 00 000041 		MOVEM	41		;FOR BITS 1,2,3
+  5814	035607	254 02 1 00 036604 		JRST 2,@[XWD USERF,.+1]
+  5815	035610	700000	000000			XWD	700000,0	;AN IOT
+  5816	035611	200 00 0 00 000040 		MOVE	40
+  5817	035612	312 00 0 00 036576 		CAME	[XWD 700000,0]
+  5818						HOLD^
+  5819	035613	324 00 0 00 035613 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5820	035614	320 00 0 00 035615 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5821					^
+  5822
+  5823	035615				MOD180:	UMON^
+  5824	035615	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5825	035616	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5826	035617	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5827	035620	7 000 14 0 00 036425 		DATAO	[0]		;GET RID OF PROTECT REG
+  5828
+  5829	035621	7 000 20 0 00 000001 		CONO 1
+  5830	035622	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  5831	035623	200 00 0 00 036605 		MOVE [JSP M180]
+  5832	035624	202 00 0 00 000042 		MOVEM 42
+  5833	035625	200 00 0 00 036605 		MOVE [JSP .+4]
+  5834	035626	202 00 0 00 000041 		MOVEM 41
+  5835	035627	254 02 1 00 036606 		JRST	2,@[XWD USERF+UMIOT,.+1]	;ENABLE USER
+  5836	035630	324 00 0 00 035630 		JUMPA .			;THIS INST SHOULD SET PROT
+  5837	035631	7 000 34 0 00 020000 	M180:	CONSO	PROT		;HERE IF FLAG FAIL
+  5838						HOLD^
+  5839	035632	324 00 0 00 035632 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5840	035633	320 00 0 00 035634 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5841					^
+  5842	035634	7 000 30 0 00 010000 		CONSZ	NONEX		;NEVER NON EX WITH PROT
+  5843						HOLD^
+  5844	035635	324 00 0 00 035635 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5845	035636	320 00 0 00 035637 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5846					^
+  5847	035637	7 000 20 0 00 020000 		CONO	1B22		;FAIL TO CLEAR PROT
+  5848	035640	7 000 30 0 00 020000 		CONSZ	PROT		;FLAG SEE CPA PRINT
+  5849						HOLD^
+  5850	035641	324 00 0 00 035641 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5851	035642	320 00 0 00 035643 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5852					^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 58
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0140
+
+  5853
+  5854					DEFINE	EXCT	(A) <
+  5855						MOVE	[JSP .+3]	;EXECUTE A UUO
+  5856						MOVEM	41		;AND STORE FLAGS
+  5857						XWD	A,0		;IN AC0.
+  5858					>
+  5859					;CHECK UUO 0 TRAPING TO EXEC MODE AND UUO 1-37
+  5860					;NOT TRAPING TO EXEC MODE...1P19 ON EX CONTROL PRINT.
+  5861
+  5862	035643				MOD18A:	UMON^
+  5863	035643	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5864	035644	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5865	035645	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5866	035646	254 02 1 00 036607 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5867						EXCT	0^
+  5868	035647	200 00 0 00 036610 		MOVE	[JSP .+3]	;EXECUTE 0 UUO
+  5869	035650	202 00 0 00 000041 		MOVEM	41		;AND STORE FLAGS
+  5870	035651	000000	000000			XWD	0,0		;IN AC0.
+  5871					^
+  5872						EXCT	0^
+  5873	035652	200 00 0 00 036611 		MOVE	[JSP .+3]	;EXECUTE 0 UUO
+  5874	035653	202 00 0 00 000041 		MOVEM	41		;AND STORE FLAGS
+  5875	035654	000000	000000			XWD	0,0		;IN AC0.
+  5876					^
+  5877	035655	603 00 0 00 010000 		TLNE	USERF		;USER MODE ON?..CK 1P19 EX CONT PNT.
+  5878						HOLD^
+  5879	035656	324 00 0 00 035656 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5880	035657	320 00 0 00 035660 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5881					^
+  5882
+  5883						UMON^
+  5884	035660	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5885	035661	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5886	035662	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5887	035663	254 02 1 00 036612 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5888						EXCT	1000^
+  5889	035664	200 00 0 00 036613 		MOVE	[JSP .+3]	;EXECUTE 1000 UUO
+  5890	035665	202 00 0 00 000041 		MOVEM	41		;AND STORE FLAGS
+  5891	035666	001000	000000			XWD	1000,0		;IN AC0.
+  5892					^
+  5893	035667	607 00 0 00 010000 		TLNN	USERF		;CK BIT 8 INPUT TO 1P19 EX CONTROL PRINT.
+  5894						HOLD^
+  5895	035670	324 00 0 00 035670 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5896	035671	320 00 0 00 035672 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5897					^
+  5898
+  5899
+  5900
+  5901						UMON^
+  5902	035672	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5903	035673	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5904	035674	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5905	035675	254 02 1 00 036614 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5906						EXCT	2000^
+  5907	035676	200 00 0 00 036615 		MOVE	[JSP .+3]	;EXECUTE 2000 UUO
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 58-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0141
+
+  5908	035677	202 00 0 00 000041 		MOVEM	41		;AND STORE FLAGS
+  5909	035700	002000	000000			XWD	2000,0		;IN AC0.
+  5910					^
+  5911	035701	607 00 0 00 010000 		TLNN	USERF		;CK BIT 7 INPUT TO 1P19 EX CONTROL PNT.
+  5912						HOLD^
+  5913	035702	324 00 0 00 035702 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5914	035703	320 00 0 00 035704 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5915					^
+  5916
+  5917						UMON^
+  5918	035704	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5919	035705	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5920	035706	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5921	035707	254 02 1 00 036616 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5922						EXCT	4000^
+  5923	035710	200 00 0 00 036617 		MOVE	[JSP .+3]	;EXECUTE 4000 UUO
+  5924	035711	202 00 0 00 000041 		MOVEM	41		;AND STORE FLAGS
+  5925	035712	004000	000000			XWD	4000,0		;IN AC0.
+  5926					^
+  5927	035713	607 00 0 00 010000 		TLNN	USERF		;CK BIT 6 INPUT TO 1P19 EX CONTROL PNT.
+  5928						HOLD^
+  5929	035714	324 00 0 00 035714 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5930	035715	320 00 0 00 035716 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5931					^
+  5932
+  5933						UMON^
+  5934	035716	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5935	035717	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5936	035720	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5937	035721	254 02 1 00 036620 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5938						EXCT	10000^
+  5939	035722	200 00 0 00 036621 		MOVE	[JSP .+3]	;EXECUTE 10000 UUO
+  5940	035723	202 00 0 00 000041 		MOVEM	41		;AND STORE FLAGS
+  5941	035724	010000	000000			XWD	10000,0		;IN AC0.
+  5942					^
+  5943	035725	607 00 0 00 010000 		TLNN	USERF		;CK BIT 5 INPUT TO 1P19 EX CONTROL PNT.
+  5944						HOLD^
+  5945	035726	324 00 0 00 035726 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5946	035727	320 00 0 00 035730 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5947					^
+  5948
+  5949
+  5950						UMON^
+  5951	035730	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5952	035731	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5953	035732	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5954	035733	254 02 1 00 036622 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  5955						EXCT	20000^
+  5956	035734	200 00 0 00 036623 		MOVE	[JSP .+3]	;EXECUTE 20000 UUO
+  5957	035735	202 00 0 00 000041 		MOVEM	41		;AND STORE FLAGS
+  5958	035736	020000	000000			XWD	20000,0		;IN AC0.
+  5959					^
+  5960	035737	607 00 0 00 010000 		TLNN	USERF		;CK BIT 4 INPUT TO 1P19 EX CONTROL PNT.
+  5961						HOLD^
+  5962	035740	324 00 0 00 035740 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 58-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0142
+
+  5963	035741	320 00 0 00 035742 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5964					^
+  5965
+  5966						UMON^
+  5967	035742	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  5968	035743	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  5969	035744	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  5970	035745	254 02 1 00 036624 		JRST	2,@[XWD USERF,.+1]
+  5971	035746	200 00 0 00 036625 		MOVE	0,[JSP .+3]
+  5972	035747	202 00 0 00 000041 		MOVEM	0,41
+  5973	035750	700000	000000			XWD 700000,0		;XCT AN IOT.
+  5974	035751	265 00 0 00 035752 		JSP	.+1		;GET FLAGS.
+  5975	035752	603 00 0 00 010000 		TLNE	0,USERF		;USER MODE STILL ON?
+  5976						HOLD	^		;YES. CK EX NON REL UUO
+  5977
+  5978	035753	324 00 0 00 035753 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  5979	035754	320 00 0 00 035755 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  5980
+  5981									;EX PRINT.
+  5982
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 59
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0143
+
+  5983	035755	200 00 0 00 010040 	MOD181:	MOVE 10040		;SAVE THESE LOC
+  5984	035756	336 00 0 00 035772 		SKIPN SAV40
+  5985	035757	202 00 0 00 035772 		MOVEM SAV40
+  5986	035760	200 00 0 00 010041 		MOVE 10041
+  5987	035761	336 00 0 00 035773 		SKIPN SAV41
+  5988	035762	202 00 0 00 035773 		MOVEM SAV41
+  5989	035763	200 00 0 00 010042 		MOVE 10042
+  5990	035764	336 00 0 00 035774 		SKIPN SAV42
+  5991	035765	202 00 0 00 035774 		MOVEM SAV42
+  5992	035766	200 00 0 00 010043 		MOVE 10043
+  5993	035767	336 00 0 00 035775 		SKIPN SAV43
+  5994	035770	202 00 0 00 035775 		MOVEM SAV43
+  5995	035771	254 00 0 00 035776 		JRST	.+5
+  5996	035772	000000	000000		SAV40:	0
+  5997	035773	000000	000000		SAV41:	0
+  5998	035774	000000	000000		SAV42:	0
+  5999	035775	000000	000000		SAV43:	0
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 60
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0144
+
+  6000
+  6001					;TEST THE SETTING OF PROTECT FLAG BY MOVING A
+  6002					;TWO INST PROG TO AC 1+2 PROG IS CAM X AND UU0
+  6003					;WITH TRAP SET TO REAL WORLD THE CAM SHOULD TEST
+  6004					;THE PROT FLAG
+  6005
+  6006			002000		X=2000
+  6007
+  6008					DEFINE	LAC	(A)<
+  6009						UMON
+  6010						DATAO	[0]
+  6011						MOVE	1,[CAM A]
+  6012						MOVSI	2,40000
+  6013
+  6014						CONO PI,ACT+PIOSET+100
+  6015						CONO 1
+  6016						MOVE [JSP .+5]
+  6017						MOVEM 42
+  6018						MOVE	[JSP .+3]
+  6019						MOVEM	41		;SET TRAP RETURN
+  6020						JRST	1,1		;TURN ON USER MODE
+  6021						CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6022						HOLD
+  6023						CONSZ	NONEX
+  6024						HOLD
+  6025					>
+  6026					MOD182:	REPEAT	10,<
+  6027						LAC	X
+  6028						X=X+X>
+  6029
+  6030						LAC	X^
+  6031						UMON^
+  6032	035776	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6033	035777	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6034	036000	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6035	036001	7 000 14 0 00 036425 		DATAO	[0]
+  6036	036002	200 01 0 00 036626 		MOVE	1,[CAM X]
+  6037	036003	205 02 0 00 040000 		MOVSI	2,40000
+  6038
+  6039	036004	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6040	036005	7 000 20 0 00 000001 		CONO 1
+  6041	036006	200 00 0 00 036627 		MOVE [JSP .+5]
+  6042	036007	202 00 0 00 000042 		MOVEM 42
+  6043	036010	200 00 0 00 036627 		MOVE	[JSP .+3]
+  6044	036011	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6045	036012	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+  6046	036013	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6047						HOLD^
+  6048	036014	324 00 0 00 036014 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6049	036015	320 00 0 00 036016 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6050					^
+  6051	036016	7 000 30 0 00 010000 		CONSZ	NONEX
+  6052						HOLD^
+  6053	036017	324 00 0 00 036017 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6054	036020	320 00 0 00 036021 		JUMP	.+1		;SO WAITING FOR OPERATOR
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 60-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0145
+
+  6055					^
+  6056					^
+  6057			004000			X=X+X
+  6058
+  6059						LAC	X^
+  6060						UMON^
+  6061	036021	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6062	036022	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6063	036023	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6064	036024	7 000 14 0 00 036425 		DATAO	[0]
+  6065	036025	200 01 0 00 036630 		MOVE	1,[CAM X]
+  6066	036026	205 02 0 00 040000 		MOVSI	2,40000
+  6067
+  6068	036027	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6069	036030	7 000 20 0 00 000001 		CONO 1
+  6070	036031	200 00 0 00 036631 		MOVE [JSP .+5]
+  6071	036032	202 00 0 00 000042 		MOVEM 42
+  6072	036033	200 00 0 00 036631 		MOVE	[JSP .+3]
+  6073	036034	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6074	036035	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+  6075	036036	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6076						HOLD^
+  6077	036037	324 00 0 00 036037 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6078	036040	320 00 0 00 036041 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6079					^
+  6080	036041	7 000 30 0 00 010000 		CONSZ	NONEX
+  6081						HOLD^
+  6082	036042	324 00 0 00 036042 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6083	036043	320 00 0 00 036044 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6084					^
+  6085					^
+  6086			010000			X=X+X
+  6087
+  6088						LAC	X^
+  6089						UMON^
+  6090	036044	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6091	036045	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6092	036046	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6093	036047	7 000 14 0 00 036425 		DATAO	[0]
+  6094	036050	200 01 0 00 036632 		MOVE	1,[CAM X]
+  6095	036051	205 02 0 00 040000 		MOVSI	2,40000
+  6096
+  6097	036052	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6098	036053	7 000 20 0 00 000001 		CONO 1
+  6099	036054	200 00 0 00 036633 		MOVE [JSP .+5]
+  6100	036055	202 00 0 00 000042 		MOVEM 42
+  6101	036056	200 00 0 00 036633 		MOVE	[JSP .+3]
+  6102	036057	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6103	036060	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+  6104	036061	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6105						HOLD^
+  6106	036062	324 00 0 00 036062 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6107	036063	320 00 0 00 036064 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6108					^
+  6109	036064	7 000 30 0 00 010000 		CONSZ	NONEX
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 60-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0146
+
+  6110						HOLD^
+  6111	036065	324 00 0 00 036065 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6112	036066	320 00 0 00 036067 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6113					^
+  6114					^
+  6115			020000			X=X+X
+  6116
+  6117						LAC	X^
+  6118						UMON^
+  6119	036067	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6120	036070	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6121	036071	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6122	036072	7 000 14 0 00 036425 		DATAO	[0]
+  6123	036073	200 01 0 00 036634 		MOVE	1,[CAM X]
+  6124	036074	205 02 0 00 040000 		MOVSI	2,40000
+  6125
+  6126	036075	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6127	036076	7 000 20 0 00 000001 		CONO 1
+  6128	036077	200 00 0 00 036635 		MOVE [JSP .+5]
+  6129	036100	202 00 0 00 000042 		MOVEM 42
+  6130	036101	200 00 0 00 036635 		MOVE	[JSP .+3]
+  6131	036102	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6132	036103	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+  6133	036104	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6134						HOLD^
+  6135	036105	324 00 0 00 036105 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6136	036106	320 00 0 00 036107 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6137					^
+  6138	036107	7 000 30 0 00 010000 		CONSZ	NONEX
+  6139						HOLD^
+  6140	036110	324 00 0 00 036110 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6141	036111	320 00 0 00 036112 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6142					^
+  6143					^
+  6144			040000			X=X+X
+  6145
+  6146						LAC	X^
+  6147						UMON^
+  6148	036112	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6149	036113	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6150	036114	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6151	036115	7 000 14 0 00 036425 		DATAO	[0]
+  6152	036116	200 01 0 00 036636 		MOVE	1,[CAM X]
+  6153	036117	205 02 0 00 040000 		MOVSI	2,40000
+  6154
+  6155	036120	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6156	036121	7 000 20 0 00 000001 		CONO 1
+  6157	036122	200 00 0 00 036637 		MOVE [JSP .+5]
+  6158	036123	202 00 0 00 000042 		MOVEM 42
+  6159	036124	200 00 0 00 036637 		MOVE	[JSP .+3]
+  6160	036125	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6161	036126	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+  6162	036127	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6163						HOLD^
+  6164	036130	324 00 0 00 036130 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 60-3
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0147
+
+  6165	036131	320 00 0 00 036132 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6166					^
+  6167	036132	7 000 30 0 00 010000 		CONSZ	NONEX
+  6168						HOLD^
+  6169	036133	324 00 0 00 036133 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6170	036134	320 00 0 00 036135 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6171					^
+  6172					^
+  6173			100000			X=X+X
+  6174
+  6175						LAC	X^
+  6176						UMON^
+  6177	036135	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6178	036136	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6179	036137	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6180	036140	7 000 14 0 00 036425 		DATAO	[0]
+  6181	036141	200 01 0 00 036640 		MOVE	1,[CAM X]
+  6182	036142	205 02 0 00 040000 		MOVSI	2,40000
+  6183
+  6184	036143	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6185	036144	7 000 20 0 00 000001 		CONO 1
+  6186	036145	200 00 0 00 036641 		MOVE [JSP .+5]
+  6187	036146	202 00 0 00 000042 		MOVEM 42
+  6188	036147	200 00 0 00 036641 		MOVE	[JSP .+3]
+  6189	036150	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6190	036151	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+  6191	036152	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6192						HOLD^
+  6193	036153	324 00 0 00 036153 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6194	036154	320 00 0 00 036155 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6195					^
+  6196	036155	7 000 30 0 00 010000 		CONSZ	NONEX
+  6197						HOLD^
+  6198	036156	324 00 0 00 036156 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6199	036157	320 00 0 00 036160 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6200					^
+  6201					^
+  6202			200000			X=X+X
+  6203
+  6204						LAC	X^
+  6205						UMON^
+  6206	036160	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6207	036161	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6208	036162	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6209	036163	7 000 14 0 00 036425 		DATAO	[0]
+  6210	036164	200 01 0 00 036642 		MOVE	1,[CAM X]
+  6211	036165	205 02 0 00 040000 		MOVSI	2,40000
+  6212
+  6213	036166	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6214	036167	7 000 20 0 00 000001 		CONO 1
+  6215	036170	200 00 0 00 036643 		MOVE [JSP .+5]
+  6216	036171	202 00 0 00 000042 		MOVEM 42
+  6217	036172	200 00 0 00 036643 		MOVE	[JSP .+3]
+  6218	036173	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6219	036174	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 60-4
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0148
+
+  6220	036175	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6221						HOLD^
+  6222	036176	324 00 0 00 036176 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6223	036177	320 00 0 00 036200 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6224					^
+  6225	036200	7 000 30 0 00 010000 		CONSZ	NONEX
+  6226						HOLD^
+  6227	036201	324 00 0 00 036201 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6228	036202	320 00 0 00 036203 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6229					^
+  6230					^
+  6231			400000			X=X+X
+  6232
+  6233						LAC	X^
+  6234						UMON^
+  6235	036203	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6236	036204	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6237	036205	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6238	036206	7 000 14 0 00 036425 		DATAO	[0]
+  6239	036207	200 01 0 00 036644 		MOVE	1,[CAM X]
+  6240	036210	205 02 0 00 040000 		MOVSI	2,40000
+  6241
+  6242	036211	7 004 20 0 00 002300 		CONO PI,ACT+PIOSET+100
+  6243	036212	7 000 20 0 00 000001 		CONO 1
+  6244	036213	200 00 0 00 036645 		MOVE [JSP .+5]
+  6245	036214	202 00 0 00 000042 		MOVEM 42
+  6246	036215	200 00 0 00 036645 		MOVE	[JSP .+3]
+  6247	036216	202 00 0 00 000041 		MOVEM	41		;SET TRAP RETURN
+  6248	036217	254 01 0 00 000001 		JRST	1,1		;TURN ON USER MODE
+  6249	036220	7 000 34 0 00 020000 		CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+  6250						HOLD^
+  6251	036221	324 00 0 00 036221 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6252	036222	320 00 0 00 036223 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6253					^
+  6254	036223	7 000 30 0 00 010000 		CONSZ	NONEX
+  6255						HOLD^
+  6256	036224	324 00 0 00 036224 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6257	036225	320 00 0 00 036226 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6258					^
+  6259					^
+  6260		000001	000000			X=X+X
+  6261
+  6262	036226	402 00 0 00 000040 	MOD185:	SETZM	40		;TEST FOR TRAP TO REAL LOC 40
+  6263	036227	200 00 0 00 036646 		MOVE	[JSP MOD186-1]	;NOT RELOCATED 40
+  6264	036230	202 00 0 00 000041 		MOVEM	41		;SETUP TRAP FOR OK
+  6265	036231	7 000 14 0 00 036647 		DATAO	[XWD -1,10000]
+  6266	036232	200 00 0 00 036650 		MOVE	[JSP MOD186]	;SETUP TRAP FOR ERR
+  6267	036233	202 00 0 00 010041 		MOVEM	10041
+  6268	036234	254 01 0 00 026235 		JRST	1,.+1-10000	;IF THE UUO TRAPS TO
+  6269	036235	040000	000000			XWD	40000,0		;RELOCATED 40 PROG WILL HOLD
+  6270	036236	336 00 0 00 000040 		SKIPN	40		;AT THIS POINT
+  6271
+  6272	036237				MOD186:	HOLD^
+  6273	036237	324 00 0 00 036237 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6274	036240	320 00 0 00 036241 		JUMP	.+1		;SO WAITING FOR OPERATOR
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 60-5
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0149
+
+  6275					^
+  6276	036241	265 00 0 00 036242 		JSP	.+1		;IF USER MODE STILL ON
+  6277	036242	603 00 0 00 010000 		TLNE	USERF		;THEN WAIT HERE
+  6278						HOLD^
+  6279	036243	324 00 0 00 036243 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6280	036244	320 00 0 00 036245 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6281					^
+  6282
+  6283					;TEST FOR INTERRUPT TO REAL PI (NOT RELOCATED)
+  6284	036245				MOD190:	UMON^
+  6285	036245	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6286	036246	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6287	036247	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6288	036250	200 00 0 00 036651 		MOVE	[JSP MOD191]	;SET ERROR PI RET
+  6289	036251	202 00 0 00 010042 		MOVEM 10042
+  6290	036252	200 00 0 00 036652 		MOVE	[JSP MOD191+1]	;SET OK PI
+  6291	036253	202 00 0 00 000042 		MOVEM 42
+  6292	036254	7 000 14 0 00 036647 		DATAO [XWD -1,10000]
+  6293	036255	254 02 1 00 036653 		JRST 2,@[XWD USERF+UMIOT,.+1-10000]
+  6294	036256	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100	;SHOULD INTERRUPT
+  6295						HOLD^
+  6296	036257	324 00 0 00 036257 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6297	036260	320 00 0 00 036261 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6298					^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 61
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0150
+
+  6299	036261				MOD191:	HOLD^
+  6300	036261	324 00 0 00 036261 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6301	036262	320 00 0 00 036263 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6302					^
+  6303						UMOFF^
+  6304	036263	200 00 0 00 036654 		MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+  6305	036264	202 00 0 00 000041 		MOVEM	41		;UUO. PROG RETURNS TO END
+  6306	036265	040000	000000			XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+  6307					^
+  6308					;TEST FOR NOT RELOCATION OF AC'S
+  6309	036266	402 00 0 00 000005 	MOD192:	SETZM	5
+  6310						UMON^
+  6311	036267	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6312	036270	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6313	036271	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6314	036272	200 00 0 00 036655 		MOVE [JSP M192]
+  6315	036273	202 00 0 00 000041 		MOVEM 41
+  6316	036274	7 000 14 0 00 036647 		DATAO [XWD -1,10000]
+  6317	036275	254 01 0 00 026276 		JRST 1,.+1-10000
+  6318	036276	201 05 0 00 012345 		MOVEI	5,12345
+  6319	036277	040000	000000			XWD 040000,0		;UUO TO TERM USER MODE
+  6320	036300	302 05 0 00 012345 	M192:	CAIE	5,12345
+  6321						HOLD^
+  6322	036301	324 00 0 00 036301 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6323	036302	320 00 0 00 036303 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6324					^
+  6325	036303	332 00 0 00 036670 	MOD195:	SKIPE	FPTRAP		;SEE IF SWITCH SAYS FP
+  6326	036304	254 00 0 00 036315 		JRST MOD196
+  6327	036305	200 00 0 00 036656 		MOVE [JSP .+3]		;TEST THE ABILITY TO
+  6328	036306	202 00 0 00 000061 		MOVEM 61		;TRAP A FP INST
+  6329	036307	145 00 0 00 777777 		FADRI -1		;THIS INST SHOULD TRAP
+  6330	036310	200 02 0 00 036307 		MOVE 2,.-1		;FAIL TO TRAP PROPERLY
+  6331	036311	312 02 0 00 000060 		CAME 2,60
+  6332						STOP^
+  6333	036312	254 04 0 00 036313 		HALT	.+1
+  6334	036313	320 00 0 00 036314 		JUMP	.+1
+  6335									^
+  6336	036314	254 00 0 00 036414 		JRST MOD197		;WHAT ABOUT SWITCHS
+  6337	036315	200 00 0 00 036657 	MOD196:	MOVE [JSP .+4]		;TEST FOR FP NOT TRAP
+  6338	036316	402 00 0 00 000060 		SETZM 60
+  6339	036317	202 00 0 00 000061 		MOVEM 61		;SET RETURN
+  6340	036320	145 00 0 00 777777 		FADRI -1
+  6341	036321	332 00 0 00 000060 		SKIPE 60		;DOES MACH HAVE FP
+  6342						STOP^
+  6343	036322	254 04 0 00 036323 		HALT	.+1
+  6344	036323	320 00 0 00 036324 		JUMP	.+1
+  6345									^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 62
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0151
+
+  6346					;CHECK BYT7A SETING BYF6.
+  6347	036324	7 000 20 0 00 635550 	MOD19X:	CONO	635550		;CLR THE WORLD.
+  6348	036325	200 00 0 00 036660 		MOVE	[JSP MOD19B]
+  6349	036326	202 00 0 00 000042 		MOVEM	42		;SETUP FOR INT ON CH # 1.
+  6350	036327	7 004 20 0 00 012300 		CONO	PI,12300	;SETUP PI.
+  6351	036330	200 01 0 00 036351 		MOVE	1,POINTR	;PUT POINTER INTO AC1.
+  6352	036331	7 000 20 0 00 001000 		CONO	1000		;CLR CLOCK FLAG.
+  6353	036332	7 000 34 0 00 001000 		CONSO	1000		;WAIT FOR
+  6354	036333	254 00 0 00 036332 		JRST	.-1		;CLOCK FLAG.
+  6355	036334	7 000 20 0 00 003001 		CONO	3001		;SET INT ENABLE AND PI 35 AND CLR CLK FLG.
+  6356	036335	134 00 0 00 000001 		ILDB	0,1		;SHOULD STAY IN INDIRECT LOOP.
+  6357	036336	7 000 34 0 00 001000 	MOD19B:	CONSO	1000		;CLK FLG INT?
+  6358						HOLD^
+  6359	036337	324 00 0 00 036337 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6360	036340	320 00 0 00 036341 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6361					^
+  6362	036341	607 00 0 00 020000 		TLNN	0,20000		;BYF6 FLAG SET? NO..CK BYT7A ON BYTE PRINT.
+  6363						HOLD^
+  6364	036342	324 00 0 00 036342 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6365	036343	320 00 0 00 036344 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6366					^
+  6367	036344	265 00 0 00 036345 		JSP	.+1		;CAUSE ARLT FM FLAGS(J)A.
+  6368	036345	603 00 0 00 020000 		TLNE	0,20000		;CK BYTE PRINT.
+  6369						HOLD^
+  6370	036346	324 00 0 00 036346 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6371	036347	320 00 0 00 036350 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6372					^
+  6373
+  6374	036350	254 00 0 00 036414 		JRST	MOD197
+  6375
+  6376	036351	440720	000001		POINTR:	XWD 440720,1
+  6377					;CK TO SEE THAT UUO 0 TRAPS TO 141.
+  6378	036352				MOD200:	UMON^
+  6379	036352	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6380	036353	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6381	036354	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6382	036355	254 02 1 00 036661 		JRST	2,@[XWD USERF+UMIOT,.+1]
+  6383	036356	200 00 0 00 036662 		MOVE	[JSP .+5]
+  6384	036357	202 00 0 00 000041 		MOVEM	41
+  6385	036360	340 00 0 00 000000 		AOJ
+  6386	036361	202 00 0 00 000141 		MOVEM	141
+  6387	036362	000000	000000			0
+  6388						HOLD	^		;UUO 0 TRAPED TO 40. CK 2L44 ON MA CONTROL PRINT.
+  6389
+  6390	036363	324 00 0 00 036363 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6391	036364	320 00 0 00 036365 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6392
+  6393	036365	607 00 0 00 010000 		TLNN	USERF		;USER MODE GET CLR?..CK 1P19 ON EX CONT PNT.
+  6394						HOLD^
+  6395	036366	324 00 0 00 036366 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6396	036367	320 00 0 00 036370 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6397					^
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 63
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0152
+
+  6398					;CK TO SEE THAT UUO 37 TRAPS TO 41.
+  6399
+  6400						UMON^
+  6401	036370	7 000 20 0 00 634440 		CONO	634440		;PREPARE TO TURN ON USER
+  6402	036371	7 004 20 0 00 010000 		CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+  6403	036372	7 000 14 0 00 036525 		DATAO	[XWD -1,0]^
+  6404	036373	254 02 1 00 036663 		JRST	2,@[XWD USERF + UMIOT, .+1]
+  6405	036374	200 00 0 00 036664 		MOVE	[JSP .+5]
+  6406	036375	202 00 0 00 000141 		MOVEM	141
+  6407	036376	340 00 0 00 000000 		AOJ
+  6408	036377	202 00 0 00 000041 		MOVEM	41
+  6409	036400	037000	000000			037000000000
+  6410						HOLD	^		;UUO 37 TRAPPED TO 141, CK 2L44 ON MA CONTROL PRINT
+  6411					.
+  6412
+  6413	036401	324 00 0 00 036401 		JUMPA	.		;MACH ERROR. HALT MAY TRAP
+  6414	036402	320 00 0 00 036403 		JUMP	.+1		;SO WAITING FOR OPERATOR
+  6415
+  6416
+  6417
+  6418					;CK TO SEE THAT AN INTERRUPT ON CH # 1 TRAPS TO 142.
+  6419
+  6420	036403	200 00 0 00 036665 		MOVE	[MOVEI 142]
+  6421	036404	202 00 0 00 000142 		MOVEM	142
+  6422	036405	7 000 20 0 00 634440 		CONO	634440		;CLR THE WORLD.
+  6423	036406	400 00 0 00 000000 		SETZ	0,
+  6424	036407	7 004 20 0 00 010000 		CONO	PI,10000	;CLR PI.
+  6425	036410	7 004 20 0 00 004300 		CONO	PI,ACT+PIREQ+100;CAUSE INT.
+  6426	036411	302 00 0 00 000142 		CAIE	0,142		;CK 2K44 ON MA CONTROL PRINT.
+  6427	036412	254 04 0 00 000000 		HALT
+  6428
+  6429	036413	476 00 0 00 036671 		SETOM	MATPOF		;SET FLG SO KNOW IN THIS ROUTINE.
+  6430
+  6431
+  6432	036414	254 00 0 00 030057 	MOD197:	JRST	BEGEND		;REPEAT DIAGNOSTIC
+  6433
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 64
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0153
+
+  6434					;DIAGNOSTIC STORAGE
+  6435
+  6436	036415					LIT
+  6437	036415	000001	000001
+  6438	036416	254 00 0 00 030737
+  6439	036417	015 012 077 105 130
+  6440	036420	105 103 040 115 117
+  6441	036421	104 105 040 104 111
+  6442	036422	101 107 116 117 123
+  6443	036423	124 111 103 040 117
+  6444	036424	116 114 131 015 012
+  6445	036425	000 000 000 000 000
+  6446	036426	000000	000001
+  6447	036427	000000	000002
+  6448	036430	265 02 0 00 030776
+  6449	036431	254 00 0 00 030776
+  6450	036432	265 00 0 00 030777
+  6451	036433	265 02 0 00 031006
+  6452	036434	254 00 0 00 031007
+  6453	036435	265 02 0 00 031017
+  6454	036436	265 00 0 00 031020
+  6455	036437	265 02 0 00 031026
+  6456	036440	265 02 0 00 031036
+  6457	036441	777777	777777
+  6458	036442	265 02 0 00 031046
+  6459	036443	265 02 0 00 031055
+  6460	036444	265 02 0 00 031064
+  6461	036445	265 02 0 00 031073
+  6462	036446	265 02 0 00 031102
+  6463	036447	265 02 0 00 031111
+  6464	036450	265 02 0 00 031120
+  6465	036451	265 02 0 00 031127
+  6466	036452	265 02 0 00 031136
+  6467	036453	265 02 0 00 031145
+  6468	036454	265 02 0 00 031154
+  6469	036455	265 02 0 00 031163
+  6470	036456	265 02 0 00 031172
+  6471	036457	265 02 0 00 031201
+  6472	036460	265 02 0 00 031210
+  6473	036461	265 02 0 00 031217
+  6474	036462	265 02 0 00 031227
+  6475	036463	077740	000000
+  6476	036464	265 02 0 00 031237
+  6477	036465	077740	777777
+  6478	036466	265 02 0 00 031247
+  6479	036467	265 02 0 00 031257
+  6480	036470	265 02 0 00 031274
+  6481	036471	123456	654321
+  6482	036472	400000	000000
+  6483	036473	201 00 0 00 000040
+  6484	036474	201 00 0 00 000057
+  6485	036475	201 00 0 00 000017
+  6486	036476	201 00 0 00 000000
+  6487	036477	7 177 2 0 00 000000
+  6488	036500	350 00 0 00 000000
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 64-1
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0154
+
+  6489	036501	201 00 0 00 000042
+  6490	036502	7 177 3 0 00 000000
+  6491	036503	7 177 1 0 00 000000
+  6492	036504	201 01 0 00 000042
+  6493	036505	334 00 0 00 000000
+  6494	036506	264 00 0 00 035106
+  6495	036507	260 00 0 00 035116
+  6496	036510	201 00 0 00 000043
+  6497	036511	7 177 2 0 00 000004
+  6498	036512	265 00 0 00 035153
+  6499	036513	265 00 0 00 035154
+  6500	036514	000000	035163
+  6501	036515	004000	035170
+  6502	036516	000000	035171
+  6503	036517	000000	035176
+  6504	036520	004000	035177
+  6505	036521	000000	035204
+  6506	036522	004000	035210
+  6507	036523	265 00 0 00 035216
+  6508	036524	265 00 0 00 035227
+  6509	036525	777777	000000
+  6510	036526	014000	035231
+  6511	036527	265 00 0 00 035234
+  6512	036530	014000	035243
+  6513	036531	265 00 0 00 035246
+  6514	036532	265 00 0 00 035251
+  6515	036533	014000	035260
+  6516	036534	324 00 0 00 035263
+  6517	036535	265 00 0 00 035272
+  6518	036536	265 00 0 00 035275
+  6519	036537	014000	035301
+  6520	036540	265 00 0 00 035311
+  6521	036541	265 00 0 00 035314
+  6522	036542	265 00 0 00 035327
+  6523	036543	010000	035333
+  6524	036544	014000	035334
+  6525	036545	265 00 0 00 035343
+  6526	036546	010000	035347
+  6527	036547	265 00 0 00 035353
+  6528	036550	265 00 0 00 035361
+  6529	036551	014000	035365
+  6530	036552	265 00 0 00 035371
+  6531	036553	265 00 0 00 035400
+  6532	036554	014000	035404
+  6533	036555	265 00 0 00 035407
+  6534	036556	324 00 0 00 035416
+  6535	036557	010000	035422
+  6536	036560	265 00 0 00 035432
+  6537	036561	010000	035436
+  6538	036562	265 00 0 00 035442
+  6539	036563	265 00 0 00 035450
+  6540	036564	010000	035454
+  6541	036565	265 00 0 00 035460
+  6542	036566	265 00 0 00 035466
+  6543	036567	014000	035472
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 64-2
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0155
+
+  6544	036570	265 00 0 00 035476
+  6545	036571	265 00 0 00 035504
+  6546	036572	265 00 0 00 035514
+  6547	036573	265 00 0 00 035522
+  6548	036574	265 00 0 00 035532
+  6549	036575	265 00 0 00 035540
+  6550	036576	7 000 0 0 00 000000
+  6551	036577	265 00 0 00 035560
+  6552	036600	265 00 0 00 035557
+  6553	036601	265 00 0 00 035565
+  6554	036602	265 00 0 00 035575
+  6555	036603	265 00 0 00 035611
+  6556	036604	010000	035610
+  6557	036605	265 00 0 00 035631
+  6558	036606	014000	035630
+  6559	036607	014000	035647
+  6560	036610	265 00 0 00 035652
+  6561	036611	265 00 0 00 035655
+  6562	036612	014000	035664
+  6563	036613	265 00 0 00 035667
+  6564	036614	014000	035676
+  6565	036615	265 00 0 00 035701
+  6566	036616	014000	035710
+  6567	036617	265 00 0 00 035713
+  6568	036620	014000	035722
+  6569	036621	265 00 0 00 035725
+  6570	036622	014000	035734
+  6571	036623	265 00 0 00 035737
+  6572	036624	010000	035746
+  6573	036625	265 00 0 00 035751
+  6574	036626	310 00 0 00 002000
+  6575	036627	265 00 0 00 036013
+  6576	036630	310 00 0 00 004000
+  6577	036631	265 00 0 00 036036
+  6578	036632	310 00 0 00 010000
+  6579	036633	265 00 0 00 036061
+  6580	036634	310 00 0 00 020000
+  6581	036635	265 00 0 00 036104
+  6582	036636	310 00 0 00 040000
+  6583	036637	265 00 0 00 036127
+  6584	036640	310 00 0 00 100000
+  6585	036641	265 00 0 00 036152
+  6586	036642	310 00 0 00 200000
+  6587	036643	265 00 0 00 036175
+  6588	036644	310 00 0 00 400000
+  6589	036645	265 00 0 00 036220
+  6590	036646	265 00 0 00 036236
+  6591	036647	777777	010000
+  6592	036650	265 00 0 00 036237
+  6593	036651	265 00 0 00 036261
+  6594	036652	265 00 0 00 036262
+  6595	036653	014000	026256
+  6596	036654	265 00 0 00 036266
+  6597	036655	265 00 0 00 036300
+  6598	036656	265 00 0 00 036310
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 64-3
+DAKAHM	MAC	19-JAN-77 17:39		DIAGNOSTIC SECTION                                                                 SEQ 0156
+
+  6599	036657	265 00 0 00 036321
+  6600	036660	265 00 0 00 036336
+  6601	036661	014000	036356
+  6602	036662	265 00 0 00 036363
+  6603	036663	014000	036374
+  6604	036664	265 00 0 00 036401
+  6605	036665	201 00 0 00 000142
+  6606
+  6607	036667					VAR
+  6608
+  6609	036675	254 04 0 00 030000 	LAST:	JRST	4,BEGIN
+  6610
+DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) 0,2	MACRO %52(537) 17:47 19-JAN-77 PAGE 1
+STOR	KLM	18-JAN-77 11:42		*STOR* RESERVED STORAGE, JAN 18,1977                                               SEQ 0157
+
+  6611					SUBTTL	*STOR* RESERVED STORAGE, JAN 18,1977
+  6612
+  6613					;PROGRAM LITERALS
+  6614
+  6615						XLIST
+  6616					IFNDEF	$LPAPER,
+  6617	036676					LIT
+  6618						LIST
+  6619	036676	000000	000000		ENDSLD:	0
+  6620
+  6621					IFDEF	DEBUG,<
+  6622					PATCH:	BLOCK DEBUG		;PATCHING AREA
+  6623					>
+  6624
+  6625					;PROGRAM VARIABLES
+  6626	036677					VAR
+  6627
+  6628					IFDEF	PGMEND,<
+  6629	036677	000000	000000		END:	0
+  6630			030000			END	BEGIN	>
+
+NO ERRORS DETECTED
+
+PROGRAM BREAK IS 000000
+ABSLUTE BREAK IS 036700
+CPU TIME USED 00:22.958
+
+12K CORE USED
diff --git a/apps/pdp10/diags/klad/dakah/DAKAH.MAC.txt b/apps/pdp10/diags/klad/dakah/DAKAH.MAC.txt
new file mode 100644
index 000000000..2099812dd
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakah/DAKAH.MAC.txt
@@ -0,0 +1,1775 @@
+SUBTTL	DIAGNOSTIC SECTION
+
+	LALL
+
+PGMNAM:	ASCIZ	/
+PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC # 8 [DAKAH]
+/
+START:	SETZM	USER#		;CLEAR USER CONTROL WORD
+	JSP	0,.+1		;GET FLAGS
+	TLNE	USERF		;IN USER MODE?
+	SETOM	USER		;YES, SET USER CONTROL WORD
+	SKIPN	USER
+	JRST	STARTA
+	TTCALL	3,PGMNAM	;MENTION OUR NAME
+	OUTSTR	[ASCIZ	/
+?EXEC MODE DIAGNOSTIC ONLY
+/]				;TELL USER
+	HALT	.		;AND DIE...
+
+STARTA:
+ST:	SETZM	MATPOF#		;CLR MA TRAP OFFSET FLAG.
+MOD:	SKIPE 1,SAV40		;RESTORE THESE LOC IF PROG
+	MOVEM 1,10040			;IF PROG MODIFIED
+	SKIPE 1,SAV41
+	MOVEM 1,10041
+	SKIPE 1,SAV42
+	MOVEM 1,10042
+	SKIPE 1,SAV43
+	MOVEM 1,10043
+	CONI CPSAV#
+	CONI PI,PISAV#
+
+	DATAI			;DO WE HAVE FP
+	SKIPGE	MONCTL		;MONITR CONTROL ?
+	MOVE	0,MONCTL	;YES
+	ORCM [1B35]
+	SETCAM FPTRAP#
+	SETOM PI7SYS#
+
+	DATAI			;IS THIS MACH WITH USER
+	SKIPGE	MONCTL		;MONITR CONTROL ?
+	MOVE	0,MONCTL	;YES
+	ORCM [1B34]
+	SETCAM USMOD#
+
+	SKIPE	MATPOF#		;START AT 3776?
+	JRST	MOD200		;YES. GO CK MA 29 SET.
+
+;MACH/OPTION DEPENDENT
+;TEST UU0
+
+	RETURN MOD1		;TEST UUO FOR NOT GOING TO 60
+	MOVE	1,[JRST .+4]	;IF THIS ROUT STOPS THE
+	MOVE	2,[JSP MOD1+1]	;TRAP WAS TO 60. IF UU0 HANG
+	MOVEM	2,61		;THE MACH, CHECK XCTF0 AND
+	0			;UU0F0 FLAGS FOR NOT SETING
+MOD1:	SKIPA			;CHECK MA 31 SET
+	STOP			;IR 1XX GATE FAIL
+
+MOD2:	RETURN	MOD3		;TEST 40 TO MA LOGIC (UU0)
+	MOVE	1,[JRST .+3]	;IF 40 WAS NOT (J) TO MA
+	0			;THIS UU0 WILL STORE IN LOC 0
+MOD3:	SKIPA			;CHECK MA-30 SET
+	STOP			;ON THE MA1 PRINT
+
+MOD4:	RETURN	MOD5		;IF THE MA FROM AR
+	MOVE	2,[JSP MOD5+1]	;INHIBIT (AT6) FAILED THE
+	MOVEM	61		;UU0 WOULD STORE IN E ORED
+	20			;WITH 40 RATHER THAN C(40)
+MOD5:	SKIPA			;MA FM AR(J) CAME UP  CHECK
+	STOP			;AND OF AT6-IR UU0 ON MA1 PRINT
+
+MOD6:	RETURN	MOD7		;TEST UU0 ABILITY TO STORE
+	0			;IF C(40) UNCHANGED SCE FAIL
+MOD7:	CAMN	2,40		;CK IR UU0 INPUT TO SCE
+	STOP			;ON S2 PRINT
+
+MOD8:	RETURN	MOD9		;TEST SACINH FOR UU0
+	SETO			;IF FAIL WILL MODIFY AC
+	0			;SACINH THE IR UU0 INPUT
+MOD9:	CAME	[-1]		;ON S2 PRINT FAILED
+	STOP
+
+MOD10:	RETURN	MOD11		;TEST UU0 FACINH, IF THE
+	MOVEI	-1		;UU0 FETCHES A AC THE
+	0			;AC WILL BE STORED
+MOD11:	CAMN	40		;FAC INH THE IR UU0 INPUT
+	STOP			;ON F2 PRINT FAIL
+
+MOD12:	RETURN	MOD13		;TEST UU0 IR TO ARLT
+	XWD	077740,0	;THE AND OF (ET0,IR UU0)
+MOD13:	SKIPN	40		;ON ARC-2 PRINT FAILED
+	STOP
+
+MOD14:	RETURN	MOD15		;UU0 FAIL
+	XWD	000740,0		;CHECK ARLT FM FLAGS (J) B
+MOD15:	SKIPN	40		;THE PA ON ARC-2 PRINT
+	STOP
+
+MOD16:	RETURN	MOD17		;UU0 FAIL
+	XWD	077000,0		;CHECK ARLT FM FLAGS (J) A
+MOD17:	SKIPN	40		;THE PA ON ARC-2 PRINT
+	STOP
+
+	ZZ=40
+MOD18:	REPEAT	^D10,
+<	RETURN .+4		;TEST IRLT TO AR
+	XWD	ZZ,0
+	SKIPN	40
+	STOP
+	ZZ=ZZ+ZZ
+>
+MOD19:	RETURN	MOD19A		;TEST PROPER STORAGE
+	0			;OF UU0
+MOD19A:	SKIPE	40
+	STOP
+
+MOD20:	RETURN	MOD20A		;CK FOR STORING OF E
+	XWD	0,-1		;ON A UU0
+MOD20A:	MOVE	40
+	CAIE	-1
+	STOP
+
+MOD21:	RETURN	MOD21A		;CK FOR STORING OF E
+	XWD	077740,0	;ON A UU0
+MOD21A:	MOVE	40
+	CAME	[XWD 077740,0]
+	STOP
+
+MOD22:	RETURN	MOD22A		;CK FOR STORING OF
+	XWD	077740,-1	;E AND IR ON UU0
+MOD22A:	MOVE	40
+	CAME	[XWD 077740,-1]
+	STOP
+
+MOD23:	RETURN	MOD23A		;UU0 TEST THE PC+1
+	0			;INHIBIT FEATURE LOC 41
+MOD23A:	ANDI	2,-1		;CONTAINS TSP 2,X
+	CAIN	2,.		;PC+1 INH THE IR UU0 INPUT
+	STOP			;FAILED. SEE PC1 PRINT
+
+MOD24:	RETURN	MOD24A		;PC STORED IN CORRECTLY
+	XWD	0,-1		;FROM THE JSP AT 41
+MOD24A:	ANDI 2,-1		;ON A UUO INST
+	CAIE	2,.-1
+	STOP
+
+MOD25:	;SET PRIVILEGE TO FLAG
+	;SET UU0 TRAP
+	;TEST IOT INST FOR
+	;NOT TRAPING. SEE IR-2
+	;PRINT IR UU0 CAME UP
+MOD26:	;CK AND OF IR IOTA, NOT ALLOW, ETC
+
+MOD27:	SFLAG	0		;MAKE SURE EX IOT USER=0
+	RETURN	MOD28		;CK FOR NOT TRAP ON IOT
+	CONI			;IF IOTS TRAP NOW THE
+	CAI			;AND GATE EX USER (0), EX IOT USER
+	SKIPA			;DID NOT RESPOND TO EX USER (0)
+MOD28:	STOP			;SEE EX ALLOW IOTS ON EX PRINT
+
+MOD29:	SETO	1,		;THE IOTS FAIL TO STORE C(E)
+	DATAI	1		;CHECK IR IOT ON IR2 PRINT
+	CONI	1		;LOOKS LIKE IR DECODE FAILED
+	CAMN	1,[-1]
+	STOP
+
+MOD30:	MOVE	1,[123456654321]	;CHECK SCE FOR DATAI
+	DATAI	1		;THE CONTENTS OF LOC1
+	CAMN	1,[123456654321]	;WERE NOT MODIFIED. SEE
+	STOP			;S1 PRINT SCE AND DECODE ON IOT
+
+MOD31:	MOVE	1,[123456654321]	;CHECK SCE FOR CONI.  THE
+	CONI	1		;CONTENTS OF LOC1 WERE NOT
+	CAMN	1,[123456654321]	;MODIFIED.  SEE S2 PRINT SCE
+	STOP			;AND DECODE ON IOT PRINT
+
+MOD32:	SETO			;SACINH FAIL FOR INST
+	CONI	1		;CONI FAILED. CHECK
+	CAME	[-1]		;IR IOT INPUT TO SACINH
+	STOP			;ON THE S2 PRINT
+
+MOD33:	CONO	ME,0		;CLEAR LAST DEVICE
+	CONI	ME,2		;AR CLEAR AT(ET0)FAILED
+	CAIN	2,2		;ON INST CONT CK AR
+	STOP			;CLEAR ETO, CONI ON ARC-2 PRINT
+
+MOD34:	DATAO	ME,[0]		;AR CLR ON A DATAI
+	DATAI	ME,3		;INST FAILED CHECK
+	CAIN	3,3		;IOT DATAI INPUT ON THE
+	STOP			;OR GATE TO AR CLR. SEE ARC-2 PRINT
+
+	SETZ			;CONSZ FAIL TO SKIP. CK
+	CONSZ			;PC+1 AT AND OF AD=0, IOT CONSZ,
+	STOP			;IOT T5 ON PC1 PRINT
+
+	CONO	ME,0		;CONSZ FAIL TO SKIP CK
+	CONSZ	ME,700000		;FOR NO AR CLR AT (ETO). SEE ARC-2
+	STOP			;PRINT THE IOT CONSX INPUT
+
+	CONO	ME,0		;CONSO SKIPED.  CHECK PC+1
+	CONSO	ME,0		;(IOT T5,AD=0,IOT CONSO,IOT CONSZ
+	SKIPA			;AND GATES) ON PC1 PRINT
+	STOP
+
+MOD35:	SETZ	1,		;CHECK POINTER INC ON IOT BLK
+	BLKO	ME,1		;IF C(1)=0 THEN AR FM AD(J) (ET0)
+	CAI			;ON ARC-3 PRINT, OR AD+1 BOTH (FT9)
+	CAI			;ON AD2 PRINT FAILED
+	CAME	1,[XWD 1,1]	;IF IR 12 FAIL TO SET, PROG
+	STOP			;BLOWS UP
+MOD36:	SETZ	1,		;PC+1 INH FOR BLK FAILED
+	BLKO	ME,1		;CHECK IOT BLK INPUT TO
+	CAI			;PC+1 INH ON THE PC1 PRINT
+	SKIPA
+	STOP
+MOD37:	SETZ	1,		;BLKO PC+1 AT ET0 TIME
+	BLKO	ME,1		;FAILED. CHECK THE AND GATE
+	STOP			;BLK, CYC(0) CRY(0) ON PC1 PRINT
+MOD38:	SETO	1,		;BLKO PERFORMED A SKIP WHEN
+	BLKO	ME,1		;END CRY0 SHOULD=1
+	SKIPA			;CK PC+1,SEE ABOVE ROUTINE
+	STOP
+MOD39:	CONO PI,10000		;JUST IN CASE
+	CONO	435447		;SET SOME CPA FLAGS
+	CONI	0		;(1) DID FLAGS SET? NO CONO FAIL
+	SKIPN	0		;YES: CONI FAIL CK IOB TO AR
+	STOP			;AND MANY OTHERS.  IE SINGLE STEP
+MOD40:	CONO			;PIA 35 FAIL TO SET (CPU)
+	CONO	1		;OR READ SINGLE STEP
+	CONI			;SEE CPA PRINT
+	TRNN	1
+	STOP
+
+MOD41:	CONO			;PIA 3+(CFU) FAIL TO SET
+	CONO	2		;OR READ.  SEE CPA PRINT
+	CONI			;SINGLE STEP
+	TRNN	2
+	STOP
+
+MOD42:	CONO			;PIA 33 (CPU) FAIL TO SET
+	CONO	4		;OR READ.  SEE CPA PRINT
+	CONI			;SINGLE STEP
+	TRNN	4
+	STOP
+
+MOD43:	CONO	1		;PIA 35 (CPU) FAIL TO CLEAR
+	CONO			;OR READ INCORRECT
+	CONI			;SEE CPA PRINT
+	TRNE	1		;SINGLE STEP
+	STOP
+
+MOD44:	CONO	2		;PIA 34 (CPU) FAIL TO CLEAR
+	CONO			;OR READ INCORRECTLY
+	CONI			;SEE CPA PRINT
+	TRNE	2		;SINGLE STEP
+	STOP
+
+MOD45:	CONO	4		;PIA 33 (CPU) FAIL TO CLEAR
+	CONO			;OR READ INCORRECTLY
+	CONI			;SEE CPA PRINT
+	TRNE	4		;SINGLE STEP
+	STOP
+
+MOD46:	CONO	7		;SET SOME CP FLAGS
+	CONSO			;CONSO FAILED  CK
+	SKIPA
+	STOP
+MOD47:	CONO	7		;CONSO FAILED
+	CONSO	7
+	STOP
+MOD48:	CONO	7		;CONSZ FAIL
+	CONSZ	7		;CHECK PC+1 AT AND
+	SKIPA			;OF AD=0, CONSZ, IOT T5
+	STOP			;ON PC1 PRINT
+MOD50:	CONO	40		;CPU AROV ENABLE
+	CONO	20		;TRY TO SET
+	CONSO	20
+	STOP			;IOB OR FLOP
+	CONO	20		;SET AROV EN
+	CONO			;CK FOR NOT CLEARING
+	CONSO	20
+	STOP
+	CONO	20		;SET AROV EN
+	CONO	40		;TRY TO CLEAR
+	CONSZ	20
+	STOP
+	CONO	40		;CLEAR AROV EN
+	CONO			;CK FOR NOT SETTING
+	CONSZ	20
+	STOP
+MOD51:	CONO	400		;FOV EN CLEAR
+	CONO	200		;TRY TO SET
+	CONSO	200
+	STOP
+
+	CONO	200		;SET FOV EN
+	CONO			;CK FOR NOT CLEARING
+	CONSO	200
+	STOP
+
+	CONO	200		;SET FOV EN
+	CONO	400		;TRY TO CLEAR
+	CONSZ	200
+	STOP
+
+	CONO	400		;CLEAR FOV EN
+	CONO			;CK FOR NOT SETTING
+	CONSZ	200
+	STOP
+
+MOD52:	CONO	4000		;CLEAR CLK EN
+	CONO	2000		;TRY TO SET
+	CONSO	2000
+	STOP
+
+	CONO	2000		;SET CLK EN
+	CONO			;CK FOR NOT CLEARING
+	CONSO	2000
+	STOP
+
+	CONO	2000		;SET CLK EN
+	CONO	4000		;TRY TO CLEAR
+	CONSZ	2000
+	STOP
+
+	CONO	4000		;CLEAR CLK EN
+	CONO			;TEST FOR NOT SETTING
+	CONSZ	2000
+	STOP
+
+MOD53:	CAM	-1		;SET NON-EX VIA F(CE)
+	CONO	10000		;TRY TO CLEAR
+	CONSZ	10000
+	STOP			;FAIL TO CLEAR
+
+	CONO	10000		;CLEAR NON-EX
+	CAM	-1		;TRY TO SET VIA F(CE)
+	CONSO	10000		;FAIL TO SET
+	STOP			;CK MEM CNTL, CPA
+
+	CONO	10000		;CLEAR NON-EX
+	MOVEM	-1		;TRY TO SET VIA S(CE)
+	CONSO	10000		;FAIL TO SET
+	STOP
+
+	CONO	10000		;CLEAR NON-EX
+	ADDM	-1		;TRY TO SET VIA PSE
+	CONSO	10000		;FAIL TO SET
+	STOP
+
+	CAM	-1		;SET NON EX
+	CONO			;TEST FOR NOT CLEARING
+	CONSO	10000		;ON CONO 0
+	STOP
+	CONO	10000
+
+MOD54:	CONO	400000		;CLEAR PDL OV
+	SETO			;TRY TO SET
+	PUSH			;VIA PUSH
+	CONSO 200000		;TEST FOR SET
+	STOP			;CPA PRINT
+
+	SETO
+	PUSH			;SET PDL OV
+	CONO 400000		;TRY TO CLEAR .CK
+	CONSZ 200000		;CPA PDL OV SET (ET0) POP GATE
+	STOP			;FLOP/IOB CPA PRINT
+
+	SETO
+	PUSH			;SET PDL OV
+	CONO			;CK FOR NOT CLEARING
+	CONSO 200000
+	STOP
+
+	CONO	400000		;TEST FOR NOT
+	SETO			;SETTING PDL-OV
+	AOS			;CPA PDL OV SET FAIL
+	CONSZ 200000		;IR PUSH CRY(0) (1) AT ET0
+	STOP			;AND GATE.  THE PUSH INPUT
+
+MOD55:	CONO	400000		;CK PDL FLAG
+	SETZ			;CPA PDL OV SET
+	PUSH			;CK AND GATE OK
+	CONSZ 200000		;ET0 IR PUSH,ADCRY0 (1)
+	STOP			;THE CRY FLAG SHOULD PREVENT
+
+	CONO	400000		;TRY TO SET PDL-OV
+	SETO			;VIA PUSHJ
+	PUSHJ	.+1		;THE AND GATE OF
+	CONSO 200000		;PUSH,PUSHJ TO FROM
+	STOP			;CPA PDL OV SET FAILED. SEE CPA PRINT
+
+	CONO	400000		;TRY TO SET VIA POPS
+	MOVEI	1		;CHECK AND GATE OF
+	POP			;IR POPS, ET0, AD CRY 0(0)
+	CONSO 200000		;TO CPA PDL OV SET
+	STOP
+
+	CONO	400000		;CHECK POPS FOR NOT
+	MOVE	[XWD 1,1]		;SETTING PDL-OV
+	POP			;AD CRY0(0) SHOULD PREVENT
+	CONSZ 200000		;SEE ABOVE
+	STOP
+
+MOD56:	MOVSI	400000		;SET AROV FLAG
+	ADD	[XWD 400000,0]	;CK IOB INPUT IOB1
+	CONSO	10		;PRINT FOR MISSING
+	STOP			;IOB BIT 32
+
+	JFCL	17,.+1		;CHECK AROV STATUS
+	CONSZ	10		;BIT 32 ON IOB
+	STOP			;SEE IOB1 PRINT
+
+	CONSZ	404440		;STATUS BITS NOT USED
+	STOP			;SHOULD BE 0  IOB1 PRINT
+
+	CONO	200000		;CLEAR THE WORLD
+	SETZ			;ON IOT THE
+	BLKI			;AND GATE OF IOT BLKI
+	CAI			;BLKO WHICH MAKES IOT BLK
+	CAME	[XWD 1,1]		;FAILED LOOK AT THE
+	STOP			;BLKI INPUT
+
+MOD57:	MOVSI	400000		;SET AROV FLAG
+	ADD	[XWD 400000,0]	;A CONO WITH OUT
+	CONO			;BIT 32 CLEARED IT
+	JFCL	10,.+2		;SEE ARF PRINT CPA CONO
+	STOP			;AND BIT 32
+
+	MOVSI	400000		;SET AROV FLAG
+	ADD	[XWD 400000,0]	;TRY TO CLEAR WITH
+	CONO	10		;A CONO
+	JFCL	10,.+2		;IT FAILED TO CLEAR
+	SKIPA			;CHECK ARF PRINT
+	STOP			;CPA CONO AND BIT 32
+
+	MOVSI	1,40000
+	JFCL	17,.+1		;SET FOV FLAG
+	JRST	2,.+1(1)		;VIA RESET FLAGS
+	CONO			;CONO WITHOUT BIT29
+	JFCL	1,.+2		;CLEARED IT.  SEE ARF PRINT
+	STOP			;CPA CONO SET AND IOB 29
+
+MOD58:	MOVSI	1,40000
+	JFCL	17,.+1		;SET FOV FLAG
+	JRST	2,.+1(1)		;VIA RESET FLAGS
+	CONO	100		;CONO FAIL TO CLEAR FOV
+	JFCL	1,.+2		;SEE ARF PRINT
+	SKIPA			;CONO CPU AND IOB
+	STOP			;BIT 29
+
+	JFCL	1,.+1		;AR FOV FLAG TO IOB
+	CONSZ	100		;FAIL SEE IOB1 PRINT
+	STOP			;AND CPA STATUS, AR FOV (1)
+
+	MOVSI	1,40000
+	JFCL	17,.+1		;SET FOV VIA
+	JRST	2,.+1(1)		;RESTOR FLAGS
+	CONSO	100		;FOV TO IOB FAIL
+	STOP			;SEE IOB1 PRINT
+
+	CONO	40000		;CPA ADDR BREAK
+	CONSZ 40000		;STATUS FAIL
+	STOP			;SEE CPA OR IOB1 PRINT
+
+MOD59:	CONO	7		;A CONO TO P1 MODIFIED
+	CONO	PI,0		;CPU AS A DEVICE.  BIO
+	CONSO	7		;CPA SEL IS CONFUSED
+	STOP
+
+	CONO	10000		;JUST CHECKING FOR
+	CAM .			;NOT NONEX AGAIN
+	CONSZ	10000
+	STOP
+
+	CONO	PI,200000	;SEE IF PAR ERR
+	CONSZ	PI,200000	;IS A ZERO
+	STOP
+
+	CONO	PI,400000	;SEE IF POWER FAIL
+	CONSZ	PI,400000	;IS A ZERO
+	STOP
+
+	MOVEI	-1		;WAIT FOR CLOCK
+	CONSZ	1000		;FLAG TO SET
+	JRST	.+3
+	SOJG	.-2
+	STOP			;NO CLOCK FLAG
+
+MOD60:	CONO	PI,100000	;CLEAR CPA PARITY ENB
+	CONO PI,40000		;TRY TO SET IT
+	CONSO	PI,100000	;ALSO PI AS DEVICE
+	STOP
+
+	CONO	PI,40000	;SET CPA PAR ENB
+	CONO	PI,		;CK FOR NOT CLEAR
+	CONSO	PI,100000
+	STOP
+
+	CONO	PI,40000	;SET CPA PAR ENB
+	CONO	PI,100000	;TRY TO CLEAR
+	CONSZ PI,100000
+	STOP
+
+	CONO	PI,100000	;CLEAR CPA PAR ENB
+	CONO	PI,		;CK FOR NOT SET
+	CONSZ	PI,100000	;ON CONO
+	STOP
+
+MOD70:	CLEAN			;SEE IOB1
+	CONI	PI,0		;READ PI STATUS
+	TRNE	77400		;A PI HOLD FLOP FAIL TO
+	STOP			;CLEAR OR IOB PI INPUT
+	MOVE	1,[MOVEI 40]	;STORE A MOVIT IN
+	MOVEM	1,(1)		;LOCATIONS 40 TO 60
+	CAME	1,[MOVEI 57]
+	AOJA	1,.-2
+
+DEFINE	BLURB<
+;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+;INSTRUCTION
+>
+DEFINE	PIO	(A)
+<	CLEAN
+	CONO	PI,PIOSET+A	;PIO FAIL TO SET IF LIGHT OUT
+	CONSO	PI,A		;OTHERWISE FAIL TO READ
+	STOP			;STATUS SE P12-IOB1 PRINT
+
+	CLEAN			;CHECK PIO CLEAR
+	CONO	PI,PIOSET+A	;SET PIO
+	CONO	PI,PIOCLR+A	;TRY TO CLEAR
+	CONSZ	PI,A		;LIGHT=FAIL TO CLEAR PI2 PRINT
+	STOP			;NO LIGHT=STATUS FAIL IOB1 PRINT
+
+	CLEAN			;CHECK FOR PI RESET
+	CONO	PI,PIOSET+A	;ABILITY TO CLEAR PIO FLAG
+	CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+	CONSZ	PI,A		;TO PIO FLAGS
+	STOP
+
+	CLEAN			;TEST PIO SET
+	CONO	PI,PIOSET	;SEE PI2 PRINT
+	CONSZ	PI,A		;IT SET FLOP WITHOUT
+	STOP			;A IOB BIT
+
+	CLEAN			;TEST PIO CLR
+	CONO	PI,PIOSET+A	;PERHAPS PI RESET OCCURED (NO IOB-23)
+	CONO	PI,PIOCLR	;THE FLOP CLEARED
+	CONSO	PI,A		;WITH OUT A IOB BIT
+	STOP			;SEE PI2 PRINT
+>
+
+MOD71:	CLEAN			;CHECK PIO SET
+	CONO	PI,PIOSET+177	;THE PI CHANNEL FLOPS
+	CONSO	PI,177		;FAILED TO SET
+	STOP			;CHECK PI1 PRINT
+
+MOD72:	PIO 100
+	PIO 40
+
+MOD73:	CHANEL	MOD75
+	PIO 20
+	PIO 10
+
+MOD74:	PIO 4
+	PIO 2
+	PIO 1
+MOD75:	CLEAN
+MOD76:	CLEAN
+	CONO	PI,PIOSET+100	;PI RESET OCCURED
+	CONO	PI,0		;WITH OUT IOB-23
+	CONSO	PI,100		;SEE PI1 PRINT
+	STOP
+
+	CLEAN			;PI RESET OCCURED
+	CONO	PI,PIOSET+100	;WITH OUT PI SEL
+	CONO	ME,1000		;SEE PI1 PRINT
+	CONSO	PI,100
+	STOP
+
+	CLEAN
+	CONO	PI,PIOSET+100	;CHECK SELECTION
+	CONO	ME,PIOCLR+100	;ON CONO SETL. SEE
+	CONSO	PI,100		;PI1 PRINT  CONO ME
+	STOP			;SHOULD NOT EFFECT PI
+MOD77:	CLEAN
+	CONO	PI,ACT		;SET ACTIVE THEN
+	CONO	PI,10000	;TRY TO CLEAR VIA PI RESET
+	CONSZ	PI,200		;FAIL TO CLEAR  SEE P11 PRINT
+	STOP			;THE PI ACT FLAG
+	CLEAN
+	CONO	PI,ACT		;SET ACTIVE THEN
+	CONO	PI,400		;TRY TO CLEAR VIA CONO
+	CONSZ	PI,200		;AND BIT27 SEE PI1
+	STOP			;PRINT ACTIVE FLAG
+	CLEAN
+	CONO	PI,ACT		;SEE ACT VIA CONO BIT 28
+	CONSO	PI,200		;LIGHT=0 FAIL TO SET
+	STOP			;LIGHT=(1) FAIL TO READ PI1-IOB1
+	CLEAN
+	CONO	PI,ACT		;SEE ABOVE
+	CONO	PI,ACT
+	CONSO	PI,200
+	STOP			;PI ACT FAIL
+
+DEFINE	NOTPIR	(A)<
+	CLEAN			;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+	CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+	CONSZ	PI,A		;PIR (1) INPUT TO AND GATE OF PIH (0)
+	STOP			;BOTTEM OF PAGE.  ALSO PIR-FLOP
+>
+MOD78:	BLURB
+;CHECK CHANNEL 1, PIR1 FLOP OR RI REQ1 LEVEL
+	NOTPIR	40000
+;CHECK CHANNEL 2, PIR2  FLOP OR PI REQ2 LEVEL
+	NOTPIR	20000
+;CHECK CHANNEL 3, PIR3 FLOP OR PI REQ3 LEVEL
+	NOTPIR	10000
+;CHECK CHANNEL 4, PIR4 FLOP OR PI REQ4 LEVEL
+	NOTPIR	4000
+;CHECK CHANNEL 5, PIR5 FLOP OR PI REQ5 LEVEL
+	NOTPIR	2000
+;CHECK CHANNEL 6, PIR6 FLOP OR PI REQ6 LEVEL
+	NOTPIR	1000
+;CHECK CHANNEL 7, PIR 7 FLOP OR PI REQ7 LEVEL
+	NOTPIR	400
+
+DEFINE	NOTREQ	(A,B)<
+	CLEAN			;A TEST OF PI OK TO PREVENT INTERRUPT
+	CONO	PI,PIREQ+A	;ACTIVE CLEARED, REQUEST FLAG SET
+	CONSZ	PI,B		;INTR OCCURED PIOK INPUT, PIOK TO PI
+	STOP			;REQ FAIL.  SEE BOTTEM PI2 PRINT
+>
+
+MOD79:	BLURB
+;TEST PI ACT ABILITY TO PREVENT PI REQ1, INTERRUPT VIA ACTIVE
+	NOTREQ	100,40000
+;TEST PIOK2 ABILITY TO PREVENT PI REQ2, INTERRUPT
+	NOTREQ	40,20000
+;TEST PIOK3 ABILITY TO PREVENT PI REQ3, INTERRUPT
+	NOTREQ	20,10000
+;TEST PIOK4 ABILITY TO PREVENT PI REQ4, INTERRUPT
+	NOTREQ	10,4000
+;TEST PIOK5 ABILITY TO PREVENT PI REQ5, INTERRUPT
+	NOTREQ	4,2000
+;TEST PIOK6 ABILITY TO PREVENT PI REQ6, INTERRUPT
+	NOTREQ 2,1000
+;TEST PIOK7 ABILITY TO PREVENT PI REQ7, INTERRUPT
+	NOTREQ	1,400
+
+DEFINE	PIRCLR	(A)<
+	CLEAN
+	CONO	PI,PIREQ+A	;SET REQUEST FLOP BUT
+	SETZ			;NOT ACTIVE THEN CLEAR
+	CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+	SKIPE			;PI RESET FAILED TO CLEAR
+	STOP			;THE PIR FLAG.`SEE PI2 PRINT
+>
+
+ZZ=100				;CHECK CLEAR TO PIR FLAGS
+	REPEAT	7,<
+	PIRCLR	ZZ
+	ZZ=ZZ/2>
+
+DEFINE	FILAC<
+	MOVE	17,[MOVEI 17]	;FILL ACS WITH
+	MOVEM	17,(17)		;MOVEI TO AC 0
+	CAME	17,[MOVEI 0]	;THE CURRENT LOC
+	SOJA	17,.-2
+	MOVE	17,[MOVEI 17]
+>
+
+	FILAC
+
+	CLEAN			;CHECK PC+1 INHIBIT ON INTERRUPT
+	MOVE	[MOVEI]
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	SKIPA			;PC+1 INH ON PC1 PRINT FAIL
+	STOP			;SEE P1 CYC(1) INPUT
+	BLURB
+MOD80:	CLEAN
+	MOVE	[MOVEI]		;IF LOC 0 EXECUTED C(0)=0
+	CONO PI,ACT+PIREQ+100	;CAUSE AN INTERRUPT
+	SKIPN	0		;MA FM PICH (1) PULSE FAIL
+	STOP			;SEE MA1 PRINT
+	CLEAN
+	MOVE	[MOVEI]
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT IF MA
+	CAIN	40		;34 SET FAIL C(0)=40
+	STOP			;SEE MA1 PRINT
+	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	2		;MA 30 SET FAILED
+	STOP			;SEE MA1 PRINT
+	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	46		;MA 33 SET OUCCRED ON CH1
+	STOP			;SEE MA1 PRINT
+MOD81:	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	52		;MA 32 SET OCCURED ON CH1
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	43		;MA 35 SET OUCCURED ON CH1
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
+	CAIN	40		;MA 33 SET FAILED ON CH2
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+20	;CAUSE INTERRUPT
+	CAIN	40		;MA 32 SET FAILED ON CH4
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
+	CAIN	46		;MA 34 SET OCCURED ON CH2
+	STOP			;SEE MA1 PRINT
+
+	BLURB
+MOD82:	CLEAN			;CHECK IF AN INTERRUPT OCCURES
+	SETZ	0		;C(0) FILLED BY XCT OF MOVEI
+	CONO	PI,ACT+PIREQ+177	;ACTIVATE ALL INTERRUPTS
+	SKIPN	0		;CK PIR FM IOB [1] PI1 PRINT
+	STOP			;AND PIRQ LEVEL PI1 PRINT
+
+	CLEAN
+	SETZ	0		;ON INTERRUPT NO PI HOLDS
+	CONO	PI,ACT+PIREQ+177	;WERE SET CHECK PIH
+	CONSO	PI,77400		;FM PICHRQ PULSE ON
+	STOP			;PI1 PRINT
+DEFINE	PIHCLR	(A,B)<
+	CLEAN
+	CONO	PI,PIREQ+ACT+A	;CAUSE INTERRUPT TO SET HOLD
+	CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+	CONSZ	PI,B		;FAIL TO CLEAR SEE PI2
+	STOP
+>
+
+ZZ=100
+YY=40000				;CHECK RESET TO PIH FLOPS
+MOD83:	REPEAT	7,<
+	PIHCLR	ZZ,YY
+	ZZ=ZZ/2
+	YY=YY/2
+>
+
+
+	BLURB
+DEFINE	OFFPIR	(A,B)<
+	CLEAN
+	CONO	PI,PIREQ+ACT+A	;SETS PIH. THEN CLR
+	JRST 10,.+1		;PIR TURNED BACK ON
+	CONSZ PI,B		;PIR TURNED BACK ON.PIH(1) CLR PIR
+	STOP
+>
+
+ZZ=100
+YY=40000			;TEST THE RESET TO PIR
+MOD85:	REPEAT	7,<
+	OFFPIR	ZZ,YY
+	ZZ=ZZ/2
+	YY=YY/2
+>
+DEFINE	TSTREQ	(A)<
+	CLEAN			;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+	CONO PI,ACT+PIREQ+A	;INTERRUPT SETS PIH IF SECOND
+	SETZ			;INTERRUPT OCCURED PIH (0)
+	CONO	PI,ACT+PIREQ+A	;FAILED TO INHIBIT PIREQ
+	SKIPE			;SEE BOTTOM OF PI2 PRINT
+	STOP
+>
+
+	BLURB
+ZZ=100
+MOD86:	REPEAT	7,<
+	TSTREQ	ZZ
+	ZZ=ZZ/2
+>
+
+DEFINE	PIHOK	(A,B)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+A	;INTERRUPT SHOULD SET HOLD(PIH)
+	SETZ			;IF SECOND INTERRUPT OCCURS PIH
+	CONO	PI,ACT+PIREQ+B	;FAILED TO PREVENT PIOK THUS
+	SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+	STOP			;OF PI2 PRINT
+>
+	BLURB
+
+ZZ=100
+YY=40				;TEST PRIORITY CHAIN
+MOD87:	REPEAT	6,<
+	PIHOK	ZZ,YY
+	ZZ=ZZ/2
+	YY=YY/2
+>
+
+DEFINE	SETPIH	(A,B)<
+	CLEAN			;CHECK REQ AND PIH FLOPS
+	CONO	PI,ACT+PIREQ+A	;CAUSE INTERRUPT, SHOULD SET
+	CONSO	PI,B		;HOLD (PIH) SEE PI2 PRINT
+	STOP			;BOTH PIR+PIH SHOULD BE SET
+>
+MOD88:	SETPIH	100,40000	;CH 1
+	SETPIH	40,20000	;CH 2
+	CHANEL	MOD90
+MOD89:	SETPIH	20,10000	;CH 3
+	SETPIH	10,4000		;CH 4
+	SETPIH	4,2000		;CH 5
+	SETPIH	2,1000		;CH 6
+	SETPIH	1,400		;CH 7
+MOD90:	CLEAN
+
+DEFINE	PIADDR	(A,B)<
+	CLEAN			;CHECK ABILITY TO INTERRUPT TO
+	SETZ			;LOC 40-60 SHOULD SEE MOVEI
+	CONO	PI,ACT+PIREQ+A	;ACTIVATE AN INTERRUPT. IF C(0)=0
+	CAIE	B		;NO INTERRUPT OCCURED, C(0)=ADDR
+	STOP			;OF INTERRUPT EXECUTED
+>
+
+	BLURB
+MOD91:	PIADDR	100,42		;CH 1 TO LOC 42
+	PIADDR	40,44		;CH 2 TO LOC 44
+	CHANEL	MOD93
+MOD92:	PIADDR	20,46		;CH 3 TO LOC 46
+	PIADDR	10,50		;CH 4 TO LOC 50
+	PIADDR	4,52		;CH 5 TO LOC 52
+	PIADDR	2,54		;CH 6 TO LOC 54
+	PIADDR	1,56		;CH 7 TO LOC 56
+
+MOD93:	CLEAN
+
+DEFINE	TWOPIR	(A,B)<
+	CLEAN			;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+	SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+	CONO	PI,ACT+PIREQ+A	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+	CAIN B			;PIR (0) INPUT TO PIOK
+	STOP
+>
+	BLURB
+MOD94:	TWOPIR	100,46		;CH 1+2
+	TWOPIR	40,46		;CH 2+3
+	CHANEL MOD96
+MOD95:	TWOPIR	20,56		;CH 3+4
+	TWOPIR	10,52		;CH 4+5
+	TWOPIR	4,56		;CH 5+6
+	TWOPIR	2,56		;CH 6+7
+MOD96:	CLEAN
+DEFINE	MULPIR	(A,B)<
+	CLEAN
+	SETZ			;TEST MULTI REQUEST BREAK ON
+	CONO	PI,ACT+PIREQ+A	;CORRECT CHANNEL TO CORRECT
+	CAIE B			;LOC C(0)=INTERRUPTED ADDR
+	STOP
+>
+
+	BLURB
+MOD97:	MULPIR	100,42
+	MULPIR	40,44
+	CHANEL	MOD99
+MOD98:	MULPIR	20,46
+	MULPIR	10,50
+	MULPIR	4,52
+	MULPIR	2,54
+	MULPIR	1,56
+MOD99:	CLEAN
+
+DEFINE	JENOK	(A,B)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+A	;SET THE PIH FLOP THEN REMOVE
+	CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+	JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+	CONSO	PI,B		;EFFECT PIH FLOP UNLESS AND
+	STOP
+>
+
+MOD100:	JENOK	100,40000	;PIH 1
+	JENOK	40,20000	;PIH 2
+	CHANEL	MOD102
+MOD101:	JENOK	20,10000	;PIH 3
+	JENOK	10,4000		;PIH 4
+	JENOK	4,2000		;PIH 5
+	JENOK	2,1000		;PIH 6
+	JENOK	1,400		;PIH 7
+MOD102:	CLEAN
+
+DEFINE	ONEPIH	(A,B)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+A	;CHECK FOR REDUNDANT
+	CONSZ PI,B		;PIH FLAGS.SEE TOP PI2 PRINT
+	STOP
+>
+
+WW=20000
+ZZ=100
+YY=37400
+MOD103:	REPEAT	7,<
+	ONEPIH	ZZ,YY
+	YY=YY+WW
+	WW=WW/2
+	ZZ=ZZ/2
+>
+
+DEFINE	FASTPIH	(A,B,C)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+B	;SET PIH AND PIH ON
+	CONO	PI,ACT+PIREQ+A	;NEXT HIGHER CHANNEL
+	JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+	CONSO PI,C		;CHECK FOR FAST TURN OFF (PIH)
+	STOP
+>
+
+MOD104:	FASTPIH	100,40,20000
+	CHANEL	MOD106
+MOD105:	FASTPIH	40,20,10000
+	FASTPIH	20,10,4000
+	FASTPIH	10,4,2000
+	FASTPIH	4,2,1000
+	FASTPIH	2,1,400
+MOD106:	CLEAN
+
+ZZ=100
+YY=40000
+MOD107:	REPEAT	7,<
+	CLEAN
+	CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+	CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+	STOP			;OF PIR STB, IOB PIRQ, PIO
+	ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+	YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT>
+
+DEFINE	CPINTR	(A)<		;PROVIDE AN INTERRUPT TO PI
+	MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+	ADD			;AND OTHER SOURCES
+	CONO	42220+A>
+
+DEFINE	IOBRQ	(A,B,C)<
+	CLEAN			;CLEAR THE WORLD EXCEPT CP
+	CPINTR	A
+	CONO	PI,PIOSET+ACT+B	;TURN ON CK FLOP TO ALLOW
+	CONSO	PI,C		;INTERRUPT. CK INPUT TO PIR FLOP
+	STOP
+>
+
+ZZ=1
+YY=40000
+MOD108:	REPEAT	7,<		;TEST FOR NO INTERRUPT FROM BUSS
+	CLEAN			;CLEAR WORLD
+	CPINTR ZZ		;INTERRUPT TO BUSS INPUT TO PIR
+	CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+	STOP
+	ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+	YY=YY/2
+>
+
+MOD109:	IOBRQ	1,100,77400
+	IOBRQ	2,40,77400
+	CHANEL	MOD111
+MOD110:	IOBRQ	3,20,77400
+	IOBRQ	4,10,77400
+	IOBRQ	5,4,77400
+	IOBRQ	6,2,77400
+	IOBRQ	7,1,77400
+MOD111:	CLEAN
+
+MOD115:	CLEAN			;TEST CP FOR NO INTERRUPT
+	CONO	1		;ASSIGN A CHANNEL TO
+	CONO	PI,PIG0		;PROCESSOR, ENABLE PI. IF
+	CONSZ	PI,77400	;INTERRUPT PROCESS PUT BIT ON PI BUSS
+	STOP			;CHECK TOB IPRQ ON CPA PRINT
+
+	BLURB
+
+MOD116:	CLEAN
+	CPINTR	1		;ENABLE PROCESSOR INTERRUPT
+	SETZ
+	CONO	PI,PIG0		;PROCESSOR DECODE TO PI BUSS
+	CAIE	42		;FAIL, SEE TOP RIGHT OF CPU
+	STOP			;PRINT C(0)=ADDR OF XCT INST
+
+MOD117:	CLEAN
+	CPINTR	2		;ENABLE PROCESSOR INTERRUPT
+	SETZ			;WILL BE FILLED BY ADDR OF XCT INST
+	CONO	PI,PIG0		;ACTIVATE PI SYS
+	CAIE	44		;EXPECT CHANNEL 2
+	STOP			;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
+	CHANEL	MOD120
+MOD118:	CLEAN
+	CPINTR	4		;ENABLE PROCESSOR INTERRUPT
+	SETZ			;WILL BE FILL BY ADDR OF XCT INST
+	CONO	PI,PIG0		;ACT PI SYS
+	CAIE	50		;EXPECT CHANNEL 4
+	STOP			;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
+
+	BLURB
+MOD119:	CLEAN			;ENABLE AN INTERRUPT ON CHANNEL 1-7
+	CPINTR	7		;CHECK PROCESSOR INTERRUPT
+	CONO	PI,PIG0
+	CAIE	56
+	STOP			;CH 7 FAIL TO INTERRUPT
+	CONO	6
+	CAIE	54
+	STOP			;CH 6 FAIL TO INTERRUPT
+	CONO	5
+	CAIE	52
+	STOP			;CH 5 FAIL TO INTERRUPT
+	CONO	4
+	CAIE	50
+	STOP			;CH 4 FAIL TO INTERRUPT
+	CONO	3
+	CAIE	46
+	STOP			;CH 3 FAIL TO INTERRUPT
+	CONO	2
+	CAIE	44
+	STOP			;CH 2 FAIL TO INTERRUPT
+	CONO	1
+	CAIE	42
+	STOP			;CH 1 FAIL TO INTERRUPT
+MOD120:	CLEAN
+
+	BLURB
+MOD121:	CLEAN
+	SETZ			;C(0) MODIFIED IF INTERRUPT
+	CONO	PI,PIG0		;ENABLE PI
+	JFCL	10,.+1		;CLEAR AROV
+	CONO	20+1		;ENABLE AROV CH1
+	SKIPE			;INTERRUPT OCCURED SEE CPA PRINT
+	STOP			;CPA AROV EN(1) AND GATE TO PIRQ
+
+MOD122:	CLEAN
+	SETZ
+	CONO	PI,PIG0
+	MOVSI	400000
+	ADD			;SET AROV
+	CONO	1		;AROV CNT NO ENABLE
+	SKIPE			;INT OCCURED SEE CPU PRINT
+	STOP
+
+MOD123:	CLEAN
+	SETZ
+	CONO	PI,PIG0		;ENABLE PI
+	MOVSI	400000		;SET AROV
+	ADD			;FLOP
+	CONO	21		;FLOP AND AROV (EN)
+	CAIE	42		;NO INTERRUPT CHECK AND GATE
+	STOP			;TO PIRQ ON CPU PRINT
+
+MOD124:	CLEAN
+	SETZ
+	CONO	PI,PIG0		;ENABLE PI
+	CONSO	1000
+	JRST	.-1		;WAIT IF CLK=0
+	CONO	2001		;SET CLOCK ENABLE
+	CAIE	42		;SHOULD INTERRUPT TO LOC 42
+	STOP			;SEE CPU PRINT AND CLK ENABLE
+
+	BLURB
+MOD125:	CLEAN
+	CONO	PI,PIG0		;ENABLE PISYS
+	CONO	1		;TRY TO SET NONEX MEM
+	SETZ			;NO INTERRUPT SET
+	CAM	-1		;NONEX INPUT TO
+	CAIE	42		;PIRQ ON CPA
+	STOP			;PRINT
+
+MOD127:	CLEAN
+	CONO	PI,PIG0		;ENABLE PI
+	CONO	1		;CPU TO CHANNEL 1
+	SETO			;SET THE
+	PUSHJ	.+1		;PDL FLAG
+	CAIE	42		;IT FAILED TO INTERRUPT
+	STOP			;SEE ITS INPUT TO PIRQ ON CPA PRINT
+
+MOD128:	CLEAN
+	CONO	PI,PIG0		;ENABLE PI
+	CONO	1
+	SETZ
+	CONO	PI,40000	;ENABLE PAR
+	SKIPE			;INTERRUPT OCCURED
+	STOP			;CHECK CPU PIRQ INPUT
+
+MOD129:	CLEAN
+	JFCL	1,.+1		;CLEAR FOV
+	CONO	PI,PIG0		;ENABLE PI
+	SETZ
+	CONO	PI,201		;FOV ENABLE. INTERRUPT
+	SKIPE			;OCCURED CK PIRQ INPUTS
+	STOP			;ON CPU PRINT
+
+MOD130:	CLEAN
+	SFLAG 40000		;SET FOV FLAG
+	SETZ
+	CONO	PI,PIG0		;ENABLE PI
+	CONO	1		;CH1 TO PROCESSOR
+	SKIPE			;FOV ENABLE FAIL TO PREVENT
+	STOP			;INTERRUPT SEE CPU PRINT
+	BLURB
+MOD131:	CLEAN
+	SFLAG 40000		;SET FOV FLAG
+	CONO	PI,PIG0		;ENABLE PI
+	SETZ
+	CONO	201		;ENABLE FOV+CH1
+	CAIE	42		;FAIL TO INTERRUPT SEE
+	STOP			;PIRQ INPUTS ON CPA PRINT
+MOD132:	CLEAN
+	CONO	PI,ACT+PIREQ+100	;INTERRUPT
+	REPEAT	^D10,
+<	JRST .+1>
+	CONSO	PI,40000	;PIH WAS RESET BY JRST (NO BIT 9)
+	STOP			;SEE PI RESTORE LOGIC ON PI1 PRINT
+MOD133:	CLEAN
+	CONO	PI,ACT+PIREQ+100	;INTERRUPT
+	REPEAT	^D10,
+<	CAI 10,0>
+	CONSO	PI,40000	;PIH WAS RESET BY BIT9(NO JRST)
+	STOP			;SEE PI RESTORE LOGIC ON PI1 PRINT
+MOD134:	CLEAN			;TEST PI CYC(1) INPUT TO PI OV
+	SETO			;PROVIDE ALL CONDITIONS TO SET
+	BLKI			;PI OV EXCEPT PI CYC(1)
+	CONO	PI,ACT+PIREQ+100	;IF C(0)=43 REPLACE THE B137
+	CAIE	42		;AND GATE TO PI OV SEE
+	STOP			;PI1 PRINT
+MOD135:	CLEAN
+	MOVE	[BLKO ME,0]	;PUT A BLKI IN
+	MOVEM	42		;LOC 42
+	SETZ			;PROVIDE FOR NO OVERFLOW
+	CONO	PI,ACT+PIREQ+100	;INTERRUPT. IF C(0)=43
+	CAIN	43		;AND GATE TO PIOU THE AD
+	STOP			;CRY0(1) INPUT FAILED. SEE PI1 PRINT
+	JRST	MOD136
+;HOLE LEFT FOR RELOCATION TEST
+
+
+MOD136:	CLEAN
+	MOVE	[AOS]		;PUT AN AOS IN LOC 42
+	MOVEM	42		;PROVIDE ALL INPUTS TO
+	SETO			;PIOU EXCEPT IOT BLK
+	CONO	PI,ACT+PIREQ+100	;CANT TEST GATE
+	SKIPE			;THINK UNNECESSARY
+	STOP			;BUT DO IT ANYWAY
+
+MOD137:	CLEAN
+	MOVE	[BLKO ME,0]	;SETUP A BLKO TO SET
+	MOVEM	42		;THE PI OV FLOP
+	SETO
+	CONO	PI,ACT+PIREQ+100	;CAUSE FIRST INTERRUPT
+	SETZ			;PI SHOULD SET AT THIS
+	CLEAN			;TIME, IF PI OV IS NOT
+	CONO	PI,ACT+PIREQ+100	;CLEARED AT ST1 NEXT INTERRUPT
+	CAIN	43		;WILL OCCUR AT LOC 43
+	STOP			;SET PI 1 PRINT.
+
+MOD140:	CLEAN
+	MOVE	[BLKO ME,0]	;PUT A BLKO IN LOC 42
+	MOVEM	42		;WHEN EXECUTED THIS SHOULD
+	SETO			;SET PIOV. IF PI OV IS NOT
+	CONO	PI,ACT+PIREQ+100	;CONNECTED TO MA REGISTER
+	ANDI	-1		;42 WILL BE EXECUTED TWICE
+	CAIN	1		;SEE MA 35 SET AT IT0
+	STOP			;AND PI OV(1) ON MA1 PRINT
+
+MOD141:	CLEAN			;CHECK BLKO NOT RESET PIH
+	MOVE	[MOVEI 42]	;RESTORE LOC 42
+	MOVEM	42		;TO MOVEI
+	CONO	PI,PIREQ+ACT+100	;SET PIH VIA INTERRUPT
+	SETZ			;IF PIH1(0) THEN PI CYC(1)
+	BLKO	ME,0		;INPUT TO PI RESTORE FAILED
+
+	CAI
+	CONSO	PI,40000		;SET PI1 PRINT
+	STOP
+
+MOD142:	CLEAN			;CHECK PI RESTORE LOGIC
+	MOVE	[DATAO ME,0]	;DATAO AND PIOV SHOULD PRODUCE
+	MOVEM	42		;PI RESTORE. CHECK THIS INPUT
+	CONO	PI,PIREQ+ACT+100	;TO PI RESTORE ON PI1 PRINT
+	CONSZ	PI,40000		;ALSO CHECK PI CYC(1) INPUT
+	STOP			;ON SAME PAGE
+
+MOD143:	CLEAN
+	MOVE	[DATAI ME,0]	;IF MACHINE HANGS OR
+	MOVEM	42		;PIH(1) CHECK DATAO/DATAI
+	CONO	PI,PIREQ+ACT+100	;INPUT TO PRIORITY SYSTEM
+	CONSZ	PI,40000		;SEE PI1 PRINT (LOWER LEFT)
+	STOP
+
+MOD144:	CLEAN
+	MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
+	MOVEM	42		;POINTER SHOULD SET PIOV. THE
+	SETO			;INST AT LOC 43 A (MOVEI 43)
+	CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
+	CONSO	PI,40000	;PI OV AND ASSOCIATED LOGIC
+	STOP			;ON PI1 PRINT
+
+MOD145:	CLEAN
+	MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
+	MOVEM	42		;POINTER SHOULD SET PIOV. THE
+	SETO			;INST AT LOC 43 A (MOVEI 43)
+	CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
+	CAIE	43		;CHECK PI OV INPUT TO MA35
+	STOP			;SET ON MA1 PRINT
+
+MOD147:	CLEAN			;TEST PI CYC(0) GET TO PIR STB
+	MOVE	[BLKO ME,0]	;PUT A BLKO WITH POINTER TO
+	MOVEM	44		;SET PI OV IN CHANNEL 2 BLKO
+	MOVE	[MOVEI 1,42]	;WILL SET NONEX MEM CAUSING
+	MOVEM	42		;INTERRUPT ON CH1 THE INSTRUCTION
+	HRROI	-2		;AT LOC 45 MUST BE EXECUTED
+	CONO PI,PIOSET+100
+	CONO	1		;OR PI CYC(0) GATE TO PIR STB FAILED
+	CONO PI,PIREQ+ACT+40
+	CAIE	45		;AND OF MC RQ PULSE PICYC(0)
+	STOP
+	CAIE	1,42
+	STOP			;NONEX FAIL TO INTERRUPT CH1
+
+MOD148:	CLEAN			;PUT A SKIPA IN THE
+	MOVE	[SKIPA]		;INTERRUPT SPOT
+	MOVEM	42
+	CONO	PI,PIREQ+ACT+100
+	STOP
+
+MOD149:	CLEAN
+	MOVE	[JSR .+4]
+	MOVEM	42
+	CONO	PI,PIREQ+ACT+100
+	STOP
+	0
+
+MOD150:	CLEAN			;INTERRUPT TO A PUSHJ
+	MOVE	[PUSHJ .+4]
+	MOVEM	42
+	MOVSI	-1
+	CONO	PI,ACT+PIREQ+100
+	ANDI	1,-1
+	CAIE	1,.-1
+	STOP			;PC STORED INCORRECTLY
+	CAIE	1		;THE PUSHJ
+	STOP			;POINTER WORD IN ERROR
+	CLEAN
+MOD151:	CLEAN
+	MOVE [MOVEI 43]		;TEST CLEAR MA ON INTERRUPT
+	MOVEM 43
+	MOVE [BLKO ME,4]
+	MOVEM 42
+	SETOB 4
+	HRRI 4,4
+	CONO PI,PIREQ+ACT+100
+	CAIE 43
+	STOP
+
+
+MOD152:	SETZM	60		;TEST TRAP TO 60
+	MOVE	[JSP MOD153]	;GO HERE IF TRAP TO 40
+	MOVEM	41		;ERROR
+	MOVE	[JSP MOD153+1]
+	MOVEM	61		;OK TRAP
+	XWD	100000,0	;OP CODE 100-127
+	STOP
+MOD153:	STOP
+	SKIPN	60		;NOTHING STORED IN C(60)
+	STOP
+
+MOD154:	SKIPN	USMOD#		;TEST RELOC IF SPECIFIED
+	JRST	MOD195
+
+DEFINE	UMON<
+	CONO	634440		;PREPARE TO TURN ON USER
+	CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+	DATAO	[XWD -1,0]>
+
+DEFINE	UMOFF<
+	MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+	MOVEM	41		;UUO. PROG RETURNS TO END
+	XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+>
+
+DEFINE	HOLD<
+	JUMPA	.		;MACH ERROR. HALT MAY TRAP
+	JUMP	.+1		;SO WAITING FOR OPERATOR
+>
+
+MOD160:	JRST	2,@[XWD 0,.+1]	;CLEAR EX IOT USER, IF LIGHT
+	JSP	.+1		;OUT FLAG TRANSFER TO AR FAIL
+
+	TLNE UMIOT		;BIT 6. OR FLOP FAIL TO CLEAR
+	STOP
+
+	JRST	2,@[XWD UMIOT,.+1]	;SET THEN CLEAR EX IOT USER
+	JRST	2,@[XWD 0,.+1]	;CK AND GATE ARF FLAGS FM BR (J),
+	JSP	.+1		;BR6(0) FAIL TO CLEAR
+
+	TLNE UMIOT		;EX IOT USER ON EX PRINT
+	STOP
+
+	JRST	2,@[XWD 0,.+1]	;CLEAR THEN SET EX IOT USER
+	JRST	2,@[XWD UMIOT,.+1]	;IF LIGHT=1 FLAGS TO AR FAIL
+	JSP	.+1		;IF LIGHT=0 FLOP FAIL TO SET. CK
+	TLNN	UMIOT		;BR6(1), EX USER(0), ARF FLAGS(J), EX PRINT
+	STOP
+
+	JRST	2,@[XWD 0,.+1]	;CLEAR USER. IOB1 PRINT
+	CONSZ	1B20		;READ PROCESSOR STATUS
+	STOP
+
+	JRST	2,@[XWD UMIOT,.+1]	;SET USER IOB1 PRINT
+	CONSO	1B20		;CPA STATUS FAIL
+	STOP
+
+MOD161:	UMOFF
+	TLNE	USERF		;FLAGS TO AR BIT5 (USER MODE) FAIL
+	HOLD
+
+;TRY TO TURN ON USER MODE VIA RESTORE FLAGS THEN
+;TURN OFF VIA UU0. SEE EX PRINT
+
+MOD162:	MOVE	[JSP	MD162A]
+	MOVEM	41
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,MD162B]	;ALSO PRIVI IO
+
+MD162A:	HOLD			;TRAP HERE, NO MEMORY ACCESS, USER MODE
+
+MD162B:	UMOFF
+	TLNN	USERF		;JSP STORED FLAGS IN C(0)
+	HOLD
+
+;TEST UUO TURN OFF OF USER MODE. PRIVI I/O ALLOWS
+;IOT TO OCCUR IN CASE USER STILL ON. SEE EX PRINT
+
+MOD163:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	UMOFF
+	UMOFF
+	TLNE	USERF		;FLAGS STORED VIA JSP AT 41
+	HOLD
+
+MOD164:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;SET USER+PRIV I/O
+	MOVE	[JUMPA .+3]	;SET RETURN FOR THE
+	MOVEM	41		;UUO. EX ILL OP SHOULD
+	XWD	40000,0		;NOT TURN OFF USER FLAG
+	JSP	.+1		;BECAUSE AR FM PC(J)(ET0)
+	TLNN	USERF		;PULSE IF NOT PRESENT. SEE EX
+	HOLD
+	UMOFF
+
+;PERFORM A UUO. THE PURPOSE OF THIS IS TO SET THE
+;EX ILL OP FLOP.  THE FLOP SHOULD BE CLEARED BY THE
+;JSP AT 41. IF HOWEVER THIS DID NOT OCCUR, ANY
+;STORE PC INSTRUCTION IN USER MODE WOULD CLEAR
+;USER MODE.  THIS TEST THEREFORE TEST THE CLEAR
+;TO EX ILL OP VIA AR FM PC(J) (ET0) ON EX PRINT
+
+MOD165:	UMOFF
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	JSP	.+1		;DONT FORGET FAIL TO CLEAR
+	JSP	.+1		;MAY BE PHONEY SET EX ILL OP
+	TLNN	USERF		;OR PHONEY CLEAR EX-USER
+	HOLD
+	UMOFF
+
+MOD166:	UMOFF
+	UMON
+	JRST	1,.+1		;SET USER MODE VIA ET0
+	JSP	.+1		;IR JRST, IR12(1). IT FAILED
+	TLNN	USERF		;REPLACE B135 ON EX PRINT
+	HOLD
+	UMOFF
+
+;THIS TEST WILL TRY TO SET THE PRIV I/O BIT WHEN IN
+;USER MODE. IF THE EX IOT USER FLOP SETS EX USER (0) INPUT
+;TO THE FLAG FAILED  SEE EX PRINT
+
+MOD167:	UMON
+	JRST	2,@[XWD USERF,.+1]	;SET USER
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;TRY TO SET PRIV I/O
+	JSP	.+1
+	TLNE	UMIOT
+	HOLD
+	UMOFF
+
+MOD170:	UMON
+	JRST	2,@[XWD USERF,.+1]	;SET USER MODE
+	MOVE	[JSP .+4]		;SET TRAP RETURN
+	MOVEM	41			;1 PAST THE IOT INST
+	SETZM	40			;FAIL TO TRAP. EX ALLOW IOT
+	XWD	700000,0		;ALLOWED THE IOT IN USER
+	SKIPN	40			;MODE. SEE EX PRINT
+	HOLD
+	UMOFF
+
+MOD171:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;SET PRIVI+USER
+	MOVE	[JSP .+4]		;SET TRAP RETURN 1 PAST
+	MOVEM	41			;THE TRAP INST
+	SETZB	40			;THE EX IOT USER FLOP
+	XWD	700000,0		;SHOULD ALLOW THE IOT
+	CAI
+	SKIPE	40			;CHECK EX ALLOW IOT. EX PRINT
+	HOLD
+	UMOFF
+
+MOD172:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;USER AND PRIV I/O
+	MOVE	[JSP .+3]		;THEN CAUSE A PI REQUEST
+	MOVEM	42			;PI CYC(1) SHOULD SET EX PI SYNC
+	CONO	PI,ACT+PIREQ+100	;WHICH SHOULD CLEAR EX USER
+	JSP	.+1			;AT ET1 OF JSP AT 42. IT
+	TLNE	USERF			;FAILED. SEE EX PRINT
+	HOLD
+
+;THIS TEST WILL INSURE THAT EX ILL OP IS CLEARED
+;BY IOT BLK.  THIS LOGIC IS NECESSARY FOR RETURNING TO
+;THE PROPER RELOCATION WHEN A UUO IS INTERRUPTED AND
+;MUST BE RE EXECUTED.
+
+
+MOD173:	MOVE [JUMPA .+3]
+	MOVEM 41
+	XWD 040000,0		;PERHAPS TURN OFF USER MODE
+	SETZ			;PREVIOUS UUO SET EX ILL OP
+	BLKI			;THIS IOT SHOULD CLEAR IT
+	CAI
+	JRST 2,@[XWD USERF,.+1]	;NOW ENTER USER MODE IF
+	JSP	.+1		;EX ILL OP SET JSP WILL CLEAR
+	JSP	.+1		;EX USER FLAG.  SEE EX PRINT
+	TLNN	USERF
+	HOLD
+	UMOFF
+
+MOD174:	UMON
+	JRST	2,@[XWD USERF,.+1]
+	MOVE	[JSP .+4]	;SET RETURN
+	MOVEM	41		;SEE IR2 PRINT
+	SETZM	40		;IR JRST A IR10(1)
+	HALT	.		;THIS HALT SHOULD TRAP
+	SKIPN	40		;BUT DID NOT
+	HOLD
+	UMOFF
+
+MOD175:	UMON
+	JRST	2,@[XWD USERF,.+1]
+	MOVE	[JSP .+4]	;SET RETURN
+	MOVEM	41		;SEE IR2 PRINT
+	SETZM	40		;THE ENABLE PI SHOULD
+	JEN	.+1		;TRAP TO 40
+	SKIPN	40		;BUT DID NOT
+	HOLD
+	UMOFF
+
+MOD176:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	MOVE	[JSP .+4]	;SET PRIVI IO BIT
+	MOVEM	41		;THIS SHOULD PREVENT JRST IO,
+	SETZM	40		;FROM TRAPPING. SEE IR UUO
+	JRST	10,.+1		;ON IR2 PRINT
+	SKIPE	40
+	HOLD
+	UMOFF
+
+MOD177:	UMON
+	JRST	1,.+1		;SEE IF JUST A PLAIN
+	MOVE	[JSP .+4]	;JRST WILL TRAP
+	MOVEM	41		;SEE IR2 PRINT FOR
+	SETZM	40		;DECODE IR-UUO
+	JRST	.+1
+	SKIPE	40
+	HOLD
+	UMOFF
+
+MOD178:	UMON
+	JRST	1,.+1		;SEE IF IR 9+10 WITH OUT
+	MOVE	[JSP .+4]	;A JRST WILL TRAP
+	MOVEM	41		;SEE IR UUO ON IR-2 PRINT
+	SETZM	40
+	JFCL	14,.+1
+	SKIPE	40
+	HOLD
+	UMOFF
+
+;CHECK THAT AN IOT AT INTERRUPT LEVEL WILL NOT LOOK
+;LIKE A UUO SEE IR-2 PRINT
+
+MOD179:	UMON
+	CONO	1
+	MOVE	[BLKI]
+	MOVEM	42
+	MOVE	[JSP M179+1]
+	MOVEM	41
+	SETZB	40
+	MOVE [JSP M179]
+	MOVEM 43
+	SETO
+	CONO	PI,ACT+PIOSET+100
+	JRST	1,.+1
+	CAM	-1
+M179:	SKIPE	40
+	HOLD
+	UMOFF
+
+MODXX1:	UMON			;TEST TRAP (60) TURN OFF OF
+	MOVE	[JSP .+5]	;USER MODE
+	MOVEM	61
+	JRST	1,.+1
+	XWD	100000,0	;OP CODE 100
+	HOLD			;IT FAILED TO TRAP
+	JSP	.+1		;IT SHOULD ALSO
+	TLNE	USERF		;TURN OFF USER MODE
+	HOLD
+
+MODXX2:	UMON
+	MOVE	[JSP .+4]	;TEST IR TO C(40)
+	MOVEM	41		;FOR BITS 1,2,3
+	JRST 2,@[XWD USERF,.+1]
+	XWD	700000,0	;AN IOT
+	MOVE	40
+	CAME	[XWD 700000,0]
+	HOLD
+
+MOD180:	UMON
+	DATAO	[0]		;GET RID OF PROTECT REG
+
+	CONO 1
+	CONO PI,ACT+PIOSET+100
+	MOVE [JSP M180]
+	MOVEM 42
+	MOVE [JSP .+4]
+	MOVEM 41
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;ENABLE USER
+	JUMPA .			;THIS INST SHOULD SET PROT
+M180:	CONSO	PROT		;HERE IF FLAG FAIL
+	HOLD
+	CONSZ	NONEX		;NEVER NON EX WITH PROT
+	HOLD
+	CONO	1B22		;FAIL TO CLEAR PROT
+	CONSZ	PROT		;FLAG SEE CPA PRINT
+	HOLD
+
+DEFINE	EXCT	(A) <
+	MOVE	[JSP .+3]	;EXECUTE A UUO
+	MOVEM	41		;AND STORE FLAGS
+	XWD	A,0		;IN AC0.
+>
+;CHECK UUO 0 TRAPING TO EXEC MODE AND UUO 1-37
+;NOT TRAPING TO EXEC MODE...1P19 ON EX CONTROL PRINT.
+
+MOD18A:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	0
+	EXCT	0
+	TLNE	USERF		;USER MODE ON?..CK 1P19 EX CONT PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	1000
+	TLNN	USERF		;CK BIT 8 INPUT TO 1P19 EX CONTROL PRINT.
+	HOLD
+
+
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	2000
+	TLNN	USERF		;CK BIT 7 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	4000
+	TLNN	USERF		;CK BIT 6 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	10000
+	TLNN	USERF		;CK BIT 5 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	20000
+	TLNN	USERF		;CK BIT 4 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF,.+1]
+	MOVE	0,[JSP .+3]
+	MOVEM	0,41
+	XWD 700000,0		;XCT AN IOT.
+	JSP	.+1		;GET FLAGS.
+	TLNE	0,USERF		;USER MODE STILL ON?
+	HOLD			;YES. CK EX NON REL UUO
+				;EX PRINT.
+
+MOD181:	MOVE 10040		;SAVE THESE LOC
+	SKIPN SAV40
+	MOVEM SAV40
+	MOVE 10041
+	SKIPN SAV41
+	MOVEM SAV41
+	MOVE 10042
+	SKIPN SAV42
+	MOVEM SAV42
+	MOVE 10043
+	SKIPN SAV43
+	MOVEM SAV43
+	JRST	.+5
+SAV40:	0
+SAV41:	0
+SAV42:	0
+SAV43:	0
+
+;TEST THE SETTING OF PROTECT FLAG BY MOVING A
+;TWO INST PROG TO AC 1+2 PROG IS CAM X AND UU0
+;WITH TRAP SET TO REAL WORLD THE CAM SHOULD TEST
+;THE PROT FLAG
+
+X=2000
+
+DEFINE	LAC	(A)<
+	UMON
+	DATAO	[0]
+	MOVE	1,[CAM A]
+	MOVSI	2,40000
+
+	CONO PI,ACT+PIOSET+100
+	CONO 1
+	MOVE [JSP .+5]
+	MOVEM 42
+	MOVE	[JSP .+3]
+	MOVEM	41		;SET TRAP RETURN
+	JRST	1,1		;TURN ON USER MODE
+	CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+	HOLD
+	CONSZ	NONEX
+	HOLD
+>
+MOD182:	REPEAT	10,<
+	LAC	X
+	X=X+X>
+
+MOD185:	SETZM	40		;TEST FOR TRAP TO REAL LOC 40
+	MOVE	[JSP MOD186-1]	;NOT RELOCATED 40
+	MOVEM	41		;SETUP TRAP FOR OK
+	DATAO	[XWD -1,10000]
+	MOVE	[JSP MOD186]	;SETUP TRAP FOR ERR
+	MOVEM	10041
+	JRST	1,.+1-10000	;IF THE UUO TRAPS TO
+	XWD	40000,0		;RELOCATED 40 PROG WILL HOLD
+	SKIPN	40		;AT THIS POINT
+
+MOD186:	HOLD
+	JSP	.+1		;IF USER MODE STILL ON
+	TLNE	USERF		;THEN WAIT HERE
+	HOLD
+
+;TEST FOR INTERRUPT TO REAL PI (NOT RELOCATED)
+MOD190:	UMON
+	MOVE	[JSP MOD191]	;SET ERROR PI RET
+	MOVEM 10042
+	MOVE	[JSP MOD191+1]	;SET OK PI
+	MOVEM 42
+	DATAO [XWD -1,10000]
+	JRST 2,@[XWD USERF+UMIOT,.+1-10000]
+	CONO	PI,ACT+PIREQ+100	;SHOULD INTERRUPT
+	HOLD
+MOD191:	HOLD
+	UMOFF
+;TEST FOR NOT RELOCATION OF AC'S
+MOD192:	SETZM	5
+	UMON
+	MOVE [JSP M192]
+	MOVEM 41
+	DATAO [XWD -1,10000]
+	JRST 1,.+1-10000
+	MOVEI	5,12345
+	XWD 040000,0		;UUO TO TERM USER MODE
+M192:	CAIE	5,12345
+	HOLD
+MOD195:	SKIPE	FPTRAP		;SEE IF SWITCH SAYS FP
+	JRST MOD196
+	MOVE [JSP .+3]		;TEST THE ABILITY TO
+	MOVEM 61		;TRAP A FP INST
+	FADRI -1		;THIS INST SHOULD TRAP
+	MOVE 2,.-1		;FAIL TO TRAP PROPERLY
+	CAME 2,60
+	STOP
+	JRST MOD197		;WHAT ABOUT SWITCHS
+MOD196:	MOVE [JSP .+4]		;TEST FOR FP NOT TRAP
+	SETZM 60
+	MOVEM 61		;SET RETURN
+	FADRI -1
+	SKIPE 60		;DOES MACH HAVE FP
+	STOP
+;CHECK BYT7A SETING BYF6.
+MOD19X:	CONO	635550		;CLR THE WORLD.
+	MOVE	[JSP MOD19B]
+	MOVEM	42		;SETUP FOR INT ON CH # 1.
+	CONO	PI,12300	;SETUP PI.
+	MOVE	1,POINTR	;PUT POINTER INTO AC1.
+	CONO	1000		;CLR CLOCK FLAG.
+	CONSO	1000		;WAIT FOR
+	JRST	.-1		;CLOCK FLAG.
+	CONO	3001		;SET INT ENABLE AND PI 35 AND CLR CLK FLG.
+	ILDB	0,1		;SHOULD STAY IN INDIRECT LOOP.
+MOD19B:	CONSO	1000		;CLK FLG INT?
+	HOLD
+	TLNN	0,20000		;BYF6 FLAG SET? NO..CK BYT7A ON BYTE PRINT.
+	HOLD
+	JSP	.+1		;CAUSE ARLT FM FLAGS(J)A.
+	TLNE	0,20000		;CK BYTE PRINT.
+	HOLD
+
+	JRST	MOD197
+
+POINTR:	XWD 440720,1
+;CK TO SEE THAT UUO 0 TRAPS TO 141.
+MOD200:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	MOVE	[JSP .+5]
+	MOVEM	41
+	AOJ
+	MOVEM	141
+	0
+	HOLD			;UUO 0 TRAPED TO 40. CK 2L44 ON MA CONTROL PRINT.
+	TLNN	USERF		;USER MODE GET CLR?..CK 1P19 ON EX CONT PNT.
+	HOLD
+;CK TO SEE THAT UUO 37 TRAPS TO 41.
+
+	UMON
+	JRST	2,@[XWD USERF + UMIOT, .+1]
+	MOVE	[JSP .+5]
+	MOVEM	141
+	AOJ
+	MOVEM	41
+	037000000000
+	HOLD			;UUO 37 TRAPPED TO 141, CK 2L44 ON MA CONTROL PRINT.
+
+
+;CK TO SEE THAT AN INTERRUPT ON CH # 1 TRAPS TO 142.
+
+	MOVE	[MOVEI 142]
+	MOVEM	142
+	CONO	634440		;CLR THE WORLD.
+	SETZ	0,
+	CONO	PI,10000	;CLR PI.
+	CONO	PI,ACT+PIREQ+100;CAUSE INT.
+	CAIE	0,142		;CK 2K44 ON MA CONTROL PRINT.
+	HALT
+
+	SETOM	MATPOF		;SET FLG SO KNOW IN THIS ROUTINE.
+
+
+MOD197:	JRST	BEGEND		;REPEAT DIAGNOSTIC
+
+;DIAGNOSTIC STORAGE
+
+	LIT
+
+	VAR
+
+LAST:	JRST	4,BEGIN
diff --git a/apps/pdp10/diags/klad/dakah/DAKAHM.MAC.txt b/apps/pdp10/diags/klad/dakah/DAKAHM.MAC.txt
new file mode 100644
index 000000000..2099812dd
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakah/DAKAHM.MAC.txt
@@ -0,0 +1,1775 @@
+SUBTTL	DIAGNOSTIC SECTION
+
+	LALL
+
+PGMNAM:	ASCIZ	/
+PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC # 8 [DAKAH]
+/
+START:	SETZM	USER#		;CLEAR USER CONTROL WORD
+	JSP	0,.+1		;GET FLAGS
+	TLNE	USERF		;IN USER MODE?
+	SETOM	USER		;YES, SET USER CONTROL WORD
+	SKIPN	USER
+	JRST	STARTA
+	TTCALL	3,PGMNAM	;MENTION OUR NAME
+	OUTSTR	[ASCIZ	/
+?EXEC MODE DIAGNOSTIC ONLY
+/]				;TELL USER
+	HALT	.		;AND DIE...
+
+STARTA:
+ST:	SETZM	MATPOF#		;CLR MA TRAP OFFSET FLAG.
+MOD:	SKIPE 1,SAV40		;RESTORE THESE LOC IF PROG
+	MOVEM 1,10040			;IF PROG MODIFIED
+	SKIPE 1,SAV41
+	MOVEM 1,10041
+	SKIPE 1,SAV42
+	MOVEM 1,10042
+	SKIPE 1,SAV43
+	MOVEM 1,10043
+	CONI CPSAV#
+	CONI PI,PISAV#
+
+	DATAI			;DO WE HAVE FP
+	SKIPGE	MONCTL		;MONITR CONTROL ?
+	MOVE	0,MONCTL	;YES
+	ORCM [1B35]
+	SETCAM FPTRAP#
+	SETOM PI7SYS#
+
+	DATAI			;IS THIS MACH WITH USER
+	SKIPGE	MONCTL		;MONITR CONTROL ?
+	MOVE	0,MONCTL	;YES
+	ORCM [1B34]
+	SETCAM USMOD#
+
+	SKIPE	MATPOF#		;START AT 3776?
+	JRST	MOD200		;YES. GO CK MA 29 SET.
+
+;MACH/OPTION DEPENDENT
+;TEST UU0
+
+	RETURN MOD1		;TEST UUO FOR NOT GOING TO 60
+	MOVE	1,[JRST .+4]	;IF THIS ROUT STOPS THE
+	MOVE	2,[JSP MOD1+1]	;TRAP WAS TO 60. IF UU0 HANG
+	MOVEM	2,61		;THE MACH, CHECK XCTF0 AND
+	0			;UU0F0 FLAGS FOR NOT SETING
+MOD1:	SKIPA			;CHECK MA 31 SET
+	STOP			;IR 1XX GATE FAIL
+
+MOD2:	RETURN	MOD3		;TEST 40 TO MA LOGIC (UU0)
+	MOVE	1,[JRST .+3]	;IF 40 WAS NOT (J) TO MA
+	0			;THIS UU0 WILL STORE IN LOC 0
+MOD3:	SKIPA			;CHECK MA-30 SET
+	STOP			;ON THE MA1 PRINT
+
+MOD4:	RETURN	MOD5		;IF THE MA FROM AR
+	MOVE	2,[JSP MOD5+1]	;INHIBIT (AT6) FAILED THE
+	MOVEM	61		;UU0 WOULD STORE IN E ORED
+	20			;WITH 40 RATHER THAN C(40)
+MOD5:	SKIPA			;MA FM AR(J) CAME UP  CHECK
+	STOP			;AND OF AT6-IR UU0 ON MA1 PRINT
+
+MOD6:	RETURN	MOD7		;TEST UU0 ABILITY TO STORE
+	0			;IF C(40) UNCHANGED SCE FAIL
+MOD7:	CAMN	2,40		;CK IR UU0 INPUT TO SCE
+	STOP			;ON S2 PRINT
+
+MOD8:	RETURN	MOD9		;TEST SACINH FOR UU0
+	SETO			;IF FAIL WILL MODIFY AC
+	0			;SACINH THE IR UU0 INPUT
+MOD9:	CAME	[-1]		;ON S2 PRINT FAILED
+	STOP
+
+MOD10:	RETURN	MOD11		;TEST UU0 FACINH, IF THE
+	MOVEI	-1		;UU0 FETCHES A AC THE
+	0			;AC WILL BE STORED
+MOD11:	CAMN	40		;FAC INH THE IR UU0 INPUT
+	STOP			;ON F2 PRINT FAIL
+
+MOD12:	RETURN	MOD13		;TEST UU0 IR TO ARLT
+	XWD	077740,0	;THE AND OF (ET0,IR UU0)
+MOD13:	SKIPN	40		;ON ARC-2 PRINT FAILED
+	STOP
+
+MOD14:	RETURN	MOD15		;UU0 FAIL
+	XWD	000740,0		;CHECK ARLT FM FLAGS (J) B
+MOD15:	SKIPN	40		;THE PA ON ARC-2 PRINT
+	STOP
+
+MOD16:	RETURN	MOD17		;UU0 FAIL
+	XWD	077000,0		;CHECK ARLT FM FLAGS (J) A
+MOD17:	SKIPN	40		;THE PA ON ARC-2 PRINT
+	STOP
+
+	ZZ=40
+MOD18:	REPEAT	^D10,
+<	RETURN .+4		;TEST IRLT TO AR
+	XWD	ZZ,0
+	SKIPN	40
+	STOP
+	ZZ=ZZ+ZZ
+>
+MOD19:	RETURN	MOD19A		;TEST PROPER STORAGE
+	0			;OF UU0
+MOD19A:	SKIPE	40
+	STOP
+
+MOD20:	RETURN	MOD20A		;CK FOR STORING OF E
+	XWD	0,-1		;ON A UU0
+MOD20A:	MOVE	40
+	CAIE	-1
+	STOP
+
+MOD21:	RETURN	MOD21A		;CK FOR STORING OF E
+	XWD	077740,0	;ON A UU0
+MOD21A:	MOVE	40
+	CAME	[XWD 077740,0]
+	STOP
+
+MOD22:	RETURN	MOD22A		;CK FOR STORING OF
+	XWD	077740,-1	;E AND IR ON UU0
+MOD22A:	MOVE	40
+	CAME	[XWD 077740,-1]
+	STOP
+
+MOD23:	RETURN	MOD23A		;UU0 TEST THE PC+1
+	0			;INHIBIT FEATURE LOC 41
+MOD23A:	ANDI	2,-1		;CONTAINS TSP 2,X
+	CAIN	2,.		;PC+1 INH THE IR UU0 INPUT
+	STOP			;FAILED. SEE PC1 PRINT
+
+MOD24:	RETURN	MOD24A		;PC STORED IN CORRECTLY
+	XWD	0,-1		;FROM THE JSP AT 41
+MOD24A:	ANDI 2,-1		;ON A UUO INST
+	CAIE	2,.-1
+	STOP
+
+MOD25:	;SET PRIVILEGE TO FLAG
+	;SET UU0 TRAP
+	;TEST IOT INST FOR
+	;NOT TRAPING. SEE IR-2
+	;PRINT IR UU0 CAME UP
+MOD26:	;CK AND OF IR IOTA, NOT ALLOW, ETC
+
+MOD27:	SFLAG	0		;MAKE SURE EX IOT USER=0
+	RETURN	MOD28		;CK FOR NOT TRAP ON IOT
+	CONI			;IF IOTS TRAP NOW THE
+	CAI			;AND GATE EX USER (0), EX IOT USER
+	SKIPA			;DID NOT RESPOND TO EX USER (0)
+MOD28:	STOP			;SEE EX ALLOW IOTS ON EX PRINT
+
+MOD29:	SETO	1,		;THE IOTS FAIL TO STORE C(E)
+	DATAI	1		;CHECK IR IOT ON IR2 PRINT
+	CONI	1		;LOOKS LIKE IR DECODE FAILED
+	CAMN	1,[-1]
+	STOP
+
+MOD30:	MOVE	1,[123456654321]	;CHECK SCE FOR DATAI
+	DATAI	1		;THE CONTENTS OF LOC1
+	CAMN	1,[123456654321]	;WERE NOT MODIFIED. SEE
+	STOP			;S1 PRINT SCE AND DECODE ON IOT
+
+MOD31:	MOVE	1,[123456654321]	;CHECK SCE FOR CONI.  THE
+	CONI	1		;CONTENTS OF LOC1 WERE NOT
+	CAMN	1,[123456654321]	;MODIFIED.  SEE S2 PRINT SCE
+	STOP			;AND DECODE ON IOT PRINT
+
+MOD32:	SETO			;SACINH FAIL FOR INST
+	CONI	1		;CONI FAILED. CHECK
+	CAME	[-1]		;IR IOT INPUT TO SACINH
+	STOP			;ON THE S2 PRINT
+
+MOD33:	CONO	ME,0		;CLEAR LAST DEVICE
+	CONI	ME,2		;AR CLEAR AT(ET0)FAILED
+	CAIN	2,2		;ON INST CONT CK AR
+	STOP			;CLEAR ETO, CONI ON ARC-2 PRINT
+
+MOD34:	DATAO	ME,[0]		;AR CLR ON A DATAI
+	DATAI	ME,3		;INST FAILED CHECK
+	CAIN	3,3		;IOT DATAI INPUT ON THE
+	STOP			;OR GATE TO AR CLR. SEE ARC-2 PRINT
+
+	SETZ			;CONSZ FAIL TO SKIP. CK
+	CONSZ			;PC+1 AT AND OF AD=0, IOT CONSZ,
+	STOP			;IOT T5 ON PC1 PRINT
+
+	CONO	ME,0		;CONSZ FAIL TO SKIP CK
+	CONSZ	ME,700000		;FOR NO AR CLR AT (ETO). SEE ARC-2
+	STOP			;PRINT THE IOT CONSX INPUT
+
+	CONO	ME,0		;CONSO SKIPED.  CHECK PC+1
+	CONSO	ME,0		;(IOT T5,AD=0,IOT CONSO,IOT CONSZ
+	SKIPA			;AND GATES) ON PC1 PRINT
+	STOP
+
+MOD35:	SETZ	1,		;CHECK POINTER INC ON IOT BLK
+	BLKO	ME,1		;IF C(1)=0 THEN AR FM AD(J) (ET0)
+	CAI			;ON ARC-3 PRINT, OR AD+1 BOTH (FT9)
+	CAI			;ON AD2 PRINT FAILED
+	CAME	1,[XWD 1,1]	;IF IR 12 FAIL TO SET, PROG
+	STOP			;BLOWS UP
+MOD36:	SETZ	1,		;PC+1 INH FOR BLK FAILED
+	BLKO	ME,1		;CHECK IOT BLK INPUT TO
+	CAI			;PC+1 INH ON THE PC1 PRINT
+	SKIPA
+	STOP
+MOD37:	SETZ	1,		;BLKO PC+1 AT ET0 TIME
+	BLKO	ME,1		;FAILED. CHECK THE AND GATE
+	STOP			;BLK, CYC(0) CRY(0) ON PC1 PRINT
+MOD38:	SETO	1,		;BLKO PERFORMED A SKIP WHEN
+	BLKO	ME,1		;END CRY0 SHOULD=1
+	SKIPA			;CK PC+1,SEE ABOVE ROUTINE
+	STOP
+MOD39:	CONO PI,10000		;JUST IN CASE
+	CONO	435447		;SET SOME CPA FLAGS
+	CONI	0		;(1) DID FLAGS SET? NO CONO FAIL
+	SKIPN	0		;YES: CONI FAIL CK IOB TO AR
+	STOP			;AND MANY OTHERS.  IE SINGLE STEP
+MOD40:	CONO			;PIA 35 FAIL TO SET (CPU)
+	CONO	1		;OR READ SINGLE STEP
+	CONI			;SEE CPA PRINT
+	TRNN	1
+	STOP
+
+MOD41:	CONO			;PIA 3+(CFU) FAIL TO SET
+	CONO	2		;OR READ.  SEE CPA PRINT
+	CONI			;SINGLE STEP
+	TRNN	2
+	STOP
+
+MOD42:	CONO			;PIA 33 (CPU) FAIL TO SET
+	CONO	4		;OR READ.  SEE CPA PRINT
+	CONI			;SINGLE STEP
+	TRNN	4
+	STOP
+
+MOD43:	CONO	1		;PIA 35 (CPU) FAIL TO CLEAR
+	CONO			;OR READ INCORRECT
+	CONI			;SEE CPA PRINT
+	TRNE	1		;SINGLE STEP
+	STOP
+
+MOD44:	CONO	2		;PIA 34 (CPU) FAIL TO CLEAR
+	CONO			;OR READ INCORRECTLY
+	CONI			;SEE CPA PRINT
+	TRNE	2		;SINGLE STEP
+	STOP
+
+MOD45:	CONO	4		;PIA 33 (CPU) FAIL TO CLEAR
+	CONO			;OR READ INCORRECTLY
+	CONI			;SEE CPA PRINT
+	TRNE	4		;SINGLE STEP
+	STOP
+
+MOD46:	CONO	7		;SET SOME CP FLAGS
+	CONSO			;CONSO FAILED  CK
+	SKIPA
+	STOP
+MOD47:	CONO	7		;CONSO FAILED
+	CONSO	7
+	STOP
+MOD48:	CONO	7		;CONSZ FAIL
+	CONSZ	7		;CHECK PC+1 AT AND
+	SKIPA			;OF AD=0, CONSZ, IOT T5
+	STOP			;ON PC1 PRINT
+MOD50:	CONO	40		;CPU AROV ENABLE
+	CONO	20		;TRY TO SET
+	CONSO	20
+	STOP			;IOB OR FLOP
+	CONO	20		;SET AROV EN
+	CONO			;CK FOR NOT CLEARING
+	CONSO	20
+	STOP
+	CONO	20		;SET AROV EN
+	CONO	40		;TRY TO CLEAR
+	CONSZ	20
+	STOP
+	CONO	40		;CLEAR AROV EN
+	CONO			;CK FOR NOT SETTING
+	CONSZ	20
+	STOP
+MOD51:	CONO	400		;FOV EN CLEAR
+	CONO	200		;TRY TO SET
+	CONSO	200
+	STOP
+
+	CONO	200		;SET FOV EN
+	CONO			;CK FOR NOT CLEARING
+	CONSO	200
+	STOP
+
+	CONO	200		;SET FOV EN
+	CONO	400		;TRY TO CLEAR
+	CONSZ	200
+	STOP
+
+	CONO	400		;CLEAR FOV EN
+	CONO			;CK FOR NOT SETTING
+	CONSZ	200
+	STOP
+
+MOD52:	CONO	4000		;CLEAR CLK EN
+	CONO	2000		;TRY TO SET
+	CONSO	2000
+	STOP
+
+	CONO	2000		;SET CLK EN
+	CONO			;CK FOR NOT CLEARING
+	CONSO	2000
+	STOP
+
+	CONO	2000		;SET CLK EN
+	CONO	4000		;TRY TO CLEAR
+	CONSZ	2000
+	STOP
+
+	CONO	4000		;CLEAR CLK EN
+	CONO			;TEST FOR NOT SETTING
+	CONSZ	2000
+	STOP
+
+MOD53:	CAM	-1		;SET NON-EX VIA F(CE)
+	CONO	10000		;TRY TO CLEAR
+	CONSZ	10000
+	STOP			;FAIL TO CLEAR
+
+	CONO	10000		;CLEAR NON-EX
+	CAM	-1		;TRY TO SET VIA F(CE)
+	CONSO	10000		;FAIL TO SET
+	STOP			;CK MEM CNTL, CPA
+
+	CONO	10000		;CLEAR NON-EX
+	MOVEM	-1		;TRY TO SET VIA S(CE)
+	CONSO	10000		;FAIL TO SET
+	STOP
+
+	CONO	10000		;CLEAR NON-EX
+	ADDM	-1		;TRY TO SET VIA PSE
+	CONSO	10000		;FAIL TO SET
+	STOP
+
+	CAM	-1		;SET NON EX
+	CONO			;TEST FOR NOT CLEARING
+	CONSO	10000		;ON CONO 0
+	STOP
+	CONO	10000
+
+MOD54:	CONO	400000		;CLEAR PDL OV
+	SETO			;TRY TO SET
+	PUSH			;VIA PUSH
+	CONSO 200000		;TEST FOR SET
+	STOP			;CPA PRINT
+
+	SETO
+	PUSH			;SET PDL OV
+	CONO 400000		;TRY TO CLEAR .CK
+	CONSZ 200000		;CPA PDL OV SET (ET0) POP GATE
+	STOP			;FLOP/IOB CPA PRINT
+
+	SETO
+	PUSH			;SET PDL OV
+	CONO			;CK FOR NOT CLEARING
+	CONSO 200000
+	STOP
+
+	CONO	400000		;TEST FOR NOT
+	SETO			;SETTING PDL-OV
+	AOS			;CPA PDL OV SET FAIL
+	CONSZ 200000		;IR PUSH CRY(0) (1) AT ET0
+	STOP			;AND GATE.  THE PUSH INPUT
+
+MOD55:	CONO	400000		;CK PDL FLAG
+	SETZ			;CPA PDL OV SET
+	PUSH			;CK AND GATE OK
+	CONSZ 200000		;ET0 IR PUSH,ADCRY0 (1)
+	STOP			;THE CRY FLAG SHOULD PREVENT
+
+	CONO	400000		;TRY TO SET PDL-OV
+	SETO			;VIA PUSHJ
+	PUSHJ	.+1		;THE AND GATE OF
+	CONSO 200000		;PUSH,PUSHJ TO FROM
+	STOP			;CPA PDL OV SET FAILED. SEE CPA PRINT
+
+	CONO	400000		;TRY TO SET VIA POPS
+	MOVEI	1		;CHECK AND GATE OF
+	POP			;IR POPS, ET0, AD CRY 0(0)
+	CONSO 200000		;TO CPA PDL OV SET
+	STOP
+
+	CONO	400000		;CHECK POPS FOR NOT
+	MOVE	[XWD 1,1]		;SETTING PDL-OV
+	POP			;AD CRY0(0) SHOULD PREVENT
+	CONSZ 200000		;SEE ABOVE
+	STOP
+
+MOD56:	MOVSI	400000		;SET AROV FLAG
+	ADD	[XWD 400000,0]	;CK IOB INPUT IOB1
+	CONSO	10		;PRINT FOR MISSING
+	STOP			;IOB BIT 32
+
+	JFCL	17,.+1		;CHECK AROV STATUS
+	CONSZ	10		;BIT 32 ON IOB
+	STOP			;SEE IOB1 PRINT
+
+	CONSZ	404440		;STATUS BITS NOT USED
+	STOP			;SHOULD BE 0  IOB1 PRINT
+
+	CONO	200000		;CLEAR THE WORLD
+	SETZ			;ON IOT THE
+	BLKI			;AND GATE OF IOT BLKI
+	CAI			;BLKO WHICH MAKES IOT BLK
+	CAME	[XWD 1,1]		;FAILED LOOK AT THE
+	STOP			;BLKI INPUT
+
+MOD57:	MOVSI	400000		;SET AROV FLAG
+	ADD	[XWD 400000,0]	;A CONO WITH OUT
+	CONO			;BIT 32 CLEARED IT
+	JFCL	10,.+2		;SEE ARF PRINT CPA CONO
+	STOP			;AND BIT 32
+
+	MOVSI	400000		;SET AROV FLAG
+	ADD	[XWD 400000,0]	;TRY TO CLEAR WITH
+	CONO	10		;A CONO
+	JFCL	10,.+2		;IT FAILED TO CLEAR
+	SKIPA			;CHECK ARF PRINT
+	STOP			;CPA CONO AND BIT 32
+
+	MOVSI	1,40000
+	JFCL	17,.+1		;SET FOV FLAG
+	JRST	2,.+1(1)		;VIA RESET FLAGS
+	CONO			;CONO WITHOUT BIT29
+	JFCL	1,.+2		;CLEARED IT.  SEE ARF PRINT
+	STOP			;CPA CONO SET AND IOB 29
+
+MOD58:	MOVSI	1,40000
+	JFCL	17,.+1		;SET FOV FLAG
+	JRST	2,.+1(1)		;VIA RESET FLAGS
+	CONO	100		;CONO FAIL TO CLEAR FOV
+	JFCL	1,.+2		;SEE ARF PRINT
+	SKIPA			;CONO CPU AND IOB
+	STOP			;BIT 29
+
+	JFCL	1,.+1		;AR FOV FLAG TO IOB
+	CONSZ	100		;FAIL SEE IOB1 PRINT
+	STOP			;AND CPA STATUS, AR FOV (1)
+
+	MOVSI	1,40000
+	JFCL	17,.+1		;SET FOV VIA
+	JRST	2,.+1(1)		;RESTOR FLAGS
+	CONSO	100		;FOV TO IOB FAIL
+	STOP			;SEE IOB1 PRINT
+
+	CONO	40000		;CPA ADDR BREAK
+	CONSZ 40000		;STATUS FAIL
+	STOP			;SEE CPA OR IOB1 PRINT
+
+MOD59:	CONO	7		;A CONO TO P1 MODIFIED
+	CONO	PI,0		;CPU AS A DEVICE.  BIO
+	CONSO	7		;CPA SEL IS CONFUSED
+	STOP
+
+	CONO	10000		;JUST CHECKING FOR
+	CAM .			;NOT NONEX AGAIN
+	CONSZ	10000
+	STOP
+
+	CONO	PI,200000	;SEE IF PAR ERR
+	CONSZ	PI,200000	;IS A ZERO
+	STOP
+
+	CONO	PI,400000	;SEE IF POWER FAIL
+	CONSZ	PI,400000	;IS A ZERO
+	STOP
+
+	MOVEI	-1		;WAIT FOR CLOCK
+	CONSZ	1000		;FLAG TO SET
+	JRST	.+3
+	SOJG	.-2
+	STOP			;NO CLOCK FLAG
+
+MOD60:	CONO	PI,100000	;CLEAR CPA PARITY ENB
+	CONO PI,40000		;TRY TO SET IT
+	CONSO	PI,100000	;ALSO PI AS DEVICE
+	STOP
+
+	CONO	PI,40000	;SET CPA PAR ENB
+	CONO	PI,		;CK FOR NOT CLEAR
+	CONSO	PI,100000
+	STOP
+
+	CONO	PI,40000	;SET CPA PAR ENB
+	CONO	PI,100000	;TRY TO CLEAR
+	CONSZ PI,100000
+	STOP
+
+	CONO	PI,100000	;CLEAR CPA PAR ENB
+	CONO	PI,		;CK FOR NOT SET
+	CONSZ	PI,100000	;ON CONO
+	STOP
+
+MOD70:	CLEAN			;SEE IOB1
+	CONI	PI,0		;READ PI STATUS
+	TRNE	77400		;A PI HOLD FLOP FAIL TO
+	STOP			;CLEAR OR IOB PI INPUT
+	MOVE	1,[MOVEI 40]	;STORE A MOVIT IN
+	MOVEM	1,(1)		;LOCATIONS 40 TO 60
+	CAME	1,[MOVEI 57]
+	AOJA	1,.-2
+
+DEFINE	BLURB<
+;CORE LOCATIONS 40 TO 60 CONTAIN A "MOVEI, ADDRESS"
+;THEREFORE IF A INTERRUPT OCCURES THE MOVEI WILL
+;STORE IN LOCATION ZERO THE ADDRESS OF THE EXECUTED
+;INSTRUCTION
+>
+DEFINE	PIO	(A)
+<	CLEAN
+	CONO	PI,PIOSET+A	;PIO FAIL TO SET IF LIGHT OUT
+	CONSO	PI,A		;OTHERWISE FAIL TO READ
+	STOP			;STATUS SE P12-IOB1 PRINT
+
+	CLEAN			;CHECK PIO CLEAR
+	CONO	PI,PIOSET+A	;SET PIO
+	CONO	PI,PIOCLR+A	;TRY TO CLEAR
+	CONSZ	PI,A		;LIGHT=FAIL TO CLEAR PI2 PRINT
+	STOP			;NO LIGHT=STATUS FAIL IOB1 PRINT
+
+	CLEAN			;CHECK FOR PI RESET
+	CONO	PI,PIOSET+A	;ABILITY TO CLEAR PIO FLAG
+	CONO	PI,10000	;SEE PI2 PRINT, PI RESET
+	CONSZ	PI,A		;TO PIO FLAGS
+	STOP
+
+	CLEAN			;TEST PIO SET
+	CONO	PI,PIOSET	;SEE PI2 PRINT
+	CONSZ	PI,A		;IT SET FLOP WITHOUT
+	STOP			;A IOB BIT
+
+	CLEAN			;TEST PIO CLR
+	CONO	PI,PIOSET+A	;PERHAPS PI RESET OCCURED (NO IOB-23)
+	CONO	PI,PIOCLR	;THE FLOP CLEARED
+	CONSO	PI,A		;WITH OUT A IOB BIT
+	STOP			;SEE PI2 PRINT
+>
+
+MOD71:	CLEAN			;CHECK PIO SET
+	CONO	PI,PIOSET+177	;THE PI CHANNEL FLOPS
+	CONSO	PI,177		;FAILED TO SET
+	STOP			;CHECK PI1 PRINT
+
+MOD72:	PIO 100
+	PIO 40
+
+MOD73:	CHANEL	MOD75
+	PIO 20
+	PIO 10
+
+MOD74:	PIO 4
+	PIO 2
+	PIO 1
+MOD75:	CLEAN
+MOD76:	CLEAN
+	CONO	PI,PIOSET+100	;PI RESET OCCURED
+	CONO	PI,0		;WITH OUT IOB-23
+	CONSO	PI,100		;SEE PI1 PRINT
+	STOP
+
+	CLEAN			;PI RESET OCCURED
+	CONO	PI,PIOSET+100	;WITH OUT PI SEL
+	CONO	ME,1000		;SEE PI1 PRINT
+	CONSO	PI,100
+	STOP
+
+	CLEAN
+	CONO	PI,PIOSET+100	;CHECK SELECTION
+	CONO	ME,PIOCLR+100	;ON CONO SETL. SEE
+	CONSO	PI,100		;PI1 PRINT  CONO ME
+	STOP			;SHOULD NOT EFFECT PI
+MOD77:	CLEAN
+	CONO	PI,ACT		;SET ACTIVE THEN
+	CONO	PI,10000	;TRY TO CLEAR VIA PI RESET
+	CONSZ	PI,200		;FAIL TO CLEAR  SEE P11 PRINT
+	STOP			;THE PI ACT FLAG
+	CLEAN
+	CONO	PI,ACT		;SET ACTIVE THEN
+	CONO	PI,400		;TRY TO CLEAR VIA CONO
+	CONSZ	PI,200		;AND BIT27 SEE PI1
+	STOP			;PRINT ACTIVE FLAG
+	CLEAN
+	CONO	PI,ACT		;SEE ACT VIA CONO BIT 28
+	CONSO	PI,200		;LIGHT=0 FAIL TO SET
+	STOP			;LIGHT=(1) FAIL TO READ PI1-IOB1
+	CLEAN
+	CONO	PI,ACT		;SEE ABOVE
+	CONO	PI,ACT
+	CONSO	PI,200
+	STOP			;PI ACT FAIL
+
+DEFINE	NOTPIR	(A)<
+	CLEAN			;ENABLE PRIORITY, EXPECT NO INTERRUPTS
+	CONO	PI,ACT		;CK PI REQ LEVEL (PI2 PRINT).  THE
+	CONSZ	PI,A		;PIR (1) INPUT TO AND GATE OF PIH (0)
+	STOP			;BOTTEM OF PAGE.  ALSO PIR-FLOP
+>
+MOD78:	BLURB
+;CHECK CHANNEL 1, PIR1 FLOP OR RI REQ1 LEVEL
+	NOTPIR	40000
+;CHECK CHANNEL 2, PIR2  FLOP OR PI REQ2 LEVEL
+	NOTPIR	20000
+;CHECK CHANNEL 3, PIR3 FLOP OR PI REQ3 LEVEL
+	NOTPIR	10000
+;CHECK CHANNEL 4, PIR4 FLOP OR PI REQ4 LEVEL
+	NOTPIR	4000
+;CHECK CHANNEL 5, PIR5 FLOP OR PI REQ5 LEVEL
+	NOTPIR	2000
+;CHECK CHANNEL 6, PIR6 FLOP OR PI REQ6 LEVEL
+	NOTPIR	1000
+;CHECK CHANNEL 7, PIR 7 FLOP OR PI REQ7 LEVEL
+	NOTPIR	400
+
+DEFINE	NOTREQ	(A,B)<
+	CLEAN			;A TEST OF PI OK TO PREVENT INTERRUPT
+	CONO	PI,PIREQ+A	;ACTIVE CLEARED, REQUEST FLAG SET
+	CONSZ	PI,B		;INTR OCCURED PIOK INPUT, PIOK TO PI
+	STOP			;REQ FAIL.  SEE BOTTEM PI2 PRINT
+>
+
+MOD79:	BLURB
+;TEST PI ACT ABILITY TO PREVENT PI REQ1, INTERRUPT VIA ACTIVE
+	NOTREQ	100,40000
+;TEST PIOK2 ABILITY TO PREVENT PI REQ2, INTERRUPT
+	NOTREQ	40,20000
+;TEST PIOK3 ABILITY TO PREVENT PI REQ3, INTERRUPT
+	NOTREQ	20,10000
+;TEST PIOK4 ABILITY TO PREVENT PI REQ4, INTERRUPT
+	NOTREQ	10,4000
+;TEST PIOK5 ABILITY TO PREVENT PI REQ5, INTERRUPT
+	NOTREQ	4,2000
+;TEST PIOK6 ABILITY TO PREVENT PI REQ6, INTERRUPT
+	NOTREQ 2,1000
+;TEST PIOK7 ABILITY TO PREVENT PI REQ7, INTERRUPT
+	NOTREQ	1,400
+
+DEFINE	PIRCLR	(A)<
+	CLEAN
+	CONO	PI,PIREQ+A	;SET REQUEST FLOP BUT
+	SETZ			;NOT ACTIVE THEN CLEAR
+	CONO	PI,10000+ACT	;REQUEST AND SET ACTIVE
+	SKIPE			;PI RESET FAILED TO CLEAR
+	STOP			;THE PIR FLAG.`SEE PI2 PRINT
+>
+
+ZZ=100				;CHECK CLEAR TO PIR FLAGS
+	REPEAT	7,<
+	PIRCLR	ZZ
+	ZZ=ZZ/2>
+
+DEFINE	FILAC<
+	MOVE	17,[MOVEI 17]	;FILL ACS WITH
+	MOVEM	17,(17)		;MOVEI TO AC 0
+	CAME	17,[MOVEI 0]	;THE CURRENT LOC
+	SOJA	17,.-2
+	MOVE	17,[MOVEI 17]
+>
+
+	FILAC
+
+	CLEAN			;CHECK PC+1 INHIBIT ON INTERRUPT
+	MOVE	[MOVEI]
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	SKIPA			;PC+1 INH ON PC1 PRINT FAIL
+	STOP			;SEE P1 CYC(1) INPUT
+	BLURB
+MOD80:	CLEAN
+	MOVE	[MOVEI]		;IF LOC 0 EXECUTED C(0)=0
+	CONO PI,ACT+PIREQ+100	;CAUSE AN INTERRUPT
+	SKIPN	0		;MA FM PICH (1) PULSE FAIL
+	STOP			;SEE MA1 PRINT
+	CLEAN
+	MOVE	[MOVEI]
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT IF MA
+	CAIN	40		;34 SET FAIL C(0)=40
+	STOP			;SEE MA1 PRINT
+	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	2		;MA 30 SET FAILED
+	STOP			;SEE MA1 PRINT
+	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	46		;MA 33 SET OUCCRED ON CH1
+	STOP			;SEE MA1 PRINT
+MOD81:	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	52		;MA 32 SET OCCURED ON CH1
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+100	;CAUSE INTERRUPT
+	CAIN	43		;MA 35 SET OUCCURED ON CH1
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
+	CAIN	40		;MA 33 SET FAILED ON CH2
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+20	;CAUSE INTERRUPT
+	CAIN	40		;MA 32 SET FAILED ON CH4
+	STOP			;SEE MA1 PRINT
+
+	CLEAN
+	CONO	PI,ACT+PIREQ+40	;CAUSE INTERRUPT
+	CAIN	46		;MA 34 SET OCCURED ON CH2
+	STOP			;SEE MA1 PRINT
+
+	BLURB
+MOD82:	CLEAN			;CHECK IF AN INTERRUPT OCCURES
+	SETZ	0		;C(0) FILLED BY XCT OF MOVEI
+	CONO	PI,ACT+PIREQ+177	;ACTIVATE ALL INTERRUPTS
+	SKIPN	0		;CK PIR FM IOB [1] PI1 PRINT
+	STOP			;AND PIRQ LEVEL PI1 PRINT
+
+	CLEAN
+	SETZ	0		;ON INTERRUPT NO PI HOLDS
+	CONO	PI,ACT+PIREQ+177	;WERE SET CHECK PIH
+	CONSO	PI,77400		;FM PICHRQ PULSE ON
+	STOP			;PI1 PRINT
+DEFINE	PIHCLR	(A,B)<
+	CLEAN
+	CONO	PI,PIREQ+ACT+A	;CAUSE INTERRUPT TO SET HOLD
+	CONO PI,10000		;TRY TO CLEAR WITH PI RESET
+	CONSZ	PI,B		;FAIL TO CLEAR SEE PI2
+	STOP
+>
+
+ZZ=100
+YY=40000				;CHECK RESET TO PIH FLOPS
+MOD83:	REPEAT	7,<
+	PIHCLR	ZZ,YY
+	ZZ=ZZ/2
+	YY=YY/2
+>
+
+
+	BLURB
+DEFINE	OFFPIR	(A,B)<
+	CLEAN
+	CONO	PI,PIREQ+ACT+A	;SETS PIH. THEN CLR
+	JRST 10,.+1		;PIR TURNED BACK ON
+	CONSZ PI,B		;PIR TURNED BACK ON.PIH(1) CLR PIR
+	STOP
+>
+
+ZZ=100
+YY=40000			;TEST THE RESET TO PIR
+MOD85:	REPEAT	7,<
+	OFFPIR	ZZ,YY
+	ZZ=ZZ/2
+	YY=YY/2
+>
+DEFINE	TSTREQ	(A)<
+	CLEAN			;TEST ABILITY OF HOLD TO PREVENT INTERRUPT
+	CONO PI,ACT+PIREQ+A	;INTERRUPT SETS PIH IF SECOND
+	SETZ			;INTERRUPT OCCURED PIH (0)
+	CONO	PI,ACT+PIREQ+A	;FAILED TO INHIBIT PIREQ
+	SKIPE			;SEE BOTTOM OF PI2 PRINT
+	STOP
+>
+
+	BLURB
+ZZ=100
+MOD86:	REPEAT	7,<
+	TSTREQ	ZZ
+	ZZ=ZZ/2
+>
+
+DEFINE	PIHOK	(A,B)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+A	;INTERRUPT SHOULD SET HOLD(PIH)
+	SETZ			;IF SECOND INTERRUPT OCCURS PIH
+	CONO	PI,ACT+PIREQ+B	;FAILED TO PREVENT PIOK THUS
+	SKIPE			;ALLOWING INTERRUPT. SEE BOTTOM
+	STOP			;OF PI2 PRINT
+>
+	BLURB
+
+ZZ=100
+YY=40				;TEST PRIORITY CHAIN
+MOD87:	REPEAT	6,<
+	PIHOK	ZZ,YY
+	ZZ=ZZ/2
+	YY=YY/2
+>
+
+DEFINE	SETPIH	(A,B)<
+	CLEAN			;CHECK REQ AND PIH FLOPS
+	CONO	PI,ACT+PIREQ+A	;CAUSE INTERRUPT, SHOULD SET
+	CONSO	PI,B		;HOLD (PIH) SEE PI2 PRINT
+	STOP			;BOTH PIR+PIH SHOULD BE SET
+>
+MOD88:	SETPIH	100,40000	;CH 1
+	SETPIH	40,20000	;CH 2
+	CHANEL	MOD90
+MOD89:	SETPIH	20,10000	;CH 3
+	SETPIH	10,4000		;CH 4
+	SETPIH	4,2000		;CH 5
+	SETPIH	2,1000		;CH 6
+	SETPIH	1,400		;CH 7
+MOD90:	CLEAN
+
+DEFINE	PIADDR	(A,B)<
+	CLEAN			;CHECK ABILITY TO INTERRUPT TO
+	SETZ			;LOC 40-60 SHOULD SEE MOVEI
+	CONO	PI,ACT+PIREQ+A	;ACTIVATE AN INTERRUPT. IF C(0)=0
+	CAIE	B		;NO INTERRUPT OCCURED, C(0)=ADDR
+	STOP			;OF INTERRUPT EXECUTED
+>
+
+	BLURB
+MOD91:	PIADDR	100,42		;CH 1 TO LOC 42
+	PIADDR	40,44		;CH 2 TO LOC 44
+	CHANEL	MOD93
+MOD92:	PIADDR	20,46		;CH 3 TO LOC 46
+	PIADDR	10,50		;CH 4 TO LOC 50
+	PIADDR	4,52		;CH 5 TO LOC 52
+	PIADDR	2,54		;CH 6 TO LOC 54
+	PIADDR	1,56		;CH 7 TO LOC 56
+
+MOD93:	CLEAN
+
+DEFINE	TWOPIR	(A,B)<
+	CLEAN			;CK PIR(0) ABILITY TO PREVENT INTERRUPT
+	SETZ			;LOWER CHANNEL SHOULD BE INHIBIT
+	CONO	PI,ACT+PIREQ+A	;TURN ON 2 PIR FLOPS. CHECK INT LOC
+	CAIN B			;PIR (0) INPUT TO PIOK
+	STOP
+>
+	BLURB
+MOD94:	TWOPIR	100,46		;CH 1+2
+	TWOPIR	40,46		;CH 2+3
+	CHANEL MOD96
+MOD95:	TWOPIR	20,56		;CH 3+4
+	TWOPIR	10,52		;CH 4+5
+	TWOPIR	4,56		;CH 5+6
+	TWOPIR	2,56		;CH 6+7
+MOD96:	CLEAN
+DEFINE	MULPIR	(A,B)<
+	CLEAN
+	SETZ			;TEST MULTI REQUEST BREAK ON
+	CONO	PI,ACT+PIREQ+A	;CORRECT CHANNEL TO CORRECT
+	CAIE B			;LOC C(0)=INTERRUPTED ADDR
+	STOP
+>
+
+	BLURB
+MOD97:	MULPIR	100,42
+	MULPIR	40,44
+	CHANEL	MOD99
+MOD98:	MULPIR	20,46
+	MULPIR	10,50
+	MULPIR	4,52
+	MULPIR	2,54
+	MULPIR	1,56
+MOD99:	CLEAN
+
+DEFINE	JENOK	(A,B)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+A	;SET THE PIH FLOP THEN REMOVE
+	CONO	PI,DACT		;THE PIOK LEVELS VIA NO ACTIVE
+	JRST 10,.+1		;RELEASE INTERRUPT SHOULD NOT
+	CONSO	PI,B		;EFFECT PIH FLOP UNLESS AND
+	STOP
+>
+
+MOD100:	JENOK	100,40000	;PIH 1
+	JENOK	40,20000	;PIH 2
+	CHANEL	MOD102
+MOD101:	JENOK	20,10000	;PIH 3
+	JENOK	10,4000		;PIH 4
+	JENOK	4,2000		;PIH 5
+	JENOK	2,1000		;PIH 6
+	JENOK	1,400		;PIH 7
+MOD102:	CLEAN
+
+DEFINE	ONEPIH	(A,B)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+A	;CHECK FOR REDUNDANT
+	CONSZ PI,B		;PIH FLAGS.SEE TOP PI2 PRINT
+	STOP
+>
+
+WW=20000
+ZZ=100
+YY=37400
+MOD103:	REPEAT	7,<
+	ONEPIH	ZZ,YY
+	YY=YY+WW
+	WW=WW/2
+	ZZ=ZZ/2
+>
+
+DEFINE	FASTPIH	(A,B,C)<
+	CLEAN
+	CONO	PI,ACT+PIREQ+B	;SET PIH AND PIH ON
+	CONO	PI,ACT+PIREQ+A	;NEXT HIGHER CHANNEL
+	JRST 10,.+1		;SHOULD RELEASE ONLY HIGH CH
+	CONSO PI,C		;CHECK FOR FAST TURN OFF (PIH)
+	STOP
+>
+
+MOD104:	FASTPIH	100,40,20000
+	CHANEL	MOD106
+MOD105:	FASTPIH	40,20,10000
+	FASTPIH	20,10,4000
+	FASTPIH	10,4,2000
+	FASTPIH	4,2,1000
+	FASTPIH	2,1,400
+MOD106:	CLEAN
+
+ZZ=100
+YY=40000
+MOD107:	REPEAT	7,<
+	CLEAN
+	CONO	PI,PIOSET+ACT+ZZ	;SET CHANNEL IOB SHOULD
+	CONSZ	PI,YY		;NOT HAVE DATA. CHECK AND
+	STOP			;OF PIR STB, IOB PIRQ, PIO
+	ZZ=ZZ/2			;THE PIRQ INPUT. INTERRUPT NOT
+	YY=YY/2			;HAVE OCCURED. SEE PI2 PRINT>
+
+DEFINE	CPINTR	(A)<		;PROVIDE AN INTERRUPT TO PI
+	MOVSI	400000		;BUS FROM PROCESSOR VIA ARROV
+	ADD			;AND OTHER SOURCES
+	CONO	42220+A>
+
+DEFINE	IOBRQ	(A,B,C)<
+	CLEAN			;CLEAR THE WORLD EXCEPT CP
+	CPINTR	A
+	CONO	PI,PIOSET+ACT+B	;TURN ON CK FLOP TO ALLOW
+	CONSO	PI,C		;INTERRUPT. CK INPUT TO PIR FLOP
+	STOP
+>
+
+ZZ=1
+YY=40000
+MOD108:	REPEAT	7,<		;TEST FOR NO INTERRUPT FROM BUSS
+	CLEAN			;CLEAR WORLD
+	CPINTR ZZ		;INTERRUPT TO BUSS INPUT TO PIR
+	CONSZ	PI,YY		;PIO=0 EXPECT NO INTERRUPT. SEE
+	STOP
+	ZZ=ZZ+1			;IOB PIRQ,PIO(1), ON PI2 PRINT
+	YY=YY/2
+>
+
+MOD109:	IOBRQ	1,100,77400
+	IOBRQ	2,40,77400
+	CHANEL	MOD111
+MOD110:	IOBRQ	3,20,77400
+	IOBRQ	4,10,77400
+	IOBRQ	5,4,77400
+	IOBRQ	6,2,77400
+	IOBRQ	7,1,77400
+MOD111:	CLEAN
+
+MOD115:	CLEAN			;TEST CP FOR NO INTERRUPT
+	CONO	1		;ASSIGN A CHANNEL TO
+	CONO	PI,PIG0		;PROCESSOR, ENABLE PI. IF
+	CONSZ	PI,77400	;INTERRUPT PROCESS PUT BIT ON PI BUSS
+	STOP			;CHECK TOB IPRQ ON CPA PRINT
+
+	BLURB
+
+MOD116:	CLEAN
+	CPINTR	1		;ENABLE PROCESSOR INTERRUPT
+	SETZ
+	CONO	PI,PIG0		;PROCESSOR DECODE TO PI BUSS
+	CAIE	42		;FAIL, SEE TOP RIGHT OF CPU
+	STOP			;PRINT C(0)=ADDR OF XCT INST
+
+MOD117:	CLEAN
+	CPINTR	2		;ENABLE PROCESSOR INTERRUPT
+	SETZ			;WILL BE FILLED BY ADDR OF XCT INST
+	CONO	PI,PIG0		;ACTIVATE PI SYS
+	CAIE	44		;EXPECT CHANNEL 2
+	STOP			;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
+	CHANEL	MOD120
+MOD118:	CLEAN
+	CPINTR	4		;ENABLE PROCESSOR INTERRUPT
+	SETZ			;WILL BE FILL BY ADDR OF XCT INST
+	CONO	PI,PIG0		;ACT PI SYS
+	CAIE	50		;EXPECT CHANNEL 4
+	STOP			;IF C(0)=0 NO INTERRUPT. SEE CPA PRINT
+
+	BLURB
+MOD119:	CLEAN			;ENABLE AN INTERRUPT ON CHANNEL 1-7
+	CPINTR	7		;CHECK PROCESSOR INTERRUPT
+	CONO	PI,PIG0
+	CAIE	56
+	STOP			;CH 7 FAIL TO INTERRUPT
+	CONO	6
+	CAIE	54
+	STOP			;CH 6 FAIL TO INTERRUPT
+	CONO	5
+	CAIE	52
+	STOP			;CH 5 FAIL TO INTERRUPT
+	CONO	4
+	CAIE	50
+	STOP			;CH 4 FAIL TO INTERRUPT
+	CONO	3
+	CAIE	46
+	STOP			;CH 3 FAIL TO INTERRUPT
+	CONO	2
+	CAIE	44
+	STOP			;CH 2 FAIL TO INTERRUPT
+	CONO	1
+	CAIE	42
+	STOP			;CH 1 FAIL TO INTERRUPT
+MOD120:	CLEAN
+
+	BLURB
+MOD121:	CLEAN
+	SETZ			;C(0) MODIFIED IF INTERRUPT
+	CONO	PI,PIG0		;ENABLE PI
+	JFCL	10,.+1		;CLEAR AROV
+	CONO	20+1		;ENABLE AROV CH1
+	SKIPE			;INTERRUPT OCCURED SEE CPA PRINT
+	STOP			;CPA AROV EN(1) AND GATE TO PIRQ
+
+MOD122:	CLEAN
+	SETZ
+	CONO	PI,PIG0
+	MOVSI	400000
+	ADD			;SET AROV
+	CONO	1		;AROV CNT NO ENABLE
+	SKIPE			;INT OCCURED SEE CPU PRINT
+	STOP
+
+MOD123:	CLEAN
+	SETZ
+	CONO	PI,PIG0		;ENABLE PI
+	MOVSI	400000		;SET AROV
+	ADD			;FLOP
+	CONO	21		;FLOP AND AROV (EN)
+	CAIE	42		;NO INTERRUPT CHECK AND GATE
+	STOP			;TO PIRQ ON CPU PRINT
+
+MOD124:	CLEAN
+	SETZ
+	CONO	PI,PIG0		;ENABLE PI
+	CONSO	1000
+	JRST	.-1		;WAIT IF CLK=0
+	CONO	2001		;SET CLOCK ENABLE
+	CAIE	42		;SHOULD INTERRUPT TO LOC 42
+	STOP			;SEE CPU PRINT AND CLK ENABLE
+
+	BLURB
+MOD125:	CLEAN
+	CONO	PI,PIG0		;ENABLE PISYS
+	CONO	1		;TRY TO SET NONEX MEM
+	SETZ			;NO INTERRUPT SET
+	CAM	-1		;NONEX INPUT TO
+	CAIE	42		;PIRQ ON CPA
+	STOP			;PRINT
+
+MOD127:	CLEAN
+	CONO	PI,PIG0		;ENABLE PI
+	CONO	1		;CPU TO CHANNEL 1
+	SETO			;SET THE
+	PUSHJ	.+1		;PDL FLAG
+	CAIE	42		;IT FAILED TO INTERRUPT
+	STOP			;SEE ITS INPUT TO PIRQ ON CPA PRINT
+
+MOD128:	CLEAN
+	CONO	PI,PIG0		;ENABLE PI
+	CONO	1
+	SETZ
+	CONO	PI,40000	;ENABLE PAR
+	SKIPE			;INTERRUPT OCCURED
+	STOP			;CHECK CPU PIRQ INPUT
+
+MOD129:	CLEAN
+	JFCL	1,.+1		;CLEAR FOV
+	CONO	PI,PIG0		;ENABLE PI
+	SETZ
+	CONO	PI,201		;FOV ENABLE. INTERRUPT
+	SKIPE			;OCCURED CK PIRQ INPUTS
+	STOP			;ON CPU PRINT
+
+MOD130:	CLEAN
+	SFLAG 40000		;SET FOV FLAG
+	SETZ
+	CONO	PI,PIG0		;ENABLE PI
+	CONO	1		;CH1 TO PROCESSOR
+	SKIPE			;FOV ENABLE FAIL TO PREVENT
+	STOP			;INTERRUPT SEE CPU PRINT
+	BLURB
+MOD131:	CLEAN
+	SFLAG 40000		;SET FOV FLAG
+	CONO	PI,PIG0		;ENABLE PI
+	SETZ
+	CONO	201		;ENABLE FOV+CH1
+	CAIE	42		;FAIL TO INTERRUPT SEE
+	STOP			;PIRQ INPUTS ON CPA PRINT
+MOD132:	CLEAN
+	CONO	PI,ACT+PIREQ+100	;INTERRUPT
+	REPEAT	^D10,
+<	JRST .+1>
+	CONSO	PI,40000	;PIH WAS RESET BY JRST (NO BIT 9)
+	STOP			;SEE PI RESTORE LOGIC ON PI1 PRINT
+MOD133:	CLEAN
+	CONO	PI,ACT+PIREQ+100	;INTERRUPT
+	REPEAT	^D10,
+<	CAI 10,0>
+	CONSO	PI,40000	;PIH WAS RESET BY BIT9(NO JRST)
+	STOP			;SEE PI RESTORE LOGIC ON PI1 PRINT
+MOD134:	CLEAN			;TEST PI CYC(1) INPUT TO PI OV
+	SETO			;PROVIDE ALL CONDITIONS TO SET
+	BLKI			;PI OV EXCEPT PI CYC(1)
+	CONO	PI,ACT+PIREQ+100	;IF C(0)=43 REPLACE THE B137
+	CAIE	42		;AND GATE TO PI OV SEE
+	STOP			;PI1 PRINT
+MOD135:	CLEAN
+	MOVE	[BLKO ME,0]	;PUT A BLKI IN
+	MOVEM	42		;LOC 42
+	SETZ			;PROVIDE FOR NO OVERFLOW
+	CONO	PI,ACT+PIREQ+100	;INTERRUPT. IF C(0)=43
+	CAIN	43		;AND GATE TO PIOU THE AD
+	STOP			;CRY0(1) INPUT FAILED. SEE PI1 PRINT
+	JRST	MOD136
+;HOLE LEFT FOR RELOCATION TEST
+
+
+MOD136:	CLEAN
+	MOVE	[AOS]		;PUT AN AOS IN LOC 42
+	MOVEM	42		;PROVIDE ALL INPUTS TO
+	SETO			;PIOU EXCEPT IOT BLK
+	CONO	PI,ACT+PIREQ+100	;CANT TEST GATE
+	SKIPE			;THINK UNNECESSARY
+	STOP			;BUT DO IT ANYWAY
+
+MOD137:	CLEAN
+	MOVE	[BLKO ME,0]	;SETUP A BLKO TO SET
+	MOVEM	42		;THE PI OV FLOP
+	SETO
+	CONO	PI,ACT+PIREQ+100	;CAUSE FIRST INTERRUPT
+	SETZ			;PI SHOULD SET AT THIS
+	CLEAN			;TIME, IF PI OV IS NOT
+	CONO	PI,ACT+PIREQ+100	;CLEARED AT ST1 NEXT INTERRUPT
+	CAIN	43		;WILL OCCUR AT LOC 43
+	STOP			;SET PI 1 PRINT.
+
+MOD140:	CLEAN
+	MOVE	[BLKO ME,0]	;PUT A BLKO IN LOC 42
+	MOVEM	42		;WHEN EXECUTED THIS SHOULD
+	SETO			;SET PIOV. IF PI OV IS NOT
+	CONO	PI,ACT+PIREQ+100	;CONNECTED TO MA REGISTER
+	ANDI	-1		;42 WILL BE EXECUTED TWICE
+	CAIN	1		;SEE MA 35 SET AT IT0
+	STOP			;AND PI OV(1) ON MA1 PRINT
+
+MOD141:	CLEAN			;CHECK BLKO NOT RESET PIH
+	MOVE	[MOVEI 42]	;RESTORE LOC 42
+	MOVEM	42		;TO MOVEI
+	CONO	PI,PIREQ+ACT+100	;SET PIH VIA INTERRUPT
+	SETZ			;IF PIH1(0) THEN PI CYC(1)
+	BLKO	ME,0		;INPUT TO PI RESTORE FAILED
+
+	CAI
+	CONSO	PI,40000		;SET PI1 PRINT
+	STOP
+
+MOD142:	CLEAN			;CHECK PI RESTORE LOGIC
+	MOVE	[DATAO ME,0]	;DATAO AND PIOV SHOULD PRODUCE
+	MOVEM	42		;PI RESTORE. CHECK THIS INPUT
+	CONO	PI,PIREQ+ACT+100	;TO PI RESTORE ON PI1 PRINT
+	CONSZ	PI,40000		;ALSO CHECK PI CYC(1) INPUT
+	STOP			;ON SAME PAGE
+
+MOD143:	CLEAN
+	MOVE	[DATAI ME,0]	;IF MACHINE HANGS OR
+	MOVEM	42		;PIH(1) CHECK DATAO/DATAI
+	CONO	PI,PIREQ+ACT+100	;INPUT TO PRIORITY SYSTEM
+	CONSZ	PI,40000		;SEE PI1 PRINT (LOWER LEFT)
+	STOP
+
+MOD144:	CLEAN
+	MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
+	MOVEM	42		;POINTER SHOULD SET PIOV. THE
+	SETO			;INST AT LOC 43 A (MOVEI 43)
+	CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
+	CONSO	PI,40000	;PI OV AND ASSOCIATED LOGIC
+	STOP			;ON PI1 PRINT
+
+MOD145:	CLEAN
+	MOVE	[BLKO ME,0]	;INTERRUPT TO A BLKO WHOS
+	MOVEM	42		;POINTER SHOULD SET PIOV. THE
+	SETO			;INST AT LOC 43 A (MOVEI 43)
+	CONO	PI,PIREQ+ACT+100	;SHOULD BE EXECUTED. CHECK
+	CAIE	43		;CHECK PI OV INPUT TO MA35
+	STOP			;SET ON MA1 PRINT
+
+MOD147:	CLEAN			;TEST PI CYC(0) GET TO PIR STB
+	MOVE	[BLKO ME,0]	;PUT A BLKO WITH POINTER TO
+	MOVEM	44		;SET PI OV IN CHANNEL 2 BLKO
+	MOVE	[MOVEI 1,42]	;WILL SET NONEX MEM CAUSING
+	MOVEM	42		;INTERRUPT ON CH1 THE INSTRUCTION
+	HRROI	-2		;AT LOC 45 MUST BE EXECUTED
+	CONO PI,PIOSET+100
+	CONO	1		;OR PI CYC(0) GATE TO PIR STB FAILED
+	CONO PI,PIREQ+ACT+40
+	CAIE	45		;AND OF MC RQ PULSE PICYC(0)
+	STOP
+	CAIE	1,42
+	STOP			;NONEX FAIL TO INTERRUPT CH1
+
+MOD148:	CLEAN			;PUT A SKIPA IN THE
+	MOVE	[SKIPA]		;INTERRUPT SPOT
+	MOVEM	42
+	CONO	PI,PIREQ+ACT+100
+	STOP
+
+MOD149:	CLEAN
+	MOVE	[JSR .+4]
+	MOVEM	42
+	CONO	PI,PIREQ+ACT+100
+	STOP
+	0
+
+MOD150:	CLEAN			;INTERRUPT TO A PUSHJ
+	MOVE	[PUSHJ .+4]
+	MOVEM	42
+	MOVSI	-1
+	CONO	PI,ACT+PIREQ+100
+	ANDI	1,-1
+	CAIE	1,.-1
+	STOP			;PC STORED INCORRECTLY
+	CAIE	1		;THE PUSHJ
+	STOP			;POINTER WORD IN ERROR
+	CLEAN
+MOD151:	CLEAN
+	MOVE [MOVEI 43]		;TEST CLEAR MA ON INTERRUPT
+	MOVEM 43
+	MOVE [BLKO ME,4]
+	MOVEM 42
+	SETOB 4
+	HRRI 4,4
+	CONO PI,PIREQ+ACT+100
+	CAIE 43
+	STOP
+
+
+MOD152:	SETZM	60		;TEST TRAP TO 60
+	MOVE	[JSP MOD153]	;GO HERE IF TRAP TO 40
+	MOVEM	41		;ERROR
+	MOVE	[JSP MOD153+1]
+	MOVEM	61		;OK TRAP
+	XWD	100000,0	;OP CODE 100-127
+	STOP
+MOD153:	STOP
+	SKIPN	60		;NOTHING STORED IN C(60)
+	STOP
+
+MOD154:	SKIPN	USMOD#		;TEST RELOC IF SPECIFIED
+	JRST	MOD195
+
+DEFINE	UMON<
+	CONO	634440		;PREPARE TO TURN ON USER
+	CONO	PI,10000	;MODE. CL PI, IOB, RELOC
+	DATAO	[XWD -1,0]>
+
+DEFINE	UMOFF<
+	MOVE	[JSP .+3]	;TURN OFF USER MODE VIA
+	MOVEM	41		;UUO. PROG RETURNS TO END
+	XWD	040000,0	;OF MACRO. PC+FLAGS STORED .+1
+>
+
+DEFINE	HOLD<
+	JUMPA	.		;MACH ERROR. HALT MAY TRAP
+	JUMP	.+1		;SO WAITING FOR OPERATOR
+>
+
+MOD160:	JRST	2,@[XWD 0,.+1]	;CLEAR EX IOT USER, IF LIGHT
+	JSP	.+1		;OUT FLAG TRANSFER TO AR FAIL
+
+	TLNE UMIOT		;BIT 6. OR FLOP FAIL TO CLEAR
+	STOP
+
+	JRST	2,@[XWD UMIOT,.+1]	;SET THEN CLEAR EX IOT USER
+	JRST	2,@[XWD 0,.+1]	;CK AND GATE ARF FLAGS FM BR (J),
+	JSP	.+1		;BR6(0) FAIL TO CLEAR
+
+	TLNE UMIOT		;EX IOT USER ON EX PRINT
+	STOP
+
+	JRST	2,@[XWD 0,.+1]	;CLEAR THEN SET EX IOT USER
+	JRST	2,@[XWD UMIOT,.+1]	;IF LIGHT=1 FLAGS TO AR FAIL
+	JSP	.+1		;IF LIGHT=0 FLOP FAIL TO SET. CK
+	TLNN	UMIOT		;BR6(1), EX USER(0), ARF FLAGS(J), EX PRINT
+	STOP
+
+	JRST	2,@[XWD 0,.+1]	;CLEAR USER. IOB1 PRINT
+	CONSZ	1B20		;READ PROCESSOR STATUS
+	STOP
+
+	JRST	2,@[XWD UMIOT,.+1]	;SET USER IOB1 PRINT
+	CONSO	1B20		;CPA STATUS FAIL
+	STOP
+
+MOD161:	UMOFF
+	TLNE	USERF		;FLAGS TO AR BIT5 (USER MODE) FAIL
+	HOLD
+
+;TRY TO TURN ON USER MODE VIA RESTORE FLAGS THEN
+;TURN OFF VIA UU0. SEE EX PRINT
+
+MOD162:	MOVE	[JSP	MD162A]
+	MOVEM	41
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,MD162B]	;ALSO PRIVI IO
+
+MD162A:	HOLD			;TRAP HERE, NO MEMORY ACCESS, USER MODE
+
+MD162B:	UMOFF
+	TLNN	USERF		;JSP STORED FLAGS IN C(0)
+	HOLD
+
+;TEST UUO TURN OFF OF USER MODE. PRIVI I/O ALLOWS
+;IOT TO OCCUR IN CASE USER STILL ON. SEE EX PRINT
+
+MOD163:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	UMOFF
+	UMOFF
+	TLNE	USERF		;FLAGS STORED VIA JSP AT 41
+	HOLD
+
+MOD164:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;SET USER+PRIV I/O
+	MOVE	[JUMPA .+3]	;SET RETURN FOR THE
+	MOVEM	41		;UUO. EX ILL OP SHOULD
+	XWD	40000,0		;NOT TURN OFF USER FLAG
+	JSP	.+1		;BECAUSE AR FM PC(J)(ET0)
+	TLNN	USERF		;PULSE IF NOT PRESENT. SEE EX
+	HOLD
+	UMOFF
+
+;PERFORM A UUO. THE PURPOSE OF THIS IS TO SET THE
+;EX ILL OP FLOP.  THE FLOP SHOULD BE CLEARED BY THE
+;JSP AT 41. IF HOWEVER THIS DID NOT OCCUR, ANY
+;STORE PC INSTRUCTION IN USER MODE WOULD CLEAR
+;USER MODE.  THIS TEST THEREFORE TEST THE CLEAR
+;TO EX ILL OP VIA AR FM PC(J) (ET0) ON EX PRINT
+
+MOD165:	UMOFF
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	JSP	.+1		;DONT FORGET FAIL TO CLEAR
+	JSP	.+1		;MAY BE PHONEY SET EX ILL OP
+	TLNN	USERF		;OR PHONEY CLEAR EX-USER
+	HOLD
+	UMOFF
+
+MOD166:	UMOFF
+	UMON
+	JRST	1,.+1		;SET USER MODE VIA ET0
+	JSP	.+1		;IR JRST, IR12(1). IT FAILED
+	TLNN	USERF		;REPLACE B135 ON EX PRINT
+	HOLD
+	UMOFF
+
+;THIS TEST WILL TRY TO SET THE PRIV I/O BIT WHEN IN
+;USER MODE. IF THE EX IOT USER FLOP SETS EX USER (0) INPUT
+;TO THE FLAG FAILED  SEE EX PRINT
+
+MOD167:	UMON
+	JRST	2,@[XWD USERF,.+1]	;SET USER
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;TRY TO SET PRIV I/O
+	JSP	.+1
+	TLNE	UMIOT
+	HOLD
+	UMOFF
+
+MOD170:	UMON
+	JRST	2,@[XWD USERF,.+1]	;SET USER MODE
+	MOVE	[JSP .+4]		;SET TRAP RETURN
+	MOVEM	41			;1 PAST THE IOT INST
+	SETZM	40			;FAIL TO TRAP. EX ALLOW IOT
+	XWD	700000,0		;ALLOWED THE IOT IN USER
+	SKIPN	40			;MODE. SEE EX PRINT
+	HOLD
+	UMOFF
+
+MOD171:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;SET PRIVI+USER
+	MOVE	[JSP .+4]		;SET TRAP RETURN 1 PAST
+	MOVEM	41			;THE TRAP INST
+	SETZB	40			;THE EX IOT USER FLOP
+	XWD	700000,0		;SHOULD ALLOW THE IOT
+	CAI
+	SKIPE	40			;CHECK EX ALLOW IOT. EX PRINT
+	HOLD
+	UMOFF
+
+MOD172:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;USER AND PRIV I/O
+	MOVE	[JSP .+3]		;THEN CAUSE A PI REQUEST
+	MOVEM	42			;PI CYC(1) SHOULD SET EX PI SYNC
+	CONO	PI,ACT+PIREQ+100	;WHICH SHOULD CLEAR EX USER
+	JSP	.+1			;AT ET1 OF JSP AT 42. IT
+	TLNE	USERF			;FAILED. SEE EX PRINT
+	HOLD
+
+;THIS TEST WILL INSURE THAT EX ILL OP IS CLEARED
+;BY IOT BLK.  THIS LOGIC IS NECESSARY FOR RETURNING TO
+;THE PROPER RELOCATION WHEN A UUO IS INTERRUPTED AND
+;MUST BE RE EXECUTED.
+
+
+MOD173:	MOVE [JUMPA .+3]
+	MOVEM 41
+	XWD 040000,0		;PERHAPS TURN OFF USER MODE
+	SETZ			;PREVIOUS UUO SET EX ILL OP
+	BLKI			;THIS IOT SHOULD CLEAR IT
+	CAI
+	JRST 2,@[XWD USERF,.+1]	;NOW ENTER USER MODE IF
+	JSP	.+1		;EX ILL OP SET JSP WILL CLEAR
+	JSP	.+1		;EX USER FLAG.  SEE EX PRINT
+	TLNN	USERF
+	HOLD
+	UMOFF
+
+MOD174:	UMON
+	JRST	2,@[XWD USERF,.+1]
+	MOVE	[JSP .+4]	;SET RETURN
+	MOVEM	41		;SEE IR2 PRINT
+	SETZM	40		;IR JRST A IR10(1)
+	HALT	.		;THIS HALT SHOULD TRAP
+	SKIPN	40		;BUT DID NOT
+	HOLD
+	UMOFF
+
+MOD175:	UMON
+	JRST	2,@[XWD USERF,.+1]
+	MOVE	[JSP .+4]	;SET RETURN
+	MOVEM	41		;SEE IR2 PRINT
+	SETZM	40		;THE ENABLE PI SHOULD
+	JEN	.+1		;TRAP TO 40
+	SKIPN	40		;BUT DID NOT
+	HOLD
+	UMOFF
+
+MOD176:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	MOVE	[JSP .+4]	;SET PRIVI IO BIT
+	MOVEM	41		;THIS SHOULD PREVENT JRST IO,
+	SETZM	40		;FROM TRAPPING. SEE IR UUO
+	JRST	10,.+1		;ON IR2 PRINT
+	SKIPE	40
+	HOLD
+	UMOFF
+
+MOD177:	UMON
+	JRST	1,.+1		;SEE IF JUST A PLAIN
+	MOVE	[JSP .+4]	;JRST WILL TRAP
+	MOVEM	41		;SEE IR2 PRINT FOR
+	SETZM	40		;DECODE IR-UUO
+	JRST	.+1
+	SKIPE	40
+	HOLD
+	UMOFF
+
+MOD178:	UMON
+	JRST	1,.+1		;SEE IF IR 9+10 WITH OUT
+	MOVE	[JSP .+4]	;A JRST WILL TRAP
+	MOVEM	41		;SEE IR UUO ON IR-2 PRINT
+	SETZM	40
+	JFCL	14,.+1
+	SKIPE	40
+	HOLD
+	UMOFF
+
+;CHECK THAT AN IOT AT INTERRUPT LEVEL WILL NOT LOOK
+;LIKE A UUO SEE IR-2 PRINT
+
+MOD179:	UMON
+	CONO	1
+	MOVE	[BLKI]
+	MOVEM	42
+	MOVE	[JSP M179+1]
+	MOVEM	41
+	SETZB	40
+	MOVE [JSP M179]
+	MOVEM 43
+	SETO
+	CONO	PI,ACT+PIOSET+100
+	JRST	1,.+1
+	CAM	-1
+M179:	SKIPE	40
+	HOLD
+	UMOFF
+
+MODXX1:	UMON			;TEST TRAP (60) TURN OFF OF
+	MOVE	[JSP .+5]	;USER MODE
+	MOVEM	61
+	JRST	1,.+1
+	XWD	100000,0	;OP CODE 100
+	HOLD			;IT FAILED TO TRAP
+	JSP	.+1		;IT SHOULD ALSO
+	TLNE	USERF		;TURN OFF USER MODE
+	HOLD
+
+MODXX2:	UMON
+	MOVE	[JSP .+4]	;TEST IR TO C(40)
+	MOVEM	41		;FOR BITS 1,2,3
+	JRST 2,@[XWD USERF,.+1]
+	XWD	700000,0	;AN IOT
+	MOVE	40
+	CAME	[XWD 700000,0]
+	HOLD
+
+MOD180:	UMON
+	DATAO	[0]		;GET RID OF PROTECT REG
+
+	CONO 1
+	CONO PI,ACT+PIOSET+100
+	MOVE [JSP M180]
+	MOVEM 42
+	MOVE [JSP .+4]
+	MOVEM 41
+	JRST	2,@[XWD USERF+UMIOT,.+1]	;ENABLE USER
+	JUMPA .			;THIS INST SHOULD SET PROT
+M180:	CONSO	PROT		;HERE IF FLAG FAIL
+	HOLD
+	CONSZ	NONEX		;NEVER NON EX WITH PROT
+	HOLD
+	CONO	1B22		;FAIL TO CLEAR PROT
+	CONSZ	PROT		;FLAG SEE CPA PRINT
+	HOLD
+
+DEFINE	EXCT	(A) <
+	MOVE	[JSP .+3]	;EXECUTE A UUO
+	MOVEM	41		;AND STORE FLAGS
+	XWD	A,0		;IN AC0.
+>
+;CHECK UUO 0 TRAPING TO EXEC MODE AND UUO 1-37
+;NOT TRAPING TO EXEC MODE...1P19 ON EX CONTROL PRINT.
+
+MOD18A:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	0
+	EXCT	0
+	TLNE	USERF		;USER MODE ON?..CK 1P19 EX CONT PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	1000
+	TLNN	USERF		;CK BIT 8 INPUT TO 1P19 EX CONTROL PRINT.
+	HOLD
+
+
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	2000
+	TLNN	USERF		;CK BIT 7 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	4000
+	TLNN	USERF		;CK BIT 6 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	10000
+	TLNN	USERF		;CK BIT 5 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+
+	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	EXCT	20000
+	TLNN	USERF		;CK BIT 4 INPUT TO 1P19 EX CONTROL PNT.
+	HOLD
+
+	UMON
+	JRST	2,@[XWD USERF,.+1]
+	MOVE	0,[JSP .+3]
+	MOVEM	0,41
+	XWD 700000,0		;XCT AN IOT.
+	JSP	.+1		;GET FLAGS.
+	TLNE	0,USERF		;USER MODE STILL ON?
+	HOLD			;YES. CK EX NON REL UUO
+				;EX PRINT.
+
+MOD181:	MOVE 10040		;SAVE THESE LOC
+	SKIPN SAV40
+	MOVEM SAV40
+	MOVE 10041
+	SKIPN SAV41
+	MOVEM SAV41
+	MOVE 10042
+	SKIPN SAV42
+	MOVEM SAV42
+	MOVE 10043
+	SKIPN SAV43
+	MOVEM SAV43
+	JRST	.+5
+SAV40:	0
+SAV41:	0
+SAV42:	0
+SAV43:	0
+
+;TEST THE SETTING OF PROTECT FLAG BY MOVING A
+;TWO INST PROG TO AC 1+2 PROG IS CAM X AND UU0
+;WITH TRAP SET TO REAL WORLD THE CAM SHOULD TEST
+;THE PROT FLAG
+
+X=2000
+
+DEFINE	LAC	(A)<
+	UMON
+	DATAO	[0]
+	MOVE	1,[CAM A]
+	MOVSI	2,40000
+
+	CONO PI,ACT+PIOSET+100
+	CONO 1
+	MOVE [JSP .+5]
+	MOVEM 42
+	MOVE	[JSP .+3]
+	MOVEM	41		;SET TRAP RETURN
+	JRST	1,1		;TURN ON USER MODE
+	CONSO	PROT		;THE PROT FLAG SHOULD BE SET
+	HOLD
+	CONSZ	NONEX
+	HOLD
+>
+MOD182:	REPEAT	10,<
+	LAC	X
+	X=X+X>
+
+MOD185:	SETZM	40		;TEST FOR TRAP TO REAL LOC 40
+	MOVE	[JSP MOD186-1]	;NOT RELOCATED 40
+	MOVEM	41		;SETUP TRAP FOR OK
+	DATAO	[XWD -1,10000]
+	MOVE	[JSP MOD186]	;SETUP TRAP FOR ERR
+	MOVEM	10041
+	JRST	1,.+1-10000	;IF THE UUO TRAPS TO
+	XWD	40000,0		;RELOCATED 40 PROG WILL HOLD
+	SKIPN	40		;AT THIS POINT
+
+MOD186:	HOLD
+	JSP	.+1		;IF USER MODE STILL ON
+	TLNE	USERF		;THEN WAIT HERE
+	HOLD
+
+;TEST FOR INTERRUPT TO REAL PI (NOT RELOCATED)
+MOD190:	UMON
+	MOVE	[JSP MOD191]	;SET ERROR PI RET
+	MOVEM 10042
+	MOVE	[JSP MOD191+1]	;SET OK PI
+	MOVEM 42
+	DATAO [XWD -1,10000]
+	JRST 2,@[XWD USERF+UMIOT,.+1-10000]
+	CONO	PI,ACT+PIREQ+100	;SHOULD INTERRUPT
+	HOLD
+MOD191:	HOLD
+	UMOFF
+;TEST FOR NOT RELOCATION OF AC'S
+MOD192:	SETZM	5
+	UMON
+	MOVE [JSP M192]
+	MOVEM 41
+	DATAO [XWD -1,10000]
+	JRST 1,.+1-10000
+	MOVEI	5,12345
+	XWD 040000,0		;UUO TO TERM USER MODE
+M192:	CAIE	5,12345
+	HOLD
+MOD195:	SKIPE	FPTRAP		;SEE IF SWITCH SAYS FP
+	JRST MOD196
+	MOVE [JSP .+3]		;TEST THE ABILITY TO
+	MOVEM 61		;TRAP A FP INST
+	FADRI -1		;THIS INST SHOULD TRAP
+	MOVE 2,.-1		;FAIL TO TRAP PROPERLY
+	CAME 2,60
+	STOP
+	JRST MOD197		;WHAT ABOUT SWITCHS
+MOD196:	MOVE [JSP .+4]		;TEST FOR FP NOT TRAP
+	SETZM 60
+	MOVEM 61		;SET RETURN
+	FADRI -1
+	SKIPE 60		;DOES MACH HAVE FP
+	STOP
+;CHECK BYT7A SETING BYF6.
+MOD19X:	CONO	635550		;CLR THE WORLD.
+	MOVE	[JSP MOD19B]
+	MOVEM	42		;SETUP FOR INT ON CH # 1.
+	CONO	PI,12300	;SETUP PI.
+	MOVE	1,POINTR	;PUT POINTER INTO AC1.
+	CONO	1000		;CLR CLOCK FLAG.
+	CONSO	1000		;WAIT FOR
+	JRST	.-1		;CLOCK FLAG.
+	CONO	3001		;SET INT ENABLE AND PI 35 AND CLR CLK FLG.
+	ILDB	0,1		;SHOULD STAY IN INDIRECT LOOP.
+MOD19B:	CONSO	1000		;CLK FLG INT?
+	HOLD
+	TLNN	0,20000		;BYF6 FLAG SET? NO..CK BYT7A ON BYTE PRINT.
+	HOLD
+	JSP	.+1		;CAUSE ARLT FM FLAGS(J)A.
+	TLNE	0,20000		;CK BYTE PRINT.
+	HOLD
+
+	JRST	MOD197
+
+POINTR:	XWD 440720,1
+;CK TO SEE THAT UUO 0 TRAPS TO 141.
+MOD200:	UMON
+	JRST	2,@[XWD USERF+UMIOT,.+1]
+	MOVE	[JSP .+5]
+	MOVEM	41
+	AOJ
+	MOVEM	141
+	0
+	HOLD			;UUO 0 TRAPED TO 40. CK 2L44 ON MA CONTROL PRINT.
+	TLNN	USERF		;USER MODE GET CLR?..CK 1P19 ON EX CONT PNT.
+	HOLD
+;CK TO SEE THAT UUO 37 TRAPS TO 41.
+
+	UMON
+	JRST	2,@[XWD USERF + UMIOT, .+1]
+	MOVE	[JSP .+5]
+	MOVEM	141
+	AOJ
+	MOVEM	41
+	037000000000
+	HOLD			;UUO 37 TRAPPED TO 141, CK 2L44 ON MA CONTROL PRINT.
+
+
+;CK TO SEE THAT AN INTERRUPT ON CH # 1 TRAPS TO 142.
+
+	MOVE	[MOVEI 142]
+	MOVEM	142
+	CONO	634440		;CLR THE WORLD.
+	SETZ	0,
+	CONO	PI,10000	;CLR PI.
+	CONO	PI,ACT+PIREQ+100;CAUSE INT.
+	CAIE	0,142		;CK 2K44 ON MA CONTROL PRINT.
+	HALT
+
+	SETOM	MATPOF		;SET FLG SO KNOW IN THIS ROUTINE.
+
+
+MOD197:	JRST	BEGEND		;REPEAT DIAGNOSTIC
+
+;DIAGNOSTIC STORAGE
+
+	LIT
+
+	VAR
+
+LAST:	JRST	4,BEGIN
diff --git a/apps/pdp10/diags/klad/dakah/DAKAHT.MAC.txt b/apps/pdp10/diags/klad/dakah/DAKAHT.MAC.txt
new file mode 100644
index 000000000..3b55b5def
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakah/DAKAHT.MAC.txt
@@ -0,0 +1,117 @@
+;DAKAH
+
+
+
+	DECVER==2
+	MCNVER==0
+
+	XLIST
+DEFINE	NAME	(MCNVER,DECVER)<
+
+TITLE	DAKAH PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC (8) MCNVER,DECVER
+>
+	LIST
+	LALL
+	NAME	\MCNVER,\DECVER
+
+;TEST DESIGNED FOR INITIAL DEBUGGING OF PROCESSOR HARDWARE
+;AND TO DETECT (SOLID) FAILURES IN THE FIELD.
+
+;COPYRIGHT 1972,1977
+;DIGITAL EQUIPMENT CORPORATION
+;MARLBORO, MASS. 01752
+
+;JOHN R. KIRCHOFF
+
+	LOC	137
+	MCNVER,,DECVER
+
+	NOSYM
+SUBTTL	DIAGNOSTIC PARAMETERS
+
+;CONTROL WORDS
+
+EXIOT=4000		;USER PRIV I/O FLAG
+USERF=10000		;USER MODE FLAG
+
+DACT=400
+ME=774
+PIG0=2377
+PIH1=40000
+PIH2=20000
+PIH3=10000
+PIH4=4000
+PIH5=2000
+PIH6=1000
+PIH7=400
+PIOSET=2000
+PIOCLR=1000
+PIREQ=4000
+ACT=200
+PROT=20000
+NONEX=10000
+UMIOT=4000
+;SUBROUTINE DEFINITIONS
+
+SADR1=START
+SADR2=START
+SADR3=START
+SADR4=START
+SADR5=START
+SADR6=START
+SADR7=JRST START
+SADR8=JRST START
+SADR9=JRST START
+SADR10=JRST START
+SADR11=JRST START
+PAREA1=0
+PAREA2=0
+PAREA3=0
+PAREA4=0
+PAREA5=0
+PAREA6=0
+ITERAT=1
+EXCASB==1
+PGMEND==1
+
+;MACROS
+
+;STOP -	USED FOR SCOPE LOOP, IF INSTRUCTION FAILS, CHANGE (JUMP .+1)
+;	TO A (JUMP .-X) TO CYCLE ON FAILING INSTRUCTION.
+
+DEFINE	STOP	(A)<
+	HALT	.+1
+	JUMP	.+1
+				>
+
+;SFLAG - USED TO CLEAR ALL FLAGS THEN TO SET REQUESTED
+;	 FLAG FOR TESTING.
+
+DEFINE	SFLAG	(A)<
+	MOVSI	1,A
+	JFCL	17,.+1
+	JRST	2,.+1(1)
+				>
+
+;CHANEL - USED FOR 2 CHANNEL SYSTEM CHECK
+
+DEFINE	CHANEL	(A)<
+	SKIPN	PI7SYS#
+	JRST	A
+				>
+
+;RETURN - USED TO SETUP UUO TRAP
+
+DEFINE	RETURN	(A)<
+	MOVE	2,[JSP 2,A]
+	MOVEM	2,41
+	SETOB	2,40
+				>
+
+;CLEAN - USED TO CLEAR THE PROCESSOR EXCEPT CLOCK
+;	CLEAR DEVICES AND PI SYSTEM
+
+DEFINE	CLEAN	(A)<
+	CONO	634440
+	CONO	PI,10000
+				>
diff --git a/apps/pdp10/diags/klad/dakah/README.md b/apps/pdp10/diags/klad/dakah/README.md
new file mode 100644
index 000000000..0fe783a9c
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakah/README.md
@@ -0,0 +1,279 @@
+---
+layout: page
+title: PDP-10 KA10 Basic Instruction Diagnostic #8
+permalink: /apps/pdp10/diags/klad/dakah/
+machines:
+  - id: testka10
+    type: pdp10
+    config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
+    debugger: true
+    commands: a 30724 DAKAH.MAC
+---
+
+PDP-10 KA10 Basic Instruction Diagnostic #8
+-------------------------------------------
+
+The *PDP-10 KA10 Basic Instruction Diagnostic #8* (MAINDEC-10-DAKAH) test code has been extracted from
+[DAKAHM.MAC](DAKAHM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakahm.mac.html)]
+for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
+
+Resources for this test include:
+
+- [Instructions](#dakahtxt)
+- [History](#dakahhst)
+- [Source Code](#dakahmac)
+- [MACRO-10 Listing](DAKAH.LST.txt)
+- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakah/DAKAH.SEQ.txt)
+
+{% include machine.html id="testka10" %}
+
+The Debugger's assemble ("a") command can be used to test the new built-in
+[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset
+of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
+This command:
+
+	a 30724 DAKAH.MAC
+
+will automatically read the [DAKAH.MAC](DAKAH.MAC.txt) source file (a slightly modified copy of [DAKAHM.MAC](DAKAHM.MAC.txt)),
+assemble it, and then load the binary output at the specified address.
+
+---
+
+DAKAH.TXT
+---------
+
+```
+MAINDEC-10-DAKAH.TXT
+
+
+
+
+
+
+ 
+			IDENTIFICATION
+			--------------
+
+	PRODUCT CODE:   MAINDEC-10-DAKAH-B-D
+
+	PRODUCT NAME:   DECSYSTEM10 PDP-10 KA10 BASIC
+	                INSTRUCTION DIAGNOSTIC (8)
+
+	FUNCTION:       PI, INTERRUPTS, LUUO'S, I/O
+
+	VERSION:        0.2
+
+	DATE RELEASED:  JANUARY 1977
+
+	MAINTAINED BY:  DIAGNOSTIC ENGINEERING GROUP
+
+	AUTHOR:         JOHN R. KIRCHOFF
+
+COPYRIGHT(C) 1976,1977
+DIGITAL EQUIPMENT CORPORATION
+MARLBORO, MASS. 01752
+
+THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
+ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
+THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,
+OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
+MADE AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM
+AND TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE TO AND
+OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
+
+THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
+NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
+EQUIPMENT CORPORATION.
+
+DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
+SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
+
+							MAINDEC-10-DAKAH.TXT
+							PAGE 2
+
+
+			TABLE OF CONTENTS
+			-----------------
+
+1.0	ABSTRACT
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+2.2	STORAGE
+
+2.3	PRELIMINARY PROGRAMS
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+3.2	STARTING PROCEDURE
+
+3.3	OPERATING PROCEDURE
+
+4.0	ERRORS
+
+5.0	ITERATION COUNTER
+
+6.0	CYCLE TIME
+
+7.0	OPERATIONAL VARIATIONS
+
+8.0	MISCELLANEOUS
+
+9.0	LISTING
+
+							MAINDEC-10-DAKAH.TXT
+							PAGE 3
+
+
+1.0	ABSTRACT
+
+	THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
+	EIGHTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
+	THE DIAGNOSTIC TESTS THE PI SYSTEM, INTERRUPTS, LUUO'S
+	AND INPUT/OUTPUT.
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+	A PDP-10 KA10 WITH A MINIMUM OF 32K OF MEMORY
+
+	PAPER TAPE READER 
+	DECTAPE (OPTIONAL)
+	CONSOLE TELETYPE
+
+2.2	STORAGE
+
+	THE PROGRAM RUNS WITHIN 32K OF MEMORY.
+
+2.3	PRELIMINARY PROGRAMS
+
+	CONSOLE FUNCTIONS WORKING PROPERLY
+	PAPER TAPE OR DECTAPE READ-IN WORKING PROPERLY 
+	PREVIOUS PROCESSOR DIAGNOSTICS
+	
+							MAINDEC-10-DAKAH.TXT
+							PAGE 4
+
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+	PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
+	DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)
+
+3.2	STARTING PROCEDURE
+
+	STAND-ALONE STARTING ADDRESS IS 30000.
+
+	IF THE DIAGNOSTIC FAILS TO START CORRECTLY TRY STARTING AT THE
+	FIRST TEST INSTEAD OF AT THE BEGINNING OF THE CONTROL SEQUENCE.
+	(SEE LISTING).
+
+3.3	OPERATING PROCEDURE
+
+	ONCE STARTED THE PROGRAM WILL CYCLE CONTINUALLY UNTIL STOPPED
+	OR AN ERROR OCCURS.
+
+4.0	ERRORS
+
+	ERRORS ARE IN THE FORM OF HALT INSTRUCTIONS.  THE LISTING
+	SHOULD BE CONSULTED TO DETERMINE THE CAUSE OF THE ERROR.  A
+	NO OPERATION (JUMP) INSTRUCTION FOLLOWS EACH HALT.  THIS
+	MAY BE USEFUL IN CONSTRUCTING A SCOPE LOOP TO CYCLE ON THE
+	FAILING INSTRUCTION.
+
+5.0	ITERATION COUNTER
+
+	THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEM-
+	ORY INDICATORS (MI).  THIS COUNT IS A DECREMENTING COUNT AND
+	INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.
+
+6.0	CYCLE TIME
+
+	THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND
+	IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS, ETC.
+
+							MAINDEC-10-DAKAH.TXT
+							PAGE 5
+
+
+7.0	OPERATIONAL VARIATIONS
+
+	A.  DIAGNOSTIC MONITOR
+
+	    THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PRO-
+	    VIDE RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PRO-
+	    VIDE A QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR
+	    AREA OF THE PROCESSOR.  CERTAIN PROCEDURES ARE USED WHEN
+	    THE PROGRAM IS USED IN THIS MANNER.  THEY ARE:
+
+	    1.  THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PRO-
+		GRAM AND STARTS IT AT LOCATION 30002.
+
+	    2.  MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MON-
+		ITOR CONTROL FLAG WORD.
+
+	B.  USER MODE
+
+	    THE PROGRAM WILL OPERATE IN USER MODE AND AS SUCH PROVIDES
+	    ASSURANCE THAT THE PROCESSOR IS PERFORMING ALL FUNCTIONS
+	    CORRECTLY.  USER MODE STARTING ADDRESS IS 30000.
+
+	C.  SYSTEM EXERCISER
+
+	    STARTING ADDRESS IS 30003.  NO DATA SWITCHES ARE USED BY
+	    THIS PROGRAM.
+
+8.0	MISCELLANEOUS
+
+	NONE
+
+9.0	LISTING
+```
+
+DAKAH.HST
+---------
+
+	    THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAH
+	
+	************************************************************************
+	
+	PRODUCT CODE:       MAINDEC-10-DAKAH
+	
+	PRODUCT NAME:       BASIC INSTRUCTION DIAGNOSTIC #8
+	
+	DATE RELEASED:      JANUARY 1977
+	
+	VERSION:            0.2
+	
+	UPDATE AUTHOR:      JOHN R. KIRCHOFF
+	                    EDWARD G. PRENTICE
+	
+	CHANGES MADE:
+	
+	    1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE.
+	
+	************************************************************************
+	
+	ORIGINAL VERSION:   0.1
+	
+	ORIGINAL AUTHOR:    RICHARD MALISKA
+	
+	ORIGINAL RELEASE:   16-MAR-72
+	
+	************************************************************************
+
+DAKAH.MAC
+---------
+
+[[Download](DAKAH.MAC.txt)]
+ 
+{% highlight text %}
+{% include_relative DAKAHM.MAC.txt %}
+{% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakai/DAKAI.LST.txt b/apps/pdp10/diags/klad/dakai/DAKAI.LST.txt
new file mode 100644
index 000000000..9d96317f0
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakai/DAKAI.LST.txt
@@ -0,0 +1,16210 @@
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 1
+DAKAIT	MAC	20-JAN-77 10:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0011
+
+     1					;DAKAI
+     2
+     3			000000			MCNVER==0
+     4			000002			DECVER==2
+     5
+     6
+     7						XLIST
+     8						LIST
+     9						LALL
+    10
+    11						NAME	\MCNVER,\DECVER^
+    12
+    13					TITLE	DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2
+    14					^
+    15
+    16					;(LOGICAL SHIFT, ROTATE, ARITHMETIC SHIFT; SINGLE AND COMBINED)
+    17
+    18					;COPYRIGHT 1975,1977
+    19					;DIGITAL EQUIPMENT CORPORATION
+    20					;MARLBORO, MASS. 01752
+    21
+    22					;JOHN R. KIRCHOFF
+    23
+    24	000137					LOC	137
+    25	000137	000000	000002			MCNVER,,DECVER
+    26
+    27						NOSYM
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 2
+DAKAIT	MAC	20-JAN-77 10:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0012
+
+    28					SUBTTL	DIAGNOSTIC PARAMETERS
+    29
+    30					;OPERATOR DEFINITIONS
+    31
+    32		001000	000000		OPDEF	ER1	[1B8]
+    33		002000	000000		OPDEF	ER2	[2B8]
+    34		003000	000000		OPDEF	ER3	[3B8]
+    35		004000	000000		OPDEF	ER4	[4B8]
+    36		005000	000000		OPDEF	ER5	[5B8]
+    37		006000	000000		OPDEF	ER6	[6B8]
+    38		007000	000000		OPDEF	ER7	[7B8]
+    39		010000	000000		OPDEF	ER10	[10B8]
+    40		011000	000000		OPDEF	ER11	[11B8]
+    41		012000	000000		OPDEF	ER12	[12B8]
+    42		013000	000000		OPDEF	ER13	[13B8]
+    43
+    44			041423		LUUO1=ERRMES
+    45			041423		LUUO2=ERRMES
+    46			041423		LUUO3=ERRMES
+    47			041423		LUUO4=ERRMES
+    48			041423		LUUO5=ERRMES
+    49			041423		LUUO6=ERRMES
+    50			041423		LUUO7=ERRMES
+    51			041423		LUUO10=ERRMES
+    52			041423		LUUO11=ERRMES
+    53			041423		LUUO12=ERRMES
+    54			041423		LUUO13=ERRMES
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 3
+DAKAIT	MAC	20-JAN-77 10:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0013
+
+    55					;SUBROUTINE ASSEMBLY DEFINITIONS
+    56
+    57			000001		KLOLD==1
+    58			000040		DEBUG=40
+    59			000001		EXCASB=1
+    60			000001		USRASB=1
+    61			000001		KA10=1
+    62			000001		PGMEND=1
+    63			000001		ERDIAG=1
+    64
+    65					;SPECIAL FEATURE DEFINITIONS
+    66
+    67			030000		SADR1=BEGIN
+    68			030000		SADR2=BEGIN
+    69			030000		SADR3=BEGIN
+    70			030000		SADR4=BEGIN
+    71		254000	030000		SADR5=JRST BEGIN
+    72		254000	030000		SADR6=JRST BEGIN
+    73		254000	030000		SADR7=JRST BEGIN
+    74		254000	030000		SADR8=JRST BEGIN
+    75		254000	030000		SADR9=JRST BEGIN
+    76		254000	030000		SADR10=JRST BEGIN
+    77		254000	030000		SADR11=JRST BEGIN
+    78
+    79					;SPECIAL FEATURE PARAMETERS
+    80
+    81			000000		PAREA0=0
+    82			000000		PAREA1=0
+    83			000000		PAREA2=0
+    84		444153	415100		PAREA3=SIXBIT/DAKAI/
+    85		645560	000000		PAREA4=SIXBIT/TMP/
+    86			000000		PAREA5=0
+    87			000000		PAREA6=0
+    88			001000		ITERAT==1000
+    89
+    90					;MACROS
+    91
+    92					DEFINE	SAVEAC	(A,B)<
+    93						MOVEI	AC+2,.		;SAVE TEST PC
+    94						MOVEM	AC+2,TESTPC
+    95						MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+    96						MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION>
+    97
+    98					DEFINE	SETACS	(WW,XX)<
+    99						MOVEI	AC-1,WW		;SETUP AC-1
+   100						HRLI	AC-1,WW		;FOR COMPARISION
+   101						MOVE	AC-2,&17	;SETUP AC-2 FOR COMPARISON
+   102						MOVEI	AC,XX		;SETUP AC RIGHT
+   103						HRLI	AC,XX		;SETUP AC LEFT
+   104						MOVEM	AC,&17	;SETUP AC2>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 4
+DAKAIT	MAC	20-JAN-77 10:35		DIAGNOSTIC PARAMETERS                                                              SEQ 0014
+
+   105					;USER DEFINED MACROS
+   106
+   107					DEFINE	SR1	(T,D1A,D1B,R1A,R1B,OP,S)<
+   108					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD D1A,D1B] S BIT
+   109					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD R1A,R1B]
+   110					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+   111
+   112					E'T'00:	MOVE	AC,[XWD D1A,D1B]	;INITIALIZE AC
+   113						MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+   114						OP	AC,S			;*SHIFT/ROTATE S BIT POSITIONS
+   115						CAME	AC,[XWD R1A,R1B]	;IS RESULT IN AC CORRECT?
+   116						ER3	AC,T'01			;RESULT IN AC IS INCORRECT
+   117						CAME	AC+1,[XWD 741703,607417]
+   118						ER4	AC+1,T'01		;C(AC+1) WAS MODIFIED INCORRECTLY
+   119						JUMPL	AC+2,E'T'00		;LOOP ON ERROR SWITCH>
+   120
+   121
+   122					DEFINE	SR2	(T,D1A,D1B,D2A,D2B,R1A,R1B,R2A,R2B,OP,S)<
+   123					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+   124					;DATA SPECIFIED IN [XWD D1A,D1B] AND [XWD D2A,D2B] S BIT POSITIONS AND
+   125					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD R1A,R1B] AND
+   126					;[XWD R2A,R2B]
+   127
+   128					E'T'00:	MOVE	AC,[XWD D1A,D1B]	;INITIALIZE AC
+   129						MOVE	AC+1,[XWD D2A,D2B]	;INITIALIZE AC+1
+   130						OP	AC,S			;*SHIFT/ROTATE COMBINED S PLACES
+   131						CAME	AC,[XWD R1A,R1B]	;IS RESULT IN AC CORRECT?
+   132						ER3	AC,T'01			;RESULT IN AC IS INCORRECT
+   133						CAME	AC+1,[XWD R2A,R2B]	;IS RESULT IN AC+1 CORRECT?
+   134						ER4	AC+1,T'01		;RESULT IN AC+1 IS INCORRECT
+   135						JUMPL	AC+2,E'T'00		;LOOP ON ERROR SWITCH>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 1
+PARAM	KLM	18-JAN-77 11:38		*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977                               SEQ 0015
+
+   136					SUBTTL	*PARAM*	CONSOLE DATA SWITCH ASSIGNMENTS, JAN 18,1977
+   137
+   138					DEFINE	S,<;*********************************************************************>
+   139
+   140					S^;*********************************************************************^
+   141					;*DATA SWITCHES (READ FROM CONSOLE IN EXEC MODE OR TYPED IN IN USER MODE)
+   142					;*LEFT HALF SWITCHES ARE PRE-ASSIGNED FOR SUBROUTINE PACKAGE USE
+   143					;*AND CONTROL LOOPING, PRINTING (TTY OR OTHER DEVICE) AND MISC. FUNCTIONS
+   144					S^;*********************************************************************^
+   145
+   146			400000		ABORT==	400000			;ABORT PROGRAM ON PASS COMPLETION
+   147			200000		RSTART==200000			;RESTART TEST, PRINT TOTALS
+   148			100000		TOTALS==100000			;PRINT TOTALS, CONTINUE
+   149
+   150			040000		NOPNT==	040000			;INHIBIT ALL PRINT/TYPE OUT (EXCEPT FORCED)
+   151			020000		PNTLPT==020000			;PRINT ALL DATA ON LPT (LOGICAL DEVICE, USER MODE)
+   152			010000		DING==	010000			;RING BELL ON ERROR
+   153
+   154			004000		LOOPER==004000			;ENTER EXERCISE/CHECK LOOP ON ERROR
+   155			002000		ERSTOP==002000			;HALT ON TEST ERROR
+   156			001000		PALERS==001000			;PRINT ALL ERRORS
+   157
+   158			000400		RELIAB==000400			;RELIABILITY MODE
+   159			000200		TXTINH==000200			;INHIBIT ERROR TEXT
+   160			000100		INHPAG==000100			;INHIBIT PAGING
+   161
+   162			000040		MODDVC==000040			;MODIFY DEVICE CODE
+   163			000020		INHCSH==000020			;INHIBIT CACHE
+   164			000010		OPRSEL==000010			;OPERATOR SELECTION
+   165
+   166			000004		CHAIN==	000004			;CHAIN CONTROL SWITCH
+   167
+   168			000002		KAHZ50==000002			;KA10 50 HERTZ POWER
+   169
+   170									;SWITCH 17 RESERVED !!!
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 2
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0016
+
+   171					SUBTTL	*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977
+   172
+   173					S^;*********************************************************************^
+   174					;*SPECIAL SUBPROGRAM LINKAGES
+   175					S^;*********************************************************************^
+   176
+   177			027772		FSELNK=	27772	;FILE SELECT LINK
+   178			027773		FRDLNK=	27773	;FILE READ LINK
+   179			027774		LDLNK=	27774	;LOAD LINKAGE ADDRESS
+   180			027775		DDTLNK=	27775	;DDT LINKAGE ADDRESS
+   181			027776		MODLNK=	27776	;OPERATIONAL MODE CHECK LINKAGE ADDRESS
+   182			027777		SUBLNK=	27777	;SUBROUTINE LINKAGE ADDRESS
+   183
+   184					S^;*********************************************************************^
+   185					;*SPECIAL SUBROUTINE FATAL HALTS
+   186					;*USED TO REPORT ERRORS THAT CAUSE THE SUBROUTINES TO BE UNUSABLE
+   187					S^;*********************************************************************^
+   188
+   189					;ADDRESS   TAG	REASON
+   190					;---------------------
+   191
+   192					; 1010 	NOEXEC	;PROGRAM NOT CODED FOR EXEC MODE OPERATION
+   193					; 1011  PLERR	;FATAL PUSH LIST POINTER ERROR
+   194					; 1012  PLERR1	;INITIAL PUSH LIST POINTER ERROR
+   195					; 1013  MUOERR	;MUUO WITH LUUO HANDLER WIPED OUT
+   196					; 1014  DTEBER	;DTE20 INTERRUPT WITHOUT DOORBELL
+   197					; 1015  DTECER	;DTE20 CLOCK INTERRUPT WITHOUT FLAG SET
+   198					; 1016  CPIERR	;CPU INITIALIZATION ERROR
+   199					; 1017  EOPERR	;END OF PROGRAM ERROR
+   200					; 1020  LUOERR	;INTERRUPT WITH LUUO HANDLER WIPED OUT
+   201
+   202					S^;*********************************************************************^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 3
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0017
+
+   203					S^;*********************************************************************^
+   204					;OPERATOR DEFINITIONS (NON-UUO'S)
+   205					S^;*********************************************************************^
+   206
+   207		260740	000000		OPDEF	GO	[PUSHJ	P,]	;SUBROUTINE CALL
+   208		263740	000000		OPDEF	RTN	[POPJ	P,]	;SUBROUTINE RETURN
+   209		261740	000000		OPDEF	PUT	[PUSH	P,]	;PUT DATA ON PUSH LIST
+   210		262740	000000		OPDEF	GET	[POP	P,]	;GET DATA FROM PUSH LIST
+   211		254000	000000		OPDEF	PJRST	[JRST	]	;JRST TO ROUTINE THAT RTN'S
+   212		254200	000000		OPDEF	HALT	[JRST	4,]	;DEFINITION FOR DDT
+   213		254100	000000		OPDEF	JRSTF	[JRST	2,]	;DEFINITION FOR DDT
+   214		254500	000000		OPDEF	JEN	[JRST	12,]	;DEFINITION FOR DDT
+   215
+   216					S^;*********************************************************************^
+   217					;*SUBROUTINE INITIALIZATION CALL
+   218					S^;*********************************************************************^
+   219
+   220		265000	030011		OPDEF	PGMINT	[JSP	0,SBINIT]	;SUBROUTINE INITIALIZATION
+   221
+   222					S^;*********************************************************************^
+   223					;*HALTING UUO'S (A MORE GRACEFUL HALT THAN SIMPLY USING THE HALT INSTRUCTION).
+   224					S^;*********************************************************************^
+   225
+   226		037640	000004		OPDEF	FATAL	[37B8!15B12!4]	;FATAL PROGRAMMING HALT
+   227		037600	000004		OPDEF	ERRHLT	[37B8!14B12!4]	;PROGRAM ERROR HALT
+   228
+   229					S^;*********************************************************************^
+   230					;*TERMINAL INPUT UUO'S
+   231					;*ALWAYS COME FROM THE CONSOLE TERMINAL IN EXEC MODE OR THE
+   232					;*CONTROLLING TERMINAL (REAL TERMINAL OR PTY) IN USER MODE.
+   233					S^;*********************************************************************^
+   234
+   235		037000	000003		OPDEF	TTICHR 	[37B8!0B12!3]	;TTY, INPUT ANY CHARACTER
+   236		037040	000003		OPDEF	TTIYES	[37B8!1B12!3]	;TTY, NORMAL RETURN Y
+   237		037100	000003		OPDEF	TTINO	[37B8!2B12!3]	;TTY, NORMAL RETURN N
+   238		037140	000003		OPDEF	TTIOCT	[37B8!3B12!3]	;TTY, INPUT OCTAL WORD
+   239		037200	000003		OPDEF	TTIDEC	[37B8!4B12!3]	;TTY, INPUT DECIMAL WORD
+   240		037240	000003		OPDEF	TTICNV	[37B8!5B12!3]	;TTY, INPUT CONVERTABLE WORD
+   241		037300	000003		OPDEF	TTLOOK	[37B8!6B12!3]	;TTY, KEYBOARD CHECK
+   242		037340	000003		OPDEF	TTALTM	[37B8!7B12!3]	;TTY, ALT-MODE CHECK
+   243		037400	000003		OPDEF	TTSIXB	[37B8!10B12!3]	;TTY, INPUT SIXBIT WORD
+   244		037440	000003		OPDEF	TTYINP	[37B8!11B12!3]	;TTY, IMAGE MODE INPUT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 4
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0018
+
+   245					;*TERMINAL OUTPUT UUO'S.
+   246
+   247		037000	000000		OPDEF	PNTA	[37B8!0B12!0]	;PRINT ASCII WORD
+   248		037000	000001		OPDEF	PNTAF	[37B8!0B12!1]	;PRINT ASCII WORD FORCED
+   249		037740	000000		OPDEF	PNTAL	[37B8!17B12!0]	;PRINT ASCIZ LINE
+   250		037740	000001		OPDEF	PNTALF	[37B8!17B12!1]	;PRINT ASCIZ LINE FORCED
+   251		037600	000003		OPDEF	PSIXL	[37B8!14B12!3]	;PRINT SIXBIT'Z LINE
+   252		037640	000003		OPDEF	PSIXLF	[37B8!15B12!3]	;PRINT SIXBIT'Z LINE FORCED
+   253		037000	000000		OPDEF	PNTMSG	[37B8!0B12!0]	;PRINT MESSAGE IMMEDIATE
+   254		037040	000000		OPDEF	PNTMSF	[37B8!1B12!0]	;PRINT MESSAGE IMMEDIATE FORCED
+   255		037100	000000		OPDEF	PSIXM	[37B8!2B12!0]	;PRINT SIXBIT'Z MSG IMMEDIATE
+   256		037200	000000		OPDEF	PSIXMF	[37B8!4B12!0]	;PRINT SIXBIT'Z MSG IMM FORCED
+   257		037000	000000		OPDEF	PNTCI	[37B8!0B12!0]	;PRINT CHARACTER IMMEDIATE
+   258		037040	000000		OPDEF	PNTCIF	[37B8!1B12!0]	;PRINT CHARACTER IMMEDIATE FORCED
+   259		037500	000000		OPDEF	PNTCHR	[37B8!12B12!0]	;PRINT CHARACTER
+   260		037500	000001		OPDEF	PNTCHF	[37B8!12B12!1]	;PRINT CHARACTER FORCED
+   261		037040	000000		OPDEF	PNT1	[37B8!1B12!0]	;PRINT ONE OCTAL DIGIT
+   262		037040	000001		OPDEF	PNT1F	[37B8!1B12!1]	;PRINT 1 OCTAL DIGIT FORCED
+   263		037100	000000		OPDEF	PNT2	[37B8!2B12!0]	;PRINT TWO OCTAL DIGITS
+   264		037100	000001		OPDEF	PNT2F	[37B8!2B12!1]	;PRINT 2 OCTAL DIGITS FORCED
+   265		037140	000000		OPDEF	PNT3	[37B8!3B12!0]	;PRINT THREE OCTAL DIGITS
+   266		037140	000001		OPDEF	PNT3F	[37B8!3B12!1]	;PRINT THREE OCTAL DIGITS FORCED
+   267		037200	000000		OPDEF	PNT4	[37B8!4B12!0]	;PRINT FOUR OCTAL DIGITS
+   268		037200	000001		OPDEF	PNT4F	[37B8!4B12!1]	;PRINT FOUR OCTAL DIGITS FORCED
+   269		037240	000000		OPDEF	PNT5	[37B8!5B12!0]	;PRINT FIVE OCTAL DIGITS
+   270		037240	000001		OPDEF	PNT5F	[37B8!5B12!1]	;PRINT FIVE OCTAL DIGITS FORCED
+   271		037300	000000		OPDEF	PNT6	[37B8!6B12!0]	;PRINT SIX OCTAL DIGITS
+   272		037300	000001		OPDEF	PNT6F	[37B8!6B12!1]	;PRINT SIX OCTAL DIGITS FORCED
+   273		037340	000000		OPDEF	PNT7	[37B8!7B12!0]	;PRINT 7 OCTAL DIGITS
+   274		037340	000001		OPDEF	PNT7F	[37B8!7B12!1]	;PRINT 7 OCTAL DIGITS FORCED
+   275		037440	000000		OPDEF	PNT11	[37B8!11B12!0]	;PRINT 11 OCTAL DIGITS
+   276		037440	000001		OPDEF	PNT11F	[37B8!11B12!1]	;PRINT 11 OCTAL DIGITS FORCED.
+   277		037400	000000		OPDEF	PNTADR	[37B8!10B12!0]	;PRINT PHYSICAL ADDRESS
+   278		037400	000001		OPDEF	PNTADF	[37B8!10B12!1]	;PRINT PHYSICAL ADDRESS FORCED
+   279		037600	000000		OPDEF	PNTOCT  [37B8!14B12!0]	;PRINT FULL WORD OCTAL
+   280		037600	000001		OPDEF	PNTOTF	[37B8!14B12!1]	;PRINT FULL WORD OCTAL FORCED
+   281		037540	000000		OPDEF	PNTHW	[37B8!13B12!0]	;PRINT OCTAL HALF WORDS, 6 SP 6
+   282		037540	000001		OPDEF	PNTHWF	[37B8!13B12!1]	;PRINT OCTAL HALF WORDS, 6 SP 6 FORCED
+   283		037700	000003		OPDEF	PNTOCS	[37B8!16B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S
+   284		037740	000003		OPDEF	PNTOCF	[37B8!17B12!3]	;PRINT OCTAL, SUPPRESS LEADING 0'S FORCED
+   285		037640	000000		OPDEF	PNTDEC	[37B8!15B12!0]	;PRINT DECIMAL, SUPRESS LEADING 0'S
+   286		037640	000001		OPDEF	PNTDCF	[37B8!15B12!1]	;PRINT DECIMAL, SUPRESS LEADING 0'S FORCED
+   287		037700	000000		OPDEF	PNTDS	[37B8!16B12!0]	;PRINT DECIMAL, SPACES FOR LD 0'S
+   288		037700	000001		OPDEF	PNTDSF	[37B8!16B12!1]	;PRINT DECIMAL, SPACES FOR LD 0'S FORCED
+   289		037200	000002		OPDEF	PNTNM	[37B8!4B12!2]	;PRINT PROGRAM NAME
+   290		037000	000002		OPDEF	PNTSIX	[37B8!0B12!2]	;PRINT SIXBIT WORD
+   291		037040	000002		OPDEF	PNTSXF	[37B8!1B12!2]	;PRINT SIXBIT WORD FORCED
+   292		037240	000002		OPDEF	DROPDV	[37B8!5B12!2]	;CLOSE LOGICAL FILE, USER MODE
+   293		037100	000002		OPDEF	PNTCW	[37B8!2B12!2]	;PRINT DF10 CONTROL WORD
+   294		037140	000002		OPDEF	PNTCWF	[37B8!3B12!2]	;PRINT DF10 CONTROL WORD FORCED
+   295		037000	030242		OPDEF	PCRL	[37B8!0B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED
+   296		037040	030242		OPDEF	PCRLF	[37B8!1B12!CRLF] ;PRINT CARRIAGE RETURN/LINE FEED FORCED
+   297		037000	000040		OPDEF	PSP	[37B8!0B12!40]	;PRINT SPACE
+   298		037040	000040		OPDEF	PSPF	[37B8!1B12!40]	;PRINT SPACE FORCED
+   299		037000	030243		OPDEF	PCRL2	[37B8!0B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE)
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 4-1
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0019
+
+   300		037040	030243		OPDEF	PCRL2F	[37B8!1B12!CRLF2] ;PRINT CARRIAGE RETURN/LINE FEED (TWICE) FORCED
+   301		037040	000007		OPDEF	PBELL	[37B8!1B12!7]	;PRINT TTY BELL
+   302
+   303		037040	000026		OPDEF	PFORCE	[37B8!1B12!26]	;PRINT FORCE, CONTROL O OVERRIDE
+   304
+   305					DEFINE	PMSG	(ARG),<
+   306						PSIXM	[SIXBIT\ARG'_\]>
+   307
+   308					DEFINE	PMSGF	(ARG),<
+   309						PSIXMF	[SIXBIT\ARG'_\]>
+   310
+   311					;*SIXBTZ -- MACRO TO GENERATE SIXBIT DATA FOR PRINTING
+   312					;*	CONSERVES CORE OVER ASCIZ
+   313
+   314					DEFINE	SIXBTZ	(ARG),<	[SIXBIT\ARG'_\]>
+   315
+   316					;*CONSOLE SWITCH INPUT UUO.
+   317					;*READS CONSOLE SWITCHES IF IN EXEC MODE OR ASKS FOR THEM IF
+   318					;* USER MODE.
+   319
+   320		037400	000002		OPDEF	SWITCH	[37B8!10B12!2]	;INPUT CONSOLE SWITCHES
+   321
+   322					;*CLOCK INITIALIZATION UUO - TO SET DESIRED CLOCK OPERATION
+   323					;*EITHER IGNORE CLOCK, ONLY LET IT TICK OR CAUSE INTERRUPT TO OCCUR.
+   324
+   325		037540	000004		OPDEF	CLOKOP	[37B8!13B12!4]	;CLOCK OPERATION UUO - PDP-11 CLOCK
+   326		037200	000004		OPDEF	MTROP	[37B8!4B12!4]	;CLOCK OPERATION UUO - DK20 METER
+   327
+   328					;*KL10 ONLY CACHE OPERATION UUO'S
+   329
+   330		037040	000004		OPDEF	CINVAL	[37B8!1B12!4]	;CACHE INVALIDATE
+   331		037100	000004		OPDEF	CFLUSH	[37B8!2B12!4]	;CACHE FLUSH
+   332		037140	000004		OPDEF	CWRTBI	[37B8!3B12!4]	;CACHE WRITE-BACK & INVALIDATE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 5
+PARAM	KLM	18-JAN-77 11:38		*PARAM* PROGRAM/SUBROUTINE PARAMETERS, JAN 18,1977                                 SEQ 0020
+
+   333					;*END OF PASS/PROGRAM UUOS
+   334
+   335					;PERFORMS THE END OF PASS FUNCTIONS. INCREMENT PASS COUNT,
+   336					;*DECREMENT ITERATION COUNT, CHECK IF FINISHED WITH THIS PROGRAM ETC.
+   337
+   338		037500	000004		OPDEF	ENDUUO	[37B8!12B12!4]	;UUO TO DISPLAY LIGHTS
+   339		037700	000004		OPDEF	EOPUUO	[37B8!16B12!4]	;END OF PROGRAM UUO
+   340
+   341					;*MEMORY MANAGEMENT UUO'S
+   342					;*UUO'S TO PERFORM VARIOUS MEMORY FUNCTIONS. MAPPING, ZEROING, PAGING,
+   343					;*ADDRESS CONVERSION, ETC...
+   344
+   345		037000	000004		OPDEF	MAPMEM	[37B8!0B12!4]	;MAP MEMORY
+   346		037500	000002		OPDEF	MEMZRO	[37B8!12B12!2]	;ZERO MEMORY
+   347		037440	000002		OPDEF	MEMSEG	[37B8!11B12!2]	;SETUP MEMORY SEGMENT
+   348		037540	000002		OPDEF	MAPADR	[37B8!13B12!2]	;VIRTUAL TO PHYSICAL ADR CONVERT
+   349		037640	000002		OPDEF	MAPCNK	[37B8!15B12!2]	;MAP MEMORY CHUNK
+   350		037600	000002		OPDEF	MAPSET	[37B8!14B12!2]	;SET KI10 EXEC PAGE MAP
+   351		037740	000002		OPDEF	MAPPNT	[37B8!17B12!2]	;PRINT MEMORY MAP
+   352
+   353					;*DEVICE CODE MODIFICATION UUO
+   354					;*ALLOWS THE MODIFICATION OF IOT'S TO ONE DEVICE TO BE CHANGED TO
+   355					;*IOT'S TO A DIFFERENT DEVICE CODE.
+   356
+   357		037340	000002		OPDEF	MODPCU	[37B8!7B12!2]	;MODIFY PERHIPERAL CODE, USER
+   358		037300	000002		OPDEF	MODPCP	[37B8!6B12!2]	;MODIFY PERHIPERAL CODE, PROGRAM
+   359
+   360			030000			IFNDEF	MODDVL,
+   361			030000			IFNDEF	MODDVU,
+   362
+   363					;*"DIAMON" FILE SELECTION AND READ UUOS
+   364
+   365		037240	000004		OPDEF	FSELECT	[37B8!5B12!4]	;FILE SELECTION
+   366		037300	000004		OPDEF	FREAD	[37B8!6B12!4]	;FILE READ - ASCII DATA
+   367		037340	000004		OPDEF	FRD36	[37B8!7B12!4]	;FILE READ - 36 BIT DATA
+   368		037400	000004		OPDEF	FRD8	[37B8!10B12!4]	;FILE READ - 8 BIT DATA
+   369
+   370					;*KI10 ONLY UUO FOR PRINTING MARGIN VALUES
+   371
+   372		037700	000002		OPDEF	PNTMGN	[37B8!16B12!2]	;PRINT MARGIN VALUE
+   373
+   374						XLIST
+   375						LIST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 1
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0021
+
+   376					SUBTTL	*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977
+   377
+   378	030000					LOC	30000
+   379
+   380					S^;*********************************************************************^
+   381					;*PROGRAM STARTING ADDRESSES
+   382					;*THESE ADDRESSES CALL VARIOUS SPECIAL START ROUTINES AND OR OPTIONS
+   383					;*NORMAL START ADDRESS IS 30000 ALL OTHERS ARE SPECIAL. INVOKED BECAUSE
+   384					;*OF END OF PASS, POWER FAILURE, DDT START, RE-ENTERING(TYPICALLY USER
+   385					;*MODE), OR ANY NUMBER OF SPECIAL FEATURE TESTS.
+   386					S^;*********************************************************************^
+   387
+   388	030000	254 00 1 00 027776 	BEGIN:	JRST	@MODLNK		;STAND-ALONE START
+   389	030001	254 00 0 00 030620 	$START:	JRST	START		;MODE CHECK STARTING ADDRESS
+   390
+   391	030002	254 00 1 00 027774 	DIAGMN:	JRST	@LDLNK		;DIAGNOSTIC MONITOR START
+   392
+   393	030003	254 00 1 00 027774 	SYSEXR:	JRST	@LDLNK		;SYSTEM EXERCISER START
+   394
+   395	030004	254 00 0 00 030000 	SFSTRT:	JRST	SADR1		;SPECIAL FEATURE START
+   396
+   397	030005	254 00 0 00 030000 	PFSTRT:	JRST	SADR2		;POWER FAIL RESTART
+   398
+   399	030006	254 00 0 00 030000 	REENTR:	JRST	SADR3		;REENTER START(USUALLY USER MODE ONLY)
+   400
+   401	030007				SRTDDT:				;COMMONLY MISTAKEN NAME FOR "DDTSRT"
+   402	030007	254 00 1 00 027775 	DDTSRT:	JRST	@DDTLNK		;DDT START
+   403
+   404	030010	254 00 0 00 030623 	BEGIN1:	JRST	STARTA		;LOOP START(END OF PASS COMES HERE)
+   405	030011	254 00 1 00 027777 	SBINIT:	JRST	@SUBLNK		;PMGINT LINKAGE
+   406	030012	000000	000000		RETURN:	0			;RETURN ADDRESS STORAGE
+   407
+   408	030013	254000	030000		START1:	SADR7			;OPTIONAL STARTING ADR/INSTRUCTIONS
+   409	030014	254000	030000		START2:	SADR8			; "
+   410	030015	254000	030000		START3:	SADR9			; "
+   411	030016	254000	030000		START4:	SADR10			; "
+   412	030017	254000	030000		START5:	SADR11			; "
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 2
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0022
+
+   413					S^;*********************************************************************^
+   414					;*PROGRAM FIXED PARAMETER AREA
+   415					S^;*********************************************************************^
+   416
+   417	030020	444153	415100		PNTNAM:	PAREA3		;SIXBIT PROGRAM NAME
+   418	030021	645560	000000		PNTEXT:	PAREA4		;SIXBIT PROGRAM EXTENSION
+   419	030022	000000	000000		RANDBS:	PAREA1		;RANDOM BASE NUMBER
+   420	030023	000000	000000		SWTEXR:	PAREA2		;SYSTEM EXERCISER SWITCHES
+   421	030024	000000	001000		ITRCNT:	ITERAT		;PROGRAM ITERATIONS
+   422	030025	000000	030602		$PNAME:	PGMNAM		;POINTER TO PROGRAMS NAME
+   423	030026	000000	000002		$PVER:	MCNVER,,DECVER	;MCN & DEC VERSION LEVEL
+   424	030027	000000	030000		$MODVL:	MODDVL		;DEVICE CODE CHANGE LOWER LIMIT
+   425	030030	000000	030000		$MODVU:	MODDVU		;DEVICE CODE CHANGE UPPER LIMIT
+   426	030031	777777	777777		$EMODE:	IFNDEF EXCASB,<0> IFDEF EXCASB,<-1>	;EXEC ALLOWED
+   427	030032	777777	777777		$UMODE:	IFNDEF USRASB,<0> IFDEF USRASB,<-1>	;USER ALLOWED
+   428	030033	000000	000000		$DSKUP:	IFNDEF DSKUPD,<0> IFDEF DSKUPD,<-1>	;DISK UPDATE MODE
+   429	030034	000000	000000		$MMAP:	IFNDEF MEMMAP,<0> IFDEF MEMMAP,<-1>	;ALLOW MEMORY RTNS
+   430	030035	000000	000000		PAREA7:	PAREA5		;OPTIONAL PARAMETER
+   431	030036	000000	000000		PAREA8:	PAREA6		;OPTIONAL PARAMETER
+   432
+   433					S^;*********************************************************************^
+   434					;*PROGRAM VARIABLE PARAMETER AREA
+   435					S^;*********************************************************************^
+   436
+   437	030037	000000	000000		USER:	0		; 0 = EXEC, -1 = USER MODE FLAG
+   438	030040	000000	000000		KAIFLG:	0		;PROCESSOR TYPE, 0 = KA10, -1 = KI10
+   439	030041	000000	000000		KLFLG:	0		;PROCESSOR TYPE, 0 = KA/KI, -1 = KL10
+   440	030042	777777	777777		MONFLG:	-1		;DIAG MONITOR SPECIAL USER FLAG
+   441	030043	000000	000000		MONCTL:	0		;DIAG MON/SYS EXR FLAG
+   442	030044	000000	000000		MONTEN:	0		;-1= LOADED BY 10
+   443	030045	000000	000000		CLOCKF:	0		;CLOCK TICKED FLAG
+   444	030046	000000	000000		CONSW:	0		;CONSOLE SWITCH SETTINGS
+   445	030047	000000	000000		PASCNT:	0		;PROGRAM PASS COUNT
+   446	030050	000000	000000		RUNFLG:	0		;PROGRAM RUN FLAG
+   447	030051	000000	000000		TESTPC:	0		;SUBTEST PC
+   448	030052	000000	000000		ERRPC:	0		;ERROR PC
+   449	030053	000000	000000		ERRTLS:	0		;ERROR TOTALS
+   450	030054	000000	000000		TICKS:	0		;PROGRAM RUNNING TIME
+   451	030055	000000	000000		MARGIN:	0		;KI10 MARGIN WORD VALUE
+   452	030056	000000	000000		$ONETM:	0		;SUBROUTINE INITIALIZATION FLAG
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 3
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0023
+
+   453					S^;*********************************************************************^
+   454					;*SPECIAL PROGRAM DISPATCH ADDRESSES
+   455					S^;*********************************************************************^
+   456
+   457	030057	037 12 0 00 000004 	BEGEND:	ENDUUO		;END OF PASS
+   458	030060	254 00 0 00 030010 	$BEND1:	JRST	BEGIN1	;KEEP RUNNING PROGRAM
+   459	030061	037 16 0 00 000004 	$BEND2:	EOPUUO		;END OF PROGRAM - NO RETURN
+   460	030062	254000	030000		CNTLC:	SADR5		;CONTROL C XFER ADDRESS
+   461	030063	254000	030000		ALTMGO:	SADR6		;ALTMODE XFER ADDRESS
+   462	030064				CPOPJ1:			;SKIP RETURN
+   463	030064	350 00 0 17 000000 	UUOSKP:	AOS	(P)	;SKIP RETURN FROM UUO
+   464	030065				CPOPJ:			;NON-SKIP REGULAR RETURN
+   465	030065	263 17 0 00 000000 	UUOEXT:	RTN		;UUO RETURN
+   466	030066	255 00 0 00 000000 	UUORTN:	JFCL		;ADDITIONAL USERS UUO ROUTINE
+   467	030067	255 00 0 00 000000 	$UORTX:	JFCL		;ADDITIONAL UUO LINKAGE
+   468	030070	255 00 0 00 000000 	$UUOER:	JFCL		;INITED AS (JRST $UOERX)
+   469	030071	255 00 0 00 000000 	$ITRHL:	JFCL		;ADDITIONAL INTERRUPT LINKAGE
+   470	030072	255 00 0 00 000000 	$ITRX1:	JFCL		; "
+   471	030073	255 00 0 00 000000 	$USRHL:	JFCL		; "
+   472	030074	255 00 0 00 000000 	$RSRTX:	JFCL		;ADDITIONAL POWER FAIL LINKAGE
+   473	030075	255 00 0 00 000000 	$RSRTY:	JFCL		; "
+   474	030076	255 00 0 00 000000 	RESRT1:	JFCL		; INITED AS (JRST RESRTX)
+   475	030077	255 00 0 00 000000 	RESRT2:	JFCL		; "
+   476	030100	255 00 0 00 000000 	$PARER:	JFCL		;ADDITIONAL PARITY ERROR LINKAGE
+   477	030101	255 00 0 00 000000 	ERMORE:	JFCL		;ADDITIONAL ERROR HANDLER LINKAGE
+   478	030102	254 04 0 00 030102 		HALT	.	;IMPROPER TRANSFER HALT
+   479
+   480	030103	000000	000000		$PSHER:	0		;INITED AS (JRST PSHERR)
+   481	030104	000000	000000		ITRCH1:	0		;PC & FLAGS OF CURRENT INTERRUPT
+   482	030105	000000	000000			0		;INITED AS (JRST $ITRC1)
+   483
+   484					S^;*********************************************************************^
+   485					;*PROCESSOR CONTROL STORAGE
+   486					S^;*********************************************************************^
+   487
+   488	030106	000000	000000		$ACC0:	0		;INTERRUPT SAVED AC0
+   489	030107	000000	000000		$SVPI:	0		;INTERRUPT SAVED PI
+   490	030110	000000	000000		$SVAPR:	0		;INTERRUPT SAVED APR
+   491	030111	000000	000000		$SVPAG:	0		;INTERRUPT SAVED PAG (DATAI)
+   492	030112	000000	000000		$SPAG1:	0		;INTERRUPT SAVED PAG (CONI)
+   493
+   494	030113	000000	000000		$SVUUO:	0		;CURRENT USERS UUO
+   495	030114	000000	000000		$SVUPC:	0		;PC OF CURRENT USERS UUO
+   496
+   497	030115	000000	000000		REPTU:	0		;REPEAT UUO ITERATIONS
+   498	030116	000000	000000		SCOPE:	0		;ERROR HANDLER SCOPE LOOP FLAG
+   499	030117	000000	000000		%CORFLG:0		; " CORRECT FLAG
+   500	030120	000000	000000		%COREC:	0		; " CORRECT DATA
+   501	030121	000000	000000		%ACTFL:	0		; " ACTUAL FLAG
+   502	030122	000000	000000		%ACTUL:	0		; " ACTUAL DATA
+   503	030123	000000	000000		%DISCR:	0		; " DISCREPENCY DATA
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 4
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0024
+
+   504					S^;*********************************************************************^
+   505					;*UUO DISPATCH TABLE
+   506					S^;*********************************************************************^
+   507						XLIST
+   508						LIST
+   509	030124	041423	030070		UUODIS:	LUUO1,,$UUOER
+   510	030125	041423	041423			LUUO3,,LUUO2
+   511	030126	041423	041423			LUUO5,,LUUO4
+   512	030127	041423	041423			LUUO7,,LUUO6
+   513	030130	041423	041423			LUUO11,,LUUO10
+   514	030131	041423	041423			LUUO13,,LUUO12
+   515	030132	030070	030070			LUUO15,,LUUO14
+   516	030133	030070	030070			LUUO17,,LUUO16
+   517	030134	030070	030070			LUUO21,,LUUO20
+   518	030135	030070	030070			LUUO23,,LUUO22
+   519	030136	030070	030070			LUUO25,,LUUO24
+   520	030137	030070	030070			LUUO27,,LUUO26
+   521	030140	030070	030070			LUUO31,,LUUO30
+   522	030141	030070	030070			LUUO33,,LUUO32
+   523
+   524					S^;*********************************************************************^
+   525					;*MEMORY MANAGMENT STORAGE
+   526					S^;*********************************************************************^
+   527
+   528	030142	000000	000000		DF22F:	0		;DF10 CONTROL FLAG, 0 = 18, -1 = 22 BIT
+   529	030143	000000	000000		MAPNEW:	0		;MEMORY MAPPING CONTROL FLAG, -1 = 4096K MAPPING
+   530	030144	000000	000000		MEMTOT:	0		;TOTAL MEMORY SIZE IN K (1024.)
+   531	030145	000000	000000		MEMLOW:	0		;LOWEST USABLE MEMORY
+   532	030146				MEMSIZ:	BLOCK ^D41	;MEMORY SEGMENT POINTER TABLE
+   533
+   534					S^;*********************************************************************^
+   535					;*PRINT CONTROL STORAGE
+   536					S^;*********************************************************************^
+   537
+   538	030217	000000	000000		PNTFLG:	0		;PRINT FLAG, -1 WHILE IN PRINT ROUTINE
+   539	030220	000000	000000		PNTENB:	0		;PRINT ENABLE
+   540	030221	000000	000000		PDISF:	0		;PRINT DISABLED FLAG
+   541	030222	000000	000000		PNTINH:	0		;INHIBIT PRINT INPUT CHECKS
+   542	030223	000000	000000		PNTSPC:	0		;PRINT SPACE CONTROL
+   543	030224	000000	000000		OPTIME:	0		;TYPE-IN WAIT TIME
+   544	030225	000000	000000		$TWCNT:	0		;TIME WAITED
+   545	030226	000000	000000		$DVOFF:	0		;LOGICAL DEVICE INITED FLAG
+   546	030227	000000	000000		TTYFIL:	0		;TTY EXEC FILLERS FLAG
+   547	030230	000000	000000		TTYSPD:	0		;TTY EXEC BAUD RATE
+   548	030231	000000	000000		$TTCHR:	0		;ACTUAL TYPED IN CHAR
+   549	030232	000000	000000		$CHRIN:	0		;UPPER CASED & PARITY STRIPPED CHAR
+   550	030233	000000	000000		$TYPNB:	0		;TYPED IN NUMBER
+   551	030234	000000	000000		$CRLF:	0		;FREE CR/LF FLAG
+   552	030235	000000	000000		$TABF:	0		;TAB CONVERSION FLAG
+   553	030236	000000	000000		$FFF:	0		;FORM FEED CONVERSION FLAG
+   554	030237	000000	000000		$VTF:	0		;VERTICAL TAB CONVERSION FLAG
+   555	030240	000000	000000		USRLFF:	0		;USER LF FILLERS
+   556	030241	000000	000000		USRCRF:	0		;USER CR FILLERS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 5
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0025
+
+   557					S^;*********************************************************************^
+   558					;*THE FOLLOWING MISCELLANEOUS PRINT CHARACTERS ARE INCLUDED
+   559					;*TO FACILITATE PRINTING AND ARE CALLED AS FOLLOWS:
+   560					;*	MOVEI	NAME
+   561					;*	PNTA		;OR PNTAF
+   562					S^;*********************************************************************^
+   563
+   564	030242				CRLF:	ASCII/
+   565	030242	015 012 000 000 000 	/
+   566	030243				CRLF2:	ASCII/
+   567
+   568	030243	015 012 015 012 000 	/
+   569	030244	054 000 000 000 000 	COMMA:	ASCII/,/
+   570	030245	056 000 000 000 000 	PERIOD:	ASCII/./
+   571	030246	040 000 000 000 000 	SPACE:	ASCII/ /
+   572	030247	011 000 000 000 000 	TAB:	ASCII/	/
+   573	030250				MINUS:
+   574	030250	055 000 000 000 000 	HYPEN:	ASCII/-/
+   575	030251	053 000 000 000 000 	PLUS:	ASCII/+/
+   576	030252	052 000 000 000 000 	AST:	ASCII/*/
+   577	030253	100 000 000 000 000 	ATSIN:	ASCII/@/
+   578	030254	050 000 000 000 000 	LFP:	ASCII/(/
+   579	030255	051 000 000 000 000 	RTP:	ASCII/)/
+   580	030256	007 0000000000 		BELL:	BYTE (7) 007
+   581	030257	077 000 000 000 000 	QUEST:	ASCII/?/
+   582	030260	057 000 000 000 000 	SLASH:	ASCII!/!
+   583	030261	044 000 000 000 000 	DOLLAR:	ASCII/$/
+   584	030262	000000	000012		RADIX:	^D10			;DECIMAL PRINT RADIX
+   585	030263	000000	000040		RADLSP:	40			;DECIMAL PRINT LEADING CHAR
+   586	030264	000000	000012		RADLSC:	^D10			;DECIMAL PRINT LEADING CHAR COUNT
+   587
+   588					S^;*********************************************************************^
+   589					;*USER MODE OUTPUT FILE INFORMATION
+   590					S^;*********************************************************************^
+   591
+   592	030265				$OBUF:	BLOCK	3		;LOGICAL FILE OUTPUT BUFFER HEADER
+   593	030270	60 62 51 56 64 00 	$OUTNM:	SIXBIT	/PRINT/		;FILE NAME
+   594	030271	60 56 64 00 00 00 	$OUTEX:	SIXBIT	/PNT/		;FILE NAME EXTENSION
+   595	030272					BLOCK	2
+   596
+   597					S^;*********************************************************************^
+   598					;*DISK UPDATE MODE FILE INFORMATION
+   599					S^;*********************************************************************^
+   600
+   601	030274				$IBUF:	BLOCK	3
+   602	030277	60 62 51 56 64 00 	$INNM:	SIXBIT	/PRINT/
+   603	030300	60 56 64 00 00 00 	$INEXT:	SIXBIT	/PNT/
+   604	030301					BLOCK	2
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0026
+
+   605					S^;*********************************************************************^
+   606					;*PUSHDOWN LIST CONTROL INFORMATION
+   607					S^;*********************************************************************^
+   608
+   609	030303	777577	030303		PLIST:	PLIST-PLISTE,,PLIST
+   610	030304				PLISTS:	BLOCK	200
+   611	030504	000000	000000		PLISTE:	0		;END OF PUSHDOWN LIST
+   612
+   613					S^;*********************************************************************^
+   614					;*POWER LINE CLOCK FREQUENCY FLAG
+   615					S^;*********************************************************************^
+   616
+   617	030505	000000	000000		CYCL60:	0	;0 = 60, -1 = 50 CYCLE
+   618
+   619					S^;*********************************************************************^
+   620					;*KL10 CACHE CONTROL FLAGS
+   621					S^;*********************************************************************^
+   622
+   623	030506	000000	000000		CSHFLG:	0	;ALLOW CACHE IF 0
+   624	030507	000000	000000		CSHMEM:	0	;CACHE MEMORY SEGMENTS IF 0
+   625
+   626					S^;*********************************************************************^
+   627					;*NUMBER INPUT DIGIT FLAG
+   628					S^;*********************************************************************^
+   629
+   630	030510	000000	000000		TTNBRF:	0	;-1 IF ANY DIGIT TYPED
+   631
+   632					S^;*********************************************************************^
+   633					;*KL10 & KI10 "INHPAG" SWITCH PAGING PREVENTION
+   634					S^;*********************************************************************^
+   635
+   636	030511	000000	000000		PVPAGI:	0	;IF NON-ZERO, OVERRIDE "INHPAG" SWITCH ACTION
+   637
+   638					S^;*********************************************************************^
+   639					;*ERROR REPORTING ROUTINE ADDITIONAL USERS CONTROL INSTRUCTIONS
+   640					S^;*********************************************************************^
+   641
+   642	030512	000000	000000		%ERHI1:	0	;IF NON-ZERO, XCT'D AT START OF %ERUUO
+   643	030513	000000	000000		%ERHI2:	0	;IF NON-ZERO, XCT'D AT END OF %ERUUO
+   644	030514	000000	000000		%ERHI3:	0	;IF NON-ZERO, XCT'D AFTER "PC" OF %ERUUO
+   645
+   646					S^;*********************************************************************^
+   647					;*SPECIAL USERS UUO INTERCEPT INSTRUCTION
+   648					S^;*********************************************************************^
+   649
+   650	030515	000000	000000		$$UUO:	0	;IF NON-ZERO, XCT'D AT START OF $UORTN
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7
+FIXED	KLM	18-JAN-77 11:39		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0027
+
+   651					S^;*********************************************************************^
+   652					;*KL10 PROCESSOR TYPE FLAG, 0=P0, 1=BBD NEW, 2=BBD OLD
+   653					S^;*********************************************************************^
+   654
+   655	030516	000000	000000		KLTYP:	0
+   656
+   657					S^;*********************************************************************^
+   658					;*SPECIAL USERS MUUO INTERCEPT INSTRUCTION
+   659					S^;*********************************************************************^
+   660
+   661	030517	000000	000000		$$MUUO:	0	;IF NON-ZERO, XCT'D AT START OF MUUOER
+   662
+   663					S^;*********************************************************************^
+   664					;*SPECIAL USERS USER MODE OUTPUT ERROR INTERCEPT INSTUCTION
+   665					S^;*********************************************************************^
+   666
+   667	030520	000000	000000		$$OUTER:0	;IF NON-ZERO, XCT'D AT END OF USER MODE ERROR
+   668
+   669					S^;*********************************************************************^
+   670					;*"SWITCH" CALL USAGE CONTROL
+   671					S^;*********************************************************************^
+   672
+   673	030521	000000	000000		$$TOGGLE:0	;IF NON-ZERO, USE C(CONSW) FOR SWITCHES
+   674
+   675					S^;*********************************************************************^
+   676					;*SPECIAL USERS ALTMODE SWITCH CALL INTERCEPT INSTRUCTIONS
+   677					S^;*********************************************************************^
+   678
+   679	030522	000000	000000		$$TAX1:	0	;IF NON-ZERO, XCT'D AT START OF ALTMODE SWITCH CALL
+   680	030523	000000	000000		$$TAX2:	0	;IF NON-ZERO, XCT'D AT END OF ALTMODE SWITCH CALL
+   681
+   682					S^;*********************************************************************^
+   683					;*SPECIAL FUTURE EXPANSION ROOM
+   684					;*IF ANY FIXED AREA TAGS ARE ADDED, REDUCE THE SIZE OF
+   685					;*THIS BLOCK STATEMENT ACCORDINGLY.  THIS MUST BE DONE
+   686					;*SO THAT PREVIOUS FIXED ASSIGNMENTS DO NOT CHANGE.
+   687					S^;*********************************************************************^
+   688
+   689	030524					BLOCK	53	;HOPEFULLY THIS IS ENOUGH FOREVER
+   690
+   691					S^;*********************************************************************^
+   692					;*END OF FIXED STORAGE
+   693					S^;*********************************************************************^
+   694
+   695			030577			$ENDFX=&<777700>-1
+   696	030577					LOC	$ENDFX
+   697	030577	000000	000000		ENDFIX:	0		;END OF FIXED STORAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 1
+DAKAIM	MAC	20-JAN-77 10:36		*FIXED* FIXED CONTROL AND DISPATCH STORAGE, JAN 18,1977                            SEQ 0028
+
+   698	030600	037 05 0 00 000002 	EXIT:	DROPDV			;CLOSE LOGICAL OUTPUT FILE
+   699	030601	000000	030600			EXIT
+   700
+   701	030602				PGMNAM:	ASCIZ/
+   702	030602	015 012 120 104 120 	PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC #9 SHIFT-ROTATE [DAKAI]
+   703	030603	055 061 060 040 113
+   704	030604	101 061 060 040 102
+   705	030605	101 123 111 103 040
+   706	030606	111 116 123 124 122
+   707	030607	125 103 124 111 117
+   708	030610	116 040 104 111 101
+   709	030611	107 116 117 123 124
+   710	030612	111 103 040 043 071
+   711	030613	040 123 110 111 106
+   712	030614	124 055 122 117 124
+   713	030615	101 124 105 040 133
+   714	030616	104 101 113 101 111
+   715	030617	135 015 012 000 000 	/
+   716
+   717					;INITIALIZE SUBROUTINES
+   718
+   719	030620	265 00 0 00 030011 	START:	PGMINT
+   720	030621	200 00 0 00 041614 		MOVE	[ASCIZ/AI/]
+   721	030622	202 00 0 00 041536 		MOVEM	TLET
+   722
+   723	030623	254 00 0 00 030624 	STARTA:	JRST	E00		;GO PERFORM DIAGNOSTIC
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST FETCH, STORE AND DECODE FUNCTIONS                        SEQ 0029
+
+   724					SUBTTL	DIAGNOSTIC SECTION - TEST FETCH, STORE AND DECODE FUNCTIONS
+   725
+   726					;TEST FETCH,STORE AND DECODE
+   727					;TEST THE ABILITY OF ROT, ROTC TO FETCH AND STORE
+   728					;AC,AC+1
+   729					;TESTING IS ACCOMPLISHED BY ROTATING ZERO TIMES ALL
+   730					;ZERO'S, ALL ONE'S.
+   731					;OPERANDS SELECTED ARE LEAST AFFECTED BY
+   732					;INADVERTENT ROTATING
+   733					;FAILURE OF A SC BIT TO SET,OR SC TO
+   734					;COUNT WILL RESULT IN LOOPING
+   735
+   736
+   737			000001			AC=1
+   738	030624				E00:	SAVEAC	(1,1)^
+   739	030624	201 03 0 00 030624 		MOVEI	AC+2,.		;SAVE TEST PC
+   740	030625	202 03 0 00 030051 		MOVEM	AC+2,TESTPC
+   741	030626	201 03 0 00 000003 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+   742	030627	202 03 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+   743
+   744	030630	400 01 0 00 000000 	E100:	SETZ	AC,		;CLEAR AC
+   745	030631	241 01 0 00 000000 		ROT	AC,0		;*ROTATE LEFT ZERO TIMES
+   746	030632	332 00 0 00 000001 		SKIPE	AC		;TEST AC FOR ZERO
+   747	030633	003 01 0 00 000101 		ER3	AC,101		;FETCH OR STORE FAILED
+   748	030634	321 03 0 00 030630 		JUMPL	AC+2,E100	;LOOP ON ERROR SWITCH
+   749
+   750	030635	477 01 0 00 000000 	E200:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+   751	030636	241 01 0 00 000000 		ROT	AC,0		;*ROTATE LEFT ZERO TIMES
+   752	030637	312 01 0 00 000000 		CAME 	AC,AC-1		;TEST AC FOR A -1
+   753	030640	003 01 0 00 000201 		ER3	AC,201		;FETCH OR STORE FAILED
+   754	030641	321 03 0 00 030635 		JUMPL	AC+2,E200	;LOOP ON ERROR SWITCH
+   755
+   756			000002			AC=2
+   757						SAVEAC	(1,1)^
+   758	030642	201 04 0 00 030642 		MOVEI	AC+2,.		;SAVE TEST PC
+   759	030643	202 04 0 00 030051 		MOVEM	AC+2,TESTPC
+   760	030644	201 04 0 00 000004 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+   761	030645	202 04 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+   762
+   763	030646	403 02 0 00 000003 	E300:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+   764	030647	245 02 0 00 000000 		ROTC	AC,0		;*ROTATE COMBINED LEFT ZERO TIMES
+   765	030650	332 00 0 00 000002 		SKIPE	AC		;TEST AC FOR ZERO
+   766	030651	003 02 0 00 000301 		ER3	AC,301		;FETCH OR STORE AC FAILED
+   767	030652	332 00 0 00 000003 		SKIPE	AC+1		;TEST AC+1 FOR ZERO
+   768	030653	004 03 0 00 000301 		ER4	AC+1,301	;FETCH OR STORE AC+1 FAILED
+   769	030654	321 04 0 00 030646 		JUMPL	AC+2,E300	;LOOP ON ERROR SWITCH
+   770
+   771	030655	474 01 0 00 000000 	E400:	SETO	AC-1,		;SET UP FOR COMPARISON
+   772	030656	477 02 0 00 000003 		SETOB	AC,AC+1		;SET AC,AC+1
+   773	030657	245 02 0 00 000000 		ROTC	AC,0		;*ROTATE COMBINED LEFT ZERO TIMES
+   774	030660	312 02 0 00 000001 		CAME	AC,AC-1		;TEST AC FOR A -1
+   775	030661	003 02 0 00 000401 		ER3	AC,401		;FETCH OR STORE AC FAILED
+   776	030662	312 03 0 00 000001 		CAME	AC+1,AC-1	;TEST AC+1 FOR A -1
+   777	030663	004 03 0 00 000401 		ER4	AC+1,401	;FETCH OR STORE AC+1 FAILED
+   778	030664	321 04 0 00 030655 		JUMPL	AC+2,E400	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST FETCH, STORE AND DECODE FUNCTIONS                        SEQ 0030
+
+   779					;TEST FETCH,STORE AND DECODE
+   780					;TEST THE ABILITY OF LSH, LSHC TO FETCH AND STORE
+   781					;AC,AC+1
+   782					;TESTING IS ACCOMPLISHED BY SHIFTING ZERO TIMES ALL
+   783					;ZERO'S ALL ONE'S
+   784					;OPERANDS SELECTED ARE LEAST AFFECTED BY
+   785					;INADVERTENT SHIFTING
+   786					;FAILURE OF A SC BIT TO SET,OR SC TO
+   787					;COUNT WILL RESULT IN LOOPING
+   788
+   789			000003			AC=3
+   790						SAVEAC	(1,1)^
+   791	030665	201 05 0 00 030665 		MOVEI	AC+2,.		;SAVE TEST PC
+   792	030666	202 05 0 00 030051 		MOVEM	AC+2,TESTPC
+   793	030667	201 05 0 00 000005 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+   794	030670	202 05 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+   795
+   796	030671	400 03 0 00 000000 	E500:	SETZ	AC,		;CLEAR AC
+   797	030672	242 03 0 00 000000 		LSH	AC,0		;*SHIFT LEFT ZERO TIMES
+   798	030673	332 00 0 00 000003 		SKIPE	AC		;TEST AC FOR ZERO
+   799	030674	003 03 0 00 000501 		ER3	AC,501		;FETCH OR STORE AC FAILED
+   800	030675	321 05 0 00 030671 		JUMPL	AC+2,E500	;LOOP ON ERROR SWITCH
+   801
+   802	030676	477 03 0 00 000002 	E600:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+   803	030677	242 03 0 00 000000 		LSH	AC,0		;*SHIFT LEFT ZERO TIMES
+   804	030700	312 03 0 00 000002 		CAME	AC,AC-1		;TEST AC FOR -1
+   805	030701	003 03 0 00 000601 		ER3	AC,601		;FETCH OR STORE AC FAILED
+   806	030702	321 05 0 00 030676 		JUMPL	AC+2,E600	;LOOP ON ERROR SWITCH
+   807
+   808			000014			AC=14
+   809						SAVEAC	(1,1)^
+   810	030703	201 16 0 00 030703 		MOVEI	AC+2,.		;SAVE TEST PC
+   811	030704	202 16 0 00 030051 		MOVEM	AC+2,TESTPC
+   812	030705	201 16 0 00 000016 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+   813	030706	202 16 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+   814
+   815	030707	403 14 0 00 000015 	E700:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+   816	030710	246 14 0 00 000000 		LSHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+   817	030711	332 00 0 00 000014 		SKIPE	AC		;TEST AC FOR 0
+   818	030712	003 14 0 00 000701 		ER3	AC,701		;FETCH OR STORE AC FAILED
+   819	030713	332 00 0 00 000015 		SKIPE	AC+1		;TEST AC+1 FOR 0
+   820	030714	004 15 0 00 000701 		ER4	AC+1,701	;FETCH OR STORE AC+1 FAILED
+   821	030715	321 16 0 00 030707 		JUMPL	AC+2,E700	;LOOP ON ERROR SWITCH
+   822
+   823	030716	474 13 0 00 000000 	E1000:	SETO	AC-1,		;SET UP FOR COMPARISON
+   824	030717	477 14 0 00 000015 		SETOB	AC,AC+1		;SET AC,AC+1
+   825	030720	246 14 0 00 000000 		LSHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+   826	030721	312 14 0 00 000013 		CAME	AC,AC-1		;TEST AC FOR -1
+   827	030722	003 14 0 00 001001 		ER3	AC,1001		;FETCH OR STORE AC FAILED
+   828	030723	312 15 0 00 000013 		CAME	AC+1,AC-1	;TEST AC+1 FOR -1
+   829	030724	004 15 0 00 001001 		ER4	AC+1,1001	;FETCH OR STORE AC+1 FAILED
+   830	030725	321 16 0 00 030716 		JUMPL	AC+2,E1000	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST FETCH, STORE AND DECODE FUNCTIONS                        SEQ 0031
+
+   831					;TEST FETCH,STORE AND DECODE
+   832					;TEST THE ABILITY OF ASH, ASHC TO FETCH AND STORE
+   833					;AC,AC+1
+   834					;TESTING IS ACCOMPLISHED BY SHIFTING ZERO TIMES ALL
+   835					;ZERO'S ALL ONES
+   836					;OPERANDS SELECTED ARE LEAST AFFECTED BY
+   837					;INADVERTENT SHIFTING
+   838					;FAILURE OF A SC BIT TO SET,OR SC TO
+   839					;COUNT WILL RESULT IN LOOPING
+   840
+   841			000013			AC=13
+   842						SAVEAC	(1,1)^
+   843	030726	201 15 0 00 030726 		MOVEI	AC+2,.		;SAVE TEST PC
+   844	030727	202 15 0 00 030051 		MOVEM	AC+2,TESTPC
+   845	030730	201 15 0 00 000015 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+   846	030731	202 15 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+   847
+   848	030732	400 13 0 00 000000 	E1100:	SETZ	AC,		;CLEAR AC
+   849	030733	240 13 0 00 000000 		ASH	AC,0		;*SHIFT LEFT ZERO TIMES
+   850	030734	332 00 0 00 000013 		SKIPE	AC		;TEST AC FOR ZERO
+   851	030735	003 13 0 00 001101 		ER3	AC,1101		;FETCH OR STORE AC FAILED
+   852	030736	321 15 0 00 030732 		JUMPL	AC+2,E1100	;LOOP ON ERROR SWITCH
+   853
+   854	030737	477 13 0 00 000012 	E1200:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+   855	030740	240 13 0 00 000000 		ASH	AC,0		;*SHIFT LEFT ZERO TIMES
+   856	030741	312 13 0 00 000012 		CAME	AC,AC-1		;TEST AC FOR A -1
+   857	030742	003 13 0 00 001201 		ER3	AC,1201		;FETCH OR STORE AC FAILED
+   858	030743	321 15 0 00 030737 		JUMPL	AC+2,E1200	;LOOP ON ERROR SWITCH
+   859
+   860			000012			AC=12
+   861						SAVEAC	(1,1)^
+   862	030744	201 14 0 00 030744 		MOVEI	AC+2,.		;SAVE TEST PC
+   863	030745	202 14 0 00 030051 		MOVEM	AC+2,TESTPC
+   864	030746	201 14 0 00 000014 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+   865	030747	202 14 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+   866
+   867	030750	403 12 0 00 000013 	E1300:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+   868	030751	244 12 0 00 000000 		ASHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+   869	030752	332 00 0 00 000012 		SKIPE	AC		;TEST AC FOR 0
+   870	030753	003 12 0 00 001301 		ER3	AC,1301		;FETCH OR STORE AC FAILED
+   871	030754	332 00 0 00 000013 		SKIPE	AC+1		;TEST AC+1 FOR 0
+   872	030755	004 13 0 00 001301 		ER4	AC+1,1301	;FETCH OR STORE AC+1 FAILED
+   873	030756	321 14 0 00 030750 		JUMPL	AC+2,E1300	;LOOP ON ERROR SWITCH
+   874
+   875	030757	474 11 0 00 000000 	E1400:	SETO	AC-1,		;SET UP FOR COMPARISON
+   876	030760	477 12 0 00 000013 		SETOB	AC,AC+1		;SET AC,AC+1
+   877	030761	244 12 0 00 000000 		ASHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+   878	030762	312 12 0 00 000011 		CAME	AC,AC-1		;TEST AC FOR A -1
+   879	030763	003 12 0 00 001401 		ER3	AC,1401		;FETCH OR STORE AC FAILED
+   880	030764	312 13 0 00 000011 		CAME	AC+1,AC-1	;TEST AC+1 FOR A -1
+   881	030765	004 13 0 00 001401 		ER4	AC+1,1401	;FETCH OR STORE AC+1 FAILED
+   882	030766	321 14 0 00 030757 		JUMPL	AC+2,E1400	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - CHECK SIGN BIT OF AC+1 FOR ASHC                               SEQ 0032
+
+   883					SUBTTL	DIAGNOSTIC SECTION - CHECK SIGN BIT OF AC+1 FOR ASHC
+   884
+   885					;VERIFY THAT THE SIGN BIT OF AC+1 IS NOT MADE TO AGREE WITH THE SIGN BIT OF AC
+   886					;WHEN THE 'E' FIELD OF ASHC SECIFIES A SHIFT OF ZERO BIT POSITIONS.
+   887					;HENCE, C(AC+1) IS NOT ALTERE BY 'ASHC AC,0'.
+   888					;CHECK THIS WHEN THE SIGN BIT OF AC IS ZERO AND THE SIGN BIT OF AC+1 IS ONE.
+   889
+   890						SR2	(443,0,0,-1,-1,0,0,-1,-1,ASHC,0)^
+   891					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+   892					;DATA SPECIFIED IN [XWD 0,0] AND [XWD -1,-1] 0 BIT POSITIONS AND
+   893					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+   894					;[XWD -1,-1]
+   895
+   896	030767	200 12 0 00 041615 	E44300:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+   897	030770	200 13 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+   898	030771	244 12 0 00 000000 		ASHC	AC,0			;*SHIFT/ROTATE COMBINED 0 PLACES
+   899	030772	312 12 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+   900	030773	003 12 0 00 044301 		ER3	AC,44301			;RESULT IN AC IS INCORRECT
+   901	030774	312 13 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+   902	030775	004 13 0 00 044301 		ER4	AC+1,44301		;RESULT IN AC+1 IS INCORRECT
+   903	030776	321 14 0 00 030767 		JUMPL	AC+2,E44300		;LOOP ON ERROR SWITCH^
+   904
+   905					;VERIFY THAT THE SIGN BIT OF AC+1 IS NOT MADE TO AGREE WITH THE SIGN BIT OF AC
+   906					;WHEN THE 'E' FIELD OF ASHC SECIFIES A SHIFT OF ZERO BIT POSITIONS.
+   907					;HENCE, C(AC+1) IS NOT ALTERE BY 'ASHC AC,0'.
+   908					;CHECK THIS WHEN THE SIGN BIT OF AC IS ONE AND THE SIGN BIT OF AC+1 IS ZERO.
+   909						SR2	(444,-1,-1,0,0,-1,-1,0,0,ASHC,0)^
+   910					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+   911					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD 0,0] 0 BIT POSITIONS AND
+   912					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+   913					;[XWD 0,0]
+   914
+   915	030777	200 12 0 00 041616 	E44400:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+   916	031000	200 13 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+   917	031001	244 12 0 00 000000 		ASHC	AC,0			;*SHIFT/ROTATE COMBINED 0 PLACES
+   918	031002	312 12 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+   919	031003	003 12 0 00 044401 		ER3	AC,44401			;RESULT IN AC IS INCORRECT
+   920	031004	312 13 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+   921	031005	004 13 0 00 044401 		ER4	AC+1,44401		;RESULT IN AC+1 IS INCORRECT
+   922	031006	321 14 0 00 030777 		JUMPL	AC+2,E44400		;LOOP ON ERROR SWITCH^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0033
+
+   923					SUBTTL	DIAGNOSTIC SECTION - TEST MQ-ADDER GATING
+   924
+   925			000010			AC=10
+   926						SAVEAC	(1,1)^
+   927	031007	201 12 0 00 031007 		MOVEI	AC+2,.		;SAVE TEST PC
+   928	031010	202 12 0 00 030051 		MOVEM	AC+2,TESTPC
+   929	031011	201 12 0 00 000012 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+   930	031012	202 12 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+   931
+   932			001500		SN=1500
+   933			000000			ZZ=0
+   934								;CHECK AC+1 RIGHT <
+   935					E1500:	REPEAT	^D18,<
+   936
+   937					;VERIFY MQ-AD GATING
+   938					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+   939					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+   940					;REPEAT FOR ALL 36 BITS OF MQ
+   941					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+   942					SN=SN+1
+   943						ZZ=ZZ+ZZ			;TESTED BIT
+   944						IFE	ZZ,
+   945						SETZM	AC			;CLEAR AC
+   946						MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+   947						ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+   948						CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+   949						ER4	AC+1,SN			;MQ-AD GATE FAILED
+   950						JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+   951					>
+   952
+   953
+   954					;VERIFY MQ-AD GATING
+   955					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+   956					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+   957					;REPEAT FOR ALL 36 BITS OF MQ
+   958					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+   959			001501		SN=SN+1
+   960			000000			ZZ=ZZ+ZZ			;TESTED BIT
+   961			000001			IFE	ZZ,
+   962	031013	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+   963	031014	201 11 0 00 000001 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+   964	031015	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+   965	031016	302 11 0 00 000001 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+   966	031017	004 11 0 00 001501 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+   967	031020	321 12 0 00 031013 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+   968
+   969
+   970
+   971					;VERIFY MQ-AD GATING
+   972					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+   973					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+   974					;REPEAT FOR ALL 36 BITS OF MQ
+   975					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+   976			001502		SN=SN+1
+   977			000002			ZZ=ZZ+ZZ			;TESTED BIT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0034
+
+   978						IFE	ZZ,
+   979	031021	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+   980	031022	201 11 0 00 000002 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+   981	031023	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+   982	031024	302 11 0 00 000002 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+   983	031025	004 11 0 00 001502 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+   984	031026	321 12 0 00 031021 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+   985
+   986
+   987
+   988					;VERIFY MQ-AD GATING
+   989					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+   990					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+   991					;REPEAT FOR ALL 36 BITS OF MQ
+   992					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+   993			001503		SN=SN+1
+   994			000004			ZZ=ZZ+ZZ			;TESTED BIT
+   995						IFE	ZZ,
+   996	031027	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+   997	031030	201 11 0 00 000004 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+   998	031031	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+   999	031032	302 11 0 00 000004 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1000	031033	004 11 0 00 001503 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1001	031034	321 12 0 00 031027 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1002
+  1003
+  1004
+  1005					;VERIFY MQ-AD GATING
+  1006					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1007					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1008					;REPEAT FOR ALL 36 BITS OF MQ
+  1009					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1010			001504		SN=SN+1
+  1011			000010			ZZ=ZZ+ZZ			;TESTED BIT
+  1012						IFE	ZZ,
+  1013	031035	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1014	031036	201 11 0 00 000010 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1015	031037	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1016	031040	302 11 0 00 000010 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1017	031041	004 11 0 00 001504 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1018	031042	321 12 0 00 031035 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1019
+  1020
+  1021
+  1022					;VERIFY MQ-AD GATING
+  1023					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1024					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1025					;REPEAT FOR ALL 36 BITS OF MQ
+  1026					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1027			001505		SN=SN+1
+  1028			000020			ZZ=ZZ+ZZ			;TESTED BIT
+  1029						IFE	ZZ,
+  1030	031043	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1031	031044	201 11 0 00 000020 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1032	031045	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0035
+
+  1033	031046	302 11 0 00 000020 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1034	031047	004 11 0 00 001505 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1035	031050	321 12 0 00 031043 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1036
+  1037
+  1038
+  1039					;VERIFY MQ-AD GATING
+  1040					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1041					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1042					;REPEAT FOR ALL 36 BITS OF MQ
+  1043					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1044			001506		SN=SN+1
+  1045			000040			ZZ=ZZ+ZZ			;TESTED BIT
+  1046						IFE	ZZ,
+  1047	031051	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1048	031052	201 11 0 00 000040 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1049	031053	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1050	031054	302 11 0 00 000040 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1051	031055	004 11 0 00 001506 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1052	031056	321 12 0 00 031051 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1053
+  1054
+  1055
+  1056					;VERIFY MQ-AD GATING
+  1057					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1058					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1059					;REPEAT FOR ALL 36 BITS OF MQ
+  1060					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1061			001507		SN=SN+1
+  1062			000100			ZZ=ZZ+ZZ			;TESTED BIT
+  1063						IFE	ZZ,
+  1064	031057	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1065	031060	201 11 0 00 000100 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1066	031061	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1067	031062	302 11 0 00 000100 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1068	031063	004 11 0 00 001507 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1069	031064	321 12 0 00 031057 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1070
+  1071
+  1072
+  1073					;VERIFY MQ-AD GATING
+  1074					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1075					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1076					;REPEAT FOR ALL 36 BITS OF MQ
+  1077					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1078			001510		SN=SN+1
+  1079			000200			ZZ=ZZ+ZZ			;TESTED BIT
+  1080						IFE	ZZ,
+  1081	031065	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1082	031066	201 11 0 00 000200 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1083	031067	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1084	031070	302 11 0 00 000200 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1085	031071	004 11 0 00 001510 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1086	031072	321 12 0 00 031065 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1087
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0036
+
+  1088
+  1089
+  1090					;VERIFY MQ-AD GATING
+  1091					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1092					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1093					;REPEAT FOR ALL 36 BITS OF MQ
+  1094					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1095			001511		SN=SN+1
+  1096			000400			ZZ=ZZ+ZZ			;TESTED BIT
+  1097						IFE	ZZ,
+  1098	031073	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1099	031074	201 11 0 00 000400 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1100	031075	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1101	031076	302 11 0 00 000400 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1102	031077	004 11 0 00 001511 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1103	031100	321 12 0 00 031073 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1104
+  1105
+  1106
+  1107					;VERIFY MQ-AD GATING
+  1108					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1109					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1110					;REPEAT FOR ALL 36 BITS OF MQ
+  1111					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1112			001512		SN=SN+1
+  1113			001000			ZZ=ZZ+ZZ			;TESTED BIT
+  1114						IFE	ZZ,
+  1115	031101	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1116	031102	201 11 0 00 001000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1117	031103	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1118	031104	302 11 0 00 001000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1119	031105	004 11 0 00 001512 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1120	031106	321 12 0 00 031101 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1121
+  1122
+  1123
+  1124					;VERIFY MQ-AD GATING
+  1125					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1126					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1127					;REPEAT FOR ALL 36 BITS OF MQ
+  1128					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1129			001513		SN=SN+1
+  1130			002000			ZZ=ZZ+ZZ			;TESTED BIT
+  1131						IFE	ZZ,
+  1132	031107	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1133	031110	201 11 0 00 002000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1134	031111	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1135	031112	302 11 0 00 002000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1136	031113	004 11 0 00 001513 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1137	031114	321 12 0 00 031107 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1138
+  1139
+  1140
+  1141					;VERIFY MQ-AD GATING
+  1142					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0037
+
+  1143					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1144					;REPEAT FOR ALL 36 BITS OF MQ
+  1145					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1146			001514		SN=SN+1
+  1147			004000			ZZ=ZZ+ZZ			;TESTED BIT
+  1148						IFE	ZZ,
+  1149	031115	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1150	031116	201 11 0 00 004000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1151	031117	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1152	031120	302 11 0 00 004000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1153	031121	004 11 0 00 001514 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1154	031122	321 12 0 00 031115 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1155
+  1156
+  1157
+  1158					;VERIFY MQ-AD GATING
+  1159					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1160					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1161					;REPEAT FOR ALL 36 BITS OF MQ
+  1162					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1163			001515		SN=SN+1
+  1164			010000			ZZ=ZZ+ZZ			;TESTED BIT
+  1165						IFE	ZZ,
+  1166	031123	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1167	031124	201 11 0 00 010000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1168	031125	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1169	031126	302 11 0 00 010000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1170	031127	004 11 0 00 001515 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1171	031130	321 12 0 00 031123 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1172
+  1173
+  1174
+  1175					;VERIFY MQ-AD GATING
+  1176					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1177					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1178					;REPEAT FOR ALL 36 BITS OF MQ
+  1179					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1180			001516		SN=SN+1
+  1181			020000			ZZ=ZZ+ZZ			;TESTED BIT
+  1182						IFE	ZZ,
+  1183	031131	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1184	031132	201 11 0 00 020000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1185	031133	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1186	031134	302 11 0 00 020000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1187	031135	004 11 0 00 001516 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1188	031136	321 12 0 00 031131 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1189
+  1190
+  1191
+  1192					;VERIFY MQ-AD GATING
+  1193					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1194					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1195					;REPEAT FOR ALL 36 BITS OF MQ
+  1196					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1197			001517		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0038
+
+  1198			040000			ZZ=ZZ+ZZ			;TESTED BIT
+  1199						IFE	ZZ,
+  1200	031137	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1201	031140	201 11 0 00 040000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1202	031141	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1203	031142	302 11 0 00 040000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1204	031143	004 11 0 00 001517 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1205	031144	321 12 0 00 031137 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1206
+  1207
+  1208
+  1209					;VERIFY MQ-AD GATING
+  1210					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1211					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1212					;REPEAT FOR ALL 36 BITS OF MQ
+  1213					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1214			001520		SN=SN+1
+  1215			100000			ZZ=ZZ+ZZ			;TESTED BIT
+  1216						IFE	ZZ,
+  1217	031145	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1218	031146	201 11 0 00 100000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1219	031147	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1220	031150	302 11 0 00 100000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1221	031151	004 11 0 00 001520 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1222	031152	321 12 0 00 031145 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1223
+  1224
+  1225
+  1226					;VERIFY MQ-AD GATING
+  1227					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1228					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1229					;REPEAT FOR ALL 36 BITS OF MQ
+  1230					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1231			001521		SN=SN+1
+  1232			200000			ZZ=ZZ+ZZ			;TESTED BIT
+  1233						IFE	ZZ,
+  1234	031153	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1235	031154	201 11 0 00 200000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+  1236	031155	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1237	031156	302 11 0 00 200000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1238	031157	004 11 0 00 001521 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1239	031160	321 12 0 00 031153 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1240
+  1241
+  1242
+  1243					;VERIFY MQ-AD GATING
+  1244					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1245					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1246					;REPEAT FOR ALL 36 BITS OF MQ
+  1247					;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+  1248			001522		SN=SN+1
+  1249			400000			ZZ=ZZ+ZZ			;TESTED BIT
+  1250						IFE	ZZ,
+  1251	031161	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1252	031162	201 11 0 00 400000 		MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0039
+
+  1253	031163	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+  1254	031164	302 11 0 00 400000 		CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+  1255	031165	004 11 0 00 001522 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1256	031166	321 12 0 00 031161 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1257
+  1258					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0040
+
+  1259			000000		ZZ=0
+  1260								;CHECK AC+1 LEFT <
+  1261						REPEAT	^D18,<
+  1262
+  1263					;VERIFY MQ-AD GATING
+  1264					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1265					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1266					;REPEAT FOR ALL 36 BITS OF MQ
+  1267					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1268					SN=SN+1
+  1269						ZZ=ZZ+ZZ			;TESTED BIT
+  1270						IFE	ZZ,
+  1271						SETZM	AC			;CLEAR AC
+  1272						MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1273						MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1274						ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1275						CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1276						ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1277						JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1278					>
+  1279
+  1280
+  1281					;VERIFY MQ-AD GATING
+  1282					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1283					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1284					;REPEAT FOR ALL 36 BITS OF MQ
+  1285					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1286			001523		SN=SN+1
+  1287			000000			ZZ=ZZ+ZZ			;TESTED BIT
+  1288			000001			IFE	ZZ,
+  1289	031167	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1290	031170	205 11 0 00 000001 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1291	031171	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1292	031172	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1293	031173	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1294	031174	004 11 0 00 001523 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1295	031175	321 12 0 00 031170 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1296
+  1297
+  1298
+  1299					;VERIFY MQ-AD GATING
+  1300					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1301					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1302					;REPEAT FOR ALL 36 BITS OF MQ
+  1303					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1304			001524		SN=SN+1
+  1305			000002			ZZ=ZZ+ZZ			;TESTED BIT
+  1306						IFE	ZZ,
+  1307	031176	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1308	031177	205 11 0 00 000002 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1309	031200	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1310	031201	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1311	031202	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1312	031203	004 11 0 00 001524 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1313	031204	321 12 0 00 031177 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0041
+
+  1314
+  1315
+  1316
+  1317					;VERIFY MQ-AD GATING
+  1318					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1319					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1320					;REPEAT FOR ALL 36 BITS OF MQ
+  1321					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1322			001525		SN=SN+1
+  1323			000004			ZZ=ZZ+ZZ			;TESTED BIT
+  1324						IFE	ZZ,
+  1325	031205	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1326	031206	205 11 0 00 000004 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1327	031207	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1328	031210	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1329	031211	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1330	031212	004 11 0 00 001525 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1331	031213	321 12 0 00 031206 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1332
+  1333
+  1334
+  1335					;VERIFY MQ-AD GATING
+  1336					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1337					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1338					;REPEAT FOR ALL 36 BITS OF MQ
+  1339					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1340			001526		SN=SN+1
+  1341			000010			ZZ=ZZ+ZZ			;TESTED BIT
+  1342						IFE	ZZ,
+  1343	031214	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1344	031215	205 11 0 00 000010 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1345	031216	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1346	031217	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1347	031220	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1348	031221	004 11 0 00 001526 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1349	031222	321 12 0 00 031215 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1350
+  1351
+  1352
+  1353					;VERIFY MQ-AD GATING
+  1354					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1355					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1356					;REPEAT FOR ALL 36 BITS OF MQ
+  1357					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1358			001527		SN=SN+1
+  1359			000020			ZZ=ZZ+ZZ			;TESTED BIT
+  1360						IFE	ZZ,
+  1361	031223	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1362	031224	205 11 0 00 000020 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1363	031225	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1364	031226	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1365	031227	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1366	031230	004 11 0 00 001527 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1367	031231	321 12 0 00 031224 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1368
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0042
+
+  1369
+  1370
+  1371					;VERIFY MQ-AD GATING
+  1372					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1373					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1374					;REPEAT FOR ALL 36 BITS OF MQ
+  1375					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1376			001530		SN=SN+1
+  1377			000040			ZZ=ZZ+ZZ			;TESTED BIT
+  1378						IFE	ZZ,
+  1379	031232	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1380	031233	205 11 0 00 000040 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1381	031234	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1382	031235	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1383	031236	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1384	031237	004 11 0 00 001530 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1385	031240	321 12 0 00 031233 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1386
+  1387
+  1388
+  1389					;VERIFY MQ-AD GATING
+  1390					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1391					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1392					;REPEAT FOR ALL 36 BITS OF MQ
+  1393					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1394			001531		SN=SN+1
+  1395			000100			ZZ=ZZ+ZZ			;TESTED BIT
+  1396						IFE	ZZ,
+  1397	031241	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1398	031242	205 11 0 00 000100 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1399	031243	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1400	031244	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1401	031245	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1402	031246	004 11 0 00 001531 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1403	031247	321 12 0 00 031242 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1404
+  1405
+  1406
+  1407					;VERIFY MQ-AD GATING
+  1408					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1409					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1410					;REPEAT FOR ALL 36 BITS OF MQ
+  1411					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1412			001532		SN=SN+1
+  1413			000200			ZZ=ZZ+ZZ			;TESTED BIT
+  1414						IFE	ZZ,
+  1415	031250	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1416	031251	205 11 0 00 000200 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1417	031252	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1418	031253	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1419	031254	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1420	031255	004 11 0 00 001532 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1421	031256	321 12 0 00 031251 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1422
+  1423
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0043
+
+  1424
+  1425					;VERIFY MQ-AD GATING
+  1426					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1427					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1428					;REPEAT FOR ALL 36 BITS OF MQ
+  1429					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1430			001533		SN=SN+1
+  1431			000400			ZZ=ZZ+ZZ			;TESTED BIT
+  1432						IFE	ZZ,
+  1433	031257	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1434	031260	205 11 0 00 000400 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1435	031261	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1436	031262	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1437	031263	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1438	031264	004 11 0 00 001533 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1439	031265	321 12 0 00 031260 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1440
+  1441
+  1442
+  1443					;VERIFY MQ-AD GATING
+  1444					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1445					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1446					;REPEAT FOR ALL 36 BITS OF MQ
+  1447					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1448			001534		SN=SN+1
+  1449			001000			ZZ=ZZ+ZZ			;TESTED BIT
+  1450						IFE	ZZ,
+  1451	031266	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1452	031267	205 11 0 00 001000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1453	031270	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1454	031271	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1455	031272	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1456	031273	004 11 0 00 001534 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1457	031274	321 12 0 00 031267 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1458
+  1459
+  1460
+  1461					;VERIFY MQ-AD GATING
+  1462					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1463					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1464					;REPEAT FOR ALL 36 BITS OF MQ
+  1465					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1466			001535		SN=SN+1
+  1467			002000			ZZ=ZZ+ZZ			;TESTED BIT
+  1468						IFE	ZZ,
+  1469	031275	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1470	031276	205 11 0 00 002000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1471	031277	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1472	031300	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1473	031301	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1474	031302	004 11 0 00 001535 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1475	031303	321 12 0 00 031276 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1476
+  1477
+  1478
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0044
+
+  1479					;VERIFY MQ-AD GATING
+  1480					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1481					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1482					;REPEAT FOR ALL 36 BITS OF MQ
+  1483					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1484			001536		SN=SN+1
+  1485			004000			ZZ=ZZ+ZZ			;TESTED BIT
+  1486						IFE	ZZ,
+  1487	031304	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1488	031305	205 11 0 00 004000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1489	031306	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1490	031307	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1491	031310	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1492	031311	004 11 0 00 001536 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1493	031312	321 12 0 00 031305 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1494
+  1495
+  1496
+  1497					;VERIFY MQ-AD GATING
+  1498					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1499					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1500					;REPEAT FOR ALL 36 BITS OF MQ
+  1501					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1502			001537		SN=SN+1
+  1503			010000			ZZ=ZZ+ZZ			;TESTED BIT
+  1504						IFE	ZZ,
+  1505	031313	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1506	031314	205 11 0 00 010000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1507	031315	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1508	031316	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1509	031317	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1510	031320	004 11 0 00 001537 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1511	031321	321 12 0 00 031314 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1512
+  1513
+  1514
+  1515					;VERIFY MQ-AD GATING
+  1516					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1517					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1518					;REPEAT FOR ALL 36 BITS OF MQ
+  1519					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1520			001540		SN=SN+1
+  1521			020000			ZZ=ZZ+ZZ			;TESTED BIT
+  1522						IFE	ZZ,
+  1523	031322	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1524	031323	205 11 0 00 020000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1525	031324	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1526	031325	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1527	031326	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1528	031327	004 11 0 00 001540 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1529	031330	321 12 0 00 031323 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1530
+  1531
+  1532
+  1533					;VERIFY MQ-AD GATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0045
+
+  1534					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1535					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1536					;REPEAT FOR ALL 36 BITS OF MQ
+  1537					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1538			001541		SN=SN+1
+  1539			040000			ZZ=ZZ+ZZ			;TESTED BIT
+  1540						IFE	ZZ,
+  1541	031331	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1542	031332	205 11 0 00 040000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1543	031333	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1544	031334	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1545	031335	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1546	031336	004 11 0 00 001541 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1547	031337	321 12 0 00 031332 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1548
+  1549
+  1550
+  1551					;VERIFY MQ-AD GATING
+  1552					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1553					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1554					;REPEAT FOR ALL 36 BITS OF MQ
+  1555					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1556			001542		SN=SN+1
+  1557			100000			ZZ=ZZ+ZZ			;TESTED BIT
+  1558						IFE	ZZ,
+  1559	031340	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1560	031341	205 11 0 00 100000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1561	031342	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1562	031343	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1563	031344	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1564	031345	004 11 0 00 001542 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1565	031346	321 12 0 00 031341 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1566
+  1567
+  1568
+  1569					;VERIFY MQ-AD GATING
+  1570					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+  1571					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1572					;REPEAT FOR ALL 36 BITS OF MQ
+  1573					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1574			001543		SN=SN+1
+  1575			200000			ZZ=ZZ+ZZ			;TESTED BIT
+  1576						IFE	ZZ,
+  1577	031347	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1578	031350	205 11 0 00 200000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1579	031351	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1580	031352	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1581	031353	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1582	031354	004 11 0 00 001543 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1583	031355	321 12 0 00 031350 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1584
+  1585
+  1586
+  1587					;VERIFY MQ-AD GATING
+  1588					;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 6-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0046
+
+  1589					;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+  1590					;REPEAT FOR ALL 36 BITS OF MQ
+  1591					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1592			001544		SN=SN+1
+  1593			400000			ZZ=ZZ+ZZ			;TESTED BIT
+  1594						IFE	ZZ,
+  1595	031356	402 00 0 00 000010 		SETZM	AC			;CLEAR AC
+  1596	031357	205 11 0 00 400000 		MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+  1597	031360	200 07 0 00 000011 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1598	031361	245 10 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1599	031362	312 11 0 00 000007 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1600	031363	004 11 0 00 001544 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1601	031364	321 12 0 00 031357 		JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+  1602
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0047
+
+  1603			000007			AC=7
+  1604						SAVEAC	(1,1)^
+  1605	031365	201 11 0 00 031365 		MOVEI	AC+2,.		;SAVE TEST PC
+  1606	031366	202 11 0 00 030051 		MOVEM	AC+2,TESTPC
+  1607	031367	201 11 0 00 000011 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  1608	031370	202 11 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  1609
+  1610			001600		SN=1600
+  1611
+  1612			000000			ZZ=0
+  1613
+  1614								;CHECK AC+1 RIGHT <
+  1615					E1600:	REPEAT	^D18,<
+  1616
+  1617					;VERIFY MQ-AD GATING
+  1618					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1619					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1620					;REPEAT FOR ALL 36 BITS OF MQ
+  1621					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1622					SN=SN+1
+  1623						ZZ=ZZ+ZZ+1			;TESTED BIT
+  1624						IFE	ZZ,
+  1625						SETOM	AC			;INITIALIZE TO ALL ONES
+  1626						HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1627						MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1628						ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1629						CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1630						ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1631						JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1632					>
+  1633
+  1634
+  1635					;VERIFY MQ-AD GATING
+  1636					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1637					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1638					;REPEAT FOR ALL 36 BITS OF MQ
+  1639					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1640			001601		SN=SN+1
+  1641			000001			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1642						IFE	ZZ,
+  1643	031371	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1644	031372	561 10 0 00 000001 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1645	031373	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1646	031374	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1647	031375	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1648	031376	004 10 0 00 001601 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1649	031377	321 11 0 00 031371 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1650
+  1651
+  1652
+  1653					;VERIFY MQ-AD GATING
+  1654					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1655					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1656					;REPEAT FOR ALL 36 BITS OF MQ
+  1657					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0048
+
+  1658			001602		SN=SN+1
+  1659			000003			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1660						IFE	ZZ,
+  1661	031400	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1662	031401	561 10 0 00 000003 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1663	031402	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1664	031403	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1665	031404	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1666	031405	004 10 0 00 001602 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1667	031406	321 11 0 00 031400 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1668
+  1669
+  1670
+  1671					;VERIFY MQ-AD GATING
+  1672					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1673					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1674					;REPEAT FOR ALL 36 BITS OF MQ
+  1675					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1676			001603		SN=SN+1
+  1677			000007			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1678						IFE	ZZ,
+  1679	031407	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1680	031410	561 10 0 00 000007 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1681	031411	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1682	031412	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1683	031413	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1684	031414	004 10 0 00 001603 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1685	031415	321 11 0 00 031407 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1686
+  1687
+  1688
+  1689					;VERIFY MQ-AD GATING
+  1690					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1691					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1692					;REPEAT FOR ALL 36 BITS OF MQ
+  1693					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1694			001604		SN=SN+1
+  1695			000017			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1696						IFE	ZZ,
+  1697	031416	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1698	031417	561 10 0 00 000017 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1699	031420	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1700	031421	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1701	031422	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1702	031423	004 10 0 00 001604 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1703	031424	321 11 0 00 031416 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1704
+  1705
+  1706
+  1707					;VERIFY MQ-AD GATING
+  1708					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1709					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1710					;REPEAT FOR ALL 36 BITS OF MQ
+  1711					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1712			001605		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0049
+
+  1713			000037			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1714						IFE	ZZ,
+  1715	031425	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1716	031426	561 10 0 00 000037 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1717	031427	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1718	031430	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1719	031431	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1720	031432	004 10 0 00 001605 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1721	031433	321 11 0 00 031425 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1722
+  1723
+  1724
+  1725					;VERIFY MQ-AD GATING
+  1726					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1727					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1728					;REPEAT FOR ALL 36 BITS OF MQ
+  1729					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1730			001606		SN=SN+1
+  1731			000077			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1732						IFE	ZZ,
+  1733	031434	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1734	031435	561 10 0 00 000077 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1735	031436	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1736	031437	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1737	031440	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1738	031441	004 10 0 00 001606 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1739	031442	321 11 0 00 031434 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1740
+  1741
+  1742
+  1743					;VERIFY MQ-AD GATING
+  1744					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1745					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1746					;REPEAT FOR ALL 36 BITS OF MQ
+  1747					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1748			001607		SN=SN+1
+  1749			000177			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1750						IFE	ZZ,
+  1751	031443	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1752	031444	561 10 0 00 000177 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1753	031445	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1754	031446	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1755	031447	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1756	031450	004 10 0 00 001607 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1757	031451	321 11 0 00 031443 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1758
+  1759
+  1760
+  1761					;VERIFY MQ-AD GATING
+  1762					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1763					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1764					;REPEAT FOR ALL 36 BITS OF MQ
+  1765					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1766			001610		SN=SN+1
+  1767			000377			ZZ=ZZ+ZZ+1			;TESTED BIT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0050
+
+  1768						IFE	ZZ,
+  1769	031452	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1770	031453	561 10 0 00 000377 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1771	031454	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1772	031455	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1773	031456	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1774	031457	004 10 0 00 001610 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1775	031460	321 11 0 00 031452 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1776
+  1777
+  1778
+  1779					;VERIFY MQ-AD GATING
+  1780					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1781					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1782					;REPEAT FOR ALL 36 BITS OF MQ
+  1783					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1784			001611		SN=SN+1
+  1785			000777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1786						IFE	ZZ,
+  1787	031461	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1788	031462	561 10 0 00 000777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1789	031463	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1790	031464	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1791	031465	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1792	031466	004 10 0 00 001611 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1793	031467	321 11 0 00 031461 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1794
+  1795
+  1796
+  1797					;VERIFY MQ-AD GATING
+  1798					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1799					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1800					;REPEAT FOR ALL 36 BITS OF MQ
+  1801					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1802			001612		SN=SN+1
+  1803			001777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1804						IFE	ZZ,
+  1805	031470	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1806	031471	561 10 0 00 001777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1807	031472	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1808	031473	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1809	031474	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1810	031475	004 10 0 00 001612 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1811	031476	321 11 0 00 031470 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1812
+  1813
+  1814
+  1815					;VERIFY MQ-AD GATING
+  1816					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1817					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1818					;REPEAT FOR ALL 36 BITS OF MQ
+  1819					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1820			001613		SN=SN+1
+  1821			003777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1822						IFE	ZZ,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0051
+
+  1823	031477	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1824	031500	561 10 0 00 003777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1825	031501	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1826	031502	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1827	031503	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1828	031504	004 10 0 00 001613 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1829	031505	321 11 0 00 031477 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1830
+  1831
+  1832
+  1833					;VERIFY MQ-AD GATING
+  1834					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1835					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1836					;REPEAT FOR ALL 36 BITS OF MQ
+  1837					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1838			001614		SN=SN+1
+  1839			007777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1840						IFE	ZZ,
+  1841	031506	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1842	031507	561 10 0 00 007777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1843	031510	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1844	031511	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1845	031512	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1846	031513	004 10 0 00 001614 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1847	031514	321 11 0 00 031506 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1848
+  1849
+  1850
+  1851					;VERIFY MQ-AD GATING
+  1852					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1853					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1854					;REPEAT FOR ALL 36 BITS OF MQ
+  1855					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1856			001615		SN=SN+1
+  1857			017777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1858						IFE	ZZ,
+  1859	031515	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1860	031516	561 10 0 00 017777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1861	031517	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1862	031520	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1863	031521	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1864	031522	004 10 0 00 001615 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1865	031523	321 11 0 00 031515 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1866
+  1867
+  1868
+  1869					;VERIFY MQ-AD GATING
+  1870					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1871					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1872					;REPEAT FOR ALL 36 BITS OF MQ
+  1873					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1874			001616		SN=SN+1
+  1875			037777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1876						IFE	ZZ,
+  1877	031524	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0052
+
+  1878	031525	561 10 0 00 037777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1879	031526	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1880	031527	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1881	031530	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1882	031531	004 10 0 00 001616 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1883	031532	321 11 0 00 031524 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1884
+  1885
+  1886
+  1887					;VERIFY MQ-AD GATING
+  1888					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1889					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1890					;REPEAT FOR ALL 36 BITS OF MQ
+  1891					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1892			001617		SN=SN+1
+  1893			077777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1894						IFE	ZZ,
+  1895	031533	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1896	031534	561 10 0 00 077777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1897	031535	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1898	031536	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1899	031537	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1900	031540	004 10 0 00 001617 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1901	031541	321 11 0 00 031533 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1902
+  1903
+  1904
+  1905					;VERIFY MQ-AD GATING
+  1906					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1907					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1908					;REPEAT FOR ALL 36 BITS OF MQ
+  1909					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1910			001620		SN=SN+1
+  1911			177777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1912						IFE	ZZ,
+  1913	031542	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1914	031543	561 10 0 00 177777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1915	031544	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1916	031545	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1917	031546	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1918	031547	004 10 0 00 001620 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1919	031550	321 11 0 00 031542 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1920
+  1921
+  1922
+  1923					;VERIFY MQ-AD GATING
+  1924					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1925					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1926					;REPEAT FOR ALL 36 BITS OF MQ
+  1927					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1928			001621		SN=SN+1
+  1929			377777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1930						IFE	ZZ,
+  1931	031551	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1932	031552	561 10 0 00 377777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0053
+
+  1933	031553	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1934	031554	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1935	031555	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1936	031556	004 10 0 00 001621 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1937	031557	321 11 0 00 031551 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1938
+  1939
+  1940
+  1941					;VERIFY MQ-AD GATING
+  1942					;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+  1943					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1944					;REPEAT FOR ALL 36 BITS OF MQ
+  1945					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1946			001622		SN=SN+1
+  1947			777777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1948						IFE	ZZ,
+  1949	031560	476 00 0 00 000007 		SETOM	AC			;INITIALIZE TO ALL ONES
+  1950	031561	561 10 0 00 777777 		HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1951	031562	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1952	031563	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1953	031564	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1954	031565	004 10 0 00 001622 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1955	031566	321 11 0 00 031560 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1956
+  1957					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0054
+
+  1958			000000		ZZ=0
+  1959								;CHECK AC+1 LEFT <
+  1960						REPEAT	^D18,<
+  1961
+  1962					;VERIFY MQ-AD GATING
+  1963					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  1964					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1965					;REPEAT FOR ALL 36 BITS OF MQ
+  1966					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1967					SN=SN+1
+  1968						ZZ=ZZ+ZZ+1			;TESTED BIT
+  1969						IFE	ZZ,
+  1970						SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  1971						HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1972						MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1973						ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1974						CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1975						ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1976						JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1977					>
+  1978
+  1979
+  1980					;VERIFY MQ-AD GATING
+  1981					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  1982					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  1983					;REPEAT FOR ALL 36 BITS OF MQ
+  1984					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  1985			001623		SN=SN+1
+  1986			000001			ZZ=ZZ+ZZ+1			;TESTED BIT
+  1987						IFE	ZZ,
+  1988	031567	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  1989	031570	525 10 0 00 000001 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  1990	031571	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  1991	031572	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  1992	031573	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  1993	031574	004 10 0 00 001623 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  1994	031575	321 11 0 00 031567 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  1995
+  1996
+  1997
+  1998					;VERIFY MQ-AD GATING
+  1999					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2000					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2001					;REPEAT FOR ALL 36 BITS OF MQ
+  2002					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2003			001624		SN=SN+1
+  2004			000003			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2005						IFE	ZZ,
+  2006	031576	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2007	031577	525 10 0 00 000003 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2008	031600	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2009	031601	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2010	031602	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2011	031603	004 10 0 00 001624 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2012	031604	321 11 0 00 031576 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0055
+
+  2013
+  2014
+  2015
+  2016					;VERIFY MQ-AD GATING
+  2017					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2018					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2019					;REPEAT FOR ALL 36 BITS OF MQ
+  2020					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2021			001625		SN=SN+1
+  2022			000007			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2023						IFE	ZZ,
+  2024	031605	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2025	031606	525 10 0 00 000007 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2026	031607	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2027	031610	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2028	031611	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2029	031612	004 10 0 00 001625 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2030	031613	321 11 0 00 031605 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2031
+  2032
+  2033
+  2034					;VERIFY MQ-AD GATING
+  2035					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2036					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2037					;REPEAT FOR ALL 36 BITS OF MQ
+  2038					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2039			001626		SN=SN+1
+  2040			000017			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2041						IFE	ZZ,
+  2042	031614	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2043	031615	525 10 0 00 000017 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2044	031616	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2045	031617	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2046	031620	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2047	031621	004 10 0 00 001626 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2048	031622	321 11 0 00 031614 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2049
+  2050
+  2051
+  2052					;VERIFY MQ-AD GATING
+  2053					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2054					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2055					;REPEAT FOR ALL 36 BITS OF MQ
+  2056					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2057			001627		SN=SN+1
+  2058			000037			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2059						IFE	ZZ,
+  2060	031623	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2061	031624	525 10 0 00 000037 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2062	031625	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2063	031626	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2064	031627	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2065	031630	004 10 0 00 001627 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2066	031631	321 11 0 00 031623 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2067
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0056
+
+  2068
+  2069
+  2070					;VERIFY MQ-AD GATING
+  2071					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2072					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2073					;REPEAT FOR ALL 36 BITS OF MQ
+  2074					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2075			001630		SN=SN+1
+  2076			000077			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2077						IFE	ZZ,
+  2078	031632	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2079	031633	525 10 0 00 000077 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2080	031634	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2081	031635	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2082	031636	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2083	031637	004 10 0 00 001630 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2084	031640	321 11 0 00 031632 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2085
+  2086
+  2087
+  2088					;VERIFY MQ-AD GATING
+  2089					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2090					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2091					;REPEAT FOR ALL 36 BITS OF MQ
+  2092					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2093			001631		SN=SN+1
+  2094			000177			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2095						IFE	ZZ,
+  2096	031641	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2097	031642	525 10 0 00 000177 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2098	031643	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2099	031644	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2100	031645	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2101	031646	004 10 0 00 001631 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2102	031647	321 11 0 00 031641 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2103
+  2104
+  2105
+  2106					;VERIFY MQ-AD GATING
+  2107					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2108					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2109					;REPEAT FOR ALL 36 BITS OF MQ
+  2110					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2111			001632		SN=SN+1
+  2112			000377			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2113						IFE	ZZ,
+  2114	031650	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2115	031651	525 10 0 00 000377 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2116	031652	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2117	031653	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2118	031654	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2119	031655	004 10 0 00 001632 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2120	031656	321 11 0 00 031650 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2121
+  2122
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0057
+
+  2123
+  2124					;VERIFY MQ-AD GATING
+  2125					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2126					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2127					;REPEAT FOR ALL 36 BITS OF MQ
+  2128					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2129			001633		SN=SN+1
+  2130			000777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2131						IFE	ZZ,
+  2132	031657	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2133	031660	525 10 0 00 000777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2134	031661	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2135	031662	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2136	031663	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2137	031664	004 10 0 00 001633 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2138	031665	321 11 0 00 031657 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2139
+  2140
+  2141
+  2142					;VERIFY MQ-AD GATING
+  2143					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2144					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2145					;REPEAT FOR ALL 36 BITS OF MQ
+  2146					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2147			001634		SN=SN+1
+  2148			001777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2149						IFE	ZZ,
+  2150	031666	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2151	031667	525 10 0 00 001777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2152	031670	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2153	031671	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2154	031672	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2155	031673	004 10 0 00 001634 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2156	031674	321 11 0 00 031666 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2157
+  2158
+  2159
+  2160					;VERIFY MQ-AD GATING
+  2161					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2162					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2163					;REPEAT FOR ALL 36 BITS OF MQ
+  2164					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2165			001635		SN=SN+1
+  2166			003777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2167						IFE	ZZ,
+  2168	031675	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2169	031676	525 10 0 00 003777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2170	031677	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2171	031700	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2172	031701	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2173	031702	004 10 0 00 001635 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2174	031703	321 11 0 00 031675 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2175
+  2176
+  2177
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0058
+
+  2178					;VERIFY MQ-AD GATING
+  2179					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2180					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2181					;REPEAT FOR ALL 36 BITS OF MQ
+  2182					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2183			001636		SN=SN+1
+  2184			007777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2185						IFE	ZZ,
+  2186	031704	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2187	031705	525 10 0 00 007777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2188	031706	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2189	031707	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2190	031710	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2191	031711	004 10 0 00 001636 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2192	031712	321 11 0 00 031704 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2193
+  2194
+  2195
+  2196					;VERIFY MQ-AD GATING
+  2197					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2198					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2199					;REPEAT FOR ALL 36 BITS OF MQ
+  2200					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2201			001637		SN=SN+1
+  2202			017777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2203						IFE	ZZ,
+  2204	031713	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2205	031714	525 10 0 00 017777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2206	031715	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2207	031716	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2208	031717	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2209	031720	004 10 0 00 001637 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2210	031721	321 11 0 00 031713 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2211
+  2212
+  2213
+  2214					;VERIFY MQ-AD GATING
+  2215					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2216					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2217					;REPEAT FOR ALL 36 BITS OF MQ
+  2218					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2219			001640		SN=SN+1
+  2220			037777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2221						IFE	ZZ,
+  2222	031722	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2223	031723	525 10 0 00 037777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2224	031724	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2225	031725	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2226	031726	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2227	031727	004 10 0 00 001640 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2228	031730	321 11 0 00 031722 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2229
+  2230
+  2231
+  2232					;VERIFY MQ-AD GATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0059
+
+  2233					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2234					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2235					;REPEAT FOR ALL 36 BITS OF MQ
+  2236					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2237			001641		SN=SN+1
+  2238			077777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2239						IFE	ZZ,
+  2240	031731	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2241	031732	525 10 0 00 077777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2242	031733	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2243	031734	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2244	031735	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2245	031736	004 10 0 00 001641 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2246	031737	321 11 0 00 031731 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2247
+  2248
+  2249
+  2250					;VERIFY MQ-AD GATING
+  2251					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2252					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2253					;REPEAT FOR ALL 36 BITS OF MQ
+  2254					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2255			001642		SN=SN+1
+  2256			177777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2257						IFE	ZZ,
+  2258	031740	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2259	031741	525 10 0 00 177777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2260	031742	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2261	031743	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2262	031744	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2263	031745	004 10 0 00 001642 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2264	031746	321 11 0 00 031740 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2265
+  2266
+  2267
+  2268					;VERIFY MQ-AD GATING
+  2269					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+  2270					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2271					;REPEAT FOR ALL 36 BITS OF MQ
+  2272					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2273			001643		SN=SN+1
+  2274			377777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2275						IFE	ZZ,
+  2276	031747	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2277	031750	525 10 0 00 377777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2278	031751	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2279	031752	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2280	031753	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2281	031754	004 10 0 00 001643 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2282	031755	321 11 0 00 031747 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2283
+  2284
+  2285
+  2286					;VERIFY MQ-AD GATING
+  2287					;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 7-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ-ADDER GATING                                          SEQ 0060
+
+  2288					;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+  2289					;REPEAT FOR ALL 36 BITS OF MQ
+  2290					;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+  2291			001644		SN=SN+1
+  2292			777777			ZZ=ZZ+ZZ+1			;TESTED BIT
+  2293						IFE	ZZ,
+  2294	031756	476 00 0 00 000007 		SETOM	AC			;INITIALIZE	AC TO ALL ONES
+  2295	031757	525 10 0 00 777777 		HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+  2296	031760	200 06 0 00 000010 		MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+  2297	031761	245 07 0 00 000000 		ROTC	AC,0		;*ROT 0 BIT POSITIONS
+  2298	031762	312 10 0 00 000006 		CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+  2299	031763	004 10 0 00 001644 		ER4	AC+1,SN			;MQ-AD GATE FAILED
+  2300	031764	321 11 0 00 031756 		JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+  2301
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - BASIC SHIFT TEST (0,1,-1,-2 BIT POSITIONS)                    SEQ 0061
+
+  2302					SUBTTL	DIAGNOSTIC SECTION - BASIC SHIFT TEST (0,1,-1,-2 BIT POSITIONS)
+  2303
+  2304					;BASIC SHIFT TEST
+  2305					;TEST ABILITY TO SHIFT A BIT 0,1,-1 AND -2 POSITIONS
+  2306
+  2307			000004			AC=4
+  2308						SAVEAC	(1,1)^
+  2309	031765	201 06 0 00 031765 		MOVEI	AC+2,.		;SAVE TEST PC
+  2310	031766	202 06 0 00 030051 		MOVEM	AC+2,TESTPC
+  2311	031767	201 06 0 00 000006 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  2312	031770	202 06 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  2313
+  2314					;TEST ABILITY TO SHIFT A BIT ZERO POSITIONS USING LSH
+  2315						SR1	(17,0,10,0,10,LSH,0)^
+  2316					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,10] 0 BIT
+  2317					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,10]
+  2318					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+  2319
+  2320	031771	200 04 0 00 041617 	E1700:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2321	031772	200 05 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+  2322	031773	242 04 0 00 000000 		LSH	AC,0			;*SHIFT/ROTATE 0 BIT POSITIONS
+  2323	031774	312 04 0 00 041617 		CAME	AC,[XWD 0,10]	;IS RESULT IN AC CORRECT?
+  2324	031775	003 04 0 00 001701 		ER3	AC,1701			;RESULT IN AC IS INCORRECT
+  2325	031776	312 05 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+  2326	031777	004 05 0 00 001701 		ER4	AC+1,1701		;C(AC+1) WAS MODIFIED INCORRECTLY
+  2327	032000	321 06 0 00 031771 		JUMPL	AC+2,E1700		;LOOP ON ERROR SWITCH^
+  2328
+  2329					;TEST ABILITY TO SHIFT A BIT LEFT ONE POSITION USING LSH
+  2330						SR1	(20,0,10,0,20,LSH,1)^
+  2331					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,10] 1 BIT
+  2332					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,20]
+  2333					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+  2334
+  2335	032001	200 04 0 00 041617 	E2000:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2336	032002	200 05 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+  2337	032003	242 04 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+  2338	032004	312 04 0 00 041621 		CAME	AC,[XWD 0,20]	;IS RESULT IN AC CORRECT?
+  2339	032005	003 04 0 00 002001 		ER3	AC,2001			;RESULT IN AC IS INCORRECT
+  2340	032006	312 05 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+  2341	032007	004 05 0 00 002001 		ER4	AC+1,2001		;C(AC+1) WAS MODIFIED INCORRECTLY
+  2342	032010	321 06 0 00 032001 		JUMPL	AC+2,E2000		;LOOP ON ERROR SWITCH^
+  2343
+  2344					;TEST ABILITY TO SHIFT A BIT RIGHT ONE POSITION USING LSH
+  2345						SR1	(442,0,10,0,4,LSH,-1)^
+  2346					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,10] -1 BIT
+  2347					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,4]
+  2348					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+  2349
+  2350	032011	200 04 0 00 041617 	E44200:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2351	032012	200 05 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+  2352	032013	242 04 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+  2353	032014	312 04 0 00 041622 		CAME	AC,[XWD 0,4]	;IS RESULT IN AC CORRECT?
+  2354	032015	003 04 0 00 044201 		ER3	AC,44201			;RESULT IN AC IS INCORRECT
+  2355	032016	312 05 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+  2356	032017	004 05 0 00 044201 		ER4	AC+1,44201		;C(AC+1) WAS MODIFIED INCORRECTLY
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 8-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - BASIC SHIFT TEST (0,1,-1,-2 BIT POSITIONS)                    SEQ 0062
+
+  2357	032020	321 06 0 00 032011 		JUMPL	AC+2,E44200		;LOOP ON ERROR SWITCH^
+  2358
+  2359					;TEST ABILITY TO SHIFT A BIT RIGHT TWO POSITIONS USING LSH
+  2360						SR1	(21,0,10,0,2,LSH,-2)^
+  2361					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,10] -2 BIT
+  2362					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+  2363					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+  2364
+  2365	032021	200 04 0 00 041617 	E2100:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2366	032022	200 05 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+  2367	032023	242 04 0 00 777776 		LSH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+  2368	032024	312 04 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+  2369	032025	003 04 0 00 002101 		ER3	AC,2101			;RESULT IN AC IS INCORRECT
+  2370	032026	312 05 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+  2371	032027	004 05 0 00 002101 		ER4	AC+1,2101		;C(AC+1) WAS MODIFIED INCORRECTLY
+  2372	032030	321 06 0 00 032021 		JUMPL	AC+2,E2100		;LOOP ON ERROR SWITCH^
+  2373					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 8-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - BASIC SHIFT TEST (0,1,-1,-2 BIT POSITIONS)                    SEQ 0063
+
+  2374					;TEST ABILITY TO SHIFT A BIT ZERO POSITIONS USING LSHC
+  2375						SR2	(22,0,10,0,10,0,10,0,10,LSHC,0)^
+  2376					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+  2377					;DATA SPECIFIED IN [XWD 0,10] AND [XWD 0,10] 0 BIT POSITIONS AND
+  2378					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,10] AND
+  2379					;[XWD 0,10]
+  2380
+  2381	032031	200 04 0 00 041617 	E2200:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2382	032032	200 05 0 00 041617 		MOVE	AC+1,[XWD 0,10]	;INITIALIZE AC+1
+  2383	032033	246 04 0 00 000000 		LSHC	AC,0			;*SHIFT/ROTATE COMBINED 0 PLACES
+  2384	032034	312 04 0 00 041617 		CAME	AC,[XWD 0,10]	;IS RESULT IN AC CORRECT?
+  2385	032035	003 04 0 00 002201 		ER3	AC,2201			;RESULT IN AC IS INCORRECT
+  2386	032036	312 05 0 00 041617 		CAME	AC+1,[XWD 0,10]	;IS RESULT IN AC+1 CORRECT?
+  2387	032037	004 05 0 00 002201 		ER4	AC+1,2201		;RESULT IN AC+1 IS INCORRECT
+  2388	032040	321 06 0 00 032031 		JUMPL	AC+2,E2200		;LOOP ON ERROR SWITCH^
+  2389
+  2390					;TEST ABILITY TO SHIFT A BIT LEFT ONE POSITION USING LSHC
+  2391						SR2	(23,0,10,0,10,0,20,0,20,LSHC,1)^
+  2392					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+  2393					;DATA SPECIFIED IN [XWD 0,10] AND [XWD 0,10] 1 BIT POSITIONS AND
+  2394					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,20] AND
+  2395					;[XWD 0,20]
+  2396
+  2397	032041	200 04 0 00 041617 	E2300:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2398	032042	200 05 0 00 041617 		MOVE	AC+1,[XWD 0,10]	;INITIALIZE AC+1
+  2399	032043	246 04 0 00 000001 		LSHC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+  2400	032044	312 04 0 00 041621 		CAME	AC,[XWD 0,20]	;IS RESULT IN AC CORRECT?
+  2401	032045	003 04 0 00 002301 		ER3	AC,2301			;RESULT IN AC IS INCORRECT
+  2402	032046	312 05 0 00 041621 		CAME	AC+1,[XWD 0,20]	;IS RESULT IN AC+1 CORRECT?
+  2403	032047	004 05 0 00 002301 		ER4	AC+1,2301		;RESULT IN AC+1 IS INCORRECT
+  2404	032050	321 06 0 00 032041 		JUMPL	AC+2,E2300		;LOOP ON ERROR SWITCH^
+  2405
+  2406					;TEST ABILITY TO SHIFT A BIT RIGHT ONE POSITION USING LSHC
+  2407						SR2	(24,0,10,0,10,0,4,0,4,LSHC,-1)^
+  2408					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+  2409					;DATA SPECIFIED IN [XWD 0,10] AND [XWD 0,10] -1 BIT POSITIONS AND
+  2410					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,4] AND
+  2411					;[XWD 0,4]
+  2412
+  2413	032051	200 04 0 00 041617 	E2400:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2414	032052	200 05 0 00 041617 		MOVE	AC+1,[XWD 0,10]	;INITIALIZE AC+1
+  2415	032053	246 04 0 00 777777 		LSHC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+  2416	032054	312 04 0 00 041622 		CAME	AC,[XWD 0,4]	;IS RESULT IN AC CORRECT?
+  2417	032055	003 04 0 00 002401 		ER3	AC,2401			;RESULT IN AC IS INCORRECT
+  2418	032056	312 05 0 00 041622 		CAME	AC+1,[XWD 0,4]	;IS RESULT IN AC+1 CORRECT?
+  2419	032057	004 05 0 00 002401 		ER4	AC+1,2401		;RESULT IN AC+1 IS INCORRECT
+  2420	032060	321 06 0 00 032051 		JUMPL	AC+2,E2400		;LOOP ON ERROR SWITCH^
+  2421
+  2422					;TEST ABILITY TO SHIFT A BIT RIGHT TWO POSITIONS USING LSHC
+  2423						SR2	(25,0,10,0,10,0,2,0,2,LSHC,-2)^
+  2424					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+  2425					;DATA SPECIFIED IN [XWD 0,10] AND [XWD 0,10] -2 BIT POSITIONS AND
+  2426					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,2] AND
+  2427					;[XWD 0,2]
+  2428
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 8-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - BASIC SHIFT TEST (0,1,-1,-2 BIT POSITIONS)                    SEQ 0064
+
+  2429	032061	200 04 0 00 041617 	E2500:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+  2430	032062	200 05 0 00 041617 		MOVE	AC+1,[XWD 0,10]	;INITIALIZE AC+1
+  2431	032063	246 04 0 00 777776 		LSHC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+  2432	032064	312 04 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+  2433	032065	003 04 0 00 002501 		ER3	AC,2501			;RESULT IN AC IS INCORRECT
+  2434	032066	312 05 0 00 041623 		CAME	AC+1,[XWD 0,2]	;IS RESULT IN AC+1 CORRECT?
+  2435	032067	004 05 0 00 002501 		ER4	AC+1,2501		;RESULT IN AC+1 IS INCORRECT
+  2436	032070	321 06 0 00 032061 		JUMPL	AC+2,E2500		;LOOP ON ERROR SWITCH^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SAC FUNCTION                                             SEQ 0065
+
+  2437					SUBTTL	DIAGNOSTIC SECTION - TEST SAC FUNCTION
+  2438
+  2439			000010			AC=10
+  2440						SAVEAC	(1,1)^
+  2441	032071	201 12 0 00 032071 		MOVEI	AC+2,.		;SAVE TEST PC
+  2442	032072	202 12 0 00 030051 		MOVEM	AC+2,TESTPC
+  2443	032073	201 12 0 00 000012 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  2444	032074	202 12 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  2445
+  2446			002600		SN=2600
+  2447			000001			ZZ=1
+  2448
+  2449							;TEST SAC
+  2450					E2600:	REPEAT	^D3,<
+  2451					SN=SN+1
+  2452					;FURTHER TEST OF SAC,SAC2
+  2453					;TEST FOR ASSERTION OF SAC INH
+  2454					;TEST ASSUMES ABILITY TO ROTATE
+  2455					;TO SOME DEGREE
+  2456						ZZ=ZZ+ZZ
+  2457						HRRZI	AC,400000	;SET BIT 18
+  2458						ROT	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2459						CAIN	AC,400000	;TEST FOR SAC
+  2460						ER3	AC,SN		;STORE AC FAILED
+  2461						JUMPL	AC+2,.-4	;LOOP ON ERROR SWITCH
+  2462					>
+  2463
+  2464			002601		SN=SN+1
+  2465					;FURTHER TEST OF SAC,SAC2
+  2466					;TEST FOR ASSERTION OF SAC INH
+  2467					;TEST ASSUMES ABILITY TO ROTATE
+  2468					;TO SOME DEGREE
+  2469			000002			ZZ=ZZ+ZZ
+  2470	032075	551 10 0 00 400000 		HRRZI	AC,400000	;SET BIT 18
+  2471	032076	241 10 0 00 000002 		ROT	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2472	032077	306 10 0 00 400000 		CAIN	AC,400000	;TEST FOR SAC
+  2473	032100	003 10 0 00 002601 		ER3	AC,SN		;STORE AC FAILED
+  2474	032101	321 12 0 00 032075 		JUMPL	AC+2,.-4	;LOOP ON ERROR SWITCH
+  2475
+  2476
+  2477			002602		SN=SN+1
+  2478					;FURTHER TEST OF SAC,SAC2
+  2479					;TEST FOR ASSERTION OF SAC INH
+  2480					;TEST ASSUMES ABILITY TO ROTATE
+  2481					;TO SOME DEGREE
+  2482			000004			ZZ=ZZ+ZZ
+  2483	032102	551 10 0 00 400000 		HRRZI	AC,400000	;SET BIT 18
+  2484	032103	241 10 0 00 000004 		ROT	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2485	032104	306 10 0 00 400000 		CAIN	AC,400000	;TEST FOR SAC
+  2486	032105	003 10 0 00 002602 		ER3	AC,SN		;STORE AC FAILED
+  2487	032106	321 12 0 00 032102 		JUMPL	AC+2,.-4	;LOOP ON ERROR SWITCH
+  2488
+  2489
+  2490			002603		SN=SN+1
+  2491					;FURTHER TEST OF SAC,SAC2
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 9-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SAC FUNCTION                                             SEQ 0066
+
+  2492					;TEST FOR ASSERTION OF SAC INH
+  2493					;TEST ASSUMES ABILITY TO ROTATE
+  2494					;TO SOME DEGREE
+  2495			000010			ZZ=ZZ+ZZ
+  2496	032107	551 10 0 00 400000 		HRRZI	AC,400000	;SET BIT 18
+  2497	032110	241 10 0 00 000010 		ROT	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2498	032111	306 10 0 00 400000 		CAIN	AC,400000	;TEST FOR SAC
+  2499	032112	003 10 0 00 002603 		ER3	AC,SN		;STORE AC FAILED
+  2500	032113	321 12 0 00 032107 		JUMPL	AC+2,.-4	;LOOP ON ERROR SWITCH
+  2501
+  2502					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 9-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SAC FUNCTION                                             SEQ 0067
+
+  2503			002700		SN=2700
+  2504			000001			ZZ=1
+  2505
+  2506							;TEST SAC
+  2507					E2700:	REPEAT	^D3,<
+  2508					SN=SN+1
+  2509					;FURTHER TEST OF SAC,SAC2
+  2510					;TEST FOR ASSERTION OF SAC INH
+  2511					;TEST ASSUMES ABILITY TO ROTATE
+  2512					;TO SOME DEGREE
+  2513
+  2514						ZZ=ZZ+ZZ
+  2515						SETZ	AC,		;CLEAR AC
+  2516						HRRZI	AC+1,400000	;SET BIT 18
+  2517						ROTC	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2518						CAIN	AC+1,400000	;TEST FOR SAC
+  2519						ER4	AC+1,SN		;STORE AC+1 FAILED
+  2520						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2521					>
+  2522
+  2523			002701		SN=SN+1
+  2524					;FURTHER TEST OF SAC,SAC2
+  2525					;TEST FOR ASSERTION OF SAC INH
+  2526					;TEST ASSUMES ABILITY TO ROTATE
+  2527					;TO SOME DEGREE
+  2528
+  2529			000002			ZZ=ZZ+ZZ
+  2530	032114	400 10 0 00 000000 		SETZ	AC,		;CLEAR AC
+  2531	032115	551 11 0 00 400000 		HRRZI	AC+1,400000	;SET BIT 18
+  2532	032116	245 10 0 00 000002 		ROTC	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2533	032117	306 11 0 00 400000 		CAIN	AC+1,400000	;TEST FOR SAC
+  2534	032120	004 11 0 00 002701 		ER4	AC+1,SN		;STORE AC+1 FAILED
+  2535	032121	321 12 0 00 032114 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2536
+  2537
+  2538			002702		SN=SN+1
+  2539					;FURTHER TEST OF SAC,SAC2
+  2540					;TEST FOR ASSERTION OF SAC INH
+  2541					;TEST ASSUMES ABILITY TO ROTATE
+  2542					;TO SOME DEGREE
+  2543
+  2544			000004			ZZ=ZZ+ZZ
+  2545	032122	400 10 0 00 000000 		SETZ	AC,		;CLEAR AC
+  2546	032123	551 11 0 00 400000 		HRRZI	AC+1,400000	;SET BIT 18
+  2547	032124	245 10 0 00 000004 		ROTC	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2548	032125	306 11 0 00 400000 		CAIN	AC+1,400000	;TEST FOR SAC
+  2549	032126	004 11 0 00 002702 		ER4	AC+1,SN		;STORE AC+1 FAILED
+  2550	032127	321 12 0 00 032122 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2551
+  2552
+  2553			002703		SN=SN+1
+  2554					;FURTHER TEST OF SAC,SAC2
+  2555					;TEST FOR ASSERTION OF SAC INH
+  2556					;TEST ASSUMES ABILITY TO ROTATE
+  2557					;TO SOME DEGREE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 9-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SAC FUNCTION                                             SEQ 0068
+
+  2558
+  2559			000010			ZZ=ZZ+ZZ
+  2560	032130	400 10 0 00 000000 		SETZ	AC,		;CLEAR AC
+  2561	032131	551 11 0 00 400000 		HRRZI	AC+1,400000	;SET BIT 18
+  2562	032132	245 10 0 00 000010 		ROTC	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+  2563	032133	306 11 0 00 400000 		CAIN	AC+1,400000	;TEST FOR SAC
+  2564	032134	004 11 0 00 002703 		ER4	AC+1,SN		;STORE AC+1 FAILED
+  2565	032135	321 12 0 00 032130 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2566
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0069
+
+  2567					SUBTTL	DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR
+  2568
+  2569					;TEST ROT LEFT ONE BIT POSITION USING ALL ZEROS
+  2570					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2571					;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+  2572
+  2573			000011			AC=11
+  2574						SAVEAC	(1,1)^
+  2575	032136	201 13 0 00 032136 		MOVEI	AC+2,.		;SAVE TEST PC
+  2576	032137	202 13 0 00 030051 		MOVEM	AC+2,TESTPC
+  2577	032140	201 13 0 00 000013 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  2578	032141	202 13 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  2579
+  2580	032142	403 11 0 00 000010 	E3000:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+  2581	032143	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2582	032144	312 11 0 00 000010 		CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+  2583	032145	003 11 0 00 003001 		ER3	AC,3001		;AD-AR GATING FAILED
+  2584	032146	321 13 0 00 032147 		JUMPL	AC+2,E3100	;LOOP ON ERROR SWITCH
+  2585
+  2586					;TEST ROT LEFT ONE BIT POSITION USING ALL ONES
+  2587					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2588					;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+  2589
+  2590	032147	477 11 0 00 000010 	E3100:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+  2591	032150	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2592	032151	312 11 0 00 000010 		CAME	AC,AC-1		;TEST AC FOR ALL ONES
+  2593	032152	003 11 0 00 003101 		ER3	AC,3101		;AD-AR GATING FAILED
+  2594	032153	321 13 0 00 032147 		JUMPL	AC+2,E3100	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0070
+
+  2595			003200		SN=3200
+  2596			000000			ZZ=0
+  2597
+  2598							;TEST AC RIGHT HALF <
+  2599					E3200:	REPEAT 	^D18,<
+  2600					;TEST ROT LEFT ONE BIT POSITION
+  2601					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2602					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2603					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2604					;IS ONE AFTER ROTATING
+  2605					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2606
+  2607					SN=SN+1
+  2608						ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2609						IFE	ZZ,
+  2610						YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2611						MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2612						IFN	,<
+  2613						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2614						IFE	,<
+  2615						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2616						ROT	AC,1		;*ROTATE LEFT ONE
+  2617						CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2618						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2619						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2620					>
+  2621
+  2622					;TEST ROT LEFT ONE BIT POSITION
+  2623					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2624					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2625					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2626					;IS ONE AFTER ROTATING
+  2627					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2628
+  2629			003201		SN=SN+1
+  2630			000000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2631			000001			IFE	ZZ,
+  2632			000002			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2633	032154	201 11 0 00 000001 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2634						IFN	,<
+  2635	032155	201 10 0 00 000002 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2636						IFE	,<
+  2637						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2638	032156	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2639	032157	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2640	032160	003 11 0 00 003201 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2641	032161	321 13 0 00 032154 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2642
+  2643
+  2644					;TEST ROT LEFT ONE BIT POSITION
+  2645					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2646					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2647					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2648					;IS ONE AFTER ROTATING
+  2649					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0071
+
+  2650
+  2651			003202		SN=SN+1
+  2652			000002			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2653						IFE	ZZ,
+  2654			000004			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2655	032162	201 11 0 00 000002 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2656						IFN	,<
+  2657	032163	201 10 0 00 000004 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2658						IFE	,<
+  2659						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2660	032164	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2661	032165	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2662	032166	003 11 0 00 003202 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2663	032167	321 13 0 00 032162 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2664
+  2665
+  2666					;TEST ROT LEFT ONE BIT POSITION
+  2667					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2668					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2669					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2670					;IS ONE AFTER ROTATING
+  2671					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2672
+  2673			003203		SN=SN+1
+  2674			000004			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2675						IFE	ZZ,
+  2676			000010			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2677	032170	201 11 0 00 000004 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2678						IFN	,<
+  2679	032171	201 10 0 00 000010 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2680						IFE	,<
+  2681						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2682	032172	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2683	032173	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2684	032174	003 11 0 00 003203 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2685	032175	321 13 0 00 032170 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2686
+  2687
+  2688					;TEST ROT LEFT ONE BIT POSITION
+  2689					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2690					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2691					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2692					;IS ONE AFTER ROTATING
+  2693					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2694
+  2695			003204		SN=SN+1
+  2696			000010			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2697						IFE	ZZ,
+  2698			000020			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2699	032176	201 11 0 00 000010 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2700						IFN	,<
+  2701	032177	201 10 0 00 000020 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2702						IFE	,<
+  2703						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2704	032200	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0072
+
+  2705	032201	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2706	032202	003 11 0 00 003204 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2707	032203	321 13 0 00 032176 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2708
+  2709
+  2710					;TEST ROT LEFT ONE BIT POSITION
+  2711					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2712					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2713					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2714					;IS ONE AFTER ROTATING
+  2715					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2716
+  2717			003205		SN=SN+1
+  2718			000020			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2719						IFE	ZZ,
+  2720			000040			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2721	032204	201 11 0 00 000020 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2722						IFN	,<
+  2723	032205	201 10 0 00 000040 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2724						IFE	,<
+  2725						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2726	032206	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2727	032207	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2728	032210	003 11 0 00 003205 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2729	032211	321 13 0 00 032204 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2730
+  2731
+  2732					;TEST ROT LEFT ONE BIT POSITION
+  2733					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2734					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2735					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2736					;IS ONE AFTER ROTATING
+  2737					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2738
+  2739			003206		SN=SN+1
+  2740			000040			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2741						IFE	ZZ,
+  2742			000100			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2743	032212	201 11 0 00 000040 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2744						IFN	,<
+  2745	032213	201 10 0 00 000100 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2746						IFE	,<
+  2747						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2748	032214	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2749	032215	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2750	032216	003 11 0 00 003206 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2751	032217	321 13 0 00 032212 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2752
+  2753
+  2754					;TEST ROT LEFT ONE BIT POSITION
+  2755					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2756					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2757					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2758					;IS ONE AFTER ROTATING
+  2759					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0073
+
+  2760
+  2761			003207		SN=SN+1
+  2762			000100			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2763						IFE	ZZ,
+  2764			000200			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2765	032220	201 11 0 00 000100 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2766						IFN	,<
+  2767	032221	201 10 0 00 000200 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2768						IFE	,<
+  2769						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2770	032222	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2771	032223	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2772	032224	003 11 0 00 003207 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2773	032225	321 13 0 00 032220 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2774
+  2775
+  2776					;TEST ROT LEFT ONE BIT POSITION
+  2777					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2778					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2779					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2780					;IS ONE AFTER ROTATING
+  2781					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2782
+  2783			003210		SN=SN+1
+  2784			000200			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2785						IFE	ZZ,
+  2786			000400			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2787	032226	201 11 0 00 000200 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2788						IFN	,<
+  2789	032227	201 10 0 00 000400 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2790						IFE	,<
+  2791						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2792	032230	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2793	032231	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2794	032232	003 11 0 00 003210 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2795	032233	321 13 0 00 032226 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2796
+  2797
+  2798					;TEST ROT LEFT ONE BIT POSITION
+  2799					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2800					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2801					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2802					;IS ONE AFTER ROTATING
+  2803					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2804
+  2805			003211		SN=SN+1
+  2806			000400			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2807						IFE	ZZ,
+  2808			001000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2809	032234	201 11 0 00 000400 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2810						IFN	,<
+  2811	032235	201 10 0 00 001000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2812						IFE	,<
+  2813						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2814	032236	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0074
+
+  2815	032237	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2816	032240	003 11 0 00 003211 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2817	032241	321 13 0 00 032234 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2818
+  2819
+  2820					;TEST ROT LEFT ONE BIT POSITION
+  2821					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2822					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2823					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2824					;IS ONE AFTER ROTATING
+  2825					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2826
+  2827			003212		SN=SN+1
+  2828			001000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2829						IFE	ZZ,
+  2830			002000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2831	032242	201 11 0 00 001000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2832						IFN	,<
+  2833	032243	201 10 0 00 002000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2834						IFE	,<
+  2835						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2836	032244	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2837	032245	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2838	032246	003 11 0 00 003212 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2839	032247	321 13 0 00 032242 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2840
+  2841
+  2842					;TEST ROT LEFT ONE BIT POSITION
+  2843					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2844					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2845					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2846					;IS ONE AFTER ROTATING
+  2847					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2848
+  2849			003213		SN=SN+1
+  2850			002000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2851						IFE	ZZ,
+  2852			004000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2853	032250	201 11 0 00 002000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2854						IFN	,<
+  2855	032251	201 10 0 00 004000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2856						IFE	,<
+  2857						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2858	032252	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2859	032253	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2860	032254	003 11 0 00 003213 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2861	032255	321 13 0 00 032250 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2862
+  2863
+  2864					;TEST ROT LEFT ONE BIT POSITION
+  2865					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2866					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2867					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2868					;IS ONE AFTER ROTATING
+  2869					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0075
+
+  2870
+  2871			003214		SN=SN+1
+  2872			004000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2873						IFE	ZZ,
+  2874			010000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2875	032256	201 11 0 00 004000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2876						IFN	,<
+  2877	032257	201 10 0 00 010000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2878						IFE	,<
+  2879						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2880	032260	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2881	032261	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2882	032262	003 11 0 00 003214 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2883	032263	321 13 0 00 032256 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2884
+  2885
+  2886					;TEST ROT LEFT ONE BIT POSITION
+  2887					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2888					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2889					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2890					;IS ONE AFTER ROTATING
+  2891					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2892
+  2893			003215		SN=SN+1
+  2894			010000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2895						IFE	ZZ,
+  2896			020000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2897	032264	201 11 0 00 010000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2898						IFN	,<
+  2899	032265	201 10 0 00 020000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2900						IFE	,<
+  2901						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2902	032266	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2903	032267	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2904	032270	003 11 0 00 003215 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2905	032271	321 13 0 00 032264 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2906
+  2907
+  2908					;TEST ROT LEFT ONE BIT POSITION
+  2909					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2910					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2911					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2912					;IS ONE AFTER ROTATING
+  2913					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2914
+  2915			003216		SN=SN+1
+  2916			020000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2917						IFE	ZZ,
+  2918			040000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2919	032272	201 11 0 00 020000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2920						IFN	,<
+  2921	032273	201 10 0 00 040000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2922						IFE	,<
+  2923						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2924	032274	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0076
+
+  2925	032275	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2926	032276	003 11 0 00 003216 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2927	032277	321 13 0 00 032272 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2928
+  2929
+  2930					;TEST ROT LEFT ONE BIT POSITION
+  2931					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2932					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2933					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2934					;IS ONE AFTER ROTATING
+  2935					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2936
+  2937			003217		SN=SN+1
+  2938			040000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2939						IFE	ZZ,
+  2940			100000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2941	032300	201 11 0 00 040000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2942						IFN	,<
+  2943	032301	201 10 0 00 100000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2944						IFE	,<
+  2945						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2946	032302	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2947	032303	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2948	032304	003 11 0 00 003217 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2949	032305	321 13 0 00 032300 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2950
+  2951
+  2952					;TEST ROT LEFT ONE BIT POSITION
+  2953					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2954					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2955					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2956					;IS ONE AFTER ROTATING
+  2957					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  2958
+  2959			003220		SN=SN+1
+  2960			100000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2961						IFE	ZZ,
+  2962			200000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2963	032306	201 11 0 00 100000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2964						IFN	,<
+  2965	032307	201 10 0 00 200000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2966						IFE	,<
+  2967						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2968	032310	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2969	032311	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2970	032312	003 11 0 00 003220 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2971	032313	321 13 0 00 032306 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2972
+  2973
+  2974					;TEST ROT LEFT ONE BIT POSITION
+  2975					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2976					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2977					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  2978					;IS ONE AFTER ROTATING
+  2979					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0077
+
+  2980
+  2981			003221		SN=SN+1
+  2982			200000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  2983						IFE	ZZ,
+  2984			400000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  2985	032314	201 11 0 00 200000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  2986						IFN	,<
+  2987	032315	201 10 0 00 400000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  2988						IFE	,<
+  2989						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  2990	032316	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  2991	032317	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  2992	032320	003 11 0 00 003221 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  2993	032321	321 13 0 00 032314 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  2994
+  2995
+  2996					;TEST ROT LEFT ONE BIT POSITION
+  2997					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  2998					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  2999					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+  3000					;IS ONE AFTER ROTATING
+  3001					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3002
+  3003			003222		SN=SN+1
+  3004			400000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3005						IFE	ZZ,
+  3006		000001	000000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3007	032322	201 11 0 00 400000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  3008						IFN	,<
+  3009						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  3010						IFE	,<
+  3011	032323	205 10 0 00 000001 		MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  3012	032324	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3013	032325	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3014	032326	003 11 0 00 003222 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3015	032327	321 13 0 00 032322 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3016
+  3017					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0078
+
+  3018			000000			ZZ=0
+  3019
+  3020							;TEST AC LEFT HALF <
+  3021						REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+  3022					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3023					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3024					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3025					;ONE AFTER ROTATING
+  3026					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3027
+  3028					SN=SN+1
+  3029
+  3030						ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3031						IFE	ZZ,
+  3032						YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3033						MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3034						IFN	,<
+  3035						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3036						IFE	,<
+  3037						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3038						ROT	AC,1		;*ROTATE LEFT ONE
+  3039						CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3040						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3041						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3042					>
+  3043					;TEST ROT LEFT ONE BIT POSITION
+  3044					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3045					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3046					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3047					;ONE AFTER ROTATING
+  3048					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3049
+  3050			003223		SN=SN+1
+  3051
+  3052			000000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3053			000001			IFE	ZZ,
+  3054			000002			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3055	032330	205 11 0 00 000001 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3056						IFN	,<
+  3057	032331	205 10 0 00 000002 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3058						IFE	,<
+  3059						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3060	032332	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3061	032333	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3062	032334	003 11 0 00 003223 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3063	032335	321 13 0 00 032330 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3064
+  3065					;TEST ROT LEFT ONE BIT POSITION
+  3066					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3067					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3068					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3069					;ONE AFTER ROTATING
+  3070					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3071
+  3072			003224		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0079
+
+  3073
+  3074			000002			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3075						IFE	ZZ,
+  3076			000004			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3077	032336	205 11 0 00 000002 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3078						IFN	,<
+  3079	032337	205 10 0 00 000004 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3080						IFE	,<
+  3081						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3082	032340	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3083	032341	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3084	032342	003 11 0 00 003224 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3085	032343	321 13 0 00 032336 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3086
+  3087					;TEST ROT LEFT ONE BIT POSITION
+  3088					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3089					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3090					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3091					;ONE AFTER ROTATING
+  3092					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3093
+  3094			003225		SN=SN+1
+  3095
+  3096			000004			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3097						IFE	ZZ,
+  3098			000010			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3099	032344	205 11 0 00 000004 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3100						IFN	,<
+  3101	032345	205 10 0 00 000010 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3102						IFE	,<
+  3103						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3104	032346	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3105	032347	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3106	032350	003 11 0 00 003225 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3107	032351	321 13 0 00 032344 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3108
+  3109					;TEST ROT LEFT ONE BIT POSITION
+  3110					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3111					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3112					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3113					;ONE AFTER ROTATING
+  3114					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3115
+  3116			003226		SN=SN+1
+  3117
+  3118			000010			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3119						IFE	ZZ,
+  3120			000020			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3121	032352	205 11 0 00 000010 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3122						IFN	,<
+  3123	032353	205 10 0 00 000020 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3124						IFE	,<
+  3125						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3126	032354	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3127	032355	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0080
+
+  3128	032356	003 11 0 00 003226 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3129	032357	321 13 0 00 032352 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3130
+  3131					;TEST ROT LEFT ONE BIT POSITION
+  3132					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3133					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3134					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3135					;ONE AFTER ROTATING
+  3136					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3137
+  3138			003227		SN=SN+1
+  3139
+  3140			000020			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3141						IFE	ZZ,
+  3142			000040			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3143	032360	205 11 0 00 000020 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3144						IFN	,<
+  3145	032361	205 10 0 00 000040 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3146						IFE	,<
+  3147						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3148	032362	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3149	032363	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3150	032364	003 11 0 00 003227 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3151	032365	321 13 0 00 032360 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3152
+  3153					;TEST ROT LEFT ONE BIT POSITION
+  3154					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3155					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3156					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3157					;ONE AFTER ROTATING
+  3158					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3159
+  3160			003230		SN=SN+1
+  3161
+  3162			000040			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3163						IFE	ZZ,
+  3164			000100			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3165	032366	205 11 0 00 000040 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3166						IFN	,<
+  3167	032367	205 10 0 00 000100 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3168						IFE	,<
+  3169						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3170	032370	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3171	032371	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3172	032372	003 11 0 00 003230 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3173	032373	321 13 0 00 032366 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3174
+  3175					;TEST ROT LEFT ONE BIT POSITION
+  3176					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3177					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3178					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3179					;ONE AFTER ROTATING
+  3180					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3181
+  3182			003231		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0081
+
+  3183
+  3184			000100			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3185						IFE	ZZ,
+  3186			000200			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3187	032374	205 11 0 00 000100 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3188						IFN	,<
+  3189	032375	205 10 0 00 000200 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3190						IFE	,<
+  3191						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3192	032376	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3193	032377	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3194	032400	003 11 0 00 003231 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3195	032401	321 13 0 00 032374 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3196
+  3197					;TEST ROT LEFT ONE BIT POSITION
+  3198					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3199					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3200					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3201					;ONE AFTER ROTATING
+  3202					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3203
+  3204			003232		SN=SN+1
+  3205
+  3206			000200			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3207						IFE	ZZ,
+  3208			000400			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3209	032402	205 11 0 00 000200 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3210						IFN	,<
+  3211	032403	205 10 0 00 000400 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3212						IFE	,<
+  3213						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3214	032404	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3215	032405	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3216	032406	003 11 0 00 003232 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3217	032407	321 13 0 00 032402 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3218
+  3219					;TEST ROT LEFT ONE BIT POSITION
+  3220					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3221					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3222					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3223					;ONE AFTER ROTATING
+  3224					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3225
+  3226			003233		SN=SN+1
+  3227
+  3228			000400			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3229						IFE	ZZ,
+  3230			001000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3231	032410	205 11 0 00 000400 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3232						IFN	,<
+  3233	032411	205 10 0 00 001000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3234						IFE	,<
+  3235						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3236	032412	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3237	032413	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0082
+
+  3238	032414	003 11 0 00 003233 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3239	032415	321 13 0 00 032410 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3240
+  3241					;TEST ROT LEFT ONE BIT POSITION
+  3242					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3243					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3244					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3245					;ONE AFTER ROTATING
+  3246					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3247
+  3248			003234		SN=SN+1
+  3249
+  3250			001000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3251						IFE	ZZ,
+  3252			002000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3253	032416	205 11 0 00 001000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3254						IFN	,<
+  3255	032417	205 10 0 00 002000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3256						IFE	,<
+  3257						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3258	032420	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3259	032421	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3260	032422	003 11 0 00 003234 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3261	032423	321 13 0 00 032416 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3262
+  3263					;TEST ROT LEFT ONE BIT POSITION
+  3264					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3265					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3266					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3267					;ONE AFTER ROTATING
+  3268					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3269
+  3270			003235		SN=SN+1
+  3271
+  3272			002000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3273						IFE	ZZ,
+  3274			004000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3275	032424	205 11 0 00 002000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3276						IFN	,<
+  3277	032425	205 10 0 00 004000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3278						IFE	,<
+  3279						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3280	032426	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3281	032427	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3282	032430	003 11 0 00 003235 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3283	032431	321 13 0 00 032424 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3284
+  3285					;TEST ROT LEFT ONE BIT POSITION
+  3286					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3287					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3288					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3289					;ONE AFTER ROTATING
+  3290					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3291
+  3292			003236		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0083
+
+  3293
+  3294			004000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3295						IFE	ZZ,
+  3296			010000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3297	032432	205 11 0 00 004000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3298						IFN	,<
+  3299	032433	205 10 0 00 010000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3300						IFE	,<
+  3301						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3302	032434	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3303	032435	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3304	032436	003 11 0 00 003236 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3305	032437	321 13 0 00 032432 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3306
+  3307					;TEST ROT LEFT ONE BIT POSITION
+  3308					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3309					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3310					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3311					;ONE AFTER ROTATING
+  3312					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3313
+  3314			003237		SN=SN+1
+  3315
+  3316			010000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3317						IFE	ZZ,
+  3318			020000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3319	032440	205 11 0 00 010000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3320						IFN	,<
+  3321	032441	205 10 0 00 020000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3322						IFE	,<
+  3323						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3324	032442	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3325	032443	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3326	032444	003 11 0 00 003237 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3327	032445	321 13 0 00 032440 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3328
+  3329					;TEST ROT LEFT ONE BIT POSITION
+  3330					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3331					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3332					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3333					;ONE AFTER ROTATING
+  3334					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3335
+  3336			003240		SN=SN+1
+  3337
+  3338			020000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3339						IFE	ZZ,
+  3340			040000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3341	032446	205 11 0 00 020000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3342						IFN	,<
+  3343	032447	205 10 0 00 040000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3344						IFE	,<
+  3345						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3346	032450	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3347	032451	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0084
+
+  3348	032452	003 11 0 00 003240 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3349	032453	321 13 0 00 032446 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3350
+  3351					;TEST ROT LEFT ONE BIT POSITION
+  3352					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3353					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3354					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3355					;ONE AFTER ROTATING
+  3356					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3357
+  3358			003241		SN=SN+1
+  3359
+  3360			040000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3361						IFE	ZZ,
+  3362			100000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3363	032454	205 11 0 00 040000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3364						IFN	,<
+  3365	032455	205 10 0 00 100000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3366						IFE	,<
+  3367						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3368	032456	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3369	032457	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3370	032460	003 11 0 00 003241 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3371	032461	321 13 0 00 032454 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3372
+  3373					;TEST ROT LEFT ONE BIT POSITION
+  3374					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3375					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3376					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3377					;ONE AFTER ROTATING
+  3378					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3379
+  3380			003242		SN=SN+1
+  3381
+  3382			100000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3383						IFE	ZZ,
+  3384			200000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3385	032462	205 11 0 00 100000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3386						IFN	,<
+  3387	032463	205 10 0 00 200000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3388						IFE	,<
+  3389						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3390	032464	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3391	032465	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3392	032466	003 11 0 00 003242 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3393	032467	321 13 0 00 032462 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3394
+  3395					;TEST ROT LEFT ONE BIT POSITION
+  3396					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3397					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3398					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3399					;ONE AFTER ROTATING
+  3400					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3401
+  3402			003243		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 11-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0085
+
+  3403
+  3404			200000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3405						IFE	ZZ,
+  3406			400000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3407	032470	205 11 0 00 200000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3408						IFN	,<
+  3409	032471	205 10 0 00 400000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3410						IFE	,<
+  3411						MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3412	032472	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3413	032473	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3414	032474	003 11 0 00 003243 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3415	032475	321 13 0 00 032470 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3416
+  3417					;TEST ROT LEFT ONE BIT POSITION
+  3418					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  3419					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3420					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  3421					;ONE AFTER ROTATING
+  3422					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  3423
+  3424			003244		SN=SN+1
+  3425
+  3426			400000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  3427						IFE	ZZ,
+  3428		000001	000000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  3429	032476	205 11 0 00 400000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  3430						IFN	,<
+  3431						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  3432						IFE	,<
+  3433	032477	201 10 0 00 000001 		MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+  3434	032500	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3435	032501	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+  3436	032502	003 11 0 00 003244 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3437	032503	321 13 0 00 032476 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3438
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0086
+
+  3439			003300		SN=3300
+  3440			000000			ZZ=0
+  3441
+  3442						;TEST AC RIGHT HALF<
+  3443					E3300:	REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+  3444					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3445					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3446					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3447					;IS ZERO AFTER ROTATING.
+  3448					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3449
+  3450					SN=SN+1
+  3451						ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3452						IFE	,
+  3453						YY=&777777	;SELECTED BIT AFTER ROTATION
+  3454						HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3455						IFN	<&377777>,<
+  3456						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3457						IFE	<&777777>,<
+  3458						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3459						ROT	AC,1		;*ROTATE LEFT ONE
+  3460						CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3461						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3462						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3463					>
+  3464					;TEST ROT LEFT ONE BIT POSITION
+  3465					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3466					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3467					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3468					;IS ZERO AFTER ROTATING.
+  3469					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3470
+  3471			003301		SN=SN+1
+  3472			000001			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3473		777777	777776			IFE	,
+  3474			777775			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3475	032504	561 11 0 00 777776 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3476						IFN	<&377777>,<
+  3477	032505	561 10 0 00 777775 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3478						IFE	<&777777>,<
+  3479						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3480	032506	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3481	032507	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3482	032510	003 11 0 00 003301 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3483	032511	321 13 0 00 032504 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3484
+  3485					;TEST ROT LEFT ONE BIT POSITION
+  3486					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3487					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3488					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3489					;IS ZERO AFTER ROTATING.
+  3490					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3491
+  3492			003302		SN=SN+1
+  3493		777777	777775			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0087
+
+  3494						IFE	,
+  3495			777773			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3496	032512	561 11 0 00 777775 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3497						IFN	<&377777>,<
+  3498	032513	561 10 0 00 777773 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3499						IFE	<&777777>,<
+  3500						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3501	032514	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3502	032515	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3503	032516	003 11 0 00 003302 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3504	032517	321 13 0 00 032512 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3505
+  3506					;TEST ROT LEFT ONE BIT POSITION
+  3507					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3508					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3509					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3510					;IS ZERO AFTER ROTATING.
+  3511					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3512
+  3513			003303		SN=SN+1
+  3514		777777	777773			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3515						IFE	,
+  3516			777767			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3517	032520	561 11 0 00 777773 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3518						IFN	<&377777>,<
+  3519	032521	561 10 0 00 777767 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3520						IFE	<&777777>,<
+  3521						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3522	032522	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3523	032523	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3524	032524	003 11 0 00 003303 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3525	032525	321 13 0 00 032520 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3526
+  3527					;TEST ROT LEFT ONE BIT POSITION
+  3528					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3529					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3530					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3531					;IS ZERO AFTER ROTATING.
+  3532					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3533
+  3534			003304		SN=SN+1
+  3535		777777	777767			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3536						IFE	,
+  3537			777757			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3538	032526	561 11 0 00 777767 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3539						IFN	<&377777>,<
+  3540	032527	561 10 0 00 777757 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3541						IFE	<&777777>,<
+  3542						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3543	032530	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3544	032531	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3545	032532	003 11 0 00 003304 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3546	032533	321 13 0 00 032526 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3547
+  3548					;TEST ROT LEFT ONE BIT POSITION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0088
+
+  3549					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3550					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3551					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3552					;IS ZERO AFTER ROTATING.
+  3553					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3554
+  3555			003305		SN=SN+1
+  3556		777777	777757			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3557						IFE	,
+  3558			777737			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3559	032534	561 11 0 00 777757 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3560						IFN	<&377777>,<
+  3561	032535	561 10 0 00 777737 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3562						IFE	<&777777>,<
+  3563						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3564	032536	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3565	032537	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3566	032540	003 11 0 00 003305 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3567	032541	321 13 0 00 032534 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3568
+  3569					;TEST ROT LEFT ONE BIT POSITION
+  3570					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3571					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3572					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3573					;IS ZERO AFTER ROTATING.
+  3574					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3575
+  3576			003306		SN=SN+1
+  3577		777777	777737			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3578						IFE	,
+  3579			777677			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3580	032542	561 11 0 00 777737 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3581						IFN	<&377777>,<
+  3582	032543	561 10 0 00 777677 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3583						IFE	<&777777>,<
+  3584						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3585	032544	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3586	032545	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3587	032546	003 11 0 00 003306 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3588	032547	321 13 0 00 032542 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3589
+  3590					;TEST ROT LEFT ONE BIT POSITION
+  3591					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3592					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3593					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3594					;IS ZERO AFTER ROTATING.
+  3595					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3596
+  3597			003307		SN=SN+1
+  3598		777777	777677			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3599						IFE	,
+  3600			777577			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3601	032550	561 11 0 00 777677 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3602						IFN	<&377777>,<
+  3603	032551	561 10 0 00 777577 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0089
+
+  3604						IFE	<&777777>,<
+  3605						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3606	032552	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3607	032553	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3608	032554	003 11 0 00 003307 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3609	032555	321 13 0 00 032550 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3610
+  3611					;TEST ROT LEFT ONE BIT POSITION
+  3612					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3613					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3614					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3615					;IS ZERO AFTER ROTATING.
+  3616					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3617
+  3618			003310		SN=SN+1
+  3619		777777	777577			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3620						IFE	,
+  3621			777377			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3622	032556	561 11 0 00 777577 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3623						IFN	<&377777>,<
+  3624	032557	561 10 0 00 777377 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3625						IFE	<&777777>,<
+  3626						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3627	032560	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3628	032561	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3629	032562	003 11 0 00 003310 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3630	032563	321 13 0 00 032556 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3631
+  3632					;TEST ROT LEFT ONE BIT POSITION
+  3633					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3634					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3635					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3636					;IS ZERO AFTER ROTATING.
+  3637					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3638
+  3639			003311		SN=SN+1
+  3640		777777	777377			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3641						IFE	,
+  3642			776777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3643	032564	561 11 0 00 777377 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3644						IFN	<&377777>,<
+  3645	032565	561 10 0 00 776777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3646						IFE	<&777777>,<
+  3647						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3648	032566	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3649	032567	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3650	032570	003 11 0 00 003311 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3651	032571	321 13 0 00 032564 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3652
+  3653					;TEST ROT LEFT ONE BIT POSITION
+  3654					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3655					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3656					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3657					;IS ZERO AFTER ROTATING.
+  3658					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0090
+
+  3659
+  3660			003312		SN=SN+1
+  3661		777777	776777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3662						IFE	,
+  3663			775777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3664	032572	561 11 0 00 776777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3665						IFN	<&377777>,<
+  3666	032573	561 10 0 00 775777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3667						IFE	<&777777>,<
+  3668						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3669	032574	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3670	032575	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3671	032576	003 11 0 00 003312 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3672	032577	321 13 0 00 032572 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3673
+  3674					;TEST ROT LEFT ONE BIT POSITION
+  3675					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3676					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3677					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3678					;IS ZERO AFTER ROTATING.
+  3679					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3680
+  3681			003313		SN=SN+1
+  3682		777777	775777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3683						IFE	,
+  3684			773777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3685	032600	561 11 0 00 775777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3686						IFN	<&377777>,<
+  3687	032601	561 10 0 00 773777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3688						IFE	<&777777>,<
+  3689						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3690	032602	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3691	032603	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3692	032604	003 11 0 00 003313 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3693	032605	321 13 0 00 032600 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3694
+  3695					;TEST ROT LEFT ONE BIT POSITION
+  3696					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3697					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3698					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3699					;IS ZERO AFTER ROTATING.
+  3700					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3701
+  3702			003314		SN=SN+1
+  3703		777777	773777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3704						IFE	,
+  3705			767777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3706	032606	561 11 0 00 773777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3707						IFN	<&377777>,<
+  3708	032607	561 10 0 00 767777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3709						IFE	<&777777>,<
+  3710						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3711	032610	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3712	032611	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3713	032612	003 11 0 00 003314 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0091
+
+  3714	032613	321 13 0 00 032606 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3715
+  3716					;TEST ROT LEFT ONE BIT POSITION
+  3717					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3718					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3719					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3720					;IS ZERO AFTER ROTATING.
+  3721					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3722
+  3723			003315		SN=SN+1
+  3724		777777	767777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3725						IFE	,
+  3726			757777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3727	032614	561 11 0 00 767777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3728						IFN	<&377777>,<
+  3729	032615	561 10 0 00 757777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3730						IFE	<&777777>,<
+  3731						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3732	032616	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3733	032617	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3734	032620	003 11 0 00 003315 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3735	032621	321 13 0 00 032614 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3736
+  3737					;TEST ROT LEFT ONE BIT POSITION
+  3738					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3739					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3740					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3741					;IS ZERO AFTER ROTATING.
+  3742					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3743
+  3744			003316		SN=SN+1
+  3745		777777	757777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3746						IFE	,
+  3747			737777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3748	032622	561 11 0 00 757777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3749						IFN	<&377777>,<
+  3750	032623	561 10 0 00 737777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3751						IFE	<&777777>,<
+  3752						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3753	032624	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3754	032625	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3755	032626	003 11 0 00 003316 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3756	032627	321 13 0 00 032622 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3757
+  3758					;TEST ROT LEFT ONE BIT POSITION
+  3759					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3760					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3761					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3762					;IS ZERO AFTER ROTATING.
+  3763					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3764
+  3765			003317		SN=SN+1
+  3766		777777	737777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3767						IFE	,
+  3768			677777			YY=&777777	;SELECTED BIT AFTER ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0092
+
+  3769	032630	561 11 0 00 737777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3770						IFN	<&377777>,<
+  3771	032631	561 10 0 00 677777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3772						IFE	<&777777>,<
+  3773						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3774	032632	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3775	032633	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3776	032634	003 11 0 00 003317 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3777	032635	321 13 0 00 032630 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3778
+  3779					;TEST ROT LEFT ONE BIT POSITION
+  3780					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3781					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3782					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3783					;IS ZERO AFTER ROTATING.
+  3784					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3785
+  3786			003320		SN=SN+1
+  3787		777777	677777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3788						IFE	,
+  3789			577777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3790	032636	561 11 0 00 677777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3791						IFN	<&377777>,<
+  3792	032637	561 10 0 00 577777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3793						IFE	<&777777>,<
+  3794						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3795	032640	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3796	032641	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3797	032642	003 11 0 00 003320 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3798	032643	321 13 0 00 032636 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3799
+  3800					;TEST ROT LEFT ONE BIT POSITION
+  3801					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3802					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3803					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3804					;IS ZERO AFTER ROTATING.
+  3805					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3806
+  3807			003321		SN=SN+1
+  3808		777777	577777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3809						IFE	,
+  3810			377777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3811	032644	561 11 0 00 577777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3812						IFN	<&377777>,<
+  3813	032645	561 10 0 00 377777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3814						IFE	<&777777>,<
+  3815						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3816	032646	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3817	032647	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3818	032650	003 11 0 00 003321 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3819	032651	321 13 0 00 032644 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3820
+  3821					;TEST ROT LEFT ONE BIT POSITION
+  3822					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3823					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0093
+
+  3824					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3825					;IS ZERO AFTER ROTATING.
+  3826					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3827
+  3828			003322		SN=SN+1
+  3829		777777	377777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3830						IFE	,
+  3831			777777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3832	032652	561 11 0 00 377777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  3833						IFN	<&377777>,<
+  3834						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  3835						IFE	<&777777>,<
+  3836	032653	525 10 0 00 777776 		HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  3837	032654	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3838	032655	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+  3839	032656	003 11 0 00 003322 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3840	032657	321 13 0 00 032652 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3841
+  3842					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0094
+
+  3843			000000			ZZ=0
+  3844						;TEST AC LEFT HALF<
+  3845						REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+  3846					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3847					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3848					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3849					;IS ZERO AFTER ROTATING.
+  3850					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3851
+  3852					SN=SN+1
+  3853						ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3854						IFE	,
+  3855						YY=&777777	;SELECTED BIT AFTER ROTATION
+  3856						HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  3857						IFN	<&777777>,<
+  3858						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  3859						IFE	<&777777>,<
+  3860						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  3861						ROT	AC,1		;*ROTATE LEFT ONE
+  3862						CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  3863						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3864						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3865					>
+  3866					;TEST ROT LEFT ONE BIT POSITION
+  3867					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3868					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3869					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3870					;IS ZERO AFTER ROTATING.
+  3871					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3872
+  3873			003323		SN=SN+1
+  3874			000001			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3875		777777	777776			IFE	,
+  3876			777775			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3877	032660	525 11 0 00 777776 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  3878						IFN	<&777777>,<
+  3879	032661	525 10 0 00 777775 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  3880						IFE	<&777777>,<
+  3881						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  3882	032662	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3883	032663	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  3884	032664	003 11 0 00 003323 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3885	032665	321 13 0 00 032660 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3886
+  3887					;TEST ROT LEFT ONE BIT POSITION
+  3888					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3889					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3890					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3891					;IS ZERO AFTER ROTATING.
+  3892					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3893
+  3894			003324		SN=SN+1
+  3895		777777	777775			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3896						IFE	,
+  3897			777773			YY=&777777	;SELECTED BIT AFTER ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0095
+
+  3898	032666	525 11 0 00 777775 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  3899						IFN	<&777777>,<
+  3900	032667	525 10 0 00 777773 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  3901						IFE	<&777777>,<
+  3902						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  3903	032670	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3904	032671	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  3905	032672	003 11 0 00 003324 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3906	032673	321 13 0 00 032666 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3907
+  3908					;TEST ROT LEFT ONE BIT POSITION
+  3909					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3910					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3911					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3912					;IS ZERO AFTER ROTATING.
+  3913					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3914
+  3915			003325		SN=SN+1
+  3916		777777	777773			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3917						IFE	,
+  3918			777767			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3919	032674	525 11 0 00 777773 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  3920						IFN	<&777777>,<
+  3921	032675	525 10 0 00 777767 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  3922						IFE	<&777777>,<
+  3923						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  3924	032676	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3925	032677	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  3926	032700	003 11 0 00 003325 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3927	032701	321 13 0 00 032674 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3928
+  3929					;TEST ROT LEFT ONE BIT POSITION
+  3930					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3931					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3932					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3933					;IS ZERO AFTER ROTATING.
+  3934					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3935
+  3936			003326		SN=SN+1
+  3937		777777	777767			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3938						IFE	,
+  3939			777757			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3940	032702	525 11 0 00 777767 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  3941						IFN	<&777777>,<
+  3942	032703	525 10 0 00 777757 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  3943						IFE	<&777777>,<
+  3944						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  3945	032704	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3946	032705	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  3947	032706	003 11 0 00 003326 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3948	032707	321 13 0 00 032702 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3949
+  3950					;TEST ROT LEFT ONE BIT POSITION
+  3951					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3952					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0096
+
+  3953					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3954					;IS ZERO AFTER ROTATING.
+  3955					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3956
+  3957			003327		SN=SN+1
+  3958		777777	777757			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3959						IFE	,
+  3960			777737			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3961	032710	525 11 0 00 777757 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  3962						IFN	<&777777>,<
+  3963	032711	525 10 0 00 777737 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  3964						IFE	<&777777>,<
+  3965						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  3966	032712	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3967	032713	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  3968	032714	003 11 0 00 003327 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3969	032715	321 13 0 00 032710 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3970
+  3971					;TEST ROT LEFT ONE BIT POSITION
+  3972					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3973					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3974					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3975					;IS ZERO AFTER ROTATING.
+  3976					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3977
+  3978			003330		SN=SN+1
+  3979		777777	777737			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  3980						IFE	,
+  3981			777677			YY=&777777	;SELECTED BIT AFTER ROTATION
+  3982	032716	525 11 0 00 777737 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  3983						IFN	<&777777>,<
+  3984	032717	525 10 0 00 777677 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  3985						IFE	<&777777>,<
+  3986						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  3987	032720	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  3988	032721	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  3989	032722	003 11 0 00 003330 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  3990	032723	321 13 0 00 032716 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  3991
+  3992					;TEST ROT LEFT ONE BIT POSITION
+  3993					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  3994					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  3995					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  3996					;IS ZERO AFTER ROTATING.
+  3997					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  3998
+  3999			003331		SN=SN+1
+  4000		777777	777677			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4001						IFE	,
+  4002			777577			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4003	032724	525 11 0 00 777677 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4004						IFN	<&777777>,<
+  4005	032725	525 10 0 00 777577 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4006						IFE	<&777777>,<
+  4007						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0097
+
+  4008	032726	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4009	032727	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4010	032730	003 11 0 00 003331 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4011	032731	321 13 0 00 032724 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4012
+  4013					;TEST ROT LEFT ONE BIT POSITION
+  4014					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4015					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4016					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4017					;IS ZERO AFTER ROTATING.
+  4018					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4019
+  4020			003332		SN=SN+1
+  4021		777777	777577			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4022						IFE	,
+  4023			777377			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4024	032732	525 11 0 00 777577 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4025						IFN	<&777777>,<
+  4026	032733	525 10 0 00 777377 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4027						IFE	<&777777>,<
+  4028						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4029	032734	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4030	032735	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4031	032736	003 11 0 00 003332 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4032	032737	321 13 0 00 032732 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4033
+  4034					;TEST ROT LEFT ONE BIT POSITION
+  4035					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4036					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4037					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4038					;IS ZERO AFTER ROTATING.
+  4039					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4040
+  4041			003333		SN=SN+1
+  4042		777777	777377			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4043						IFE	,
+  4044			776777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4045	032740	525 11 0 00 777377 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4046						IFN	<&777777>,<
+  4047	032741	525 10 0 00 776777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4048						IFE	<&777777>,<
+  4049						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4050	032742	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4051	032743	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4052	032744	003 11 0 00 003333 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4053	032745	321 13 0 00 032740 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4054
+  4055					;TEST ROT LEFT ONE BIT POSITION
+  4056					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4057					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4058					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4059					;IS ZERO AFTER ROTATING.
+  4060					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4061
+  4062			003334		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0098
+
+  4063		777777	776777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4064						IFE	,
+  4065			775777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4066	032746	525 11 0 00 776777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4067						IFN	<&777777>,<
+  4068	032747	525 10 0 00 775777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4069						IFE	<&777777>,<
+  4070						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4071	032750	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4072	032751	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4073	032752	003 11 0 00 003334 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4074	032753	321 13 0 00 032746 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4075
+  4076					;TEST ROT LEFT ONE BIT POSITION
+  4077					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4078					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4079					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4080					;IS ZERO AFTER ROTATING.
+  4081					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4082
+  4083			003335		SN=SN+1
+  4084		777777	775777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4085						IFE	,
+  4086			773777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4087	032754	525 11 0 00 775777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4088						IFN	<&777777>,<
+  4089	032755	525 10 0 00 773777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4090						IFE	<&777777>,<
+  4091						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4092	032756	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4093	032757	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4094	032760	003 11 0 00 003335 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4095	032761	321 13 0 00 032754 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4096
+  4097					;TEST ROT LEFT ONE BIT POSITION
+  4098					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4099					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4100					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4101					;IS ZERO AFTER ROTATING.
+  4102					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4103
+  4104			003336		SN=SN+1
+  4105		777777	773777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4106						IFE	,
+  4107			767777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4108	032762	525 11 0 00 773777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4109						IFN	<&777777>,<
+  4110	032763	525 10 0 00 767777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4111						IFE	<&777777>,<
+  4112						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4113	032764	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4114	032765	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4115	032766	003 11 0 00 003336 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4116	032767	321 13 0 00 032762 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4117
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0099
+
+  4118					;TEST ROT LEFT ONE BIT POSITION
+  4119					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4120					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4121					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4122					;IS ZERO AFTER ROTATING.
+  4123					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4124
+  4125			003337		SN=SN+1
+  4126		777777	767777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4127						IFE	,
+  4128			757777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4129	032770	525 11 0 00 767777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4130						IFN	<&777777>,<
+  4131	032771	525 10 0 00 757777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4132						IFE	<&777777>,<
+  4133						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4134	032772	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4135	032773	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4136	032774	003 11 0 00 003337 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4137	032775	321 13 0 00 032770 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4138
+  4139					;TEST ROT LEFT ONE BIT POSITION
+  4140					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4141					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4142					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4143					;IS ZERO AFTER ROTATING.
+  4144					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4145
+  4146			003340		SN=SN+1
+  4147		777777	757777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4148						IFE	,
+  4149			737777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4150	032776	525 11 0 00 757777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4151						IFN	<&777777>,<
+  4152	032777	525 10 0 00 737777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4153						IFE	<&777777>,<
+  4154						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4155	033000	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4156	033001	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4157	033002	003 11 0 00 003340 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4158	033003	321 13 0 00 032776 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4159
+  4160					;TEST ROT LEFT ONE BIT POSITION
+  4161					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4162					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4163					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4164					;IS ZERO AFTER ROTATING.
+  4165					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4166
+  4167			003341		SN=SN+1
+  4168		777777	737777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4169						IFE	,
+  4170			677777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4171	033004	525 11 0 00 737777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4172						IFN	<&777777>,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0100
+
+  4173	033005	525 10 0 00 677777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4174						IFE	<&777777>,<
+  4175						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4176	033006	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4177	033007	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4178	033010	003 11 0 00 003341 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4179	033011	321 13 0 00 033004 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4180
+  4181					;TEST ROT LEFT ONE BIT POSITION
+  4182					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4183					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4184					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4185					;IS ZERO AFTER ROTATING.
+  4186					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4187
+  4188			003342		SN=SN+1
+  4189		777777	677777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4190						IFE	,
+  4191			577777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4192	033012	525 11 0 00 677777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4193						IFN	<&777777>,<
+  4194	033013	525 10 0 00 577777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4195						IFE	<&777777>,<
+  4196						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4197	033014	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4198	033015	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4199	033016	003 11 0 00 003342 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4200	033017	321 13 0 00 033012 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4201
+  4202					;TEST ROT LEFT ONE BIT POSITION
+  4203					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4204					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4205					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4206					;IS ZERO AFTER ROTATING.
+  4207					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4208
+  4209			003343		SN=SN+1
+  4210		777777	577777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4211						IFE	,
+  4212			377777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4213	033020	525 11 0 00 577777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4214						IFN	<&777777>,<
+  4215	033021	525 10 0 00 377777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4216						IFE	<&777777>,<
+  4217						HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4218	033022	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4219	033023	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4220	033024	003 11 0 00 003343 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4221	033025	321 13 0 00 033020 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4222
+  4223					;TEST ROT LEFT ONE BIT POSITION
+  4224					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  4225					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4226					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  4227					;IS ZERO AFTER ROTATING.
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 12-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0101
+
+  4228					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  4229
+  4230			003344		SN=SN+1
+  4231		777777	377777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  4232						IFE	,
+  4233			777777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  4234	033026	525 11 0 00 377777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  4235						IFN	<&777777>,<
+  4236						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  4237						IFE	<&777777>,<
+  4238	033027	561 10 0 00 777776 		HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+  4239	033030	241 11 0 00 000001 		ROT	AC,1		;*ROTATE LEFT ONE
+  4240	033031	312 11 0 00 000010 		CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+  4241	033032	003 11 0 00 003344 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4242	033033	321 13 0 00 033026 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4243
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0102
+
+  4244
+  4245					;TEST ROT RIGHT ONE BIT POSITION
+  4246					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD.
+  4247					;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+  4248
+  4249			000010			AC=10
+  4250						SAVEAC	(1,1)^
+  4251	033034	201 12 0 00 033034 		MOVEI	AC+2,.		;SAVE TEST PC
+  4252	033035	202 12 0 00 030051 		MOVEM	AC+2,TESTPC
+  4253	033036	201 12 0 00 000012 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  4254	033037	202 12 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  4255
+  4256	033040	403 10 0 00 000007 	E3400:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+  4257	033041	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4258	033042	312 10 0 00 000007 		CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+  4259	033043	003 10 0 00 003401 		ER3	AC,3401		;AD-AR GATING FAILED
+  4260	033044	321 12 0 00 033040 		JUMPL	AC+2,E3400	;LOOP ON ERROR SWITCH
+  4261
+  4262					;TEST ROT RIGHT ONE BIT POSITION
+  4263					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4264					;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+  4265
+  4266	033045	477 10 0 00 000007 	E3500:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+  4267	033046	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4268	033047	312 10 0 00 000007 		CAME	AC,AC-1		;TEST AC FOR ALL ONES.
+  4269	033050	003 10 0 00 003501 		ER3	AC,3501		;AD-AR GATING FAILED
+  4270	033051	321 12 0 00 033045 		JUMPL	AC+2,E3500	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0103
+
+  4271			003600		SN=3600
+  4272			000000			ZZ=0
+  4273
+  4274							;TEST AC LEFT HALF<
+  4275					E3600:	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+  4276					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4277					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4278					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4279					;BIT IS ONE AFTER ROTATING
+  4280					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4281
+  4282					SN=SN+1
+  4283						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4284						IFE	ZZ,
+  4285						YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4286						MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4287						IFN	,<
+  4288						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4289						IFE	,<
+  4290						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4291						ROT	AC,-1		;*ROTATE RIGHT ONE
+  4292						CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4293						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4294						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4295					>
+  4296					;TEST ROT RIGHT ONE BIT POSITION
+  4297					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4298					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4299					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4300					;BIT IS ONE AFTER ROTATING
+  4301					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4302
+  4303			003601		SN=SN+1
+  4304			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4305			400000			IFE	ZZ,
+  4306			200000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4307	033052	205 10 0 00 400000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4308						IFN	,<
+  4309	033053	205 07 0 00 200000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4310						IFE	,<
+  4311						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4312	033054	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4313	033055	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4314	033056	003 10 0 00 003601 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4315	033057	321 12 0 00 033052 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4316
+  4317					;TEST ROT RIGHT ONE BIT POSITION
+  4318					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4319					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4320					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4321					;BIT IS ONE AFTER ROTATING
+  4322					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4323
+  4324			003602		SN=SN+1
+  4325			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0104
+
+  4326						IFE	ZZ,
+  4327			100000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4328	033060	205 10 0 00 200000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4329						IFN	,<
+  4330	033061	205 07 0 00 100000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4331						IFE	,<
+  4332						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4333	033062	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4334	033063	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4335	033064	003 10 0 00 003602 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4336	033065	321 12 0 00 033060 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4337
+  4338					;TEST ROT RIGHT ONE BIT POSITION
+  4339					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4340					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4341					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4342					;BIT IS ONE AFTER ROTATING
+  4343					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4344
+  4345			003603		SN=SN+1
+  4346			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4347						IFE	ZZ,
+  4348			040000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4349	033066	205 10 0 00 100000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4350						IFN	,<
+  4351	033067	205 07 0 00 040000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4352						IFE	,<
+  4353						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4354	033070	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4355	033071	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4356	033072	003 10 0 00 003603 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4357	033073	321 12 0 00 033066 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4358
+  4359					;TEST ROT RIGHT ONE BIT POSITION
+  4360					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4361					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4362					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4363					;BIT IS ONE AFTER ROTATING
+  4364					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4365
+  4366			003604		SN=SN+1
+  4367			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4368						IFE	ZZ,
+  4369			020000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4370	033074	205 10 0 00 040000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4371						IFN	,<
+  4372	033075	205 07 0 00 020000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4373						IFE	,<
+  4374						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4375	033076	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4376	033077	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4377	033100	003 10 0 00 003604 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4378	033101	321 12 0 00 033074 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4379
+  4380					;TEST ROT RIGHT ONE BIT POSITION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0105
+
+  4381					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4382					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4383					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4384					;BIT IS ONE AFTER ROTATING
+  4385					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4386
+  4387			003605		SN=SN+1
+  4388			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4389						IFE	ZZ,
+  4390			010000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4391	033102	205 10 0 00 020000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4392						IFN	,<
+  4393	033103	205 07 0 00 010000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4394						IFE	,<
+  4395						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4396	033104	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4397	033105	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4398	033106	003 10 0 00 003605 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4399	033107	321 12 0 00 033102 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4400
+  4401					;TEST ROT RIGHT ONE BIT POSITION
+  4402					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4403					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4404					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4405					;BIT IS ONE AFTER ROTATING
+  4406					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4407
+  4408			003606		SN=SN+1
+  4409			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4410						IFE	ZZ,
+  4411			004000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4412	033110	205 10 0 00 010000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4413						IFN	,<
+  4414	033111	205 07 0 00 004000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4415						IFE	,<
+  4416						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4417	033112	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4418	033113	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4419	033114	003 10 0 00 003606 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4420	033115	321 12 0 00 033110 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4421
+  4422					;TEST ROT RIGHT ONE BIT POSITION
+  4423					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4424					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4425					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4426					;BIT IS ONE AFTER ROTATING
+  4427					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4428
+  4429			003607		SN=SN+1
+  4430			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4431						IFE	ZZ,
+  4432			002000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4433	033116	205 10 0 00 004000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4434						IFN	,<
+  4435	033117	205 07 0 00 002000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0106
+
+  4436						IFE	,<
+  4437						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4438	033120	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4439	033121	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4440	033122	003 10 0 00 003607 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4441	033123	321 12 0 00 033116 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4442
+  4443					;TEST ROT RIGHT ONE BIT POSITION
+  4444					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4445					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4446					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4447					;BIT IS ONE AFTER ROTATING
+  4448					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4449
+  4450			003610		SN=SN+1
+  4451			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4452						IFE	ZZ,
+  4453			001000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4454	033124	205 10 0 00 002000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4455						IFN	,<
+  4456	033125	205 07 0 00 001000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4457						IFE	,<
+  4458						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4459	033126	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4460	033127	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4461	033130	003 10 0 00 003610 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4462	033131	321 12 0 00 033124 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4463
+  4464					;TEST ROT RIGHT ONE BIT POSITION
+  4465					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4466					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4467					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4468					;BIT IS ONE AFTER ROTATING
+  4469					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4470
+  4471			003611		SN=SN+1
+  4472			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4473						IFE	ZZ,
+  4474			000400			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4475	033132	205 10 0 00 001000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4476						IFN	,<
+  4477	033133	205 07 0 00 000400 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4478						IFE	,<
+  4479						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4480	033134	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4481	033135	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4482	033136	003 10 0 00 003611 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4483	033137	321 12 0 00 033132 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4484
+  4485					;TEST ROT RIGHT ONE BIT POSITION
+  4486					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4487					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4488					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4489					;BIT IS ONE AFTER ROTATING
+  4490					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0107
+
+  4491
+  4492			003612		SN=SN+1
+  4493			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4494						IFE	ZZ,
+  4495			000200			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4496	033140	205 10 0 00 000400 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4497						IFN	,<
+  4498	033141	205 07 0 00 000200 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4499						IFE	,<
+  4500						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4501	033142	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4502	033143	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4503	033144	003 10 0 00 003612 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4504	033145	321 12 0 00 033140 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4505
+  4506					;TEST ROT RIGHT ONE BIT POSITION
+  4507					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4508					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4509					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4510					;BIT IS ONE AFTER ROTATING
+  4511					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4512
+  4513			003613		SN=SN+1
+  4514			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4515						IFE	ZZ,
+  4516			000100			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4517	033146	205 10 0 00 000200 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4518						IFN	,<
+  4519	033147	205 07 0 00 000100 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4520						IFE	,<
+  4521						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4522	033150	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4523	033151	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4524	033152	003 10 0 00 003613 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4525	033153	321 12 0 00 033146 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4526
+  4527					;TEST ROT RIGHT ONE BIT POSITION
+  4528					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4529					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4530					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4531					;BIT IS ONE AFTER ROTATING
+  4532					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4533
+  4534			003614		SN=SN+1
+  4535			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4536						IFE	ZZ,
+  4537			000040			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4538	033154	205 10 0 00 000100 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4539						IFN	,<
+  4540	033155	205 07 0 00 000040 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4541						IFE	,<
+  4542						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4543	033156	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4544	033157	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4545	033160	003 10 0 00 003614 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0108
+
+  4546	033161	321 12 0 00 033154 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4547
+  4548					;TEST ROT RIGHT ONE BIT POSITION
+  4549					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4550					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4551					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4552					;BIT IS ONE AFTER ROTATING
+  4553					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4554
+  4555			003615		SN=SN+1
+  4556			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4557						IFE	ZZ,
+  4558			000020			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4559	033162	205 10 0 00 000040 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4560						IFN	,<
+  4561	033163	205 07 0 00 000020 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4562						IFE	,<
+  4563						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4564	033164	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4565	033165	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4566	033166	003 10 0 00 003615 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4567	033167	321 12 0 00 033162 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4568
+  4569					;TEST ROT RIGHT ONE BIT POSITION
+  4570					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4571					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4572					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4573					;BIT IS ONE AFTER ROTATING
+  4574					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4575
+  4576			003616		SN=SN+1
+  4577			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4578						IFE	ZZ,
+  4579			000010			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4580	033170	205 10 0 00 000020 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4581						IFN	,<
+  4582	033171	205 07 0 00 000010 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4583						IFE	,<
+  4584						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4585	033172	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4586	033173	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4587	033174	003 10 0 00 003616 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4588	033175	321 12 0 00 033170 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4589
+  4590					;TEST ROT RIGHT ONE BIT POSITION
+  4591					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4592					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4593					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4594					;BIT IS ONE AFTER ROTATING
+  4595					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4596
+  4597			003617		SN=SN+1
+  4598			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4599						IFE	ZZ,
+  4600			000004			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0109
+
+  4601	033176	205 10 0 00 000010 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4602						IFN	,<
+  4603	033177	205 07 0 00 000004 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4604						IFE	,<
+  4605						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4606	033200	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4607	033201	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4608	033202	003 10 0 00 003617 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4609	033203	321 12 0 00 033176 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4610
+  4611					;TEST ROT RIGHT ONE BIT POSITION
+  4612					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4613					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4614					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4615					;BIT IS ONE AFTER ROTATING
+  4616					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4617
+  4618			003620		SN=SN+1
+  4619			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4620						IFE	ZZ,
+  4621			000002			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4622	033204	205 10 0 00 000004 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4623						IFN	,<
+  4624	033205	205 07 0 00 000002 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4625						IFE	,<
+  4626						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4627	033206	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4628	033207	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4629	033210	003 10 0 00 003620 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4630	033211	321 12 0 00 033204 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4631
+  4632					;TEST ROT RIGHT ONE BIT POSITION
+  4633					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4634					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4635					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4636					;BIT IS ONE AFTER ROTATING
+  4637					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4638
+  4639			003621		SN=SN+1
+  4640			000002			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4641						IFE	ZZ,
+  4642			000001			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4643	033212	205 10 0 00 000002 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4644						IFN	,<
+  4645	033213	205 07 0 00 000001 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4646						IFE	,<
+  4647						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4648	033214	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4649	033215	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4650	033216	003 10 0 00 003621 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4651	033217	321 12 0 00 033212 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4652
+  4653					;TEST ROT RIGHT ONE BIT POSITION
+  4654					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4655					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0110
+
+  4656					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  4657					;BIT IS ONE AFTER ROTATING
+  4658					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4659
+  4660			003622		SN=SN+1
+  4661			000001			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4662						IFE	ZZ,
+  4663			000000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4664	033220	205 10 0 00 000001 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  4665						IFN	,<
+  4666						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  4667						IFE	,<
+  4668	033221	201 07 0 00 400000 		MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  4669	033222	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4670	033223	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+  4671	033224	003 10 0 00 003622 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4672	033225	321 12 0 00 033220 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4673
+  4674					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0111
+
+  4675			000000			ZZ=0
+  4676
+  4677							;TEST AC RIGHT HALF<
+  4678						REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+  4679					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4680					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4681					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4682					;ONE AFTER ROTATING
+  4683					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4684
+  4685					SN=SN+1
+  4686						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4687						IFE	ZZ,
+  4688						YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4689						MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4690						IFN	,<
+  4691						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4692						IFE	,<
+  4693						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4694						ROT	AC,-1		;*ROTATE RIGHT ONE
+  4695						CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4696						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4697						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4698					>
+  4699					;TEST ROT RIGHT ONE BIT POSITION
+  4700					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4701					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4702					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4703					;ONE AFTER ROTATING
+  4704					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4705
+  4706			003623		SN=SN+1
+  4707			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4708			400000			IFE	ZZ,
+  4709			200000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4710	033226	201 10 0 00 400000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4711						IFN	,<
+  4712	033227	201 07 0 00 200000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4713						IFE	,<
+  4714						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4715	033230	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4716	033231	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4717	033232	003 10 0 00 003623 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4718	033233	321 12 0 00 033226 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4719
+  4720					;TEST ROT RIGHT ONE BIT POSITION
+  4721					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4722					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4723					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4724					;ONE AFTER ROTATING
+  4725					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4726
+  4727			003624		SN=SN+1
+  4728			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4729						IFE	ZZ,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0112
+
+  4730			100000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4731	033234	201 10 0 00 200000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4732						IFN	,<
+  4733	033235	201 07 0 00 100000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4734						IFE	,<
+  4735						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4736	033236	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4737	033237	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4738	033240	003 10 0 00 003624 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4739	033241	321 12 0 00 033234 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4740
+  4741					;TEST ROT RIGHT ONE BIT POSITION
+  4742					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4743					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4744					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4745					;ONE AFTER ROTATING
+  4746					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4747
+  4748			003625		SN=SN+1
+  4749			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4750						IFE	ZZ,
+  4751			040000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4752	033242	201 10 0 00 100000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4753						IFN	,<
+  4754	033243	201 07 0 00 040000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4755						IFE	,<
+  4756						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4757	033244	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4758	033245	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4759	033246	003 10 0 00 003625 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4760	033247	321 12 0 00 033242 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4761
+  4762					;TEST ROT RIGHT ONE BIT POSITION
+  4763					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4764					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4765					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4766					;ONE AFTER ROTATING
+  4767					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4768
+  4769			003626		SN=SN+1
+  4770			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4771						IFE	ZZ,
+  4772			020000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4773	033250	201 10 0 00 040000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4774						IFN	,<
+  4775	033251	201 07 0 00 020000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4776						IFE	,<
+  4777						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4778	033252	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4779	033253	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4780	033254	003 10 0 00 003626 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4781	033255	321 12 0 00 033250 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4782
+  4783					;TEST ROT RIGHT ONE BIT POSITION
+  4784					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0113
+
+  4785					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4786					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4787					;ONE AFTER ROTATING
+  4788					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4789
+  4790			003627		SN=SN+1
+  4791			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4792						IFE	ZZ,
+  4793			010000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4794	033256	201 10 0 00 020000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4795						IFN	,<
+  4796	033257	201 07 0 00 010000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4797						IFE	,<
+  4798						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4799	033260	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4800	033261	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4801	033262	003 10 0 00 003627 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4802	033263	321 12 0 00 033256 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4803
+  4804					;TEST ROT RIGHT ONE BIT POSITION
+  4805					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4806					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4807					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4808					;ONE AFTER ROTATING
+  4809					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4810
+  4811			003630		SN=SN+1
+  4812			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4813						IFE	ZZ,
+  4814			004000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4815	033264	201 10 0 00 010000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4816						IFN	,<
+  4817	033265	201 07 0 00 004000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4818						IFE	,<
+  4819						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4820	033266	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4821	033267	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4822	033270	003 10 0 00 003630 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4823	033271	321 12 0 00 033264 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4824
+  4825					;TEST ROT RIGHT ONE BIT POSITION
+  4826					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4827					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4828					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4829					;ONE AFTER ROTATING
+  4830					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4831
+  4832			003631		SN=SN+1
+  4833			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4834						IFE	ZZ,
+  4835			002000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4836	033272	201 10 0 00 004000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4837						IFN	,<
+  4838	033273	201 07 0 00 002000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4839						IFE	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0114
+
+  4840						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4841	033274	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4842	033275	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4843	033276	003 10 0 00 003631 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4844	033277	321 12 0 00 033272 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4845
+  4846					;TEST ROT RIGHT ONE BIT POSITION
+  4847					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4848					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4849					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4850					;ONE AFTER ROTATING
+  4851					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4852
+  4853			003632		SN=SN+1
+  4854			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4855						IFE	ZZ,
+  4856			001000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4857	033300	201 10 0 00 002000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4858						IFN	,<
+  4859	033301	201 07 0 00 001000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4860						IFE	,<
+  4861						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4862	033302	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4863	033303	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4864	033304	003 10 0 00 003632 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4865	033305	321 12 0 00 033300 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4866
+  4867					;TEST ROT RIGHT ONE BIT POSITION
+  4868					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4869					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4870					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4871					;ONE AFTER ROTATING
+  4872					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4873
+  4874			003633		SN=SN+1
+  4875			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4876						IFE	ZZ,
+  4877			000400			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4878	033306	201 10 0 00 001000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4879						IFN	,<
+  4880	033307	201 07 0 00 000400 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4881						IFE	,<
+  4882						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4883	033310	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4884	033311	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4885	033312	003 10 0 00 003633 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4886	033313	321 12 0 00 033306 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4887
+  4888					;TEST ROT RIGHT ONE BIT POSITION
+  4889					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4890					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4891					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4892					;ONE AFTER ROTATING
+  4893					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4894
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0115
+
+  4895			003634		SN=SN+1
+  4896			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4897						IFE	ZZ,
+  4898			000200			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4899	033314	201 10 0 00 000400 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4900						IFN	,<
+  4901	033315	201 07 0 00 000200 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4902						IFE	,<
+  4903						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4904	033316	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4905	033317	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4906	033320	003 10 0 00 003634 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4907	033321	321 12 0 00 033314 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4908
+  4909					;TEST ROT RIGHT ONE BIT POSITION
+  4910					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4911					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4912					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4913					;ONE AFTER ROTATING
+  4914					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4915
+  4916			003635		SN=SN+1
+  4917			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4918						IFE	ZZ,
+  4919			000100			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4920	033322	201 10 0 00 000200 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4921						IFN	,<
+  4922	033323	201 07 0 00 000100 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4923						IFE	,<
+  4924						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4925	033324	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4926	033325	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4927	033326	003 10 0 00 003635 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4928	033327	321 12 0 00 033322 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4929
+  4930					;TEST ROT RIGHT ONE BIT POSITION
+  4931					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4932					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4933					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4934					;ONE AFTER ROTATING
+  4935					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4936
+  4937			003636		SN=SN+1
+  4938			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4939						IFE	ZZ,
+  4940			000040			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4941	033330	201 10 0 00 000100 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4942						IFN	,<
+  4943	033331	201 07 0 00 000040 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4944						IFE	,<
+  4945						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4946	033332	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4947	033333	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4948	033334	003 10 0 00 003636 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4949	033335	321 12 0 00 033330 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0116
+
+  4950
+  4951					;TEST ROT RIGHT ONE BIT POSITION
+  4952					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4953					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4954					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4955					;ONE AFTER ROTATING
+  4956					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4957
+  4958			003637		SN=SN+1
+  4959			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4960						IFE	ZZ,
+  4961			000020			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4962	033336	201 10 0 00 000040 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4963						IFN	,<
+  4964	033337	201 07 0 00 000020 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4965						IFE	,<
+  4966						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4967	033340	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4968	033341	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4969	033342	003 10 0 00 003637 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4970	033343	321 12 0 00 033336 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4971
+  4972					;TEST ROT RIGHT ONE BIT POSITION
+  4973					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4974					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4975					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4976					;ONE AFTER ROTATING
+  4977					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4978
+  4979			003640		SN=SN+1
+  4980			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  4981						IFE	ZZ,
+  4982			000010			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  4983	033344	201 10 0 00 000020 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  4984						IFN	,<
+  4985	033345	201 07 0 00 000010 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  4986						IFE	,<
+  4987						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  4988	033346	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  4989	033347	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  4990	033350	003 10 0 00 003640 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  4991	033351	321 12 0 00 033344 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  4992
+  4993					;TEST ROT RIGHT ONE BIT POSITION
+  4994					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  4995					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  4996					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  4997					;ONE AFTER ROTATING
+  4998					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  4999
+  5000			003641		SN=SN+1
+  5001			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5002						IFE	ZZ,
+  5003			000004			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  5004	033352	201 10 0 00 000010 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0117
+
+  5005						IFN	,<
+  5006	033353	201 07 0 00 000004 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  5007						IFE	,<
+  5008						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  5009	033354	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5010	033355	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  5011	033356	003 10 0 00 003641 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5012	033357	321 12 0 00 033352 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5013
+  5014					;TEST ROT RIGHT ONE BIT POSITION
+  5015					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  5016					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5017					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  5018					;ONE AFTER ROTATING
+  5019					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5020
+  5021			003642		SN=SN+1
+  5022			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5023						IFE	ZZ,
+  5024			000002			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  5025	033360	201 10 0 00 000004 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  5026						IFN	,<
+  5027	033361	201 07 0 00 000002 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  5028						IFE	,<
+  5029						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  5030	033362	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5031	033363	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  5032	033364	003 10 0 00 003642 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5033	033365	321 12 0 00 033360 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5034
+  5035					;TEST ROT RIGHT ONE BIT POSITION
+  5036					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  5037					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5038					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  5039					;ONE AFTER ROTATING
+  5040					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5041
+  5042			003643		SN=SN+1
+  5043			000002			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5044						IFE	ZZ,
+  5045			000001			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  5046	033366	201 10 0 00 000002 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  5047						IFN	,<
+  5048	033367	201 07 0 00 000001 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  5049						IFE	,<
+  5050						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  5051	033370	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5052	033371	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  5053	033372	003 10 0 00 003643 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5054	033373	321 12 0 00 033366 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5055
+  5056					;TEST ROT RIGHT ONE BIT POSITION
+  5057					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  5058					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5059					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 14-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0118
+
+  5060					;ONE AFTER ROTATING
+  5061					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5062
+  5063			003644		SN=SN+1
+  5064			000001			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5065						IFE	ZZ,
+  5066			000000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  5067	033374	201 10 0 00 000001 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  5068						IFN	,<
+  5069						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  5070						IFE	,<
+  5071	033375	205 07 0 00 400000 		MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  5072	033376	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5073	033377	312 10 0 00 000007 		CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+  5074	033400	003 10 0 00 003644 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5075	033401	321 12 0 00 033374 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5076
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0119
+
+  5077			003700		SN=3700
+  5078			000001			ZZ=1
+  5079
+  5080						;TEST AC LEFT HALF<
+  5081					E3700:	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+  5082					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5083					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5084					;IS ZERO AFTER ROTATING.
+  5085					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5086
+  5087					SN=SN+1
+  5088						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5089						IFE	,
+  5090						YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5091						HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5092						IFN	,<
+  5093						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5094						IFE	,<
+  5095						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5096						ROT	AC,-1		;*ROTATE RIGHT ONE
+  5097						CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5098						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5099						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5100					>
+  5101					;TEST ROT RIGHT ONE BIT POSITION
+  5102					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5103					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5104					;IS ZERO AFTER ROTATING.
+  5105					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5106
+  5107			003701		SN=SN+1
+  5108			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5109		777777	377777			IFE	,
+  5110			577777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5111	033402	525 10 0 00 377777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5112						IFN	,<
+  5113	033403	525 07 0 00 577777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5114						IFE	,<
+  5115						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5116	033404	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5117	033405	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5118	033406	003 10 0 00 003701 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5119	033407	321 12 0 00 033402 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5120
+  5121					;TEST ROT RIGHT ONE BIT POSITION
+  5122					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5123					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5124					;IS ZERO AFTER ROTATING.
+  5125					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5126
+  5127			003702		SN=SN+1
+  5128		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5129						IFE	,
+  5130			677777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5131	033410	525 10 0 00 577777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0120
+
+  5132						IFN	,<
+  5133	033411	525 07 0 00 677777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5134						IFE	,<
+  5135						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5136	033412	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5137	033413	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5138	033414	003 10 0 00 003702 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5139	033415	321 12 0 00 033410 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5140
+  5141					;TEST ROT RIGHT ONE BIT POSITION
+  5142					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5143					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5144					;IS ZERO AFTER ROTATING.
+  5145					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5146
+  5147			003703		SN=SN+1
+  5148		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5149						IFE	,
+  5150			737777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5151	033416	525 10 0 00 677777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5152						IFN	,<
+  5153	033417	525 07 0 00 737777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5154						IFE	,<
+  5155						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5156	033420	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5157	033421	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5158	033422	003 10 0 00 003703 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5159	033423	321 12 0 00 033416 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5160
+  5161					;TEST ROT RIGHT ONE BIT POSITION
+  5162					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5163					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5164					;IS ZERO AFTER ROTATING.
+  5165					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5166
+  5167			003704		SN=SN+1
+  5168		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5169						IFE	,
+  5170			757777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5171	033424	525 10 0 00 737777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5172						IFN	,<
+  5173	033425	525 07 0 00 757777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5174						IFE	,<
+  5175						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5176	033426	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5177	033427	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5178	033430	003 10 0 00 003704 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5179	033431	321 12 0 00 033424 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5180
+  5181					;TEST ROT RIGHT ONE BIT POSITION
+  5182					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5183					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5184					;IS ZERO AFTER ROTATING.
+  5185					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5186
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0121
+
+  5187			003705		SN=SN+1
+  5188		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5189						IFE	,
+  5190			767777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5191	033432	525 10 0 00 757777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5192						IFN	,<
+  5193	033433	525 07 0 00 767777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5194						IFE	,<
+  5195						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5196	033434	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5197	033435	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5198	033436	003 10 0 00 003705 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5199	033437	321 12 0 00 033432 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5200
+  5201					;TEST ROT RIGHT ONE BIT POSITION
+  5202					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5203					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5204					;IS ZERO AFTER ROTATING.
+  5205					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5206
+  5207			003706		SN=SN+1
+  5208		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5209						IFE	,
+  5210			773777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5211	033440	525 10 0 00 767777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5212						IFN	,<
+  5213	033441	525 07 0 00 773777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5214						IFE	,<
+  5215						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5216	033442	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5217	033443	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5218	033444	003 10 0 00 003706 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5219	033445	321 12 0 00 033440 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5220
+  5221					;TEST ROT RIGHT ONE BIT POSITION
+  5222					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5223					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5224					;IS ZERO AFTER ROTATING.
+  5225					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5226
+  5227			003707		SN=SN+1
+  5228		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5229						IFE	,
+  5230			775777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5231	033446	525 10 0 00 773777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5232						IFN	,<
+  5233	033447	525 07 0 00 775777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5234						IFE	,<
+  5235						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5236	033450	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5237	033451	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5238	033452	003 10 0 00 003707 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5239	033453	321 12 0 00 033446 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5240
+  5241					;TEST ROT RIGHT ONE BIT POSITION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0122
+
+  5242					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5243					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5244					;IS ZERO AFTER ROTATING.
+  5245					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5246
+  5247			003710		SN=SN+1
+  5248		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5249						IFE	,
+  5250			776777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5251	033454	525 10 0 00 775777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5252						IFN	,<
+  5253	033455	525 07 0 00 776777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5254						IFE	,<
+  5255						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5256	033456	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5257	033457	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5258	033460	003 10 0 00 003710 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5259	033461	321 12 0 00 033454 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5260
+  5261					;TEST ROT RIGHT ONE BIT POSITION
+  5262					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5263					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5264					;IS ZERO AFTER ROTATING.
+  5265					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5266
+  5267			003711		SN=SN+1
+  5268		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5269						IFE	,
+  5270			777377			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5271	033462	525 10 0 00 776777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5272						IFN	,<
+  5273	033463	525 07 0 00 777377 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5274						IFE	,<
+  5275						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5276	033464	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5277	033465	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5278	033466	003 10 0 00 003711 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5279	033467	321 12 0 00 033462 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5280
+  5281					;TEST ROT RIGHT ONE BIT POSITION
+  5282					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5283					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5284					;IS ZERO AFTER ROTATING.
+  5285					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5286
+  5287			003712		SN=SN+1
+  5288		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5289						IFE	,
+  5290			777577			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5291	033470	525 10 0 00 777377 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5292						IFN	,<
+  5293	033471	525 07 0 00 777577 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5294						IFE	,<
+  5295						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5296	033472	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0123
+
+  5297	033473	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5298	033474	003 10 0 00 003712 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5299	033475	321 12 0 00 033470 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5300
+  5301					;TEST ROT RIGHT ONE BIT POSITION
+  5302					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5303					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5304					;IS ZERO AFTER ROTATING.
+  5305					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5306
+  5307			003713		SN=SN+1
+  5308		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5309						IFE	,
+  5310			777677			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5311	033476	525 10 0 00 777577 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5312						IFN	,<
+  5313	033477	525 07 0 00 777677 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5314						IFE	,<
+  5315						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5316	033500	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5317	033501	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5318	033502	003 10 0 00 003713 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5319	033503	321 12 0 00 033476 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5320
+  5321					;TEST ROT RIGHT ONE BIT POSITION
+  5322					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5323					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5324					;IS ZERO AFTER ROTATING.
+  5325					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5326
+  5327			003714		SN=SN+1
+  5328		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5329						IFE	,
+  5330			777737			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5331	033504	525 10 0 00 777677 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5332						IFN	,<
+  5333	033505	525 07 0 00 777737 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5334						IFE	,<
+  5335						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5336	033506	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5337	033507	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5338	033510	003 10 0 00 003714 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5339	033511	321 12 0 00 033504 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5340
+  5341					;TEST ROT RIGHT ONE BIT POSITION
+  5342					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5343					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5344					;IS ZERO AFTER ROTATING.
+  5345					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5346
+  5347			003715		SN=SN+1
+  5348		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5349						IFE	,
+  5350			777757			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5351	033512	525 10 0 00 777737 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0124
+
+  5352						IFN	,<
+  5353	033513	525 07 0 00 777757 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5354						IFE	,<
+  5355						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5356	033514	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5357	033515	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5358	033516	003 10 0 00 003715 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5359	033517	321 12 0 00 033512 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5360
+  5361					;TEST ROT RIGHT ONE BIT POSITION
+  5362					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5363					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5364					;IS ZERO AFTER ROTATING.
+  5365					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5366
+  5367			003716		SN=SN+1
+  5368		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5369						IFE	,
+  5370			777767			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5371	033520	525 10 0 00 777757 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5372						IFN	,<
+  5373	033521	525 07 0 00 777767 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5374						IFE	,<
+  5375						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5376	033522	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5377	033523	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5378	033524	003 10 0 00 003716 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5379	033525	321 12 0 00 033520 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5380
+  5381					;TEST ROT RIGHT ONE BIT POSITION
+  5382					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5383					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5384					;IS ZERO AFTER ROTATING.
+  5385					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5386
+  5387			003717		SN=SN+1
+  5388		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5389						IFE	,
+  5390			777773			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5391	033526	525 10 0 00 777767 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5392						IFN	,<
+  5393	033527	525 07 0 00 777773 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5394						IFE	,<
+  5395						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5396	033530	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5397	033531	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5398	033532	003 10 0 00 003717 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5399	033533	321 12 0 00 033526 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5400
+  5401					;TEST ROT RIGHT ONE BIT POSITION
+  5402					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5403					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5404					;IS ZERO AFTER ROTATING.
+  5405					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5406
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0125
+
+  5407			003720		SN=SN+1
+  5408		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5409						IFE	,
+  5410			777775			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5411	033534	525 10 0 00 777773 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5412						IFN	,<
+  5413	033535	525 07 0 00 777775 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5414						IFE	,<
+  5415						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5416	033536	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5417	033537	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5418	033540	003 10 0 00 003720 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5419	033541	321 12 0 00 033534 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5420
+  5421					;TEST ROT RIGHT ONE BIT POSITION
+  5422					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5423					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5424					;IS ZERO AFTER ROTATING.
+  5425					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5426
+  5427			003721		SN=SN+1
+  5428		777777	777775			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5429						IFE	,
+  5430			777776			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5431	033542	525 10 0 00 777775 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5432						IFN	,<
+  5433	033543	525 07 0 00 777776 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5434						IFE	,<
+  5435						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5436	033544	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5437	033545	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5438	033546	003 10 0 00 003721 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5439	033547	321 12 0 00 033542 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5440
+  5441					;TEST ROT RIGHT ONE BIT POSITION
+  5442					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5443					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5444					;IS ZERO AFTER ROTATING.
+  5445					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5446
+  5447			003722		SN=SN+1
+  5448		777777	777776			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5449						IFE	,
+  5450			777777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5451	033550	525 10 0 00 777776 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  5452						IFN	,<
+  5453						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  5454						IFE	,<
+  5455	033551	561 07 0 00 377777 		HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  5456	033552	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5457	033553	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5458	033554	003 10 0 00 003722 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5459	033555	321 12 0 00 033550 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5460
+  5461					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0126
+
+  5462			000001			ZZ=1
+  5463
+  5464						;TEST AC RIGHT HALF<
+  5465						REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+  5466					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5467					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5468					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5469					;IS ZERO AFTER ROTATING.
+  5470					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5471
+  5472					SN=SN+1
+  5473						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5474						IFE	,
+  5475						YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5476						HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5477						IFN	,<
+  5478						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5479						IFE	,<
+  5480						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5481						ROT	AC,-1		;*ROTATE RIGHT ONE
+  5482						CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5483						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5484						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5485					>
+  5486					;TEST ROT RIGHT ONE BIT POSITION
+  5487					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5488					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5489					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5490					;IS ZERO AFTER ROTATING.
+  5491					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5492
+  5493			003723		SN=SN+1
+  5494			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5495		777777	377777			IFE	,
+  5496			577777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5497	033556	561 10 0 00 377777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5498						IFN	,<
+  5499	033557	561 07 0 00 577777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5500						IFE	,<
+  5501						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5502	033560	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5503	033561	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5504	033562	003 10 0 00 003723 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5505	033563	321 12 0 00 033556 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5506
+  5507					;TEST ROT RIGHT ONE BIT POSITION
+  5508					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5509					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5510					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5511					;IS ZERO AFTER ROTATING.
+  5512					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5513
+  5514			003724		SN=SN+1
+  5515		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5516						IFE	,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0127
+
+  5517			677777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5518	033564	561 10 0 00 577777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5519						IFN	,<
+  5520	033565	561 07 0 00 677777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5521						IFE	,<
+  5522						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5523	033566	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5524	033567	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5525	033570	003 10 0 00 003724 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5526	033571	321 12 0 00 033564 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5527
+  5528					;TEST ROT RIGHT ONE BIT POSITION
+  5529					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5530					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5531					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5532					;IS ZERO AFTER ROTATING.
+  5533					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5534
+  5535			003725		SN=SN+1
+  5536		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5537						IFE	,
+  5538			737777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5539	033572	561 10 0 00 677777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5540						IFN	,<
+  5541	033573	561 07 0 00 737777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5542						IFE	,<
+  5543						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5544	033574	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5545	033575	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5546	033576	003 10 0 00 003725 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5547	033577	321 12 0 00 033572 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5548
+  5549					;TEST ROT RIGHT ONE BIT POSITION
+  5550					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5551					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5552					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5553					;IS ZERO AFTER ROTATING.
+  5554					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5555
+  5556			003726		SN=SN+1
+  5557		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5558						IFE	,
+  5559			757777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5560	033600	561 10 0 00 737777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5561						IFN	,<
+  5562	033601	561 07 0 00 757777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5563						IFE	,<
+  5564						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5565	033602	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5566	033603	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5567	033604	003 10 0 00 003726 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5568	033605	321 12 0 00 033600 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5569
+  5570					;TEST ROT RIGHT ONE BIT POSITION
+  5571					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0128
+
+  5572					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5573					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5574					;IS ZERO AFTER ROTATING.
+  5575					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5576
+  5577			003727		SN=SN+1
+  5578		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5579						IFE	,
+  5580			767777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5581	033606	561 10 0 00 757777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5582						IFN	,<
+  5583	033607	561 07 0 00 767777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5584						IFE	,<
+  5585						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5586	033610	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5587	033611	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5588	033612	003 10 0 00 003727 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5589	033613	321 12 0 00 033606 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5590
+  5591					;TEST ROT RIGHT ONE BIT POSITION
+  5592					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5593					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5594					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5595					;IS ZERO AFTER ROTATING.
+  5596					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5597
+  5598			003730		SN=SN+1
+  5599		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5600						IFE	,
+  5601			773777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5602	033614	561 10 0 00 767777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5603						IFN	,<
+  5604	033615	561 07 0 00 773777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5605						IFE	,<
+  5606						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5607	033616	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5608	033617	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5609	033620	003 10 0 00 003730 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5610	033621	321 12 0 00 033614 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5611
+  5612					;TEST ROT RIGHT ONE BIT POSITION
+  5613					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5614					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5615					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5616					;IS ZERO AFTER ROTATING.
+  5617					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5618
+  5619			003731		SN=SN+1
+  5620		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5621						IFE	,
+  5622			775777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5623	033622	561 10 0 00 773777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5624						IFN	,<
+  5625	033623	561 07 0 00 775777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5626						IFE	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0129
+
+  5627						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5628	033624	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5629	033625	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5630	033626	003 10 0 00 003731 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5631	033627	321 12 0 00 033622 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5632
+  5633					;TEST ROT RIGHT ONE BIT POSITION
+  5634					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5635					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5636					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5637					;IS ZERO AFTER ROTATING.
+  5638					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5639
+  5640			003732		SN=SN+1
+  5641		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5642						IFE	,
+  5643			776777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5644	033630	561 10 0 00 775777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5645						IFN	,<
+  5646	033631	561 07 0 00 776777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5647						IFE	,<
+  5648						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5649	033632	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5650	033633	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5651	033634	003 10 0 00 003732 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5652	033635	321 12 0 00 033630 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5653
+  5654					;TEST ROT RIGHT ONE BIT POSITION
+  5655					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5656					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5657					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5658					;IS ZERO AFTER ROTATING.
+  5659					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5660
+  5661			003733		SN=SN+1
+  5662		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5663						IFE	,
+  5664			777377			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5665	033636	561 10 0 00 776777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5666						IFN	,<
+  5667	033637	561 07 0 00 777377 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5668						IFE	,<
+  5669						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5670	033640	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5671	033641	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5672	033642	003 10 0 00 003733 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5673	033643	321 12 0 00 033636 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5674
+  5675					;TEST ROT RIGHT ONE BIT POSITION
+  5676					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5677					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5678					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5679					;IS ZERO AFTER ROTATING.
+  5680					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5681
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0130
+
+  5682			003734		SN=SN+1
+  5683		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5684						IFE	,
+  5685			777577			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5686	033644	561 10 0 00 777377 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5687						IFN	,<
+  5688	033645	561 07 0 00 777577 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5689						IFE	,<
+  5690						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5691	033646	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5692	033647	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5693	033650	003 10 0 00 003734 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5694	033651	321 12 0 00 033644 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5695
+  5696					;TEST ROT RIGHT ONE BIT POSITION
+  5697					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5698					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5699					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5700					;IS ZERO AFTER ROTATING.
+  5701					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5702
+  5703			003735		SN=SN+1
+  5704		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5705						IFE	,
+  5706			777677			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5707	033652	561 10 0 00 777577 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5708						IFN	,<
+  5709	033653	561 07 0 00 777677 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5710						IFE	,<
+  5711						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5712	033654	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5713	033655	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5714	033656	003 10 0 00 003735 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5715	033657	321 12 0 00 033652 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5716
+  5717					;TEST ROT RIGHT ONE BIT POSITION
+  5718					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5719					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5720					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5721					;IS ZERO AFTER ROTATING.
+  5722					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5723
+  5724			003736		SN=SN+1
+  5725		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5726						IFE	,
+  5727			777737			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5728	033660	561 10 0 00 777677 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5729						IFN	,<
+  5730	033661	561 07 0 00 777737 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5731						IFE	,<
+  5732						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5733	033662	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5734	033663	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5735	033664	003 10 0 00 003736 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5736	033665	321 12 0 00 033660 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0131
+
+  5737
+  5738					;TEST ROT RIGHT ONE BIT POSITION
+  5739					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5740					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5741					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5742					;IS ZERO AFTER ROTATING.
+  5743					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5744
+  5745			003737		SN=SN+1
+  5746		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5747						IFE	,
+  5748			777757			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5749	033666	561 10 0 00 777737 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5750						IFN	,<
+  5751	033667	561 07 0 00 777757 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5752						IFE	,<
+  5753						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5754	033670	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5755	033671	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5756	033672	003 10 0 00 003737 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5757	033673	321 12 0 00 033666 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5758
+  5759					;TEST ROT RIGHT ONE BIT POSITION
+  5760					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5761					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5762					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5763					;IS ZERO AFTER ROTATING.
+  5764					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5765
+  5766			003740		SN=SN+1
+  5767		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5768						IFE	,
+  5769			777767			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5770	033674	561 10 0 00 777757 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5771						IFN	,<
+  5772	033675	561 07 0 00 777767 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5773						IFE	,<
+  5774						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5775	033676	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5776	033677	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5777	033700	003 10 0 00 003740 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5778	033701	321 12 0 00 033674 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5779
+  5780					;TEST ROT RIGHT ONE BIT POSITION
+  5781					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5782					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5783					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5784					;IS ZERO AFTER ROTATING.
+  5785					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5786
+  5787			003741		SN=SN+1
+  5788		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5789						IFE	,
+  5790			777773			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5791	033702	561 10 0 00 777767 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0132
+
+  5792						IFN	,<
+  5793	033703	561 07 0 00 777773 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5794						IFE	,<
+  5795						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5796	033704	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5797	033705	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5798	033706	003 10 0 00 003741 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5799	033707	321 12 0 00 033702 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5800
+  5801					;TEST ROT RIGHT ONE BIT POSITION
+  5802					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5803					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5804					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5805					;IS ZERO AFTER ROTATING.
+  5806					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5807
+  5808			003742		SN=SN+1
+  5809		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5810						IFE	,
+  5811			777775			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5812	033710	561 10 0 00 777773 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5813						IFN	,<
+  5814	033711	561 07 0 00 777775 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5815						IFE	,<
+  5816						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5817	033712	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5818	033713	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5819	033714	003 10 0 00 003742 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5820	033715	321 12 0 00 033710 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5821
+  5822					;TEST ROT RIGHT ONE BIT POSITION
+  5823					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5824					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5825					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  5826					;IS ZERO AFTER ROTATING.
+  5827					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5828
+  5829			003743		SN=SN+1
+  5830		777777	777775			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5831						IFE	,
+  5832			777776			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5833	033716	561 10 0 00 777775 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5834						IFN	,<
+  5835	033717	561 07 0 00 777776 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5836						IFE	,<
+  5837						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5838	033720	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5839	033721	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5840	033722	003 10 0 00 003743 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5841	033723	321 12 0 00 033716 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5842
+  5843					;TEST ROT RIGHT ONE BIT POSITION
+  5844					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  5845					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5846					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 15-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0133
+
+  5847					;IS ZERO AFTER ROTATING.
+  5848					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  5849
+  5850			003744		SN=SN+1
+  5851		777777	777776			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  5852						IFE	,
+  5853			777777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+  5854	033724	561 10 0 00 777776 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  5855						IFN	,<
+  5856						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  5857						IFE	,<
+  5858	033725	525 07 0 00 377777 		HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  5859	033726	241 10 0 00 777777 		ROT	AC,-1		;*ROTATE RIGHT ONE
+  5860	033727	312 10 0 00 000007 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  5861	033730	003 10 0 00 003744 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5862	033731	321 12 0 00 033724 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5863
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 16
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0134
+
+  5864					;TEST ROT RIGHT TWO BIT POSITIONS
+  5865					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5866					;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+  5867
+  5868			000007			AC=7
+  5869						SAVEAC	(1,1)^
+  5870	033732	201 11 0 00 033732 		MOVEI	AC+2,.		;SAVE TEST PC
+  5871	033733	202 11 0 00 030051 		MOVEM	AC+2,TESTPC
+  5872	033734	201 11 0 00 000011 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  5873	033735	202 11 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  5874
+  5875	033736	403 07 0 00 000006 	E4000:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+  5876	033737	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  5877	033740	312 07 0 00 000006 		CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+  5878	033741	003 07 0 00 004001 		ER3	AC,4001		;AD-AR GATING FAILED
+  5879	033742	321 11 0 00 033736 		JUMPL	AC+2,E4000	;LOOP ON ERROR SWITCH
+  5880
+  5881					;TEST ROT RIGHT TWO BIT POSITIONS
+  5882					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5883					;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+  5884
+  5885	033743	477 07 0 00 000006 	E4100:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+  5886	033744	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  5887	033745	312 07 0 00 000006 		CAME	AC,AC-1		;TEST AC FOR ALL ONES.
+  5888	033746	003 07 0 00 004101 		ER3	AC,4101		;AD-AR GATING FAILED
+  5889	033747	321 11 0 00 033743 		JUMPL	AC+2,E4100	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0135
+
+  5890
+  5891			004200		SN=4200
+  5892			000000			ZZ=0
+  5893
+  5894							;TEST AC LEFT HALF<
+  5895					E4200:	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+  5896					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  5897					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5898					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  5899					;BIT IS ONE AFTER ROTATING
+  5900					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5901
+  5902					SN=SN+1
+  5903						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5904						IFE	ZZ,
+  5905						YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  5906						MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  5907						IFG	,<
+  5908						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  5909						IFE	,<
+  5910						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  5911						IFE	,<
+  5912						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  5913						ROT	AC,-2		;*ROTATE RIGHT TWO
+  5914						CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  5915						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5916						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5917					>
+  5918					;TEST ROT RIGHT TWO BIT POSITIONS
+  5919					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  5920					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5921					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  5922					;BIT IS ONE AFTER ROTATING
+  5923					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5924
+  5925			004201		SN=SN+1
+  5926			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5927			400000			IFE	ZZ,
+  5928			100000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  5929	033750	205 07 0 00 400000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  5930						IFG	,<
+  5931	033751	205 06 0 00 100000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  5932						IFE	,<
+  5933						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  5934						IFE	,<
+  5935						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  5936	033752	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  5937	033753	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  5938	033754	003 07 0 00 004201 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5939	033755	321 11 0 00 033750 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5940
+  5941					;TEST ROT RIGHT TWO BIT POSITIONS
+  5942					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  5943					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5944					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0136
+
+  5945					;BIT IS ONE AFTER ROTATING
+  5946					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5947
+  5948			004202		SN=SN+1
+  5949			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5950						IFE	ZZ,
+  5951			040000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  5952	033756	205 07 0 00 200000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  5953						IFG	,<
+  5954	033757	205 06 0 00 040000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  5955						IFE	,<
+  5956						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  5957						IFE	,<
+  5958						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  5959	033760	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  5960	033761	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  5961	033762	003 07 0 00 004202 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5962	033763	321 11 0 00 033756 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5963
+  5964					;TEST ROT RIGHT TWO BIT POSITIONS
+  5965					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  5966					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5967					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  5968					;BIT IS ONE AFTER ROTATING
+  5969					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5970
+  5971			004203		SN=SN+1
+  5972			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5973						IFE	ZZ,
+  5974			020000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  5975	033764	205 07 0 00 100000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  5976						IFG	,<
+  5977	033765	205 06 0 00 020000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  5978						IFE	,<
+  5979						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  5980						IFE	,<
+  5981						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  5982	033766	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  5983	033767	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  5984	033770	003 07 0 00 004203 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  5985	033771	321 11 0 00 033764 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  5986
+  5987					;TEST ROT RIGHT TWO BIT POSITIONS
+  5988					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  5989					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  5990					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  5991					;BIT IS ONE AFTER ROTATING
+  5992					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  5993
+  5994			004204		SN=SN+1
+  5995			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  5996						IFE	ZZ,
+  5997			010000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  5998	033772	205 07 0 00 040000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  5999						IFG	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0137
+
+  6000	033773	205 06 0 00 010000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6001						IFE	,<
+  6002						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6003						IFE	,<
+  6004						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6005	033774	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6006	033775	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6007	033776	003 07 0 00 004204 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6008	033777	321 11 0 00 033772 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6009
+  6010					;TEST ROT RIGHT TWO BIT POSITIONS
+  6011					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6012					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6013					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6014					;BIT IS ONE AFTER ROTATING
+  6015					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6016
+  6017			004205		SN=SN+1
+  6018			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6019						IFE	ZZ,
+  6020			004000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6021	034000	205 07 0 00 020000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6022						IFG	,<
+  6023	034001	205 06 0 00 004000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6024						IFE	,<
+  6025						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6026						IFE	,<
+  6027						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6028	034002	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6029	034003	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6030	034004	003 07 0 00 004205 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6031	034005	321 11 0 00 034000 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6032
+  6033					;TEST ROT RIGHT TWO BIT POSITIONS
+  6034					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6035					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6036					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6037					;BIT IS ONE AFTER ROTATING
+  6038					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6039
+  6040			004206		SN=SN+1
+  6041			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6042						IFE	ZZ,
+  6043			002000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6044	034006	205 07 0 00 010000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6045						IFG	,<
+  6046	034007	205 06 0 00 002000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6047						IFE	,<
+  6048						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6049						IFE	,<
+  6050						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6051	034010	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6052	034011	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6053	034012	003 07 0 00 004206 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6054	034013	321 11 0 00 034006 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0138
+
+  6055
+  6056					;TEST ROT RIGHT TWO BIT POSITIONS
+  6057					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6058					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6059					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6060					;BIT IS ONE AFTER ROTATING
+  6061					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6062
+  6063			004207		SN=SN+1
+  6064			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6065						IFE	ZZ,
+  6066			001000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6067	034014	205 07 0 00 004000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6068						IFG	,<
+  6069	034015	205 06 0 00 001000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6070						IFE	,<
+  6071						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6072						IFE	,<
+  6073						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6074	034016	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6075	034017	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6076	034020	003 07 0 00 004207 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6077	034021	321 11 0 00 034014 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6078
+  6079					;TEST ROT RIGHT TWO BIT POSITIONS
+  6080					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6081					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6082					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6083					;BIT IS ONE AFTER ROTATING
+  6084					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6085
+  6086			004210		SN=SN+1
+  6087			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6088						IFE	ZZ,
+  6089			000400			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6090	034022	205 07 0 00 002000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6091						IFG	,<
+  6092	034023	205 06 0 00 000400 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6093						IFE	,<
+  6094						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6095						IFE	,<
+  6096						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6097	034024	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6098	034025	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6099	034026	003 07 0 00 004210 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6100	034027	321 11 0 00 034022 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6101
+  6102					;TEST ROT RIGHT TWO BIT POSITIONS
+  6103					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6104					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6105					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6106					;BIT IS ONE AFTER ROTATING
+  6107					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6108
+  6109			004211		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0139
+
+  6110			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6111						IFE	ZZ,
+  6112			000200			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6113	034030	205 07 0 00 001000 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6114						IFG	,<
+  6115	034031	205 06 0 00 000200 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6116						IFE	,<
+  6117						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6118						IFE	,<
+  6119						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6120	034032	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6121	034033	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6122	034034	003 07 0 00 004211 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6123	034035	321 11 0 00 034030 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6124
+  6125					;TEST ROT RIGHT TWO BIT POSITIONS
+  6126					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6127					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6128					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6129					;BIT IS ONE AFTER ROTATING
+  6130					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6131
+  6132			004212		SN=SN+1
+  6133			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6134						IFE	ZZ,
+  6135			000100			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6136	034036	205 07 0 00 000400 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6137						IFG	,<
+  6138	034037	205 06 0 00 000100 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6139						IFE	,<
+  6140						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6141						IFE	,<
+  6142						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6143	034040	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6144	034041	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6145	034042	003 07 0 00 004212 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6146	034043	321 11 0 00 034036 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6147
+  6148					;TEST ROT RIGHT TWO BIT POSITIONS
+  6149					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6150					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6151					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6152					;BIT IS ONE AFTER ROTATING
+  6153					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6154
+  6155			004213		SN=SN+1
+  6156			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6157						IFE	ZZ,
+  6158			000040			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6159	034044	205 07 0 00 000200 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6160						IFG	,<
+  6161	034045	205 06 0 00 000040 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6162						IFE	,<
+  6163						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6164						IFE	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0140
+
+  6165						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6166	034046	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6167	034047	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6168	034050	003 07 0 00 004213 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6169	034051	321 11 0 00 034044 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6170
+  6171					;TEST ROT RIGHT TWO BIT POSITIONS
+  6172					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6173					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6174					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6175					;BIT IS ONE AFTER ROTATING
+  6176					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6177
+  6178			004214		SN=SN+1
+  6179			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6180						IFE	ZZ,
+  6181			000020			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6182	034052	205 07 0 00 000100 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6183						IFG	,<
+  6184	034053	205 06 0 00 000020 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6185						IFE	,<
+  6186						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6187						IFE	,<
+  6188						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6189	034054	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6190	034055	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6191	034056	003 07 0 00 004214 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6192	034057	321 11 0 00 034052 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6193
+  6194					;TEST ROT RIGHT TWO BIT POSITIONS
+  6195					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6196					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6197					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6198					;BIT IS ONE AFTER ROTATING
+  6199					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6200
+  6201			004215		SN=SN+1
+  6202			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6203						IFE	ZZ,
+  6204			000010			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6205	034060	205 07 0 00 000040 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6206						IFG	,<
+  6207	034061	205 06 0 00 000010 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6208						IFE	,<
+  6209						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6210						IFE	,<
+  6211						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6212	034062	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6213	034063	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6214	034064	003 07 0 00 004215 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6215	034065	321 11 0 00 034060 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6216
+  6217					;TEST ROT RIGHT TWO BIT POSITIONS
+  6218					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6219					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0141
+
+  6220					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6221					;BIT IS ONE AFTER ROTATING
+  6222					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6223
+  6224			004216		SN=SN+1
+  6225			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6226						IFE	ZZ,
+  6227			000004			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6228	034066	205 07 0 00 000020 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6229						IFG	,<
+  6230	034067	205 06 0 00 000004 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6231						IFE	,<
+  6232						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6233						IFE	,<
+  6234						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6235	034070	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6236	034071	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6237	034072	003 07 0 00 004216 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6238	034073	321 11 0 00 034066 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6239
+  6240					;TEST ROT RIGHT TWO BIT POSITIONS
+  6241					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6242					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6243					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6244					;BIT IS ONE AFTER ROTATING
+  6245					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6246
+  6247			004217		SN=SN+1
+  6248			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6249						IFE	ZZ,
+  6250			000002			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6251	034074	205 07 0 00 000010 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6252						IFG	,<
+  6253	034075	205 06 0 00 000002 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6254						IFE	,<
+  6255						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6256						IFE	,<
+  6257						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6258	034076	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6259	034077	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6260	034100	003 07 0 00 004217 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6261	034101	321 11 0 00 034074 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6262
+  6263					;TEST ROT RIGHT TWO BIT POSITIONS
+  6264					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6265					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6266					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6267					;BIT IS ONE AFTER ROTATING
+  6268					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6269
+  6270			004220		SN=SN+1
+  6271			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6272						IFE	ZZ,
+  6273			000001			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6274	034102	205 07 0 00 000004 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0142
+
+  6275						IFG	,<
+  6276	034103	205 06 0 00 000001 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6277						IFE	,<
+  6278						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6279						IFE	,<
+  6280						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6281	034104	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6282	034105	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6283	034106	003 07 0 00 004220 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6284	034107	321 11 0 00 034102 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6285
+  6286					;TEST ROT RIGHT TWO BIT POSITIONS
+  6287					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6288					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6289					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6290					;BIT IS ONE AFTER ROTATING
+  6291					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6292
+  6293			004221		SN=SN+1
+  6294			000002			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6295						IFE	ZZ,
+  6296			000000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6297	034110	205 07 0 00 000002 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6298						IFG	,<
+  6299						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6300						IFE	,<
+  6301	034111	201 06 0 00 400000 		MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6302						IFE	,<
+  6303						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6304	034112	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6305	034113	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6306	034114	003 07 0 00 004221 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6307	034115	321 11 0 00 034110 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6308
+  6309					;TEST ROT RIGHT TWO BIT POSITIONS
+  6310					;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+  6311					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6312					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+  6313					;BIT IS ONE AFTER ROTATING
+  6314					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6315
+  6316			004222		SN=SN+1
+  6317			000001			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6318						IFE	ZZ,
+  6319			000000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6320	034116	205 07 0 00 000001 		MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+  6321						IFG	,<
+  6322						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  6323						IFE	,<
+  6324						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+  6325						IFE	,<
+  6326	034117	201 06 0 00 200000 		MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+  6327	034120	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6328	034121	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6329	034122	003 07 0 00 004222 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0143
+
+  6330	034123	321 11 0 00 034116 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6331
+  6332					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0144
+
+  6333			000000			ZZ=0
+  6334
+  6335							;TEST AC RIGHT HALF <
+  6336						REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+  6337					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6338					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6339					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6340					;ONE AFTER ROTATING
+  6341					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6342
+  6343					SN=SN+1
+  6344						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6345						IFE	ZZ,
+  6346						YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6347						MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6348						IFG	,<
+  6349						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6350						IFE	,<
+  6351						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6352						IFE	,<
+  6353						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6354						ROT	AC,-2		;*ROTATE RIGHT TWO
+  6355						CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6356						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6357						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6358					>
+  6359					;TEST ROT RIGHT TWO BIT POSITIONS
+  6360					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6361					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6362					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6363					;ONE AFTER ROTATING
+  6364					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6365
+  6366			004223		SN=SN+1
+  6367			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6368			400000			IFE	ZZ,
+  6369			100000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6370	034124	201 07 0 00 400000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6371						IFG	,<
+  6372	034125	201 06 0 00 100000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6373						IFE	,<
+  6374						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6375						IFE	,<
+  6376						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6377	034126	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6378	034127	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6379	034130	003 07 0 00 004223 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6380	034131	321 11 0 00 034124 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6381
+  6382					;TEST ROT RIGHT TWO BIT POSITIONS
+  6383					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6384					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6385					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6386					;ONE AFTER ROTATING
+  6387					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0145
+
+  6388
+  6389			004224		SN=SN+1
+  6390			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6391						IFE	ZZ,
+  6392			040000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6393	034132	201 07 0 00 200000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6394						IFG	,<
+  6395	034133	201 06 0 00 040000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6396						IFE	,<
+  6397						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6398						IFE	,<
+  6399						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6400	034134	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6401	034135	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6402	034136	003 07 0 00 004224 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6403	034137	321 11 0 00 034132 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6404
+  6405					;TEST ROT RIGHT TWO BIT POSITIONS
+  6406					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6407					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6408					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6409					;ONE AFTER ROTATING
+  6410					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6411
+  6412			004225		SN=SN+1
+  6413			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6414						IFE	ZZ,
+  6415			020000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6416	034140	201 07 0 00 100000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6417						IFG	,<
+  6418	034141	201 06 0 00 020000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6419						IFE	,<
+  6420						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6421						IFE	,<
+  6422						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6423	034142	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6424	034143	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6425	034144	003 07 0 00 004225 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6426	034145	321 11 0 00 034140 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6427
+  6428					;TEST ROT RIGHT TWO BIT POSITIONS
+  6429					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6430					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6431					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6432					;ONE AFTER ROTATING
+  6433					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6434
+  6435			004226		SN=SN+1
+  6436			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6437						IFE	ZZ,
+  6438			010000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6439	034146	201 07 0 00 040000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6440						IFG	,<
+  6441	034147	201 06 0 00 010000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6442						IFE	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0146
+
+  6443						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6444						IFE	,<
+  6445						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6446	034150	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6447	034151	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6448	034152	003 07 0 00 004226 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6449	034153	321 11 0 00 034146 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6450
+  6451					;TEST ROT RIGHT TWO BIT POSITIONS
+  6452					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6453					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6454					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6455					;ONE AFTER ROTATING
+  6456					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6457
+  6458			004227		SN=SN+1
+  6459			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6460						IFE	ZZ,
+  6461			004000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6462	034154	201 07 0 00 020000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6463						IFG	,<
+  6464	034155	201 06 0 00 004000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6465						IFE	,<
+  6466						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6467						IFE	,<
+  6468						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6469	034156	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6470	034157	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6471	034160	003 07 0 00 004227 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6472	034161	321 11 0 00 034154 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6473
+  6474					;TEST ROT RIGHT TWO BIT POSITIONS
+  6475					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6476					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6477					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6478					;ONE AFTER ROTATING
+  6479					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6480
+  6481			004230		SN=SN+1
+  6482			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6483						IFE	ZZ,
+  6484			002000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6485	034162	201 07 0 00 010000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6486						IFG	,<
+  6487	034163	201 06 0 00 002000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6488						IFE	,<
+  6489						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6490						IFE	,<
+  6491						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6492	034164	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6493	034165	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6494	034166	003 07 0 00 004230 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6495	034167	321 11 0 00 034162 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6496
+  6497					;TEST ROT RIGHT TWO BIT POSITIONS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0147
+
+  6498					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6499					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6500					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6501					;ONE AFTER ROTATING
+  6502					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6503
+  6504			004231		SN=SN+1
+  6505			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6506						IFE	ZZ,
+  6507			001000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6508	034170	201 07 0 00 004000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6509						IFG	,<
+  6510	034171	201 06 0 00 001000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6511						IFE	,<
+  6512						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6513						IFE	,<
+  6514						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6515	034172	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6516	034173	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6517	034174	003 07 0 00 004231 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6518	034175	321 11 0 00 034170 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6519
+  6520					;TEST ROT RIGHT TWO BIT POSITIONS
+  6521					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6522					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6523					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6524					;ONE AFTER ROTATING
+  6525					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6526
+  6527			004232		SN=SN+1
+  6528			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6529						IFE	ZZ,
+  6530			000400			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6531	034176	201 07 0 00 002000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6532						IFG	,<
+  6533	034177	201 06 0 00 000400 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6534						IFE	,<
+  6535						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6536						IFE	,<
+  6537						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6538	034200	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6539	034201	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6540	034202	003 07 0 00 004232 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6541	034203	321 11 0 00 034176 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6542
+  6543					;TEST ROT RIGHT TWO BIT POSITIONS
+  6544					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6545					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6546					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6547					;ONE AFTER ROTATING
+  6548					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6549
+  6550			004233		SN=SN+1
+  6551			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6552						IFE	ZZ,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0148
+
+  6553			000200			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6554	034204	201 07 0 00 001000 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6555						IFG	,<
+  6556	034205	201 06 0 00 000200 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6557						IFE	,<
+  6558						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6559						IFE	,<
+  6560						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6561	034206	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6562	034207	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6563	034210	003 07 0 00 004233 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6564	034211	321 11 0 00 034204 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6565
+  6566					;TEST ROT RIGHT TWO BIT POSITIONS
+  6567					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6568					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6569					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6570					;ONE AFTER ROTATING
+  6571					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6572
+  6573			004234		SN=SN+1
+  6574			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6575						IFE	ZZ,
+  6576			000100			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6577	034212	201 07 0 00 000400 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6578						IFG	,<
+  6579	034213	201 06 0 00 000100 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6580						IFE	,<
+  6581						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6582						IFE	,<
+  6583						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6584	034214	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6585	034215	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6586	034216	003 07 0 00 004234 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6587	034217	321 11 0 00 034212 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6588
+  6589					;TEST ROT RIGHT TWO BIT POSITIONS
+  6590					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6591					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6592					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6593					;ONE AFTER ROTATING
+  6594					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6595
+  6596			004235		SN=SN+1
+  6597			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6598						IFE	ZZ,
+  6599			000040			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6600	034220	201 07 0 00 000200 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6601						IFG	,<
+  6602	034221	201 06 0 00 000040 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6603						IFE	,<
+  6604						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6605						IFE	,<
+  6606						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6607	034222	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0149
+
+  6608	034223	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6609	034224	003 07 0 00 004235 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6610	034225	321 11 0 00 034220 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6611
+  6612					;TEST ROT RIGHT TWO BIT POSITIONS
+  6613					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6614					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6615					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6616					;ONE AFTER ROTATING
+  6617					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6618
+  6619			004236		SN=SN+1
+  6620			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6621						IFE	ZZ,
+  6622			000020			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6623	034226	201 07 0 00 000100 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6624						IFG	,<
+  6625	034227	201 06 0 00 000020 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6626						IFE	,<
+  6627						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6628						IFE	,<
+  6629						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6630	034230	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6631	034231	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6632	034232	003 07 0 00 004236 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6633	034233	321 11 0 00 034226 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6634
+  6635					;TEST ROT RIGHT TWO BIT POSITIONS
+  6636					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6637					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6638					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6639					;ONE AFTER ROTATING
+  6640					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6641
+  6642			004237		SN=SN+1
+  6643			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6644						IFE	ZZ,
+  6645			000010			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6646	034234	201 07 0 00 000040 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6647						IFG	,<
+  6648	034235	201 06 0 00 000010 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6649						IFE	,<
+  6650						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6651						IFE	,<
+  6652						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6653	034236	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6654	034237	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6655	034240	003 07 0 00 004237 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6656	034241	321 11 0 00 034234 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6657
+  6658					;TEST ROT RIGHT TWO BIT POSITIONS
+  6659					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6660					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6661					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6662					;ONE AFTER ROTATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0150
+
+  6663					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6664
+  6665			004240		SN=SN+1
+  6666			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6667						IFE	ZZ,
+  6668			000004			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6669	034242	201 07 0 00 000020 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6670						IFG	,<
+  6671	034243	201 06 0 00 000004 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6672						IFE	,<
+  6673						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6674						IFE	,<
+  6675						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6676	034244	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6677	034245	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6678	034246	003 07 0 00 004240 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6679	034247	321 11 0 00 034242 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6680
+  6681					;TEST ROT RIGHT TWO BIT POSITIONS
+  6682					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6683					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6684					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6685					;ONE AFTER ROTATING
+  6686					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6687
+  6688			004241		SN=SN+1
+  6689			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6690						IFE	ZZ,
+  6691			000002			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6692	034250	201 07 0 00 000010 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6693						IFG	,<
+  6694	034251	201 06 0 00 000002 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6695						IFE	,<
+  6696						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6697						IFE	,<
+  6698						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6699	034252	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6700	034253	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6701	034254	003 07 0 00 004241 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6702	034255	321 11 0 00 034250 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6703
+  6704					;TEST ROT RIGHT TWO BIT POSITIONS
+  6705					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6706					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6707					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6708					;ONE AFTER ROTATING
+  6709					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6710
+  6711			004242		SN=SN+1
+  6712			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6713						IFE	ZZ,
+  6714			000001			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6715	034256	201 07 0 00 000004 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6716						IFG	,<
+  6717	034257	201 06 0 00 000001 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 17-16
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0151
+
+  6718						IFE	,<
+  6719						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6720						IFE	,<
+  6721						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6722	034260	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6723	034261	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6724	034262	003 07 0 00 004242 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6725	034263	321 11 0 00 034256 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6726
+  6727					;TEST ROT RIGHT TWO BIT POSITIONS
+  6728					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6729					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6730					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6731					;ONE AFTER ROTATING
+  6732					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6733
+  6734			004243		SN=SN+1
+  6735			000002			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6736						IFE	ZZ,
+  6737			000000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6738	034264	201 07 0 00 000002 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6739						IFG	,<
+  6740						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6741						IFE	,<
+  6742	034265	205 06 0 00 400000 		MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6743						IFE	,<
+  6744						MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6745	034266	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6746	034267	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6747	034270	003 07 0 00 004243 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6748	034271	321 11 0 00 034264 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6749
+  6750					;TEST ROT RIGHT TWO BIT POSITIONS
+  6751					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+  6752					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6753					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+  6754					;ONE AFTER ROTATING
+  6755					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+  6756
+  6757			004244		SN=SN+1
+  6758			000001			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  6759						IFE	ZZ,
+  6760			000000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+  6761	034272	201 07 0 00 000001 		MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+  6762						IFG	,<
+  6763						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  6764						IFE	,<
+  6765						MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+  6766						IFE	,<
+  6767	034273	205 06 0 00 200000 		MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+  6768	034274	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6769	034275	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+  6770	034276	003 07 0 00 004244 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6771	034277	321 11 0 00 034272 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6772
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0152
+
+  6773			004300		SN=4300
+  6774			000001			ZZ=1
+  6775
+  6776							;TEST AC LEFT HALF<
+  6777					E4300:	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+  6778					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6779					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6780					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6781					;IS ZERO AFTER ROTATING.
+  6782					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6783
+  6784					SN=SN+1
+  6785						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6786						IFE	,
+  6787						YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6788						HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6789						IFL	,<
+  6790						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6791						IFE	,<
+  6792						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6793						IFE	,<
+  6794						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6795						ROT	AC,-2		;*ROTATE RIGHT TWO
+  6796						CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6797						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6798						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6799					>
+  6800					;TEST ROT RIGHT TWO BIT POSITIONS
+  6801					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6802					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6803					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6804					;IS ZERO AFTER ROTATING.
+  6805					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6806
+  6807			004301		SN=SN+1
+  6808			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6809		777777	377777			IFE	,
+  6810			677777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6811	034300	525 07 0 00 377777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6812						IFL	,<
+  6813	034301	525 06 0 00 677777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6814						IFE	,<
+  6815						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6816						IFE	,<
+  6817						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6818	034302	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6819	034303	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6820	034304	003 07 0 00 004301 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6821	034305	321 11 0 00 034300 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6822
+  6823					;TEST ROT RIGHT TWO BIT POSITIONS
+  6824					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6825					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6826					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6827					;IS ZERO AFTER ROTATING.
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0153
+
+  6828					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6829
+  6830			004302		SN=SN+1
+  6831		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6832						IFE	,
+  6833			737777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6834	034306	525 07 0 00 577777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6835						IFL	,<
+  6836	034307	525 06 0 00 737777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6837						IFE	,<
+  6838						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6839						IFE	,<
+  6840						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6841	034310	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6842	034311	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6843	034312	003 07 0 00 004302 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6844	034313	321 11 0 00 034306 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6845
+  6846					;TEST ROT RIGHT TWO BIT POSITIONS
+  6847					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6848					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6849					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6850					;IS ZERO AFTER ROTATING.
+  6851					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6852
+  6853			004303		SN=SN+1
+  6854		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6855						IFE	,
+  6856			757777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6857	034314	525 07 0 00 677777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6858						IFL	,<
+  6859	034315	525 06 0 00 757777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6860						IFE	,<
+  6861						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6862						IFE	,<
+  6863						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6864	034316	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6865	034317	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6866	034320	003 07 0 00 004303 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6867	034321	321 11 0 00 034314 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6868
+  6869					;TEST ROT RIGHT TWO BIT POSITIONS
+  6870					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6871					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6872					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6873					;IS ZERO AFTER ROTATING.
+  6874					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6875
+  6876			004304		SN=SN+1
+  6877		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6878						IFE	,
+  6879			767777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6880	034322	525 07 0 00 737777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6881						IFL	,<
+  6882	034323	525 06 0 00 767777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0154
+
+  6883						IFE	,<
+  6884						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6885						IFE	,<
+  6886						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6887	034324	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6888	034325	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6889	034326	003 07 0 00 004304 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6890	034327	321 11 0 00 034322 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6891
+  6892					;TEST ROT RIGHT TWO BIT POSITIONS
+  6893					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6894					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6895					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6896					;IS ZERO AFTER ROTATING.
+  6897					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6898
+  6899			004305		SN=SN+1
+  6900		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6901						IFE	,
+  6902			773777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6903	034330	525 07 0 00 757777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6904						IFL	,<
+  6905	034331	525 06 0 00 773777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6906						IFE	,<
+  6907						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6908						IFE	,<
+  6909						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6910	034332	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6911	034333	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6912	034334	003 07 0 00 004305 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6913	034335	321 11 0 00 034330 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6914
+  6915					;TEST ROT RIGHT TWO BIT POSITIONS
+  6916					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6917					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6918					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6919					;IS ZERO AFTER ROTATING.
+  6920					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6921
+  6922			004306		SN=SN+1
+  6923		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6924						IFE	,
+  6925			775777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6926	034336	525 07 0 00 767777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6927						IFL	,<
+  6928	034337	525 06 0 00 775777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6929						IFE	,<
+  6930						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6931						IFE	,<
+  6932						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6933	034340	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6934	034341	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6935	034342	003 07 0 00 004306 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6936	034343	321 11 0 00 034336 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6937
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0155
+
+  6938					;TEST ROT RIGHT TWO BIT POSITIONS
+  6939					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6940					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6941					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6942					;IS ZERO AFTER ROTATING.
+  6943					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6944
+  6945			004307		SN=SN+1
+  6946		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6947						IFE	,
+  6948			776777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6949	034344	525 07 0 00 773777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6950						IFL	,<
+  6951	034345	525 06 0 00 776777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6952						IFE	,<
+  6953						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6954						IFE	,<
+  6955						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6956	034346	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6957	034347	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6958	034350	003 07 0 00 004307 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6959	034351	321 11 0 00 034344 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6960
+  6961					;TEST ROT RIGHT TWO BIT POSITIONS
+  6962					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6963					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6964					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6965					;IS ZERO AFTER ROTATING.
+  6966					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6967
+  6968			004310		SN=SN+1
+  6969		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  6970						IFE	,
+  6971			777377			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6972	034352	525 07 0 00 775777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6973						IFL	,<
+  6974	034353	525 06 0 00 777377 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6975						IFE	,<
+  6976						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  6977						IFE	,<
+  6978						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  6979	034354	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  6980	034355	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  6981	034356	003 07 0 00 004310 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  6982	034357	321 11 0 00 034352 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  6983
+  6984					;TEST ROT RIGHT TWO BIT POSITIONS
+  6985					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  6986					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  6987					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  6988					;IS ZERO AFTER ROTATING.
+  6989					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  6990
+  6991			004311		SN=SN+1
+  6992		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0156
+
+  6993						IFE	,
+  6994			777577			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  6995	034360	525 07 0 00 776777 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  6996						IFL	,<
+  6997	034361	525 06 0 00 777577 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  6998						IFE	,<
+  6999						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7000						IFE	,<
+  7001						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7002	034362	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7003	034363	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7004	034364	003 07 0 00 004311 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7005	034365	321 11 0 00 034360 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7006
+  7007					;TEST ROT RIGHT TWO BIT POSITIONS
+  7008					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7009					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7010					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7011					;IS ZERO AFTER ROTATING.
+  7012					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7013
+  7014			004312		SN=SN+1
+  7015		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7016						IFE	,
+  7017			777677			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7018	034366	525 07 0 00 777377 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7019						IFL	,<
+  7020	034367	525 06 0 00 777677 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7021						IFE	,<
+  7022						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7023						IFE	,<
+  7024						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7025	034370	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7026	034371	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7027	034372	003 07 0 00 004312 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7028	034373	321 11 0 00 034366 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7029
+  7030					;TEST ROT RIGHT TWO BIT POSITIONS
+  7031					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7032					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7033					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7034					;IS ZERO AFTER ROTATING.
+  7035					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7036
+  7037			004313		SN=SN+1
+  7038		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7039						IFE	,
+  7040			777737			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7041	034374	525 07 0 00 777577 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7042						IFL	,<
+  7043	034375	525 06 0 00 777737 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7044						IFE	,<
+  7045						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7046						IFE	,<
+  7047						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0157
+
+  7048	034376	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7049	034377	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7050	034400	003 07 0 00 004313 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7051	034401	321 11 0 00 034374 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7052
+  7053					;TEST ROT RIGHT TWO BIT POSITIONS
+  7054					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7055					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7056					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7057					;IS ZERO AFTER ROTATING.
+  7058					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7059
+  7060			004314		SN=SN+1
+  7061		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7062						IFE	,
+  7063			777757			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7064	034402	525 07 0 00 777677 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7065						IFL	,<
+  7066	034403	525 06 0 00 777757 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7067						IFE	,<
+  7068						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7069						IFE	,<
+  7070						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7071	034404	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7072	034405	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7073	034406	003 07 0 00 004314 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7074	034407	321 11 0 00 034402 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7075
+  7076					;TEST ROT RIGHT TWO BIT POSITIONS
+  7077					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7078					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7079					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7080					;IS ZERO AFTER ROTATING.
+  7081					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7082
+  7083			004315		SN=SN+1
+  7084		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7085						IFE	,
+  7086			777767			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7087	034410	525 07 0 00 777737 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7088						IFL	,<
+  7089	034411	525 06 0 00 777767 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7090						IFE	,<
+  7091						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7092						IFE	,<
+  7093						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7094	034412	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7095	034413	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7096	034414	003 07 0 00 004315 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7097	034415	321 11 0 00 034410 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7098
+  7099					;TEST ROT RIGHT TWO BIT POSITIONS
+  7100					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7101					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7102					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0158
+
+  7103					;IS ZERO AFTER ROTATING.
+  7104					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7105
+  7106			004316		SN=SN+1
+  7107		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7108						IFE	,
+  7109			777773			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7110	034416	525 07 0 00 777757 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7111						IFL	,<
+  7112	034417	525 06 0 00 777773 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7113						IFE	,<
+  7114						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7115						IFE	,<
+  7116						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7117	034420	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7118	034421	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7119	034422	003 07 0 00 004316 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7120	034423	321 11 0 00 034416 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7121
+  7122					;TEST ROT RIGHT TWO BIT POSITIONS
+  7123					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7124					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7125					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7126					;IS ZERO AFTER ROTATING.
+  7127					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7128
+  7129			004317		SN=SN+1
+  7130		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7131						IFE	,
+  7132			777775			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7133	034424	525 07 0 00 777767 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7134						IFL	,<
+  7135	034425	525 06 0 00 777775 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7136						IFE	,<
+  7137						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7138						IFE	,<
+  7139						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7140	034426	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7141	034427	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7142	034430	003 07 0 00 004317 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7143	034431	321 11 0 00 034424 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7144
+  7145					;TEST ROT RIGHT TWO BIT POSITIONS
+  7146					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7147					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7148					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7149					;IS ZERO AFTER ROTATING.
+  7150					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7151
+  7152			004320		SN=SN+1
+  7153		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7154						IFE	,
+  7155			777776			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7156	034432	525 07 0 00 777773 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7157						IFL	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0159
+
+  7158	034433	525 06 0 00 777776 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7159						IFE	,<
+  7160						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7161						IFE	,<
+  7162						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7163	034434	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7164	034435	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7165	034436	003 07 0 00 004320 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7166	034437	321 11 0 00 034432 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7167
+  7168					;TEST ROT RIGHT TWO BIT POSITIONS
+  7169					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7170					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7171					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7172					;IS ZERO AFTER ROTATING.
+  7173					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7174
+  7175			004321		SN=SN+1
+  7176		777777	777775			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7177						IFE	,
+  7178			777777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7179	034440	525 07 0 00 777775 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7180						IFL	,<
+  7181						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7182						IFE	,<
+  7183	034441	561 06 0 00 377777 		HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7184						IFE	,<
+  7185						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7186	034442	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7187	034443	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7188	034444	003 07 0 00 004321 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7189	034445	321 11 0 00 034440 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7190
+  7191					;TEST ROT RIGHT TWO BIT POSITIONS
+  7192					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7193					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7194					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7195					;IS ZERO AFTER ROTATING.
+  7196					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7197
+  7198			004322		SN=SN+1
+  7199		777777	777776			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7200						IFE	,
+  7201			777777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7202	034446	525 07 0 00 777776 		HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+  7203						IFL	,<
+  7204						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+  7205						IFE	,<
+  7206						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+  7207						IFE	,<
+  7208	034447	561 06 0 00 577777 		HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+  7209	034450	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7210	034451	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+  7211	034452	003 07 0 00 004322 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7212	034453	321 11 0 00 034446 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0160
+
+  7213
+  7214					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0161
+
+  7215			000001			ZZ=1
+  7216
+  7217							;TEST AC RIGHT HALF<
+  7218						REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+  7219					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7220					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7221					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7222					;IS ZERO AFTER ROTATING.
+  7223					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7224
+  7225					SN=SN+1
+  7226						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7227						IFE	,
+  7228						YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7229						HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7230						IFL	,<
+  7231						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7232						IFE	,<
+  7233						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7234						IFE	,<
+  7235						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7236						ROT	AC,-2		;*ROTATE RIGHT TWO
+  7237						CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7238						ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7239						JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7240					>
+  7241					;TEST ROT RIGHT TWO BIT POSITIONS
+  7242					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7243					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7244					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7245					;IS ZERO AFTER ROTATING.
+  7246					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7247
+  7248			004323		SN=SN+1
+  7249			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7250		777777	377777			IFE	,
+  7251			677777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7252	034454	561 07 0 00 377777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7253						IFL	,<
+  7254	034455	561 06 0 00 677777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7255						IFE	,<
+  7256						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7257						IFE	,<
+  7258						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7259	034456	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7260	034457	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7261	034460	003 07 0 00 004323 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7262	034461	321 11 0 00 034454 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7263
+  7264					;TEST ROT RIGHT TWO BIT POSITIONS
+  7265					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7266					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7267					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7268					;IS ZERO AFTER ROTATING.
+  7269					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0162
+
+  7270
+  7271			004324		SN=SN+1
+  7272		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7273						IFE	,
+  7274			737777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7275	034462	561 07 0 00 577777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7276						IFL	,<
+  7277	034463	561 06 0 00 737777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7278						IFE	,<
+  7279						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7280						IFE	,<
+  7281						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7282	034464	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7283	034465	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7284	034466	003 07 0 00 004324 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7285	034467	321 11 0 00 034462 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7286
+  7287					;TEST ROT RIGHT TWO BIT POSITIONS
+  7288					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7289					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7290					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7291					;IS ZERO AFTER ROTATING.
+  7292					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7293
+  7294			004325		SN=SN+1
+  7295		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7296						IFE	,
+  7297			757777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7298	034470	561 07 0 00 677777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7299						IFL	,<
+  7300	034471	561 06 0 00 757777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7301						IFE	,<
+  7302						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7303						IFE	,<
+  7304						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7305	034472	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7306	034473	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7307	034474	003 07 0 00 004325 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7308	034475	321 11 0 00 034470 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7309
+  7310					;TEST ROT RIGHT TWO BIT POSITIONS
+  7311					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7312					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7313					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7314					;IS ZERO AFTER ROTATING.
+  7315					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7316
+  7317			004326		SN=SN+1
+  7318		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7319						IFE	,
+  7320			767777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7321	034476	561 07 0 00 737777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7322						IFL	,<
+  7323	034477	561 06 0 00 767777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7324						IFE	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0163
+
+  7325						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7326						IFE	,<
+  7327						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7328	034500	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7329	034501	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7330	034502	003 07 0 00 004326 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7331	034503	321 11 0 00 034476 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7332
+  7333					;TEST ROT RIGHT TWO BIT POSITIONS
+  7334					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7335					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7336					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7337					;IS ZERO AFTER ROTATING.
+  7338					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7339
+  7340			004327		SN=SN+1
+  7341		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7342						IFE	,
+  7343			773777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7344	034504	561 07 0 00 757777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7345						IFL	,<
+  7346	034505	561 06 0 00 773777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7347						IFE	,<
+  7348						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7349						IFE	,<
+  7350						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7351	034506	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7352	034507	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7353	034510	003 07 0 00 004327 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7354	034511	321 11 0 00 034504 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7355
+  7356					;TEST ROT RIGHT TWO BIT POSITIONS
+  7357					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7358					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7359					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7360					;IS ZERO AFTER ROTATING.
+  7361					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7362
+  7363			004330		SN=SN+1
+  7364		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7365						IFE	,
+  7366			775777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7367	034512	561 07 0 00 767777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7368						IFL	,<
+  7369	034513	561 06 0 00 775777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7370						IFE	,<
+  7371						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7372						IFE	,<
+  7373						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7374	034514	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7375	034515	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7376	034516	003 07 0 00 004330 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7377	034517	321 11 0 00 034512 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7378
+  7379					;TEST ROT RIGHT TWO BIT POSITIONS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0164
+
+  7380					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7381					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7382					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7383					;IS ZERO AFTER ROTATING.
+  7384					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7385
+  7386			004331		SN=SN+1
+  7387		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7388						IFE	,
+  7389			776777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7390	034520	561 07 0 00 773777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7391						IFL	,<
+  7392	034521	561 06 0 00 776777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7393						IFE	,<
+  7394						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7395						IFE	,<
+  7396						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7397	034522	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7398	034523	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7399	034524	003 07 0 00 004331 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7400	034525	321 11 0 00 034520 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7401
+  7402					;TEST ROT RIGHT TWO BIT POSITIONS
+  7403					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7404					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7405					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7406					;IS ZERO AFTER ROTATING.
+  7407					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7408
+  7409			004332		SN=SN+1
+  7410		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7411						IFE	,
+  7412			777377			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7413	034526	561 07 0 00 775777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7414						IFL	,<
+  7415	034527	561 06 0 00 777377 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7416						IFE	,<
+  7417						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7418						IFE	,<
+  7419						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7420	034530	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7421	034531	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7422	034532	003 07 0 00 004332 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7423	034533	321 11 0 00 034526 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7424
+  7425					;TEST ROT RIGHT TWO BIT POSITIONS
+  7426					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7427					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7428					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7429					;IS ZERO AFTER ROTATING.
+  7430					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7431
+  7432			004333		SN=SN+1
+  7433		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7434						IFE	,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0165
+
+  7435			777577			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7436	034534	561 07 0 00 776777 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7437						IFL	,<
+  7438	034535	561 06 0 00 777577 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7439						IFE	,<
+  7440						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7441						IFE	,<
+  7442						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7443	034536	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7444	034537	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7445	034540	003 07 0 00 004333 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7446	034541	321 11 0 00 034534 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7447
+  7448					;TEST ROT RIGHT TWO BIT POSITIONS
+  7449					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7450					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7451					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7452					;IS ZERO AFTER ROTATING.
+  7453					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7454
+  7455			004334		SN=SN+1
+  7456		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7457						IFE	,
+  7458			777677			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7459	034542	561 07 0 00 777377 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7460						IFL	,<
+  7461	034543	561 06 0 00 777677 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7462						IFE	,<
+  7463						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7464						IFE	,<
+  7465						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7466	034544	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7467	034545	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7468	034546	003 07 0 00 004334 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7469	034547	321 11 0 00 034542 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7470
+  7471					;TEST ROT RIGHT TWO BIT POSITIONS
+  7472					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7473					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7474					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7475					;IS ZERO AFTER ROTATING.
+  7476					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7477
+  7478			004335		SN=SN+1
+  7479		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7480						IFE	,
+  7481			777737			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7482	034550	561 07 0 00 777577 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7483						IFL	,<
+  7484	034551	561 06 0 00 777737 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7485						IFE	,<
+  7486						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7487						IFE	,<
+  7488						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7489	034552	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0166
+
+  7490	034553	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7491	034554	003 07 0 00 004335 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7492	034555	321 11 0 00 034550 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7493
+  7494					;TEST ROT RIGHT TWO BIT POSITIONS
+  7495					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7496					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7497					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7498					;IS ZERO AFTER ROTATING.
+  7499					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7500
+  7501			004336		SN=SN+1
+  7502		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7503						IFE	,
+  7504			777757			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7505	034556	561 07 0 00 777677 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7506						IFL	,<
+  7507	034557	561 06 0 00 777757 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7508						IFE	,<
+  7509						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7510						IFE	,<
+  7511						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7512	034560	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7513	034561	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7514	034562	003 07 0 00 004336 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7515	034563	321 11 0 00 034556 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7516
+  7517					;TEST ROT RIGHT TWO BIT POSITIONS
+  7518					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7519					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7520					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7521					;IS ZERO AFTER ROTATING.
+  7522					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7523
+  7524			004337		SN=SN+1
+  7525		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7526						IFE	,
+  7527			777767			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7528	034564	561 07 0 00 777737 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7529						IFL	,<
+  7530	034565	561 06 0 00 777767 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7531						IFE	,<
+  7532						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7533						IFE	,<
+  7534						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7535	034566	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7536	034567	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7537	034570	003 07 0 00 004337 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7538	034571	321 11 0 00 034564 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7539
+  7540					;TEST ROT RIGHT TWO BIT POSITIONS
+  7541					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7542					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7543					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7544					;IS ZERO AFTER ROTATING.
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0167
+
+  7545					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7546
+  7547			004340		SN=SN+1
+  7548		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7549						IFE	,
+  7550			777773			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7551	034572	561 07 0 00 777757 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7552						IFL	,<
+  7553	034573	561 06 0 00 777773 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7554						IFE	,<
+  7555						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7556						IFE	,<
+  7557						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7558	034574	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7559	034575	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7560	034576	003 07 0 00 004340 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7561	034577	321 11 0 00 034572 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7562
+  7563					;TEST ROT RIGHT TWO BIT POSITIONS
+  7564					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7565					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7566					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7567					;IS ZERO AFTER ROTATING.
+  7568					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7569
+  7570			004341		SN=SN+1
+  7571		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7572						IFE	,
+  7573			777775			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7574	034600	561 07 0 00 777767 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7575						IFL	,<
+  7576	034601	561 06 0 00 777775 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7577						IFE	,<
+  7578						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7579						IFE	,<
+  7580						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7581	034602	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7582	034603	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7583	034604	003 07 0 00 004341 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7584	034605	321 11 0 00 034600 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7585
+  7586					;TEST ROT RIGHT TWO BIT POSITIONS
+  7587					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7588					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7589					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7590					;IS ZERO AFTER ROTATING.
+  7591					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7592
+  7593			004342		SN=SN+1
+  7594		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7595						IFE	,
+  7596			777776			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7597	034606	561 07 0 00 777773 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7598						IFL	,<
+  7599	034607	561 06 0 00 777776 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 18-16
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR                      SEQ 0168
+
+  7600						IFE	,<
+  7601						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7602						IFE	,<
+  7603						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7604	034610	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7605	034611	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7606	034612	003 07 0 00 004342 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7607	034613	321 11 0 00 034606 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7608
+  7609					;TEST ROT RIGHT TWO BIT POSITIONS
+  7610					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7611					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7612					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7613					;IS ZERO AFTER ROTATING.
+  7614					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7615
+  7616			004343		SN=SN+1
+  7617		777777	777775			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7618						IFE	,
+  7619			777777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7620	034614	561 07 0 00 777775 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7621						IFL	,<
+  7622						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7623						IFE	,<
+  7624	034615	525 06 0 00 377777 		HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7625						IFE	,<
+  7626						HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7627	034616	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7628	034617	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7629	034620	003 07 0 00 004343 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7630	034621	321 11 0 00 034614 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7631
+  7632					;TEST ROT RIGHT TWO BIT POSITIONS
+  7633					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+  7634					;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+  7635					;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+  7636					;IS ZERO AFTER ROTATING.
+  7637					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  7638
+  7639			004344		SN=SN+1
+  7640		777777	777776			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+  7641						IFE	,
+  7642			777777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+  7643	034622	561 07 0 00 777776 		HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+  7644						IFL	,<
+  7645						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  7646						IFE	,<
+  7647						HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+  7648						IFE	,<
+  7649	034623	525 06 0 00 577777 		HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+  7650	034624	241 07 0 00 777776 		ROT	AC,-2		;*ROTATE RIGHT TWO
+  7651	034625	312 07 0 00 000006 		CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+  7652	034626	003 07 0 00 004344 		ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+  7653	034627	321 11 0 00 034622 		JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+  7654
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 19
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0169
+
+  7655					SUBTTL	DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES
+  7656
+  7657					;TEST ROTC LEFT ONE BIT POSITION USING ALL ZEROS
+  7658					;TEST MQ SHIFT LOGIC GATES
+  7659					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND
+  7660					;AC+1 IS TESTED
+  7661					;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+  7662
+  7663			000010			AC=10
+  7664						SAVEAC	(1,1)^
+  7665	034630	201 12 0 00 034630 		MOVEI	AC+2,.		;SAVE TEST PC
+  7666	034631	202 12 0 00 030051 		MOVEM	AC+2,TESTPC
+  7667	034632	201 12 0 00 000012 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  7668	034633	202 12 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  7669
+  7670	034634	403 10 0 00 000011 	E4400:	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+  7671	034635	402 00 0 00 000007 		SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+  7672	034636	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7673	034637	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+  7674	034640	004 11 0 00 004401 		ER4	AC+1,4401	;MQ GATING FAILED
+  7675	034641	321 12 0 00 034634 		JUMPL	AC+2,E4400	;LOOP ON ERROR SWITCH
+  7676
+  7677					;TEST ROTC LEFT ONE BIT POSITION USING ALL ONES
+  7678					;TEST MQ SHIFT LOGIC GATES
+  7679					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND
+  7680					;AC+1 IS TESTED
+  7681					;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+  7682
+  7683	034642	477 10 0 00 000011 	E4500:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ONES
+  7684	034643	476 00 0 00 000007 		SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+  7685	034644	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7686	034645	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+  7687	034646	004 11 0 00 004501 		ER4	AC+1,4501	;MQ GATING FAILED
+  7688	034647	321 12 0 00 034642 		JUMPL	AC+2,E4500	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0170
+
+  7689			004600		SN=4600
+  7690			000000			ZZ=0
+  7691
+  7692							;TEST AC+1 RIGHT HALF <
+  7693					E4600:	REPEAT	^D18,<;TEST ROTC LEFT ONE BIT POSITION
+  7694					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7695					;TEST MQ SHIFT LOGIC GATES
+  7696					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7697					;IS TESTED.
+  7698					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7699					;OTHER BIT IS A ONE AFTER ROTATING
+  7700					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7701
+  7702					SN=SN+1
+  7703						ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7704						IFE	ZZ,
+  7705						YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7706						SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7707						MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7708						IFN	,<
+  7709						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7710						IFE	,<
+  7711						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7712						ROTC	AC,1		;*ROTATE LEFT ONE
+  7713						CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7714						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7715						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7716					>
+  7717					;TEST ROTC LEFT ONE BIT POSITION
+  7718					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7719					;TEST MQ SHIFT LOGIC GATES
+  7720					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7721					;IS TESTED.
+  7722					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7723					;OTHER BIT IS A ONE AFTER ROTATING
+  7724					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7725
+  7726			004601		SN=SN+1
+  7727			000000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7728			000001			IFE	ZZ,
+  7729			000002			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7730	034650	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7731	034651	201 11 0 00 000001 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7732						IFN	,<
+  7733	034652	201 07 0 00 000002 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7734						IFE	,<
+  7735						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7736	034653	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7737	034654	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7738	034655	004 11 0 00 004601 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7739	034656	321 12 0 00 034650 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7740
+  7741					;TEST ROTC LEFT ONE BIT POSITION
+  7742					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7743					;TEST MQ SHIFT LOGIC GATES
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0171
+
+  7744					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7745					;IS TESTED.
+  7746					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7747					;OTHER BIT IS A ONE AFTER ROTATING
+  7748					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7749
+  7750			004602		SN=SN+1
+  7751			000002			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7752						IFE	ZZ,
+  7753			000004			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7754	034657	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7755	034660	201 11 0 00 000002 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7756						IFN	,<
+  7757	034661	201 07 0 00 000004 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7758						IFE	,<
+  7759						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7760	034662	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7761	034663	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7762	034664	004 11 0 00 004602 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7763	034665	321 12 0 00 034657 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7764
+  7765					;TEST ROTC LEFT ONE BIT POSITION
+  7766					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7767					;TEST MQ SHIFT LOGIC GATES
+  7768					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7769					;IS TESTED.
+  7770					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7771					;OTHER BIT IS A ONE AFTER ROTATING
+  7772					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7773
+  7774			004603		SN=SN+1
+  7775			000004			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7776						IFE	ZZ,
+  7777			000010			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7778	034666	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7779	034667	201 11 0 00 000004 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7780						IFN	,<
+  7781	034670	201 07 0 00 000010 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7782						IFE	,<
+  7783						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7784	034671	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7785	034672	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7786	034673	004 11 0 00 004603 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7787	034674	321 12 0 00 034666 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7788
+  7789					;TEST ROTC LEFT ONE BIT POSITION
+  7790					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7791					;TEST MQ SHIFT LOGIC GATES
+  7792					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7793					;IS TESTED.
+  7794					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7795					;OTHER BIT IS A ONE AFTER ROTATING
+  7796					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7797
+  7798			004604		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0172
+
+  7799			000010			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7800						IFE	ZZ,
+  7801			000020			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7802	034675	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7803	034676	201 11 0 00 000010 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7804						IFN	,<
+  7805	034677	201 07 0 00 000020 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7806						IFE	,<
+  7807						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7808	034700	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7809	034701	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7810	034702	004 11 0 00 004604 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7811	034703	321 12 0 00 034675 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7812
+  7813					;TEST ROTC LEFT ONE BIT POSITION
+  7814					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7815					;TEST MQ SHIFT LOGIC GATES
+  7816					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7817					;IS TESTED.
+  7818					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7819					;OTHER BIT IS A ONE AFTER ROTATING
+  7820					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7821
+  7822			004605		SN=SN+1
+  7823			000020			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7824						IFE	ZZ,
+  7825			000040			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7826	034704	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7827	034705	201 11 0 00 000020 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7828						IFN	,<
+  7829	034706	201 07 0 00 000040 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7830						IFE	,<
+  7831						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7832	034707	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7833	034710	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7834	034711	004 11 0 00 004605 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7835	034712	321 12 0 00 034704 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7836
+  7837					;TEST ROTC LEFT ONE BIT POSITION
+  7838					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7839					;TEST MQ SHIFT LOGIC GATES
+  7840					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7841					;IS TESTED.
+  7842					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7843					;OTHER BIT IS A ONE AFTER ROTATING
+  7844					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7845
+  7846			004606		SN=SN+1
+  7847			000040			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7848						IFE	ZZ,
+  7849			000100			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7850	034713	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7851	034714	201 11 0 00 000040 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7852						IFN	,<
+  7853	034715	201 07 0 00 000100 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0173
+
+  7854						IFE	,<
+  7855						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7856	034716	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7857	034717	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7858	034720	004 11 0 00 004606 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7859	034721	321 12 0 00 034713 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7860
+  7861					;TEST ROTC LEFT ONE BIT POSITION
+  7862					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7863					;TEST MQ SHIFT LOGIC GATES
+  7864					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7865					;IS TESTED.
+  7866					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7867					;OTHER BIT IS A ONE AFTER ROTATING
+  7868					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7869
+  7870			004607		SN=SN+1
+  7871			000100			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7872						IFE	ZZ,
+  7873			000200			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7874	034722	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7875	034723	201 11 0 00 000100 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7876						IFN	,<
+  7877	034724	201 07 0 00 000200 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7878						IFE	,<
+  7879						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7880	034725	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7881	034726	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7882	034727	004 11 0 00 004607 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7883	034730	321 12 0 00 034722 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7884
+  7885					;TEST ROTC LEFT ONE BIT POSITION
+  7886					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7887					;TEST MQ SHIFT LOGIC GATES
+  7888					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7889					;IS TESTED.
+  7890					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7891					;OTHER BIT IS A ONE AFTER ROTATING
+  7892					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7893
+  7894			004610		SN=SN+1
+  7895			000200			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7896						IFE	ZZ,
+  7897			000400			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7898	034731	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7899	034732	201 11 0 00 000200 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7900						IFN	,<
+  7901	034733	201 07 0 00 000400 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7902						IFE	,<
+  7903						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7904	034734	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7905	034735	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7906	034736	004 11 0 00 004610 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7907	034737	321 12 0 00 034731 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7908
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0174
+
+  7909					;TEST ROTC LEFT ONE BIT POSITION
+  7910					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7911					;TEST MQ SHIFT LOGIC GATES
+  7912					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7913					;IS TESTED.
+  7914					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7915					;OTHER BIT IS A ONE AFTER ROTATING
+  7916					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7917
+  7918			004611		SN=SN+1
+  7919			000400			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7920						IFE	ZZ,
+  7921			001000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7922	034740	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7923	034741	201 11 0 00 000400 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7924						IFN	,<
+  7925	034742	201 07 0 00 001000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7926						IFE	,<
+  7927						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7928	034743	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7929	034744	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7930	034745	004 11 0 00 004611 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7931	034746	321 12 0 00 034740 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7932
+  7933					;TEST ROTC LEFT ONE BIT POSITION
+  7934					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7935					;TEST MQ SHIFT LOGIC GATES
+  7936					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7937					;IS TESTED.
+  7938					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7939					;OTHER BIT IS A ONE AFTER ROTATING
+  7940					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7941
+  7942			004612		SN=SN+1
+  7943			001000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7944						IFE	ZZ,
+  7945			002000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7946	034747	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7947	034750	201 11 0 00 001000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7948						IFN	,<
+  7949	034751	201 07 0 00 002000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7950						IFE	,<
+  7951						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7952	034752	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7953	034753	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7954	034754	004 11 0 00 004612 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7955	034755	321 12 0 00 034747 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7956
+  7957					;TEST ROTC LEFT ONE BIT POSITION
+  7958					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7959					;TEST MQ SHIFT LOGIC GATES
+  7960					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7961					;IS TESTED.
+  7962					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7963					;OTHER BIT IS A ONE AFTER ROTATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0175
+
+  7964					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7965
+  7966			004613		SN=SN+1
+  7967			002000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7968						IFE	ZZ,
+  7969			004000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7970	034756	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7971	034757	201 11 0 00 002000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7972						IFN	,<
+  7973	034760	201 07 0 00 004000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7974						IFE	,<
+  7975						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  7976	034761	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  7977	034762	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  7978	034763	004 11 0 00 004613 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  7979	034764	321 12 0 00 034756 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  7980
+  7981					;TEST ROTC LEFT ONE BIT POSITION
+  7982					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  7983					;TEST MQ SHIFT LOGIC GATES
+  7984					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  7985					;IS TESTED.
+  7986					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  7987					;OTHER BIT IS A ONE AFTER ROTATING
+  7988					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  7989
+  7990			004614		SN=SN+1
+  7991			004000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  7992						IFE	ZZ,
+  7993			010000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  7994	034765	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  7995	034766	201 11 0 00 004000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  7996						IFN	,<
+  7997	034767	201 07 0 00 010000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  7998						IFE	,<
+  7999						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  8000	034770	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8001	034771	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8002	034772	004 11 0 00 004614 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8003	034773	321 12 0 00 034765 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8004
+  8005					;TEST ROTC LEFT ONE BIT POSITION
+  8006					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8007					;TEST MQ SHIFT LOGIC GATES
+  8008					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8009					;IS TESTED.
+  8010					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8011					;OTHER BIT IS A ONE AFTER ROTATING
+  8012					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8013
+  8014			004615		SN=SN+1
+  8015			010000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8016						IFE	ZZ,
+  8017			020000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8018	034774	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0176
+
+  8019	034775	201 11 0 00 010000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  8020						IFN	,<
+  8021	034776	201 07 0 00 020000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  8022						IFE	,<
+  8023						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  8024	034777	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8025	035000	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8026	035001	004 11 0 00 004615 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8027	035002	321 12 0 00 034774 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8028
+  8029					;TEST ROTC LEFT ONE BIT POSITION
+  8030					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8031					;TEST MQ SHIFT LOGIC GATES
+  8032					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8033					;IS TESTED.
+  8034					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8035					;OTHER BIT IS A ONE AFTER ROTATING
+  8036					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8037
+  8038			004616		SN=SN+1
+  8039			020000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8040						IFE	ZZ,
+  8041			040000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8042	035003	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  8043	035004	201 11 0 00 020000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  8044						IFN	,<
+  8045	035005	201 07 0 00 040000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  8046						IFE	,<
+  8047						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  8048	035006	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8049	035007	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8050	035010	004 11 0 00 004616 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8051	035011	321 12 0 00 035003 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8052
+  8053					;TEST ROTC LEFT ONE BIT POSITION
+  8054					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8055					;TEST MQ SHIFT LOGIC GATES
+  8056					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8057					;IS TESTED.
+  8058					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8059					;OTHER BIT IS A ONE AFTER ROTATING
+  8060					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8061
+  8062			004617		SN=SN+1
+  8063			040000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8064						IFE	ZZ,
+  8065			100000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8066	035012	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  8067	035013	201 11 0 00 040000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  8068						IFN	,<
+  8069	035014	201 07 0 00 100000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  8070						IFE	,<
+  8071						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  8072	035015	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8073	035016	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0177
+
+  8074	035017	004 11 0 00 004617 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8075	035020	321 12 0 00 035012 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8076
+  8077					;TEST ROTC LEFT ONE BIT POSITION
+  8078					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8079					;TEST MQ SHIFT LOGIC GATES
+  8080					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8081					;IS TESTED.
+  8082					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8083					;OTHER BIT IS A ONE AFTER ROTATING
+  8084					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8085
+  8086			004620		SN=SN+1
+  8087			100000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8088						IFE	ZZ,
+  8089			200000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8090	035021	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  8091	035022	201 11 0 00 100000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  8092						IFN	,<
+  8093	035023	201 07 0 00 200000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  8094						IFE	,<
+  8095						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  8096	035024	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8097	035025	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8098	035026	004 11 0 00 004620 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8099	035027	321 12 0 00 035021 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8100
+  8101					;TEST ROTC LEFT ONE BIT POSITION
+  8102					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8103					;TEST MQ SHIFT LOGIC GATES
+  8104					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8105					;IS TESTED.
+  8106					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8107					;OTHER BIT IS A ONE AFTER ROTATING
+  8108					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8109
+  8110			004621		SN=SN+1
+  8111			200000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8112						IFE	ZZ,
+  8113			400000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8114	035030	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  8115	035031	201 11 0 00 200000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  8116						IFN	,<
+  8117	035032	201 07 0 00 400000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  8118						IFE	,<
+  8119						MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  8120	035033	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8121	035034	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8122	035035	004 11 0 00 004621 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8123	035036	321 12 0 00 035030 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8124
+  8125					;TEST ROTC LEFT ONE BIT POSITION
+  8126					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8127					;TEST MQ SHIFT LOGIC GATES
+  8128					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0178
+
+  8129					;IS TESTED.
+  8130					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8131					;OTHER BIT IS A ONE AFTER ROTATING
+  8132					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8133
+  8134			004622		SN=SN+1
+  8135			400000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8136						IFE	ZZ,
+  8137		000001	000000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8138	035037	400 10 0 00 000000 		SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+  8139	035040	201 11 0 00 400000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  8140						IFN	,<
+  8141						MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+  8142						IFE	,<
+  8143	035041	205 07 0 00 000001 		MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+  8144	035042	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8145	035043	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8146	035044	004 11 0 00 004622 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8147	035045	321 12 0 00 035037 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8148
+  8149
+  8150			000000			ZZ=0
+  8151
+  8152							;TEST AC+1 LEFT HALF <
+  8153						REPEAT	^D17,<;TEST ROTC LEFT ONE BIT POSITION
+  8154					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8155					;TEST MQ SHIFT LOGIC GATES
+  8156					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8157					;IS TESTED.
+  8158					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8159					;OTHER BIT IS A ONE AFTER ROTATING
+  8160					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8161
+  8162					SN=SN+1
+  8163						ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8164						IFE	ZZ,
+  8165						YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8166						SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8167						MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8168						MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8169						ROTC	AC,1		;*ROTATE LEFT ONE
+  8170						CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8171						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8172						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8173					>
+  8174					;TEST ROTC LEFT ONE BIT POSITION
+  8175					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8176					;TEST MQ SHIFT LOGIC GATES
+  8177					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8178					;IS TESTED.
+  8179					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8180					;OTHER BIT IS A ONE AFTER ROTATING
+  8181					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8182
+  8183			004623		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0179
+
+  8184			000000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8185			000001			IFE	ZZ,
+  8186			000002			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8187	035046	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8188	035047	205 11 0 00 000001 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8189	035050	205 07 0 00 000002 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8190	035051	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8191	035052	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8192	035053	004 11 0 00 004623 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8193	035054	321 12 0 00 035046 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8194
+  8195					;TEST ROTC LEFT ONE BIT POSITION
+  8196					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8197					;TEST MQ SHIFT LOGIC GATES
+  8198					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8199					;IS TESTED.
+  8200					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8201					;OTHER BIT IS A ONE AFTER ROTATING
+  8202					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8203
+  8204			004624		SN=SN+1
+  8205			000002			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8206						IFE	ZZ,
+  8207			000004			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8208	035055	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8209	035056	205 11 0 00 000002 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8210	035057	205 07 0 00 000004 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8211	035060	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8212	035061	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8213	035062	004 11 0 00 004624 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8214	035063	321 12 0 00 035055 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8215
+  8216					;TEST ROTC LEFT ONE BIT POSITION
+  8217					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8218					;TEST MQ SHIFT LOGIC GATES
+  8219					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8220					;IS TESTED.
+  8221					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8222					;OTHER BIT IS A ONE AFTER ROTATING
+  8223					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8224
+  8225			004625		SN=SN+1
+  8226			000004			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8227						IFE	ZZ,
+  8228			000010			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8229	035064	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8230	035065	205 11 0 00 000004 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8231	035066	205 07 0 00 000010 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8232	035067	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8233	035070	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8234	035071	004 11 0 00 004625 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8235	035072	321 12 0 00 035064 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8236
+  8237					;TEST ROTC LEFT ONE BIT POSITION
+  8238					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0180
+
+  8239					;TEST MQ SHIFT LOGIC GATES
+  8240					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8241					;IS TESTED.
+  8242					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8243					;OTHER BIT IS A ONE AFTER ROTATING
+  8244					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8245
+  8246			004626		SN=SN+1
+  8247			000010			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8248						IFE	ZZ,
+  8249			000020			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8250	035073	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8251	035074	205 11 0 00 000010 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8252	035075	205 07 0 00 000020 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8253	035076	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8254	035077	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8255	035100	004 11 0 00 004626 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8256	035101	321 12 0 00 035073 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8257
+  8258					;TEST ROTC LEFT ONE BIT POSITION
+  8259					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8260					;TEST MQ SHIFT LOGIC GATES
+  8261					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8262					;IS TESTED.
+  8263					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8264					;OTHER BIT IS A ONE AFTER ROTATING
+  8265					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8266
+  8267			004627		SN=SN+1
+  8268			000020			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8269						IFE	ZZ,
+  8270			000040			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8271	035102	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8272	035103	205 11 0 00 000020 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8273	035104	205 07 0 00 000040 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8274	035105	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8275	035106	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8276	035107	004 11 0 00 004627 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8277	035110	321 12 0 00 035102 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8278
+  8279					;TEST ROTC LEFT ONE BIT POSITION
+  8280					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8281					;TEST MQ SHIFT LOGIC GATES
+  8282					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8283					;IS TESTED.
+  8284					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8285					;OTHER BIT IS A ONE AFTER ROTATING
+  8286					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8287
+  8288			004630		SN=SN+1
+  8289			000040			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8290						IFE	ZZ,
+  8291			000100			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8292	035111	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8293	035112	205 11 0 00 000040 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0181
+
+  8294	035113	205 07 0 00 000100 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8295	035114	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8296	035115	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8297	035116	004 11 0 00 004630 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8298	035117	321 12 0 00 035111 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8299
+  8300					;TEST ROTC LEFT ONE BIT POSITION
+  8301					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8302					;TEST MQ SHIFT LOGIC GATES
+  8303					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8304					;IS TESTED.
+  8305					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8306					;OTHER BIT IS A ONE AFTER ROTATING
+  8307					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8308
+  8309			004631		SN=SN+1
+  8310			000100			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8311						IFE	ZZ,
+  8312			000200			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8313	035120	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8314	035121	205 11 0 00 000100 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8315	035122	205 07 0 00 000200 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8316	035123	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8317	035124	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8318	035125	004 11 0 00 004631 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8319	035126	321 12 0 00 035120 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8320
+  8321					;TEST ROTC LEFT ONE BIT POSITION
+  8322					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8323					;TEST MQ SHIFT LOGIC GATES
+  8324					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8325					;IS TESTED.
+  8326					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8327					;OTHER BIT IS A ONE AFTER ROTATING
+  8328					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8329
+  8330			004632		SN=SN+1
+  8331			000200			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8332						IFE	ZZ,
+  8333			000400			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8334	035127	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8335	035130	205 11 0 00 000200 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8336	035131	205 07 0 00 000400 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8337	035132	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8338	035133	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8339	035134	004 11 0 00 004632 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8340	035135	321 12 0 00 035127 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8341
+  8342					;TEST ROTC LEFT ONE BIT POSITION
+  8343					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8344					;TEST MQ SHIFT LOGIC GATES
+  8345					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8346					;IS TESTED.
+  8347					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8348					;OTHER BIT IS A ONE AFTER ROTATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0182
+
+  8349					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8350
+  8351			004633		SN=SN+1
+  8352			000400			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8353						IFE	ZZ,
+  8354			001000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8355	035136	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8356	035137	205 11 0 00 000400 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8357	035140	205 07 0 00 001000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8358	035141	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8359	035142	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8360	035143	004 11 0 00 004633 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8361	035144	321 12 0 00 035136 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8362
+  8363					;TEST ROTC LEFT ONE BIT POSITION
+  8364					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8365					;TEST MQ SHIFT LOGIC GATES
+  8366					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8367					;IS TESTED.
+  8368					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8369					;OTHER BIT IS A ONE AFTER ROTATING
+  8370					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8371
+  8372			004634		SN=SN+1
+  8373			001000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8374						IFE	ZZ,
+  8375			002000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8376	035145	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8377	035146	205 11 0 00 001000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8378	035147	205 07 0 00 002000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8379	035150	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8380	035151	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8381	035152	004 11 0 00 004634 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8382	035153	321 12 0 00 035145 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8383
+  8384					;TEST ROTC LEFT ONE BIT POSITION
+  8385					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8386					;TEST MQ SHIFT LOGIC GATES
+  8387					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8388					;IS TESTED.
+  8389					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8390					;OTHER BIT IS A ONE AFTER ROTATING
+  8391					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8392
+  8393			004635		SN=SN+1
+  8394			002000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8395						IFE	ZZ,
+  8396			004000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8397	035154	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8398	035155	205 11 0 00 002000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8399	035156	205 07 0 00 004000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8400	035157	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8401	035160	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8402	035161	004 11 0 00 004635 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8403	035162	321 12 0 00 035154 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0183
+
+  8404
+  8405					;TEST ROTC LEFT ONE BIT POSITION
+  8406					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8407					;TEST MQ SHIFT LOGIC GATES
+  8408					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8409					;IS TESTED.
+  8410					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8411					;OTHER BIT IS A ONE AFTER ROTATING
+  8412					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8413
+  8414			004636		SN=SN+1
+  8415			004000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8416						IFE	ZZ,
+  8417			010000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8418	035163	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8419	035164	205 11 0 00 004000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8420	035165	205 07 0 00 010000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8421	035166	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8422	035167	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8423	035170	004 11 0 00 004636 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8424	035171	321 12 0 00 035163 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8425
+  8426					;TEST ROTC LEFT ONE BIT POSITION
+  8427					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8428					;TEST MQ SHIFT LOGIC GATES
+  8429					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8430					;IS TESTED.
+  8431					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8432					;OTHER BIT IS A ONE AFTER ROTATING
+  8433					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8434
+  8435			004637		SN=SN+1
+  8436			010000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8437						IFE	ZZ,
+  8438			020000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8439	035172	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8440	035173	205 11 0 00 010000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8441	035174	205 07 0 00 020000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8442	035175	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8443	035176	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8444	035177	004 11 0 00 004637 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8445	035200	321 12 0 00 035172 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8446
+  8447					;TEST ROTC LEFT ONE BIT POSITION
+  8448					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8449					;TEST MQ SHIFT LOGIC GATES
+  8450					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8451					;IS TESTED.
+  8452					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8453					;OTHER BIT IS A ONE AFTER ROTATING
+  8454					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8455
+  8456			004640		SN=SN+1
+  8457			020000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8458						IFE	ZZ,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0184
+
+  8459			040000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8460	035201	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8461	035202	205 11 0 00 020000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8462	035203	205 07 0 00 040000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8463	035204	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8464	035205	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8465	035206	004 11 0 00 004640 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8466	035207	321 12 0 00 035201 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8467
+  8468					;TEST ROTC LEFT ONE BIT POSITION
+  8469					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8470					;TEST MQ SHIFT LOGIC GATES
+  8471					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8472					;IS TESTED.
+  8473					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8474					;OTHER BIT IS A ONE AFTER ROTATING
+  8475					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8476
+  8477			004641		SN=SN+1
+  8478			040000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8479						IFE	ZZ,
+  8480			100000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8481	035210	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8482	035211	205 11 0 00 040000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8483	035212	205 07 0 00 100000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8484	035213	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8485	035214	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8486	035215	004 11 0 00 004641 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8487	035216	321 12 0 00 035210 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8488
+  8489					;TEST ROTC LEFT ONE BIT POSITION
+  8490					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8491					;TEST MQ SHIFT LOGIC GATES
+  8492					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8493					;IS TESTED.
+  8494					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8495					;OTHER BIT IS A ONE AFTER ROTATING
+  8496					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8497
+  8498			004642		SN=SN+1
+  8499			100000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8500						IFE	ZZ,
+  8501			200000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8502	035217	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8503	035220	205 11 0 00 100000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8504	035221	205 07 0 00 200000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8505	035222	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8506	035223	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8507	035224	004 11 0 00 004642 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8508	035225	321 12 0 00 035217 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8509
+  8510					;TEST ROTC LEFT ONE BIT POSITION
+  8511					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  8512					;TEST MQ SHIFT LOGIC GATES
+  8513					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 20-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0185
+
+  8514					;IS TESTED.
+  8515					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  8516					;OTHER BIT IS A ONE AFTER ROTATING
+  8517					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  8518
+  8519			004643		SN=SN+1
+  8520			200000			ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+  8521						IFE	ZZ,
+  8522			400000			YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+  8523	035226	400 10 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  8524	035227	205 11 0 00 200000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  8525	035230	205 07 0 00 400000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+  8526	035231	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8527	035232	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+  8528	035233	004 11 0 00 004643 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8529	035234	321 12 0 00 035226 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8530
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0186
+
+  8531			004700		SN=4700
+  8532			000000			ZZ=0
+  8533							;TEST AC+1 RIGHT HALF <
+  8534					E4700:	REPEAT	^D18,<;TEST ROTC LEFT ONE BIT POSITION
+  8535					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8536					;TEST MQ SHIFT LOGIC GATES
+  8537					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8538					;IS TESTED.
+  8539					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8540					;OTHER BIT IA A ZERO AFTER ROTATING
+  8541					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8542
+  8543					SN=SN+1
+  8544						ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8545						IFE	,
+  8546						YY=&777777	;SELECTED BIT AFTER ROTATION
+  8547						SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8548						HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8549						IFN	&777777,<
+  8550						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8551						IFE	&777777,<
+  8552						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8553						ROTC	AC,1		;*ROTATE LEFT ONE
+  8554						CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8555						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8556						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8557					>
+  8558					;TEST ROTC LEFT ONE BIT POSITION
+  8559					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8560					;TEST MQ SHIFT LOGIC GATES
+  8561					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8562					;IS TESTED.
+  8563					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8564					;OTHER BIT IA A ZERO AFTER ROTATING
+  8565					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8566
+  8567			004701		SN=SN+1
+  8568			000001			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8569		777777	777776			IFE	,
+  8570			777775			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8571	035235	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8572	035236	561 11 0 00 777776 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8573						IFN	&777777,<
+  8574	035237	561 07 0 00 777775 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8575						IFE	&777777,<
+  8576						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8577	035240	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8578	035241	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8579	035242	004 11 0 00 004701 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8580	035243	321 12 0 00 035235 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8581
+  8582					;TEST ROTC LEFT ONE BIT POSITION
+  8583					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8584					;TEST MQ SHIFT LOGIC GATES
+  8585					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0187
+
+  8586					;IS TESTED.
+  8587					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8588					;OTHER BIT IA A ZERO AFTER ROTATING
+  8589					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8590
+  8591			004702		SN=SN+1
+  8592		777777	777775			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8593						IFE	,
+  8594			777773			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8595	035244	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8596	035245	561 11 0 00 777775 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8597						IFN	&777777,<
+  8598	035246	561 07 0 00 777773 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8599						IFE	&777777,<
+  8600						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8601	035247	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8602	035250	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8603	035251	004 11 0 00 004702 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8604	035252	321 12 0 00 035244 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8605
+  8606					;TEST ROTC LEFT ONE BIT POSITION
+  8607					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8608					;TEST MQ SHIFT LOGIC GATES
+  8609					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8610					;IS TESTED.
+  8611					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8612					;OTHER BIT IA A ZERO AFTER ROTATING
+  8613					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8614
+  8615			004703		SN=SN+1
+  8616		777777	777773			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8617						IFE	,
+  8618			777767			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8619	035253	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8620	035254	561 11 0 00 777773 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8621						IFN	&777777,<
+  8622	035255	561 07 0 00 777767 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8623						IFE	&777777,<
+  8624						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8625	035256	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8626	035257	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8627	035260	004 11 0 00 004703 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8628	035261	321 12 0 00 035253 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8629
+  8630					;TEST ROTC LEFT ONE BIT POSITION
+  8631					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8632					;TEST MQ SHIFT LOGIC GATES
+  8633					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8634					;IS TESTED.
+  8635					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8636					;OTHER BIT IA A ZERO AFTER ROTATING
+  8637					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8638
+  8639			004704		SN=SN+1
+  8640		777777	777767			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0188
+
+  8641						IFE	,
+  8642			777757			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8643	035262	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8644	035263	561 11 0 00 777767 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8645						IFN	&777777,<
+  8646	035264	561 07 0 00 777757 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8647						IFE	&777777,<
+  8648						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8649	035265	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8650	035266	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8651	035267	004 11 0 00 004704 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8652	035270	321 12 0 00 035262 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8653
+  8654					;TEST ROTC LEFT ONE BIT POSITION
+  8655					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8656					;TEST MQ SHIFT LOGIC GATES
+  8657					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8658					;IS TESTED.
+  8659					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8660					;OTHER BIT IA A ZERO AFTER ROTATING
+  8661					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8662
+  8663			004705		SN=SN+1
+  8664		777777	777757			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8665						IFE	,
+  8666			777737			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8667	035271	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8668	035272	561 11 0 00 777757 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8669						IFN	&777777,<
+  8670	035273	561 07 0 00 777737 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8671						IFE	&777777,<
+  8672						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8673	035274	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8674	035275	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8675	035276	004 11 0 00 004705 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8676	035277	321 12 0 00 035271 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8677
+  8678					;TEST ROTC LEFT ONE BIT POSITION
+  8679					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8680					;TEST MQ SHIFT LOGIC GATES
+  8681					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8682					;IS TESTED.
+  8683					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8684					;OTHER BIT IA A ZERO AFTER ROTATING
+  8685					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8686
+  8687			004706		SN=SN+1
+  8688		777777	777737			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8689						IFE	,
+  8690			777677			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8691	035300	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8692	035301	561 11 0 00 777737 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8693						IFN	&777777,<
+  8694	035302	561 07 0 00 777677 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8695						IFE	&777777,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0189
+
+  8696						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8697	035303	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8698	035304	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8699	035305	004 11 0 00 004706 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8700	035306	321 12 0 00 035300 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8701
+  8702					;TEST ROTC LEFT ONE BIT POSITION
+  8703					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8704					;TEST MQ SHIFT LOGIC GATES
+  8705					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8706					;IS TESTED.
+  8707					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8708					;OTHER BIT IA A ZERO AFTER ROTATING
+  8709					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8710
+  8711			004707		SN=SN+1
+  8712		777777	777677			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8713						IFE	,
+  8714			777577			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8715	035307	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8716	035310	561 11 0 00 777677 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8717						IFN	&777777,<
+  8718	035311	561 07 0 00 777577 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8719						IFE	&777777,<
+  8720						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8721	035312	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8722	035313	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8723	035314	004 11 0 00 004707 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8724	035315	321 12 0 00 035307 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8725
+  8726					;TEST ROTC LEFT ONE BIT POSITION
+  8727					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8728					;TEST MQ SHIFT LOGIC GATES
+  8729					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8730					;IS TESTED.
+  8731					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8732					;OTHER BIT IA A ZERO AFTER ROTATING
+  8733					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8734
+  8735			004710		SN=SN+1
+  8736		777777	777577			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8737						IFE	,
+  8738			777377			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8739	035316	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8740	035317	561 11 0 00 777577 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8741						IFN	&777777,<
+  8742	035320	561 07 0 00 777377 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8743						IFE	&777777,<
+  8744						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8745	035321	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8746	035322	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8747	035323	004 11 0 00 004710 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8748	035324	321 12 0 00 035316 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8749
+  8750					;TEST ROTC LEFT ONE BIT POSITION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0190
+
+  8751					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8752					;TEST MQ SHIFT LOGIC GATES
+  8753					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8754					;IS TESTED.
+  8755					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8756					;OTHER BIT IA A ZERO AFTER ROTATING
+  8757					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8758
+  8759			004711		SN=SN+1
+  8760		777777	777377			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8761						IFE	,
+  8762			776777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8763	035325	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8764	035326	561 11 0 00 777377 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8765						IFN	&777777,<
+  8766	035327	561 07 0 00 776777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8767						IFE	&777777,<
+  8768						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8769	035330	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8770	035331	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8771	035332	004 11 0 00 004711 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8772	035333	321 12 0 00 035325 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8773
+  8774					;TEST ROTC LEFT ONE BIT POSITION
+  8775					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8776					;TEST MQ SHIFT LOGIC GATES
+  8777					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8778					;IS TESTED.
+  8779					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8780					;OTHER BIT IA A ZERO AFTER ROTATING
+  8781					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8782
+  8783			004712		SN=SN+1
+  8784		777777	776777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8785						IFE	,
+  8786			775777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8787	035334	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8788	035335	561 11 0 00 776777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8789						IFN	&777777,<
+  8790	035336	561 07 0 00 775777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8791						IFE	&777777,<
+  8792						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8793	035337	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8794	035340	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8795	035341	004 11 0 00 004712 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8796	035342	321 12 0 00 035334 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8797
+  8798					;TEST ROTC LEFT ONE BIT POSITION
+  8799					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8800					;TEST MQ SHIFT LOGIC GATES
+  8801					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8802					;IS TESTED.
+  8803					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8804					;OTHER BIT IA A ZERO AFTER ROTATING
+  8805					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0191
+
+  8806
+  8807			004713		SN=SN+1
+  8808		777777	775777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8809						IFE	,
+  8810			773777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8811	035343	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8812	035344	561 11 0 00 775777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8813						IFN	&777777,<
+  8814	035345	561 07 0 00 773777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8815						IFE	&777777,<
+  8816						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8817	035346	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8818	035347	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8819	035350	004 11 0 00 004713 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8820	035351	321 12 0 00 035343 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8821
+  8822					;TEST ROTC LEFT ONE BIT POSITION
+  8823					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8824					;TEST MQ SHIFT LOGIC GATES
+  8825					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8826					;IS TESTED.
+  8827					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8828					;OTHER BIT IA A ZERO AFTER ROTATING
+  8829					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8830
+  8831			004714		SN=SN+1
+  8832		777777	773777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8833						IFE	,
+  8834			767777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8835	035352	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8836	035353	561 11 0 00 773777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8837						IFN	&777777,<
+  8838	035354	561 07 0 00 767777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8839						IFE	&777777,<
+  8840						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8841	035355	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8842	035356	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8843	035357	004 11 0 00 004714 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8844	035360	321 12 0 00 035352 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8845
+  8846					;TEST ROTC LEFT ONE BIT POSITION
+  8847					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8848					;TEST MQ SHIFT LOGIC GATES
+  8849					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8850					;IS TESTED.
+  8851					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8852					;OTHER BIT IA A ZERO AFTER ROTATING
+  8853					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8854
+  8855			004715		SN=SN+1
+  8856		777777	767777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8857						IFE	,
+  8858			757777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8859	035361	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8860	035362	561 11 0 00 767777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0192
+
+  8861						IFN	&777777,<
+  8862	035363	561 07 0 00 757777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8863						IFE	&777777,<
+  8864						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8865	035364	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8866	035365	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8867	035366	004 11 0 00 004715 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8868	035367	321 12 0 00 035361 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8869
+  8870					;TEST ROTC LEFT ONE BIT POSITION
+  8871					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8872					;TEST MQ SHIFT LOGIC GATES
+  8873					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8874					;IS TESTED.
+  8875					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8876					;OTHER BIT IA A ZERO AFTER ROTATING
+  8877					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8878
+  8879			004716		SN=SN+1
+  8880		777777	757777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8881						IFE	,
+  8882			737777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8883	035370	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8884	035371	561 11 0 00 757777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8885						IFN	&777777,<
+  8886	035372	561 07 0 00 737777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8887						IFE	&777777,<
+  8888						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8889	035373	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8890	035374	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8891	035375	004 11 0 00 004716 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8892	035376	321 12 0 00 035370 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8893
+  8894					;TEST ROTC LEFT ONE BIT POSITION
+  8895					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8896					;TEST MQ SHIFT LOGIC GATES
+  8897					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8898					;IS TESTED.
+  8899					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8900					;OTHER BIT IA A ZERO AFTER ROTATING
+  8901					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8902
+  8903			004717		SN=SN+1
+  8904		777777	737777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8905						IFE	,
+  8906			677777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8907	035377	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8908	035400	561 11 0 00 737777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8909						IFN	&777777,<
+  8910	035401	561 07 0 00 677777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8911						IFE	&777777,<
+  8912						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8913	035402	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8914	035403	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8915	035404	004 11 0 00 004717 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0193
+
+  8916	035405	321 12 0 00 035377 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8917
+  8918					;TEST ROTC LEFT ONE BIT POSITION
+  8919					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8920					;TEST MQ SHIFT LOGIC GATES
+  8921					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8922					;IS TESTED.
+  8923					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8924					;OTHER BIT IA A ZERO AFTER ROTATING
+  8925					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8926
+  8927			004720		SN=SN+1
+  8928		777777	677777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8929						IFE	,
+  8930			577777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8931	035406	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8932	035407	561 11 0 00 677777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8933						IFN	&777777,<
+  8934	035410	561 07 0 00 577777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8935						IFE	&777777,<
+  8936						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8937	035411	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8938	035412	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8939	035413	004 11 0 00 004720 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8940	035414	321 12 0 00 035406 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8941
+  8942					;TEST ROTC LEFT ONE BIT POSITION
+  8943					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8944					;TEST MQ SHIFT LOGIC GATES
+  8945					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8946					;IS TESTED.
+  8947					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8948					;OTHER BIT IA A ZERO AFTER ROTATING
+  8949					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8950
+  8951			004721		SN=SN+1
+  8952		777777	577777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8953						IFE	,
+  8954			377777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8955	035415	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8956	035416	561 11 0 00 577777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8957						IFN	&777777,<
+  8958	035417	561 07 0 00 377777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8959						IFE	&777777,<
+  8960						HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8961	035420	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8962	035421	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8963	035422	004 11 0 00 004721 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8964	035423	321 12 0 00 035415 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8965
+  8966					;TEST ROTC LEFT ONE BIT POSITION
+  8967					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8968					;TEST MQ SHIFT LOGIC GATES
+  8969					;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8970					;IS TESTED.
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0194
+
+  8971					;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+  8972					;OTHER BIT IA A ZERO AFTER ROTATING
+  8973					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+  8974
+  8975			004722		SN=SN+1
+  8976		777777	377777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  8977						IFE	,
+  8978			777777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  8979	035424	476 00 0 00 000010 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+  8980	035425	561 11 0 00 377777 		HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+  8981						IFN	&777777,<
+  8982						HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+  8983						IFE	&777777,<
+  8984	035426	525 07 0 00 777776 		HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+  8985	035427	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  8986	035430	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  8987	035431	004 11 0 00 004722 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  8988	035432	321 12 0 00 035424 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  8989
+  8990					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0195
+
+  8991			000000			ZZ=0
+  8992
+  8993							;TEST AC+1 LEFT HALF <
+  8994						REPEAT	^D17,<;TEST ROTC LEFT ONE BIT POSITION
+  8995					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  8996					;TEST MQ SHIFT LOGIC GATES
+  8997					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  8998					;IS TESTED.
+  8999					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9000					;OTHER BIT IS A ZERO AFTER ROTATING
+  9001					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9002					;OF THE MQ
+  9003
+  9004					SN=SN+1
+  9005						ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9006						IFE	,
+  9007						YY=&777777	;SELECTED BIT AFTER ROTATION
+  9008						SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9009						HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9010						HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9011						ROTC	AC,1		;*ROTATE LEFT ONE
+  9012						CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9013						ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9014						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9015					>
+  9016					;TEST ROTC LEFT ONE BIT POSITION
+  9017					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9018					;TEST MQ SHIFT LOGIC GATES
+  9019					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9020					;IS TESTED.
+  9021					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9022					;OTHER BIT IS A ZERO AFTER ROTATING
+  9023					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9024					;OF THE MQ
+  9025
+  9026			004723		SN=SN+1
+  9027			000001			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9028		777777	777776			IFE	,
+  9029			777775			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9030	035433	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9031	035434	525 11 0 00 777776 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9032	035435	525 07 0 00 777775 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9033	035436	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9034	035437	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9035	035440	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9036	035441	321 12 0 00 035433 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9037
+  9038					;TEST ROTC LEFT ONE BIT POSITION
+  9039					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9040					;TEST MQ SHIFT LOGIC GATES
+  9041					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9042					;IS TESTED.
+  9043					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9044					;OTHER BIT IS A ZERO AFTER ROTATING
+  9045					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0196
+
+  9046					;OF THE MQ
+  9047
+  9048			004724		SN=SN+1
+  9049		777777	777775			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9050						IFE	,
+  9051			777773			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9052	035442	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9053	035443	525 11 0 00 777775 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9054	035444	525 07 0 00 777773 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9055	035445	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9056	035446	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9057	035447	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9058	035450	321 12 0 00 035442 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9059
+  9060					;TEST ROTC LEFT ONE BIT POSITION
+  9061					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9062					;TEST MQ SHIFT LOGIC GATES
+  9063					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9064					;IS TESTED.
+  9065					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9066					;OTHER BIT IS A ZERO AFTER ROTATING
+  9067					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9068					;OF THE MQ
+  9069
+  9070			004725		SN=SN+1
+  9071		777777	777773			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9072						IFE	,
+  9073			777767			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9074	035451	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9075	035452	525 11 0 00 777773 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9076	035453	525 07 0 00 777767 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9077	035454	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9078	035455	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9079	035456	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9080	035457	321 12 0 00 035451 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9081
+  9082					;TEST ROTC LEFT ONE BIT POSITION
+  9083					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9084					;TEST MQ SHIFT LOGIC GATES
+  9085					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9086					;IS TESTED.
+  9087					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9088					;OTHER BIT IS A ZERO AFTER ROTATING
+  9089					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9090					;OF THE MQ
+  9091
+  9092			004726		SN=SN+1
+  9093		777777	777767			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9094						IFE	,
+  9095			777757			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9096	035460	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9097	035461	525 11 0 00 777767 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9098	035462	525 07 0 00 777757 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9099	035463	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9100	035464	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0197
+
+  9101	035465	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9102	035466	321 12 0 00 035460 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9103
+  9104					;TEST ROTC LEFT ONE BIT POSITION
+  9105					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9106					;TEST MQ SHIFT LOGIC GATES
+  9107					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9108					;IS TESTED.
+  9109					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9110					;OTHER BIT IS A ZERO AFTER ROTATING
+  9111					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9112					;OF THE MQ
+  9113
+  9114			004727		SN=SN+1
+  9115		777777	777757			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9116						IFE	,
+  9117			777737			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9118	035467	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9119	035470	525 11 0 00 777757 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9120	035471	525 07 0 00 777737 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9121	035472	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9122	035473	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9123	035474	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9124	035475	321 12 0 00 035467 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9125
+  9126					;TEST ROTC LEFT ONE BIT POSITION
+  9127					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9128					;TEST MQ SHIFT LOGIC GATES
+  9129					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9130					;IS TESTED.
+  9131					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9132					;OTHER BIT IS A ZERO AFTER ROTATING
+  9133					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9134					;OF THE MQ
+  9135
+  9136			004730		SN=SN+1
+  9137		777777	777737			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9138						IFE	,
+  9139			777677			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9140	035476	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9141	035477	525 11 0 00 777737 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9142	035500	525 07 0 00 777677 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9143	035501	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9144	035502	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9145	035503	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9146	035504	321 12 0 00 035476 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9147
+  9148					;TEST ROTC LEFT ONE BIT POSITION
+  9149					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9150					;TEST MQ SHIFT LOGIC GATES
+  9151					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9152					;IS TESTED.
+  9153					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9154					;OTHER BIT IS A ZERO AFTER ROTATING
+  9155					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0198
+
+  9156					;OF THE MQ
+  9157
+  9158			004731		SN=SN+1
+  9159		777777	777677			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9160						IFE	,
+  9161			777577			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9162	035505	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9163	035506	525 11 0 00 777677 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9164	035507	525 07 0 00 777577 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9165	035510	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9166	035511	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9167	035512	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9168	035513	321 12 0 00 035505 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9169
+  9170					;TEST ROTC LEFT ONE BIT POSITION
+  9171					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9172					;TEST MQ SHIFT LOGIC GATES
+  9173					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9174					;IS TESTED.
+  9175					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9176					;OTHER BIT IS A ZERO AFTER ROTATING
+  9177					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9178					;OF THE MQ
+  9179
+  9180			004732		SN=SN+1
+  9181		777777	777577			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9182						IFE	,
+  9183			777377			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9184	035514	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9185	035515	525 11 0 00 777577 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9186	035516	525 07 0 00 777377 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9187	035517	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9188	035520	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9189	035521	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9190	035522	321 12 0 00 035514 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9191
+  9192					;TEST ROTC LEFT ONE BIT POSITION
+  9193					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9194					;TEST MQ SHIFT LOGIC GATES
+  9195					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9196					;IS TESTED.
+  9197					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9198					;OTHER BIT IS A ZERO AFTER ROTATING
+  9199					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9200					;OF THE MQ
+  9201
+  9202			004733		SN=SN+1
+  9203		777777	777377			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9204						IFE	,
+  9205			776777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9206	035523	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9207	035524	525 11 0 00 777377 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9208	035525	525 07 0 00 776777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9209	035526	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9210	035527	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0199
+
+  9211	035530	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9212	035531	321 12 0 00 035523 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9213
+  9214					;TEST ROTC LEFT ONE BIT POSITION
+  9215					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9216					;TEST MQ SHIFT LOGIC GATES
+  9217					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9218					;IS TESTED.
+  9219					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9220					;OTHER BIT IS A ZERO AFTER ROTATING
+  9221					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9222					;OF THE MQ
+  9223
+  9224			004734		SN=SN+1
+  9225		777777	776777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9226						IFE	,
+  9227			775777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9228	035532	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9229	035533	525 11 0 00 776777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9230	035534	525 07 0 00 775777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9231	035535	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9232	035536	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9233	035537	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9234	035540	321 12 0 00 035532 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9235
+  9236					;TEST ROTC LEFT ONE BIT POSITION
+  9237					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9238					;TEST MQ SHIFT LOGIC GATES
+  9239					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9240					;IS TESTED.
+  9241					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9242					;OTHER BIT IS A ZERO AFTER ROTATING
+  9243					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9244					;OF THE MQ
+  9245
+  9246			004735		SN=SN+1
+  9247		777777	775777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9248						IFE	,
+  9249			773777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9250	035541	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9251	035542	525 11 0 00 775777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9252	035543	525 07 0 00 773777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9253	035544	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9254	035545	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9255	035546	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9256	035547	321 12 0 00 035541 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9257
+  9258					;TEST ROTC LEFT ONE BIT POSITION
+  9259					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9260					;TEST MQ SHIFT LOGIC GATES
+  9261					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9262					;IS TESTED.
+  9263					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9264					;OTHER BIT IS A ZERO AFTER ROTATING
+  9265					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0200
+
+  9266					;OF THE MQ
+  9267
+  9268			004736		SN=SN+1
+  9269		777777	773777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9270						IFE	,
+  9271			767777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9272	035550	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9273	035551	525 11 0 00 773777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9274	035552	525 07 0 00 767777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9275	035553	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9276	035554	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9277	035555	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9278	035556	321 12 0 00 035550 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9279
+  9280					;TEST ROTC LEFT ONE BIT POSITION
+  9281					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9282					;TEST MQ SHIFT LOGIC GATES
+  9283					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9284					;IS TESTED.
+  9285					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9286					;OTHER BIT IS A ZERO AFTER ROTATING
+  9287					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9288					;OF THE MQ
+  9289
+  9290			004737		SN=SN+1
+  9291		777777	767777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9292						IFE	,
+  9293			757777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9294	035557	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9295	035560	525 11 0 00 767777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9296	035561	525 07 0 00 757777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9297	035562	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9298	035563	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9299	035564	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9300	035565	321 12 0 00 035557 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9301
+  9302					;TEST ROTC LEFT ONE BIT POSITION
+  9303					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9304					;TEST MQ SHIFT LOGIC GATES
+  9305					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9306					;IS TESTED.
+  9307					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9308					;OTHER BIT IS A ZERO AFTER ROTATING
+  9309					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9310					;OF THE MQ
+  9311
+  9312			004740		SN=SN+1
+  9313		777777	757777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9314						IFE	,
+  9315			737777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9316	035566	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9317	035567	525 11 0 00 757777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9318	035570	525 07 0 00 737777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9319	035571	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9320	035572	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0201
+
+  9321	035573	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9322	035574	321 12 0 00 035566 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9323
+  9324					;TEST ROTC LEFT ONE BIT POSITION
+  9325					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9326					;TEST MQ SHIFT LOGIC GATES
+  9327					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9328					;IS TESTED.
+  9329					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9330					;OTHER BIT IS A ZERO AFTER ROTATING
+  9331					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9332					;OF THE MQ
+  9333
+  9334			004741		SN=SN+1
+  9335		777777	737777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9336						IFE	,
+  9337			677777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9338	035575	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9339	035576	525 11 0 00 737777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9340	035577	525 07 0 00 677777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9341	035600	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9342	035601	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9343	035602	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9344	035603	321 12 0 00 035575 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9345
+  9346					;TEST ROTC LEFT ONE BIT POSITION
+  9347					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9348					;TEST MQ SHIFT LOGIC GATES
+  9349					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9350					;IS TESTED.
+  9351					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9352					;OTHER BIT IS A ZERO AFTER ROTATING
+  9353					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+  9354					;OF THE MQ
+  9355
+  9356			004742		SN=SN+1
+  9357		777777	677777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9358						IFE	,
+  9359			577777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9360	035604	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9361	035605	525 11 0 00 677777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9362	035606	525 07 0 00 577777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9363	035607	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9364	035610	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9365	035611	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9366	035612	321 12 0 00 035604 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9367
+  9368					;TEST ROTC LEFT ONE BIT POSITION
+  9369					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+  9370					;TEST MQ SHIFT LOGIC GATES
+  9371					;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+  9372					;IS TESTED.
+  9373					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+  9374					;OTHER BIT IS A ZERO AFTER ROTATING
+  9375					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 21-16
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0202
+
+  9376					;OF THE MQ
+  9377
+  9378			004743		SN=SN+1
+  9379		777777	577777			ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+  9380						IFE	,
+  9381			377777			YY=&777777	;SELECTED BIT AFTER ROTATION
+  9382	035613	476 00 0 00 000010 		SETOM	AC		;INITAILIZE AC TO ALL ONES
+  9383	035614	525 11 0 00 577777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+  9384	035615	525 07 0 00 377777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+  9385	035616	245 10 0 00 000001 		ROTC	AC,1		;*ROTATE LEFT ONE
+  9386	035617	312 11 0 00 000007 		CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+  9387	035620	004 11 0 00 000000 		ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+  9388	035621	321 12 0 00 035613 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9389
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 22
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0203
+
+  9390					;TEST ROTC RIGHT ONE BIT POSITION USING ALL ZEROS
+  9391					;TEST MQ SHIFT LOGIC GATES
+  9392					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND
+  9393					;AC+1 IS TESTED
+  9394					;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+  9395
+  9396			000007			AC=7
+  9397						SAVEAC	(1,1)^
+  9398	035622	201 11 0 00 035622 		MOVEI	AC+2,.		;SAVE TEST PC
+  9399	035623	202 11 0 00 030051 		MOVEM	AC+2,TESTPC
+  9400	035624	201 11 0 00 000011 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+  9401	035625	202 11 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+  9402
+  9403	035626	403 07 0 00 000010 	E5000:	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+  9404	035627	402 00 0 00 000006 		SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+  9405	035630	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9406	035631	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+  9407	035632	004 10 0 00 005001 		ER4	AC+1,5001	;MQ GRTING FAILED
+  9408	035633	321 11 0 00 035626 		JUMPL	AC+2,E5000	;LOOP ON ERROR SWITCH
+  9409
+  9410					;TEST ROTC,RIGHT ONE BIT POSITION USING ALL ONES
+  9411					;TEST MQ SHIFT LOGIC GATES
+  9412					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND
+  9413					;AC+1 IS TESTED
+  9414					;AN ERROR OCCURS IF C(AC+1) IS NONZERO AFTER ROTATING
+  9415
+  9416	035634	477 07 0 00 000010 	E5100:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1	TO ALL ONES
+  9417	035635	476 00 0 00 000006 		SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+  9418	035636	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9419	035637	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+  9420	035640	004 10 0 00 005101 		ER4	AC+1,5101	;MQ GATING FAILED
+  9421	035641	321 11 0 00 035634 		JUMPL	AC+2,E5100	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0204
+
+  9422			005200		SN=5200
+  9423			000000			ZZ=0
+  9424							;TEST AC+1 LEFT HALF<
+  9425					E5200:	REPEAT	^D18,<;TEST ROTC RIGHT ONE BIT POSITION
+  9426					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9427					;TEST MQ SHIFT LOGIC GATES
+  9428
+  9429					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9430					;IS TESTED.
+  9431					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9432					;OTHER BIT IS A ONE AFTER ROTATING
+  9433					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9434
+  9435					SN=SN+1
+  9436						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9437						IFE	ZZ,
+  9438						YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9439						SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9440						MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9441						IFN	,	<
+  9442						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9443						IFE	,<
+  9444						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9445						ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9446						CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9447						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9448						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9449					>
+  9450					;TEST ROTC RIGHT ONE BIT POSITION
+  9451					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9452					;TEST MQ SHIFT LOGIC GATES
+  9453
+  9454					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9455					;IS TESTED.
+  9456					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9457					;OTHER BIT IS A ONE AFTER ROTATING
+  9458					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9459
+  9460			005201		SN=SN+1
+  9461			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9462			400000			IFE	ZZ,
+  9463			200000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9464	035642	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9465	035643	205 10 0 00 400000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9466						IFN	,	<
+  9467	035644	205 06 0 00 200000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9468						IFE	,<
+  9469						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9470	035645	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9471	035646	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9472	035647	004 10 0 00 005201 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9473	035650	321 11 0 00 035642 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9474
+  9475					;TEST ROTC RIGHT ONE BIT POSITION
+  9476					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0205
+
+  9477					;TEST MQ SHIFT LOGIC GATES
+  9478
+  9479					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9480					;IS TESTED.
+  9481					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9482					;OTHER BIT IS A ONE AFTER ROTATING
+  9483					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9484
+  9485			005202		SN=SN+1
+  9486			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9487						IFE	ZZ,
+  9488			100000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9489	035651	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9490	035652	205 10 0 00 200000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9491						IFN	,	<
+  9492	035653	205 06 0 00 100000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9493						IFE	,<
+  9494						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9495	035654	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9496	035655	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9497	035656	004 10 0 00 005202 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9498	035657	321 11 0 00 035651 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9499
+  9500					;TEST ROTC RIGHT ONE BIT POSITION
+  9501					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9502					;TEST MQ SHIFT LOGIC GATES
+  9503
+  9504					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9505					;IS TESTED.
+  9506					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9507					;OTHER BIT IS A ONE AFTER ROTATING
+  9508					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9509
+  9510			005203		SN=SN+1
+  9511			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9512						IFE	ZZ,
+  9513			040000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9514	035660	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9515	035661	205 10 0 00 100000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9516						IFN	,	<
+  9517	035662	205 06 0 00 040000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9518						IFE	,<
+  9519						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9520	035663	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9521	035664	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9522	035665	004 10 0 00 005203 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9523	035666	321 11 0 00 035660 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9524
+  9525					;TEST ROTC RIGHT ONE BIT POSITION
+  9526					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9527					;TEST MQ SHIFT LOGIC GATES
+  9528
+  9529					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9530					;IS TESTED.
+  9531					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0206
+
+  9532					;OTHER BIT IS A ONE AFTER ROTATING
+  9533					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9534
+  9535			005204		SN=SN+1
+  9536			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9537						IFE	ZZ,
+  9538			020000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9539	035667	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9540	035670	205 10 0 00 040000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9541						IFN	,	<
+  9542	035671	205 06 0 00 020000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9543						IFE	,<
+  9544						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9545	035672	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9546	035673	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9547	035674	004 10 0 00 005204 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9548	035675	321 11 0 00 035667 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9549
+  9550					;TEST ROTC RIGHT ONE BIT POSITION
+  9551					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9552					;TEST MQ SHIFT LOGIC GATES
+  9553
+  9554					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9555					;IS TESTED.
+  9556					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9557					;OTHER BIT IS A ONE AFTER ROTATING
+  9558					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9559
+  9560			005205		SN=SN+1
+  9561			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9562						IFE	ZZ,
+  9563			010000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9564	035676	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9565	035677	205 10 0 00 020000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9566						IFN	,	<
+  9567	035700	205 06 0 00 010000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9568						IFE	,<
+  9569						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9570	035701	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9571	035702	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9572	035703	004 10 0 00 005205 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9573	035704	321 11 0 00 035676 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9574
+  9575					;TEST ROTC RIGHT ONE BIT POSITION
+  9576					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9577					;TEST MQ SHIFT LOGIC GATES
+  9578
+  9579					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9580					;IS TESTED.
+  9581					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9582					;OTHER BIT IS A ONE AFTER ROTATING
+  9583					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9584
+  9585			005206		SN=SN+1
+  9586			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0207
+
+  9587						IFE	ZZ,
+  9588			004000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9589	035705	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9590	035706	205 10 0 00 010000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9591						IFN	,	<
+  9592	035707	205 06 0 00 004000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9593						IFE	,<
+  9594						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9595	035710	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9596	035711	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9597	035712	004 10 0 00 005206 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9598	035713	321 11 0 00 035705 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9599
+  9600					;TEST ROTC RIGHT ONE BIT POSITION
+  9601					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9602					;TEST MQ SHIFT LOGIC GATES
+  9603
+  9604					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9605					;IS TESTED.
+  9606					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9607					;OTHER BIT IS A ONE AFTER ROTATING
+  9608					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9609
+  9610			005207		SN=SN+1
+  9611			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9612						IFE	ZZ,
+  9613			002000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9614	035714	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9615	035715	205 10 0 00 004000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9616						IFN	,	<
+  9617	035716	205 06 0 00 002000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9618						IFE	,<
+  9619						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9620	035717	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9621	035720	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9622	035721	004 10 0 00 005207 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9623	035722	321 11 0 00 035714 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9624
+  9625					;TEST ROTC RIGHT ONE BIT POSITION
+  9626					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9627					;TEST MQ SHIFT LOGIC GATES
+  9628
+  9629					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9630					;IS TESTED.
+  9631					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9632					;OTHER BIT IS A ONE AFTER ROTATING
+  9633					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9634
+  9635			005210		SN=SN+1
+  9636			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9637						IFE	ZZ,
+  9638			001000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9639	035723	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9640	035724	205 10 0 00 002000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9641						IFN	,	<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0208
+
+  9642	035725	205 06 0 00 001000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9643						IFE	,<
+  9644						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9645	035726	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9646	035727	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9647	035730	004 10 0 00 005210 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9648	035731	321 11 0 00 035723 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9649
+  9650					;TEST ROTC RIGHT ONE BIT POSITION
+  9651					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9652					;TEST MQ SHIFT LOGIC GATES
+  9653
+  9654					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9655					;IS TESTED.
+  9656					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9657					;OTHER BIT IS A ONE AFTER ROTATING
+  9658					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9659
+  9660			005211		SN=SN+1
+  9661			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9662						IFE	ZZ,
+  9663			000400			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9664	035732	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9665	035733	205 10 0 00 001000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9666						IFN	,	<
+  9667	035734	205 06 0 00 000400 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9668						IFE	,<
+  9669						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9670	035735	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9671	035736	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9672	035737	004 10 0 00 005211 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9673	035740	321 11 0 00 035732 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9674
+  9675					;TEST ROTC RIGHT ONE BIT POSITION
+  9676					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9677					;TEST MQ SHIFT LOGIC GATES
+  9678
+  9679					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9680					;IS TESTED.
+  9681					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9682					;OTHER BIT IS A ONE AFTER ROTATING
+  9683					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9684
+  9685			005212		SN=SN+1
+  9686			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9687						IFE	ZZ,
+  9688			000200			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9689	035741	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9690	035742	205 10 0 00 000400 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9691						IFN	,	<
+  9692	035743	205 06 0 00 000200 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9693						IFE	,<
+  9694						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9695	035744	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9696	035745	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0209
+
+  9697	035746	004 10 0 00 005212 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9698	035747	321 11 0 00 035741 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9699
+  9700					;TEST ROTC RIGHT ONE BIT POSITION
+  9701					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9702					;TEST MQ SHIFT LOGIC GATES
+  9703
+  9704					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9705					;IS TESTED.
+  9706					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9707					;OTHER BIT IS A ONE AFTER ROTATING
+  9708					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9709
+  9710			005213		SN=SN+1
+  9711			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9712						IFE	ZZ,
+  9713			000100			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9714	035750	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9715	035751	205 10 0 00 000200 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9716						IFN	,	<
+  9717	035752	205 06 0 00 000100 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9718						IFE	,<
+  9719						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9720	035753	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9721	035754	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9722	035755	004 10 0 00 005213 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9723	035756	321 11 0 00 035750 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9724
+  9725					;TEST ROTC RIGHT ONE BIT POSITION
+  9726					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9727					;TEST MQ SHIFT LOGIC GATES
+  9728
+  9729					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9730					;IS TESTED.
+  9731					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9732					;OTHER BIT IS A ONE AFTER ROTATING
+  9733					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9734
+  9735			005214		SN=SN+1
+  9736			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9737						IFE	ZZ,
+  9738			000040			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9739	035757	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9740	035760	205 10 0 00 000100 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9741						IFN	,	<
+  9742	035761	205 06 0 00 000040 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9743						IFE	,<
+  9744						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9745	035762	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9746	035763	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9747	035764	004 10 0 00 005214 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9748	035765	321 11 0 00 035757 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9749
+  9750					;TEST ROTC RIGHT ONE BIT POSITION
+  9751					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0210
+
+  9752					;TEST MQ SHIFT LOGIC GATES
+  9753
+  9754					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9755					;IS TESTED.
+  9756					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9757					;OTHER BIT IS A ONE AFTER ROTATING
+  9758					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9759
+  9760			005215		SN=SN+1
+  9761			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9762						IFE	ZZ,
+  9763			000020			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9764	035766	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9765	035767	205 10 0 00 000040 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9766						IFN	,	<
+  9767	035770	205 06 0 00 000020 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9768						IFE	,<
+  9769						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9770	035771	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9771	035772	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9772	035773	004 10 0 00 005215 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9773	035774	321 11 0 00 035766 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9774
+  9775					;TEST ROTC RIGHT ONE BIT POSITION
+  9776					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9777					;TEST MQ SHIFT LOGIC GATES
+  9778
+  9779					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9780					;IS TESTED.
+  9781					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9782					;OTHER BIT IS A ONE AFTER ROTATING
+  9783					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9784
+  9785			005216		SN=SN+1
+  9786			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9787						IFE	ZZ,
+  9788			000010			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9789	035775	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9790	035776	205 10 0 00 000020 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9791						IFN	,	<
+  9792	035777	205 06 0 00 000010 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9793						IFE	,<
+  9794						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9795	036000	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9796	036001	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9797	036002	004 10 0 00 005216 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9798	036003	321 11 0 00 035775 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9799
+  9800					;TEST ROTC RIGHT ONE BIT POSITION
+  9801					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9802					;TEST MQ SHIFT LOGIC GATES
+  9803
+  9804					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9805					;IS TESTED.
+  9806					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0211
+
+  9807					;OTHER BIT IS A ONE AFTER ROTATING
+  9808					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9809
+  9810			005217		SN=SN+1
+  9811			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9812						IFE	ZZ,
+  9813			000004			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9814	036004	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9815	036005	205 10 0 00 000010 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9816						IFN	,	<
+  9817	036006	205 06 0 00 000004 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9818						IFE	,<
+  9819						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9820	036007	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9821	036010	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9822	036011	004 10 0 00 005217 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9823	036012	321 11 0 00 036004 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9824
+  9825					;TEST ROTC RIGHT ONE BIT POSITION
+  9826					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9827					;TEST MQ SHIFT LOGIC GATES
+  9828
+  9829					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9830					;IS TESTED.
+  9831					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9832					;OTHER BIT IS A ONE AFTER ROTATING
+  9833					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9834
+  9835			005220		SN=SN+1
+  9836			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9837						IFE	ZZ,
+  9838			000002			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9839	036013	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9840	036014	205 10 0 00 000004 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9841						IFN	,	<
+  9842	036015	205 06 0 00 000002 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9843						IFE	,<
+  9844						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9845	036016	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9846	036017	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9847	036020	004 10 0 00 005220 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9848	036021	321 11 0 00 036013 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9849
+  9850					;TEST ROTC RIGHT ONE BIT POSITION
+  9851					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9852					;TEST MQ SHIFT LOGIC GATES
+  9853
+  9854					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9855					;IS TESTED.
+  9856					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9857					;OTHER BIT IS A ONE AFTER ROTATING
+  9858					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9859
+  9860			005221		SN=SN+1
+  9861			000002			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0212
+
+  9862						IFE	ZZ,
+  9863			000001			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9864	036022	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9865	036023	205 10 0 00 000002 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9866						IFN	,	<
+  9867	036024	205 06 0 00 000001 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9868						IFE	,<
+  9869						MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9870	036025	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9871	036026	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9872	036027	004 10 0 00 005221 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9873	036030	321 11 0 00 036022 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9874
+  9875					;TEST ROTC RIGHT ONE BIT POSITION
+  9876					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9877					;TEST MQ SHIFT LOGIC GATES
+  9878
+  9879					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9880					;IS TESTED.
+  9881					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9882					;OTHER BIT IS A ONE AFTER ROTATING
+  9883					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9884
+  9885			005222		SN=SN+1
+  9886			000001			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9887						IFE	ZZ,
+  9888			000000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9889	036031	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9890	036032	205 10 0 00 000001 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+  9891						IFN	,	<
+  9892						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+  9893						IFE	,<
+  9894	036033	201 06 0 00 400000 		MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+  9895	036034	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9896	036035	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9897	036036	004 10 0 00 005222 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9898	036037	321 11 0 00 036031 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+  9899
+  9900					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0213
+
+  9901			000000			ZZ=0
+  9902
+  9903							;TEST AC+1 RIGHT HALF<
+  9904						REPEAT	^D17,<;TEST ROTC RIGHT ONE BIT POSITION
+  9905					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9906					;TEST MQ SHIFT LOGIC GATES
+  9907					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9908					;IS TESTED.
+  9909					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9910					;OTHER BIT IS A ONE AFTER ROTATING
+  9911					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9912
+  9913					SN=SN+1
+  9914						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9915						IFE	ZZ,
+  9916
+  9917						YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9918						SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9919						MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  9920						MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+  9921						ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9922						CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9923						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9924						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9925					>
+  9926					;TEST ROTC RIGHT ONE BIT POSITION
+  9927					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9928					;TEST MQ SHIFT LOGIC GATES
+  9929					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9930					;IS TESTED.
+  9931					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9932					;OTHER BIT IS A ONE AFTER ROTATING
+  9933					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9934
+  9935			005223		SN=SN+1
+  9936			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9937			400000			IFE	ZZ,
+  9938
+  9939			200000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9940	036040	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9941	036041	201 10 0 00 400000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  9942	036042	201 06 0 00 200000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+  9943	036043	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9944	036044	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9945	036045	004 10 0 00 005223 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9946	036046	321 11 0 00 036040 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9947
+  9948					;TEST ROTC RIGHT ONE BIT POSITION
+  9949					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9950					;TEST MQ SHIFT LOGIC GATES
+  9951					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9952					;IS TESTED.
+  9953					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9954					;OTHER BIT IS A ONE AFTER ROTATING
+  9955					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0214
+
+  9956
+  9957			005224		SN=SN+1
+  9958			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9959						IFE	ZZ,
+  9960
+  9961			100000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9962	036047	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9963	036050	201 10 0 00 200000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  9964	036051	201 06 0 00 100000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+  9965	036052	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9966	036053	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9967	036054	004 10 0 00 005224 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9968	036055	321 11 0 00 036047 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9969
+  9970					;TEST ROTC RIGHT ONE BIT POSITION
+  9971					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9972					;TEST MQ SHIFT LOGIC GATES
+  9973					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9974					;IS TESTED.
+  9975					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9976					;OTHER BIT IS A ONE AFTER ROTATING
+  9977					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+  9978
+  9979			005225		SN=SN+1
+  9980			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+  9981						IFE	ZZ,
+  9982
+  9983			040000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+  9984	036056	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+  9985	036057	201 10 0 00 100000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+  9986	036060	201 06 0 00 040000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+  9987	036061	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+  9988	036062	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+  9989	036063	004 10 0 00 005225 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+  9990	036064	321 11 0 00 036056 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+  9991
+  9992					;TEST ROTC RIGHT ONE BIT POSITION
+  9993					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+  9994					;TEST MQ SHIFT LOGIC GATES
+  9995					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+  9996					;IS TESTED.
+  9997					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+  9998					;OTHER BIT IS A ONE AFTER ROTATING
+  9999					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10000
+ 10001			005226		SN=SN+1
+ 10002			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10003						IFE	ZZ,
+ 10004
+ 10005			020000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10006	036065	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10007	036066	201 10 0 00 040000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10008	036067	201 06 0 00 020000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10009	036070	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10010	036071	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0215
+
+ 10011	036072	004 10 0 00 005226 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10012	036073	321 11 0 00 036065 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10013
+ 10014					;TEST ROTC RIGHT ONE BIT POSITION
+ 10015					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10016					;TEST MQ SHIFT LOGIC GATES
+ 10017					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10018					;IS TESTED.
+ 10019					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10020					;OTHER BIT IS A ONE AFTER ROTATING
+ 10021					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10022
+ 10023			005227		SN=SN+1
+ 10024			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10025						IFE	ZZ,
+ 10026
+ 10027			010000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10028	036074	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10029	036075	201 10 0 00 020000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10030	036076	201 06 0 00 010000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10031	036077	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10032	036100	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10033	036101	004 10 0 00 005227 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10034	036102	321 11 0 00 036074 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10035
+ 10036					;TEST ROTC RIGHT ONE BIT POSITION
+ 10037					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10038					;TEST MQ SHIFT LOGIC GATES
+ 10039					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10040					;IS TESTED.
+ 10041					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10042					;OTHER BIT IS A ONE AFTER ROTATING
+ 10043					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10044
+ 10045			005230		SN=SN+1
+ 10046			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10047						IFE	ZZ,
+ 10048
+ 10049			004000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10050	036103	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10051	036104	201 10 0 00 010000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10052	036105	201 06 0 00 004000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10053	036106	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10054	036107	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10055	036110	004 10 0 00 005230 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10056	036111	321 11 0 00 036103 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10057
+ 10058					;TEST ROTC RIGHT ONE BIT POSITION
+ 10059					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10060					;TEST MQ SHIFT LOGIC GATES
+ 10061					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10062					;IS TESTED.
+ 10063					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10064					;OTHER BIT IS A ONE AFTER ROTATING
+ 10065					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0216
+
+ 10066
+ 10067			005231		SN=SN+1
+ 10068			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10069						IFE	ZZ,
+ 10070
+ 10071			002000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10072	036112	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10073	036113	201 10 0 00 004000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10074	036114	201 06 0 00 002000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10075	036115	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10076	036116	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10077	036117	004 10 0 00 005231 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10078	036120	321 11 0 00 036112 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10079
+ 10080					;TEST ROTC RIGHT ONE BIT POSITION
+ 10081					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10082					;TEST MQ SHIFT LOGIC GATES
+ 10083					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10084					;IS TESTED.
+ 10085					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10086					;OTHER BIT IS A ONE AFTER ROTATING
+ 10087					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10088
+ 10089			005232		SN=SN+1
+ 10090			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10091						IFE	ZZ,
+ 10092
+ 10093			001000			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10094	036121	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10095	036122	201 10 0 00 002000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10096	036123	201 06 0 00 001000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10097	036124	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10098	036125	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10099	036126	004 10 0 00 005232 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10100	036127	321 11 0 00 036121 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10101
+ 10102					;TEST ROTC RIGHT ONE BIT POSITION
+ 10103					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10104					;TEST MQ SHIFT LOGIC GATES
+ 10105					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10106					;IS TESTED.
+ 10107					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10108					;OTHER BIT IS A ONE AFTER ROTATING
+ 10109					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10110
+ 10111			005233		SN=SN+1
+ 10112			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10113						IFE	ZZ,
+ 10114
+ 10115			000400			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10116	036130	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10117	036131	201 10 0 00 001000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10118	036132	201 06 0 00 000400 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10119	036133	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10120	036134	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0217
+
+ 10121	036135	004 10 0 00 005233 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10122	036136	321 11 0 00 036130 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10123
+ 10124					;TEST ROTC RIGHT ONE BIT POSITION
+ 10125					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10126					;TEST MQ SHIFT LOGIC GATES
+ 10127					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10128					;IS TESTED.
+ 10129					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10130					;OTHER BIT IS A ONE AFTER ROTATING
+ 10131					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10132
+ 10133			005234		SN=SN+1
+ 10134			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10135						IFE	ZZ,
+ 10136
+ 10137			000200			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10138	036137	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10139	036140	201 10 0 00 000400 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10140	036141	201 06 0 00 000200 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10141	036142	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10142	036143	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10143	036144	004 10 0 00 005234 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10144	036145	321 11 0 00 036137 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10145
+ 10146					;TEST ROTC RIGHT ONE BIT POSITION
+ 10147					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10148					;TEST MQ SHIFT LOGIC GATES
+ 10149					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10150					;IS TESTED.
+ 10151					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10152					;OTHER BIT IS A ONE AFTER ROTATING
+ 10153					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10154
+ 10155			005235		SN=SN+1
+ 10156			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10157						IFE	ZZ,
+ 10158
+ 10159			000100			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10160	036146	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10161	036147	201 10 0 00 000200 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10162	036150	201 06 0 00 000100 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10163	036151	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10164	036152	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10165	036153	004 10 0 00 005235 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10166	036154	321 11 0 00 036146 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10167
+ 10168					;TEST ROTC RIGHT ONE BIT POSITION
+ 10169					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10170					;TEST MQ SHIFT LOGIC GATES
+ 10171					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10172					;IS TESTED.
+ 10173					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10174					;OTHER BIT IS A ONE AFTER ROTATING
+ 10175					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0218
+
+ 10176
+ 10177			005236		SN=SN+1
+ 10178			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10179						IFE	ZZ,
+ 10180
+ 10181			000040			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10182	036155	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10183	036156	201 10 0 00 000100 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10184	036157	201 06 0 00 000040 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10185	036160	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10186	036161	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10187	036162	004 10 0 00 005236 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10188	036163	321 11 0 00 036155 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10189
+ 10190					;TEST ROTC RIGHT ONE BIT POSITION
+ 10191					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10192					;TEST MQ SHIFT LOGIC GATES
+ 10193					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10194					;IS TESTED.
+ 10195					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10196					;OTHER BIT IS A ONE AFTER ROTATING
+ 10197					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10198
+ 10199			005237		SN=SN+1
+ 10200			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10201						IFE	ZZ,
+ 10202
+ 10203			000020			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10204	036164	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10205	036165	201 10 0 00 000040 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10206	036166	201 06 0 00 000020 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10207	036167	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10208	036170	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10209	036171	004 10 0 00 005237 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10210	036172	321 11 0 00 036164 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10211
+ 10212					;TEST ROTC RIGHT ONE BIT POSITION
+ 10213					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10214					;TEST MQ SHIFT LOGIC GATES
+ 10215					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10216					;IS TESTED.
+ 10217					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10218					;OTHER BIT IS A ONE AFTER ROTATING
+ 10219					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10220
+ 10221			005240		SN=SN+1
+ 10222			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10223						IFE	ZZ,
+ 10224
+ 10225			000010			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10226	036173	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10227	036174	201 10 0 00 000020 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10228	036175	201 06 0 00 000010 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10229	036176	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10230	036177	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0219
+
+ 10231	036200	004 10 0 00 005240 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10232	036201	321 11 0 00 036173 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10233
+ 10234					;TEST ROTC RIGHT ONE BIT POSITION
+ 10235					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10236					;TEST MQ SHIFT LOGIC GATES
+ 10237					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10238					;IS TESTED.
+ 10239					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10240					;OTHER BIT IS A ONE AFTER ROTATING
+ 10241					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10242
+ 10243			005241		SN=SN+1
+ 10244			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10245						IFE	ZZ,
+ 10246
+ 10247			000004			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10248	036202	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10249	036203	201 10 0 00 000010 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10250	036204	201 06 0 00 000004 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10251	036205	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10252	036206	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10253	036207	004 10 0 00 005241 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10254	036210	321 11 0 00 036202 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10255
+ 10256					;TEST ROTC RIGHT ONE BIT POSITION
+ 10257					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10258					;TEST MQ SHIFT LOGIC GATES
+ 10259					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10260					;IS TESTED.
+ 10261					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10262					;OTHER BIT IS A ONE AFTER ROTATING
+ 10263					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 10264
+ 10265			005242		SN=SN+1
+ 10266			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10267						IFE	ZZ,
+ 10268
+ 10269			000002			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10270	036211	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10271	036212	201 10 0 00 000004 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10272	036213	201 06 0 00 000002 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10273	036214	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10274	036215	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10275	036216	004 10 0 00 005242 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10276	036217	321 11 0 00 036211 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10277
+ 10278					;TEST ROTC RIGHT ONE BIT POSITION
+ 10279					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 10280					;TEST MQ SHIFT LOGIC GATES
+ 10281					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10282					;IS TESTED.
+ 10283					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 10284					;OTHER BIT IS A ONE AFTER ROTATING
+ 10285					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 23-16
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0220
+
+ 10286
+ 10287			005243		SN=SN+1
+ 10288			000002			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 10289						IFE	ZZ,
+ 10290
+ 10291			000001			YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+ 10292	036220	400 07 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 10293	036221	201 10 0 00 000002 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 10294	036222	201 06 0 00 000001 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 10295	036223	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10296	036224	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+ 10297	036225	004 10 0 00 005243 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10298	036226	321 11 0 00 036220 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10299
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0221
+
+ 10300			005300		SN=5300
+ 10301			000001			ZZ=1
+ 10302
+ 10303							;TEST AC+1 LEFT HALF<
+ 10304					E5300:	REPEAT	^D18,<;TEST ROTC RIGHT ONE BIT POSITION
+ 10305					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10306					;TEST MQ SHIFT LOGIC GATES
+ 10307					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10308					;IS TESTED.
+ 10309					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10310					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10311					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10312
+ 10313					SN=SN+1
+ 10314						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10315						IFE	,
+ 10316						YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10317						SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10318						HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10319						IFN	&777777,<
+ 10320						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10321						IFE	&777777,<
+ 10322						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10323						ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10324						CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10325						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10326						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10327					>
+ 10328					;TEST ROTC RIGHT ONE BIT POSITION
+ 10329					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10330					;TEST MQ SHIFT LOGIC GATES
+ 10331					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10332					;IS TESTED.
+ 10333					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10334					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10335					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10336
+ 10337			005301		SN=SN+1
+ 10338			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10339		777777	377777			IFE	,
+ 10340			577777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10341	036227	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10342	036230	525 10 0 00 377777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10343						IFN	&777777,<
+ 10344	036231	525 06 0 00 577777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10345						IFE	&777777,<
+ 10346						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10347	036232	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10348	036233	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10349	036234	004 10 0 00 005301 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10350	036235	321 11 0 00 036227 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10351
+ 10352					;TEST ROTC RIGHT ONE BIT POSITION
+ 10353					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10354					;TEST MQ SHIFT LOGIC GATES
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0222
+
+ 10355					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10356					;IS TESTED.
+ 10357					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10358					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10359					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10360
+ 10361			005302		SN=SN+1
+ 10362		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10363						IFE	,
+ 10364			677777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10365	036236	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10366	036237	525 10 0 00 577777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10367						IFN	&777777,<
+ 10368	036240	525 06 0 00 677777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10369						IFE	&777777,<
+ 10370						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10371	036241	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10372	036242	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10373	036243	004 10 0 00 005302 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10374	036244	321 11 0 00 036236 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10375
+ 10376					;TEST ROTC RIGHT ONE BIT POSITION
+ 10377					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10378					;TEST MQ SHIFT LOGIC GATES
+ 10379					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10380					;IS TESTED.
+ 10381					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10382					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10383					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10384
+ 10385			005303		SN=SN+1
+ 10386		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10387						IFE	,
+ 10388			737777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10389	036245	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10390	036246	525 10 0 00 677777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10391						IFN	&777777,<
+ 10392	036247	525 06 0 00 737777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10393						IFE	&777777,<
+ 10394						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10395	036250	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10396	036251	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10397	036252	004 10 0 00 005303 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10398	036253	321 11 0 00 036245 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10399
+ 10400					;TEST ROTC RIGHT ONE BIT POSITION
+ 10401					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10402					;TEST MQ SHIFT LOGIC GATES
+ 10403					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10404					;IS TESTED.
+ 10405					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10406					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10407					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10408
+ 10409			005304		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0223
+
+ 10410		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10411						IFE	,
+ 10412			757777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10413	036254	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10414	036255	525 10 0 00 737777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10415						IFN	&777777,<
+ 10416	036256	525 06 0 00 757777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10417						IFE	&777777,<
+ 10418						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10419	036257	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10420	036260	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10421	036261	004 10 0 00 005304 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10422	036262	321 11 0 00 036254 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10423
+ 10424					;TEST ROTC RIGHT ONE BIT POSITION
+ 10425					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10426					;TEST MQ SHIFT LOGIC GATES
+ 10427					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10428					;IS TESTED.
+ 10429					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10430					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10431					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10432
+ 10433			005305		SN=SN+1
+ 10434		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10435						IFE	,
+ 10436			767777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10437	036263	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10438	036264	525 10 0 00 757777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10439						IFN	&777777,<
+ 10440	036265	525 06 0 00 767777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10441						IFE	&777777,<
+ 10442						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10443	036266	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10444	036267	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10445	036270	004 10 0 00 005305 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10446	036271	321 11 0 00 036263 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10447
+ 10448					;TEST ROTC RIGHT ONE BIT POSITION
+ 10449					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10450					;TEST MQ SHIFT LOGIC GATES
+ 10451					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10452					;IS TESTED.
+ 10453					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10454					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10455					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10456
+ 10457			005306		SN=SN+1
+ 10458		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10459						IFE	,
+ 10460			773777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10461	036272	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10462	036273	525 10 0 00 767777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10463						IFN	&777777,<
+ 10464	036274	525 06 0 00 773777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0224
+
+ 10465						IFE	&777777,<
+ 10466						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10467	036275	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10468	036276	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10469	036277	004 10 0 00 005306 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10470	036300	321 11 0 00 036272 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10471
+ 10472					;TEST ROTC RIGHT ONE BIT POSITION
+ 10473					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10474					;TEST MQ SHIFT LOGIC GATES
+ 10475					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10476					;IS TESTED.
+ 10477					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10478					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10479					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10480
+ 10481			005307		SN=SN+1
+ 10482		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10483						IFE	,
+ 10484			775777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10485	036301	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10486	036302	525 10 0 00 773777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10487						IFN	&777777,<
+ 10488	036303	525 06 0 00 775777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10489						IFE	&777777,<
+ 10490						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10491	036304	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10492	036305	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10493	036306	004 10 0 00 005307 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10494	036307	321 11 0 00 036301 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10495
+ 10496					;TEST ROTC RIGHT ONE BIT POSITION
+ 10497					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10498					;TEST MQ SHIFT LOGIC GATES
+ 10499					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10500					;IS TESTED.
+ 10501					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10502					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10503					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10504
+ 10505			005310		SN=SN+1
+ 10506		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10507						IFE	,
+ 10508			776777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10509	036310	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10510	036311	525 10 0 00 775777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10511						IFN	&777777,<
+ 10512	036312	525 06 0 00 776777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10513						IFE	&777777,<
+ 10514						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10515	036313	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10516	036314	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10517	036315	004 10 0 00 005310 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10518	036316	321 11 0 00 036310 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10519
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0225
+
+ 10520					;TEST ROTC RIGHT ONE BIT POSITION
+ 10521					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10522					;TEST MQ SHIFT LOGIC GATES
+ 10523					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10524					;IS TESTED.
+ 10525					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10526					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10527					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10528
+ 10529			005311		SN=SN+1
+ 10530		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10531						IFE	,
+ 10532			777377			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10533	036317	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10534	036320	525 10 0 00 776777 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10535						IFN	&777777,<
+ 10536	036321	525 06 0 00 777377 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10537						IFE	&777777,<
+ 10538						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10539	036322	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10540	036323	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10541	036324	004 10 0 00 005311 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10542	036325	321 11 0 00 036317 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10543
+ 10544					;TEST ROTC RIGHT ONE BIT POSITION
+ 10545					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10546					;TEST MQ SHIFT LOGIC GATES
+ 10547					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10548					;IS TESTED.
+ 10549					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10550					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10551					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10552
+ 10553			005312		SN=SN+1
+ 10554		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10555						IFE	,
+ 10556			777577			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10557	036326	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10558	036327	525 10 0 00 777377 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10559						IFN	&777777,<
+ 10560	036330	525 06 0 00 777577 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10561						IFE	&777777,<
+ 10562						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10563	036331	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10564	036332	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10565	036333	004 10 0 00 005312 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10566	036334	321 11 0 00 036326 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10567
+ 10568					;TEST ROTC RIGHT ONE BIT POSITION
+ 10569					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10570					;TEST MQ SHIFT LOGIC GATES
+ 10571					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10572					;IS TESTED.
+ 10573					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10574					;OTHER BIT IS A ZERO AFTER ROTATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0226
+
+ 10575					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10576
+ 10577			005313		SN=SN+1
+ 10578		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10579						IFE	,
+ 10580			777677			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10581	036335	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10582	036336	525 10 0 00 777577 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10583						IFN	&777777,<
+ 10584	036337	525 06 0 00 777677 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10585						IFE	&777777,<
+ 10586						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10587	036340	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10588	036341	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10589	036342	004 10 0 00 005313 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10590	036343	321 11 0 00 036335 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10591
+ 10592					;TEST ROTC RIGHT ONE BIT POSITION
+ 10593					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10594					;TEST MQ SHIFT LOGIC GATES
+ 10595					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10596					;IS TESTED.
+ 10597					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10598					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10599					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10600
+ 10601			005314		SN=SN+1
+ 10602		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10603						IFE	,
+ 10604			777737			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10605	036344	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10606	036345	525 10 0 00 777677 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10607						IFN	&777777,<
+ 10608	036346	525 06 0 00 777737 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10609						IFE	&777777,<
+ 10610						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10611	036347	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10612	036350	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10613	036351	004 10 0 00 005314 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10614	036352	321 11 0 00 036344 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10615
+ 10616					;TEST ROTC RIGHT ONE BIT POSITION
+ 10617					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10618					;TEST MQ SHIFT LOGIC GATES
+ 10619					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10620					;IS TESTED.
+ 10621					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10622					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10623					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10624
+ 10625			005315		SN=SN+1
+ 10626		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10627						IFE	,
+ 10628			777757			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10629	036353	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0227
+
+ 10630	036354	525 10 0 00 777737 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10631						IFN	&777777,<
+ 10632	036355	525 06 0 00 777757 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10633						IFE	&777777,<
+ 10634						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10635	036356	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10636	036357	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10637	036360	004 10 0 00 005315 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10638	036361	321 11 0 00 036353 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10639
+ 10640					;TEST ROTC RIGHT ONE BIT POSITION
+ 10641					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10642					;TEST MQ SHIFT LOGIC GATES
+ 10643					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10644					;IS TESTED.
+ 10645					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10646					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10647					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10648
+ 10649			005316		SN=SN+1
+ 10650		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10651						IFE	,
+ 10652			777767			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10653	036362	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10654	036363	525 10 0 00 777757 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10655						IFN	&777777,<
+ 10656	036364	525 06 0 00 777767 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10657						IFE	&777777,<
+ 10658						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10659	036365	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10660	036366	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10661	036367	004 10 0 00 005316 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10662	036370	321 11 0 00 036362 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10663
+ 10664					;TEST ROTC RIGHT ONE BIT POSITION
+ 10665					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10666					;TEST MQ SHIFT LOGIC GATES
+ 10667					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10668					;IS TESTED.
+ 10669					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10670					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10671					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10672
+ 10673			005317		SN=SN+1
+ 10674		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10675						IFE	,
+ 10676			777773			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10677	036371	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10678	036372	525 10 0 00 777767 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10679						IFN	&777777,<
+ 10680	036373	525 06 0 00 777773 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10681						IFE	&777777,<
+ 10682						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10683	036374	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10684	036375	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0228
+
+ 10685	036376	004 10 0 00 005317 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10686	036377	321 11 0 00 036371 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10687
+ 10688					;TEST ROTC RIGHT ONE BIT POSITION
+ 10689					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10690					;TEST MQ SHIFT LOGIC GATES
+ 10691					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10692					;IS TESTED.
+ 10693					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10694					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10695					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10696
+ 10697			005320		SN=SN+1
+ 10698		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10699						IFE	,
+ 10700			777775			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10701	036400	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10702	036401	525 10 0 00 777773 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10703						IFN	&777777,<
+ 10704	036402	525 06 0 00 777775 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10705						IFE	&777777,<
+ 10706						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10707	036403	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10708	036404	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10709	036405	004 10 0 00 005320 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10710	036406	321 11 0 00 036400 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10711
+ 10712					;TEST ROTC RIGHT ONE BIT POSITION
+ 10713					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10714					;TEST MQ SHIFT LOGIC GATES
+ 10715					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10716					;IS TESTED.
+ 10717					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10718					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10719					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10720
+ 10721			005321		SN=SN+1
+ 10722		777777	777775			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10723						IFE	,
+ 10724			777776			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10725	036407	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10726	036410	525 10 0 00 777775 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10727						IFN	&777777,<
+ 10728	036411	525 06 0 00 777776 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10729						IFE	&777777,<
+ 10730						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10731	036412	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10732	036413	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10733	036414	004 10 0 00 005321 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10734	036415	321 11 0 00 036407 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10735
+ 10736					;TEST ROTC RIGHT ONE BIT POSITION
+ 10737					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10738					;TEST MQ SHIFT LOGIC GATES
+ 10739					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0229
+
+ 10740					;IS TESTED.
+ 10741					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10742					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10743					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10744
+ 10745			005322		SN=SN+1
+ 10746		777777	777776			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10747						IFE	,
+ 10748			777777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10749	036416	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10750	036417	525 10 0 00 777776 		HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+ 10751						IFN	&777777,<
+ 10752						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 10753						IFE	&777777,<
+ 10754	036420	561 06 0 00 377777 		HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 10755	036421	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10756	036422	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10757	036423	004 10 0 00 005322 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10758	036424	321 11 0 00 036416 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+ 10759
+ 10760					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0230
+
+ 10761			000001			ZZ=1
+ 10762
+ 10763							;TEST AC+1 RIGHT HALF<
+ 10764						REPEAT	^D17,<;TEST ROTC RIGHT ONE BIT POSITION
+ 10765					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10766					;TEST MQ SHIFT LOGIC GATES
+ 10767					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10768					;IS TESTED.
+ 10769					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10770					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10771					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10772
+ 10773					SN=SN+1
+ 10774						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10775						IFE,
+ 10776						YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10777						SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10778						HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10779						HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10780						ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10781						CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10782						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10783						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10784					>
+ 10785					;TEST ROTC RIGHT ONE BIT POSITION
+ 10786					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10787					;TEST MQ SHIFT LOGIC GATES
+ 10788					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10789					;IS TESTED.
+ 10790					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10791					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10792					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10793
+ 10794			005323		SN=SN+1
+ 10795			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10796		777777	377777			IFE,
+ 10797			577777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10798	036425	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10799	036426	561 10 0 00 377777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10800	036427	561 06 0 00 577777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10801	036430	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10802	036431	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10803	036432	004 10 0 00 005323 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10804	036433	321 11 0 00 036425 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10805
+ 10806					;TEST ROTC RIGHT ONE BIT POSITION
+ 10807					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10808					;TEST MQ SHIFT LOGIC GATES
+ 10809					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10810					;IS TESTED.
+ 10811					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10812					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10813					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10814
+ 10815			005324		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0231
+
+ 10816		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10817						IFE,
+ 10818			677777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10819	036434	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10820	036435	561 10 0 00 577777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10821	036436	561 06 0 00 677777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10822	036437	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10823	036440	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10824	036441	004 10 0 00 005324 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10825	036442	321 11 0 00 036434 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10826
+ 10827					;TEST ROTC RIGHT ONE BIT POSITION
+ 10828					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10829					;TEST MQ SHIFT LOGIC GATES
+ 10830					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10831					;IS TESTED.
+ 10832					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10833					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10834					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10835
+ 10836			005325		SN=SN+1
+ 10837		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10838						IFE,
+ 10839			737777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10840	036443	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10841	036444	561 10 0 00 677777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10842	036445	561 06 0 00 737777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10843	036446	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10844	036447	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10845	036450	004 10 0 00 005325 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10846	036451	321 11 0 00 036443 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10847
+ 10848					;TEST ROTC RIGHT ONE BIT POSITION
+ 10849					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10850					;TEST MQ SHIFT LOGIC GATES
+ 10851					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10852					;IS TESTED.
+ 10853					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10854					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10855					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10856
+ 10857			005326		SN=SN+1
+ 10858		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10859						IFE,
+ 10860			757777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10861	036452	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10862	036453	561 10 0 00 737777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10863	036454	561 06 0 00 757777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10864	036455	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10865	036456	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10866	036457	004 10 0 00 005326 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10867	036460	321 11 0 00 036452 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10868
+ 10869					;TEST ROTC RIGHT ONE BIT POSITION
+ 10870					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0232
+
+ 10871					;TEST MQ SHIFT LOGIC GATES
+ 10872					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10873					;IS TESTED.
+ 10874					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10875					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10876					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10877
+ 10878			005327		SN=SN+1
+ 10879		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10880						IFE,
+ 10881			767777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10882	036461	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10883	036462	561 10 0 00 757777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10884	036463	561 06 0 00 767777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10885	036464	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10886	036465	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10887	036466	004 10 0 00 005327 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10888	036467	321 11 0 00 036461 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10889
+ 10890					;TEST ROTC RIGHT ONE BIT POSITION
+ 10891					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10892					;TEST MQ SHIFT LOGIC GATES
+ 10893					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10894					;IS TESTED.
+ 10895					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10896					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10897					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10898
+ 10899			005330		SN=SN+1
+ 10900		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10901						IFE,
+ 10902			773777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10903	036470	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10904	036471	561 10 0 00 767777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10905	036472	561 06 0 00 773777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10906	036473	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10907	036474	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10908	036475	004 10 0 00 005330 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10909	036476	321 11 0 00 036470 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10910
+ 10911					;TEST ROTC RIGHT ONE BIT POSITION
+ 10912					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10913					;TEST MQ SHIFT LOGIC GATES
+ 10914					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10915					;IS TESTED.
+ 10916					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10917					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10918					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10919
+ 10920			005331		SN=SN+1
+ 10921		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10922						IFE,
+ 10923			775777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10924	036477	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10925	036500	561 10 0 00 773777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0233
+
+ 10926	036501	561 06 0 00 775777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10927	036502	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10928	036503	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10929	036504	004 10 0 00 005331 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10930	036505	321 11 0 00 036477 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10931
+ 10932					;TEST ROTC RIGHT ONE BIT POSITION
+ 10933					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10934					;TEST MQ SHIFT LOGIC GATES
+ 10935					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10936					;IS TESTED.
+ 10937					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10938					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10939					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10940
+ 10941			005332		SN=SN+1
+ 10942		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10943						IFE,
+ 10944			776777			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10945	036506	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10946	036507	561 10 0 00 775777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10947	036510	561 06 0 00 776777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10948	036511	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10949	036512	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10950	036513	004 10 0 00 005332 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10951	036514	321 11 0 00 036506 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10952
+ 10953					;TEST ROTC RIGHT ONE BIT POSITION
+ 10954					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10955					;TEST MQ SHIFT LOGIC GATES
+ 10956					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10957					;IS TESTED.
+ 10958					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10959					;OTHER BIT IS A ZERO AFTER ROTATING
+ 10960					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10961
+ 10962			005333		SN=SN+1
+ 10963		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10964						IFE,
+ 10965			777377			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10966	036515	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10967	036516	561 10 0 00 776777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10968	036517	561 06 0 00 777377 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10969	036520	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10970	036521	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10971	036522	004 10 0 00 005333 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10972	036523	321 11 0 00 036515 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10973
+ 10974					;TEST ROTC RIGHT ONE BIT POSITION
+ 10975					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10976					;TEST MQ SHIFT LOGIC GATES
+ 10977					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10978					;IS TESTED.
+ 10979					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 10980					;OTHER BIT IS A ZERO AFTER ROTATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0234
+
+ 10981					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 10982
+ 10983			005334		SN=SN+1
+ 10984		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 10985						IFE,
+ 10986			777577			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 10987	036524	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 10988	036525	561 10 0 00 777377 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 10989	036526	561 06 0 00 777577 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 10990	036527	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 10991	036530	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 10992	036531	004 10 0 00 005334 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 10993	036532	321 11 0 00 036524 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 10994
+ 10995					;TEST ROTC RIGHT ONE BIT POSITION
+ 10996					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 10997					;TEST MQ SHIFT LOGIC GATES
+ 10998					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 10999					;IS TESTED.
+ 11000					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 11001					;OTHER BIT IS A ZERO AFTER ROTATING
+ 11002					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 11003
+ 11004			005335		SN=SN+1
+ 11005		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 11006						IFE,
+ 11007			777677			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 11008	036533	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 11009	036534	561 10 0 00 777577 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 11010	036535	561 06 0 00 777677 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 11011	036536	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 11012	036537	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 11013	036540	004 10 0 00 005335 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11014	036541	321 11 0 00 036533 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11015
+ 11016					;TEST ROTC RIGHT ONE BIT POSITION
+ 11017					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 11018					;TEST MQ SHIFT LOGIC GATES
+ 11019					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 11020					;IS TESTED.
+ 11021					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 11022					;OTHER BIT IS A ZERO AFTER ROTATING
+ 11023					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 11024
+ 11025			005336		SN=SN+1
+ 11026		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 11027						IFE,
+ 11028			777737			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 11029	036542	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 11030	036543	561 10 0 00 777677 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 11031	036544	561 06 0 00 777737 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 11032	036545	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 11033	036546	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 11034	036547	004 10 0 00 005336 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11035	036550	321 11 0 00 036542 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0235
+
+ 11036
+ 11037					;TEST ROTC RIGHT ONE BIT POSITION
+ 11038					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 11039					;TEST MQ SHIFT LOGIC GATES
+ 11040					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 11041					;IS TESTED.
+ 11042					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 11043					;OTHER BIT IS A ZERO AFTER ROTATING
+ 11044					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 11045
+ 11046			005337		SN=SN+1
+ 11047		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 11048						IFE,
+ 11049			777757			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 11050	036551	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 11051	036552	561 10 0 00 777737 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 11052	036553	561 06 0 00 777757 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 11053	036554	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 11054	036555	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 11055	036556	004 10 0 00 005337 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11056	036557	321 11 0 00 036551 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11057
+ 11058					;TEST ROTC RIGHT ONE BIT POSITION
+ 11059					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 11060					;TEST MQ SHIFT LOGIC GATES
+ 11061					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 11062					;IS TESTED.
+ 11063					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 11064					;OTHER BIT IS A ZERO AFTER ROTATING
+ 11065					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 11066
+ 11067			005340		SN=SN+1
+ 11068		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 11069						IFE,
+ 11070			777767			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 11071	036560	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 11072	036561	561 10 0 00 777757 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 11073	036562	561 06 0 00 777767 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 11074	036563	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 11075	036564	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 11076	036565	004 10 0 00 005340 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11077	036566	321 11 0 00 036560 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11078
+ 11079					;TEST ROTC RIGHT ONE BIT POSITION
+ 11080					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 11081					;TEST MQ SHIFT LOGIC GATES
+ 11082					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 11083					;IS TESTED.
+ 11084					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 11085					;OTHER BIT IS A ZERO AFTER ROTATING
+ 11086					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 11087
+ 11088			005341		SN=SN+1
+ 11089		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 11090						IFE,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 24-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0236
+
+ 11091			777773			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 11092	036567	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 11093	036570	561 10 0 00 777767 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 11094	036571	561 06 0 00 777773 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 11095	036572	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 11096	036573	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 11097	036574	004 10 0 00 005341 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11098	036575	321 11 0 00 036567 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11099
+ 11100					;TEST ROTC RIGHT ONE BIT POSITION
+ 11101					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 11102					;TEST MQ SHIFT LOGIC GATES
+ 11103					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 11104					;IS TESTED.
+ 11105					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 11106					;OTHER BIT IS A ZERO AFTER ROTATING
+ 11107					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 11108
+ 11109			005342		SN=SN+1
+ 11110		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 11111						IFE,
+ 11112			777775			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 11113	036576	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 11114	036577	561 10 0 00 777773 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 11115	036600	561 06 0 00 777775 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 11116	036601	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 11117	036602	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 11118	036603	004 10 0 00 005342 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11119	036604	321 11 0 00 036576 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11120
+ 11121					;TEST ROTC RIGHT ONE BIT POSITION
+ 11122					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 11123					;TEST MQ SHIFT LOGIC GATES
+ 11124					;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+ 11125					;IS TESTED.
+ 11126					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 11127					;OTHER BIT IS A ZERO AFTER ROTATING
+ 11128					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 11129
+ 11130			005343		SN=SN+1
+ 11131		777777	777775			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 11132						IFE,
+ 11133			777776			YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+ 11134	036605	476 00 0 00 000007 		SETOM	AC		;INITIALIZE AC TO ALL CNES
+ 11135	036606	561 10 0 00 777775 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 11136	036607	561 06 0 00 777776 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 11137	036610	245 07 0 00 777777 		ROTC	AC,-1		;*ROTATE RIGHT ONE
+ 11138	036611	312 10 0 00 000006 		CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+ 11139	036612	004 10 0 00 005343 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11140	036613	321 11 0 00 036605 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11141
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 25
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0237
+
+ 11142					;TEST ROTC RIGHT TWO BIT POSITIONS USING ALL ZEROS
+ 11143					;TEST MQ SHIFT LOGIC GATES
+ 11144					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND
+ 11145					;AC+1 IS TESTED
+ 11146					;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+ 11147
+ 11148			000006			AC=6
+ 11149						SAVEAC	(1,1)^
+ 11150	036614	201 10 0 00 036614 		MOVEI	AC+2,.		;SAVE TEST PC
+ 11151	036615	202 10 0 00 030051 		MOVEM	AC+2,TESTPC
+ 11152	036616	201 10 0 00 000010 		MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+ 11153	036617	202 10 0 00 041763 		MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION^
+ 11154	036620				E5400:
+ 11155	036620	403 06 0 00 000007 		SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+ 11156	036621	402 00 0 00 000005 		SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+ 11157	036622	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11158	036623	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+ 11159	036624	004 07 0 00 005401 		ER4	AC+1,5401	;MQ GATING FAILED
+ 11160	036625	321 10 0 00 036620 		JUMPL	AC+2,E5400	;LOOP ON ERROR SWITCH
+ 11161
+ 11162					;TEST ROTC RIGHT TWO BIT POSITIONS USING ALL ONES
+ 11163					;TEST MQ SHIFT LOGIC GATES
+ 11164					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND
+ 11165					;AC+1 IS TESTED
+ 11166					;AN ERROR OCCURS IF C(AC+1) IS ZERO AFTER ROTATING
+ 11167
+ 11168	036626	477 06 0 00 000007 	E5500:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ONES
+ 11169	036627	476 00 0 00 000005 		SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+ 11170	036630	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11171	036631	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+ 11172	036632	004 07 0 00 005501 		ER4	AC+1,5501	;MQ GATING FAILED
+ 11173	036633	321 10 0 00 036626 		JUMPL	AC+2,E5500	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0238
+
+ 11174			005600		SN=5600
+ 11175			000000			ZZ=0
+ 11176
+ 11177							;TEST AC+1 LEFT HALF<
+ 11178					E5600:	REPEAT	^D18,<;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11179					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11180					;TEST MQ SHIFT LOGIC GATES
+ 11181					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11182					;IS TESTED.
+ 11183					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11184					;OTHER BIT IS A ONE AFTER ROTATING
+ 11185					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11186
+ 11187					SN=SN+1
+ 11188						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11189						IFE	ZZ,
+ 11190						YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11191						SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11192						MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11193						IFG	,<
+ 11194						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11195						IFE	,<
+ 11196						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11197						IFE	,<
+ 11198						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11199						ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11200						CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11201						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11202						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11203					>
+ 11204					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11205					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11206					;TEST MQ SHIFT LOGIC GATES
+ 11207					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11208					;IS TESTED.
+ 11209					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11210					;OTHER BIT IS A ONE AFTER ROTATING
+ 11211					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11212
+ 11213			005601		SN=SN+1
+ 11214			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11215			400000			IFE	ZZ,
+ 11216			100000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11217	036634	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11218	036635	205 07 0 00 400000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11219						IFG	,<
+ 11220	036636	205 05 0 00 100000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11221						IFE	,<
+ 11222						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11223						IFE	,<
+ 11224						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11225	036637	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11226	036640	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11227	036641	004 07 0 00 005601 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11228	036642	321 10 0 00 036634 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0239
+
+ 11229
+ 11230					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11231					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11232					;TEST MQ SHIFT LOGIC GATES
+ 11233					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11234					;IS TESTED.
+ 11235					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11236					;OTHER BIT IS A ONE AFTER ROTATING
+ 11237					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11238
+ 11239			005602		SN=SN+1
+ 11240			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11241						IFE	ZZ,
+ 11242			040000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11243	036643	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11244	036644	205 07 0 00 200000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11245						IFG	,<
+ 11246	036645	205 05 0 00 040000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11247						IFE	,<
+ 11248						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11249						IFE	,<
+ 11250						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11251	036646	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11252	036647	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11253	036650	004 07 0 00 005602 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11254	036651	321 10 0 00 036643 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11255
+ 11256					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11257					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11258					;TEST MQ SHIFT LOGIC GATES
+ 11259					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11260					;IS TESTED.
+ 11261					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11262					;OTHER BIT IS A ONE AFTER ROTATING
+ 11263					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11264
+ 11265			005603		SN=SN+1
+ 11266			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11267						IFE	ZZ,
+ 11268			020000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11269	036652	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11270	036653	205 07 0 00 100000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11271						IFG	,<
+ 11272	036654	205 05 0 00 020000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11273						IFE	,<
+ 11274						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11275						IFE	,<
+ 11276						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11277	036655	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11278	036656	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11279	036657	004 07 0 00 005603 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11280	036660	321 10 0 00 036652 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11281
+ 11282					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11283					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0240
+
+ 11284					;TEST MQ SHIFT LOGIC GATES
+ 11285					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11286					;IS TESTED.
+ 11287					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11288					;OTHER BIT IS A ONE AFTER ROTATING
+ 11289					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11290
+ 11291			005604		SN=SN+1
+ 11292			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11293						IFE	ZZ,
+ 11294			010000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11295	036661	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11296	036662	205 07 0 00 040000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11297						IFG	,<
+ 11298	036663	205 05 0 00 010000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11299						IFE	,<
+ 11300						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11301						IFE	,<
+ 11302						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11303	036664	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11304	036665	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11305	036666	004 07 0 00 005604 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11306	036667	321 10 0 00 036661 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11307
+ 11308					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11309					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11310					;TEST MQ SHIFT LOGIC GATES
+ 11311					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11312					;IS TESTED.
+ 11313					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11314					;OTHER BIT IS A ONE AFTER ROTATING
+ 11315					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11316
+ 11317			005605		SN=SN+1
+ 11318			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11319						IFE	ZZ,
+ 11320			004000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11321	036670	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11322	036671	205 07 0 00 020000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11323						IFG	,<
+ 11324	036672	205 05 0 00 004000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11325						IFE	,<
+ 11326						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11327						IFE	,<
+ 11328						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11329	036673	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11330	036674	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11331	036675	004 07 0 00 005605 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11332	036676	321 10 0 00 036670 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11333
+ 11334					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11335					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11336					;TEST MQ SHIFT LOGIC GATES
+ 11337					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11338					;IS TESTED.
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0241
+
+ 11339					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11340					;OTHER BIT IS A ONE AFTER ROTATING
+ 11341					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11342
+ 11343			005606		SN=SN+1
+ 11344			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11345						IFE	ZZ,
+ 11346			002000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11347	036677	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11348	036700	205 07 0 00 010000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11349						IFG	,<
+ 11350	036701	205 05 0 00 002000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11351						IFE	,<
+ 11352						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11353						IFE	,<
+ 11354						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11355	036702	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11356	036703	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11357	036704	004 07 0 00 005606 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11358	036705	321 10 0 00 036677 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11359
+ 11360					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11361					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11362					;TEST MQ SHIFT LOGIC GATES
+ 11363					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11364					;IS TESTED.
+ 11365					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11366					;OTHER BIT IS A ONE AFTER ROTATING
+ 11367					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11368
+ 11369			005607		SN=SN+1
+ 11370			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11371						IFE	ZZ,
+ 11372			001000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11373	036706	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11374	036707	205 07 0 00 004000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11375						IFG	,<
+ 11376	036710	205 05 0 00 001000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11377						IFE	,<
+ 11378						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11379						IFE	,<
+ 11380						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11381	036711	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11382	036712	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11383	036713	004 07 0 00 005607 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11384	036714	321 10 0 00 036706 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11385
+ 11386					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11387					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11388					;TEST MQ SHIFT LOGIC GATES
+ 11389					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11390					;IS TESTED.
+ 11391					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11392					;OTHER BIT IS A ONE AFTER ROTATING
+ 11393					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0242
+
+ 11394
+ 11395			005610		SN=SN+1
+ 11396			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11397						IFE	ZZ,
+ 11398			000400			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11399	036715	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11400	036716	205 07 0 00 002000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11401						IFG	,<
+ 11402	036717	205 05 0 00 000400 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11403						IFE	,<
+ 11404						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11405						IFE	,<
+ 11406						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11407	036720	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11408	036721	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11409	036722	004 07 0 00 005610 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11410	036723	321 10 0 00 036715 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11411
+ 11412					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11413					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11414					;TEST MQ SHIFT LOGIC GATES
+ 11415					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11416					;IS TESTED.
+ 11417					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11418					;OTHER BIT IS A ONE AFTER ROTATING
+ 11419					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11420
+ 11421			005611		SN=SN+1
+ 11422			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11423						IFE	ZZ,
+ 11424			000200			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11425	036724	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11426	036725	205 07 0 00 001000 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11427						IFG	,<
+ 11428	036726	205 05 0 00 000200 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11429						IFE	,<
+ 11430						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11431						IFE	,<
+ 11432						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11433	036727	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11434	036730	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11435	036731	004 07 0 00 005611 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11436	036732	321 10 0 00 036724 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11437
+ 11438					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11439					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11440					;TEST MQ SHIFT LOGIC GATES
+ 11441					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11442					;IS TESTED.
+ 11443					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11444					;OTHER BIT IS A ONE AFTER ROTATING
+ 11445					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11446
+ 11447			005612		SN=SN+1
+ 11448			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0243
+
+ 11449						IFE	ZZ,
+ 11450			000100			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11451	036733	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11452	036734	205 07 0 00 000400 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11453						IFG	,<
+ 11454	036735	205 05 0 00 000100 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11455						IFE	,<
+ 11456						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11457						IFE	,<
+ 11458						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11459	036736	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11460	036737	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11461	036740	004 07 0 00 005612 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11462	036741	321 10 0 00 036733 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11463
+ 11464					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11465					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11466					;TEST MQ SHIFT LOGIC GATES
+ 11467					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11468					;IS TESTED.
+ 11469					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11470					;OTHER BIT IS A ONE AFTER ROTATING
+ 11471					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11472
+ 11473			005613		SN=SN+1
+ 11474			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11475						IFE	ZZ,
+ 11476			000040			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11477	036742	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11478	036743	205 07 0 00 000200 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11479						IFG	,<
+ 11480	036744	205 05 0 00 000040 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11481						IFE	,<
+ 11482						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11483						IFE	,<
+ 11484						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11485	036745	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11486	036746	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11487	036747	004 07 0 00 005613 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11488	036750	321 10 0 00 036742 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11489
+ 11490					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11491					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11492					;TEST MQ SHIFT LOGIC GATES
+ 11493					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11494					;IS TESTED.
+ 11495					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11496					;OTHER BIT IS A ONE AFTER ROTATING
+ 11497					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11498
+ 11499			005614		SN=SN+1
+ 11500			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11501						IFE	ZZ,
+ 11502			000020			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11503	036751	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0244
+
+ 11504	036752	205 07 0 00 000100 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11505						IFG	,<
+ 11506	036753	205 05 0 00 000020 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11507						IFE	,<
+ 11508						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11509						IFE	,<
+ 11510						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11511	036754	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11512	036755	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11513	036756	004 07 0 00 005614 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11514	036757	321 10 0 00 036751 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11515
+ 11516					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11517					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11518					;TEST MQ SHIFT LOGIC GATES
+ 11519					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11520					;IS TESTED.
+ 11521					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11522					;OTHER BIT IS A ONE AFTER ROTATING
+ 11523					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11524
+ 11525			005615		SN=SN+1
+ 11526			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11527						IFE	ZZ,
+ 11528			000010			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11529	036760	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11530	036761	205 07 0 00 000040 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11531						IFG	,<
+ 11532	036762	205 05 0 00 000010 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11533						IFE	,<
+ 11534						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11535						IFE	,<
+ 11536						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11537	036763	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11538	036764	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11539	036765	004 07 0 00 005615 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11540	036766	321 10 0 00 036760 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11541
+ 11542					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11543					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11544					;TEST MQ SHIFT LOGIC GATES
+ 11545					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11546					;IS TESTED.
+ 11547					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11548					;OTHER BIT IS A ONE AFTER ROTATING
+ 11549					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11550
+ 11551			005616		SN=SN+1
+ 11552			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11553						IFE	ZZ,
+ 11554			000004			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11555	036767	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11556	036770	205 07 0 00 000020 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11557						IFG	,<
+ 11558	036771	205 05 0 00 000004 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0245
+
+ 11559						IFE	,<
+ 11560						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11561						IFE	,<
+ 11562						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11563	036772	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11564	036773	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11565	036774	004 07 0 00 005616 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11566	036775	321 10 0 00 036767 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11567
+ 11568					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11569					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11570					;TEST MQ SHIFT LOGIC GATES
+ 11571					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11572					;IS TESTED.
+ 11573					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11574					;OTHER BIT IS A ONE AFTER ROTATING
+ 11575					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11576
+ 11577			005617		SN=SN+1
+ 11578			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11579						IFE	ZZ,
+ 11580			000002			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11581	036776	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11582	036777	205 07 0 00 000010 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11583						IFG	,<
+ 11584	037000	205 05 0 00 000002 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11585						IFE	,<
+ 11586						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11587						IFE	,<
+ 11588						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11589	037001	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11590	037002	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11591	037003	004 07 0 00 005617 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11592	037004	321 10 0 00 036776 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11593
+ 11594					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11595					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11596					;TEST MQ SHIFT LOGIC GATES
+ 11597					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11598					;IS TESTED.
+ 11599					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11600					;OTHER BIT IS A ONE AFTER ROTATING
+ 11601					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11602
+ 11603			005620		SN=SN+1
+ 11604			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11605						IFE	ZZ,
+ 11606			000001			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11607	037005	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11608	037006	205 07 0 00 000004 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11609						IFG	,<
+ 11610	037007	205 05 0 00 000001 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11611						IFE	,<
+ 11612						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11613						IFE	,<
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0246
+
+ 11614						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11615	037010	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11616	037011	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11617	037012	004 07 0 00 005620 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11618	037013	321 10 0 00 037005 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11619
+ 11620					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11621					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11622					;TEST MQ SHIFT LOGIC GATES
+ 11623					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11624					;IS TESTED.
+ 11625					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11626					;OTHER BIT IS A ONE AFTER ROTATING
+ 11627					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11628
+ 11629			005621		SN=SN+1
+ 11630			000002			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11631						IFE	ZZ,
+ 11632			000000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11633	037014	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11634	037015	205 07 0 00 000002 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11635						IFG	,<
+ 11636						MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11637						IFE	,<
+ 11638	037016	201 05 0 00 400000 		MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11639						IFE	,<
+ 11640						MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11641	037017	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11642	037020	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11643	037021	004 07 0 00 005621 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11644	037022	321 10 0 00 037014 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11645
+ 11646					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11647					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11648					;TEST MQ SHIFT LOGIC GATES
+ 11649					;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11650					;IS TESTED.
+ 11651					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11652					;OTHER BIT IS A ONE AFTER ROTATING
+ 11653					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11654
+ 11655			005622		SN=SN+1
+ 11656			000001			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11657						IFE	ZZ,
+ 11658			000000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11659	037023	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11660	037024	205 07 0 00 000001 		MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+ 11661						IFG	,<
+ 11662	037025	205 05 0 00 000000 		MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+ 11663						IFE	,<
+ 11664						MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+ 11665						IFE	,<
+ 11666	037026	201 05 0 00 200000 		MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+ 11667	037027	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11668	037030	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0247
+
+ 11669	037031	004 07 0 00 005622 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11670	037032	321 10 0 00 037024 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11671
+ 11672					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0248
+
+ 11673			000000			ZZ=0
+ 11674
+ 11675							;TEST AC+1 RIGHT HALF<
+ 11676						REPEAT	^D16,<;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11677					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11678					;TEST MQ SHIFT LOGIC GATES
+ 11679					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11680					;IS TESTED.
+ 11681					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11682					;OTHER BIT IS A ONE AFTER ROTATING
+ 11683					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11684
+ 11685					SN=SN+1
+ 11686						ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11687						IFE	ZZ,
+ 11688						YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11689						SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11690						MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11691
+ 11692						MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11693						ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11694						CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11695						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11696						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11697					>
+ 11698					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11699					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11700					;TEST MQ SHIFT LOGIC GATES
+ 11701					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11702					;IS TESTED.
+ 11703					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11704					;OTHER BIT IS A ONE AFTER ROTATING
+ 11705					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11706
+ 11707			005623		SN=SN+1
+ 11708			000000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11709			400000			IFE	ZZ,
+ 11710			100000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11711	037033	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11712	037034	201 07 0 00 400000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11713
+ 11714	037035	201 05 0 00 100000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11715	037036	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11716	037037	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11717	037040	004 07 0 00 005623 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11718	037041	321 10 0 00 037033 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11719
+ 11720					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11721					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11722					;TEST MQ SHIFT LOGIC GATES
+ 11723					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11724					;IS TESTED.
+ 11725					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11726					;OTHER BIT IS A ONE AFTER ROTATING
+ 11727					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0249
+
+ 11728
+ 11729			005624		SN=SN+1
+ 11730			200000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11731						IFE	ZZ,
+ 11732			040000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11733	037042	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11734	037043	201 07 0 00 200000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11735
+ 11736	037044	201 05 0 00 040000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11737	037045	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11738	037046	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11739	037047	004 07 0 00 005624 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11740	037050	321 10 0 00 037042 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11741
+ 11742					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11743					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11744					;TEST MQ SHIFT LOGIC GATES
+ 11745					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11746					;IS TESTED.
+ 11747					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11748					;OTHER BIT IS A ONE AFTER ROTATING
+ 11749					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11750
+ 11751			005625		SN=SN+1
+ 11752			100000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11753						IFE	ZZ,
+ 11754			020000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11755	037051	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11756	037052	201 07 0 00 100000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11757
+ 11758	037053	201 05 0 00 020000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11759	037054	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11760	037055	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11761	037056	004 07 0 00 005625 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11762	037057	321 10 0 00 037051 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11763
+ 11764					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11765					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11766					;TEST MQ SHIFT LOGIC GATES
+ 11767					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11768					;IS TESTED.
+ 11769					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11770					;OTHER BIT IS A ONE AFTER ROTATING
+ 11771					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11772
+ 11773			005626		SN=SN+1
+ 11774			040000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11775						IFE	ZZ,
+ 11776			010000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11777	037060	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11778	037061	201 07 0 00 040000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11779
+ 11780	037062	201 05 0 00 010000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11781	037063	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11782	037064	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0250
+
+ 11783	037065	004 07 0 00 005626 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11784	037066	321 10 0 00 037060 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11785
+ 11786					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11787					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11788					;TEST MQ SHIFT LOGIC GATES
+ 11789					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11790					;IS TESTED.
+ 11791					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11792					;OTHER BIT IS A ONE AFTER ROTATING
+ 11793					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11794
+ 11795			005627		SN=SN+1
+ 11796			020000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11797						IFE	ZZ,
+ 11798			004000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11799	037067	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11800	037070	201 07 0 00 020000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11801
+ 11802	037071	201 05 0 00 004000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11803	037072	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11804	037073	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11805	037074	004 07 0 00 005627 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11806	037075	321 10 0 00 037067 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11807
+ 11808					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11809					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11810					;TEST MQ SHIFT LOGIC GATES
+ 11811					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11812					;IS TESTED.
+ 11813					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11814					;OTHER BIT IS A ONE AFTER ROTATING
+ 11815					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11816
+ 11817			005630		SN=SN+1
+ 11818			010000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11819						IFE	ZZ,
+ 11820			002000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11821	037076	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11822	037077	201 07 0 00 010000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11823
+ 11824	037100	201 05 0 00 002000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11825	037101	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11826	037102	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11827	037103	004 07 0 00 005630 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11828	037104	321 10 0 00 037076 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11829
+ 11830					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11831					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11832					;TEST MQ SHIFT LOGIC GATES
+ 11833					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11834					;IS TESTED.
+ 11835					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11836					;OTHER BIT IS A ONE AFTER ROTATING
+ 11837					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0251
+
+ 11838
+ 11839			005631		SN=SN+1
+ 11840			004000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11841						IFE	ZZ,
+ 11842			001000			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11843	037105	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11844	037106	201 07 0 00 004000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11845
+ 11846	037107	201 05 0 00 001000 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11847	037110	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11848	037111	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11849	037112	004 07 0 00 005631 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11850	037113	321 10 0 00 037105 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11851
+ 11852					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11853					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11854					;TEST MQ SHIFT LOGIC GATES
+ 11855					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11856					;IS TESTED.
+ 11857					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11858					;OTHER BIT IS A ONE AFTER ROTATING
+ 11859					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11860
+ 11861			005632		SN=SN+1
+ 11862			002000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11863						IFE	ZZ,
+ 11864			000400			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11865	037114	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11866	037115	201 07 0 00 002000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11867
+ 11868	037116	201 05 0 00 000400 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11869	037117	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11870	037120	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11871	037121	004 07 0 00 005632 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11872	037122	321 10 0 00 037114 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11873
+ 11874					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11875					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11876					;TEST MQ SHIFT LOGIC GATES
+ 11877					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11878					;IS TESTED.
+ 11879					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11880					;OTHER BIT IS A ONE AFTER ROTATING
+ 11881					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11882
+ 11883			005633		SN=SN+1
+ 11884			001000			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11885						IFE	ZZ,
+ 11886			000200			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11887	037123	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11888	037124	201 07 0 00 001000 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11889
+ 11890	037125	201 05 0 00 000200 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11891	037126	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11892	037127	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0252
+
+ 11893	037130	004 07 0 00 005633 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11894	037131	321 10 0 00 037123 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11895
+ 11896					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11897					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11898					;TEST MQ SHIFT LOGIC GATES
+ 11899					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11900					;IS TESTED.
+ 11901					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11902					;OTHER BIT IS A ONE AFTER ROTATING
+ 11903					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11904
+ 11905			005634		SN=SN+1
+ 11906			000400			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11907						IFE	ZZ,
+ 11908			000100			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11909	037132	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11910	037133	201 07 0 00 000400 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11911
+ 11912	037134	201 05 0 00 000100 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11913	037135	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11914	037136	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11915	037137	004 07 0 00 005634 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11916	037140	321 10 0 00 037132 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11917
+ 11918					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11919					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11920					;TEST MQ SHIFT LOGIC GATES
+ 11921					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11922					;IS TESTED.
+ 11923					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11924					;OTHER BIT IS A ONE AFTER ROTATING
+ 11925					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11926
+ 11927			005635		SN=SN+1
+ 11928			000200			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11929						IFE	ZZ,
+ 11930			000040			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11931	037141	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11932	037142	201 07 0 00 000200 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11933
+ 11934	037143	201 05 0 00 000040 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11935	037144	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11936	037145	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11937	037146	004 07 0 00 005635 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11938	037147	321 10 0 00 037141 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11939
+ 11940					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11941					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11942					;TEST MQ SHIFT LOGIC GATES
+ 11943					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11944					;IS TESTED.
+ 11945					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11946					;OTHER BIT IS A ONE AFTER ROTATING
+ 11947					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0253
+
+ 11948
+ 11949			005636		SN=SN+1
+ 11950			000100			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11951						IFE	ZZ,
+ 11952			000020			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11953	037150	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11954	037151	201 07 0 00 000100 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11955
+ 11956	037152	201 05 0 00 000020 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11957	037153	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11958	037154	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11959	037155	004 07 0 00 005636 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11960	037156	321 10 0 00 037150 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11961
+ 11962					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11963					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11964					;TEST MQ SHIFT LOGIC GATES
+ 11965					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11966					;IS TESTED.
+ 11967					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11968					;OTHER BIT IS A ONE AFTER ROTATING
+ 11969					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11970
+ 11971			005637		SN=SN+1
+ 11972			000040			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11973						IFE	ZZ,
+ 11974			000010			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11975	037157	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11976	037160	201 07 0 00 000040 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11977
+ 11978	037161	201 05 0 00 000010 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 11979	037162	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 11980	037163	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 11981	037164	004 07 0 00 005637 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 11982	037165	321 10 0 00 037157 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 11983
+ 11984					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 11985					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 11986					;TEST MQ SHIFT LOGIC GATES
+ 11987					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 11988					;IS TESTED.
+ 11989					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 11990					;OTHER BIT IS A ONE AFTER ROTATING
+ 11991					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 11992
+ 11993			005640		SN=SN+1
+ 11994			000020			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 11995						IFE	ZZ,
+ 11996			000004			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 11997	037166	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 11998	037167	201 07 0 00 000020 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 11999
+ 12000	037170	201 05 0 00 000004 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 12001	037171	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12002	037172	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 26-16
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0254
+
+ 12003	037173	004 07 0 00 005640 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12004	037174	321 10 0 00 037166 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12005
+ 12006					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12007					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 12008					;TEST MQ SHIFT LOGIC GATES
+ 12009					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12010					;IS TESTED.
+ 12011					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 12012					;OTHER BIT IS A ONE AFTER ROTATING
+ 12013					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 12014
+ 12015			005641		SN=SN+1
+ 12016			000010			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 12017						IFE	ZZ,
+ 12018			000002			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 12019	037175	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 12020	037176	201 07 0 00 000010 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 12021
+ 12022	037177	201 05 0 00 000002 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 12023	037200	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12024	037201	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 12025	037202	004 07 0 00 005641 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12026	037203	321 10 0 00 037175 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12027
+ 12028					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12029					;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+ 12030					;TEST MQ SHIFT LOGIC GATES
+ 12031					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12032					;IS TESTED.
+ 12033					;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+ 12034					;OTHER BIT IS A ONE AFTER ROTATING
+ 12035					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+ 12036
+ 12037			005642		SN=SN+1
+ 12038			000004			ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+ 12039						IFE	ZZ,
+ 12040			000001			YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+ 12041	037204	400 06 0 00 000000 		SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+ 12042	037205	201 07 0 00 000004 		MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+ 12043
+ 12044	037206	201 05 0 00 000001 		MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+ 12045	037207	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12046	037210	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+ 12047	037211	004 07 0 00 005642 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12048	037212	321 10 0 00 037204 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12049
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0255
+
+ 12050			005700		SN=5700
+ 12051			000001			ZZ=1
+ 12052
+ 12053					 		;TEST AC+1 LEFT HALF <
+ 12054					E5700:	REPEAT ^D18,<;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12055					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12056					;TEST MQ SHIFT LOGIC GATES
+ 12057					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12058					;IS TESTED.
+ 12059					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12060					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12061					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12062
+ 12063					SN=SN+1
+ 12064
+ 12065						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12066						IFE,
+ 12067						YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12068						SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12069						HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12070						IFG	&777777,<
+ 12071						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12072						IFE	&777777,<
+ 12073						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12074						IFE	&777777,<
+ 12075						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12076						ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12077						CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12078						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12079						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12080					>
+ 12081					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12082					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12083					;TEST MQ SHIFT LOGIC GATES
+ 12084					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12085					;IS TESTED.
+ 12086					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12087					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12088					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12089
+ 12090			005701		SN=SN+1
+ 12091
+ 12092			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12093		777777	377777			IFE,
+ 12094			677777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12095	037213	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12096	037214	525 07 0 00 377777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12097						IFG	&777777,<
+ 12098	037215	525 05 0 00 677777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12099						IFE	&777777,<
+ 12100						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12101						IFE	&777777,<
+ 12102						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12103	037216	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12104	037217	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0256
+
+ 12105	037220	004 07 0 00 005701 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12106	037221	321 10 0 00 037213 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12107
+ 12108					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12109					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12110					;TEST MQ SHIFT LOGIC GATES
+ 12111					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12112					;IS TESTED.
+ 12113					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12114					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12115					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12116
+ 12117			005702		SN=SN+1
+ 12118
+ 12119		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12120						IFE,
+ 12121			737777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12122	037222	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12123	037223	525 07 0 00 577777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12124						IFG	&777777,<
+ 12125	037224	525 05 0 00 737777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12126						IFE	&777777,<
+ 12127						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12128						IFE	&777777,<
+ 12129						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12130	037225	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12131	037226	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12132	037227	004 07 0 00 005702 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12133	037230	321 10 0 00 037222 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12134
+ 12135					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12136					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12137					;TEST MQ SHIFT LOGIC GATES
+ 12138					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12139					;IS TESTED.
+ 12140					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12141					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12142					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12143
+ 12144			005703		SN=SN+1
+ 12145
+ 12146		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12147						IFE,
+ 12148			757777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12149	037231	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12150	037232	525 07 0 00 677777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12151						IFG	&777777,<
+ 12152	037233	525 05 0 00 757777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12153						IFE	&777777,<
+ 12154						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12155						IFE	&777777,<
+ 12156						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12157	037234	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12158	037235	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12159	037236	004 07 0 00 005703 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0257
+
+ 12160	037237	321 10 0 00 037231 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12161
+ 12162					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12163					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12164					;TEST MQ SHIFT LOGIC GATES
+ 12165					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12166					;IS TESTED.
+ 12167					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12168					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12169					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12170
+ 12171			005704		SN=SN+1
+ 12172
+ 12173		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12174						IFE,
+ 12175			767777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12176	037240	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12177	037241	525 07 0 00 737777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12178						IFG	&777777,<
+ 12179	037242	525 05 0 00 767777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12180						IFE	&777777,<
+ 12181						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12182						IFE	&777777,<
+ 12183						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12184	037243	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12185	037244	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12186	037245	004 07 0 00 005704 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12187	037246	321 10 0 00 037240 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12188
+ 12189					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12190					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12191					;TEST MQ SHIFT LOGIC GATES
+ 12192					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12193					;IS TESTED.
+ 12194					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12195					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12196					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12197
+ 12198			005705		SN=SN+1
+ 12199
+ 12200		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12201						IFE,
+ 12202			773777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12203	037247	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12204	037250	525 07 0 00 757777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12205						IFG	&777777,<
+ 12206	037251	525 05 0 00 773777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12207						IFE	&777777,<
+ 12208						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12209						IFE	&777777,<
+ 12210						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12211	037252	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12212	037253	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12213	037254	004 07 0 00 005705 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12214	037255	321 10 0 00 037247 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0258
+
+ 12215
+ 12216					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12217					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12218					;TEST MQ SHIFT LOGIC GATES
+ 12219					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12220					;IS TESTED.
+ 12221					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12222					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12223					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12224
+ 12225			005706		SN=SN+1
+ 12226
+ 12227		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12228						IFE,
+ 12229			775777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12230	037256	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12231	037257	525 07 0 00 767777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12232						IFG	&777777,<
+ 12233	037260	525 05 0 00 775777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12234						IFE	&777777,<
+ 12235						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12236						IFE	&777777,<
+ 12237						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12238	037261	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12239	037262	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12240	037263	004 07 0 00 005706 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12241	037264	321 10 0 00 037256 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12242
+ 12243					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12244					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12245					;TEST MQ SHIFT LOGIC GATES
+ 12246					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12247					;IS TESTED.
+ 12248					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12249					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12250					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12251
+ 12252			005707		SN=SN+1
+ 12253
+ 12254		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12255						IFE,
+ 12256			776777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12257	037265	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12258	037266	525 07 0 00 773777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12259						IFG	&777777,<
+ 12260	037267	525 05 0 00 776777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12261						IFE	&777777,<
+ 12262						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12263						IFE	&777777,<
+ 12264						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12265	037270	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12266	037271	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12267	037272	004 07 0 00 005707 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12268	037273	321 10 0 00 037265 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12269
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-4
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0259
+
+ 12270					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12271					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12272					;TEST MQ SHIFT LOGIC GATES
+ 12273					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12274					;IS TESTED.
+ 12275					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12276					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12277					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12278
+ 12279			005710		SN=SN+1
+ 12280
+ 12281		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12282						IFE,
+ 12283			777377			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12284	037274	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12285	037275	525 07 0 00 775777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12286						IFG	&777777,<
+ 12287	037276	525 05 0 00 777377 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12288						IFE	&777777,<
+ 12289						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12290						IFE	&777777,<
+ 12291						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12292	037277	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12293	037300	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12294	037301	004 07 0 00 005710 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12295	037302	321 10 0 00 037274 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12296
+ 12297					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12298					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12299					;TEST MQ SHIFT LOGIC GATES
+ 12300					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12301					;IS TESTED.
+ 12302					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12303					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12304					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12305
+ 12306			005711		SN=SN+1
+ 12307
+ 12308		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12309						IFE,
+ 12310			777577			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12311	037303	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12312	037304	525 07 0 00 776777 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12313						IFG	&777777,<
+ 12314	037305	525 05 0 00 777577 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12315						IFE	&777777,<
+ 12316						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12317						IFE	&777777,<
+ 12318						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12319	037306	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12320	037307	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12321	037310	004 07 0 00 005711 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12322	037311	321 10 0 00 037303 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12323
+ 12324					;TEST ROTC RIGHT TWO BIT POSITIONS
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-5
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0260
+
+ 12325					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12326					;TEST MQ SHIFT LOGIC GATES
+ 12327					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12328					;IS TESTED.
+ 12329					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12330					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12331					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12332
+ 12333			005712		SN=SN+1
+ 12334
+ 12335		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12336						IFE,
+ 12337			777677			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12338	037312	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12339	037313	525 07 0 00 777377 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12340						IFG	&777777,<
+ 12341	037314	525 05 0 00 777677 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12342						IFE	&777777,<
+ 12343						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12344						IFE	&777777,<
+ 12345						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12346	037315	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12347	037316	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12348	037317	004 07 0 00 005712 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12349	037320	321 10 0 00 037312 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12350
+ 12351					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12352					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12353					;TEST MQ SHIFT LOGIC GATES
+ 12354					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12355					;IS TESTED.
+ 12356					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12357					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12358					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12359
+ 12360			005713		SN=SN+1
+ 12361
+ 12362		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12363						IFE,
+ 12364			777737			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12365	037321	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12366	037322	525 07 0 00 777577 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12367						IFG	&777777,<
+ 12368	037323	525 05 0 00 777737 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12369						IFE	&777777,<
+ 12370						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12371						IFE	&777777,<
+ 12372						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12373	037324	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12374	037325	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12375	037326	004 07 0 00 005713 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12376	037327	321 10 0 00 037321 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12377
+ 12378					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12379					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-6
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0261
+
+ 12380					;TEST MQ SHIFT LOGIC GATES
+ 12381					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12382					;IS TESTED.
+ 12383					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12384					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12385					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12386
+ 12387			005714		SN=SN+1
+ 12388
+ 12389		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12390						IFE,
+ 12391			777757			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12392	037330	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12393	037331	525 07 0 00 777677 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12394						IFG	&777777,<
+ 12395	037332	525 05 0 00 777757 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12396						IFE	&777777,<
+ 12397						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12398						IFE	&777777,<
+ 12399						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12400	037333	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12401	037334	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12402	037335	004 07 0 00 005714 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12403	037336	321 10 0 00 037330 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12404
+ 12405					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12406					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12407					;TEST MQ SHIFT LOGIC GATES
+ 12408					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12409					;IS TESTED.
+ 12410					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12411					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12412					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12413
+ 12414			005715		SN=SN+1
+ 12415
+ 12416		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12417						IFE,
+ 12418			777767			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12419	037337	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12420	037340	525 07 0 00 777737 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12421						IFG	&777777,<
+ 12422	037341	525 05 0 00 777767 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12423						IFE	&777777,<
+ 12424						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12425						IFE	&777777,<
+ 12426						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12427	037342	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12428	037343	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12429	037344	004 07 0 00 005715 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12430	037345	321 10 0 00 037337 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12431
+ 12432					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12433					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12434					;TEST MQ SHIFT LOGIC GATES
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-7
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0262
+
+ 12435					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12436					;IS TESTED.
+ 12437					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12438					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12439					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12440
+ 12441			005716		SN=SN+1
+ 12442
+ 12443		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12444						IFE,
+ 12445			777773			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12446	037346	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12447	037347	525 07 0 00 777757 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12448						IFG	&777777,<
+ 12449	037350	525 05 0 00 777773 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12450						IFE	&777777,<
+ 12451						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12452						IFE	&777777,<
+ 12453						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12454	037351	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12455	037352	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12456	037353	004 07 0 00 005716 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12457	037354	321 10 0 00 037346 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12458
+ 12459					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12460					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12461					;TEST MQ SHIFT LOGIC GATES
+ 12462					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12463					;IS TESTED.
+ 12464					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12465					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12466					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12467
+ 12468			005717		SN=SN+1
+ 12469
+ 12470		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12471						IFE,
+ 12472			777775			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12473	037355	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12474	037356	525 07 0 00 777767 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12475						IFG	&777777,<
+ 12476	037357	525 05 0 00 777775 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12477						IFE	&777777,<
+ 12478						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12479						IFE	&777777,<
+ 12480						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12481	037360	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12482	037361	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12483	037362	004 07 0 00 005717 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12484	037363	321 10 0 00 037355 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12485
+ 12486					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12487					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12488					;TEST MQ SHIFT LOGIC GATES
+ 12489					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-8
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0263
+
+ 12490					;IS TESTED.
+ 12491					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12492					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12493					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12494
+ 12495			005720		SN=SN+1
+ 12496
+ 12497		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12498						IFE,
+ 12499			777776			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12500	037364	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12501	037365	525 07 0 00 777773 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12502						IFG	&777777,<
+ 12503	037366	525 05 0 00 777776 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12504						IFE	&777777,<
+ 12505						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12506						IFE	&777777,<
+ 12507						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12508	037367	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12509	037370	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12510	037371	004 07 0 00 005720 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12511	037372	321 10 0 00 037364 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12512
+ 12513					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12514					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12515					;TEST MQ SHIFT LOGIC GATES
+ 12516					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12517					;IS TESTED.
+ 12518					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12519					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12520					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12521
+ 12522			005721		SN=SN+1
+ 12523
+ 12524		777777	777775			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12525						IFE,
+ 12526			777777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12527	037373	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12528	037374	525 07 0 00 777775 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12529						IFG	&777777,<
+ 12530						HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12531						IFE	&777777,<
+ 12532	037375	561 05 0 00 377777 		HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12533						IFE	&777777,<
+ 12534						HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12535	037376	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12536	037377	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12537	037400	004 07 0 00 005721 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12538	037401	321 10 0 00 037373 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12539
+ 12540					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12541					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12542					;TEST MQ SHIFT LOGIC GATES
+ 12543					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12544					;IS TESTED.
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-9
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0264
+
+ 12545					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12546					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12547					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12548
+ 12549			005722		SN=SN+1
+ 12550
+ 12551		777777	777776			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12552						IFE,
+ 12553			777777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12554	037402	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12555	037403	525 07 0 00 777776 		HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+ 12556						IFG	&777777,<
+ 12557	037404	525 05 0 00 777777 		HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+ 12558						IFE	&777777,<
+ 12559						HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+ 12560						IFE	&777777,<
+ 12561	037405	561 05 0 00 577777 		HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+ 12562	037406	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12563	037407	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12564	037410	004 07 0 00 005722 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12565	037411	321 10 0 00 037403 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12566
+ 12567					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-10
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0265
+
+ 12568			000001			ZZ=1
+ 12569
+ 12570							;TEST AC+1 RIGHT HALF<
+ 12571						REPEAT ^D16,<;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12572					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12573					;TEST MQ SHIFT LOGIC GATES
+ 12574					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12575					;IS TESTED.
+ 12576					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12577					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12578					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12579
+ 12580					SN=SN+1
+ 12581						ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12582						IFE	,
+ 12583						YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12584						SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12585						HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12586						HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12587						ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12588						CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12589						ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12590						JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12591					>
+ 12592					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12593					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12594					;TEST MQ SHIFT LOGIC GATES
+ 12595					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12596					;IS TESTED.
+ 12597					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12598					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12599					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12600
+ 12601			005723		SN=SN+1
+ 12602			000000			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12603		777777	377777			IFE	,
+ 12604			677777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12605	037412	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12606	037413	561 07 0 00 377777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12607	037414	561 05 0 00 677777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12608	037415	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12609	037416	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12610	037417	004 07 0 00 005723 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12611	037420	321 10 0 00 037412 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12612
+ 12613					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12614					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12615					;TEST MQ SHIFT LOGIC GATES
+ 12616					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12617					;IS TESTED.
+ 12618					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12619					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12620					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12621
+ 12622			005724		SN=SN+1
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-11
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0266
+
+ 12623		777777	577777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12624						IFE	,
+ 12625			737777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12626	037421	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12627	037422	561 07 0 00 577777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12628	037423	561 05 0 00 737777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12629	037424	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12630	037425	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12631	037426	004 07 0 00 005724 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12632	037427	321 10 0 00 037421 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12633
+ 12634					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12635					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12636					;TEST MQ SHIFT LOGIC GATES
+ 12637					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12638					;IS TESTED.
+ 12639					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12640					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12641					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12642
+ 12643			005725		SN=SN+1
+ 12644		777777	677777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12645						IFE	,
+ 12646			757777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12647	037430	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12648	037431	561 07 0 00 677777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12649	037432	561 05 0 00 757777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12650	037433	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12651	037434	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12652	037435	004 07 0 00 005725 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12653	037436	321 10 0 00 037430 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12654
+ 12655					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12656					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12657					;TEST MQ SHIFT LOGIC GATES
+ 12658					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12659					;IS TESTED.
+ 12660					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12661					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12662					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12663
+ 12664			005726		SN=SN+1
+ 12665		777777	737777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12666						IFE	,
+ 12667			767777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12668	037437	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12669	037440	561 07 0 00 737777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12670	037441	561 05 0 00 767777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12671	037442	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12672	037443	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12673	037444	004 07 0 00 005726 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12674	037445	321 10 0 00 037437 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12675
+ 12676					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12677					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-12
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0267
+
+ 12678					;TEST MQ SHIFT LOGIC GATES
+ 12679					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12680					;IS TESTED.
+ 12681					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12682					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12683					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12684
+ 12685			005727		SN=SN+1
+ 12686		777777	757777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12687						IFE	,
+ 12688			773777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12689	037446	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12690	037447	561 07 0 00 757777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12691	037450	561 05 0 00 773777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12692	037451	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12693	037452	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12694	037453	004 07 0 00 005727 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12695	037454	321 10 0 00 037446 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12696
+ 12697					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12698					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12699					;TEST MQ SHIFT LOGIC GATES
+ 12700					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12701					;IS TESTED.
+ 12702					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12703					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12704					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12705
+ 12706			005730		SN=SN+1
+ 12707		777777	767777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12708						IFE	,
+ 12709			775777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12710	037455	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12711	037456	561 07 0 00 767777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12712	037457	561 05 0 00 775777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12713	037460	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12714	037461	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12715	037462	004 07 0 00 005730 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12716	037463	321 10 0 00 037455 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12717
+ 12718					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12719					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12720					;TEST MQ SHIFT LOGIC GATES
+ 12721					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12722					;IS TESTED.
+ 12723					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12724					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12725					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12726
+ 12727			005731		SN=SN+1
+ 12728		777777	773777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12729						IFE	,
+ 12730			776777			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12731	037464	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12732	037465	561 07 0 00 773777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-13
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0268
+
+ 12733	037466	561 05 0 00 776777 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12734	037467	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12735	037470	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12736	037471	004 07 0 00 005731 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12737	037472	321 10 0 00 037464 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12738
+ 12739					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12740					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12741					;TEST MQ SHIFT LOGIC GATES
+ 12742					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12743					;IS TESTED.
+ 12744					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12745					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12746					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12747
+ 12748			005732		SN=SN+1
+ 12749		777777	775777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12750						IFE	,
+ 12751			777377			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12752	037473	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12753	037474	561 07 0 00 775777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12754	037475	561 05 0 00 777377 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12755	037476	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12756	037477	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12757	037500	004 07 0 00 005732 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12758	037501	321 10 0 00 037473 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12759
+ 12760					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12761					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12762					;TEST MQ SHIFT LOGIC GATES
+ 12763					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12764					;IS TESTED.
+ 12765					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12766					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12767					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12768
+ 12769			005733		SN=SN+1
+ 12770		777777	776777			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12771						IFE	,
+ 12772			777577			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12773	037502	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12774	037503	561 07 0 00 776777 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12775	037504	561 05 0 00 777577 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12776	037505	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12777	037506	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12778	037507	004 07 0 00 005733 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12779	037510	321 10 0 00 037502 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12780
+ 12781					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12782					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12783					;TEST MQ SHIFT LOGIC GATES
+ 12784					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12785					;IS TESTED.
+ 12786					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12787					;OTHER BIT IS A ZERO AFTER ROTATING
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-14
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0269
+
+ 12788					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12789
+ 12790			005734		SN=SN+1
+ 12791		777777	777377			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12792						IFE	,
+ 12793			777677			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12794	037511	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12795	037512	561 07 0 00 777377 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12796	037513	561 05 0 00 777677 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12797	037514	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12798	037515	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12799	037516	004 07 0 00 005734 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12800	037517	321 10 0 00 037511 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12801
+ 12802					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12803					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12804					;TEST MQ SHIFT LOGIC GATES
+ 12805					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12806					;IS TESTED.
+ 12807					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12808					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12809					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12810
+ 12811			005735		SN=SN+1
+ 12812		777777	777577			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12813						IFE	,
+ 12814			777737			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12815	037520	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12816	037521	561 07 0 00 777577 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12817	037522	561 05 0 00 777737 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12818	037523	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12819	037524	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12820	037525	004 07 0 00 005735 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12821	037526	321 10 0 00 037520 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12822
+ 12823					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12824					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12825					;TEST MQ SHIFT LOGIC GATES
+ 12826					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12827					;IS TESTED.
+ 12828					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12829					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12830					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12831
+ 12832			005736		SN=SN+1
+ 12833		777777	777677			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12834						IFE	,
+ 12835			777757			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12836	037527	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12837	037530	561 07 0 00 777677 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12838	037531	561 05 0 00 777757 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12839	037532	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12840	037533	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12841	037534	004 07 0 00 005736 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12842	037535	321 10 0 00 037527 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-15
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0270
+
+ 12843
+ 12844					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12845					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12846					;TEST MQ SHIFT LOGIC GATES
+ 12847					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12848					;IS TESTED.
+ 12849					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12850					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12851					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12852
+ 12853			005737		SN=SN+1
+ 12854		777777	777737			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12855						IFE	,
+ 12856			777767			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12857	037536	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12858	037537	561 07 0 00 777737 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12859	037540	561 05 0 00 777767 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12860	037541	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12861	037542	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12862	037543	004 07 0 00 005737 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12863	037544	321 10 0 00 037536 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12864
+ 12865					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12866					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12867					;TEST MQ SHIFT LOGIC GATES
+ 12868					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12869					;IS TESTED.
+ 12870					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12871					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12872					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12873
+ 12874			005740		SN=SN+1
+ 12875		777777	777757			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12876						IFE	,
+ 12877			777773			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12878	037545	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12879	037546	561 07 0 00 777757 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12880	037547	561 05 0 00 777773 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12881	037550	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12882	037551	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12883	037552	004 07 0 00 005740 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12884	037553	321 10 0 00 037545 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12885
+ 12886					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12887					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12888					;TEST MQ SHIFT LOGIC GATES
+ 12889					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12890					;IS TESTED.
+ 12891					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12892					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12893					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12894
+ 12895			005741		SN=SN+1
+ 12896		777777	777767			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12897						IFE	,
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 27-16
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES                                     SEQ 0271
+
+ 12898			777775			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12899	037554	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12900	037555	561 07 0 00 777767 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12901	037556	561 05 0 00 777775 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12902	037557	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12903	037560	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12904	037561	004 07 0 00 005741 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12905	037562	321 10 0 00 037554 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12906
+ 12907					;TEST ROTC RIGHT TWO BIT POSITIONS
+ 12908					;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+ 12909					;TEST MQ SHIFT LOGIC GATES
+ 12910					;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+ 12911					;IS TESTED.
+ 12912					;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+ 12913					;OTHER BIT IS A ZERO AFTER ROTATING
+ 12914					;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+ 12915
+ 12916			005742		SN=SN+1
+ 12917		777777	777773			ZZ=/2		;SELECTED BIT BEFORE ROTATION
+ 12918						IFE	,
+ 12919			777776			YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+ 12920	037563	476 00 0 00 000006 		SETOM	AC		;INITIALIZE AC TO ALL ONES
+ 12921	037564	561 07 0 00 777773 		HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+ 12922	037565	561 05 0 00 777776 		HRROI	AC-1,YY		;SETUP FOR COMPARISON
+ 12923	037566	245 06 0 00 777776 		ROTC	AC,-2		;*ROTATE RIGHT TWO
+ 12924	037567	312 07 0 00 000005 		CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+ 12925	037570	004 07 0 00 005742 		ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+ 12926	037571	321 10 0 00 037563 		JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+ 12927
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 28
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0272
+
+ 12928					SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)
+ 12929
+ 12930					;END CONNECTIONS-ROT
+ 12931					;TEST AR END BIT INPUT GATES
+ 12932					;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+ 12933					;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+ 12934					;AC IS ROTATED LEFT/RIGHT
+ 12935					;AND END BITS TESTED
+ 12936
+ 12937					;SHIFT CONNECTIONS TEST
+ 12938					;TEST AR35 SHLT INP-ONE'S - ROT AC,1
+ 12939					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 12940						SR1	(60,400000,0,0,1,ROT,1)^
+ 12941					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] 1 BIT
+ 12942					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,1]
+ 12943					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 12944
+ 12945	037572	200 06 0 00 041624 	E6000:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 12946	037573	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 12947	037574	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 12948	037575	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 12949	037576	003 06 0 00 006001 		ER3	AC,6001			;RESULT IN AC IS INCORRECT
+ 12950	037577	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 12951	037600	004 07 0 00 006001 		ER4	AC+1,6001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 12952	037601	321 10 0 00 037572 		JUMPL	AC+2,E6000		;LOOP ON ERROR SWITCH^
+ 12953
+ 12954					;SHIFT CONNECTIONS TEST
+ 12955					;TEST AR35 SHLT INP-ZERO'S - ROT AC,1
+ 12956					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 12957						SR1	(61,377777,-1,-1,-2,ROT,1)^
+ 12958					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] 1 BIT
+ 12959					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-2]
+ 12960					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 12961
+ 12962	037602	200 06 0 00 041626 	E6100:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 12963	037603	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 12964	037604	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 12965	037605	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 12966	037606	003 06 0 00 006101 		ER3	AC,6101			;RESULT IN AC IS INCORRECT
+ 12967	037607	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 12968	037610	004 07 0 00 006101 		ER4	AC+1,6101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 12969	037611	321 10 0 00 037602 		JUMPL	AC+2,E6100		;LOOP ON ERROR SWITCH^
+ 12970
+ 12971					;SHIFT CONNECTIONS TEST
+ 12972					;TEST AR34 SHLT INP-ONE'S - ROT AC,1
+ 12973					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 12974						SR1	(62,0,1,0,2,ROT,1)^
+ 12975					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,1] 1 BIT
+ 12976					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 12977					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 12978
+ 12979	037612	200 06 0 00 041625 	E6200:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 12980	037613	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 12981	037614	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 12982	037615	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 28-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0273
+
+ 12983	037616	003 06 0 00 006201 		ER3	AC,6201			;RESULT IN AC IS INCORRECT
+ 12984	037617	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 12985	037620	004 07 0 00 006201 		ER4	AC+1,6201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 12986	037621	321 10 0 00 037612 		JUMPL	AC+2,E6200		;LOOP ON ERROR SWITCH^
+ 12987					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 28-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0274
+
+ 12988					;SHIFT CONNECTIONS TEST
+ 12989					;TEST AR34 SHLT INP-ZERO'S - ROT AC,1
+ 12990					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 12991						SR1	(63,-1,-2,-1,-3,ROT,1)^
+ 12992					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-2] 1 BIT
+ 12993					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-3]
+ 12994					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 12995
+ 12996	037622	200 06 0 00 041627 	E6300:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 12997	037623	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 12998	037624	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 12999	037625	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 13000	037626	003 06 0 00 006301 		ER3	AC,6301			;RESULT IN AC IS INCORRECT
+ 13001	037627	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13002	037630	004 07 0 00 006301 		ER4	AC+1,6301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13003	037631	321 10 0 00 037622 		JUMPL	AC+2,E6300		;LOOP ON ERROR SWITCH^
+ 13004
+ 13005					;SHIFT CONNECTIONS TEST
+ 13006					;TEST AR1 SHLT INP-ONE'S - ROT AC,1
+ 13007					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 13008						SR1	(64,100000,0,200000,0,ROT,1)^
+ 13009					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 100000,0] 1 BIT
+ 13010					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 200000,0]
+ 13011					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13012
+ 13013	037632	200 06 0 00 041631 	E6400:	MOVE	AC,[XWD 100000,0]	;INITIALIZE AC
+ 13014	037633	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13015	037634	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13016	037635	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 13017	037636	003 06 0 00 006401 		ER3	AC,6401			;RESULT IN AC IS INCORRECT
+ 13018	037637	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13019	037640	004 07 0 00 006401 		ER4	AC+1,6401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13020	037641	321 10 0 00 037632 		JUMPL	AC+2,E6400		;LOOP ON ERROR SWITCH^
+ 13021
+ 13022					;SHIFT CONNECTIONS TEST
+ 13023					;TEST AR1 SHLT INP-ZERO'S - ROT AC,1
+ 13024					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 13025						SR1	(65,677777,-1,577777,-1,ROT,1)^
+ 13026					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 677777,-1] 1 BIT
+ 13027					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 577777,-1]
+ 13028					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13029
+ 13030	037642	200 06 0 00 041633 	E6500:	MOVE	AC,[XWD 677777,-1]	;INITIALIZE AC
+ 13031	037643	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13032	037644	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13033	037645	312 06 0 00 041634 		CAME	AC,[XWD 577777,-1]	;IS RESULT IN AC CORRECT?
+ 13034	037646	003 06 0 00 006501 		ER3	AC,6501			;RESULT IN AC IS INCORRECT
+ 13035	037647	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13036	037650	004 07 0 00 006501 		ER4	AC+1,6501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13037	037651	321 10 0 00 037642 		JUMPL	AC+2,E6500		;LOOP ON ERROR SWITCH^
+ 13038					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 28-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0275
+
+ 13039					;SHIFT CONNECTIONS TEST
+ 13040					;TEST AR0 SHLT INP-ONE'S - ROT AC,1
+ 13041					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 13042						SR1	(66,200000,0,400000,0,ROT,1)^
+ 13043					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 200000,0] 1 BIT
+ 13044					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 400000,0]
+ 13045					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13046
+ 13047	037652	200 06 0 00 041632 	E6600:	MOVE	AC,[XWD 200000,0]	;INITIALIZE AC
+ 13048	037653	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13049	037654	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13050	037655	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 13051	037656	003 06 0 00 006601 		ER3	AC,6601			;RESULT IN AC IS INCORRECT
+ 13052	037657	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13053	037660	004 07 0 00 006601 		ER4	AC+1,6601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13054	037661	321 10 0 00 037652 		JUMPL	AC+2,E6600		;LOOP ON ERROR SWITCH^
+ 13055
+ 13056					;SHIFT CONNECTIONS TEST
+ 13057					;TEST AR0 SHLT INP-ZERO'S - ROT AC,1
+ 13058					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 13059						SR1	(67,577777,-1,377777,-1,ROT,1)^
+ 13060					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 577777,-1] 1 BIT
+ 13061					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-1]
+ 13062					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13063
+ 13064	037662	200 06 0 00 041634 	E6700:	MOVE	AC,[XWD 577777,-1]	;INITIALIZE AC
+ 13065	037663	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13066	037664	241 06 0 00 000001 		ROT	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13067	037665	312 06 0 00 041626 		CAME	AC,[XWD 377777,-1]	;IS RESULT IN AC CORRECT?
+ 13068	037666	003 06 0 00 006701 		ER3	AC,6701			;RESULT IN AC IS INCORRECT
+ 13069	037667	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13070	037670	004 07 0 00 006701 		ER4	AC+1,6701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13071	037671	321 10 0 00 037662 		JUMPL	AC+2,E6700		;LOOP ON ERROR SWITCH^
+ 13072
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 29
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0276
+
+ 13073					;SHIFT CONNECTIONS TEST
+ 13074					;TEST AR0 SHRT INP-ONE'S - ROT AC,-1
+ 13075					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 13076						SR1	(70,0,1,400000,0,ROT,-1)^
+ 13077					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,1] -1 BIT
+ 13078					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 400000,0]
+ 13079					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13080
+ 13081	037672	200 06 0 00 041625 	E7000:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 13082	037673	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13083	037674	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13084	037675	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 13085	037676	003 06 0 00 007001 		ER3	AC,7001			;RESULT IN AC IS INCORRECT
+ 13086	037677	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13087	037700	004 07 0 00 007001 		ER4	AC+1,7001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13088	037701	321 10 0 00 037672 		JUMPL	AC+2,E7000		;LOOP ON ERROR SWITCH^
+ 13089
+ 13090					;SHIFT CONNECTIONS TEST
+ 13091					;TEST AR0 SHRT INP-ZERO'S - ROT AC,-1
+ 13092					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 13093						SR1	(71,-1,-2,377777,-1,ROT,-1)^
+ 13094					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-2] -1 BIT
+ 13095					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-1]
+ 13096					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13097
+ 13098	037702	200 06 0 00 041627 	E7100:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 13099	037703	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13100	037704	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13101	037705	312 06 0 00 041626 		CAME	AC,[XWD 377777,-1]	;IS RESULT IN AC CORRECT?
+ 13102	037706	003 06 0 00 007101 		ER3	AC,7101			;RESULT IN AC IS INCORRECT
+ 13103	037707	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13104	037710	004 07 0 00 007101 		ER4	AC+1,7101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13105	037711	321 10 0 00 037702 		JUMPL	AC+2,E7100		;LOOP ON ERROR SWITCH^
+ 13106
+ 13107					;SHIFT CONNECTIONS TEST
+ 13108					;TEST AR1 SHRT INP-ONE'S - ROT AC,-1
+ 13109					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 13110						SR1	(72,400000,0,200000,0,ROT,-1)^
+ 13111					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] -1 BIT
+ 13112					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 200000,0]
+ 13113					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13114
+ 13115	037712	200 06 0 00 041624 	E7200:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 13116	037713	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13117	037714	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13118	037715	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 13119	037716	003 06 0 00 007201 		ER3	AC,7201			;RESULT IN AC IS INCORRECT
+ 13120	037717	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13121	037720	004 07 0 00 007201 		ER4	AC+1,7201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13122	037721	321 10 0 00 037712 		JUMPL	AC+2,E7200		;LOOP ON ERROR SWITCH^
+ 13123
+ 13124					;SHIFT CONNECTIONS TEST
+ 13125					;TEST AR1 SHRT INP-ZERO'S - ROT AC,-1
+ 13126					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 13127						SR1	(73,377777,-1,577777,-1,ROT,-1)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 29-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0277
+
+ 13128					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] -1 BIT
+ 13129					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 577777,-1]
+ 13130					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13131
+ 13132	037722	200 06 0 00 041626 	E7300:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 13133	037723	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13134	037724	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13135	037725	312 06 0 00 041634 		CAME	AC,[XWD 577777,-1]	;IS RESULT IN AC CORRECT?
+ 13136	037726	003 06 0 00 007301 		ER3	AC,7301			;RESULT IN AC IS INCORRECT
+ 13137	037727	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13138	037730	004 07 0 00 007301 		ER4	AC+1,7301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13139	037731	321 10 0 00 037722 		JUMPL	AC+2,E7300		;LOOP ON ERROR SWITCH^
+ 13140					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 29-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0278
+
+ 13141					;SHIFT CONNECTIONS TEST
+ 13142					;TEST AR34 SHRT INP-ONE'S - ROT AC,-1
+ 13143					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 13144						SR1	(74,0,4,0,2,ROT,-1)^
+ 13145					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,4] -1 BIT
+ 13146					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 13147					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13148
+ 13149	037732	200 06 0 00 041622 	E7400:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 13150	037733	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13151	037734	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13152	037735	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 13153	037736	003 06 0 00 007401 		ER3	AC,7401			;RESULT IN AC IS INCORRECT
+ 13154	037737	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13155	037740	004 07 0 00 007401 		ER4	AC+1,7401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13156	037741	321 10 0 00 037732 		JUMPL	AC+2,E7400		;LOOP ON ERROR SWITCH^
+ 13157
+ 13158					;SHIFT CONNECTIONS TEST
+ 13159					;TEST AR34 SHRT INP-ZERO'S - ROT AC,-1
+ 13160					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 13161						SR1	(75,-1,-5,-1,-3,ROT,-1)^
+ 13162					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-5] -1 BIT
+ 13163					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-3]
+ 13164					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13165
+ 13166	037742	200 06 0 00 041635 	E7500:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 13167	037743	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13168	037744	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13169	037745	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 13170	037746	003 06 0 00 007501 		ER3	AC,7501			;RESULT IN AC IS INCORRECT
+ 13171	037747	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13172	037750	004 07 0 00 007501 		ER4	AC+1,7501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13173	037751	321 10 0 00 037742 		JUMPL	AC+2,E7500		;LOOP ON ERROR SWITCH^
+ 13174
+ 13175					;SHIFT CONNECTIONS TEST
+ 13176					;TEST AR35 SHRT INP-ONE'S - ROT AC,-1
+ 13177					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 13178						SR1	(76,0,2,0,1,ROT,-1)^
+ 13179					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,2] -1 BIT
+ 13180					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,1]
+ 13181					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13182
+ 13183	037752	200 06 0 00 041623 	E7600:	MOVE	AC,[XWD 0,2]	;INITIALIZE AC
+ 13184	037753	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13185	037754	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13186	037755	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 13187	037756	003 06 0 00 007601 		ER3	AC,7601			;RESULT IN AC IS INCORRECT
+ 13188	037757	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13189	037760	004 07 0 00 007601 		ER4	AC+1,7601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13190	037761	321 10 0 00 037752 		JUMPL	AC+2,E7600		;LOOP ON ERROR SWITCH^
+ 13191
+ 13192					;SHIFT CONNECTIONS TEST
+ 13193					;TEST AR35 SHRT INP-ZERO'S - ROT AC,-1
+ 13194					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 13195						SR1	(77,-1,-3,-1,-2,ROT,-1)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 29-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0279
+
+ 13196					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-3] -1 BIT
+ 13197					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-2]
+ 13198					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13199
+ 13200	037762	200 06 0 00 041630 	E7700:	MOVE	AC,[XWD -1,-3]	;INITIALIZE AC
+ 13201	037763	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13202	037764	241 06 0 00 777777 		ROT	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13203	037765	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 13204	037766	003 06 0 00 007701 		ER3	AC,7701			;RESULT IN AC IS INCORRECT
+ 13205	037767	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13206	037770	004 07 0 00 007701 		ER4	AC+1,7701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13207	037771	321 10 0 00 037762 		JUMPL	AC+2,E7700		;LOOP ON ERROR SWITCH^
+ 13208
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 30
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0280
+
+ 13209					;SHIFT CONNECTIONS TEST
+ 13210					;TEST AR0 SHRT INP-ONE'S - ROT AC,-2
+ 13211					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 13212						SR1	(100,0,2,400000,0,ROT,-2)^
+ 13213					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,2] -2 BIT
+ 13214					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 400000,0]
+ 13215					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13216
+ 13217	037772	200 06 0 00 041623 	E10000:	MOVE	AC,[XWD 0,2]	;INITIALIZE AC
+ 13218	037773	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13219	037774	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13220	037775	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 13221	037776	003 06 0 00 010001 		ER3	AC,10001			;RESULT IN AC IS INCORRECT
+ 13222	037777	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13223	040000	004 07 0 00 010001 		ER4	AC+1,10001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13224	040001	321 10 0 00 037772 		JUMPL	AC+2,E10000		;LOOP ON ERROR SWITCH^
+ 13225
+ 13226					;SHIFT CONNECTIONS TEST
+ 13227					;TEST AR0 SHRT INP-ZERO'S - ROT AC,-2
+ 13228					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 13229						SR1	(101,-1,-3,377777,-1,ROT,-2)^
+ 13230					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-3] -2 BIT
+ 13231					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-1]
+ 13232					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13233
+ 13234	040002	200 06 0 00 041630 	E10100:	MOVE	AC,[XWD -1,-3]	;INITIALIZE AC
+ 13235	040003	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13236	040004	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13237	040005	312 06 0 00 041626 		CAME	AC,[XWD 377777,-1]	;IS RESULT IN AC CORRECT?
+ 13238	040006	003 06 0 00 010101 		ER3	AC,10101			;RESULT IN AC IS INCORRECT
+ 13239	040007	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13240	040010	004 07 0 00 010101 		ER4	AC+1,10101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13241	040011	321 10 0 00 040002 		JUMPL	AC+2,E10100		;LOOP ON ERROR SWITCH^
+ 13242
+ 13243					;SHIFT CONNECTIONS TEST
+ 13244					;TEST AR1 SHRT INP-ONE'S - ROT AC,-2
+ 13245					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 13246						SR1	(102,0,1,200000,0,ROT,-2)^
+ 13247					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,1] -2 BIT
+ 13248					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 200000,0]
+ 13249					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13250
+ 13251	040012	200 06 0 00 041625 	E10200:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 13252	040013	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13253	040014	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13254	040015	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 13255	040016	003 06 0 00 010201 		ER3	AC,10201			;RESULT IN AC IS INCORRECT
+ 13256	040017	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13257	040020	004 07 0 00 010201 		ER4	AC+1,10201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13258	040021	321 10 0 00 040012 		JUMPL	AC+2,E10200		;LOOP ON ERROR SWITCH^
+ 13259
+ 13260					;SHIFT CONNECTIONS TEST
+ 13261					;TEST AR1 SHRT INP-ZERO'S - ROT AC,-2
+ 13262					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 13263						SR1	(103,-1,-2,577777,-1,ROT,-2)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 30-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0281
+
+ 13264					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-2] -2 BIT
+ 13265					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 577777,-1]
+ 13266					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13267
+ 13268	040022	200 06 0 00 041627 	E10300:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 13269	040023	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13270	040024	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13271	040025	312 06 0 00 041634 		CAME	AC,[XWD 577777,-1]	;IS RESULT IN AC CORRECT?
+ 13272	040026	003 06 0 00 010301 		ER3	AC,10301			;RESULT IN AC IS INCORRECT
+ 13273	040027	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13274	040030	004 07 0 00 010301 		ER4	AC+1,10301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13275	040031	321 10 0 00 040022 		JUMPL	AC+2,E10300		;LOOP ON ERROR SWITCH^
+ 13276					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 30-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0282
+
+ 13277					;SHIFT CONNECTIONS TEST
+ 13278					;TEST AR34 SHRT INP-ONE'S - ROT AC,-2
+ 13279					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 13280						SR1	(104,0,10,0,2,ROT,-2)^
+ 13281					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,10] -2 BIT
+ 13282					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 13283					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13284
+ 13285	040032	200 06 0 00 041617 	E10400:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+ 13286	040033	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13287	040034	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13288	040035	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 13289	040036	003 06 0 00 010401 		ER3	AC,10401			;RESULT IN AC IS INCORRECT
+ 13290	040037	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13291	040040	004 07 0 00 010401 		ER4	AC+1,10401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13292	040041	321 10 0 00 040032 		JUMPL	AC+2,E10400		;LOOP ON ERROR SWITCH^
+ 13293
+ 13294					;SHIFT CONNECTIONS TEST
+ 13295					;TEST AR34 SHRT INP-ZERO'S - ROT AC,-2
+ 13296					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 13297						SR1	(105,-1,-11,-1,-3,ROT,-2)^
+ 13298					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-11] -2 BIT
+ 13299					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-3]
+ 13300					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13301
+ 13302	040042	200 06 0 00 041636 	E10500:	MOVE	AC,[XWD -1,-11]	;INITIALIZE AC
+ 13303	040043	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13304	040044	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13305	040045	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 13306	040046	003 06 0 00 010501 		ER3	AC,10501			;RESULT IN AC IS INCORRECT
+ 13307	040047	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13308	040050	004 07 0 00 010501 		ER4	AC+1,10501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13309	040051	321 10 0 00 040042 		JUMPL	AC+2,E10500		;LOOP ON ERROR SWITCH^
+ 13310
+ 13311					;SHIFT CONNECTIONS TEST
+ 13312					;TEST AR35 SHRT INP-ONE'S - ROT AC,-2
+ 13313					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 13314						SR1	(106,0,4,0,1,ROT,-2)^
+ 13315					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,4] -2 BIT
+ 13316					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,1]
+ 13317					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13318
+ 13319	040052	200 06 0 00 041622 	E10600:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 13320	040053	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13321	040054	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13322	040055	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 13323	040056	003 06 0 00 010601 		ER3	AC,10601			;RESULT IN AC IS INCORRECT
+ 13324	040057	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13325	040060	004 07 0 00 010601 		ER4	AC+1,10601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13326	040061	321 10 0 00 040052 		JUMPL	AC+2,E10600		;LOOP ON ERROR SWITCH^
+ 13327
+ 13328					;SHIFT CONNECTIONS TEST
+ 13329					;TEST AR35 SHRT INP-ZERO'S - ROT AC,-2
+ 13330					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 13331						SR1	(107,-1,-5,-1,-2,ROT,-2)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 30-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)                                    SEQ 0283
+
+ 13332					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-5] -2 BIT
+ 13333					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-2]
+ 13334					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13335
+ 13336	040062	200 06 0 00 041635 	E10700:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 13337	040063	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13338	040064	241 06 0 00 777776 		ROT	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13339	040065	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 13340	040066	003 06 0 00 010701 		ER3	AC,10701			;RESULT IN AC IS INCORRECT
+ 13341	040067	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13342	040070	004 07 0 00 010701 		ER4	AC+1,10701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13343	040071	321 10 0 00 040062 		JUMPL	AC+2,E10700		;LOOP ON ERROR SWITCH^
+ 13344
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 31
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0284
+
+ 13345					SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)
+ 13346
+ 13347					;END CONNECTIONS-LSH
+ 13348					;TEST AR END BIT INPUT GATES
+ 13349					;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+ 13350					;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+ 13351					;AC IS SHIFTED LEFT/RIGHT
+ 13352					;AND END BITS TESTED
+ 13353
+ 13354					;SHIFT CONNECTIONS TEST
+ 13355					;TEST AR35 SHLT INP-ZERO'S - LSH AC,1
+ 13356					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13357						SR1	(110,-1,-1,-1,-2,LSH,1)^
+ 13358					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-1] 1 BIT
+ 13359					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-2]
+ 13360					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13361
+ 13362	040072	200 06 0 00 041616 	E11000:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 13363	040073	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13364	040074	242 06 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13365	040075	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 13366	040076	003 06 0 00 011001 		ER3	AC,11001			;RESULT IN AC IS INCORRECT
+ 13367	040077	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13368	040100	004 07 0 00 011001 		ER4	AC+1,11001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13369	040101	321 10 0 00 040072 		JUMPL	AC+2,E11000		;LOOP ON ERROR SWITCH^
+ 13370
+ 13371					;SHIFT CONNECTIONS TEST
+ 13372					;TEST AR34 SHLT INP-ONE'S - LSH AC,1
+ 13373					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13374						SR1	(111,0,1,0,2,LSH,1)^
+ 13375					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,1] 1 BIT
+ 13376					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 13377					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13378
+ 13379	040102	200 06 0 00 041625 	E11100:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 13380	040103	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13381	040104	242 06 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13382	040105	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 13383	040106	003 06 0 00 011101 		ER3	AC,11101			;RESULT IN AC IS INCORRECT
+ 13384	040107	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13385	040110	004 07 0 00 011101 		ER4	AC+1,11101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13386	040111	321 10 0 00 040102 		JUMPL	AC+2,E11100		;LOOP ON ERROR SWITCH^
+ 13387
+ 13388					;SHIFT CONNECTIONS TEST
+ 13389					;TEST AR34 SHLT INP-ZERO'S - LSH AC,1
+ 13390					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13391						SR1	(112,-1,-2,-1,-4,LSH,1)^
+ 13392					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-2] 1 BIT
+ 13393					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-4]
+ 13394					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13395
+ 13396	040112	200 06 0 00 041627 	E11200:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 13397	040113	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13398	040114	242 06 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13399	040115	312 06 0 00 041637 		CAME	AC,[XWD -1,-4]	;IS RESULT IN AC CORRECT?
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 31-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0285
+
+ 13400	040116	003 06 0 00 011201 		ER3	AC,11201			;RESULT IN AC IS INCORRECT
+ 13401	040117	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13402	040120	004 07 0 00 011201 		ER4	AC+1,11201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13403	040121	321 10 0 00 040112 		JUMPL	AC+2,E11200		;LOOP ON ERROR SWITCH^
+ 13404					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 31-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0286
+
+ 13405					;SHIFT CONNECTIONS TEST
+ 13406					;TEST AR1 SHLT INP-ONE'S - LSH AC,1
+ 13407					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13408						SR1	(113,100000,0,200000,0,LSH,1)^
+ 13409					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 100000,0] 1 BIT
+ 13410					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 200000,0]
+ 13411					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13412
+ 13413	040122	200 06 0 00 041631 	E11300:	MOVE	AC,[XWD 100000,0]	;INITIALIZE AC
+ 13414	040123	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13415	040124	242 06 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13416	040125	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 13417	040126	003 06 0 00 011301 		ER3	AC,11301			;RESULT IN AC IS INCORRECT
+ 13418	040127	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13419	040130	004 07 0 00 011301 		ER4	AC+1,11301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13420	040131	321 10 0 00 040122 		JUMPL	AC+2,E11300		;LOOP ON ERROR SWITCH^
+ 13421
+ 13422					;SHIFT CONNECTIONS TEST
+ 13423					;TEST AR1 SHLT INP-ZERO'S - LSH AC,1
+ 13424					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13425						SR1	(114,677777,-1,577777,-2,LSH,1)^
+ 13426					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 677777,-1] 1 BIT
+ 13427					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 577777,-2]
+ 13428					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13429
+ 13430	040132	200 06 0 00 041633 	E11400:	MOVE	AC,[XWD 677777,-1]	;INITIALIZE AC
+ 13431	040133	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13432	040134	242 06 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13433	040135	312 06 0 00 041640 		CAME	AC,[XWD 577777,-2]	;IS RESULT IN AC CORRECT?
+ 13434	040136	003 06 0 00 011401 		ER3	AC,11401			;RESULT IN AC IS INCORRECT
+ 13435	040137	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13436	040140	004 07 0 00 011401 		ER4	AC+1,11401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13437	040141	321 10 0 00 040132 		JUMPL	AC+2,E11400		;LOOP ON ERROR SWITCH^
+ 13438
+ 13439					;SHIFT CONNECTIONS TEST
+ 13440					;TEST AR0 SHLT INP-ONE'S - LSH AC,1
+ 13441					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13442						SR1	(115,200000,0,400000,0,LSH,1)^
+ 13443					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 200000,0] 1 BIT
+ 13444					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 400000,0]
+ 13445					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13446
+ 13447	040142	200 06 0 00 041632 	E11500:	MOVE	AC,[XWD 200000,0]	;INITIALIZE AC
+ 13448	040143	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13449	040144	242 06 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13450	040145	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 13451	040146	003 06 0 00 011501 		ER3	AC,11501			;RESULT IN AC IS INCORRECT
+ 13452	040147	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13453	040150	004 07 0 00 011501 		ER4	AC+1,11501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13454	040151	321 10 0 00 040142 		JUMPL	AC+2,E11500		;LOOP ON ERROR SWITCH^
+ 13455
+ 13456					;SHIFT CONNECTIONS TEST
+ 13457					;TEST AR0 SHLT INP-ZERO'S - LSH AC,1
+ 13458					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13459						SR1	(116,577777,-1,377777,-2,LSH,1)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 31-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0287
+
+ 13460					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 577777,-1] 1 BIT
+ 13461					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-2]
+ 13462					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13463
+ 13464	040152	200 06 0 00 041634 	E11600:	MOVE	AC,[XWD 577777,-1]	;INITIALIZE AC
+ 13465	040153	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13466	040154	242 06 0 00 000001 		LSH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13467	040155	312 06 0 00 041641 		CAME	AC,[XWD 377777,-2]	;IS RESULT IN AC CORRECT?
+ 13468	040156	003 06 0 00 011601 		ER3	AC,11601			;RESULT IN AC IS INCORRECT
+ 13469	040157	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13470	040160	004 07 0 00 011601 		ER4	AC+1,11601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13471	040161	321 10 0 00 040152 		JUMPL	AC+2,E11600		;LOOP ON ERROR SWITCH^
+ 13472
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 32
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0288
+
+ 13473					;SHIFT CONNECTIONS TEST
+ 13474					;TEST AR0 SHRT INP-ZERO'S - LSH AC,-1
+ 13475					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13476						SR1	(117,-1,-1,377777,-1,LSH,-1)^
+ 13477					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-1] -1 BIT
+ 13478					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-1]
+ 13479					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13480
+ 13481	040162	200 06 0 00 041616 	E11700:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 13482	040163	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13483	040164	242 06 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13484	040165	312 06 0 00 041626 		CAME	AC,[XWD 377777,-1]	;IS RESULT IN AC CORRECT?
+ 13485	040166	003 06 0 00 011701 		ER3	AC,11701			;RESULT IN AC IS INCORRECT
+ 13486	040167	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13487	040170	004 07 0 00 011701 		ER4	AC+1,11701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13488	040171	321 10 0 00 040162 		JUMPL	AC+2,E11700		;LOOP ON ERROR SWITCH^
+ 13489
+ 13490					;SHIFT CONNECTIONS TEST
+ 13491					;TEST AR1 SHRT INP-ONE'S - LSH AC,-1
+ 13492					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13493						SR1	(120,400000,0,200000,0,LSH,-1)^
+ 13494					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] -1 BIT
+ 13495					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 200000,0]
+ 13496					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13497
+ 13498	040172	200 06 0 00 041624 	E12000:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 13499	040173	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13500	040174	242 06 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13501	040175	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 13502	040176	003 06 0 00 012001 		ER3	AC,12001			;RESULT IN AC IS INCORRECT
+ 13503	040177	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13504	040200	004 07 0 00 012001 		ER4	AC+1,12001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13505	040201	321 10 0 00 040172 		JUMPL	AC+2,E12000		;LOOP ON ERROR SWITCH^
+ 13506
+ 13507					;SHIFT CONNECTIONS TEST
+ 13508					;TEST AR1 SHRT INP-ZERO'S - LSH AC,-1
+ 13509					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13510						SR1	(121,377777,-1,177777,-1,LSH,-1)^
+ 13511					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] -1 BIT
+ 13512					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 177777,-1]
+ 13513					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13514
+ 13515	040202	200 06 0 00 041626 	E12100:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 13516	040203	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13517	040204	242 06 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13518	040205	312 06 0 00 041642 		CAME	AC,[XWD 177777,-1]	;IS RESULT IN AC CORRECT?
+ 13519	040206	003 06 0 00 012101 		ER3	AC,12101			;RESULT IN AC IS INCORRECT
+ 13520	040207	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13521	040210	004 07 0 00 012101 		ER4	AC+1,12101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13522	040211	321 10 0 00 040202 		JUMPL	AC+2,E12100		;LOOP ON ERROR SWITCH^
+ 13523					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 32-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0289
+
+ 13524					;SHIFT CONNECTIONS TEST
+ 13525					;TEST AR34 SHRT INP-ONE'S - LSH AC,-1
+ 13526					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13527						SR1	(122,0,4,0,2,LSH,-1)^
+ 13528					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,4] -1 BIT
+ 13529					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 13530					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13531
+ 13532	040212	200 06 0 00 041622 	E12200:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 13533	040213	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13534	040214	242 06 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13535	040215	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 13536	040216	003 06 0 00 012201 		ER3	AC,12201			;RESULT IN AC IS INCORRECT
+ 13537	040217	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13538	040220	004 07 0 00 012201 		ER4	AC+1,12201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13539	040221	321 10 0 00 040212 		JUMPL	AC+2,E12200		;LOOP ON ERROR SWITCH^
+ 13540
+ 13541					;SHIFT CONNECTIONS TEST
+ 13542					;TEST AR34 SHRT INP-ZERO'S - LSH AC,-1
+ 13543					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13544						SR1	(123,-1,-5,377777,-3,LSH,-1)^
+ 13545					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-5] -1 BIT
+ 13546					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-3]
+ 13547					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13548
+ 13549	040222	200 06 0 00 041635 	E12300:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 13550	040223	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13551	040224	242 06 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13552	040225	312 06 0 00 041643 		CAME	AC,[XWD 377777,-3]	;IS RESULT IN AC CORRECT?
+ 13553	040226	003 06 0 00 012301 		ER3	AC,12301			;RESULT IN AC IS INCORRECT
+ 13554	040227	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13555	040230	004 07 0 00 012301 		ER4	AC+1,12301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13556	040231	321 10 0 00 040222 		JUMPL	AC+2,E12300		;LOOP ON ERROR SWITCH^
+ 13557
+ 13558					;SHIFT CONNECTIONS TEST
+ 13559					;TEST AR35 SHRT INP-ONE'S - LSH AC,-1
+ 13560					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13561						SR1	(124,0,2,0,1,LSH,-1)^
+ 13562					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,2] -1 BIT
+ 13563					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,1]
+ 13564					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13565
+ 13566	040232	200 06 0 00 041623 	E12400:	MOVE	AC,[XWD 0,2]	;INITIALIZE AC
+ 13567	040233	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13568	040234	242 06 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13569	040235	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 13570	040236	003 06 0 00 012401 		ER3	AC,12401			;RESULT IN AC IS INCORRECT
+ 13571	040237	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13572	040240	004 07 0 00 012401 		ER4	AC+1,12401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13573	040241	321 10 0 00 040232 		JUMPL	AC+2,E12400		;LOOP ON ERROR SWITCH^
+ 13574
+ 13575					;SHIFT CONNECTIONS TEST
+ 13576					;TEST AR35 SHRT INP-ZERO'S - LSH AC,-1
+ 13577					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13578						SR1	(125,-1,-3,377777,-2,LSH,-1)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 32-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0290
+
+ 13579					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-3] -1 BIT
+ 13580					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-2]
+ 13581					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13582
+ 13583	040242	200 06 0 00 041630 	E12500:	MOVE	AC,[XWD -1,-3]	;INITIALIZE AC
+ 13584	040243	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13585	040244	242 06 0 00 777777 		LSH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13586	040245	312 06 0 00 041641 		CAME	AC,[XWD 377777,-2]	;IS RESULT IN AC CORRECT?
+ 13587	040246	003 06 0 00 012501 		ER3	AC,12501			;RESULT IN AC IS INCORRECT
+ 13588	040247	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13589	040250	004 07 0 00 012501 		ER4	AC+1,12501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13590	040251	321 10 0 00 040242 		JUMPL	AC+2,E12500		;LOOP ON ERROR SWITCH^
+ 13591
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 33
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0291
+
+ 13592					;SHIFT CONNECTIONS TEST
+ 13593					;TEST AR0 SHRT INP-ZERO'S - LSH AC,-2
+ 13594					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13595						SR1	(126,-1,-1,177777,-1,LSH,-2)^
+ 13596					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-1] -2 BIT
+ 13597					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 177777,-1]
+ 13598					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13599
+ 13600	040252	200 06 0 00 041616 	E12600:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 13601	040253	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13602	040254	242 06 0 00 777776 		LSH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13603	040255	312 06 0 00 041642 		CAME	AC,[XWD 177777,-1]	;IS RESULT IN AC CORRECT?
+ 13604	040256	003 06 0 00 012601 		ER3	AC,12601			;RESULT IN AC IS INCORRECT
+ 13605	040257	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13606	040260	004 07 0 00 012601 		ER4	AC+1,12601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13607	040261	321 10 0 00 040252 		JUMPL	AC+2,E12600		;LOOP ON ERROR SWITCH^
+ 13608
+ 13609					;SHIFT CONNECTIONS TEST
+ 13610					;TEST AR1 SHRT INP-ZERO'S - LSH AC,-2
+ 13611					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13612						SR1	(127,-1,-1,177777,-1,LSH,-2)^
+ 13613					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-1] -2 BIT
+ 13614					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 177777,-1]
+ 13615					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13616
+ 13617	040262	200 06 0 00 041616 	E12700:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 13618	040263	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13619	040264	242 06 0 00 777776 		LSH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13620	040265	312 06 0 00 041642 		CAME	AC,[XWD 177777,-1]	;IS RESULT IN AC CORRECT?
+ 13621	040266	003 06 0 00 012701 		ER3	AC,12701			;RESULT IN AC IS INCORRECT
+ 13622	040267	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13623	040270	004 07 0 00 012701 		ER4	AC+1,12701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13624	040271	321 10 0 00 040262 		JUMPL	AC+2,E12700		;LOOP ON ERROR SWITCH^
+ 13625
+ 13626					;SHIFT CONNECTIONS TEST
+ 13627					;TEST AR34 SHRT INP-ONE'S - LSH AC,-2
+ 13628					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13629						SR1	(130,0,10,0,2,LSH,-2)^
+ 13630					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,10] -2 BIT
+ 13631					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 13632					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13633
+ 13634	040272	200 06 0 00 041617 	E13000:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+ 13635	040273	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13636	040274	242 06 0 00 777776 		LSH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13637	040275	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 13638	040276	003 06 0 00 013001 		ER3	AC,13001			;RESULT IN AC IS INCORRECT
+ 13639	040277	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13640	040300	004 07 0 00 013001 		ER4	AC+1,13001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13641	040301	321 10 0 00 040272 		JUMPL	AC+2,E13000		;LOOP ON ERROR SWITCH^
+ 13642					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 33-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)                                    SEQ 0292
+
+ 13643					;SHIFT CONNECTIONS TEST
+ 13644					;TEST AR34 SHRT INP-ZERO'S - LSH AC,-2
+ 13645					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13646						SR1	(131,-1,-11,177777,-3,LSH,-2)^
+ 13647					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-11] -2 BIT
+ 13648					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 177777,-3]
+ 13649					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13650
+ 13651	040302	200 06 0 00 041636 	E13100:	MOVE	AC,[XWD -1,-11]	;INITIALIZE AC
+ 13652	040303	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13653	040304	242 06 0 00 777776 		LSH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13654	040305	312 06 0 00 041644 		CAME	AC,[XWD 177777,-3]	;IS RESULT IN AC CORRECT?
+ 13655	040306	003 06 0 00 013101 		ER3	AC,13101			;RESULT IN AC IS INCORRECT
+ 13656	040307	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13657	040310	004 07 0 00 013101 		ER4	AC+1,13101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13658	040311	321 10 0 00 040302 		JUMPL	AC+2,E13100		;LOOP ON ERROR SWITCH^
+ 13659
+ 13660					;SHIFT CONNECTIONS TEST
+ 13661					;TEST AR35 SHRT INP-ONE'S - LSH AC,-2
+ 13662					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13663						SR1	(132,0,4,0,1,LSH,-2)^
+ 13664					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,4] -2 BIT
+ 13665					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,1]
+ 13666					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13667
+ 13668	040312	200 06 0 00 041622 	E13200:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 13669	040313	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13670	040314	242 06 0 00 777776 		LSH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13671	040315	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 13672	040316	003 06 0 00 013201 		ER3	AC,13201			;RESULT IN AC IS INCORRECT
+ 13673	040317	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13674	040320	004 07 0 00 013201 		ER4	AC+1,13201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13675	040321	321 10 0 00 040312 		JUMPL	AC+2,E13200		;LOOP ON ERROR SWITCH^
+ 13676
+ 13677					;SHIFT CONNECTIONS TEST
+ 13678					;TEST AR35 SHRT INP-ZERO'S - LSH AC,-2
+ 13679					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13680						SR1	(133,-1,-5,177777,-2,LSH,-2)^
+ 13681					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-5] -2 BIT
+ 13682					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 177777,-2]
+ 13683					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13684
+ 13685	040322	200 06 0 00 041635 	E13300:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 13686	040323	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13687	040324	242 06 0 00 777776 		LSH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13688	040325	312 06 0 00 041645 		CAME	AC,[XWD 177777,-2]	;IS RESULT IN AC CORRECT?
+ 13689	040326	003 06 0 00 013301 		ER3	AC,13301			;RESULT IN AC IS INCORRECT
+ 13690	040327	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13691	040330	004 07 0 00 013301 		ER4	AC+1,13301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13692	040331	321 10 0 00 040322 		JUMPL	AC+2,E13300		;LOOP ON ERROR SWITCH^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 34
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0293
+
+ 13693					SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)
+ 13694
+ 13695					;END CONNECTIONS-ASH
+ 13696					;TEST AR END BIT INPUT GATES
+ 13697					;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+ 13698					;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+ 13699					;AC IS SHIFTD LEFT/RIGHT
+ 13700					;AND END BITS TESTED
+ 13701
+ 13702					;SHIFT CONNECTIONS TEST
+ 13703					;TEST AR35 SHLT INP-ZERO'S - ASH AC,1
+ 13704					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13705						SR1	(134,-1,-1,-1,-2,ASH,1)^
+ 13706					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-1] 1 BIT
+ 13707					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-2]
+ 13708					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13709
+ 13710	040332	200 06 0 00 041616 	E13400:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 13711	040333	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13712	040334	240 06 0 00 000001 		ASH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13713	040335	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 13714	040336	003 06 0 00 013401 		ER3	AC,13401			;RESULT IN AC IS INCORRECT
+ 13715	040337	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13716	040340	004 07 0 00 013401 		ER4	AC+1,13401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13717	040341	321 10 0 00 040332 		JUMPL	AC+2,E13400		;LOOP ON ERROR SWITCH^
+ 13718
+ 13719					;SHIFT CONNECTIONS TEST
+ 13720					;TEST AR34 SHLT INP-ONE'S - ASH AC,1
+ 13721					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13722						SR1	(135,0,1,0,2,ASH,1)^
+ 13723					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,1] 1 BIT
+ 13724					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 13725					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13726
+ 13727	040342	200 06 0 00 041625 	E13500:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 13728	040343	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13729	040344	240 06 0 00 000001 		ASH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13730	040345	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 13731	040346	003 06 0 00 013501 		ER3	AC,13501			;RESULT IN AC IS INCORRECT
+ 13732	040347	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13733	040350	004 07 0 00 013501 		ER4	AC+1,13501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13734	040351	321 10 0 00 040342 		JUMPL	AC+2,E13500		;LOOP ON ERROR SWITCH^
+ 13735
+ 13736					;SHIFT CONNECTIONS TEST
+ 13737					;TEST AR34 SHLT INP-ZERO'S - ASH AC,1
+ 13738					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13739						SR1	(136,-1,-2,-1,-4,ASH,1)^
+ 13740					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-2] 1 BIT
+ 13741					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-4]
+ 13742					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13743
+ 13744	040352	200 06 0 00 041627 	E13600:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 13745	040353	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13746	040354	240 06 0 00 000001 		ASH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13747	040355	312 06 0 00 041637 		CAME	AC,[XWD -1,-4]	;IS RESULT IN AC CORRECT?
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 34-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0294
+
+ 13748	040356	003 06 0 00 013601 		ER3	AC,13601			;RESULT IN AC IS INCORRECT
+ 13749	040357	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13750	040360	004 07 0 00 013601 		ER4	AC+1,13601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13751	040361	321 10 0 00 040352 		JUMPL	AC+2,E13600		;LOOP ON ERROR SWITCH^
+ 13752					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 34-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0295
+
+ 13753					;SHIFT CONNECTIONS TEST
+ 13754					;TEST AR1 SHLT INP-ONE'S - ASH AC,1
+ 13755					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13756						SR1	(137,100000,0,200000,0,ASH,1)^
+ 13757					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 100000,0] 1 BIT
+ 13758					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 200000,0]
+ 13759					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13760
+ 13761	040362	200 06 0 00 041631 	E13700:	MOVE	AC,[XWD 100000,0]	;INITIALIZE AC
+ 13762	040363	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13763	040364	240 06 0 00 000001 		ASH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13764	040365	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 13765	040366	003 06 0 00 013701 		ER3	AC,13701			;RESULT IN AC IS INCORRECT
+ 13766	040367	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13767	040370	004 07 0 00 013701 		ER4	AC+1,13701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13768	040371	321 10 0 00 040362 		JUMPL	AC+2,E13700		;LOOP ON ERROR SWITCH^
+ 13769
+ 13770					;SHIFT CONNECTIONS TEST
+ 13771					;TEST AR1 SHLT INP-ZERO'S - ASH AC,1
+ 13772					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13773						SR1	(140,677777,-1,577777,-2,ASH,1)^
+ 13774					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 677777,-1] 1 BIT
+ 13775					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 577777,-2]
+ 13776					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13777
+ 13778	040372	200 06 0 00 041633 	E14000:	MOVE	AC,[XWD 677777,-1]	;INITIALIZE AC
+ 13779	040373	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13780	040374	240 06 0 00 000001 		ASH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13781	040375	312 06 0 00 041640 		CAME	AC,[XWD 577777,-2]	;IS RESULT IN AC CORRECT?
+ 13782	040376	003 06 0 00 014001 		ER3	AC,14001			;RESULT IN AC IS INCORRECT
+ 13783	040377	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13784	040400	004 07 0 00 014001 		ER4	AC+1,14001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13785	040401	321 10 0 00 040372 		JUMPL	AC+2,E14000		;LOOP ON ERROR SWITCH^
+ 13786
+ 13787					;SHIFT CONNECTIONS TEST
+ 13788					;TEST AR0 SHLT INP-ONE'S - ASH AC,1
+ 13789					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13790						SR1	(141,400000,0,400000,0,ASH,1)^
+ 13791					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] 1 BIT
+ 13792					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 400000,0]
+ 13793					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13794
+ 13795	040402	200 06 0 00 041624 	E14100:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 13796	040403	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13797	040404	240 06 0 00 000001 		ASH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13798	040405	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 13799	040406	003 06 0 00 014101 		ER3	AC,14101			;RESULT IN AC IS INCORRECT
+ 13800	040407	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13801	040410	004 07 0 00 014101 		ER4	AC+1,14101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13802	040411	321 10 0 00 040402 		JUMPL	AC+2,E14100		;LOOP ON ERROR SWITCH^
+ 13803
+ 13804					;SHIFT CONNECTIONS TEST
+ 13805					;TEST AR0 SHLT INP-ZERO'S - ASH AC,1
+ 13806					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13807						SR1	(142,377777,-1,377777,-2,ASH,1)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 34-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0296
+
+ 13808					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] 1 BIT
+ 13809					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 377777,-2]
+ 13810					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13811
+ 13812	040412	200 06 0 00 041626 	E14200:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 13813	040413	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13814	040414	240 06 0 00 000001 		ASH	AC,1			;*SHIFT/ROTATE 1 BIT POSITIONS
+ 13815	040415	312 06 0 00 041641 		CAME	AC,[XWD 377777,-2]	;IS RESULT IN AC CORRECT?
+ 13816	040416	003 06 0 00 014201 		ER3	AC,14201			;RESULT IN AC IS INCORRECT
+ 13817	040417	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13818	040420	004 07 0 00 014201 		ER4	AC+1,14201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13819	040421	321 10 0 00 040412 		JUMPL	AC+2,E14200		;LOOP ON ERROR SWITCH^
+ 13820
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 35
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0297
+
+ 13821					;SHIFT CONNECTIONS TEST
+ 13822					;TEST AR0 SHRT INP-ONE'S - ASH AC,-1
+ 13823					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13824						SR1	(143,400000,0,600000,0,ASH,-1)^
+ 13825					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] -1 BIT
+ 13826					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 600000,0]
+ 13827					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13828
+ 13829	040422	200 06 0 00 041624 	E14300:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 13830	040423	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13831	040424	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13832	040425	312 06 0 00 041646 		CAME	AC,[XWD 600000,0]	;IS RESULT IN AC CORRECT?
+ 13833	040426	003 06 0 00 014301 		ER3	AC,14301			;RESULT IN AC IS INCORRECT
+ 13834	040427	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13835	040430	004 07 0 00 014301 		ER4	AC+1,14301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13836	040431	321 10 0 00 040422 		JUMPL	AC+2,E14300		;LOOP ON ERROR SWITCH^
+ 13837
+ 13838					;SHIFT CONNECTIONS TEST
+ 13839					;TEST AR0 SHRT INP-ZERO'S - ASH AC,-1
+ 13840					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13841						SR1	(144,377777,-1,177777,-1,ASH,-1)^
+ 13842					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] -1 BIT
+ 13843					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 177777,-1]
+ 13844					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13845
+ 13846	040432	200 06 0 00 041626 	E14400:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 13847	040433	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13848	040434	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13849	040435	312 06 0 00 041642 		CAME	AC,[XWD 177777,-1]	;IS RESULT IN AC CORRECT?
+ 13850	040436	003 06 0 00 014401 		ER3	AC,14401			;RESULT IN AC IS INCORRECT
+ 13851	040437	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13852	040440	004 07 0 00 014401 		ER4	AC+1,14401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13853	040441	321 10 0 00 040432 		JUMPL	AC+2,E14400		;LOOP ON ERROR SWITCH^
+ 13854
+ 13855					;SHIFT CONNECTIONS TEST
+ 13856					;TEST AR1 SHRT INP-ONE'S - ASH AC,-1
+ 13857					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13858						SR1	(145,400000,0,600000,0,ASH,-1)^
+ 13859					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] -1 BIT
+ 13860					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 600000,0]
+ 13861					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13862
+ 13863	040442	200 06 0 00 041624 	E14500:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 13864	040443	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13865	040444	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13866	040445	312 06 0 00 041646 		CAME	AC,[XWD 600000,0]	;IS RESULT IN AC CORRECT?
+ 13867	040446	003 06 0 00 014501 		ER3	AC,14501			;RESULT IN AC IS INCORRECT
+ 13868	040447	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13869	040450	004 07 0 00 014501 		ER4	AC+1,14501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13870	040451	321 10 0 00 040442 		JUMPL	AC+2,E14500		;LOOP ON ERROR SWITCH^
+ 13871
+ 13872					;SHIFT CONNECTIONS TEST
+ 13873					;TEST AR1 SHRT INP-ZERO'S - ASH AC,-1
+ 13874					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13875						SR1	(146,377777,-1,177777,-1,ASH,-1)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 35-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0298
+
+ 13876					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] -1 BIT
+ 13877					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 177777,-1]
+ 13878					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13879
+ 13880	040452	200 06 0 00 041626 	E14600:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 13881	040453	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13882	040454	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13883	040455	312 06 0 00 041642 		CAME	AC,[XWD 177777,-1]	;IS RESULT IN AC CORRECT?
+ 13884	040456	003 06 0 00 014601 		ER3	AC,14601			;RESULT IN AC IS INCORRECT
+ 13885	040457	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13886	040460	004 07 0 00 014601 		ER4	AC+1,14601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13887	040461	321 10 0 00 040452 		JUMPL	AC+2,E14600		;LOOP ON ERROR SWITCH^
+ 13888					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 35-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0299
+
+ 13889					;SHIFT CONNECTIONS TEST
+ 13890					;TEST AR34 SHRT INP-ONE'S - ASH AC,-1
+ 13891					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13892						SR1	(147,0,4,0,2,ASH,-1)^
+ 13893					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,4] -1 BIT
+ 13894					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 13895					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13896
+ 13897	040462	200 06 0 00 041622 	E14700:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 13898	040463	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13899	040464	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13900	040465	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 13901	040466	003 06 0 00 014701 		ER3	AC,14701			;RESULT IN AC IS INCORRECT
+ 13902	040467	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13903	040470	004 07 0 00 014701 		ER4	AC+1,14701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13904	040471	321 10 0 00 040462 		JUMPL	AC+2,E14700		;LOOP ON ERROR SWITCH^
+ 13905
+ 13906					;SHIFT CONNECTIONS TEST
+ 13907					;TEST AR34 SHRT INP-ZERO'S - ASH AC,-1
+ 13908					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 13909						SR1	(150,-1,-5,-1,-3,ASH,-1)^
+ 13910					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-5] -1 BIT
+ 13911					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-3]
+ 13912					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13913
+ 13914	040472	200 06 0 00 041635 	E15000:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 13915	040473	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13916	040474	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13917	040475	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 13918	040476	003 06 0 00 015001 		ER3	AC,15001			;RESULT IN AC IS INCORRECT
+ 13919	040477	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13920	040500	004 07 0 00 015001 		ER4	AC+1,15001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13921	040501	321 10 0 00 040472 		JUMPL	AC+2,E15000		;LOOP ON ERROR SWITCH^
+ 13922
+ 13923					;SHIFT CONNECTIONS TEST
+ 13924					;TEST AR35 SHRT INP-ONE'S - ASH AC,-1
+ 13925					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13926						SR1	(151,0,2,0,1,ASH,-1)^
+ 13927					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,2] -1 BIT
+ 13928					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,1]
+ 13929					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13930
+ 13931	040502	200 06 0 00 041623 	E15100:	MOVE	AC,[XWD 0,2]	;INITIALIZE AC
+ 13932	040503	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13933	040504	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13934	040505	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 13935	040506	003 06 0 00 015101 		ER3	AC,15101			;RESULT IN AC IS INCORRECT
+ 13936	040507	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13937	040510	004 07 0 00 015101 		ER4	AC+1,15101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13938	040511	321 10 0 00 040502 		JUMPL	AC+2,E15100		;LOOP ON ERROR SWITCH^
+ 13939
+ 13940					;SHIFT CONNECTIONS TEST
+ 13941					;TEST AR35 SHRT INP-ZERO'S - ASH AC,-1
+ 13942					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 13943						SR1	(152,-1,-3,-1,-2,ASH,-1)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 35-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0300
+
+ 13944					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-3] -1 BIT
+ 13945					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-2]
+ 13946					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13947
+ 13948	040512	200 06 0 00 041630 	E15200:	MOVE	AC,[XWD -1,-3]	;INITIALIZE AC
+ 13949	040513	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13950	040514	240 06 0 00 777777 		ASH	AC,-1			;*SHIFT/ROTATE -1 BIT POSITIONS
+ 13951	040515	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 13952	040516	003 06 0 00 015201 		ER3	AC,15201			;RESULT IN AC IS INCORRECT
+ 13953	040517	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13954	040520	004 07 0 00 015201 		ER4	AC+1,15201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13955	040521	321 10 0 00 040512 		JUMPL	AC+2,E15200		;LOOP ON ERROR SWITCH^
+ 13956
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 36
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0301
+
+ 13957					;SHIFT CONNECTIONS TEST
+ 13958					;TEST AR0 SHRT INP-ONE'S - ASH AC,-2
+ 13959					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13960						SR1	(153,400000,0,700000,0,ASH,-2)^
+ 13961					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] -2 BIT
+ 13962					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 700000,0]
+ 13963					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13964
+ 13965	040522	200 06 0 00 041624 	E15300:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 13966	040523	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13967	040524	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13968	040525	312 06 0 00 041647 		CAME	AC,[XWD 700000,0]	;IS RESULT IN AC CORRECT?
+ 13969	040526	003 06 0 00 015301 		ER3	AC,15301			;RESULT IN AC IS INCORRECT
+ 13970	040527	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13971	040530	004 07 0 00 015301 		ER4	AC+1,15301		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13972	040531	321 10 0 00 040522 		JUMPL	AC+2,E15300		;LOOP ON ERROR SWITCH^
+ 13973
+ 13974					;SHIFT CONNECTIONS TEST
+ 13975					;TEST AR0 SHRT INP-ZERO'S - ASH AC,-2
+ 13976					;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+ 13977						SR1	(154,377777,-1,077777,-1,ASH,-2)^
+ 13978					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] -2 BIT
+ 13979					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 077777,-1]
+ 13980					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13981
+ 13982	040532	200 06 0 00 041626 	E15400:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 13983	040533	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 13984	040534	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 13985	040535	312 06 0 00 041650 		CAME	AC,[XWD 077777,-1]	;IS RESULT IN AC CORRECT?
+ 13986	040536	003 06 0 00 015401 		ER3	AC,15401			;RESULT IN AC IS INCORRECT
+ 13987	040537	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 13988	040540	004 07 0 00 015401 		ER4	AC+1,15401		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 13989	040541	321 10 0 00 040532 		JUMPL	AC+2,E15400		;LOOP ON ERROR SWITCH^
+ 13990
+ 13991					;SHIFT CONNECTIONS TEST
+ 13992					;TEST AR1 SHRT INP-ONE'S - ASH AC,-2
+ 13993					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 13994						SR1	(155,400000,0,700000,0,ASH,-2)^
+ 13995					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 400000,0] -2 BIT
+ 13996					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 700000,0]
+ 13997					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 13998
+ 13999	040542	200 06 0 00 041624 	E15500:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 14000	040543	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 14001	040544	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 14002	040545	312 06 0 00 041647 		CAME	AC,[XWD 700000,0]	;IS RESULT IN AC CORRECT?
+ 14003	040546	003 06 0 00 015501 		ER3	AC,15501			;RESULT IN AC IS INCORRECT
+ 14004	040547	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 14005	040550	004 07 0 00 015501 		ER4	AC+1,15501		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 14006	040551	321 10 0 00 040542 		JUMPL	AC+2,E15500		;LOOP ON ERROR SWITCH^
+ 14007
+ 14008					;SHIFT CONNECTIONS TEST
+ 14009					;TEST AR1 SHRT INP-ZERO'S - ASH AC,-2
+ 14010					;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+ 14011						SR1	(156,377777,-1,077777,-1,ASH,-2)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 36-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0302
+
+ 14012					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 377777,-1] -2 BIT
+ 14013					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 077777,-1]
+ 14014					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 14015
+ 14016	040552	200 06 0 00 041626 	E15600:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 14017	040553	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 14018	040554	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 14019	040555	312 06 0 00 041650 		CAME	AC,[XWD 077777,-1]	;IS RESULT IN AC CORRECT?
+ 14020	040556	003 06 0 00 015601 		ER3	AC,15601			;RESULT IN AC IS INCORRECT
+ 14021	040557	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 14022	040560	004 07 0 00 015601 		ER4	AC+1,15601		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 14023	040561	321 10 0 00 040552 		JUMPL	AC+2,E15600		;LOOP ON ERROR SWITCH^
+ 14024					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 36-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0303
+
+ 14025					;SHIFT CONNECTIONS TEST
+ 14026					;TEST AR34 SHRT INP-ONE'S - ASH AC,-2
+ 14027					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 14028						SR1	(157,0,10,0,2,ASH,-2)^
+ 14029					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,10] -2 BIT
+ 14030					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,2]
+ 14031					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 14032
+ 14033	040562	200 06 0 00 041617 	E15700:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+ 14034	040563	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 14035	040564	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 14036	040565	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 14037	040566	003 06 0 00 015701 		ER3	AC,15701			;RESULT IN AC IS INCORRECT
+ 14038	040567	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 14039	040570	004 07 0 00 015701 		ER4	AC+1,15701		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 14040	040571	321 10 0 00 040562 		JUMPL	AC+2,E15700		;LOOP ON ERROR SWITCH^
+ 14041
+ 14042					;SHIFT CONNECTIONS TEST
+ 14043					;TEST AR34 SHRT INP-ZERO'S - ASH AC,-2
+ 14044					;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+ 14045						SR1	(160,-1,-11,-1,-3,ASH,-2)^
+ 14046					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-11] -2 BIT
+ 14047					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-3]
+ 14048					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 14049
+ 14050	040572	200 06 0 00 041636 	E16000:	MOVE	AC,[XWD -1,-11]	;INITIALIZE AC
+ 14051	040573	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 14052	040574	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 14053	040575	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 14054	040576	003 06 0 00 016001 		ER3	AC,16001			;RESULT IN AC IS INCORRECT
+ 14055	040577	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 14056	040600	004 07 0 00 016001 		ER4	AC+1,16001		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 14057	040601	321 10 0 00 040572 		JUMPL	AC+2,E16000		;LOOP ON ERROR SWITCH^
+ 14058
+ 14059					;SHIFT CONNECTIONS TEST
+ 14060					;TEST AR35 SHRT INP-ONE'S - ASH AC,-2
+ 14061					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 14062						SR1	(161,0,4,0,1,ASH,-2)^
+ 14063					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD 0,4] -2 BIT
+ 14064					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD 0,1]
+ 14065					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 14066
+ 14067	040602	200 06 0 00 041622 	E16100:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 14068	040603	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 14069	040604	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 14070	040605	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 14071	040606	003 06 0 00 016101 		ER3	AC,16101			;RESULT IN AC IS INCORRECT
+ 14072	040607	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 14073	040610	004 07 0 00 016101 		ER4	AC+1,16101		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 14074	040611	321 10 0 00 040602 		JUMPL	AC+2,E16100		;LOOP ON ERROR SWITCH^
+ 14075
+ 14076					;SHIFT CONNECTIONS TEST
+ 14077					;TEST AR35 SHRT INP-ZERO'S - ASH AC,-2
+ 14078					;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+ 14079						SR1	(162,-1,-5,-1,-2,ASH,-2)^
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 36-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)                                    SEQ 0304
+
+ 14080					;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD -1,-5] -2 BIT
+ 14081					;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD -1,-2]
+ 14082					;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+ 14083
+ 14084	040612	200 06 0 00 041635 	E16200:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 14085	040613	200 07 0 00 041620 		MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+ 14086	040614	240 06 0 00 777776 		ASH	AC,-2			;*SHIFT/ROTATE -2 BIT POSITIONS
+ 14087	040615	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 14088	040616	003 06 0 00 016201 		ER3	AC,16201			;RESULT IN AC IS INCORRECT
+ 14089	040617	312 07 0 00 041620 		CAME	AC+1,[XWD 741703,607417]
+ 14090	040620	004 07 0 00 016201 		ER4	AC+1,16201		;C(AC+1) WAS MODIFIED INCORRECTLY
+ 14091	040621	321 10 0 00 040612 		JUMPL	AC+2,E16200		;LOOP ON ERROR SWITCH^
+ 14092
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 37
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0305
+
+ 14093					SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)
+ 14094
+ 14095					;END CONNECTIONS-ROTC
+ 14096					;TEST AR-MQ END BIT INPUT GATES
+ 14097					;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+ 14098					;          MQ0,1,34,35 SHLT INP GATES
+ 14099					;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+ 14100					;	   MQ0,1,34,35 SHRT INPUT GATES
+ 14101					;AC,AC+1 ARE ROTATED LEFT/RIGHT AND
+ 14102					;END BITS ARE TESTED
+ 14103					;TEST ASSUMES BOTH REGISTERS ARE
+ 14104					;CAPABLE OF ROTATING 1,-1 AND -2 BIT POSITIONS CORRECTLY
+ 14105
+ 14106					;SHIFT CONNECTIONS TEST
+ 14107					;TEST MQ35 SHLT INP-ONE'S - ROTC AC,1
+ 14108					;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+ 14109						SR2	(163,400000,0,0,0,0,0,0,1,ROTC,1)^
+ 14110					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14111					;DATA SPECIFIED IN [XWD 400000,0] AND [XWD 0,0] 1 BIT POSITIONS AND
+ 14112					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14113					;[XWD 0,1]
+ 14114
+ 14115	040622	200 06 0 00 041624 	E16300:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 14116	040623	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14117	040624	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14118	040625	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14119	040626	003 06 0 00 016301 		ER3	AC,16301			;RESULT IN AC IS INCORRECT
+ 14120	040627	312 07 0 00 041625 		CAME	AC+1,[XWD 0,1]	;IS RESULT IN AC+1 CORRECT?
+ 14121	040630	004 07 0 00 016301 		ER4	AC+1,16301		;RESULT IN AC+1 IS INCORRECT
+ 14122	040631	321 10 0 00 040622 		JUMPL	AC+2,E16300		;LOOP ON ERROR SWITCH^
+ 14123
+ 14124					;SHIFT CONNECTIONS TEST
+ 14125					;TEST MQ35 SHLT INP-ZERO'S - ROTC AC,1
+ 14126					;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+ 14127						SR2	(164,377777,-1,-1,-1,-1,-1,-1,-2,ROTC,1)^
+ 14128					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14129					;DATA SPECIFIED IN [XWD 377777,-1] AND [XWD -1,-1] 1 BIT POSITIONS AND
+ 14130					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14131					;[XWD -1,-2]
+ 14132
+ 14133	040632	200 06 0 00 041626 	E16400:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 14134	040633	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14135	040634	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14136	040635	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14137	040636	003 06 0 00 016401 		ER3	AC,16401			;RESULT IN AC IS INCORRECT
+ 14138	040637	312 07 0 00 041627 		CAME	AC+1,[XWD -1,-2]	;IS RESULT IN AC+1 CORRECT?
+ 14139	040640	004 07 0 00 016401 		ER4	AC+1,16401		;RESULT IN AC+1 IS INCORRECT
+ 14140	040641	321 10 0 00 040632 		JUMPL	AC+2,E16400		;LOOP ON ERROR SWITCH^
+ 14141
+ 14142					;SHIFT CONNECTIONS TEST
+ 14143					;TEST MQ34 SHLT INP-ONE'S - ROTC AC,1
+ 14144					;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+ 14145						SR2	(165,0,0,0,1,0,0,0,2,ROTC,1)^
+ 14146					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14147					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,1] 1 BIT POSITIONS AND
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 37-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0306
+
+ 14148					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14149					;[XWD 0,2]
+ 14150
+ 14151	040642	200 06 0 00 041615 	E16500:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14152	040643	200 07 0 00 041625 		MOVE	AC+1,[XWD 0,1]	;INITIALIZE AC+1
+ 14153	040644	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14154	040645	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14155	040646	003 06 0 00 016501 		ER3	AC,16501			;RESULT IN AC IS INCORRECT
+ 14156	040647	312 07 0 00 041623 		CAME	AC+1,[XWD 0,2]	;IS RESULT IN AC+1 CORRECT?
+ 14157	040650	004 07 0 00 016501 		ER4	AC+1,16501		;RESULT IN AC+1 IS INCORRECT
+ 14158	040651	321 10 0 00 040642 		JUMPL	AC+2,E16500		;LOOP ON ERROR SWITCH^
+ 14159					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 37-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0307
+
+ 14160					;SHIFT CONNECTIONS TEST
+ 14161					;TEST MQ34 SHLT INP-ZERO'S - ROTC AC,1
+ 14162					;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+ 14163						SR2	(166,-1,-1,-1,-2,-1,-1,-1,-3,ROTC,1)^
+ 14164					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14165					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-2] 1 BIT POSITIONS AND
+ 14166					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14167					;[XWD -1,-3]
+ 14168
+ 14169	040652	200 06 0 00 041616 	E16600:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14170	040653	200 07 0 00 041627 		MOVE	AC+1,[XWD -1,-2]	;INITIALIZE AC+1
+ 14171	040654	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14172	040655	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14173	040656	003 06 0 00 016601 		ER3	AC,16601			;RESULT IN AC IS INCORRECT
+ 14174	040657	312 07 0 00 041630 		CAME	AC+1,[XWD -1,-3]	;IS RESULT IN AC+1 CORRECT?
+ 14175	040660	004 07 0 00 016601 		ER4	AC+1,16601		;RESULT IN AC+1 IS INCORRECT
+ 14176	040661	321 10 0 00 040652 		JUMPL	AC+2,E16600		;LOOP ON ERROR SWITCH^
+ 14177
+ 14178					;SHIFT CONNECTIONS TEST
+ 14179					;TEST MQ1 SHLT INP-ONE'S - ROTC AC,1
+ 14180					;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+ 14181						SR2	(167,0,0,100000,0,0,0,200000,0,ROTC,1)^
+ 14182					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14183					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 100000,0] 1 BIT POSITIONS AND
+ 14184					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14185					;[XWD 200000,0]
+ 14186
+ 14187	040662	200 06 0 00 041615 	E16700:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14188	040663	200 07 0 00 041631 		MOVE	AC+1,[XWD 100000,0]	;INITIALIZE AC+1
+ 14189	040664	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14190	040665	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14191	040666	003 06 0 00 016701 		ER3	AC,16701			;RESULT IN AC IS INCORRECT
+ 14192	040667	312 07 0 00 041632 		CAME	AC+1,[XWD 200000,0]	;IS RESULT IN AC+1 CORRECT?
+ 14193	040670	004 07 0 00 016701 		ER4	AC+1,16701		;RESULT IN AC+1 IS INCORRECT
+ 14194	040671	321 10 0 00 040662 		JUMPL	AC+2,E16700		;LOOP ON ERROR SWITCH^
+ 14195
+ 14196					;SHIFT CONNECTIONS TEST
+ 14197					;TEST MQ1 SHLT INP-ZERO'S - ROTC AC,1
+ 14198					;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+ 14199						SR2	(170,-1,-1,677777,-1,-1,-1,577777,-1,ROTC,1)^
+ 14200					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14201					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD 677777,-1] 1 BIT POSITIONS AND
+ 14202					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14203					;[XWD 577777,-1]
+ 14204
+ 14205	040672	200 06 0 00 041616 	E17000:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14206	040673	200 07 0 00 041633 		MOVE	AC+1,[XWD 677777,-1]	;INITIALIZE AC+1
+ 14207	040674	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14208	040675	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14209	040676	003 06 0 00 017001 		ER3	AC,17001			;RESULT IN AC IS INCORRECT
+ 14210	040677	312 07 0 00 041634 		CAME	AC+1,[XWD 577777,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14211	040700	004 07 0 00 017001 		ER4	AC+1,17001		;RESULT IN AC+1 IS INCORRECT
+ 14212	040701	321 10 0 00 040672 		JUMPL	AC+2,E17000		;LOOP ON ERROR SWITCH^
+ 14213					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 37-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0308
+
+ 14214					;SHIFT CONNECTIONS TEST
+ 14215					;TEST MQ0 SHLT INP-ONE'S - ROTC AC,1
+ 14216					;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+ 14217						SR2	(171,0,0,200000,0,0,0,400000,0,ROTC,1)^
+ 14218					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14219					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 200000,0] 1 BIT POSITIONS AND
+ 14220					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14221					;[XWD 400000,0]
+ 14222
+ 14223	040702	200 06 0 00 041615 	E17100:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14224	040703	200 07 0 00 041632 		MOVE	AC+1,[XWD 200000,0]	;INITIALIZE AC+1
+ 14225	040704	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14226	040705	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14227	040706	003 06 0 00 017101 		ER3	AC,17101			;RESULT IN AC IS INCORRECT
+ 14228	040707	312 07 0 00 041624 		CAME	AC+1,[XWD 400000,0]	;IS RESULT IN AC+1 CORRECT?
+ 14229	040710	004 07 0 00 017101 		ER4	AC+1,17101		;RESULT IN AC+1 IS INCORRECT
+ 14230	040711	321 10 0 00 040702 		JUMPL	AC+2,E17100		;LOOP ON ERROR SWITCH^
+ 14231
+ 14232					;SHIFT CONNECTIONS TEST
+ 14233					;TEST MQ0 SHLT INP-ZERO'S - ROTC AC,1
+ 14234					;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+ 14235						SR2	(172,-1,-1,577777,-1,-1,-1,377777,-1,ROTC,1)^
+ 14236					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14237					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD 577777,-1] 1 BIT POSITIONS AND
+ 14238					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14239					;[XWD 377777,-1]
+ 14240
+ 14241	040712	200 06 0 00 041616 	E17200:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14242	040713	200 07 0 00 041634 		MOVE	AC+1,[XWD 577777,-1]	;INITIALIZE AC+1
+ 14243	040714	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14244	040715	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14245	040716	003 06 0 00 017201 		ER3	AC,17201			;RESULT IN AC IS INCORRECT
+ 14246	040717	312 07 0 00 041626 		CAME	AC+1,[XWD 377777,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14247	040720	004 07 0 00 017201 		ER4	AC+1,17201		;RESULT IN AC+1 IS INCORRECT
+ 14248	040721	321 10 0 00 040712 		JUMPL	AC+2,E17200		;LOOP ON ERROR SWITCH^
+ 14249
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 38
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0309
+
+ 14250					;SHIFT CONNECTIONS TEST
+ 14251					;TEST AR35 SHLT INP-ONE'S - ROTC AC,1
+ 14252					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 14253						SR2	(173,0,0,400000,0,0,1,0,0,ROTC,1)^
+ 14254					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14255					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 400000,0] 1 BIT POSITIONS AND
+ 14256					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,1] AND
+ 14257					;[XWD 0,0]
+ 14258
+ 14259	040722	200 06 0 00 041615 	E17300:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14260	040723	200 07 0 00 041624 		MOVE	AC+1,[XWD 400000,0]	;INITIALIZE AC+1
+ 14261	040724	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14262	040725	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 14263	040726	003 06 0 00 017301 		ER3	AC,17301			;RESULT IN AC IS INCORRECT
+ 14264	040727	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14265	040730	004 07 0 00 017301 		ER4	AC+1,17301		;RESULT IN AC+1 IS INCORRECT
+ 14266	040731	321 10 0 00 040722 		JUMPL	AC+2,E17300		;LOOP ON ERROR SWITCH^
+ 14267
+ 14268					;SHIFT CONNECTIONS TEST
+ 14269					;TEST AR35 SHLT INP-ZERO'S - ROTC AC,1
+ 14270					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 14271						SR2	(174,-1,-1,377777,-1,-1,-2,-1,-1,ROTC,1)^
+ 14272					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14273					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD 377777,-1] 1 BIT POSITIONS AND
+ 14274					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-2] AND
+ 14275					;[XWD -1,-1]
+ 14276
+ 14277	040732	200 06 0 00 041616 	E17400:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14278	040733	200 07 0 00 041626 		MOVE	AC+1,[XWD 377777,-1]	;INITIALIZE AC+1
+ 14279	040734	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14280	040735	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 14281	040736	003 06 0 00 017401 		ER3	AC,17401			;RESULT IN AC IS INCORRECT
+ 14282	040737	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14283	040740	004 07 0 00 017401 		ER4	AC+1,17401		;RESULT IN AC+1 IS INCORRECT
+ 14284	040741	321 10 0 00 040732 		JUMPL	AC+2,E17400		;LOOP ON ERROR SWITCH^
+ 14285
+ 14286					;SHIFT CONNECTIONS TEST
+ 14287					;TEST AR34 SHLT INP-ONE'S - ROTC AC,1
+ 14288					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 14289						SR2	(175,0,1,0,0,0,2,0,0,ROTC,1)^
+ 14290					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14291					;DATA SPECIFIED IN [XWD 0,1] AND [XWD 0,0] 1 BIT POSITIONS AND
+ 14292					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,2] AND
+ 14293					;[XWD 0,0]
+ 14294
+ 14295	040742	200 06 0 00 041625 	E17500:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 14296	040743	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14297	040744	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14298	040745	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 14299	040746	003 06 0 00 017501 		ER3	AC,17501			;RESULT IN AC IS INCORRECT
+ 14300	040747	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14301	040750	004 07 0 00 017501 		ER4	AC+1,17501		;RESULT IN AC+1 IS INCORRECT
+ 14302	040751	321 10 0 00 040742 		JUMPL	AC+2,E17500		;LOOP ON ERROR SWITCH^
+ 14303
+ 14304					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 38-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0310
+
+ 14305					;TEST AR34 SHLT INP-ZERO'S - ROTC AC,1
+ 14306					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 14307						SR2	(176,-1,-2,-1,-1,-1,-3,-1,-1,ROTC,1)^
+ 14308					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14309					;DATA SPECIFIED IN [XWD -1,-2] AND [XWD -1,-1] 1 BIT POSITIONS AND
+ 14310					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-3] AND
+ 14311					;[XWD -1,-1]
+ 14312
+ 14313	040752	200 06 0 00 041627 	E17600:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 14314	040753	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14315	040754	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14316	040755	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 14317	040756	003 06 0 00 017601 		ER3	AC,17601			;RESULT IN AC IS INCORRECT
+ 14318	040757	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14319	040760	004 07 0 00 017601 		ER4	AC+1,17601		;RESULT IN AC+1 IS INCORRECT
+ 14320	040761	321 10 0 00 040752 		JUMPL	AC+2,E17600		;LOOP ON ERROR SWITCH^
+ 14321					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 38-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0311
+
+ 14322					;SHIFT CONNECTIONS TEST
+ 14323					;TEST AR1 SHLT INP-ONE'S - ROTC AC,1
+ 14324					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 14325						SR2	(177,100000,0,0,0,200000,0,0,0,ROTC,1)^
+ 14326					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14327					;DATA SPECIFIED IN [XWD 100000,0] AND [XWD 0,0] 1 BIT POSITIONS AND
+ 14328					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 200000,0] AND
+ 14329					;[XWD 0,0]
+ 14330
+ 14331	040762	200 06 0 00 041631 	E17700:	MOVE	AC,[XWD 100000,0]	;INITIALIZE AC
+ 14332	040763	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14333	040764	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14334	040765	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 14335	040766	003 06 0 00 017701 		ER3	AC,17701			;RESULT IN AC IS INCORRECT
+ 14336	040767	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14337	040770	004 07 0 00 017701 		ER4	AC+1,17701		;RESULT IN AC+1 IS INCORRECT
+ 14338	040771	321 10 0 00 040762 		JUMPL	AC+2,E17700		;LOOP ON ERROR SWITCH^
+ 14339
+ 14340					;SHIFT CONNECTIONS TEST
+ 14341					;TEST AR1 SHLT INP-ZERO'S - ROTC AC,1
+ 14342					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 14343						SR2	(200,677777,-1,-1,-1,577777,-1,-1,-1,ROTC,1)^
+ 14344					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14345					;DATA SPECIFIED IN [XWD 677777,-1] AND [XWD -1,-1] 1 BIT POSITIONS AND
+ 14346					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 577777,-1] AND
+ 14347					;[XWD -1,-1]
+ 14348
+ 14349	040772	200 06 0 00 041633 	E20000:	MOVE	AC,[XWD 677777,-1]	;INITIALIZE AC
+ 14350	040773	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14351	040774	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14352	040775	312 06 0 00 041634 		CAME	AC,[XWD 577777,-1]	;IS RESULT IN AC CORRECT?
+ 14353	040776	003 06 0 00 020001 		ER3	AC,20001			;RESULT IN AC IS INCORRECT
+ 14354	040777	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14355	041000	004 07 0 00 020001 		ER4	AC+1,20001		;RESULT IN AC+1 IS INCORRECT
+ 14356	041001	321 10 0 00 040772 		JUMPL	AC+2,E20000		;LOOP ON ERROR SWITCH^
+ 14357
+ 14358					;SHIFT CONNECTIONS TEST
+ 14359					;TEST AR0 SHLT INP-ONE'S - ROTC AC,1
+ 14360					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 14361						SR2	(201,200000,0,0,0,400000,0,0,0,ROTC,1)^
+ 14362					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14363					;DATA SPECIFIED IN [XWD 200000,0] AND [XWD 0,0] 1 BIT POSITIONS AND
+ 14364					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 400000,0] AND
+ 14365					;[XWD 0,0]
+ 14366
+ 14367	041002	200 06 0 00 041632 	E20100:	MOVE	AC,[XWD 200000,0]	;INITIALIZE AC
+ 14368	041003	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14369	041004	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14370	041005	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 14371	041006	003 06 0 00 020101 		ER3	AC,20101			;RESULT IN AC IS INCORRECT
+ 14372	041007	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14373	041010	004 07 0 00 020101 		ER4	AC+1,20101		;RESULT IN AC+1 IS INCORRECT
+ 14374	041011	321 10 0 00 041002 		JUMPL	AC+2,E20100		;LOOP ON ERROR SWITCH^
+ 14375
+ 14376					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 38-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0312
+
+ 14377					;TEST AR0 SHLT INP-ZERO'S - ROTC AC,1
+ 14378					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 14379						SR2	(202,577777,-1,-1,-1,377777,-1,-1,-1,ROTC,1)^
+ 14380					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14381					;DATA SPECIFIED IN [XWD 577777,-1] AND [XWD -1,-1] 1 BIT POSITIONS AND
+ 14382					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 377777,-1] AND
+ 14383					;[XWD -1,-1]
+ 14384
+ 14385	041012	200 06 0 00 041634 	E20200:	MOVE	AC,[XWD 577777,-1]	;INITIALIZE AC
+ 14386	041013	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14387	041014	245 06 0 00 000001 		ROTC	AC,1			;*SHIFT/ROTATE COMBINED 1 PLACES
+ 14388	041015	312 06 0 00 041626 		CAME	AC,[XWD 377777,-1]	;IS RESULT IN AC CORRECT?
+ 14389	041016	003 06 0 00 020201 		ER3	AC,20201			;RESULT IN AC IS INCORRECT
+ 14390	041017	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14391	041020	004 07 0 00 020201 		ER4	AC+1,20201		;RESULT IN AC+1 IS INCORRECT
+ 14392	041021	321 10 0 00 041012 		JUMPL	AC+2,E20200		;LOOP ON ERROR SWITCH^
+ 14393
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 39
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0313
+
+ 14394					;SHIFT CONNECTIONS TEST
+ 14395					;TEST AR0 SHRT INP-ONE'S - ROTC AC,-1
+ 14396					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 14397						SR2	(203,0,0,0,1,400000,0,0,0,ROTC,-1)^
+ 14398					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14399					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,1] -1 BIT POSITIONS AND
+ 14400					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 400000,0] AND
+ 14401					;[XWD 0,0]
+ 14402
+ 14403	041022	200 06 0 00 041615 	E20300:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14404	041023	200 07 0 00 041625 		MOVE	AC+1,[XWD 0,1]	;INITIALIZE AC+1
+ 14405	041024	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14406	041025	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 14407	041026	003 06 0 00 020301 		ER3	AC,20301			;RESULT IN AC IS INCORRECT
+ 14408	041027	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14409	041030	004 07 0 00 020301 		ER4	AC+1,20301		;RESULT IN AC+1 IS INCORRECT
+ 14410	041031	321 10 0 00 041022 		JUMPL	AC+2,E20300		;LOOP ON ERROR SWITCH^
+ 14411
+ 14412					;SHIFT CONNECTIONS TEST
+ 14413					;TEST AR0 SHRT INP-ZERO'S - ROTC AC,-1
+ 14414					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 14415						SR2	(204,-1,-1,-1,-2,377777,-1,-1,-1,ROTC,-1)^
+ 14416					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14417					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-2] -1 BIT POSITIONS AND
+ 14418					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 377777,-1] AND
+ 14419					;[XWD -1,-1]
+ 14420
+ 14421	041032	200 06 0 00 041616 	E20400:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14422	041033	200 07 0 00 041627 		MOVE	AC+1,[XWD -1,-2]	;INITIALIZE AC+1
+ 14423	041034	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14424	041035	312 06 0 00 041626 		CAME	AC,[XWD 377777,-1]	;IS RESULT IN AC CORRECT?
+ 14425	041036	003 06 0 00 020401 		ER3	AC,20401			;RESULT IN AC IS INCORRECT
+ 14426	041037	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14427	041040	004 07 0 00 020401 		ER4	AC+1,20401		;RESULT IN AC+1 IS INCORRECT
+ 14428	041041	321 10 0 00 041032 		JUMPL	AC+2,E20400		;LOOP ON ERROR SWITCH^
+ 14429
+ 14430					;SHIFT CONNECTIONS TEST
+ 14431					;TEST AR1 SHRT INP-ONE'S - ROTC AC,-1
+ 14432					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 14433						SR2	(205,400000,0,0,0,200000,0,0,0,ROTC,-1)^
+ 14434					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14435					;DATA SPECIFIED IN [XWD 400000,0] AND [XWD 0,0] -1 BIT POSITIONS AND
+ 14436					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 200000,0] AND
+ 14437					;[XWD 0,0]
+ 14438
+ 14439	041042	200 06 0 00 041624 	E20500:	MOVE	AC,[XWD 400000,0]	;INITIALIZE AC
+ 14440	041043	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14441	041044	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14442	041045	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 14443	041046	003 06 0 00 020501 		ER3	AC,20501			;RESULT IN AC IS INCORRECT
+ 14444	041047	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14445	041050	004 07 0 00 020501 		ER4	AC+1,20501		;RESULT IN AC+1 IS INCORRECT
+ 14446	041051	321 10 0 00 041042 		JUMPL	AC+2,E20500		;LOOP ON ERROR SWITCH^
+ 14447
+ 14448					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 39-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0314
+
+ 14449					;TEST AR1 SHRT INP-ZERO'S - ROTC AC,-1
+ 14450					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 14451						SR2	(206,377777,-1,-1,-1,577777,-1,-1,-1,ROTC,-1)^
+ 14452					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14453					;DATA SPECIFIED IN [XWD 377777,-1] AND [XWD -1,-1] -1 BIT POSITIONS AND
+ 14454					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 577777,-1] AND
+ 14455					;[XWD -1,-1]
+ 14456
+ 14457	041052	200 06 0 00 041626 	E20600:	MOVE	AC,[XWD 377777,-1]	;INITIALIZE AC
+ 14458	041053	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14459	041054	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14460	041055	312 06 0 00 041634 		CAME	AC,[XWD 577777,-1]	;IS RESULT IN AC CORRECT?
+ 14461	041056	003 06 0 00 020601 		ER3	AC,20601			;RESULT IN AC IS INCORRECT
+ 14462	041057	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14463	041060	004 07 0 00 020601 		ER4	AC+1,20601		;RESULT IN AC+1 IS INCORRECT
+ 14464	041061	321 10 0 00 041052 		JUMPL	AC+2,E20600		;LOOP ON ERROR SWITCH^
+ 14465					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 39-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0315
+
+ 14466					;SHIFT CONNECTIONS TEST
+ 14467					;TEST AR34 SHRT INP-ONE'S - ROTC AC,-1
+ 14468					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 14469						SR2	(207,0,4,0,0,0,2,0,0,ROTC,-1)^
+ 14470					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14471					;DATA SPECIFIED IN [XWD 0,4] AND [XWD 0,0] -1 BIT POSITIONS AND
+ 14472					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,2] AND
+ 14473					;[XWD 0,0]
+ 14474
+ 14475	041062	200 06 0 00 041622 	E20700:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 14476	041063	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14477	041064	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14478	041065	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 14479	041066	003 06 0 00 020701 		ER3	AC,20701			;RESULT IN AC IS INCORRECT
+ 14480	041067	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14481	041070	004 07 0 00 020701 		ER4	AC+1,20701		;RESULT IN AC+1 IS INCORRECT
+ 14482	041071	321 10 0 00 041062 		JUMPL	AC+2,E20700		;LOOP ON ERROR SWITCH^
+ 14483
+ 14484					;SHIFT CONNECTIONS TEST
+ 14485					;TEST AR34 SHRT INP-ZERO'S - ROTC AC,-1
+ 14486					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 14487						SR2	(210,-1,-5,-1,-1,-1,-3,-1,-1,ROTC,-1)^
+ 14488					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14489					;DATA SPECIFIED IN [XWD -1,-5] AND [XWD -1,-1] -1 BIT POSITIONS AND
+ 14490					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-3] AND
+ 14491					;[XWD -1,-1]
+ 14492
+ 14493	041072	200 06 0 00 041635 	E21000:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 14494	041073	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14495	041074	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14496	041075	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 14497	041076	003 06 0 00 021001 		ER3	AC,21001			;RESULT IN AC IS INCORRECT
+ 14498	041077	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14499	041100	004 07 0 00 021001 		ER4	AC+1,21001		;RESULT IN AC+1 IS INCORRECT
+ 14500	041101	321 10 0 00 041072 		JUMPL	AC+2,E21000		;LOOP ON ERROR SWITCH^
+ 14501
+ 14502					;SHIFT CONNECTIONS TEST
+ 14503					;TEST AR35 SHRT INP-ONE'S - ROTC AC,-1
+ 14504					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 14505						SR2	(211,0,2,0,0,0,1,0,0,ROTC,-1)^
+ 14506					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14507					;DATA SPECIFIED IN [XWD 0,2] AND [XWD 0,0] -1 BIT POSITIONS AND
+ 14508					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,1] AND
+ 14509					;[XWD 0,0]
+ 14510
+ 14511	041102	200 06 0 00 041623 	E21100:	MOVE	AC,[XWD 0,2]	;INITIALIZE AC
+ 14512	041103	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14513	041104	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14514	041105	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 14515	041106	003 06 0 00 021101 		ER3	AC,21101			;RESULT IN AC IS INCORRECT
+ 14516	041107	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14517	041110	004 07 0 00 021101 		ER4	AC+1,21101		;RESULT IN AC+1 IS INCORRECT
+ 14518	041111	321 10 0 00 041102 		JUMPL	AC+2,E21100		;LOOP ON ERROR SWITCH^
+ 14519
+ 14520					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 39-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0316
+
+ 14521					;TEST AR35 SHRT INP-ZERO'S - ROTC AC,-1
+ 14522					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 14523						SR2	(212,-1,-3,-1,-1,-1,-2,-1,-1,ROTC,-1)^
+ 14524					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14525					;DATA SPECIFIED IN [XWD -1,-3] AND [XWD -1,-1] -1 BIT POSITIONS AND
+ 14526					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-2] AND
+ 14527					;[XWD -1,-1]
+ 14528
+ 14529	041112	200 06 0 00 041630 	E21200:	MOVE	AC,[XWD -1,-3]	;INITIALIZE AC
+ 14530	041113	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14531	041114	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14532	041115	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 14533	041116	003 06 0 00 021201 		ER3	AC,21201			;RESULT IN AC IS INCORRECT
+ 14534	041117	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14535	041120	004 07 0 00 021201 		ER4	AC+1,21201		;RESULT IN AC+1 IS INCORRECT
+ 14536	041121	321 10 0 00 041112 		JUMPL	AC+2,E21200		;LOOP ON ERROR SWITCH^
+ 14537
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 40
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0317
+
+ 14538					;SHIFT CONNECTIONS TEST
+ 14539					;TEST MQ0 SHRT INP-ONE'S - ROTC AC,-1
+ 14540					;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+ 14541						SR2	(213,0,1,0,0,0,0,400000,0,ROTC,-1)^
+ 14542					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14543					;DATA SPECIFIED IN [XWD 0,1] AND [XWD 0,0] -1 BIT POSITIONS AND
+ 14544					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14545					;[XWD 400000,0]
+ 14546
+ 14547	041122	200 06 0 00 041625 	E21300:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 14548	041123	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14549	041124	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14550	041125	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14551	041126	003 06 0 00 021301 		ER3	AC,21301			;RESULT IN AC IS INCORRECT
+ 14552	041127	312 07 0 00 041624 		CAME	AC+1,[XWD 400000,0]	;IS RESULT IN AC+1 CORRECT?
+ 14553	041130	004 07 0 00 021301 		ER4	AC+1,21301		;RESULT IN AC+1 IS INCORRECT
+ 14554	041131	321 10 0 00 041122 		JUMPL	AC+2,E21300		;LOOP ON ERROR SWITCH^
+ 14555
+ 14556					;SHIFT CONNECTIONS TEST
+ 14557					;TEST MQ0 SHRT INP-ZERO'S - ROTC AC,-1
+ 14558					;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+ 14559						SR2	(214,-1,-2,-1,-1,-1,-1,377777,-1,ROTC,-1)^
+ 14560					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14561					;DATA SPECIFIED IN [XWD -1,-2] AND [XWD -1,-1] -1 BIT POSITIONS AND
+ 14562					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14563					;[XWD 377777,-1]
+ 14564
+ 14565	041132	200 06 0 00 041627 	E21400:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 14566	041133	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14567	041134	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14568	041135	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14569	041136	003 06 0 00 021401 		ER3	AC,21401			;RESULT IN AC IS INCORRECT
+ 14570	041137	312 07 0 00 041626 		CAME	AC+1,[XWD 377777,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14571	041140	004 07 0 00 021401 		ER4	AC+1,21401		;RESULT IN AC+1 IS INCORRECT
+ 14572	041141	321 10 0 00 041132 		JUMPL	AC+2,E21400		;LOOP ON ERROR SWITCH^
+ 14573
+ 14574					;SHIFT CONNECTIONS TEST
+ 14575					;TEST MQ1 SHRT INP-ONE'S - ROTC AC,-1
+ 14576					;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+ 14577						SR2	(215,0,0,400000,0,0,0,200000,0,ROTC,-1)^
+ 14578					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14579					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 400000,0] -1 BIT POSITIONS AND
+ 14580					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14581					;[XWD 200000,0]
+ 14582
+ 14583	041142	200 06 0 00 041615 	E21500:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14584	041143	200 07 0 00 041624 		MOVE	AC+1,[XWD 400000,0]	;INITIALIZE AC+1
+ 14585	041144	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14586	041145	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14587	041146	003 06 0 00 021501 		ER3	AC,21501			;RESULT IN AC IS INCORRECT
+ 14588	041147	312 07 0 00 041632 		CAME	AC+1,[XWD 200000,0]	;IS RESULT IN AC+1 CORRECT?
+ 14589	041150	004 07 0 00 021501 		ER4	AC+1,21501		;RESULT IN AC+1 IS INCORRECT
+ 14590	041151	321 10 0 00 041142 		JUMPL	AC+2,E21500		;LOOP ON ERROR SWITCH^
+ 14591
+ 14592					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 40-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0318
+
+ 14593					;TEST MQ1 SHRT INP-ZERO'S - ROTC AC,-1
+ 14594					;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+ 14595						SR2	(216,-1,-1,377777,-1,-1,-1,577777,-1,ROTC,-1)^
+ 14596					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14597					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD 377777,-1] -1 BIT POSITIONS AND
+ 14598					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14599					;[XWD 577777,-1]
+ 14600
+ 14601	041152	200 06 0 00 041616 	E21600:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14602	041153	200 07 0 00 041626 		MOVE	AC+1,[XWD 377777,-1]	;INITIALIZE AC+1
+ 14603	041154	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14604	041155	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14605	041156	003 06 0 00 021601 		ER3	AC,21601			;RESULT IN AC IS INCORRECT
+ 14606	041157	312 07 0 00 041634 		CAME	AC+1,[XWD 577777,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14607	041160	004 07 0 00 021601 		ER4	AC+1,21601		;RESULT IN AC+1 IS INCORRECT
+ 14608	041161	321 10 0 00 041152 		JUMPL	AC+2,E21600		;LOOP ON ERROR SWITCH^
+ 14609					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 40-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0319
+
+ 14610					;SHIFT CONNECTIONS TEST
+ 14611					;TEST MQ34 SHRT INP-ONE'S - ROTC AC,-1
+ 14612					;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+ 14613						SR2	(217,0,0,0,4,0,0,0,2,ROTC,-1)^
+ 14614					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14615					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,4] -1 BIT POSITIONS AND
+ 14616					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14617					;[XWD 0,2]
+ 14618
+ 14619	041162	200 06 0 00 041615 	E21700:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14620	041163	200 07 0 00 041622 		MOVE	AC+1,[XWD 0,4]	;INITIALIZE AC+1
+ 14621	041164	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14622	041165	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14623	041166	003 06 0 00 021701 		ER3	AC,21701			;RESULT IN AC IS INCORRECT
+ 14624	041167	312 07 0 00 041623 		CAME	AC+1,[XWD 0,2]	;IS RESULT IN AC+1 CORRECT?
+ 14625	041170	004 07 0 00 021701 		ER4	AC+1,21701		;RESULT IN AC+1 IS INCORRECT
+ 14626	041171	321 10 0 00 041162 		JUMPL	AC+2,E21700		;LOOP ON ERROR SWITCH^
+ 14627
+ 14628					;SHIFT CONNECTIONS TEST
+ 14629					;TEST MQ34 SHRT INP-ZERO'S - ROTC AC,-1
+ 14630					;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+ 14631						SR2	(220,-1,-1,-1,-5,-1,-1,-1,-3,ROTC,-1)^
+ 14632					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14633					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-5] -1 BIT POSITIONS AND
+ 14634					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14635					;[XWD -1,-3]
+ 14636
+ 14637	041172	200 06 0 00 041616 	E22000:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14638	041173	200 07 0 00 041635 		MOVE	AC+1,[XWD -1,-5]	;INITIALIZE AC+1
+ 14639	041174	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14640	041175	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14641	041176	003 06 0 00 022001 		ER3	AC,22001			;RESULT IN AC IS INCORRECT
+ 14642	041177	312 07 0 00 041630 		CAME	AC+1,[XWD -1,-3]	;IS RESULT IN AC+1 CORRECT?
+ 14643	041200	004 07 0 00 022001 		ER4	AC+1,22001		;RESULT IN AC+1 IS INCORRECT
+ 14644	041201	321 10 0 00 041172 		JUMPL	AC+2,E22000		;LOOP ON ERROR SWITCH^
+ 14645
+ 14646					;SHIFT CONNECTIONS TEST
+ 14647					;TEST MQ35 SHRT INP-ONE'S - ROTC AC,-1
+ 14648					;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+ 14649						SR2	(221,0,0,0,2,0,0,0,1,ROTC,-1)^
+ 14650					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14651					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,2] -1 BIT POSITIONS AND
+ 14652					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14653					;[XWD 0,1]
+ 14654
+ 14655	041202	200 06 0 00 041615 	E22100:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14656	041203	200 07 0 00 041623 		MOVE	AC+1,[XWD 0,2]	;INITIALIZE AC+1
+ 14657	041204	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14658	041205	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14659	041206	003 06 0 00 022101 		ER3	AC,22101			;RESULT IN AC IS INCORRECT
+ 14660	041207	312 07 0 00 041625 		CAME	AC+1,[XWD 0,1]	;IS RESULT IN AC+1 CORRECT?
+ 14661	041210	004 07 0 00 022101 		ER4	AC+1,22101		;RESULT IN AC+1 IS INCORRECT
+ 14662	041211	321 10 0 00 041202 		JUMPL	AC+2,E22100		;LOOP ON ERROR SWITCH^
+ 14663
+ 14664					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 40-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0320
+
+ 14665					;TEST MQ35 SHRT INP-ZERO'S - ROTC AC,-1
+ 14666					;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+ 14667						SR2	(222,-1,-1,-1,-3,-1,-1,-1,-2,ROTC,-1)^
+ 14668					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14669					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-3] -1 BIT POSITIONS AND
+ 14670					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14671					;[XWD -1,-2]
+ 14672
+ 14673	041212	200 06 0 00 041616 	E22200:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14674	041213	200 07 0 00 041630 		MOVE	AC+1,[XWD -1,-3]	;INITIALIZE AC+1
+ 14675	041214	245 06 0 00 777777 		ROTC	AC,-1			;*SHIFT/ROTATE COMBINED -1 PLACES
+ 14676	041215	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14677	041216	003 06 0 00 022201 		ER3	AC,22201			;RESULT IN AC IS INCORRECT
+ 14678	041217	312 07 0 00 041627 		CAME	AC+1,[XWD -1,-2]	;IS RESULT IN AC+1 CORRECT?
+ 14679	041220	004 07 0 00 022201 		ER4	AC+1,22201		;RESULT IN AC+1 IS INCORRECT
+ 14680	041221	321 10 0 00 041212 		JUMPL	AC+2,E22200		;LOOP ON ERROR SWITCH^
+ 14681
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 41
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0321
+
+ 14682					;SHIFT CONNECTIONS TEST
+ 14683					;TEST AR0 SHRT INP-ONE'S - ROTC AC,-2
+ 14684					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 14685						SR2	(223,0,0,0,2,400000,0,0,0,ROTC,-2)^
+ 14686					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14687					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,2] -2 BIT POSITIONS AND
+ 14688					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 400000,0] AND
+ 14689					;[XWD 0,0]
+ 14690
+ 14691	041222	200 06 0 00 041615 	E22300:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14692	041223	200 07 0 00 041623 		MOVE	AC+1,[XWD 0,2]	;INITIALIZE AC+1
+ 14693	041224	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14694	041225	312 06 0 00 041624 		CAME	AC,[XWD 400000,0]	;IS RESULT IN AC CORRECT?
+ 14695	041226	003 06 0 00 022301 		ER3	AC,22301			;RESULT IN AC IS INCORRECT
+ 14696	041227	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14697	041230	004 07 0 00 022301 		ER4	AC+1,22301		;RESULT IN AC+1 IS INCORRECT
+ 14698	041231	321 10 0 00 041222 		JUMPL	AC+2,E22300		;LOOP ON ERROR SWITCH^
+ 14699
+ 14700					;SHIFT CONNECTIONS TEST
+ 14701					;TEST AR0 SHRT INP-ZERO'S - ROTC AC,-2
+ 14702					;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+ 14703						SR2	(224,-1,-1,-1,-3,377777,-1,-1,-1,ROTC,-2)^
+ 14704					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14705					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-3] -2 BIT POSITIONS AND
+ 14706					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 377777,-1] AND
+ 14707					;[XWD -1,-1]
+ 14708
+ 14709	041232	200 06 0 00 041616 	E22400:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14710	041233	200 07 0 00 041630 		MOVE	AC+1,[XWD -1,-3]	;INITIALIZE AC+1
+ 14711	041234	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14712	041235	312 06 0 00 041626 		CAME	AC,[XWD 377777,-1]	;IS RESULT IN AC CORRECT?
+ 14713	041236	003 06 0 00 022401 		ER3	AC,22401			;RESULT IN AC IS INCORRECT
+ 14714	041237	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14715	041240	004 07 0 00 022401 		ER4	AC+1,22401		;RESULT IN AC+1 IS INCORRECT
+ 14716	041241	321 10 0 00 041232 		JUMPL	AC+2,E22400		;LOOP ON ERROR SWITCH^
+ 14717
+ 14718					;SHIFT CONNECTIONS TEST
+ 14719					;TEST AR1 SHRT INP-ONE'S - ROTC AC,-2
+ 14720					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 14721						SR2	(225,0,0,0,1,200000,0,0,0,ROTC,-2)^
+ 14722					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14723					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,1] -2 BIT POSITIONS AND
+ 14724					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 200000,0] AND
+ 14725					;[XWD 0,0]
+ 14726
+ 14727	041242	200 06 0 00 041615 	E22500:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14728	041243	200 07 0 00 041625 		MOVE	AC+1,[XWD 0,1]	;INITIALIZE AC+1
+ 14729	041244	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14730	041245	312 06 0 00 041632 		CAME	AC,[XWD 200000,0]	;IS RESULT IN AC CORRECT?
+ 14731	041246	003 06 0 00 022501 		ER3	AC,22501			;RESULT IN AC IS INCORRECT
+ 14732	041247	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14733	041250	004 07 0 00 022501 		ER4	AC+1,22501		;RESULT IN AC+1 IS INCORRECT
+ 14734	041251	321 10 0 00 041242 		JUMPL	AC+2,E22500		;LOOP ON ERROR SWITCH^
+ 14735
+ 14736					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 41-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0322
+
+ 14737					;TEST AR1 SHRT INP-ZERO'S - ROTC AC,-2
+ 14738					;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+ 14739						SR2	(226,-1,-1,-1,-2,577777,-1,-1,-1,ROTC,-2)^
+ 14740					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14741					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-2] -2 BIT POSITIONS AND
+ 14742					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 577777,-1] AND
+ 14743					;[XWD -1,-1]
+ 14744
+ 14745	041252	200 06 0 00 041616 	E22600:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14746	041253	200 07 0 00 041627 		MOVE	AC+1,[XWD -1,-2]	;INITIALIZE AC+1
+ 14747	041254	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14748	041255	312 06 0 00 041634 		CAME	AC,[XWD 577777,-1]	;IS RESULT IN AC CORRECT?
+ 14749	041256	003 06 0 00 022601 		ER3	AC,22601			;RESULT IN AC IS INCORRECT
+ 14750	041257	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14751	041260	004 07 0 00 022601 		ER4	AC+1,22601		;RESULT IN AC+1 IS INCORRECT
+ 14752	041261	321 10 0 00 041252 		JUMPL	AC+2,E22600		;LOOP ON ERROR SWITCH^
+ 14753					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 41-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0323
+
+ 14754					;SHIFT CONNECTIONS TEST
+ 14755					;TEST AR34 SHRT INP-ONE'S - ROTC AC,-2
+ 14756					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 14757						SR2	(227,0,10,0,0,0,2,0,0,ROTC,-2)^
+ 14758					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14759					;DATA SPECIFIED IN [XWD 0,10] AND [XWD 0,0] -2 BIT POSITIONS AND
+ 14760					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,2] AND
+ 14761					;[XWD 0,0]
+ 14762
+ 14763	041262	200 06 0 00 041617 	E22700:	MOVE	AC,[XWD 0,10]	;INITIALIZE AC
+ 14764	041263	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14765	041264	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14766	041265	312 06 0 00 041623 		CAME	AC,[XWD 0,2]	;IS RESULT IN AC CORRECT?
+ 14767	041266	003 06 0 00 022701 		ER3	AC,22701			;RESULT IN AC IS INCORRECT
+ 14768	041267	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14769	041270	004 07 0 00 022701 		ER4	AC+1,22701		;RESULT IN AC+1 IS INCORRECT
+ 14770	041271	321 10 0 00 041262 		JUMPL	AC+2,E22700		;LOOP ON ERROR SWITCH^
+ 14771
+ 14772					;SHIFT CONNECTIONS TEST
+ 14773					;TEST AR34 SHRT INP-ZERO'S - ROTC AC,-2
+ 14774					;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+ 14775						SR2	(230,-1,-11,-1,-1,-1,-3,-1,-1,ROTC,-2)^
+ 14776					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14777					;DATA SPECIFIED IN [XWD -1,-11] AND [XWD -1,-1] -2 BIT POSITIONS AND
+ 14778					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-3] AND
+ 14779					;[XWD -1,-1]
+ 14780
+ 14781	041272	200 06 0 00 041636 	E23000:	MOVE	AC,[XWD -1,-11]	;INITIALIZE AC
+ 14782	041273	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14783	041274	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14784	041275	312 06 0 00 041630 		CAME	AC,[XWD -1,-3]	;IS RESULT IN AC CORRECT?
+ 14785	041276	003 06 0 00 023001 		ER3	AC,23001			;RESULT IN AC IS INCORRECT
+ 14786	041277	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14787	041300	004 07 0 00 023001 		ER4	AC+1,23001		;RESULT IN AC+1 IS INCORRECT
+ 14788	041301	321 10 0 00 041272 		JUMPL	AC+2,E23000		;LOOP ON ERROR SWITCH^
+ 14789
+ 14790					;SHIFT CONNECTIONS TEST
+ 14791					;TEST AR35 SHRT INP-ONE'S - ROTC AC,-2
+ 14792					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 14793						SR2	(231,0,4,0,0,0,1,0,0,ROTC,-2)^
+ 14794					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14795					;DATA SPECIFIED IN [XWD 0,4] AND [XWD 0,0] -2 BIT POSITIONS AND
+ 14796					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,1] AND
+ 14797					;[XWD 0,0]
+ 14798
+ 14799	041302	200 06 0 00 041622 	E23100:	MOVE	AC,[XWD 0,4]	;INITIALIZE AC
+ 14800	041303	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14801	041304	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14802	041305	312 06 0 00 041625 		CAME	AC,[XWD 0,1]	;IS RESULT IN AC CORRECT?
+ 14803	041306	003 06 0 00 023101 		ER3	AC,23101			;RESULT IN AC IS INCORRECT
+ 14804	041307	312 07 0 00 041615 		CAME	AC+1,[XWD 0,0]	;IS RESULT IN AC+1 CORRECT?
+ 14805	041310	004 07 0 00 023101 		ER4	AC+1,23101		;RESULT IN AC+1 IS INCORRECT
+ 14806	041311	321 10 0 00 041302 		JUMPL	AC+2,E23100		;LOOP ON ERROR SWITCH^
+ 14807
+ 14808					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 41-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0324
+
+ 14809					;TEST AR35 SHRT INP-ZERO'S - ROTC AC,-2
+ 14810					;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+ 14811						SR2	(232,-1,-5,-1,-1,-1,-2,-1,-1,ROTC,-2)^
+ 14812					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14813					;DATA SPECIFIED IN [XWD -1,-5] AND [XWD -1,-1] -2 BIT POSITIONS AND
+ 14814					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-2] AND
+ 14815					;[XWD -1,-1]
+ 14816
+ 14817	041312	200 06 0 00 041635 	E23200:	MOVE	AC,[XWD -1,-5]	;INITIALIZE AC
+ 14818	041313	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14819	041314	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14820	041315	312 06 0 00 041627 		CAME	AC,[XWD -1,-2]	;IS RESULT IN AC CORRECT?
+ 14821	041316	003 06 0 00 023201 		ER3	AC,23201			;RESULT IN AC IS INCORRECT
+ 14822	041317	312 07 0 00 041616 		CAME	AC+1,[XWD -1,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14823	041320	004 07 0 00 023201 		ER4	AC+1,23201		;RESULT IN AC+1 IS INCORRECT
+ 14824	041321	321 10 0 00 041312 		JUMPL	AC+2,E23200		;LOOP ON ERROR SWITCH^
+ 14825
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 42
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0325
+
+ 14826					;SHIFT CONNECTIONS TEST
+ 14827					;TEST MQ0 SHRT INP-ONE'S - ROTC AC,-2
+ 14828					;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+ 14829						SR2	(233,0,2,0,0,0,0,400000,0,ROTC,-2)^
+ 14830					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14831					;DATA SPECIFIED IN [XWD 0,2] AND [XWD 0,0] -2 BIT POSITIONS AND
+ 14832					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14833					;[XWD 400000,0]
+ 14834
+ 14835	041322	200 06 0 00 041623 	E23300:	MOVE	AC,[XWD 0,2]	;INITIALIZE AC
+ 14836	041323	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14837	041324	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14838	041325	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14839	041326	003 06 0 00 023301 		ER3	AC,23301			;RESULT IN AC IS INCORRECT
+ 14840	041327	312 07 0 00 041624 		CAME	AC+1,[XWD 400000,0]	;IS RESULT IN AC+1 CORRECT?
+ 14841	041330	004 07 0 00 023301 		ER4	AC+1,23301		;RESULT IN AC+1 IS INCORRECT
+ 14842	041331	321 10 0 00 041322 		JUMPL	AC+2,E23300		;LOOP ON ERROR SWITCH^
+ 14843
+ 14844					;SHIFT CONNECTIONS TEST
+ 14845					;TEST MQ0 SHRT INP-ZERO'S - ROTC AC,-2
+ 14846					;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+ 14847						SR2	(234,-1,-3,-1,-1,-1,-1,377777,-1,ROTC,-2)^
+ 14848					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14849					;DATA SPECIFIED IN [XWD -1,-3] AND [XWD -1,-1] -2 BIT POSITIONS AND
+ 14850					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14851					;[XWD 377777,-1]
+ 14852
+ 14853	041332	200 06 0 00 041630 	E23400:	MOVE	AC,[XWD -1,-3]	;INITIALIZE AC
+ 14854	041333	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14855	041334	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14856	041335	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14857	041336	003 06 0 00 023401 		ER3	AC,23401			;RESULT IN AC IS INCORRECT
+ 14858	041337	312 07 0 00 041626 		CAME	AC+1,[XWD 377777,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14859	041340	004 07 0 00 023401 		ER4	AC+1,23401		;RESULT IN AC+1 IS INCORRECT
+ 14860	041341	321 10 0 00 041332 		JUMPL	AC+2,E23400		;LOOP ON ERROR SWITCH^
+ 14861
+ 14862					;SHIFT CONNECTIONS TEST
+ 14863					;TEST MQ1 SHRT INP-ONE'S - ROTC AC,-2
+ 14864					;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+ 14865						SR2	(235,0,1,0,0,0,0,200000,0,ROTC,-2)^
+ 14866					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14867					;DATA SPECIFIED IN [XWD 0,1] AND [XWD 0,0] -2 BIT POSITIONS AND
+ 14868					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14869					;[XWD 200000,0]
+ 14870
+ 14871	041342	200 06 0 00 041625 	E23500:	MOVE	AC,[XWD 0,1]	;INITIALIZE AC
+ 14872	041343	200 07 0 00 041615 		MOVE	AC+1,[XWD 0,0]	;INITIALIZE AC+1
+ 14873	041344	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14874	041345	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14875	041346	003 06 0 00 023501 		ER3	AC,23501			;RESULT IN AC IS INCORRECT
+ 14876	041347	312 07 0 00 041632 		CAME	AC+1,[XWD 200000,0]	;IS RESULT IN AC+1 CORRECT?
+ 14877	041350	004 07 0 00 023501 		ER4	AC+1,23501		;RESULT IN AC+1 IS INCORRECT
+ 14878	041351	321 10 0 00 041342 		JUMPL	AC+2,E23500		;LOOP ON ERROR SWITCH^
+ 14879
+ 14880					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 42-1
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0326
+
+ 14881					;TEST MQ1 SHRT INP-ZERO'S - ROTC AC,-2
+ 14882					;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+ 14883						SR2	(236,-1,-2,-1,-1,-1,-1,577777,-1,ROTC,-2)^
+ 14884					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14885					;DATA SPECIFIED IN [XWD -1,-2] AND [XWD -1,-1] -2 BIT POSITIONS AND
+ 14886					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14887					;[XWD 577777,-1]
+ 14888
+ 14889	041352	200 06 0 00 041627 	E23600:	MOVE	AC,[XWD -1,-2]	;INITIALIZE AC
+ 14890	041353	200 07 0 00 041616 		MOVE	AC+1,[XWD -1,-1]	;INITIALIZE AC+1
+ 14891	041354	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14892	041355	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14893	041356	003 06 0 00 023601 		ER3	AC,23601			;RESULT IN AC IS INCORRECT
+ 14894	041357	312 07 0 00 041634 		CAME	AC+1,[XWD 577777,-1]	;IS RESULT IN AC+1 CORRECT?
+ 14895	041360	004 07 0 00 023601 		ER4	AC+1,23601		;RESULT IN AC+1 IS INCORRECT
+ 14896	041361	321 10 0 00 041352 		JUMPL	AC+2,E23600		;LOOP ON ERROR SWITCH^
+ 14897					PAGE
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 42-2
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0327
+
+ 14898					;SHIFT CONNECTIONS TEST
+ 14899					;TEST MQ34 SHRT INP-ONE'S - ROTC AC,-2
+ 14900					;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+ 14901						SR2	(237,0,0,0,10,0,0,0,2,ROTC,-2)^
+ 14902					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14903					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,10] -2 BIT POSITIONS AND
+ 14904					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14905					;[XWD 0,2]
+ 14906
+ 14907	041362	200 06 0 00 041615 	E23700:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14908	041363	200 07 0 00 041617 		MOVE	AC+1,[XWD 0,10]	;INITIALIZE AC+1
+ 14909	041364	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14910	041365	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14911	041366	003 06 0 00 023701 		ER3	AC,23701			;RESULT IN AC IS INCORRECT
+ 14912	041367	312 07 0 00 041623 		CAME	AC+1,[XWD 0,2]	;IS RESULT IN AC+1 CORRECT?
+ 14913	041370	004 07 0 00 023701 		ER4	AC+1,23701		;RESULT IN AC+1 IS INCORRECT
+ 14914	041371	321 10 0 00 041362 		JUMPL	AC+2,E23700		;LOOP ON ERROR SWITCH^
+ 14915
+ 14916					;SHIFT CONNECTIONS TEST
+ 14917					;TEST MQ34 SHRT INP-ZERO'S - ROTC AC,-2
+ 14918					;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+ 14919						SR2	(240,-1,-1,-1,-11,-1,-1,-1,-3,ROTC,-2)^
+ 14920					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14921					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-11] -2 BIT POSITIONS AND
+ 14922					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14923					;[XWD -1,-3]
+ 14924
+ 14925	041372	200 06 0 00 041616 	E24000:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14926	041373	200 07 0 00 041636 		MOVE	AC+1,[XWD -1,-11]	;INITIALIZE AC+1
+ 14927	041374	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14928	041375	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14929	041376	003 06 0 00 024001 		ER3	AC,24001			;RESULT IN AC IS INCORRECT
+ 14930	041377	312 07 0 00 041630 		CAME	AC+1,[XWD -1,-3]	;IS RESULT IN AC+1 CORRECT?
+ 14931	041400	004 07 0 00 024001 		ER4	AC+1,24001		;RESULT IN AC+1 IS INCORRECT
+ 14932	041401	321 10 0 00 041372 		JUMPL	AC+2,E24000		;LOOP ON ERROR SWITCH^
+ 14933
+ 14934					;SHIFT CONNECTIONS TEST
+ 14935					;TEST MQ35 SHRT INP-ONE'S - ROTC AC,-2
+ 14936					;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+ 14937						SR2	(241,0,0,0,4,0,0,0,1,ROTC,-2)^
+ 14938					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14939					;DATA SPECIFIED IN [XWD 0,0] AND [XWD 0,4] -2 BIT POSITIONS AND
+ 14940					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD 0,0] AND
+ 14941					;[XWD 0,1]
+ 14942
+ 14943	041402	200 06 0 00 041615 	E24100:	MOVE	AC,[XWD 0,0]	;INITIALIZE AC
+ 14944	041403	200 07 0 00 041622 		MOVE	AC+1,[XWD 0,4]	;INITIALIZE AC+1
+ 14945	041404	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14946	041405	312 06 0 00 041615 		CAME	AC,[XWD 0,0]	;IS RESULT IN AC CORRECT?
+ 14947	041406	003 06 0 00 024101 		ER3	AC,24101			;RESULT IN AC IS INCORRECT
+ 14948	041407	312 07 0 00 041625 		CAME	AC+1,[XWD 0,1]	;IS RESULT IN AC+1 CORRECT?
+ 14949	041410	004 07 0 00 024101 		ER4	AC+1,24101		;RESULT IN AC+1 IS INCORRECT
+ 14950	041411	321 10 0 00 041402 		JUMPL	AC+2,E24100		;LOOP ON ERROR SWITCH^
+ 14951
+ 14952					;SHIFT CONNECTIONS TEST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 42-3
+DAKAIM	MAC	20-JAN-77 10:36		DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)                                   SEQ 0328
+
+ 14953					;TEST MQ35 SHRT INP-ZERO'S - ROTC AC,-2
+ 14954					;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+ 14955						SR2	(242,-1,-1,-1,-5,-1,-1,-1,-2,ROTC,-2)^
+ 14956					;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+ 14957					;DATA SPECIFIED IN [XWD -1,-1] AND [XWD -1,-5] -2 BIT POSITIONS AND
+ 14958					;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD -1,-1] AND
+ 14959					;[XWD -1,-2]
+ 14960
+ 14961	041412	200 06 0 00 041616 	E24200:	MOVE	AC,[XWD -1,-1]	;INITIALIZE AC
+ 14962	041413	200 07 0 00 041635 		MOVE	AC+1,[XWD -1,-5]	;INITIALIZE AC+1
+ 14963	041414	245 06 0 00 777776 		ROTC	AC,-2			;*SHIFT/ROTATE COMBINED -2 PLACES
+ 14964	041415	312 06 0 00 041616 		CAME	AC,[XWD -1,-1]	;IS RESULT IN AC CORRECT?
+ 14965	041416	003 06 0 00 024201 		ER3	AC,24201			;RESULT IN AC IS INCORRECT
+ 14966	041417	312 07 0 00 041627 		CAME	AC+1,[XWD -1,-2]	;IS RESULT IN AC+1 CORRECT?
+ 14967	041420	004 07 0 00 024201 		ER4	AC+1,24201		;RESULT IN AC+1 IS INCORRECT
+ 14968	041421	321 10 0 00 041412 		JUMPL	AC+2,E24200		;LOOP ON ERROR SWITCH^
+ 14969
+ 14970	041422	254 00 0 00 030057 	LAST1:	JRST	BEGEND
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 1
+UUOERR	KLM	22-APR-75 01:42		*UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975                       SEQ 0329
+
+ 14971					SUBTTL	*UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975
+ 14972
+ 14973					;THIS SUBROUTINE PROVIDES ERROR REPORTING THRU THE USE OF UUO'S.
+ 14974
+ 14975	041423	202 00 0 00 041767 	ERRMES:	MOVEM	0,%ERAC0#	;SAVE AC0
+ 14976						IFDEF	EXCASB,>
+ 14983	041424	202 01 0 00 041770 		MOVEM	1,%ERAC1#	;SAVE AC1
+ 14984	041425	202 02 0 00 041771 		MOVEM	2,%ERAC2#	;SAVE AC2
+ 14985	041426	350 00 0 00 030053 		AOS	ERRTLS		;INCREMENT ERROR TOTALS
+ 14986	041427	550 00 0 00 030114 		HRRZ	0,$SVUPC	;GET PC OF UUO
+ 14987	041430	316 00 0 00 030052 		CAMN	0,ERRPC		;PC = PC OF LAST ERROR ?
+ 14988	041431	350 00 0 00 041764 		AOS	MICNT#		;YES, ADD 1 TO ERROR COUNT
+ 14989	041432	200 00 0 00 041764 		MOVE	0,MICNT
+ 14990	041433	504 00 0 00 030114 		HRL	0,$SVUPC
+ 14991	041434	336 00 0 00 030041 		SKIPN	KLFLG		;NOT KL10
+ 14992	041435	332 00 0 00 030037 		SKIPE	USER		;AND NOT USER?
+ 14993	041436	254 00 0 00 041440 		JRST	.+2
+ 14994	041437	7 004 14 0 00 000000 		DATAO	PI,0		;YES, DISPLAY ERROR PC,ERROR COUNT
+ 14995	041440	402 00 0 00 041765 		SETZM	PROCED#		;CLEAR PROCEED FLAG
+ 14996	041441	037 10 0 00 000002 		SWITCH
+ 14997	041442	603 00 0 00 040000 		TLNE	NOPNT		;PRINTOUT ?
+ 14998	041443	254 00 0 00 041556 		JRST	%ERRS1		;NO, RESTORE AC'S AND RETURN
+ 14999	041444	200 01 0 00 030113 		MOVE	1,$SVUUO
+ 15000	041445	242 01 0 00 777745 		LSH	1,-^D27
+ 15001	041446	202 01 0 00 041766 		MOVEM	1,%ACS1A#	;SAVE UUO NUMBER
+ 15002	041447	200 00 0 00 041767 		MOVE	0,%ERAC0
+ 15003	041450	200 01 0 00 041770 		MOVE	1,%ERAC1
+ 15004	041451	335 00 1 00 041763 		SKIPGE	@ERRLOP		;ERR LOOP AC > OR = 0 ?
+ 15005	041452	254 00 0 00 041610 		JRST	%ERRS4		;NO, SEE IF PRINT ALL
+ 15006	041453	402 00 0 00 041764 	%ERMS1:	SETZM	MICNT		;CLEAR ERROR COUNT
+ 15007	041454	331 00 0 00 030043 		SKIPL	MONCTL		;DIAG MON OR SYS EXER ?
+ 15008	041455	254 00 0 00 041461 		JRST	.+4		;NO, DON'T NEED TITLE
+ 15009	041456	336 00 0 00 041772 		SKIPN	%ERFST#		;FIRST ERROR ?
+ 15010	041457	037 04 0 00 000002 		PNTNM			;YES, PRINT PROGRAM TITLE
+ 15011	041460	476 00 0 00 041772 		SETOM	%ERFST
+ 15012	041461	336 00 0 00 030047 		SKIPN	PASCNT		;FIRST PASS ?
+ 15013	041462	254 00 0 00 041466 		JRST	.+4		;YES
+ 15014						PMSG	<^TEST PASS COUNT = >^
+ 15015	041463	037 02 0 00 041651 		PSIXM	[SIXBIT\^TEST PASS COUNT = _\]^
+ 15016	041464	200 00 0 00 030047 		MOVE	PASCNT
+ 15017	041465	037 15 0 00 000000 		PNTDEC
+ 15018						PMSG	<^PC =   >^
+ 15019	041466	037 02 0 00 041655 		PSIXM	[SIXBIT\^PC =   _\]^
+ 15020	041467	550 00 0 00 030114 		HRRZ	0,$SVUPC	;GET PC OF UUO
+ 15021	041470	202 00 0 00 030052 		MOVEM	0,ERRPC		;SAVE FOR COMPARE
+ 15022	041471	037 06 0 00 000000 		PNT6			;PRINT UUO ADDRESS
+ 15023						XLIST
+ 15024						IFDEF	ERDIAG,^
+ 15030	041472	037 02 0 00 041657 		PSIXM	[SIXBIT\^RESULT  = _\]^
+ 15031	041473	200 01 0 00 030113 		MOVE	1,$SVUUO	;GET AC # OF UUO
+ 15032	041474	242 01 0 00 777751 		LSH	1,-27
+ 15033	041475	405 01 0 00 000017 		ANDI	1,17
+ 15034	041476	200 00 0 01 000000 		MOVE	0,(1)		;GET C(AC)
+ 15035	041477	307 01 0 00 000001 		CAIG	1,1		;IS AC # = TO SAVE AC ?
+ 15036	041500	200 00 0 01 041767 		MOVE	0,%ERAC0(1)	;YES, GET SAVED AC
+ 15037	041501	037 13 0 00 000000 		PNTHW			;PRINT C(AC)
+ 15038
+ 15039	041502	200 00 0 00 030046 		MOVE	CONSW
+ 15040	041503	603 00 0 00 000200 		TLNE	TXTINH		;PRINT FAILURE DES AND FLT NBR ?
+ 15041	041504	254 00 0 00 041553 		JRST	%ERMORE		;NO, RESTORE AC'S ETC.
+ 15042
+ 15043					;PRINT FAILURE DESCRIPTOR
+ 15044
+ 15045	041505	200 01 0 00 041766 		MOVE	1,%ACS1A	;GET UUO NUMBER
+ 15046	041506	307 01 0 00 000001 		CAIG	1,1		;PRINT DESCRIPTOR ?
+ 15047	041507	254 00 0 00 041513 		JRST	%ERMS3		;NO, JUST PRINT FAULT NUMBER
+ 15048	041510	037 00 0 00 030242 		PCRL
+ 15049	041511	200 00 0 01 041537 		MOVE	%FLTTB(1)
+ 15050	041512	037 17 0 00 000000 		PNTAL			;PRINT FAULT DESCRIPTOR
+ 15051
+ 15052					;PRINT FAULT NUMBER
+ 15053
+ 15054	041513				%ERMS3:	PMSG	<^FAULT NUMBER = >^
+ 15055	041513	037 02 0 00 041661 		PSIXM	[SIXBIT\^FAULT NUMBER = _\]^
+ 15056	041514	201 00 0 00 041536 		MOVEI	TLET
+ 15057	041515	037 00 0 00 000000 		PNTA			;PRINT TEST LETTER
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 3
+UUOERR	KLM	22-APR-75 01:42		*UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975                       SEQ 0331
+
+ 15058
+ 15059	041516	550 00 0 00 030113 		HRRZ	$SVUUO
+ 15060	041517	602 00 0 00 700000 		TRNE	700000
+ 15061	041520	254 00 0 00 041534 		JRST	%ER6X
+ 15062	041521	602 00 0 00 070000 		TRNE	070000
+ 15063	041522	254 00 0 00 041532 		JRST	%ER5X
+ 15064	041523	602 00 0 00 007000 		TRNE	007000
+ 15065	041524	254 00 0 00 041530 		JRST	%ER4X
+ 15066	041525	037 03 0 00 000000 		PNT3			;PRINT FAULT NUMBER
+ 15067	041526	037 00 0 00 030242 	%ER7X:	PCRL
+ 15068	041527	254 00 0 00 041553 		JRST	%ERMORE
+ 15069
+ 15070	041530	037 04 0 00 000000 	%ER4X:	PNT4
+ 15071	041531	254 00 0 00 041526 		JRST	%ER7X
+ 15072	041532	037 05 0 00 000000 	%ER5X:	PNT5
+ 15073	041533	254 00 0 00 041526 		JRST	%ER7X
+ 15074	041534	037 06 0 00 000000 	%ER6X:	PNT6
+ 15075	041535	254 00 0 00 041526 		JRST	%ER7X
+ 15076
+ 15077					;FAILURE DESCRIPTORS
+ 15078
+ 15079	041536	000000	000000		TLET:	0			;TEST LETTER
+ 15080	041537	000000	000000		%FLTTB:	0			;DESCRIPTOR TABLE
+ 15081	041540	000000	041615		%NODES:	[0]			;NO DESCRIPTOR
+ 15082	041541	000000	041615		SPDES:	[0]			;SPECIAL USER FAILURE DESCRIPTOR
+ 15083	041542	000000	041664		$ACF:	[ASCIZ/C(AC) FAILED/]
+ 15084	041543	000000	041667		%AC1F:	[ASCIZ/C(AC+1) FAILED/]
+ 15085	041544	000000	041672		%EF:	[ASCIZ/C(E) FAILED/]
+ 15086	041545	000000	041675		%E1F:	[ASCIZ/C(E+1) FAILED/]
+ 15087	041546	000000	041700		%ARF:	[ASCIZ/C(C(ACR)) FAILED/]
+ 15088	041547	000000	041704		%AR1F:	[ASCIZ/C(C(ACR+1)) FAILED/]
+ 15089	041550	000000	041710		%ALF:	[ASCIZ/C(C(ACL)) FAILED/]
+ 15090	041551	000000	041714		%EEF:	[ASCIZ/C(C(E)) FAILED/]
+ 15091	041552	000000	041717		%FF:	[ASCIZ/FLAG FAILED/]
+ 15092					>
+ 15093						XLIST
+ 15094						LIST
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 8
+UUOERR	KLM	22-APR-75 01:42		*UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975                       SEQ 0332
+
+ 15095					;RESTORE AC'S AND RETURN OR HALT
+ 15096
+ 15097	041553	256 00 0 00 030101 	%ERMORE:XCT	ERMORE
+ 15098	041554	037 16 0 00 000002 		PNTMGN			;PRINT MARGINS
+ 15099	041555	037 10 0 00 000002 		SWITCH
+ 15100
+ 15101	041556	037 07 0 00 000003 	%ERRS1:	TTALTM			;ALTMODE CHECK
+ 15102	041557	254 00 0 00 041563 		JRST	.+4		;NONE
+ 15103	041560	201 00 0 00 041563 		MOVEI	.+3		;SAVE CONT ADDRESS
+ 15104	041561	202 00 0 00 000130 		MOVEM	JOBOPC
+ 15105	041562	254 00 1 00 030063 		JRST	@ALTMGO		;PERFORM TRANSFER
+ 15106	041563	200 00 0 00 030046 		MOVE	CONSW
+ 15107	041564	603 00 0 00 002000 		TLNE	0,ERSTOP	;HALT ON ERROR SWITCH SET ?
+ 15108	041565	037 14 0 00 000004 		ERRHLT			;YES
+ 15109	041566	607 00 0 00 004000 		TLNN	0,LOOPER	;LOOP ON ERROR SWITCH SET ?
+ 15110	041567	476 00 0 00 041765 		SETOM	PROCED		;NO, SET THE PROCEED FLAG
+ 15111	041570	603 00 0 00 010000 		TLNE	0,DING		;RING BELL SWITCH SET ?
+ 15112	041571	037 01 0 00 000007 		PBELL			;YES, GO RING BELL
+ 15113
+ 15114	041572	200 02 0 00 041771 	%ERRS2:	MOVE	2,%ERAC2	;RESTORE AC'S
+ 15115	041573	200 01 0 00 041770 		MOVE	1,%ERAC1
+ 15116	041574	476 00 1 00 041763 		SETOM	@ERRLOP		;SET C(ERR LOOP AC) TO -1
+ 15117	041575	336 00 0 00 041765 		SKIPN	PROCED		;LOOP ON ERROR ?
+ 15118	041576	254 00 0 00 041606 		JRST	%ERRS5		;YES
+ 15119	041577	350 00 1 00 041763 		AOS	@ERRLOP		;NO, INC C(ERR LOOP AC)
+ 15120	041600	350 00 1 00 041763 		AOS	@ERRLOP		;SO IT ='S 1
+ 15121	041601	331 00 0 00 030043 		SKIPL	MONCTL		;UNDER DIAGNOSTIC MONITOR ?
+ 15122	041602	254 00 0 00 041606 		JRST	%ERRS5		;NO, CONTINUE PROGRAM
+ 15123	041603	200 00 0 00 030053 		MOVE	0,ERRTLS	;YES
+ 15124	041604	301 00 0 00 000005 		CAIL	0,5		;PRINTED ALLOWED ERRORS ?
+ 15125	041605	254 00 0 00 030061 		JRST	$BEND2
+ 15126
+ 15127	041606	200 00 0 00 041767 	%ERRS5:	MOVE	0,%ERAC0	;NO, CONTINUE PROGRAM
+ 15128						IFDEF	EXCASB,>
+ 15135	041607	254 00 0 00 030065 		JRST	UUOEXT
+ 15136
+ 15137	041610	200 00 0 00 030046 	%ERRS4:	MOVE	0,CONSW
+ 15138	041611	607 00 0 00 001000 		TLNN	PALERS		;PRINT ALL ERRORS ?
+ 15139	041612	254 00 0 00 041556 		JRST	%ERRS1		;NO
+ 15140	041613	254 00 0 00 041453 		JRST	%ERMS1		;YES
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 1
+STOR	KLM	18-JAN-77 11:42		*STOR* RESERVED STORAGE, JAN 18,1977                                               SEQ 0333
+
+ 15141					SUBTTL	*STOR* RESERVED STORAGE, JAN 18,1977
+ 15142
+ 15143					;PROGRAM LITERALS
+ 15144
+ 15145						XLIST
+ 15146					IFNDEF	$LPAPER,
+ 15147	041614					LIT
+ 15148	041614	101 111 000 000 000
+ 15149	041615	000000	000000
+ 15150	041616	777777	777777
+ 15151	041617	000000	000010
+ 15152	041620	741703	607417
+ 15153	041621	000000	000020
+ 15154	041622	000000	000004
+ 15155	041623	000000	000002
+ 15156	041624	400000	000000
+ 15157	041625	000000	000001
+ 15158	041626	377777	777777
+ 15159	041627	777777	777776
+ 15160	041630	777777	777775
+ 15161	041631	100000	000000
+ 15162	041632	200000	000000
+ 15163	041633	677777	777777
+ 15164	041634	577777	777777
+ 15165	041635	777777	777773
+ 15166	041636	777777	777767
+ 15167	041637	777777	777774
+ 15168	041640	577777	777776
+ 15169	041641	377777	777776
+ 15170	041642	177777	777777
+ 15171	041643	377777	777775
+ 15172	041644	177777	777775
+ 15173	041645	177777	777776
+ 15174	041646	600000	000000
+ 15175	041647	700000	000000
+ 15176	041650	077777	777777
+ 15177	041651	76 64 45 63 64 00
+ 15178	041652	60 41 63 63 00 43
+ 15179	041653	57 65 56 64 00 35
+ 15180	041654	00 77 00 00 00 00
+ 15181	041655	76 60 43 00 35 00
+ 15182	041656	00 00 77 00 00 00
+ 15183	041657	76 62 45 63 65 54
+ 15184	041660	64 00 00 35 00 77
+ 15185	041661	76 46 41 65 54 64
+ 15186	041662	00 56 65 55 42 45
+ 15187	041663	62 00 35 00 77 00
+ 15188	041664	103 050 101 103 051
+ 15189	041665	040 106 101 111 114
+ 15190	041666	105 104 000 000 000
+ 15191	041667	103 050 101 103 053
+ 15192	041670	061 051 040 106 101
+ 15193	041671	111 114 105 104 000
+ 15194	041672	103 050 105 051 040
+ 15195	041673	106 101 111 114 105
+DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) 0,2	MACRO %52(537) 10:41 20-JAN-77 PAGE 1-1
+STOR	KLM	18-JAN-77 11:42		*STOR* RESERVED STORAGE, JAN 18,1977                                               SEQ 0334
+
+ 15196	041674	104 000 000 000 000
+ 15197	041675	103 050 105 053 061
+ 15198	041676	051 040 106 101 111
+ 15199	041677	114 105 104 000 000
+ 15200	041700	103 050 103 050 101
+ 15201	041701	103 122 051 051 040
+ 15202	041702	106 101 111 114 105
+ 15203	041703	104 000 000 000 000
+ 15204	041704	103 050 103 050 101
+ 15205	041705	103 122 053 061 051
+ 15206	041706	051 040 106 101 111
+ 15207	041707	114 105 104 000 000
+ 15208	041710	103 050 103 050 101
+ 15209	041711	103 114 051 051 040
+ 15210	041712	106 101 111 114 105
+ 15211	041713	104 000 000 000 000
+ 15212	041714	103 050 103 050 105
+ 15213	041715	051 051 040 106 101
+ 15214	041716	111 114 105 104 000
+ 15215	041717	106 114 101 107 040
+ 15216	041720	106 101 111 114 105
+ 15217	041721	104 000 000 000 000
+ 15218						LIST
+ 15219	041722	000000	000000		ENDSLD:	0
+ 15220
+ 15221					IFDEF	DEBUG,<
+ 15222	041723				PATCH:	BLOCK DEBUG		;PATCHING AREA
+ 15223					>
+ 15224
+ 15225					;PROGRAM VARIABLES
+ 15226	041763					VAR
+ 15227
+ 15228					IFDEF	PGMEND,<
+ 15229	041773	000000	000000		END:	0
+ 15230			030000			END	BEGIN	>
+
+NO ERRORS DETECTED
+
+PROGRAM BREAK IS 000000
+ABSLUTE BREAK IS 041774
+CPU TIME USED 01:03.688
+
+11K CORE USED
diff --git a/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt b/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
new file mode 100644
index 000000000..6353e6304
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
@@ -0,0 +1,1872 @@
+;DAKAI
+
+	MCNVER==0
+	DECVER==2
+
+
+	XLIST
+DEFINE	NAME	(MCNVER,DECVER)<
+
+TITLE	DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) MCNVER,DECVER
+>
+	LIST
+	LALL
+
+	NAME	\MCNVER,\DECVER
+
+;(LOGICAL SHIFT, ROTATE, ARITHMETIC SHIFT; SINGLE AND COMBINED)
+
+;COPYRIGHT 1975,1977
+;DIGITAL EQUIPMENT CORPORATION
+;MARLBORO, MASS. 01752
+
+;JOHN R. KIRCHOFF
+
+	LOC	137
+	MCNVER,,DECVER
+
+	NOSYM
+SUBTTL	DIAGNOSTIC PARAMETERS
+
+;OPERATOR DEFINITIONS
+
+OPDEF	ER1	[1B8]
+OPDEF	ER2	[2B8]
+OPDEF	ER3	[3B8]
+OPDEF	ER4	[4B8]
+OPDEF	ER5	[5B8]
+OPDEF	ER6	[6B8]
+OPDEF	ER7	[7B8]
+OPDEF	ER10	[10B8]
+OPDEF	ER11	[11B8]
+OPDEF	ER12	[12B8]
+OPDEF	ER13	[13B8]
+
+;LUUO1=ERRMES
+;LUUO2=ERRMES
+;LUUO3=ERRMES
+;LUUO4=ERRMES
+;LUUO5=ERRMES
+;LUUO6=ERRMES
+;LUUO7=ERRMES
+;LUUO10=ERRMES
+;LUUO11=ERRMES
+;LUUO12=ERRMES
+;LUUO13=ERRMES
+;SUBROUTINE ASSEMBLY DEFINITIONS
+
+KLOLD==1
+DEBUG=40
+EXCASB=1
+USRASB=1
+KA10=1
+PGMEND=1
+ERDIAG=1
+
+;SPECIAL FEATURE DEFINITIONS
+
+;SADR1=BEGIN
+;SADR2=BEGIN
+;SADR3=BEGIN
+;SADR4=BEGIN
+;SADR5=JRST BEGIN
+;SADR6=JRST BEGIN
+;SADR7=JRST BEGIN
+;SADR8=JRST BEGIN
+;SADR9=JRST BEGIN
+;SADR10=JRST BEGIN
+;SADR11=JRST BEGIN
+
+;SPECIAL FEATURE PARAMETERS
+
+PAREA0=0
+PAREA1=0
+PAREA2=0
+PAREA3=SIXBIT/DAKAI/
+PAREA4=SIXBIT/TMP/
+PAREA5=0
+PAREA6=0
+ITERAT==1000
+
+;MACROS
+
+DEFINE	SAVEAC	(A,B)<
+	MOVEI	AC+2,.		;SAVE TEST PC
+	MOVEM	AC+2,TESTPC
+	MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+	MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION>
+
+DEFINE	SETACS	(WW,XX)<
+	MOVEI	AC-1,WW		;SETUP AC-1
+	HRLI	AC-1,WW		;FOR COMPARISION
+	MOVE	AC-2,&17	;SETUP AC-2 FOR COMPARISON
+	MOVEI	AC,XX		;SETUP AC RIGHT
+	HRLI	AC,XX		;SETUP AC LEFT
+	MOVEM	AC,&17	;SETUP AC2>
+;USER DEFINED MACROS
+
+DEFINE	SR1	(T,D1A,D1B,R1A,R1B,OP,S)<
+;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD D1A,D1B] S BIT
+;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD R1A,R1B]
+;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+
+E'T'00:	MOVE	AC,[XWD D1A,D1B]	;INITIALIZE AC
+	MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+	OP	AC,S			;*SHIFT/ROTATE S BIT POSITIONS
+	CAME	AC,[XWD R1A,R1B]	;IS RESULT IN AC CORRECT?
+	ER3	AC,T'01			;RESULT IN AC IS INCORRECT
+	CAME	AC+1,[XWD 741703,607417]
+	ER4	AC+1,T'01		;C(AC+1) WAS MODIFIED INCORRECTLY
+	JUMPL	AC+2,E'T'00		;LOOP ON ERROR SWITCH>
+
+
+DEFINE	SR2	(T,D1A,D1B,D2A,D2B,R1A,R1B,R2A,R2B,OP,S)<
+;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+;DATA SPECIFIED IN [XWD D1A,D1B] AND [XWD D2A,D2B] S BIT POSITIONS AND
+;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD R1A,R1B] AND
+;[XWD R2A,R2B]
+
+E'T'00:	MOVE	AC,[XWD D1A,D1B]	;INITIALIZE AC
+	MOVE	AC+1,[XWD D2A,D2B]	;INITIALIZE AC+1
+	OP	AC,S			;*SHIFT/ROTATE COMBINED S PLACES
+	CAME	AC,[XWD R1A,R1B]	;IS RESULT IN AC CORRECT?
+	ER3	AC,T'01			;RESULT IN AC IS INCORRECT
+	CAME	AC+1,[XWD R2A,R2B]	;IS RESULT IN AC+1 CORRECT?
+	ER4	AC+1,T'01		;RESULT IN AC+1 IS INCORRECT
+	JUMPL	AC+2,E'T'00		;LOOP ON ERROR SWITCH>
+
+;EXIT:	DROPDV			;CLOSE LOGICAL OUTPUT FILE
+;	EXIT
+
+PGMNAM:	ASCIZ/
+PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC #9 SHIFT-ROTATE [DAKAI]
+/
+
+TESTPC:	0		;SUBTEST PC
+
+;INITIALIZE SUBROUTINES
+
+START:	;PGMINT
+	;MOVE	[ASCIZ/AI/]
+	;MOVEM	TLET
+
+STARTA:	JRST	E00		;GO PERFORM DIAGNOSTIC
+SUBTTL	DIAGNOSTIC SECTION - TEST FETCH, STORE AND DECODE FUNCTIONS
+
+;TEST FETCH,STORE AND DECODE
+;TEST THE ABILITY OF ROT, ROTC TO FETCH AND STORE
+;AC,AC+1
+;TESTING IS ACCOMPLISHED BY ROTATING ZERO TIMES ALL
+;ZERO'S, ALL ONE'S.
+;OPERANDS SELECTED ARE LEAST AFFECTED BY
+;INADVERTENT ROTATING
+;FAILURE OF A SC BIT TO SET,OR SC TO
+;COUNT WILL RESULT IN LOOPING
+
+
+	AC=1
+E00:	SAVEAC	(1,1)
+
+E100:	SETZ	AC,		;CLEAR AC
+	ROT	AC,0		;*ROTATE LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,101		;FETCH OR STORE FAILED
+	JUMPL	AC+2,E100	;LOOP ON ERROR SWITCH
+
+E200:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+	ROT	AC,0		;*ROTATE LEFT ZERO TIMES
+	CAME 	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,201		;FETCH OR STORE FAILED
+	JUMPL	AC+2,E200	;LOOP ON ERROR SWITCH
+
+	AC=2
+	SAVEAC	(1,1)
+
+E300:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+	ROTC	AC,0		;*ROTATE COMBINED LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,301		;FETCH OR STORE AC FAILED
+	SKIPE	AC+1		;TEST AC+1 FOR ZERO
+	ER4	AC+1,301	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E300	;LOOP ON ERROR SWITCH
+
+E400:	SETO	AC-1,		;SET UP FOR COMPARISON
+	SETOB	AC,AC+1		;SET AC,AC+1
+	ROTC	AC,0		;*ROTATE COMBINED LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,401		;FETCH OR STORE AC FAILED
+	CAME	AC+1,AC-1	;TEST AC+1 FOR A -1
+	ER4	AC+1,401	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E400	;LOOP ON ERROR SWITCH
+;TEST FETCH,STORE AND DECODE
+;TEST THE ABILITY OF LSH, LSHC TO FETCH AND STORE
+;AC,AC+1
+;TESTING IS ACCOMPLISHED BY SHIFTING ZERO TIMES ALL
+;ZERO'S ALL ONE'S
+;OPERANDS SELECTED ARE LEAST AFFECTED BY
+;INADVERTENT SHIFTING
+;FAILURE OF A SC BIT TO SET,OR SC TO
+;COUNT WILL RESULT IN LOOPING
+
+	AC=3
+	SAVEAC	(1,1)
+
+E500:	SETZ	AC,		;CLEAR AC
+	LSH	AC,0		;*SHIFT LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,501		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E500	;LOOP ON ERROR SWITCH
+
+E600:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+	LSH	AC,0		;*SHIFT LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR -1
+	ER3	AC,601		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E600	;LOOP ON ERROR SWITCH
+
+	AC=14
+	SAVEAC	(1,1)
+
+E700:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+	LSHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR 0
+	ER3	AC,701		;FETCH OR STORE AC FAILED
+	SKIPE	AC+1		;TEST AC+1 FOR 0
+	ER4	AC+1,701	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E700	;LOOP ON ERROR SWITCH
+
+E1000:	SETO	AC-1,		;SET UP FOR COMPARISON
+	SETOB	AC,AC+1		;SET AC,AC+1
+	LSHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR -1
+	ER3	AC,1001		;FETCH OR STORE AC FAILED
+	CAME	AC+1,AC-1	;TEST AC+1 FOR -1
+	ER4	AC+1,1001	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E1000	;LOOP ON ERROR SWITCH
+;TEST FETCH,STORE AND DECODE
+;TEST THE ABILITY OF ASH, ASHC TO FETCH AND STORE
+;AC,AC+1
+;TESTING IS ACCOMPLISHED BY SHIFTING ZERO TIMES ALL
+;ZERO'S ALL ONES
+;OPERANDS SELECTED ARE LEAST AFFECTED BY
+;INADVERTENT SHIFTING
+;FAILURE OF A SC BIT TO SET,OR SC TO
+;COUNT WILL RESULT IN LOOPING
+
+	AC=13
+	SAVEAC	(1,1)
+
+E1100:	SETZ	AC,		;CLEAR AC
+	ASH	AC,0		;*SHIFT LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,1101		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E1100	;LOOP ON ERROR SWITCH
+
+E1200:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+	ASH	AC,0		;*SHIFT LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,1201		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E1200	;LOOP ON ERROR SWITCH
+
+	AC=12
+	SAVEAC	(1,1)
+
+E1300:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+	ASHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR 0
+	ER3	AC,1301		;FETCH OR STORE AC FAILED
+	SKIPE	AC+1		;TEST AC+1 FOR 0
+	ER4	AC+1,1301	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E1300	;LOOP ON ERROR SWITCH
+
+E1400:	SETO	AC-1,		;SET UP FOR COMPARISON
+	SETOB	AC,AC+1		;SET AC,AC+1
+	ASHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,1401		;FETCH OR STORE AC FAILED
+	CAME	AC+1,AC-1	;TEST AC+1 FOR A -1
+	ER4	AC+1,1401	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E1400	;LOOP ON ERROR SWITCH
+SUBTTL	DIAGNOSTIC SECTION - CHECK SIGN BIT OF AC+1 FOR ASHC
+
+;VERIFY THAT THE SIGN BIT OF AC+1 IS NOT MADE TO AGREE WITH THE SIGN BIT OF AC
+;WHEN THE 'E' FIELD OF ASHC SECIFIES A SHIFT OF ZERO BIT POSITIONS.
+;HENCE, C(AC+1) IS NOT ALTERE BY 'ASHC AC,0'.
+;CHECK THIS WHEN THE SIGN BIT OF AC IS ZERO AND THE SIGN BIT OF AC+1 IS ONE.
+
+	SR2	(443,0,0,-1,-1,0,0,-1,-1,ASHC,0)
+
+;VERIFY THAT THE SIGN BIT OF AC+1 IS NOT MADE TO AGREE WITH THE SIGN BIT OF AC
+;WHEN THE 'E' FIELD OF ASHC SECIFIES A SHIFT OF ZERO BIT POSITIONS.
+;HENCE, C(AC+1) IS NOT ALTERE BY 'ASHC AC,0'.
+;CHECK THIS WHEN THE SIGN BIT OF AC IS ONE AND THE SIGN BIT OF AC+1 IS ZERO.
+	SR2	(444,-1,-1,0,0,-1,-1,0,0,ASHC,0)
+SUBTTL	DIAGNOSTIC SECTION - TEST MQ-ADDER GATING
+
+	AC=10
+	SAVEAC	(1,1)
+
+SN=1500
+	ZZ=0
+			;CHECK AC+1 RIGHT <
+E1500:	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ			;TESTED BIT
+	IFE	ZZ,
+	SETZM	AC			;CLEAR AC
+	MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+	ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+	CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+>
+PAGE
+ZZ=0
+			;CHECK AC+1 LEFT <
+	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ			;TESTED BIT
+	IFE	ZZ,
+	SETZM	AC			;CLEAR AC
+	MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+	MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+	ROTC	AC,0		;*ROT 0 BIT POSITIONS
+	CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+>
+	AC=7
+	SAVEAC	(1,1)
+
+SN=1600
+
+	ZZ=0
+
+			;CHECK AC+1 RIGHT <
+E1600:	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ+1			;TESTED BIT
+	IFE	ZZ,
+	SETOM	AC			;INITIALIZE TO ALL ONES
+	HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+	MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+	ROTC	AC,0		;*ROT 0 BIT POSITIONS
+	CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+>
+PAGE
+ZZ=0
+			;CHECK AC+1 LEFT <
+	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ+1			;TESTED BIT
+	IFE	ZZ,
+	SETOM	AC			;INITIALIZE	AC TO ALL ONES
+	HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+	MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+	ROTC	AC,0		;*ROT 0 BIT POSITIONS
+	CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - BASIC SHIFT TEST (0,1,-1,-2 BIT POSITIONS)
+
+;BASIC SHIFT TEST
+;TEST ABILITY TO SHIFT A BIT 0,1,-1 AND -2 POSITIONS
+
+	AC=4
+	SAVEAC	(1,1)
+
+;TEST ABILITY TO SHIFT A BIT ZERO POSITIONS USING LSH
+	SR1	(17,0,10,0,10,LSH,0)
+
+;TEST ABILITY TO SHIFT A BIT LEFT ONE POSITION USING LSH
+	SR1	(20,0,10,0,20,LSH,1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT ONE POSITION USING LSH
+	SR1	(442,0,10,0,4,LSH,-1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT TWO POSITIONS USING LSH
+	SR1	(21,0,10,0,2,LSH,-2)
+PAGE
+;TEST ABILITY TO SHIFT A BIT ZERO POSITIONS USING LSHC
+	SR2	(22,0,10,0,10,0,10,0,10,LSHC,0)
+
+;TEST ABILITY TO SHIFT A BIT LEFT ONE POSITION USING LSHC
+	SR2	(23,0,10,0,10,0,20,0,20,LSHC,1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT ONE POSITION USING LSHC
+	SR2	(24,0,10,0,10,0,4,0,4,LSHC,-1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT TWO POSITIONS USING LSHC
+	SR2	(25,0,10,0,10,0,2,0,2,LSHC,-2)
+SUBTTL	DIAGNOSTIC SECTION - TEST SAC FUNCTION
+
+	AC=10
+	SAVEAC	(1,1)
+
+SN=2600
+	ZZ=1
+
+		;TEST SAC
+E2600:	REPEAT	^D3,<
+SN=SN+1
+;FURTHER TEST OF SAC,SAC2
+;TEST FOR ASSERTION OF SAC INH
+;TEST ASSUMES ABILITY TO ROTATE
+;TO SOME DEGREE
+	ZZ=ZZ+ZZ
+	HRRZI	AC,400000	;SET BIT 18
+	ROT	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+	CAIN	AC,400000	;TEST FOR SAC
+	ER3	AC,SN		;STORE AC FAILED
+	JUMPL	AC+2,.-4	;LOOP ON ERROR SWITCH
+>
+PAGE
+SN=2700
+	ZZ=1
+
+		;TEST SAC
+E2700:	REPEAT	^D3,<
+SN=SN+1
+;FURTHER TEST OF SAC,SAC2
+;TEST FOR ASSERTION OF SAC INH
+;TEST ASSUMES ABILITY TO ROTATE
+;TO SOME DEGREE
+
+	ZZ=ZZ+ZZ
+	SETZ	AC,		;CLEAR AC
+	HRRZI	AC+1,400000	;SET BIT 18
+	ROTC	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+	CAIN	AC+1,400000	;TEST FOR SAC
+	ER4	AC+1,SN		;STORE AC+1 FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR
+
+;TEST ROT LEFT ONE BIT POSITION USING ALL ZEROS
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+
+	AC=11
+	SAVEAC	(1,1)
+
+E3000:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+	ER3	AC,3001		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3100	;LOOP ON ERROR SWITCH
+
+;TEST ROT LEFT ONE BIT POSITION USING ALL ONES
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+
+E3100:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ONES
+	ER3	AC,3101		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3100	;LOOP ON ERROR SWITCH
+SN=3200
+	ZZ=0
+
+		;TEST AC RIGHT HALF <
+E3200:	REPEAT 	^D18,<
+;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+;IS ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+	IFN	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC LEFT HALF <
+	REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+;ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+	IFN	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SN=3300
+	ZZ=0
+
+	;TEST AC RIGHT HALF<
+E3300:	REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+	IFN	<&377777>,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	<&777777>,<
+	HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+	;TEST AC LEFT HALF<
+	REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+	IFN	<&777777>,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	<&777777>,<
+	HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+
+;TEST ROT RIGHT ONE BIT POSITION
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD.
+;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+
+	AC=10
+	SAVEAC	(1,1)
+
+E3400:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+	ER3	AC,3401		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3400	;LOOP ON ERROR SWITCH
+
+;TEST ROT RIGHT ONE BIT POSITION
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+
+E3500:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ONES.
+	ER3	AC,3501		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3500	;LOOP ON ERROR SWITCH
+SN=3600
+	ZZ=0
+
+		;TEST AC LEFT HALF<
+E3600:	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+;BIT IS ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+	IFN	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC RIGHT HALF<
+	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+;ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+	IFN	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SN=3700
+	ZZ=1
+
+	;TEST AC LEFT HALF<
+E3700:	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+	IFN	,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=1
+
+	;TEST AC RIGHT HALF<
+	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+	IFN	,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+
+	AC=7
+	SAVEAC	(1,1)
+
+E4000:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+	ER3	AC,4001		;AD-AR GATING FAILED
+	JUMPL	AC+2,E4000	;LOOP ON ERROR SWITCH
+
+;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+
+E4100:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST AC FOR ALL ONES.
+	ER3	AC,4101		;AD-AR GATING FAILED
+	JUMPL	AC+2,E4100	;LOOP ON ERROR SWITCH
+
+SN=4200
+	ZZ=0
+
+		;TEST AC LEFT HALF<
+E4200:	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+;BIT IS ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+	IFG	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC RIGHT HALF <
+	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+;ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+	IFG	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SN=4300
+	ZZ=1
+
+		;TEST AC LEFT HALF<
+E4300:	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+	IFL	,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	IFE	,<
+	HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=1
+
+		;TEST AC RIGHT HALF<
+	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+	IFL	,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+	IFE	,<
+	HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES
+
+;TEST ROTC LEFT ONE BIT POSITION USING ALL ZEROS
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+	AC=10
+	SAVEAC	(1,1)
+
+E4400:	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+	SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+	ER4	AC+1,4401	;MQ GATING FAILED
+	JUMPL	AC+2,E4400	;LOOP ON ERROR SWITCH
+
+;TEST ROTC LEFT ONE BIT POSITION USING ALL ONES
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+E4500:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ONES
+	SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+	ER4	AC+1,4501	;MQ GATING FAILED
+	JUMPL	AC+2,E4500	;LOOP ON ERROR SWITCH
+SN=4600
+	ZZ=0
+
+		;TEST AC+1 RIGHT HALF <
+E4600:	REPEAT	^D18,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+	MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+	IFN	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+
+	ZZ=0
+
+		;TEST AC+1 LEFT HALF <
+	REPEAT	^D17,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SN=4700
+	ZZ=0
+		;TEST AC+1 RIGHT HALF <
+E4700:	REPEAT	^D18,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+;OTHER BIT IA A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL ONES
+	HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+	IFN	&777777,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC+1 LEFT HALF <
+	REPEAT	^D17,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+;OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITAILIZE AC TO ALL ONES
+	HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+	ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+;TEST ROTC RIGHT ONE BIT POSITION USING ALL ZEROS
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+	AC=7
+	SAVEAC	(1,1)
+
+E5000:	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+	SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+	ER4	AC+1,5001	;MQ GRTING FAILED
+	JUMPL	AC+2,E5000	;LOOP ON ERROR SWITCH
+
+;TEST ROTC,RIGHT ONE BIT POSITION USING ALL ONES
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NONZERO AFTER ROTATING
+
+E5100:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1	TO ALL ONES
+	SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+	ER4	AC+1,5101	;MQ GATING FAILED
+	JUMPL	AC+2,E5100	;LOOP ON ERROR SWITCH
+SN=5200
+	ZZ=0
+		;TEST AC+1 LEFT HALF<
+E5200:	REPEAT	^D18,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+	IFN	,	<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+>
+PAGE
+	ZZ=0
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT	^D17,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SN=5300
+	ZZ=1
+
+		;TEST AC+1 LEFT HALF<
+E5300:	REPEAT	^D18,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL CNES
+	HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+	IFN	&777777,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+>
+PAGE
+	ZZ=1
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT	^D17,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL CNES
+	HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+;TEST ROTC RIGHT TWO BIT POSITIONS USING ALL ZEROS
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+	AC=6
+	SAVEAC	(1,1)
+E5400:
+	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+	SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+	ER4	AC+1,5401	;MQ GATING FAILED
+	JUMPL	AC+2,E5400	;LOOP ON ERROR SWITCH
+
+;TEST ROTC RIGHT TWO BIT POSITIONS USING ALL ONES
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS ZERO AFTER ROTATING
+
+E5500:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ONES
+	SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+	ER4	AC+1,5501	;MQ GATING FAILED
+	JUMPL	AC+2,E5500	;LOOP ON ERROR SWITCH
+SN=5600
+	ZZ=0
+
+		;TEST AC+1 LEFT HALF<
+E5600:	REPEAT	^D18,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+	IFG	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT	^D16,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SN=5700
+	ZZ=1
+
+ 		;TEST AC+1 LEFT HALF <
+E5700:	REPEAT ^D18,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL ONES
+	HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+	IFG	&777777,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=1
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT ^D16,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL ONES
+	HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)
+
+;END CONNECTIONS-ROT
+;TEST AR END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;AC IS ROTATED LEFT/RIGHT
+;AND END BITS TESTED
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(60,400000,0,0,1,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(61,377777,-1,-1,-2,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(62,0,1,0,2,ROT,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(63,-1,-2,-1,-3,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(64,100000,0,200000,0,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(65,677777,-1,577777,-1,ROT,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(66,200000,0,400000,0,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(67,577777,-1,377777,-1,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(70,0,1,400000,0,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(71,-1,-2,377777,-1,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(72,400000,0,200000,0,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(73,377777,-1,577777,-1,ROT,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(74,0,4,0,2,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(75,-1,-5,-1,-3,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(76,0,2,0,1,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(77,-1,-3,-1,-2,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(100,0,2,400000,0,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(101,-1,-3,377777,-1,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(102,0,1,200000,0,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(103,-1,-2,577777,-1,ROT,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(104,0,10,0,2,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(105,-1,-11,-1,-3,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(106,0,4,0,1,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(107,-1,-5,-1,-2,ROT,-2)
+
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)
+
+;END CONNECTIONS-LSH
+;TEST AR END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;AC IS SHIFTED LEFT/RIGHT
+;AND END BITS TESTED
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(110,-1,-1,-1,-2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(111,0,1,0,2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(112,-1,-2,-1,-4,LSH,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(113,100000,0,200000,0,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(114,677777,-1,577777,-2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(115,200000,0,400000,0,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(116,577777,-1,377777,-2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(117,-1,-1,377777,-1,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(120,400000,0,200000,0,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(121,377777,-1,177777,-1,LSH,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(122,0,4,0,2,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(123,-1,-5,377777,-3,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(124,0,2,0,1,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(125,-1,-3,377777,-2,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(126,-1,-1,177777,-1,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(127,-1,-1,177777,-1,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(130,0,10,0,2,LSH,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(131,-1,-11,177777,-3,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(132,0,4,0,1,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(133,-1,-5,177777,-2,LSH,-2)
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)
+
+;END CONNECTIONS-ASH
+;TEST AR END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;AC IS SHIFTD LEFT/RIGHT
+;AND END BITS TESTED
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(134,-1,-1,-1,-2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(135,0,1,0,2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(136,-1,-2,-1,-4,ASH,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(137,100000,0,200000,0,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(140,677777,-1,577777,-2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(141,400000,0,400000,0,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(142,377777,-1,377777,-2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(143,400000,0,600000,0,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(144,377777,-1,177777,-1,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(145,400000,0,600000,0,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(146,377777,-1,177777,-1,ASH,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(147,0,4,0,2,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(150,-1,-5,-1,-3,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(151,0,2,0,1,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(152,-1,-3,-1,-2,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(153,400000,0,700000,0,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(154,377777,-1,077777,-1,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(155,400000,0,700000,0,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(156,377777,-1,077777,-1,ASH,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(157,0,10,0,2,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(160,-1,-11,-1,-3,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(161,0,4,0,1,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(162,-1,-5,-1,-2,ASH,-2)
+
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)
+
+;END CONNECTIONS-ROTC
+;TEST AR-MQ END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;          MQ0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;	   MQ0,1,34,35 SHRT INPUT GATES
+;AC,AC+1 ARE ROTATED LEFT/RIGHT AND
+;END BITS ARE TESTED
+;TEST ASSUMES BOTH REGISTERS ARE
+;CAPABLE OF ROTATING 1,-1 AND -2 BIT POSITIONS CORRECTLY
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(163,400000,0,0,0,0,0,0,1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(164,377777,-1,-1,-1,-1,-1,-1,-2,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(165,0,0,0,1,0,0,0,2,ROTC,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(166,-1,-1,-1,-2,-1,-1,-1,-3,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(167,0,0,100000,0,0,0,200000,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(170,-1,-1,677777,-1,-1,-1,577777,-1,ROTC,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(171,0,0,200000,0,0,0,400000,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(172,-1,-1,577777,-1,-1,-1,377777,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(173,0,0,400000,0,0,1,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(174,-1,-1,377777,-1,-1,-2,-1,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(175,0,1,0,0,0,2,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(176,-1,-2,-1,-1,-1,-3,-1,-1,ROTC,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(177,100000,0,0,0,200000,0,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(200,677777,-1,-1,-1,577777,-1,-1,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(201,200000,0,0,0,400000,0,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(202,577777,-1,-1,-1,377777,-1,-1,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(203,0,0,0,1,400000,0,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(204,-1,-1,-1,-2,377777,-1,-1,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(205,400000,0,0,0,200000,0,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(206,377777,-1,-1,-1,577777,-1,-1,-1,ROTC,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(207,0,4,0,0,0,2,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(210,-1,-5,-1,-1,-1,-3,-1,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(211,0,2,0,0,0,1,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(212,-1,-3,-1,-1,-1,-2,-1,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(213,0,1,0,0,0,0,400000,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(214,-1,-2,-1,-1,-1,-1,377777,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(215,0,0,400000,0,0,0,200000,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(216,-1,-1,377777,-1,-1,-1,577777,-1,ROTC,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(217,0,0,0,4,0,0,0,2,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(220,-1,-1,-1,-5,-1,-1,-1,-3,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(221,0,0,0,2,0,0,0,1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(222,-1,-1,-1,-3,-1,-1,-1,-2,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(223,0,0,0,2,400000,0,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(224,-1,-1,-1,-3,377777,-1,-1,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(225,0,0,0,1,200000,0,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(226,-1,-1,-1,-2,577777,-1,-1,-1,ROTC,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(227,0,10,0,0,0,2,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(230,-1,-11,-1,-1,-1,-3,-1,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(231,0,4,0,0,0,1,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(232,-1,-5,-1,-1,-1,-2,-1,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(233,0,2,0,0,0,0,400000,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(234,-1,-3,-1,-1,-1,-1,377777,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(235,0,1,0,0,0,0,200000,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(236,-1,-2,-1,-1,-1,-1,577777,-1,ROTC,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(237,0,0,0,10,0,0,0,2,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(240,-1,-1,-1,-11,-1,-1,-1,-3,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(241,0,0,0,4,0,0,0,1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(242,-1,-1,-1,-5,-1,-1,-1,-2,ROTC,-2)
+
+LAST1:	;JRST	BEGEND
diff --git a/apps/pdp10/diags/klad/dakai/DAKAIM.MAC.txt b/apps/pdp10/diags/klad/dakai/DAKAIM.MAC.txt
new file mode 100644
index 000000000..f44b42c6c
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakai/DAKAIM.MAC.txt
@@ -0,0 +1,1733 @@
+EXIT:	DROPDV			;CLOSE LOGICAL OUTPUT FILE
+	EXIT
+
+PGMNAM:	ASCIZ/
+PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC #9 SHIFT-ROTATE [DAKAI]
+/
+
+;INITIALIZE SUBROUTINES
+
+START:	PGMINT
+	MOVE	[ASCIZ/AI/]
+	MOVEM	TLET
+
+STARTA:	JRST	E00		;GO PERFORM DIAGNOSTIC
+SUBTTL	DIAGNOSTIC SECTION - TEST FETCH, STORE AND DECODE FUNCTIONS
+
+;TEST FETCH,STORE AND DECODE
+;TEST THE ABILITY OF ROT, ROTC TO FETCH AND STORE
+;AC,AC+1
+;TESTING IS ACCOMPLISHED BY ROTATING ZERO TIMES ALL
+;ZERO'S, ALL ONE'S.
+;OPERANDS SELECTED ARE LEAST AFFECTED BY
+;INADVERTENT ROTATING
+;FAILURE OF A SC BIT TO SET,OR SC TO
+;COUNT WILL RESULT IN LOOPING
+
+
+	AC=1
+E00:	SAVEAC	(1,1)
+
+E100:	SETZ	AC,		;CLEAR AC
+	ROT	AC,0		;*ROTATE LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,101		;FETCH OR STORE FAILED
+	JUMPL	AC+2,E100	;LOOP ON ERROR SWITCH
+
+E200:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+	ROT	AC,0		;*ROTATE LEFT ZERO TIMES
+	CAME 	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,201		;FETCH OR STORE FAILED
+	JUMPL	AC+2,E200	;LOOP ON ERROR SWITCH
+
+	AC=2
+	SAVEAC	(1,1)
+
+E300:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+	ROTC	AC,0		;*ROTATE COMBINED LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,301		;FETCH OR STORE AC FAILED
+	SKIPE	AC+1		;TEST AC+1 FOR ZERO
+	ER4	AC+1,301	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E300	;LOOP ON ERROR SWITCH
+
+E400:	SETO	AC-1,		;SET UP FOR COMPARISON
+	SETOB	AC,AC+1		;SET AC,AC+1
+	ROTC	AC,0		;*ROTATE COMBINED LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,401		;FETCH OR STORE AC FAILED
+	CAME	AC+1,AC-1	;TEST AC+1 FOR A -1
+	ER4	AC+1,401	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E400	;LOOP ON ERROR SWITCH
+;TEST FETCH,STORE AND DECODE
+;TEST THE ABILITY OF LSH, LSHC TO FETCH AND STORE
+;AC,AC+1
+;TESTING IS ACCOMPLISHED BY SHIFTING ZERO TIMES ALL
+;ZERO'S ALL ONE'S
+;OPERANDS SELECTED ARE LEAST AFFECTED BY
+;INADVERTENT SHIFTING
+;FAILURE OF A SC BIT TO SET,OR SC TO
+;COUNT WILL RESULT IN LOOPING
+
+	AC=3
+	SAVEAC	(1,1)
+
+E500:	SETZ	AC,		;CLEAR AC
+	LSH	AC,0		;*SHIFT LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,501		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E500	;LOOP ON ERROR SWITCH
+
+E600:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+	LSH	AC,0		;*SHIFT LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR -1
+	ER3	AC,601		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E600	;LOOP ON ERROR SWITCH
+
+	AC=14
+	SAVEAC	(1,1)
+
+E700:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+	LSHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR 0
+	ER3	AC,701		;FETCH OR STORE AC FAILED
+	SKIPE	AC+1		;TEST AC+1 FOR 0
+	ER4	AC+1,701	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E700	;LOOP ON ERROR SWITCH
+
+E1000:	SETO	AC-1,		;SET UP FOR COMPARISON
+	SETOB	AC,AC+1		;SET AC,AC+1
+	LSHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR -1
+	ER3	AC,1001		;FETCH OR STORE AC FAILED
+	CAME	AC+1,AC-1	;TEST AC+1 FOR -1
+	ER4	AC+1,1001	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E1000	;LOOP ON ERROR SWITCH
+;TEST FETCH,STORE AND DECODE
+;TEST THE ABILITY OF ASH, ASHC TO FETCH AND STORE
+;AC,AC+1
+;TESTING IS ACCOMPLISHED BY SHIFTING ZERO TIMES ALL
+;ZERO'S ALL ONES
+;OPERANDS SELECTED ARE LEAST AFFECTED BY
+;INADVERTENT SHIFTING
+;FAILURE OF A SC BIT TO SET,OR SC TO
+;COUNT WILL RESULT IN LOOPING
+
+	AC=13
+	SAVEAC	(1,1)
+
+E1100:	SETZ	AC,		;CLEAR AC
+	ASH	AC,0		;*SHIFT LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR ZERO
+	ER3	AC,1101		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E1100	;LOOP ON ERROR SWITCH
+
+E1200:	SETOB	AC,AC-1		;SET AC,AC-1 FOR COMPARE
+	ASH	AC,0		;*SHIFT LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,1201		;FETCH OR STORE AC FAILED
+	JUMPL	AC+2,E1200	;LOOP ON ERROR SWITCH
+
+	AC=12
+	SAVEAC	(1,1)
+
+E1300:	SETZB	AC,AC+1		;CLEAR AC,AC+1
+	ASHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	SKIPE	AC		;TEST AC FOR 0
+	ER3	AC,1301		;FETCH OR STORE AC FAILED
+	SKIPE	AC+1		;TEST AC+1 FOR 0
+	ER4	AC+1,1301	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E1300	;LOOP ON ERROR SWITCH
+
+E1400:	SETO	AC-1,		;SET UP FOR COMPARISON
+	SETOB	AC,AC+1		;SET AC,AC+1
+	ASHC	AC,0		;*SHIFT COMBINED LEFT ZERO TIMES
+	CAME	AC,AC-1		;TEST AC FOR A -1
+	ER3	AC,1401		;FETCH OR STORE AC FAILED
+	CAME	AC+1,AC-1	;TEST AC+1 FOR A -1
+	ER4	AC+1,1401	;FETCH OR STORE AC+1 FAILED
+	JUMPL	AC+2,E1400	;LOOP ON ERROR SWITCH
+SUBTTL	DIAGNOSTIC SECTION - CHECK SIGN BIT OF AC+1 FOR ASHC
+
+;VERIFY THAT THE SIGN BIT OF AC+1 IS NOT MADE TO AGREE WITH THE SIGN BIT OF AC
+;WHEN THE 'E' FIELD OF ASHC SECIFIES A SHIFT OF ZERO BIT POSITIONS.
+;HENCE, C(AC+1) IS NOT ALTERE BY 'ASHC AC,0'.
+;CHECK THIS WHEN THE SIGN BIT OF AC IS ZERO AND THE SIGN BIT OF AC+1 IS ONE.
+
+	SR2	(443,0,0,-1,-1,0,0,-1,-1,ASHC,0)
+
+;VERIFY THAT THE SIGN BIT OF AC+1 IS NOT MADE TO AGREE WITH THE SIGN BIT OF AC
+;WHEN THE 'E' FIELD OF ASHC SECIFIES A SHIFT OF ZERO BIT POSITIONS.
+;HENCE, C(AC+1) IS NOT ALTERE BY 'ASHC AC,0'.
+;CHECK THIS WHEN THE SIGN BIT OF AC IS ONE AND THE SIGN BIT OF AC+1 IS ZERO.
+	SR2	(444,-1,-1,0,0,-1,-1,0,0,ASHC,0)
+SUBTTL	DIAGNOSTIC SECTION - TEST MQ-ADDER GATING
+
+	AC=10
+	SAVEAC	(1,1)
+
+SN=1500
+	ZZ=0
+			;CHECK AC+1 RIGHT <
+E1500:	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INTIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ			;TESTED BIT
+	IFE	ZZ,
+	SETZM	AC			;CLEAR AC
+	MOVEI	AC+1,ZZ			;INITIALIZE AC+1
+	ROTC	AC,0		;*ROT 0 BIT POSIOTIONS
+	CAIE	AC+1,ZZ			;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+>
+PAGE
+ZZ=0
+			;CHECK AC+1 LEFT <
+	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ONE ZERO POSITIONS IN AC+1
+;FIRST CLEAR AC; THEN, SET ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ			;TESTED BIT
+	IFE	ZZ,
+	SETZM	AC			;CLEAR AC
+	MOVSI	AC+1,ZZ			;INITIALIZE AC+1
+	MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+	ROTC	AC,0		;*ROT 0 BIT POSITIONS
+	CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-5		;LOOP ON ERROR SWITCH
+>
+	AC=7
+	SAVEAC	(1,1)
+
+SN=1600
+
+	ZZ=0
+
+			;CHECK AC+1 RIGHT <
+E1600:	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ZERO ZERO POSITIONS IN AC+1
+;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ+1			;TESTED BIT
+	IFE	ZZ,
+	SETOM	AC			;INITIALIZE TO ALL ONES
+	HRROI	AC+1,ZZ&777777		;INITIALIZE AC+1
+	MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+	ROTC	AC,0		;*ROT 0 BIT POSITIONS
+	CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+>
+PAGE
+ZZ=0
+			;CHECK AC+1 LEFT <
+	REPEAT	^D18,<
+
+;VERIFY MQ-AD GATING
+;ROTC A RIPPLED ZERO ZERO POSIOTIONS IN AC+1
+;FIRST SET AC TO ALL ONES; THEN, SET ALL BUT ONE BIT OF AC+1
+;REPEAT FOR ALL 36 BITS OF MQ
+;RESULT IN AC+1 SHOULD BE SAME AS INITIALIZATION DATA
+SN=SN+1
+	ZZ=ZZ+ZZ+1			;TESTED BIT
+	IFE	ZZ,
+	SETOM	AC			;INITIALIZE	AC TO ALL ONES
+	HRLOI	AC+1,ZZ&777777		;INITIALIZE AC+1
+	MOVE	AC-1,AC+1		;SETUP FOR COMPARISON
+	ROTC	AC,0		;*ROT 0 BIT POSITIONS
+	CAME	AC+1,AC-1		;CHECK BIT (N) OF AC+1
+	ER4	AC+1,SN			;MQ-AD GATE FAILED
+	JUMPL	AC+2,.-6		;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - BASIC SHIFT TEST (0,1,-1,-2 BIT POSITIONS)
+
+;BASIC SHIFT TEST
+;TEST ABILITY TO SHIFT A BIT 0,1,-1 AND -2 POSITIONS
+
+	AC=4
+	SAVEAC	(1,1)
+
+;TEST ABILITY TO SHIFT A BIT ZERO POSITIONS USING LSH
+	SR1	(17,0,10,0,10,LSH,0)
+
+;TEST ABILITY TO SHIFT A BIT LEFT ONE POSITION USING LSH
+	SR1	(20,0,10,0,20,LSH,1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT ONE POSITION USING LSH
+	SR1	(442,0,10,0,4,LSH,-1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT TWO POSITIONS USING LSH
+	SR1	(21,0,10,0,2,LSH,-2)
+PAGE
+;TEST ABILITY TO SHIFT A BIT ZERO POSITIONS USING LSHC
+	SR2	(22,0,10,0,10,0,10,0,10,LSHC,0)
+
+;TEST ABILITY TO SHIFT A BIT LEFT ONE POSITION USING LSHC
+	SR2	(23,0,10,0,10,0,20,0,20,LSHC,1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT ONE POSITION USING LSHC
+	SR2	(24,0,10,0,10,0,4,0,4,LSHC,-1)
+
+;TEST ABILITY TO SHIFT A BIT RIGHT TWO POSITIONS USING LSHC
+	SR2	(25,0,10,0,10,0,2,0,2,LSHC,-2)
+SUBTTL	DIAGNOSTIC SECTION - TEST SAC FUNCTION
+
+	AC=10
+	SAVEAC	(1,1)
+
+SN=2600
+	ZZ=1
+
+		;TEST SAC
+E2600:	REPEAT	^D3,<
+SN=SN+1
+;FURTHER TEST OF SAC,SAC2
+;TEST FOR ASSERTION OF SAC INH
+;TEST ASSUMES ABILITY TO ROTATE
+;TO SOME DEGREE
+	ZZ=ZZ+ZZ
+	HRRZI	AC,400000	;SET BIT 18
+	ROT	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+	CAIN	AC,400000	;TEST FOR SAC
+	ER3	AC,SN		;STORE AC FAILED
+	JUMPL	AC+2,.-4	;LOOP ON ERROR SWITCH
+>
+PAGE
+SN=2700
+	ZZ=1
+
+		;TEST SAC
+E2700:	REPEAT	^D3,<
+SN=SN+1
+;FURTHER TEST OF SAC,SAC2
+;TEST FOR ASSERTION OF SAC INH
+;TEST ASSUMES ABILITY TO ROTATE
+;TO SOME DEGREE
+
+	ZZ=ZZ+ZZ
+	SETZ	AC,		;CLEAR AC
+	HRRZI	AC+1,400000	;SET BIT 18
+	ROTC	AC,ZZ		;*ROT LEFT (N) NUMBER OF TIMES
+	CAIN	AC+1,400000	;TEST FOR SAC
+	ER4	AC+1,SN		;STORE AC+1 FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - TEST SHIFT LOGIC GATES BETWEEN AD AND AR
+
+;TEST ROT LEFT ONE BIT POSITION USING ALL ZEROS
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+
+	AC=11
+	SAVEAC	(1,1)
+
+E3000:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+	ER3	AC,3001		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3100	;LOOP ON ERROR SWITCH
+
+;TEST ROT LEFT ONE BIT POSITION USING ALL ONES
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+
+E3100:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ONES
+	ER3	AC,3101		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3100	;LOOP ON ERROR SWITCH
+SN=3200
+	ZZ=0
+
+		;TEST AC RIGHT HALF <
+E3200:	REPEAT 	^D18,<
+;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT
+;IS ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+	IFN	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC LEFT HALF <
+	REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+;ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+	IFN	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,1		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SN=3300
+	ZZ=0
+
+	;TEST AC RIGHT HALF<
+E3300:	REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+	IFN	<&377777>,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	<&777777>,<
+	HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+	;TEST AC LEFT HALF<
+	REPEAT	^D18,<;TEST ROT LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+	IFN	<&777777>,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	<&777777>,<
+	HRROI	AC-1,-2		;SETUP FOR COMPARISON>
+	ROT	AC,1		;*ROTATE LEFT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N-1) OR ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+
+;TEST ROT RIGHT ONE BIT POSITION
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD.
+;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+
+	AC=10
+	SAVEAC	(1,1)
+
+E3400:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+	ER3	AC,3401		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3400	;LOOP ON ERROR SWITCH
+
+;TEST ROT RIGHT ONE BIT POSITION
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+
+E3500:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST AC FOR ALL ONES.
+	ER3	AC,3501		;AD-AR GATING FAILED
+	JUMPL	AC+2,E3500	;LOOP ON ERROR SWITCH
+SN=3600
+	ZZ=0
+
+		;TEST AC LEFT HALF<
+E3600:	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+;BIT IS ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+	IFN	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC RIGHT HALF<
+	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+;ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+	IFN	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1			;TEST FOR BIT (N+1) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SN=3700
+	ZZ=1
+
+	;TEST AC LEFT HALF<
+E3700:	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+	IFN	,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=1
+
+	;TEST AC RIGHT HALF<
+	REPEAT	^D18,<;TEST ROT RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+	IFN	,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+	ROT	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NON-ZERO AFTER ROTATING
+
+	AC=7
+	SAVEAC	(1,1)
+
+E4000:	SETZB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ZERO
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST AC FOR ALL ZEROS
+	ER3	AC,4001		;AD-AR GATING FAILED
+	JUMPL	AC+2,E4000	;LOOP ON ERROR SWITCH
+
+;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF C(AC) IS NOT ALL ONES AFTER ROTATING
+
+E4100:	SETOB	AC,AC-1		;INITIALIZE AC AND EXPECTED RESULT TO ALL ONES
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST AC FOR ALL ONES.
+	ER3	AC,4101		;AD-AR GATING FAILED
+	JUMPL	AC+2,E4100	;LOOP ON ERROR SWITCH
+
+SN=4200
+	ZZ=0
+
+		;TEST AC LEFT HALF<
+E4200:	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE GHROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER
+;BIT IS ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	MOVSI	AC,ZZ		;SET BIT (N) OF AC LEFT
+	IFG	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC RIGHT HALF <
+	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY OTHER BIT IS
+;ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	MOVEI	AC,ZZ		;SET BIT (N) OF AC RIGHT
+	IFG	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,400000	;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,200000	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+2) A ONE
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SN=4300
+	ZZ=1
+
+		;TEST AC LEFT HALF<
+E4300:	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	HRLOI	AC,ZZ&777777	;CLEAR BIT (N) OF AC LEFT
+	IFL	,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	IFE	,<
+	HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+2) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=1
+
+		;TEST AC RIGHT HALF<
+	REPEAT	^D18,<;TEST ROT RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE AR
+;TEST SHIFT LOGIC GATES BETWEEN AR AND AD
+;AN ERROR OCCURS IF THE TESTED BIT IS ONE AND/OR ANY OTHER BIT
+;IS ZERO AFTER ROTATING.
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	HRROI	AC,ZZ&777777	;CLEAR BIT (N) OF AC RIGHT
+	IFL	,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	HRLOI	AC-1,377777	;SETUP FOR COMPARISON>
+	IFE	,<
+	HRLOI	AC-1,577777	;SETUP FOR COMPARISON>
+	ROT	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC,AC-1		;TEST FOR BIT (N+1) A ZERO
+	ER3	AC,SN		;AD-AR GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-5	;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - TEST MQ SHIFT LOGIC GATES
+
+;TEST ROTC LEFT ONE BIT POSITION USING ALL ZEROS
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+	AC=10
+	SAVEAC	(1,1)
+
+E4400:	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+	SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+	ER4	AC+1,4401	;MQ GATING FAILED
+	JUMPL	AC+2,E4400	;LOOP ON ERROR SWITCH
+
+;TEST ROTC LEFT ONE BIT POSITION USING ALL ONES
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+E4500:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ONES
+	SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+	ER4	AC+1,4501	;MQ GATING FAILED
+	JUMPL	AC+2,E4500	;LOOP ON ERROR SWITCH
+SN=4600
+	ZZ=0
+
+		;TEST AC+1 RIGHT HALF <
+E4600:	REPEAT	^D18,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITILAIZE AC TO ALL ZEROS
+	MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+	IFN	,<
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVSI	AC-1,1		;SETUP FOR COMPARISON>
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+
+	ZZ=0
+
+		;TEST AC+1 LEFT HALF <
+	REPEAT	^D17,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ		;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ+ZZ		;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SN=4700
+	ZZ=0
+		;TEST AC+1 RIGHT HALF <
+E4700:	REPEAT	^D18,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IA A ONE AND/OR ANY
+;OTHER BIT IA A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL ONES
+	HRROI	AC+1,ZZ		;CLEAR BIT (N) OF AC+1 RIGHT
+	IFN	&777777,<
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRLOI	AC-1,-2		;SETUP FOR COMPARISON>
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC+1 LEFT HALF <
+	REPEAT	^D17,<;TEST ROTC LEFT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED LEFT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS
+;OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ+ZZ+1		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITAILIZE AC TO ALL ONES
+	HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,1		;*ROTATE LEFT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N-1) A ZERO
+	ER4	AC+1,		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+;TEST ROTC RIGHT ONE BIT POSITION USING ALL ZEROS
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+	AC=7
+	SAVEAC	(1,1)
+
+E5000:	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+	SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+	ER4	AC+1,5001	;MQ GRTING FAILED
+	JUMPL	AC+2,E5000	;LOOP ON ERROR SWITCH
+
+;TEST ROTC,RIGHT ONE BIT POSITION USING ALL ONES
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NONZERO AFTER ROTATING
+
+E5100:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1	TO ALL ONES
+	SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+	ER4	AC+1,5101	;MQ GATING FAILED
+	JUMPL	AC+2,E5100	;LOOP ON ERROR SWITCH
+SN=5200
+	ZZ=0
+		;TEST AC+1 LEFT HALF<
+E5200:	REPEAT	^D18,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+	IFN	,	<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1, 400000	;SETUP FOR COMPARISON>
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+>
+PAGE
+	ZZ=0
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT	^D17,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+
+	YY=ZZ/2			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SN=5300
+	ZZ=1
+
+		;TEST AC+1 LEFT HALF<
+E5300:	REPEAT	^D18,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL CNES
+	HRLOI	AC+1,ZZ&777777	;SETUP BIT (N) OF AC+1 LEFT
+	IFN	&777777,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH.
+>
+PAGE
+	ZZ=1
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT	^D17,<;TEST ROTC RIGHT ONE BIT POSITION
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT ONE BIT POSITION AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE,
+	YY=</2>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL CNES
+	HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-1		;*ROTATE RIGHT ONE
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+1) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+;TEST ROTC RIGHT TWO BIT POSITIONS USING ALL ZEROS
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS NON-ZERO AFTER ROTATING
+
+	AC=6
+	SAVEAC	(1,1)
+E5400:
+	SETZB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ZEROS
+	SETZM	AC-1		;INITIALIZE RESULT TO ZERO
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ZEROS
+	ER4	AC+1,5401	;MQ GATING FAILED
+	JUMPL	AC+2,E5400	;LOOP ON ERROR SWITCH
+
+;TEST ROTC RIGHT TWO BIT POSITIONS USING ALL ONES
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND
+;AC+1 IS TESTED
+;AN ERROR OCCURS IF C(AC+1) IS ZERO AFTER ROTATING
+
+E5500:	SETOB	AC,AC+1		;INITIALIZE AC,AC+1 TO ALL ONES
+	SETOM	AC-1		;INITIALIZE RESULT TO ALL ONES
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST AC+1 FOR ALL ONES
+	ER4	AC+1,5501	;MQ GATING FAILED
+	JUMPL	AC+2,E5500	;LOOP ON ERROR SWITCH
+SN=5600
+	ZZ=0
+
+		;TEST AC+1 LEFT HALF<
+E5600:	REPEAT	^D18,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC,AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVSI	AC+1,ZZ		;SET BIT (N) OF AC+1 LEFT
+	IFG	,<
+	MOVSI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,400000	;SETUP FOR COMPARISON>
+	IFE	,<
+	MOVEI	AC-1,200000	;SETUP FOR COMPARISON>
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=0
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT	^D16,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ONE THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS ZERO AND/OR ANY
+;OTHER BIT IS A ONE AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ONE THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=ZZ/2			;SELECTED BIT BEFORE ROTATION
+	IFE	ZZ,
+	YY=ZZ/4			;SELECTED BIT AFTER ROTATION
+	SETZ	AC,		;INITIALIZE AC TO ALL ZEROS
+	MOVEI	AC+1,ZZ		;SET BIT (N) OF AC+1 RIGHT
+
+	MOVEI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ONE
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SN=5700
+	ZZ=1
+
+ 		;TEST AC+1 LEFT HALF <
+E5700:	REPEAT ^D18,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL ONES
+	HRLOI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 LEFT
+	IFG	&777777,<
+	HRLOI	AC-1,YY		;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRROI	AC-1,377777	;SETUP FOR COMPARISON>
+	IFE	&777777,<
+	HRROI	AC-1,577777	;SETUP FOR COMPARISON>
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+PAGE
+	ZZ=1
+
+		;TEST AC+1 RIGHT HALF<
+	REPEAT ^D16,<;TEST ROTC RIGHT TWO BIT POSITIONS
+;TEST ABILITY TO ROTATE A ZERO THROUGH THE 36 BITS OF THE MQ
+;TEST MQ SHIFT LOGIC GATES
+;AC, AC+1 ARE ROTATED RIGHT TWO BIT POSITIONS AND AC+1
+;IS TESTED.
+;AN ERROR OCCURS IF THE TESTED BIT IS A ONE AND/OR ANY
+;OTHER BIT IS A ZERO AFTER ROTATING
+;THIS TEST IS REPEATED 36 TIMES TO RIPPLE A ZERO THROUGH ALL 36 BITS OF THE MQ
+
+SN=SN+1
+	ZZ=/2		;SELECTED BIT BEFORE ROTATION
+	IFE	,
+	YY=</4>&777777	;SELECTED BIT AFTER ROTATION
+	SETOM	AC		;INITIALIZE AC TO ALL ONES
+	HRROI	AC+1,ZZ&777777	;CLEAR BIT (N) OF AC+1 RIGHT
+	HRROI	AC-1,YY		;SETUP FOR COMPARISON
+	ROTC	AC,-2		;*ROTATE RIGHT TWO
+	CAME	AC+1,AC-1	;TEST FOR BIT (N+2) A ZERO
+	ER4	AC+1,SN		;MQ GATE UNDER TEST FAILED
+	JUMPL	AC+2,.-6	;LOOP ON ERROR SWITCH
+>
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROT)
+
+;END CONNECTIONS-ROT
+;TEST AR END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;AC IS ROTATED LEFT/RIGHT
+;AND END BITS TESTED
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(60,400000,0,0,1,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(61,377777,-1,-1,-2,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(62,0,1,0,2,ROT,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(63,-1,-2,-1,-3,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(64,100000,0,200000,0,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(65,677777,-1,577777,-1,ROT,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(66,200000,0,400000,0,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - ROT AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(67,577777,-1,377777,-1,ROT,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(70,0,1,400000,0,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(71,-1,-2,377777,-1,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(72,400000,0,200000,0,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(73,377777,-1,577777,-1,ROT,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(74,0,4,0,2,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(75,-1,-5,-1,-3,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(76,0,2,0,1,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROT AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(77,-1,-3,-1,-2,ROT,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(100,0,2,400000,0,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR1	(101,-1,-3,377777,-1,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(102,0,1,200000,0,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR1	(103,-1,-2,577777,-1,ROT,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(104,0,10,0,2,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR1	(105,-1,-11,-1,-3,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(106,0,4,0,1,ROT,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROT AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR1	(107,-1,-5,-1,-2,ROT,-2)
+
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (LSH)
+
+;END CONNECTIONS-LSH
+;TEST AR END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;AC IS SHIFTED LEFT/RIGHT
+;AND END BITS TESTED
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(110,-1,-1,-1,-2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(111,0,1,0,2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(112,-1,-2,-1,-4,LSH,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(113,100000,0,200000,0,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(114,677777,-1,577777,-2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(115,200000,0,400000,0,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - LSH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(116,577777,-1,377777,-2,LSH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(117,-1,-1,377777,-1,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(120,400000,0,200000,0,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(121,377777,-1,177777,-1,LSH,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(122,0,4,0,2,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(123,-1,-5,377777,-3,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(124,0,2,0,1,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - LSH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(125,-1,-3,377777,-2,LSH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(126,-1,-1,177777,-1,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(127,-1,-1,177777,-1,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(130,0,10,0,2,LSH,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(131,-1,-11,177777,-3,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(132,0,4,0,1,LSH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - LSH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(133,-1,-5,177777,-2,LSH,-2)
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ASH)
+
+;END CONNECTIONS-ASH
+;TEST AR END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;AC IS SHIFTD LEFT/RIGHT
+;AND END BITS TESTED
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(134,-1,-1,-1,-2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(135,0,1,0,2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(136,-1,-2,-1,-4,ASH,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(137,100000,0,200000,0,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(140,677777,-1,577777,-2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(141,400000,0,400000,0,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - ASH AC,1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(142,377777,-1,377777,-2,ASH,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(143,400000,0,600000,0,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(144,377777,-1,177777,-1,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(145,400000,0,600000,0,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(146,377777,-1,177777,-1,ASH,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(147,0,4,0,2,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(150,-1,-5,-1,-3,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(151,0,2,0,1,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ASH AC,-1
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(152,-1,-3,-1,-2,ASH,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(153,400000,0,700000,0,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 0 OF AR
+	SR1	(154,377777,-1,077777,-1,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(155,400000,0,700000,0,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 1 OF AR
+	SR1	(156,377777,-1,077777,-1,ASH,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(157,0,10,0,2,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 34 OF AR
+	SR1	(160,-1,-11,-1,-3,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(161,0,4,0,1,ASH,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ASH AC,-2
+;TEST ABILITY TO SHIFT INTO BIT 35 OF AR
+	SR1	(162,-1,-5,-1,-2,ASH,-2)
+
+SUBTTL	DIAGNOSTIC SECTION - END CONNECTIONS TEST (ROTC)
+
+;END CONNECTIONS-ROTC
+;TEST AR-MQ END BIT INPUT GATES
+;TEST LEFT-AR0,1,34,35 SHLT INP GATES
+;          MQ0,1,34,35 SHLT INP GATES
+;TEST RIGHT-AR0,1,34,35 SHRT INP GATES
+;	   MQ0,1,34,35 SHRT INPUT GATES
+;AC,AC+1 ARE ROTATED LEFT/RIGHT AND
+;END BITS ARE TESTED
+;TEST ASSUMES BOTH REGISTERS ARE
+;CAPABLE OF ROTATING 1,-1 AND -2 BIT POSITIONS CORRECTLY
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(163,400000,0,0,0,0,0,0,1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(164,377777,-1,-1,-1,-1,-1,-1,-2,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(165,0,0,0,1,0,0,0,2,ROTC,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(166,-1,-1,-1,-2,-1,-1,-1,-3,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(167,0,0,100000,0,0,0,200000,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(170,-1,-1,677777,-1,-1,-1,577777,-1,ROTC,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(171,0,0,200000,0,0,0,400000,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(172,-1,-1,577777,-1,-1,-1,377777,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(173,0,0,400000,0,0,1,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(174,-1,-1,377777,-1,-1,-2,-1,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(175,0,1,0,0,0,2,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(176,-1,-2,-1,-1,-1,-3,-1,-1,ROTC,1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(177,100000,0,0,0,200000,0,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(200,677777,-1,-1,-1,577777,-1,-1,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ONE'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(201,200000,0,0,0,400000,0,0,0,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHLT INP-ZERO'S - ROTC AC,1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(202,577777,-1,-1,-1,377777,-1,-1,-1,ROTC,1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(203,0,0,0,1,400000,0,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(204,-1,-1,-1,-2,377777,-1,-1,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(205,400000,0,0,0,200000,0,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(206,377777,-1,-1,-1,577777,-1,-1,-1,ROTC,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(207,0,4,0,0,0,2,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(210,-1,-5,-1,-1,-1,-3,-1,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(211,0,2,0,0,0,1,0,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(212,-1,-3,-1,-1,-1,-2,-1,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(213,0,1,0,0,0,0,400000,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(214,-1,-2,-1,-1,-1,-1,377777,-1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(215,0,0,400000,0,0,0,200000,0,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(216,-1,-1,377777,-1,-1,-1,577777,-1,ROTC,-1)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(217,0,0,0,4,0,0,0,2,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(220,-1,-1,-1,-5,-1,-1,-1,-3,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ONE'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(221,0,0,0,2,0,0,0,1,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ZERO'S - ROTC AC,-1
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(222,-1,-1,-1,-3,-1,-1,-1,-2,ROTC,-1)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(223,0,0,0,2,400000,0,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR0 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF AR
+	SR2	(224,-1,-1,-1,-3,377777,-1,-1,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(225,0,0,0,1,200000,0,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR1 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF AR
+	SR2	(226,-1,-1,-1,-2,577777,-1,-1,-1,ROTC,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(227,0,10,0,0,0,2,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR34 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF AR
+	SR2	(230,-1,-11,-1,-1,-1,-3,-1,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(231,0,4,0,0,0,1,0,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST AR35 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF AR
+	SR2	(232,-1,-5,-1,-1,-1,-2,-1,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(233,0,2,0,0,0,0,400000,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ0 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 0 OF MQ
+	SR2	(234,-1,-3,-1,-1,-1,-1,377777,-1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(235,0,1,0,0,0,0,200000,0,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ1 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 1 OF MQ
+	SR2	(236,-1,-2,-1,-1,-1,-1,577777,-1,ROTC,-2)
+PAGE
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(237,0,0,0,10,0,0,0,2,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ34 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 34 OF MQ
+	SR2	(240,-1,-1,-1,-11,-1,-1,-1,-3,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ONE'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(241,0,0,0,4,0,0,0,1,ROTC,-2)
+
+;SHIFT CONNECTIONS TEST
+;TEST MQ35 SHRT INP-ZERO'S - ROTC AC,-2
+;TEST ABILITY TO ROTATE INTO BIT 35 OF MQ
+	SR2	(242,-1,-1,-1,-5,-1,-1,-1,-2,ROTC,-2)
+
+LAST1:	JRST	BEGEND
diff --git a/apps/pdp10/diags/klad/dakai/DAKAIT.MAC.txt b/apps/pdp10/diags/klad/dakai/DAKAIT.MAC.txt
new file mode 100644
index 000000000..c824730bd
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakai/DAKAIT.MAC.txt
@@ -0,0 +1,136 @@
+;DAKAI
+
+	MCNVER==0
+	DECVER==2
+
+
+	XLIST
+DEFINE	NAME	(MCNVER,DECVER)<
+
+TITLE	DAKAI PDP-10  KA10 BASIC INSTRUCTION DIAGNOSTIC (9) MCNVER,DECVER
+>
+	LIST
+	LALL
+
+	NAME	\MCNVER,\DECVER
+
+;(LOGICAL SHIFT, ROTATE, ARITHMETIC SHIFT; SINGLE AND COMBINED)
+
+;COPYRIGHT 1975,1977
+;DIGITAL EQUIPMENT CORPORATION
+;MARLBORO, MASS. 01752
+
+;JOHN R. KIRCHOFF
+
+	LOC	137
+	MCNVER,,DECVER
+
+	NOSYM
+SUBTTL	DIAGNOSTIC PARAMETERS
+
+;OPERATOR DEFINITIONS
+
+OPDEF	ER1	[1B8]
+OPDEF	ER2	[2B8]
+OPDEF	ER3	[3B8]
+OPDEF	ER4	[4B8]
+OPDEF	ER5	[5B8]
+OPDEF	ER6	[6B8]
+OPDEF	ER7	[7B8]
+OPDEF	ER10	[10B8]
+OPDEF	ER11	[11B8]
+OPDEF	ER12	[12B8]
+OPDEF	ER13	[13B8]
+
+LUUO1=ERRMES
+LUUO2=ERRMES
+LUUO3=ERRMES
+LUUO4=ERRMES
+LUUO5=ERRMES
+LUUO6=ERRMES
+LUUO7=ERRMES
+LUUO10=ERRMES
+LUUO11=ERRMES
+LUUO12=ERRMES
+LUUO13=ERRMES
+;SUBROUTINE ASSEMBLY DEFINITIONS
+
+KLOLD==1
+DEBUG=40
+EXCASB=1
+USRASB=1
+KA10=1
+PGMEND=1
+ERDIAG=1
+
+;SPECIAL FEATURE DEFINITIONS
+
+SADR1=BEGIN
+SADR2=BEGIN
+SADR3=BEGIN
+SADR4=BEGIN
+SADR5=JRST BEGIN
+SADR6=JRST BEGIN
+SADR7=JRST BEGIN
+SADR8=JRST BEGIN
+SADR9=JRST BEGIN
+SADR10=JRST BEGIN
+SADR11=JRST BEGIN
+
+;SPECIAL FEATURE PARAMETERS
+
+PAREA0=0
+PAREA1=0
+PAREA2=0
+PAREA3=SIXBIT/DAKAI/
+PAREA4=SIXBIT/TMP/
+PAREA5=0
+PAREA6=0
+ITERAT==1000
+
+;MACROS
+
+DEFINE	SAVEAC	(A,B)<
+	MOVEI	AC+2,.		;SAVE TEST PC
+	MOVEM	AC+2,TESTPC
+	MOVEI	AC+2,&17	;INFORM ERROR ROUTINE WHICH
+	MOVEM	AC+2,ERRLOP#	;AC IS USED FOR ITERATION>
+
+DEFINE	SETACS	(WW,XX)<
+	MOVEI	AC-1,WW		;SETUP AC-1
+	HRLI	AC-1,WW		;FOR COMPARISION
+	MOVE	AC-2,&17	;SETUP AC-2 FOR COMPARISON
+	MOVEI	AC,XX		;SETUP AC RIGHT
+	HRLI	AC,XX		;SETUP AC LEFT
+	MOVEM	AC,&17	;SETUP AC2>
+;USER DEFINED MACROS
+
+DEFINE	SR1	(T,D1A,D1B,R1A,R1B,OP,S)<
+;THIS MACRO SHIFTS/ROTATES THE DATA SPECIFIED IN [XWD D1A,D1B] S BIT
+;POSITIONS AND COMPARES THE RESULT IN THE AC TO THE DATA SPECIFIED IN [XWD R1A,R1B]
+;IT ALSO CHECKS THAT C(AC+1) WAS NOT MODIFIED
+
+E'T'00:	MOVE	AC,[XWD D1A,D1B]	;INITIALIZE AC
+	MOVE	AC+1,[XWD 741703,607417];INITIALIZE AC+1
+	OP	AC,S			;*SHIFT/ROTATE S BIT POSITIONS
+	CAME	AC,[XWD R1A,R1B]	;IS RESULT IN AC CORRECT?
+	ER3	AC,T'01			;RESULT IN AC IS INCORRECT
+	CAME	AC+1,[XWD 741703,607417]
+	ER4	AC+1,T'01		;C(AC+1) WAS MODIFIED INCORRECTLY
+	JUMPL	AC+2,E'T'00		;LOOP ON ERROR SWITCH>
+
+
+DEFINE	SR2	(T,D1A,D1B,D2A,D2B,R1A,R1B,R2A,R2B,OP,S)<
+;THIS MACRO PERFORMS A COMBINED SHIFT/ROTATE OPERATION ON THE
+;DATA SPECIFIED IN [XWD D1A,D1B] AND [XWD D2A,D2B] S BIT POSITIONS AND
+;COMPARES THE RESULT IN AC AND AC+1 TO THE DATA SPECIFIED IN [XWD R1A,R1B] AND
+;[XWD R2A,R2B]
+
+E'T'00:	MOVE	AC,[XWD D1A,D1B]	;INITIALIZE AC
+	MOVE	AC+1,[XWD D2A,D2B]	;INITIALIZE AC+1
+	OP	AC,S			;*SHIFT/ROTATE COMBINED S PLACES
+	CAME	AC,[XWD R1A,R1B]	;IS RESULT IN AC CORRECT?
+	ER3	AC,T'01			;RESULT IN AC IS INCORRECT
+	CAME	AC+1,[XWD R2A,R2B]	;IS RESULT IN AC+1 CORRECT?
+	ER4	AC+1,T'01		;RESULT IN AC+1 IS INCORRECT
+	JUMPL	AC+2,E'T'00		;LOOP ON ERROR SWITCH>
diff --git a/apps/pdp10/diags/klad/dakai/README.md b/apps/pdp10/diags/klad/dakai/README.md
new file mode 100644
index 000000000..0632f4def
--- /dev/null
+++ b/apps/pdp10/diags/klad/dakai/README.md
@@ -0,0 +1,422 @@
+---
+layout: page
+title: PDP-10 KA10 Basic Instruction Diagnostic #9
+permalink: /apps/pdp10/diags/klad/dakai/
+machines:
+  - id: testka10
+    type: pdp10
+    config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
+    debugger: true
+    commands: a 30724 DAKAI.MAC
+---
+
+PDP-10 KA10 Basic Instruction Diagnostic #9
+-------------------------------------------
+
+The *PDP-10 KA10 Basic Instruction Diagnostic #9* (MAINDEC-10-DAKAI) test code has been extracted from
+[DAKAIM.MAC](DAKAIM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaim.mac.html)]
+for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
+
+Resources for this test include:
+
+- [Instructions](#dakaitxt)
+- [History](#dakaihst)
+- [Source Code](#dakaimac)
+- [MACRO-10 Listing](DAKAI.LST.txt)
+- [Additional Information](http://archive.pcjs.org/apps/pdp10/diags/klad/dakai/DAKAI.SEQ.txt)
+
+{% include machine.html id="testka10" %}
+
+The Debugger's assemble ("a") command can be used to test the new built-in
+[MACRO-10 Mini-Assembler](/modules/pdp10/lib/macro10.js), which supports a subset
+of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
+This command:
+
+	a 30724 DAKAI.MAC
+
+will automatically read the [DAKAI.MAC](DAKAI.MAC.txt) source file (a slightly modified copy of [DAKAIM.MAC](DAKAIM.MAC.txt)),
+assemble it, and then load the binary output at the specified address.
+
+---
+
+DAKAI.TXT
+---------
+
+```
+MAINDEC-10-DAKAI.TXT
+
+
+
+
+
+
+ 
+			IDENTIFICATION
+			--------------
+
+	PRODUCT CODE:   MAINDEC-10-DAKAI-B-D
+
+	PRODUCT NAME:   DECSYSTEM10 PDP-10 KA10 BASIC
+	                INSTRUCTION DIAGNOSTIC (9)
+
+	FUNCTION:       SHIFT-ROTATE TEST (PART 1)
+
+	VERSION:        0.2
+
+	DATE RELEASED:  JANUARY 1977
+
+	MAINTAINED BY:  DIAGNOSTIC ENGINEERING GROUP
+
+	AUTHOR:         JOHN R. KIRCHOFF
+
+COPYRIGHT(C) 1976,1977
+DIGITAL EQUIPMENT CORPORATION
+MARLBORO, MASS. 01752
+
+THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY
+ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH
+THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,
+OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE
+MADE AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM
+AND TO ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE TO AND
+OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
+
+THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
+NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
+EQUIPMENT CORPORATION.
+
+DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
+SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
+
+							MAINDEC-10-DAKAI.TXT
+							PAGE 2
+
+			TABLE OF CONTENTS
+			-----------------
+
+1.0	ABSTRACT
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+2.2	STORAGE
+
+2.3	PRELIMINARY PROGRAMS
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+3.2	STARTING PROCEDURE
+
+3.3	OPERATING PROCEDURE
+
+4.0	DATA SWITCH FUNCTIONS
+
+5.0	ERRORS
+
+6.0	ITERATION COUNTER
+
+7.0	CYCLE TIME
+
+8.0	OPERATIONAL VARIATIONS
+
+9.0	MISCELLANEOUS
+
+10.0	LISTING
+
+							MAINDEC-10-DAKAI.TXT
+							PAGE 3
+
+1.0	ABSTRACT
+
+	THIS PDP-10 KA10 BASIC INSTRUCTION DIAGNOSTIC IS THE
+	NINTH IN A SERIES OF PDP-10 KA10 PROCESSOR DIAGNOSTICS.
+	THE DIAGNOSTIC TESTS THE SHIFTING AND ROTATING INSTRUCTIONS.
+
+2.0	REQUIREMENTS
+
+2.1	EQUIPMENT
+
+	A PDP-10 KA10 EQUIPPED WITH A MINIMUM OF 32K OF MEMORY
+
+	PAPER TAPE READER 
+	CONSOLE TELETYPE
+	DECTAPE
+	LINE PRINTER (OPTIONAL)
+
+2.2	STORAGE
+
+	THE PROGRAM RUNS WITHIN 32K OF MEMORY.
+
+2.3	PRELIMINARY PROGRAMS
+
+	PREVIOUS PROCESSOR DIAGNOSTICS
+
+3.0	PROGRAM PROCEDURES
+
+3.1	LOADING PROCEDURE
+
+	THIS DIAGNOSTIC REQUIRES THAT THE DECSYSTEM10 SUBROUTINE
+	PROGRAM BE RESIDENT IN THE PDP-10.
+
+	PAPER TAPE - HARDWARE READ-IN (READER DEVICE CODE 104)
+	DECTAPE - LOAD WITH DIAMON (DECTAPE DEVICE CODE 320)
+	TIME SHARING - RUN UNDER DIAMON.
+
+							MAINDEC-10-DAKAI.TXT
+							PAGE 4
+
+3.2	STARTING PROCEDURE
+
+	A.  SELECT OPERATIONAL CONSOLE DATA SWITCH SETTINGS (REFER TO
+	    4.0 DATA SWITCH FUNCTIONS).
+
+	B.  EXEC MODE
+
+	    STAND-ALONE STARTING ADDRESS IS 30000.
+
+	C.  USER MODE
+
+	    RUN UNDER "DIAMON".
+	    IN USER MODE THE FOLLOWING QUESTIONS WILL BE ASKED TO 
+	    SELECT THE OPERATIONAL SWITCHES:
+
+		    TELETYPE SWITCH CONTROL ? 0,S,Y OR N (CR) -
+
+		    IF THE OPERATOR TYPES "N", THE ACTUAL CONSOLE
+		    SWITCHES ARE USED.
+
+		    IF THE OPERATOR TYPES "Y", THE FOLLOWING QUESTIONS
+		    ARE ASKED AND THE OPERATOR RESPONDS BY TYPING
+		    THE ANSWER AS SIX OCTAL DIGITS REPRESENTING
+		    THE DESIRED SWITCH SETTINGS.
+
+		    SPECIFY LH SWITCHES IN OCTAL-
+
+		    SPECIFY RH SWITCHES IN OCTAL-
+
+		    IF THE OPERATOR TYPES "0", ZERO'S ARE USED FOR
+		    THE SWITCH SETTINGS.
+
+		    IF THE OPERATOR TYPES "S", PREVIOUSLY SET SWITCHES
+		    ARE USED.  THIS IS ONLY VALID UPON RESTARTING
+		    OF AN INTERRUPTED PROGRAM.
+	
+							MAINDEC-10-DAKAI.TXT
+							PAGE 5
+
+3.3	OPERATING PROCEDURE
+
+	A.  TO THROUGHLY TEST ALL HARDWARE, ALL TEST CONTROL DATA 
+	    SWITCHES SHOULD BE SET TO 0.
+
+	B.  WHEN DEBUGGING HARDWARE, SET SWITCHES TO 0.  ALLOW THE 
+	    TELETYPE TO PRINT THE ERROR MESSAGES.  THIS ALLOWS THE 
+	    PROGRAM TO RUN A COMPLETE PASS AND THEN THE ERROR MESSAGES
+	    MAY BE CORRELATED TO QUICKLY DIAGNOSE THE FAILURE.  IF A
+	    HARDWARE PROBLEM IS SUCH THAT THE ERROR MESSAGES, AFTER THE
+	    FIRST ONE, HAVE NO MEANING (FIRST ERROR CAUSES ALL FOLLOWING
+	    TESTS TO FAIL) SET THE LOOP ON ERROR SWITCH AND RESTART THE
+	    TEST FROM THE BEGINNING.  THE FIRST FAILURE WILL THEN CAUSE
+	    THE PROGRAM TO ENTER A LOOP SUITABLE FOR SCOPING.
+
+	    THE ERROR MESSAGE USED IN CONJUNCTION WITH THE LISTING AND
+	    SCOPING IF NECESSARY SHOULD ALLOW THE FAILING CONPONENT 
+	    TO BE ISOLATED AND REPLACED AND/OR REPAIRED.
+
+	C.  WHEN TAKING MARGINS, SET DATA SWITCHES 'NOPNT' AND 'DING'.
+	    THIS WILL INHIBIT PRINTOUT BUT WILL ALLOW THE TELETYPE
+	    BELL TO BE RUNG WHEN A ERROR OCCURS.  IF THE MARGIN OBTAINED
+	    IS UNACCEPTABLE, THE OPERATOR MAY REVERT TO STANDARD SWITCH
+	    SETTINGS FOR DEBUGGING PURPOSES.
+
+	D.  ERROR INFORMATION MAY BE OBTAINED QUICKLY BY PRINTING 
+	    ERRORS ON THE LINE PRINTER.
+
+	E.  IN THE EVENT OF A PRINT ROUTINE FAILURE THE 'NOPNT' SWITCH
+	    AND THE 'ERSTOP' SWITCH MAY BE SET TO INHIBIT PRINTOUT 
+	    BUT HALT THE PROGRAM POINTING TO THE ERROR.
+
+							MAINDEC-10-DAKAI.TXT
+							PAGE 6
+
+4.0	DATA SWITCH FUNCTIONS
+
+	SWITCH		STATE	FUNCTION
+	------		-----	--------
+
+	0    ABORT	0	NORMAL OPERATION
+			1	ABORT AT END OF PASS
+
+	1    RSTART		NOT USED
+
+	2    TOTALS		NOT USED
+
+	3    NOPNT	0	NORMAL TYPEOUT
+			1	INHIBIT ALL PRINT/TYPEOUT
+				(EXCEPT FORCED)
+
+	4    PNTLPT	0	NORMAL OUTPUT TO TTY
+			1	PRINT ALL DATA ON LPT
+				(LOGICAL DEVICE, USER MODE)
+
+	5    DING	0	NO FUNCTION
+			1	RING TTY BELL ON ERROR
+
+	6    LOOPER	0	PROCEED TO NEXT TEST
+			1	ENTER SCOPE LOOP ON TEST ERROR
+
+	7    ERSTOP	0	NO FUNCTION
+			1	HALT ON TEST ERROR
+
+	8    PALERS	0	PRINT ONLY FIRST ERROR WHEN LOOPING
+			1	PRINT ALL ERRORS, EVEN IF SAME ERROR
+
+	9    RELIAB		NOT USED
+
+	10   TXTINH	0	PRINT FULL ERROR MESSAGES.
+			1	INHIBIT COMMENT PORTION OF 
+				ERROR MESSAGES.
+
+	11   INHPAG	0	ALLOW PAGING AND TRAP ENABLE
+			1	INHIBIT PAGING AND TRAPPING
+
+	12   MODDVC		NOT USED
+
+	13   INHCSH		NOT USED
+	
+							MAINDEC-10-DAKAI.TXT
+							PAGE 7
+
+5.0	ERRORS
+
+	ERRORS ARE PRINTED ON THE TTY OR LINE PRINTER.  THE ERROR 
+	PRINTOUT CONTAINS THE TEST TITLE, THE PC OF THE FAILURE, ERROR
+	NUMBER AND THE CONTENTS OF AN APPLICABLE AC.
+
+	THE PC VALUE IS USEFUL IN RELATING THE FAILURE TO THE LISTING.
+	THE ERROR NUMBER IS PROVIDED SUCH THAT AN ERROR DICTIONARY MAY
+	BE MADE AT SOME FUTURE DATE.
+
+	WHEN THE SCOPE LOOP MODE IS USED THE MI REGISTER WILL COUNT 
+	FOR EACH OCCURANCE OF AN ERROR.  IF AN AUDIO INDICATION OF
+	A CONTINUING ERROR IS DESIRED THE 'DING' SWITCH MAY BE SET.
+
+6.0	ITERATION COUNTER
+
+	THE ITERATION COUNT OF THE PROGRAM IS DISPLAYED IN THE MEMORY
+	INDICATORS (MI).  THIS COUNT IS A DECREMENTING COUNT AND 
+	INITIALLY STARTS AT -1 IN STAND-ALONE OPERATION.
+
+7.0	CYCLE TIME
+
+	THE CYCLE TIME OF THE PROGRAM IS IN THE MILLISECOND RANGE AND
+	IS THEREFORE SUITABLE FOR TAKING MARGINS, VIBRATION TESTS,
+	ETC.
+							MAINDEC-10-DAKAI.TXT
+							PAGE 8
+
+8.0	OPERATIONAL VARIATIONS
+
+	A.  DIAGNOSTIC MONITOR
+
+	    THE PROGRAM IS USABLE WITH THE DIAGNOSTIC MONITOR TO PROVIDE
+	    RELIABILITY TESTS, ACCEPTANCE TESTS, AND/OR TO PROVIDE A
+	    QUICK METHOD OF ISOLATION OF A FAULT TO A PARTICULAR AREA
+	    OF THE PROCESSOR.  CERTAIN PROCEDURES ARE USED WHEN THE
+	    PROGRAM IS USED IN THIS MANNER.  THEY ARE:
+
+	    1.	THE DIAGNOSTIC MONITOR TRANSFERS CONTROL TO THE PROGRAM
+		AND STARTS IT AT LOCATION 30002.
+
+	    2.	MONCTL - LOCATION 30043 IS USED AS THE DIAGNOSTIC MONITOR
+		CONTROL WORD.
+			LH = 0, STAND-ALONE OPERATION
+			    -1, RUNNING UNDER DIAGNOSTIC MONITOR
+
+			RH = RIGHT HALF OF CONSOLE SWITCHES IF UNDER
+			     DIAGNOSTIC MONITOR CONTROL.
+
+	B.  USER MODE
+
+	    TO OUTPUT THE PRINTED ERROR MESSAGES TO A USER SPECIFIED
+	    DEVICE IN USER MODE, ASSIGN THE DESIRED OUTPUT DEVICE TO
+	    DEVICE NAME 'DEV' AND SET SWITCH 'PNTLPT'.  THE PHYSICAL
+	    DEVICE USED CAN BE ANY DEVICE THAT CAN ACCEPT ASCII OUTPUT
+	    FORMAT SUCH AS LPT, DSK, DTA, ETC.  THE CORRESPONDING 
+	    OUTPUT FILE IS 'DAKAI.TMP'
+
+	    EXAMPLE DEVICE ASSIGNMENT:
+
+	    .ASSIGN DSK DEV
+
+	    IN USER MODE THE PROGRAM WILL MAKE 1000(8) PASSES AND THEN
+	    RETURN TO DIAMON COMMAND MODE.
+	    
+							MAINDEC-10-DAKAI.TXT
+							PAGE 9
+
+8.0	OPERATIONAL VARIATIONS (CON'T)
+
+	THE OUTPUT FILE (IF USED) MAY THEN BE LISTED BY USING THE
+	NORMAL MONITOR COMMANDS (PRINT, LIST, TYPE, PIP, ETC.).
+
+	IF THE PROGRAM IS ABORTED BEFORE COMPLETION (BY ^C, ETC.) THE
+	OUTPUT FILE MAY BE CLOSED BY USING THE MONITOR 'REENTER' 
+	COMMAND.
+
+	C.  SYSTEM EXERCISER
+
+	    START ADDRESS IS 30003.  DATA SWITCHES ARE PRESTORED IN
+	    'SWTEXR' LOC 30023.
+
+9.0	MISCELLANEOUS
+
+	THE NON-EX-MEMORY AND PARITY STOP SWITCHES SHOULD BE RESET 
+	(0).  THESE ERRORS, ILLEGAL UUO'S AND OTHER ERRORS OF THIS
+	TYPE ARE HANDLED BY PRINTOUT ON THE TELETYPE.
+
+10.0	LISTING
+```
+
+DAKAI.HST
+---------
+
+	    THIS IS A HISTORY OF THE DEVELOPMENT OF MAINDEC-10-DAKAI
+	
+	************************************************************************
+	
+	PRODUCT CODE:       MAINDEC-10-DAKAI
+	
+	PRODUCT NAME:       BASIC INSTRUCTION DIAGNOSTIC #9
+	
+	DATE RELEASED:      JANUARY 1977
+	
+	VERSION:            0.2
+	
+	UPDATE AUTHOR:      JOHN R. KIRCHOFF
+	
+	CHANGES MADE:
+	
+	    1. UPGRADE TO ALLOW COMPATABILITY WITH THE SUBROUTINE PACKAGE.
+	
+	************************************************************************
+	
+	ORIGINAL VERSION:   0.1
+	
+	ORIGINAL AUTHOR:    RICHARD MALISKA
+	
+	ORIGINAL RELEASE:   16-MAR-72
+	
+	************************************************************************
+
+DAKAI.MAC
+---------
+
+[[Download](DAKAI.MAC.txt)]
+ 
+{% highlight text %}
+{% include_relative DAKAIM.MAC.txt %}
+{% endhighlight %}
diff --git a/modules/pdp10/lib/macro10.js b/modules/pdp10/lib/macro10.js
index 755a5e7f8..430686bf3 100644
--- a/modules/pdp10/lib/macro10.js
+++ b/modules/pdp10/lib/macro10.js
@@ -288,7 +288,10 @@ class Macro10 {
         /*
          * We know that local resources ending with ".MAC" are actually stored with a ".txt" extension.
          */
-        if (sURL.indexOf(':') < 0 && sURL.slice(-4).toUpperCase() == ".MAC") sURL += ".txt";
+        if (sURL.indexOf(':') < 0) {
+            var sExt = sURL.slice(-4).toUpperCase();
+            if (".MAC.KLM".indexOf(sExt) >= 0) sURL += ".txt";
+        }
 
         Web.getResource(sURL, null, true, function processMacro10(sFile, sResource, nErrorCode) {
             if (nErrorCode) {
@@ -521,7 +524,7 @@ class Macro10 {
         }
 
         if (this.chASCII != null) {
-            sLine = this.addASCII(sLine);
+            sLine = this.defASCII(sLine);
         }
 
         var fParse = true;
@@ -603,7 +606,7 @@ class Macro10 {
          */
         var sLiteral = this.getLiteral(sOperands);
         if (sLiteral) {
-            sOperands = sOperands.replace(sLiteral, this.addMacro(Macro10.PSEUDO_OP.LITERAL, this.getLiteral(sRemainder)));
+            sOperands = sOperands.replace(sLiteral, this.defMacro(Macro10.PSEUDO_OP.LITERAL, this.getLiteral(sRemainder)));
         }
 
         /*
@@ -620,39 +623,48 @@ class Macro10 {
             case Macro10.PSEUDO_OP.ASCII:
             case Macro10.PSEUDO_OP.ASCIZ:
             case Macro10.PSEUDO_OP.SIXBIT:
-                this.addASCII(sRemainder);
+                this.defASCII(sRemainder);
                 break;
 
             case Macro10.PSEUDO_OP.END:
-                this.addEND(sOperands);
+                this.defEND(sOperands);
                 break;
 
             case Macro10.PSEUDO_OP.EXP:
-                this.addEXP(sOperands);
+                this.defEXP(sOperands);
+                break;
+
+            case Macro10.PSEUDO_OP.LOC:
+                this.defLocation(sOperands);
                 break;
 
             case Macro10.PSEUDO_OP.XWD:
-                this.addXWD(sOperands);
+                this.defXWD(sOperands);
                 break;
 
             case Macro10.PSEUDO_OP.DEFINE:
             case Macro10.PSEUDO_OP.IFE:
+            case Macro10.PSEUDO_OP.IFG:
+            case Macro10.PSEUDO_OP.IFL:
             case Macro10.PSEUDO_OP.IFN:
             case Macro10.PSEUDO_OP.IRP:
             case Macro10.PSEUDO_OP.IRPC:
             case Macro10.PSEUDO_OP.OPDEF:
             case Macro10.PSEUDO_OP.REPEAT:
-                this.addMacro(sOperator, sRemainder);
+                this.defMacro(sOperator, sRemainder);
                 break;
 
             case Macro10.PSEUDO_OP.LALL:    // TODO
+            case Macro10.PSEUDO_OP.LIST:    // TODO
+            case Macro10.PSEUDO_OP.NOSYM:   // TODO
             case Macro10.PSEUDO_OP.PAGE:    // TODO
             case Macro10.PSEUDO_OP.SUBTTL:  // TODO
             case Macro10.PSEUDO_OP.TITLE:   // TODO
+            case Macro10.PSEUDO_OP.XLIST:   // TODO
                 break;
 
             default:
-                this.addWord(sOperator, sSeparator, sOperands);
+                this.defWord(sOperator, sSeparator, sOperands);
                 break;
             }
         }
@@ -762,6 +774,18 @@ class Macro10 {
             }
             break;
 
+        case Macro10.PSEUDO_OP.IFG:
+            if (macro.nOperand > 0) {
+                this.parseText(macro.sText);
+            }
+            break;
+
+        case Macro10.PSEUDO_OP.IFL:
+            if (macro.nOperand < 0) {
+                this.parseText(macro.sText);
+            }
+            break;
+
         case Macro10.PSEUDO_OP.IFN:
             if (macro.nOperand) {
                 this.parseText(macro.sText);
@@ -915,7 +939,7 @@ class Macro10 {
                 continue;
             }
             if (fQuotes) continue;
-            if (sDelim.indexOf(ch) >= 0) {
+            if (!cNesting && sDelim.indexOf(ch) >= 0) {
                 i--;
                 break;
             }
@@ -963,6 +987,12 @@ class Macro10 {
             if (nLocation === undefined) {
                 nLocation = (this.nLocationScope >= 0? this.nLocationScope : this.nLocation);
             }
+            /*
+             * The SIXBIT (and presumably ASCII; not sure about ASCIZ) pseudo-ops can also be used in expressions
+             * (or at least assignments), so we check for those in the given expression and convert them to quoted
+             * sequences that the debugger's parseExpression() understands.
+             */
+            sOperand = sOperand.replace(/SIXBIT\s*(\S)(.*?)\1/g, "'$2'").replace(/ASCII\s*(\S)(.*?)\1/g, '"$2"');
             /*
              * Check for the "period" syntax that MACRO-10 uses to represent the value of the current location.
              * The Debugger's parseInstruction() method understands that syntax, but its parseExpression() method
@@ -1068,21 +1098,23 @@ class Macro10 {
             sReserved = match[0];
             var sLabel = match[1];
             var name = '?' + sLabel;
-            if (this.tblMacros[name] !== undefined) {
-                this.error("reserved symbol redefined: " + sReserved);
+            /*
+             * We now allow reserved symbols to reused (which would make sense if they appeared in a macro).
+             */
+            if (this.tblMacros[name] === undefined) {
+                var aParms, aDefaults, aValues;
+                aParms = aDefaults = aValues = [];
+                this.tblMacros[name] = {
+                    name: name,
+                    nOperand: Macro10.MACRO_OP.RESERVED,
+                    aParms,
+                    aDefaults,
+                    aValues,
+                    sText: sLabel + ": 0",
+                    nLine: this.nLine
+                };
+                this.aVariables.push(name);
             }
-            var aParms, aDefaults, aValues;
-            aParms = aDefaults = aValues = [];
-            this.tblMacros[name] = {
-                name: name,
-                nOperand: Macro10.MACRO_OP.RESERVED,
-                aParms,
-                aDefaults,
-                aValues,
-                sText: sLabel + ": 0",
-                nLine: this.nLine
-            };
-            this.aVariables.push(name);
         }
         return sReserved;
     }
@@ -1125,13 +1157,13 @@ class Macro10 {
     }
 
     /**
-     * addASCII(sOperands)
+     * defASCII(sOperands)
      *
      * @this {Macro10}
      * @param {string} sOperands
      * @return {string} (returns whatever portion of the string was not part of an ASCII pseudo-op)
      */
-    addASCII(sOperands)
+    defASCII(sOperands)
     {
         var sRemain = sOperands;
         if (this.chASCII == null) {
@@ -1159,7 +1191,7 @@ class Macro10 {
     }
 
     /**
-     * addMacro(sOperator, sOperands)
+     * defMacro(sOperator, sOperands)
      *
      * If sOperator is DEFINE (or OPDEF), then a macro definition is expected.  If it's REPEAT, then we're
      * starting a REPEAT block instead.
@@ -1178,7 +1210,7 @@ class Macro10 {
      * @param {string} sOperands
      * @return {string}
      */
-    addMacro(sOperator, sOperands)
+    defMacro(sOperator, sOperands)
     {
         var i, match, name, nOperand, aParms, aDefaults, aValues, iMatch;
 
@@ -1192,7 +1224,7 @@ class Macro10 {
              * (parenthesized) parameters exist on the same line, but the (angle-bracketed)
              * definition can continue on for multiple lines.
              */
-            match = sOperands.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);
+            match = sOperands.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);
             if (!match) {
                 this.error("unrecognized " + sOperator + ": " + sOperands);
                 return sOperands;
@@ -1201,7 +1233,7 @@ class Macro10 {
             /*
              * If this macro has defined parameters, parse them (and any defaults) now.
              */
-            if (match[2]) {
+            if (match[2] && match[2] != ',') {
                 aParms = this.getValues(match[2], true);
                 aDefaults = this.getDefaults(aParms);
             }
@@ -1343,44 +1375,6 @@ class Macro10 {
         return sRemain;
     }
 
-    /**
-     * addEND()
-     *
-     * Processes the END pseudo-op.
-     *
-     * @this {Macro10}
-     * @param {string} sOperands
-     */
-    addEND(sOperands)
-    {
-        if (!sOperands) {
-            this.nAddrStart = this.nAddr;
-        } else {
-            this.nAddrStart = this.parseExpression(sOperands, true);
-            if (this.nAddrStart === undefined) {
-                this.error("unrecognized expression: " + sOperands);
-            }
-        }
-    }
-
-    /**
-     * addEXP()
-     *
-     * Processes the EXP pseudo-op.
-     *
-     * @this {Macro10}
-     * @param {string} sOperands
-     */
-    addEXP(sOperands)
-    {
-        var w = this.parseExpression(sOperands, true);
-        if (w !== undefined) {
-            this.genWord(w, this.dbg.sUndefined);
-        } else {
-            this.error("unrecognized expression: " + sOperands);
-        }
-    }
-
     /**
      * addSymbol(name, value, nType)
      *
@@ -1416,14 +1410,81 @@ class Macro10 {
     }
 
     /**
-     * addWord(sOperator, sSeparator, sOperands)
+     * defEND()
+     *
+     * Processes the END pseudo-op.
+     *
+     * @this {Macro10}
+     * @param {string} sOperands
+     */
+    defEND(sOperands)
+    {
+        if (!sOperands) {
+            this.nAddrStart = this.nAddr;
+        } else {
+            this.nAddrStart = this.parseExpression(sOperands, true);
+            if (this.nAddrStart === undefined) {
+                this.error("unrecognized expression: " + sOperands);
+            }
+        }
+    }
+
+    /**
+     * defEXP()
+     *
+     * Processes the EXP pseudo-op.
+     *
+     * @this {Macro10}
+     * @param {string} sOperands
+     */
+    defEXP(sOperands)
+    {
+        var w = this.parseExpression(sOperands, true);
+        if (w !== undefined) {
+            this.genWord(w, this.dbg.sUndefined);
+        } else {
+            this.error("unrecognized expression: " + sOperands);
+        }
+    }
+
+    /**
+     * defLocation(sOperands)
+     *
+     * Processes the LOC pseudo-op.
+     *
+     * @this {Macro10}
+     * @param {string} sOperands
+     */
+    defLocation(sOperands)
+    {
+        this.nLocation = this.parseExpression(sOperands) || 0;
+    }
+
+    /**
+     * defXWD()
+     *
+     * Processes the XWD pseudo-op.
+     *
+     * Since the XWD pseudo-op appears to be equivalent to two values separated by two commas, which defEXP() must also
+     * support, we can piggy-back on defExp().
+     *
+     * @this {Macro10}
+     * @param {string} sOperands
+     */
+    defXWD(sOperands)
+    {
+        this.defEXP(sOperands.replace(",", ",,"));
+    }
+
+    /**
+     * defWord(sOperator, sSeparator, sOperands)
      *
      * @this {Macro10}
      * @param {string} sOperator
      * @param {string} sSeparator
      * @param {string} sOperands
      */
-    addWord(sOperator, sSeparator, sOperands)
+    defWord(sOperator, sSeparator, sOperands)
     {
         var w = -1;
 
@@ -1445,22 +1506,6 @@ class Macro10 {
         }
     }
 
-    /**
-     * addXWD()
-     *
-     * Processes the XWD pseudo-op.
-     *
-     * Since the XWD pseudo-op appears to be equivalent to two values separated by two commas, which addEXP() must also
-     * support, we can piggy-back on addExp().
-     *
-     * @this {Macro10}
-     * @param {string} sOperands
-     */
-    addXWD(sOperands)
-    {
-        this.addEXP(sOperands.replace(",", ",,"));
-    }
-
     /**
      * genASCII()
      *
@@ -1566,18 +1611,24 @@ Macro10.PSEUDO_OP = {
     END:        "END",
     EXP:        "EXP",
     IFE:        "IFE",
+    IFG:        "IFG",
+    IFL:        "IFL",
     IFN:        "IFN",
     IRP:        "IRP",
     IRPC:       "IRPC",
     LALL:       "LALL",
     LITERAL:    "LITERAL",      // this is a pseudo-pseudo-op, used for internal purposes
+    LIST:       "LIST",
+    LOC:        "LOC",
+    NOSYM:      "NOSYM",
     OPDEF:      "OPDEF",
     PAGE:       "PAGE",
     REPEAT:     "REPEAT",
     SIXBIT:     "SIXBIT",
     SUBTTL:     "SUBTTL",
     TITLE:      "TITLE",
-    XWD:        "XWD"
+    XWD:        "XWD",
+    XLIST:      "XLIST"
 };
 
 /*

From ec642a8c5b15737736f13883fbca572fa267a46e Mon Sep 17 00:00:00 2001
From: Jeff 
Date: Thu, 30 Mar 2017 09:04:56 -0700
Subject: [PATCH 16/27] Made the Debugger's assemble command more flexible (the
 target address is optional now; the Debugger will use whatever load and/or
 start addresses the file(s) specified instead)

---
 apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt |   2 +
 apps/pdp10/diags/klad/dakai/README.md     |   4 +-
 modules/pdp10/lib/debugger.js             | 108 +++---
 modules/pdp10/lib/macro10.js              |  47 ++-
 versions/pdpjs/1.34.3/pdp10-dbg.js        | 412 +++++++++++-----------
 5 files changed, 294 insertions(+), 279 deletions(-)

diff --git a/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt b/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
index 6353e6304..891c17d13 100644
--- a/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
+++ b/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
@@ -1870,3 +1870,5 @@ PAGE
 	SR2	(242,-1,-1,-1,-5,-1,-1,-1,-2,ROTC,-2)
 
 LAST1:	;JRST	BEGEND
+
+	END	START
diff --git a/apps/pdp10/diags/klad/dakai/README.md b/apps/pdp10/diags/klad/dakai/README.md
index 0632f4def..eadaa0b4f 100644
--- a/apps/pdp10/diags/klad/dakai/README.md
+++ b/apps/pdp10/diags/klad/dakai/README.md
@@ -7,7 +7,7 @@ machines:
     type: pdp10
     config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
     debugger: true
-    commands: a 30724 DAKAI.MAC
+    commands: a DAKAI.MAC
 ---
 
 PDP-10 KA10 Basic Instruction Diagnostic #9
@@ -32,7 +32,7 @@ The Debugger's assemble ("a") command can be used to test the new built-in
 of the [MACRO-10](http://archive.pcjs.org/pubs/dec/pdp10/tops10/02_1973AsmRef_macro.pdf) assembly language.
 This command:
 
-	a 30724 DAKAI.MAC
+	a DAKAI.MAC
 
 will automatically read the [DAKAI.MAC](DAKAI.MAC.txt) source file (a slightly modified copy of [DAKAIM.MAC](DAKAIM.MAC.txt)),
 assemble it, and then load the binary output at the specified address.
diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js
index 2f92c32f4..09b17a9ed 100644
--- a/modules/pdp10/lib/debugger.js
+++ b/modules/pdp10/lib/debugger.js
@@ -520,7 +520,7 @@ class DebuggerPDP10 extends Debugger {
      * @this {DebuggerPDP10}
      * @param {string|undefined} sAddr
      * @param {DbgAddrPDP10} [dbgAddr]
-     * @return {DbgAddrPDP10|null|undefined}
+     * @return {DbgAddrPDP10}
      */
     parseAddr(sAddr, dbgAddr)
     {
@@ -2516,27 +2516,28 @@ class DebuggerPDP10 extends Debugger {
     }
 
     /**
-     * loadBin(aWords, addrLoad)
+     * loadImage(aWords, addrStart)
      *
      * @this {DebuggerPDP10}
      * @param {Array.} aWords
-     * @param {number|null} addrLoad
+     * @param {number|null|undefined} addrStart
      */
-    loadBin(aWords, addrLoad)
+    loadImage(aWords, addrStart)
     {
-        var nWords = 0;
         var bus = this.bus;
         var dbg = this.dbg;
+        var nWords = 0, addrLo = null, addrHi = 0;
         aWords.forEach(function(w, addr) {
             bus.setWordDirect(addr, w);
-            if (addrLoad == null) addrLoad = addr;
+            if (addrLo == null) addrLo = addr;
+            if (addr > addrHi) addrHi = addr;
             nWords++;
         });
         if (!nWords) {
             this.println("no data");
         } else {
-            this.println(nWords + " words loaded at " + this.toStrBase(addrLoad) + '-' + this.toStrBase(addrLoad + nWords - 1));
-            this.cpu.setPC(addrLoad || 0);
+            this.println(nWords + " words loaded at " + this.toStrBase(addrLo) + '-' + this.toStrBase(addrHi));
+            if (addrStart != null) this.cpu.setPC(addrStart);
             this.updateStatus();
         }
     }
@@ -2609,44 +2610,50 @@ class DebuggerPDP10 extends Debugger {
      * without ever entering "assemble mode", but of course, that requires more typing and doesn't take advantage
      * of automatic target address advancement (see dbgAddrAssemble).
      *
-     * When filename(s) or URL(s) are provided in lieu of an opcode, we pass those on to the Macro10 component
-     * for assembling, along with any option letters that were included with the "a" command; for example, if "ap"
-     * was specified, then "p" will be passed to Macro10 as an option.
+     * When filename(s) or URL(s) are provided in lieu of an opcode, we pass those on to the Macro10 component for
+     * assembling (multiple files must be separated by semicolons), along with any option letters that were included
+     * with the "a" command; for example, if "ap" was specified, then "p" will be passed to Macro10 as an option.
      *
      * Macro10 options include:
      *
      *      p:  preprocess the specified resource(s) without assembling them
      *      l:  generate listing information (TODO)
      *
+     * When assembling a file, the target address determines the initial location counter for the assembly process,
+     * but that can always be overridden by a LOC (or RELOC) pseudo-op in the file.  The target address will also be
+     * used as the starting address unless that's overridden by an END pseudo-op.  In the absence of a target address,
+     * the location counter starts at zero, and the starting address defaults to the PC register.
+     *
      * @this {DebuggerPDP10}
      * @param {Array.} asArgs is the complete argument array, beginning with the "a" command in asArgs[0]
      * @return {boolean}
      */
     doAssemble(asArgs)
     {
-        var dbgAddr = this.parseAddr(asArgs[1], this.dbgAddrAssemble);
-        if (!dbgAddr) return false;
+        var sOptions = asArgs[0].substr(1);
+        var sAddr = asArgs[1] && asArgs[1][0] >= '0' && asArgs[1][0] <= '9'? asArgs[1] : undefined;
+        var sOpcode = sAddr? asArgs[2] : asArgs[1];
+        var dbgAddr = this.parseAddr(sAddr, this.dbgAddrAssemble);
 
-        var sOpcode = asArgs[2];
-
-        if (sOpcode == undefined) {
+        if (!sOpcode) {
             this.println("begin assemble at " + this.toStrAddr(dbgAddr));
             this.fAssemble = true;
             this.cmp.updateDisplays();
             return true;
         }
 
-        var sOptions = asArgs[0].substr(1);
         var match = sOpcode.match(/^(['"]?)(.*\.mac|.*\.html|.*\.txt)\1$/i);
         if (match) {
             var dbg = this;
+            var cpu = this.cpu;
+            dbgAddr = this.parseAddr(sAddr);
             if (this.macro10) {
                 dbg.println("assembly already in progress");
             }
             else {
                 var sFile = match[2];
                 var addrLoad = dbgAddr.addr;
-                this.macro10 = new Macro10(sFile, addrLoad, sOptions, dbg, function doneMacro10(nErrorCode, sURL) {
+                var macro10 = this.macro10 = new Macro10(sFile, addrLoad, sOptions, dbg, function doneMacro10(nErrorCode, sURL) {
                     if (!nErrorCode) {
                         /*
                          * NOTE: Most Debugger operations run in the context of doCommand(), which catches any exceptions;
@@ -2654,7 +2661,9 @@ class DebuggerPDP10 extends Debugger {
                          * better safe than sorry.
                          */
                         try {
-                            dbg.loadBin(dbg.macro10.getBin(), addrLoad);
+                            var addrStart = macro10.getStart();
+                            if (addrStart == null) addrStart = addrLoad;
+                            dbg.loadImage(macro10.getImage(), addrStart);
                         } catch(e) {
                             dbg.println(e.message);
                             nErrorCode = -1;    // fake error so that command processing stops
@@ -2738,11 +2747,7 @@ class DebuggerPDP10 extends Debugger {
             return;
         }
 
-        var dbgAddr = this.newAddr();
-        if (sAddr != '*') {
-            dbgAddr = this.parseAddr(sAddr, this.dbgAddrCode);
-            if (!dbgAddr) return;
-        }
+        var dbgAddr = sAddr == '*'? this.newAddr() : this.parseAddr(sAddr, this.dbgAddrCode);
 
         if (sParm == 'c') {
             if (dbgAddr.addr == null) {
@@ -2876,11 +2881,9 @@ class DebuggerPDP10 extends Debugger {
             return;
         }
 
-        var dbgAddr = this.parseAddr(sAddr, this.dbgAddrData);
-        if (!dbgAddr) return;
-
         var len = 0;
         var fJSON = (sCmd == "ds");
+        var dbgAddr = this.parseAddr(sAddr, this.dbgAddrData);
 
         if (sLen) {
             if (sLen.charAt(0) == 'l') {
@@ -2889,7 +2892,7 @@ class DebuggerPDP10 extends Debugger {
             }
             else {
                 var dbgAddrEnd = this.parseAddr(sLen);
-                if (dbgAddrEnd) len = dbgAddrEnd.addr - dbgAddr.addr;
+                len = dbgAddrEnd.addr - dbgAddr.addr;
             }
             if (len < 0) len = 0;
             if (len > 0x10000) len = 0x10000;
@@ -2966,7 +2969,6 @@ class DebuggerPDP10 extends Debugger {
             return;
         }
         var dbgAddr = this.parseAddr(sAddr, this.dbgAddrData);
-        if (!dbgAddr) return;
         for (var i = 2; i < asArgs.length; i++) {
             var w = this.parseExpression(asArgs[i]);
             if (w === undefined) break;
@@ -3090,30 +3092,28 @@ class DebuggerPDP10 extends Debugger {
         var sSymbol = null;
 
         var dbgAddr = this.parseAddr(sAddr);
-        if (dbgAddr) {
-            var addr = this.getAddr(dbgAddr);
-            var aSymbol = this.findSymbol(dbgAddr, true);
-            if (aSymbol.length) {
-                var nDelta, sDelta, s;
-                if (aSymbol[0]) {
-                    sDelta = "";
-                    nDelta = dbgAddr.addr - aSymbol[1];
-                    if (nDelta) sDelta = " + " + Str.toHexWord(nDelta);
-                    s = aSymbol[0] + " (" + this.toStrOffset(aSymbol[1]) + ')' + sDelta;
-                    if (fPrint) this.println(s);
-                    sSymbol = s;
-                }
-                if (aSymbol.length > 4 && aSymbol[4]) {
-                    sDelta = "";
-                    nDelta = aSymbol[5] - dbgAddr.addr;
-                    if (nDelta) sDelta = " - " + Str.toHexWord(nDelta);
-                    s = aSymbol[4] + " (" + this.toStrOffset(aSymbol[5]) + ')' + sDelta;
-                    if (fPrint) this.println(s);
-                    if (!sSymbol) sSymbol = s;
-                }
-            } else {
-                if (fPrint) this.println("no symbols");
+        var addr = this.getAddr(dbgAddr);
+        var aSymbol = this.findSymbol(dbgAddr, true);
+        if (aSymbol.length) {
+            var nDelta, sDelta, s;
+            if (aSymbol[0]) {
+                sDelta = "";
+                nDelta = dbgAddr.addr - aSymbol[1];
+                if (nDelta) sDelta = " + " + Str.toHexWord(nDelta);
+                s = aSymbol[0] + " (" + this.toStrOffset(aSymbol[1]) + ')' + sDelta;
+                if (fPrint) this.println(s);
+                sSymbol = s;
             }
+            if (aSymbol.length > 4 && aSymbol[4]) {
+                sDelta = "";
+                nDelta = aSymbol[5] - dbgAddr.addr;
+                if (nDelta) sDelta = " - " + Str.toHexWord(nDelta);
+                s = aSymbol[4] + " (" + this.toStrOffset(aSymbol[5]) + ')' + sDelta;
+                if (fPrint) this.println(s);
+                if (!sSymbol) sSymbol = s;
+            }
+        } else {
+            if (fPrint) this.println("no symbols");
         }
         return sSymbol;
     }
@@ -3362,7 +3362,6 @@ class DebuggerPDP10 extends Debugger {
     {
         if (sAddr !== undefined) {
             var dbgAddr = this.parseAddr(sAddr);
-            if (!dbgAddr) return;
             this.parseAddrOptions(dbgAddr, sOptions);
             this.setTempBreakpoint(dbgAddr);
         }
@@ -3618,7 +3617,6 @@ class DebuggerPDP10 extends Debugger {
     doUnassemble(sAddr, sAddrEnd, nLines)
     {
         var dbgAddr = this.parseAddr(sAddr, this.dbgAddrCode);
-        if (!dbgAddr) return;
 
         if (nLines === undefined) nLines = 1;
 
@@ -3631,7 +3629,7 @@ class DebuggerPDP10 extends Debugger {
             }
             else {
                 var dbgAddrEnd = this.parseAddr(sAddrEnd);
-                if (!dbgAddrEnd || dbgAddrEnd.addr < dbgAddr.addr) return;
+                if (dbgAddrEnd.addr < dbgAddr.addr) return;
 
                 nBytes = dbgAddrEnd.addr - dbgAddr.addr;
                 if (!DEBUG && nBytes > 0x100) {
diff --git a/modules/pdp10/lib/macro10.js b/modules/pdp10/lib/macro10.js
index 430686bf3..4e939e641 100644
--- a/modules/pdp10/lib/macro10.js
+++ b/modules/pdp10/lib/macro10.js
@@ -95,18 +95,18 @@ var Scope;
 /**
  * @class Macro10
  * @property {string} sURL
- * @property {number} nAddr
+ * @property {number} addrLoad
  * @property {string} sOptions
  * @property {DebuggerPDP10} dbg
  * @property {function(...)} done
  * @property {number} iURL
  * @property {Array.} asURLs
  * @property {Array.} asLines
- * @property {number|null|undefined} nAddrStart
+ * @property {number|null|undefined} addrStart
  */
 class Macro10 {
     /**
-     * Macro10(sURL, nAddr, sOptions, dbg, done)
+     * Macro10(sURL, addrLoad, sOptions, dbg, done)
      *
      * A "mini" version of DEC's MACRO-10 assembler, with just enough features to support the handful
      * of DEC diagnostic source code files that we choose to throw at it.
@@ -115,7 +115,7 @@ class Macro10 {
      * them with semicolons.
      *
      * The done() callback is called after the resource(s) have been loaded and parsed.  The caller
-     * must use other methods to obtain further results (eg, getBin()).
+     * must use other methods to obtain further results (eg, getImage(), getStart()).
      *
      * The callback includes a non-zero error code if there was an error (and the URL):
      *
@@ -127,15 +127,15 @@ class Macro10 {
      *
      * @this {Macro10}
      * @param {string} sURL (the URL(s) of the resource to be assembled)
-     * @param {number|null} nAddr (the absolute address to assemble the code at, if any)
+     * @param {number|null} addrLoad (the absolute address to assemble the code at, if any)
      * @param {string|null} sOptions (zero or more letter codes to control the assembly process)
      * @param {DebuggerPDP10} dbg (used to provide helper services to the Macro10 class)
      * @param {function(...)} done
      */
-    constructor(sURL, nAddr, sOptions, dbg, done)
+    constructor(sURL, addrLoad, sOptions, dbg, done)
     {
         this.sURL = sURL;
-        this.nAddr = nAddr || 0;
+        this.addrLoad = addrLoad;
         this.sOptions = sOptions || "";
         this.dbg = dbg;
         this.done = done;
@@ -143,7 +143,7 @@ class Macro10 {
         /*
          * The next set of properties may be updated by the assembly process and queried by the caller.
          */
-        this.nAddrStart = null;
+        this.addrStart = null;
 
         if (MAXDEBUG) this.println("starting PCjs MACRO-10 Mini-Assembler...");
 
@@ -214,7 +214,7 @@ class Macro10 {
         /**
          * @type {number}
          */
-        this.nLocation = this.nAddr;    // advanced by the various genXXX() functions
+        this.nLocation = this.addrLoad || 0;
 
         /**
          * @type {number}
@@ -323,18 +323,31 @@ class Macro10 {
     }
 
     /**
-     * getBin()
+     * getImage()
      *
-     * Service for the Debugger to obtain the data after a (hopefully) successful assembly process.
+     * Service for the Debugger to obtain the assembled data after a (hopefully) successful assembly process.
      *
      * @this {Macro10}
      * @return {Array.}
      */
-    getBin()
+    getImage()
     {
         return this.aWords;
     }
 
+    /**
+     * getStart()
+     *
+     * Service for the Debugger to obtain the starting address after a (hopefully) successful assembly process.
+     *
+     * @this {Macro10}
+     * @return {number|null|undefined}
+     */
+    getStart()
+    {
+        return this.addrStart;
+    }
+
     /**
      * parseResources()
      *
@@ -367,10 +380,10 @@ class Macro10 {
                  */
                 if (!this.parseLine(this.asLines[i] + '\r\n')) break;
                 /*
-                 * When an END statement is encountered, nAddrStart will change from null to either undefined
+                 * When an END statement is encountered, addrStart will change from null to either undefined
                  * or a starting address.
                  */
-                if (this.nAddrStart !== null) break;
+                if (this.addrStart !== null) break;
             }
 
             if (this.nMacroDef) {
@@ -1420,10 +1433,10 @@ class Macro10 {
     defEND(sOperands)
     {
         if (!sOperands) {
-            this.nAddrStart = this.nAddr;
+            this.addrStart = this.addrLoad;
         } else {
-            this.nAddrStart = this.parseExpression(sOperands, true);
-            if (this.nAddrStart === undefined) {
+            this.addrStart = this.parseExpression(sOperands, true);
+            if (this.addrStart === undefined) {
                 this.error("unrecognized expression: " + sOperands);
             }
         }
diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js
index 07b0d56e0..a5d248031 100644
--- a/versions/pdpjs/1.34.3/pdp10-dbg.js
+++ b/versions/pdpjs/1.34.3/pdp10-dbg.js
@@ -27,123 +27,123 @@
  http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017
  http://pcjs.org/modules/pdp10/lib/macro10.js (C) Jeff Parsons 2012-2017
 */
-var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=ea)}var fa=0;function ea(a){return"jscomp_symbol_"+(a||"")+fa++}
-function ga(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});ga=function(){}}function ha(a){var b=0;return ja(function(){return ba?-b:b}});la("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
-var ra={sc:0,Kb:1,uc:2,vc:3,wc:4,xc:5,yc:6,zc:7,xb:8,Ac:9,Lb:10,Bc:11,Cc:12,Mb:13,Dc:14,Ec:15,Fc:16,Gc:17,Hc:18,Ic:19,Jc:20,Kc:21,Lc:22,Mc:23,Nc:24,Oc:25,Pc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,rc:66,tc:67,Qc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,Vc:74,Wc:75,Xc:76,Yc:77,Zc:78,$c:79,ad:80,Q:81,bd:82,cd:83,dd:84,ed:85,fd:86,gd:87,
+var ma={sc:0,Kb:1,uc:2,vc:3,wc:4,xc:5,yc:6,zc:7,xb:8,Ac:9,Lb:10,Bc:11,Cc:12,Mb:13,Dc:14,Ec:15,Fc:16,Gc:17,Hc:18,Ic:19,Jc:20,Kc:21,Lc:22,Mc:23,Nc:24,Oc:25,Pc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,rc:66,tc:67,Qc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,Vc:74,Wc:75,Xc:76,Yc:77,Zc:78,$c:79,ad:80,Q:81,bd:82,cd:83,dd:84,ed:85,fd:86,gd:87,
 hd:88,jd:89,Ob:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,kd:97,ld:98,md:99,d:100,e:101,nd:102,od:103,pd:104,qd:105,rd:106,k:107,sd:108,td:109,n:110,ud:111,p:112,q:113,r:114,vd:115,t:116,xd:117,yd:118,zd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Nb:127};
 function sa(a,b){var c;if(a){b||(b=10);var d,e,f=0g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function ua(a,b,c){b?12=b?6:16777215>=b?8:12);return ta(a,8,b,c?"0o":"")}
 function va(a,b){b?11=Math.abs(a)?5:11;return ta(a,10,b)}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return ta(a,16,b,c?"0x":"")}function wa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Aa[a]})}function Ba(a,b){return(a+"                                        ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0"']/g,function(a){return Aa[a]})}function Ba(a,b){return(a+"                                        ").slice(0,b)}function Ca(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
 function Ha(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
 f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
-function Ia(a,b){var c,d={ea:null,Y:null,ya:null,xa:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ya=g.load;d.xa=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.la=g.load;d.ya=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.ea=g;d.ea&&(d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null));d.Y=g.symbols}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,pb:!1,Z:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.za=null;lb.push(this)}function mb(a,b,c){nb[a]&&b&&(nb[a][b]=c)}function ob(){return Date.now()||+new Date}
-function q(a){window&&window.alert(a)}function pb(a){var b=!1;window&&(b=window.confirm(a));return b}function qb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Wa:!1,pb:!1,aa:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.za=null;kb.push(this)}function lb(a,b,c){mb[a]&&b&&(mb[a][b]=c)}function nb(){return Date.now()||+new Date}
+function q(a){window&&window.alert(a)}function ob(a){var b=!1;window&&(b=window.confirm(a));return b}function pb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.bc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Tb,toggle:this.mc,reset:this.ic,
 set:this.lc};Mb(this)}ka(bc,r);m=bc.prototype;m.reset=function(a){this.stop();a&&dc(this,this.w=0)};
-m.ra=function(a,b,c,d){if(this.H&&this.H.ra(a,b,c,d)||this.v&&this.v.ra(a,b,c,d)||this.D&&this.D.ra(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
-function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.ra.call(this,a,b,c,d)}};m.La=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Ba=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.qa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
+m.ta=function(a,b,c,d){if(this.H&&this.H.ta(a,b,c,d)||this.v&&this.v.ta(a,b,c,d)||this.D&&this.D.ta(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ec(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){fc(a,b)}}(this,b),a.ontouchstart=
+function(a,b){return function(c){ec(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){fc(a,b)}}(this,b),!0):r.prototype.ta.call(this,a,b,c,d)}};m.La=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;gc(this);hc(this)};m.Ba=function(a,b){if(!b)if(this.V&&ic(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.sa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()};
 m.restore=function(a){if(a=a[0])jc(this,this.i=a[0]),dc(this,this.w=a[1]),kc(this,a[2]);return!0};m.ic=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}hc(this);return!0};function lc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function gc(a,b){for(var c in a.C)lc(a,c,null!=b?b:a.C[c])}function mc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function hc(a){for(var b in a.b)mc(a,b,a.b[b][1])}
 m.Tb=function(a,b,c){if(ec(this,b)){if(c){var d=this;setTimeout(function(){fc(d,b);a&&a()},+c);return!1}fc(this,b)}return!0};m.lc=function(a,b){if("SR"==a)return kc(this,sa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};m.mc=function(a){return ec(this,a)?(fc(this,a),!0):!1};function ec(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.S=b==pc),!0):!1}
 function fc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.cc=function(a){a||this.v.A.O||(G(this.v,this.i),this.b[qc]&&this.b[qc][1]&&rc(this.v))};m.dc=function(){};m.Yb=function(a){a||this.v.W()};
-m.Wb=function(a){if(!a&&!this.v.A.O)if(this.b[qc]&&this.b[qc][1])rc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),sc(a,0,null),Ob(a,!1);else try{var b=this.v.$a(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Gc[d]+" at "+ua(b)),!0):Ec(Lc,b,c)}
+function ic(){for(var a=w(document,v,"panel"),b=0;bd.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Gc[d]+" at "+ua(b)),!0):Ec(Kc,b,c)}
 function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.na&&(a.na+=a.ma,c=!0);0<=a.oa&&a.oa<=fd(a)&&(a.ma=a.oa=-1,bd(a),a.W(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Ga))}}
-m.ra=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.Z)a=!0;else{var b=null,c,h=qb(a.id);for(c=0;ca.ba/a.ha?b=1:d=!0;a.ja=b;b=a.kb*a.ja;if(a.ha!=b){a.ha=b;b=a.ha.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}uc(a,a.M);a.M=0;a.L=ob();a.U=0;hd(a);return d}function kd(a,b){for(var c=a.S.length-1;0<=c;c--){var d=a.S[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c}
-m.jc=function(){if(this.A.O){this.cb>=this.mb&&hd(this,!0);this.sa=0;this.Fa=ob();if(this.U){var a=this.Fa-this.U;a>this.lb&&(this.L+=a,this.L>this.Fa&&(this.L=this.Fa))}try{do{var b=kd(this,this.A.Ua?1:this.Ia);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.sa+=b;this.M+=b;vc(this,b);tc(this,b);this.ka-=b;if(0>=this.ka){this.ka+=this.Ia;++this.nb>=nd&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(ob(),fd(this));zb(this,
-e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.U=ob();var c=this.lb;this.sa&&(c=Math.round(c*this.sa/this.Ia));var c=c-(this.U-this.Fa),d=this.U-this.L;d&&(this.ba=Math.round(this.M/(10*d))/100,864E5<=d&&(this.X=0,gd(this)));if(0>c||this.bac&&(this.L-=c),c=0;this.cb+=this.sa;this.U+=c;a(b,c)}}};
-function rc(a,b){if(!Ab(a))if(a.A.O)a.u(a.toString()+" busy");else{gd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){md(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(ob(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"];
-function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=pd.bind(this);this.w=L.bind(this);this.Da=null;this.vb=[];this.A.complete=!1}ka(od,Yc);m=od.prototype;
-m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ja=this.Ka=this.b=this.I=0;this.i=this.Ea=this.Oa;this.K=this.P=-1;this.F=this.j=0;this.ob=[0,0];this.ta=[0,0];this.la=[0,0];this.ua=[0,0];this.Ca=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Da=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Ib=function(){return 0};
-m.save=function(){var a=new F(this);a.set(0,[this.b,this.I,this.Ja,this.Ka,this.i,this.P,this.K,this.j,this.C,this.Ea,this.Ca,this.Oa]);a.set(1,[]);a.set(2,[this.X,this.ja,this.A.ga]);a.set(3,qd(this));a.set(4,ld(this));return a.data()};
-m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ja=b.next().value;this.Ka=b.next().value;this.i=b.next().value;this.P=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ea=b.next().value;this.Ca=b.next().value;this.Oa=b.next().value;b=a[2];this.X=b[0];gd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
+m.Rb=function(a){this.w||(this.D&&Pb(this.D,4)&&Qb(this.D,"memory fault on "+K(this.D,a),!0,!0),this.v.W())};function Ec(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Fc=1,Kc=2;function Lc(a){r.call(this,"Device",a,256)}ka(Lc,r);m=Lc.prototype;m.La=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.D=d;Mb(this)};m.Ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.sa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){return(new F(this)).data()};
+m.restore=function(){return!0};Xa(function(){for(var a=w(document,v,"device"),b=0;b=a.pa&&(a.pa+=a.oa,c=!0);0<=a.qa&&a.qa<=ed(a)&&(a.oa=a.qa=-1,ad(a),a.W(),c=!0);c&&a.u(ed(a)+" cycles: checksum="+n(a.Ga))}}
+m.ta=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.aa)a=!0;else{var b=null,c,h=pb(a.id);for(c=0;ca.ba/a.ia?b=1:d=!0;a.ja=b;b=a.kb*a.ja;if(a.ia!=b){a.ia=b;b=a.ia.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&id(a.H)}uc(a,a.M);a.M=0;a.L=nb();a.U=0;gd(a);return d}function jd(a,b){for(var c=a.S.length-1;0<=c;c--){var d=a.S[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function kd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function ld(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c}
+m.jc=function(){if(this.A.O){this.cb>=this.mb&&gd(this,!0);this.ua=0;this.Fa=nb();if(this.U){var a=this.Fa-this.U;a>this.lb&&(this.L+=a,this.L>this.Fa&&(this.L=this.Fa))}try{do{var b=jd(this,this.A.Va?1:this.Ia);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=ld(this,!0);this.ua+=b;this.M+=b;vc(this,b);tc(this,b);this.ka-=b;if(0>=this.ka){this.ka+=this.Ia;++this.nb>=md&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(nb(),ed(this));yb(this,
+e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.U=nb();var c=this.lb;this.ua&&(c=Math.round(c*this.ua/this.Ia));var c=c-(this.U-this.Fa),d=this.U-this.L;d&&(this.ba=Math.round(this.M/(10*d))/100,864E5<=d&&(this.X=0,fd(this)));if(0>c||this.bac&&(this.L-=c),c=0;this.cb+=this.ua;this.U+=c;a(b,c)}}};
+function rc(a,b){if(!zb(a))if(a.A.O)a.u(a.toString()+" busy");else{fd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&id(a.H,!0),a.H.start(a.L,ed(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){ld(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(nb(),ed(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var hd=30,md=15,Yc=["power","reset"];
+function nd(a){var b=+a.model||1001;Xc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=od.bind(this);this.w=L.bind(this);this.Da=null;this.vb=[];this.A.complete=!1}ka(nd,Xc);m=nd.prototype;
+m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ja=this.Ka=this.b=this.I=0;this.i=this.Ea=this.Oa;this.K=this.P=-1;this.F=this.j=0;this.ob=[0,0];this.va=[0,0];this.na=[0,0];this.xa=[0,0];this.Ca=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Da=null;$c(this);this.A.error=!1;Xc.prototype.reset.call(this)};m.Ib=function(){return 0};
+m.save=function(){var a=new F(this);a.set(0,[this.b,this.I,this.Ja,this.Ka,this.i,this.P,this.K,this.j,this.C,this.Ea,this.Ca,this.Oa]);a.set(1,[]);a.set(2,[this.X,this.ja,this.A.ga]);a.set(3,pd(this));a.set(4,kd(this));return a.data()};
+m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ja=b.next().value;this.Ka=b.next().value;this.i=b.next().value;this.P=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ea=b.next().value;this.Ca=b.next().value;this.Oa=b.next().value;b=a[2];this.X=b[0];fd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
 m.qc=function(a,b){var c=this.G;a=this.Ca=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
-m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Da||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ja=this.f(this.b):0<=this.P?(this.I=this.Ka=this.f(this.P),this.P=-1):(this.I=this.Ka=
-this.f(this.Ea=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ja=this.f(a))&Sb;a=this.I&4194304?-1:this.Ka/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
-function wd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}}
-function yd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,B-this.f(b))}function Ed(a,b){this.g(b,B)}
-function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Kd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}
-function be(a,b){var c=this.b*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)}function ce(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+b)}function de(a,b){var c=this.f(this.b),d=(c&x)*y,c=Gd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function ee(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ge(a,b){var c=this.f(b);this.g(b,fe(a,c,this.b)+this.b)}function he(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}
-function ie(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function je(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,fe(a,d,c)+c)}function ke(a,b){var c=this.f(b);this.g(b,fe(a,c,0))}function le(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,fe(a,c,b)+b)}function me(a,b){var c=this.f(this.b),d=c/y|0,c=fe(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){ne[a&7].call(this,a,a>>3&127)}
-function oe(){}function pe(){}function L(a){this.u("undefined opcode: "+ua(a));sd(this,-1);this.W()}function qe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;re.call(this,a,b,c);return c}
-function se(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.ta;f[0]=1;f[1]=0;f=this.la;f[0]=c;f[1]=0;c=this.ua;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),ue(this.ob,this.ta),ve(this.ua)))break;we(this.la);we(this.ta)}while(!ve(this.ta));
-a=this.ob[0];this.F=this.ua[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a}
-function xe(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(dz)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b}
-function ye(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ze(a,b){var c=a-b;0>c&&(c+=C);re.call(this,c,b,a);return c}function re(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>0)}function U(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function V(a){return a>>0)}function X(a){return(a/y|0)+(a&x)*y}function fe(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Ub?x*y:0}return b}function Gd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b}
-function ue(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=C&&(a[0]%=C,a[1]++)}function te(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function we(a){a[1]%2&&(a[0]+=C);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function ve(a){return!a[0]&&!a[1]}
-var vd=[N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},wd,function(a,b){this.j&8192||(wd.call(this),this.j|=8192);xd.call(this,0,b)},xd,function(a,b){this.j&8192||(wd.call(this),this.j|=8192);yd.call(this,0,b)},yd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},
+m.$a=function(a){this.A.complete=!0;var b=this.D?sd(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(td(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Da||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&td(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ja=this.f(this.b):0<=this.P?(this.I=this.Ka=this.f(this.P),this.P=-1):(this.I=this.Ka=
+this.f(this.Ea=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ja=this.f(a))&Sb;a=this.I&4194304?-1:this.Ka/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
+function vd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function wd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}}
+function xd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function yd(a,b){this.g(b,this.f(this.b))}function zd(a,b){this.g(b,this.b)}function Ad(a,b){this.g(this.b,this.f(b))}function Bd(a,b){this.g(b,0)}function Cd(a,b){this.g(b,B-this.f(b))}function Dd(a,b){this.g(b,B)}
+function Ed(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Fd(a,d,c)+(c-(c&x)))}function Gd(a,b){var c=this.f(b);this.g(b,Fd(a,c,0))}function Hd(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+(b-(b&x)))}function Id(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Jd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)}
+function ae(a,b){var c=this.b*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)}function be(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+b)}function ce(a,b){var c=this.f(this.b),d=(c&x)*y,c=Fd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function de(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,ee(a,d,c)+c)}function fe(a,b){var c=this.f(b);this.g(b,ee(a,c,this.b)+this.b)}function ge(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,ee(a,c,b)+b)}
+function he(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Ub?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ie(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,ee(a,d,c)+c)}function je(a,b){var c=this.f(b);this.g(b,ee(a,c,0))}function ke(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,ee(a,c,b)+b)}function le(a,b){var c=this.f(this.b),d=c/y|0,c=ee(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function O(a){me[a&7].call(this,a,a>>3&127)}
+function ne(){}function oe(){}function L(a){this.u("undefined opcode: "+ua(a));rd(this,-1);this.W()}function pe(a){a>z&&(a!=A?a=Wb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;qe.call(this,a,b,c);return c}
+function re(a,b,c){var d=!1,e=!1,f=b-b%A;a=a%A+b*A%C;b=this.F=f+Math.trunc(b/2);c>z&&(c=C-c,d=!d);b>z&&(a?(b=B-b,a=C-a):b&&(b=C-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.ob;f[0]=0;f[1]=0;f=this.va;f[0]=1;f[1]=0;f=this.na;f[0]=c;f[1]=0;c=this.xa;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=C,b[1]--),te(this.ob,this.va),ue(this.xa)))break;ve(this.na);ve(this.va)}while(!ue(this.va));
+a=this.ob[0];this.F=this.xa[0];d&&a&&(a=C-a);e&&this.F&&(this.F=C-this.F);return a}
+function we(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(d=C-d,b=!b);e>z&&(e=C-e,b=!b);if(dz)&&(f!=B||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%A;b=2*b%C+Math.trunc(c/A);c=a+c%A;d=b-b%A;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b}
+function xe(a){a?a==A?this.j|=163840:a=Wb-a:this.j|=98304;return a}function ye(a,b){var c=a-b;0>c&&(c+=C);qe.call(this,c,b,a);return c}function qe(a,b,c){a=Math.trunc(a/Vb);b=Math.trunc(b/Vb);c=Math.trunc(c/Vb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>0)}function U(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function V(a){return a>>0)}function X(a){return(a/y|0)+(a&x)*y}function ee(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Ub?x*y:0}return b}function Fd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b}
+function te(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=C&&(a[0]%=C,a[1]++)}function se(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function ve(a){a[1]%2&&(a[0]+=C);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function ue(a){return!a[0]&&!a[1]}
+var ud=[N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},vd,function(a,b){this.j&8192||(vd.call(this),this.j|=8192);wd.call(this,0,b)},wd,function(a,b){this.j&8192||(vd.call(this),this.j|=8192);xd.call(this,0,b)},xd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},
 function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},
-function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},zd,Ad,Bd,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,ye.call(this,this.f(this.b)))},function(a,b){this.g(b,
-ye.call(this,this.b))},function(a,b){this.g(this.b,ye.call(this,this.f(b)))},function(a,b){a=ye.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,qe.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,qe.call(this,this.f(b)))},function(a,b){a=qe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,xe.call(this,this.f(b),this.b,!0))},function(a,
-b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,xe.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,xe.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,xe.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,xe.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=se.call(this,
-this.f(b),0,this.f(this.b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.b);0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=se.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,
-c,a,this.b);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);b=this.f(b+1&15);b=se.call(this,b,a,this.f(this.b));0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=se.call(this,c,a,this.f(this.b));0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){var c=(this.b<<14>>14)%256;if(c){a=this.f(b);var d=a>z?-(C-a):a;0d?A:0,c=z):(d=d*Math.pow(2,c)%A,c=A-Math.pow(2,35-c)),a<=z?a+c>z&&(this.j|=131072):a-c<=z&&(this.j|=131072)):d=-35>=
+function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},yd,zd,Ad,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,xe.call(this,this.f(this.b)))},function(a,b){this.g(b,
+xe.call(this,this.b))},function(a,b){this.g(this.b,xe.call(this,this.f(b)))},function(a,b){a=xe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,pe.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,pe.call(this,this.f(b)))},function(a,b){a=pe.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,we.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,we.call(this,this.f(b),this.b,!0))},function(a,
+b){this.g(this.b,we.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(this.b,this.g(b,we.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,we.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,we.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,we.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,we.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=re.call(this,
+this.f(b),0,this.f(this.b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=re.call(this,this.f(b),0,this.b);0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=re.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=re.call(this,this.f(b),0,this.f(this.b));0>a||this.g(this.b,a)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=re.call(this,c,a,this.f(this.b));0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=re.call(this,
+c,a,this.b);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);b=this.f(b+1&15);b=re.call(this,b,a,this.f(this.b));0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=re.call(this,c,a,this.f(this.b));0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){var c=(this.b<<14>>14)%256;if(c){a=this.f(b);var d=a>z?-(C-a):a;0d?A:0,c=z):(d=d*Math.pow(2,c)%A,c=A-Math.pow(2,35-c)),a<=z?a+c>z&&(this.j|=131072):a-c<=z&&(this.j|=131072)):d=-35>=
 c?0>d?-1:0:Math.trunc(d/Math.pow(2,-c));a=0>d?d+C:d;this.g(b,a)}},function(a,b){if(a=(this.b<<14>>14)%36){var c=this.f(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%C+Math.trunc(c/Math.pow(2,36-a));this.g(b,c)}},function(a,b){if(a=(this.b<<14>>14)%256){var c=this.f(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.g(b,c)}},function(a,b){a=0;var c=this.f(b);if(c){for(;c>14)%256){var c,d=this.f(b),e=this.f(b+
 1&15);if(0z&&dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d>z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-
 Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=(this.b<<14>>14)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2,a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,
 b){if(a=(this.b<<14>>14)%256){var c=this.f(b),d=this.f(b+1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},L,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b,a)},function(a,b){a=!1;for(var c=this.f(b),d=c/y|0,c=c&x;!a;)this.g(c,this.f(d)),
-c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d*y+c),a||sd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&rd(this,this.Ja/y|0);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.P=this.b},L,function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Sb,
+c==this.b&&(a=!0),d=d+1&x,c=c+1&x,this.A.O||(this.g(b,d*y+c),a||rd(this,-1),a=!0)},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&G(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&qd(this,this.Ja/y|0);b&4&&this.W();b&8&&this.w(a);G(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,G(this,this.b))},function(){this.P=this.b},L,function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Sb,
 (this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){a=this.f(b);a+=262145;this.g(a&Sb,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Sb);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Sb);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a);G(this,c&Sb)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b+
 1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;G(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);G(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,
-b){this.g(b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ze.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ze.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ze.call(this,this.f(b),this.f(this.b))))},oe,function(a,b){0>T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+
-1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,
+b){this.g(b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,ye.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,ye.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,ye.call(this,this.f(b),this.f(this.b))))},ne,function(a,b){0>T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){T(this.f(b),this.b)||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.b)&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.b)&&G(this,this.i+
+1)},function(a,b){T(this.f(b),this.b)&&G(this,this.i+1)},function(a,b){0T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))||G(this,this.i+1)},function(a,b){0>=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(){G(this,this.i+1)},function(a,b){0<=T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){T(this.f(b),this.f(this.b))&&G(this,this.i+1)},function(a,b){0V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))||G(this,this.b)},function(a,b){0>=V(this.f(b))&&G(this,this.b)},function(){G(this,this.b)},function(a,b){0<=V(this.f(b))&&G(this,this.b)},function(a,b){V(this.f(b))&&G(this,this.b)},function(a,b){0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)||G(this,this.i+1);b&&this.g(b,
 a)},function(a,b){a=this.f(this.b);0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){G(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,
 Q.call(this,this.f(b),1));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)||G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,
 b){a=this.g(this.b,Q.call(this,this.f(this.b),1));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)||G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0>=V(a)&&G(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),
 B));G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));V(a)&&G(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)||G(this,this.i+
 1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));V(a)&&G(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>>f.i;0>>=
-f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ra.wb&&c<=ra.Ob&&(b=c-(ra.wb-ra.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ra.Mb&&(b=ra.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
+O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O],me=[function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a,b){switch(b){case 0:a=this.f(this.b);a&8&&(this.j&=-131073);a&131072&&(this.j&=-262145);break;default:this.w(a)}},function(a,b){switch(b){case 0:a=0;this.j&131072&&(a|=8);this.j&262144&&(a|=65536);this.g(this.b,a);break;default:this.w(a)}},function(a){this.w(a)},function(a){this.w(a)}];
+function Ae(a){r.call(this,"ROM",a,128);this.Y=this.b=null;this.C=+a.addr;this.j=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=wa(this.w);if(this.w){a=this.w;var b=xa(this.F);"json"!=b&&"hex"!=b&&(a=Ja()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;Ha(a,null,!0,function(a,b,f){f?(c.ha("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(lb(c.bb,a,b),(a=Ia(a,b))?(c.b=a.ea,c.Y=a.Y):c.w=null);Be(c)})}}ka(Ae,r);
+Ae.prototype.La=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Be(this)};Ae.prototype.Ba=function(){this.Y&&(this.D&&Ce(this.D,this.id,this.C,this.j,this.Y),delete this.Y);return!0};Ae.prototype.sa=function(){return!0};
+function Be(a){if(!Bb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)yb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.j,8,!0)+")");else{var b;b=a.C;if(Dc(a.G,b,a.j,Oc)){var c;for(c=0;c>>f.i;0>>=
+f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ma.wb&&c<=ma.Ob&&(b=c-(ma.wb-ma.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ma.Mb&&(b=ma.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
 a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.La=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)};
-m.Jb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.ab)return;c=Ea(c[1]);if(this.b=rb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
-m.qa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.U?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)}
-function Ne(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)^(c/Me|0))*Me+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b}
-function Oe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break;
-case "&":f=Le(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Me|0|g/Me|0)*Me+((f|g)>>>0));break;case "^!":f=Ne(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Pe(a,b,0,b.length,a.T,c);void 0!==d&&!1===c&&Ue(a,null,d)}return d}
-function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
-function Ue(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.T?K(a,c,a.L,8,1)+"  "+c+".":K(a,c,a.L,16,1)+"  "+K(a,c,a.L,8,1)+"  "+K(a,c,a.L,2,32>=a.L?8:6)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ve(a){var b=a.I;a.I={};return b}function We(a,b){if(b)return Ue(a,b,a.I[b]);var c=0;for(b in a.I)Ue(a,b,a.I[b]),c++;return 0");if(2==c.length){var d=Ca(c[0]);if(d!=this.ab)return;c=Ca(c[1]);if(this.b=qb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
+m.sa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.U?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ca(b.substring(c,f))),c=f+1}}return a}function Ke(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)&(c/Le|0))*Le+((b&c)>>>0)}
+function Me(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)^(c/Le|0))*Le+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b}
+function Ne(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break;
+case "&":f=Ke(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Le|0|g/Le|0)*Le+((f|g)>>>0));break;case "^!":f=Me(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Oe(a,b,0,b.length,a.T,c);void 0!==d&&!1===c&&Te(a,null,d)}return d}
+function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
+function Te(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.T?K(a,c,a.L,8,1)+"  "+c+".":K(a,c,a.L,16,1)+"  "+K(a,c,a.L,8,1)+"  "+K(a,c,a.L,2,32>=a.L?8:6)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function Ue(a){var b=a.I;a.I={};return b}function Ve(a,b){if(b)return Te(a,b,a.I[b]);var c=0;for(b in a.I)Te(a,b,a.I[b]),c++;return 0=a?8:262143>=a?18:36);b=ta(b,2,a,"",e);break;case 8:b=ua(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
-var Re={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Me=Math.pow(2,32);
-function Xe(a){Je.call(this,a);this.Ja=!1;this.Ga=18;this.L=36;this.ba=["<",">"];this.sa=[];this.Ia=Z();this.M=Z(0);this.na=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Ye(this);this.V=this.oa=0;this.i=[];this.Ea=void 0;Ze(this);this.D=this;this.Ca={};this.ca=this.Eb=0;this.X=null;this.S=[];$e(this,a.messages);this.ua=a.commands;this.Ha=[];this.P=0;this.Oa=this.Fa=null;this.C=this.Na=this.Ka=this.ma=this.Da=0;this.ta=this.la=this.ha=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b,
-a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ka(Xe,Je);function af(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,pa:!1,T:c}}function bf(a,b,c,d){a.B=b;a.eb=c||!1;a.pa=!1;a.T=d}function cf(a){return[a.B,a.eb,a.pa,a.T,a.hb]}function df(a,b){var c=Z(b[0],b[1],b[2]);c.pa=b[3];b[4]&&(c.zb=Ke(a,c.hb=b[4]));return c}m=Xe.prototype;
-m.La=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.la=a.j;this.Ga=b.F;(b=$c(a,"messages"))&&$e(this,b);if(a=$c(a,"commands"))this.ua=a;ef(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=af(ff(d,c,d.na));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Gc[c],p&&d.u(n(p.id,8)+"  %"+
-n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function jf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)}
-function $e(a,b){a.D=a;a.ca=a.Eb=536870916;a.X=null;a.S=[];b=Ke(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Ea==b&&(b=sd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(bf(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
-function Bf(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Cf)if(g=Cf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Df;l=p&3;break;case 32256:k=Ef;l=p&7;break;case 29248:k=Ff,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Gf&&(k="B");k=Hf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f,
--1)+")")}else k=Ba(k,8)+jf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+jf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+fd(a.v).toString()+" cs="+n(a.v.Ga)):h+(null!=d?"="+d.toString():""));return h}
-function Jf(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;lGf&&(P="B");if(k==Hf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
-(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127
-h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Ye(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Da=0;a.oa=0}
-m.Ra=function(a,b,c){var d=!0;c||Kf(this,a,b,!1,!0);if(a!=this.b){var e=af(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.pa=!0:(Lf(this,a,a.length-1,"set"),Ze(this)));return d};function Kf(a,b,c,d,e){var f=!1;c=af(c);for(var g=1;g>>d.i],b==a.K));h.pa||Ze(a);break}}return f}
-function Mf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);bf(e.Ia,d);f+="="+K(e,e.Ma(e.Ia),36)+" ";c+=f}if(b){b="";for(d=0;d=pf?1:d==mf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,Y:e,Bb:f})}function pg(a,b,c){var d=[],e=af(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eb){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case lf:G(h,
-g);bf(a.M,h.i);break;case of:rd(h,g);break;case pf:f=131072;break;case qf:f=65536;break;case rf:f=32768;break;case sf:f=32;break;case tf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(ng(a,e));c&&(bf(a.M,0<=d.P?d.P:d.i),zf(a,K(a,a.M.B,18)))}}function wg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.pa=l.pa;h.T=l.T;a.u(Bf(a,b,g,f));e-=b.B-k;c++}}}
-function Nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(xf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.X=null;if(Cb(a)&&0p||"z"na.length&&(a.u("note: only "+na.length+" available"),da=na.length);ia-=da;0>ia&&(null==na[na.length-1].B?(da=ia+da,ia=0):ia+=na.length);var Od=
-[];"call"==Sf&&(Db=1E5,Od=["CALL"]);for(void 0!==Rf&&a.u(da+" instructions earlier:");0=na.length&&(ia=0);a.Ea=da;Uf++;Db--}}Uf||(a.u("no "+Tf+"history available"),a.Ea=void 0)}else{var jb=ff(a,ma,a.na);if(jb){var Ma=0,Xf="ds"==gb;if(Ca){if("l"==Ca.charAt(0))Ca=Ca.substr(1)||Ch,Ma=Qe(a,Ca);else{var Yf=ff(a,Ca);Yf&&
-(Ma=Yf.B-jb.B)}0>Ma&&(Ma=0);65536Fb?".":String.fromCharCode(Fb)),Hc=Hc-7}Na&&(Na+="\n");Na=Xf?Na+(oa+","):Na+(ma+": "+oa+(0>$f?
-" "+Rd:""))}Na&&a.u(Na);a.T=Eh}}}}break;case "e":if("else"==g[0])break;var ag,bg,cg=g[0],Td=g[1];"e"==cg||"ew"==cg?(ag=a.Ma,bg=a.yb):Td=null;if(null==Td)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else{var Ic=ff(a,Td,a.na);if(Ic)for(var Ud=2;Ud
-Xd;){for(var Oa=null,Jh=256;65536>Ib.B>>>0;){Yd.B=a.Ma(Ib,2);if(null==Ib.B||!Jh--)break;if(!(Yd.B&1)){for(var Kh=a,Jc=Yd,eg=null,Jb=Jc.B,fg=Jb,Zd=1;6>=Zd&&Jb;Zd++){if(2lg)a.u("step commands:"),
-a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.P)a.u("step in progress");else{var mg=Z(a.v.i);a.Ma(mg);a.P?(a.Ra(a.b,mg,!0),vf(a)||(a.H&&jd(a.H),a.P=0)):xg(a,lg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}yf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var kb=+g[2];if(2==kb||8==kb||10==kb||16==kb)a.T=kb;else{a.u("invalid base: "+kb);break}}a.u("default base: "+a.T);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.ma=
-Lb;break;case "start":a.v.Ha=Lb;break;case "stop":a.v.oa=Lb;break;default:a.u("unknown cs option");break a}void 0!==Lb&&bd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ha.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),
-a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":xg(a,g[0],g[1]);break;case "u":zf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){ug(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){wg(a,b.substr(1));break}var $d="commands:",ae;for(ae in zg)$d+="\n"+
-Ba(ae,9)+zg[ae];td(a)||($d+="\nnote: history disabled if no exec breakpoints");a.u($d);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(og){a.u("Debugger "+(og.stack||og.message)),d=!1}return d}function ed(a,b,c){null!=b&&(a.Ha=Ke(a,b,c));for(;b=a.Ha.shift();)if(!Nf(a,b))return!1;return!0}
-var zg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Gf=20,Hf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
-lf=0,mf=1,nf=2,of=3,pf=4,qf=5,rf=6,sf=7,tf=8,kf="PC RA EA PS OV C0 C1 ND PD".split(" "),Ag={},Cf=(Ag[28672]={0:101},Ag[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Ag[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Gf,9216:53,
-9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Ag[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Ag[29248]={24576:79,24640:80,25088:81,25152:82},Ag[28700]={28672:93,28676:94,28680:95,28684:96,
-28688:97,28692:98,28696:99,28700:100},Ag),Df=["","I","M","S"],Ef=" L E LE A GE N G".split(" "),Ff="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),If=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],uf=1E3,xf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;bb.indexOf(":")&&".MAC"==b.slice(-4).toUpperCase()&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/
([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Dg(a,"unrecognized HTML entity: "+c[0])}a.G=a.G.concat(e.split(/(\r?\n)/));setTimeout(function(){Bg(a)},
-0)}})}}
-function Cg(a){if(0<=a.ha.indexOf("p"))return a.u(a.G.join("")),0;var b=Ve(a.b);try{for(var c=0;cI)break;var u=
-I+1,P=I+l.length,eb="",Bb="";I&&(eb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Bb=b[P]).match(/[0-9A-Z$%.]/i)||("'"==eb&&I--,"'"==Bb&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Fg(a,d,a.aa,Gg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Pg:"=:"==f&&(e|=Qg),Fg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Rg(a,b))&&(b=b.replace(H,Sg(a,Tg,Rg(a,h))));H=Ug(a,b);)b=b.replace(H,H.slice(0,-1));
-if(!Vg(a,f,b))switch(f){case Wg:case Xg:case Yg:Mg(a,h);break;case Zg:(f=b)?(a.F=Jg(a,f,!0),void 0===a.F&&a.error("unrecognized expression: "+f)):a.F=a.U;break;case $g:ah(a,b);break;case bh:ah(a,b.replace(",",",,"));break;case ch:case dh:case eh:case Ng:case Og:case fh:case gh:Sg(a,f,h);break;case hh:case ih:case jh:case kh:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=Jf(a.b,f,b,0<=a.va?a.va:a.aa,!0)),0>H&&(H=Jg(a,h,!0)),void 0!==H?Hg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
-function Vg(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Wa==lh){var e=a.aa;Ig(a,d.wa);if(ea.va&&(a.va=a.aa);a.aa=0}
-function nh(a){if(a.w.length){var b=a.w[a.w.length-1].name;b&&a.M.push({name:b,R:a.R,fa:a.fa});b=a.w.pop();a.R=b.R;a.fa=b.fa;a.aa=b.aa;a.va=b.va;a.w.length||-1==a.va||a.error("scope restore error")}else a.error("scope nesting error")}tg.prototype.error=function(a){throw Error("error"+(this.da?" at line "+va(this.da):"")+": "+a);};function Dg(a,b){a.u("warning"+(a.da?" at line "+va(a.da):"")+": "+b)}
-function ph(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Ug(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;a.j[d]&&a.error("reserved symbol redefined: "+c);var e,f,g;e=f=g=[];a.j[d]={name:d,Wa:qh,Ta:e,Ab:f,Qa:g,wa:b+": 0",da:a.da};a.L.push(d)}return c}
-function oh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=ph(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
-function Mg(a,b){var c=b;null==a.D&&(a.D=a.J="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.J+=b}if(null==a.D){var d=b=0,e,f,g=a.J.length;a.K==Xg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Hg(a,d),b=0)}b&&Hg(a,d)}return c}
-function Sg(a,b,c){var d,e,f,g,h,k;a.H="<";a.C=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]){h=g=oh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=rh;c=3}else if(b==fh){a.H="[";a.C="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
-b+": "+c),c;f=e[1];b=lh;c=2}else if(b==Tg)a.H="[",a.C="]",f="?"+va(++a.X,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],b=sh,c=0;else if(b==Ng||b==Og){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Dg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}tg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};var Gg=1,Pg=2,Qg=4,Wg="ASCII",Xg="ASCIZ",ch="DEFINE",Zg="END",$g="EXP",dh="IFE",eh="IFN",Ng="IRP",Og="IRPC",hh="LALL",Tg="LITERAL",fh="OPDEF",ih="PAGE",gh="REPEAT",Yg="SIXBIT",jh="SUBTTL",kh="TITLE",bh="XWD",rh=-1,lh=-2,sh=-3,qh=-4;
-function th(a,b,c){r.call(this,"Computer",a,33554432);this.A.Z=!1;this.S=null;uh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.X=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=vh(this);if(this.v=sb("CPU",this.id)){this.D=sb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.X},this.v,this.D);var d,e=qb(this.id);if((this.j=sb("Panel",this.id))&&this.j.za)for(b=
-0;b\nLicense: GPL version 3 or later ");for(b=0;bwh){if(xh(d,this.L)){this.C=new F(this,"1.34.3",Rh);xh(this.C)&&(Sh(this,d),a=Th,Uh(this.C));this.C.set(Oh,Ga());Vh(this.C);var e=this.b&&!this.K;if(a==Ph||pb("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Nh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?xh(d,g):("error"==f&&"no machine state"!=
-g?(this.ia("Error: "+g),"unable to verify user"==g&&(Qa(Wh,""),this.i=null)):this.u(f+": "+g),Uh(d),xh(d)?(c=Nh(d),e=!0):c=!1))}e&&Ah(this,c?d:null)}else a==Th&&d.clear()}else Ah(this);delete this.L;delete this.I}e=qb(this.id);for(f=0;fa[1];a=a[2];this.U=!0;this.A.Z=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Xh(this,this.v,b,c,a),J(this,-2),this.v.ga());this.P&&(Sh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
-function Sh(a,b){if(pb("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
-function yg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",Bh),h=Ga();g.set(Oh,h);f.set(Oh,h);f.set(Yh,"1.34.3");f.set(Zh,window?window.location.href:null);f.set($h,window?window.navigator.userAgent:"");a.v&&a.v.qa&&(c&&(b&&(a.v.A.ga=a.v.A.O),a.v.W()),d=a.v.qa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.Z=!1,!1===d&&(e=null)));for(var h=qb(a.id),k=0;k=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11},Le=Math.pow(2,32);
+function We(a){Ie.call(this,a);this.Ja=!1;this.Ga=18;this.L=36;this.ba=["<",">"];this.ua=[];this.Ia=Z();this.M=Z(0);this.pa=Z(0);this.ja=Z(0);this.F=[];this.b=this.N=this.K=[];Xe(this);this.V=this.qa=0;this.i=[];this.Ea=void 0;Ye(this);this.D=this;this.xa={};this.ca=this.Eb=0;this.X=null;this.S=[];Ze(this,a.messages);this.va=a.commands;this.Ha=[];this.P=0;this.Oa=this.Fa=null;this.C=this.Na=this.Ka=this.oa=this.Da=0;this.Ca=this.na=this.ia=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return dd(b,
+a)}):void 0===global[v]&&(global[v]=function(a){return dd(b,a)})}ka(We,Ie);function $e(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,ra:!1,T:c}}function af(a,b,c,d){a.B=b;a.eb=c||!1;a.ra=!1;a.T=d}function bf(a){return[a.B,a.eb,a.ra,a.T,a.hb]}function cf(a,b){var c=Z(b[0],b[1],b[2]);c.ra=b[3];b[4]&&(c.zb=Je(a,c.hb=b[4]));return c}m=We.prototype;
+m.La=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.na=a.j;this.Ga=b.F;(b=Zc(a,"messages"))&&Ze(this,b);if(a=Zc(a,"commands"))this.va=a;df(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=$e(ef(d,c,d.pa));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid   physical   blockaddr  used    size    type");d.u("--------  ---------  ---------  ------  ------  ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Gc[c],p&&d.u(n(p.id,8)+"  %"+
+n(e<a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function hf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)}
+function Ze(a,b){a.D=a;a.ca=a.Eb=536870916;a.X=null;a.S=[];b=Je(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in ac){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.Ea==b&&(b=rd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
+function Af(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Bf)if(g=Bf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Cf;l=p&3;break;case 32256:k=Df;l=p&7;break;case 29248:k=Ef,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Ff&&(k="B");k=Gf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f,
+-1)+")")}else k=Ba(k,8)+hf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+hf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Va?h+("cycles="+ed(a.v).toString()+" cs="+n(a.v.Ga)):h+(null!=d?"="+d.toString():""));return h}
+function If(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;lFf&&(P="B");if(k==Gf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
+(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127
+h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Da=0;a.qa=0}
+m.Ra=function(a,b,c){var d=!0;c||Jf(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.ra=!0:(Kf(this,a,a.length-1,"set"),Ye(this)));return d};function Jf(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g>>d.i],b==a.K));h.ra||Ye(a);break}}return f}
+function Lf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);af(e.Ia,d);f+="="+K(e,e.Ma(e.Ia),36)+" ";c+=f}if(b){b="";for(d=0;d=of?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,Y:e,Bb:f})}function og(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eg&&(g=b);e++});e?(a.u(e+" words loaded at "+K(a,f)+"-"+K(a,g)),null!=c&&G(a.v,c),bd(a)):a.u("no data")}function pg(a,b,c,d){var e={},f=a.F[b].Bb,g=0,h=null;0<=c&&c=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=ef(a,d,a.ja);if(!e)return a.u("begin assemble at "+K(a,f.B,18)),a.U=!0,J(a.H),!0;var g=e.match(/^(['"]?)(.*\.mac|.*\.html|.*\.txt)\1$/i);if(g){f=ef(a,d);if(a.Ca)a.u("assembly already in progress");else var h=g[2],k=f.B,l=a.Ca=new sg(h,k,c,a,function(b,c){if(b)a.u("error ("+b+") processing "+(c||h));else try{var d=l.G;null==d&&(d=k);qg(a,l.R,d)}catch(I){a.u(I.message),b=-1}a.Ca=null;b||dd(a)});return!1}b.shift();
+b.shift();b.shift();b=If(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(Af(a,f)));return!0}function tg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ve(a)||a.u("no variables"),!0;if(!c[2])return Ve(a,c[1]);if(!c[3])return delete a.I[c[1]],!0;b=Se(a,c[3]);return void 0!==b?(a.I[c[1]]=b,!0):!1}a.u("invalid assignment:"+b);return!1}
+function ug(a,b,c){var d=null;b=ef(a,b);var e=og(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+K(a,e[1],18)+")"+g,c&&a.u(f),d=f);4b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case kf:G(h,
+g);af(a.M,h.i);break;case nf:qd(h,g);break;case of:f=131072;break;case pf:f=65536;break;case qf:f=32768;break;case rf:f=32;break;case sf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(mg(a,e));c&&(af(a.M,0<=d.P?d.P:d.i),yf(a,K(a,a.M.B,18)))}}function vg(a,b){b=Ca(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.ra=l.ra;h.T=l.T;a.u(Af(a,b,g,f));e-=b.B-k;c++}}
+function Mf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(wf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.X=null;if(Bb(a)&&0p||"z"oa.length&&(a.u("note: only "+oa.length+" available"),ea=oa.length);ja-=ea;0>ja&&(null==oa[oa.length-1].B?(ea=ja+ea,ja=0):ja+=oa.length);var Nd=[];"call"==Rf&&(Cb=
+1E5,Nd=["CALL"]);for(void 0!==Qf&&a.u(ea+" instructions earlier:");0=oa.length&&(ja=0);a.Ea=ea;Tf++;Cb--}}Tf||(a.u("no "+Sf+"history available"),a.Ea=void 0)}else{var Ma=0,Wf="ds"==gb,Eb=ef(a,na,a.pa);Da&&("l"==Da.charAt(0)?(Da=Da.substr(1)||Dh,Ma=Pe(a,Da)):Ma=ef(a,Da).B-Eb.B,0>Ma&&(Ma=0),65536Fb?".":String.fromCharCode(Fb)),Hc=Hc-7}Na&&(Na+="\n");Na=Wf?Na+(pa+","):Na+(na+": "+pa+(0>Yf?" "+Qd:""))}Na&&a.u(Na);a.T=Fh}}}break;case "e":if("else"==
+g[0])break;var Zf,$f,ag=g[0],Sd=g[1];"e"==ag||"ew"==ag?(Zf=a.Ma,$f=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else for(var Td=ef(a,Sd,a.pa),Ud=2;UdWd;){for(var Oa=null,Kh=256;65536>Ib.B>>>0;){Xd.B=a.Ma(Ib,2);if(null==Ib.B||!Kh--)break;if(!(Xd.B&
+1)){for(var Lh=a,Ic=Xd,dg=null,Jb=Ic.B,eg=Jb,Yd=1;6>=Yd&&Jb;Yd++){if(2kg)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");
+else if(a.P)a.u("step in progress");else{var lg=Z(a.v.i);a.Ma(lg);a.P?(a.Ra(a.b,lg,!0),uf(a)||(a.H&&id(a.H),a.P=0)):wg(a,kg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}xf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.T=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.T);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.oa=Lb;break;case "start":a.v.Ha=Lb;break;case "stop":a.v.qa=Lb;
+break;default:a.u("unknown cs option");break a}void 0!==Lb&&ad(a.v);a.u("checksums "+(a.v.A.Va?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(fd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ia.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),
+a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":wg(a,g[0],g[1]);break;case "u":yf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){tg(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){vg(a,b.substr(1));break}var Zd="commands:",$d;for($d in yg)Zd+="\n"+Ba($d,9)+yg[$d];sd(a)||(Zd+="\nnote: history disabled if no exec breakpoints");
+a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(ng){a.u("Debugger "+(ng.stack||ng.message)),d=!1}return d}function dd(a,b,c){null!=b&&(a.Ha=Je(a,b,c));for(;b=a.Ha.shift();)if(!Mf(a,b))return!1;return!0}
+var yg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Ff=20,Gf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
+kf=0,lf=1,mf=2,nf=3,of=4,pf=5,qf=6,rf=7,sf=8,jf="PC RA EA PS OV C0 C1 ND PD".split(" "),zg={},Bf=(zg[28672]={0:101},zg[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},zg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ff,9216:53,
+9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},zg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},zg[29248]={24576:79,24640:80,25088:81,25152:82},zg[28700]={28672:93,28676:94,28680:95,28684:96,
+28688:97,28692:98,28696:99,28700:100},zg),Cf=["","I","M","S"],Df=" L E LE A GE N G".split(" "),Ef="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Hf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],tf=1E3,wf=">> ";Xa(function(){for(var a=w(document,v,"debugger"),b=0;bb.indexOf(":")&&0<=".MAC.KLM".indexOf(b.slice(-4).toUpperCase())&&(b+=".txt");Ha(b,null,!0,function(b,d,e){if(e)a.done(e,b);else{e=d;if(ya(b,".html")){e="";var c;for(b=/
([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Cg(a,"unrecognized HTML entity: "+c[0])}a.H=a.H.concat(e.split(/(\r?\n)/));
+setTimeout(function(){Ag(a)},0)}})}}
+function Bg(a){if(0<=a.ba.indexOf("p"))return a.u(a.H.join("")),0;var b=Ue(a.b);try{for(var c=0;cI)break;var u=
+I+1,P=I+l.length,eb="",Ab="";I&&(eb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==eb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Eg(a,d,a.Z,Fg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Og:"=:"==f&&(e|=Pg),Eg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Qg(a,b))&&(b=b.replace(H,Rg(a,Sg,Qg(a,h))));H=Tg(a,b);)b=b.replace(H,H.slice(0,-1));
+if(!Ug(a,f,b))switch(f){case Vg:case Wg:case Xg:Lg(a,h);break;case Yg:(f=b)?(a.G=Ig(a,f,!0),void 0===a.G&&a.error("unrecognized expression: "+f)):a.G=a.la;break;case Zg:$g(a,b);break;case ah:a.Z=Ig(a,b)||0;break;case bh:$g(a,b.replace(",",",,"));break;case ch:case dh:case eh:case fh:case gh:case Mg:case Ng:case hh:case ih:Rg(a,f,h);break;case jh:case kh:case lh:case mh:case nh:case oh:case ph:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=If(a.b,f,b,0<=a.wa?a.wa:a.Z,!0)),0>H&&(H=Ig(a,h,
+!0)),void 0!==H?Gg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
+function Ug(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Sa==qh){var e=a.Z;Hg(a,d.ma);if(ed.Sa&&Hg(a,d.ma);break;case gh:d.Sa&&
+Hg(a,d.ma);break;case Mg:case Ng:for(b=0;ba.wa&&(a.wa=a.Z);a.Z=0}
+function sh(a){if(a.w.length){var b=a.w[a.w.length-1].name;b&&a.M.push({name:b,R:a.R,fa:a.fa});b=a.w.pop();a.R=b.R;a.fa=b.fa;a.Z=b.Z;a.wa=b.wa;a.w.length||-1==a.wa||a.error("scope restore error")}else a.error("scope nesting error")}sg.prototype.error=function(a){throw Error("error"+(this.da?" at line "+va(this.da):"")+": "+a);};function Cg(a,b){a.u("warning"+(a.da?" at line "+va(a.da):"")+": "+b)}
+function uh(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d"==h&&0>--g){a.error("missing bracket(s): "+b);break}}}g?0=--c){g=e;break}}0>c&&a.error("missing bracket(s): "+b);0<=f&&(d=b.substr(f,g-f));return d}function Tg(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;if(!a.j[d]){var e,f,g;e=f=g=[];a.j[d]={name:d,Sa:vh,Ua:e,Ab:f,Qa:g,ma:b+": 0",da:a.da};a.L.push(d)}}return c}
+function th(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=uh(a,b);if(!c)break;d.push(c);b=b.substr(c.length+1)}return d}
+function Lg(a,b){var c=b;null==a.D&&(a.D=a.C="",b&&(a.D=b[0],c=b=b.substr(1)));if(a.D){var d=b.indexOf(a.D);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.D=null);a.C+=b}if(null==a.D){var d=b=0,e,f,g=a.C.length;a.K==Wg&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(Gg(a,d),b=0)}b&&Gg(a,d)}return c}
+function Rg(a,b,c){var d,e,f,g,h,k;a.J="<";a.F=">";g=h=k=[];if(b==ch){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;f=e[1];if(e[2]&&","!=e[2]){h=g=th(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}b=wh;c=3}else if(b==hh){a.J="[";a.F="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
+b+": "+c),c;f=e[1];b=qh;c=2}else if(b==Sg)a.J="[",a.F="]",f="?"+va(++a.V,5),a.j[f]&&a.error("literal symbol redefined: "+f),e=[c[0],c.substr(1)],b=xh,c=0;else if(b==Mg||b==Ng){a.v||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+": "+c),c;for(d=0;d=C)&&Cg(a,"truncated value "+ua(b)+" at location "+ua(c)+" to "+ua(d));return d}sg.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};
+var Fg=1,Og=2,Pg=4,Vg="ASCII",Wg="ASCIZ",ch="DEFINE",Yg="END",Zg="EXP",dh="IFE",eh="IFG",fh="IFL",gh="IFN",Mg="IRP",Ng="IRPC",jh="LALL",Sg="LITERAL",kh="LIST",ah="LOC",lh="NOSYM",hh="OPDEF",mh="PAGE",ih="REPEAT",Xg="SIXBIT",nh="SUBTTL",oh="TITLE",bh="XWD",ph="XLIST",wh=-1,qh=-2,xh=-3,vh=-4;
+function yh(a,b,c){r.call(this,"Computer",a,33554432);this.A.aa=!1;this.S=null;zh(this,b);this.N=Zc(this,"autoPower",a,6);this.w=0;this.X=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=Zc(this,"url")||"";(Math.random()+.1).toString(36);this.i=Ah(this);if(this.v=rb("CPU",this.id)){this.D=rb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.X},this.v,this.D);var d,e=pb(this.id);if((this.j=rb("Panel",this.id))&&this.j.za)for(b=
+0;b\nLicense: GPL version 3 or later ");for(b=0;bBh){if(Ch(d,this.L)){this.C=new F(this,"1.34.3",Wh);Ch(this.C)&&(Xh(this,d),a=Yh,Zh(this.C));this.C.set(Th,Ga());$h(this.C);var e=this.b&&!this.K;if(a==Uh||ob("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Sh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Ch(d,g):("error"==f&&"no machine state"!=
+g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(ai,""),this.i=null)):this.u(f+": "+g),Zh(d),Ch(d)?(c=Sh(d),e=!0):c=!1))}e&&Qh(this,c?d:null)}else a==Yh&&d.clear()}else Qh(this);delete this.L;delete this.I}e=pb(this.id);for(f=0;fa[1];a=a[2];this.U=!0;this.A.aa=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(bi(this,this.v,b,c,a),J(this,-2),this.v.ga());this.P&&(Xh(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
+function Xh(a,b){if(ob("There may be a problem with your "+Rb+" machine.\n\nTo help us diagnose it, click OK to send this "+Rb+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Rb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ha("http://www.pcjs.org/api/v1/report",d,!0)}}
+function xg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new F(a,"1.34.3"),g=new F(a,"1.34.3",Rh),h=Ga();g.set(Th,h);f.set(Th,h);f.set(ci,"1.34.3");f.set(di,window?window.location.href:null);f.set(ei,window?window.navigator.userAgent:"");a.v&&a.v.sa&&(c&&(b&&(a.v.A.ga=a.v.A.O),a.v.W()),d=a.v.sa(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.aa=!1,!1===d&&(e=null)));for(var h=pb(a.id),k=0;k=d||30<=(c.jb+=d))&&(e.textContent=c.A.O?c.ba.toFixed(2)+"Mhz":"Stopped",c.jb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.O;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.T||8,e=e||0,e=8==f?ua(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"),
-a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
-"");a=a.replace(d[0],g);hi(a,b,c)}})}else c(a,null)}
-function ii(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ei||ab(!0));l=!1}var h,k,l=!0;ei++;nb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
-(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?fi(d,null,a,null,!1,f,function(a,e){e?(mb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ei||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ei||
-ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?fi(c,b,a,e,!0,f,p):gi(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ii("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ii("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return sb(b,a+".machine")};
-window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!vb[a]){for(var c=!0,d=vb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;pg.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"),
+a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ha(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
+"");a=a.replace(d[0],g);mi(a,b,c)}})}else c(a,null)}
+function ni(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ji||ab(!0));l=!1}var h,k,l=!0;ji++;mb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
+(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?ki(d,null,a,null,!1,f,function(a,e){e?(lb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ji||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ji||
+ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?ki(c,b,a,e,!0,f,p):li(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ni("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ni("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return rb(b,a+".machine")};
+window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!ub[a]){for(var c=!0,d=ub,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p
Date: Thu, 30 Mar 2017 09:15:21 -0700
Subject: [PATCH 17/27] Updated PDP-10 diagnostic READMEs

---
 apps/pdp10/diags/klad/README.md       | 2 +-
 apps/pdp10/diags/klad/dakaa/README.md | 2 +-
 apps/pdp10/diags/klad/dakab/README.md | 2 +-
 apps/pdp10/diags/klad/dakac/README.md | 2 +-
 apps/pdp10/diags/klad/dakad/README.md | 2 +-
 apps/pdp10/diags/klad/dakae/README.md | 2 +-
 apps/pdp10/diags/klad/dakaf/README.md | 2 +-
 apps/pdp10/diags/klad/dakag/README.md | 2 +-
 apps/pdp10/diags/klad/dakah/README.md | 5 +++--
 apps/pdp10/diags/klad/dakai/README.md | 5 +++--
 10 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/apps/pdp10/diags/klad/README.md b/apps/pdp10/diags/klad/README.md
index 7db33e335..7cf3c6c1d 100644
--- a/apps/pdp10/diags/klad/README.md
+++ b/apps/pdp10/diags/klad/README.md
@@ -80,4 +80,4 @@ PCjs has archived selected files from
 - [KA10 Basic Instruction Diagnostic #8 (MAINDEC-10-DAKAH)](dakah/)
 	- TESTS OF PI, INTERRUPTS, LUUO'S, I/O
 - [KA10 Basic Instruction Diagnostic #9 (MAINDEC-10-DAKAI)](dakai/)
-	- SHIFT-ROTATE TEST (PART 1)
+	- TESTS OF LOGICAL SHIFT, ROTATE, ARITHMETIC SHIFT; SINGLE AND COMBINED
diff --git a/apps/pdp10/diags/klad/dakaa/README.md b/apps/pdp10/diags/klad/dakaa/README.md
index 4661100e6..60a3c03cd 100644
--- a/apps/pdp10/diags/klad/dakaa/README.md
+++ b/apps/pdp10/diags/klad/dakaa/README.md
@@ -280,5 +280,5 @@ DAKAA.MAC
 [[Download](DAKAA.MAC.txt)]
 
 {% highlight text %}
-{% include_relative DAKAAM.MAC.txt %}
+{% include_relative DAKAA.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakab/README.md b/apps/pdp10/diags/klad/dakab/README.md
index cc8cf42cc..de51d0e45 100644
--- a/apps/pdp10/diags/klad/dakab/README.md
+++ b/apps/pdp10/diags/klad/dakab/README.md
@@ -273,5 +273,5 @@ DAKAB.MAC
 [[Download](DAKAB.MAC.txt)]
 
 {% highlight text %}
-{% include_relative DAKABM.MAC.txt %}
+{% include_relative DAKAB.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakac/README.md b/apps/pdp10/diags/klad/dakac/README.md
index 93d4a17b3..ac0beedb3 100644
--- a/apps/pdp10/diags/klad/dakac/README.md
+++ b/apps/pdp10/diags/klad/dakac/README.md
@@ -272,5 +272,5 @@ DAKAC.MAC
 [[Download](DAKAC.MAC.txt)]
 
 {% highlight text %}
-{% include_relative DAKACM.MAC.txt %}
+{% include_relative DAKAC.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakad/README.md b/apps/pdp10/diags/klad/dakad/README.md
index c3fea4b6a..ec7024ef2 100644
--- a/apps/pdp10/diags/klad/dakad/README.md
+++ b/apps/pdp10/diags/klad/dakad/README.md
@@ -288,5 +288,5 @@ DAKAD.MAC
 [[Download](DAKAD.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKADM.MAC.txt %}
+{% include_relative DAKAD.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakae/README.md b/apps/pdp10/diags/klad/dakae/README.md
index c76a97251..c85042863 100644
--- a/apps/pdp10/diags/klad/dakae/README.md
+++ b/apps/pdp10/diags/klad/dakae/README.md
@@ -285,5 +285,5 @@ DAKAE.MAC
 [[Download](DAKAE.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAEM.MAC.txt %}
+{% include_relative DAKAE.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakaf/README.md b/apps/pdp10/diags/klad/dakaf/README.md
index 643776ee3..7cbbc5b55 100644
--- a/apps/pdp10/diags/klad/dakaf/README.md
+++ b/apps/pdp10/diags/klad/dakaf/README.md
@@ -272,5 +272,5 @@ DAKAF.MAC
 [[Download](DAKAF.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAFM.MAC.txt %}
+{% include_relative DAKAF.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakag/README.md b/apps/pdp10/diags/klad/dakag/README.md
index 16e811452..62973ef8f 100644
--- a/apps/pdp10/diags/klad/dakag/README.md
+++ b/apps/pdp10/diags/klad/dakag/README.md
@@ -274,5 +274,5 @@ DAKAG.MAC
 [[Download](DAKAG.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAGM.MAC.txt %}
+{% include_relative DAKAG.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakah/README.md b/apps/pdp10/diags/klad/dakah/README.md
index 0fe783a9c..f8d2d84a0 100644
--- a/apps/pdp10/diags/klad/dakah/README.md
+++ b/apps/pdp10/diags/klad/dakah/README.md
@@ -14,7 +14,8 @@ PDP-10 KA10 Basic Instruction Diagnostic #8
 -------------------------------------------
 
 The *PDP-10 KA10 Basic Instruction Diagnostic #8* (MAINDEC-10-DAKAH) test code has been extracted from
-[DAKAHM.MAC](DAKAHM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakahm.mac.html)]
+[DAKAHM.MAC](DAKAHM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakahm.mac.html)] and
+[DAKAHT.MAC](DAKAHT.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaht.mac.html)]
 for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
 
 Resources for this test include:
@@ -275,5 +276,5 @@ DAKAH.MAC
 [[Download](DAKAH.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAHM.MAC.txt %}
+{% include_relative DAKAH.MAC.txt %}
 {% endhighlight %}
diff --git a/apps/pdp10/diags/klad/dakai/README.md b/apps/pdp10/diags/klad/dakai/README.md
index eadaa0b4f..8419798a0 100644
--- a/apps/pdp10/diags/klad/dakai/README.md
+++ b/apps/pdp10/diags/klad/dakai/README.md
@@ -14,7 +14,8 @@ PDP-10 KA10 Basic Instruction Diagnostic #9
 -------------------------------------------
 
 The *PDP-10 KA10 Basic Instruction Diagnostic #9* (MAINDEC-10-DAKAI) test code has been extracted from
-[DAKAIM.MAC](DAKAIM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaim.mac.html)]
+[DAKAIM.MAC](DAKAIM.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakaim.mac.html)] and
+[DAKAIT.MAC](DAKAIT.MAC.txt) [[original](http://pdp-10.trailing-edge.com/klad_sources/01/klad.sources/dakait.mac.html)]
 for use with the [PDP-10 Test Machine with Debugger](/devices/pdp10/machine/ka10/test/debugger/) below.
 
 Resources for this test include:
@@ -418,5 +419,5 @@ DAKAI.MAC
 [[Download](DAKAI.MAC.txt)]
  
 {% highlight text %}
-{% include_relative DAKAIM.MAC.txt %}
+{% include_relative DAKAI.MAC.txt %}
 {% endhighlight %}

From 88d5572aa36956efed106663a7124cbcef2cdd0c Mon Sep 17 00:00:00 2001
From: Jeff 
Date: Thu, 30 Mar 2017 09:29:34 -0700
Subject: [PATCH 18/27] ORG our modified version of the PDP-10 DAKAI diagnostic
 so that it aligns with the listing file

---
 apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt b/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
index 891c17d13..580721c29 100644
--- a/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
+++ b/apps/pdp10/diags/klad/dakai/DAKAI.MAC.txt
@@ -146,6 +146,8 @@ TESTPC:	0		;SUBTEST PC
 
 ;INITIALIZE SUBROUTINES
 
+	LOC	30623
+
 START:	;PGMINT
 	;MOVE	[ASCIZ/AI/]
 	;MOVEM	TLET

From ab41fdef3ca46146955ce66902bdd75db404b1b3 Mon Sep 17 00:00:00 2001
From: Jeff 
Date: Thu, 30 Mar 2017 09:57:53 -0700
Subject: [PATCH 19/27] More robust handling of PDP-10 memory errors (so that
 when a file is assembled and loaded into non-existent memory, an error is
 generated); bumped the PDP-10 test machine to 32K words

---
 .../machine/ka10/test/debugger/machine.xml    |  2 +-
 devices/pdp10/machine/ka10/test/machine.xml   |  2 +-
 modules/pdp10/lib/bus.js                      |  2 +-
 modules/pdp10/lib/cpustate.js                 | 14 +++
 modules/pdp10/lib/debugger.js                 | 13 ++-
 modules/pdp10/lib/memory.js                   |  1 +
 versions/pdpjs/1.34.3/pdp10-dbg.js            | 91 ++++++++++---------
 7 files changed, 73 insertions(+), 52 deletions(-)

diff --git a/devices/pdp10/machine/ka10/test/debugger/machine.xml b/devices/pdp10/machine/ka10/test/debugger/machine.xml
index 7de859953..6573ef17c 100644
--- a/devices/pdp10/machine/ka10/test/debugger/machine.xml
+++ b/devices/pdp10/machine/ka10/test/debugger/machine.xml
@@ -4,7 +4,7 @@
 	PDP-10 (Model KA10) with Debugger
 	
 	
-	
+	
 	
 	
 	
diff --git a/devices/pdp10/machine/ka10/test/machine.xml b/devices/pdp10/machine/ka10/test/machine.xml
index 87d8a2038..2d7cc847b 100644
--- a/devices/pdp10/machine/ka10/test/machine.xml
+++ b/devices/pdp10/machine/ka10/test/machine.xml
@@ -4,7 +4,7 @@
 	PDP-10 Test Machine
 	
 	
-	
+	
 	
 	
 	
diff --git a/modules/pdp10/lib/bus.js b/modules/pdp10/lib/bus.js
index 04dc91cf6..1fb1afc13 100644
--- a/modules/pdp10/lib/bus.js
+++ b/modules/pdp10/lib/bus.js
@@ -707,7 +707,7 @@ class BusPDP10 extends Component {
             if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP10.FAULT)) {
                 this.dbg.printMessage("memory fault on " + this.dbg.toStrBase(addr), true, true);
             }
-            this.cpu.stopCPU();
+            this.cpu.haltCPU();
         }
     }
 
diff --git a/modules/pdp10/lib/cpustate.js b/modules/pdp10/lib/cpustate.js
index 2953addd0..36739f01e 100644
--- a/modules/pdp10/lib/cpustate.js
+++ b/modules/pdp10/lib/cpustate.js
@@ -832,6 +832,20 @@ class CPUStatePDP10 extends CPUPDP10 {
         return data;
     }
 
+    /**
+     * haltCPU()
+     *
+     * This is a temporary helper function for the Bus component, to force the CPU to stop executing the
+     * current instruction.
+     *
+     * @this {CPUStatePDP10}
+     */
+    haltCPU()
+    {
+        this.stopCPU();
+        throw -1;
+    }
+
     /**
      * stepCPU(nMinCycles)
      *
diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js
index 09b17a9ed..877851ce6 100644
--- a/modules/pdp10/lib/debugger.js
+++ b/modules/pdp10/lib/debugger.js
@@ -2528,7 +2528,7 @@ class DebuggerPDP10 extends Debugger {
         var dbg = this.dbg;
         var nWords = 0, addrLo = null, addrHi = 0;
         aWords.forEach(function(w, addr) {
-            bus.setWordDirect(addr, w);
+            bus.setWord(addr, w);
             if (addrLo == null) addrLo = addr;
             if (addr > addrHi) addrHi = addr;
             nWords++;
@@ -2665,10 +2665,15 @@ class DebuggerPDP10 extends Debugger {
                             if (addrStart == null) addrStart = addrLoad;
                             dbg.loadImage(macro10.getImage(), addrStart);
                         } catch(e) {
-                            dbg.println(e.message);
-                            nErrorCode = -1;    // fake error so that command processing stops
+                            if (typeof e == "number") {
+                                nErrorCode = e || -1;
+                            } else {
+                                dbg.println(e.message);
+                                nErrorCode = -1;        // fake error so that command processing stops
+                            }
                         }
-                    } else {
+                    }
+                    if (nErrorCode) {
                         dbg.println("error (" + nErrorCode + ") processing " + (sURL || sFile));
                     }
                     dbg.macro10 = null;
diff --git a/modules/pdp10/lib/memory.js b/modules/pdp10/lib/memory.js
index 5e7a044d7..a77870859 100644
--- a/modules/pdp10/lib/memory.js
+++ b/modules/pdp10/lib/memory.js
@@ -420,6 +420,7 @@ class MemoryPDP10 {
         if (DEBUGGER && this.dbg && this.dbg.messageEnabled(MessagesPDP10.MEMORY) /* && !off */) {
             this.dbg.printMessage("attempt to write " + this.dbg.toStrBase(v) + " to invalid addresses " + this.dbg.toStrBase(addr), true);
         }
+        this.bus.fault(addr);
     }
 
     /**
diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js
index a5d248031..d7f532865 100644
--- a/versions/pdpjs/1.34.3/pdp10-dbg.js
+++ b/versions/pdpjs/1.34.3/pdp10-dbg.js
@@ -31,8 +31,8 @@ var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi
 function ga(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});ga=function(){}}function ha(a){var b=0;return ia(function(){return ba?-b:b}});la("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
-var ma={sc:0,Kb:1,uc:2,vc:3,wc:4,xc:5,yc:6,zc:7,xb:8,Ac:9,Lb:10,Bc:11,Cc:12,Mb:13,Dc:14,Ec:15,Fc:16,Gc:17,Hc:18,Ic:19,Jc:20,Kc:21,Lc:22,Mc:23,Nc:24,Oc:25,Pc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,rc:66,tc:67,Qc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,Vc:74,Wc:75,Xc:76,Yc:77,Zc:78,$c:79,ad:80,Q:81,bd:82,cd:83,dd:84,ed:85,fd:86,gd:87,
-hd:88,jd:89,Ob:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,kd:97,ld:98,md:99,d:100,e:101,nd:102,od:103,pd:104,qd:105,rd:106,k:107,sd:108,td:109,n:110,ud:111,p:112,q:113,r:114,vd:115,t:116,xd:117,yd:118,zd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Nb:127};
+var ma={sc:0,Lb:1,uc:2,vc:3,wc:4,xc:5,yc:6,zc:7,xb:8,Ac:9,Mb:10,Bc:11,Cc:12,Nb:13,Dc:14,Ec:15,Fc:16,Gc:17,Hc:18,Ic:19,Jc:20,Kc:21,Lc:22,Mc:23,Nc:24,Oc:25,Pc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,rc:66,tc:67,Qc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,Vc:74,Wc:75,Xc:76,Yc:77,Zc:78,$c:79,ad:80,Q:81,bd:82,cd:83,dd:84,ed:85,fd:86,gd:87,
+hd:88,jd:89,Pb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,kd:97,ld:98,md:99,d:100,e:101,nd:102,od:103,pd:104,qd:105,rd:106,k:107,sd:108,td:109,n:110,ud:111,p:112,q:113,r:114,vd:115,t:116,xd:117,yd:118,zd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ob:127};
 function sa(a,b){var c;if(a){b||(b=10);var d,e,f=0g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function ua(a,b,c){b?12=b?6:16777215>=b?8:12);return ta(a,8,b,c?"0o":"")}
@@ -56,7 +56,7 @@ function w(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.g
 function tb(a){for(var b=!0,c=ub[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=vb.indexOf(e)&&(f=function(){return function(){tb(a)}}());var g=wb[e];if(g)if(!f)b=g(d[1],d[2],d[3]);else{if(!g(f,d[1],d[2],d[3]))break}else{var b=!1,h=rb(d[1],a);if(h)if(g=xb[e])b=g(h,d[2],d[3]);else{var k=h.exports;if(k&&(g=k[e]))if(b=!0,!f)b=g.call(h,d[2],d[3]);else if(!g.call(h,f,d[2],d[3]))break}}if(!b){q("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete ub[a];return b}m=r.prototype;
 m.toString=function(){return this.name?this.name:this.id||this.type};
 m.ta=function(a,b,c){switch(b){case "clear":return this.J[b]||(this.J[b]=c,c.onclick=function(a){return function(){a.J.print&&(a.J.print.value="")}}(this)),!0;case "print":return this.J[b]||(this.za=this.J[b]=c,c.value="",this.u=function(a){return function(b,c){8192c;c++){v
 function ic(){for(var a=w(document,v,"panel"),b=0;bd.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Ec(Fc,e,f)}e=new Ac(a,e,l,16384,d);Bc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Gc[d]+" at "+ua(b)),!0):Ec(Kc,b,c)}
-function yc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function xc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Cc(a){for(var b=0,c=[],d=0;d=a.pa&&(a.pa+=a.oa,c=!0);0<=a.qa&&a.qa<=ed(a)&&(a.oa=a.qa=-1,ad(a),a.W(),c=!0);c&&a.u(ed(a)+" cycles: checksum="+n(a.Ga))}}
+m.sa=function(a){return a?this.save():!0};m.ga=function(){return this.A.O?!0:this.A.ga?(rc(this),!0):!1};m.Jb=function(){return 0};function ad(a){void 0===a.Ha&&(a.Ha=0);void 0===a.oa&&(a.oa=-1);void 0===a.qa&&(a.qa=-1);a.A.Va=0<=a.Ha&&0=a.pa&&(a.pa+=a.oa,c=!0);0<=a.qa&&a.qa<=ed(a)&&(a.oa=a.qa=-1,ad(a),a.W(),c=!0);c&&a.u(ed(a)+" cycles: checksum="+n(a.Ga))}}
 m.ta=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.aa)a=!0;else{var b=null,c,h=pb(a.id);for(c=0;ca.ba/a.ia?b=1:d=!0;a.ja=b;b=a.kb*a.ja;if(a.ia!=b){a.ia=b;b=a.ia.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&id(a.H)}uc(a,a.M);a.M=0;a.L=nb();a.U=0;gd(a);return d}function jd(a,b){for(var c=a.S.length-1;0<=c;c--){var d=a.S[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function kd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function ld(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c}
 m.jc=function(){if(this.A.O){this.cb>=this.mb&&gd(this,!0);this.ua=0;this.Fa=nb();if(this.U){var a=this.Fa-this.U;a>this.lb&&(this.L+=a,this.L>this.Fa&&(this.L=this.Fa))}try{do{var b=jd(this,this.A.Va?1:this.Ia);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=ld(this,!0);this.ua+=b;this.M+=b;vc(this,b);tc(this,b);this.ka-=b;if(0>=this.ka){this.ka+=this.Ia;++this.nb>=md&&(this.H&&J(this.H,void 0),this.nb=0);break}}while(this.A.O)}catch(e){this.W();this.H&&this.H.stop(nb(),ed(this));yb(this,
 e.stack||e.message);return}if(this.A.O){a=setTimeout;b=this.Fb;this.U=nb();var c=this.lb;this.ua&&(c=Math.round(c*this.ua/this.Ia));var c=c-(this.U-this.Fa),d=this.U-this.L;d&&(this.ba=Math.round(this.M/(10*d))/100,864E5<=d&&(this.X=0,fd(this)));if(0>c||this.bac&&(this.L-=c),c=0;this.cb+=this.ua;this.U+=c;a(b,c)}}};
-function rc(a,b){if(!zb(a))if(a.A.O)a.u(a.toString()+" busy");else{fd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&id(a.H,!0),a.H.start(a.L,ed(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){ld(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(nb(),ed(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var hd=30,md=15,Yc=["power","reset"];
-function nd(a){var b=+a.model||1001;Xc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Pb=od.bind(this);this.w=L.bind(this);this.Da=null;this.vb=[];this.A.complete=!1}ka(nd,Xc);m=nd.prototype;
-m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ja=this.Ka=this.b=this.I=0;this.i=this.Ea=this.Oa;this.K=this.P=-1;this.F=this.j=0;this.ob=[0,0];this.va=[0,0];this.na=[0,0];this.xa=[0,0];this.Ca=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Da=null;$c(this);this.A.error=!1;Xc.prototype.reset.call(this)};m.Ib=function(){return 0};
+function rc(a,b){if(!Ab(a))if(a.A.O)a.u(a.toString()+" busy");else{fd(a);a.A.O=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&id(a.H,!0),a.H.start(a.L,ed(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.$a=function(){return 0};m.W=function(a){var b=!1;if(this.A.O){ld(this);uc(this,this.M);this.M=0;this.A.O=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(nb(),ed(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var hd=30,md=15,Yc=["power","reset"];
+function nd(a){var b=+a.model||1001;Xc.call(this,a,1E6);this.Db=b;this.Oa=+a.addrReset||0;this.Qb=od.bind(this);this.w=L.bind(this);this.Da=null;this.vb=[];this.A.complete=!1}ka(nd,Xc);m=nd.prototype;
+m.reset=function(){this.status("Model "+this.Db);this.A.O&&this.W();this.Ja=this.Ka=this.b=this.I=0;this.i=this.Ea=this.Oa;this.K=this.P=-1;this.F=this.j=0;this.ob=[0,0];this.va=[0,0];this.na=[0,0];this.xa=[0,0];this.Ca=this.i;this.C=0;this.f=this.fc;this.g=this.qc;this.Da=null;$c(this);this.A.error=!1;Xc.prototype.reset.call(this)};m.Jb=function(){return 0};
 m.save=function(){var a=new F(this);a.set(0,[this.b,this.I,this.Ja,this.Ka,this.i,this.P,this.K,this.j,this.C,this.Ea,this.Ca,this.Oa]);a.set(1,[]);a.set(2,[this.X,this.ja,this.A.ga]);a.set(3,pd(this));a.set(4,kd(this));return a.data()};
 m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ja=b.next().value;this.Ka=b.next().value;this.i=b.next().value;this.P=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ea=b.next().value;this.Ca=b.next().value;this.Oa=b.next().value;b=a[2];this.X=b[0];fd(this,b[1]);this.A.ga=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};
 m.qc=function(a,b){var c=this.G;a=this.Ca=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b};
 m.$a=function(a){this.A.complete=!0;var b=this.D?sd(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(td(this.D,this.i,c)){this.W();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Da||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&td(this.D,this.i,c)){this.W();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ja=this.f(this.b):0<=this.P?(this.I=this.Ka=this.f(this.P),this.P=-1):(this.I=this.Ka=
-this.f(this.Ea=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ja=this.f(a))&Sb;a=this.I&4194304?-1:this.Ka/Zb|0;0<=a&&this.Pb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
+this.f(this.Ea=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ja=this.f(a))&Sb;a=this.I&4194304?-1:this.Ka/Zb|0;0<=a&&this.Qb(a);this.N--}while(0>4].call(this,a,a&15)}function N(a){this.w(a)}
 function vd(){var a=0,b=this.f(this.b),c=b/$b&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*$b+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function wd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}}
 function xd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/$b&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function yd(a,b){this.g(b,this.f(this.b))}function zd(a,b){this.g(b,this.b)}function Ad(a,b){this.g(this.b,this.f(b))}function Bd(a,b){this.g(b,0)}function Cd(a,b){this.g(b,B-this.f(b))}function Dd(a,b){this.g(b,B)}
 function Ed(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Fd(a,d,c)+(c-(c&x)))}function Gd(a,b){var c=this.f(b);this.g(b,Fd(a,c,0))}function Hd(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Fd(a,c,b)+(b-(b&x)))}function Id(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Jd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Fd(a,d,c)+c)}
@@ -154,25 +155,25 @@ R(a,c)||G(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(thi
 O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O],me=[function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a,b){switch(b){case 0:a=this.f(this.b);a&8&&(this.j&=-131073);a&131072&&(this.j&=-262145);break;default:this.w(a)}},function(a,b){switch(b){case 0:a=0;this.j&131072&&(a|=8);this.j&262144&&(a|=65536);this.g(this.b,a);break;default:this.w(a)}},function(a){this.w(a)},function(a){this.w(a)}];
 function Ae(a){r.call(this,"ROM",a,128);this.Y=this.b=null;this.C=+a.addr;this.j=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=wa(this.w);if(this.w){a=this.w;var b=xa(this.F);"json"!=b&&"hex"!=b&&(a=Ja()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;Ha(a,null,!0,function(a,b,f){f?(c.ha("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(lb(c.bb,a,b),(a=Ia(a,b))?(c.b=a.ea,c.Y=a.Y):c.w=null);Be(c)})}}ka(Ae,r);
 Ae.prototype.La=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Be(this)};Ae.prototype.Ba=function(){this.Y&&(this.D&&Ce(this.D,this.id,this.C,this.j,this.Y),delete this.Y);return!0};Ae.prototype.sa=function(){return!0};
-function Be(a){if(!Bb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)yb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.j,8,!0)+")");else{var b;b=a.C;if(Dc(a.G,b,a.j,Oc)){var c;for(c=0;c>>f.i;0>>=
+function Be(a){if(!Lb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)yb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.j,8,!0)+")");else{var b;b=a.C;if(Dc(a.G,b,a.j,Oc)){var c;for(c=0;c>>f.i;0>>=
 f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=ma.wb&&c<=ma.Ob&&(b=c-(ma.wb-ma.Kb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ma.Mb&&(b=ma.Lb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
+function Ge(a){r.call(this,"SerialPort",a,1048576);this.w=a.upperCase;"string"==typeof this.w&&(this.w="true"==this.w);this.j=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=He;b&&(void 0===c&&(c="Panel"),(c=rb(c,this.id))&&(b=c.J[b])&&this.ta(null,a,b))}this.b=this.C=null;this.exports={connect:this.Kb,receiveData:this.gb,receiveStatus:this.hc,setConnection:this.kc}}ka(Ge,r);m=Ge.prototype;
+m.ta=function(a,b,c){var d=this;switch(b){case He:return this.J[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?ma.xb:ma.Ob:46==c?b=ma.xb:a.ctrlKey&&c>=ma.wb&&c<=ma.Pb&&(b=c-(ma.wb-ma.Lb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==ma.Nb&&(b=ma.Mb);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
 a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.La=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)};
-m.Jb=function(a){if(!this.b){var b=Zc(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.ab)return;c=Ca(c[1]);if(this.b=qb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Jb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
+m.Kb=function(a){if(!this.b){var b=Zc(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.ab)return;c=Ca(c[1]);if(this.b=qb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Kb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0};
 m.sa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.U?b="end":b=a.j[a.w+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ca(b.substring(c,f))),c=f+1}}return a}function Ke(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)&(c/Le|0))*Le+((b&c)>>>0)}
 function Me(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Le|0)^(c/Le|0))*Le+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b}
 function Ne(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "%":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break;
 case "&":f=Ke(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Le|0|g/Le|0)*Le+((f|g)>>>0));break;case "^!":f=Me(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Oe(a,b,0,b.length,a.T,c);void 0!==d&&!1===c&&Te(a,null,d)}return d}
 function Pe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.sb(b),0<=f?f=a.tb(f):(f=a.I[b],null==f&&(f=sa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b);else d||a.u("missing "+(c||"value"));return f}
@@ -193,13 +194,13 @@ m.tb=function(a){var b,c=this.v;switch(a){case kf:b=c.i;break;case lf:b=c.I;brea
 m.message=function(a,b){b&&(a+=" @"+K(this,Z(this.v.Ea).B,18));if(!this.X||a!=this.X)if(this.X=a,this.ca&1073741824)this.S.push(a);else{var c;if(this.ca&-2147483648&&this.v&&(c=this.v.A.O)||Nb(this,!0))this.W(),c&&(a+=" (cpu halted)");this.u(a);this.v&&(a=this.v,ld(a),a.ka=0,a.H&&J(a.H,void 0))}};
 function Ye(a){var b;if(!sd(a))a.i&&a.i.length&&a.u("instruction history buffer freed"),a.V=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(tf);for(b=0;b>23&&a.v.Ea==b&&(b=rd(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(af(a.i[a.V],b),++a.V==a.i.length&&(a.V=0)));return!1}
 function Af(a,b,c,d){var e=Z(b.B),f=a.Ma(b,1),g,h,k,l=0,p=f/Xb|0,u;for(u in Bf)if(g=Bf[u][p&u]){h=+u;p>>=6;switch(h){case 32512:k=Cf;l=p&3;break;case 32256:k=Df;l=p&7;break;case 29248:k=Ef,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Ff&&(k="B");k=Gf[g||0]+k;if(g){if(28700==h)h=f/Yb&127,l=K(a,h,-1);else for(h=f>>23&15,l=K(a,h,-1),p=0;l&&p>18&15)&&(k+="("+K(a,f,
 -1)+")")}else k=Ba(k,8)+hf(a,f);f=k;g="";h=K(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Ma(e,1),g+=" "+hf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Ba(g,16)+f;c&&(h=Ba(h,48)+";"+(c||""),h=a.v.A.Va?h+("cycles="+ed(a.v).toString()+" cs="+n(a.v.Ga)):h+(null!=d?"="+d.toString():""));return h}
-function If(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;lFf&&(P="B");if(k==Gf[h]+P){f=29248!=g?I:(I&3)<<1|(I&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
+function If(a,b,c,d,e){var f=-1,g,h;a.ka=null;if(b){for(var k=b.toUpperCase(),l=0;lFf&&(P="B");if(k==Gf[h]+P){f=29248!=g?H:(H&3)<<1|(H&12)<<2;f=(D|f<<6)*Xb;break}}if(0<=f)break}if(0<=f)break}0>f&&c&&!c.match(/^[0-9A-Z$%.?]/i)&&
 (c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),u=0;uh||15h||127
 h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function Xe(a){var b,c;a.b=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.Da=0;a.qa=0}
 m.Ra=function(a,b,c){var d=!0;c||Jf(this,a,b,!1,!0);if(a!=this.b){var e=$e(b);if(-1===e)this.u("invalid address: "+K(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.ra=!0:(Kf(this,a,a.length-1,"set"),Ye(this)));return d};function Jf(a,b,c,d,e){var f=!1;c=$e(c);for(var g=1;g>>d.i],b==a.K));h.ra||Ye(a);break}}return f}
@@ -207,28 +208,28 @@ function Lf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=ua(d,2);af(e.Ia,d);f+="="+K(e,e.Ma(e.Ia),36)+" ";c+=f}if(b){b="";for(d=0;d=of?1:d==lf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Fa(p,k,a.Gb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.F.push({wd:b,B:c,Ub:d,Y:e,Bb:f})}function og(a,b,c){var d=[],e=$e(b)>>>0;for(b=0;b>>0,h=f.Ub;if(e>=g&&eg&&(g=b);e++});e?(a.u(e+" words loaded at "+K(a,f)+"-"+K(a,g)),null!=c&&G(a.v,c),bd(a)):a.u("no data")}function pg(a,b,c,d){var e={},f=a.F[b].Bb,g=0,h=null;0<=c&&c=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=ef(a,d,a.ja);if(!e)return a.u("begin assemble at "+K(a,f.B,18)),a.U=!0,J(a.H),!0;var g=e.match(/^(['"]?)(.*\.mac|.*\.html|.*\.txt)\1$/i);if(g){f=ef(a,d);if(a.Ca)a.u("assembly already in progress");else var h=g[2],k=f.B,l=a.Ca=new sg(h,k,c,a,function(b,c){if(b)a.u("error ("+b+") processing "+(c||h));else try{var d=l.G;null==d&&(d=k);qg(a,l.R,d)}catch(I){a.u(I.message),b=-1}a.Ca=null;b||dd(a)});return!1}b.shift();
-b.shift();b.shift();b=If(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(Af(a,f)));return!0}function tg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ve(a)||a.u("no variables"),!0;if(!c[2])return Ve(a,c[1]);if(!c[3])return delete a.I[c[1]],!0;b=Se(a,c[3]);return void 0!==b?(a.I[c[1]]=b,!0):!1}a.u("invalid assignment:"+b);return!1}
+function qg(a,b,c){var d=a.G,e=0,f=null,g=0;b.forEach(function(a,b){d.b[(b&d.j)>>>d.i].g(a,b&16383,b);null==f&&(f=b);b>g&&(g=b);e++});e?(a.u(e+" words loaded at "+K(a,f)+"-"+K(a,g)),null!=c&&G(a.v,c),bd(a)):a.u("no data")}function pg(a,b,c,d){var e={},f=a.F[b].Bb,g=0,h=null;0<=c&&c=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=ef(a,d,a.ja);if(!e)return a.u("begin assemble at "+K(a,f.B,18)),a.U=!0,J(a.H),!0;var g=e.match(/^(['"]?)(.*\.mac|.*\.html|.*\.txt)\1$/i);if(g){f=ef(a,d);if(a.Ca)a.u("assembly already in progress");else var h=g[2],k=f.B,l=a.Ca=new sg(h,k,c,a,function(b,c){if(!b)try{var d=l.G;null==d&&(d=k);qg(a,l.R,d)}catch(H){"number"==typeof H?b=H||-1:(a.u(H.message),b=-1)}b&&a.u("error ("+b+") processing "+(c||h));
+a.Ca=null;b||dd(a)});return!1}b.shift();b.shift();b.shift();b=If(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(Af(a,f)));return!0}function tg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ve(a)||a.u("no variables"),!0;if(!c[2])return Ve(a,c[1]);if(!c[3])return delete a.I[c[1]],!0;b=Se(a,c[3]);return void 0!==b?(a.I[c[1]]=b,!0):!1}a.u("invalid assignment:"+b);return!1}
 function ug(a,b,c){var d=null;b=ef(a,b);var e=og(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+K(a,e[1],18)+")"+g,c&&a.u(f),d=f);4b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case kf:G(h,
 g);af(a.M,h.i);break;case nf:qd(h,g);break;case of:f=131072;break;case pf:f=65536;break;case qf:f=32768;break;case rf:f=32;break;case sf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);J(a.H);a.u("updated registers:")}}a.u(mg(a,e));c&&(af(a.M,0<=d.P?d.P:d.i),yf(a,K(a,a.M.B,18)))}}function vg(a,b){b=Ca(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ja;l=b;h.B=l.B;h.eb=l.eb;h.ra=l.ra;h.T=l.T;a.u(Af(a,b,g,f));e-=b.B-k;c++}}
-function Mf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(wf+b):(a.U&&(a.u("ended assemble at "+K(a,a.ja.B,18)),a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.X=null;if(Bb(a)&&0p||"z"p||"z"oa.length&&(a.u("note: only "+oa.length+" available"),ea=oa.length);ja-=ea;0>ja&&(null==oa[oa.length-1].B?(ea=ja+ea,ja=0):ja+=oa.length);var Nd=[];"call"==Rf&&(Cb=
-1E5,Nd=["CALL"]);for(void 0!==Qf&&a.u(ea+" instructions earlier:");0=oa.length&&(ja=0);a.Ea=ea;Tf++;Cb--}}Tf||(a.u("no "+Sf+"history available"),a.Ea=void 0)}else{var Ma=0,Wf="ds"==gb,Eb=ef(a,na,a.pa);Da&&("l"==Da.charAt(0)?(Da=Da.substr(1)||Dh,Ma=Pe(a,Da)):Ma=ef(a,Da).B-Eb.B,0>Ma&&(Ma=0),65536Fb?".":String.fromCharCode(Fb)),Hc=Hc-7}Na&&(Na+="\n");Na=Wf?Na+(pa+","):Na+(na+": "+pa+(0>Yf?" "+Qd:""))}Na&&a.u(Na);a.T=Fh}}}break;case "e":if("else"==
-g[0])break;var Zf,$f,ag=g[0],Sd=g[1];"e"==ag||"ew"==ag?(Zf=a.Ma,$f=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else for(var Td=ef(a,Sd,a.pa),Ud=2;UdWd;){for(var Oa=null,Kh=256;65536>Ib.B>>>0;){Xd.B=a.Ma(Ib,2);if(null==Ib.B||!Kh--)break;if(!(Xd.B&
-1)){for(var Lh=a,Ic=Xd,dg=null,Jb=Ic.B,eg=Jb,Yd=1;6>=Yd&&Jb;Yd++){if(2kg)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");
-else if(a.P)a.u("step in progress");else{var lg=Z(a.v.i);a.Ma(lg);a.P?(a.Ra(a.b,lg,!0),uf(a)||(a.H&&id(a.H),a.P=0)):wg(a,kg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}xf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.T=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.T);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.oa=Lb;break;case "start":a.v.Ha=Lb;break;case "stop":a.v.qa=Lb;
-break;default:a.u("unknown cs option");break a}void 0!==Lb&&ad(a.v);a.u("checksums "+(a.v.A.Va?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(fd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ia.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),
+Md.Y[ib].l;Of&&(ib=Of);a.u(K(a,Nf,18)+" "+ib)}}}else{if("d"==gb){for(fb in ac)if(g[1]==fb){var Pf=a.xa[fb];Pf?(g.shift(),g.shift(),Pf(g)):a.u("no dump registered for "+na);break a}na||(gb=a.Oa||"dw")}else a.Oa=gb;if("dh"==gb){var Qf=na,Rf=Da,Sf="",Tf=0,ja=a.V,oa=a.i;if(oa.length){var ea=+Qf||a.Ea,Bb=+Rf||10;isNaN(ea)?ea=Bb:Sf="more ";ea>oa.length&&(a.u("note: only "+oa.length+" available"),ea=oa.length);ja-=ea;0>ja&&(null==oa[oa.length-1].B?(ea=ja+ea,ja=0):ja+=oa.length);var Nd=[];"call"==Rf&&(Bb=
+1E5,Nd=["CALL"]);for(void 0!==Qf&&a.u(ea+" instructions earlier:");0=oa.length&&(ja=0);a.Ea=ea;Tf++;Bb--}}Tf||(a.u("no "+Sf+"history available"),a.Ea=void 0)}else{var Ma=0,Wf="ds"==gb,Db=ef(a,na,a.pa);Da&&("l"==Da.charAt(0)?(Da=Da.substr(1)||Dh,Ma=Pe(a,Da)):Ma=ef(a,Da).B-Db.B,0>Ma&&(Ma=0),65536Eb?".":String.fromCharCode(Eb)),Hc=Hc-7}Na&&(Na+="\n");Na=Wf?Na+(pa+","):Na+(na+": "+pa+(0>Yf?" "+Qd:""))}Na&&a.u(Na);a.T=Fh}}}break;case "e":if("else"==
+g[0])break;var Zf,$f,ag=g[0],Sd=g[1];"e"==ag||"ew"==ag?(Zf=a.Ma,$f=a.yb):Sd=null;if(null==Sd)a.u("edit memory commands:"),a.u("\tew [a] [...]  edit words at address a");else for(var Td=ef(a,Sd,a.pa),Ud=2;UdWd;){for(var Oa=null,Kh=256;65536>Hb.B>>>0;){Xd.B=a.Ma(Hb,2);if(null==Hb.B||!Kh--)break;if(!(Xd.B&
+1)){for(var Lh=a,Ic=Xd,dg=null,Ib=Ic.B,eg=Ib,Yd=1;6>=Yd&&Ib;Yd++){if(2kg)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");
+else if(a.P)a.u("step in progress");else{var lg=Z(a.v.i);a.Ma(lg);a.P?(a.Ra(a.b,lg,!0),uf(a)||(a.H&&id(a.H),a.P=0)):wg(a,kg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}xf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var jb=+g[2];if(2==jb||8==jb||10==jb||16==jb)a.T=jb;else{a.u("invalid base: "+jb);break}}a.u("default base: "+a.T);break;case "cs":var Kb;void 0!==g[3]&&(Kb=+g[3]);switch(g[2]){case "int":a.v.oa=Kb;break;case "start":a.v.Ha=Kb;break;case "stop":a.v.qa=Kb;
+break;default:a.u("unknown cs option");break a}void 0!==Kb&&ad(a.v);a.u("checksums "+(a.v.A.Va?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(fd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ia.toFixed(2)+"Mhz")+" ("+a.v.ja+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),
 a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":wg(a,g[0],g[1]);break;case "u":yf(a,g[1],g[2],8);break;case "v":if("var"==g[0]){tg(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.Db+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){vg(a,b.substr(1));break}var Zd="commands:",$d;for($d in yg)Zd+="\n"+Ba($d,9)+yg[$d];sd(a)||(Zd+="\nnote: history disabled if no exec breakpoints");
 a.u(Zd);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(ng){a.u("Debugger "+(ng.stack||ng.message)),d=!1}return d}function dd(a,b,c){null!=b&&(a.Ha=Je(a,b,c));for(;b=a.Ha.shift();)if(!Mf(a,b))return!1;return!0}
 var yg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Ff=20,Gf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
@@ -240,10 +241,10 @@ function Ag(a){if(a.S==a.P.length)a.done(Bg(a));else{var b=a.P[a.S++];a.u("loadi
 setTimeout(function(){Ag(a)},0)}})}}
 function Bg(a){if(0<=a.ba.indexOf("p"))return a.u(a.H.join("")),0;var b=Ue(a.b);try{for(var c=0;cI)break;var u=
-I+1,P=I+l.length,eb="",Ab="";I&&(eb=b[I-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(Ab=b[P]).match(/[0-9A-Z$%.]/i)||("'"==eb&&I--,"'"==Ab&&P++,b=b.substr(0,I)+p+b.substr(P),u=I+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Eg(a,d,a.Z,Fg));var H;f&&(H=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=H[1],b=H[2],"=="==f?e|=Og:"=:"==f&&(e|=Pg),Eg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((H=Qg(a,b))&&(b=b.replace(H,Rg(a,Sg,Qg(a,h))));H=Tg(a,b);)b=b.replace(H,H.slice(0,-1));
-if(!Ug(a,f,b))switch(f){case Vg:case Wg:case Xg:Lg(a,h);break;case Yg:(f=b)?(a.G=Ig(a,f,!0),void 0===a.G&&a.error("unrecognized expression: "+f)):a.G=a.la;break;case Zg:$g(a,b);break;case ah:a.Z=Ig(a,b)||0;break;case bh:$g(a,b.replace(",",",,"));break;case ch:case dh:case eh:case fh:case gh:case Mg:case Ng:case hh:case ih:Rg(a,f,h);break;case jh:case kh:case lh:case mh:case nh:case oh:case ph:break;default:H=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(H=If(a.b,f,b,0<=a.wa?a.wa:a.Z,!0)),0>H&&(H=Ig(a,h,
-!0)),void 0!==H?Gg(a,H,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
+function Dg(a,b,c,d,e){var f;if(a.i&&(1==a.i&&(f=b.indexOf(a.J),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.K+" definition: "+b)),1H)break;var u=
+H+1,P=H+l.length,eb="",zb="";H&&(eb=b[H-1]).match(/[0-9A-Z$%.]/i)||!(P>=b.length)&&(zb=b[P]).match(/[0-9A-Z$%.]/i)||("'"==eb&&H--,"'"==zb&&P++,b=b.substr(0,H)+p+b.substr(P),u=H+p.length,g=!0)}c=null}}d=h[1];c=h[3];b=h[4].trim();h=h[4]+h[5];d&&(d=d.slice(0,-1),Eg(a,d,a.Z,Fg));var I;f&&(I=b.match(/^([=:]+)(.*)/))&&(e=0,d=f,f=I[1],b=I[2],"=="==f?e|=Og:"=:"==f&&(e|=Pg),Eg(a,d,b,e),f=b="");if(!f&&!b)return!0;a.K=f;for((I=Qg(a,b))&&(b=b.replace(I,Rg(a,Sg,Qg(a,h))));I=Tg(a,b);)b=b.replace(I,I.slice(0,-1));
+if(!Ug(a,f,b))switch(f){case Vg:case Wg:case Xg:Lg(a,h);break;case Yg:(f=b)?(a.G=Ig(a,f,!0),void 0===a.G&&a.error("unrecognized expression: "+f)):a.G=a.la;break;case Zg:$g(a,b);break;case ah:a.Z=Ig(a,b)||0;break;case bh:$g(a,b.replace(",",",,"));break;case ch:case dh:case eh:case fh:case gh:case Mg:case Ng:case hh:case ih:Rg(a,f,h);break;case jh:case kh:case lh:case mh:case nh:case oh:case ph:break;default:I=-1,h=(f+c+b).trim(),0>b.indexOf(",,")&&(I=If(a.b,f,b,0<=a.wa?a.wa:a.Z,!0)),0>I&&(I=Ig(a,h,
+!0)),void 0!==I?Gg(a,I,a.b.ka):a.error("unrecognized expression: "+h)}return!0}
 function Ug(a,b,c){var d=a.j[b];if(!d)return!1;if(null!=c){if(d.Sa==qh){var e=a.Z;Hg(a,d.ma);if(ed.Sa&&Hg(a,d.ma);break;case gh:d.Sa&&
 Hg(a,d.ma);break;case Mg:case Ng:for(b=0;ba.wa&&(a.wa=a.Z);a.Z=0}
 function sh(a){if(a.w.length){var b=a.w[a.w.length-1].name;b&&a.M.push({name:b,R:a.R,fa:a.fa});b=a.w.pop();a.R=b.R;a.fa=b.fa;a.Z=b.Z;a.wa=b.wa;a.w.length||-1==a.wa||a.error("scope restore error")}else a.error("scope nesting error")}sg.prototype.error=function(a){throw Error("error"+(this.da?" at line "+va(this.da):"")+": "+a);};function Cg(a,b){a.u("warning"+(a.da?" at line "+va(a.da):"")+": "+b)}
@@ -261,7 +262,7 @@ var Fg=1,Og=2,Pg=4,Vg="ASCII",Wg="ASCIZ",ch="DEFINE",Yg="END",Zg="EXP",dh="IFE",
 function yh(a,b,c){r.call(this,"Computer",a,33554432);this.A.aa=!1;this.S=null;zh(this,b);this.N=Zc(this,"autoPower",a,6);this.w=0;this.X=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.U=this.P=!1;this.ba=Zc(this,"url")||"";(Math.random()+.1).toString(36);this.i=Ah(this);if(this.v=rb("CPU",this.id)){this.D=rb("Debugger",this.id);this.G=new zc({id:this.bb+".bus",busWidth:this.X},this.v,this.D);var d,e=pb(this.id);if((this.j=rb("Panel",this.id))&&this.j.za)for(b=
 0;b\nLicense: GPL version 3 or later ");for(b=0;bBh){if(Ch(d,this.L)){this.C=new F(this,"1.34.3",Wh);Ch(this.C)&&(Xh(this,d),a=Yh,Zh(this.C));this.C.set(Th,Ga());$h(this.C);var e=this.b&&!this.K;if(a==Uh||ob("Click OK to restore the previous "+Rb+" machine state, or CANCEL to reset the machine.")){if(c=Sh(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Ch(d,g):("error"==f&&"no machine state"!=
 g?(this.ha("Error: "+g),"unable to verify user"==g&&(Qa(ai,""),this.i=null)):this.u(f+": "+g),Zh(d),Ch(d)?(c=Sh(d),e=!0):c=!1))}e&&Qh(this,c?d:null)}else a==Yh&&d.clear()}else Qh(this);delete this.L;delete this.I}e=pb(this.id);for(f=0;f/g.exec(a)){var e=
 "");a=a.replace(d[0],g);mi(a,b,c)}})}else c(a,null)}
 function ni(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function g(a){f("Error: "+a);l&&(--ji||ab(!0));l=!1}var h,k,l=!0;ji++;mb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));u.appendChild(D)}d||
 (p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?ki(d,null,a,null,!1,f,function(a,e){e?(lb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--ji||ab(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--ji||
-ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?ki(c,b,a,e,!0,f,p):li(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ni("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ni("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return rb(b,a+".machine")};
+ab(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?ki(c,b,a,e,!0,f,p):li(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(H){g(H.message)}return l}window.embedPDP10=function(a,b,c,d){ab(!1);return ni("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){ab(!1);return ni("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return rb(b,a+".machine")};
 window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!ub[a]){for(var c=!0,d=ub,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p
Date: Thu, 30 Mar 2017 11:53:21 -0700
Subject: [PATCH 20/27] The shared expression parser now adapts to the
 (critically) different precedence of MACRO-10 operators

---
 docs/pcx86/examples/pcx86-dbg.js | 325 ++++++++++++++++---------------
 modules/shared/lib/debugger.js   | 102 ++++++----
 versions/pdpjs/1.34.3/pdp10.js   |  40 ++--
 3 files changed, 252 insertions(+), 215 deletions(-)

diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js
index 9d2208647..3922ba89d 100644
--- a/docs/pcx86/examples/pcx86-dbg.js
+++ b/docs/pcx86/examples/pcx86-dbg.js
@@ -569,11 +569,11 @@ function Ns(a,b){var c,d=a.oa,e=a.C;if(e)if(e.La==os)d=Ds;else if(e.La>=aq){var
 350>f?d=m?nt:ot:480<=f&&(d=a.ga==Tl?pt:qt):d=m?7-d:rt:d-=m?2:0);c=et(a)}}else e.Xc&8&&(e.Xc&2?(d=e.Xc&16?rt:st,e.Xc&4||--d):(d=e.Xc&1?Bs:tt,e.Xc&4&&--d));else a.oa=null,null==d&&(d=a.da);if(!Gs(a,d,b))return!1;ft(a,c);return!0}
 function Gs(a,b,c){if(null!=b&&(b!=a.oa||c)){a.Ad=0;a.oa=b;a.Ga=!1;b=a.C||(b==Ds?a.Y:a.K);if(b!=a.C||b.cb!=a.cb||b.Ob!=a.Ob){bt(a);if(a.cb){if(!Bc(a.ka,a.cb,a.Ob))return!1;a.C&&(a.C.rc=!1)}a.C=b;b.rc=!0;a.cb=b.cb;a.Ob=b.Ob;if(!oc(a.ka,b.cb,b.Ob,3,b===a.A?b:null))return!1}a:{a.I=0;a.F=a.Fb;a.J=a.sc;a.Ma=a.F;a.Eb=hs[Ds][2];b=0;if(c=hs[a.oa])a.F=c[0],a.J=c[1],a.Eb=c[2],b=c[3],a.I=c[4],4!=a.ga&&7!=a.ga||a.C!==a.A||a.I!=Vs||(7==(a.A.Wa[es]&31)?a.J=350>Jr(a.A,Vr)?43:50:a.I=a.La);a.Wc=a.F*a.J|0;a.Vc=a.Wc/
 a.Eb|0;a.Xa=a.Vc;a.Pb=0;void 0!==b&&(a.Xa=(a.Xa<<1)+b|0,a.Pb=a.Xa+b>>1);if(a.va.length){a.qa=a.Z/a.F|0;a.ta=a.la/a.J|0;if(a.I){b=a.va[a.I];if(!b)break a;c=a.va[a.I<<1];a.Uc&&80==a.F?c&&a.qa>=3*c.Fc>>2&&(a.I<<=1,b=c):(c&&a.qa>=c.Fc&&(a.I<<=1,b=c),a.Uc||(a.qa=b.Fc,a.ta=b.Gc));a.Ya=a.ab=0;b&&(a.Ya=a.F*b.Fc,a.ab=a.J*b.Gc)}else a.qa=a.ta=1,a.Ya=a.F,a.ab=a.J;a.Ha=a.L.createImageData(a.Ya,a.ab);a.Ba=document.createElement("canvas");a.Ba.width=a.Ya;a.Ba.height=a.ab;a.Ca=a.Ba.getContext("2d");a.vc=a.zc=0;
-a.Qb=a.Z;a.Rb=a.la;b=a.Z-a.F*a.qa;c=a.la-a.J*a.ta;0>1,a.Qb-=b);0>1,a.Rb-=c);if(b||c)a.L.fillStyle=a.O.style.backgroundColor,a.L.fillRect(0,0,a.Z,a.la)}}ut(a,!0);ys(a)}return!0}function $s(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function vt(a){a.xa=-1;a.ma=!1;var b=a.Vc;if(void 0===a.M||a.M.length!=b)a.M=Array(b)}function ut(a,b){b||(a.Ga=!1);vt(a)}
-function dt(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.va[a.I];h.jf&&(d=h.jf[d]);var k=g>>4&15;h.jf&&(k=h.jf[k]);e?(b*=h.Fc,c*=h.Gc,e.fillStyle=h.Be[k],e.fillRect(b,c,h.Fc,h.Gc)):(b=b*a.qa+a.vc,c=c*a.ta+a.zc,a.L.fillStyle=h.Be[k],a.L.fillRect(b,c,a.qa,a.ta));g&Ut&&(k=(f&15)*h.Fc,f=(f>>4)*h.Gc,e?e.drawImage(h.Sg[d],k,f,h.Fc,h.Gc,b,c,h.Fc,h.Gc):a.L.drawImage(h.Sg[d],k,f,h.Fc,h.Gc,b,c,a.qa,a.ta));g&ct&&(f=a.md,g=a.Hc,e?(a.za&&a.za!==h.Gc&&(f=f*h.Gc/a.za|0,g=g*h.Gc/a.za|0),e.fillStyle=h.Be[d],e.fillRect(b,
+a.Qb=a.Z;a.Rb=a.la;b=a.Z-a.F*a.qa;c=a.la-a.J*a.ta;0>1,a.Qb-=b);0>1,a.Rb-=c);if(b||c)a.L.fillStyle=a.O.style.backgroundColor,a.L.fillRect(0,0,a.Z,a.la)}}ut(a,!0);ys(a)}return!0}function $s(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function Tt(a){a.xa=-1;a.ma=!1;var b=a.Vc;if(void 0===a.M||a.M.length!=b)a.M=Array(b)}function ut(a,b){b||(a.Ga=!1);Tt(a)}
+function dt(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.va[a.I];h.jf&&(d=h.jf[d]);var k=g>>4&15;h.jf&&(k=h.jf[k]);e?(b*=h.Fc,c*=h.Gc,e.fillStyle=h.Be[k],e.fillRect(b,c,h.Fc,h.Gc)):(b=b*a.qa+a.vc,c=c*a.ta+a.zc,a.L.fillStyle=h.Be[k],a.L.fillRect(b,c,a.qa,a.ta));g&Vt&&(k=(f&15)*h.Fc,f=(f>>4)*h.Gc,e?e.drawImage(h.Sg[d],k,f,h.Fc,h.Gc,b,c,h.Fc,h.Gc):a.L.drawImage(h.Sg[d],k,f,h.Fc,h.Gc,b,c,a.qa,a.ta));g&ct&&(f=a.md,g=a.Hc,e?(a.za&&a.za!==h.Gc&&(f=f*h.Gc/a.za|0,g=g*h.Gc/a.za|0),e.fillStyle=h.Be[d],e.fillRect(b,
 c+f,h.Fc,g)):(a.za&&a.za!==a.ta&&(f=f*a.ta/a.za|0,g=g*a.ta/a.za|0),a.L.fillStyle=h.Be[d],a.L.fillRect(b,c+f,a.qa,g)))}
-function ys(a,b){if(a.ea.Yb){var c=!1,d=a.C;d&&(d!==a.A?d.Xc&8&&(c=!0):d.wd&32&&(c=!0));if(c||b){if(b)vt(a);else if(void 0===a.M)return;var e=!1;!(b||++a.Ad&15)&&0<=a.Aa&&(a.Aa++,e=!0);var f=0,g=a.Wc,h=a.cb,c=h,k=c+a.Ob;a.oa>=kt&&(h=c=655360,k=c+65536);if(Wt(a,d)&8||d.Ye&&d.Ye=aq&&d.Wa[19]&&d.Wa[19]<<1!=d.Wa[1]+1&&(a.Ma=d.Wa[19]<<(a.I?1:d.Wa[20]&64?3:4),m=(a.Ma*(a.J-1)+a.F)/a.Eb|0,a.oa<=Ds&&
-(m<<=1));c+m>k&&(m=k-c,0>m&&(m=0));k=c+m;if(b=!b&&a.ma){b=a.ka;for(var p=!0,v=c>>>b.A;0f)return;g=f+1}}if(a.I){if(a.va[a.I]){d=f;f=0;e=a.xa=0;h=Ut<<8;b=1048575;p=a.C.Xc&32;a.La>=aq&&(p=a.C.Cc[16]&8);m=a.aa-a.C.vd;p&&(e=Hs<<8,b&=~e,a.Aa&2||(b&=~h));for(c+=d<<1;c=kt&&(h=c=655360,k=c+65536);if(Wt(a,d)&8||d.Ye&&d.Ye=aq&&d.Wa[19]&&d.Wa[19]<<1!=d.Wa[1]+1&&(a.Ma=d.Wa[19]<<(a.I?1:d.Wa[20]&64?3:4),m=(a.Ma*(a.J-1)+a.F)/a.Eb|0,a.oa<=Ds&&
+(m<<=1));c+m>k&&(m=k-c,0>m&&(m=0));k=c+m;if(b=!b&&a.ma){b=a.ka;for(var p=!0,v=c>>>b.A;0f)return;g=f+1}}if(a.I){if(a.va[a.I]){d=f;f=0;e=a.xa=0;h=Vt<<8;b=1048575;p=a.C.Xc&32;a.La>=aq&&(p=a.C.Cc[16]&8);m=a.aa-a.C.vd;p&&(e=Hs<<8,b&=~e,a.Aa&2||(b&=~h));for(c+=d<<1;c>8|(u&255)<<8;var I=e,T=16;m>=h))>>(T-=h);$s(a.Ha,m++,p,b[ua])}m>E&&(E=m);p=H&&(H=p+1)}k+=2;d++;if(m>=a.F){m=0;p+=2;if(p>a.J)break;p==a.J&&(p=1,k=c+a.Pb)}}a.ma=!0;
 va.F?a.Ma-a.F-u>>3:0;c>=8;b>v&&(v=b);m=K&&(K=m+1)}c+=H;if(b>=a.F){b=0;if(++m>a.J)break;c+=I}}u||(a.ma=!0);pa.F?a.Ma-a.F-K>>3:0;cI&&(T=I)):(u<<=K,T-=K,a.ma=!1):(a.ma&&u===a.M[d]?(h+=T,T=0):a.M[d]=u,d++);if(T){hp&&(p=h);b=E&&(E=b+1)}if(h>=a.F){h=0;if(++b>a.J)break;c+=H}}K||(a.ma=!0);mthis.A&&this.C.length&&(this.A=0);if(0>this.A||a!=this.C[this.A])this.C.splice(0,0,a),this.A=0;this.A--}else this.da?a="end":a=this.C[this.A+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ba(a.substring(d,f))),d=f+1}}return b};
 function Wx(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a|0:(b=Math.pow(2,b-1),a<-b?(a<2*-b&&(d=a%(2*b)),d+=2*b):d>=b&&(a>=2*b&&(d=a%(2*b)),d-=2*b));a!=d&&(a=d);return a}
 function Xx(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
 f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Wx(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&dy(a,null,d)}return d}
-function ey(a,b){var c,d=a.qa[0],e=a.qa[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=cy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?by(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.ha}if(null==
+k){p=p<<2|3;continue}}m=!0;break}if(void 0===p)if(null==a.Ha&&f)a.Ha=h,p=0;else{m=!0;f=!f;break}v.push(Wx(p));if(" "==k)if(c=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Yx(a,b,0,b.length,a.F,c);void 0!==d&&!1===c&&ey(a,null,d)}return d}
+function fy(a,b){var c,d=a.ha[0],e=a.ha[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=dy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?cy(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Pk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Y-a.la}if(null==
 e)break;b=b.replace(d[0],e.toString())}return b}function Zx(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.gh(b),0<=f?f=a.hh(f):(f=a.ga[b],null==f&&(f=oa(b,1>>=2}f=Wx(f)}else d||a.P("invalid "+(c?c:"value")+": "+b);else d||a.P("missing "+(c||"value"));return f}
-function dy(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.F?by(a,c,32,8,1)+"  "+c+".":by(a,c,32,16,1)+"  "+by(a,c,32,8,1)+"  "+by(a,c,32,2,8)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.P((null!=b?b+": ":"")+d);return e}function fy(a,b){if(b)return dy(a,b,a.ga[b]);var c=0;for(b in a.ga)dy(a,b,a.ga[b]),c++;return 0=Math.abs(b)?5:11;b=pa(b,10,a);break;default:b=q(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}var $x={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11};
-function gy(a){Vx.call(this,a);this.ta=4;this.la=5;this.wa=1048575;this.L=hy(this);this.Ta=hy(this);this.aa=hy(this);this.D=[];this.B=this.Z=this.N=[];iy(this);this.xa=0;jy(this);this.Ba={};ky(this,a.messages);this.Ga=a.commands;var b=this;window?void 0===window.pcx86&&(window.pcx86=function(a){return ly(b,a)}):void 0===global.pcx86&&(global.pcx86=function(a){return ly(b,a)})}ba(gy,Vx);l=gy.prototype;
-l.uc=function(a,b,c,d){this.ka=b;this.H=c;this.pa=a;this.hb=Wb(a,"FDC");this.Xa=Wb(a,"HDC");this.Tc=Wb(a,"FPU");this.G=Wb(a,"Mouse");(a=yd(a,"messages"))&&ky(this,a);this.la=b.I>>2;this.wa=b.N;this.ab=new Ud(this.H,7,"DBG");this.oa=my;80186<=this.H.ca&&(this.oa=my.slice(),this.oa[15]=ny,80286<=this.H.ca&&(this.oa[15]=oy,80386<=this.H.ca&&(this.ta=8)));zl(this,64,function(a){py(d,d.H.sc,a[0])});zl(this,4,function(a){if(a=a[0]){var b=Zx(d,a);if(void 0===b)d.P("invalid selector: "+a);else if(a=qy(d,
-b,ry),d.P("dumpSel("+sa(a?a.U:b)+"): %"+q(a?a.Lb:null,d.la)),a){var c,b=!1;if(a.type&4096)a.type&2048?(c="code"+(a.type&512?",readable":",execonly"),a.type&1024&&(c+=",conforming")):(c="data"+(a.type&512?",writable":",readonly"),a.type&1024&&(c+=",expdown")),a.type&256&&(c+=",accessed");else{var e=sy[a.type];e&&(c=e[0],b=e[1])}!c||a.mb&32768||(c+=",not present");d.P((b?"seg="+sa(a.ua&65535)+" off="+sa(a.Ka):"base="+q(a.ua,d.la)+" limit="+ty(a.Ka))+" type="+r(a.type>>8)+" ("+c+") ext="+sa(a.ext&-65296)+
-" dpl="+r(a.qc))}}else d.P("no selector")});zl(this,134217728,function(a){var b;(a=a[0])&&(b=Zx(d,a));if(void 0===b)d.P("invalid MCB");else for(d.P("dumpMCB("+sa(b)+")");b;){a=hy(d,0,b);var c=d.Ia(a,1),e=d.Yc(a,2),k=d.Yc(a,5);if(77!=c&&90!=c)break;d.P(uy(0,b)+": '"+String.fromCharCode(c)+"' PID="+sa(e)+" LEN="+sa(k)+' "'+vy(d,a,8)+'"');b+=1+k}});zl(this,128,function(a){py(d,d.H.aa,a[0],d.H.aa!==d.H.sc)});zl(this,8,function(a){a:{if(a=a[0]){var b=Zx(d,a);if(void 0===b){d.P("invalid task selector: "+
-a);break a}a=qy(d,b,ry)}else a=d.H.la;d.P("dumpTSS("+sa(a?a.U:b)+"): %"+q(a?a.ua:null,d.la));if(a){var b="",c=a.type&-513,e=256==c?4:8,k=256==c?wy:xy,m,p,v,u;for(u in k)m=k[u],p=a.ua+m,v=xg(d.H,p,2),2304==c&&(v|=xg(d.H,p+2,2)<<16),b&&(b+="\n"),b+=sa(m)+" "+Aa(u+":",11)+q(v,e);if(2304==c)for(u=0,m=v>>>16;mu;){p=a.ua+m;v=xg(d.H,p,2);p=2;c="";if(!p||4>=8;b+="\n"+sa(m)+" ports "+sa(u)+"-"+sa(u+15)+": "+(""+c);u+=16;m+=2}d.P(b)}}});this.I=
-null;this.Ma=0;this.Ca=!1;Rf(this.H,48,this.Ym.bind(this));Rf(this.H,65,this.Zm.bind(this));this.V=null;Rf(this.H,104,this.$m.bind(this));Ib(this)};function yy(a,b,c,d,e,f){b=vy(a,b);var g=qy(a,d),g=g?g.Ka+1:0,h=(e?"_CODE":"_DATA")+q(c,2);f&&t(a,128)&&a.message(b+" "+(e?"code":"data")+"("+q(c,4)+")=#"+q(d,4)+" len "+q(g));e=zy(a,b,c);e[b+h]=0;$p(a,b,c,d,0,null,g,e)}
-function Ay(a,b,c,d){var e=a.Yc(b,2),f=a.Yc(b,2),g=By(a,b,4),h=By(a,b,4),k=hy(a,By(a,b,4),a.Yc(b,2));b=hy(a,By(a,b,4),a.Yc(b,2));b=vy(a,b).toUpperCase();var k=vy(a,k).toUpperCase(),m=(c?"_CODE":"_DATA")+q(e,2);d&&t(a,128)&&a.message((b==k?"":b+"!")+k+" "+(c?"code":"data")+"("+q(e,4)+")="+q(f,4)+":"+q(g)+" len "+q(h));c=zy(a,k,e);c[k+m]=g;$p(a,k,e,f,g,null,h,c)}function Cy(a,b,c){c=vy(a,c).toUpperCase();Dy(a,c,b)}
-l.Ym=function(){var a=this.H;if(null!=this.I&&2752554==a.D){var b=a.L&65535,c=a.K&65535,d=hy(this,z(a)+12,a.Y.U);switch(By(this,d)){case 336:Ay(this,hy(this,a.G,b),!c,!!this.I)}}return!0};
-l.Zm=function(a){var b=this.H,c=b.D&65535,d=b.G&65535,e=b.I&65535,f=b.L&65535,g=b.K&65535,h=b.J&65535,k=b.oa.U;if(null==this.I)return 79==c&&Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Lb(a,"INT 0x41 handling enabled",128),a.I=!0):(Lb(a,"INT 0x41 monitoring enabled",128),a.I=!1)}}(this)),!0;switch(c){case 79:this.I&&(b.D=b.D&-65536|62342,Lb(this,"INT 0x41 handling enabled",128));break;case 80:yy(this,hy(this,h,k),d+1,e,!(g&1),!!this.I);break;case 82:Dy(this,null,
-d);break;case 127:this.I&&(b.D=b.D&-65536|(this.Ca?0:1));break;case 131:this.I&&(a=hy(this,b.L,e),this.Ma++?(this.P("TRAPFAULT failed"),Ey(this,this.B,a,!0,!0),this.Ma=0,this.Jb()):(this.P("INT 0x41 TRAPFAULT: fault="+sa(d)+" error="+q(b.K,8,!0)+" addr="+Fy(a)),this.Gd(this.B,a,!0),jy(this,!0)));break;case 141:this.I&&(b.D=b.D&-65536|1);break;case 336:Ay(this,hy(this,b.G,f),!g,!!this.I);break;case 338:Cy(this,d,hy(this,b.J,f))}this.Ca=!1;return!this.I};
+function ey(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.F?cy(a,c,32,8,1)+"  "+c+".":cy(a,c,32,16,1)+"  "+cy(a,c,32,8,1)+"  "+cy(a,c,32,2,8)+"  "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.P((null!=b?b+": ":"")+d);return e}function gy(a,b){if(b)return ey(a,b,a.ga[b]);var c=0;for(b in a.ga)ey(a,b,a.ga[b]),c++;return 0=Math.abs(b)?5:11;b=pa(b,10,a);break;default:b=q(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}
+var ay={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},$x={"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20};
+function hy(a){Vx.call(this,a);this.ta=4;this.ma=5;this.wa=1048575;this.L=iy(this);this.Ta=iy(this);this.aa=iy(this);this.D=[];this.B=this.Z=this.N=[];jy(this);this.xa=0;ky(this);this.Ba={};ly(this,a.messages);this.Ga=a.commands;var b=this;window?void 0===window.pcx86&&(window.pcx86=function(a){return my(b,a)}):void 0===global.pcx86&&(global.pcx86=function(a){return my(b,a)})}ba(hy,Vx);l=hy.prototype;
+l.uc=function(a,b,c,d){this.ka=b;this.H=c;this.pa=a;this.hb=Wb(a,"FDC");this.Xa=Wb(a,"HDC");this.Tc=Wb(a,"FPU");this.G=Wb(a,"Mouse");(a=yd(a,"messages"))&&ly(this,a);this.ma=b.I>>2;this.wa=b.N;this.ab=new Ud(this.H,7,"DBG");this.qa=ny;80186<=this.H.ca&&(this.qa=ny.slice(),this.qa[15]=oy,80286<=this.H.ca&&(this.qa[15]=py,80386<=this.H.ca&&(this.ta=8)));zl(this,64,function(a){qy(d,d.H.sc,a[0])});zl(this,4,function(a){if(a=a[0]){var b=Zx(d,a);if(void 0===b)d.P("invalid selector: "+a);else if(a=ry(d,
+b,sy),d.P("dumpSel("+sa(a?a.U:b)+"): %"+q(a?a.Lb:null,d.ma)),a){var c,b=!1;if(a.type&4096)a.type&2048?(c="code"+(a.type&512?",readable":",execonly"),a.type&1024&&(c+=",conforming")):(c="data"+(a.type&512?",writable":",readonly"),a.type&1024&&(c+=",expdown")),a.type&256&&(c+=",accessed");else{var e=ty[a.type];e&&(c=e[0],b=e[1])}!c||a.mb&32768||(c+=",not present");d.P((b?"seg="+sa(a.ua&65535)+" off="+sa(a.Ka):"base="+q(a.ua,d.ma)+" limit="+uy(a.Ka))+" type="+r(a.type>>8)+" ("+c+") ext="+sa(a.ext&-65296)+
+" dpl="+r(a.qc))}}else d.P("no selector")});zl(this,134217728,function(a){var b;(a=a[0])&&(b=Zx(d,a));if(void 0===b)d.P("invalid MCB");else for(d.P("dumpMCB("+sa(b)+")");b;){a=iy(d,0,b);var c=d.Ia(a,1),e=d.Yc(a,2),k=d.Yc(a,5);if(77!=c&&90!=c)break;d.P(vy(0,b)+": '"+String.fromCharCode(c)+"' PID="+sa(e)+" LEN="+sa(k)+' "'+wy(d,a,8)+'"');b+=1+k}});zl(this,128,function(a){qy(d,d.H.aa,a[0],d.H.aa!==d.H.sc)});zl(this,8,function(a){a:{if(a=a[0]){var b=Zx(d,a);if(void 0===b){d.P("invalid task selector: "+
+a);break a}a=ry(d,b,sy)}else a=d.H.la;d.P("dumpTSS("+sa(a?a.U:b)+"): %"+q(a?a.ua:null,d.ma));if(a){var b="",c=a.type&-513,e=256==c?4:8,k=256==c?xy:yy,m,p,v,u;for(u in k)m=k[u],p=a.ua+m,v=xg(d.H,p,2),2304==c&&(v|=xg(d.H,p+2,2)<<16),b&&(b+="\n"),b+=sa(m)+" "+Aa(u+":",11)+q(v,e);if(2304==c)for(u=0,m=v>>>16;mu;){p=a.ua+m;v=xg(d.H,p,2);p=2;c="";if(!p||4>=8;b+="\n"+sa(m)+" ports "+sa(u)+"-"+sa(u+15)+": "+(""+c);u+=16;m+=2}d.P(b)}}});this.I=
+null;this.Ma=0;this.Ca=!1;Rf(this.H,48,this.Ym.bind(this));Rf(this.H,65,this.Zm.bind(this));this.V=null;Rf(this.H,104,this.$m.bind(this));Ib(this)};function zy(a,b,c,d,e,f){b=wy(a,b);var g=ry(a,d),g=g?g.Ka+1:0,h=(e?"_CODE":"_DATA")+q(c,2);f&&t(a,128)&&a.message(b+" "+(e?"code":"data")+"("+q(c,4)+")=#"+q(d,4)+" len "+q(g));e=Ay(a,b,c);e[b+h]=0;$p(a,b,c,d,0,null,g,e)}
+function By(a,b,c,d){var e=a.Yc(b,2),f=a.Yc(b,2),g=Cy(a,b,4),h=Cy(a,b,4),k=iy(a,Cy(a,b,4),a.Yc(b,2));b=iy(a,Cy(a,b,4),a.Yc(b,2));b=wy(a,b).toUpperCase();var k=wy(a,k).toUpperCase(),m=(c?"_CODE":"_DATA")+q(e,2);d&&t(a,128)&&a.message((b==k?"":b+"!")+k+" "+(c?"code":"data")+"("+q(e,4)+")="+q(f,4)+":"+q(g)+" len "+q(h));c=Ay(a,k,e);c[k+m]=g;$p(a,k,e,f,g,null,h,c)}function Dy(a,b,c){c=wy(a,c).toUpperCase();Ey(a,c,b)}
+l.Ym=function(){var a=this.H;if(null!=this.I&&2752554==a.D){var b=a.L&65535,c=a.K&65535,d=iy(this,z(a)+12,a.Y.U);switch(Cy(this,d)){case 336:By(this,iy(this,a.G,b),!c,!!this.I)}}return!0};
+l.Zm=function(a){var b=this.H,c=b.D&65535,d=b.G&65535,e=b.I&65535,f=b.L&65535,g=b.K&65535,h=b.J&65535,k=b.oa.U;if(null==this.I)return 79==c&&Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Lb(a,"INT 0x41 handling enabled",128),a.I=!0):(Lb(a,"INT 0x41 monitoring enabled",128),a.I=!1)}}(this)),!0;switch(c){case 79:this.I&&(b.D=b.D&-65536|62342,Lb(this,"INT 0x41 handling enabled",128));break;case 80:zy(this,iy(this,h,k),d+1,e,!(g&1),!!this.I);break;case 82:Ey(this,null,
+d);break;case 127:this.I&&(b.D=b.D&-65536|(this.Ca?0:1));break;case 131:this.I&&(a=iy(this,b.L,e),this.Ma++?(this.P("TRAPFAULT failed"),Fy(this,this.B,a,!0,!0),this.Ma=0,this.Jb()):(this.P("INT 0x41 TRAPFAULT: fault="+sa(d)+" error="+q(b.K,8,!0)+" addr="+Gy(a)),this.Gd(this.B,a,!0),ky(this,!0)));break;case 141:this.I&&(b.D=b.D&-65536|1);break;case 336:By(this,iy(this,b.G,f),!g,!!this.I);break;case 338:Dy(this,d,iy(this,b.J,f))}this.Ca=!1;return!this.I};
 l.$m=function(a){var b=this.H,c=b.D&255,d=b.D>>8&255,e=b.G&65535,f=b.I&65535,g=b.L&65535,h=b.J&65535,k=b.oa.U;if(null==this.V){if(67==d){if(609437257==b.ia((b.Z.U<<4)+10)||1111835735==b.ia((b.Z.U<<4)+95))return!0;Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Lb(a,"INT 0x68 handling enabled",128),a.I=a.V=!0):(Lb(a,"INT 0x68 monitoring enabled",128),a.V=!1)}}(this))}return!0}switch(d){case 67:this.V&&(b.D=b.D&-65536|62342);break;case 68:this.V&&(a=Wd(b.Z,this.yl.bind(this)))&&
-(b.J=a[0],ne(b,a[1]));break;case 72:Dy(this,null,e);break;case 80:32==c?yy(this,hy(this,h,k),0,f,!0,!!this.V):128>c?yy(this,hy(this,h,k),e+1,c&64?g:f,!(c&1),!!this.V):Ay(this,hy(this,h,k),!(c&1),!!this.V),this.V&&(b.D=b.D&-256|1)}return!this.V};l.yl=function(){var a=this.H;5==(a.D&255)&&(a.I=a.K=0,a.D=a.D&-256|1);return!1};
-l.Cb=function(a,b,c){var d=this;switch(b){case "debugInput":return this.va=this.na[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",ly(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.A>>0)+1;a.mb=f;a.type=g;a.ext=k;a.Lb=d;Vd(a,!0,!0,!1)}}return a}l.Sb=function(a,b,c){var d=a&&a.ya;if(null==d&&(d=-1,a)){var e=qy(this,a.U,a.type);e&&(b=a.Ja||0,c=c||1,d=e=-1===e.Lb||e.Oc&&(b>>>0)+c>e.Nb||!e.Oc&&(b>>>0)+c<=e.Nb?e.ua+b|0:-1,a.ya=d)}return d};l.Ia=function(a,b){var c=255,d=this.Sb(a,!1,1);-1!==d&&(c=xg(this.H,d,1,a.type==Jy)|0,b&&Ky(this,a,b));return c};
-l.jb=function(a,b){return a.Hb?By(this,a,b?4:0):this.Yc(a,b?2:0)};l.Yc=function(a,b){var c=65535,d=this.Sb(a,!1,2);-1!==d&&(c=xg(this.H,d,2,a.type==Jy)|0,b&&Ky(this,a,b));return c};function By(a,b,c){var d=-1,e=a.Sb(b,!1,4);-1!==e&&(d=xg(a.H,e,4,b.type==Jy)|0,c&&Ky(a,b,c));return d}l.fc=function(a,b,c,d){var e=this.Sb(a,!0,1);if(-1!==e){if(a.type!=Jy)this.H.fc(e,b);else{var f=this.ka;f.aa[(e&f.C)>>>f.A].bf(e&f.D,b&255,e)}c&&Ky(this,a,c);d||Bd(this.H,!0)}};
-l.il=function(a,b,c){var d=this.Sb(a,!0,2);-1!==d&&(a.type!=Jy?this.H.fb(d,b):Jc(this.ka,d,b),c&&Ky(this,a,c),Bd(this.H,!0))};function hy(a,b,c,d,e,f,g){return Ly(a,{},b,c,d,e,f,g)}function Ly(a,b,c,d,e,f,g,h){b.Ja=c||0;b.U=d;b.ya=e;b.type=f||(Hy(a)?ry:Iy);b.Hb=null!=g?g:!(!a.H||4!=a.H.Z.W);b.dc=null!=h?h:!(!a.H||4!=a.H.Z.Jc);b.Jd=!1;return b}function My(a){return[a.Ja,a.U,a.ya,a.Jd,a.Hb,a.dc,a.Fe,a.bh]}function Ny(a){return{Ja:a[0],U:a[1],ya:a[2],Jd:a[3],Hb:a[4],dc:a[5],Fe:a[6],bh:a[7]}}
-function Oy(a,b,c){if(null!=b.U&&(a=qy(a,b.U,b.type))){var d=b.Ja&a.wa;if(!a.Oc){if(d>>>0>=a.Nb)return!1}else if(d>>>0f?null!=h?(g=cy(a,b,void 0),f=null):(f=cy(a,b,void 0),null==f&&(g=null)):(h=cy(a,b.substring(0,f),void 0),g=cy(a,b.substring(f+1),void 0),f=null)}null!=g&&(e=hy(a,g,h,f,c),d||Oy(a,e,!0)||(a.P("invalid offset: "+Fy(e)),e=null));return e}function Sy(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sl=a.Cg(b.Yk=c[2]))}l.Pk=function(a,b){var c=Py(this,b);return a.replace("["+b+"]",c?q(this.jb(c),c.Hb?8:4):"undefined")};
-function Ky(a,b,c){c=c||1;null!=b.ya&&(b.ya+=c);null!=b.U&&(b.Ja+=c,Oy(a,b)||(b.Ja=0,b.ya=null))}function uy(a,b,c){return null!=b?q(b,4)+":"+q(a,a&-65536||c?8:4):q(a)}function Fy(a){var b;switch(a.type){case Iy:case Ty:b="&";break;case ry:b="#";break;case Ry:b="%";break;case Jy:b="%%";break;default:b=a.U?"":"%"}return a.type>=Ry||null==a.U?b+q(a.ya):b+uy(a.Ja,a.U,a.dc)}
-function vy(a,b,c){var d="";for(c=c||256;d.length>>a.H.hb;g=1}a.P("blockid   "+(d?"linear  ":"physical")+"   blockaddr   used    size    type");a.P("--------  ---------  ----------  ------  ------  ----");c=-1;for(var h=0;g--;)(d=b[f])&&d.type==bd&&(d=sd(a.H,e,!1,!0)),d.type==c?h++||a.P("..."):(c=d.type,h=tc[c],c==dd&&(d=d.pd,h+=" -> "+tc[d.type]),d&&a.P(q(d.id,8)+"  %"+q(f<c&&(c=Ha(Vy,a.substr(b,2))));return c};
-function Wy(a,b){var c=0,d=a.hh(b);if(null!=d)switch(b){case Xy:case Yy:case Zy:case $y:case az:case bz:case cz:case dz:c=2;break;case ez:case fz:case gz:case hz:case iz:case jz:case kz:case lz:case mz:case nz+oz:case nz+pz:case nz+qz:case nz+rz:case nz+sz:case nz+tz:c=4;break;case uz:case vz:case wz:case xz:case yz:case zz:case Az:case Bz:case Cz:case Dz:case Ez:case Fz:case Gz:c=8;break;case Hz:c=a.ta}return c?q(d,c):"??"}
-l.hh=function(a){var b;if(0<=a){var c=this.H;switch(a){case Xy:b=c.D&255;break;case Yy:b=c.I&255;break;case Zy:b=c.L&255;break;case $y:b=c.G&255;break;case az:b=c.D>>8&255;break;case bz:b=c.I>>8&255;break;case cz:b=c.L>>8&255;break;case dz:b=c.G>>8&255;break;case ez:b=c.D&65535;break;case fz:b=c.I&65535;break;case gz:b=c.L&65535;break;case hz:b=c.G&65535;break;case iz:b=z(c)&65535;break;case jz:b=c.M&65535;break;case kz:b=c.K&65535;break;case lz:b=c.J&65535;break;case mz:b=A(c)&65535;break;case Hz:b=
-qe(c);break;case nz+oz:b=c.oa.U;break;case nz+pz:b=c.Z.U;break;case nz+qz:b=c.Y.U;break;case nz+rz:b=c.Ca.U;break;default:if(80286==this.H.ca)a==Cz&&(b=c.qa);else if(80386<=this.H.ca)switch(a){case uz:b=c.D;break;case vz:b=c.I;break;case wz:b=c.L;break;case xz:b=c.G;break;case yz:b=z(c);break;case zz:b=c.M;break;case Az:b=c.K;break;case Bz:b=c.J;break;case Cz:b=c.qa;break;case Dz:b=c.Og;break;case Ez:b=c.Cd;break;case Fz:b=c.Wc;break;case nz+sz:b=c.Ga.U;break;case nz+tz:b=c.Ha.U;break;case Gz:b=A(c)}}}return b};
-function Iz(a,b){b=ey(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.gh(b,c+1),0<=e&&(b=b.substr(0,c)+Wy(a,e)+b.substr(c+1+Vy[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=oa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Py(a,e))?(d=e+' "'+vy(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Py(a,e))?(Ky(a,d),
-d=e+' "'+vy(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+Fy(hy(this,A(this.H),this.H.Z.U))+" (%"+q(this.H.da)+")");this.za&&a==this.za||(this.za=a,this.ic&-2147483648&&(this.Jb(),a+=" (cpu halted)"),this.P(a),this.H&&(a=this.H,a.zc-=a.A,a.A=0,a.T.Ve=0,Bd(a)))};
-function Vk(a,b,c,d){var e,f;if(!d&&(d=t(a,1)&&0>Jz.indexOf(b),!d)){var g=Kz[b];g&&(d=t(a,g)?!0:524288==g&&t(a,g=1048576))}d&&(e=a.H.D>>8&255,f=a.H.L&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Qb[b])&&g[e]||"")&&(g=" "+Iz(a,g)),a.message("INT "+r(b)+": AH="+r(e)+" at "+uy(c-2-a.H.Z.ua,a.H.Z.U)+g));return d}
-function Mb(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.ic&h)==h)h=null,null!=e&&(h=a.H.Z.U,e-=a.H.Z.ua),a.message(b.be+"."+(null!=d?"outPort":"inPort")+"("+sa(c)+","+(f?f:"unknown")+(null!=d?","+r(d):"")+")"+(null!=g?": "+r(g):"")+(null!=e?" at "+uy(e,h):""))}l.ih=function(){this.P("Type ? for help with PCx86 Debugger commands");Lz(this);if(this.Ga){var a=this.Ga;this.Ga=null;ly(this,a)}};
-function jy(a,b){var c;if(Ig(a)){if(!a.O||!a.O.length){a.O=Array(Mz);for(c=0;c>>f.hb].Gd(e&f.Db,a==this.N);g&&sc(f)}}d&&(a.push(b),c?(null!=b.ya&&(b.U=null),b.Jd=!0):(Tz(this,a,a.length-1,"set"),jy(this)));return d};
-function Ey(a,b,c,d,e){for(var f=!1,g=Uz(a,a.Sb(c)),h=1;h>3&7,E=(3>(g>>6&3)?0:48)+u;(217==f||219==f)&&52<=E&&(E=u<<4|g&7);(u=bA[f])&&(v=u[E]);v&&(p=cA,k=v,m=k[0])}m>=p.length&&(g=a.Ia(b,1),k=dA[m-p.length][g>>3&7],m=k[0]);p=p[m];u=k.length-1;v="";b.Hb&&(m==eA?
-p="CWDE":m==fA?p="CDQ":m>=gA&&m<=hA&&(p+="D"));if(164<=f&&167>=f||170<=f&&175>=f)u=0,b.Hb&&"W"==p.slice(-1)&&(p=p.slice(0,-1)+"D");for(var f=-1,E=!0,K=1;K<=u;K++){var H,I;H="";I=k[K];if(void 0!==I){0>f&&(f=I>>iA);m==jA&&(f==kA?v="[%800]":f==lA&&(v="ES:["+(b.dc?"E":"")+"DI]"));var T=I&mA;if(T!=nA)if(T==oA)E=!1;else{var L=I&pA;if(L>=R)if(0>g&&(g=a.Ia(b,1)),L>6,za=g&7;if(3>xb){T=!p.indexOf("FI");if(!xb&&(!I.dc&&6==za||I.dc&&5==za))xb=2;else{if(I.dc)if(4!=za)za+=
-8;else{var ca=L,cb=xb,Sa=I,rb=ca.Ia(Sa,1),db=rb>>6,rc=rb>>3&7,rb=rb&7,ib="";if(cb||5!=rb)ib=rA[rb+8];4!=rc&&(ib&&(ib+="+"),ib+=rA[rc+8],db&&(ib+="*"+(1<>24),2)):ca+("+"+q(L,2))):2==xb&&(ca&&(ca+="+"),I.dc?(L=By(L,I,4),ca+=q(L)):(L=L.Yc(I,2),ca+=q(L,4)));ca="["+ca+"]";if(1==ua){L="";H&=mA;H==S&&(H=I.Hb?sA:U);switch(H){case tA:L="FAR";break;case V:L="BYTE";break;case U:if(T){L="INT16";
-break}L="WORD";break;case sA:L="DWORD";break;case uA:if(T){L="INT32";break}case vA:L="REAL32";break;case wA:if(T){L="INT64";break}case xA:L="REAL64";break;case yA:L="REAL80";break;case zA:L="BCD80"}L&&(ca=L+" "+ca)}}else ca=AA(L,za,H,I);H=ca}else H=L==qA?AA(a,g&7,I,b):AA(a,g>>3&7,I,b);else if(L==BA)H="1";else if(L==W){H=a;T=I;L=b;I=" ";switch(T&mA){case V:T&X&&(I=q(H.Ia(L,1),2));break;case CA:I=q(H.Ia(L,1)<<24>>24,L.Hb?8:4);break;case S:if(L.Hb){I=q(By(H,L,4));break}case U:I=q(H.Yc(L,2),4);break;
-case tA:L=hy(H,H.jb(L,!0),H.Yc(L,2),null,L.type,L.Hb,L.dc);I=Fy(L);H=DA(H,L);H[0]&&(I+=" ("+H[0]+")");break;default:I="imm("+sa(T)+")"}H=I}else L==EA?(b.dc?(H=8,I=By(a,b,4)):(H=4,I=a.Yc(b,2)),H="["+q(I,H)+"]"):L==FA?(H=T==V?a.Ia(b,1)<<24>>24:a.jb(b,!0),I=b.Ja+H&(b.Hb?-1:65535),H=q(I,b.Hb?8:4),I=DA(a,hy(a,I,b.U)),I[0]&&(H+=" ("+I[0]+")")):L==Y?H=T==GA?"ST":T==HA?"ST("+(g&7)+")":AA(a,(I&IA)>>8,I,b):L==JA?H=AA(a,(I&IA)>>8,KA,b):L==LA?H="DS:[SI]":L==MA&&(H="ES:[DI]");if(!H||!H.length){v="INVALID";break}0<
-v.length&&(v+=",");v+=H||"???"}}}g="";k=Fy(e)+" ";if(-1!==e.ya&&-1!==b.ya){do if(g+=q(a.Ia(e,1),2),null==e.ya)break;while(e.ya!=b.ya)}k+=Aa(g,e.dc?24:16);k+=Aa(p,8);v&&(k+=" "+v);a.H.catz||b>=sz&&80386>a.H.ca)return"??";b+=nz}else if(e==PA)b+=Cz;else if(e==QA)b+=RA;else if(e==SA)b+=TA;else if(a=c&mA,a>=U&&(b=ez&&b<=lz&&4a.H.ca&&(d="\n"+d,c+=e,e="");c+="\n"+WA(a,a.H.Z,b)+" ";80386<=a.H.ca&&(e+="\n",c+=WA(a,a.H.Ga,b)+" "+WA(a,a.H.Ha,b)+"\n");c+=XA(a,"LD",a.H.Eb.U,a.H.Eb.ua,a.H.Eb.ua+a.H.Eb.Ka)+" "+XA(a,"GD",null,a.H.Kb,a.H.Pc)+" "+XA(a,"ID",
-null,a.H.Pb,a.H.cd)+" ";c=c+(d+" "+e)+VA(a,Cz);80386<=a.H.ca&&(c+=VA(a,Ez)+VA(a,Fz))}else 80386<=a.H.ca&&(c+=WA(a,a.H.Ga,b)+" "+WA(a,a.H.Ha,b)+" ");return c+=VA(a,Hz)+UA(a,"V")+UA(a,"D")+UA(a,"I")+UA(a,"T")+UA(a,"S")+UA(a,"Z")+UA(a,"A")+UA(a,"P")+UA(a,"C")}l.gj=function(a,b){return a[0]>b[0]?1:a[0]c?zy(this,iy(this,h,k),e+1,c&64?g:f,!(c&1),!!this.V):By(this,iy(this,h,k),!(c&1),!!this.V),this.V&&(b.D=b.D&-256|1)}return!this.V};l.yl=function(){var a=this.H;5==(a.D&255)&&(a.I=a.K=0,a.D=a.D&-256|1);return!1};
+l.Cb=function(a,b,c){var d=this;switch(b){case "debugInput":return this.va=this.na[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",my(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.A>>0)+1;a.mb=f;a.type=g;a.ext=k;a.Lb=d;Vd(a,!0,!0,!1)}}return a}l.Sb=function(a,b,c){var d=a&&a.ya;if(null==d&&(d=-1,a)){var e=ry(this,a.U,a.type);e&&(b=a.Ja||0,c=c||1,d=e=-1===e.Lb||e.Oc&&(b>>>0)+c>e.Nb||!e.Oc&&(b>>>0)+c<=e.Nb?e.ua+b|0:-1,a.ya=d)}return d};l.Ia=function(a,b){var c=255,d=this.Sb(a,!1,1);-1!==d&&(c=xg(this.H,d,1,a.type==Ky)|0,b&&Ly(this,a,b));return c};
+l.jb=function(a,b){return a.Hb?Cy(this,a,b?4:0):this.Yc(a,b?2:0)};l.Yc=function(a,b){var c=65535,d=this.Sb(a,!1,2);-1!==d&&(c=xg(this.H,d,2,a.type==Ky)|0,b&&Ly(this,a,b));return c};function Cy(a,b,c){var d=-1,e=a.Sb(b,!1,4);-1!==e&&(d=xg(a.H,e,4,b.type==Ky)|0,c&&Ly(a,b,c));return d}l.fc=function(a,b,c,d){var e=this.Sb(a,!0,1);if(-1!==e){if(a.type!=Ky)this.H.fc(e,b);else{var f=this.ka;f.aa[(e&f.C)>>>f.A].bf(e&f.D,b&255,e)}c&&Ly(this,a,c);d||Bd(this.H,!0)}};
+l.il=function(a,b,c){var d=this.Sb(a,!0,2);-1!==d&&(a.type!=Ky?this.H.fb(d,b):Jc(this.ka,d,b),c&&Ly(this,a,c),Bd(this.H,!0))};function iy(a,b,c,d,e,f,g){return My(a,{},b,c,d,e,f,g)}function My(a,b,c,d,e,f,g,h){b.Ja=c||0;b.U=d;b.ya=e;b.type=f||(Iy(a)?sy:Jy);b.Hb=null!=g?g:!(!a.H||4!=a.H.Z.W);b.dc=null!=h?h:!(!a.H||4!=a.H.Z.Jc);b.Jd=!1;return b}function Ny(a){return[a.Ja,a.U,a.ya,a.Jd,a.Hb,a.dc,a.Fe,a.bh]}function Oy(a){return{Ja:a[0],U:a[1],ya:a[2],Jd:a[3],Hb:a[4],dc:a[5],Fe:a[6],bh:a[7]}}
+function Py(a,b,c){if(null!=b.U&&(a=ry(a,b.U,b.type))){var d=b.Ja&a.wa;if(!a.Oc){if(d>>>0>=a.Nb)return!1}else if(d>>>0f?null!=h?(g=dy(a,b,void 0),f=null):(f=dy(a,b,void 0),null==f&&(g=null)):(h=dy(a,b.substring(0,f),void 0),g=dy(a,b.substring(f+1),void 0),f=null)}null!=g&&(e=iy(a,g,h,f,c),d||Py(a,e,!0)||(a.P("invalid offset: "+Gy(e)),e=null));return e}function Ty(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sl=a.Cg(b.Yk=c[2]))}l.Pk=function(a,b){var c=Qy(this,b);return a.replace("["+b+"]",c?q(this.jb(c),c.Hb?8:4):"undefined")};
+function Ly(a,b,c){c=c||1;null!=b.ya&&(b.ya+=c);null!=b.U&&(b.Ja+=c,Py(a,b)||(b.Ja=0,b.ya=null))}function vy(a,b,c){return null!=b?q(b,4)+":"+q(a,a&-65536||c?8:4):q(a)}function Gy(a){var b;switch(a.type){case Jy:case Uy:b="&";break;case sy:b="#";break;case Sy:b="%";break;case Ky:b="%%";break;default:b=a.U?"":"%"}return a.type>=Sy||null==a.U?b+q(a.ya):b+vy(a.Ja,a.U,a.dc)}
+function wy(a,b,c){var d="";for(c=c||256;d.length>>a.H.hb;g=1}a.P("blockid   "+(d?"linear  ":"physical")+"   blockaddr   used    size    type");a.P("--------  ---------  ----------  ------  ------  ----");c=-1;for(var h=0;g--;)(d=b[f])&&d.type==bd&&(d=sd(a.H,e,!1,!0)),d.type==c?h++||a.P("..."):(c=d.type,h=tc[c],c==dd&&(d=d.pd,h+=" -> "+tc[d.type]),d&&a.P(q(d.id,8)+"  %"+q(f<c&&(c=Ha(Wy,a.substr(b,2))));return c};
+function Xy(a,b){var c=0,d=a.hh(b);if(null!=d)switch(b){case Yy:case Zy:case $y:case az:case bz:case cz:case dz:case ez:c=2;break;case fz:case gz:case hz:case iz:case jz:case kz:case lz:case mz:case nz:case oz+pz:case oz+qz:case oz+rz:case oz+sz:case oz+tz:case oz+uz:c=4;break;case vz:case wz:case xz:case yz:case zz:case Az:case Bz:case Cz:case Dz:case Ez:case Fz:case Gz:case Hz:c=8;break;case Iz:c=a.ta}return c?q(d,c):"??"}
+l.hh=function(a){var b;if(0<=a){var c=this.H;switch(a){case Yy:b=c.D&255;break;case Zy:b=c.I&255;break;case $y:b=c.L&255;break;case az:b=c.G&255;break;case bz:b=c.D>>8&255;break;case cz:b=c.I>>8&255;break;case dz:b=c.L>>8&255;break;case ez:b=c.G>>8&255;break;case fz:b=c.D&65535;break;case gz:b=c.I&65535;break;case hz:b=c.L&65535;break;case iz:b=c.G&65535;break;case jz:b=z(c)&65535;break;case kz:b=c.M&65535;break;case lz:b=c.K&65535;break;case mz:b=c.J&65535;break;case nz:b=A(c)&65535;break;case Iz:b=
+qe(c);break;case oz+pz:b=c.oa.U;break;case oz+qz:b=c.Z.U;break;case oz+rz:b=c.Y.U;break;case oz+sz:b=c.Ca.U;break;default:if(80286==this.H.ca)a==Dz&&(b=c.qa);else if(80386<=this.H.ca)switch(a){case vz:b=c.D;break;case wz:b=c.I;break;case xz:b=c.L;break;case yz:b=c.G;break;case zz:b=z(c);break;case Az:b=c.M;break;case Bz:b=c.K;break;case Cz:b=c.J;break;case Dz:b=c.qa;break;case Ez:b=c.Og;break;case Fz:b=c.Cd;break;case Gz:b=c.Wc;break;case oz+tz:b=c.Ga.U;break;case oz+uz:b=c.Ha.U;break;case Hz:b=A(c)}}}return b};
+function Jz(a,b){b=fy(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.gh(b,c+1),0<=e&&(b=b.substr(0,c)+Xy(a,e)+b.substr(c+1+Wy[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=oa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Qy(a,e))?(d=e+' "'+wy(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Qy(a,e))?(Ly(a,d),
+d=e+' "'+wy(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+Gy(iy(this,A(this.H),this.H.Z.U))+" (%"+q(this.H.da)+")");this.za&&a==this.za||(this.za=a,this.ic&-2147483648&&(this.Jb(),a+=" (cpu halted)"),this.P(a),this.H&&(a=this.H,a.zc-=a.A,a.A=0,a.T.Ve=0,Bd(a)))};
+function Vk(a,b,c,d){var e,f;if(!d&&(d=t(a,1)&&0>Kz.indexOf(b),!d)){var g=Lz[b];g&&(d=t(a,g)?!0:524288==g&&t(a,g=1048576))}d&&(e=a.H.D>>8&255,f=a.H.L&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Qb[b])&&g[e]||"")&&(g=" "+Jz(a,g)),a.message("INT "+r(b)+": AH="+r(e)+" at "+vy(c-2-a.H.Z.ua,a.H.Z.U)+g));return d}
+function Mb(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.ic&h)==h)h=null,null!=e&&(h=a.H.Z.U,e-=a.H.Z.ua),a.message(b.be+"."+(null!=d?"outPort":"inPort")+"("+sa(c)+","+(f?f:"unknown")+(null!=d?","+r(d):"")+")"+(null!=g?": "+r(g):"")+(null!=e?" at "+vy(e,h):""))}l.ih=function(){this.P("Type ? for help with PCx86 Debugger commands");Mz(this);if(this.Ga){var a=this.Ga;this.Ga=null;my(this,a)}};
+function ky(a,b){var c;if(Ig(a)){if(!a.O||!a.O.length){a.O=Array(Nz);for(c=0;c>>f.hb].Gd(e&f.Db,a==this.N);g&&sc(f)}}d&&(a.push(b),c?(null!=b.ya&&(b.U=null),b.Jd=!0):(Uz(this,a,a.length-1,"set"),ky(this)));return d};
+function Fy(a,b,c,d,e){for(var f=!1,g=Vz(a,a.Sb(c)),h=1;h>3&7,E=(3>(g>>6&3)?0:48)+u;(217==f||219==f)&&52<=E&&(E=u<<4|g&7);(u=cA[f])&&(v=u[E]);v&&(p=dA,k=v,m=k[0])}m>=p.length&&(g=a.Ia(b,1),k=eA[m-p.length][g>>3&7],m=k[0]);p=p[m];u=k.length-1;v="";b.Hb&&(m==fA?
+p="CWDE":m==gA?p="CDQ":m>=hA&&m<=iA&&(p+="D"));if(164<=f&&167>=f||170<=f&&175>=f)u=0,b.Hb&&"W"==p.slice(-1)&&(p=p.slice(0,-1)+"D");for(var f=-1,E=!0,K=1;K<=u;K++){var H,I;H="";I=k[K];if(void 0!==I){0>f&&(f=I>>jA);m==kA&&(f==lA?v="[%800]":f==mA&&(v="ES:["+(b.dc?"E":"")+"DI]"));var T=I&nA;if(T!=oA)if(T==pA)E=!1;else{var L=I&qA;if(L>=R)if(0>g&&(g=a.Ia(b,1)),L>6,za=g&7;if(3>xb){T=!p.indexOf("FI");if(!xb&&(!I.dc&&6==za||I.dc&&5==za))xb=2;else{if(I.dc)if(4!=za)za+=
+8;else{var ca=L,cb=xb,Sa=I,rb=ca.Ia(Sa,1),db=rb>>6,rc=rb>>3&7,rb=rb&7,ib="";if(cb||5!=rb)ib=sA[rb+8];4!=rc&&(ib&&(ib+="+"),ib+=sA[rc+8],db&&(ib+="*"+(1<>24),2)):ca+("+"+q(L,2))):2==xb&&(ca&&(ca+="+"),I.dc?(L=Cy(L,I,4),ca+=q(L)):(L=L.Yc(I,2),ca+=q(L,4)));ca="["+ca+"]";if(1==ua){L="";H&=nA;H==S&&(H=I.Hb?tA:U);switch(H){case uA:L="FAR";break;case V:L="BYTE";break;case U:if(T){L="INT16";
+break}L="WORD";break;case tA:L="DWORD";break;case vA:if(T){L="INT32";break}case wA:L="REAL32";break;case xA:if(T){L="INT64";break}case yA:L="REAL64";break;case zA:L="REAL80";break;case AA:L="BCD80"}L&&(ca=L+" "+ca)}}else ca=BA(L,za,H,I);H=ca}else H=L==rA?BA(a,g&7,I,b):BA(a,g>>3&7,I,b);else if(L==CA)H="1";else if(L==W){H=a;T=I;L=b;I=" ";switch(T&nA){case V:T&X&&(I=q(H.Ia(L,1),2));break;case DA:I=q(H.Ia(L,1)<<24>>24,L.Hb?8:4);break;case S:if(L.Hb){I=q(Cy(H,L,4));break}case U:I=q(H.Yc(L,2),4);break;
+case uA:L=iy(H,H.jb(L,!0),H.Yc(L,2),null,L.type,L.Hb,L.dc);I=Gy(L);H=EA(H,L);H[0]&&(I+=" ("+H[0]+")");break;default:I="imm("+sa(T)+")"}H=I}else L==FA?(b.dc?(H=8,I=Cy(a,b,4)):(H=4,I=a.Yc(b,2)),H="["+q(I,H)+"]"):L==GA?(H=T==V?a.Ia(b,1)<<24>>24:a.jb(b,!0),I=b.Ja+H&(b.Hb?-1:65535),H=q(I,b.Hb?8:4),I=EA(a,iy(a,I,b.U)),I[0]&&(H+=" ("+I[0]+")")):L==Y?H=T==HA?"ST":T==IA?"ST("+(g&7)+")":BA(a,(I&JA)>>8,I,b):L==KA?H=BA(a,(I&JA)>>8,LA,b):L==MA?H="DS:[SI]":L==NA&&(H="ES:[DI]");if(!H||!H.length){v="INVALID";break}0<
+v.length&&(v+=",");v+=H||"???"}}}g="";k=Gy(e)+" ";if(-1!==e.ya&&-1!==b.ya){do if(g+=q(a.Ia(e,1),2),null==e.ya)break;while(e.ya!=b.ya)}k+=Aa(g,e.dc?24:16);k+=Aa(p,8);v&&(k+=" "+v);a.H.cauz||b>=tz&&80386>a.H.ca)return"??";b+=oz}else if(e==QA)b+=Dz;else if(e==RA)b+=SA;else if(e==TA)b+=UA;else if(a=c&nA,a>=U&&(b=fz&&b<=mz&&4a.H.ca&&(d="\n"+d,c+=e,e="");c+="\n"+XA(a,a.H.Z,b)+" ";80386<=a.H.ca&&(e+="\n",c+=XA(a,a.H.Ga,b)+" "+XA(a,a.H.Ha,b)+"\n");c+=YA(a,"LD",a.H.Eb.U,a.H.Eb.ua,a.H.Eb.ua+a.H.Eb.Ka)+" "+YA(a,"GD",null,a.H.Kb,a.H.Pc)+" "+YA(a,"ID",
+null,a.H.Pb,a.H.cd)+" ";c=c+(d+" "+e)+WA(a,Dz);80386<=a.H.ca&&(c+=WA(a,Fz)+WA(a,Gz))}else 80386<=a.H.ca&&(c+=XA(a,a.H.Ga,b)+" "+XA(a,a.H.Ha,b)+" ");return c+=WA(a,Iz)+VA(a,"V")+VA(a,"D")+VA(a,"I")+VA(a,"T")+VA(a,"S")+VA(a,"Z")+VA(a,"A")+VA(a,"P")+VA(a,"C")}l.gj=function(a,b){return a[0]>b[0]?1:a[0]>>0,p],H=Da(E,u,a.gj);0>H&&E.splice(-(H+1),0,u)}K&&(v.a=K.replace(/''/g,'"'))}a.D.push({Rf:b,pn:c,U:d,Ja:e,ya:f,en:g,Fd:h,Pi:m})}
-function Dy(a,b,c){for(var d=0;d>>0,f=a.Sb(b)>>>0,g=0;g>>0,p=h.ya;null!=p&&(p>>>=0);var v=h.en;48==k&&(k=40);if(k==b.U&&e>=m&&e=p&&fc?(a.P("out of data at address "+Fy(b)),p=!0):(a.fc(b,c,1,!0),m++)})})(a,g);Bd(a.H,
+function Ey(a,b,c){for(var d=0;d>>0,f=a.Sb(b)>>>0,g=0;g>>0,p=h.ya;null!=p&&(p>>>=0);var v=h.en;48==k&&(k=40);if(k==b.U&&e>=m&&e=p&&fc?(a.P("out of data at address "+Gy(b)),p=!0):(a.fc(b,c,1,!0),m++)})})(a,g);Bd(a.H,
 !0);a.P(m+" bytes read at "+b)}else a.P("sector "+e+" request out of range");else a.P("drive "+d+" not loaded");else a.P("invalid drive: "+d)}else a.P("disk controller not present")}}else a.P("load commands:"),a.P("\tl [address] [drive #] [sector #] [# sectors]")}
-function Pz(a,b){var c;if(b&&"?"==b[1])a.P("register commands:"),a.P("\tr\tdump registers"),a.Tc&&a.P("\trfp\tdump floating-point registers"),a.P("\trp\tdump all registers"),a.P("\trx [#]\tset flag or register x to [#]");else{var d;null==c&&(c=!0);if(b&&1f;f++){var g=c,e=null;if(f=a.ta&&(h=null);switch(h){case "AL":a.H.D=
+function Qz(a,b){var c;if(b&&"?"==b[1])a.P("register commands:"),a.P("\tr\tdump registers"),a.Tc&&a.P("\trfp\tdump floating-point registers"),a.P("\trp\tdump all registers"),a.P("\trx [#]\tset flag or register x to [#]");else{var d;null==c&&(c=!0);if(b&&1f;f++){var g=c,e=null;if(f=a.ta&&(h=null);switch(h){case "AL":a.H.D=
 a.H.D&-256|g&255;break;case "AH":a.H.D=a.H.D&-65281|g<<8&255;break;case "AX":a.H.D=a.H.D&-65536|g&65535;break;case "BL":a.H.G=a.H.G&-256|g&255;break;case "BH":a.H.G=a.H.G&-65281|g<<8&255;break;case "BX":a.H.G=a.H.G&-65536|g&65535;break;case "CL":a.H.I=a.H.I&-256|g&255;break;case "CH":a.H.I=a.H.I&-65281|g<<8&255;break;case "CX":a.H.I=a.H.I&-65536|g&65535;break;case "DL":a.H.L=a.H.L&-256|g&255;break;case "DH":a.H.L=a.H.L&-65281|g<<8&255;break;case "DX":a.H.L=a.H.L&-65536|g&65535;break;case "SP":ge(a.H,
-z(a.H)&-65536|g&65535);break;case "BP":a.H.M=a.H.M&-65536|g&65535;break;case "SI":a.H.K=a.H.K&-65536|g&65535;break;case "DI":a.H.J=a.H.J&-65536|g&65535;break;case "DS":me(a.H,g);break;case "ES":ne(a.H,g);break;case "SS":fe(a.H,g);break;case "CS":Yf(a.H,g);a.L=hy(a,A(a.H),a.H.Z.U);break;case "IP":case "EIP":C(a.H,g);a.L=hy(a,A(a.H),a.H.Z.U);break;case "PC":case "PS":re(a.H,g);break;case "C":g?jg(a.H):kg(a.H);break;case "P":g?(e=a.H,e.resultType&=-3,e.O|=4):(e=a.H,e.resultType&=-3,e.O&=-5);break;case "A":g?
+z(a.H)&-65536|g&65535);break;case "BP":a.H.M=a.H.M&-65536|g&65535;break;case "SI":a.H.K=a.H.K&-65536|g&65535;break;case "DI":a.H.J=a.H.J&-65536|g&65535;break;case "DS":me(a.H,g);break;case "ES":ne(a.H,g);break;case "SS":fe(a.H,g);break;case "CS":Yf(a.H,g);a.L=iy(a,A(a.H),a.H.Z.U);break;case "IP":case "EIP":C(a.H,g);a.L=iy(a,A(a.H),a.H.Z.U);break;case "PC":case "PS":re(a.H,g);break;case "C":g?jg(a.H):kg(a.H);break;case "P":g?(e=a.H,e.resultType&=-3,e.O|=4):(e=a.H,e.resultType&=-3,e.O&=-5);break;case "A":g?
 rg(a.H):pg(a.H);break;case "Z":g?sg(a.H):qg(a.H);break;case "S":g?(e=a.H,e.resultType&=-17,e.O|=128):(e=a.H,e.resultType&=-17,e.O&=-129);break;case "I":g?(e=a.H,e.O|=512):(e=a.H,e.O&=-513);break;case "D":g?(e=a.H,e.O|=1024):(e=a.H,e.O&=-1025);break;case "V":g?lg(a.H):mg(a.H);break;default:var k=!0;if(80286<=a.H.ca)switch(k=!1,h){case "MS":tg(a.H,g);break;case "TR":-1===a.H.la.load(g)&&(f=!1);break;default:if(k=!0,80386<=a.H.ca)switch(k=!1,h){case "EAX":a.H.D=g;break;case "EBX":a.H.G=g;break;case "ECX":a.H.I=
-g;break;case "EDX":a.H.L=g;break;case "ESP":ge(a.H,g);break;case "EBP":a.H.M=g;break;case "ESI":a.H.K=g;break;case "EDI":a.H.J=g;break;case "FS":a.H.Ga.load(g);break;case "GS":a.H.Ha.load(g);break;case "CR0":a.H.qa=g;ak.call(a.H,g);break;case "CR2":a.H.Cd=g;break;case "CR3":a.H.Wc=g;te.call(a.H,g);break;default:k=!0}}if(k){a.P("unknown register: "+e);return}}if(!f){a.P("invalid value: "+b);return}Bd(a.H);a.P("updated registers:")}}a.P(YA(a,d));c&&(a.L=hy(a,A(a.H),a.H.Z.U),Qz(a,Fy(a.L)))}}
-function fB(a,b){b=Ba(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.P(Iz(a,c[2])):cy(a,b,!1)}function gB(a,b,c){for(var d=null,e=b.Ja,f=e,g=1;6>=g&&e;g++){if(2h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.P(m)}h[3]&&(g=h[3],f=null);f=Xz(a,b,g,f);b.bh||d||d++;a.P(f);a.L=b;e-=b.ya-k;c++}}}
+g;break;case "EDX":a.H.L=g;break;case "ESP":ge(a.H,g);break;case "EBP":a.H.M=g;break;case "ESI":a.H.K=g;break;case "EDI":a.H.J=g;break;case "FS":a.H.Ga.load(g);break;case "GS":a.H.Ha.load(g);break;case "CR0":a.H.qa=g;ak.call(a.H,g);break;case "CR2":a.H.Cd=g;break;case "CR3":a.H.Wc=g;te.call(a.H,g);break;default:k=!0}}if(k){a.P("unknown register: "+e);return}}if(!f){a.P("invalid value: "+b);return}Bd(a.H);a.P("updated registers:")}}a.P(ZA(a,d));c&&(a.L=iy(a,A(a.H),a.H.Z.U),Rz(a,Gy(a.L)))}}
+function gB(a,b){b=Ba(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.P(Jz(a,c[2])):dy(a,b,!1)}function hB(a,b,c){for(var d=null,e=b.Ja,f=e,g=1;6>=g&&e;g++){if(2h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.P(m)}h[3]&&(g=h[3],f=null);f=Yz(a,b,g,f);b.bh||d||d++;a.P(f);a.L=b;e-=b.ya-k;c++}}}
 l.Cg=function(a,b,c){if(b)if(a){0>this.A&&this.C.length&&(this.A=0);if(0>this.A||a!=this.C[this.A])this.C.splice(0,0,a),this.A=0;this.A--}else a=this.C[this.A+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ba(a.substring(d,f))),d=f+1}}return b};
-function Wz(a,b,c){var d=!0;try{if(!b.length||"end"==b)a.da&&(a.P("ended assemble at "+Fy(a.aa)),a.L=a.aa,a.da=!1),b="";else if(!c){var e=">> ";a.H.qa&1&&(e=a.H.O&131072?"-- ":"## ");a.P(e+b)}var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.za=null;if(Gb(a)&&0p||"z">>20;Qa.Ti=a.H.Wc+Qa.Jk;Qa.ob=qf.aa[(Qa.Ti&qf.C)>>>qf.A];Qa.Aj=Qa.ob.Nd(Qa.Jk);Qa.Kk=(Qg&4190208)>>>10;Qa.Ui=(Qa.Aj&-4096)+Qa.Kk;Qa.pb=qf.aa[(Qa.Ui&qf.C)>>>qf.A];Qa.Bj=Qa.pb.Nd(Qa.Kk);Qa.ul=(Qa.Bj&-4096)+(Qg&4095)}if(pf=Qa){a.P("linear     PDE addr   PDE             PTE addr   PTE             physical");a.P("---------  ---------- --------        ---------- --------        ----------");var ve="%"+q(Qg),ve=ve+("  %%"+Uy(pf.Ti,pf.Aj)),ve=
-ve+("  %%"+Uy(pf.Ui,pf.Bj,!0)),ve=ve+("  %%"+q(pf.ul));a.P(ve)}else a.P("unsupported operation")}}else a.P("missing address")}else{if("d"==za){if("disk"==cb){ca[0]="l";ca[1]="json";dB(a,ca);break a}for(xb in Rb)if(ca[1]==xb){var wt=a.Ba[xb];wt?(ca.shift(),ca.shift(),wt(ca)):a.P("no dump registered for "+cb);break a}cb||(za=a.lb||"db")}else a.lb=za;if("dh"==za){var xt=cb,yt=Sa,zt="",At=0,Lc=a.ma,jd=a.O;if(jd.length){var uc=+xt||a.Ya,Rg=+yt||10;isNaN(uc)?uc=Rg:zt="more ";uc>jd.length&&(a.P("note: only "+
-jd.length+" available"),uc=jd.length);Lc-=uc;0>Lc&&(null==jd[jd.length-1].U?(uc=Lc+uc,Lc=0):Lc+=jd.length);var rm=[];"call"==yt&&(Rg=1E5,rm=["CALL"]);for(void 0!==xt&&a.P(uc+" instructions earlier:");0=jd.length&&(Lc=0);a.Ya=uc;At++;Rg--}}At||(a.P("no "+zt+"history available"),a.Ya=
-void 0)}else if("di"==za){ca.shift();var sm=ca[0];if(sm){var Tg=Zx(a,sm);if(void 0===Tg||0>Tg||255>>0,65536>4||1;aC--&&0Zi?String.fromCharCode(Zi):".";Yi--}Ug&&(Ug+="\n");Ug+=cb+"  "+um+(Wg?"":" "+Gt)}Ug&&a.P(Ug);a.Ta=rf}}}}}break;case "e":if("else"==g[0])break;var $i=
-1,Ht=255,It=a.Ia,Jt=a.fc;"ew"==g[0]&&($i=2,Ht=65535,It=a.Yc,Jt=a.il);var Kt=$i<<1,Lt=g[1];if(null==Lt)a.P("edit memory commands:"),a.P("\teb [a] [...]  edit bytes at address a"),a.P("\tew [a] [...]  edit words at address a");else{var aj=Py(a,Lt);if(aj)for(var bj=2;bjAm;){for(var kd=null,fC=256;Sd.Ja>>>0>>0;){Zg.Ja=a.jb(Sd,!0);if(null==Sd.ya||!fC--)break;Zg.U=Nt;if(kd=gB(a,Zg))break;Zg.U=a.jb(Sd);if(kd=gB(a,Zg,!0)){Nt=a.jb(Sd,!0);0p||"z">>20;Qa.Ti=a.H.Wc+Qa.Jk;Qa.ob=qf.aa[(Qa.Ti&qf.C)>>>qf.A];Qa.Aj=Qa.ob.Nd(Qa.Jk);Qa.Kk=(Qg&4190208)>>>10;Qa.Ui=(Qa.Aj&-4096)+Qa.Kk;Qa.pb=qf.aa[(Qa.Ui&qf.C)>>>qf.A];Qa.Bj=Qa.pb.Nd(Qa.Kk);Qa.ul=(Qa.Bj&-4096)+(Qg&4095)}if(pf=Qa){a.P("linear     PDE addr   PDE             PTE addr   PTE             physical");a.P("---------  ---------- --------        ---------- --------        ----------");var ve="%"+q(Qg),ve=ve+("  %%"+Vy(pf.Ti,pf.Aj)),ve=
+ve+("  %%"+Vy(pf.Ui,pf.Bj,!0)),ve=ve+("  %%"+q(pf.ul));a.P(ve)}else a.P("unsupported operation")}}else a.P("missing address")}else{if("d"==za){if("disk"==cb){ca[0]="l";ca[1]="json";eB(a,ca);break a}for(xb in Rb)if(ca[1]==xb){var vt=a.Ba[xb];vt?(ca.shift(),ca.shift(),vt(ca)):a.P("no dump registered for "+cb);break a}cb||(za=a.lb||"db")}else a.lb=za;if("dh"==za){var wt=cb,xt=Sa,yt="",zt=0,Lc=a.oa,jd=a.O;if(jd.length){var uc=+wt||a.Ya,Rg=+xt||10;isNaN(uc)?uc=Rg:yt="more ";uc>jd.length&&(a.P("note: only "+
+jd.length+" available"),uc=jd.length);Lc-=uc;0>Lc&&(null==jd[jd.length-1].U?(uc=Lc+uc,Lc=0):Lc+=jd.length);var rm=[];"call"==xt&&(Rg=1E5,rm=["CALL"]);for(void 0!==wt&&a.P(uc+" instructions earlier:");0=jd.length&&(Lc=0);a.Ya=uc;zt++;Rg--}}zt||(a.P("no "+yt+"history available"),a.Ya=
+void 0)}else if("di"==za){ca.shift();var sm=ca[0];if(sm){var Tg=Zx(a,sm);if(void 0===Tg||0>Tg||255>>0,65536>4||1;bC--&&0Zi?String.fromCharCode(Zi):".";Yi--}Ug&&(Ug+="\n");Ug+=cb+"  "+um+(Wg?"":" "+Ft)}Ug&&a.P(Ug);a.Ta=rf}}}}}break;case "e":if("else"==g[0])break;var $i=
+1,Gt=255,Ht=a.Ia,It=a.fc;"ew"==g[0]&&($i=2,Gt=65535,Ht=a.Yc,It=a.il);var Jt=$i<<1,Kt=g[1];if(null==Kt)a.P("edit memory commands:"),a.P("\teb [a] [...]  edit bytes at address a"),a.P("\tew [a] [...]  edit words at address a");else{var aj=Qy(a,Kt);if(aj)for(var bj=2;bjAm;){for(var kd=null,gC=256;Sd.Ja>>>0>>0;){Zg.Ja=a.jb(Sd,!0);if(null==Sd.ya||!gC--)break;Zg.U=Mt;if(kd=hB(a,Zg))break;Zg.U=a.jb(Sd);if(kd=hB(a,Zg,!0)){Mt=a.jb(Sd,!0);0\nLicense: GPL version 3 or later ");for(b=0;bDB){if(d.load(this.L)){this.F=new Wf(this,"1.34.3",NB);this.F.load()&&(OB(this,d),a=PB,QB(this.F));this.F.set(KB,Ea());RB(this.F);var e=this.A&&!this.I;if(a==LB||qb("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=JB(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
-g?(this.Fa("Error: "+g),"unable to verify user"==g&&(Ra(SB,""),this.B=null)):this.P(f+": "+g),QB(d),d.load()?(c=JB(d),e=!0):c=!1))}e&&HB(this,c?d:null)}else a==PB&&d.clear()}else HB(this);delete this.L;delete this.M}e=sb(this.id);for(f=0;fa[1];a=a[2];this.ga=!0;this.ea.Yb=!0;var d=this.na.power;d&&(d.textContent="Shutdown");this.H&&(TB(this,this.H,b,c,a),this.H.lf());this.Y&&(OB(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0};
-function OB(a,b){if(qb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.34.3"};d.url=a.da;d.user=c;d.type="bug";d.data=b;Ka("http://www.pcjs.org/api/v1/report",d,!0)}}
-function iB(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Wf(a,"1.34.3"),g=new Wf(a,"1.34.3",IB),h=Ea();g.set(KB,h);f.set(KB,h);f.set(UB,"1.34.3");f.set(VB,window?window.location.href:null);f.set(WB,Ma());a.H&&a.H.Wb&&(c&&a.H.Jb(),d=a.H.Wb(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.ea.Yb=!1,!1===d&&(e=null)));for(var h=sb(a.id),k=0;k\nLicense: GPL version 3 or later ");for(b=0;bEB){if(d.load(this.L)){this.F=new Wf(this,"1.34.3",OB);this.F.load()&&(PB(this,d),a=QB,RB(this.F));this.F.set(LB,Ea());SB(this.F);var e=this.A&&!this.I;if(a==MB||qb("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=KB(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
+g?(this.Fa("Error: "+g),"unable to verify user"==g&&(Ra(TB,""),this.B=null)):this.P(f+": "+g),RB(d),d.load()?(c=KB(d),e=!0):c=!1))}e&&IB(this,c?d:null)}else a==QB&&d.clear()}else IB(this);delete this.L;delete this.M}e=sb(this.id);for(f=0;fa[1];a=a[2];this.ga=!0;this.ea.Yb=!0;var d=this.na.power;d&&(d.textContent="Shutdown");this.H&&(UB(this,this.H,b,c,a),this.H.lf());this.Y&&(PB(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0};
+function PB(a,b){if(qb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.34.3"};d.url=a.da;d.user=c;d.type="bug";d.data=b;Ka("http://www.pcjs.org/api/v1/report",d,!0)}}
+function jB(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Wf(a,"1.34.3"),g=new Wf(a,"1.34.3",JB),h=Ea();g.set(LB,h);f.set(LB,h);f.set(VB,"1.34.3");f.set(WB,window?window.location.href:null);f.set(XB,Ma());a.H&&a.H.Wb&&(c&&a.H.Jb(),d=a.H.Wb(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.ea.Yb=!1,!1===d&&(e=null)));for(var h=sb(a.id),k=0;k>>b.A;d=d+e-1>>>b.A;c.ah=0;for(c.Hd=0;f<=d;)e=b.aa[f],c.ah+=e.size,e.size&&(c.Rg.push(Fa(bc,f,0,0,e.type)),c.Hd++),f++;a.A=c;a.da=a.A.Hd*a.ka.B/(ac*kc);d=0;a.A.$i=0;a.A.kf||(a.A.kf=[]);e=-1;b=0;for(var g=-1,c=0;c>1),g=f.y+(f.A>>1),h=f.A,f.Nc>1,b.I+=(b.J>>1)-2,hc(b,e),b.Y&&(b.D.restore(),b.Y=!1)}}else hc(a,"This space intentionally left blank");a.context.drawImage(a.K,0,0,a.K.width,a.K.height,a.Ga,a.Ma,a.xa,a.Aa);a.oa=!1}}var NB="failsafe",IB="validate",KB="timestamp",UB="version",VB="url",WB="browser",SB="user",MB=-1,DB=0,LB=1,PB=2,YB=3;
-$a(function(){for(var a=zb(document,"pcx86-machine"),b=0;bf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PCx86$2"),
-a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ka(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
-"");a=a.replace(d[0],g);oC(a,b,c)}})}else c(a,null)}
-function pC(a,b,c,d){function e(a){if(void 0===h){var b=g&&zb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=xa(a))}function f(a){e("Error: "+a);k&&(--lC||hb(!0));k=!1}var g,h,k=!0;lC++;pb[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c||
-(c="/versions/pcx86/1.34.3/components.xsl");m=function(d,h){h?mC(c,null,null,!1,e,function(d,k){k?(ob(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--lC||hb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--lC||hb(!0)):f("invalid machine element: "+
-a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?mC(b,a,d,!0,e,m):nC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function qC(a,b,c,d){hb(!1);return pC(a,b,c,d)}window.embedPC=qC;window.embedPCx86=qC;window.findMachineComponent=function(a,b){return ub(b,a+".machine")};
+g),b.D.rotate(-Math.PI/2),c=g=0),h>1,b.I+=(b.J>>1)-2,hc(b,e),b.Y&&(b.D.restore(),b.Y=!1)}}else hc(a,"This space intentionally left blank");a.context.drawImage(a.K,0,0,a.K.width,a.K.height,a.Ga,a.Ma,a.xa,a.Aa);a.oa=!1}}var OB="failsafe",JB="validate",LB="timestamp",VB="version",WB="url",XB="browser",TB="user",NB=-1,EB=0,MB=1,QB=2,ZB=3;
+$a(function(){for(var a=zb(document,"pcx86-machine"),b=0;bf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PCx86$2"),
+a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ka(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
+"");a=a.replace(d[0],g);pC(a,b,c)}})}else c(a,null)}
+function qC(a,b,c,d){function e(a){if(void 0===h){var b=g&&zb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=xa(a))}function f(a){e("Error: "+a);k&&(--mC||hb(!0));k=!1}var g,h,k=!0;mC++;pb[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c||
+(c="/versions/pcx86/1.34.3/components.xsl");m=function(d,h){h?nC(c,null,null,!1,e,function(d,k){k?(ob(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--mC||hb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--mC||hb(!0)):f("invalid machine element: "+
+a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?nC(b,a,d,!0,e,m):oC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function rC(a,b,c,d){hb(!1);return qC(a,b,c,d)}window.embedPC=rC;window.embedPCx86=rC;window.findMachineComponent=function(a,b){return ub(b,a+".machine")};
 window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Bb[a]){for(var c=!0,d=Bb,e=a,f=b.length,g=[],h=[],k="",m=null,p=0;p]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=ta(m)}else"xsl"==v&&(e=m=ta(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
+function sC(a,b,c,d){if(!c&&b){d.push(b);a=pb[d[0]];b=null;for(var e in a)if(wa(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?Ka(b,null,!0,function(a,b){tC(b,d)}):tC(null,d)}else gb("Error ("+c+") requesting "+a)}
+function tC(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=pb[f],k={},m;for(m in h){var p=h[m],v=va(m);if("xml"==v){for(v=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=ta(m)}else"xsl"==v&&(e=m=ta(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
 "©"),a=Wa(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
\n')+"...\n",a=a+('