That demonstrates how old they are. Back then, it may be that it was the recommended way to find a pointer to a string; that hasn't been the case since PTR(strings$) was introduced several years ago, largely to support 64-bits operation!
Earlier in this very thread I wrote: "when I modified BBCSDL from 32-bits to 64-bits there were places where I replaced what are absolute addresses in the 32-bit version with relative addresses in the 64-bit version, so I could continue to use a 32-bit value. The 'pointer' in a string descriptor is an example".
So whilst it is possible (but not recommended) to extract the string pointer from the string descriptor in 32-bits BBC BASIC, it is not possible in 64-bits. It would have been an entirely understandable mistake for you to make had I not drawn attention to this specific issue only a few days ago.
Unfortunately I don't have the time or the patience to give you the degree of help you need. I have every sympathy with your difficulties in writing what is cutting-edge code that requires a deep understanding not only of BBC BASIC but also of Direct3D 11. Once upon a time there would have been others to share the load (Jon Ripley and Malcolm Marten for example) but they are long gone.
We have a situation in which you are probably one of only a handful of people still programming in BBC BASIC, and the only one doing anything non-trivial. Perhaps you should consider switching to a BASIC (or even another language) which is more popular and better supported.