- 2.13 Abort (ABORTB)
The Abort negative pulse active input is used to abort instructions (usually due to an Address Bus
condition). A negative transition will inhibit modification of any internal register during the current
instruction. Upon completion of this instruction, an interrupt sequence is initiated. The location of the
aborted opcode is stored as the return address in stack memory.
These seemingly-conflicting statements lead me to try to determine just what it is that an ABORTB interrupt is doing. Literally interpreted, it turns out that both of the above descriptions are only partially correct. The '816 doesn't "abort" an instruction in response to an ABORTB interrupt—all instructions are completed, even if ABORTB is toggled during the opcode fetch cycle. An ABORTB interrupt can be relied upon to prevent an instruction from modifying a register, assuming timing requirements are met. Whether memory would be modified is open to discovery, as the data sheet sheds no light on whether a memory access does occur despite the instruction having been "aborted."
However, my interpretation is that an ABORTB interrupt doesn't actually abort an instruction and thus cannot be expected to prevent an "aborted" instruction from changing the MPU's internal state, as would occur with the control instructions STP and WAI, neither of which modify a register or memory. Trying to empirically determine what would happen if ABORTB were toggled during the opcode fetch cycle of STP or WAI isn't possible on my POC hardware, so my suppositions are just that. If they are true, then my plan to set up virtual privileged instructions by using a CPLD to read the data bus during the opcode fetch cycle and toggle ABORTB if the opcode is not allowed isn't going to work as expected.