Hi everyone,
I'd like to introduce Kaffeine, an open-source project I'm building on top of AROS to run classic Amiga applications side by side with native software on the same desktop, without booting into a separate classic environment.
My first target is running unmodified 68k binaries on native AROS AArch64, and I have a first milestone to share: the original 68k Personal Paint 7.2.1.0 launching from the AROS desktop, opening a 1024x768 screen in 256 colors, drawing shapes and text, saving a pixel-exact IFF/ILBM file, and returning cleanly to Wanderer.
Video:
https://drive.goo...sp=sharing
Public repository:
https://github.co...1/kaffeine
Rather than emulating classic hardware, kaffeine.library (grown out of AROS's m68kemu.library) works at the application level. It executes 68k code and bridges library calls directly to native AROS services like Exec, DOS, Intuition, and graphics.library, handling big-endian conversion, 32-bit guest pointers, callbacks, and guest 68k libraries loaded from disk. Recent work covers windows, menus, gadgets, input, fonts, layers, bitmaps, cooperative guest tasks, and 8-bit indexed screens on the Raspberry Pi framebuffer driver. Outside of GUI apps, both the bzip2 1.0.8 and IJG JPEG 9f self-tests pass with byte-for-byte identical output.
In the video, AROS AArch64 is running inside QEMU using the Moira interpreter and PPaint's CPU blitter (with idle waits trimmed, but drawing shown at real speed). It is still an early compatibility preview, icon launch currently uses the CLI tooltype instead of full WBStartup, and reloading saved 1024x768 images currently hits an "image is too large" error.
Looking ahead, a dedicated 68k-to-AArch64 JIT is underway (a standalone probe already executes translated code, native calls, and nested callbacks inside AROS), alongside full WBStartup support, broader cleanup, and testing on physical Raspberry Pi hardware. Longer term, keeping the compatibility layer separate from the CPU engine should make it possible to bring this approach to other hosts like RISC-V, and potentially explore other guest ABIs down the road.
This project builds on the work of the AROS team, Fabian Schmieder's m68kemu.library, and Dirk W. Hoffmann's Moira core, with Emu68 as an early inspiration and technical reference (though no code is shared). Technical notes, screenshots, and the saved IFF file from the demo are available here:https://github.com/kaffeine1/kaffeine/blob/master/docs/kaffeine/personal-paint-demo.md
Feedback, bug reports, and patches are very welcome. Seeing that first double-click actually open a screen and let me draw something was a pretty great moment.
Michele