作りたいものに妥協しないために、会社を興してまで完成させた作品です。うれろー、うれろー。

2018年03月29日

RFC: Common Source Code Projectのデバッガの改良

Common Source Code Projectのデバッガの改良中です。
趣旨としては、操作対象のデバイスやCPUを切り替えられるようにしよう、というものです。
以下に試作版をアップしています。
http://takeda-toshiya.my.coocan.jp/00tmp/debugger.zip

私のエミュレータのデバッガを開発に使ってくださっている方がいらっしゃいましたら、
ご意見ご要望をコメントに頂けますと助かります。

180329-1.png

! device
とすると、仮想マシンの全デバイスを列挙します。
! device (id)
とすると、操作対象のデバイスを切り替えます。

ただし、CPUを実行するG,T,Pコマンドおよびブレークポイント関係のコマンドは、
デバッグ対象のCPUに対して実行されます。
T,PコマンドでCPUをステップ実行すると、CPUのレジストリ情報とあわせて、
操作対象のデバイスの情報が緑色で表示されますので、
例えば、サブCPUを操作対象にして、TコマンドでメインCPUをステップ実行しながら、
メインCPUとサブCPUの実行中の命令やレジスタの状態を並べて確認したり、
(メインCPUで1ステップ進める間にサブCPUが複数ステップ進む、といことはありますが)
サブCPUのメモリやI/O空間を操作したり、といったことが可能です。

! device cpu
とすると、操作対象のデバイスを元のCPUに戻すことができます。

180329-2.png

CPU以外を操作対象にすることができます。
例えばMB8877やuPD765Aを指定すると、FDCのレジスタ状態や実行中のコマンド、
現在アクセスしているセクタの情報を確認することができます。

180329-3.png

また、TMS9918を指定すると、D,EコマンドでVRAMの内容を表示・編集したり、
N,L,WコマンドでVRAMの内容をファイルに読み書きすることができます。
(元々は、たなむさんのTweetを見て、これがやりたかったのが発端です)

180329-4.png

デバッグ対象のCPUを切り替えることも可能です。
! cpu
とすると、仮想マシン中の(デバッガが付いている)CPUを列挙します。
! cpu (id)
とすると、デバッグ対象のCPUを切り替えます。

例えば、最初はメインCPUをデバッグ対象としてデバッガを立ち上げて、
サブCPUにコマンドを送ったところでブレークを掛けて、
サブCPUにデバッグ対象を切り替えて、サブCPUをトレースすることが可能です。

また、これは従来からサポートしていますが、T,PコマンドでCPUをステップ実行して、
CPUのレジストリの情報を表示する際に、
CPUの消費クロック数(起動時から・前回のブレーク時から)、
現在のスキャンラインが始まってからのクロック数、
現在のスキャンライン番号が表示されるようになっています。
HBLANK/VBLANKの間にVRAMに転送する処理を詰め込むような場合に便利かもしれません。
posted by 武田 at 01:34| Comment(10) | 開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
現実逃避で古いI/Oのダンプを入力したものをメモリに送り込むときにデバッガのお世話になっています。

デバッガのnコマンドでファイルを指定するときのパスがfdイメージやテープイメージのパスと共有されているのがちょと不便です。なのでデバッガの作業ディレクトリを指定できるとありがたいかも。

ところで、ePC-8801MAのPCキーってどのキーに割り振られているでしょうか?
Posted by 通りすがり? at 2018年04月03日 23:57
コメントありがとうございます。
今日のリリースで、指定されたパスが絶対パスでない場合は、
実行ファイルと同じディレクトリのファイルとみなすようにしました。

そういえばPCキーは割り当てられてなかったかもです。
後日確認してみます。
Posted by 武田 at 2018年05月06日 09:24
デバッガの改良ありがとうございます。
パスを意識する必要がなくなって楽になりました。

ePC-8801MAのPCキーはrom-basic起動設定のメニューを呼び出すために必要かと。
お手数ですがよろしくお願いします。

Posted by 通りすがり? at 2018年06月21日 02:26
いつもありがとうございます。
キー入力ということでもう一点。
eMZ-2500, eX1turboで漢字変換モードに入れません。
ePC-98では入れるので、ctrl+XFERが通らないのは実装されていないのかと思ったりするのですが。

この辺はラベルに漢字が使えるなんていらんことを組み込んでいるのでbasicのダンプ入力で困っています。
テキスト入力も漢字対応していただけるとありがたいですが、こちらはちょと難しそうなので検討事項に列挙していただければ幸いです。
Posted by 通りすがり? at 2018年08月23日 17:23
いつもありがとうございます。
キー入力ということでさらにもう一点。
sord m5のbasic-Gで
100 a=inkey(0)
110 print cursor(10,10);a
120 goto 100
などとして[shift]キーの戻り値を見ると4でなくて12が戻ってきます。
ポートの接続がおかしいなんてことはないでしょうか?
Posted by 通りすがり? at 2018年09月19日 01:23
10/05版の更新ありがとうございます。
ePC-8801の誤動作を見つけたので連絡します。
V1(S) 4MHzでbasicリストを張り付けをすると、'A'などの[shift]+[a]の操作が必要な文字と、その次の文字が入力されずに飛ばされます。
V1(H)だと問題ないようです。
Posted by 通りすがり? at 2018年10月09日 02:26
10/10版の更新ありがとうございます。
ePC-8801MAのrom-basicが起動することを確認しました。
I/O誌のtape前提のプログラムの入力が楽になりました。ありがとうございます。
Posted by 通りすがり? at 2018年10月13日 14:49
12/18版の更新ありがとうございます。
FM-77系のエミュの名前と中身が一致していないものがあります。
FM-77 の中身が FM77av
FM-77av の中身が FM77av40
FM-77 が存在しません

ePC-8801MAのPCキーは私のところでは未動作。USBキーボードがまずいのか?
Posted by 通りすがり? at 2018年12月19日 18:32
こんにちは。
X1turboのプログラムをポチポチといじっております、X1turboAgencyと申します。

最近も永らく考えていた、グラディウスのリメイクを行う事が出来ました。
開発の際に、武田様のX1turboエミュレータを使用させて頂きました。

処理時間やDMAのレスポンスなど、エミュレータ動作が正確で、大変助かりました。
これからもX1turboの開発に使用させて頂きます。
よろしくお願いします。
Posted by X1turboAgency at 2019年05月03日 00:00
いつもありがとうございます。
また、いくつか気になることがありまして・・・。

ePC9801VMにdip-swを2つ追加していただけないでしょうか。
1:拡張グラフィックモードのON/OFF
2:GDC 2.5/5MHz
PC9801UV2がdip-swでこの2つを切り換えているので、VMも同様かと。[help]+[reset]でメニューが開くのはVXから追加されたはずです。


後、以前書きましたm5のキー入力ですが、サンプルを間違えていました。もうしわけありません。
basic-G,basic-Iで
100 a=inkey(1)
110 print cursor(10,10);a
120 goto 100
などとして[shift]キーの戻り値を見ると4でなくて12が戻ってきます。
Posted by 通りすがり? at 2019年07月03日 21:44
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

まるくん、がんばれ、ちょうがんばれ