Version: Open SIMH V4.1-0, git commit c5d1f8c
Platform: macOS
Summary: set cpu noeae displays correctly in show config but does not prevent EAE Group 3 OPR instructions from executing
Reproduction (minimal, no OS/8 required):
set cpu noeae
show cpu
deposit 0200 7200
deposit 0201 7001
deposit 0202 7403
deposit 0203 7001
deposit 0204 7402
run 200
examine ac
Expected: AC = 0002 (7403 NOPped, second 7001 executes as IAC)
Actual: AC = 0001 (7403 executed as SCL, consumed operand word)
Root cause (from source): For EAE instructions that have no MQL/MQA bits — such as SCL (7403), MUY (7405), DVI (7407), NMI (7411), SHL (7413), etc. — the NOEAE check fires but is ineffective. reason = stop_inst (= 0 by default) followed by break exits the switch case without preventing execution, because reason = 0 allows the while loop to continue to the next instruction fetch rather than halting. The net effect is these instructions execute normally as if NOEAE were not set.
Also worth noting: MQL and MQA execute unconditionally before the NOEAE check, which means they always work regardless of the NOEAE setting. On real pre-/E hardware without the EAE board, these would be no-ops. Whether this is intentional modeling of PDP-8/E behavior (where MQ is always present) or an oversight is worth noting.
Version: Open SIMH V4.1-0, git commit c5d1f8c
Platform: macOS
Summary: set cpu noeae displays correctly in show config but does not prevent EAE Group 3 OPR instructions from executing
Reproduction (minimal, no OS/8 required):
Expected: AC = 0002 (7403 NOPped, second 7001 executes as IAC)
Actual: AC = 0001 (7403 executed as SCL, consumed operand word)
Root cause (from source): For EAE instructions that have no MQL/MQA bits — such as SCL (7403), MUY (7405), DVI (7407), NMI (7411), SHL (7413), etc. — the NOEAE check fires but is ineffective. reason = stop_inst (= 0 by default) followed by break exits the switch case without preventing execution, because reason = 0 allows the while loop to continue to the next instruction fetch rather than halting. The net effect is these instructions execute normally as if NOEAE were not set.
Also worth noting: MQL and MQA execute unconditionally before the NOEAE check, which means they always work regardless of the NOEAE setting. On real pre-/E hardware without the EAE board, these would be no-ops. Whether this is intentional modeling of PDP-8/E behavior (where MQ is always present) or an oversight is worth noting.