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 an area science and know-how museum?” Nicely, 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 means round U.S. museums, and, hopefully, the world.
Our Chip Hall of Fame celebrates microchips which have had a big 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, ought 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 means 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 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 Nineteen 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 just a few 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 appropriate with fashionable 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 plenty of free or cheap sources 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 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 worth for this energy was complexity. The video chip’s control registers, display bitmaps, text-screen knowledge, default and customized character units, sprites, and colour info all reside 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 accessible 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 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 drastically simplified due to 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 area remaining for a fortunate discover. I wished 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 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 obtained fortunate: I got here throughout the work of Marcello M., who had printed 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 integrated his code as one other subroutine.
Trendy Instruments For Writing C64 Software program
The coding was achieved utilizing the free IDE 65xx and Kick Assembler desktop software program. I used to be capable of take a look at the code utilizing the favored C64 Vice emulator, which allowed me to do helpful issues like analyzing reside 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 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 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 gained’t come as a shock to common readers that I already personal an unique C64, which I hook up with fashionable flat-screen shows by way of a RetroTink-2X Pro adapter. So I rigorously pushed the cartridge into its slot and turned the machine on.
Naturally, my C64 instantly froze up. I had forgotten to take away a little bit 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 way in which 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 individual: We’ll submit 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 searching for 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 diminished!
From Your Web site Articles
Associated Articles Across the Internet