Some improvements for SheepShaver
Moderators: Cat_7, Ronald P. Regensburg, ClockWise
Re: Some improvements for SheepShaver
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
Doug Gwyn
-
- Master Emulator
- Posts: 313
- Joined: Sun Feb 01, 2009 4:55 pm
Re: Some improvements for SheepShaver
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
Here's the output on gcc's version on OS X Mavericks
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.
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$
"Unix was not designed to stop you from doing stupid things, because that would also stop you from doing clever things."
Doug Gwyn
Doug Gwyn
Re: Some improvements for SheepShaver
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
Doug Gwyn
Re: Some improvements for SheepShaver
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
Doug Gwyn
Re: Some improvements for SheepShaver
could you post your current progress on the source code?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).
Re: Some improvements for SheepShaver
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!
Figatrix
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!
Figatrix
Re: Some improvements for SheepShaver
yeah... I got a PowerMac G4 MDD so I could check out 9.2.2figatrix 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!
Figatrix
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
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.
i hope work soon with this 9.2.2 within Yosemite,,,
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.
i hope work soon with this 9.2.2 within Yosemite,,,
Re: Some improvements for SheepShaver
There is an SCSI to SATA adapter, but it's like US$200.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.
i hope work soon with this 9.2.2 within Yosemite,,,
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
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.?
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
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
Thanks a lot, friend..
Qemu app... is the first time i have ear something about it. I will try to see it later..
Qemu app... is the first time i have ear something about it. I will try to see it later..
- adespoton
- Forum All-Star
- Posts: 4274
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Some improvements for SheepShaver
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.
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
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.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.
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.
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.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.
Classic software won't run on 10.6.8 at all. That will only work for Carbon apps.(and indeed in 10.6.8 with Rosetta, except for the stuff that requires special hardware)
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.
- adespoton
- Forum All-Star
- Posts: 4274
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Some improvements for SheepShaver
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.
- Ronald P. Regensburg
- Expert User
- Posts: 7830
- Joined: Thu Feb 09, 2006 10:24 pm
- Location: Amsterdam, Netherlands
Re: Some improvements for SheepShaver
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:
Reason:
Re: Some improvements for SheepShaver
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.
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
It would be better to work in QEMU, because SheepShaver uses a ton of HLE hacks.
- adespoton
- Forum All-Star
- Posts: 4274
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Some improvements for SheepShaver
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.
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
If QEMU can do this by August, I will be so very happy!
Re: Some improvements for SheepShaver
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.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 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.I'm not a programmer, but I'm dying to be able to finally run OS 9.2.2 in SheepShaver.
Re: Some improvements for SheepShaver
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.
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.
- adespoton
- Forum All-Star
- Posts: 4274
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Some improvements for SheepShaver
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.
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
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:
This can all be fixed. It isn't as hard as the problems with the JIT emulator.
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.
This can all be fixed. It isn't as hard as the problems with the JIT emulator.