Project State Update

This post summarizes the state of the Projects I am currently involved in:

  • VICE: Cocoa Port is progressing well. Core already finished.
  • DiskImagery64: Almost no time lately. Moved to
  • OpenCBM: Joined development to support Mac port

VICE Cocoa Port

During the spare time of almost half an year, I integrated the VICE Mac Cocoa Port that was written by Michael Klein into the current official code base. Ok, integration itself was not the main effort, I also changed some core features: The port is now fully multi-threaded and uses Cocoa’s distributed objects approach to handle the synchronization across threads. The emulated machine runs in one thread and the other one displays the virtual viewport, handles user input and all other UI elements. With this approach no UI interaction (i.e. dialog, menu) blocks the emulation.

Another quite big change to Michael’s port is found in the UI: Michael used the menu-based UI of the X11 port where each setting of the emulator is represented in a single menu entry. This leads to very large and deep menus that are not very usable IMHO. So I had a look at other VICE ports and found that the win port is very confortable to use. There the most common settings are found in a short menu and all other settings are embedded into dialogs. I wanted this kind of dialog-based UI for Macs, too and started this new approach. Dialogs are easily created with the Interface Builder of Apple’s DevKit and so I started to integrate all UI elements with this elegant tool. Currently, I finished the menu bar UI for the x64 emulator and created dialogs for the drive and joystick settings. All other dialogs are still missing and will be added one after the other…

I also reworked the whole code base to fit in the new structure seperated by machine code for the machine thread and UI code for the UI thread.

The following cool features were already available in Michael’s port and are of course still available:

  • OpenGL Rendering: The viewport is rendered with OpenGL and is thus very fast and scales automatically to any size.
  • Fullscreen is available. Menu bar stays visible so you still can access the options and settings.
  • Peripheral Drawer: A Drawer on the left side of the emulation window shows all available drives and tapes and gives their current state.
  • Drag & Drop is supported in the emulation window to smart attach any kind of image or program file. You can also drag & drop onto the peripheral drawer to mount an image in a specific drive

I just submitted a patch for inclusion into the official source tree. It contains the multi-threaded emulation core that is now used in all VICE emulators of this port. It implements the required basic UI interface for all emulations. What’s still missing are the menu bar UI files for all emulators except the x64 and a lot of setting dialogs. Only the large drive and useful joystick settings dialog are already finished. This missing parts are now added step by step and maybe with the help of other developers to speed things up…

For now only x64 runs well and already provides the features mentioned above. In this stage of development its time to include some beta testers that help to test the core on a wide range of machines and find the numerous bugs that are surely there… I will start to compile and release binaries for the small group of beta testers. If you are interested in helping out then just drop me a mail and I will add you to the list and give further instructions….


Due to the huge amount of time the Cocoa port of VICE currently consumes of my spare time, there was almost no time left for my other pet project: DI64. The only major thing I did was to move the whole code base to SourceForge. This allows to use their infrastructe (e.g. SVN repository, ticket system, bug tracking) to simplify the development of such an open-source project. You can reach it at: There you will find instructions on how to check out the source from the SVN repository…


Yes, this is a new one ๐Ÿ˜‰ Recently I played around with the XU1541 USB cable to connect my MBP directly to a 1541 floppy. With the help of the OpenCBM software you can then transfer files easily from retro media to your current machine. I added some patches to the current CVS Tree to compile and use OpenCBM on a Mac. The maintainer ask me if I’d like to join the development to keep the Mac port up to date.. And so I got another retro project with Mac connection ๐Ÿ˜‰

Currently, I am helping out to get the CVS version to compile cleanly on Macs (just use the Linux Makefiles – they support the Mac, too). Later on I’d like to integrate the OpenCBM Mac Library into my other projects: MacVICE and DiskImagery64. VICE already can access a real floppy via OpenCBM – I will have a look what needs to be done to add it to the Mac port. DiskImagery64 will have a new I/O device for disk image import and export: the XU1541…. So stay tuned… interesting projects are coming up ๐Ÿ˜‰

PS: Today I moved to a new Blog system. Namely the database of my WordPress was moved from a SQLite one to a MySQL DB. I hope everything works now as expected… If not then just drop me a mail. Thanks!

Leave a Reply