PDP-11 Overlays

Paul Koning paulkoning at comcast.net
Mon Sep 21 14:41:48 CDT 2015


> On Sep 21, 2015, at 3:14 PM, Jerome H. Fine <jhfinedp3k at compsys.to> wrote:
> 
> Recently, there have been a number of references to using
> overlays on the PDP-11.  There have also been strong suggestions
> that overlays were structured differently under the 3 operating
> systems:  RSTS/E, RSX-11 and RT-11.
> 
> Obviously, I understand how RT-11 overlays were set up, but
> for those readers who don't:
> 
> ROOT
> - contains overlay code subroutines and data tables
> - data used by more than one overlay
> 
> FIRST Overlay Region - size of the largest overlay in the region
> - one or more overlays and the data used by just that overlay
> 
> SECOND Overlay Region - size of the largest overlay in the region
> - one or more overlays and the data used by just that overlay
> 
> THIRD Overlay Region - size of the largest overlay in the region
> - one or more overlays and the data used by just that overlay
> 
> FREE  MEMORY
> 
> Any overlay could be called from any location.  About the only
> requirement was that the calling instruction code (specifically the
> code which followed the calling instruction) had to be in memory
> when the code returned from the overlay.  In practice, the usual
> protocol was that an overlay in a higher region was only called
> from a lower region or the root.
> 
> I understand that RSTS/E and RSX-11 were a bit more complex.
> Can anyone briefly summarize and also provide a link to the
> details in the appropriate manual if it is available on the internet?

RSTS has no specific structure of its own.  It provided both RT-11 and RSX emulation, and as a result would offer the structures from both of those, depending on which environment you chose for a particular application.

RSX uses a tree structure.  For details (lots of details) see the TKB manual.

Suppose you have main which calls o1.  o1 calls o2 which calls o3, and o1 also calls o5 which calls o6.  

In the RSX case, you could specify a tree with two branches: main to o1 and from there o2 to o3, and o5 to o6.  In the RT11 case, you might put o1 in region 1, o2 and o5 in region 2, and o3 and o6 in region 3.

The memory requirements would be:

	rt11: main + o1 + max (o2, o5) + max (o3, o6)
	rsx:  main + o1 + max (o2 + o3, o5 + o6)

If o2 and o6 are large while o3 and o5 are small, then the RSX case gives you a smaller memory footprint.

	paul



More information about the cctalk mailing list