趣旨としては、操作対象のデバイスやCPUを切り替えられるようにしよう、というものです。
以下に試作版をアップしています。
http://takeda-toshiya.my.coocan.jp/00tmp/debugger.zip
私のエミュレータのデバッガを開発に使ってくださっている方がいらっしゃいましたら、
ご意見ご要望をコメントに頂けますと助かります。
! 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に戻すことができます。
CPU以外を操作対象にすることができます。
例えばMB8877やuPD765Aを指定すると、FDCのレジスタ状態や実行中のコマンド、
現在アクセスしているセクタの情報を確認することができます。
また、TMS9918を指定すると、D,EコマンドでVRAMの内容を表示・編集したり、
N,L,WコマンドでVRAMの内容をファイルに読み書きすることができます。
(元々は、たなむさんのTweetを見て、これがやりたかったのが発端です)
デバッグ対象のCPUを切り替えることも可能です。
! cpu
とすると、仮想マシン中の(デバッガが付いている)CPUを列挙します。
! cpu (id)
とすると、デバッグ対象のCPUを切り替えます。
例えば、最初はメインCPUをデバッグ対象としてデバッガを立ち上げて、
サブCPUにコマンドを送ったところでブレークを掛けて、
サブCPUにデバッグ対象を切り替えて、サブCPUをトレースすることが可能です。
また、これは従来からサポートしていますが、T,PコマンドでCPUをステップ実行して、
CPUのレジストリの情報を表示する際に、
CPUの消費クロック数(起動時から・前回のブレーク時から)、
現在のスキャンラインが始まってからのクロック数、
現在のスキャンライン番号が表示されるようになっています。
HBLANK/VBLANKの間にVRAMに転送する処理を詰め込むような場合に便利かもしれません。
デバッガのnコマンドでファイルを指定するときのパスがfdイメージやテープイメージのパスと共有されているのがちょと不便です。なのでデバッガの作業ディレクトリを指定できるとありがたいかも。
ところで、ePC-8801MAのPCキーってどのキーに割り振られているでしょうか?
今日のリリースで、指定されたパスが絶対パスでない場合は、
実行ファイルと同じディレクトリのファイルとみなすようにしました。
そういえばPCキーは割り当てられてなかったかもです。
後日確認してみます。
パスを意識する必要がなくなって楽になりました。
ePC-8801MAのPCキーはrom-basic起動設定のメニューを呼び出すために必要かと。
お手数ですがよろしくお願いします。
キー入力ということでもう一点。
eMZ-2500, eX1turboで漢字変換モードに入れません。
ePC-98では入れるので、ctrl+XFERが通らないのは実装されていないのかと思ったりするのですが。
この辺はラベルに漢字が使えるなんていらんことを組み込んでいるのでbasicのダンプ入力で困っています。
テキスト入力も漢字対応していただけるとありがたいですが、こちらはちょと難しそうなので検討事項に列挙していただければ幸いです。
キー入力ということでさらにもう一点。
sord m5のbasic-Gで
100 a=inkey(0)
110 print cursor(10,10);a
120 goto 100
などとして[shift]キーの戻り値を見ると4でなくて12が戻ってきます。
ポートの接続がおかしいなんてことはないでしょうか?
ePC-8801の誤動作を見つけたので連絡します。
V1(S) 4MHzでbasicリストを張り付けをすると、'A'などの[shift]+[a]の操作が必要な文字と、その次の文字が入力されずに飛ばされます。
V1(H)だと問題ないようです。
ePC-8801MAのrom-basicが起動することを確認しました。
I/O誌のtape前提のプログラムの入力が楽になりました。ありがとうございます。
FM-77系のエミュの名前と中身が一致していないものがあります。
FM-77 の中身が FM77av
FM-77av の中身が FM77av40
FM-77 が存在しません
ePC-8801MAのPCキーは私のところでは未動作。USBキーボードがまずいのか?
X1turboのプログラムをポチポチといじっております、X1turboAgencyと申します。
最近も永らく考えていた、グラディウスのリメイクを行う事が出来ました。
開発の際に、武田様のX1turboエミュレータを使用させて頂きました。
処理時間やDMAのレスポンスなど、エミュレータ動作が正確で、大変助かりました。
これからもX1turboの開発に使用させて頂きます。
よろしくお願いします。
また、いくつか気になることがありまして・・・。
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が戻ってきます。