目次

概要
　このプログラムは、Z80 CPU(本当は64180)用に作成した、ソフトウェアシミュレータです。個人的に64180専用の命令を使ったプログラム(組込み用)を作るときにデバッガがなかったのでいろいろ悩んでいたのですがWindows上のプログラムを作ってみたくなったのをきっかけに作ってみました。

　作成環境は、エプソンノート(PC-386noteAR改DX2)＋Windows3.1マシン -> PC-9821Xa12＋Windows3.1マシンです。
多分、Windows3.1又はWindows95マシンなら動作すると思われますが、実行確認したマシンは、
エプソンノート(PC-386noteAR改DX2)＋Windows3.1
エプソンノート(PC-386noteAR改DX2)＋Windows95
エプソンノート(PC-486noteAS改DX4)＋Windows95
ＩＢＭ AptivaVisionNW2＋Windows95
ＤＯＳ／Ｖ(Pentium90)＋Windows95
PC-9821Xa12＋Windows3.1 or Windows95
などです。

　自分にとってまだ必要ないと思われる機能はあまり盛込まれていません。しかし、使用してくれる人の要望があればできるだけ対応して行きたいと思いますのでどんどん要望をください。

ファイル構成
ウィンドウ構成
コマンドライン
マウス操作
注意
最後に


ファイル構成

Z80SIM.EXE
　Z80シミュレータ本体。

Z80SIM.HLP
　ヘルプファイル。シミュレータ本体と同じディレクトリに入れてください。

Z80SIM.INI
　起動時に自動的に作成されるiniファイル。

*.HEX
　言わずと知れたインテルのヘキサファイルです。

*.SYM
　シンボルファイル
　シンボルファイルは、いろいろな形式のものがあると思いますが、このシステムでは次の様なテキスト形式のみサポートしています。
0000 INITIAL
000A Next
1行の構成
16進数4桁 ｽﾍﾟｰｽ ラベル
ラベルは、大文字／小文字を区別し、文字数は13文字となっています。


IniFile
Z80SIM.INIの内容

[MainFrame]
シミュレータウィンドウの表示位置

[Cons]
コンソールウィンドウの表示位置
コンソールテキストの行数(Line)

[Register]
レジスタウィンドウの表示位置

[Source]
ディスアセンブルウィンドウの有無
ディスアセンブルウィンドウの表示位置

[Dump]
ダンプウィンドウの有無
ダンプウィンドウの表示位置
ダンプ時の横方向表示バイト数

[I/O Dump]
Ｉ／Ｏダンプウィンドウの有無
Ｉ／Ｏダンプウィンドウの表示位置
Ｉ／Ｏダンプの横方向表示バイト数

[Watch]
ウォッチウィンドウの有無(未サポート)

[Stack]
スタックウィンドウの有無
スタックウィンドウの表示位置
スタックの横方向表示バイト数

[Font]
フォントの指定


ウィンドウ構成

　ウインドウは、次の６つの子ウィンドウで構成されています。

Cons:基本入力出力用コンソールウィンドウ

Source:ディスアセンブルリスト表示ウィンドウ

Register:レジスタ表示ウィンドウ

Dump:ダンプ表示ウィンドウ

I/ODump:Ｉ／Ｏダンプ表示ウィンドウ

Stack:スタック表示ウインドウ

I/OInput:Ｉ／Ｏポート入力ウィンドウ


Cons
　コマンドを入力するウィンドウ。簡単なテキストエディタ形式になっているので使用方法は、メモ帳などと同じです。保存するテキストの行数は約100行になっています。


Source
　ディスアセンブル表示するためのウィンドウ。トレース時にリアルタイムで変化する。反転表示してある行は、現在のＰＣ(ﾌﾟﾛｸﾞﾗﾑｶｳﾝﾀ)のアドレス、又はブレークを設定／解除しようとするアドレス。スクロールは１行単位かジャンプです。キー入力によるスクロールはできません。


Register
　レジスタ表示ウィンドウ

　Z80の内部レジスタを表示するためのウィンドウ。トレース時にリアルタイムで変化する。

　レジスタ名の対応は、次の様になっています。

Ｓ：サインフラグ(フラグは１の時に表示)
Ｚ：ゼロフラグ
Ｈ：ハーフキャリーフラグ
Ｐ：パリティ／オーバーフローフラグ
Ｎ：ネガティブフラグ
Ｃ：キャリーフラグ
Ａ： アキュームレータ(Areg)
ＢＣ：ＢＣレジスタ
ＤＥ：ＤＥレジスタ
ＨＬ：ＨＬレジスタ
Ｓ～ＨＬまではさらに裏レジスタがある。
ＩＸ：ＩＸレジスタ
ＩＹ：ＩＹレジスタ
ＳＰ：スタック（ＳＰ）
ＰＣ：プログラムカウンタ（ＰＣ）
Ｉ：Ｉレジスタ
ＥＩ：割込み許可フラグ
ＭＯＤ：割込みモード表示
ＳＴ：ステートカウンタ

　直接キー入力して、レジスタ値の変更しリターンキーを押すとレジスタ値を変更することができる。


Dump
　コンソールからダンプコマンドを実行するとここに表示される。このウィンドウはリアルタイム表示はしない。
　直接キー入力して、メモリデータを編集しリターンキーを押すとメモリデータを変更することができる。


I/ODump
　Ｉ／Ｏポートへの出力データを表示するためのウィンドウ。このウィンドウは、トレース時にリアルタイム表示を行う。
　直接キー入力して、メモリデータを編集しリターンキーを押すとメモリデータを変更することができる。


Stack
　スタックウィンドウ。このウィンドウは、トレース時にリアルタイム表示する。
　直接キー入力して、メモリデータを編集しリターンキーを押すとメモリデータを変更することができる。


I/O Input
　シミュレート実行時に、Ｉ／Ｏ入力があったときに自動的に表示される。入力するデータは、16進数又は、ラベル、レジスタ名です。入力しない場合は、0入力とみなします。


コマンドライン

　基本的には、コマンドはアルファベット1文字（大文字小文字の区別なし)です。

Ｄ：メモリダンプ
Ｅ：メモリセット
Ｉ：Ｉ／Ｏポート出力のダンプ表示
Ｋ：スタックのダンプ表示
Ｒ：レジスタの表示／変更
Ｒ０：リセット
ＲＳ：ステートカウンタクリア
Ｌ：ディスアセンブル
Ｇ：実行
Ｑ：ストップ
Ｐ：ステップ（関数は実時間実行)
Ｔ：トレース(関数内もトレース)
Ｂ：ブレーク設定
ＢＫ：ブレーク解除
ＢＬ：ブレークリスト表示
Ｃ：サブルーチンコール

式：四則演算・括弧・ラベル演算子・レジスタ演算子
．：ラベル演算子
：：レジスタ演算子


メモリダンプ
書式：D[ｱﾄﾞﾚｽ1 [ｱﾄﾞﾚｽ2]]
最大表示データ数に制限あり。


メモリセット
書式：Eｱﾄﾞﾚｽ ﾃﾞｰﾀ


Ｉ／Ｏポート出力の表示
書式：I[ｱﾄﾞﾚｽ1 [ｱﾄﾞﾚｽ2]]
一度設定するとリアルタイム表示する。
最大表示デー多数に制限あり。


スタック表示
書式：K[len]
一度設定するとリアルタイム表示する。
lenは、表示するバイト数を設定する。


レジスタの表示／変更
書式１：R
レジスタ表示する。
書式２：R レジスタ名 ﾃﾞｰﾀ
レジスタにデータを設定する。


リセット
書式：R0
レジスタを０クリアする。


ステートカウンタクリア
書式：RS
ステートカウンタを０クリアする。


ディスアセンブル
書式：L[ｱﾄﾞﾚｽ]
指定アドレスからディスアセンブル表示を行う。


ステップ
書式：P
ステップ実行(関数内は実時間実行)する。


実行
書式：G
実時間実行を行う。


ストップ
書式：Q
実行中に強制停止する。


トレース
書式：T
ステップ実行(関数内もステップ実行)する。


ブレーク設定
書式：Bｱﾄﾞﾚｽ
指定アドレスにブレークポイントを設定する。
ディスアセンブルリストの行の先頭に'*'表示を行う。


ブレーク解除
書式：BKｱﾄﾞﾚｽ
指定アドレスのブレークポイントを解除する。


ブレークリスト表示
書式：BL
設定済みのブレークポイントを表示する。


サブルーチンコール
書式：Cｱﾄﾞﾚｽ
指定アドレスのサブルーチンをコール(スタックにプログラムカウンタを保存)する。


ラベル演算子
書式：.label
ラベルに定義された数値を使う。アドレス計算等に使用。


レジスタ演算子
書式：:reg
regはレジスタ名を指定する。アドレス計算等に使用。


マウス操作

　ツールバー

　ファイルオープン
　シミュレータの終了
　ストップ
　実行
　トレース
　ステップ
　ブレーク切替
　リセット
　ステートカウンタクリア
　ダンプウィンドウOn
　スタックウィンドウOn
　Ｉ／ＯダンプウィンドウOn
　ヘルプ

　マウス操作だけで次のことができます。

ディスアセンブルリスト上でダブルクリックを行うとブレーク切替を行うことができます。


ブレーク切替
ディスアセンブルリストのカーソル位置(反転表示)にブレークの切替(未設定時は設定・設定中は解除)する。ブレーク設定したときは、ディスアセンブルリストの行の先頭に'*'表示を行う。


注意

今のところ、

・ウィンドウオープン中にフォントの変更を行うと表示がおかしくなる。ウィンドウをす　べて再オープンすると直る。
・ディスアセンブルリストのページスクロールはできない。
・ラベルが取込めないことがある。
・読込みファイルが１種類しかない。
・ステート数は617180用となっている。さらにステート数のチェックを正確に行なっていない。

等が発生していますので注意して使用してください。


最後に

　このプログラムは次の資料及びソフトウェアを使用して作成しました。

資料
HD643180ハードウェアマニュアル
WindowsAPIバイブル1
入門VisualC++

使用したソフトウェア
VC Ver1.0
サルでも書けるヘルプファイルVer1.63　(Mono／うめき やすひろ様に感謝)

このプログラム・・・

　このプログラムは、現在のところフリーソフトとします。今後の展開によってはシェアウェアになる可能性もあります。
　使用・配布は自由ですがその際に発生した利益／損益／問題点などについては一切保証しませんので、注意してください。
　バグについては、できる限り対応したいと思いますので気がついた人は報告をお願いします。同時に、新しい機能についても対応可能なものは対応していきたいと思いますのでメール等ください。
　著作権は、作者にあります。

作者
　村山正樹
　NIFTY BXB03071