top of page

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

bottom of page