SPI port

It would seem to me that I can have as many slave SPI ports as I want. I just have to dedicate more outputs and glue logic to select the slaves. Is that correct?

Say you had an Uno with it's 20 IO pins.
11,12,13 are the SPI signals MOSI, MISO, and SCK.
The other 17 pins can all be Slave Select signals.
Little awkward debugging that way, 0/1 should be left free for development/debugging.

You could use 1 slave select for a string of shift registers (daisychained), and use the shift register outputs as the slave selects to as many other devices as you wanted.

You might also need to buffer the SCK and MOSI signals if there is a lot of long wiring involved.

You could use a binary decoder chip like the 74HCT154. That takes four lines from the Arduino and turns them into 16 address select lines. It is known as a 4 to 16 decoder. You can also get 3 to 8 decoder chips in a smaller package and also BCD decoders, like the 74HTC42, which will give you ten outputs for four inputs, again in a smaller package while still being a through hole one.

Up to a point, yeah, that's correct (as others said).

Depending on the length and geometry of the wires, the drive strength of the microcontroller's output pins, and the input impedance of the devices you're controlling, and the clock speed you're running the SPI interface at, you'd eventually end up with problems on the shared (SCK/MISO/MOSI) lines getting bogged down by the length of wire and number of inputs attached to them, even though the inputs are high-impedance CMOS inputs (this issue could be addressed with additional hardware, if need be), but I suspect this limit is higher (probably much higher) than you want to go.

Thanks. That was my guess but I was not sure I thought that the master may tristate if the designated control line was inactive. Yes, I intend to use an address decoder if I need that many ports. Thank you all for your responses.