George Gwilt wrote:
> Dickens says that codes $31 to $FF are extended to a negative word
> $FF31 to $FFFF when used to determine the storage address. Apart from
> the fact that $31 does not seem to be allowed, Pennel and Dickens are
> saying the same thing in different ways, Pennel is in fact correct.

Yes, looking at the code, the upper byte is generated or derived from
the lower byte, so it really doesn't matter whether it's $FF31 or $31,
even though thinking of it as $FF31 makes it a) clearer and b) lends
itself to the pointer arithmetic trick I did in my code sample.

The problem here is that Minerva does OR the value with $FF00, which
seems to be the desired result, while SMSQ/E sign extends the lower
byte, which means that SMSQ/E will behave differently on the values
$31 to $7F. Which could be considered a bug, I guess.

Also, SMSQ/E defines the opcode $32 (push PI on stack), so the range
effectively starts at $34 there ($33 actually, but that would be a
"store only" location).

Marcel

_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm

Reply via email to