Turns out memcpy does not do what is says on the tin, replaced it with this:
and hay presto I have correct text, remind me never to expect common sense in the standard libraryCode:txt = (char*)(tok.dst.addr); for ( byte = 0; byte < size; ++byte, ++txt ) txt[byte] = cb[byte];