PEEK$ (start_address,bytes) or
PEEK$ (start_address [,bytes])(BTool only)
ATARI_REXT, SMS, TinyToolkit, BTool
This function will read a specified number of bytes from start_address in memory onwards and return the result as a string.
For BTool the second parameter is optional. If bytes is not specified then BTool’s PEEK$ will try to read a string in QDOS format (ie. two bytes specifying the length of the string followed by the string itself) from the location start_address, just like CVS$ does. This string will then be returned. Note that start_address must always be even if bytes is omitted.
Do you know how many keywords, filenames, variables etc. are currently known to the interpreter? This program lists and counts them.
100 adr=BASICP(32): num=0 110 REPeat all_names 120 length=PEEK(adr) 130 IF NOT length THEN EXIT all_names 140 name$=PEEK$(adr+1,length) 150 PRINT name$, 160 adr=adr+length+1: num=num+1 170 END REPeat all_names 180 PRINT\\num!"names"
PEEK$ allows you to access the System Variables and SuperBASIC variables in the same way as PEEK (etc.). For example, the above short program may be re-written as:
100 adr=0: num=0 110 REPeat all_names 120 length=PEEK(\$20\adr) 130 IF NOT length THEN EXIT all_names 140 name$=PEEK$(\$20\\adr+1,length) 150 PRINT name$,:PAUSE 160 adr=adr+length+1: num=num+1 170 END REPeat all_names 180 PRINT\\num!"names"
A string cannot be longer than 32766 characters and so an expression such as a$=PEEK$(0,40000) may lead to unpredictable effects. Be careful!