*** SHARP MZ-2000/2200/80B/B2エミュレータ TF-EDITION ***
                                Windows版 EmuZ-2000 Ver.0.92.0以降
                                UNIX版 emz2000 Ver.0.92.0以降

                                        福井 利夫
                                        http://www.toshiofukui.com/


○ はじめに

　これは、Windows PCとUNIXで動作する、SHARP MZ-2000/2200/80B/80B2のエ
ミュレータです。
　特殊なハードウエアが必要等の明らかに動作できないものを除くと、すべて
のMZ-2000/2200/80Bのソフトウエアが完全動作するはずです。また、実機デー
タのイメージ化についても、できるだけ、誰でも簡単にできるように工夫して
います。
　UNIX(Linux)版は、テープ設定、システムクロック設定、サウンド設定ダイ
アログがなく、ダイアログの非互換や移植の都合でプラグインが実装されてい
ませんが、インプリメントを面倒に感じているだけの問題だけですので、なる
べくWindows版と同等にしたいとは考えています。従って、本ドキュメントに
ついて、プラグインと記載があるものや存在しないダイアログについては、
UNIX版にはありません。ダイアログの設定内容変更そのものは、iniファイル
の書き換えによって可能です。
　バグや制限については、本ドキュメント以外にTODO.*を参照してください。

　なお、これはUNIX版emz2000 Ver.0.7とWindows版EmuZ-2000 Ver.0.400リリ
ース候補版のソースを組み合わせる等した後、全体的にやりかえたものです。
両者共、機種依存部以外は元々同じソースですので、組み合わせた後、メンテ
ナンスしやすいように整理して書き換えてありますし、その後大幅に書き直し
ていますので、元のものとはかなり違うものになっております。エミュレータ
としてできる限り完全なものを目指しており、EmuZ-2000 Ver.0.470はもちろ
んのこと、MZの機能はほぼ全てが入っています。これらのオリジナル・エミュ
レータは長年メンテナンスされておらず、現在主流の環境では動作しませんの
で、本ドキュメントでは旧emz2000、旧EmuZ-2000、旧エミュレータ等と呼びま
す。
　Ver.0.8にて常岡さんにプラグイン、INIファイルを実装、その他いくつかの
開発をしていただきました。この場を借りてお礼申し上げます。もし、改造さ
れた方や調整値を調整した方がいらっしゃいましたら、いただけると大変嬉し
いです。


○ 仕様

・対応ハードウエア

　- 本体 SHARP MZ-80B/80B2/80B海外版/2000/2200
  - カラーモニタ / グリーンモニタ
　- MZ-8BG,8BGK MZ-80B G-RAM 1,2
　- MZ-80BK MZ-80B 拡張I/Oボックス
  - MZ-1R01,MZ-1R02x2 MZ-2000 G-RAM 1〜3
  - MZ-1U01 MZ-2000 拡張I/Oボックス
　- MZ-1T02 MZ-2200 データレコーダ
  - MZ-1E05/8BFI+MZ-1F07/80BF等 フロッピーディスクドライブ
　- MZ-1E08/1E04/8BP5I/PIO-3050+プリンタ        (プラグイン)
　- MZ-1E18+MZ-1F11 クイックディスクドライブ    (プラグイン)
　- MZ-1R12/PIO-3030 S-RAMメモリボード          (プラグイン)
　- MZ-1R13/PIO-3055/3055-01 漢字ROMボード      (プラグイン)
　- I/Oデータ PIO-3034 EMMメモリボード          (プラグイン)

・対応データ形式

　使用可能なデータフォーマット
        - カセットテープ
                WAV/MTI ... モノラル/8ビットPCMのWAV形式
                        (MTIはWAVの拡張子を変更しただけ)
                MZT ... MZ系エミュレータ共通テープフォーマット
                        (ヘッダ80バイト+本体データ)
                MZF ... 海外のMZ系エミュレータ共通テープフォーマット
                        (拡張子以外はMZTと同じ)
                MTW ... MZTとMTI/WAVをそのまま連結
                DAT ... 0番地からのファイルサイズ分のメモリイメージ
                        (旧形式)
                UNIX版は起動時のファイル名指定でのみ旧emz2000 Ver.0.7
                形式を使用可能、Windows版は非対応
        - フロッピーディスク
                D20/D88/D77 ... 有名なD88フォーマット (2D/2DD)
                        (D20/D77はD88の拡張子を変更しただけです)
                DSK ... 海外製MZ-80Bエミュレータのフォーマット
                2D  ... 320KBベタファイル
        - クイックディスク (要プラグイン)
                Q20 ... プラグインMZ-1E18のドキュメント参照
                MZT ... MZT形式をそのままQDとして扱うことも可能
        - ステートセーブ
                MZE ... TF-Editionの独自形式です。
                EMUZ .. 旧EmuZ-2000形式で、32ビットWindows版で
                　　　　読み込みのみが可能です。
        - その他
                HEX ... Intel HEX形式 (テープのDAT/MZTと同じ扱い)

　※　MTI/WAV形式はWindowsのWAVフォーマットですが、オフセット+00に
　　　0x36を記述した場合、+01にピッチ、+02にスレッショルド値を入れられ
　　　ます。ただし、これはWAVファイルではなくなります。
　　　これはEmuZ-2000 Ver.0.400リリース候補版のソースにあった仕様です。
　　　本来はRIFF形式のタグで対応すべきですがこれはやっていません。かな
　　　り読み込み精度がよいのでカスタマイズはあまりする必要がないようで
　　　すが、必要な時はバイナリエディタで簡単に書き換えます。
　※　MTW形式はMZT形式とMTI形式を連結したものですが、オフセット+0x20
　　　(先頭はMZT形式のヘッダ部なので、ヘッダ部の0x20になります)に0x36
　　　を記述した場合、+0x21にピッチ、+0x22にスレッショルド値を入れられ
　　　ます。
　※　MZT/MZFは連結されたものには対応していませんし、IPL起動以外での使
　　　用もできませんが、プラグインemuz-1m03.dllを使用することにより、
　　　バイナリと一部のBASIC環境でMZT形式の読み書きが可能です。
　※　この中でフロッピーディスクとMTI/WAV/MZT形式のみがデータ変更して
　　　保存することができます。ディスクはDITT等でFDへ書き戻せば、実機と
　　　双方向にやりとり可能です。テープは未確認ですが、難しい問題を含ん
　　　でいます。

・メニュー

　実機を知る人がアプリケーションを見ればすぐにわかりますので詳細は省
略しますが、大部分は各機能の説明で記述してあります。
　Windows版に関しては、メニューは日本語と英語で切り替わり、日本語メニ
ューと日本語ダイアログへも対応していますが、本ドキュメントでは英語のみ
の記載となっております。
　メニューの言語は自動設定されますが、固定することも可能です。ファイル
メニューの中のUI言語設定のポップアップメニューから選択してください。

旧EmuZ-2000/emz2000からの互換性:
　ユーザインタフェースとしての概念は旧emz2000や旧EmuZ-2000と大きく異な
っています。メニュー構成やショートカットキー等に互換性はありません。

・ショートカットキー

　ALTを押しながら入力したキーは、ショートカットキーになります。割り当て
は、メニュー上の記載を見てください。
　メニューの記載以外にファンクションキー割り当てと他の一部があり、次の
ようになっています。

        F1      ... Pause (旧EmuZ-2000と異なりPauseのみで情報表示はあり
                    ません。但し、F2と併用できます)
        F2      ... Windows版: デバッグ情報表示
                               (G-RAMも強制的に全ページ表示)
                    UNIX版:    なし
        F3      ... サウンドモード切替
        F4      ... ディスプレイモード切替 (カラー/グリーン)
        F5      ... なし (旧EmuZ-2000はIPLリセット)
        F8      ... ステートセーブ
        F9      ... クロックダウン (1〜400MHzを1MHz単位で変化)
        F10     ... クロックアップ (1〜400MHzを1MHz単位で変化)
        F11     ... リセット (旧EmuZ-2000ではカラー/グリーン切替)
        F12     ... IPLリセット (旧EmuZ-2000ではリセット)
        ;       ... F9と同じ
        :       ... F10と同じ

　その他にキー操作については、キーボードの項を参照してください。

UNIX版のみの注意:
　ALT+Fnは通常はウインドウマネージャーに取られていますので、同時に
SHIFTも押す等して回避してください。GNOMEのデフォルトだとF1〜F10は
Windows Managerの操作になりますのでSHIFTを併用する必要があります。

旧EmuZ-2000/emz2000からの互換性:
　ユーザインタフェースとしての概念は旧emz2000や旧EmuZ-2000と大きく異な
っています。メニュー構成やショートカットキー等に互換性はありません。

・ROMデータについて

　MZ-2000/2200/80B/B2は、IPLプログラムとフォントデータの2種類のROMが存
在します。本エミュレータでは、ROMがない場合は添付のフォントデータと内蔵
のIPLが動作し、ROMがある場合にはROMデータを読み込んで使用しますので、特
にROMデータがなくても動作に不都合はありません。ROMがない場合は、WAV形式
テープ読込のために、Monitor MZ-1Z001MもしくはSB-1520のどちらかを含んだ
MZTもしくはDAT形式のファイル(本体付属BASIC等)を用意する必要があります。
　ROMを使用する場合は、どちらも2716系のROMですので、2716対応のROMライタ
等で読み出して、0x800バイトのファイルを作成し、エミュレータ本体と同じデ
ィレクトリへ置きます。詳細は次項以降を参照してください。
　フォントデータは80B/2000で共通ですが、IPL ROMの内容は当然ながら異なっ
ています。なお、海外版80Bと国内版の80Bでは、フォントデータは異なります
が、IPL ROMの内容は同じです。

・設定ファイル(UNIX版~/.emz2000rc、Windows版EmuZ2000.ini)について

　アプリケーションのユーザ設定状態等がiniファイル(UNIX版~/.emz2000rc、
Windows版EmuZ2000.ini、以後便宜上iniファイルと呼ぶ)に保存されて、次回実
行時に回復されます。iniファイルのみで設定できる項目もいくつか存在します。
なお、アプリケーション終了時に、テープもディスクも自動的にイジェクトさ
れるようになっています。
　iniファイルは初回起動時に自動で作成されます。プラグインを使用する場合
にはこの後設定を追加します。

・フォントデータについて

　フォントデータは、MZ-2000/2200/80B/B2から吸い出したROMデータがあれば、
ROMデータを読み込んで使用します。ROMデータがなくても動作には問題がなく、
添付の旧EmuZ-2000のフォントデータを使用しますが、若干実機とは異なったフ
ォントになります。海外版のフォントはROMデータでしか指定できません。
　Windows版は、8x16フォントデータが搭載されているので、2000font.bmpと
2000font400.bmpの二種類があり、ROMデータの存在/非存在にかかわらず、8x16
ドットフォントを指定した時にはbmpファイルのデータが使用されます。
　UNIX版では2000font.bmpをコンバートしたfont.patを使用します。UNIX版は
EmuZ-2000の24KHz 8x16ドットフォントに対応しておりません。

メニュー
        (Windows版)
        Tools -> Font Select -> Use English Font
                海外版80Bの英語フォントデータがあればオンの時に英語フ
                ォントを選択できます。
      　Tools -> Font Select -> Use 8x16 24KHz Font
                オンの時に、24KHzフォントを選択できます。表示も24KHz
                となります。
        (UNIX版)
        Tools -> Font Select -> Japanese
        Tools -> Font Select -> English
                海外版80Bの英語フォントデータがあれば英語フォントを選
                択できます。

フォントデータリスト
        mzfont.bmp      ... 8x8ドットフォントデータ (Windows版)
        mzfont24.bmp    ... 8x16ドットフォントデータ (Windows版)
        mzfont.pat      ... 8x8ドットフォントデータ (UNIX版)
        mzfont.rom      ... ROMフォントデータ (80B/2000共通)
        mzfonte.rom     ... 海外版MZ-80BのROMフォントデータ

　MZ-2000/2200/80B/B2のフォントROMは各機種で共通であり、EP-ROMか、
SHARP IX0286PAと書かれた2716系のMASK ROMのICです。この内容を2716対応の
ROMライタ等で抜き出してファイルとして用意しておけば、自動的に使用しま
す。

・IPL ROMとプログラム起動

　IPLは、ROMがない場合は内蔵のIPLが起動します。内蔵IPLの仕様は実機の
IPLとほぼ同じですが、IPLからMTI/WAV形式テープを読み込むためには、
Monitor MZ-1Z001MもしくはSB-1520のどちらかを含んだファイル(本体付属BAS
IC等)を用意する必要があります。ベタなDAT形式でも、ヘッダのついたMZT形
式でもかまいませんので、どちらかへコンバートして、mzmonipl.binという名
称で置いておきます。モニタを含んでいればよいし、適当に書き換えて機種判
別し、一部のみを使用しますので、モニタを流用したゲームやゲームのローダ
も利用できるはずです。勝手に切り取るので、サイズも気にする必要がありま
せん。

内蔵IPL用外部ファイル
        mzmonipl.bin    ... MZ-1Z001M or SB-1520を含んだデータ
                            (ベタデータ(DAT形式)もしくはMZT形式)

　モニタを使用している都合上、IPLのテープ読み込み中は一時的に設置した
モニタの機種モードになります。その間にリセットやIPLリセットしたりエミ
ュレータを終了した場合は、機種モードがそのままになりますのでご注意くだ
さい。
　内蔵IPLはS-RAM/ROM起動の/キー(1R12や1E18で使用)についてメッセージが
表示され、IPL直後でなくても効くようになっているので簡単に区別できます。
また一部エラーメッセージが追加されています。内蔵IPLの動作は実機とよく
似ていますが、特にテープの場合はモニタを使う都合上BOOTシーケンス違いま
すのでメモリ内容が完全に同じにはならず、0x8000以降も破壊されますが、使
う上で問題になることはないでしょう。但し、内蔵IPLの実行中はモニタによ
るテープ読み込み時以外は、効果音がありませんし、一時停止もできません。
　MTI/WAV形式以外のテープのIPL起動プログラムの場合は、ファイル指定と同
時にIPLを飛ばしてプログラムを直接メモリへ格納しますので、IPLを経由しな
いため関係ありません。
　IPL ROMを利用する場合は、実機からROMを吸い出しますが、MZ-2000も
MZ-80Bも2716のEP-ROMかマスクROMです。80BのマスクROMは、SHARP IX0285PA
と書かれています。この内容を2716対応ROMライタ等で読み出し、以下のファ
イル名で用意しておきます。

IPL ROMファイルリスト
        mz20_ipl.rom    ... MZ-2000/2200のIPL ROMデータ
        mz80bipl.rom    ... MZ-80B/80B2のIPL ROMデータ

　片方しかない場合も多いと思われますが、存在しない機種のみ内蔵IPLを使
用しますので、不都合はありません。
  IPLメモリクリアがONの時はメモリをクリアしますが、そうでない時はメモ
リをクリアしません。実機でもそうですが、クリアしないと問題があることが
あります。クリアパターンは、当方のMZ-2000と同じになっていますが、他機
種ではもちろんのこと、使用されているD-RAMやタイミングによっても違う場
合があります。
　メモリクリアしないと動作に支障があるソフトウエアもあります。
　なお、内蔵IPLのテープ起動の場合は、メモリが強制的に必要以上に破壊さ
れます。実機IPLの場合は、破壊領域は実機と同じです。

　メニュー
        Tools -> IPL Memory Clear
                オンの時、IPL起動時にメモリをクリアします。(デフォルト)

旧EmuZ-2000/emz2000からの互換性:
　内蔵IPLでもS-RAMからのBOOTは実機と同じです。先頭のバイトは0でなけれ
ばなりません。その他はTF-EDITIONでは実機互換のため大きく異なっています。

・データファイル読み込み

　データファイルの読み込みは、以下の6つの方法があります。

　- CasTapeメニューからカセットデッキへのテープ挿入もしくは実行
　- FDメニューからフロッピーディスクドライブへのディスク挿入
　- QDメニューからクイックディスクドライブへのディスク挿入
　- Fileメニューのステートデータのセーブ/ロード
　- ファイルのドラッグ&ドロップ
　- エミュレータ起動時のファイル名指定 (UNIX版のみ)

　詳細説明は、各デバイスの個別説明を参照してください。
　Windows版では、CasTape/FD/QDの読み込み時にはReadOnly指定することが
でききますが、 VistaではファイルダイアログにReadOnlyがありませんし、
UNIX版やドラッグ&ドロップでは指定することができません。
　その場合には、メニューのForce Read Onlyを使用してReadOnlyを指定でき
ます。

　メニュー
        Tools -> Force Read Only
                 読み込むファイルをライトプロテクト状態と見做します。

・ドラッグ&ドロップ

  データファイルをDrag&Dropした時、フロッピーディスクファイルはドライブ
1かドライブ2へ挿入(メニューで選択)のみを行い、カセットテープの場合は挿
入のみ(MTI/WAVファイル)か、直接メモリにプログラムを配置して実行します。
　クイックディスクにも対応していますが、q20形式のみとなっており挿入のみ
となっており、mzt形式はカセットテープと見なします。
　挿入のみなので、一部のテープデバイスを除いて起動する場合はIPLリセット
する必要がありますが、フロッピーディスクとカセットテープのみメニューに
よって自動IPLをOn/Offできます。ドライブ2へドロップする場合はIPLしません。
但し、FD I/Fが有効時は自動的にテープから読み込まれません。
　クイックディスクは/を押しながらIPL起動しなければならないため、自動IPL
は意味がありませんので、非サポートです。

　メニュー
        FD -> Drop to FD2
                オンの時は、ドライブ2へドロップされます。
        FD -> Drop Auto IPL
                オンの時は、自動でIPLリセットがかかります。(デフォルト)
                ドライブ1へのドロップ時のみに効果があります。
        CasTape -> Drop Auto IPL
                オンの時は、自動でIPLリセットがかかります。(デフォルト)
                カセットテープMTI/WAV形式の時のみに効果があります。
                フロッピーディスクI/F有効時は、IPL中のみリセットをかけま
                せん。また、FD優先でテープが自動読み込みされません。

・ステータスバー

  動作モード(2000/80B)、フロッピーディスクドライブ、カセットテープ、クイ
ックディスクドライブの状態が表示され、80Bモードの時はキーボードLEDの状態
も表示されます。それぞれ、+と-でメディアの有無を示し、KGSと-でキーボード
LEDのON/OFFを示します。
　更に、キーマップ変更機能がONの時は、キーマップの状態も表示されます。
  フロッピーディスクの時は、ステータスとして+/-以外にWと*があり、Wの時は
データに変更がありますので、ディスク上のファイルに変更を反映したい時は、
メニューのWrite backを選択してください。*はアクセスランプです。
  カセットテープの時は、ステータスとして+/-以外に*、W、>、<があり、それ
ぞれ、再生、書込、早送、巻戻を示しています。但し、MTI/WAVかMTWの分割ロ
ードファイル以外はテープの動作がありませんので+になりません。テープの挿
入中は、読み込みの進捗とTapeEnd状態も表示されます。テープの書込みは、デ
ィスクと異なり直接ファイルを変更しますので注意してください。
　クイックディスクはフロッピーと同様ですが、書き込みができませんので
WriteBackはありません。また、プラグインが存在しない場合には表示されませ
ん。
　カセットテープ/フロッピーディスク/クイックディスク共に、Write Protect
のメディア挿入時はステータスの横にrと出ます。

・実行速度について

  クロックは1〜400MHzで設定できます。
　MZ-2000/80Bは、4MHzノーウェイト動作ということで有名ですが、8801SRのよ
うにデュアルポートRAMを使用しているわけではないので、ディスプレイメモリ
へのCPUからのアクセスとディスプレイスキャンが重なった時に、WAITがかかり
ます。このWAITの感じが少し違う場合は、ダイアログで設定することができま
す。
　独自のカスタムチップなので、完全に合わせるには、実機のタイミングを調
べるしかありませんので、本気でやると手間がかかりますが、どうも、垂直帰
線期間と水平帰線期間の一瞬以外はずっとWAITがかかっているようですから、
適当に値を合わせるのが良いように思います。
　なお、デフォルトのWAIT設定値は、MZ-2500の2000モードかつ24KHz表示で、
2台のディスプレイに同時表示させて設定してありますが、15KHzより少し遅め
かもしれません。
　他に、単位時間当たり(Windows版10ms、UNIX版20ms)の追加クロック数を
WAITと同じダイアログで設定できます。これはサウンドとのずれを修正するた
めのものです。

　メニュー
        Tools -> System Clock -> n MHz
                メニュー項目のnMHzにクロックを設定します。
        Tools -> Hardware Speed Settings
                クロックを含む速度設定ダイアログを開きます。
　ショートカットキー(ALTと併用)
        F9 or ;  ... クロックダウン (1〜400MHzを1MHz単位で変化)
        F10 or : ... クロックアップ (1〜400MHzを1MHz単位で変化)

・スクリーン

　スクリーンについては特に記述するべきことはありませんが、エミュレータ
一般の話として、現実のPCとはハードウエアの違いが存在します。特にラスタ
のスキャンタイミングや色味は異なるものになります。
　そこで、グリーンモニタの色味はiniファイルで設定可能となっています。
こだわりのある方は好きなだけ設定することが可能です。CONSOLE R/N時で別
々に色設定可能となっており、デフォルトは旧EmuZ-2000の配色です。

　メニュー
        Tools -> Display Color -> Green
        Tools -> Display Color -> Color
                グリーンディスプレイ / カラーディスプレイを選択します
        Tools -> Display Resolution -> 15KHz
        Tools -> Display Resolution -> 24KHz
                ディスプレイのラスタモードを切り替えます。1ドット毎に
                ラスタが入る以外の違いはありません。24KHzは、MZ-2500
                の24KHzモードと考えてください。
                Windows版の8x16フォントは24KHzでしか使うことができませ
                ん。
　ショートカットキー(ALTと併用)
        F4      ... ディスプレイモード切替 (カラー/グリーン)

　MZ-2000ではCONSOLE R時はカラーモニタがブランクになるのですが、
MZ-2200のカラーモニタはブランクになりません。但しリバースもされません。
MZ-2200は2000とこれだけ動作が異なります。これは選択できます。
  MZ-80Bモードのカラーは、グリーンモードを白黒表示させるモードですので、
関係ありません。MZ-2500の80Bモードと同じ動作となっています。

　メニュー
        Tools -> Cons-R Blank Col.
                CONSOLE R時はカラーディスプレイをブランクにします。
                (MZ-2000の動作になります)

　MZ-80B/2000系ではほとんど使われていませんが、多機種にように表示系の
タイミングへアクセスできて、V-BLANK信号を参照可能です。エミュレータで
はV-BLANK信号はCPUの実行時間より計算にて作成しております。
  V-BLANK信号を参照するソフトは多くはないわけですが、いくつかあります。
特に、MILKY WAYは速度をこれで合わせてあるのですが、正常に合わすことが
できず、その合理的理由も見付けられていません。それで、無理矢理合わせた
専用のモードがついています。これがV-BLANK SPECIALモードです。
  SPECIALモードでは周期が短く特殊な動作なのですが、それだけではなく、H
のタイミングが短すぎるため、JELDA IIではダメージを食らった時にループか
ら抜け出せないのでハングアップしてしまいます。

　メニュー
        Tools -> V-Blank Special
                V-Blank Specialモードにします。

・キーボード

　キーボード割り当ては次のようになっています。

        SPACE   = Space, 変換 (Windows版)
        SPACE   = Space, 変換, ひらがなカタカナ (UNIX版)
        TAB     = 無変換, End
        BREAK   = Backspace, Pause
        CLRHOME = Home
        INSTDEL = Insert, Delete
        CURSOR  = CursorとPageUp/PageDown
        カナ    = ESC (Windows版)
        カナ    = 半角/全角, ESC (UNIX版)
        GRPH    = TAB
        SFTLOCK = Control_L/R, CapsLock (Windows版)
        SFTLOCK = CapsLock(英数), Control_L (UNIX版)
                  (但し、ControlはWindow Managerで先に取られていて
                  効かないか不都合がある)
        SHIFT   = SHIFT_L, SHIFT_R
        00      = テンキーの/,テンキーの*
        F10     = F10,F11,F12
                  (UNIX版は、F10はWindow ManagerかGTKのメニューに先に
                  取られているので普通は効かない、XGrabKeyboard()等を
                  使用して改良する予定はない)
  
        ※ テンキーとシフトを同時入力する時はNUMLOCKをOFFにすること
           (Windows版のみ)
        ※ ALT_L/Rはショートカット・キーに使います。
           但し、メニュー表示中等にキーが離された場合、キーリリース情
           報が伝わりません。
        ※ PETTERの高速動作(BREAK+CR等)用にBSをBREAKに割り当ててありま
           す。
        ※ Windows版では、EmuZ-2000 Ver.0.470と異なり、英数キー、半角
           全角、クロールロックやもカナキーが割り当てられていません。
           英数キーや半角全角は離されたタイミングを見ることができない
           ため、対応しているエミュレータでは様々な工夫をしており、同
           様のことはできます。
           しかし、本来のSFTLOCKやカナ以外に、CTRLであったり、ゲームに
           使われていたりするため、トラブルの元ですので削除しました。
           スクロールロックもMZ-2000にLEDはなく、キーボードのLED状態が
           トラブルの元ですので削除しました。LEDのみ制御する手もあるの
           ですがWindowsとしては特殊な使い方であり、物理的なかなロック
           キーがある機種ならともかく、MZはESCのみが自然です。
           SFTLOCKやカナは気にいらない人がいるかもしれませんが、その場
           合は、ALTIMEやChangeKey等のフリーソフトでCTRLと英数/
           CapslockキーやESCとカナを入れ替えることをお勧めします。
        ※ カスタマイズは、カーソルキーのテンキー割り当てと、0の00化等
        　 がUIから可能となっています。英語キーボード用に、TAB/GRPHの
           入れ替え機能がありますが、EndキーはTABのままで固定です。
        ※ 昔のIBM純正キーボードはほぼ全キー同時入力可能なのですが、最
           近のPCのキーボードでは、同時キー入力が3つ以上駄目なものが多
        　 いです。今のThinkpadでも駄目でその時にBeepが鳴るものまで
        　 あります。そういったものでは、斜め移動しながらSPACEキーです
        　 でに3つですのでご注意ください。Z,XとTab,Spaceを入れ替えてX
           使うことで回避できる機種もあります。

　メニュー
        Tools -> Keydef Select -> Cursor keys = 2468
                カーソルキーをテンキーの2,4,6,8へ割り当てます。
        Tools -> Keydef Select -> Cursor keys = [00]135
                カーソルキーをテンキーの00,1,3,5へ割り当てます。
        Tools -> Keydef Select -> Ten key 0 = [00]
                テンキーの0を00にします。
        Tools -> Keydef Select -> ZX <-> TAB/SPACE (Windows版)
        Tools -> Keydef Select -> ZX <-> TABSPACE (UNIX版)
                Z,XとTab,Spaceを入れ替えます。
        Tools -> Keydef Select -> GRPH <-> TAB
                GRPHとTABを入れ替えます。

旧EmuZ-2000/emz2000からの互換性:
　本文を参照してください。

・サウンド

　特に問題なく使用できるようになっており、音声、PWM多重和音を含めてすべ
の音を忠実に再現します。ただし、高周波成分のノイズが大きいので、高周波
カットのフィルタを設定できるサウンドカードでは、10KHz当たりで設定すると
実機と同様の音になります。
  80MHz以上の動作時は、サウンドは強制的にOFFになります。ある程度以上の
速度になると、正常動作しなくなりますのでその対策です。
　残念ながら、再生中のサウンドとエミュレータのZ80が少しずれることがあり、
ずれがある程度大きくなった時には再生ポインタがリセットされます。もっと
も、Windows 7やCore2Duo以降の高速CPUでは設定によりますが、発生頻度は大
変低くなっています。Z80との同期クロックについては、ハードウエア速度設定
ダイアログで変更できます。ただし限界があります。
　サンプリング周波数やピット数、遅延時間等は、Device Configurationダイ
アログで設定します。サンプリング周波数はデフォルトの62KHz付近がMZには適
しています。
　音の遅延時間も同じダイアログで設定できます。再生バッファと遅延時間を
合わせた時間が音の遅れ時間になります。再生バッファ(ms)より、遅延時間
(ms)の方を数倍になるようにして下さい。そうでなければ、毎回リアルタイム
で再生バッファへ出力されてしまうので、必ず音飛びが頻繁に発生します。再
生バッファは、一度にサウンドデバイスへ送られるデータの量です。短くしす
ぎると、今度は間に合いません。値はエミュレータの単位時間(Windows版10ms、
UNIX版20ms)で切り上げられます。
　UNIX版(Linux)では、調整不可能で頻繁にポインタの調整が発生しますし、
再生バッファをかなり大きめにとる必要があります。

　メニュー
        Tools -> Device Configuration
                サウンドデバイスの設定を行います。
                Windows版は、フルスクリーン画面についても設定できます。
        Tools -> Enable Sound
                サウンドを有効にします。(デフォルト)
        FD -> Enable Sound
                サウンドのうちFDの効果音のみをON/OFFします。
                (デフォルト=ON)
        CasTape -> Enable Sound
                サウンドのうちカセットの効果音のみをON/OFFします。
                (デフォルト=ON)
　ショートカットキー(ALTと併用)
        F3      ... サウンドモード切替

旧EmuZ-2000/emz2000からの互換性:
　サウンドは完全に作り直していますので、Windows版は旧
EmuZ-2000 Ver.0.4xxと関連性がありません。UNIX版の旧emz2000はサウンド非
対応なのでこちらについても同様です。
　モード切替の必要もなく、ほぼ完全にエミュレートされています。

・カセットテープデッキ

　カセットテープデッキについては、メモリイメージへのダイレクト転送(強制
IPL起動)と、WAV形式での実機同様のテープ制御サポートの二種類をサポートし
ています。
  MTI/WAV形式はモノラル 8ビットPCMのWindows WAV形式ファイルで実際に実機
のテープ制御をエミュレートしますので、BASIC等の上からでも使用できますし、
IPLからそのまま読み込みできます。ただし、内蔵IPLの場合は、本体付属BASIC
等の、MZ-1Z001MかSB-1520のどちらかのモニタプログラムを含んだファイルが
必要です。詳細はIPL ROMの項目に記述しています。
　IPLからWAV起動する場合、テープをWAV形式で録音すだけで、実機データを簡
単にコンバートできるようになりますので、1本のテープイメージWAVへのメデ
ィアからの吸い上げが簡単になります。実際に分割ロードとAPSSを駆使する
TONKYやMILKY WAYですらそのまま動作しますし、任意位置でのセーブも可能で
す。
　普通に使う機能は全機能をフルサポートしていますし、シュミット・トリガ、
線形保管等によって読み込み可能性も大変よくなっています。11.025KHz以上、
8ビット、1CHのWAV形式でテープ1本丸ごとファイル化しておけば、ほとんどの
場合はそのままで実機同様に使用できます。読み込めないものは、リバースや
ピッチを調整する必要がありますが、現役当時から自分が保管していたテープ
についてはデータレコーダCZ-8RL1を用いて、PCのマイク端子ではなく、ライン
入力端子を用いてWAV化した場合には、1本も調整する必要がありませんでした。
ただし、カセットデッキは古くなっていますので、ベルト交換とケミコン全交
換をしていない場合は、正しく吸出しできないようです。その場合は、スレッ
ショルド調整等でごまかしてなんとかするしかないようです。
　また、MTI/MTW形式でのテープ読み込みで、APSSのみが失敗する場合には、ス
レッショルドの値を小さくしてみてください。
　WAV形式の周波数は任意のものが使用できますが、最低でも、11.025KHz以上
である必要があります。22.05KHzをお勧めします。
　MTI/WAV形式へのセーブはできますが、実機へ書き戻しての読み込みは未テス
トです。Ver.0.90以降では改良されていますが、音声出力回路はサウンドカー
ドやWindows自体がフィルタを入れたり帯域不足を多く発生させて波形を変形し
てしまうので、現在出力されるダイレクトなパルスのままでは難しいと思われ
ます。
　実際に、テープ上へデータ書き換えやセーブを行う場合には、空テープを挿
入しなければならないので、添付のブランクテープファイル(blanktape.wav)を
コピーして挿入します。
　ライトプロテクトノッチの検出は、実際にファイルへ書き込みできるかどう
かとなります。Windowsでは単純に書き込み禁止で判断しますが、UNIXの場合
は、実際にアクセス可能でかつオーナーの読み書き可能属性があるかどうかで
判断します。(root実行時にユーザのファイルは属性に関係なく読み書きでき
るため)
　テープの書き込み中は、データを変更せずにWAITしている区間があります。
その間も実機ではモータが進んでいるのですが、エミュレータではテープが
操作された時にそれまでの作業をまとめて更新しますので、その間はテープ
位置のカウンタが停止しています。余談ですが、この間は出力Hでデータが書
かれていて、変化なしなので、カップリング・キャパシタによって中心へ移
動して実際には無音のセンターになりますが、このセンター領域はMZではLで
す。APSSとロードはこのLを判定します。Ver.0.90以降で正しく再現できるよ
うになりました。
  MZT/MZF/DAT形式がメモリイメージファイルとなっており、ファイル選択と
同時にMZのメモリへ直接転送して0番地から実行します。
  MTW形式はMZT形式とMTI形式を連結して組み合わせたもので、多段ロードの
ソフトウエアで使用できますが、旧EmuZ-2000との互換形式と考えてください。
　MZT/MZF/DAT形式の場合、Ver.0.4xxと異なり、ファイルを指定してもピッチ
とスレッショルドを初期値(60と128)にリセットはしません。ダイアログを開
いてデフォルトを指定する必要があります。MTI/MTW形式の場合は、ピッチや
スレッショルドを格納したデータ形式があり、その場合は値を更新しますが、
それ以外の場合は値を変更しませんので、ユーザが変更した値を指定できます。
　旧EmuZ-2000ではAPSSがありませんでしたので、2回セーブを1回にする等詰
めてデータを作成している場合には読み込みに失敗することがあります。その
場合はFFを無視するオプション、Ignore FFを使用してください。
  テープロード中(セーブ中は除く)のシステムクロックは400MHz動作となりま
すが、Slow/SpeakerがONの時には通常速度になってスピーカーからテープの音
がでます。書き込み時は高速動作は行いません。但し、MTIもしくはMTWの2本
目以降以外ではテープの動作そのものが内部的にありませんので関係ありませ
ん。
　セーブについても同様ですが、GUIから設定できる振幅とセンター、リバー
スが参照されます。ただし、おそらくどれも変更する意味はなく、デフォルト
がよいと思われます。セーブについては、もう一つ、線形補完用のデータを作
成するかどうかを設定できます。これをONにすると実機ではまず読めないデー
タが作成されますが、読み込み時の線形補完でほぼ同じ値になるデータが作成
されます。dB-BASICやdB-BASICのMASKモニタのロードルーチンは、これがONの
データか、セーブ時にピッチを5くらい減らして読み込まなければ読み込めませ
んのでご注意ください。
　WAV以外のデータ形式詳細については、後のリンク集を参照してください。

　カセットテープの動作中はステータスバーに状態が表示されます。進行状況
としてカウンタ値を、メニューからMZ-80B/2000、2500、KBytes、Bytesの4種
類を選択できます。MZ-80B、2000/2200、2500のカウンタをより正確に合わせ
たい場合は、iniファイルを編集することで可能です。ただし、WAVデータのバ
イト数とテープカウンタの進行の関係はリニアではないので、現状で厳密に合
わせることはできません。

　メニュー
        CasTape -> Settings...
                各種カセットテープの設定ダイアログを開きます。
        CasTape -> Speaker/Slow (Windows版)
        CasTape -> Speaker&Slow (UNIX版)
                テープの読み込み速度を1倍にします。同時に、読み込み
                /書き込みの音をスピーカから出力します。
        CasTape -> Counter Type -> ...
                ステータスのカウンタモードを変更します。
                - MZ-2000/2200/80B (Windows版)
                - MZ-2000,2200,80B (UNIX版)
                        実行モードに応じて2000もしくは80Bのカウンタを
                        表示します。
                - MZ-2500
                        MZ-2500のカウンタを表示します。
                - KBytes
                        KBytesでカウンタを表示します。
                - Bytes
                        Bytesでカウンタを表示します。

旧EmuZ-2000/emz2000からの互換性:
　カセットテープデッキは、すべてやりかえました。上位互換性を維持して
いますが、パラメータを多少調整する必要があります。読み込み性能に関し
ては、シュミット・トリガ、バイト間の線形保管等によって読み込み可能性
も大幅に改良されています。
　EmuZ-2000 Ver.0.400preとVer.0.470を比較すると、おそらくピッチが-5さ
れるようになっているような挙動がありますが、Ver.0.90以降のTF-Edition
はそのようにしてありません。それで、Ver.0.4xxで読めてTF-Editionで読め
ない場合には、ピッチを55などの-5した値に設定し、スレッショルドを同じ
138に近い値にすると良い場合があります。
　MZT/MZF/DAT形式の場合、旧EmuZ-2000と異なり、ファイルを指定してもピ
ッチとスレッショルドを初期値(60と128)にリセットはしません。
　旧EmuZ-2000ではAPSSがありませんでしたので、2回セーブを1回にする等詰
めてデータを作成している場合には読み込みに失敗することがあります。そ
の場合はFFを無視するオプション、Ignore FFを使用してください。
　UNIX版の旧emuz2000に関しては、テープには多くの機能がありませんので、
特筆すべきことはありません。

・フロッピーディスクドライブ

　FDの実装は次のようになっています。

  - 対応内容
        ・4つのドライブ
        ・シーク可能なトラックは2D時0-83, 2DD他時0-163
          ※　SHARP MZ-1F07は0-83トラックまでです。
          ※　SHARP MZ-80BF, EPSON TF-20は0-79トラックまでです。
          ※　SHARP MZ-80BFの初期ロットは0-69トラックまでらしいです。
          ※　2D形式は2DD扱いです。
        ・FDC Type-Iコマンド
        ・FDC Type-IIコマンド
        ・FDC Type-IIIコマンドのうち、read addressのみ
        ・FDC Type-IVコマンドのうち、MZで意味のあるForce Interruptのみ
  - 制限事項
        ・以下がfake実装
          - read addressはIDをランダムにリード、CRC値がダミーで固定
          - index holeはランダムに変化する
        ・FDC Type-IIIコマンドのうち、
                write track
                read track
          は動作しません。フォーマットはできません。
	・タイミングが合っていないので、コマンドの多くが高速動作します。

　フロッピーディスクには、他のエミュレータの一般的な仕様と異なる点が一
つあります。EmuZ-2000では、ディスク上のデータ変更がリアルタイムにディ
スクファイルに対して反映しません。メニューのWriteBackを実行や、問い合
わせによって書き換えられるので、知らないうちにファイルが書き換えられて
しまうということはありません。
　タイミングを合わせていないので、シーク音を聞いてわかる通り、高速動作
になってしまいます。連続シーク音はそれなりに調整されています。タイミング
は以下のファイルで変更できます。
　Windows版 disk.c DISK_WAIT_CLOCK
　UNIX版 config2.h DEFAULT_DISKWAITCLOCK
実機では本来関連性がありませんが、メモリウェイトを変更した場合に変更し
なれけばならない場合があり、OSの環境によっても異なります。主にサウンド
ドライバとのディスパッチの影響のようです。最新のLinuxだとWindowsとほぼ
同じパラメータが使用できます。
　ディスクの物理フォーマット(writetrack)はできませんので、ブランクディ
スクはあらかじめイメージ化して用意しておき、コピーして使用する必要があ
ります。
　ライトプロテクトノッチの検出は、実際のファイルへ書き込みできるかどう
かとなります。Windowsでは単純に書き込み禁止属性で判断しますが、UNIXの
場合は、実際にアクセス可能でかつオーナーの読み書き可能属性があるかどう
かで判断します。(root実行時にユーザデータは属性に関係なくアクセスでき
るため) D88形式の場合は、データとしてライトプロテクト属性(一部のツール
にバグがあるため、値は0x01でも0x10でもライトプロテクトと見做します)が
指定されている場合にも、書き込み禁止となります。
　イメージの作成方法ですが、たいていはDITTやPC98用イメージ化ツールで作
成できます。但し、MZのディスクは何故か17セクタでフォーマットされて、17
セクタ目が壊れているというフォーマットです。SHARP製MZ系PCは、開発時期
が古いにもかかわらず社内独自開発だったためか、標準と異なる仕様があちこ
ちに見られます。おそらく、これもMB8877のマルチセクタリードのために必要
と誤解してこのようなフォーマットになったと考えられます。ですから、その
まま吸い上げても動作しますが、あらかじめ別の機種かTF-DOS等でフォーマッ
トだけ行ったディスクにコピーして吸い上げた方が綺麗なイメージになり、イ
メージからディスクへの書き戻しでも問題が発生しにくいです。
　余談ですが、このためにMZのソフトウエアは、88等のuPD765系のコピーツー
ルではかなり強力なコピープロテクトと判断され、コピーに失敗します。
　D88等のデータ形式詳細については、後のリンク集を参照してください。

　メニュー
        FD -> Drive N -> Change...
                ディスクのイメージファイルを選択します。
        FD -> Drive N -> Eject
                ディスクのイメージファイルを取り出します。
        FD -> Drive N -> Writeback
                挿入中のイメージファイルに書き換えがあれば、書き換え
                を実行します。
        FD -> Enable I/F (Windows版)
        FD -> Enable IF  (UNIX版)
                FD I/FのOn/Offを設定します。リセット時のみに反映され、
                IPL ROMの振る舞い等が変わります。

　以下、個別に直接動作しないディスク版ソフトウエア、DITTで吸い上げでき
ないソフトウエアについて記述します。実機でのバックアップは、X1用のNEW 
TYPE V3以降(V2以前は一部駄目かもししれない)を使用することによって、オ
リジナルのままバックアップを取れます。FD自体がいつ壊れるかわかりません
し、すでに耐用年数は超えているはずですから、バックアップは必須です。

　- GRUPPE/SPS  動作状況:パッチにより動作可
　　コピープロテクトを解除してあれば動作します。コピープロテクトの版が
　　複数ある可能性がありますが、手持ちのものは以下の書き換えで動作して
　　います。
    先に80トラックをそのままノーマルコピーしてプロテクトを綺麗に削除し
    てから、以下を書き換えます。書き換え位置はMZ位置ではなく業界標準で
    す。(Surfaceとデータビットが反転) TF-DOSのUtilityで普通にコピーし、
    DUMPコマンドで書き換えできます。(デフォルトのMODE 1が業界標準)

    TrkSctOff From      -> To
    00
       04 +8C CD        -> C7        (X1)
       08 +18 89(FF-76) -> 38(FF-C7) (MZ)
       0B +E2 AF        -> C7        (PC)
    0F 02 +11 CD        -> 01        (PC)
    1F 02 +11 CD        -> 01        (MZ)
    2F 02 +11 CD        -> 01        (X1)

　　※  MZ/X1/88版のどれを購入してもディスクは同じで全機種共通
　　※  ロードエラーの部分をジャンプに書き換えているため、人に見せると
　　　　恥ずかしいので今回まともにしようと思ったのてすが面倒なのでやめ
　　　　ました。中学生の時に初めて書き換えたFDコピープロテクトというこ
　　　　とで。
　　※　ぐるっぺはX1形式のディレクトリです

　- きたへい/SPS  動作状況:パッチにより動作可
　　コピープロテクトを解除してあれば動作します。コピープロテクトの版が
　　複数ありますが、手持ちのものは以下の書き換えで動作しています。
    先に80トラックをそのままノーマルコピーしてプロテクトを綺麗に削除し
    てから、以下を書き換えます。書き換え位置はMZ標準ではなく業界標準で
    す。(Surfaceとデータビットが反転) TF-DOSのUtilityで普通にコピーし、
    DUMPコマンドで書き換えできます。(デフォルトのMODE 1が業界標準)

    TrkSctOff From      -> To
    00 05 +51 CD        -> 01        (X1)
       08 +CE 32(FF-CD) -> FE(FF-01) (MZ)
       0C +C4 CD        -> 01        (PC)
    0F 08 +E4 37        -> AF        (MZ)
       09 +CA 20        -> 18    ... 実機では変更なく動作
          +D6 37        -> 00    ... 実機では変更なく動作
    19 09 +92 D8        -> AF        (PC)
    23 09 +D4 37        -> AF        (X1)

　　※  MZ/X1/88版のどれを購入してもディスクは同じで全機種共通
　　※  Trk:0F Sct:01の頭の方に書かれている文字列のVer.が1.1#2 5C02
　　※  きたへいはTrk:00/Sct:0Eにファイルディレクトリがあり、ファイル名
　　    がビット反転されていますが、各機種のプログラムの位置がわかりま
　　    す。

　- Tonky/SPS  動作状況:動作未確認
　　MZ版は見たことがありません。
　　ディスク版はコピープロテクトを解除すれば動作可能なはずですが、簡単
　　なものであれば動作するかもしれません。

　- Victorious NINEとちゃっくんぽっぷ/NIDECOMCarry 動作状況:動作未確認
　　MZ版は見たことがありませんが、X1版やFM版と同じだと思います。FM版
　　Victorious NINEとX1版ちゃっくんぽっぷはどちらも余分なID異常セクタ
　　がありますが、uPD765系(IBM-PCやNEC-PC)ではこの異常IDは無視されるの
　　で正しくイメージ化できません。
　　書き換えてプロテクトを潰すことで動作可能になるはずです。

　- HYDLIDE II/T&E  動作状況:パッチにより動作可
　　コピープロテクトはDDMと特殊N(セクタ長)だけですが、N異常がMB886x/7x
　　系のみの事情なので、少なくともDITTや98用のコンバータ等のような
　　uPD765系のFDCではまったく吸い上げできません。MB8877系の機種でセクタ
　　長(N)のビットを下位2ビット分以外落として扱います。
　　以下はX1のコピーツール NEWTYPE V3.xの例ですが、難しいプロテクトでは
　　ないので、X1やFMのコピーツールであればどれでも同様のことができるは
　　ずです。

　　    10 REDMAX 5,2:' Restore Heads
　　    20 FOR I=0 TO 79:PRINT I
　　    30 REDMAX 2,1,I:' Read
　　    40 FOR J=0 TO 16
　　    50 POKE&HE804+J*&H10,PEEK(&HE804+J*&H10) AND &H03
　　    60 NEXT J
	70 REDMAX 2,6,I:' Write
	80 NEXT I:REDMAX 6:' Motor Stop

　　これで作成したNのビットを落としたディスクをDITTや98用のコンバータで
　　吸い上げます。続いて、TF-DOSのMZモード(MODE 0)のDUMPコマンド等で以
　　下を書き換えます。

    TrkSctOff From -> To
    00 02 +3B 76   -> 00    ... 実機では変更の必要がない
          +46 76   -> 00    ... 実機では変更の必要がない
          +4E 76   -> 00    ... IDのセクタ長(N)チェック
          +59 76   -> 00    ... 実機では変更の必要がない
          +61 76   -> 00    ... IDのセクタ長(N)チェック

　　※  ユーザディスクは作成できないので、実機で作成して吸い上げて使用
　　　  してください。
　　※  立ち上げて動作することしか確認しておりません。

　- 地獄の練習問題/HummingBird  動作状況:パッチにより動作可
　　コピープロテクトがDuet sector(同じセクタが2つ)なので回転を意識しな
　　いと無理で、そのまま吸い上げても現在のエミュレータのFDC処理では動作
　　しません。吸い上げそのものはditt等でもできるようです。

　　そのまま吸い上げて書き換えてもよいのですが、Duet Sectorによる不安
　　定要因をなくすためにコピープロテクトを解除します。
　　HYDLIDE IIのプログラムを以下のように変更して実行します。総セクタ数
　　を1つ減らすだけです。(MZでの0トラック目(他機種1トラック目)に9番セ
　　クタが2つあります)

　　    50 IF I=1 THEN POKE&HFE86,9:' Sectors 10 -> 9

　　これで作成したディスクをDITTや98用のコンバータで吸い上げます。続い
　　て、TF-DOSのMZモード(MODE 0)のDUMPコマンド等で以下を書き換えます。

    TrkSctOff From -> To
    00 09 +00 01   -> B1    ... 後ろの方のセクタが重要で中身は全部B1
　　　　　　　　　　　　　　　　(4Eの反転)です。0バイト目のみをチェッ
　　　　　　　　　　　　　　　　クして、ゲーム途中でランダムにコピー禁
　　　　　　　　　　　　　　　　止画面が出ます。

　　※  ユーザディスクは物理フォーマットを行わないので作成できます。
　　※  立ち上げて動作することしか確認しておりません

　他のソフトウエアは全部動作すると思いますが、MSA CP/Mの古いFDD I/F
MZ-8BFIのみで動作し、新しいMZ-1E05で動作しないタイプのものは駄目かもし
れません。(現物なしのため動作未確認、Rev.1.1.1以前のものが対象のはず)

・クイックディスクドライブ

　クイックディスクのプラグインが存在する場合は、クイックディスクを使用
できます。プラグインが存在しない場合は、メニューはグレーになり、ステー
タスは表示されません。
　メニューインタフェース以外の実装はプラグイン側にあり実装の進捗につい
てもプラグイン側次第となります。詳細はクイックディスク・プラグイン
(MZ-1E18+MZ-1F11)を参照してください。

　メニュー
        QD -> Change...
                QDのイメージファイルを選択します。
        QD -> Eject
                QDのイメージファイルを取り出します。

・フルスクリーンモードとウインドウリサイズ

Windows版:
　ウインドウリサイズできますが、x1/x2サイズ以外では画面更新処理が重く
なります。Pentium III以前の古いPCやグラフィックカードの画面モードによ
っては使用する時に注意が必要です。
  また、x1/x2モード以外では、表示モードが15KHzの場合にラスタが乱れます。
  フルスクリーンモードは、旧EmuZ-2000とまったく違い、普通のアプリケー
ションとして動作します。
　メニュー/ステータスバー/カーソルは右クリックでON/OFFできますし、左ク
リック時にも表示されていない場合は表示します。
  フルスクリーンモードは、解像度で設定した解像度が選択されますが、その
解像度が使えるとは限りません。使用できない場合は、すぐにウインドウへ戻
ってしまいます。デフォルトはAUTOですが、その時は、640x480、800x480、
960x600、800x600を順に選択し、どれも使用できない時は諦めます。
　640x480以外の時は、StretchBltによる拡大表示になりますので、24KHz表示
モード以外では大変汚い表示になりますし、24KHz表示モードでもMZで多用さ
れているディザやタイリングは、ディスプレイとの相性でほとんどの場合は汚
くなってしまいます。ディスプレイの最大解像度の場合は、綺麗になる場合が
多いですが、1280x1024等では速度的に実用的ではありません。
　モニターの選択は現在はできません。設定ダイアログではグレーになってい
て選択できません。本エミュレータはVer.1.00までは旧EmuZ-2000と同じ動作
環境かつ開発環境にします。したがって、DirectX 3対応のため、マルチモニ
タに対応できません。
　Windows XPの一部で、元のウインドウに戻った時に1s遅れてフルスクリーン
サイズに設定される環境があるので、その時のために、1.5s後に再度スクリー
ンサイズを設定するようになっています。この間はフルスクリーンへの変更が
できませんのでご注意ください。(2000/XPのみ)

Unix版:
  フルスクリーンモードや、ウインドウリサイズに対応していますが、画面サ
イズを大きくすると速度が遅くなり、1280x1024になるとかなり高速なCPUでな
ければうまく動作しません。少なくともCore i5はOKですが、Pentium 4やATOM
では無理でした。また、その場合には、メニュー操作やウインドウメッセージ
が一切効かなくなる場合があります。
  あらかじめ、どのくらいの大きさまで使用できるか、端末から起動する等
Ctrl+Cで止めることができる環境で確認してください。
  特にフルスクリーンモードは注意が必要です。Windows版と違って画面解像
度が落ちないのでいきなりメニュー関係の操作が効かなくなります。ATOMや
Pentium 4程度ではまず使えないと考えてください。
  したがって、起動直後のデフォルトでは固定画面となっています。
  また、x1/x2モード以外では、表示モードが15KHzの場合にラスタが乱れます。

　メニュー
        Tools -> Device Configuration
                Windows版はフルスクリーン画面を設定できます。
                (サウンドの説明でも記載があります)
        View -> Window Size x 1
                ウインドウを640x400にします。
		UNIX版の場合は、更にサイズ固定になります。
        View -> Window Size x 2
                ウインドウ縦横2倍(1280x800)にします。
		UNIX版の場合は、更にサイズ固定になります。
        View -> Window Full Screen
                Full Screenモードにします。
        View -> Window Size Free (UNIX版のみ)
                ウインドウサイズを可変自由なモードにします。
                一度640x400に設定され、これが最小サイズとなります。
                可変モードにしなければ、最大化やフルスクリーンは選択で
                きません。
        View -> BG Aero Glass (Windows版のみ)
                Windows Vista以降のAero Glassが使用できる場合は、バッ
                クグラウンドをAero Glassへ変更します。

・ステートセーブ

　ステートセーブは、.mze形式で、emuz形式非互換です。Windows版32ビット
バイナリのみでemuz形式をインポートできるようになっています。
　アーキテクチャ固有で、今後変更になってデータ非互換になるかもしれませ
ん。なるべく過去のものが読み込めるように配慮する予定ですが、保証はあり
ません。64ビット・バイナリと32ビット・バイナリでも互換性がありません。
(Windows版は現在32ビット・バイナリのみの提供です)
　Windows版では、アプリケーションの拡張子による関連付けも行われますが、
VISTA以降のWindowsでは、一度エミュレータを管理者権限で起動させる必要が
あります。
　ただし、以下の機能はステートセーブ機能の対象外です。
　- カセットテープデッキ
　- フロッピーディスクドライブ
　- クイックディスクドライブ・プラグイン (MZ-1E18 + MZ-1F11)
　- プリンタ・プラグイン (MZ-1E08 + プリンタ)
　- 外部記憶メモリ・プラグインのメモリ内容 (MZ-1R12やPIO-3034)
　emuz形式インポート時は、タイマ(8253)とキーボード割り込みがサポートさ
れていません。少なくともタイマはデータがないので、旧EmuZ-2000でもサポ
ートされていないと思われます。また、キーボード割り込みを使用したソフト
ウエアはPOLAR STAR II以外に見つかっていません。

　メニュー
        File -> State Load...
                ステートファイルを読み込みます。
        File -> State Save
                ステートファイルを保存します。すでにファイルが指定され
                ている場合は上書きします。
        File -> State Save As...
                ステートファイルを保存します。すでにファイルが指定され
                ている場合に関係なく名前を上書きします。
                動作しているアプリケーションが変更になっても、ファイル
                名は変更されませんので、タイミングが必要な用途で何度か
                トライするなどでなければ、通常はSave Asを使用します。
　ショートカットキー(ALTと併用)
        F8      ... ステートセーブ
                    上記メニューのState Saveが対応します。

旧EmuZ-2000/emz2000からの互換性:
　ファイル形式の互換性はありません。拡張子も変更しています。
　プラグインへも対応しています。
　Windows版32ビット環境のみで旧形式を読み込んでインポートすることができ
ます。

・プラグイン

　プラグイン機能は、MZ本体の拡張I/Oポート機能に当たり、拡張ボードのよう
に拡張機能をDLLで自由に追加することができます。
　実際に使用する場合には、自動生成されたiniファイルへ手動で設定を追加す
る必要があります。iniファイルの書式は、以下のとおりです。

------------------------ ここから -----------------------------------
[Plugin]
0=emuz_1m03.dll
1=MZ_1e08.dll
2=MZ_1e18.dll
;3=MZ_1r12.dll
4=MZ_1r13.dll
5=pio-3034.dll
------------------------ ここまで -----------------------------------

　プラグインDLLは16個まで登録でき、IDは0オリジンで、順番になっている必
要はありません。
　また、プラグインは、iniファイルへ自動的に個別記録情報を追加します。

　メニュー
        Tools -> Plugin Settings...
                プラグインのダイアログを開きます。

旧EmuZ-2000/emz2000からの互換性:
　旧EmuZ-2000とはソースプログラム・レベルでの互換であり、バイナリプロ
グラムは使用できません。TF-Edition用のSDKを使用してコンパイルしなおす
必要があります。ただし、公開されているプラグインのほとんどは移植してバ
イナリを提供しています。
　設定ファイルの記述方法が異なりますし、ダイアログも異なります。

・スクリーンショット (UNIX版のみ)

  これはUNIX版のみの機能です。
  GIF形式とBMP形式に対応しています。拡張子が.gifの時にGIF形式で保存さ
れ、それ以外の時にBMP形式になりますが、BMP形式の時は24ビットフルカラー
で保存されてしまいます。(libungif未使用時はBMPのみ)
  MZの場合1画面の区切りが曖昧で、MZのほとんどのソフトがV-Blankを参照す
らせずに動作しますので、Pauseを使って都合の良い画面をスクリーンショッ
トとして保存する使い方となります。

        File -> Screen Shot...
                スクリーンショットをファイルにセーブします。

・MZ-80B/2000/2200について

　MZ-80B/2000/2200については回路図もモニタプログラムやIPLのソースリスト
もマニュアルにて公開されています。一見すべての情報が揃っているように見
えます。
　しかし、実際にはI/Oデコードやアクセスタイミング、ビデオ制御が独自カス
タムチップなので、エミュレータの実装として肝心なところがよくわかりませ
ん。また拡張ボードはボード添付のマニュアルに記載されているものもありま
すが、回路が公開されていないものが多いのか私が持っていないだけなのかは
わかりませんが、今更入手不可能です。
　わかっている範囲では以上のようになります。

  1.　80B/2000のI/Oポート 0xF0について (0xF0〜0xF3は未デコードで同じ)
　　　完全な隠し機能で回路図を見てもI/O説明を見てもわかりませんが、MZモ
　　　ニタのタイマルーチンで使われています。
　　　回路図ではカスタムチップにCLR#と書かれていて、8253のG0/G1に接続さ
　　　れています。8253はモード2でカスケード接続なのでタイマのクリア信号
　　　です。MZ-2500付属マニュアルのI/O説明に記載があります。
　2.　PORT E0/E2のIPLリセットやテープのパルス出力は一瞬の変更だと有効に
      ならない。IPLリセットはチャタリング除去の時定数を通るのがその理由
      (RESETはカスタムチップのNSTへ接続されているので違う)
　3.　80BのポートF5〜F7について
　　　F4〜F7でデコードされていませんのでF4と同じです。
  4.　IPL ROMはM1サイクルで1WAIT
　　　IPL ROMのプログラムは、このWAITに依存します。特にカセット。
　5.　G-RAMアクセスのCRTCとCPUの競合について
　　　CRTC優先のみで高速書き込みモードのようなものはありません。
　　　驚いたことに特定のラスタスキャン中はずっとウエイトです。
  　　テキストV-RAMも同様のはずですが、WAITはずっと少ないのか、書き込み
　　　量が少ないからか、実質的には影響がほとんどないようです。
　　　詳細なタイミングも実機を調べて調査できないことはないのですが、現
　　　状で問題ない程度に解決されているのと、かなり面倒ということもあっ
　　　て、行う予定はありません。
　6.　現在わかっている範囲でのI/Oマップ。

　　　　PIO-3034 EMM            A0-A3 or A4-A7 or A8-AB or AC-AF
　　　　MZ-8BI03/1E24(シリアル) B0-B3
　　　　MZ-1R13(漢字ROM)        B8-BB (PIO-3055/3055-01も同じ)
　　　　MZ-8BI04(GP-IB)         C0-C5
　　　　MZ-1E18(QD)             D0-D3 and F8-F9 (BOOT ROMは1R12扱い)
	MZ-1M01(16BIT/Z80PIO)	D4-D7
　　　　MZ-8BFI/1E05(FD)        D8-DD
　　　　本体(8255)              E0-E3 (カセット/ディスプレイ/サウンド)
	本体(8253)              E4-E7 (内蔵時計)
	本体(Z80PIO)            E8-EB (メモリ/ディスプレイ/キーボード)
　　　　MZ-80MCB/MCR            EC-ED (マークリーダ)
	本体(8253)              F0-F3 (内蔵時計8253のクリアのみ)
	本体(カスタムチップ)    F4-F7 (グラフィック/2000のみカラー)
　　　　MZ-1R12(S-RAM)          F8-FA or 00-02 or 04-06 (PIO-3030)
	MZ-?(PTP/PTR)           FC-FD (パンチカード?)
　　　　MZ-1E08/04(Printer)     FE-FF (MZ-8BP5I,PIO-3050も同じ)
　　　　MZ-8BI01(Universal I/O) 幅広く設定可能


○ 権利

　本ソフトウエアはフリーソフトウエアです。使用方法に制限はありませんが、
無保証で何の責任も負いません。
　ただし、以下については元々フリーソフトウエアでかつ公開されていたもの
ですが、ライセンスの詳細が不明であり、作者に許可を取ってもいませんので
ご注意ください。なお、EmuZ-2000に関しては、公開ソースを元にUNIX版を開発
することについては、ソースが公開される前に許可をもらっていました。

  - EmuZ-2000 Ver.0.400リリース候補版 (BMPフォントファイル含む)
  - EmuZ-2000 Ver.0.470から取り出したアイコン
  - X-Millenniumから拝借したFDシークの効果音

　Windows版のGUIやDirectX等の画面周りがEmuZ-2000のコードベースです。プ
ラグインやステートファイルのインポート機能も互換のためにコードが使用さ
れています。それ以外には、Z80コアのバグフィックス以外は残っていないは
ずです。UNIX版は後者とプラグインインタフェースのみとなります。これは、
公開されていてベースとしたEmuZ-2000のVer.0.400リリース候補版以降に多く
のバグが修正されていること等が理由で、エミュレータとしての完成度を上げ
た結果、結果的になくなってしまったことにあります。
　また、本体以外のプラグインについては、作者がバラバラですので更にやや
こしくなっております。


○ 関連リンク

http://www5d.biglobe.ne.jp/~object/
        ... MZ-80B/2000エミュレータ EmuZ-2000 for Windows
http://www.bio-linux.org/~kasukawa/
        ... 粕川さんのサイト MZ-2000/2200エミュレータ
            emz2000 for X11 gtk+が昔あった
            (http://biojoin.org/~kasukawa/linux/mz2000.html)
http://www.sharpmz.org/tonyfrieryemu.htm
        ... 海外製のMZ-80Bエミュレータ for Windows
http://www7a.biglobe.ne.jp/~tsuneoka/MZ/index.html
        ... Win32サブルーチンズ内の「ダウンロード」、
            (プラグイン機能、INIファイル、QDプラグイン他開発の常岡さ
            ん。ツール(2000用tapeload.exe他)、自作ソフト等)
http://www.geocities.co.jp/SiliconValley-Sunnyvale/2521/
        ... アルゴの記憶 (プラグイン、ツール、MZT/MZFの説明等
            ただし、ここのMZFは海外MZ-80Bエミュレータとは違うみたい…)
http://www.ne.jp/asahi/suga/junkyard/
        ... sugaのジャンク部屋 (プラグイン等)
http://www2s.biglobe.ne.jp/~kachan/index.htm
        ... ぎょっちの趣味のページ (テープイメージ化ツールと解説
            ただし、TF-EditionにはAPSSがあるので1回セーブにしないこと)
http://mio.servequake.com/~takky/emuz2000/
        ... TakkyさんのEmuZ-2000のページ
            (ステートセーブデータ書き換えツール)
http://www.retropc.net/mz-memories/mz700/
        ... MZ700WIN for Windows
            (MZ700WINとmz700em、コンバータtapeload.exe、MZT形式
            ただし、ボーレートが違うので多分常岡さんのがいいと思いま
            す)
http://www.retropc.net/cisc/m88/
        ... M88 emulator
            (Download-その他にディスクイメージ化ツールditt)
http://www.jsdi.or.jp/~imp/
        ... 自作ソフトのお部屋 (D88 Utility等)
http://www1.plala.or.jp/aoto/
        ... ぶるー牧場 (D88形式データの仕様)
http://homepage3.nifty.com/mzakd/ 
        ... AKD's site (MZ-1500のサイトですが、MZ-2000/2200のカタログ
            有、クイックディスク、プリンタ等の共通オプション情報が詳
            しい)
http://cwaweb.bai.ne.jp/~ohishi/index.htm
        ... Nibbles lab. HomePage
            (MZ版システムはないが、S-OSの各種ソフトウエア)

※　MZF形式ですが、海外MZ-80Bエミュレータの場合はMZTと同じです。
　　mz700emの物は違うのかもしれません。(アルゴの記憶参照。当方未確認)
　　但し、MZ700WINのMZTにはパッチ情報が追加されています。
※　DAT形式はファイルサイズ分の0番地からのメモリイメージで、 
　　MZ700WIN添付のtapeload.exeが出力する本体部分がそのまま利用できま
　　す。但し、標準のtapeload.exeは1200bpsですので、オプションパラメ
　　ータ指定するか改造された2000bpsのものを使用します。
※　2D形式は320KB(80トラック16セクタ256バイト)のベタファイルで、古い
　　X1エミュレータでも使用されています。
※　TF-EditionではAPSSがありますので、テープイメージの2回セーブを1回
　　にしたり空白を詰めるのはやめてください。互換のためにFFを無効にす
　　るオプションがあります。


以上
