The difference can be illustrated by writing two 255-byte strings using BPUT# and reading them back using GET$#, for example:
Code: Select all
10 F%=OPENOUT"TEMP"
20 BPUT#F%,STRING$(255,"A")
30 BPUT#F%,STRING$(255,"B")
40 CLOSE #F%
50 F%=OPENIN"TEMP"
60 A$=GET$#F%
70 PRINT LEN A$
80 B$=GET$#F%
90 PRINT LEN B$
100 CLOSE #F%
Code: Select all
255
255
Code: Select all
255
0
Code: Select all
10 F%=OPENOUT"TEMP"
20 BPUT#F%,STRING$(255,"A");
30 BPUT#F%,STRING$(255,"B");
40 CLOSE #F%
50 F%=OPENIN"TEMP"
60 A$=GET$#F%
70 PRINT LEN A$
80 B$=GET$#F%
90 PRINT LEN B$
100 CLOSE #F%
Code: Select all
0
254
Code: Select all
255
255
I would add that it's possible to make BBC BASIC (Z80) return the same result as ARM BASIC V in the latter case by making the following modification:
Code: Select all
10 F%=OPENOUT"TEMP"
20 BPUT#F%,STRING$(255,"A");
30 BPUT#F%,STRING$(255,"B");
40 CLOSE #F%
50 F%=OPENIN"TEMP"
60 A$=GET$#F% BY 255
70 PRINT LEN A$
80 B$=GET$#F%
90 PRINT LEN B$
100 CLOSE #F%