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