▶ Skip to the index of episodes.
About this Project
As it happens, the Commodore PET 2001 is 40 this year (announced in January 1977 at the Winter CES, first units delivered in October). And, as it happens, I've a new toy. Sadly, it's not a PET (I don't even have a Cat), but the next best thing, Thomas Skibo's PET 2001 emulator. And, as it's written in JavaScript and changes and redistribution are permitted, I'm keeping playing around with it. Morever, I've been musing about some of the most classic video games lately, and while doing so, there was always this strange while tempting idea about doing some on the (virtual) PET.
Last time, we did a Computer Space simulator for a rather exclusive piece of hardware (one unit operational in total), this time, we'll redeem ourselves from any accusations of elitism by something more popular. But it won't be just a simple simulator, no, it'll be a Personal Computer Space Transactor (if you don't know what this would be, it's pretty much the same as a simulator, but using an even more inappropriate display technology).
Speaking of display technology, the PET (at least as delivered by Commodore) has no graphics mode, but just a 40 × 25 character display. And it's not in ASCII, but in PETSCII, including some weird character code assignments and an assortment of block graphics symbols. And, if this weren't strange enough, there's also a special encoding used by the video hardware, known as screen characters. However, there isn't much to write home about, as this all well known, because of the most popular computer of all times and PET's successor, the Commodore 64 (which had, of course, graphics modes and sprite graphics as well, features completely lacking on the PET). Anyway, it's always fun to play around with character graphics and even producing just a mockup by typing some patterns onto the screen is already strangely rewarding. As for our project, the real challenge will be to produce anything reminding of an arcade game with the limited resources of the graphics hardware, in order to put something onto the screen, which had been already retro when the first PETs were delivered.
Hardwarewise, the PET features a 6502 processor running at the standard 1 MHz — and we'll do this little project properly, in machine language. The operating system hasn't changed much for the 8-bit Commodore machines that were to follow the PET (the VIC 20, the C64, etc), so most of the stuff we'll need to know isn't much of a secret either. I've not decided on the tools yet, maybe we'll extend the emulation by a full web-based IDE in the process. Let's see.
P.S.: If you happen to be interested in the real thing, don't miss the project by Frank Linde, who is going to be playing around with the original PET hardware and rather advanced graphics from the future (think VGA).
- See here for release and download of the final program.
(Eventually, it became a program for C64, too.)
The Episodes
-
Episode #1: Character Graphics!
Where we lay out the main elements of the game and have some fun with PETSCII graphics, therby already figuring out some of the main constraints of our game.
-
Episode #2: (Re)cherchez la Machine
Where we are inspecting the machine, we're intending to recreate in software, and its basic technology a bit more thoroughly. Eventually, we even encounter the Spanish Inquisition. Prepare to expect the unexpected…
-
Episode #3: A Starry Afternoon
Where we finally start programming and put some stars in the sky, regardless of the hour or daytime. Also, a brief introduction to the 6502.
-
Episode #4: Alien Distractions
Some time has passed, but while we've some ideas on the implementation, there's still yet another distraction lurking around the next corner…
-
Episode #5: Sync!
Holy Capacitor, Batman! — We're back to code again, finishing sync and video mixing. Also, 7-segment digit displays, and why we won't halt to catch fire …
-
Episode #6: Attractive Saucers
Where we implement the saucers, here still in their "once friendly" state. Also, the game is already (ahem) running in attract mode.
-
Episode #7: Rocket (Phew!)
A rocket ship — at last — and some hassles.
-
Episode #8: Space Commander
Where we finally get some of the major code routines done, putting us in command of a maneuverable rocket ship.
-
Episode #9: Progress Update (The End is Nigh)
Work still in progress, see here for the latest updates.
-
Episode #10: Not the End, Yet, Still Some of a Wrap-Up
Some thoughts on the project and comparative experience in assembler coding.
-
Addendum I: The Quest Continues
See here for latest versions and updates on the project.
-
Addendum II: Release & Download
Finally, we're able to close this project properly … Binaries and source code are ready for download.
Update: We add C64 compatibility!
— finis —
Norbert LandsteinerApril/May 2017, Vienna, Austria
www.masswerk.at – contact me.
— This series is part of Retrochallenge 2017/04. —