Pixel exact emulation of the Commodore 128,Commodore 64, Spectrum 48/128K,VIC 20 and Atari 2600 

Z64K should run on any platform with an updated java runtime environment installed. I will update this site when I get some free time but in the mean time feel free to drop me a message via the contact page with feedback or questions. The changelog only includes changes not shown on this homepage.

*tip: ALT-ENTER togglesfullscreen mode

***JAVA 9, 10 and 11 users should use the –Dsun.java2d.uiScale=1.0 option if the screen does not render nicely on your setup.  See https://bugs.openjdk.java.net/browse/JDK-8189416***

LINUX users: You might need to change the permission of Z64K.jar to allow execution. e.g. chmod +x Z64K.jar. 


Latest version 2 of Z64K in development stage. Requires JRE 8 or better. For latest features use this version.*
* last updated 1 August 2021

Z64K.jar Z64K.jar
Size : 2052.996 Kb
Type : jar
commandline.txt commandline.txt
Size : 2.583 Kb
Type : txt
changelog.doc changelog.doc
Size : 1104.5 Kb
Type : doc
z64k_quick_guide.txt z64k_quick_guide.txt
Size : 6.989 Kb
Type : txt



Version 1 of Z64K.
.
Note: This version is no longer being updated except for bug fixes..

Z64K.jar Z64K.jar
Size : 2158.658 Kb
Type : jar

Keyboard shortcuts

  • ALT+O = Toggle output of VICIIe/VDC to main screen (C128 only)
  • ALT+2 = Toggle 2nd display ON/OFF (C128 only)
  • ALT+ENTER = Toggle Fullscreen mode
  • ALT+INSERT = Paste text from clipboard
  • ALT+DELETE = Copy screen text to clipboard
  • ALT+Q = Toggle capture mouse (C128 & C64)
  • ALT+R = Soft reset
  • CTRL+ALT+R = Hard reset
  • ALT+W = Toggle Warp mode

AdditionalC128 keys

F1=ESC
F2=TAB
F3=ALT
F4=CAPS LOCK
F5= HELP
F6=LINE FEED
F7=40/80 DISPLAY
F8=NO SCROLL

The following keymappings override the values in the keyboard configuration editor for the C128
F9 = F1/F2
F10= F3/F4
F11= F5/F6
F12=F7/F8

Other changes are:-
PC CAPS LOCK = C128 SHIFT LOCK
For emulated NUMPAD Joystick Num Lock needs to be OFF.
C128 NUMPAD keys works with Num Lock ON.


There is an option to enable/disable extra c128 keys via settings==>setup==>Extended Keyboard keys in the latest downloadable version of the emulator. Default is enable extended keyboard keys in C128/CPM modes only.

The C128 Direction keys are mapped to PC cursor keys, and CRSR U/D and CRSR L/R mapped to PC NUMPAD / and * when Extended Keyboard keys enabled.

Version 1- http://www.z64k.com/resources/Z64K.jar

Version 2 (in development) - http://www.z64k.com/resources/version2/Z64K.jar

UNLESS otherwise stated assume updates apply to Version 2 of Z64K only

1 August

  • Default internal modem with echo off, verbose on, and quiet on.
  • Improved internal modem Hayes command set.

31 July

  • Option to disable userport rs232 modem emulation.  Allows connection to tcpser etc.

29 July

  • Fixed broken fast 1581 serial caused by recent changes to support UP9600

28 July

  • Included a default keyboard mapping for German keyboards thanks to Tokra . Disclaimer: not thoroughly tested but is much better than the default English mapping when using a German Keyboard. :)
  • Fixed restore key for VIC20.

27 July

  • VIC 20 uses mike-pal.vpl as default
  • Some minor fixes with timing of VIC interlace signal
  • Userport rs232 modem synchronisation greatly improved.  Data transfers much more reliable with UP9600 and standard userport drivers.
  • Minor adjustment to value read for VIC $9004 register when in NTSC mode depending on cycle

25 July

  • Added UP9600 rs232 modem support.
  • Fixed bug with automatic loading of SDR value into CIA shift register when loaded at same time as final bit of previous SDRshifted out.

23 July

  • Improvements to Userport RS232.  Huge improvement with sending valid data!
  • Fixed ZX spectrum settings title
  • Allow ZX spectrum to be default application on startup 

21 July

  • Fixed bug with command line option -limitcycles that caused it not to trigger with TestBench scripts.

20 July

  • Minor change to latching behaviour to trigger on correct edge as set in ACR. Drive sends pulse from byte ready signalto trigger latching.

18 July

  • Update to VIA port latching.  Fixes VICE bug#582 and Freespin still works!

14 July

  • Fixed bug with VIA latching not clearing when CA1 interrupt is cleared.  Freespin demo doesn't crash anymore. :)
  • Added undocumented drive machine monitor commands motor and track
    motor [on:off] - turn motor on/off , without arguments prints status of drive motor
    track [in:out] - move rw head in/out 1 half track, without arguments prints current track

11 July

10 July

  • Enabled Internal Palette selector available in settings.
  • Updated default VDC palette to c128-vdc-deekay.vpl as suggested by Deekay in the readme of the Colour Spectrum demo.
  • Freespin runs on 1571 drive in addition to 1541
  • C128 support of drive GPU required for Freespin demo
  • Improved sync detection. Freespin display a lot more stable (when it actually runs).
  • Fixed bug with VIA reset code that would lock drive if PB7 output was on.  Freespin no longer locks the drive after reset.

9 July

  • Show correct frames/second in the frame title for all video chips, including simulated drive gpu.
  • Added sound support for Freespin demo.  note: Demo still does not run reliably every time yet in emulation but it is improving.  

8 July

  • Improved Freespin demo support.  Better drive sync detection. Displays graphical effects correctly (when it works)  warning: sometimes crashes the drive where the entire emulator needs to be closed and restarted.  Freespin support is still a work in progress.

    To play the Freespin demo, after the drive code has loaded, select Drive GPU from Machine settings==> Model panel.  When screen turn blacks reattach the same disk image to start the demo.
  • Fix debugging of Z80 LD A,I and  LD A,R

5 July

  • Added option to use disk drive as GPU for Freespin demo.  note: Not reliable and does not play sounds yet.
  • Some improvements to userport rs232 emulation.