On Mar 1, 2018, at 8:54 PM, Noel Chiappa via cctalk
<cctalk at classiccmp.org> wrote:
From: Charles Dickman
So if the I/O page is completely (all processor
modes) unmapped is
there any way to recover besides a power cycle? Does the RESET
instruction disable the MMU?
Interesting questions!
The CPU manuals don't say, about the RE$ET; I just tried it on the /23 I
happen to have next to my desktop, and yes, the RESET instruction does clear
bit 0 of SSR0.
Noel
Typically execution of the RESET instruction in a user program is treated
as a NOP when the MMU is enabled.
What generally occurs in most OS'es is that I/O Page is mapped and unmapped
dynamically
based on which mode is executing. Interrupts or user program traps cause a
context switch to kernel mode. When this occurs page registers with access
to the I/O page defined are activated. The interrupt or trap is serviced then the OS
returns
to running the user mode program. At this point a switch to back to a set of page
registers without
I/O mapping occurs.
There are OS'es that allow regular programs to map the I/O page, These are usually
special purpose solutions (RT11XM) or granted only to privileged users (RSX11, TSX+).
The effect of RESET to initialize the MMR0 (SSR0) register is documented in
the PDP11 Handbook 1979 or the J11 Programmers Reference. I could not find it in the
reference immediately below, much to my surprise.
Check out Chapter 1 in the KDJ11-A CPU Module User's Guide for an overview
of PDP11 memory management. This implementation was (mostly) backward compatible with
PDP-11 models having 22bit , 18bit or no memory management.
Jerry