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

開発の 悩みの種は アセンブラ [雑記]

PC-8001 や PC-8801 のユーティリティ開発に利用している、ドイツ製の某アセンブラ。

フリーソフトなので無料で使えて、しかも様々な古い CPU に対応しているので、Dash-80 の開発にも使用していますが、 難点はマニュアルが分かりにくい事。

アセンブラ擬似命令の書式を確認するために、ソースコードを書いては直し、書いては直し…。
ちゃんと使えるようになるにはずいぶん時間が掛かりましたが、機能的には申し分ないです。




通常、アセンブラやコンパイラには、ソースコードを書き換えなくても条件を変えてアセンブル/コンパイルできるように、コマンドラインでシンボルを定義したり値を設定できるオプションが設けられています。

しかし、このアセンブラでは、そのオプションがうまく働かないという致命的な欠点を発見。

これまではひとつの機種だけしか対応していなかったので条件アセンブルをする必要はなかったのですが、今回は寄り道をして Dash-80 を PC-8001mkII と PC-8001mkIISR に移植しようと試みているので、これが正常動作しないのは非常に痛い…。

マニュアルどおりに、'-D' オプションに複数のシンボルを設定しようとして makefile に "-D $(MACHINE),$(DBG)" と書くと "invalid option: -D" なんてエラーになるし、値を設定しようと "-D MACHINE=$(MCODE)" と書くと、またもや "invalid option: -D"。

初登場から10年も経つのに、まだこんなバグがあるのかい!
しかし、他に"使える”アセンブラが無いのが実情… OTL




頭にきたので、ソースファイルを改造しようと DL してみたら、あらら… Pascalian なのね。
C のソースなのにパスカル風の書式と関数の使い方… OTL


ソースが汚くなるのは嫌なんですが、うまくバグを回避して使うしかないですね。

…って、なぜ世の中には「フリーの使える Z80 用アセンブラ」が無いんだぁ?

twitter じゃあない grumbler [雑記]

WinME で BASIC のディスアセンブルファイルをエディタで4つ開き、エミュレータで N80SR-BASIC を動かしながらメモリを覗き見ていたら、リソース不足で落ちました。
あ~~、コメントたくさん追加したのに…… OTL





N80SR-BASIC の解析中に、SR で拡張されたポート 33H の機能がよく分からなかったのでネットを検索したら、たった10件しか無い上、3件はPCとは無関係、1件はPC-8001という単語はあるものの x86 インストラクションの話、残りの6件は同じ掲示板のコピーですた。
技術的なページは1件も無いのか…… OTL





N80SR-BASIC を解析すると、どのコマンド/ステートメントがどこのワークエリアを参照/変更しているかで、ワークエリアやポート内のビットの意味がだんだん芋づる式に判明してくるんです。
しかし、同じステートメントでもN/N80-BASIC と N80SR-BASIC とではパラメータの個数も中身も違ってるので、リファレンスマニュアルが無いと全く意味が分からんじゃないか…… OTL

タグ:N80SR-BASIC

妄想でゲーム!? [雑記]

最近、あまり物欲を刺激されることはなかったのですが、久しぶりに痺れるような刺激に遭遇しました。

それは、「∞プチプチ」や「∞エダマメ」でおなじみの ASOVISION から2010年3月20日に発売予定の「妄想コントローラ」。
「妄想でゲームをする新感覚のコントローラ型キーチェーン!」だそうで、十字キーと2ボタンだけで表示機能はなく、音を頼りに操作して楽しみます。 もちろん映像は「脳内再生」(笑)
音だけで映像なしのコンセプトが良いですね。

ストリートファイターⅡ×3種+ゼビウス+ファミリースタジアムの計5種類の発売が予定されているのですが、その中でも「ゼビウス」に心を奪われてしまいました。

元祖ゲーマーとしては、画面に奥行きを感じさせてくれた、あのゲームは衝撃的でした。
何年経っても、ザッパーとブラスターの音を聞けば、ワクワクしちゃいます^^

商品の説明は文字で書いても分かりにくいでしょうから、リンクを張っておきます。

妄想コントローラ 公式サイト

YouTube - 妄想コントローラ ナムコクラシックス ゼビウス

タグ:XEVIOUS NAMCO

既出のネタかもしれませんが… [雑記]

「PC-8801」でググッていたら、こんなモノを見つけました。

MSX-DOSは実はPC-8801にも移植され…

wikipedia の「MSX-DOS」ページ内にも「MSX用以外のMSX-DOS」という項目がありました。


もしかして、知らなかったのは私だけ?

タグ:PC-8801 MSX

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