SSブログ

デバッグ用ユーティリティ [雑記]

5インチフロッピーを整理してたら DUAD-88 のソースファイルが入ったのフロッピーが見つかったのですが、当時作っていたユーティリティのソースの最新版だけが行方不明でした。
満杯になったから別のディスクにセーブしたんだろうか…。

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

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。