• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Progress on our new Mac App Compatibility Environment

nglevin

Well-known member
Thank you for the information and effort, sadly I could not get the link to work.
Pardon me, the USA Copyright Office has an interesting concept of sessions and limited resources.

If you're willing to brave their system, search for document number V3435D122, there are three entries with the title "Apache Strike". From the link in "Title appears in document #[...]", you'll see where the ownership was transferred to.

Same entity that technically owns all remaining copyrights to the works of Infocom. It shouldn't be surprising, given that.

The games look great, by the way! Running all four on virtualized Mojave.

 

Toni_

Well-known member
Sorry I could not reply earlier, we have been very busy with work and programming in the spare time :)  

@Toni_  You know what'd be super duper useful to get working?  AppleShare Server or FTPd.  Some sort of networking app so we can exchange files between our vintage Macs and our modern ones.  With Apple removing ftp from Mojave, it's become a pain in the butt. :(
Well, someday if we ever get to the point at which we implement MacTCP support and AppleTalk stack, theoretically AppleShare IP server could be run in the emulator.

At least on Mac OS X native AppleTalk cannot really be used without special network driver, as the BSD sockets API on the system appears to be limited to only IP-based protocols of the OSI Network layer, although on some systems may allow implementing custom protocols on that layer. One solution might be the custom driver, such as I think Basilisk II was using at least on Windows.

A FTP server would be rather unpractical, as all Macintosh files would need to be compressed and/or wrapped as BinHex/MacBinary to preserve resource forks and metadata, while AppleShare would allow files to be transferred directly without needing conversion on both ends.

Actually one interesting option might be to explore possibility of using serial connection, and some BBS software which supports Macintosh files, such as FirstClass. Maybe the native FirstClass server could be run on the real Mac, which FirstClass client could connect to from the emulated environment on through a USB-to-serial converter or something. This was an idea suggested by Pukka a few weeks ago, which I almost forgot about. This would also have the benefit of not requiring file conversion on either end.

(Ps. I myself personally do file transfers at the moment using USB sticks formatted with HFS+, from a PowerBook G3 running Mac OS 9 to the Mac OS X -  Although I hope Apple doesn't retire HFS+ too soon now that APFS is out...)

Pardon me, the USA Copyright Office has an interesting concept of sessions and limited resources.

If you're willing to brave their system, search for document number V3435D122, there are three entries with the title "Apache Strike". From the link in "Title appears in document #[...]", you'll see where the ownership was transferred to.

Same entity that technically owns all remaining copyrights to the works of Infocom. It shouldn't be surprising, given that.

The games look great, by the way! Running all four on virtualized Mojave.
Thank you, I tried to shuffle the website for a moment but seems the search is rather obscure, or maybe my browsing skills are just limited :) In either way, it's probably better that I focus on the programming and worry about that particular game later  :-D  

I'm glad to hear the games work for you, we actually today updated the test bundles to new versions which have quite promising performance improvements, which I wrote a bit details about on the blog a few moments ago.

Thanks for the support, we'll get back to the coding and *hopefully* we will get more test applications for the next update.

 

Toni_

Well-known member
Hi again,

We're still in middle of preparing next update, but we just had yesterday a rather interesting thing happen by accident, which I wanted to share here because it is rather unusual: While trying out a couple potential test applications with the emulator, I ran into an application which was infected by nVIR A type virus ( https://en.wikipedia.org/wiki/NVIR ). What makes this interesting, is that it apparently was able to infect the System file of that application's bundle, as we now have near-complete resource write support:

2019-09-07 nvir.png 

This is partial output of the "System" file's resource map debug dump, and the 'nVIR' and 'INIT' resources were actually written into the System file by the virus in infected application - and the system resource map seemed to be mostly still functional! I only found this out because a bug in resource writing corrupted Geneva font, causing the infected application to crash :)  A kind of controversial achievement, having good enough compatibility for even viruses to work in the toolbox emulation...

Luckily the infection was isolated to only a couple individual test applications, and I was able to identify the original source of infection on "MAC OS 6 App Collection.dsk" image at: http://www.toughdev.com/content/2016/12/system-6-0-8-on-a-vintage-macintosh-se-with-4mb-ram/

Please be extra careful if you download the disk image from page, I have written comment to the author to let him know about the infection.

One of the positive sides of the current per-application bundling of files as isolated file systems, is that the infection never was able to break out of the application bundle. I've also scrubbed through all disk images to make sure there will not be any risk of infection at later time (and run Disinfectant on the source Macs regularly). These viruses are ancient, but can awake up at any time it seems...

 

olePigeon

Well-known member
That is inadvertently really cool. :D

There's a YouTube video of some of the more creative viruses and trojans on DOS.  I don't recall any particularly "fun" ones for the Mac.  They're amusing to watch.

 

pcamen

Well-known member
Responding here rather than the eBay Finds thread as it seem a better place for it.

Perhaps MACE on Haiku will have you changing your tune, someday?  :)

I was wrestling with how to express a sentiment around software making the platform. I'm sure someday, I'll have a bit more to write about Haiku as it (again, slowly) shapes itself.
I love the idea of MACE.  I think it could bring a lot of renewed interest in all things vintage Mac if people can run Mac applications on a modern computer.  (Somehow running things through an emulator on a web page makes it non-interesting to me personally.)  But running MACE on my primary machine is much more interesting to me than running MACE on Haiku, with which I have no experience.  I'm also not sure why I'd want to add another layer to be able to run the vintage applications. 

 

nglevin

Well-known member
To be completely honest with you, it was a tongue-in-cheek means of plugging the project. Perhaps effective at that.

Though I was following some train of thought that went something like, SheepShaver was originally created to bridge an applications gap with BeOS during its PowerPC years by bringing over Mac apps with the right hooks to support a full System 7 environment.

MACE is bridging that same gap, with an earlier version of the Macintosh Toolbox, in a more interesting way.

 

Builder1

Member
Reading your update on the work you are doing with Performance improvements and SystemTask, it looks like you have just added a threading model to the Toolbox!

I can’t help but think of the nanokernel (in 8.6 and later) rewritten in C and patched together with M.A.C.E.

Is this one of your goals!?!

Are you working toward preemptively multitasking and memory protection via the nanokernel for M.A.C.E. ? Would it even be possible?

The thought of a community-driven "Copland-like" system (even if it is minimal) is VERY alluring !!! Obviously a kernel does not make a system but still.... very alluring :)

J

 

LaPorta

Well-known member
Does anybody know who owns the copyright for Apache Strike currently? I wonder if they might be open for allowing making a M.A.C.E. bundle of the game...

There's a huuuuuuuge amount of news since last update, but we just haven't had time to write about them in the blog...I think most important thing to mention briefly is that Dark Castle, Beyond Dark Castle, Apache Strike and PT-109 are currently 99.9% functional under M.A.C.E., mostly thanks to Pukka's recent integration of the "M68K Emulator Testsuite" by Gwenole Beauchesne, which has already helped to identify and fix most of the remaining CPU bugs  :)  
I do know with 100% certainty that a number of years ago, Mark Stephen Pierce and SuperHappyFunFun purchased the rights to the Dark Castle series in order to release Return to Dark Castle. These were purchased from Delta Tao, who had acquired the rights in the 90s to make Color Dark Castle. Memory escapes me as to who they purchased them from originally, but it was whatever company had acquired Aldus (who, in turn, purchased Silicon Beach Software in the late 80s). So somewhere in that chain someone own the rights. It could be MSP himself, but at the least he would probably be the best person to ask for sure.

 

CC_333

Well-known member
There's a YouTube video of some of the more creative viruses and trojans on DOS. 
I have two memorable experiences with Windows viruses that were, for lack of a better word, interesting.

The first one was on Windows XP back in mid 2004, where I got stuck in this very strange situation where the computer told me I was connected (I even heard all the right sounds and stuff), but nothing would work. Then, in an interesting twist, selecting shutdown or restart likewise did nothing. I couldn't even log off!!

For that, I pulled the plug and installed Windows 2000, which at the time seemed to be much more reliable than XP (there was the Sasser worm, but a decent antivirus took care of that. It wasn't long after that SP2 for XP came out, and it became much more solid, but that's a topic for another post.

Another was on 98SE in 2005 or so, and I got this very strange thing going where it behave very erratically, and the windowing controls and widgets (buttons, checkboxes, etc.) began reverting to their Windows 3.x equivalents. Needless to say, that install was completely trashed not long after, and it became unbootable.

I've never had the misfortune of getting any Mac viruses, but I hadn't really experienced the internet until shortly before it was rendered irrelevant by Mac OS X, so most of those old viruses weren't really in the wild anymore.

c

 

Toni_

Well-known member
Hi again!

Though I was following some train of thought that went something like, SheepShaver was originally created to bridge an applications gap with BeOS during its PowerPC years by bringing over Mac apps with the right hooks to support a full System 7 environment.

MACE is bridging that same gap, with an earlier version of the Macintosh Toolbox, in a more interesting way.
I recall reading about SheepShaver back in the day when BeOS on PowerPC was topical, but sadly I did not have chance to try BeOS until the x86 version (which I think SheepShaver did not work on at that time). It is such a long time ago, that I had to refresh my memory by doing some reasearch, but I found out (from http://www.atpm.com/4.09/page12.shtml ) that it is true that one unique aspect about SheepShaver on PowerMacs was that it did not require ROM image, but used the actual ROM in the machine in the emulator. That is quite neat feature, and is a little closer to Apple's Classic environment, compared to other emulators such as Mini vMac, Basilisk II, and the x86 version of SheepShaver. All of those options, even Apple's Classic environment, still require installation of the real Mac OS, which is something M.A.C.E. does not require. I think the closest equivalent would be ARDI Executor, which also requires neither ROM or system software, but compared to it we are aiming to have better compatibility in the long run (especially to get older classic games to work, which have strict requirements for hardware emulation especially for sound/video buffers, 24-bit memory manager, etc...)

Reading your update on the work you are doing with Performance improvements and SystemTask, it looks like you have just added a threading model to the Toolbox!

I can’t help but think of the nanokernel (in 8.6 and later) rewritten in C and patched together with M.A.C.E.

Is this one of your goals!?!

Are you working toward preemptively multitasking and memory protection via the nanokernel for M.A.C.E. ? Would it even be possible?

The thought of a community-driven "Copland-like" system (even if it is minimal) is VERY alluring !!! Obviously a kernel does not make a system but still.... very alluring :)

J
Actually not really, technically we are only using the multithreading capabilities of host system to simulate interrupt and CPU "idle" operations. From the perspective of emulated applications, everything is still working as on the real Mac. The same "thread-safety" rules apply as on real Macs (which mostly can be identified by warnings in IM documents mentioning certain calls not being interrupt-safe - such as memory allocation calls not allowed from VBL handlers, etc...). The main application code running on main thread in the emulator equals to the single execution context on real Macs, which the interrupt handlers can, well, interrupt, but the code running in interrupt handlers cannot be be itself interrupted.

Technically, real Macs have various interrupt levels, which allow interrupts to be nested, but that is currently not supported as it has not been needed. For example, if VBL handlers exceed the 16ms limit (which is how often VBL interrupt fires), on real Mac a new VBL interrupt would be generated, which would only increase Ticks lowmem, but not re-enter the VBL task execution as it would already be running from the previous interrupt. This is one of the reasons sometimes on older computers, when VBL task exceeds the time limit, the mouse cursor would start getting "jittery" and "laggy", but the TickCount would still be valid as the Ticks would get updated properly. In our emulator, however, we run those "missed" Ticks increments on the next VBL interrupt, counting the number missed from the same timer which runs the audio synchronization with SDL audio thread.

However, nothing prevents running multiple M.A.C.E. instances on the same host operating system, and as they would be individual virtual machines, each of them would have from their own perspective exclusive ownership of the CPU, while in actuality the host system would schedule execution time between them, like currently on Mac OS X when running multiple M.A.C.E. applications at once. The downside of this is, though, that process manager-aware applications would only see their own instance, as the memory space is currently unique to each application. This is not yet a problem, but at some point there will be work needed to see whether process manager support is better to be implemented as System 7-style cooperative multitasking using exact process manager emulation, or whether for example launching of applications could be delegated to host system. This would however create challenges on how to handle program-to-program-communications, "shared" memory (on real Macs all apps share the same address space, and thus see each other AND the temporary memory allocated from the process manager/system heap).

I hope that information makes some sense - I am really better at writing code for all this, compared to writing documentation *about* it  :)  

Semi-off-topic: Of course, a dream situation would be to be able to create a completely independent Mac OS 7/9 operating system, but that would require adding a kernel and drivers, as currently the emulator depends a lot on host system to do a lot of the heavy lifting. However, I did write a couple years ago a small x86 "PC" BIOS bootloader, which can parse real HFS+ filesystem on MBR volume and launch executable stage 2 boot loader from "System" file in "blessed" System Folder (posted on https://forum.osdev.org/viewtopic.php?f=1&t=12087&start=3297, direct link to image: https://forum.osdev.org/download/file.php?id=3851&mode=view ). This however is quite far-fetched idea, so not really in scope for at least the next couple years...

I do know with 100% certainty that a number of years ago, Mark Stephen Pierce and SuperHappyFunFun purchased the rights to the Dark Castle series in order to release Return to Dark Castle. These were purchased from Delta Tao, who had acquired the rights in the 90s to make Color Dark Castle. Memory escapes me as to who they purchased them from originally, but it was whatever company had acquired Aldus (who, in turn, purchased Silicon Beach Software in the late 80s). So somewhere in that chain someone own the rights. It could be MSP himself, but at the least he would probably be the best person to ask for sure.
I was actually checking the ZSculpt website recently, as we have Dark Castle 99.9% complete (only issue left is that some [probably] CPU bug is causing the robots to behave erratically - otherwise everything works including controls, sound, gameplay, high-scores, etc), to see who to contact in case we get the game finally to full 100% completion. It would be really great to have this original, iconic game again publicly available on the modern Macs. Although Return to Dark Castle is also an awesome game - we played it through on easy level with Pukka a couple years ago in the office after-hours :)  (original Dark Castle we completed I believe at least on the intermediate difficulty, maybe even on advanced...cannot remember exactly).

Ps. There was request on Facebook for 10.6.8 compatibility for the emulator, so I actually added it to the build today (previously 10.7 was minimum), and updated the bundles with new version. So if any of you guys have 10.6.x, you can now give the apps a try on that system (it's actually very ironic, and kind of sad, that how blazingly fast the 10.6.8 is on iMac 2006 compared to 10.14 on 2015 MacBook Pro...with less memory, spinning hard drive, and much older CPU...)

 
Last edited by a moderator:

Dog Cow

Well-known member
Ps. There was request on Facebook for 10.6.8 compatibility for the emulator, so I actually added it to the build today (previously 10.7 was minimum), and updated the bundles with new version. So if any of you guys have 10.6.x,
I run 10.5.8 for HFS-write compatibility. Any chance you could compile with 10.5.x support too?

 

Toni_

Well-known member
I run 10.5.8 for HFS-write compatibility. Any chance you could compile with 10.5.x support too?
Hi,

It will be possible someday, but it will take a little bit more work than the 10.6 compatibility. My main development machine, which we use to create bundles, is running Xcode 9 on Mac OS X 10.12 which can go only down to 10.6, which allowed the 10.6.8 support to be relatively easily added. We do however also have lower end machines, and I can do builds on Xcode 4 on Mac OS X 10.7 on Mac Mini C2D, but we will also need to prep up a test machine with Mac OS X version lower than 10.6 to do the tests. Also, I am not sure how low SDL2 (our current front-end) can go. Pukka has mentioned a couple times, that he would like us to try to go as low as at least PowerPC G4 with OS X 10.3, so we definitely will not be ruling out lower end, it just will be a lower priority at the moment.

 

Builder1

Member
This is not yet a problem, but at some point there will be work needed to see whether process manager support is better to be implemented as System 7-style cooperative multitasking using exact process manager emulation, or whether for example launching of applications could be delegated to host system. This would however create challenges on how to handle program-to-program-communications, "shared" memory (on real Macs all apps share the same address space, and thus see each other AND the temporary memory allocated from the process manager/system heap).
This is why I was thinking of the nanoKernel. Apple had a solution for running older cooperative code along side preemptive memory-protected code (I don't understand the details of how they did that but my understanding is that the nanoKernel was the key that made that happen.) Rather than using the host OS to do the program-to-program communication, reproduce the parts (nanoKernel?) that Apple made to do that and keep it inside the emulation environment.

Is that a reasonable idea?

(it's actually very ironic, and kind of sad, that how blazingly fast the 10.6.8 is on iMac 2006 compared to 10.14 on 2015 MacBook Pro...with less memory, spinning hard drive, and much older CPU...)
Yes, it is! I think there is a community-wide yearning for a smaller simpler system that's both performant on a range of hardware AND doesn't corral us in to Walled Gardens !! 6 months ago I was doing some research into SK8 (Hypercard on steroids) and I was BLOWN AWAY on how FAST emulating MacOS 7.6.1 on 68K was !!! It blew my mind! The ONLY reason I'm not primarily running classic MacOS today is that the emulators are not reliable.

This "dream" is certainly the core of my earlier post!

Perhaps diverging off topic but maybe "the dream" needs to be defined.

1) A reliable emulator for running existing software

(The M.A.C.E. project is VERY exciting! I'm actually considering using Hypercard for REAL projects again once it is up and running :)

2) Independent Mac OS 7/9 operating system. capable of running original software (FULL compatibility not required). NanoKernel included to provide a preemptive, memory protected space for "new" community created applications.

3) Poor man's Copland. Simplified versions of "some" of the Copland features. Document-Centric computing would be my #1 vote! OpenDoc compatibility NOT required.

Like I said, it's the "dream".

What do you guys think? Does it match your thoughts?

j

 

pcamen

Well-known member
What do you guys think? Does it match your thoughts?
Absolutely!  I'd try and do real work with system 7-9 stuff if there was a reliable emulator and the ability to run system 7-9 apps in a fully working compatibility environment.  I think both together would be awesome. 

 

uyjulian

Well-known member
Cross application communication could be done easily using Apple Events.

Each application could run in its own Toolbox environment.

It seems like Elliot Nunn is disassembling the Classic ROM.

 

Toni_

Well-known member
Hi again,

Sorry for not posting much recently, we have been super busy with real-life work, and implementing one really important feature - the Standard File Package! So, now we basically have finally are getting the "Open" and "Save" dialogs to M.A.C.E.!

https://mace.software/2019/10/22/standard-file-package/

There's still work to do, but this will soon allow us to add a bunch of new test app bundles (one personal favorite I'm hoping we can finally add, if we get permission, is Continuum, which uses this for saving & loading of custom galaxy files). I will post more when we have something new for you guys to try out, but for now I have to keep this short due to late time and minor autumn cold I'm having that's slowing me down a bit.

 

Toni_

Well-known member
Hi,

It's not that many days since my last post here, but there's some great news: We have now bundled three new games for you guys to try out!

One of them is one of our favourite games - Continuum - which I got the personal permission from Brian Wilson to put up for free download as a M.A.C.E. bundle! The two other are some our favourite freeware games GunShy 1.3 (mahjong solitaire clone) and MacConcentration (match pair memory game).

Also, all the test applications have been updated to the new Beta 7 version of M.A.C.E. runtime, which includes - among other things - fix for the disturbing Catalina keyboard permission popup, and writable file system support, which allows finally not only high-score saving to work in ZeroGravity, but also Standard File dialogs to be functional in GunShy and Continuum. This means that the Planet Editor is fully functional in Continuum.

• More details about this newest update:  https://mace.software/2019/10/28/continuum-two-other-new-apps-bundle-write-support/

• Updated app bundles: https://mace.software/files/

We have tested the updated app bundles on Mac OS X 10.6, 10.12, 10.14 and 10.15, and they seem to be working nicely so far. If you try them out, please let me know if you encounter any issues with them. I am especially interested in the performance of the new writable file system code - it is such a major and new feature that there must be still some bugs hiding in it...

 

Dog Cow

Well-known member
 and writable file system support, which allows finally not only high-score saving to work
I recommend using MacBinary format instead of AppleDouble, especially if you want to facilitate easy transfer to vintage Macintosh computers.

Also, every version of OS X so far released under HFS, HFS+ and APFS supports resource forks. Consider using native filesystem support under OS X for writing resource + data forks into a single file.

 
Last edited by a moderator:

Toni_

Well-known member
I recommend using MacBinary format instead of AppleDouble, especially if you want to facilitate easy transfer to vintage Macintosh computers.

Also, every version of OS X so far released under HFS, HFS+ and APFS supports resource forks. Consider using native filesystem support under OS X for writing resource + data forks into a single file.
Thanks for your reply.  :)  We actually considered MacBinary initially as the format last summer when we started work on the file system, but gave up quickly with it because of the performance (and disk-wear) overhead, CRC checksum calculation and added complexity of managing both resource and data forks in a single file which made it unpractical for real-time file operations. For example, adjusting data fork's size in MacBinary file would force relocating the entire resource fork's portion inside the single file.  :-(  With AppleDouble, the both forks live in separate files on host system, allowing them to be easily resized without affecting each other as a near-zero-cost operations. This also has the benefit that we can support non-HFS host systems with current code, even though we currently only have Mac OS X builds available. :)

We did structure the file system code in such a way, that we can easily add alternative file system backend layers, including the native HFS support (using ../namedfork/rsrc).  :D However, this has not been a high priority (compared to other more important features), especially as it is unclear for how long Apple will keep the good old resource forks & file metadata working natively... for example, when 10.6 was released, there was an article that Apple had at least partially repurposed at the time resource forks of certain files as a way for implementing per-file compression ( https://arstechnica.com/gadgets/2009/08/mac-os-x-10-6/3/ ).  :'-(

It should be noted that the goal is to support more options in future, especially when we someday get the "generic" classic replacement good enough for release, to help transferring files to and from the environment.  :cool:  The native host system resource fork support is one the possible options, and we will also be investigating the support of actual MFS/HFS disk images - and we are also researching options for exchanging files between MACE application instances directly as one shared virtual volume. But all those options will still need more planning.  :huh:

The priority at the moment is to implement missing toolbox routines and debug & fix most important known issues to make as many of the test applications as possible to work. For now, the current file system approach seems to be enough, as it allows creation and using the app bundles which provide the easy-to-use one-click solution for people wanting to try out the (currently available) old applications as easily as possible - even though Apple is trying to make that also difficult with the code-signing and sandboxed filesystem hurdles.  bw:)

 

Dog Cow

Well-known member
Thanks for your reply.  :)  We actually considered MacBinary initially as the format last summer when we started work on the file system, but gave up quickly with it because of the performance (and disk-wear) overhead, CRC checksum calculation 


The MacBinary format does not have a CRC checksum.

and added complexity of managing both resource and data forks in a single file which made it unpractical for real-time file operations. For example, adjusting data fork's size in MacBinary file would force relocating the entire resource fork's portion inside the single file.  :-(  With AppleDouble, the both forks live in separate files on host system, allowing them to be easily resized without affecting each other as a near-zero-cost operations.
This explanation does not make sense. Do you not keep both data and resource fork in RAM? MacBinary is 3 parts: 128-byte header, followed by data fork, followed by resource fork. Surely writing these 3 parts in one combined operation is no worse than writing 2 separate files to disk. You're not reducing the size of data written to disk by using AppleDouble instead of MacBinary.

 
Top