More then 90% of Orbiter's code is cross-platform, working under Windows XP, Windows CE and Linux. The rest is platform independent and it's actually the implementation of graphic methods. "Orbiter" class is the base, cross-platform, and Orbiter_PocketFrog or OrbiterSDL are derived classes from Orbiter.
To have Orbiter working on other operating systems, all it's needed is a graphic engine for that platform (like SDL, PocketFrog) and an implementation of orbiter which uses that engine to display things on the screen (how to render an image, a rectangle, some text).
To give you a real example, we had first only an Orbiter based on SDL engine, which was very slow on tablets/pda’s and so on. So, all I did is to implement a class derived from Orbiter class, called Orbiter_PocketFrog and within few day, we had Orbiter running on the tablets much faster, with PocketFrog engine.
The good news is that SDL is also working on QNX and other OSes (“Simple DirectMedia Layer supports Linux, Windows, BeOS, MacOS Classic, MacOS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. There is also code, but no official support, for Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64, RISC OS, and SymbianOS - http://www.libsdl.org/index.php
”. So in the worst case, you’ll have to implement a class OrbiterSDL_QNX derived from OrbiterSDL and only implement what’s different (maybe nothing
P.S. We have a topic “Orbiter – Developers” for this kind of posts.