概要

libvdmgrを使用した、システムを実行するWindows用アプリです。
vdmgrはシステムの実行だけですが、vdmgrdebugはアプリケーションのデバッグやパフォーマンス解析など、システム上で動作するアプリケーションの開発などに使用することができます。

現在用意しているシステム用のアプリケーションの開発を行うことができます。

CPUがZ80、8052は、C言語のコンパイラに、SDCCを使用することで、ソースレベルのデバッグが可能です。

TD4、GMC-4は簡易アセンブラを内蔵しているため、ソースファイル(.asm)を読み込むことが可能です。
ソースファイルから読み込んだ時は、ソースレベルのデバッグになります。




画面説明


image

名称説明
ソースファイルリストデバッグ情報を読み込んだ時のみ使用することができます。
デバッグ情報から取得したファイルの一覧を表示します。
ファイル名をダブルクリックで、ソースファイルを開きます。
ショートカットボタン実行、停止などを行うボタン。
<一応用意してありますが、ショートカットキーを使った方が便利です。
ブレークポイント領域薄いグレーの箇所を左クリックするとブレークポイントの設定と解除ができる。
実行時間・クロック数実行から停止までの時間とクロック数を表示します。
レジスタ操作CPUやレジスタを持つモジュールの操作を行います。
ログibvdmgrやモジュールが出力するログを表示します。
メモリー操作CPUやメモリーを持つモジュールの操作を行います。
ブレークポイント一覧設定中のブレークポイントの表示と、設定・解除・無効を行います。
逆アセンブルから設定したブレークで停止した時は、逆アセンブルを表示します。
ソースファイルから設定したブレークで停止した時は、ソースファイルを表示します。
ローカル変数デバッグ情報を読み込んだ時のみ使用することができます。
現在停止中のアドレスから見える変数を表示し・編集を行います。
コンパイル時の最適化により、正しく表示されないことがあります※1
現在、ビットフィールドは未サポートです。
動作状態システムの実行中は実行、停止中は停止が表示されます。
システムが正しく構築されていない時は未構築が表示されます。
※1 SDCCのデバッグ情報ファイルCDBは、レジスタ変数が間違って出力されていたり、関数間のブロックが初期化されていなかったり、ビット変数のアドレスが設定されていなかったり、ブロックのレベル1に定義しているローカル変数のブロックが1つで閉じていたり、ライブラリ化すると情報がなくなったりと正しく出力(実は正しい?)されていないようです(SDCC付属のデバッガでも正しく表示されない)。
ファイル名の全てを出力されていなかったり、ディレクトリ情報がないなど他にも色々と問題がありますが、できる限り行情報は前後の情報から補完して作成しています。
そのため、SDCCのバージョンが、上がると正しく読めなくなる可能性があります。
また、変数には補完できる情報がどこにもないため、正しく表示されない可能性があるので(vdmgrdebugの変数表示が間違えていことも良くあるので)、気を付けてください。



詳細設定

vdmgrの詳細設定と同じです。




ショートカットキー

キー説明
Ctrl+Oイメージファイルを開きます。
システムを実行している時は選択できません。
Ctrl+R現在開いているイメージファイルを再読み込みします。
システムを実行している時は選択できません。
Ctrl+Gフォーカスが逆アセンブル時はジャンプ先アドレスを表示します。
ソースファイル時はジャンプ行を表示します。
メモリー時はメモリーを表示するアドレスを表示します。
F3ソフトリセットします。
F5システムを実行します。
Shift+F5実行状態のシステムを停止します。
F9ブレークポイントの設定と解除。
F10関数をステップオーバーします。
F11関数をステップインします。



モジュール確認

使用可能なモジュールは、メニューから「ヘルプ」-「モジュール一覧」を押下し、モジュール一覧ダイアログで確認します。




動作確認

ファイルを、configディレクトリ以下へ保存し、vdmgrdebugを起動します。

詳細設定を開き、ターゲットシステムへ”Z80テレビゲーム(SC1602BS/LEDx8/7SEGx4/SN76489)”を選択します。

画面下にある「メモリー」タブを選択し、アドレスに0xc202入力し「Enterキー」押下します。
メモリー内容に適当な値を書き込んでいくと、画面に線や点が描画されます。
また、アドレスを0xf000にするとLED、0xf100,0xf101,0xf102,0xfx03にすると7SEGを点灯・消灯できることが確認できます。




デバッグ確認

動作確認後、ファイルを保存し、適当な場所へ解凍します。

メニューから、「ファイル」-「開く」を選択し、解凍した場所にあるsampleディレクトリ内のmain.ihxファイルを選択します
(main.ihxファイルをvdmgrdebugへドラッグアンドドロップでも可)
正しく読み込みが完了し、実行すると以下のような画面が表示され、線が移動し、壁をぶつかると音が鳴り、LCDには波のようなもの、LEDと7SEGがカウントするプログラムが動作します。


image


また、ソースをビルドするにはSDCCが必要となります。
現在ソースレベルのデバッグに対応しているのは、SDCCのCDBフォーマット(Z80/MCS-51)、TD4、GMC-4です。
CDBは、アセンブリ言語のデバッグ情報の出力方法が良く分からないため、C言語のみの対応となっています。

※CC65、IEEE695のデバッグ情報も大体分かっているため、6502(ファミコン)とTLCS-900H(NEOGEO POCKET)は対応できると思います。




シリアルコンソール

vdmgrdebugは名前付きパイプに対応しています。
UARTの送受信先を名前付きパイプへ接続し、名前付きパイプに対応した端末を使用することで、シリアルコンソールとして使用することができます。
通信速度は、システム構成ファイルへ記述します。

以下は、Tera Term v4.74以降を使用した時の接続手順です。

  1. vdmgrを起動。
  2. Tera Termを起動し、メニューから、「ファイル」‐「新しい接続」を選択し、「TCP/IP」を選択。
  3. ホストへ、”\\.\pipe\vdmgrdebug”と入力し、「OK」ボタンを押下。
  4. ホストへ、”\\.\pipe\vdmgr”と入力し、「OK」ボタンを押下。