Atari XL/XE SD cartridge is a device allowing access (read and write) to FAT32 formatted SD cards by Atari 8-bit computers.
Atari-side interface
The cartridge occupies address space $8000..$BFFF. Read and write operations are controlled through 8 registers mapped to $D5E8..$D5EF. Each read/write operates on SD card sectors <SECTOR_NUM>..<SECTOR_NUM>+<SECTOR_COUNT>-1 and RAM region $8000+512*<OFFSET>..$8000+512*(<OFFSET>+<SECTOR_COUNT>)-1. Additionaly read operation may be performed using single register - read address is automatically incremented after performing the operation.
$D5E8 :
- bit0=1 - read sectors from SD card into buffer RAM; reset after the operation is completed
- bit1=1 - write data from buffer RAM to SD card; reset after the operation is completed
- bit5..bit2 - unused
- bit6=1 - flag: last operation succeeded
- bit7=1 - flag: last operation failed
$D5E9 :
- bit5..bit0 - <OFFSET>; data offset from $8000; measured in 512-byte blocks
- bit7..bit4 - unused
$D5EA :
- bit5..bit0 - <SECTOR_COUNT>; number of 512-byte sectors to read/write
- bit7..bit6 - unused
$D5EB :
- bit7..bit0 - <SECTOR_NUM> bits 7..0
$D5EC :
- bit7..bit0 - <SECTOR_NUM> bits 15..8
$D5ED :
- bit7..bit0 - <SECTOR_NUM> bits 23..16
$D5EE :
- bit7..bit0 - <SECTOR_NUM> bits 31..24
$D5EF (write):
- bit4..bit0 - <READ_ADDRESS> - offset from $8000; measured in 512-byte blocks
- bit5 - unused
- bit6=1 - turn on cartridge memory $8000..$9FFF
- bit7=1 - turn on cartridge memory $A000..$BFFF
$D5EF (read):
- bit7..bit0 - data in cartridge memory at current <READ_ADDRESS>; the address is automatically incremented by 1 after read
Atari XL/XE SD cartridge
Piotr Wiszowaty