Anyhow, any write-transaction at that address gets all of the ISA-PnP cards' attentions. […]
Show full quote
Anyhow, any write-transaction at that address gets all of the ISA-PnP cards' attentions.
From there, there's a "key" sent to, again, all of the ISA-PnP cards; a specific sequence of bytes sent to that same address. This confirms to the cards [all of them] that the system wants to start configuring them.
But, now, how does it configure *only one* card? [And, actually, "card" is inappropriate, as multi-function cards need multiple configurations].
So we need a bit more background. Yes, each card [or function?] has a unique [UNIQUE] identifier, including a 32-bit manufacturer ID, and a 32-bit unique ID [so, say you have two identical cards, they can be separately-identified].
Alright, but now how you gonna select the first one to configure? Test every single possible ID of the 2million-squared? Nah, booting would take forever.
So, yes, more background; there is an address *also* for read-back. BUT: this one's at a different location. Otherwise, reading-back from the shared parallel-port status-register and PnP configuration-register address *will* get a response from the parallel-port [when installed, which was *usually*], which would cause bus-contention with the PnP cards' also responding.
But Wait! The parallel-ports other registers are all R/W, so we can't use them! And there could be *anything* at *any* address!
So, they've got a *range* of addresses to choose from, for read-back. But, no, there's not yet a way to set a unique read-back address for each PnP device. It gets crazier.
After the "key" unlocks configuration-mode on *all* the devices, it first searches for available devices, and requests their IDs. In that request, it tells the devices which address to respond at.