On Thu, May 12, 2022 at 8:07 AM Ron Natalie <ron@ronnatalie.com> wrote:
 
UNIX uses trap as a system call, RSTS (like most DEC OS's for some odd reason) uses EMT. 

That's pretty much what the processor documentation says (in various wordings depending on what manual you look at).  EMT is for the "system", TRAP is for the "user".  The intention, I think, was that a user-mode program could use TRAP for its own purposes, and the supervisor would keep track of the TRAP vector in low memory associated with a process.  Since Unix was a "user program", even though it ran in supervisor mode, the decision was made to use TRAP.

Each DEC OS used EMT in a different way.  Consequently, when the RSTS/E pseudo-hypervisor (it didn't provide full emulation) was written, hypervisor calls were performed with EMT 377 immediately followed by another EMT.  This was unlikely to occur in any user program (at minimum you'd have to set up the registers for the second call).  An EMT was acted on by the hypervisor only if it met these conditions (the second EMT was simply examined, not executed), otherwise it was vectored to the guest OS.  Similarly, RSX/11-M used only EMT 376 and EMT 377, neither of which were used by RT-11 user programs, making it possible to run a thin RT-11 emulator as a user program that EMTed into RSX to do its work.