Isn't that well-documented? I have no idea of what goes on A8-A15 in the case of the undocumented ED 70 and ED 71 I/O instructions--or even if it's useful.
A reasonable expectation would be that B is placed on the upper address lines for all of those commands. It's use would depend on the hardware for a particular machine architecture.
In my case, with plans to support an ISA bus with z80, it would allow PC hardware to be used by extending A8 and A9 onto the bus, but would be potentially incompatible with software that used 8 bit addresses. Though it's not so much of a problem as if we take 3F8 ( Serial ) it would spread the serial ports like 0F8, 1F9, 2FA, 3FB etc.... Only 2FA and 3FB would typically be valid, and even then if nothing existed at the other addresses, it's not an issue. So it's a reasonable approach so long as all ports are mapped only in 8 bit I/O space and PC cards are not anticipated to be used by older software.
Though specific use of those two command are uncertain, because like any undocumented command, it may or may not exist, but inputting to C should be possible, as is writing a 0 to the 16-bit address "BC" -
I could probably use the second to clear the DMA buffer if there was any value in doing so, and the first to read a port specified by an earlier port, eg,
IN C,(C)
IN A,(C) - Would allow the port to be read from to be specified by an external source...
Well, it's contrived usefulness and It's a cool feature but I'm not sure where I'd use it. On the contrary, I use INDR quite a bit as a 16 bit I/O space address for moving CP/M's DMA space between RAMDISK/DISK and Main Memory as my hardware shifts the upper A8 to A14 down to A0 to A6, and I place disk track and sector on the upper addresses. It only works for INDR and OTDR since B is decremented, as is DE in that instance, allowing them to stay in lockstep and that command *is* documented.
But yes, like Eudimophodon, I too was referencing the earlier thread -