Monday, September 29, 2025

Construct Your Personal Commodore 64 Cartridge

Have you ever ever thought “IEEE Spectrum is terrific, however I simply want I had a technique to expertise much more of it, maybe at a neighborhood science and expertise museum?” Effectively, I’m happy to say that your very particular want has been granted! In collaboration with the IEEE Historical past Heart and the IEEE International Museum and the assist of beneficiant donors, Spectrum’s Chip Corridor of Fame has been tailored right into a touring exhibit that has simply begun making its approach round U.S. museums, and, hopefully, the world.

Our Chip Corridor of Fame celebrates microchips which have had a major influence. Six of the chips from the corridor have been chosen to be a part of the “Chips That Shook The World” exhibit, together with artifacts embodying how every was used. One of many chosen was the 8-bit 6502 processor, so naturally we thought a Commodore 64 house pc, which used a 6502 variant, needs to be one of many artifacts. Which led to a different thought: Why not have the C64 run a program demonstrating an 8-bit CPU in motion?

That’s how I ended up, 35 years after I final programmed a C64, sitting at my workplace desk making a brand-new plug-in cartridge.

The C64 supported plug-in cartridges as a approach of distributing software program, and our demo program wanted to be placed on one. Every morning, the museum curator can simply activate the exhibit and presto! The demo program immediately begins operating. The alternate options would have required the curator to sort in instructions to load the demo manually.

However this comfort comes with two huge caveats: One, the demo has to suit into simply 16 kilobytes, the utmost measurement of a cartridge. Even by the requirements of the Eighties, that is small, as some C64 titles spanned lots of of kilobytes by loading knowledge in chunks from disk or tape. Two, the demo must be written in 6502 meeting and management the C64 video {hardware} instantly.

The components required to make a Commodore 64 cartridge. Cartridges require only some elements: a printed circuit board [bottom right], programmable reminiscence chip [bottom middle], and a few resistors, diodes, and a capacitor [top middle]. They’re mounted in a 3D-printed shell [top left and right]. To make the video output appropriate with fashionable screens, we used a RetroTink-2X Professional adapter [bottom left].James Provost

Luckily, from attending Classic Laptop Federation occasions over time, I knew there have been quite a lot of free or cheap assets that will make it simpler than ever earlier than to do that form of factor.

Step one was to determine simply how a lot I may do in 16 KB. The C64’s graphics {hardware} was groundbreaking in its day, able to displaying photos of as much as 320 by 200 pixels with a palette of 16 colours. It may additionally show eight sprites directly; every sprite is a moveable single-color 24-by-21 pixel bitmap. The value for this energy was complexity. The video chip’s management registers, display bitmaps, text-screen knowledge, default and customized character units, sprites, and shade info all reside in several areas scattered throughout reminiscence, with some knowledge truly residing in separate RAM and ROM chips.

So I sat down with the detailed reminiscence maps and video {hardware} programming guides accessible for the C64. (This abundance of knowledge is in stark distinction to the Eighties, when documentation was scant, even from Commodore itself). I labored out that I may cram in 9 screens of explanatory textual content, animated graphics, and sprites. Creating these screens, together with the customized character units and sprites they depend on, was significantly simplified because of the net C64 graphics editor at petscii.krissz.hu. The editor can output some outcomes as stand-alone meeting packages, which I tailored as subroutines in my demo code.

I had simply sufficient house remaining for a fortunate discover. I needed to show at the least one full-screen bitmapped picture, however a prerendered picture would have required 8 KB of knowledge, half the cartridge’s capability. As an alternative I made a decision to make use of a traditional hack of programmers for the reason that days of video games like Rogue and Elite: pulling free knowledge out of the construction of arithmetic by means of procedural technology.

Right here’s the place I bought fortunate: I got here throughout the work of Marcello M., who had revealed the supply for a C64 meeting program that shortly created a multicolor fractal Mandelbrot set utilizing simply 3.3 KB of code. With Marcello’s blessing, I included his code as one other subroutine.

Trendy Instruments For Writing C64 Software program

The coding was carried out utilizing the free IDE 65xx and Kick Assembler desktop software program. I used to be in a position to take a look at the code utilizing the favored C64 Vice emulator, which allowed me to do useful issues like analyzing reside reminiscence contents to seek out runtime bugs.

A diagram showing 64 kilobytes of RAM with a Kernal ROM occupying the top 8 KB, followed by 4 KB of character ROM, and then 8 KB of Basic ROM. Another column shows I/O and color RAM mapped to the same position as the character ROM, and two shadow ROM locations in lower memory. Finally a third column shows a 16 KB cartridge ROM overlapping the Basic ROM and the memory below it. Areas of the Commodore 64’s RAM have been mapped to issues just like the system ROMs, video-color reminiscence, and the bitmaps of characters, the latter of which have been truly mapped to a number of areas in RAM when accessed by the video {hardware}. A few of these mappings overlapped: Inserting a 16-KB cartridge routinely disabled the ROM storing the Fundamental interpreter. James Provost

The following step was to make a bodily cartridge. Once more, there’s fashionable assist, this time within the type of US $5 printed circuit boards that want only a handful of elements soldered in to make a cartridge. These elements embrace a programmable ROM chip that I picked up for $3 on eBay. I burned my code to the reminiscence chip with my trusty TL866 programmer and mounted it to the PCB, which in flip was mounted right into a 3D-printed cartridge case.

Then got here the second of fact. It in all probability gained’t come as a shock to common readers that I already personal an authentic C64, which I hook up with fashionable flat-screen shows through a RetroTink-2X Professional adapter. So I fastidiously pushed the cartridge into its slot and turned the machine on.

Naturally, my C64 instantly froze up. I had forgotten to take away a bit of little bit of memory-management code that made the demo work within the Vice emulator by disabling the ROM that shops the C64’s Fundamental interpreter. On the actual {hardware}, this snippet ended up disabling half the cartridge’s reminiscence. A fast edit and a visit again to the TL866 and I used to be able to strive once more. Success! I used to be lastly actually able to ship some software program, all the way in which to Upland Displays, the individuals constructing our touring show.

I hope you get an opportunity to see my little demo and our “Chips That Modified The World” exhibit in particular person: We’ll submit present and upcoming areas on the Chip Corridor of Fame web page. However within the meantime, whether or not you used the C64 again within the day, or are simply searching for a enjoyable coding problem, I like to recommend making an attempt your hand at programming this 8-bit traditional, now that so lots of the authentic ache factors have been diminished!

From Your Web site Articles

Associated Articles Across the Internet


Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles