ほんのちょっと付け加えるだけで、そのまま動作するスクリプトにできるんだから、どうせなら
そのままでちゃんと動作する(エラーが確認できる)スクリプトにして欲しかったです。
適当に
mojiretu="あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ"
mojiretu2=""
と書き加えたら再現できたので、今回は問題無しです。
mojiretu2のメモリが十分確保されていないために起きているエラーです。
通常変数に文字列を指定すると自動的に必要なメモリを確保してくれますが、poke命令は
やってくれないようです。ちなみに、mojiretu2=""と書くとsdim mojiretu2,64 と同等になる。
63文字分のメモリ確保なので全角のみでだと31文字分。「全角で30字を超えたあたりから…」の
理由はこれですね。また文字列についての詳細はマニュアル参照のこと。
対処法は、sdimでmojiretu2に十分なメモリを確保することです。
mojiretu="あいうえおかきくけこあいうえおかきくけこあいうえおかきくけこあいうえおかきくけこ"
mojiretu2=""
sdim mojiretu2, strlen(mojiretu)+1 ;+1がみそ(終了コードnullの分です。)
;以下は同じ
*okikae
nagasa=strlen(mojiretu)
i=0
repeat
poke mojiretu2,i,"□"
i=i+2
if i= nagasa :goto *hyouji
loop
*hyouji
mes mojiretu
mes mojiretu2