Y3K833JM
SmileBasic has an error: "Communication buffer overflow". It does not (always) signify when communication buffer overflows. The key above is a program which sends 16 messages on one console, tries to receive 16 messages on the other, and really only gets 15.
Either: - Remove the error and specify that some messages may be dropped, or - Don't drop any messages and use the error.
Follow-up to Alex's post about PI:
CALL applied to the strings like "INKEY$", "MPSTAT", "MPNAME$", "PRGNAME$", "DISPLAY" - other system functions that take no parameters - appears to use the system functions. CALL applied to the string "PI" uses the user-defined DEF PI().
It was silly to make it a function in Petit Computer, and it was silly to make the same mistake in SmileBasic.
43KNNEK6
A$=DIALOG("","%"+CHR$(279))
result:
"An error has occurred, forcing the software to close. The system will now restart. (Unsaved data may be lost.)"
Operators perform differently depending on whether they are in a 'constant-folded' expression or not.
223NNQV
VAR A%
A%=60000
PRINT "60000*50000=";60000*50000
PRINT "A%=";A%
PRINT "A%*50000=";A%*50000
output:
60000*50000=3000000000
A%=60000
A%*50000=-1294967296
A way of figuring out the size of the dimensions in an array, other than getting an error when you don't use the right size (e.g. LOAD"DAT:2DARRAY",ARRAY may result in LEN(ARRAY) being 12; the array might be [1,12], [2,6], [3,4], [4,3], [6,2], or [12,1], and there's no way of knowing except getting errors for using indices that are out-of-bounds).
A way of figuring out what type of array needs to go at the end of LOAD "DAT:FILE",ARRAY other than getting errors when it's not the right type. (By 'type', I mean number of dimensions, since you can LOAD"DAT:STRINGS",ARRAY% and ARRAY% will then be an array of strings...)