SETTIMER is documented as creating timer events with id=16 are run in NOYIELD mode. This is how it was implemented in MSWLogo, but due to an off-by-one error introduced when FMSLogo was ported to use wxWidgets instead of OWL, id=16 became yielding. This is a breaking change to the API.
Although the wxWidgets version has exited since FMSLogo 6.29.0, it was not the default download until FMSLogo 7.0.0.
In some sense, the damage has already done and the fix could be to update the documentation. However, I doubt that there are programs which use timer ID=16 and need it to be non-yielding and I prefer the symmetry of MSWLogo's allocation of IDs: half for yielding and half for non-yielding. Therefore, I think the better fix is to make id=16 non-yielding.
For reference, the bug is in mainframe.cpp (sourceforge.net).
This is fixed by [r5582].
Since the fix is a breaking change, it will be made available in the next major version release, which is FMSLogo 8.0.0.
Related
Commit: [r5582]