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 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 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 dwelling 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 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 options would have required the curator to sort in instructions to load the demo manually.
However this comfort comes with two large 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 elements: 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
Happily, from attending Vintage Computer Federation events over the years, I knew there have been quite a lot of free or cheap sources 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 pictures of as much as 320 by 200 pixels with a palette of 16 colours. It might additionally show eight sprites without delay; every sprite is a moveable single-color 24-by-21 pixel bitmap. The value for this energy was complexity. The video chip’s control registers, display screen bitmaps, text-screen knowledge, default and customized character units, sprites, and shade info all dwell in several places scattered throughout reminiscence, with some knowledge truly dwelling in separate RAM and ROM chips.
So I sat down with the detailed memory maps and video hardware programming guides obtainable 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 enormously simplified due to the web 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 an alternative I made a decision to make use of a basic hack of programmers for the reason that 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 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.
Fashionable Instruments For Writing C64 Software program
The coding was finished 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 dwell reminiscence contents to seek out runtime bugs.
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 places in RAM when accessed by the video {hardware}. A few of these mappings overlapped: Inserting a 16-KB cartridge mechanically 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 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 most likely gained’t come as a shock to common readers that I already personal an unique C64, which I connect with trendy flat-screen shows through 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 just a little 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 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 attempt once more. Success! I used to be lastly actually able to ship some software program, all the best way to Upland Exhibits, 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 publish present and upcoming places 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 in search of a enjoyable coding problem, I like to recommend making an attempt your hand at programming this 8-bit basic, now that so most of the unique ache factors have been decreased!
From Your Web site Articles
Associated Articles Across the Net