Have you ever ever thought “IEEE Spectrum is terrific, however I simply want I had a strategy 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 World 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 manner round U.S. museums, and, hopefully, the world.
Our Chip Corridor of Fame celebrates microchips which have had a major affect. 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 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 manner 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 options would have required the curator to kind in instructions to load the demo manually.
However this comfort comes with two massive caveats: One, the demo has to suit into simply 16 kilobytes, the utmost dimension of a cartridge. Even by the requirements of the Nineteen Eighties, that is small, as some C64 titles spanned a whole lot 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} straight.
Cartridges require just a few parts: 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 Pc Federation occasions over time, I knew there have been a number of free or cheap assets that might 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 photographs 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 management registers, display screen bitmaps, text-screen knowledge, default and customized character units, sprites, and coloration data all stay in numerous places scattered throughout reminiscence, with some knowledge really residing in separate RAM and ROM chips.
So I sat down with the detailed reminiscence maps and video {hardware} programming guides out there for the C64. (This abundance of data is in stark distinction to the Nineteen 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 significantly simplified due to 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 area remaining for a fortunate discover. I needed to show a minimum of one full-screen bitmapped picture, however a prerendered picture would have required 8 KB of information, half the cartridge’s capability. As a substitute 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 the use of procedural technology.
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 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 accomplished 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 helpful issues like inspecting stay 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 really 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 routinely disabled the ROM storing the Primary interpreter. James Provost
The subsequent 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 parts soldered in to make a cartridge. These parts embody 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 reality. It most likely received’t come as a shock to common readers that I already personal an unique 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 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 attempt once more. Success! I used to be lastly actually able to ship some software program, all the best way to Upland Reveals, 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 individual: 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 traditional, now that so most of the unique ache factors have been diminished!
From Your Web site Articles
Associated Articles Across the Net