Have you ever ever thought “IEEE Spectrum is terrific, however I simply want I had a approach 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 History Center and the IEEE Global Museum and the assist of beneficiant donors, Spectrum’s Chip Hall of Fame has been tailored right into a touring exhibit that has simply begun making its method round U.S. museums, and, hopefully, the world.
Our Chip Hall of Fame celebrates microchips which have had a big impression. Six of the chips from the corridor had 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 residence laptop, 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 method 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 working. 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 hundreds of kilobytes by loading knowledge in chunks from disk or tape. Two, the demo must be written in 6502 assembly and management the C64 video {hardware} instantly.
Cartridges require only some parts: a printed circuit board [bottom right], programmable memory 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 suitable with trendy screens, we used a RetroTink-2X Professional adapter [bottom left].James Provost
Luckily, from attending Vintage Computer Federation events over the years, I knew there have been numerous free or cheap assets that may make it simpler than ever earlier than to do that form of factor.
Step one was to determine simply how a lot I might 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 might additionally show eight sprites directly; every sprite is a moveable single-color 24-by-21 pixel bitmap. The worth for this energy was complexity. The video chip’s control registers, display bitmaps, text-screen knowledge, default and customized character units, sprites, and shade data all stay in numerous areas scattered throughout reminiscence, with some knowledge really residing in separate RAM and ROM chips.
So I sat down with the detailed memory maps and video hardware programming guides out there for the C64. (This abundance of data is in stark distinction to the Eighties, when documentation was scant, even from Commodore itself). I labored out that I might 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 tremendously simplified because of the net C64 graphics editor at petscii.krissz.hu. The editor can output some outcomes as stand-alone meeting applications, 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 very least one full-screen bitmapped picture, however a prerendered picture would have required 8 KB of knowledge, half the cartridge’s capability. As a substitute I made a decision to make use of a basic hack of programmers because the days of video games like Rogue and Elite: pulling free knowledge out of the construction of mathematics by the use of procedural generation.
Right here’s the place I acquired fortunate: I got here throughout the work of Marcello M., who had revealed the supply for a C64 assembly program that rapidly 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.
Fashionable Instruments For Writing C64 Software program
The coding was executed utilizing the free IDE 65xx and Kick Assembler desktop software program. I used to be capable of check the code utilizing the favored C64 Vice emulator, which allowed me to do useful issues like inspecting stay reminiscence contents to search out runtime bugs.
Areas of the Commodore 64’s RAM had been mapped to issues just like the system ROMs, video-color reminiscence, and the bitmaps of characters, the latter of which had been really 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 robotically disabled the ROM storing the Primary interpreter. James Provost
The subsequent step was to make a bodily cartridge. Once more, there’s trendy assist, this time within the type of US $5 printed circuit boards that want only a handful of parts soldered in to make a cartridge. These parts 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 most likely gained’t come as a shock to common readers that I already personal an unique C64, which I hook up with trendy flat-screen shows by way of a RetroTink-2X Pro 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 Primary interpreter. On the true {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 best way to Upland Exhibits, the folks 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 publish 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 attempting your hand at programming this 8-bit basic, now that so most of the unique ache factors have been diminished!
From Your Website Articles
Associated Articles Across the Net

