Looking through the RISC OS source for the old Icon 8 language.
It looks like, in order to give ICON (a nice language, but one with its own ideas about memory usage) a useful SWI interface, they had to add a cheaty call to low-level allocate unformatted blocks of memory, and then add calls to read / write these blocks.
I suspect I'd have to duplicate this work to give xlisp an SWI interface.
I don't know if I'm that good a programmer. Or that modivated. :-(