Maker Pro
Maker Pro

Compact Flash in 8-bit mode

F

FyberOptic

Jan 1, 1970
0
I've gotten me one of those dual Compact Flash to IDE adapters to use
as part of a project, which will interface with an 8-bit data bus.
While I know that with some extra components it's possible to deal with
true 16-bit IDE on an 8-bit bus, I simply don't want to add in such
unnecessary (and space-consuming) parts when I'll likely never want to
plug in an actual IDE drive. Most CF cards will work in an 8-bit only
mode as far as I know, which is why I've chosen it. Plus, just for the
ease of sticking it back in my PC to put data on it.

But the question is, how exactly can one get it into that mode? I've
heard of an IDE register which can do it, but since most IDE drives
don't support 8-bit mode, I can't seem to find mention of it in the IDE
register references/tutorials I've come across.

The other, possibly older/unsupported method, is using /IOCS16, from
what I understand. But I hear this is no longer used in the ATA3 spec.
Though for a CF adapter, if I simply pulled that line high, would this
make the card work in 8-bit mode in power up? If so, this would be the
best method, since I could just use the card immediately without
needing to set anything up. I'm not opposed to doing it via a register
if I have to, if I can find out which that is, but if someone could
help point me in the right direction either way, I'd be greatful!
 
F

FyberOptic

Jan 1, 1970
0
FyberOptic said:
But the question is, how exactly can one get it into that mode? I've
heard of an IDE register which can do it, but since most IDE drives
don't support 8-bit mode, I can't seem to find mention of it in the IDE
register references/tutorials I've come across.


Just since I posted this, I decided to look up the OLDER specs for ATA,
primarily ATA-2. Low and behold, there's the answer I was looking for.
From the look if it, you simply use the Set Features command (0xEF),
and use feature 0x01, which is "Enable 8-bit data transfer". ATA-3 and
up seems to have removed it entirely.

I also came to find that /IOCS16 is apparently an output to notify when
the drive is outputting 16-bit data, not an input to specify which is
which.
 
FyberOptic said:
I've gotten me one of those dual Compact Flash to IDE adapters to use
as part of a project, which will interface with an 8-bit data bus.
While I know that with some extra components it's possible to deal with
true 16-bit IDE on an 8-bit bus

If I read the ATA spec correctly, lots of registers want you to know
the full 16-bit
value; most IDE software won't be able to initialize without reading
out the device
info, so will never get to the command phase where you set up 8-bit
options.
The ATA-3 spec doesn't include an 8-bit option, though some vendors may
support such.

Two alternatives to support IDE are a bit more obvious: USB and
Firewire adapters
for IDE are widely available (and would leave SATA an open
possibility).
You can even channel the CF through a USB, and drop its dedicated
interface.
 
FyberOptic said:
I've gotten me one of those dual Compact Flash to IDE adapters to use
as part of a project, which will interface with an 8-bit data bus.
While I know that with some extra components it's possible to deal with

The CF spec requires that all compliant cards support 8-bit transfers
in True-IDE mode using Set Features as you discovered. So you are
guaranteed this will work for all CF cards.

Contrariwise, _no_ modern hard disk will support this feature. Only
"XT-IDE" drives will support it - TTBOMK no XT-IDE drive larger than
40MB (yes M) was ever manufactured.
 
Top