Communicating Between Guest OS & SheepShaver/Host OS

About SheepShaver, a PPC Mac emulator for Windows, MacOS X, and Linux that can run System 7.5.3 to MacOS 9.0.4.

Moderators: Cat_7, Ronald P. Regensburg, ClockWise

Post Reply
User avatar
classicmacreborn
Inquisitive Elf
Posts: 38
Joined: Tue Jan 24, 2017 6:58 am

Communicating Between Guest OS & SheepShaver/Host OS

Post by classicmacreborn »

Hi all, long time no talk.

I've been continuing work on the SS wrapper with Finder replacement. One of the tricks I'm looking at down the road is to display a splash screen until the Finder (or in this case, the custom application) has been launched in order to hide the OS9 startup screen. The idea is that the emulation OS should be completely invisible to user. I know you can replace the startup screen, and black out all of the icons with ResEdit. But it's not a great way of doing things and doesn't account for some of the odd occasional startup anomalies that can happen (like a random new extension showing up).

I'm imagining having a process monitor that continually checks if the Finder is running, and upon launching, it would send a command to SS to start displaying.

I was wondering if there has been any work on communicating between the guest OS and SheepShaver? Or if anyone can think of a situation where it has been done.

Maybe one approach is using an AppleScript to issue some kind of custom exception that will go to SS in order to pass relatively small strings of data back to the emulator?. I've briefly read over the Interapplication Communication section of Inside Macintosh, I know that program-to-program communication is handled by the Apple Event Interprocess Messaging Protocol. I know it can be used to send event commands over a network. I think there could possibly be a route where the host OS is considered a networked computer.

I think just in general it would also be really interesting to be able to pass realtime information back and forth between the guest OS and host OS. Of course, you could have a file in the shared folder that both OS's are reading and writing to. One file is continually written to by the host OS and read by the guest OS, and one vice versa to prevent any problems where they're both writing to the same file at the same time. That's probably the easiest way- although there might be some latency and this is somewhat sub-optimal as well.

Another (probably best) approach is to have a custom device that OS9 communicates with. That would be really cool.

There's probably a lot more interesting things you could do. For instance, you could have OS9 send the realtime coordinates and size of a window and then use SheepShaver (or SDL?) to crop the display to just that exact window- so it could in theory behave a little like the Classic Environment or Parallels Desktop. Something cool to think about later down the road...

Any ideas/advice would be greatly appreciated!
Post Reply