FX-890P GOSUBの不具合?

例として以下のプログラムですが・・・

----------------------------------
10 N=0:INPUT "N=";N
20 GOSUB (1000+N)
30 GOTO 10
1000 PRINT "0":RETURN
1001 PRINT "1":RETURN
1002 PRINT "2":RETURN
1003 PRINT "3":RETURN
1004 PRINT "4":RETURN
1005 PRINT "5":RETURN
1006 PRINT "6":RETURN
1007 PRINT "7":RETURN
1008 PRINT "8":RETURN
1009 PRINT "9":RETURN
----------------------------------

期待する動作は、入力したN(0~9)の値に応じて、1000~1009へサブルーチンジャンプし、戻ってくる、という簡単なものです。
ところが実際に実行すると、1回目はうまく動くのですが、2ループ目以降の入力は何をいれても最初にサブルーチンジャンプした行へ行きます
(例えばN=3と入力したら、1回目は期待通り1003行に行くのですが、2ループ目以降は何を入力しても1003行に行きます)

さらにわからないことに、別プログラムで同じようなことをやっていても、何故かうまく動作する時があるのです。
うまく動作するときとしないときの条件がさっぱり不明です。
(PC-1250用のゲーム移植時に、ゲームスタートで普通にスタートするとちゃんと期待通りに動作するのに、コンティニューをすると同じ所にしかサブルーチンジャンプしなかったことから発覚しました(しかも同じ個所のGOSUB文!))

なお、RESTORE文で同じことをやっても、この事象はでません。
あれこれ試しているのですが、いまのところ期待通りの動作をさせるための条件が不明です・・・
(ON ~ GOSUB使えばええやんという話はおいておいて(;・∀・))

※FX-890P/Z-1GR/GRAで確認しました。
メモリ容量増やした影響もすこし考えられましたので、無改造のZ-1GRでも確認しましたが、同じ動作をします。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント