Some improvements for SheepShaver

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

User avatar
UbuntuXP
Tinkerer
Posts: 68
Joined: Sat Feb 08, 2014 8:15 pm

Re: Some improvements for SheepShaver

Post by UbuntuXP »

You and me both, but fixing all the compile-related bugs is going to be a nightmare.
"Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things."

Doug Gwyn
kataetheweirdo
Master Emulator
Posts: 313
Joined: Sun Feb 01, 2009 4:55 pm

Re: Some improvements for SheepShaver

Post by kataetheweirdo »

The best thing for compiling Sheepshaver seems to be either Visual Studio 2010 or GCC 4.3. I forget which compiler you are currently using, but those seem to be the two most suitable for that.
User avatar
UbuntuXP
Tinkerer
Posts: 68
Joined: Sat Feb 08, 2014 8:15 pm

Re: Some improvements for SheepShaver

Post by UbuntuXP »

Here's the output on gcc's version on OS X Mavericks

Code: Select all

computer:~ username$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.51) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
computer:~ username$
I can also check on my linux installation in a bit. I've never got Visual Studio figured out, but I use OS X most of the time now.
"Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things."

Doug Gwyn
User avatar
UbuntuXP
Tinkerer
Posts: 68
Joined: Sat Feb 08, 2014 8:15 pm

Re: Some improvements for SheepShaver

Post by UbuntuXP »

I've been really busy with schoolwork lately, so I don't have the time right now to fix any compile-related bugs with newer compilers. Any help to clean up the source code is appreciated.
"Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things."

Doug Gwyn
User avatar
UbuntuXP
Tinkerer
Posts: 68
Joined: Sat Feb 08, 2014 8:15 pm

Re: Some improvements for SheepShaver

Post by UbuntuXP »

I can no longer continue unless SheepShaver is updated to current compilers. I also think (though I have not tested) that my MMU emulation is done incorrectly. So progress has stalled (I hope to get back to it someday).
"Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things."

Doug Gwyn
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: Some improvements for SheepShaver

Post by uyjulian »

UbuntuXP wrote:I can no longer continue unless SheepShaver is updated to current compilers. I also think (though I have not tested) that my MMU emulation is done incorrectly. So progress has stalled (I hope to get back to it someday).
could you post your current progress on the source code?
figatrix
Student Driver
Posts: 14
Joined: Sat Jun 13, 2015 10:43 am

Re: Some improvements for SheepShaver

Post by figatrix »

Wow... If we could run MacOS 9.2.2 with SheepShaver would be awesome... Now only can run 9.0.4 version and this version is very limited for many apps, less icons, etc.

Would be pleasant/genial if we could run 9.2.2 with Yosemite (10.10.3). So we could open we old files, docs, images .... and games.

I believe that there are many people expert in C++ to improve the SheepShaver code and upgrade to MacOS 9.2.2 in the newest OS (Yosemite).

Cheer! :lol:
Figatrix
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: Some improvements for SheepShaver

Post by uyjulian »

figatrix wrote:Wow... If we could run MacOS 9.2.2 with SheepShaver would be awesome... Now only can run 9.0.4 version and this version is very limited for many apps, less icons, etc.

Would be pleasant/genial if we could run 9.2.2 with Yosemite (10.10.3). So we could open we old files, docs, images .... and games.

I believe that there are many people expert in C++ to improve the SheepShaver code and upgrade to MacOS 9.2.2 in the newest OS (Yosemite).

Cheer! :lol:
Figatrix
yeah... I got a PowerMac G4 MDD so I could check out 9.2.2

on my branch of SheepShaver, I cleaned up the code removing compatibility for all platforms except Mac OS X x86/x86-64 so the code is easier to work with.
figatrix
Student Driver
Posts: 14
Joined: Sat Jun 13, 2015 10:43 am

Re: Some improvements for SheepShaver

Post by figatrix »

Well... then.... when.. do you believe that could be possible work (64 bits) with yosemite and SheepShaver Classic 9.2.2 ?

I was working several years (1997-2002) with my old PowerPC 9600/G4 and classic 9.2.2. I have many files and docs in classic apps like Freehand (does not exist now), Quark 4.0, Photoshop 6.0 and all SCSI devices (zip, jaz, MO, scanner...).

Now, since a few month ago, i have a MacPro 3.1 (second hand) with 10.10.3.. and i want recover my old classic files to save a big HD (2TB).

With SheepShaver is possible, but with 9.0.4 limit... is very unpleasant and tired. 9.2.2 work fine and fast.

:arrow: i hope work soon with this 9.2.2 within Yosemite,,, :?:
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: Some improvements for SheepShaver

Post by uyjulian »

figatrix wrote:Well... then.... when.. do you believe that could be possible work (64 bits) with yosemite and SheepShaver Classic 9.2.2 ?

I was working several years (1997-2002) with my old PowerPC 9600/G4 and classic 9.2.2. I have many files and docs in classic apps like Freehand (does not exist now), Quark 4.0, Photoshop 6.0 and all SCSI devices (zip, jaz, MO, scanner...).

Now, since a few month ago, i have a MacPro 3.1 (second hand) with 10.10.3.. and i want recover my old classic files to save a big HD (2TB).

With SheepShaver is possible, but with 9.0.4 limit... is very unpleasant and tired. 9.2.2 work fine and fast.

:arrow: i hope work soon with this 9.2.2 within Yosemite,,, :?:
There is an SCSI to SATA adapter, but it's like US$200.
However, there is 2GB in Mac OS 7/190GB in Mac OS 9/128GB for Power Macs before MDD limit, so if you want to take that option to put in a bigger HDD/faster SSD in your older mac, take note of those limits.
figatrix
Student Driver
Posts: 14
Joined: Sat Jun 13, 2015 10:43 am

Re: Some improvements for SheepShaver

Post by figatrix »

Yes... there is that SCSI adapter.... but there is a SCSI to USB 2.0 adapter too... very expensive.. of course ($200). With my new MacPro i no need my Old Mac machines... neither PCs. All my old machines (PowerPc: 8600, 9600, G4, G4 Dual and my old PCs: Victor, Compaq, IBM, some Hybrid and Qbic PC) are within my MacPro 3.1 dual 2.8, with 8 cores, 4TB HD (1+3) and 32 GB RAM.

I have Parallels app with Windows 7 professional and Snow Leopard Server.
I have VMWAre with MSDOS 7.0, Windows 98 SE and Windows XP SP3
I have SheepShaver with MacOS 9.0.4.... (9.2.2 was my OS with my old 9600 and "G4" for many years)

Only left me get a virtual machine to mount the greatest Apple MacOS: 10.4.11 -tiger- within Yosemite. I was working many years (9) with 10.4.11 in my "G4 Dual"... and was the best OS of Apple... of course... sure. There are many mac user in specialized mac foros lovers of tiger... 10.4.11,,, many people.

Only i would need a Tiger emulator and 9.2.2 Classic OS to work fine and fully with Yosemite.

Do you understand me .. friend.?
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: Some improvements for SheepShaver

Post by uyjulian »

figatrix wrote:Yes... there is that SCSI adapter.... but there is a SCSI to USB 2.0 adapter too... very expensive.. of course ($200). With my new MacPro i no need my Old Mac machines... neither PCs. All my old machines (PowerPc: 8600, 9600, G4, G4 Dual and my old PCs: Victor, Compaq, IBM, some Hybrid and Qbic PC) are within my MacPro 3.1 dual 2.8, with 8 cores, 4TB HD (1+3) and 32 GB RAM.

I have Parallels app with Windows 7 professional and Snow Leopard Server.
I have VMWAre with MSDOS 7.0, Windows 98 SE and Windows XP SP3
I have SheepShaver with MacOS 9.0.4.... (9.2.2 was my OS with my old 9600 and "G4" for many years)

Only left me get a virtual machine to mount the greatest Apple MacOS: 10.4.11 -tiger- within Yosemite. I was working many years (9) with 10.4.11 in my "G4 Dual"... and was the best OS of Apple... of course... sure. There are many mac user in specialized mac foros lovers of tiger... 10.4.11,,, many people.

Only i would need a Tiger emulator and 9.2.2 Classic OS to work fine and fully with Yosemite.

Do you understand me .. friend.?

yeah, tiger + 9.2.2 = most older apple apps !!

For Tiger you can look at qemu, but it's a pain to use.
You can run Snow Leopard Server in VMware to run your old PPC apps.
figatrix
Student Driver
Posts: 14
Joined: Sat Jun 13, 2015 10:43 am

Re: Some improvements for SheepShaver

Post by figatrix »

Thanks a lot, friend..
Qemu app... is the first time i have ear something about it. I will try to see it later..
:smile:
User avatar
adespoton
Forum All-Star
Posts: 4227
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Some improvements for SheepShaver

Post by adespoton »

I'm curious: what exactly are people requiring 9.2.2 for?

9.0.4 was the last real update to OS 9 -- the 9.1 and 9.2 updates were mostly for classic mode compatibility. This means that any software that requires 9.1+ will likely run just fine under 10.1 through 10.4 which run just fine (if a bit slowly) under PearPC and qemu.

I've hacked up an image I use that has System 9.0.4 reporting itself as 9.2.2, and most of the rest of the System folder is from 9.2.2. It runs most of what I've thrown at it that complained about 9.0.4 being too old -- but all the same software runs in 10.4.11 (and indeed in 10.6.8 with Rosetta, except for the stuff that requires special hardware) so I've generally done that instead.
CharlesS
Granny Smith
Posts: 107
Joined: Thu Aug 14, 2008 9:05 am

Re: Some improvements for SheepShaver

Post by CharlesS »

adespoton wrote:I'm curious: what exactly are people requiring 9.2.2 for?

9.0.4 was the last real update to OS 9 -- the 9.1 and 9.2 updates were mostly for classic mode compatibility.
That's not quite right; the last "real" update to OS 9 was 9.1, whose codename was "Fortissimo" — i.e. go out with a bang. I remember it being quite a bit more stable than 9.0.x was. In addition, it had some new features; Wiki says it was the first one that introduced the Finder disc burning support. 9.2.x were the Classic compatibility updates.

With that said, I agree with you that emulating past 9.0.4 isn't necessary for most old Mac stuff. The main benefit would be for people whose only old OS 9 CDs are for 9.1 and higher.
This means that any software that requires 9.1+ will likely run just fine under 10.1 through 10.4 which run just fine (if a bit slowly) under PearPC and qemu.
While 10.1 through 10.4 work in PearPC and qemu, the Classic environment doesn't. Those operating systems currently are only able to run native software in emulation.
(and indeed in 10.6.8 with Rosetta, except for the stuff that requires special hardware)
Classic software won't run on 10.6.8 at all. That will only work for Carbon apps.
There's no earthly way of knowing, which direction we are going, for the rowers keep on rowing, and they're certainly not showing any signs that they are slowing.
User avatar
adespoton
Forum All-Star
Posts: 4227
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Some improvements for SheepShaver

Post by adespoton »

Yes, my point was that after 9.0.4, the updates in OS 9 were to Carbon, therefore anything that wouldn't run on 9.0.4 will run natively in OS X [edit] ...through OS X 10.6. Although 10.5 and 10.6 x86 are emulated with Rosetta, so anything depending on hardware won't work on these OSes (even less than in PearPC/qemu, which have some basic hardware emulation).
Last edited by adespoton on Sat Jun 20, 2015 7:18 pm, edited 1 time in total.
User avatar
Ronald P. Regensburg
Expert User
Posts: 7821
Joined: Thu Feb 09, 2006 10:24 pm
Location: Amsterdam, Netherlands

Re: Some improvements for SheepShaver

Post by Ronald P. Regensburg »

Some Carbon applications will run in MacOS 9.0.4 with CarbonLib 1.6 extension installed.
Last edited by Ronald P. Regensburg on Sat Jun 20, 2015 7:53 am, edited 1 time in total.
Reason:  
DANADAX
Student Driver
Posts: 14
Joined: Tue Jun 23, 2015 5:37 am

Re: Some improvements for SheepShaver

Post by DANADAX »

UbuntuXP, has anything further come from your effort to compile the MMU? I am on my 10.6.8 machine. If all that's needed is to compile the code on this type of OS, point me in the direction of a suitable compiler, and give me a web address to upload the results.

I'm not a programmer, but I'm dying to be able to finally run OS 9.2.2 in SheepShaver. You can take all the credit, I just want to have an MMU available in SheepShaver.
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: Some improvements for SheepShaver

Post by uyjulian »

It would be better to work in QEMU, because SheepShaver uses a ton of HLE hacks.
User avatar
adespoton
Forum All-Star
Posts: 4227
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Some improvements for SheepShaver

Post by adespoton »

and as mentioned over here, there's a high likelihood of 9.2.2 working on QEMU by the end of August. I've looked at the MMU handling and how SheepShaver traps its calls, and making it function there will 1) really slow down SheepShaver and 2) be a real mess to implement due to how extremely hacky SheepShaver's instruction emulation is. It isn't just a case of dropping in some functional MMU code, as SheepShaver may not even call the appropriate instruction in its current state.

I'm starting to look at QEMU as the long-term replacement for SheepShaver AND PearPC. It already supports snapshotting, external volumes, networking and sound, and is under active development. We're getting to the point where modern computers are fast enough not to worry about all the extra cycles needed for full emulation.
DANADAX
Student Driver
Posts: 14
Joined: Tue Jun 23, 2015 5:37 am

Re: Some improvements for SheepShaver

Post by DANADAX »

If QEMU can do this by August, I will be so very happy!
Jorpho
Master Emulator
Posts: 380
Joined: Fri Sep 17, 2004 4:22 am

Re: Some improvements for SheepShaver

Post by Jorpho »

DANADAX wrote:UbuntuXP, has anything further come from your effort to compile the MMU? I am on my 10.6.8 machine. If all that's needed is to compile the code on this type of OS, point me in the direction of a suitable compiler, and give me a web address to upload the results.
To be clear, it is (apparently) not possible at the moment to get the current version of Sheepshaver – even without the MMU – to compile at all with current development tools. (These things change as the years go by.) Adding MMU support would be the second step.
I'm not a programmer, but I'm dying to be able to finally run OS 9.2.2 in SheepShaver.
To emphasize the above, 9.2.2 is not particularly necessary to get anything running that won't already start in 9.0.4, and you can already use the Finder from 9.2.2. It's certainly quite likely that 9.2.2 is not going to run faster or better than 9.0.4.
uyjulian
Apple Corer
Posts: 244
Joined: Fri Aug 27, 2010 1:02 am

Re: Some improvements for SheepShaver

Post by uyjulian »

In one of my branches, I was attempting to convert the autoconfusingtools to cmake.
I stopped that for a while because I didn't know about configure_file.

There's still the problem of the memory management that SheepShaver uses. It still doesn't work on newer compilers, and I still haven't figured out why.
User avatar
adespoton
Forum All-Star
Posts: 4227
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Some improvements for SheepShaver

Post by adespoton »

SheepShaver expects to reference all memory from a base of address 0, which doesn't play nicely with the memory obfuscation routines introduced in recent compilers, and so they throw a "reference from address 0" error or similar IIRC.

Considering the entire way SheepShaver handles memory is based around being able to do this, fixing it is not a minor undertaking. I suggested a while back that one method might be to create a sandbox around SheepShaver that provides it an environment where addressing behaves as it expects -- but this is essentially writing an emulator to get an emulator to run inside (and it doesn't really fix the compiler issue, as the modern compilers will still refuse to compile the inner code).

Considering the development history of SheepShaver (frankensteinian child of a Basilisk II port), we may find that it's more profitable in the long term to move dev efforts to getting qemu to run with Old World ROMs.
mschmitt
Tinkerer
Posts: 80
Joined: Sun Jul 05, 2009 10:33 pm

Re: Some improvements for SheepShaver

Post by mschmitt »

SheepShaver is supposed to be able to run with the memory offset, i.e. the allocated memory block isn't at address zero. SheepShaver calls this "direct" memory mode, as opposed to "real".

This isn't working right now for several reasons, including:
  • Unlike Basilisk II, the offset is determined or set a compile time. (Basilisk's method is better.)
  • SheepShaver's CONFIGURE has no logic to use the pagezero test result to determine if real mode can be used vs. direct. So unless you explicitly set the memory mode to direct, you get real.
  • As you noted, real mode won't work without a working method of allowing addresses at 0.
  • There are several ways that we could get address 0 to work, but that's a lost cause, because this is expressly verboten in 64-bit programs starting with Yosemite. This means that the future is direct mode.
  • Compiling with direct mode falls on 64-bit because ld defaults to creating a 4gb pagezero area when linking 64-bit executables. This means that the program configure tries to use to find a natmem offset fails, because it is only testing 32-bit addresses.
  • Trying to pass an explicit natmem offset fails because there is a bug in the SED expression it uses to validate the parms. It is using grep syntax that is only valid on Sun grep, not GNU grep. The fix for that is to use \{0,1\} instead of \? in the expression.
  • Even with that fix, it still gets a kernel data error at run time. I suspect that it is trying to allocate the kernel data area at a 32-bit address.
That's as far as I got. I need to get Xcode working for debugging it to find the runtime bug.

This can all be fixed. It isn't as hard as the problems with the JIT emulator.
Post Reply