Would you try to plow a field with a car? Sure, it has a seat, a steering wheel, an engine, and tires as a tractor does but it's just not the same.
It's the same with a program. In order to use the hardware efficiently, the code HAS to be specific to that hardware. True, maybe 90% of the code is internal and can be re-used but all the human and hardwware interfacing code MUST be unique.
When I write a program that is applicable to more than one platform, I write all the common stuff first then add modules appropriate for that platform.
BTW - I despise .Net
Keep Up with TechRepublic