The killer poke is a side effect of a workaround to increase draw speed on older model Commodore PETs. To summarize the problem, on early PETs an undocumented pin register was set low to disable waiting for the beam to return to the top left before accessing video memory. As Commodore made hardware changes for different models or to reduce cost the circuitry around the pin was redesigned. When the same register was changed on later models it caused a voltage drop on the flyback signal to the CRT. This could cause permanent hardware damage to the PET. If you want more in depth information about the killer poke, you should check out the 6502 page on the subject here: http://www.6502.org/users/andre/peti...oke/index.html .
When I first got my PET 4032 I had started researching it as much as I could. I found info on the killer poke early and immediately became hesitant to run any software I found on it. I did want to try some games so I set about to find a way to check for the poke. The first program I wanted to try was Lunar Lander so I loaded it over a datasette with a cassette to 3.5mm audio adapter. I thought I could just look through the code to see if it was there. Ha. That was naive. After watching `LIST` scroll for a while I knew I would need to do this on a modern PC. After finding a couple useful programs for working with TAPs and PRG files I have a workflow that allows program files to be searched for `59458` which is the killer poke register address.
This primarily covers BASIC programs for now. If you have a machine language program you want to check you may be able to just use a hex editor on the extracted PRG file and search for `E810`. I have somewhat tested this but I don't have a program at this time that is known to have a killer poke I can't know what a match would look like for sure.
The programs you will need are:
- TAPClean, TAP PRG extracting: https://sourceforge.net/projects/tapclean/
- droiD64, D64 PRG extractign: https://sourceforge.net/projects/droid64/
- BasEdit, A PRG BASIC editor: https://sourceforge.net/projects/baseditnet/
- Bless, A HEX editor: http://home.gna.org/bless/index.html
Programs that you may want
- VICE PET Emulator: http://vice-emu.sourceforge.net/
- CBM Studio, A native and more complex BASIC IDE: http://www.ajordison.co.uk/
TAPClean and Bless have versions for all three major OSes. droiD64 is a jar so is also multiplatform. BasEdit is windows only and uses it's own UI design but works fine under wine-1.6.2 on Ubuntu 16.04. I'm open to suggestions for BASIC editors that are cross platform.
This procedure will convert a TAP or D64 file into a PRG file and open it to search for the poke address.
1-TAP: Run TAPClean from the command line on your TAP file with the following parameters "tapclean -20 -no64eof -noaddpause -o file.tap -doprg" it will generate a folder with the PRG files from the TAP
1-D64: Run the droiD64 jar file. It's an Orthodox File Manager like Star/Midnight Commander. On one side open your D64 file. On the other side navigate to where you want to save the PRG file. Then select the PRG from the disk and click copy at the bottom.
2: Start up BasEdit and open the PRG file. If the program is short look for a line with "SYS". That means you have a machine language program.
3-BASIC: Hit F3 to search the file. Type in, yeah no paste, "59458" to look for killer pokes
3-MACHINE: Same disclaimer as before, I don't have a known killer machine program so I cannot guarantee the that is is correct. Open the PRG file with the hex editor and search for `E842`.
This should be all you need to check for a killer poke in a program you want run on your real pet.
`POKE 59468` is used to set the case of the letters. It looks similar to `95458` but is fine.