From: Christian B. <cb...@st...> - 2000-11-29 18:17:54
|
Hi! Because of the stagnant state of BeOS/ppc, the superiority of open sourced software, and the success of Basilisk II, Marc Hellwig and I (actually just me because Marc left the decision to me) have decided to make SheepShaver open source, too. The internal structure of both programs (B2 and SS) is quite similar (because B2 was modelled after SS) and in fact, the only difference for many source files is just the copyright header. With a little more work, I think that about 80% of the source files could be shared between both projects. The logical conclusion is thus to merge both projects in some way. The most extreme (but probably possible) way would be to put both 68k and PPC Mac emulation into one program. Which CPU architecture will be emulated is then decided by the type of ROM being used. A couple of thoughts about this: 1. The most important issue to be resolved is of course: how should this combined emulator be named? :-) "Basilisk III" sounds a bit boring and is also not completely accurate since Basilisk II was named this way because it (originally) emulated a Mac II class machine, not so much because it was the successor to the original "Basilisk". I also like the "SheepShaver" name. 2. SheepShaver only has native PowerPC support. There is no PowerPC emulation for other systems yet (I've started with a simple interpreter but this would need a lot more work to be usable, let alone efficient enough). 3. Some things need a little rearranging. We would now be concerned with 3 different configurations: - native 68k, emulated PPC (possible, but probably too slow to make much sense) - emulated 68k (could use 68k emulation from MacOS ROM), native PPC - emulated 68k, emulated PPC 4. Because there is only one set of MacOS memory access functions, it is necessary for the emulator to run in the same addressing mode, whether a 68k or a PPC Mac is to be emulated. Luckily, 68k and PPC have the same endianess and alignment restrictions. So on a native 68k machine, the PPC emulation will have to run in real addressing mode, which is possible (likewise for a native PPC machine). 5. The memory access subsystem will have to be separated from the CPU emulation (currently the memory access is from UAE's 68k emulator) to make it possible for 68k and PPC emulation to use the same memory module. 6. Due to the way SheepShaver works, it needs 12k of Low Memory globals (instead of 8k as B2, or 10k as a real PowerMac). But this shouldn't be a problem. 7. Because SheepShaver was designed for PPC systems, there are many places where it more or less directly jumps into MacOS code. These places will have to be rewritten carefully. 8. This especially affects the SheepShaver Ethernet driver which is completely different from the B2 one. It is a proper DLPI module for Open Transport and as such calls many OT functions for message and queue management, and it also requires OT headers which cannot be included in a source release. 9. Video mode selection is also different because SheepShaver provides run-time mode and depth switching (there is a nice and clean interface for PCI video drivers for doing this). But with some clever redesign, this should provide the 68k emulation with mode/depth switching, too. In any case, I would like to have at least one more stable release of Basilisk II (with JIT) before starting with this (probably not this year any more). Bye, Christian -- / Coding on PowerPC and proud of it \/ http://www.uni-mainz.de/~bauec002/ |