[Coco] Returning a string to basic ?
Rogelio Perea
os9dude at gmail.com
Tue Sep 20 18:11:30 EDT 2011
On Tue, Sep 20, 2011 at 5:43 PM, Arthur Flexser <flexser at fiu.edu> wrote:
I'm going from hazy memory on this...
>
> I'm assuming the string is at a known address and has a known length.
>
> What you need to do is this:
>
> Define a dummy string in the Basic program with some statement like S$="A".
>
> Then use the Basic VARPTR function to find the address of Basic's
pointer to the string: ST=VARPTR(S$).
>
> At the address now contained in ST is a 5-byte string specifier. The
> first (I think) byte is the string length, and the 3rd and 4th (?)
> contain the address of the string data.
> (The other 2 bytes of the 5-byte identifier are unused.)
>
> Using POKEs, you can modify these 3 bytes to insert the length and
> address of the string you want Basic to know about, which will then be
> referenced by S$.
>
> Hope that does the trick for you!
>
> Art
>
Elaborating:
PEEK(ST) will return the length of the string variable
PEEK(ST+2) will be the MSB of the variable first character address in memory
PEEK(ST+3) will be the LSB of the variable first character address in memory
Examining RAM locations after the MSB & LSB are calculated up to the length
of the string will reveal the variable contents.
As noted, manipulating these values once a string variable has been defined
we can put whatever we want in the string variable... as long as it is at
most 255 bytes long ;-)
-- RP
More information about the Coco
mailing list