Pause is a bugger, I have removed it from the code. Thanks for the reminders of the problems.
I also have the cause of the "overflow" problem when dealing with GOTO/GOSUB/RESTORE on Minerva. Minerva stores numbers in as few bytes as possible in the program file. QDOS/SMSQ store the line numbers for those commands as floats, Minerva uses integers. However, I'm rather at a loss as to the exact format of the integers!
On SMSQ I have this code:
Code: Select all
10 GOTO 20
Code: Select all
0010 8D00 000A 810A 810B F805 50000000 840A
Code: Select all
000C 8D00 000A 810A 810B 8914 840A
Anyway, the float under QDOS/SMSQ is representing the value 20. But how the hell do I extract 20 from $8914 I wonder?
$8914 is:
35,092 (unsigned), OR
-30,444 (signed), OR
1000 1001 0001 0100 (Binary!)
Which is fine, the lower 8 bits are indeed 20 in binary, but what are the upper 8 bits denoting?
It appears that there is a poke that we can do on Minerva to get the code to turn off integer tokenisation:
Code: Select all
POKE \\212,128
HOORAY!
Cheers,
Norm.
Line length,
Line number coming,
Actual line number as a word,
Code for GO,
Code for TO,
Actual Line number for 20
End of line word.