I have a couple of questions, strictly out of curiosity.
Why are the PC-AT port addresses being used on a PC-XT? Given that the operation of the controller isn't compatible with PC-AT driver software, what's the point? Why not use the PC-XT addresses?
I guess I don't see why it matters what I/O range we're using? I wasn't aware that we had made that decision yet?
As long as it's dropped into a range that doesn't conflict with other devices that are commonly used in a PC/XT, we should be fine. If 1F0-1F7 and/or 170-17f used by other stuff, then by all means it should be moved.
Having it jumper selectable from 4 or more address ranges is of course the ideal solution.
I think there are plenty of ranges of I/O that should be available.
Not having it on top of the existing XT HDD port addresses would allow for MFM drives to be used at the same time as our card, for the truly insane.
One of the problems in trying to use 286 code on an 8088-based machine is the use of the 286 INS and OUTS block transfer instructions. You could replace the 8088 with a V20, but that just adds an extra layer of confusion. And you don't have IRQ 14 and 15 anyway on an XT.
we're not using any 286+ instructions. The original dump of the BIOS used only 8088 code, and I've only augmented that to support larger hard drives. (and fixed a lot of stupid stuff) The end result BIOS will likely be 95% written by me from scratch, and i've so far only done PIO based transfers using single byte reads, because the code came from the acculogic card and they did weird stuff to get the 2nd half of the data. If we change the design, I have to change the core reader/writers, but that's fairly minor.
Since it's all PIO at the moment, there's no IRQ usage.
If the design changes to support DMA, then that'll change, but there's no reason we need IRQ 14 or 15 to work.
If you want to use DMA, you need circuitry on the adapter to handle it. I don't see that on the Reh design.
I'll defer that one to a hardware guy, as I have no idea what hardware would be required there. The reh article does mention that the way his design works (512, 8bit reads from the same data port) is ideal for DMA transfers, so I assumed all the stuff required was in the design already. If you can help with that hardware design, please do.
If running in PIO mode and using the PC AT port addresses is desirable, why not a simple state machine that would allow an access to the (data port +1) address after an access to (data port) using the 8088 IN/OUT word instructions? It seems to me that you'd get the best programmed-I/O transfer speed.
Agreed, that would be better, if we're still forced to do PIO, and nobody accidentally touches the data port register and gets us into a weird state!
I wonder how much of a boost that would be?