Created for the Atari 8 bit computer family to use as a replacement for the Atari 810/1050 drives.  An Arduino board was used as the platform as it is widely available, affordable and fun to use.



  • 4 Virtual Drives (D1:-D4:)
  • Supports standard SD/ED/DD ATR files
  • Up to 4 sub-directories under the Atari sub-directory
  • High Speed SIO *
  • Load/Unload/Swap with 4 buttons and 16×2 LCD Display
  • Optional “Game/Simple Mode” configuration to limit menu choices for easier use
  • LCD detail mode to view access commands and use
  • XEX Boot-Loader **
  • Ability to save current configuration of all settings
  • S-Drive main functions compatible ***
  • Full board version has built-in USB to update firmware or use as SIO2PC device
  • Because it is based on the Arduino, the hardware configuration options are limitless
*     Limited to mode 9 (about 56 kb)due to 16Mhz crystal used with the stock Arduino.
**   XEX Bootloader code used from S-Drive source
*** Only main portions of S-Drive were implemented based on documentation


 SIO2uSD Documentation 12-31-12

Video Demo

A video showing some of the features can be seen on YouTube.  Please excuse the enclosure.  It is my personal prototype. 🙂

Full PCB & Schematic

Check out my prototype boards page also.

A test run of boards were done by OSH Park.  The quality was outstanding.  I rushed to get these out and made a few design mistakes.  The LCD header is backwards.  I use header cables, so not a huge deal.  The power barrel holes are too small as well.  Let’s not pay attention to the silk screen text on the back of the board being inverted.



“Home-Made” Prototype PCB

If you would rather take on the challenge of making your own PCB, here is a version I designed that allows for a one-sided circuit board that can be made at home!

sio2microsdprotofront sio2microsdprotoback

sio2microsdv1psch     sio2usd711v1

While creating the software, I ran this 100% on a breadboard.  If you have an Arduino, this doesn’t take too long to wire up.


Hex Code for Arduino

Due to the limitations of this hosted website, the file below should be copied and pasted to a clean plain text file so that it is re-converted back to what it will see as an Intel Hex file.  I suggest doing a copy/all and then pasting into something like Notepad so no formatting will be introduced.  You can than save it as a .hex file.

Download Latest SIO2MicroSD v1.1-hex

Version 1.1 Fixes 2-1-2015:
– ATR images of 16 meg not working properly
– SDrive directory lists of more than one page missing an entry per page
– SDrive root directory selection on last entry was invalid

Download Older Version 1.0

You can run AVRDude to upload this file to your Arduino device.  This software is included with the free download from their site.  Here is an example  line to use if you own an Arduino with an ATMega 328P IC and it is located on COM3.

avrdude -V -F -C avrdude.conf -p m328p -c stk500v1 -P COM3 -b 57600 -U flash:w:sio2microsd.hex -v

I suggest running Arduino version 022 as that is what this device was built on:

Make sure all the files are in the same directory to make it easy.  Here is the pin setup for the Arduino:

* Menu Button A0
* Up Button A1
* Down Button A2
* Enter Button A3

* LCD Connections *
* LCD RS pin to digital pin 7
* LCD Enable pin to digital pin 6
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground

* Atari Connections *
* Atari SIO Pin 4 or 6 Black to Arduino GND
* Atari SIO Pin 5 Green to Pin 0 TX (PD0)
* Atari SIO Pin 3 Orange to Pin 1 RX (PD1)
* Atari SIO Pin 7 Violet to Pin 8 Digital Input (PB0)

* SD Card Pinout *
* Pin 10 CS (be sure to protect to 3.3v)
* Pin 11 DI (be sure to protect to 3.3v)
* Pin 12 DO
* Pin 13 SCK (be sure to protect to 3.3v)


  • January 2011 received Arduino and parts to start experimenting
  • Feb 2011 had SIO routines partially working
  • March 2011 finished main program
  • July 2011 created first PCB using Eagle and toner etching
  • Decided on name SIO2MicroSD – Was SIO2Arduino
  • August 2011 had PCB made professionally
  • August 2011 started adding SDrive functions to code
  • September 2011 code cleanup and refinement
  • September 2011 added XEX loader to code
  • December 2012 created documentation and blog



Please contact me for availability of parts or more info.  I started revising the board and could make a run if enough people are interested.  For a completed board with no case, I believe it would run around $50-$60.  You can send a reply at the bottom of this page.  You can also send an email to my gmail account – TheDiskwiz.

What started all of this?

18 Responses to SIO2MicroSD

  1. Pingback: Arduino - SIO2MicroSD.

  2. DaNDeE says:

    Hey there. Me again. 😉 I finally found someone who can help me flash the ATM and he is asking for the proper fuses setting for AVRDude. Could you please shed some light on this? Thanks alot.

  3. Sascha says:

    Hi Diskwiz,
    this is a nice piece of work!
    A friend asked me to burn an atmega328P with the sio2microsd1.hex. Any clue which fuse values must be used? Curently the chips fuses are set as follows: hfuse=0xda, lfuse=0xff and efuse=0x05. Will this work?
    Thanks and best regards!

    • diskwiz says:

      Thank you. I believe you want h=0xda l=0xff e=0x05, just as you stated. I use the tools that come with the Arduino software to write the hex and have not had to change the fuse settings.

  4. AD says:

    Can I just use a arduino uno alone with a sd card reader, flash the hex code and it would work or not?

  5. Vladimir says:

    Hi Diskwiz,
    I repeated the scheme on Arduino (DFRduino RoMeo) but when I run the error “SD Error !”.
    LCD, menu and buttons work. A similar project after adaptation, works:
    Could you shed some light on this or send me the source code?
    Thank you very much.

  6. Carlos says:

    I am having problems uploading the hex file to an atmega328p, it seems too big. Can you check the file size?

    • diskwiz says:

      It should not be too big. I originally wrote this for a 328p chip. Try using all of the utilities and binaries from the Arduino022 version and let me know if that helps.

  7. Anthony says:

    Hi Don,
    I would definitely be interested in an unpopulated PCB if you have any more. I have an old Atari 800 I would love to get this going for.

  8. Chris says:

    Hi, I am also about to build this and would be very keen to get an unpopulated PCB if any are still available, I am in Australia. Please send me a note: atari(at)chrisharrison(dot)com(dot)au

    I’m more than happy to pay for the board and shipping costs.


  9. carlo alberto pancetti says:

    how do I do to write everything inside arduino?

  10. Jay says:

    I would like to make a simpler version, that I could build inside the Atari without to much modification to the case. So would this work without the LCD and buttons? if it would then I would only need to modify the case to access the SD card.

    • diskwiz says:

      If you set Drive #1 up for the S-Drive ATR, my application is compatible with it. You can then control what you load via the Atari. I suggest burning your Atari ROM with a high-speed SIO routine and I changed my 130XE to default boot without BASIC. You will want to hook up the LCD to do initial settings. I had considered locking down the code for an S-Drive only mode for this purpose.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s