Most programs are best run with a keyboard including a numeric keypad.
(If you don’t have one, you may go to the joystick settings by clicking the tiny joystick icon and select the “keyboard” option. This will map the cursor keys to the virtual PET’s numeric keypad, when
Lately, there have emerged some amazing programs that show what’s possible on the humble PET. You can access these programs also inside the emulator by clicking the star icon next to the title. Or just use this shortcut link. (Mind that these programs require accurate hardware emulation and may not run as intended on other emulators.)
Back To The PET by shiru8bit, 2022
A “proper demo” that redefined dynamic content on the PET, especially for music!
Here presented in a “hot” rendering mode with long persistence (see the context menu of the emulated screen, there’s also an option for the pixel aspect ratio.)
A Bright Shining Star by Genesis Project, 2022
This shows what’s possible with graphics on the PET, if you just try hard enough. Be assured, the PET still has character graphics only! (No sound.)
Faulty Robots by shiru8bit, 2021
A CB2 music album, and an attractive program, as well! Presented with kind permission by Shiru, head over to Shiru’s Bandcamp page in order to support him. You can read more about this album, the background story of the tracks, and music on the PET in general in this blog post.
invader.prg (original)
Commercial Space Invaders clone for the 3032 and the 4032. Written in machine language.
Controls: 4, 6 and 'A'.
Play it online … (Press any key to pass the first screen.)
See also:
invader-joy.prg
As above, but with added joystick support (PA0, PA1, PA5).
Keyboard controls: 4, 6 and 'A'.
Play it online … (Press any key to pass the first screen.)
space_invader.prg
Free Space Invaders for the 2001 and the 3032.
Controls: '.', '=' and SPACE.
See also:
galaxy-invdr-joy.prg
As above, but with added joystick support (PA0, PA1, PA5).
Keyboard Controls: '.', '=' and SPACE.
galaga.prg
A great port of Galaga by Henrik Wening (1982), maybe the best arcade port for the PET ever.
Various control schemes selectable inside the program,
including an unusal joystick scheme (left: PA3, right: PA5, fire: PA0).
super-glooper.prg
A Pac-Man port for 40-column PETs by D.E. Anthony 1981.
Controls: 8, 4, 6, 2 on the numeric keypad. You may also use '5' for moving down.
miner.prg
Miner game for 40-column PETs from Cursor #19, copyright 1980 Ron Longfellow.
Controls: 2, 4, 6, 8 for movements.
galactic_attack.prg
Arcade game reminiscent of Galaxian.
Controls: 4, 6 and SHIFT for fire. (SPACE to restart.)
cosmiads_uni.prg
Cosmiads — Excellent implementation of Galaxian.
Controls: Q, E, ↑ (Use TAB for the up-arrow in the emulator.)
aliens!.prg
A cute, arcady shooter.
Controls: 4, 6, SHIFT
phantom-fighter.prg
A horizontally scrolling shooter, defend the Superstition Moantain from UFOs! (Magic Carpet Software, 1981)
Controls: 4: up, 6: down, SHIFT for fire
vortex.prg
A fun little shooter game, hunt the flying saucer! Not that easy as it is cute. (Magic Carpet Software, 1982)
Controls: 4: left, 6: right, SHIFT for fire
space.prg
A tiny, 1st person space shooter in BASIC — modified version of game from Cursor #8.
Controls: numeric keypad, SHIFT
3d_star_trek.prg
The excellent 3D Star Trek by M P McDonald and M H Clements for 3000 series 40-column PETs. Does not fully work on the 4000 series, and not at all on the 8000 series.
Keys: D=damage report, I+number=impulse drive, L=long range scan, P+number=launch photon torpedo (steer with shift and normal steering keys), home=steer counter clockwise coarse, down=steer counter clockwise fine, del=steer clockwise coarse, right=steer clockwise fine, maybe other keys?
Battle stations: number keys; space to fire.
See the official manual: Pet_3D_StarTrek.pdf.
pong-joysticks.prg
Pong with several options.
Adapted for dual joysticks (“Stupid PET Tricks” adapter) by Jim64
computerspace2001.zip (includes prg file for PET, 6502 assembler source, and a C64 version)
Computer Space 2001 — My own game for the PET 2001, a simulation of Computer Space, the very first arcade video game (1971), written in machine language in April/May 2017 (for RetroChallenge 2017/04). See here for details.
Controls: A, S (D), (J) K, L.
dragon.d64
Tower And Dragon is a new PET game (2023) by Jason Cook and probably the most complex game to run on an 8K PET.
Notably, the game introduces an entirely new music engine for the PET on its splash screen, the BuzzKick engine by shiru8bit, rendering audio at a previously unheard resolution.
Tower And Dragon is a classic dungeon crawling adventure with primary and offhand weapon, armor, quest storyline, moving walls, teleportation, and unique tilesets and monsters for each dungeon level. Your character starts out just after climbing down the stairs into an ancient ruin, discovered by following a dream.
“The game is a tribute to the game that inspired me to become a programmer: ‘Dungeon’ from 1979.
Tower And Dragon is by far the best game ever released for an 8K Commodore PET and is playable by disk drive or tape cassette on ROM1, ROM2, and ROM4 systems. You can play with more memory, but part of the design was to make sure the game would work on some of the oldest stock PET systems still around. Designing under these tight constraints was a monumental task where every byte counted.”
Watch a making-of video on YouTube. (Yes, we do have audio! :-) )
Download the cassette version (and read-me): TowerAndDragon.zip
Release notes: hub.inktada.com/channel/toweranddragon.
The game supports SNES-type controllers.
tut-tut.prg
Tut-Tut is an Egyptian tomb themed action puzzle game, ported from an original Sinclair Spectrum version to the PET by Dave Curran (Tynemouth Software, 2021).
Tut-Tut started life as a type-in BASIC program for the ZX Spectrum, by David Stephenson, published in Paleotronic magazine in November 2019, and an enhanced version was soon ported to other British micros and the TRS-80 MC-10. The PET version not only builds on this, but also adds sound, as well. Read more about the game and its background in this blog post by Dave Curran.
Official game page & download (name your price/donation): tynemouth.itch.io.
See the “The Future was 8bit” shop for Tut-Tut on physical media (casette).
The game is here provided by kind permission of Tynemouth Software / Dave Curran.
Left: O or 4, right: P or 6, up: Q or 8, down: A or 2. (R resets a level, W for pause.)
The game also works with the PET (Joe Travis) joystick interface.
tetris.prg
Pet Tetris V1.3 by Tim Howe 15, March 2010. (Requires at least 16K of memory.)
From the readme-file:
"This is probably the last game EVER to be written for the PET!
It is 30% assembly code and 70% C, and has been compiled with
cc65. Source code should be available via the cc65 website.
It requires a 40 column machine with BASIC 2 ROMS. Unfortunately
it does not run under BASIC 4 (4000 series). This may be something
that I can rectify in due course."
10 Line Adventure (d64-file, VIC 20)
Einar Saukas' "Tenliner Cave Adventure" (2016) for the Sinclair ZX81 ported to the VIC 20 by Robin Harbron (2019).
An entire (while admittedly tiny) text adventure in just 10 lines of BASIC!
For Einar Saukas' original entry to the BASIC Tenliners Competition 2016 see the entry at spectrumcomputing.co.uk, for the port to Commodore Basic see Robin Harbron's site and this YouTube video.
The VIC 20 BASIC code runs happily on the PET, since both machines share essentially the same BASIC and the start address is overwritten in BASIC mode. The first link below just loads the program (in order to allow you to list the source), type RUN
+ <ENTER> to start the game.
Explore it online — just loads the program — or
Run it online — loads and runs the program —
Ten-Line Canyon Run
A simple game of my own, demonstrating some hacks exploiting strings in Commodore BASIC.
Follow the on-screen instructions. Requires ROM 2.
Norbert Landsteiner, March 2020.
The game is available for download as a PRG-file ( 10line-canonrun.prg) and as a text file with escaped PETSCII screen characters ( 10line-canonrun.txt).
Jim Orlando may be the most prolific game developer for the PET at the moment. His games certainly deserve a section of their own:
defender2020.prg
Defender 2020 for Commodore PET.
A version of the arcade game Williams Defender for the PET written in 2020 by Jim Orlando. See the write-up at:
medium.com/@jim.orlando/a-new-forty-year-old-video-game-54a0cd1b5f00.
The game supports various PET versions, the updated version presented here adds the 8032 to the list and includes a few bug fixes.
Requires ROM 2.0 and 32K of memory. Controls are configured at the start of the game.
Defaults: Q, A … up, down, Z … reverse direction, K … advance, L … fire laser, X … start.
twrdef2021.prg
A version of DeskTop Tower Defense for Commodore PET written by Jim Orlando over the 2020 holidays. See the write-up at:
jim-orlando.medium.com/another-new-game-for-my-forty-year-old-8-bit-computer-ba8436e52fe9.
Requires ROM 2.0 and 32K of memory. Various PET versions are auto-detected by the game.
Controls are to be configured at the start of a game.
loderunner.prg
This is classic Lode Runner for the PET by Jim Orlando, 2021. A polished game including iris animations rarely seen on the PET.
Have a look at this video for a preview and also for a few hints on how to beat the first five levels: "Lode Runner on Commodore PET levels 1-5" (YouTube).
Requires ROM 2.0 and 32K of memory. The PET version is auto-detected by the game.
Controls are to be configured at the start of a game.
petportal!.prg
This is, well, Portal for the PET, again by Jim Orlando, 2021. It's the PET version of Portal2D, which itself was a tribute to the award winning game Portal from Valve Software.
Requires 32K of memory. The PET version is auto-detected by the game.
Controls are to be configured at the start of a game.
pzlmgs.prg
PETSCII Zombie Lemmings for Commodore PET.
A Lemmings-like game done in PETSCII graphics for the Commodore PET computer. Coded for TOJam game jam weekend in May 2021. — Who says you need colour graphics, 3D, multichannel sound and any more than 8-bits to have fun?
See also: PETSCII Zombie Lemmings page at jimbo.itch.io or this demo video on YouTube.
Requires 32K of memory.
Controls: S,F,E,D to move cursor left, right, up, down. J,L to select ability. RETURN to give ability.
N to nuke all lemmings. SPACE BAR to pause the game.
trekwar.prg
TrekWar! for Commodore PET.
A Star Trek action game for the Commodore PET. Shoot those pesky Klingon ships, and gather dilithium crystals to drop them at their storage facilities … all while making sure you don't run out of energy or have your shields breached.
See also: TrekWar! page at jimbo.itch.io or this demo video on YouTube.
Requires 32K of memory.
Controls: W,A,S,D to move cursor left, right, up, down. Q,E to turn. J to warp forward. K to fire photon torpedos.
petpanic!.prg(2023)
PET Panic!
The arcade game Space Panic was the first “platformer” game, and it inspired more popular games of the time such as Lode Runner and Donkey Kong. There were many different versions of Space Panic on the original 8-bit machines, including Apple Panic which won a number of game awards. This is an updated version for the Commodore PET.
See also: PET Panic! page at jimbo.itch.io or this demo video on YouTube.
Requires 32K of memory.
Controls: W,A,S,D to move cursor left, right, up, down. J to dig. I to fill.
wannapet.prg
WannaCry Decrypt0r for the PET ... ;-)
Try it online …
(C64 version: wannapet_c64.prg.)
petrabbit.prg
Bad Rabbit for the PET ... ;-)
(Not related to the "PET Rabbit" cassette fast loader utility.)
Try it online …
BASIC source code: petrabbit.txt
(For C64 ports see line 2999.)
digital-clock.txt
Who doesn't love a 7 segment display? Here you are, displaying a digital 24h clock.
mandelbrot.txt
BASIC source for rendering the Mandelbrot set.
(Originally meant as a demo for the text import and conversion feature of the emulator.)
Type RUN and hit ENTER to start it in the emulator.
mandelbrot2.txt
An even prettier version of the Mandelbrot set featuring a configurable pattern string.
mandelbrot3.txt
Like "mandelbrot2.txt", but extending over the maximum available screen space of the PET 2001, also marginally slower.
mandelbrot-display.txt
Impress your friends by your PET's speed using this static renderer of the Mandelbrot set. :-)
(Replicates the output of "mandelbrot3.txt".)
Try it online …
(PRG-file: mandelbrot-static.prg.)
life.txt
In memoriam John Horton Conway (26 Dec. 1937 – 11 Apr. 2020), written in BASIC.
pet2001-logo.txt
A welcome screen featuring the "chicken lips" logo and the name of the machine, written in BASIC.
Try it online …
(PRG-file: pet2001-logo.prg.)
lissajou.txt
Lissajou plots as a demo for emulated "hi-res" graphics, after "Programming the PET/CBM" by Raeto West (1982), p. 129.
3d-business-graphics.txt
BASIC source for the famous 3D business graphics featured on the box art of the Europe/PAL version of the Commodore 64, here optimized for the PET.
seasonsgreetings2017.txt
Recreating one of the animated screens of the 1982 Christmas Demo for the Commodore 64 as a BASIC program for the PET.
Requires 40 columns screen and at least 8K of RAM.
Try it online …
(PRG-file: seasonsgreetings2017.prg.)
maze.txt
The well known BASIC one-liner, generating a maze from just two characters.
Try it online …
(PRG-file: maze.prg.)
maze2.txt
A variant from the book "10 PRINT CHR$(205.5+RND(1)); : GOTO 10" (Nick Montfort et al.; MIT Press, 2013). Yes, the title of the book is the one-line program listed above!
Try it online …
(PRG-file: maze2.prg.)
maze3.txt
And yet another variant, providing just a bit of more variety.
Try it online …
(PRG-file: maze3.prg.)
joystick-test.prg
A simple program to test the PET (Joe Travis) dual joystick adapter.
Adapter Info
Pinout, Port A (User Port):
Player 1 Up ....... PA0 (C) Player 1 Down ....... PA1 (D) Player 1 Left ....... PA2 (E) Player 1 Right ....... PA3 (F) Player 1 Fire ....... PA0 + PA1 (C + D) Player 2 Up ....... PA4 (H) Player 2 Down ....... PA5 (J) Player 2 Left ....... PA6 (K) Player 2 Right ....... PA7 (L) Player 2 Fire ....... PA4 + PA5 (H + J)
Read joystick state from VIA data register A (DRA: 0xE841
).
Pins are active low (0xFF
= no button pressed).
(Make sure the data direction register DDRA at 0xE843
is set to 0
= all pins read.)
joystick-test-spt.prg
A simple program to test the “Stupid PET Tricks” dual joystick adapter.
(This uses the same signals as the above, but with different assignments. If the above works for you, this one should as well, and vice versa.)
Adapter Info
Pinout, Port A (User Port):
Player 1 Left ....... PA0 (C) Player 1 Right ....... PA1 (D) Player 1 Up ....... PA2 (E) Player 1 Down ....... PA3 (F) Player 1 Fire ....... PA2 + PA3 (E + F) Player 2 Left ....... PA4 (H) Player 2 Right ....... PA5 (J) Player 2 Up ....... PA6 (K) Player 2 Down ....... PA7 (L) Player 2 Fire ....... PA6 + PA7 (K + L)
Read joystick state as above (PET dual joystick adapter).
snes-test.prg
A simple program to test the TexElec SNES adapter for serial SNES controllers.
This one uses the full range of the 12 buttons of the classic SNES controller (4 directions and 8 action/function buttons).
Adapter Info
Pinout:
User port F (PA3) ..... Clock User port J (PA5) ..... Latch User port K (PA6) ..... Data
SNES serial controller polling sequence:
B, Y, Select, Start, Up, Down, Left, Right, A, X, Left-Shoulder, Right-Shoulder
How to poll (using VIA data register A):
0) Set up data direction in DDRA (0xE843
) to 0x28
(PA3 and PA5: write, others: read), once
1) Latch controller state by writing 0x20
to DRA (0xE841
): PA5 = high
2) Instruct the controller to apply the (first) button state by writing 0
to DRA (0xE841
): PA3+PA5 = low
3) Read button state from DRA (0xE841
) bit 6 (PA6): state & 0x40 == 0
→ pressed (active low)
3) Clock the controller by writing 0x08
to DRA (0xE841
): PA3 = high
4) Continue with (2) for 12 button states in total
For the next polling sequence start over at (1).
petdemo.d64 … Explore disk image online …
△! Caution: If you're using these files on a real machine with a CRTC chip, be aware that some of the programs may use the KILLER POKE.
Some programs may require more than the standard 8K of RAM, have a look at the respective file size.
PETGMS01.D64 … Explore disk image online …
PETGMS02.D64 … Explore disk image online …
PETGMS03.D64 … Explore disk image online …
PETGMS04.D64 … Explore disk image online …
PETGMS05.D64 … Explore disk image online …
PETGMS06.D64 … Explore disk image online …
PETGMS07.D64 … Explore disk image online …
PETGMS08.D64 … Explore disk image online …
PETGMS09.D64 … Explore disk image online …
PETGMS10.D64 … Explore disk image online …
PETGMS11.D64 … Explore disk image online …
PETGMS12.D64 … Explore disk image online …
A D80 disk image, containing mostly games:
system_2001-8050.d80 … Explore disk image online …
assemblers.d64
A disk image including all kind of programming utilities, like 6502 Assembler & Disassembler, Micro Assembler & Disassembler, and SuperMon …
Note: SuperMon Commands .A SIMPLE ASSEMBLER .A 2000 LDA #$12 .D DISASSEMBLER: disassembles 22 lines of instructions (can modify first 3 bytes with cursor/return keys) .D 2000 .P PRINTING DISASSEMBLER: prints disassembly, set up printer beforehand (OPEN 4,4:CMD4) .P 2000,2040 .I SINGLE STEP: run step by step, call register display with .R and set the PC to the desired first instruction < for single step RVS for slow step SPACE for fast step STOP to return to monitor .F FILL MEMORY .F 1000 1100 FF fills the memory from $1000 to $1100 with FF .G GO RUN: go to address in the PC register display and begin run .G 1000 .H HUNT MEMORY: hunt thru memory for specified string or instructions (32 bytes max) .H C000 D000 20 D2 FF .L LOAD: load first program from cassette #1 .L "RAM TEST" loads program named RAM TEST from cassette #1 this command leaves the BASIC pointers unchanged .M MEMORY DISPLAY: display memory in specified range (can modify with cursor/return keys) .M 0000 0080 .R REGISTER DISPLAY: displays the register values saved when SUPERMON was entered (can modify with cursor/return keys) .S SAVE: save specified program name to cassette #1 from specified address .S "PROGRAM NAME",01,0800,0C80 .T TRANSFER MEMORY: transfer memory in range 1000 to 1100 to addresses starting at $5000 .T 1000 1100 5000 .X EXIT TO BASIC: return to BASIC. the stack value saved when entered will be restored. Care should be taken that this value is the same as when the monitor was entered. A CLR in BASIC will fix any stack problems.
For further programs see www.zimmers.net/anonftp/pub/cbm/pet/ALLFILES.html.
(You may drag and drop a downloaded file onto the emulator's screen to run it.)
PET_User_Manual_(2001-8).pdf
PET 2001-8 Personal Computer User Manual
Commodore Business Machines, Inc., October 1978
Commodore_PET_2001_Quick_Reference.pdf
Pocket Reference Guide to Commodore's 2001 PET,
Leading Edge Computer Products, 1979
The manuals were retrieved from public archives at www.zimmers.net/anonftp/pub/cbm/manuals/pet/ and www.commodore.ca/commodore-manuals/.