Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

XE Multicart

A multi-game cartridge for the Atari 400/800/XL/XE with software game selection which can hold up to 127 games!

multicart menu

How it works?

A 74HCT373 latch is used for extra address pins, it's accessed by writing to the cartridge control block ($DF00) causing a bank switch. After selecting appropriate ROM bank, the firmare resets the console in turn starting the game. To select another game, reboot your Atari.

Assembly instructions


Assuming that you already have the PCBs on hand, either by ordering them on-line or creating them yourself, the assembly is pretty simple - just solder the 74HTC373 latch, the transistor and the passive components. It is highly recommended to solder a socket for the memory chip as it makes it much easier to re-program it. Also, keep in mind that the component side goes into the console facing down, so prepare your case accordingly.

Memory chip configuration

The PCB layout of this cartridge is customizable - you can fit any 28/32-pin JEDEC-compliant EPROM chip in the 27C line or compatible flash memory chip with size ranging from as low as 64 kbit up to 8 mbit. Fitting larger chips means you will be able to store more game ROMs (up to 127 total), but you can also use this layout without the game selection firmware to store any single standard 8k/16k game you want.

Jumper settings

There are four jumpers on the PCB - JP1 to JP4 - oriented vertically when looking at the top layer with the edge connector facing down:

      0   0   0   0\ UP
DOWN /0   0   0   0/
     \0   0   0   0
     JP1 JP2 JP3 JP4

These are used to configure the cartridge for the appropriate memory chip. The following table lists jumper settings for various common configurations (UP means "short top two pins", DOWN means "short bottom two pins" and X means "don't care"):

Memory chip size JP1 JP2 JP3 JP4
64k (27C64) X X UP UP
128k (27C128) X X UP UP
256k (27C256) X X UP DOWN
512k (27C512) X X UP DOWN
1m (27C010) UP UP X DOWN
2m (27C020) UP UP DOWN DOWN

Building the firmware


To succesfully build the firmware for the multicart, you will need to set up the following dependencies on your system:

  • make - the Make build system,
  • python3 - Python programming language version 3.*,
  • gcc - GNU Compiler Collection,
  • cc65- the CC65 compiler.


In order to build the firmware & a cartridge image you will need some standard 8k/16k ROM files (obtainable freely on the Internet). Install all the dependencies, put your ROMs into the roms/ directory and type:


This will run a script that automatically detects and arranges the games, builds the firmware and compiles a cartridge image ready for burning with your favourite EPROM burner.

Alternatively, you can supply a custom ROMs directory like this:

make ROMS=path/to/roms/directory

If you encounter any troubles while building, make sure to rebuild everything cleanly:

make clean && make

Building from a docker container

In order to build the container itself run the following command in project directory

docker build -t atari_xe_multicart:latest .

After the container is ready to use run the following command to create cart.bin file. It assumes that .rom files are inside the /roms directory inside project directory.

docker run -ti --rm -v $(pwd)/roms/:/input/ -v $(pwd):/output/ atari_xe_multicart

Running in an emulator

Multicart images don't work in any emulators that I know of, because they are using a custom (if simplistic) bank-switching mechanism. For testing purposes, you can run just the menu.bin (the game selection firmware) by loading it as a standard 8k cartridge ROM in your favourite Atari 800/XE emulator. For example:

atari800 -xl -xlxe_rom path/to/ATARIXL.ROM -cart menu.bin

It'll display the game selection menu, but any attempts at selecting a game will result in restarting the game selection menu.


Software & hardware licensed under the MIT license (see LICENSE file for details). The OSHW logo comes from the BFL library, licensed under CC-BY-SA. Any commercial product names seen on software screenshots are for demonstration purposes only and are not included with this product.