Am Freitag, den 06.04.2007, 01:05 -0400 schrieb Richard Drummond: > Sounds interesting. How was it implemented in AmigaXL? Straight forward as all native calls within uae: A handler was installed at 0xF0FFC0. This handler got some commands. The first command the Amiga executed was always a NATIVE_CreateContext which created a new thread that executed all code on the host's side. This initial NATVIE_CreateContext command was called from amigaxl.library (or similar, cannot remember) on LibOpen (this library created a new LibBase for each task that it opened). After the initial communication was established AmigaOS could dlopen() shared objects on the hosts side (NATIVE_OpenObject), find functions in the shared object (NATIVE_GetSymbolID) and execute functions synchronously (NATIVE_CallFunction) or asynchronously (NATIVE_CallFunctionAsync) and wait for asynchronously called functions (NATIVE_WaitFunction). Only one function per task could be called asynchronously simultaneously. NATIVE_WaitFunction waits for an AmigaOS task signal which will be set by the host thread as soon as the function call has finished. In general we did nothing different than e.g. filesys.c but generalized the whole thing a little bit. We used this native library concept for everything: AHI, access to real Amiga hard disks without having a real SCSI emulation, joystick, cd-rom, floppy, parallel, serial, bsd socket, printer driver. Most QNX resources with the exception of the video driver were accessed via the native library. I hope I have some time in May to implement it. If you want I can send you the source. Regards, Jochen > Cheers, > Rich