Page 2 of 3

Re: Some improvements for SheepShaver

Posted: Tue Sep 23, 2014 8:48 pm
by UbuntuXP
You and me both, but fixing all the compile-related bugs is going to be a nightmare.

Re: Some improvements for SheepShaver

Posted: Sat Oct 04, 2014 7:57 pm
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.

Re: Some improvements for SheepShaver

Posted: Sat Oct 04, 2014 10:15 pm
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.

Re: Some improvements for SheepShaver

Posted: Fri Nov 21, 2014 9:27 pm
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.

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 3:26 am
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).

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 3:44 am
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?

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 11:02 am
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

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 12:51 pm
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.

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 2:47 pm
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,,, :?:

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 2:53 pm
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.

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 3:41 pm
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.?

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 3:46 pm
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.

Re: Some improvements for SheepShaver

Posted: Sat Jun 13, 2015 4:14 pm
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:

Re: Some improvements for SheepShaver

Posted: Mon Jun 15, 2015 8:53 pm
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.

Re: Some improvements for SheepShaver

Posted: Fri Jun 19, 2015 7:14 am
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.

Re: Some improvements for SheepShaver

Posted: Sat Jun 20, 2015 12:16 am
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).

Re: Some improvements for SheepShaver

Posted: Sat Jun 20, 2015 7:53 am
by Ronald P. Regensburg
Some Carbon applications will run in MacOS 9.0.4 with CarbonLib 1.6 extension installed.

Re: Some improvements for SheepShaver

Posted: Tue Jun 23, 2015 5:43 am
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.

Re: Some improvements for SheepShaver

Posted: Tue Jun 23, 2015 2:40 pm
by uyjulian
It would be better to work in QEMU, because SheepShaver uses a ton of HLE hacks.

Re: Some improvements for SheepShaver

Posted: Tue Jun 23, 2015 5:02 pm
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.

Re: Some improvements for SheepShaver

Posted: Tue Jun 23, 2015 9:21 pm
by DANADAX
If QEMU can do this by August, I will be so very happy!

Re: Some improvements for SheepShaver

Posted: Thu Jun 25, 2015 7:22 pm
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.

Re: Some improvements for SheepShaver

Posted: Thu Jun 25, 2015 7:28 pm
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.

Re: Some improvements for SheepShaver

Posted: Thu Jun 25, 2015 8:18 pm
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.

Re: Some improvements for SheepShaver

Posted: Sat Jun 27, 2015 8:12 pm
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.