About M.A.C.E.

The goal of M.A.C.E. project is the create an runtime library and executing environment for old Mac applications, similar to Apple’s deprecated Classic environment, but without needing any ROM images or System Software binaries by Apple.

Foreword

Ever since the introduction of Mac in 1984, many have been fascinated by the ease of use, friendly interface and approachability of them. Many people who only had experience of computers text-based Apple ][ and IBM-compatible PCs, were blown away by the high-resolution graphical user interface, mouse, windows, icons and everything the Macs offered. Compared to the text-based operating systems such as DOS, the step was huge – especially for kids like us who were just starting to learn English as foreign language, the switch from trying to learn typing bizarre foreign-language commands on a black terminal to a native Finnish-language visual interface, where actions were performed using pointing and clicking, was literally out of this world.

Spending youth in this environment, we grew up to love the original Mac interface, spent (way too many) hours playing the games on them, and eventually learned programming. Throughout the years, we’ve started to miss the great user experience, and games we used to play. Luckily, there also seem to be other people with more or less similar thoughts, as we found about various emulators which allowed running old Mac system software, apps and those games we used to love. The emulators we’ve most had experience have been (links included):

They all have their advantages and drawbacks, but have been the best options available so far.

From a small great idea…

Most of the emulators seemed to suffer though from certain drawbacks; most required copyrighted Apple ROM files, system software images, and transferring files required often joggling around with disk images to get the job done. And like on real Macs, it’s often not obvious which games should be ran of which system; Trying to run very old monochrome games such as Dark Castle will definitely cause problems on Mac OS 9!

Inspired by Apple’s Classic environment on Mac OS X, and further motivated by the discontinuation of it eventually during Intel transition, my friend Pukka had an idea, which turned out to be the seed from which this project was sprung from. As far back as in early 2010, he proposed building a wrapper, where “Classic” 68K Mac apps could be executed, and all their system API calls translated to the modern Carbon equivalents, called “x68k”:

https://68kmla.org/forums/index.php?/topic/43720-coding-projects/&do=findComment&comment=469818

Its a 68k emulator for OS X similar to what older PowerMac System/OS versions have. It is able to run old programs without classic as if they were native. For now it is only able to run simplest kind of applications.
 
I dont have complete Toolbox emulation (yet). There is 68k processor emulation and wrapper which translates application’s toolbox calls to the Carbon framework calls. Some deprecated functions and features are implemented so that the applications are able to run.

Sadly, the project eventually stalled due to the limitations and deprecation of Carbon API, previously started transformation Intel, and the eventual 32-bit to 64-bit transition.

…to a new beginning!

During the late 2017, I ended up chatting with Pukka, and somehow the idea of restarting the project came up. I decided I would attempt to build a completely fresh Toolbox implementation for him. Unlike the existing emulators, which are focused on emulating the hardware and using existing copyrighted ROM and operating system binaries, this project would have the benefit of being completely free of any ROM or Mac system files, with all Toolbox APIs implemented in C code, translated on the fly to the host system!

This website documents the journey we began, which could eventually lead to the ability for us to play the beloved old games, such as Dark Castle, Railroad Tycoon, and Civilization again on any modern operating systems.

Some light reading for a Mac (emulator) programmer