Mais la méthode propre, c'est:
#define EXECUTE_IN_GHOST_SPACE
au début de ton programme, et:
char *fptr, *cptr;
unsigned short plen;
SYM_ENTRY *SymPtr = DerefSym (SymFind (SYMSTR ("example")));
HANDLE h;
if (!SymPtr) fatal ("Program not found");
h = SymPtr->handle;
if (HeapGetLock (h))
{
cptr = fptr = HeapDeref (h);
h = 0;
}
else
{
cptr = fptr = HLock (h);
}
plen = *(short*)(cptr) + 3;
if (SymPtr->flags.bits.archived)
{
if (!(cptr = malloc (plen)))
{
if (h) HeapUnlock (h);
fatal ("Out of memory");
}
memcpy (cptr, fptr, plen);
}
EX_patch (cptr + 0x40002, cptr + plen + 0x3FFFE);
push_END_TAG();
push_ANSI_string("maths"); // paramètre FTL Parser : nom du fichier TEXT
ASM_call (cptr + 0x40002);
if (h) HeapUnlock (h);
if (cptr != fptr) free (cptr);