Hi Rich,
I have built my Dual IDE/CF card but I haven't actually fired it up as yet so I can't speak specifically for this card. However, it sounds like you are having problems adapting CP/M's disk access methods to the IDE LBA mode.
A few points you might consider.
1. Depending on how you write your BIOS, there are two place you need to be consistent with your track/sector -> LBA mapping. That is the READ and WRITE routines. A few times I have made changes to the read routine and forgotten to change write and got myself quite messed up.
2. Also check the size of your track and sector variables (byte/word). It was common to use byte values for these. Obviously that works up to 256 Sectors/Track. Beyond 256 you need word values.
2. Your DPB needs to match the way you calculate the IDE LBA. Specifically your sectors per track value. I used 256 sector per track with 256 tracks per disk. At 128 bytes/logical (CP/M) sector that will give me an 8MB disk. to get to an LBA (512 bytes/sector) I put the track in H and the Sector in L then shift it right a couple of times (divide by 4). That will give me the LBA with the bits shifted out giving me an index into the 512 byte sector.
That is one implementation, there are other ways to do this but your SPT must match your calculation of the LBA.
Also try writing something to the directory and then use a utility to look at the physical blocks. You can verify your calculated LBA routines that way.
Once you have sorted out your disk access routines, you need to "format" the CP/M logical disk. The CP/M directory area needs to have 0xE5 written to all sectors. It is not enough to do an ERA *.* as there will still be "Junk" left in the directory. In the ECB world I have a utility called
CLRDIR.COM that should do it for you.
I hope this helps.
Max