* COMPOWINNER - a short demo for Forndata 2022
** Target machine
Commodore PET 8032 with Basic v4.0 (* see note at bottom).
As I don't have access to a real machine, I have only tested it in
Vice 3.5.
The demo creates a few sound effects on PETs with a sound chip -
should run fine on machines without sound chips too.
** Starting the demo in Vice
See the attached file run.sh which contains the command I use to start it.
Notable flags include the
-drive8type 2031
-dos2031 "vice/system/DRIVES/dos2031"
as xpet can't find the demo binary without them.
** Is it safe to run on hardware? What about the "killer POKE"?
"This is THE POKE of computer lore, the command that WILL physically
break a computer! Of course other commands and methods are known that
can potentially cause damage (usually to disks, hard drives or other
mechanical units), but this is the most notable mainly because it was
a command somewhat commonly used and it affects solid-state circuitry."
As I don't have a real machine, I can't be sure, so run it at your own
risk. I have taken the following measures to make sure it doesn't
happen:
- avoid writes to memory address $e842
- monitor the Vice log for it's warning message:
"VIA: Warning - PET: Killer POKE! might kill a real PET!"
The FAQ has this to say about how to know when a killer POKE has occured:
"When active, the screen starts to warp after about the third line and the display stops around the fifth, the keyboard is also unresponsive. When a PET is in this mode, the only solution is to turn it off, FAST!"
So when running the demo for the first time, you could be ready on the
power switch if you want to feel extra safe.
Read more about the killer POKE here:
https://portcommodore.com/dokuwiki/doku.php?id=larry:comp:commodore:pet:pet_faq-programming#what_is_the_killer_poke_and_should_i_worry_about_it
** Inspiration
I got curious about the PET when I happened to find the demo No Pets
Allowed by Orb, and found a writeup they made about it.
Enjoy!
Hedgewizard // SGC
*) I use a kernal routine from Basic to place the cursor at a specific
point at a stage of the demo - but if you have another version of
Basic it's probably OK, the worst thing that will happen is that the
cursor will be located in the wrong place.