(This is all from BBC Basic.)
*SAVE x 1000 1001 produces a file which is 1001 (decimal) bytes long (I'd expect it to be 1).
*SAVE x 1000 &1001 produces a file which is 4097 (decimal) bytes long (I'd expect it also be 1).
*SAVE x 1000 +10 produces a file which is 10 (decimal) bytes long (likewise 16).
I also don't think it's saving data at the right address:
DIM A 1
?A=&55
PRINT A, ~A
...then saving one byte using the two addresses above, first with the decimal address and second with the hex address prefixed with &, produce files with different content, neither of which contains a &55. I've tried adding on &40000 (I think that's where BBC Basic loads? It's unclear) and that doesn't help.
So I've found that the start/end semantics above does actually match the description in the Agon MOS documentation, even though it's different from Acorn MOS. It's also different from the syntax described in the Agon BBC Basic documentation, which matches Acorn's. So I don't know whether the change is accidental or not. I do suspect that there's no way in which the 16-bit addresses used in the BBC Basic documentation can work when passed to ADL MOS unless BBC Basic overrides *SAVE and *LOAD, but if that's the case then there needs to figure out the absolute address of a data block otherwise they can't work from Basic.
So I think there's still something wrong, but am not sure what. (Also I still can't save my data!)
(This is all from BBC Basic.)
*SAVE x 1000 1001produces a file which is 1001 (decimal) bytes long (I'd expect it to be 1).*SAVE x 1000 &1001produces a file which is 4097 (decimal) bytes long (I'd expect it also be 1).*SAVE x 1000 +10produces a file which is 10 (decimal) bytes long (likewise 16).I also don't think it's saving data at the right address:
...then saving one byte using the two addresses above, first with the decimal address and second with the hex address prefixed with
&, produce files with different content, neither of which contains a &55. I've tried adding on &40000 (I think that's where BBC Basic loads? It's unclear) and that doesn't help.So I've found that the start/end semantics above does actually match the description in the Agon MOS documentation, even though it's different from Acorn MOS. It's also different from the syntax described in the Agon BBC Basic documentation, which matches Acorn's. So I don't know whether the change is accidental or not. I do suspect that there's no way in which the 16-bit addresses used in the BBC Basic documentation can work when passed to ADL MOS unless BBC Basic overrides *SAVE and *LOAD, but if that's the case then there needs to figure out the absolute address of a data block otherwise they can't work from Basic.
So I think there's still something wrong, but am not sure what. (Also I still can't save my data!)