VMACE - Continuation of Mace project hacked onto mini-vMac core
PMACE - VMACE - Forum - Files

STATUS
Having problems with implementing mac region traps using Win32 paths and PathToRegion. Most ZIPped AppleDouble 68k apps from the Mace website do not run completely. BinHex 5.0 gets into its event loop, but filesystem traps are not complete. Comparison screenshots of BinHex about box in vMace and in BasiliskII are below at right. TextSize, TextFont, etc. are not implemented yet. Modal dialogs display Static Text 0x88, Button 0x04 and ICON 0xA0 items from DITL, ModalDialog user input event loop has been basically implemented in native 68k assembly using a WaitNextEvent loop. Events are added to a linked list for WaitNextEvent, menu hits and control hits are implemented using fake coorinates that tell FindWindow to look at the old event list for a return value.

One MBAR exists for the mac application, it is attached to normal windows created with CreateCWindow or GetWindow. There is also a floating toplevel menu bar window for apps that do not create normal windows automatically (WindowMaker is an example app from the book Learn C on the Macintosh). Right now this floating menu bar is created when the toolbox is inited (when vMace starts). MBAR, MENU, WIND, DLOG, ALRT, DITL, CNTL, ICON can all be loaded and processed. PBOpenSync, PBReadSync and
PCWriteSync are mostly implemented. Trap patching not implemented though, GetTrapAddress and SetTrapAddress are dummies.

The GUI was started in X11 but it is Win32
only right now because the executable produced by gcc SIGSEGV'ed, gdb appears to show that it SIGSEGV's in code that obviously wouldn't access bad memory, so I'm not sure what is wrong. Maybe that version of gcc has a bug. Also having problems getting a Mac OS X machine with Xcode running.

WHAT
An API Compatibility Layer similar to WINE but for 68k Mac OS Classic (<= Mac OS 8.1) '68k Classic' and CFM68K Applications. Might be merged with PMACE to include 68k PEF.

WHY
One can already run old Macintosh software in Basilisk II, vMac and Executor. Unfortunately they do not run with 'native' appearance and functionality, i.e. rootless mode. With rootless mode it will be possible to run old software as if it were native Linux-X11 or Win32. This will allow easier access to files in the host filesystem, rather than wasting time using disk images. Also this will allow for better integration with native applications (maybe MacOS Drag and Drop converted to Gnome or KDE Drag-n-Drop. Eventually (and ironically?) anyone will be able to run old 68k Macintosh Applications on Mac OS X with native Cocoa appearance.

WILL IT BE USEFUL?
Probably not. It will be a novelty even to mac power users, but hopefully it will keep some interest alive in mac68k apps. Of course, it is unlikely that it will ever be as compatible as a straight emulator with pirated Apple ROMs. Even in Wine it is not always a good idea to run mission-critical software. There are dozens of apps and games for mac68k that don't exist on Windows, but how many people are passionate about them?

WHAT ARE YOU USING TO TEST?
Name
Status
Problems
newcwin simple test app calls NewCWindow and while(!Button) works
SillyBalls CodeWarrior MacOS Toolbox example code
works Ellipse paints with frame, text bkground color is not invisible
windowMaker Learn C on the Mac example code
works
hello
CodeWarrior HelloWorld SIOUX example console app

?
Six pre-packaged apps from Mace website:
%Anarcho Anarcho.zip
fix LoadSeg
%BinHex BinHex.zip loads
filesystem traps incomplete (PBWriteSync)
%landslid
LandSlide.zip
fix LoadSeg
%MacSeven
MacSeven.zip loads
region traps incomplete, Play Game doesn't work
%Monopoly
Monopoly.zip
some traps pop/push wrong sizes on a7
%MaXClock
MaXClock.zip
Pack4 TODO

Apple HD SC Setup 3.0.1
"from A/UX Operating System 3.0.1" (System 7.1)

Pack4
HexEdit Fat


Pack8
SimpleText 1.3.1
SimpleText 1.3.1 from System 7.5.3

fix LoadSeg
StuffIt Expander 5.5

LoadSeg?
Super ResEdit 2.1.3 SuperResEdit.sit
SetTrapAddress?

WHAT FORMAT OF EXECUTABLE DOES IT RUN?
An AppleDouble file of type APPL or raw resource fork that contains standard '68k Classic' CODE resources. When trap patching is implemented it will be possible to load INITs before the application, but how many INITs would actually work and be useful? Desk Accessory DRVRs could be run instead of APPL. Eventually an effort might be made to get the Finder to run, but I'd guess it uses some undocumented traps... Implementing a Control Strip replacement that ues the Windows systray would be interesting, but again how many Control Strip Modules would be useful on Windows? Long CSMs probably wouldnt work in the systray, maybe they could be embedded in the task bar like Quick Launch... maybe easier on Windows Vista? Another strange idea is to implement a wrapper for 68k Netscape plugins to run them on an i386 Netscape, but what is available for 68k that isn't also made for Windows? Wasn't the Wine project making a wrapper to run Win32/i386 Netscape plugins in Linux/i386 Netscape...

DOWNLOAD
If anyone wants to help I will put the source code up. However if no one asks I'll wait until it runs something useful.

Last updated July 3, 2006