FWIW, I've been playing with GrayBox, enough to fix some bugs and extend it enough to get FDisasm working with it.
GrayBox runs a full MacOS, booting with a Plus ROM, and (in the case of MacDraw above) a System 6.0.7 System file, with the desired executable replacing Finder, all of which live inside the .app's bundle.
It then passes through select traps to Carbon nearly verbatim, just doing BlockMoves of the trap arguments from within the minivmac instance into the native ones defined by Carbon headers (with some swizzling of select pointers between the minivmac instance and the host). It is limited to 32bit only both due to Carbon use and doing BlockMoves which include pointers. It's limited to PPC due to no endian swaps.
It doesn't handle the vast majority of traps, allowing them to be handled by the booted system and ROM running inside minivmac. As a result, it gets a bit hairy when trying to add support for new traps, since some are using System 6/Plus ROM, and some are using the host system's Carbon implementations, and they're sharing the same data structures.
It's a neat project, and it is useful for some specific things more or less as is. It runs MacDraw and FDisasm! But the work required to make it generally useful is both daunting, and looks a lot like moving in the direction of Executor. At which point, it may just be better to go with Executor anyway. I'm planning on playing with Executor next.
Unfortunately, due to the requirements of including the ROM and System file, most any work on GrayBox quickly becomes an inappropriate topic for this forum.
GrayBox runs a full MacOS, booting with a Plus ROM, and (in the case of MacDraw above) a System 6.0.7 System file, with the desired executable replacing Finder, all of which live inside the .app's bundle.
It then passes through select traps to Carbon nearly verbatim, just doing BlockMoves of the trap arguments from within the minivmac instance into the native ones defined by Carbon headers (with some swizzling of select pointers between the minivmac instance and the host). It is limited to 32bit only both due to Carbon use and doing BlockMoves which include pointers. It's limited to PPC due to no endian swaps.
It doesn't handle the vast majority of traps, allowing them to be handled by the booted system and ROM running inside minivmac. As a result, it gets a bit hairy when trying to add support for new traps, since some are using System 6/Plus ROM, and some are using the host system's Carbon implementations, and they're sharing the same data structures.
It's a neat project, and it is useful for some specific things more or less as is. It runs MacDraw and FDisasm! But the work required to make it generally useful is both daunting, and looks a lot like moving in the direction of Executor. At which point, it may just be better to go with Executor anyway. I'm planning on playing with Executor next.
Unfortunately, due to the requirements of including the ROM and System file, most any work on GrayBox quickly becomes an inappropriate topic for this forum.