2013.4.18
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第373回]


●深刻なエラー?

[第371回]で最後にエラーでブレークたところからの続きです。
最後はこの画面でした。


このエラーのどこが深刻かと言いますと。
ERR:15というのは、「記号の使い方が間違っている」というエラーで、これはおそらくプログラムの修正ミスで行の終わりにコロン(:)が残ったままになっているところがあるのでは?
と思います。
そういうミスもいくつか見つけて訂正していますので、その可能性は大です。
問題は、本来ならばその下に、そのエラーが発生した行が表示されてブレークするはずのところ、なにやらわけのわからない数値を表示してブレークしていることです。
こういう症状は大抵はスタックの食い違いなどで暴走状態になった場合に発生します。
これではどこでそのエラーが発生したのかがわかりません。
これはどえりゃあことです(なごやべんです)。

マシン語でしたら、こういう場合にはブレークポイントを設定して、どこでおかしなことが発生しているのか少しずつステップを追いながらチェックしていくことになります。
しかし、BASICでは?

今回はSTARBASEにドッキングしようとして、そこに向けてNAVコマンドを実行したところ、「どえりゃあ」エラーが発生しました。
もう一度同じことをしたら、同じようになるかどうかはわかりませんが、やってみるだけの価値はあります。
画面を見ましたらもうドッキングしてしまっていますから、今更再実行はできないようにも思いましたが、アイデアがひらめきました。
一度逆方向に離れたあと、もう一度ドッキングしてみたら、ひょっとしたら同じエラーが発生するかも知れません。
しかし、同じエラーが発生してもそれだけでは何の解決にもなりません。
肝心なのは、どこをどのように実行するとそういうエラーが発生するのかというプログラムの流れが知りたい、というところにあります。
そこで「奥の手」の登場です。

●TRON命令

ZB3BASICにはTRON(トレースオン)という便利な命令があるのです。
プログラム中にこの命令を書いておいてそれが実行されるか、ブレークしたあとでこの命令をダイレクト実行すると、それ以後はTROFF(トレースオフ)が実行されるまで、実行される行番号を画面に表示してくれるのです。
それを追いかければ、どこでおかしなことが発生したのかがわかるはずです。

うまくいくかどうかはやってみなければわかりません。
しかし駄目で元々です。
TRONを実行してみました。

ちょいとあせって、おかしなことをやったりして、またエラーでブレークしてしまったりしましたが…。

なんとかもとのCOMMAND?の流れに乗ったようです。

おお。
トレースが開始されて行番号が表示されています。
これは期待できそうです。

あれ?
あせって、またおかしなことをやってしまいました。
COURSE?に変な値を入れてしまいました。

うう。
トシは取りたくないものでありますぅ。

ああ。
また時間がなくなってしまいました。
この続きは次回にいたします。

ワンボードマイコンでCP/Mを![第373回]
2013.4.18upload

前へ
次へ
ホームページトップへ戻る