Vic20emu is an VIC-20 emulator for the SAM Coupé and ZX Spectrum . It emulates the 6502-based home computer, released in 1980 by Commodore Business Machines.


Running speed is around 1/7th that of the original machine, but also dependent on how much is being written to the display and the mix of addressing modes used. The animated images below show the running speed on a normal SAM (6MHz Z80B).

Using the Quazar Mayhem accelerator board (at 20MHz) gives close to original speed (see video below). As well as the increase in processor speed, it benefits from reduced memory contention and the emulation's heavy register use.

Display resizing is supported, but double-height characters have not yet been implemented. It's unlikely multi-colour mode will be implemented as it would require SAM's mode 4, slowing the display code down considerably.

Thanks to Colin Piggot and Jimmy for technical information and the motivation to finish what I'd started, and Dr Beep for his fast instruction decode technique.


Version 1.3, last updated 4th September 2008.

VIC-20 Emulator (38K)
Source code (github)

A Spectrum version is also available.


Numpad-0 = exit to snapshot menu

Cursor keys = joystick direction
Cntrl = joystick fire
NumPad-1/3/5/7 = F1/F3/F5/F7
NumPad-2/4/6/8 = cursor down/left/right/up
Esc = RUN/STOP (hold and press Shift for NMI)
Edit = Right-Shift
Tab = Control
Inv = CBM
~ = Π

All other key symbols have been mapped to normal SAM positions.


VIC BASIC GridRunner
Deflex Blitzkreig


This video shows the emulator running on a real SAM Coupé machine fitted with a Quazar Mayhem accelerator board running at 20MHz:

(Video courtesy of Colin Piggot)