Atari 400 8-Bit SIO2Zipit

Back in the 80’s, my first computer was an Atari 8 Bit. I used it a lot until we got our Austin Computer Systems 386 PC. The Atari taught me a little BASIC and a lot of game play. I still have our original Atari 400 which I pull out on occasion to play some cartridge games but I don’t have a very large collection of them. A couple friends last year started a retro gaming event at a local pizza/pub, Peoria Pizza Works, which I also took part in. The Atari 400 was a nice addition to the lineup of vintage systems and the only Atari 8 Bit Home Computer. This year I wanted to have more games available so I did some research and got a Zipit Z2 to emulate a floppy drive over the Atari SIO bus.

As a kid, my family had an Atari 800 with all the fixins’ including two 5 1/4” floppy drives, the 1020 plotter/printer, KoalaPad and more, but all that must have gotten sold or given away at some point. All that remains is the Atari 400, a couple of cartridges and joysticks.

The Atari SIO bus uses a serial protocol and the computer sends command requests based on device type: floppy, printer, cassette, rs232. There are already a ton of different ways to emulate these devices over a serial port, USB and even Arduino. I tested out SIO2Arduino since I had a board. It did work, but needed some minor tweaks to get the SD card library working. I had a lot of trouble loading just about any floppy games but was able to get Caverns of Mars, Zaxxon and Atari DOS to load so I knew my hardware was working.

Turns out, my Atari 400 only had 16k of RAM which makes it virtually useless for anything but cartridge games and BASIC. A bit of searching led me to Best Electronics which appears to have snatched up all the old stock Atari hardware. Luckily, they still had a handful of Atari 400 48k RAM upgrades left so I grabbed one. They said they were down to the last box of them and raised the price immediately after I bought mine, so if you need one, get it now! Update (Apr 2017): Best Electronics is sold out of the 48K upgrade. The upgrade comes with good instructions and was really quite easy. You just need to take the system apart, solder some jumper wires on the mainboard and replace the old RAM card with the new one.

With the new RAM installed I set out to build the sio2zipit cable. The AtariAge forums has a wealth of information and I found this thread about using a Raspberry Pi as a SIO device. The sio2pi cable/connection used in the above thread is a basic level shifter using MOSFETs and is made by SparkFun. I have some DMG2302 enhancement mode MOSFETs that are similar to the BSS138 used in the SparkFun board and whipped up a breadboard circuit using some of my SOT breakout boards. Unfortunately, the Zipit only has the RX, CTS and RTS UART lines for ttyS1 on the dock. The TX line does have an exposed pad on the Zipit mainboard so I rerouted it to a GPIO line on the dock and cut the GPIO trace (see image below). Now I have a full hardware UART port on the Zipit Dock connector. I built sio2bsd for bleeding edge openwrt-zipit and it loads ATR disk image files to the Atari with no problems.

Now that the breadboard works, I needed something a bit cleaner looking and not so fragile. The 2017 8 Bit Stuff Your Face retro gaming tournament is coming up quick and there isn’t enough time to get a board made from OSHPark. Instead, I used some double sided copper PCB and hand carved a circuit on it. I got the idea for the SIO end of the cable from an item on eBay which is a pretty clever and cheap way to make an SIO cable. The level shifter breakout boards are attached to the copper PCB. A section of shielded USB cable connects the SIO connector to a spare Zipit Breakout v1 board. Some hot glue and zip ties keep the cable secured on the boards.

deeice has been working on porting stuff from iz2s over to bleeding edge and recently got the gmenu2x file selector working. I use the gmenu2x file selector to load disk images for sio2bsd. This should make it easy enough for anyone at the retro gaming tournament to load floppy games from the gui.

I plan on making a better SIO connector with the level shifter on it, additional line for the command pin and a through hole header. It would be useful not only for Zipit, but Raspberry Pi or other dev boards. When I do, I’ll post it here.

Update: I made a board and ordered it from OSH Park. After I get the boards and verify they work, I’ll open the project if anyone wants to get their own made. The boards have arrived and are working well. I haven’t tested yet with the Zipit, but I connected it to a ESP-01 and got the Atari 400 connected to a bbs over telnet/Wifi. Click HERE to order the board from OSH Park (parts list and description are there also).