The other thing: accessing the "registers" can be done in two ways: indirect access only needs some ports, basically some allocated I/O ports would be OK. The direct access is different it needs 10 bit addressing information (if I remember correctly now). We can say, that indirect access is OK too, and it's more simple, but at the other hand it can be slower, as accessing a register needs extra work first (specifying the register number or so).
At least with the W5100 you have 4 ports, if you are using the indirect access mode:
- Port 1: accessing the MODE register directly; this is needed, as only with this register you activate the indirect access mode
- Port 2,3: set address (high, low); here you select the address (0-32767 for the W5100)
- Port 4: data read/write; after setting the address you can read or write to the W5100 by using this port; addresses are incremented automatically, so when reading a sequence of bytes you only need to set the address once
The W5300 seems to be a little bit different here due to its larger ram, but I guess in principle it's still something like this.
Anyway, if it's easier to develop the hardware for the EP by using indirect access mode (so only 4 ports are needed), I would go for it! On the CPC it will be implemented in this way, too (and I already did the routines for this way of interface
). The reason is, that it doesn't matter so much, if you loose a little bit CPU time when you access the registers in the indirect way. The code for the CPC indirect access interface is even smaller than the code for the MSX memory mapped interface, as here you have to take care about where your own code and your own data buffers are located and all these slot switching stuff.
The important thing is the data transfer. In indirect mode you use INIR/OTIR instead of LDIR (or the unrolled variant). This is only a little bit slower but in my opinion still fine - we are still speaking about loading some hundret KB of internet data to our Z80 system in seconds
At the end its the decission of the hardware developer, and I am no expert here at all. But I am already prepared for both solutions