Great! I already started working on a temporary fix to relocate XTIDE EBDA when changing video mode (Int 10h/AH=00h). No need to finish it since it won't be needed in next bios version. I hope you release it soon.
revision 0.11 is ready, however, I'm having problems finding a happy place to store stuff. I need to store, at a minimum, 24 bytes per drive, plus there are an additional 3 or 4 bytes that the controller itself uses to do the drive swapping.
16 of those 24 bytes must be contiguous. That's the Fixed Disk Parameter Table. (see INT 41h/46h)
I'd like to keep the other 8 of those bytes tucked in beside the FDPT, but that's not a requirement. Those 8 bytes are used for ehanced INT13 support to hold the full drive size in LBAs.
On the original XT/PCs, there's some pretty good chunks of memory free at the top of the BDA, 0:4c0-0:4ff, which I originally used. On an AT+ class machine, those areas are by more motherboard devices and/or DOS itself, and thus your hard drive breaks on those machines.
I do a lot of machine swapping, since it's easier to debug on my 486 than it is on my 8088, so I need something that works on both machines.
There are also several unused interrupt vectors. Ralf Brown says that most interrupts from 80-FF are reserved for BASIC. BASIC on the PC/XT is actually something that gets used occasionally, so I was hesitant to use those areas, but then I'm also thinking that it's probably reserved but not actually used. Anyone know? Anyone have a lot of BASIC programs to try while using the XTIDE?
There is also the issue of other cards also trying to utilize the same chunks of memory, but we can't worry about that just yet.
So, do we fork the BIOS tree? Do we detect the machine type and locate differently on different machines? Do we just use INTs D0-E0 and hope that we don't break BASIC?