diff --git a/devices/pdp11/machine/1170/panel/debugger/xxdp/machine.xml b/devices/pdp11/machine/1170/panel/debugger/xxdp/machine.xml
index fe323452f..3cb0f9e70 100644
--- a/devices/pdp11/machine/1170/panel/debugger/xxdp/machine.xml
+++ b/devices/pdp11/machine/1170/panel/debugger/xxdp/machine.xml
@@ -9,7 +9,7 @@
-
+
diff --git a/disks/dec/rl02k/xxdp/ekbee1/README.md b/disks/dec/rl02k/xxdp/ekbee1/README.md
index d44ff1ac7..fb7e763a4 100644
--- a/disks/dec/rl02k/xxdp/ekbee1/README.md
+++ b/disks/dec/rl02k/xxdp/ekbee1/README.md
@@ -7,17 +7,19 @@ permalink: /disks/dec/rl02k/xxdp/ekbee1/
EKBEE1: 11/70 MEMORY MANAGEMENT DIAGNOSTIC
------------------------------------------
-From the [PDP-11 Diagnostic Handbook (1988)](http://archive.pcjs.org/pubs/dec/pdp11/diags/PDP11_DiagnosticHandbook_1988.pdf),
+From the
+[PDP-11 Diagnostic Handbook (1988)](http://archive.pcjs.org/pubs/dec/pdp11/diags/PDP11_DiagnosticHandbook_1988.pdf),
p. 1-10:
11/70 MEMORY MANAGEMENT TEST
ABSTRACT:
- This program was designed using a "BOTTOM UP" approach starting with the smallest segment of MEMORY MANAGEMMENT
- logic and building up to cover all the logic. The program begins by testing some of the internal CPU data and
- address path and address detection logic, then works outward through the MEM. MANAGEMENT registers. It is assumed
- that both the CPU and the CACHE have been tested, or are known to be good.
+ This program was designed using a "BOTTOM UP" approach starting with the smallest segment of MEMORY
+ MANAGEMENT logic and building up to cover all the logic. The program begins by testing some of the
+ internal CPU data and address path and address detection logic, then works outward through the MEM.
+ MANAGEMENT registers. It is assumed that both the CPU and the CACHE have been tested, or are known
+ to be good.
OPERATING PROCEDURES:
Set the switch register by
@@ -65,4 +67,5 @@ the PDF (p. 199 of the source code listing):
;* NEXM TRAP. IF THIS IS A KB11-E/EM THEN THIS FEATURE IS TESTED.
;****************************************************************
-
+As noted in the *mapVirtualToPhysical()* function in [cpustate.js](/modules/pdp11/lib/cpustate.js), this test
+begins at PC 076060.
diff --git a/modules/pdp11/lib/cpustate.js b/modules/pdp11/lib/cpustate.js
index 0f3cef429..d4b89da9f 100644
--- a/modules/pdp11/lib/cpustate.js
+++ b/modules/pdp11/lib/cpustate.js
@@ -1574,11 +1574,22 @@ CPUStatePDP11.prototype.mapVirtualToPhysical = function(virtualAddress, access)
* As an aside it turns out that it is the memory management unit that does odd address and
* non-existent memory trapping: who knew? :-) I thought these would have been handled at access time.
*
- * I haven't imported the non-existent memory checks he performed (yet); I would like to see the problems
- * in action first.
+ * TEST #122 ("KT BEND") in the "EKBEE1" diagnostic (PC 076060) triggers an ODDADDR error using this
+ * instruction:
*
- * As for the ODDADDR error that's supposed to generate a BUS error rather than an MMU error, this happens
- * in TEST #122 ("KT BEND") in the "EKBEE1" diagnostic (PC 076456).
+ * 076356: 005037 140001 CLR @#140001
+ *
+ * and it expects that instruction to generate a BUS error rather than an MMU error, so we deal with that
+ * next. However, the test also claims to check for an NEXM (non-existent memory) error, using this
+ * instruction:
+ *
+ * 076170: 005037 140100 CLR @#140100
+ *
+ * but that error never materializes, so I've NOT included any NEXM checks yet. I assume that any such
+ * checks would be limited to whatever's recorded in the Memory Size registers (177760), because actually
+ * checking every physical address at this stage -- even in a real MMU -- seems prohibitively expensive.
+ *
+ * TODO: Investigate why the test's NEXM error doesn't occur.
*/
if ((physicalAddress & 0x1) && !(access & PDP11.ACCESS.BYTE)) {
this.regErr |= PDP11.CPUERR.ODDADDR;