Some Programs to Run on the PET 2001

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 CAPS LOCK is engaged.)

Inspirational Content (Demos)

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.)

Run it online

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.)

Run it online

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.

Run it online



Classic PET Games

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:

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.)

Free Space Invaders for the 2001 and the 3032.
Controls: '.', '=' and SPACE.

Play it online

See also:

As above, but with added joystick support (PA0, PA1, PA5).
Keyboard Controls: '.', '=' and SPACE.

Play it online

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).

Play it online

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.

Play it online

Miner game for 40-column PETs from Cursor #19, copyright 1980 Ron Longfellow.
Controls: 2, 4, 6, 8 for movements.

Play it online

Arcade game reminiscent of Galaxian.
Controls: 4, 6 and SHIFT for fire. (SPACE to restart.)

Play it online

Cosmiads — Excellent implementation of Galaxian.
Controls: Q, E, ↑ (Use TAB for the up-arrow in the emulator.)

Play it online

A cute, arcady shooter.
Controls: 4, 6, SHIFT

Play it online

A horizontally scrolling shooter, defend the Superstition Moantain from UFOs! (Magic Carpet Software, 1981)
Controls: 4: up, 6: down, SHIFT for fire

Play it online

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

Play it online

A tiny, 1st person space shooter in BASIC — modified version of game from Cursor #8.
Controls: numeric keypad, SHIFT

Play it online

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.

Play it online

Pong with several options.
Adapted for dual joysticks (“Stupid PET Tricks” adapter) by Jim64

Play it online

New PET Games   (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.

Play it online

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):
Release notes:

The game supports SNES-type controllers.

Play it online

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):
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.

Play it online

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."

Play it online

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, 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).

Play it online

New PET Games by Jim Orlando

Jim Orlando may be the most prolific game developer for the PET at the moment. His games certainly deserve a section of their own:

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:

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.

Play it online

A version of DeskTop Tower Defense for Commodore PET written by Jim Orlando over the 2020 holidays. See the write-up at:

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.

Play it online

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.

Play it online

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.

Play it online

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 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.

Play it online

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 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.

Play it online

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 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.

Play it online


Misc (some programs by me, Norbert Landsteiner)

Cooperative Ransomware Hoaxes (2017)

WannaCry Decrypt0r for the PET ... ;-)

Try it online

(C64 version: wannapet_c64.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

Who doesn't love a 7 segment display? Here you are, displaying a digital 24h clock.

Try it online

Mandelbrot Sets for the PET

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.

Try it online

An even prettier version of the Mandelbrot set featuring a configurable pattern string.

Try it online

Like "mandelbrot2.txt", but extending over the maximum available screen space of the PET 2001, also marginally slower.

Try it online

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.)

Conway’s GAME of Life

In memoriam John Horton Conway (26 Dec. 1937 – 11 Apr. 2020), written in BASIC.

Try it online

PET 2001 Welcome Screen

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.)

Other Graphics

Lissajou plots as a demo for emulated "hi-res" graphics, after "Programming the PET/CBM" by Raeto West (1982), p. 129.

Try it online

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.

Try it online

Christmas Demo 2017

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.)

Simple Maze Generators

The well known BASIC one-liner, generating a maze from just two characters.

Try it online

(PRG-file: maze.prg.)

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.)

And yet another variant, providing just a bit of more variety.

Try it online

(PRG-file: maze3.prg.)


Test Programs

A simple program to test the PET (Joe Travis) dual joystick adapter.

Run it online

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.)

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.)

Run it online

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).

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).

Run it online

Adapter Info


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).


Disk Images

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


Programming Utilities

A disk image including all kind of programming utilities, like 6502 Assembler & Disassembler, Micro Assembler & Disassembler, and SuperMon …

Explore disk image online

Note: SuperMon Commands
   .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 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

(You may drag and drop a downloaded file onto the emulator's screen to run it.)

PET 2001 Manuals

PET 2001-8 Personal Computer User Manual
Commodore Business Machines, Inc., October 1978

Pocket Reference Guide to Commodore's 2001 PET,
Leading Edge Computer Products, 1979

The manuals were retrieved from public archives at and