デバッグ用ユーティリティ [雑記]
5インチフロッピーを整理してたら DUAD-88 のソースファイルが入ったのフロッピーが見つかったのですが、当時作っていたユーティリティのソースの最新版だけが行方不明でした。
満杯になったから別のディスクにセーブしたんだろうか…。
TRON コマンドのあまりの無能さに「もう少しまともなモノが欲しい」と思って作っていたデバッグユーティリティなのですが…。
仕様は、
…と、これだけです(笑)
どういう具合に使用するかと言えば、プログラム内のデバグしたい部分の最初に 'CMD ON' を、終端に 'CMD OFF' を書いておくだけです。
まぁ、コマンドリファレンスだけだと分かりにくいので、プログラムでの使用例を載せておきます。
これを実行すると、
(テキトーだな^^;)
という具合に、出力されます。
また、別の使い方としては、
これを実行すると、
という具合に、どこで変数の内容が変更されているかが分かりやすくなります。
昔、これを作っていた時、KCB メンバーの S 氏に見せたら、「これ、おもしろいから ASCII に投稿したら…」と言われたのですが、「使い方説明の原稿を書くのが面倒くさいなぁ」と、ボツにしたんだよなぁ。
今だったら、丸1日あれば完成しちゃうんだけどな。
PC-8801 用なのですが、誰か使います?(笑)
満杯になったから別のディスクにセーブしたんだろうか…。
TRON コマンドのあまりの無能さに「もう少しまともなモノが欲しい」と思って作っていたデバッグユーティリティなのですが…。
仕様は、
書式:ON CMD GOSUB …
機能:コマンド毎の割り込みルーチンの開始行を定義する
機能:コマンド毎の割り込みルーチンの開始行を定義する
書式:CMD ON / OFF / STOP
機能:コマンド毎の割り込みの許可/禁止/停止を設定する
機能:コマンド毎の割り込みの許可/禁止/停止を設定する
…と、これだけです(笑)
どういう具合に使用するかと言えば、プログラム内のデバグしたい部分の最初に 'CMD ON' を、終端に 'CMD OFF' を書いておくだけです。
まぁ、コマンドリファレンスだけだと分かりにくいので、プログラムでの使用例を載せておきます。
' ' ON CMD GOSUB sample #1 ' DEFINT A-Z ON CMD GOSUB *TRAP | MAX=1000 DIM A(MAX) | なんたら かんたら | ' Bubble sort *BUBLESORT FOR I=1 TO MAX-1 FOR J=2 TO 1000 - I + 1 IF A[J] < A [J - 1] THEN CMD ON:SWAP A[J], A[J - 1]:CMD OFF NEXT NEXT RETURN | *TRAP PRINT USING "Swap ####:##### <-> ####:#####"; J-1, A[J-1], J, A[J] RETURN | END:RUN
これを実行すると、
Swap 916:15628 <-> 115:12832 Swap 629:29847 <-> 590:28359 Swap 182:21759 <-> 308:13172
(テキトーだな^^;)
という具合に、出力されます。
また、別の使い方としては、
' ' ON CMD GOSUB sample #2 ' DEFINT A-Z DEF FNLN=PEEK(&HE656)*256+PEEK(&HE656) ' 実行中の行番号 ON CMD GOSUB *TRAP | CMD ON | なんたら かんたら | CMD OFF | *TRAP PRINT USING "#####:X=###, Y=###";FNLN, X, Y RETURN | END:RUN
これを実行すると、
10000:X=240, Y=100 10000:X=240, Y=100 10000:X=240, Y=100 10010:X=240, Y=100 10010:X=240, Y=200 10020:X=240, Y=200 10020:X=240, Y=200 10030:X=240, Y=200 10040:X=240, Y=200
という具合に、どこで変数の内容が変更されているかが分かりやすくなります。
☆
昔、これを作っていた時、KCB メンバーの S 氏に見せたら、「これ、おもしろいから ASCII に投稿したら…」と言われたのですが、「使い方説明の原稿を書くのが面倒くさいなぁ」と、ボツにしたんだよなぁ。
今だったら、丸1日あれば完成しちゃうんだけどな。
PC-8801 用なのですが、誰か使います?(笑)
タグ:PC-8801