Floating device address space
The floating device address space is a block of address space in the I/O page of the UNIBUS (and later the QBUS) used to hold the control registers of peripherals. Originally, each specific peripheral was assigned a fixed address for its registers; once the number of different device types became large, circa 1975, this was no longer feasible (or scalable), and the 'floating' approach was adopted instead.
In this, a block of address space (on the UNIBUS, from 0760010 to 0763776) is allocated for 'floating' devices. Within that block, devices are assigned in a fixed order, with all the devices of any type in a contiguous group. There is an empty minimum-sized group for each type of which there are no devices of that type present, and a gap between each group of devices (to mark the end of each group). (Each actual group must start on an address of the required modulus; e.g. if there is one DJ11 and one DH11, the DJ11 would be at 0760010, the 'end of DJ11s gap' would be at 0760020, the DH11 could not be at 0760030, but would have to be at 0760040.)
Floating devices, in assignment order:
It will be noticed that the types with an 'extra unit' annotation are all mass storage devices, generally disks. This probably means that the 'base' unit is assigned a fixed address, so that bootstraps do not have to contain the lengthy algorithm to deal with floating addresses in order to boot from them.
- PDP-11 Architecture Handbook (not online); 'Floating CSR Address Devices', in Appendix A
- peripherals handbook (1981-82) - Appendix D, 'Floating CSR Address Devices' (pg. 494 of the PDF]