CF Card Sizes (PCMCIA Slot) with ACA1234 vs. ACA1240/1260 vs. Bare A1200

Caution: Non registered users only see threads and messages in the currently selected language, which is determined by their browser. Please create an account and log in to see all content by default. This is a limitation of the forum software.


Please understand that you need to create an account to be able to post, guest posting was disabled as an anti spam measure.

  • So far I know this: Read path, cycle over these labels (simplified):


    Code
    1. _rb_swath:
    2. ; execute "READ MULTIPLE" or "READ SECTORS"
    3. ; both with "Sector count", defined in d4, as max. 256
    4. _rb_block:
    5. ; copy single block
    6. _rb_lnext:
    7. ; go to "_rb_block" till we have blocks from count of blocks
    8. ; go to "_rb_swatch" as no more blockc are available

    issue

    * is observed if "d4 > 1"

    * reading is stable When d4 == 1 or if I skip the go to "_rb_block"` in _rb_lnext. But it is slow, like copy file from ~2MB/s drop to ~1MB/s


    My "workaround" for now is to set d4 to 1 in _ReadBlocks. As till now any slowdowns nor status checks didn't help me to stabilize it.

  • IF a single block is transferred OK, then how about inserting a dummy read from CIA after every full sector, also during multiple sector read?


    Jens

  • Unfortunately, it do not helps, I try, few days ago, the dummy read from CIA after every full sector and other combinations as are checking STATUS DRQ/BSY). No luck... like the fifo in CF still has the same 32b, the last 32b of the first sector.

  • Weird. After all, you're talking directly to the CF card, and it's behaviour changes when the CPU speed changes? Hard to believe that this is the cause.


    Let's poke a little "more educated": Please let me know the absolute address you're using for the status register and for the data bottle neck register. We may be able to tweak something in terms of dummy reads.


    Jens

  • Weird indeed. I’m seeing no change in behavior, of the issue, regardless of how much I “slow down” or add waits between sectors. It also doesn’t correlate with CPU speed.


    On ACA1234, I can mount and read >4GB CF cards reliably without any patches but interestingly 4GB cards fail there for me (no clue).


    On other ACA cards, >4GB cards are not readable unless I apply my patch, 4GB cards are OK in contrary. This holds independent of timing tweaks in the read path between sectors.


    BTW: Multi sector writes appear fine, no issues observed so far.

  • Just noticed the ACA1234 reads by single blocks (not using multiple), This explain why I cannot see repeating 32b block pattern when doing reads at >4GB cards. Not sure why, can be the mount list for CFAUX in ACA1234 flash uses MaxTransfer = 0x200 and thus OS issue a Read IO request for a single 512 block?


    Still this do not explain the Get IDE ID problem...

  • That MaxTransfer value is indeed a setting to get best-possible compatibility with all kinds of cheap CF cards. It's been a few years since I looked into details of the ACA1234. We have almost no support cases with that accelerator, despite regular sales. My brain tends to purge information that isn't needed for a long time :-)


    Jens

  • The issue is independent on cheap or expensive CF card, It just not works for (not know reason yet) for >4GB cards in PCMCIA.

    1a/ >4GB (both cheap, expensive) are *working* with ACA1234

    1b/ 4GB are *NOT working* in ACA1234 (uff why?)

    2a/ >4GB are *NOT working* in ACA1211, ACA1221lc, ACA1240/1260

    2b/ 4GB are *working* in ACA1211, ACA1221lc, ACA1240/1260


    Workaround(s):

    * patch the _GetIDEID source code of CFD by adding some _WaitXY_.

    * setup the MaxTransfer = 0x200 in mountlist.


    So, I crated a githib repository to track changes:

    1/ the original, after being opensourced, compactflash.device 1.32: https://github.com/pulchart/cfd/releases/tag/1.32

    2/ added a patch introduced by: compactflash.device 1.33: https://github.com/pulchart/cfd/releases/tag/1.33

    3/ and opened my new "Pull Request" for 1.34 (is still in progress): https://github.com/pulchart/cfd/pull/3/files

    There is a compiled version of compactflash.device 1.34 (20.10.2025). It is able to pass the IDE ID issue, but needs the MaxTrasfer to be set to 0x200.

  • Hello,

    just a short update.

    I make a fork of the driver and did some work to fix the troubles, updated driver versions have been released

    See for v1.34+:
    * https://eab.abime.net/showthread.php?t=121575
    * https://github.com/pulchart/cfd/releases (and https://aminet.net/search?query=cfd

    Best