On 2023-03-12 21:39, Thomas DeBellis wrote:
Hum, I don't think I ever knew that.
The problem is that there is an interrupt inhibit flip flop, which gets
turned on at the CIF, and turned off again at the next JMP or JMS, at
which time the CIF actually takes effect.
However, if you have timesharing on, the CIF is actually trapped, and
you can then map to whatever instruction field you in reality want the
user to use. However, in the user context, that CIF is not supposed to
happen until the next JMP or JMS, so all the code between the CIF and
the JMP or JMS will have to be run in emulation, since you cannot
control that interrupt inhibit flip flop explicitly.
What I do remember is being puzzled about how you
would implement code
in ROM because clearly a JMS won't work. One assumes that this isone
reason the equivalent PDP-10 instruction (JSR) eventually became less
used. I think some version of FOROTS still supported that calling
interface. You can also use it in ALGOL for external calls to
separately linked FOROTS subroutines, I think.
The 8/A did in fact have ROM code and capability. The way it is done is
that RAM have 13 bits, and is located at the same address as the ROM.
And if you write to memory, the 13th bit is used to indicate this, and
then the RAM takes over from the ROM for that address.
What's interesting to me is that, to this day, the
IBM 390 ISA still
doesn't have a stack instruction. Just like the PDP-8.
A bit surprising that it hasn't been added, yes.
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol