A New Cartridge For An Old Computer

Although largely recognizable to anyone who had a video game console in the 80s or 90s, cartridges have long since disappeared from the computing world. These squares of plastic with a few ROM modules were a major route to get software for a time, not only for consoles but for PCs as well. Perhaps most famously, the Commodore VIC-20 and Commodore 64 had cartridge slots for both gaming and other software packages. As part of the Chip Hall of Fame created by IEEE Spectrum, [James] found himself building a Commodore cartridge more than three decades after last working in front of one of these computers.

[James] points out that even by the standards of the early 80s the Commodore cartridges were pretty low on specs. They’re limited to 16 kB, which means programming in assembly and doing things like interacting with video hardware directly. Luckily there’s a treasure trove of documentation about the C64 nowadays as well as a number of modern programming tools for them, in contrast to the 80s when tools and documentation were scarce or nonexistent. Hardware these days is cheap as well; the cartridge PCB and other hardware cost only a few dollars, and the case for it can easily be 3D printed.

Burning the software to the $3 ROM chip was straightforward as well with a TL866 programmer, although [James] left a piece of memory management code in the first pass which caused the C64 to lock up. Removing this code and flashing the chip again got the demo up and running though, and it’ll be on display at their travelling “Chips that Changed the World” exhibit. If you find yourself in the opposite situation, though, we’ve also seen projects that cleverly pull the data off of ancient C64 ROM chips for preservation.

14 thoughts on “A New Cartridge For An Old Computer

  1. Cartridges disappeared?

    What about USB sticks and uSD cards?
    They have not disappeared, but just gotten a bit smaller.

    If the U.S.A was so good, then why did they invent an USB?

    1. I think the Switch is a more apt example because the videogame/software cartridges contained the rom chips.
      There are some read only USB sticks, but they’re very uncommon.
      Really GBA was the last format that was the last one in the same essence of those early carts.

    2. No, they are completely different. A USB stick is a mass storage device which contains a filesystem that has to be mounted in order to view the data. Any programs on it would still have to be loaded into RAM if you wanted to run it.

      Not so with a cartrigde, it is literally a set of ROM chips with the program data all pre loaded.

      When plugged in it immediately becomes part of the address space and is visible to the CPU, which can start running the program immediately, no need to load anything.

      That’s the difference.

      1. Nothing stops you from using a filesystem on your NES cart, heck, you could even have a simple mapper with a cheap 8k flash, 32k of RAM and a 16 MByte SPI flash that you access by bitbanging. Just have the 8k as your BIOS and the 32k as your system RAM. Add the 8k you can have from the SRAM storage and you have 40k to do your biddings with 16 MByte of data in your very own filesystem.

        1. I totally agree, and I hope someone has made the system you described!

          My point about the diffence between a USB stick and a ROM cartridge still stands though. You could never turn a USB stick into a ROM cartridge, for example.

          1. You totally can, just cut the R/W line of the flash and tie it to ground. 😁

            But yeah, I get what you mean, ROMs are for the most part used memory mapped. There are exceptions though, the Lynx uses a cartridge that is read serially, the original concept even had that you could load games from tape.

  2. It’s possible to have more than 16KiB ROM/RAM by using the right hardware signaling as documented.
    The thing I really miss is support for injecting sound or video unlike some other systems, having that could have enhanced things enormously. Another slight gotcha is that the Color RAM is on a separate bus not available on the cartridge port so expanding that isn’t really possible. :/

    1. Injecting sound via the cartridge port is possible on many of the VIC-20’s (cartridge port pin-Y) but it is badly documented in many schematics and pin-outs (in most cases the pin is labelled as NC, because the earliest production batches didn’t have this feature.
      See VIC-20 schematic 251027-01 for example.
      But the fact that this info is not widely known and poorly documented combined with the fact that not all VIC-20’s have this functionality prevents developers from using it. By mentioning it here I hope to share this knowledge as it might be of use to somebody sometime.

Leave a Reply to 0xdeadbeefCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.