Pixel exact emulation of the Commodore 128,Commodore 64, VIC 20 and Atari 2600 written entirely in  Java

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

There is still some work to do with the NewUI but I recommend using it for the latest features. I am no longer updating the other emulators and will be archiving them once all features in them are enabled in the NewUI. http://www.z64k.com/resources/Z64KNewUI.jar
See 9 October note for more information.

*tip: ALT-ENTER togglesfullscreen mode


C128_Beta_2017_12_04.jar C128_Beta_2017_12_04.jar
Size : 1864.954 Kb
Type : jar
C64Beta20171204.jar C64Beta20171204.jar
Size : 1868.205 Kb
Type : jar
VIC20_Beta_20171024.jar VIC20_Beta_20171024.jar
Size : 1867.143 Kb
Type : jar
Atari2600_Beta_20171024.jar Atari2600_Beta_20171024.jar
Size : 1867.145 Kb
Type : jar
changelog.doc changelog.doc
Size : 528.5 Kb
Type : doc
Z-Menu.zip Z-Menu.zip
Size : 47.136 Kb
Type : zip

Keyboard shortcuts in NewUI

  • 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


24 March - New UI

  • Undid 4 pixel NTSC change to VIC 20.  I need to confirmation from a user with NTSC VIC 20 position of NTSC screen...
  • Enabled SID Analyser (Previously known as SID Panel). 
    Top 3 windows are the SID voices, 4th Window is volume control, 5th Window is combined output.

    F6=Envelope (default)
    F7= Accumulator
    F9=Disable Output(Pause). Must use one of the above options to re-enable.

    F11=Decrease samples/second
    F12=Increase samples/second
  • Improved snapshots. C128 snapshots still needs a lot of work.  Updated cartridge image included in snapshot (EasyFlash). 
  • New EasyFlash cartridges defaults bootswitch to off position.

22 March - New UI

  • Started work on a new Cartridge User Interface.  Can create, write and save EasyFlash cartridges. 

19 March - New UI

  • Implemented Am29F040 for EasyFlash.  Easyflash passes torture tests.

18 March - Version 2 of D030 tester

14 March - NewUI

  • Added simple DigiMax support.  Available under Cartridge Menu. Mapped to DE00.

13 March - NewUI

  • Individual models of drives areonly created as needed. Even more improvements to startup time of emulators.
  • Fixed reading of VIA ports in drives. SSDPCM2 V3 - 16khz does not freeze after first logo animation now.

12 March - New UI

  • Some fixes to EasyFlash Cartridge.  Lemmings works now.
  • Re-enabled disk animation on C128

11 March - NewUI

  • Fixed spacing of debug output of 6502 instructions in machine monitor.
  • Drives are only created when needed.  Faster initialisation time for all emulators that use disk drives.

10 March - NewUI

  • GUI changes - Language is now a menu item. (I will be adding other languages soon.)
  • Machine monitor memory dump improvements
  • Screen resizing improvements
  • Improved mouse responses when right clicking in machine monitor to toggle breakpoints
  • Improved mouse response to initiate disk viewer.

24 February

4 February - NewUI

  • Updated mapping of VDC RAM to match real C128 when register 28 is set to 16KB mode.

29 January - NewUI

  • Included some screenshot options via capture tab in screen settings
  • D030 tester updated to Version1.3 (see link below)

26 January - NewUI C128 VICIIe

  • output black during VICII VBLANK.
  • Can be seen in updated D030test ==>d030tester.zip

23 January - NewUI

  • More improvements to phase shifting ofcolor using VICIIe testbit. 

22 January - new D030 test suite

15 January - NewUI

  • Improvements to phase shifting color using VICIIe testbit.  d030 test program updated.

14 January - NewUI

  • fixed VICII PAL screenshot dimensions for use with TestBench
  • More improvements to VICIIe d030 testbit. Fixed bug that can very rarely cause VICIIe running in 2Mhz mode corrupting databus. D030 test program updated. 

11 January - NewUI

  • Improved VICIIe testbit behavior.  Skips correct amount of rasters when set. d030test.prg

9 January - NewUI

  • fixes to assembler.  Correctly handles zeropage instructions.

6 January - NewUI

  • added some command line options.  I haven't tested all of these so let me know if they don't work.
    Z64KNewUI.jar computer  [-options]
    computer = atari2600|c64|c128|vic20
    -8 diskimage (.d64, .g64, .d71, or .d81 file)
    - reu 512K
    -filename (.prg, .d64, .g64, .d71, or .d81 file)
    -ciamodel model  (0 or 1) 0=6526, 1=6526A
    -sidenginemodel model (256 or 257) 256=6581, 257=8580
    -cartcrt cartimage (.crt)

3 January 2018- NewUI

  • Added some file drag and drop functionality for PRG, D64, D71, G64, and D81files.

31 December - NewUI

  • Saving and creation of new Disk Images enabled.
  • Fixed crash that occurred when attempting to use multiple drives

29 December - New UI

  • Fixes to C128 2Mhz mode interrupt timing. C128 world record displays raster bars at correct locations. (VICE displays one character too late) http://csdb.dk/release/?id=98201

21 December - NewUI (see 9 October entry for more information)

  • Fixed VDC 40 column mode sometimes not displaying.
  • Vertical adjust value is now implemented for VDC interlace screen modes as well as non interlaced screen modes.
  • New low level interlace detection.  The rendering of screens detects valid interlace signal instead of being forced into interlace modes when the relevant register bits are set. 

9 December - NewUI

  • Added ability to select custom ROMs. (see 9 October for link and more info)

4 December - C128 Beta and NewUI

  • Fixed a bug introduced with update on 5 August which wouldn't allow tapes to load with the Commodore 128 in both C128 and C64 modes.

26 November - New version of NewUI - C1581 works!!!

21 November - New version of NewUI emulator uploaded. (see below) 

  • Note: c1581 emulation is incomplete.  Computers can communicate with the c1581 via serial port but I still need to complete WD1770 emulation for reading/writing disk functions. .d81 images can only be previewed at this stage in the diskviewer.

24 October - All emulators

  • Fixed Weave renderer.  Interlaced modes for C128 and VIC20 shows correctly again.

9 October - NEW UI

  • New UI is almost ready to replace the current emulators!

    The only things missing from new UI now that are available in the currently released versions are as follows.  Note this list does not include things I still need to fix such as full C128 snapshot support.
    • Luma coefficient selector
    • CPU multiplier
    • Palette selector
    • Border Mode 
    • SID Panel (implemented, just not enabled)
    • Test Bench Configuration options (backend implemented)
    • Scan lines and Motion Adaptive Blending
    • JINPUT support (done for c64&c128 11/10/17)
    • Remote Monitor
    • Disk RPM
    • Machine Monitor (is implemented but missing some commands)
    • C128 Function ROMs (added 10 December)
    • FullLanguage support
  • Most of the above items will require little effort to finalise so I should be able to release the new UI soon for comprehensive testing. I will provide a complete list of the new features then as well. A couple of the new features included are ALT+DELETE and ALT+INSERT to copy/paste text (automatically detects if source text is all in upper case or combination lower/upper case), and dynamic screen resizing. :)
  • Available here ==>http://www.z64k.com/resources/Z64KNewUI.jar (Updated 9 January 2018)

1 October - Change Log and New UI

  • Archived change log into changelog.doc
  • I've uploaded an updated version of the new UI (see below).  It's getting much closer to be able to totally replace the currently released emulators! :) 

30 September - C64 BETA

  • Set raster to correct value when loading snapshots.  Fixes loading of snapshots that rely on exact raster position. eg IK+. I discovered bug while implementing snapshots for new UI. See below for link to new UI.

23 September - NEW UI

  • I've had a few requests on the progress of the new UI so rather than sending out individual copies I have uploaded a temporary version for download.  I will update the downloadable version occasionally but I won't be announcing any of the updates or features until I am ready to release it. I warmly welcome feedback and questions while I develop the new UI.  The new UI is functional and reasonably stable but is not fully tested yet. It is available here (Last updated 9 October 2017)==> http://www.z64k.com/resources/Z64KNewUI.jar

17 September - All emulators

  • Fixed issue with latest version of Java where frame could loose focus after toggling between full screen and window modes.
  • NEWS ***UPDATE on progress of new UI***  I am very close to having all the features of the current emulators in the new improved UI so I am hoping to release it in the next few weeks for wider testing.  If you would like a preview of it please send me a message and I will send you a copy now. :)

28 August - News: No new updates ready to be released yet but I'm busy working on a new UI that will allow execution of any of the emulators from one jar file.  New features to the UI will include volume control, improved file handling interface, and individual screen controls for multiple screens including video signal information(C128).

5 August - C128 Beta

  • version b - Fixed a bug with FSDIR. It was the reason why the upgraded version of CP/M 3.0 PLUS would not load. It's a bug that has made me scratch my head for ages, but now that I found it, it was so obvious what the problem was. :p
  • Updated some fast serial logic.  Upgraded version of CP/M 3.0 PLUS works.
  • EXTRA INFO.This version of c128 Beta has a portal page to all emulators. It's not complete but to preview you can either update the Main-Class: in the Manifest.mf file to portal.Z64K or run the class using the command line. eg. java -cp C128_Beta_2017_08_05.jar portal.Z64K