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.

*tip: ALT-ENTER switches fullscreen mode


C128_Beta_2017_09_17.jar C128_Beta_2017_09_17.jar
Size : 1864.703 Kb
Type : jar
C64_Beta_2017_09_17.jar C64_Beta_2017_09_17.jar
Size : 1864.702 Kb
Type : jar
VIC20_Beta_2017_09_17.jar VIC20_Beta_2017_09_17.jar
Size : 1864.699 Kb
Type : jar
Atari2600_Beta_2017_09_17.jar Atari2600_Beta_2017_09_17.jar
Size : 1864.701 Kb
Type : jar
Z-Menu.zip Z-Menu.zip
Size : 47.136 Kb
Type : zip

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

19 July - C128 Beta

  • Fixed bug that didn't enable c128 extended key functionality on startup

18 July- C128 Beta

  • Fixed bug that wasn't properly soft resetting c128 into c128 mode from c64 mode.  Soft reset will always reset to c128 but retain memory contents.

17 July - C128 Beta

  • Version b - fixed xscroll bug with bitmap images introduced with the "Fixed VDC X Smooth scroll change.." on 15 July.  Fixes High Resolution Mega Tech Tech part of VDC version of RFO
  • If emulator is in C64 mode, a soft reset will reset to C64. (this was only temporary while I fixed a bug that wasn't properly configuring c128 back to c128 mode from asoft reset) Hard reset always resets to C128 mode.

16 July - C128 and C64 Beta

  • Config file saves VICII type, CIA type and default directory for tape, and prg files. 
  • Included if VICII type is NTSC or PAL in chipset settings menu.

15 July - C128 Beta

  • Improved windowed resolution of some VDC NTSC standard screens.
  • Fixed VDC X Smooth scroll artifacts appearing in last screen character position.

11 July - C128 Beta

10 July - C128 Beta

  • Fixed 80 column cursor size.  Underline cursor shows correctly.

9 July - C128 Beta

  • Replaced Thumbnailator with customised code for resizing of panel icons.
  • Fixed disabling of viewing status of CAPS LOCK and 40/80 DISPLAY.

8 July - C128 Beta

  • Version c -allow disabling/enabling of viewing status of CAPS LOCK and 40/80 DISPLAY. ALT-C or via settings==>setup==>Disable Keyboard Status
  • Version b - Status of CAPS LOCK and 40/80 DISPLAY shown on emulator panel.
  • C128 uses it's own configuration file now.  Default Screen size etc. will need to be reconfigured but there were not that many options that are saved in the configuration file at this stage so it shouldn't be a big deal.  note: make sure you select Save on Exit on the Setup tab in settings if you want automatic saving of configuration. This change does not affect customised keyboard mappings so they do not need to be reconfigured.
  • re-enabled Full Screen keep aspect ratio in configuration file.
  • Configuration saves status of 40/80 DISPLAY key (F7) and second display enabled (ALT-2). The emulator will start in 40/80 column mode on the main screen depending on the saved value of the 40/80 key.

5 July - C64 Beta, C128 Beta

  • Fixed some screenshot saving ratios

4 July - C64 Beta, C128 Beta

  • Improved repacking of screen when it is resized.
  • Screenshots are saved at correct resolution when in interlace mode.
  • C64 Only - Fixed loading of C64 snapshots.

2 July - C128 Beta

  • Version C- Option to enable/disable extra c128 keys via settings==>setup==>Extended Keyboard keys.  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 are enabled.
  • Version B - assigned -1 to unassigned extra arrow keys.  Fixes customised keyboard mapping when using extended keycodes on internationalised keyboards.  Thanks Miro for reporting this. :)
  • Added all the extra C128 keys except for the top arrow keys. Mapping as follows when extended Keyboard mapping enabled:-

    PC key=C128 key:-

    F5= HELP
    F7=40/80 DISPLAY

    The following keymappings override the values in the keyboard configuration editorfor the C128
    F9 = F1/F2
    F10= F3/F4
    F11= F5/F6

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

1 July - C128 Beta, C64 Beta, and VIC20 Beta

  • User can autorun .prg files by dragging and dropping them to the main screen. 
  • C128 - Fixed some resizing code to prevent buffer overflow when horizontal width changes  

30 June - C128 Beta

  • Version b - minor fix to HBLANK size determined by register 34 and 35 values.
  • Fixed flicker with VDC VGA bitmap images.

29 June - C128 Beta

  • Improved VDC screen resizing.   Support for VGA output.  VDC VGA Mode Mania resizes screen to correct resolution and size. 
  • Emulator now uses thumbnailator for improved icon rescaling. (https://github.com/coobird/thumbnailator)

23 June - C128 Beta

  • version b. VDC  VGA Mode Mania displays.  I need to include a ratio fix for VGA output.  At the moment it is stretched vertically.  Screen Debug border mode needs to be selected to view entire screen.
  • vdc32 test program behaves like real C128
  • ALT-2 toggles 2nd display ON/OFF

22 June - C128 Beta

21 June - C128 Beta

  • Second display available - VDC and VICIIe can be displayed at same time.  For now option for second screen is currently available in settings==>chipset==>VIC-II.  ALT-O toggles VDC/VICIIe between main screen and second screen.  Note: at this stage only the main screen can enter full screen mode, and change color components via sliders.  Both screens resize the same and share the border mode.
  • tips:
    • The 40/80 DISPLAY key is mapped to F7.
    • ALT-ENTER to toggle full screen mode.
    • Second screen can be closed without terminating the emulator.

20 June

  • Uploaded Z-menu tool created by Miro (http://mirkosoft.sk/).  It allows Windows users to select an emulator to execute using any of the downloadable jar files. (Refer to note dated 3 February 2017 on this page for more information on how all the emulators are contained in every downloadable emulator jar on this site).


14 June - C128 Beta

  • CPM cartridge can run CP/M 2 in c64 mode on the c128.

12 June - VIC 20, C64 and C128 Beta

  • Fixed handling of extended keys for keyboard mapping. Thanks Miro for letting me know about this error. :)
  • New/fixed Machine monitor commands

10 June - VIC 20, C64 and C128 Beta

  • D64 image error bytes used. Allows loading of copy protected programs.
  • more Z80 instruction cycle time improvements.

9 June  - C64 and C128 Beta

  • Improved cycle times of Z80 instructions.
  • Fixed some indexed Z80 LD commands. ZEXDOC passes all tests.
  • C64 CPM runs at 3 MHz on C64 emulator.  note: C64 CPM cartridge tries to run at 3Mhz but has some errors when used on C128 emulation.  I will fix in a future release.  This issue does not affect native C128 Z80 cpu or CPM 3.0 .

27 May - C64 and C128 Beta

  • Fixed REU null pointer error. (Was easily picked up using testbench. My bad for not running Testbench before releasing new version)

26 May - C64 and C128 Beta

  • Improved Machine Monitor. Can switch between monitoring of main cpu and logical drive 8.
    switch 0 = main cpu,
    switch 1= logical drive 8 *note output of cycle stepping still needs work for C1571 in fast mode.  It executes cycles correctly but misses displaying some instructions. C1541 and C1571 output duplicates on C128.  I know the solution and will fix in a future release.
  • Better handling of the output of cycle stepping of commands when C128 in fast mode.
  • Fixed bug that would crash emulator when switching between VIC-II models while display VDC
  • Can execute menu items including machine monitor and screenshot while the emulator is paused.

9 April - C128 Beta

  • Improved interlace support - VDC-IHFLI and VDC-ITFLI display much better.  I Paint displays correctly! Reminder: ALT-O toggle VDC/VIC screen.  Mouse can be assigned to user port via device settings. ALT-Q to toggle mouse capture on/off.
  • note: I've noticed screenshots are not always successful in interlace mode and end up saving a blank image. If it fails the first time just try again and it should save the next time. This is on my bug list to fix.

8 April - C128 Beta

  • Fixed stack overflow error when loading GEOS128.  GEOS 128 works again.

7 April - C128 Beta

  • Fixed some z80 bugs including INI command.  CP/M 3.0 works using native fastc1571 mode!  WD1770 is not fully implemented yet so only GCR disks supported at this stage.

4 April - C128, C64, and VIC 20 Beta

  • Fixed keyboard hard reset for all emulators (CTRL-ALT-R)
  • C128 Beta - VDC: Fixed block fill/.copy for value of zero.  CP/M lower case characters show correctly now in 80 column mode.  Fixes some over glitches in some VDC programs as well including VDC Demo.  Note: CP/M still only works properly with C1541 or C1571 in C1541 mode.

28 March - C128, C64, and VIC 20 Beta

  • Version C- Accidently disable 40/80 key (F11) for C128.  It is now re-enabled.  C128 also have some auto-load functionality enabled. 
  • Version B - fixed automatic reloading of keyboard remapping file when new session of emulator started.
  • Added user keyboard mapping customisation. Available under setup menu in settings.  Allows remapping of standard CBM keys.  Configuration saves into 'keyboard' folder.  If you have configured your keyboard for a layout different to English and you think it will be useful for other users, please send me a copy of the .kb file saved in the 'keyboard' folder so I can include it in the emulator as a default keyboard mapping for your keyboard layout. :)

26 March - c128 Beta

  • Fixed freezer cartridge and REU support.
  • Improved Z80 support. CPM demo works but still has the corrupt lower case letter problem.
  • Started WD1770 support but C1571 still doesn't run CP/M yet.

25 March - C128 Beta

  • *NOTE I am aware of REU and Freezer cartridges being broken in the latest C128 Beta release.  I know the problem and will fix in the next release.  This issue does not affect C64 Beta_2017_03_24.  You can use the command java -cp C64_Beta_2017_03_24.jar model.commodore128.StartC128 to run c128 with REU and freezer cartridge support, but be aware this version does not have Z80 interrupt support implemented in the latest release of C128 Beta.

    I need to implement WD1770 chip to allow CP/M 3.0 to function with the C1571.  I am beginning work on this now. :)
  • Z80 interrupt handler support.  CP/M 3 loads and runs but on when using C1541 disk drive emulation.  It loads with c1571 but locks once CP/M loaded.  80 column mode does not display most lower case characters correctly.  I will aim at fixing these issues in next release.

24 March - C64 Beta and C128 Beta

  • Fixed RST command. RST pushes correct PC value to stack now.  C128 CP/M loads but does not work yet.  I still need to implement interrupts and a couple of extended instructionswhich I will be working on next.

23 March - C128 Beta

  • Improved clock stretching. http://csdb.dk/release/?id=98201 displays raster bars correctly.
  • Fixed FLI bug in RFO on last screen!  Only glitch left to fix is a minor graphical glitch on the Boris Vallejo image during the transition of the test bit that joins the top of the image to the bottom.

22 March - C64 and C128 Beta

  • (version c) Added grey dot glitch.  Star field displays in VIC version of RFO.
  • (version b) Improved handling of cpu in fast 2Mhz mode.  VIC version of Risen from Oblivion shows all of the screens at the start of the demo correctly now.  Clock Stretching is not perfect yet and there are still some minor glitches including an FLI bug at the last screen but most of the VIC version of RFO displays correctly! The piece to the jigsaw that helped me was from here ==> http://cbm-hackers.2304266.n4.nabble.com/C128-hardware-timing-questions-td4064311.html :)
  • Improved Z80 support.  Timing and CPU speed is not correct yet but it passes all of ZEXDOC tests.  C64 CP/M works but C128 CP/M still doesn't work. (Must be something to do with MMU??)

17 March - C64, C128, and VIC20 Beta

  • Update to VIA reset code. Fixes bug where a hard reset would disable the VIC 20 from  being able to access the disk drive.  It was caused by the VIA locking the value of CA2 and CB1.
  • Fixed refresh of drive panel when screen resized or video mode changed for VIC 20.
  • Improved Z80 support. More tests pass ZEXDOC.  Still a lot of work to do for full Z80 functionality.

16 March - C64 and C128 Beta

  • Added CP/M cartridge support.  Not all Z80 instructions are implemented yet but it successfully boots C64 CP/M.  The Z80 only runs at 1MHz at the moment but I will increase this to proper speed in the next release.  Cartridge is enabled/disabled via the cartridge menu.  Please note the CP/M cartridge is only supported in C64 mode for C128 at the moment.  I will fix this in a future release.

15 March - C128 Beta

  • Fixed bug where emulator was fetching extra byte every line in interlace mode. Images in VDC Demo show last column correctly now.
  • When in interlaced bitmap mode, the attribute pointer only resets at the start of the first frame.  VDC-IHFLI and VDC-ITFLI  display much better now.  I still need to do timing tests on real machine for those modes which I will do over the weekend. :)

13 March - C128 Beta

  • Full VDC FLI support - VCD Mode Mania by Tokra correctly displays VDC-FLI 480x252 Non Interlace 8x1! VDC-FLI, VDC-HFLI, VDC-IMONO, and VDC-IM800 are now all displaying correctly. VDC-IHFLI and VDC-ITFLI load but don't show correctly yet.  Reminder ALT-O or use chipset settings to switch to VDC output. :) 

9 March - C128 Beta

  • Added Slovak language support and extra keyboard mapping to support the Slovak keyboard.

8 March - C128 Beta

  • Version c - Can load Internal and External Function ROMS. Once loaded they can be disabled via the relevantoption in the Chipset settings.
  • Version b - Fixed REU bug introduced 12 February.  REU functions correctly again now.
  • Added cartridge support.  Also fixed freezer cartridge being able to freeze for C64.

6 March - c128 Beta

  • Fixed ALT key locking when exiting machine monitor.
  • breakpoints work for Z80 and 6502

3 March - c128 Beta

  • Fixed Z80 opcode $D6 (SUB *)
  • Improved output of the list of implemented Z80 main instructions in the Machine Monitor. Can be viewed using the a command without any arguments.  Must be in Z80 mode to view Z80 instructions.
  • New Machine monitor commands:- z80, and 6502.  z80 switches cpu to z80, 6502 switches cpu to 8502. Command cpu displays the current cpu in use.
  • Z80 instructions are not cycle exact but they do run at the correct cycle count.
  • Other minor fixes to Z80 emulation. Still heaps to do. :)

2 March - C128 Beta

  • Z80 implemented - It is NOT COMPLETE, is not cycle exact and it has not been fully tested yet. C128 boots using Z80 bios. CP/M starts to load but experiences disk error.
  • Improved output of disassembled code in machine Monitor. Z80 disassembly supported.

25 February - C128 Beta

  • Improved Text interlace.
  • Adjusted display and attribute latching.  VDC version of ROF correctly shows all effects! Last scroller no longer jitters and the FLI image shows correctly. 

22 February - C128 Beta

  • Updates to VIC-IIe test bit to allow color phase shifting. It is just a proof of concept at this stage and needs more work and research.  The result can be seen in the last image with frogs in VIC version of Risen from Oblivion. The bottom frogs have their red/green components inverse!. :)

21 February - C128 Beta and C1571 drive

  • (Version C) Auto sync of odd/even frames if they become out of sync.  Fixes interlaced text mode sometimes displaying odd/even lines in reverse.
  • (Version B) Corrected weaving of VDCinterlaced bitmap odd/even frames. VDCDEMO.D71 imagesdisplay correctly.
  • Improved CIA shift register functionality
  • Fast serial is supported!  C1571 defaults to 2MHz double sided mode. Everything loads at a sane speed now. :)

17 February - C128 Beta and D71 images

  • C64 beta and version c ofC128 Beta:- fixed reading of .d71 images. Tracks are GCR encoded with correct track information on second side of disk now.
  • (version b) C128 has it's own badge now! Thanks again Miro. :)
  • 40/80 Display key toggled using F11 (ALT-O to switch between VDC ad VIC-IIe display)
  • Fixed VIC-IIe ram banking.  VIC-IIe bitmap real interlace works now.
  • VIC-IIe uses floating data for color when in 2MHz mode.
  • More MMU fixes. GEOS 128 works in 40 and 80 column modes with mouse support. :)

16 February - C128 Beta

  • (Version B) Fixed bug with AEC when test bit set.  FLI part of screen on last screen (between frogs) of RFO displays again.
  • Real VIC-IIe interlace support! Thanks Miro for the test program.  Bitmaps are corrupted at the moment but text mode seems to display real interlace with no issues. :)
  • Fixed some MMU common RAM functionality. TheLast V8 works.
  • CAPS LOCK detected

15 February - C128 Beta

  • (Version b) Improved interlace support. The Interlaced VDC TEXT/BITMAP:  from http://commodore128.mirkosoft.sk/vdc.html displays in 80x50 interlaced text.
  • Smooth X Scroll partly implemented(only supports value up to 7 at the moment)
  •  Address row increment implemented.  Crest logo displays and animates correctly in VDC version of RFO
  • Interlace mode implemented. Still needs some work.  Text mode with or without attributes, and monochrome bitmap seems to display as intended.  Multicolor interlace bitmap (IHFLI and ITFLI) do display but colors are mismatched. There are some glitches with some of the color formats but most of the images from VDC Mode Mania display. Interlaced text mode doesn't work in all cases yet but I have improved code that I am testing and will release in next version.Need more test programs!

12 February - C128

11 February - C128

  • (*version b) adjusted default vertical sync correction so 2nd testbit image (Boris Vallego)doesn't roll down the screen in RFO. 
  • Implemented $d030 testbit.  Last screen of the VIC version of Risen from Oblivion (RFO) shows upper and lower border graphics. Still some minor glitches.  Phase shift of colors not implemented yet. First image that uses test bit in RFO displays at 60Hz. Second image that uses it is not fully support yet and rolls down screen. I think the frame rate caused by the test bitis slightly lower than it should be but I think I know the solution so will fix in a future release. Respect to Crest and Oxyron for exploiting the test bit and the 2MHz mode the way they have. Still heaps of work to make the emulator fully compatible with this great demo but I'm nearly there. :)

10  February - C128

  • VDC dot clock set to 16MHz
  • Fixed some VIC timing when in 2MHz mode. VIC version of Risen from Oblivion displays the first  overscan full screen correctly. Last screen skips frames but shows bottom FLI image with 7 sprites!
  • Improved timing reports and clock synchronisations.
  • *note C128 Beta's warp mode is slow compared to C64 Beta because it uses c1571 as default and I haven't added any optimisations for sending the 1571 drive to sleep yet. I will add refinements once I have the c128 and 1571 core complete. It still runs at full speed on all the systems I've tested it on. :)

9 February - C128

  • C64 Mode available. VDC and VIC versions of Risen from Oblivion work.  Not all features of VDC implemented yet so some effects won't display correctly.
  • Fixed issue where emulator would crash when switching VIC-II model while in VDC display.

9 February -D64 Images

  • Fixed issue introduced in last version which didn't convert track 35 to GCR when loading d64 imaged (*note to self: ALWAYS use testbench to test before uploading new versions of the emulators :p)
  • Some VDC fixes also included.

8 February - D64 images

  • Save correct number of tracks of a disk that has had an unformatted track written to.

8 February - C128 Beta (updates to VDC only)

  • bitmap colors fixed.
  • Smooth Y Scroll. (Smooth X Scroll not implemented yet)
  • Automatic screen resizing. VDC -FLI and VDC-HFLI from VDC Mode Mania by tokra show entire image.
    *note Interlace support not implemented yet.  VDC -FLI seems to have some corrupt pixels at top of image. I will also fix aspect ratio of VDC-HFLI in a future release. Fullscreen mode seems to display everything in correct aspect ratio...
  • Many other fixes.
  • Still need to find a Commodore 128 logo badge to replace the Commodore 64 one I'm using at the moment... :p

7 February - C128 Beta

  • VDC - bitmap and full attribute support. Borders are displayed. Many other fixes.

6 February - C128 Beta

  • (version e) Fixed Stack Overflow error. The error occurred when writing to the VIC-ii chips during 2Mhz mode. 
  • note: 128 emulator is not stable yet.  Currently investigating why 128 emulator is sometimes crashing with a Stack Overflow error in Beyond Zork.
  • *(version d) Much improved handling of multiple switching between 1/2MHz modes. (Beyond Zork)
  • *(version c) Only the cpu runs at 2MHz in fast mode. All other chips remain at 1Mhz.
  • *(version b) 2Mhz (fast mode) supported. This disables VIC-II from being able to take over the CPU so no graphics will be viewable unless you are in 80 column mode.  
  • VDC Cursor visible
  • VDC displayis now a checkbox option. Can toggle VIC-II/VDC display pressing ALT-O together on the keyboard.

5 February - C128 Beta

  • *(version  c). VDC returns correct value from register 31 to c128 system. BASIC is now functional in 80 column mode. (I've just noticed some debugging code still included for cursor blinking rate that outputs to the console window.  It doesn't affect the emulator. I will remove in next version and hopefully have cursor working as well.)
  • *(Version b). Fixed update display conflict causing VICII screen to become jerky when refreshing.
  • Updates to VDC. Can view VDC (80 column) output by switching to VDC via settings-->chipset-->VICII menu. note: currently selected VICII model will continue to function as normal when VDC is displayed and vice versa. I will add dual monitor support in a future release. VDC has only basic text mode functionality, and is not cycle perfect yet. Beyond Zork is playable.

4 February - C128/C64 Beta

  • Multiple MMU fixes for C128 including VIC-II and C128 ram and color ram banks are now allocated  independently.
  • Temporarily removed some dodgy flux reversal code introduced 2 February that wasn't really ready to be included in that release. 
  • Drive resets to track 18 on a hard reset of emulator.  

3 February 2017- C128 Beta

  • *TIP for .prg files c128:- I haven't added proper support yet for .prg files but you can still load them into memory. For BASIC programs you can type new:poke1+256*peek(46),1:renumber  as a temporary fix to ensure the BASIC pointers are properly allocated. I found out about 'UNNEW' here ==> http://commodore128.mirkosoft.sk/basic_v7.html. I will add proper prg support once I have the core functionality of the c128 stable.
  • Limited to C128 mode at the moment.  I literally started work on it early this week so it is missing a lot of features and is far from perfect. note: snapshots are not supported yet for c128.  I also need to find a logo for the emulator panel. ;)
  • *All the emulators are contained in the one jar file.  I've just created individual jars for easier execution. The only difference  with the jars are it's manifest file. Even if I don't provide the last update of a particular emulator, you can use the latest jar file I've uploaded to run the latest version of any emulator.  The following classes can be executed to any of the emulators at the command prompt or you can update the manifest file:-
    • model.commodore128.StartC128
    • model.commodore64.StartC64
    • model.vic20.StartVIC20
    • model.atari2600.Start_Atari2600
       java -cp C128_Beta_2017_02_03.jar model.vic20.StartVIC20 will start the VIC 20 emulator using the C128 jar.

2 February - C64 Beta

  • Full read/ write and format functionality of 1571 disk drivein 1MHz and 2MHz modes. WD1770 and MFM not implemented yet (not supported on real C64 as far as I'm aware...) I will implement them once I start work on the C128 emulator.
  • Each floppy device has an unformatted double sided disk on startup.  The disk is interchangeable on all models and modes of the device. i.e. You can insert or format a disk using 1541 and it is immediately available in c1571. Obviously 1541 has access to one side of the disk.  You can also format c1571 as double sided disk using 15,8,15,"u0>hx in 1541 mode or 15,8,15,"u0>m1"  in 1571 mode and side 1 will be available when switching back to 1541 drive.
  • RPM of drive shown in title when motor running.
  • Improved d71 support.

27 January - C64 Beta

  • 1571 can read and write previously formatted disks in 2MHz mode but can't format newdouble sided disks yet.  I'm still investigating and will hopefully fix soon. :) To enter 2MHz mode (1571 mode) use open 15,8,15,"u0>m1" :close15.  Each side of the disk can be formatted independently using the command open 15,8,15,"u0>hx" :close15 in 1541 mode (open 15,8,15,"u0>m0" :close15).

26 January - C64 Beta

  • .d71 images correctly loads and saves both sides of disk. Disk head can be chosen with c1571 using command open 15,8,15,"u0>hx" where x=0 or 1. eg open 15,8,15,"u0>h1"  to read and write to flip side of disk. *note: diskviewer only shows files on side 1 of disk. I will implement an option to view flip side of disk via diskviewer in a future release.

25 January - C64 Beta

  • Can switch between c1541 and c1571 without requiring a hard reset of the emulator to be able to use the drive.
  • Removed some debugging messages from c1571 emulation.

24 January 2017 - C64 Beta

  • c1571 and .d71 images supported. C1571 not fully emulated yet and only works correctly in single sided c1541 mode. I need to findeither double sided .g64 or .d71 images for proper testing of double sided mode. When selecting c1571 drive for first time, emulator needs a hard reset for the drive to be properly setup. I will fix this issue in a future release.
  • Disk images are automatically converted and can be saved as .d71, .g64 or .d64 images using diskviewer. .d64 images automatically detects the number of tracks to save.

1 January 2017- C64 Beta

  • Delayed switching off of Datasette motor.  Images created with Action Replay's TAPE SAVE - SUPERTURBO record correctly now.

31 December - C64 Beta

  • *updated - fixed a couple of bugs when creating new .tap images that could crash the emulator
  • Recording to tape enabled. Tape image will automatically grow as required.
  • Can save .tap images
  • New tape GUI with counter available. Select "Tape Player" under Datasette menu. Still under construction but functional. Will include with VIC 20 soon.

25 December - Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • Fixed breakpoints. I accidently arranged code in previous releasethat made breakpoints execute 1 frame late.

24 December - Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • Implemented a workaround to fix a possible timing error in Linux due to a bug in the Linux version of Java. https://bugs.openjdk.java.net/browse/JDK-8058747  *Update: Emulator totally disables latency adjustment if this error is detected.

23 December - Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • VIC 20 Beta - fixed a VIC bug introduced in December 5 release. Text at end of Robot Liberation scrolls smoothly again
  • Added audio latency reducing code.
  • Updated title bar. (Emulated machine, PAL/NTSC, machine / disk drive cpu cycles/second, screen vertical refresh rate, (audio latency)

22 December - Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • Let system allocate Audio Source data line buffer size. The emulators game loop speed was unintentionally being controlled/blocked by the audio buffer. Timing seems a lot more stable now. :)

21 December - C64 Beta

  • Fixed Diskviewer relocating itself when loading or creating new disks

19 December - C64 Beta

  • SID Player - disabled automatic setting of VIC-II IRQ flags when SID file has it's own player. C64Music\DEMOS\A-F\Cannon_Fodder.sid from HVSC plays correctly now.

17 December - Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • Updated color logic based on information here ==>https://en.wikipedia.org/wiki/YUV#SDTV_with_BT.601
  • Adjusted colorslider behaviour.
  • All emulators are contained in one jar file now. Only difference with each of the downloadable Beta versions of the emulators is the manifest file. I will include options to invoke emulation of other systems from the one jar file in a future release.

14 December - Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • All color options and screen resizing are applied in real time including when the emulator is paused.
  • C64 has new "internal" (Colodore)palette generated using logic from http://www.colodore.com/ by Philip "Pepto" Timmermann.

13 December - Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • Color saturation uses Rec. 601 or Rec. 709 Luma Coefficients (selected in colour menu).  Improved gray scale when saturation is set to 0.

12 December -  Atari 2600 Beta, C64 Beta, and VIC 20 Beta

  • Sliders to control colour saturation, brightness, contrast, gamma, and RGB levels available under new Colour tab in the settings menu.

11 December - VIC 20 Beta

10 December - C64 Beta, Atari 2600 Beta, VIC 20 Beta

  • All BufferedImages used for processing deinterlaced screens created on screen selection. Memory use greatly reduced for Motion adaptive blending. :)
  • New logic for Motion Adaptive Blending - greatly reduces ghosting but introduces some minor combing on screens with lots of action.

8 December - VIC 20 Beta

  • 2 Disk Drives supported. Only reason I haven't enabled 4 is because the images don't fit on the panel properly. :p
  • Adjust visible screen size for NTSC

7 December - C64 Beta

  • C64 Beta file uploaded again. I must of accidently deleted the last version by mistake...
  • new command line option: -snapshot snapshot file

7 December - VIC 20 Beta

  • Joystick support. Keyboard numpad-right ctrl is the default joystick. Configure joystick via setup and device menus. Gamepad option will be disabled if gamepad is not inserted when the emulator was started or Jinput isnot installed . Jinput is included in the jar package and can be installed via the setup tab in the settings menu. Jinput files will be installed into the same directory as the emulator jar file.
  • Save configuration (screen size, default disk directory)
  • Drive configuration available under device tab. note: Only one drive is supported at this stage. I will enable multiple drive support the same as the C64 emulator in the next release.

6 December - VIC 20 Beta

  • (version f)  Last update for today. Will go back to maximum of 1 release/day. ;) NTSC ratio 3:2, PAL ratio 5:3. Thanks toMike for the suggestions.  I will add customisable ratios in a future release for all emulators.
  • (version e) Changed aspect ratio to 5:3

  • Updated version d (in italics). Reading of ORA and ORB VIA registersdidn't clear interrupt flags correctly which didn't allow the disk drive to function correctly. Fixed now.
  • (version d) Fixed VIA IRQ acknowledge when Timer A underflows the same cycle as T1-CL (register 4) is read. Fixes issue where the gameBandits screen would become out of sync after a few minutes.
  • More improvements to reading of raster value in NTSC mode. MIFLI images display correctly.
  • (version c) Palettes selectable via screen tab of settings (From VICE).
  • (version b) Improved syncing of NTSC interlace. Retina display images are now stable. (see example screenshots below that were captured using VIC 20 Beta)
  • Improved display of retina display images using NTSC interlace.

5 December - VIC 20 Beta

  • (version b) Implement interlace flag for NTSC. When flag is set via register $9000, emulator will automatically switch to weaving mode rendering if no de-interlacing mode is selected. When flag is cleared the emulator will revert back to no de-interlacing mode if no mode was previously selected. Tested with a test program by Marko Mäkelä but it would be nice to get some more test programs for interlace mode with some results from a real NTSC VIC 20. :)
  • Enabled snapshots and tape support.
  • included VIC screen mode for compatibility with VICE test repository screenshots used with Testbench. Only available when running Testbench.
  • Soft and Hard reset implemented. Hard reset clears main and color memory, and resets VIC chip.
  • CPU speed adjusted to correct values  for NTSC and PAL.
  • note: RAM and VIC type(NTSC or PAL) can be hot switched. Switching VIC type also changes the Kernal ROM. You will need to manually reset the emulator to correctly position screen and view correct RAM bytes available in BASIC.
  • Cartridges can be supported by using 'Full' memory, load the Cartridge using 'Load prg' and then doing a 'Soft Reset'. I will add proper Cartridge support in a future release.

3 December - Atari 2600 and VIC 20 beta versions

  • First release of Beta version of new Atari 2600 and VIC 20 emulators that use theenhanced features of C64 Beta. Both are usable and stable but are incomplete. I will include tape and cartridge support for VIC 20 Beta in next release sometime later this week. *note: snapshots for Atari 2600 and VIC 20 appear in menu but are not functional yet.

30 November - C64 Beta

  • Updated ECM logic to match my real C64. When ECM bit is transitioning from 1->0, address generator holds lines 9 and 10 low one cycle more if CB13 is set or the  current display mode is an 'illegal' one. Results can be seen with VICE test program repository programes vicii_timing(delayed -  ECM), movesplit(delayed - push f, shift split position right by pushing d), and modesplit(not delayed - second lot of tests showing 6 arrows). Results in emulator are confirmed to match my real C64.

27 November - C64 Beta

  • Improved emulation of the NTSC versions of VIC-II. Sprite positions and BA timingfixed for 6567 and 6567R56A

23 November - C64 Beta

  • Fixed disk track overflow error that would sometimes (rarely) crash the emulator during header track change.

5 September - C64 Beta

  • Saving config saves last directory of disk loaded for drive 8 and the last directory of File/Open from the top menu. Save on exit will automatically save the current configuration when exiting the emulator.
  • Fixed some keys for Spanish keyboard layout. Thank you Gonzalo for testing. :)

3 September - C64 Beta

  • Updated outdated "Features" section of website. C64 Beta is stable and has most of the feature I want implemented for the first release. I still need to write a manual though which I think is going to be a work in progress. I will be releasing updated versions of the VIC 20 and Atari 2600 emulators which have most of the new features of C64 Beta at the same time as I formally release C64 Beta as stable and remove the old obsolete emulators.  
  • Disk drive icons and c64 badge resize on screen size.

2 September - C64 Beta

  • Fixed disk drive activity LED behaviour when drive is powered off.

1 September - C64 Beta

  • Improved disk LED display
  • removed redundant system timer
  • Allow saving of aspect ratio in config file
  • Floppy disk LED smoothlyfades in and out. Effect can be seen in Biba 2 and Digital World

31 August - C64 Beta

  • GCR reading of disks at bit level. Writing to disk is still at byte level.
  • Diskviewer immediately resizes when main window is resized.
  • Some Spanish keyboard support

    Spanish ==> C64 KB
    • ` = @
    • + = *
    • ç = =
    • ñ = :
    • ´ = ;
    • - = +
    • º = (backarrow)

29 August - C64 Beta

  • Diskviewer opens when selecting a d64/g64 image using the File/open menu to allow selecting of file to autorun.

28 August - C64 Beta

  • Can save default pixel size by using "Save" configuration in settings menu.
  • fixed drive sleeping code. Warp mode much faster again when drive not in use.

26 August - C64 Beta

  • Can save G64 images. Speed zones are currently ignored butincluded in saved images. Confirmed able to reload and use saved G64 images  in VICE, CCS64, and HOXS64.

25 August - C64 Beta

  • Greatly refined GCR-->byte conversion for use with d64 images and disk viewer when loading g64 image or writing to disk.

20 August - C64 Beta

  • G64 support - Read only and half tracks are ignored at this stage.  Can convert G64 to a D64 image by saving as a D64 image.
  • new command line options: -warp, -debugcart, -limitspeed #cycles

18 August - C64 Beta

  • REU - fixed c64 base addressregister values after executing swap command
  • Testbench - support for old-sid,new-sid,mountg64:
  • Command line options intended for use with testbench scripts by Groepaz. Using VICE format for consistency. I am only implementing commands used by testbench at this stage but I plan on including many more in future releases.

    java - jar C64_Beta_2016_08_18.jar options (see options below)
    • -8 filename.d64
      insert disk into drive 8 and autoload first file

    • -ciamodel n (0/1)
      0=6526 (cia old)
      1=6526a (cia new)

    • -cart cartridge.crt
      insert cartridge

    • -ntsc

    • -ntscold

    • -pal

    • -reu -reusize 512

    • -sidenginemodel model
      256 = 6581 (old sid)
      257 = 8580 (new sid)

    • filename.prg
      autoload program

16 August - C64 Beta

  • Improved and more accurate 'Game Loop' logic.

15 August - C64 Beta

  • Implemented new 'Game Loop' logic based from information on this site to limit the emulator speed. Emulator no longer freezes when system time changes. Occasional stutter when playing SIDs seems to befixed now when changing songs.

13 August - C64 Beta

  • Testbench - VICE plugin
    • To configure go to the configuration tab of Testbecnh (available under tools)and select the testbench directory with the VICE test program repository. The folder should contain the file testbench.sh. You will need to save the configuration file to enable the plugins. The VICE plugin is named "x64sc". Select the VICE executable (only tested WINVICE's x64sc.exe but should work with other platforms). Make sure to save again so you won't need to configure next time you run testbench.

6 August -  C64 Beta

  • Refined TTL code
  • Can 'play' a portion of the test programs in Testbench by right clicking a folder.

18 July - C64 Beta

  • Updated KCS Power cartridge using logic by Soci that was forwarded to me via Groepaz.
  • New command in remote monitor - execute #x : reset emulator, execute x number of cycles and enter monitor.
    eg. echo execute 500|nc localhost 6510
  • SID Player - displays alternative author if available in STIL

2 July - C64 Beta

  • PSID Player - display SID comments and track names of the current SIDusing STIL.txt from HVSC if available. I will tidy up the GUI in next release and include more information in the player from the STIL.txt file.

1 July - C64 Beta

  • ***NEW FEATURE*** Remote Monitor
    • Enabled via the setup tab under settings.
    • Send commands to the emulator via a telnet or netcat session
    • eg from command line 'telnet localhost 6510' or 'echo reset|nc localhost 6510'
    • keep alive should be selected for the first example if you want to keep the session active after entering a command.
    • keep alive should be disabled for the second example
    • only implemented as proof of concept at this stage so only commands recognised at the moment are 'reset', 'reset 0', and 'quit' which do a hard reset, soft reset or terminate the session respectively. I plan on adding a lot more useful functionality in the near future. :)

29 June - C64 Beta

  • Break points are toggled via right mouse button click in the Monitor disassembly window. Left and middle buttons are disabled and will be reserved for other functions.
  • New input method for Monitor. Input is separate to output console. Command history can be browsed by the up/down arrows.
  • New commands in Monitor:-
    • cls - clears monitor console
    • dir - views contents if current working directory
    • cd - cd.. sets working directory to parent, cd arg1 sets working directory to the subfolder 'arg1' if it exists.
    • note: dir and cd have no functional use yet, but it will when I implement load, autorun and save commands in the Monitor.
  • The C button executes a single cycle and I button executes a single instruction. They are located on top of the Monitor console window. I will replace them with icons as soon as I find some that are suitable to represent their actions. I will be including more functions so will improve the GUI then. :)

28 June - C64 Beta

  • New command in Monitor (under tools menu) to execute number of instructions. 'z num' where num is the number of instructions in hexadecimal to execute. eg. 'z 5' execute 5 complete instructions. If cpu is in halt state, no instructions will execute.
  • New set PC (j) command. Similar to g command but does not exit the Monitor. Format: 'j address'. address=new Program Counter (PC) in hexadecimal. eg. 'j fce2' sets PC to $fce2 and fetches the next opcode from that location.
  • First column of disassembler window shows the current instruction step. Single cycle stepping is done via the r command. eg. 'r 4' executes 4 clockcycles. note: actual commands to execute functions might change when Monitor development is completed. I will document all of them when I finally release the Beta version as stable. 
  • Fixed issue with emulator sometimes freezing when exiting Monitor that was triggered by a breakpoint.
  • Fixed issue where current instruction sometimes wasnot being displayed at top of disassembly window when entering Monitor. The current instruction still might not show in rare circumstances if it was disassembled as an operand of another instruction during entering of the Monitor.

27 June - C64 Beta

  • Included a disassembly window of the entire current memory bank in the Monitor tool. Breakpoints can be toggled via the disassembly window.

23 June - C64 Beta

  • Improved SID Player which nowuses IRQ's. Used some of the code from PSID Player by Dag Lem. Ubi-Sound by Jeroen Tel fixed.
  • Updated look and feel of SID Player
  • Fixed values of CIA timer for songs that use CIA timing for speed played in SID Player.

20 June - C64 Beta

  • Increased frequency of clock count update from every 1/2 a second to every 1/10th of second in SID Player. Improves timing to automatically skip to next song using song time lengths from HSCV.
  • Fixed bug where monitor was not pausing the emulator.
  • Fixed Tusker sid again. I broke it by forgetting to uncomment SEI in the SID Player code during testing.
  • Fixed double clicking of SID file after SID player has stopped restarts the timer correctly
  • Songs of SID file displayed in a table within SID Player. They can be execute by double clicking. I will add STIL support in a future release. See High Voltage SID Collection (HVSC) for more information on the HVSC collection.
  • SID Player frame resizable
  • Fixed spelling of HVSC. 
  • HVSC root directory can be set via "setup menu" under settings. Once set, the emulator will search for the file "Songlengths.txt" under subdirectory "DOCUMENTS" to setup times for sid song lengths.
  • Config can be saved via "setup menu" under settings. Only allows saving of HVSC root directory at this stage after it is set.
  • SID Player counter is functional. Player will loop current song if loop is selected. Player will skip to next song when current song is complete, loop not selected(default is selected) and HVSC is correctly set up .

19 June - C64 Beta

  • 2nd SID works correctly now. Each SID plays on separate channels when the 2nd SID is enabled to produce stereo output. If only 1 SID is enabled, theSID plays on both channels.

18 June - C64 Beta

  • Re-enabled options for 2nd SID.
  • Fixed SIDPanel output .
  • Dual SID support - Enabled and configured via "Chip set" under settings menu.
  • SID Player
    • configures SID model according to sid file flags. Support for dual SIDs.
    • blank screen during playing of sids.
  • Warped reset when auto-loading programs

17 June - C64 Beta

  • SID Player handles different speeds correctly now. Wizball.sid plays at correct speed.
  • More fixes to SID Player -  Tusker works again.

16 June - C64 Beta

  • The built in SID Player can play sids that reside under IO area. Player is dynamic so will automatically relocate when required. Detects basic tunes and executes them by the BASIC RUN command. Plays all of the tunes under VICE's VSID test repository. Opening a sid using "Open..." via the file menu or the SID player GUI plays the default tune. Flags are detected but ignored at this stage. No screen initialisation so main emulator screen sometimes has garbage in it while playing tunes but it does not effect the play quality.  

15 June - C64 Beta

  • Support for .sid files. A basic SID player can be accessed via the tools menu or when using "Open..." under the file menu when loading a sid file. The timer is not currently implemented. Stop, previous song, Play/pause, and next song buttons are functional. Play will insert a SID player to play the tunes which is initialised by an image stored on a modifiedSuper Cartridge (type 8). Stop will eject it. I plan on adding support for the HVSC library in a future release.
  • Fixed saving of binary files of Assembler when memory location $ffff is used

11 June - C64 Beta

  • Moved limit speed and pause options to settings.
  • Improved auto-loading for Testbench.
  • New "Open.." option under file menu. Allows auto-loading and runningof prg, t64, d64, sid and crt files.

* Depending on my day job commitments I'm aiming to have the first stable version of what is known as C64-Beta with a proper manual ready by 1 July. I also have working copies of the Atari 2600 and VIC 20 which uses the new features of C64 Beta. I plan on releasing them after I get some time to work on them properly.

05 June - C64 Beta

  • Fixed capturing of mouse.
  • *NEW* T64 file format supported via Datasette load menu. Loads first entry of image into memory. Will support multiple file .t64 images in a future release.

04 June - C64 Beta

  • Gamepad support - Gamepad must be connected to computer before starting emulator. Supports only one device at a time. I will add support for multiple devices in a future release. Requires installation of JInput library files to same location as the emulator. The required files are included in the emulator and can be installed via new 'Setup menu" accessed via settings.

01 June - C64 Beta

  • SID 8580 available by Chip set settings menu- Based on reSID by Dag Lem
  • Adjustments to VICE default screen size for compatibility with NTSC Testbench programs that compare results with a screenshot. note: NTSC is still only in proof of concept stage and is not cycle perfect yet.

24 May - C64 Beta

  • Some refinements to Full screen code
  • *** NEW FEATURE *** Internationalization support. This is a work in progress and I will add languages on request. I am relying on google translate at the moment but when I complete migrating all the hard coded strings within the emulator to support internationalization, I will seek assistance from native speakers of each language to fix up my translations. :)

23 May - C64 Beta

  • Fixed some keys not being recognised in full screen mode. TAB==> CTRL works in full screen mode now.
  • Full screen mode supports variable scan lines - Testbench tests that change the VIC-II type automatically resizes if executing in full screen mode.

21 May - C64 Beta

  • Full Screen mode is marked as stable now!! :)
  • Improved performance of drawing to screen in full screen mode.
  • Option to choose refresh rate and color depth for full screen mode.

20 May - C64 Beta

  • Fixed sprite enable timing bug I accidently introduced 9 January . The cat face and the effect behind it display correctly in Wonderland XII again.

19 May - C64 Beta

  • Fixed keyboard loosing focus and screen sometimes stayingblack when switching to full screen mode.
  • Improved Full screen support. Full screen mode uses double buffering and is stable now. ALT-ENTER to toggle

18 May - C64 Beta

  • Improved screenshot functionality - Can save when emulator is paused. Fixed saving of aspect ratio which was distorted in some modes
  • Tabbed settings
  • Minor tweaks to Testbench screenshot handling
  • Fixed  default value of available full screen modes to correctly show the current resolution. note: full screen mode functionality is not considered stable yet. If screen becomes corrupt, exit by pressing ALT-ENTER (this key sequence toggles full screen on/off)
  • View menu removed from top menubar. All view menu items have been moved to screen settings.

note: I have implemented but not released a new working version of the Atari 2600 using the same model as C64 Beta. Once C64 Beta is released as stable, I will update the Atari 2600 to take advantage of all the new features that C64 Beta is using. I will do the same for the VIC 20 as well.


  • Complete
    • VICII 6569
    • CIA 6526 and 6526a
    • SID 6581
    • CPU 6510
    • VIA 6522
    • CPU 6502
    • Action_Replay
    • KCS_Power_Cartridge
    • Final_Cartridge_III
    • Simons_Basic
    • Ocean_Type_1
    • Expert
    • Super_Games
    • Epyx_FastLoad
    • Final_Cartridge_I
    • Game_System
    • Dinamic
    • Zaxxon
    • Magic_Desk
    • Core functionality
    • Diskviewer
    • Testbench
    • CPU multiplier
    • Hot switching between different types of CIA and VIC-II chips
    • C1541 - single and multiple drives.
    • C1530 - writing to tape not supported.
    • Snapshots
    • Screenshots
    • Cartridge support
    • Mouse support
    • REU - 512K and 16MB
    • VPL,REU,D64,TAP,CRT and PRG file support
  • Incomplete but functional.
    • EasyFlash
    • Freeze_Frame
    • Freeze_Machine
    • VICII-6567 and VICII-6567R56a
    • Assembler
    • Monitor
    • Sidpanel
    • Full screen mode (Completed 21 May 2016)
    • Cartridge support
  • Features not implemented yet.
    • Command line options
    • HID device support (implemented 4 June 2016)
    • G64 and T64 file support (T64 implemented 5 June 2016)
    • SID 8580 (implemented 1 June 2016)
    • PC Keyboard layout
    • More Cartridge types
    • Config file

17 May - C64 Beta

  • Increased motion threshold for Motion Adaptive Blending (MAB) - better display of framesthat have a lot of movement when  in MAB deinterlace mode.
  • CRT deinterlace options
    • none (default)- each frame is drawn to the screen with no extra processing. Will cause flicker with 'interlaced' images
    • Blending - current frame is blended with the previous frame. Ghosting can occur.
    • Weaving - Consecutive frames are drawn to odd/even lines. Can cause combing with moving images
    • Motion Adaptive Blending - combination of weaving and blending. Greatly reduces ghosting and combing. This mode seems to match the closest to my video converter I use to connect my real C64C to a modern monitor. Still a work in progress.

13 May - C64 Beta

  • Smoother transitions of screen when  changing colors, VIC-II type or screen border mode.
  • Included R G B filters

12 May - C64 Beta

  • New CRT options via the machine setting menu. Scan lines and image blending available. Image blending reduces flicker with interlaced images. See some screenshots above that were taken using c64 Beta with blending enabled. Images created by the German demo group Crest . Please note screenshots that are taken with scanlines enabled will be saved at double the standard c64 dimensions.  Executing tests via Testbench will disable scanlines if they areenabled.

11 May - C64 Beta

  • New Panel colors
  • Testbench - fixed issues with restoring machine state after running a NTSC or NTSC-old test. Improved updating display of running test programs status .

10 May - C64 Beta

  • Fixed bug in NTSC mode where emulator would crash if LPX was read at a cycle 65
  • Fixed bug introduced with hotswitching of VIC-II for the detection of last cycle ID for VIC-II.  Original unmodified Krestage 3 passes embedded VIC-II test and runs correctly again.

9 May - C64 Beta

  • CPU multiplier - available via Machine settings menu. Increase cpu cycles by a factor of 2,3 or 4. Does not affect any of the other chips. It makes games like fairlight and driller run much faster without effecting events liketiming of music. It should be set back to normal for any time a program requires true drive emulation or uses advanced VIC-II tricks.
    • play, file not found andtimeout icons.
    • Fixed PAL filter
    • Uses VICE default screen dimensions and Pepto palette for compatibility with VICE's test programs that use a reference screenshot.
    • Tests that have a reference screenshot are compared with the screenshot captured by the emulator after the test. If they match the test passes, otherwise it fails.
    • Border mode and palette selections are available via the machine settings menu. These will eventually replace the items in the 'view' menu accessed via the menubar.
    • Some filter available. When 'fail report' is selected, only failed tests are displayed in the tree window.
  • Fixed behavior of pixels of a sprite during a change to the multicolor enable register. Test mc-hires-exp.prg and mc-hires.prg now pass Testbench.  Result has been confirmed to match my real C64. :)

8 May - C64 Beta

  • Mapped left arrow to PAGE DN in addition to the backquote to support other keyboard layouts.  I plan on including internationalization after C64 Beta is released as a stable version.
  • Testbench - Option to sort test programs alphanumerically. Some GUI changes. Will add refine options in next release.

5 May - C64 Beta

  • Testbench - mountd64, mountcrt, ntsc,pal, ntscold and reu512k support. Reference screenshots are loaded if available.
  • Drafted C64/PC keyboard mapping picture(see above). I will improve it once I finally release a manual after the Beta version of C64 has all the minimal features implemented.

3 May - C64 Beta

  • Can save screenshots via the file menu. I will provide a shortcut option in next release.
  • Improved testbench interface. Still a work in progress. Designed for use with VICE test programs but could be customized for a custom program library. Screenshots are captured after each test and can be viewed via the tree navigation. Top panel on right shows the captured screen. Bottom panel on right is reserved for future development including forinteractive tests requiring a reference screen. You can run a single test by double clicking the test item in the tree navigation or use play in file menu to run all tests. See https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/testbench/ for more information.

1 May - C64 Beta

  • Included summary of failures for testbench.
  • Added testbench support developed by Groepaz .  Click here for more information including structure of .in files. Supports exitcode, cia-old and cia-new flags. It's still a work in progress and has very basic GUI at this stage. Available under tools menu.
  • Updated cartridge logic provided by RGC for theKCS Power Cartridge.

29 April - C64 Beta

  • Delayed updating of ICR when acknowledging CIA IRQ's. Fixes VICE bug#740 for old CIA and new CIA's.

27 April - C64 Beta

  • Cartridge type 45 (Freeze Frame) and 46 (Freeze machine) recognized. Still under development
  • Cartridge type 8 (Super games) supported
  • VICE BUG #740 CIA timing issues in old and new CIA model - fixed for new CIA. Output of test program confirmed with my real C64. I will implement a fix for the old CIA in a future release.
  • Some GUI updates to machine menu.

21 April - C64 Beta

  • Fixed REU menu
  • Fixed Expert Cartridge support.
  • Sprites enabled in at sprite xpos values of 0x1f8-0x1ff in NTSC mode
  • Frames/second status reflects the number of emulated frames instead of frames drawn (warp mode)
  • MOS6567R56A (OLD NTSC) available via Machine settings. I will clean up the GUI in the next release.

20 April - C64 Beta

  • Mouse support and improved configuration for control ports - Accessed via Devices menu under settings.
    ALT-J swaps devices in control ports (replaces F11 swap) 
    ALT-G toggles capturing of mouse events. Mouse must be selected on one of the control ports via the Devices menu before the capturing of mouse events becomes effective.

18 April - C64 Beta

  • Improved disk change emulation. Drive initializes correctly after disk change

17 April - C64 Beta

  • Fixed multiple drive support when using less than 4 drives. Single drive connected functions correctly again. Note: I've temporarily removed the drive menu from thetop menu. Click on the drive image to load a disk via diskviewer .

16 April - C64 Beta

  • Multiple drive support - Can select up to 4 drives via the new device settings. note: snapshots only restore and save device 8. I will include snapshot support for the other drives in the next release.
  • Cartridges resets with a soft reset. Hard reset will clear cartridge memory as well.
  • Improved NTSC emulation. Right border closes at correct cycle but side border still not opening correctly. Will do more research and fix in a future version.

15 April - C64 Beta

  • NTSC support - hot switch between PAL and NTSC via machine settings. I have only done minimal testing of NTSC and it uses the same colors as PAL for now.  I have included it as proof of concept at this stage but it seems stable. I'm aware of the right border closing 8 pixels late and will fix by next release. Passes VICE phi1timing test. NTSC mode fixes Apollo 18 glitches. I will do more thorough testing and cleanup of code once I include all other features noted in my previous message. WARNING - attempting to load a PAL saved snapshot in NTSC mode will freeze the emulation if it was saved at a raster line greater than 263. I will add checks to prevent crashing in a future release. The safe way to load snapshots you're not sure about is to load them in PAL mode and switch to NTSC once the snapshot is running.

11 April - C64 Beta

  • Fullscreen mode - ALT-ENTER toggles. Should be more stable than currently released version.
  • New setting menu. Can configure CIAs and fullscreen settings. More to come.
  • The following points are the minimal list of things still TO DO before new C64 emulator comes out of BETA and replaces the existing released version. I already have the code complete for most of these features. I just need to implement them into the new emulator. I have a lot more new features planned for the emulator once it comes out of Beta stage.
    • Multiple drive support (completed 17 April)
    • Complete cartridge snapshot support
    • Variable cpu speeds (completed 9 May)
    • Proper Manual
    • Option for PC keyboard mapping
    • Joystick configuration in menus - (completed 20 April)
    • Mouse support - (completed 20 April)
    • Improved Monitor/Disassembler
    • UUdecoder
    • Improved full screen support - currently screen sometimes becomes corrupt. Just exit and re-enter full screen mode to fix for now.
    • Any other feature I might have missed that exists in the currently released version
    • Testing, testing and more testing. :)

10 April - C64 Beta

  • Save snapshot enabled.

09 April - C64 Beta

  • Monitor - Added a (assemble), m (memory dump) and p (poke) commands
  • Keyboard shortcuts implemented for some menu items.
    • ALT-PAUSE :toggle pausing of emulator
    • ALT-W :toggle warp mode
    • ALT-M :pause emulator and open Monitor
    • ALT-R :Soft Reset
    • ALT-CTRL-R :Hard Reset
    • ALT-8 :Toggle visibility of Diskviewer for drive 8

07 April - C64 Beta

  • Fixed graphic buffer issue in first part of Flexible demo by Offence.
  • Fixed some programs being corrupt when using disk viewer to quick load a program.

06 April - C64 Beta

  • Fixed bug with disk id on some disks introduced on 16 March of the new Beta version of theC64 emulator - Skate or Die loads correctly again

05 April - C64 Beta

  • Fixed size of disk viewer when loading new disk after resize of main screen. 
  • Load snapshot - Only loads snapshots created by the released version of c64.jar at this stage. Disk viewer will update disk content from snapshots.  I plan on supporting snapshots from other emulators and give options to customize loading and saving of snapshots.
  • Some minor bug fixes. Monitor now works without resetting the emulator. Will re-introduce most of the monitor commands in next release of Beta.

20 March - C64 Beta version

  • Fixed BASIC pointers when quick loading programs from disk via the disk viewer.
  • Clicking disk image on main panel now toggles disk viewer. Improved scrollable display.

19 March

  • Beta version of new emulator I'm working on is now available for download. Once I include all the features of the old emulators, the new version of the emulator will replace them. I still need to implement snapshots, support for multiple drives, full machine monitor, full screen support and a few other small things as the bare minimum. I should have that done within a couple of weeks.

    The new version has a much more advanced disk viewer allowing saving of d64 images which you can preview now in the beta version. The disk view for drive 8 can be viewed by clicking the disk drive image in the bottom panel at any time. Programs can be loaded into memory immediately by double clicking the filename. Please note the disk viewer under the tools menu is separate to the physical drive version but can still view disk contents and load files into memory by double clicking the filename in the viewer.

    The new version of the emulator once it comes out of beta will include a lot more tools to play with. Watch this space. :)

18 March - **NEWS**

  • I will release a beta version of the new C64 emulator this weekend. It has most of the features of the currently released version implemented already. The new emulator includes a much improved disk viewer which updates in real time and can finally save D64 images!

11 March - Final Cartridge III

  • VIC register value $d011 set to 0 when cartridge inserted.  Final Cartridge III  now defaults to desktop when inserted.

10 March - No uploaded updates

  • I'm currently rewriting all the emulators from the bottom up. I will upload a beta version within a couple of weeks. Once the new version of the emulators have all the features of the currently published emulators, I will release them with version numbers at the end of every month, with occasional ad-hoc releases when I implement major changes or fix a reported bug.

20 February

  • Assembler
    • !src "filename" - include source code from file "filename" as though it is part of the current source code. At this stage the file must exist at the current source codes location. Subfolders should work but I haven't tested it yet. Parent folders won't work at the moment but I will fix this in a future release.  The Assembler is still in development stage so I haven't drafted a manual yet. I'm focusing more on the functionality at this stage so the look and feel including text colors are likely to change.  I welcome any feedback, suggestions or requests via this sites contact page or send a message to willymanilly at csdb.dk. :)

13 February

  • Assembler
    • Assemble to binary file - Save compiled program without program start address in header
    • Assemble to file - Save compiled program with program start address in header (low/high)
    • !bin "filename" includes contents of binary file into  compiled code.  File must be same directory as source code. eg.
      !bin "data.bin" ;loads test data into memory starting from memory location $4000
    • More debug info into standard output including line numbers of errors. This will eventually be output into a debug window.

10 February

  • Assembler - Alpha characters in strings (!scr "ab") converted to screen alpha codes. eg a=1,b=2 etc
  • Assembler/Monitor - NOP now compiles to $ea instead of $1a.
  • Assembler
    • compiler output console
    • multi-file support
    • conditional code
    • manual
    • more fixes to formulas. You can mix high/low byte operations anywhere in function now. (before it could only be first operand of a function)
    • Fixed error when there was an 8 bit result within bracket of formula when final result is meant to be 16 bit. eg. lda $0400+($40*3),x compiles properly now.
    • Labels are not case sensitive. eg test, TEST and TeSt are recognized as the same label.
    • TODO before formalrelease (suggestions and requests very welcome) :)

8 February

  • Assembler - Some bug fixes and improved calculation of formulas. See below for an example of what compiles correctly. note: Labels embedded in operands will not be recognized and will be underlined until the program is assembled.  Still a lot of work I want to do to the Assembler before I formally release it but it is usable as is. :)
    ;test mixed formula with brackets
    yellow =7
    lda #green
    ldx #yellow
    sta vicbase+($10*2+(7-5)-2) ;sta $d020 //background
    stx -$1000+vicbase+($400*4)+(%101*7)-2 ;stx d021 //background

6 February

  • Assembler - More improvements to real time highlighting of errors.  Assembling the program retains the current cursor position in the text area (it was previously scrolling to the end of the text).

5 February

  • Assembler
    • fixed bug when comment followed unassigned label
    • nested calculations implemented. eg sta $0400+(1*40)
    • byte now accepts strings as arguments
    • Until I draft a proper instruction manual, example code that can be successfully compiled without modification that uses most of the assemblers features is available here. ==>http://codebase64.org/doku.php?id=base:micropong 
  • Assembler
    • Better handling of compiling to and referencing zero page locations with labels.
    • Operands can use /,*,&,|.^ in addition to +,-,< and >.
    • Improved syntax detection.  Formatting is very likely to change in future releases. I'm focusing on the functionality at this stage.
    • Compile to .prg no longer writes to c64 memory.
    • Compile to c64 updates graphics memory where appropriate.
    • errors underlined. Any errors detected during assembling of the program will not allow compiler to successfully complete and their will be no output to a file or the c64. note: new labels used as operands for opcodes will not be recognised until the program is compiled. Assembling the program updates all label references.
  • Assembler - fixed compilation error if label/program counter set in first line. Seems to have fixed the pasting issue.
  • Assembler - Improved real time syntax checking. Labels can be on same line as instructions. There is still a lot of work to do before I am happy to release formally with a manual.  An example program that can be compiled is here ==>http://codebase64.org/doku.php?id=base:opening_the_top_bottom_borders which should give you an idea what can be done with this version.  note: I sometimes experience issues pasting large amounts of text from sample programs from the internet so best to download those programs to an .asm file and them load them into the assembler. I know the problem and will fix in future release.

1 February

  • Assembler 
    • can recognise and compile low byte and high byte operations (< and >). e.g lda #<irq
    • byt and .byte allows a list of bytes to be compiled eg. byt $4c,$20,$34

31 January

  • Assembler (accessed via the top menu under Monitor) - Has very basic functionality at this stage. Allows assembling directly to c64 emulator memory or to .prg file. File will be saved using the source file name and location with a .prg extension. If no source file was selected assembled program will be saved to default.prg in the folder of c64.jar. It is still in early development stage so there is still a lot of features to be added but it is functional.  I will provide proper documentation when I have a few more basic features implemented and have finalised the look and feel. All opcodes are supported including undocumented instructions.  The 'a' command with no arguments in the Main CPU monitor (also under the Emulators Monitor menu) provides structure of all opcodes. The following is an example program demonstrates most of the implemented features. You can mix hex, binary,decimal and labels with addition and subtraction functions. 

    ;this is a comment
    ;value without $ or % treated as decimal

    *=49152 ;set program counter to 49152. *=$c000 gives exact same result
    vicbase=$d000 ;label vicbase set to 53248
    border=vicbase+32 ;label border set to 53280
    background=border+1; label background set to 53281

    jsr setbackground
    loop ;fill screen with all 255 characters
    sta $0400,x
    bne loop
    setbackground ;subroutine
    lda #%010
    sta border
    lda #$07
    sta background
    ldx #$00

30 January

  • C64 snapshot - VICII registers values properly restored.  It was broken on a recent release but is fixed now.
  • Assembler - Removed debug output. Font size set based on screen size.
  • *NEW FEATURE* - Select palette available under view menu.
  • Default palette set to the same as the default colors for VICE from default.vpl.
  • Assembler - Labels and basic addition/subtraction recognized. *note: new Assemble option in the assembler not functional at the moment. It only does 1 pass which detects labels for future processing at this stage. I'm hoping to have the Assemble option functioning in the near future. :)

25 January

  • REU - Improved BA timing. First "sprites in border" scroller flicker in real 1750 version of Treu Love fixed.  I'm still noticing sprite one pixel high sometimes displaying in right border so will investigatefurther.  I'm suspecting it is related to sprite DMA accesses starting during a badline, which is the same place that was causing the flicker in my previous version of the emulator.
  • Monitor - removed duplicate output if r (execute number of cycles) command.  This was caused by the extra cycles of the disk drive.

24 January

  • *UPDATE to REU* Included a fix to run real 1750 version of Treu Love. Set as default. Can be disabled via REU menu under Expansion menu. Still needs testing.
  • Assembler - Improved recognition of valid opcode structure.
  • REU -  Writes to VICII and some BA timing fixes. Treu Love REU demo (not the one for real 1750) displays sprites in border correctly. I'm still investigating the BA timing issues covered by VICE bug#700 - REU BA timing is wrong.
  • Monitor - Displays REU cycles where appropriate when using the r (execute number of cycles) command.

22 January

  • *NEW FEATURE* Source code editor (assembler under monitor menu). Currently only highlights (in blue)valid opcodes with correct arguments and highlights comments (any text on a line after ';' in red). Very basic functionality at this stage including displaying of line numbers, load, save, and cut/copy/paste. There is no option to assemble code directly from the emulator yet but I am busy working on that functionality.
  • The Monitor's assembler now accepts binary(%) and decimal in addition to hexadecimal($) numbers as arguments. eg
    >a c000 lda #%101
    >a c002 sta 53280
    >a c005 inc $d021
    >a c008 jmp $c005
    >a c00b

16 January - C64 REU

  • Fixed emulator sometimes freezing when REU disconnected during REU access.

13 January - C64

  • Emulated sprite fetch bugs as identified by VICE bug#217. Will make this optional via a menu when I find time to rework the GUI. note: on my real C64C the bug eventually flickers between multicolor and Hires after being powered on for some time. On power up the bug is stable in HIRES mode. (see http://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/VICII/spritefetchbug/ )
    Effect visible on my real C64 at following X values using test program from above link. The emulator matches the real C64 at all locations.
    Sprite 1 :106,10a,10e,112,116,11a,11e,122,126,12a,12e
    Sprite 0: 136,13a,13e,142,146,14a,14e,152,156,15a,15e
  • New configure screen menu added (Incomplete).  Only option available at the moment is screen resolution to be used during full screen mode. Will hopefully find time to fully rework GUI in the near future.

7 January - C64 VICII

  • Improved handling of detecting sprite to background collisions. Improved speed during warp mode on screens with a lot of sprites
  • More research done of behavior of pixels during change from multicolor bitmap mode to 8 bit multicolor text mode. Fixed stray pixels in "a_load_of_shit" demo.

3 January - C64 VICII

  • fixed minor bug introduced in 1 January release with displaying last line of sprite from Xposition 0x160-0x164. Sprites display correctly again. Tested with spritemove testprogram from VICE.

2 January - C64 VICII

  • Minor bug fix during modechange. Removes stray dots that appeared in Flexible demo part 3.

1 January 2016 - C64 VICII

  • Faster emulation of all graphic modes.
  • More accurate emulation of pixel behavior during mode changes. The emulator matches the output of my real C64 using the test programs suite from VICE including vic_timing, videomode and split-tests.


19 December - C64

  • VICII - Refined sprite and XSCROLL code for faster execution.
  • ULTIMAX mode - fixed VICII gfx access.  I noticed the screen didn't match my real c64 when freezing the Last Ninja with my ACTION REPLAY VI.   This was caused by the VICII incorrectly getting it's data from the cartridge rom instead of the C64 ram in some memory locations.

17 December - C64

  • Improved KCS Cartridge emulation. BLOADing and cartridge freeze/resuming works for running basic programs now.
  • Fixed issue when reloading snapshot with cartridge image sometimes crashing the emulator. This was caused by the timer still running causing an overflow while the menus where being regenerated.
  • Fixed repeating RESTORE key when held down. Itneeds to be released before it is sensed again just like the real thing.

14 December - C64

  • Restoring snapshots with cartridge images will update the cartridge menu.
  • Included some additional reset code for KCS power cartridge .

13 December - C64

  • CIAs - fixed shift register timing. No more jitter in Athena when scrolling down a screen.
  • Easyflash Cartridge - resets to Ultimax mode. Futurama demo works now.

8 December -C64 CIAs

  • *update* fixed shift register IRQ timing. Athena refreshes screens properly. Passes all of VICE shift register test programs. Test programs and Athena confirmed working correctly with my real C64. Removed shift register debug messages.
  • Improved model for shift registers and TOD clock

7 December - C64

  • NEW FEATURE - CPU speed - available under file menu.
    • Increases the CPU speed by a factor of 2, 3 or 4. Factor of 1 is normal speed. Does not affect speed of SID, CIA's, VICII or devices. Most games use CIA or Raster interrupts for timing so will most likely run at same speed regardless of CPU speed selected. Will make basic programs and games like Driller and Fairlight run at a much faster speed without distorting music or clocks. CPU speed of 1(default) should be selected for demos, any disk access including loading of games, games that use VICII tricks for special effects, or anything else that requires exact timing of CPU.  Quickload available under drive menu will work with all cpu speed modes. The cpu speed can be changed anytime without resetting the emulator. I will look at automatically disabling/re-enabling CPU speed increase if the emulator detects disk access in a future release.

5 December - C64

  • Clear CIAs IMR and ICR on reset. Fixes multiple problems, including the loading of some cassette games, that can happen after a reset because IRQ flags wereincorrectly set.

4 December - Atari 2600, Commodore 64, VIC 20

  • Monitor included for Atari 2600
  • New keyboard mapping matching other emulators like VICE.  One day I will find time to actually document everything but some of the less obvious keys if you're not familiar with the key mappings from other emulators are:- (C64 key = PC key)
    • CTRL = TAB
    • Commodore key =LEFT CTRL
    • arrow up graphic = DEL
    • pound sign =INS
    • left facing arrow graphic =~
    • @ = [
    • * = ]
    • = = \
    • + = -
    • - = =
  • VIC 20 - Correctly connected RESTORE key to VIA1 CA1 instead of directly to NMI. Pressing RESTORE in Bandits no longer crashes game.
  • TO DO: VIC 20. Find correct color codes. Confirm output of VIA1.prg and VIA1-free.prg from http://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/interrupts/irq-ackn-bug/ matches output from real VIC 20. I haven't been able to find any reference data for these programs and unfortunately I don't have a real VIC 20 to test with. Grateful to anyone if they can forward me screenshots from a real VIC 20 if anyone has one...  If I get time I will write a test program for my 1541 instead as an alternative method to test the IRQ acknowledgement timing of the 6522 chip. :)

3 December -  VIC 20

  • *Update - Raster Read Register updating end of screen implemented only for NTSC only. PAL updates Raster Read Register at end of line. Impossiblator 3 working again.
  • Raster Read register updated at end of screen instead of end of line. Bandits displays correctly now. Bandits should be started in NTSC mode. You can hot switch from PAL to NTCS while the game is loaded but it might cause some minor graphic instabilities. A simple soft reset fixes the problem.
  • VIC 20 has the same monitor as the C64 included now.

2 December - SIDpanel

  • Improved output
  • f11/f12 decrease/increase samples to panels

30 November - C64 Monitor

  • Sidpanel - A GUI I used a while back in the early days to test SID functionality. I've cleaned up the code but haven't included any new features since I first developed it. It is in early stages of redevelopment so only available via the monitor at this stage.
    • Command: sidpanel on/off
    • Displays Waveform, Envelope, or Accumulator of SID voices
    • panels 1-3 are the voices, panel 4 is the volume, panel 5 is combined waveforms
    • f5 - Select Waveform output
    • f6 - Select Envelope output
    • f7 - Select Accumulator
    • f9 - Freeze panel output. Restart by selecting f5,f6 or f7.
  • UUencoding decoder
    • Another simple GUI I created a while back for decoding .
    • Command: uu
    • On successful parsing of valid uuencode program will load program into memory and display message like "Program loaded 0801 - 2871" into monitor window
    • No error checking. The decoder will assume valid entry. If no "Program loaded xxxx-xxxx" message appears, the decoder failed.
    • Use CTRL-V to paste encoded program you want to decode into the textbox.
    • resize the window if the parsing button is not visible.
    • Example uuencoded programs here. Please include all lines from begin 644... until end. Make sure the begin and end line are included. Ensure there are no empty lines before the begin statement in the pasted coded.
    • Once again this is in early re-development so only available via monitor at this stage.

29 November


  • Directory for each file type is saved during session.
  • Updated manual to include Monitor commands.

C64 Monitor

  • Save - s bbbb eeee
    • bbbb/eeee = start/end location in hexadecimal
    • No filename argument, file is chosen using filechooser once command is entered.
    • please note filechooser does not automatically include .prg extension and will overwrite file if it already exists
  • Load into memory - l
    • Load file into memory. Starting location will be first 2 bytes in chosen file using little endian format
    • No arguments, file is chosen using filechooser once command is entered.
  • Assembler - a xxxx mnemonic arg 
  • with no arguments lists all available opodes including illegal opcodes with their addressing modes in the format the assembler understands.
  • xxxx = memory location in hexadecimal
  • note: Assembler automatically outputs header for next opcode after valid input. (>a xxxx ). Enter to exit Assembly mode.
      >a c000 ldx #$01
      >a c002 stx $d020
      >a c005 inc $d021
      >a c008 lda $d021
      >a c00b and #$0f
      >a c00d bne $c005
      >a c00f inx
      >a c010 jmp $c002
      >a c013
      >g c000

28 November - C64

    • 6-Expert Cartridge support. PRG, ON and OFF modes. Freeze using EMS menu item or RESTORE key in ON mode.
    • Cartridge menu changed to Expansion port. Menu updates itself depending on what cartridge is inserted.
    • Fixed bug introduced in last build where Final Cartridge III would crash when exiting to basic.
    • Fixed writing to hirom of Easyflash. Can save in slot 2 of Zac mckracken/Maniac mansion
    • Current bank displayed in output
    • Break points implemented in monitor. b xxxx toggles breakpoint on/off for memory location. s lists current breakpoints.
    • game true/false, exrom true/false to toggle EXROM and GAME.
    • p xxxx xx to poke location with value in current bank.
    • j xxxx jumps to location without exiting monitor.
    • I will update current and include new commands with full description when I get time. I have developed these for my own debugging purposes so the monitor is far from complete yet.

24 November - C64 Monitor

  • improved cartridge support (can now view IO1 and IO2 areas for KCS Power Cartridge )

22 November -  c64

  • Fixed  blank screen issue with KCS Power Cartridge snapshots
  • 2- KCS Power Cartridge support including BLOADing saved images
    • please note you will probably need a spare blank d64 image to save. The KCS manual recommends a disk with at least 256 blocks. You will also need to turn the disk drive off then on again if the program puts code into the drive memory.
    • Snapshots with KCS can sometimes blank the screen but runstop/restore or soft reset will reset the screen and give you access to the disk image for BLOADing etc. (update:fixed)
    • Monitor W command needs old CIA's selected from settings to function correctly. It doesn't step through to next instruction with new CIA's. Not sure if this happens on real C64C with new CIA's as I don't have access to this cartridge to test.
  • I will be working on saving d64 images and 6 - Expert Cartridge support next.

21 November - C64

  • Final Cartridge III support. Unsupported cartridges no longer crash emulator. Summary of cartridges currently supported are:-
    • 0 - Standard 4, 8 and 16K cartridges
    • 1- Action Replay
    • 3 - Final Cartridge III
    • 4 - Simons' Basic
    • 5 - Ocean Type 1
    • 10 - Epyx Fast Load
    • 13 - Final Cartridge 1
    • 15 - System 3
    • 18 - Zaxxon
    • 19 - Magic Desk
    • 32 - EasyFlash

18 November - C64

  • fixed up stray pixels during flipping of multicolor bit in some demos and games - Krestage 2.
  • zeropage RAM values simulated with drive-quickload. Filename stored correctly at top of BASIC ram. SAM reciter and Let's Scroll It works correctly when loaded with quick load .

15 November - C64 Monitor

  • fixed branch address
  • New command: c - Clear display window
  • Display updates after r command
  • includes IRQ status and timers in r command output

8 November - C64

  • Fixed freezing of emulator when attempting to savestate when cpu halted with opcode $02,$12 etc.
  • Machine code monitor (work in progress)
    • d, d $xxxx - Disassemble
    • m, m $xxxx - Memory dump
    • r $xxxx - execute and disassemble $xxxx cycles (recommend <500 cycles at a time)
    • g $xxxx - exit monitor and jump to instruction at $xxxx
    • x - exit monitor

6 November - Core 6502 (C64, VIC 20, Atari 2600)

  • Improved SHA,SHS,SHX, and SHY emulation. Supports page boundary crossing and DMA access.Passes all available VICE test programs.  Confirmed same programs pass on my real C64. The basic algorithm I use for all instructions is as follows. The normal logic of the relevant indexed addressing modes applies to all cycles of all of the SH instruction. Let me know if you want me to expand on this.

    Cycle before WRITE cycle
    1. ADH=ABH+1;// even if page boundary not crossed
    WRITE Cycle
    2. IF indexed address crosses page boundary {ABH=ADH AND REG.value};
    3. IF proceeding read cycle was not paused for DMA {write (REG.value AND ADH) ==> databus};
    4. ELSE {write (REG.value) ==> databus};

22 October -C64

  • Improved ULTIMAX support.

8 October - C64

  • SID - Fix pulse output when test bit set. Speech in Apollo 18 now works

7 October -C64, Vic 20, Atari 2600

  • Snapshots
  • Gamepad support
  • Various emulation fixes (c64) Wonderland xii diskchange now works, reu fixes
  • interactive diskviewer (VIC 20, C64)
  • Manual

17 September - VIC 20

  • Programmes can be automatically run by double clicking the filename in the disk content window. Double clicking an empty space in the disk content window will load"*",8,1
  • Fixed VIA PA latching.  PWP Liberation now works
  • Removed some debugging code that slowed emulator down after emulators system clock overflowed

16 September -VIC 20

  • Fixed writing to cartridges. Robin Hood now works
  • Hard reset implemented (clears ram)

14 September - VIC 20 Emulator

Supports all standard memory configurations. JRE7 or better required. I will compile for previous versions of Java if requested.

  • PAL (default) and NTSC(interlace not emulated)
  • Bandits compatible(NTSC)
  • Cassette and Disk drive (C1541) support
  • number keypad = joystick directions, Right-CTRL = fire button

14 June 2015 - ATARI 2600 Emulator

Supports only standard 4k, 8k, 16k and 32K roms/super roms at this stage. JRE7 or better required. I will compile for previous versions of Java if requested.
Keyboard controls

  • F1- Power (on/off)
  • F2 - TV type (color/bw)
  • F3 - Left difficulty
  • F6 - Right difficulty
  • F7 - game select
  • F8 - game rom
  • F11 toggle joystick port
  • number keypad = joystick directions, Right-CTRL = fire button


21 January - SAVE STATES - read changelog for what is supported.

Features that are available now include mouse support(F12 enables/disables, F11 swaps mouse port), joystick(number keypad, 0 is fire, 5 swaps port). Please note the current user interface is intended for testing purposes hence why it is still beta. I am still focusing on optimising the core of the emulator so it may be sometime before I tidy up the menus. Feel free to send me suggestions and I will try and incorporate them into the next release. This emulator is benchmarked against my PAL commodore 64C model PCB assembly number 250466 with VICII 6569r3, SID 6581 and CIA 6526A's. Peripherals I have to test with include a 1541-II disk drive(photo used as disk icon), Action Replay VI, SD2IEC Commodore 1541 Disk Drive Emulator and a commodore C2N Cassette. I use the test programs from the Versatile Commodore Emulator (VICE).