When using autoinit the mounter would mount the devices before the device is added to execs Device list
Before DOS is started (like rom boot) this is not a problem because the device will be added to the list before DOS is started
After DOS is started though it becomes a problem, dos will try to OpenDevice() the device before it is even on the Device List
The current SF2000 firmware doesn't have a FIFO for communicating with
the SD card. This limits the achieved performance. This is expected to
change soon.
This byte needs to be read before the card goes busy, but more importantly,
it would otherwise be read out by sd_wait_ready():
For cards where this byte is 0xff, sd_wait_ready() would think the card is
immediately ready and let the code send it the next command, while the read
actually made the card go busy.
This makes the card end up in a state the code cannot recover it from - even
if you reboot the machine so spisd.device is restarted, it still requires
the card to be power cycled by ejecting and re-inserting it.
How to reproduce for affected cards:
1. Use spisd.device v2.2
2. Mount SD0:
3. Write a file larger than 512Bytes to trigger a write multiple block
4. Write or read another file, this will trigger the next command and show
the issue as a read or write error
This avoids pasting a lot from the NDK includes into the source.
If you want to avoid const warnings for some functions like
exec.library/RawDoFmt(), also use the m68k-amigaos VBCC target headers,
which also enables you to write mixed 1.3/2.0+ code where you can call
2.0+ functions if needed.
The assignment of the BUSY and POUT pins to the microcontroller had
changed from the previous version to the new version. User amigos500 on
the a1k forum noted that if the assignment of those two pins had not
changed, then it would be easier to patch an old PCB to work with
the updated design.
After testing, it seems that the old pin assignment of BUSY and POUT
works equally well with the updated design, and I therefore reverted
the assignment back.