Here's the update I promised earlier regarding what my specific goals on developments will be.
(here comes the broken record part where I regurgitate what I sort of said earlier)
The polls I posted were great for letting me know what people want and the results of that were factored into this.
My goals of what prompted me to start down this also weighed in.
The last factor was what I felt would be of benefit in a general sense.
So here they are with a little explanation with each. They are listed in order that I will tackle them.
- Support for G4 cpu's not currently supported (not machines but the actual G4 chip) without open firmware hacks. This can be added to the current work done to get unsupported machines working so that booting the entire G4 line will be easier.
- Ram usage limits (the 1.5 GB ram limit). Unlock the potential to utilize the most ram we can. When implementing this I will attempt to just enable usage of all ram that is not used by the system. I will not put a limit to 2GB as if we ever get support for the G5's we will be able to use almost all of the 4GB the 32bit address space allows.
- Right drivers/Enablers/Extensions to get all yet unsupported G4 machines running (including the mac mini/xserve). As part of this a few other items will come a long with it as I would like for all features of each machine to work.
- Video card drivers. As there are chips in the yet unsupported G4's then updated video card drivers would be needed. This part is the most likely to not succeed as there isn't any good source/documentation of the ISA's of the various cards. Most cards should work without drivers, but won't have hardware acceleration.
- USB 2.0 Support. As there are G4's with USB2 ports this is a good place to also tackle USB2. Initially I will attempt to get the built in chips working. Once that is done we can start testing third party cards and investigating them. Also of note is that any non-class compliant USB 2 devices will not have drivers and will more than likely not work at all.
- USB Class Compliant Drivers. Although Apple has some level of support for class complient devices, there will need to be some added, and some updated for USB 2. So this goes hand in hand with that.
- FW800 Support. This will come with the G4 support as like USB2 there are G4 machines that have these ports.
- 2040 Bug. I had previously said I would attempt this one. That is still the goal, but I have pushed it down on the priorities. Changing the epoch would not be difficult, but file created on and modified dates would not be correct for files touched before the update was applied. This could be an issue for several things (including sharing files and version tracking of files). The other option I had was keeping track of when the value overflows, but again that would require changes possible to third party applications as well that are not aware of this and don't use the OS date/time functions. Still on the list though.
- G5 Machine support. The very early G5 revisions are the most likely to work (as they had PCI busses making less work to get up and going). There are three hurdles to get the OS to even start booting.
- U3 Drivers. The drivers in Darwin are a good base and I have a pretty good idea where they need to be activated in the boot process.
- AGP 8x support shouldn't require much work (because it's part of the U3 north bridge) as it's mostly just a faster version of AGP 4x. They are both based on PCI and the north bridge pretty much just gives that bus a higher more dedicated priority. Still there would likely need to be some changes made to make it work enough to boot. (The changes most likely will be part of the U3 Drivers).
- The MMU. I'm still trying to digest the full spec of the MMU in a 64bit PPC cpu. From what I understand currently is that although the 64bit cpu is backwards compatible to 32bit ones, the MMU instructions are an exception. The MMU in 32bit cpus is a 32bit physical address, a 52bit translation register (you can't access that though) and 32bit virtual address space (this is what applications utilize). The os sets up the mapping between virtual and phsyical address spaces (in the case of OS 9 there isn't any translation it's just a straight through mapping). The G5 is 64bit straight through so all memory management functions of the 32bit os need to be updated to accomadate the 64bit addressing (this is why 32bit OS X on the G5 is able to access more than 4GB of ram with out PAE)
I didn't put this on the list as I don't know exactly where it would fit with in the order of other items, but I will be trying to write an H264 codec. I will be working on this early on, but I'm really not sure when this would be done.
To avoid as much legal issue as possible I am going to try to refrain from reverse engineering as much as I can. I will be relying heavily on official Apple documentation and Darwin source code (as a basis to determine how to control various chips and the order to initialize them).
So timing. I hope to have something to show/test for item one around April/May. I know this is a ways out, but I have a full time job as a developer that some times requires upwards of 80 hours a week (though pretty rare for that) and I have a family.
This list may change over time as I dig deeper into this and re-assess the feasibility/effort required for these items.
Finally just to reiterate what I have said before, I make no promises that I will accomplish any of this (as I am only one person) and any help testing or developing any one can provide is greatly appreciated. A big thanks should go out to those who helped get the machines run that were previously unsupported, their work was a big inspiration for me to even consider this sort of project.