解決済みですが、この問題(基準にしているタイマーのあふれ問題)
については私も指摘してありまして
その時点で既に修正は入っていたのですが、デバッグするには
Windowsをかなり放置しないとわからない問題のため
実際のテストで本当に直ったか確認はしていないのですが・・・
皆さんご指摘のとおりHSP 3.6〜にすれば一先ずは解決なのですが、
HSP 3.51 はexeのサイズが100KB以上小さくできるメリットもあります。
なので、私はもっぱらWindows用ソフトはいまだにHSP 3.51なのですが
wait命令に問題があるため Windows API の Sleep に置き換えて対応しています。
Sleep にもあふれ問題があったら終わりですが、
さすがにそれがあったらWindows側のバグなんで無いはず・・・
#uselib "kernel32.dll"
#func global Sleep "Sleep" sptr // Sleep
#uselib "winmm.dll"
#func timeBeginPeriod "timeBeginPeriod" int
timeBeginPeriod 1 // Sleepの精度を1msにする(awaitと同等、実際は環境により多少ばらつきます)
repeat
redraw 0
color: boxf: color 255,255,255
pos 16,16: mes cnt
redraw 1
wait 0: Sleep 16 // wait 0 はOSに制御を渡すために必須です
loop
注意点としては timeBeginPeriod 1 は他のアプリにも影響することです。
1msにすると負荷が上がりますが、いまのPCでこれが問題化することは
まずありません。15年前のシングルコアなノートPCでも問題になってません。