PDP-11 floating CSRs: 760010, or 760100?

Paul Koning paulkoning at comcast.net
Sun Mar 18 15:34:02 CDT 2018



> On Mar 17, 2018, at 10:10 PM, Fritz Mueller via cctalk <cctalk at classiccmp.org> wrote:
> 
> 
>> On Mar 17, 2018, at 6:57 PM, Fritz Mueller <fritzm at fritzm.org> wrote:
>> 
>> I have a question about floating CSR allocation on PDP-11s.  Both the 1976 and 1981 versions of the PDP-11 peripherals handbook indicate the floating CSRs are to be allocated starting at address 760010.  However, both the XXDP FLOAT program and simh's autoconfig suggest I should set my DZ11 (first floating CSR device in my config) to 760100.  Anyone know what gives?
> 
> Ah, I found the answer in the DZ11 technical manual: gaps are left for between each device type that gets a floating CSR.  So for one DZ11, you get:
> 
> gap 160010 (no DJ11s)
> gap 160020 (no DH11s)
> gap 160030 (no DQ11s)
> gap 160040 (no DU11s)
> gap 160050 (no DUP11s)
> gap 160060 (no LK11s)
> gap 160070 (no DMC11s)
> DZ11 160100

Yes, and this is spelled out in the Peripherals handbook where the float rules are stated.  Note that for each device there is a position in the float list, and also a register block size.  The start address is a multiple of that block size (for example, for DH11 that is 20 octal, so DH11 addresses might be 160020 or 160060, but not 160050.  After the CSRs for each device there is a gap; that gap appears even if there are zero of that device.  This rule is necessary to tell the devices apart.  When scanning the bus, if the first address that responds on the Unibus is 160070, that is a DMC11.

Vectors are different: those are allocated starting at 300 without gaps.  The way this is done is that you'd scan the CSR address range to see what devices are there, then given that known list of devices you fill in the vector addresses.

	paul




More information about the cctech mailing list