Monthly Archives: Sep 2015

The Ultimate SD Multicart?

XEGS, Williams, AtariMax, Sic!, SDX, OSS, Megacart: just a few of the diverse banked cartridge formats available for the 8-bit Atari. If I peer into my drawer right now, I can see about a dozen flash carts I’ve collected over the years, all employing incompatible banking schemes. And since I’m a developer, if I want to build – for example – an AtariMax 1Mbit ROM and test it on real hardware, I either have to pull the chip and use my USB programmer, or wait for the flashing software on the A8 to move 128KB of data across the serial interface and onto the flash cart. Recently we’ve seen several cartridges which emulate a wide variety of banking schemes, but getting the ROMs onto the cart has tended to involve a lot of lengthy flash operations. The AtariMax MyIDE II cartridge, meanwhile, supports only a limited number of banking schemes. That’s where the Ultimate SD Cart steps in: running a wide variety of cartridge ROMs straight from an SD card.

In june 2015 I was approached by Robin Edwards (electrotrains) to write a menu for his new SD-card based multicart for the 8-bit Atari. Robin had already written his own perfectly serviceable menu for the cartridge (as well as the Altera FPGA firmware), but he thought his effort could perhaps be improved upon a little. Happy to oblige, I shortly afterwards took delivery of a prototype version of the SD cartridge and began writing a new menu based on Robin’s existing code. Robin was keen to listen to suggestions, one of which was the inclusion of a cartridge reset button so that the device could be put back into an initialisation state without power cycling the Atari every time the user wanted to get back to the boot menu. This addition made it into the pre-production board which arrived at my door a couple of months later.

SD_Multicart_topThe board is supplied uncased, the idea being that users adapt an existing cartridge shell to house the PCB. Although I have a few suitable candidates for cart shells, several shells are closed by a self-tapping screw which would pass through the middle of the PCB. Since no central aperture is present on the board, such shells would have to be glued shut. The board does include two through-hole mounting points at the front corners of the PCB, but although these are at a suitable pitch for an AtariMax cartridge shell, they are too far back on the board to actually use with that shell. Nevertheless, these are minor quibbles regarding what is a well conceived basic design which will suit the form factor of most standard-sized cartridge shells, mounting pillars notwithstanding.

SD_MultiCart_bottomThe FPGA and RAM are mounted on what is the back side of the board, with the SD card slot on top. On the chip side we also have a JTAG header, activity LED header, and reset button. The FPGA firmware can be updated using a USB Blaster cable (available cheaply from online vendors) and the (free) Quartus II software from Altera. The entire project is open-source too, with all code hosted on github.

Perhaps unusually, the ROM-based menu which is actually booted when the Atari is powered on is not housed in a discreet flash ROM chip (which is conspicuously absent from the board) but in the FPGA’s internal flash memory. Because of this, any replacement boot ROM is loaded from the SD card. The firmware looks for an 8KB ROM file called “_boot.rom” and loads it on power-up, resorting to the built-in menu ROM if no such file is found.

In developing for the SD cart, I discovered a quite unusual event-driven operation. The FPGA firmware boots and reads the file catalogue from the SD card before the Atari ROM even boots, and maps segments of the directory in ROM for retrieval and display by the boot menu. The firmware responds to messages from the boot ROM and in turn sends messages back to the boot ROM telling it when to repaint the display, reboot, etc. The main objectives here appear to have been getting the menu up on the screen as near instantaneously as possible, and keeping the boot ROM reasonably uncomplicated. In any case, the system works well, and the firmware loads even the largest ROM images into its internal RAM with little noticeable lag after a file is selected.

SD_Multicart_MenuWhile the original boot menu works perfectly well, the replacement (with slightly snazzier design and a few extra nods towards ease of use) is nearing completion. Keyboard and joystick operation is supported, and large volumes of CAR files can be browsed with ease.

Compatibility appears excellent. During menu development, Robin and I have tested a large selection of cartridge ROMs, all of which have performed flawlessly. What has impressed me most is that – even though I am not a gamer – this cartridge has provided solutions to issues I didn’t realize could be solved: namely, testing large cartridge ROMs in real-hardware environments without enduring long flashing operations. I can compile a 128KB AtariMax ROM, pop the SD card into my PC’s card reader, copy the file and have it booted up on the Atari in a matter of seconds. The fact the cartridge employs SD cards is another boon, since – unlike CF cards – the media is now inexpensive and ubiquitous.

As a first iteration, the Ultimate SD Cart is not without its quirks, and – as closely involved in the project as I have been – I’m still left with the feeling that the incredibly rapid development cycle was even faster than it needed to be, causing some features which obviously suggest themselves for inclusion to be relegated to a possible future firmware revision. On the other hand, the cartridge fulfils its original remit (fast, convenient and compatible cartridge emulation) superbly well, and since design and testing is only the first part of a large production run, it’s natural that Robin wanted to move things forward apace. In any case, extra features (such as hard disk functionality) could be seen as feature-creep, although they may find their way onto the board via firmware updates. In addition, since this is an open-source project, it offers a rare chance for third parties to develop for an original device with plenty of potential.

From a developer’s point of view, I would now not be without this device, since it’s massively speeded up my real-hardware testing cycle, and I can imagine that for anyone with a large collection of game or productivity ROMs or anyone wishing to develop and test cartridge-based software, the Ultimate SD Cart will prove indispensable.

You can pre-order your Ultimate SD Cart over on the AtariAge thread.

Note: illustrations show a pre-production cartridge. PCB colour and other details may differ on the production part.