Floating device vectors
Floating device vectors are a block of interrupt vectors in low main memory on the UNIBUS (and later the QBUS). Originally, each specific peripheral was assigned a fixed address for its vector(s); 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 vectors (from 0300 to 0776) 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. If a device type which has only one vector (4 bytes) has an odd number of devices, and is followed by a device type with pairs (or more) of vectors, which generally are aligned on a 010 boundary, there will have to be an unused vector between them.
The floating devices, in assignment order, are:
| Rank | Device | Size | Comment |
|---|---|---|---|
| 1 | DC11 | 010 | |
| 1 | TU58 | 010 | No config for systems with DC11 + TU58 |
| 2 | KL11 | 010 | Extra units |
| 2 | DL11-A/DL11-B | 010 | Extra units |
| 3 | DP11 | 010 | |
| 4 | DM11-A | 010 | |
| 5 | DN11 | 04 | |
| 6 | DM11-BB | 04 | |
| 7 | DH11 modem control | 04 | |
| 8 | DR11-A | 010 | |
| 9 | DR11-C | 010 | |
| 10A | PA611 | 04 | Reader |
| 10B | PA611 | 04 | Punch |
| 11 | LPD11 | 010 | |
| 12 | DT11 | 010 | |
| 13 | DX11 | 010 | |
| 14 | DL11-C/DL11-D/DL11-E | 010 | |
| 15 | DJ11 | 010 | |
| 16 | DH11 | 010 | |
| 17 | GT40 | 020 | |
| 17 | LSV11 | 020 | |
| 18 | LPS11 | 030 | |
| 19 | DQ11 | 010 | |
| 20 | KW11-W | 010 | |
| 21 | DU11 | 010 | |
| 22 | DUP11 | 010 | |
| 23 | DV11 | 014 | Also modem control |
| 24 | LK11 | 010 | |
| 25 | DWUN | 010 | |
| 26A | DMC11 | 010 | |
| 26B | DMR11 | 010 | |
| 27 | DZ11 | 010 | |
| 28 | KMC11 | 010 | |
| 29 | LPP11 | 010 | |
| 30 | VMV21 | 010 | |
| 31 | VMV31 | 020 | |
| 32 | VTV01 | 020 | |
| 33 | DWR70 | 020 | |
| 34 | RL11 | 04 | Extra units |
| 35 | RX211 | 04 | Missing from PDP-11 Architecture Handbook |
| 36 | TS11 | 04 | Extra units |
| 37 | LPA11 | 010 | |
| 38 | IP11 | 04 | |
| 39 | KW11-C | 010 | |
| 40 | RX11 | 04 | Extra units |
| 41 | DR11-W | 04 | |
| 42 | DR11-B | 04 | Extra units |
| 43 | DMP11 | 04 | |
| 44 | DPV11 | 04 | |
| 45 | ML11 | 02 | MASSBUS device |
| 46 | ISB11 | 04 | |
| 47 | DMV11 | 04 | |
| 48 | DEUNA | 02 | |
| 49 | UDA50 | 02 | Extra units |
| 50 | DMF32 | 020 | |
| 51 | KMS11 | 06 | |
| 52 | PCL11-B | 04 | |
| 53 | VS100 | 02 | |
| 54 | TU81 | 02 | Extra units |
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 vector, so that bootstraps do not have to contain the lengthy algorithm to deal with floating vectors in order to boot from them.
See also
Further reading
- PDP-11 Architecture Handbook (not online); 'Floating Vectors', in Appendix A
External links
- peripherals handbook (1981-82) - Appendix D, 'Floating Vectors' (pp. 492-493 of the PDF]