mrichmon said:
The source code for the driver does not exist in the MacOS9 binary. You can probably decompile the MacOS9 binary but that will not produce anything remotely like the original source code.
That would be why I put the word 'source' in quotes... On the other hand, anyone that is halfway reasonable at reverse engineering would never even consider using an automatic decompiler. It's going to be hand-decompiles all the way. I know, I do it as part of my job. That said, it really isn't as hard as people think. You're not decompiling something "compiled" by a human, but by a machine. It may take a day or so to get to grips with how a particular compiler works, but afterwards, it really doesn't take long at all to decompile by hand (notable exception - badly written code with several hundred lines of nested ifs, switches and breaks can be a little difficult, but even there, with experience, it's not too bad).
mrichmon said:
Not quite since the structure of device drivers, their calling pattern and the break down of the device driver interface in OS X is completely different from the MacOS9 device driver model. Your claim is similar to saying "well there is a driver for hardware X on Windows, that means that it is only a week of work to produce a Linux driver". The reality is very different.
No, it's not the same problem. You can't just grab chunks of existing assembly code and dump it into a Linux repository and expect it to get accepted by the maintainers. If you are just doing it for yourself, then yes, you can, and yes, it will only take about a week to do the conversion.
The thing is, if you are someone that knows how to write drivers for the original target (in this case MacOS9), and you know how to write the new target (MacOSX), then you are going to find that most of the code is going to be boilerplate stuff. The task is going to consist of
a) Writing the new MacOS X driver boilerplate
b) identifying, by reversing the old driver, the modules of code that communicate directly with the peripheral. Understand these modules, and potentially reverse them in full to have some C code
c) plug the identified modules into the appropriate places for your MacOSX driver.
One day each for tasks a and c, and about 3 days for task b. Admittedly there will probably be some holes in functionality, due to a mismatch between MacOS9 and MacOSX drivers, but the thing would at least be partially working. Note, this code would still have bugs. It would also have incomplete functionality, but the main part of what the driver is supposed to do should be in place. Which is what I said in my original post...
mrichmon said:
Suffice to say that getting an older piece of hardware working with OS X without manufacturer support is a non-trivial undertaking. If it was trivial, then the manufacturer who employees people that have expertise with this particular piece of hardware would have make drivers available. Often with older hardware, the manufacturer no longer has access to the required technical specifications of the old hardware and often does not have an instance of the hardware available for them to work with. These hurdles are also faced by any third party developer since even if the manufacturer wants to support third party development they may not have the information to release.
Yup, npted for the lack of hardware. I made the same point myself in my original post. We do have a spec of sorts, the original binary... I remember in my Air Force engineering classes that an example of an existing product is often used as a specification, so it's even officially recognised as such.
As an aside, there is no commercial interest for the original manufacturer to do ANY support for an old card. the manufacturer wants you to buy their NEW card!