1
0
mirror of https://github.com/wfjm/w11.git synced 2026-05-03 14:49:57 +00:00
Files
wfjm.w11/doc/w11a_diff_70_instruction_complete.md
2022-12-21 12:58:05 +01:00

23 lines
1.2 KiB
Markdown

## Known differences between w11a and KB11-C (11/70)
### `MMR0` instruction complete implementation differences
The 11/70 and 11/45 are the only PDP-11 processors that also support the
recovery of an MMU abort of a stack push during trap or interrupt processing.
To distinguish between an instruction and a trap processing abort, the
`MMR0` has a bit called `instruction completed`. It is set to 0
when an instruction is aborted and to 1 when a vector service flow is
aborted. The `MMR2` contains the vector address in the latter case.
w11 supports this feature, but has two implementation differences:
- the `instruction completed` flag is set and `MMR2` is loaded with the vector
address for _all_ vector flows. The 11/70 does this only for traps,
aborts and interrupts, but not for trap instructions (`BPT`, `IOT`,
`TRAP`, `EMT`).
- the w11 decrements the `SP` before each vector push, while the 11/70
decrements the `SP` twice before the 1st vector push. Therefore, after an
MMU abort of the 1st vector push, `MMR1` has `000336` on the w11 and `173366`
on the 11/70.
xxdp program `ekbee1` test 067 checks this `MMR1` response and has been
modified (see [patch](../tools/xxdp/ekbee1_patch_w11a.tcl)).