------------------------------------------------------------------------------

  FM-7 EMULATOR XM7 (V3.4L77SX+z09 - Final Release)

  for Win32
  Copyright (C) 1999-2020 ＰＩ．
  Copyright (C) 2001-2020 Ryu Takegami

------------------------------------------------------------------------------

□はじめに

  XM7は、1982年に富士通より発売された8bitパーソナルコンピュータFM-7シリーズを仮
  想化・再現する、エミュレータと呼ばれるソフトです。

  FM-7は「究極の8bitMPU」6809を2つ搭載したホビーパソコンで、FM-8の後継機種とし
  て登場しました。FM-7がベストセラーとなった後、FM-77→FM77AV→FM77AV40と拡張
  を続け、1988年発売のFM77AV40SXをもってシリーズ終了となっています。

  このバージョンでは、FM-7シリーズの最上位機種にあたるFM77AV40EX/SXのエミュレ
  ーションを行ないます。従ってFM-7,FM77AV,FM77AV40等への下位互換性を持ちます。


□著作権

  XM7はＰＩ．および、たけがみりうが著作権を所有するフリーソフトウェア(※)です。
  無償かつ書庫を改変しない場合に限り、再配布は原則として認めます。ただし、実行
  ファイルを改変して他の言語に対応されたもの等についてはSNS等での画像公開や再配
  布は一切認めません。

  ROMファイルについては著作権者の意向に従ってください。なお、同梱のSAVEROM2は
  ROMデータを個人的に利用するために作成されており、いわゆる違法配布を助長もし
  くは幇助するものではありません。
  特に、ROMデータを同梱、あるいは在処を示す形での再配布は絶対に認めません。

  なおPSG音源、FM音源合成部はPC-88エミュレータ「M88」に搭載されているOPNエミュ
  レータ「fmgen」をベースとしています。この部分の著作権はM88の作者であるciscさ
  んに帰属します。
  (FM Sound Generator, OPN Interface, PSG Sound Implementation:
        Copyright (C) cisc 1998-2003.)

  アイコンファイルの一部は天丸さんによるもの、およびそれをベースにしたものを使
  用させていただいています。

  ROMEO対応処理のソースはうささんに提供していただきました。
  プリンタ対応処理のソースはXM7LP開発者のBen.JPさんに提供していただきました。
  CPUコアの再現性向上にはVM7開発者のkeisukeさん、XM7dash開発者のトマさんのお二
  人に協力していただきました。

  ※ここでいう「フリーソフトウェア」というのは、the Free Software Foundation(FS
    F)のRichard Stallman氏が提唱する「自由なソフトウェア(Free Software)」のこと
    ではなく、パソコン通信時代から日本国内で言われていた「無償のソフトウェア(G-
    ratis Software)」に近いもの、いわゆる「フリーウェア」の類いになります(当然
    ですが、これはStallman氏の意見を否定するものではありません)。
    ですが、これはこれでどうも単に「使用者は何をしても構わない無料のソフト」と
    勘違いされて誤解を生むようですが(20年近く前に某CRICがこの件で豪快にやらかし
    てましたが、最近PDFを残したままWebサイトは削除されたようです)、それも違いま
    すので念のため。


□ライセンスについて

  ライセンスについて補足説明します。
  これについては、XM6のライセンスにほぼ準拠しています。

  ・XM7は著作権を放棄したソフトウェアではありません。

    ここで言う「フリーソフトウェア」を再度簡単に定義すると、"作者が著作権を保持
    したままで、一定の条件の下で無償配布を許諾したソフトウェア"ということです。
    すなわち使用・配布・販売・改変など、すべての事について作者は著作権を行使で
    き、第三者が勝手に扱うことはできません。

  ・XM7を使ったことに対して起きたすべての事に対して、何ら責任を負いません。

    XM7はあるがまま"AS IS"で配布されるソフトウェアです。つまり、使用者が受けた
    あらゆる損害に対して、作者は一切責任を持ちません。また、ソフトウェアに不備
    もしくは不具合があったとしても、作者はそれを修正する責任もありません。

  ・雑誌/書籍での紹介や付属CD-ROMによる配布は、事前の許諾が必要です。

    XM7を雑誌で紹介したり、バイナリを雑誌付録のメディアで配布したいと考える方は
    事前に連絡を取ってください。ただし現在のところ、雑誌または書籍への掲載は私
    と個人的につながりがある方を除き、すべてお断りしています。

  ・「作者も有名になるし、多くの人に使ってもらえるから喜ぶだろう」という安易な
    考えを持たないでください。

    私は名前が売れる(有名になる)必要はありません。また会ったことのない、メール
    をやりとりしたことのない人がユーザとして増えることは負担こそあれ、嬉しいこ
    とは何ひとつありません。もっと言うとXM7は私が個人的に、私が使うために作った
    私のためのソフトウェアです。他の人がどのように感じようが、私が満足できれば
    それで良いのです。


□前バージョンからの変更点

  XM7 V3.4L77SX+z08→V3.4L77SX+z09の変更点一覧です。

  <修正>
    ・Windows10での運用時にSXGAフルスクリーン時・整数倍拡大設定時にステータスラ
      インがちらつく問題を修正
    ・Windows10での運用時にSXGAフルスクリーン時において画面下部にインジケータ部
      の上部に白帯が表示される問題を修正
    ・RS-232CポートエミュレーションでポートとしてCOM10以降を指定するとエラーが
      発生する問題を修正
    ・POVのないジョイスティックを使用していると上方向が押しっぱなしになる問題を
      修正


  XM7 V3.4L77SX+z07→V3.4L77SX+z08の変更点一覧です。

  <変更>
    ・MAGUSパッチのデフォルト値をONに変更(Lizard(ディスク版)では特に影響がない
      ようなので)
    ・その他、(毎度のことではありますが)ドキュメントに若干の加筆修正を行なった


□動作環境

  Win32系OS(Win95/Win98/WinMe/WinNT4/Win2000/WinXP/WinVista/Win7/Win8/Win8.1/Wi
  n10)+DirectX3以降で動作します。ただし、以下の制限事項があります。

  ・Windows95/98/Me/NT4.0/2000/XP/Vista/7/8/10(Ver.1507/Ver.1511/Ver.1607/Ver.1
    703/Ver.1709/Ver.1803)はマイクロソフト社のサポートが既に終了しています。
    セキュリティ上のリスクを理解したうえでご利用ください。

  ・Windows95の初期リテールバージョン(Build 950)推奨しません。
    Service Pack 1の適用もしくはOSR2以降をお勧めします。

  ・WindowsMeは激しく推奨しません。
    理由はお察しください。

  ・WindowsNT4.0ではService Pack 3以降が必須です。

  ・Windows Vistaの初期リテールバージョン/Service Pack 1は推奨しません。
    Service Pack 2以降の適用をお勧めします。

  ・WindowsNT系(NT4.0、Win2000、WinXP、Vista、Win7、Win8、Win8.1、Win10)では一
    部キー入力に制限があります。問題がある場合はXM7のキーマップ設定機能を使い、
    キーボードの再割り当てを行なって下さい。

  ・ROMEO対応機能を使用するには、柏野 政弘さん作のpcidebug.dllが必要です。
    pcidebug.dllはXM7のアーカイブに含まれていないので、柏野さんのサイト「ガジマ
    ルの森」(http://www.otto.to/~kasiwano/)からダウンロードして、pcidebug.dll(N
    T系OSではpcidebug.sysも)をXM7.exeと同じフォルダに置いてください。
    ※WindowsVista以降のOS上でのROMEO対応はサポート対象外とさせていただきます。
    ※64ビット版OSではROMEO対応機能は使用できません(ゆいさん作のx64対応版pcideb
      ug.sysが使えるかもしれませんが保証はできません)。

  ・SCCI対応機能を使用するには、XM7をWindows7以降のOSで動作させる必要があります。
    また、別途SCCI.DLLが必要となります。SCCI.DLLはXM7のアーカイブに含まれていな
    いので、「がし3」さんのサイト(http://www.pyonpyon.jp/~gasshi/fm/index.html)
    からダウンロードし、SCCI.DLLをXM7.exeと同じフォルダに置いてください。
    ※SCCI.DLL 2018/12/20版以降で対応したC86CTL(G.I.M.I.C)対応機能については、
      現時点ではXM7 TypeRでは保証外となりますが普通に動くようです。

  ・Windows10上での動作確認はBuild 17763(Ver.1809,October 2018 Update),Build 18
    362(Ver.1903,May 2019 Update),Build 18363(Ver.1909,November 2019 Update)に
    て行なっています。


□仮想マシン

  XM7 V3が提供する仮想マシン(Virtual Machine:以下VM)の仕様は以下の通りです。

    FM-7, FM77AV, FM77AV40EX (3種類から選択) + オプション機器

  最大構成での仕様をあげると次のようになります。

    プロセッサ     6809(MC68B09E相当品 クロック2.0MHz)×2
    RAM            メインRAM 192KB、サブRAM 32KB、ビデオRAM 192KB
                   増設RAMカード 768KB
    ROM            F-BASIC ROM 32KB、イニシエータROM 8KB
                   サブモニタROM 32KB、拡張サブモニタROM 48KB
    漢字ROM        JIS83準拠第1水準漢字・第2水準漢字・非漢字 256KB
    辞書ROM        OASYS-Liteベース、256KB
    辞書学習RAM    スタティックRAM 8KB (バッテリーバックアップ)
    表示能力       640x200ドット     8色 4面
                   640x400ドット     8色 2面
                   320x200ドット  4096色 2面
                   320x200ドット262144色 1面    から選択
    フロッピー     640KBフロッピーディスクドライブ×2 (320KBとしても使用可)
    テープ         FSK方式にて記録、約1600bps
    サウンド       BEEP音
                   標準FM音源(YM2203)
                   WHG増設FM音源(YM2203)
                   THG増設FM音源(YM2203)
    その他         論理演算・直線補間LSI、DMAコントローラLSI、時計LSI、RS-
                   232Cインタフェース(ソフトウェアボーレート設定対応)など
    オプション機器 インテリジェントマウス(MSXマウス)、マウスセット(FMマウス)、
                   MIDIアダプタ、シリアルドットプリンタ、ジャストサウンド


□ROMファイル

  XM7.exeを起動するためにはFM77AV40/EX/SXのROMをファイル化したものが必要です。
  FM77AV40/EX/SXの実機をお持ちでない方は使用できませんのでご注意ください。
  また、FM77AV40のROMには拡張サブモニタ(EXTSUB.ROM)が含まれていないので、別途配
  布しているMKEXTSUBユーティリティが必要です。

  次にあげるファイルを添付のSAVEROM2ユーティリティ・別途配布しているMKEXTSUBユ
  ーティリティを使用して各自準備してください。
  MKEXTSUBはFM77AV40専用のF-BASIC V3.4のシステムディスクから拡張サブシステムRO
  Mファイル(EXTSUB.ROM)を抽出するために使用します。FM77AV40EX/SXをお持ちの方は
  SAVEROM2ユーティリティでEXTSUB.ROMが作成されるため、MKEXTSUBは不要です。

  なお、動作機種による漢字フォントの切り替え対応のため、JIS83準拠第1水準漢字ROM
  フォントのファイル名がこのバージョンから「KANJI.ROM」から「KANJI1.ROM」に変更
  されたので、V3.4L40以前を使用されていた方はリネームを行なってください。
  (再度SAVEROM2ユーティリティを使用してROMデータを取得する必要はありません)

  ファイル名    サイズ  CPU    物理アドレス

  FBASIC30.ROM  32768  メイン $38000-$3FFFF (※)
  INITIATE.ROM   8192  メイン $36000-$37FFF
  KANJI   .ROM 131072         JIS78準拠第1水準漢字・非漢字 (なくても起動します)
  KANJI1  .ROM 131072         JIS83準拠第1水準漢字・非漢字
  KANJI2  .ROM 131072         JIS83準拠第2水準漢字
  DICROM  .ROM 262144  メイン $2E000-$2EFFF (64バンク)
  SUBSYS_A.ROM   8192   サブ  $1E000-$1FFFF
  SUBSYS_B.ROM   8192   サブ  $1E000-$1FFFF
  SUBSYS_C.ROM  10240   サブ  $1D800-$1FFFF
  SUBSYSCG.ROM   8192   サブ  $1D800-$1DFFF (4バンク)
  EXTSUB  .ROM  49152  メイン $2E000-$2EFFF (12バンク)
  BOOT_MMR.ROM    512  メイン $2EE00-$2EFFF (なくても起動します)

  ※FM77AV40EX/SXから抽出した場合のみこのサイズ/物理アドレスになります。
    FM77AV40から抽出した場合は31744バイト($38000〜$3FBFF)となります。

  ROMファイルはXM7.exeと同じディレクトリに配置してください。
  これらのROMファイルが不足していると「仮想マシンを初期化できません(以下略)」と
  表示され、XM7は起動しません。このメッセージが表示される場合、サイズが不足して
  いないか、また不足しているファイルがないかを確認してください。

  ※INITIATE.ROMについてはXM7起動後に、メモリ上でパッチを当てています。これ
    は次の4点を改良するためのものです。

    1.フロッピーディスクドライブのモータ回転待ちを省略する。(初期化時)
    2.機種判別用ID・ブート処理をFM77AVまたはFM77AV40EX相当に設定。(リセット毎)
    3.起動モード別にブート処理の変更を行なう。(リセット時)
    4.FM77AV40/20以降のイニシエータROMでフロッピーディスクを挿入しないで起動し
      た際にドライブ番号入れ替え機能が有効になってしまう現象への対処を行なう。
      (初期化時)

  ※KANJI.ROMがなく、KANJI1.ROMのみ存在する場合、FM-7モード/FM77AVモード時に
    KANJI1.ROM/KANJI2.ROMをベースにしたJIS78準拠エミュレーションを行ないます。
    なお、KANJI.ROMは添付のSAVEKNJユーティリティで作成することが可能です。
    (SAVEKNJユーティリティは拡張サブモニタROMのないFM77AV40では使用できません)


□SRAMファイル

  FM77AV40/EX/SXでは辞書学習用のSRAMファイルを備えており、変換を行なうたびに学
  習結果が書き込まれます。これはバッテリーバックアップされているため電源を切っ
  ても内容が保持されます。

  XM7では"USERDIC.DAT"というファイルを用いてこの動作をエミュレーションしていま
  す。起動時にこのファイルがなければ新規作成し、終了時に書き戻しています。


□コマンドライン

  コマンドラインオプションは以下のとおりです。

  XM7 <ファイル名> [<ファイル名>...]

  ディスクファイルは有効なものを2組まで、テープ/ステートファイルは1つだけ指定
  できます。
  コマンドラインオプションは、ファイルの拡張子によって動作が変わります。以下に
  拡張子別の動作を記します。

  .D77/.2D/.2DD/.VFD ディスクファイルをマウントし、VMをリセットします。
  .T77               テープファイルをマウントします。リセット動作は行ないません。
  .XM7               ステートファイルをロードし、セーブした時点から再開します。
  その他             何も行ないません。

  ステートファイルを指定した場合、他のファイルは全て無視されます。
  ディスクファイルとして.D77ファイルを1つだけ指定した場合、ドライブ1には2番目の
  メディアが(存在すれば)マウントされます。

  コマンドラインを持ってXM7を二重起動すると、先に存在するインスタンスにファイル
  名を渡します。


□ドラッグ＆ドロップ

  XM7のウインドウに対して有効な拡張子のファイルをドラッグ＆ドロップすることによ
  り、以下の操作が可能です。

  ・ディスクファイルをドラッグ＆ドロップすることで、ディスクをマウントし、VMを
    リセットします。ステータスバーのアクセスランプ部分を除くウインドウ領域に対
    して有効です。

  ・ディスクファイルをステータスバーのアクセスランプ部へドラッグ＆ドロップする
    ことで、指定されたドライブにディスクをマウントします。

  ・テープファイルをドラッグ＆ドロップすることで、テープをマウントします。ウィ
    ンドウの全領域に対して有効です。

  ・ステートファイルをドラッグ＆ドロップすることで、ステートデータをロードし、
    セーブした時点から再開します。ウインドウの全領域に対して有効です。


□キーボード

  キーボードは基本的にFM77AV準拠ですが、一部特殊キーの扱いが異なります。

  ここにあげる設定はデフォルトのものです。全てのキー割り付けはキーボード変換設
  定機能により変更できます。

  ☆日本語106キーボードの場合

    FM-7 [BREAK]     → JP106 [ESC]
    FM-7 [ESC]       → JP106 [半角/全角]
    FM-7 [CTRL]      → JP106 [Ctrl(左)]
    FM-7 [CAP]       → JP106 [CapsLock]
    FM-7 [GRAPH]     → JP106 [無変換]
    FM-7 [かな]      → JP106 [Ctrl(右)]
    FM-7 [SPACE(左)] → JP106 [変換]
    FM-7 [SPACE(中)] → JP106 [ひらがな]
    FM-7 [SPACE(右)] → JP106 [SPACE]
    FM-7 [INS]       → JP106 [Insert]
    FM-7 [DEL]       → JP106 [Delete]
    FM-7 [EL]        → JP106 [Home]
    FM-7 [CLS]       → JP106 [Page Up]
    FM-7 [DUP]       → JP106 [End]
    FM-7 [HOME]      → JP106 [Page Down]

  テンキー部は0〜9の数字キーに加え、JP106に存在する[/][*][-][+][.]の各キーを
  FM-7のキーに対応させています。

  その他[Alt]([F10])でWin32メニューを呼び出し、[F12]でリセットがかかります。


  ☆NEC PC-9801キーボードの場合

    FM-7 [BREAK]     → PC-98 [COPY]
    FM-7 [CAP]       → PC-98 [CAPS]
    FM-7 [かな]      → PC-98 [カナ]
    FM-7 [GRAPH]     → PC-98 [NFER]
    FM-7 [SPACE(中)] → PC-98 [XFER]
    FM-7 [SPACE(右)] → PC-98 [SPACE]
    FM-7 [EL]        → PC-98 [HOME CLR]
    FM-7 [CLS]       → PC-98 [ROLL DOWN]
    FM-7 [DUP]       → PC-98 [HELP]
    FM-7 [HOME]      → PC-98 [ROLL UP]

  テンキー部は0〜9の数字キーに加え、PC-98に存在する[-][/][*][+][=][,][.]の各
  キーをFM-7のキーに対応させています。

  その他[Alt]([GRPH]･[f･10])でWin32メニューを呼び出し、[vf･2]でリセットがかか
  ります。


  ☆英語101キーボードの場合

    FM-7 [BREAK]     → US101 [ESC]
    FM-7 [ESC]       → US101 [~]
    FM-7 [^]         → US101 [=]
    FM-7 [\]         → US101 [\]
    FM-7 [@]         → US101 [[]
    FM-7 [[]         → US101 []]
    FM-7 [:]         → US101 [']
    FM-7 [CTRL]      → US101 [Ctrl(左)]
    FM-7 [CAP]       → US101 [Caps Lock]
    FM-7 [GRAPH]     → US101 [Num Lock]
    FM-7 [かな]      → US101 [Ctrl(右)]
    FM-7 [SPACE(右)] → US101 [SPACE]
    FM-7 [INS]       → US101 [Insert]
    FM-7 [DEL]       → US101 [Delete]
    FM-7 [EL]        → US101 [Home]
    FM-7 [CLS]       → US101 [Page Up]
    FM-7 [DUP]       → US101 [End]
    FM-7 [HOME]      → US101 [Page Down]

  テンキー部は0〜9の数字キーに加え、US101に存在する[/][*][-][+][.]の各キーを
  FM-7のキーに対応させています。

  その他[Alt]([F10])でWin32メニューを呼び出し、[F12]でリセットがかかります。


□クリップボード貼り付け/キー入力支援機能

  XM7は、クリップボードの文字列を擬似的にキー入力する貼り付け機能に対応していま
  す。ツール→貼り付け または Alt+P で貼り付けが可能です。
  また、gasajz氏の「CopyPe for XM7dash」のようなキー入力支援機能にも対応してい
  ます。ツール→キー入力支援 または Alt+K で使用可能です。

  Windows8以降のOSを使用している場合、フルスクリーンモード時にはキー入力支援機
  能は使用できません。また、MS-IME使用時にIMEのモードが正常に変更されないことが
  あります(OS/IMM周りのAPIの仕様変更が原因です)。

  これらの機能はデフォルトでは無効になっているので、使用するには設定が必要です。
  環境にもよりますが、通常キー間隔:20ms、制御キー間隔:200ms程度が適正値のようで
  す。なお、片方でも 0 に設定した場合では本機能は無効になります。

  なお、XM7.iniの[Keyboard]セクションのKeyStrokeModelessキーはキー入力支援ウイ
  ンドウのモーダル/モードレスの設定です。お好みで設定してください。


□ディスクファイル

  ディスクファイルとしてD77フォーマット・2Dフォーマット・2DDフォーマット・VFDフ
  ォーマットの4種類をサポートしています。

  D77フォーマットはPC-88エミュレータで一般的に使われているD88フォーマットと互
  換性があるフォーマットです。FM-7/77向けであることを明確にするため拡張子を変
  更しています。記録密度は2D及び2DDをサポートします。

  2Dフォーマットは森田 浩次さん・GORRY先生が開発されたX1エミュレータ for X68kで
  サポートされているファイル形式で、327680バイトのサイズを持ちます。
  2DDフォーマットは2Dフォーマットの80トラック版ともいえるもので、655360バイト
  のサイズを持ちます。

  VFDフォーマットはFM-7エミュレータ"EM-7"でサポートされているフォーマットです。
  EM-7とのファイル互換を取りたい場合に使います。


□テープファイル

  テープファイルは独自のT77フォーマットを採用しています。メニューよりファイル
  設定・録音・早送り・巻き戻しなどの操作を行ないます。

  T77フォーマットの詳しい仕様については、XM7配布ページ(表)の「T77フォーマット仕
  様」をご覧ください。


□サウンド出力

  現在のバージョンではサウンドエミュレーションをサポートしています。BEEP音源、
  PSG音源、FM音源、WHG音源、THG音源、モータ制御用のリレー動作を含めたテープ音、
  FDDシーク音のエミュレーションが行なえます。
  FM-7モード時のみ、THG音源により標準OPNと独立した本体側PSGのエミュレーション
  が行なわれます。
  その他、PSG音源、FM音源はROMEOおよびSCCIでの実チップ出力に対応しています。
  (ROMEO/SCCIを使用する場合、「動作環境」にある要件を確認してください)

  モータ制御リレー動作音・FDDシーク音のサンプルは、XM7.exeと同じディレクトリに
  モノラル・16ビットPCMのWAVファイルとして以下のファイル名で置いてください。
  (あまり音質がよくないですが、XM7本体のアーカイブにも収録しています)

    モータ制御リレー オン : relay_on.wav
    モータ制御リレー オフ : relayoff.wav
    FDD 1トラックシーク   : fddseek .wav

  実際に出力を行なうためには、DirectSoundに対応したサウンドデバイスが必要です。


  ROMEO/SCCIを使用する場合のその他の注意点は以下の通りです。

  □ROMEO使用時の注意点

    XM7 標準版は、SCCIには全く対応していませんのでご注意ください。

    ・XM7 標準版はOPN3-L(YMF288)に対応しています。OPM(YM2151)には対応して
      いません。また、SCCI対応版と異なり、FM音源は標準OPN/WHG、PSGは標準OPNのSS
      G部のみ対応しており、WHGのSSG部/THG/FM-7 標準PSGについてはXM7内蔵fmgenか
      らの出力となります。fmgenのサウンドバッファ設定はROMEOからの出力には影響
      しませんので注意してください。
    ・OPN3-Lに供給されるクロックは8MHzとなります。7.9872MHzではありません。
      FM-7標準の1.2288MHz供給時と同じような感じに音程やエンベロープ設定等を合わ
      せようとはしていますが、完全に同じ音が出るわけではない点はご了承ください。
    ・設定メニューの「サウンド」タブにある「ROMEOを使用する」はデフォルトではON
      になっていますので、ROMEOが搭載されている場合は自動的にそちらからの出力に
      なります。何らかの意図があって内蔵fmgenを使いたい場合はチェックを外してく
      ださい。
      どのパートがROMEOから出力されているかは、表示メニューの「FM音源/PSGレジス
      タ」から確認できます。
    ・表示メニューの「FM音源/PSGディスプレイ」のミュート機能とレベルメーター、
      設定メニューからの音量バランス設定等は、ROMEOから出力されているパートに関
      しては動作しません(対応する予定もありません)。
    ・ミュート処理の作りが基本的にいい加減です。


  □SCCI使用時の注意点

    XM7 SCCI対応版は、今までのROMEO対応に置き換わる形でSCCIに対応しています。
    ROMEOには全く対応していませんのでご注意ください。

    ・XM7 SCCI対応版はOPN(YM2203)、OPNA(YM2608)、OPNBB(YM2610B)、PSG(AY-3-8910)、
      SSG(YM2149F)の5種類の実チップに対応しています(ROMEO対応版で採用しているOP
      N3-L(YMF288)および単なるOPNB(YM2610)等には対応していません)。
      標準OPN/WHG/THG音源はOPN/OPNA/OPNBB、PSG音源はPSG(=SSG)/OPN/OPNA/OPNBBの
      各チップに対応しています。
    ・最近のSCCI.DLLでは実ハードをお持ちでない方のためにfmgenが利用できますが、
      この機能はクロックがPC-8801mkIISR以降+サウンドボードII、およびPC-9801シリ
      ーズ+PC-9801-86を想定した7.9872MHz固定のため、XM7では使用できません。
      素直にXM7内蔵のfmgenを使ってください。
    ・実音源チップに供給されるクロックは1.2288MHz(OPN/PSG/SSG)/2.4576MHz(OPNA/O
      PNBB)にしてください。
    ・検索順序は標準OPN→WHG→THG→PSGの順番でそれぞれPSG(SSG)→OPN→OPNA→OPNB
      B のうち、最初に見つかったチップからに固定されており、変更することはでき
      ません。
    ・SCCI対応ハードウェアに接続されている実チップの数が少ない場合、SCCI対応ハ
      ードウェアとXM7内蔵のfmgenの混在も可能です。この場合、fmgenのサウンドバッ
      ファ設定はSCCI対応ハードウェアからの出力には影響しませんので注意してくだ
      さい。
    ・設定メニューの「サウンド」タブにある「SCCIを使用する」はデフォルトではON
      になっていますので、対応ハードウェアが接続されている場合は自動的にそちら
      からの出力になります。何らかの意図があって内蔵fmgenを使いたい場合はチェッ
      クを外してください。
      なお、「SCCIを使用する」にチェックを入れていても、対応した実チップが1つも
      搭載されていない場合、SCCI経由で音を出すことはできません。
      どのパートが実チップから出力されているかは、表示メニューの「FM音源/PSGレ
      ジスタ」から確認できます。
    ・表示メニューの「FM音源/PSGディスプレイ」のミュート機能とレベルメーター、
      設定メニューからの音量バランス設定等は、SCCI対応ハードウェアから出力され
      ているパートに関しては動作しません(対応する予定もありません)。
    ・ミュート処理の作りが(ROMEO対応版より更に)いい加減です。


□ジョイスティック

  現在のバージョンでは標準のFM音源(OPN)接続ジョイスティック、電波新聞社製プリン
  タポート接続ジョイスティック、ASCII QuickShot、◎h!FM標準ジョイスティック、キ
  ーボードエミュレーションの5種類のジョイスティックのエミュレーションをサポート
  しています。プリンタポート接続ジョイスティックと後述のプリンタ出力エミュレー
  ション機能の同時使用はできません。

  実際に入力するためには、Windowsの「ゲームコントローラ」コントロールパネルで
  セットアップされたジョイスティックデバイスが必要です。


□マウス

  現在のバージョンではインテリジェントマウス(MSXマウス)および純正マウスセット
  (MB22436)のエミュレーションをサポートしています。

  マウスエミュレーションの有効・無効や、マウス使用時に占有するジョイスティック
  ポート・マウスセットの設定は、「ツール」→「設定」の「オプション」ページで設
  定できます。
  また、マウスの中央ボタンおよびマウスホイール、[F11](NEC PC-9801キーボードでは
  [vf･1])を押すことで、一時的にマウスエミュレーションモードをトグルで切り替える
  ことも可能です
  (キーマップ変更機能によって[F11]・[vf･1]に何らかのキーを割り当てている場合は
   キーボードによるマウスエミュレーション切り替えは使用できません)。

  マウスエミュレーション中は、Win32メニュー呼び出しなどのマウス操作が必要とな
  る場面を除いて、Windows側のマウスポインタが表示されなくなります。


□プリンタ

  現在のバージョンでは純正ドットインパクトプリンタ(MB27403)のサブセット版をエ
  ミュレーションしています。また、プリンタポートへの出力データをファイルに記録
  する機能、あやしいジャストサウンドエミュレーション機能にも対応しています。

  XM7LPのドキュメントから抜粋した仕様（一部改変）は以下の通りです。

  □使用方法
    ・印刷機能を使用するには、LPRINT、LLIST、HARDC（ビットイメージ出力にも対応
      しています）等の印刷用BASICコマンドや、プリンタポートを制御するプログラム
      等を実行して、印刷データを出力した後、「ファイル(F)」-「印刷(P)...」をク
      リックすると、印刷ダイアログボックスが現れます。
      あとは通常のWindowsアプリの印刷の場合と同様です。

    ・一度印刷されたデータは消去されます。
      次の「ファイル(F)」-「印刷(P)...」では、直近の印刷の後に出力されたデータ
      のみが印刷されます。

  □仕様、注意点
    富士通純正ドットインパクトプリンタ「シリアルドットプリンタ MB27403」の機能
    を一通り実装することを目標にしていました…が諸般の事情でXM7LPは開発中止とな
    ってしまいました。

    ・MB27403は、EPSON製「MP-80 TYPE III」のOEM、すなわち実質的な同一機種である
      と仮定しています。（下記参考文献の記述内容より推測しました。）
    ・MB27403及び MP-80 TYPE III の詳細技術情報が未入手のため、仕様の一部は「M
      X-80 TYPE II」（「MP-80 TYPE II」の海外版）および「FX-80」（「FP-80」の海
      外版）のマニュアル（参考文献(iii)および(v)）よりの推測です。
    ・FX-80 のマニュアルには MX-80 TYPE III の情報が載っていました。

    ・対応しているプリンタ制御コードは、9-Pin ESC/P のサブセットです。
      具体的には、以下の制御コードに対応しています。

      - CR  (0x0d) --- 復帰（改行なし）
      - LF  (0x0a) --- 復帰改行
      - HT  (0x09) --- 水平タブ
      - VT  (0x0b) --- 垂直タブ ※1
      - FF  (0x0c) --- 改ページ
      - BS  (0x08) --- バックスペース ※2
      - DEL (0x7f) --- 1文字削除

      - [ESC]@ (0x1b21) --- 初期化 ※3
      - [ESC]0 (0x1b30) --- 改行量を1/8インチに設定
      - [ESC]1 (0x1b31) --- 改行量を7/72インチに設定
      - [ESC]2 (0x1b32) --- 改行量を1/6インチに設定
      - [ESC]3 (0x1b33) --- 改行量を1/216インチ単位で指定
      - [ESC]A (0x1b41) --- 1/72インチ単位の改行量の指定
      - [ESC]J (0x1b4a) --- 改行量を1/216インチ単位で単発で指定
                            （F-BASIC V3.4の400ラインモードでのHARDC 2コマンド
                              のビットイメージ出力に用いられる。）
      - [ESC]K (0x1b4b) --- 8ドット単密度ビットイメージモードの指定
      - [ESC]L (0x1b4c) --- 8ドット倍密度ビットイメージモードの指定
                            （HARDCコマンドのビットイメージ出力に用いられる
                              ([ESC]Jの場合以外)。）

      - [FS]&  (0x1c26) --- 漢字モードの指定（漢字ON）
      - [FS].  (0x1c2e) --- 漢字モードの解除（漢字OFF）

      ※1 MB27403/MX-80IIIでは「LF」と同じ動作。（参考文献(i)および(v)より）
      ※2 MB27403/MX-80IIIでは「DEL」と同じ動作。（参考文献(i)より）
      ※3 暫定実装：MB27403の仕様（参考文献(i)）に記述なし

    ・文字（英、数、半角カナ、グラフィックス記号）及びグラフィックデータは、
      プリンタのドットを模したビットイメージで表示されます。
      （英数半角カナ文字は表示の選択が可能：後述。）

    ・グラフィックス記号（文字コード 0x80-0xa0, 0xe0-0xff）は、
      常にビットイメージとして印刷されます。

    ・プリンタ側で漢字（2バイトコード文字）を出力できます。
      ESC/P制御コードのFSシーケンス(上述)で漢字ON/OFFを行います。
      （出力の有無の選択が可能：後述。）
      漢字コード（2バイト文字コード）はJISです。
      具体的には、入力文字コードの範囲は、
      JIS X 0208で定義されているコード領域（01区〜94区）のうち、
      ・記号、英数字、かな（01区〜08区）
      ・第1水準漢字（16区〜47区）
      ・第2水準漢字（48区〜84区）
      であり、出力される字体は
      ・Windows Vista 以前は JIS X 0208-1990、通称JIS90
      ・Windows Vista 以降は JIS X 0213:2004、通称JIS2004
      となります。
      また、フォントは必ず「ＭＳゴシック」となります。
      「ＭＳゴシック」はWindowsのバージョンによって「フォントのバージョン」も異
      なるため、動作OSによっては、一部の漢字において上記の漢字コードで規定され
      ている字体とは異なる字体が出力されます。

    ・プリンタ出力機能を有効化するか否かの選択ができます。
      「ツール」-「設定」-「プリンタ」ページで、以下のモードが選択できます。
      ・「エミュレーション有効」を選択すると、プリンタエミュレーション機能が有
        効になります。
      ・「ログ出力有効」を選択すると、プリンタ出力情報をファイルに記録する機能
        が有効になります。
      ・「ジャストサウンド有効」を選択すると、ジャストサウンド出力エミュレーシ
        ョン機能が有効になります。
      ・「使用しない」を選択すると、プリンタ出力機能を使用しません。このモード
        ではプリンタポート接続ジョイスティックが使用できます。
        エミュレーション/ログ出力とプリンタポート接続ジョイスティックの併用はで
        きません。

    ・英数半角カナ文字の表示にOS側のフォントを使用するかを選択可能です。
      「ツール」-「設定」-「プリンタ」ページで選択します。
      「エミュレーション有効」選択時に、「OSフォントを使用する」をチェックする
      とOS側のフォントが使用されます。
      ・OS側のフォントを使用しない場合は、英数半角カナ文字はプリンタのドットを
        模したビットイメージとして印字されます。

    ・プリンタ側で漢字を出力するかを選択可能です。
      「ツール」-「設定」-「プリンタ」ページで選択します。
      「エミュレーション有効」選択時に、「漢字を出力する」をチェックすると漢字
        が出力されます。
      ・漢字を出力しない場合は、漢字データは1バイトデータとして「そのまま」表示
        されます。（文字化けが起こります。）

    ・余白は、左右が3.4mm、上が11.7mm、下が5.9mmです。
      （参考文献(iii)の記述よりの推測です。）

    ・BASICコマンドの完了途中で「印刷(P)...」を行なうと、出力途中の結果が印刷さ
      れます。（完了に比較的長い時間がかかるHARDCコマンドの場合に、特に顕在化し
      ます。）
      これを防止する（コマンド終了まで印刷メニューをdisableする、等）うまい方法
      が現時点では見つけられないためこれは現時点での「仕様」とさせてください。

    ・XM7 をリセットしても、出力された未印刷のデータは消去されません。
      （とりあえずこうしてみました。ちょっとおかしな気もしますが、
        「コマンド終了」=「印刷完了」と考えれば、これでよいような気もします。
        もし動作を変更するとしても、次のバージョン以降とします。）

    ・未印刷のデータは、ステートファイルのセーブ・ロードには対応していません。
      未印刷のデータが存在する状態でステートファイルにセーブしても、その未印刷
      のデータはセーブされません。ロードの場合も同様です。

    ・未印刷のデータが存在する状態で XM7 を終了すると、その未印刷のデータは印刷
      されずに破棄されます。

    ・F-BASIC V3.4の400ラインモードにおいては、SETUPユーティリティにてプリンタ
      設定を「3：シリアルプリンタ1」に設定しておいてください。
      それを行なえば、HARDC 1コマンド・HARDC 2コマンド共に正常な出力結果が得ら
      れます。

  □制限事項：

    ・MB27403のプリンタ制御コード／シーケンスのうち、未実装のものがあります。
      具体的には以下のものです。

      - BEL (0x07) --- ブザー
      - SO  (0x0e) --- 横2倍拡大文字の指定
      - SI  (0x0f) --- 縮小文字の指定
      - DC2 (0x12) --- SI機能の解除
      - DC4 (0x14) --- SO機能の解除

      - [ESC]C     (0x1b43)   --- 1ページ当りの行数の指定
      - [ESC]C NUL (0x1b4300) --- 1ページ当りのインチ数の指定
      - [ESC]D     (0x1b44)   --- 水平タブの設定
      - [ESC]Q     (0x1b51)   --- 印字桁数の設定
      - [ESC]N     (0x1b4e)   --- スキップパーフォレーションの設定
      - [ESC]O     (0x1b4f)   --- スキップパーフォレーションの解除
      - [ESC]G     (0x1b47)   --- 二重印字の設定
      - [ESC]H     (0x1b48)   --- 二重印字の解除
      - [ESC]S     (0x1b53)   --- スーパースクリプト／サブスクリプトの設定
      - [ESC]T     (0x1b54)   --- スーパースクリプト／サブスクリプトの解除
      - [ESC]E     (0x1b45)   --- 強調文字の設定
      - [ESC]F     (0x1b46)   --- 強調文字の解除
      - [ESC]-     (0x1b2d)   --- アンダーラインの設定／解除
      - [ESC]W     (0x1b57)   --- 横2倍拡大文字の設定／解除
      - [ESC]8     (0x1b38)   --- 紙検出信号の無効化
      - [ESC]9     (0x1b39)   --- 紙検出信号の有効化

    ※ 「[ESC]B - 垂直タブの設定」は、MB27403には実装されていなかった可能性が高
      いです。（参考文献(i)及び(v)より。）

    ・水平タブは8文字で固定です。

    ・印刷用フォントのビットイメージは、プリンタ内蔵フォント（9x6ドット）ではな
      く、画面表示用のビットイメージフォント（8x8ドット）で代用しています。

  □参考文献
    XM7LPにおける参考文献を挙げておきます。

    (i)  「富士通 FM-7 ユーザーズマニュアル システム解説  1982年」
    (ii) 「EPSON ESC/P Reference Manual  June 2004」及び「(同) December 1997」
    (iii)「EPSON MX-80 TYPE II Operation Manual  81.10-10」
    (iv) ブラザー工業株式会社「TD-4000 ESC/Pコマンドリファレンス Version 1.20」
           及び「(同) Version 1.03」
    (v)  「EPSON FX SERIES PRINTER User's Manual Vol.2 REFERENCES  1984」


□MIDI

  現在のバージョンでは純正MIDIアダプタ相当のMIDI出力のエミュレーションを仮サ
  ポートしています。MIDIエミュレーション機能の切り離しはできません。

  ただし、割り込みに対応していない等、USARTのエミュレーションを厳密に行なってい
  るわけではないので、動作しないソフトがないとはいえません。また、MIDI入力や純
  正MIDIアダプタに搭載されているPIT(i8253相当)には対応していません。PITのエミュ
  レーションに対応していないという点では、厳密には◎h!FM 1990年1月号掲載の自作
  MIDIカードの仕様に近いと言えます。

  実際に出力するためには、MIDI出力デバイスが必要です。


□RS-232C

  現在のバージョンではFM77AV40EX内蔵RS-232Cインタフェース相当(FM77AV40EXモー
  ド時)およびRS-232Cインタフェースカード(MB22406)相当(FM-7/FM77AVモード時)の
  エミュレーションをサポートしています。

  ただし、非同期通信モードのみのサポートで同期通信には対応していません。

  実際に通信するためには、シリアルポートデバイスが必要です。


□I/O型RAMディスク

  現在のバージョンではFM77AV40EXモード時にMR2のI/O型RAMディスクのエミュレーショ
  ンをサポートしています。

  MR2のエミュレーションは拡張RAMを有効にした場合のみ機能します。

  ◎h!FM 1989年3月号掲載「Draco C対応RAMディスクドライバ」での動作検証を行なっ
  ていますが、純正ドライバでの動作検証は行なえていません。そのため、純正ドライ
  バでは不具合が出る可能性があります。


□Win32メニュー

  以下にメニューの概略を示します。

  ファイル(F)
    開く(O)               VMの状態をファイルからロードします。
    保存(S)               VMの状態をファイルに上書き保存します
    名前をつけて保存(A)   VMの状態をファイルに名前をつけて保存します。
    リセット(R)           VMをリセットします。
    ホットリセット(H)     VMをホットリセット(BREAK+RESET)します。
    TAB+リセット(T)       VMを高速モードでリセット(TAB+RESET)します。
    BASICモード(B)        起動モードをBASICモードにセットします。
    DOSモード(D)          起動モードをDOSモードにセットします。
    印刷(P)               印刷ダイアログを表示します。
    終了(X)               XM7を終了します。

  ドライブ1(ドライブ0も同様)
    開く(O)               ディスクイメージファイルを設定します。
    両ドライブで開く(B)   ディスクイメージファイルを両ドライブに設定します。
    取り外す(E)           ディスクイメージファイルを取り外します。
    一時取り出し(T)       VMに対し強制的にディスク未挿入状態を返します。
    書き込み禁止(W)       現在選択しているディスクを書き込み禁止に設定します。
    (ディスク名)          D77ファイル内のメディアを切り替えます。

  テープ(A)
    開く(O)               テープイメージファイルを設定します。
    取り外す(E)           テープイメージファイルを取り外します。
    巻き戻し(W)           １つ手前まで巻き戻します。
    最初まで巻き戻し(T)   テープイメージの先頭まで巻き戻します。
    早送り(F)             １つ先まで早送りします。
    録音(R)               録音可能状態、再生状態を切り替えます。

  表示(V)
    フロッピーディスク(F) FDCウインドウを表示します。
    FM音源/PSGレジスタ(O) FM音源/PSGレジスタウインドウを表示します。
    FM音源/PSGﾃﾞｨｽﾌﾟﾚｲ(D) FM音源/PSGディスプレイウインドウを表示します。
    ﾊﾟﾚｯﾄﾚｼﾞｽﾀ/ﾏﾙﾁﾍﾟｰｼﾞ(P)パレットレジスタ/マルチページウインドウを表示します。
    サブCPUコントロール(C)サブCPUコントロールウインドウを表示します。
    論理演算/直線補間(L)  論理演算/直線補間ウインドウを表示します。
    キーボード(K)         キーボードウインドウを表示します。
    メモリ管理(M)         MMRウインドウを表示します。
    DMAコントローラ(A)    DMAコントローラウインドウを表示します。(V3のみ)
    ステータスバー(S)     ウインドウ下部のステータスバーをon/offします。
    実行に同期(Y)         サブウインドウの表示を自動更新します。
    最新の情報に更新(R)   すべてのウインドウを再描画します。
    フルスクリーン(U)     ウインドウモード・全画面モードを切り替えます。

  デバッグ(D)
    実行(X)               VMの実行を開始します。
    停止(B)               VMの実行を止めます。
    トレース(T)           １命令だけ実行します。
    リセット(R)           VMをリセットします。
    ブレークポイント(P)   ブレークポイントウインドウを表示します。
    スケジューラ(S)       スケジューラウインドウを表示します。
    CPUレジスタ(C)        CPUレジスタウインドウを表示します。
    逆アセンブル(D)       逆アセンブルウインドウを表示します。
    メモリダンプ(M)       メモリダンプウインドウを表示します。

  ツール(T)
    設定(C)               XM7の動作設定を行ないます。
    マウスモード(M)       マウスエミュレーション状態を一時的に切り替えます。
    時刻アジャスト(A)     VMのRTCの時刻をWindows側に合わせて再設定します。
    画面キャプチャ(S)     現在の画面をビットマップファイルにセーブします。
    縮小画像キャプチャ(R) 現在の画面を320×200ドットに縮小してセーブします。
    WAVキャプチャ(W)      サウンド出力をWAVファイルにロギングします。
    新規ディスク作成(D)   新しいディスクイメージファイルを作成します。
    新規テープ作成(T)     新しいテープイメージファイルを作成します。
    VFD→D77変換(V)       VFD形式のイメージファイルをD77形式へ変換します。
    2D/2DD→D77変換(2)    2D/2DD形式のイメージファイルをD77形式へ変換します。
    VTP→T77変換(P)       VTP形式のイメージファイルをT77形式へ変換します。

  ウインドウ(W)
    重ねて表示(C)         サブウインドウを再配置します(カスケード)
    並べて表示(T)         サブウインドウを再配置します(タイル)
    全てアイコン化(I)     サブウインドウを全て最小化します。
    アイコンの整列(A)     アイコン化されたサブウインドウを並べます。
    全て隠す(H)           サブウインドウを全て隠します
    全て復元(R)           サブウインドウを全て復元します
    全て閉じる(O)         サブウインドウを全て閉じます

  ヘルプ(H)
    バージョン情報(A)     XM7のバージョン情報を表示します。


□互換性

  ビデオディジタイズ機能はVMレベルではサポートしていますが、I/Oエミュレーション
  を行なわず仮想的に動作します。

  それ以外の部分では高い互換性があります。FM-7,FM77AV,FM77AV40EX向けのほとんど
  のソフトが動作します。


□速度

  画面モードが2種類しかないV2に対し、V3では多種多様な画面モードへの判別・対応の
  ため、全体としてはV3のほうが若干遅くなっています。
  ただし、V2.5L10での速度低下の大きな原因となっていた直線補間が大幅に高速化され
  ていますので、V3でもK6-3 450MHz程度のCPUパワーがあれば実機とそう遜色ない速度
  で動作すると思われます。
  ただし、V3.4L60で新設されたラスタ単位でのレンダリングを行なう場合は、それより
  かなり高いCPUパワーを要求します。大体CoreDuo 1.66GHz程度が目安です。

  リアルタイムでエミュレーションを行なうための目安としては、最低限MMX Pentium
  300MHz程度が必要です。WHG音源、THG音源を考慮して余裕を見ると、K6-2 500MHz, K6
  -3 450MHzといったプロセッサであればラスタ単位でのレンダリングを行なわない場合、
  大抵のソフトで問題なく動作します。


□その他

  XM7 for Win32(V2.2〜V2.5,V3.0)はBorland C++ Builder 5 (Professional Editon)
  を、XM7 for Win32(V3.1〜,V2.6〜,V1.1)は Borland C++ Compiler 5.5.1を用いて開
  発されています。付属のVCLライブラリを使用せず、Win32API+DirectXの範囲で記述し
  ており、Windows98以降で新設されたAPI(DLL等)に関しては内部でロード／解放を行な
  っています。
  このため、DirectX以外のコンポーネントDLLは原則として不要です。

  また、DirectDrawの振る舞い、Windowsのスケジュール制御についてciscさんに有用な
  示唆を多数頂きました。この場を借りてお礼申し上げます。

  アイコンファイルの一部は天丸さんによるもの、およびそれをベースにしたものを使
  用させていただいています。


□V3開発終了によせて

  早い物で、V2系がV2.5L10で終了してから4ヶ月が経ってしまいました。

  今回のバージョンでV3系は終了です。もっと言うとXM7自体の開発も終わりです。

  ソフトウェアの開発というものは、始めるよりも終わる方が難しい。これは私の
  持論です。うやむやに終えるなら簡単に出来るのですが、きちっとした区切りをつ
  けて綺麗に終わる、これはなかなか難しいことだと思います。XM7の開発がかなり
  進んで終わりが見えた2000年の秋頃から、どういった形で決着をつけるか私なりに
  考えてきました。その結論として2001年2月に、V2.5L10としてソースを含めて公開
  したわけです。私自身はその時点でXM7は終わり、拡張するにしても日本語カード
  や2DDまで、と考えていました。

  ところがV2.5L10を公開して1ヶ月もたたないうちに、たけがみ りう氏が"XM7改"と
  してV2.5L10から大幅に拡張されました。そのソースを見て動きを見て、それなら
  もう少しやってみるか、と思ったのがV3系の始まりです。それから3ヶ月ほど作業
  を続けてきましたが、確かにV2系から様々な面で互換性向上、完成度の向上が図れ
  たと感じます。私としても当初ないしは作業中にやりたかった事、実現したかった
  事はほぼ全て実現できたこともあり、このあたりで止めることにします。

  もちろん開発を終了したからといって、XM7というソフトウェアが無くなるわけで
  はありません。ニーズが無くなれば当然、使われることも無くなるでしょうが、
  それは私にとっては本質的な問題ではありません。XM7は元々、私が過去の資産を
  保存する必要を感じて作成したソフトであり、私がその必要を感じ続ける限りは残
  るからです。必要を感じなくなったとしても、私の人生の中のある時期、2年という
  期間を捧げたソフトウェアとして、ずっと記憶にとどめておくことでしょう。

  <XM7(V3) 開発スペック>

  設計開始日時   1999年5月7日
  開発開始日時   1999年5月28日
  開発終了日時   2001年6月22日

  動作機種/OS    Win32
  開発言語       C,C++,アセンブラ
  ソース規模     VM部59ファイル、Win32部29ファイル、合計サイズ1034KB

  主要ハード     PC/AT互換機
                   MSI MS-5169 Rev2.1, AMD K6/K6-III/K6-III+ 300-550MHz
                   Matrox Millennium G400, Creative SoundBlasterAWE64 Gold
                 X680x0
                   X68kXVI(CZ-634C), 68000 24MHz
                   まーきゅりゆにっとV4, Neptune-Evolution
                 PC-98
                   PC-9801BX4, Am5x86 160MHz
                   Canopus PowerWindow T64S, PC-9801-86
                 FM-7
                   FM77AV40EX
                   ビデオカード, 256KB RAMカード, WHG音源カード

  主要開発言語   Microsoft Visual C++ 4.0 (Standard Edition)
                 Borland C++ Builder 5 (Professional Edition)
                 Borland C++ 4.0
                 Netwide Assembler 0.98
                 その他TC,TASM,HAS,HLK等


□作者のたわごと+z09

  「今回でXM7の開発は終了です。泣いても笑っても終了するものはするんです。」と書
  いたのが約半年前(z07)。すいません、ウソでした。
  z07に重大な問題(と自分では思っている)を発見したので、昨年12月に出したプライベ
  ートリリース版(z08)の修正も加えて急遽修正版をリリースすることに決定しました。
  今度こそ、今度こそ最後ですぅぅぅぅぅ(本当か?)。

  しかし、ジョイスティックの上方向が押しっぱなしになる問題を抱えていたとは…ジ
  ョイスティックAPIの仕様がいけないともいいますが。どうもL77EXの時にGPD WIN対応
  に際して手抜き工事をしたのが原因だったっぽいのですが、あれから2年以上全くバグ
  報告が上がってこなかったということは、ユーザーは全員POV付きのジョイスティック
  を使っていたのか、単に面倒だったのか、V2.7βの時にもz07の時にも感じたFMユーザ
  の全体的に消極的・受け身な態度がいけないのか、果たして何が問題なのかわかりま
  せん。今なら「俺が原因だ!!」と言えますが(こりゃ自慢することじゃないね)。

  最後にz07の時に書いたことを現状に合わせて加筆修正してもう一度。

  20年間以上という長い間、XM7をご支持、ご愛用くださった方々、開発に協力してくだ
  さった方々には原作者のＰＩ．さんに代わり、本当に心より感謝いたします。ＰＩ．
  さんの「V3開発終了によせて」からの繰り返しになりますが、開発を終了してもその
  瞬間にXM7というソフトウェアがこの世界からなくなるわけではありません。z07の時
  にも書きましたが、FM TOWNSを含めたホビー系FMシリーズのコミュニティがかなり壊
  滅的なため、すぐか数年度か、あるいは数十年以上先のことになるのかはわかりませ
  んが、いつかXM7がいらなくなるときがやってくるかもしれません。ですが、それでも
  XM7は人生のうち約19年間を共にした、私にとっては愛すべきソフトウェアであり、フ
  ルスクラッチ開発や改造版の開発などいろいろなことにチャレンジしてきたなかで開
  発したいくつかの作品のうちでは自信を持って送り出せた最高のソフトウェアでした。

  それでは、さよなら…は言いません。気が向いたら何か新作を出すかもしれないので。
  See you again...


  <XM7 TypeR・XM7 V3・XM7改 開発スペック>
  設計開始日時   2001年2月28日 (XM7改 V3.0L0.0)
  開発開始日時   2001年3月10日 (XM7改 V3.0L0.0)
  開発終了日時   2020年1月23日 (XM7 TypeR/XM7 V3.4L77SX+z09)

  動作機種/OS    Win32
  開発言語       C,C++,アセンブラ(x86)
  ソース規模     VM部 79ファイル、Win32部 44ファイル (XM7,XM7 TypeRとも)

  主要ハード     開発マシン1:Lindwurm4 (V3.4L77SX+r03〜)
                   ASRock AB350M Pro4 (AMD B350 Chipset)
                   AMD Ryzen 7 3700X(Matisse) 3.60GHz
                   32GB RAM, 500GB NVMe SSD + 3TB HDD
                   GIGABYTE GV-N1060IXOC-6GD (GeForce GTX 1060, 6GB)
                   Creative SoundBlaster Z
                   Windows 10 November 2019 Update Build 18363(x64)
                   Windows 10 Insider Preview Build 19546(x64) on VMware Player
                   Windows 7 Ultimate Service Pack 1(x64) on VMware Player
                   Windows 8.1 Pro RTM(x64) on VMware Player
                 開発マシン2:Wyvern3 (V3.4L77SX+z06〜)
                   Panasonic Let'snote SV7 CF-SV78SJQP
                   Intel Core i7-8650U(KabyLake-R) 1.90GHz
                   16GB RAM, 512GB NVMe SSD
                   Intel UHD Graphics 620, Realtek High Definition Audio
                   Windows 10 November 2019 Update Build 18363(x64)
                 評価マシン1:Chaser2 (V3.4L77SX+z04〜)
                   GamePadDigital GPD WIN 2
                   Intel Core m3-7Y30 1.00GHz、8GB RAM、128GB SATA SSD
                   Intel HD Graphics 615, Realtek High Definition Audio
                   Windows 10 November 2019 Update Build 18363(x64)
                 評価マシン2:Dragoon4 (V3.4L77SX+z09)
                   ASRock H310CM-HDV/M.2 (Intel H310 Chipset)
                   Intel Core i3-9100F(CoffeeLake-R) 3.60GHz
                   16GB RAM, 500GB SATA SSD + 320GB HDD
                   玄人志向 GF-GTX1050Ti-4GB/OC/DF2 (GeForce GTX 1050, 4GB)
                   Realtek High Definition Audio
                   Windows 10 Insider Preview Build 19546(x64)
                 ターゲットマシン
                   FM77AV40EX, FMT-DP531
                   FM77AV40SX, FMDPC232D, KDL-20J1, モニタケーブルがない(滅
                   FM77AV-2, FMTV-152, ビデオディジタイズカード(FM77-411)
                   FM-77L4, CZ-600DB
                   FM-NEW7, PC-KD252, マイクロフロッピィディスクドライブ
                   (MB27631H)
                   FM-8, CZ-600DB

  主要開発言語   Borland C++ Compiler 5.5.1
                 Netwide Assembler 0.98+towns05
                 HD6309 cross assembler version 01.20T


□地球に優しい(?)リサイクル企画 - XM7 V3.4L77SX+z09に関するFAQ

  <概要>

  Q:XM7はFM-7・FM77AV・FM77AV40EXを100%エミュレートしていますか。
  A:していません。大半のソフトを動かすのに支障がない程度です。イメージ的には98%
    程度と考えて下さい。
  Q:残り2%は具体的にはどこですか。
  A:最大の欠点はディスクアクセスが速すぎることです。これが原因で動作異常を起こ
    すソフトがあります。それ以外にも問題点は幾つかあります。
    ただし、現在のXM7にはディスクアクセスに(かなりテキトーに)ウェイトを挿入する
    機能がありますので、それを有効にすれば動くソフトもあるかと思います。
  Q:ターゲット機種をFM-7・FM77AV・FM77AV40EXに切り替えできるようですが。
  A:FM77AVモードでは、XM7 V2とほぼ同等の動作となります。ただし、FM77AV40系では
    画面モードが増加していることからXM7 V2より負荷がかかります。
    FM-7モードであってもディスク・漢字ROM・FM音源は使えます。このため、FM-7モー
    ドといっても、厳密にはMMRのないFM-77L2に近い動作をします。
  Q:FM77AV40EXモード時、FM77AV20,FM77AV40,FM77AV20EXなどの互換性は。
  A:オリジナルハードウェアがこれらの機種の上位互換に作られていますので、原則と
    して互換性があります。ただし、イニシエータROM内の機種IDはFM77AV40EX相当とな
    りますので、機種を細かく判別するようなものは正常に動作しません。
  Q:ではFM77AVモード時のFM77AVとの互換性は。
  A:前述した通り、XM7 V2とほぼ同等の動作となります。イニシエータROM内の機種IDも
    FM77AV相当となり、ブート処理も旧ブートを使うので、機種を細かく判別していて
    もほとんど問題ないものと思われます(100%とは言えませんが…)。
  Q:各バージョンのXM7/XM7 TypeRの間でのステートファイルの互換性は。
  A:XM7 V1系とV2/V3系の間でのステートファイルの互換性はありません。
    XM7 V3のステートファイルはXM7 V2の上位互換仕様となっているので、XM7 V2で作
    成したステートファイルをXM7 V3でロードすることが可能です。逆にXM7 V3で作成
    したファイルをXM7 V2でロードすることはできません。
    また、XM7 TypeRではXM7のステートファイルをロードできますが、 逆にXM7でXM7
    TypeRのステートファイルをロードすることはできません。

  <起動>

  Q:起動時に「仮想マシンを初期化できません(以下略)」と出ます。
  A:まず、このファイル(XM7.txt)の「ROMファイル」にしっかり目を通してください。
    必要なROMファイルがないか、ファイルサイズが不足しています。ROMファイルはカ
    レントディレクトリではなく、XM7.exeと同じディレクトリに置いて下さい。
    また、V3.4L50から漢字ROMのファイルについての扱いが変更になっており(詳しく
    は「ROMファイル」を参照してください)、JIS83準拠第1水準漢字・非漢字ROMのフ
    ァイル名の変更が必要となっていますので、変更を忘れるとこのエラーメッセージ
    が表示されます。「KANJI.ROM」を「KANJI1.ROM」にリネームしてください。
  Q:XM7を終了させた直後に再度起動しようとしても起動できません。
  A:恐らくアンチウイルスソフトがXM7.iniのチェックを行なっているために前のXM7.ex
    eが終了していないものと思われます。しばらく経ってから再度お試しください。
  Q:動作中のOSにDirectXが入っているか、バージョンが正しいかわかりません。
  A:Win98以降ならOSデフォルトでDirectX3以降をサポートしていますので、気にする必
    要はありません。Win95/WinNT4は要チェックです。
  Q:メモリは何MBくらい実装している必要がありますか。
  A:OS本体や他のアプリケーションにもよるため一概には言えませんが、最低32MBくら
    いから動作すると思います。XM7自体の消費メモリは5〜10MB前後です。
  Q:同じFM-7エミュレータであるEM-7やFEMU7、VM7、eFM77AV40、eFM77AV40EXのROMイメ
    ージは使えないのですか。
  A:使えません。XM7 V3はFM77AV40EX/SXのROMイメージを要求するためです。ただし、
    この逆は簡単な変換を施してやることで可能です。
    VM7、eFM77AV40についてはFM77AV40相当という仕様のために拡張サブモニタROMファ
    イル(EXTSUB.ROM)を要求しないというだけで、そのほかのROMイメージのファイル名
    は全て共通なので、EXTSUB.ROM 以外のXM7用のROMイメージさえそろっていれば変換
    も不要です。
    eFM77AV40EXについてはROMイメージの仕様は全く同一ですので問題なく使用できま
    す。

  <リセット>

  Q:ホットリセット機能とは何ですか。
  A:実機でBREAKキーを押しながらリセットした状態を再現するためのものです。「ウォ
    ームブート」(Warm boot)等とも言います。
    現在のXM7 TypeRではリセットをかけた際にキーの押下状態を仮想マシンに再度反映
    する処理を入れたために以前ほど重要度はありませんが、F-BASIC V3.3/V3.4が起動
    している状態(厳密にはテキストウインドウが開いた状態)で使用すると、リセット
    と同時に自動的に DOSモードに切り替わります。逆にテキストウインドウが開いて
    いない状態で使用すると、同様にBASICモードに切り替わります。
  Q:TAB+リセット機能とは何ですか。
  A:FM77AV40EX/40SXのイニシエータROM内に追加された、「TABキーを押しながらリセッ
    トすると高速モードで起動する」機能に対応するためのものです。リセット直後の
    キー入力取得タイミングがけっこう厳しかった(過去形)ので新設しました。
    イニシエータROMのバージョンチェックを行なっているため、FM77AV40EX/AV40SX以
    外のイニシエータROMデータを使用した場合(機能を実現するコードが存在しない)、
    およびターゲット機種をFM77AV/FM-7に落としている場合(高速モードに対応してい
    ない)はメニュー自体が無効となります。


  <ディスク>

  Q:2D/2DDディスクをD77ファイルに変換するにはどうすればいいのですか。
  A:PC-88エミュレータP88SR向けのツールMAKE_HDかM88向けのツールDITTが使えます。
    ただしプロテクトのかかったディスクや、N=5のディスクは変換できません。
  Q:では、それらのディスクはどうすれば変換できるのですか。
  A:汎用的なツールは今のところありません。FM-7実機、FM TOWNSなどで専用ツールを
    作成したり、D77ファイルを直接バイナリエディットするなどして下さい。
  Q:D77ファイル内の全てのディスクに対して、ライトプロテクトしたいのですが。
  A:D77ファイルの属性を読み取り専用(Read Only)にしてください。ファイル内の全て
    のディスクがライトプロテクト状態として扱われます。
  Q:1つのD77ファイルに入るディスクの枚数に制限はありますか。
  A:あります。XM7ではD77ファイルについて、1ファイルあたりの最大ディスク数を16枚
    に制限しています。
  Q:2Dファイルの構造・目的がわかりません。
  A:F-BASIC標準の40(track)×2(side)×16(sector)×256(byte)を、頭から順に連結し
    たものです。FM77AV40向けのツールCOPY2D(非公開)で作成可能です。
  Q:2DDファイルの構造・目的がわかりません。
  A:簡単に言うと2Dファイルの2DD版です。F-BASIC標準の80(track)×2(side)×16(sect
    or)×256(byte)を、頭から順に連結したものです。
  Q:VFDファイルの構造がわかりません。
  A:FM TOWNS版EM-7のドキュメントにファイルフォーマットの説明があります。こちら
    を参照して下さい(とは書いてあるが見当たらない(汁))。
  Q:D77ファイルの構造がわかりません。
  A:PC-88エミュレータP88SRの公式サイトに技術文書の形で公開されています。D88の説
    明をD77に読み替えて下さい。
  Q:D77ファイルではセクタステータスをどのようにサポートしていますか。
  A:仕様書では"DISK BIOSが返す値"となっていますがこれはPC-9800のDISK BIOSが返す
    値のことで、XM7では$B0のみサポートしています。この値のセクタを読み込むとCRC
    ERRORとして振る舞います。

  <テープ>

  Q:テープ音声を録音したWAVファイルからT77ファイルを作成することはできますか。
  A:Apolloさん作のWAV2T77で可能です。この場合サンプリングレートを可能な限り高く
    し(44.1kHz)、極力ノイズが混入しないように注意して下さい。
  Q:T77ファイルをマウントし、F-BASICからロードを試みても必ず失敗します。
  A:F-BASICではテープのモータをONにしたあと、回転が安定するまで1,2秒待っていま
    す。この間を考慮して、RUN"CAS0:"[CR]などの後数秒待ってマウントして下さい。
  Q:テープの書き込み保護はできますか。
  A:T77ファイルの属性をRead Onlyにすることで、録音禁止(テープの爪を折った状態)
    として扱います。
  Q:テープの巻き戻し・早送りを行なうと、長時間XM7が応答しません。
  A:仕様です。これはT77ファイルの最小単位(2バイト単位)でマーカ位置の検索を行な
    っているためです。最初まで巻き戻し機能はマーカ位置の検索ほ行なわず、単純に
    ヘッダを除いたT77ファイルの先頭位置に戻すだけなので非常に高速です。
  Q:T77ファイルのサイズが数MB〜数10MBになるのですが、異常ではないですか。
  A:正常です。これはFM-7のテープインタフェースから読みとれる最低レベルのデータ
    をそのままファイル化しているためで、効率そのものは非常に悪いです。

  <画面・速度>

  Q:全画面モードの設定を"640x400"にしていても、設定されていないようです。
  A:設定できるかどうかはビデオドライバに依存します。全画面モードの解像度設定は
    優先度の設定であり、失敗すればもう一方(例えば"640x480")を使って試みます。
  Q:他のエミュレータでよくあるようなフレームレートの設定はないのですか。
  A:ありません。XM7ではフレームレートは常に"自動"として扱われます。最小2フレー
    ム、最大約55フレーム or 約60フレームの範囲内で負荷に応じて変化します。
  Q:フレームレートを確認するにはどうすればよいですか。
  A:スケジューラウインドウを開いてみて下さい。"Frame Rate"の項目2つで確認できま
    す。Totalはウインドウオープン後の平均、Latestは最近2秒間の値です。
  Q:ソフトによってフレームレートが急激に落ちたり、テンポ落ちが起こります。
  A:直線補間・論理演算LSIの使われ方によって負荷が大きく変化するためです。例えば
    "AMNORK"や"Dragon Buster"は負荷が非常に大きいため、落ちやすくなります。
  Q:スケジューラウインドウで、メインタイマーの速度が交互変化しています。
  A:メインタイマーは4.9152MHzのXtalから作られています。つまり周期が2.0345msであ
    り、XM7では2.034msと2.035msとを交互に発生させて近似しています。
  Q:ラスタ単位でレンダリングを行なった場合のメリット・デメリットは。
  A:ラスタ単位でのレンダリングを行なうことにより、ラスタスクロールの再現が可能
    となり、◎h!FM掲載の「ゆらぎの世界」シリーズが動作するようになります。
    また、「METAL-X-」シリーズの敵キャラが表示されない不具合が解消されます。
    逆にデメリットとしては、毎フレームの毎ラスタごとにレンダリングを行なうよう
    になるため、マシンへの負荷が増え、フレームスキップ等が発生しやすくなります。
  Q:ラスタ単位でのレンダリング対応で「画面描画タイミングを表示終了期間直後にす
    る」機能はなくなりましたか。
  A:GUIから設定する機能はなくなりましたが、INIファイルを直接書き換えることで対
    応できます。XM7.iniの[Screen]セクションに「DrawAfterVSYNC=0」と書いてくださ
    い(旧バージョンの「DrawTiming」と値が逆な点に注意してください)。
  Q:400ラインタイミング出力レジスタの設定方法は。
  A:XM7.iniの[Unofficial]セクションに「400LineTiming=1」と書いてください。
    ただし、画面表示には影響しませんし、F-BASIC V3.4L2xで26万色モード(SCREEN@3)
    が使えなくなるだけなので、機能的なメリットはありません。

  <サウンド>

  Q:FM音源・PSG音源・BEEP音源の各ボリュームを調節したいのですが。
  A:今までは未対応でしたが、V3.4L30からボリューム比の変更に対応しました。
  Q:ステレオ設定で音量バランス(パンポット)がきちんと分かれていないようです。
  A:V3.4L30から「チャンネルセパレーション」の設定が可能になりました。デフォルト
    では従来バージョンと同じ左右70%:30%近辺の割合になるようにしています。このた
    め音が中央に寄ります。
    なお、この機能はROMEOで出力しているパートに対しては無効です。
  Q:オプション設定で標準OPN音源(FM-7モード時),WHG音源,THG音源をカットすると処理
    が軽くなりますか。
  A:内部処理ではリセットの度に使用フラグをクリアし、本当に使われた場合だけソフ
    トウェア合成を行なっています。このため未対応ソフトの場合はOFFにしている状態
    と変わりません。
  Q:FM音源・PSGのチャンネルマスク機能の操作方法は。
  A:[表示]→[FM音源/PSGディスプレイ]で開くFM音源ディスプレイウインドウ上の鍵盤
    に対して以下の操作を行なえます。
      左クリック      ：指定されたパートのミュート状態を切り換えます。
      左ダブルクリック：指定されたパート以外を全てミュート状態にします。
      右クリック      ：全てのパートのミュート状態を解除します。
    なお、この機能はROMEO/SCCIで出力しているパートに対しては無効です。

  <キーボード>

  Q:Windows2000を使っていますが、[半角/全角]を押した時にリアルタイムキースキャ
    ンが正常に動作せず、オートリピートOFFの状態でもリピートがかかります。
  A:WinNT系でのDirectInputの仕様による制限事項で、従来バージョンのようにキーロ
    ックがかかってしまうのを回避する処理を行なっているためです。この動作が問題
    となる場合は、キーマップ設定機能を使って別のキーを割り当てて下さい。
    対策処理を行なっているのは[半角/全角]、[Caps Lock]、[ひらがな]の3つのキーで
    すが、[左Ctrl]、[右Ctrl]でも不具合が出るケースがあるようです。
    また、PC-9801キーボードの場合にもキーロックがかかる[CAPS]、[かな]キーにつ
    いて同様の対策処理を行なっています。
  Q:英語配列キーボードと日本語配列キーボードを機種によって使い分けているため、
    キーマップの自動設定機能を使いたいのですが。
  A:XM7.iniの[Unofficial]セクションに「AutoDetectKeyMap=1」と追加してください。
    キーマップ自動設定が有効な時には、GUIからのキーマップ設定は使用できません。

  <ジョイスティック>

  Q:FM特有の[5]キーストップを、ジョイスティックを使って回避できるそうですが。
  A:ジョイスティック設定でタイプを"キーボード"にし、センターを[5]に割り当てて下
    さい。センターに戻ったときに1回だけ[5]キーのMake/Break動作を行ないます。
  Q:ISA互換ゲームポートを使っていますが、重いポーリングを抑制するには。
  A:ジョイスティック設定で、ポート1・ポート2ともにタイプを"使用しない"に変更し
    てください。ゲームポートの定期ポーリングを行なわなくなります。
  Q:ジョイスティックのタイプで選択可能な"電波新聞社JOY I/F"とは何ですか。
  A:FM-7時代に電波新聞社から発売されたプリンタポート接続のジョイスティック"XE-
    7"/"XE-77"のインタフェースです。"ゼビウス"などが対応しています。
  Q:ジョイスティックのタイプで選択可能な"ASCII QuickShot"とは何ですか。
  A:FM-7時代にアスキーから発売されたプリンタポート接続ジョイスティックのインタ
    フェースです。"ザ・キャッスル"などが対応しています。
  Q:ジョイスティックのタイプで選択可能な"◎h!FM JOY I/F"とは何ですか。
  A:FM-7時代に日本ソフトバンクから刊行されていた雑誌"◎h!FM" 1984年9月号に記事
    が掲載されていたプリンタポート接続の"◎h!FM標準ジョイスティック"です。"リン
    グの上は大さわぎ"、"ぐっちゃんばんく"などが対応しています。
  Q:プリンタポート接続ジョイスティックとプリンタ出力/ジャストサウンドエミュレー
    ション機能の併用はできますか。
  A:電波新聞社JOY I/F、ASCII QuickShot、◎h!FM JOY I/Fとプリンタ出力/ジャストサ
    ウンドエミュレーション機能の併用はできません。どちらか一方のみの使用となり
    ます。

  <マウス>

  Q:タッチパネルでのマウスエミュレーションはできますか。
  A:できません。マウスは移動距離を相対座標で返すのに対して、タッチパネルは絶対
    座標を返してくるためです。(名称がややこしいですが)ノートPCのいわゆる「タッ
    チパッド」でのマウスエミュレーションはできます。
  Q:マウスセットのPTMのEクロック使用時の割り込み間隔精度が甘いようですが。
  A:仕様です。現状ではとりあえず純正マウスドライバが動くように,最低限Cクロック
    で駆動した場合の精度はある程度確保できるようになっていますので、Eクロックの
    精度は重視していません。

  <デバッガ>

  Q:デバッガの使い方がわかりません。
  A:逆アセンブルウインドウで左クリックするとブレークポイントを設定します。また
    ブレークポイントウインドウで左クリックすると該当アドレスへジャンプします。
  Q:左クリック・右クリック・左ダブルクリックの機能があるウインドウは。
  A:左クリックについては逆アセンブル/ブレークポイントの各ウインドウ、右クリック
    はCPUレジスタ/逆アセンブル/メモリダンプ/ブレークポイントの各ウインドウ、左
    ダブルクリックはCPUレジスタ/メモリダンプの各ウインドウです。
  Q:CPUレジスタやメモリの書き換え機能はありますか。
  A:あります。各ウインドウで変更したいCPUレジスタ/メモリアドレスを左ダブルクリ
    ックしてください。書き換えた内容はCPUレジスタ/メモリ/I/Oポート全てに関して     即時反映されます。
  Q:ブレークポイントを設定すると重くなりますか。
  A:メインCPU・サブCPUともに1命令実行ごとにチェックを行なうため、数%ですが重く
    なります。
  Q:物理アドレスでの逆アセンブル・ブレークポイント設定はできませんか。
  A:できません。前者はインデックスモードでのアクセスをどうするかの問題があり、
    後者はXM7の構造上、非常に難しいためです。
  Q:CPUレジスタ表示内の"IR"とは何ですか。
  A:CPUエミュレーション上設けた疑似レジスタです。NMI等の割り込み要求フラグや、
    SYNC/CWAIといった同期命令の管理を行なうためのもので、"InterRupt"の略です。

  <設定>

  Q:CPU速度の設定を変更するとどうなりますか。
  A:大きくすると仮想マシンのCPU速度は速くなりますが、処理は重くなります。小さ
    くするとその逆に遅くなります。デフォルトの値は適当なベンチマークプログラム
    をでっちあげてそれを参考に決定したものなので、変更するメリットはあまりない
    と思います。
  Q:テープモータオン時のフルスピード動作とは何ですか。
  A:テープモータが回っている間だけ、仮想マシンの実行速度を上げてロード時間の
    短縮を図る機能です。
  Q:テープモータオン時のフルスピード動作がデフォルトではメインCPUのみ全力駆動
    になりますが、旧版のように速度調整省略にすることはできますか。
  A:できます。全般ページの「テープモータオン時の動作を速度調整省略にする(C)」を
    チェックしてください。
  Q:全力駆動モードとは何ですか。
  A:CPUパワーに余裕がある場合に、その余裕分だけ仮想マシンのCPU速度を上げます。
    「テープモータオン時のフルスピード動作」と異なり、タイマー間隔や時計などの
    CPU以外の部分の速度は変わりません。なお、ソフトウェアタイマーでタイミングを
    取っている場合(テープの読み書き、FLEXなど)は正常に動作しなくなりますので、
    この場合は設定をオフにしてください。
  Q:自動速度調整機能とは何ですか。
  A:全力駆動モードとは逆に、CPUパワーが足りない場合に、自動的に仮想マシンのCPU
    速度を5%〜100%の間で調節して描画やイベントの実行時間を確保します。処理が間
    に合っていればCPU以外の部分の速度は変わりません。CPUのエミュレーションに時
    間を取られて常時2fps程度しか出ないような状況で有効です。ただし、厳密な実行
    タイミングを要求するソフトは動作しなくなる可能性があります。
  Q:オプション設定でビデオディジタイズカードを無効にした場合、どうなりますか。
  A:ビデオディジタイズカードはI/Oエミュレーションを行なっていないため、特にどう
    ということはありません。VMレベルでカード無しとして処理されるのみです。

  <ツール>

  Q:画面キャプチャ機能は、どのタイミングで画面をセーブしますか。
  A:ファイル入力ダイアログボックスでファイルを入力して、[OK]が選択された直後
    の画面です。このため予めVMを止めておくと良いと思います。
  Q:画面キャプチャ機能で、1ライン単位にセーブされる(ラインが抜ける)のは。
  A:画面表示に合わせた仕様です。設定で"ウインドウモード時に24kHz表示をエミュレ
    ート"にチェックを入れた状態でキャプチャすると、ラインが抜けない状態(フルス
    キャン)でセーブされます。
  Q:WAVキャプチャ機能の使い方は。
  A:WAVキャプチャを開始するとチェックマークがつき、音出力監視状態に入ります。
    その後何らかの音が出力され始めた瞬間から逐次セーブを始めます。
  Q:WAVキャプチャ機能を使おうとすると、エラーが出て開始できません。
  A:指定されたファイルが書き込みオープンできないか、サウンドバッファの設定値が
    700ms以上になっているかのどちらかの場合にエラーを出します。

  <個別の互換性>

  Q:"デスフォース"のオープニングでハングします。
  A:CPU速度を変更して下さい。たとえばメインCPU、サブCPUともに1752に設定すると
    動作します。これはCPU間の通信制御が甘く、お互いの進行が少しズレただけで
    デッドロックするからです。
    V3.3/V2.8以降ではデフォルト設定でほとんどの場合に動作するように改善されて
    いますが、「マウスセットを使用する」状態ではスケジューリングタイミングの微
    妙な揺らぎでハングすることがあります。
  Q:FM77AV用OS-9 Level 2を起動すると画面が崩れます。
  A:動作機種をFM77AVに変更するかディスクドライバにパッチを適用してください。
    FM77AV用OS-9のディスクドライバ(disk)がFM-77では1MB FDD/400ライン関係で使用
    されていてFM77AV40では新たに画面モード制御関係の機能に変更されたI/Oポート
    ($FD04)を誤って操作してしまうため、画面モードが26万色モードになります。
    詳細と修正方法は◎h!FM 1987年1月号「FMテクニカルノート」に載っています。
    (はせりんさんの「Retro PC Gallery」にも同様の情報があります)
    また、実機とは異なる動作となりますが、XM7.iniの[Misc]セクションに「SubMode
    Fix=1」と書くと回避できます。
    同様の問題が"ぐっちゃんばんく"のディスク版でも発生するようですが、この場合
    もターゲット機種をFM77AV以下に落としてやれば問題ありません。

  <その他>

  Q:今後のバージョンアップ予定は。
  A:今回で最終バージョンとなりますので、基本的にありえません。
  Q:Windows 8/8.1のModern UI版やWindows 10のユニバーサルアプリ版、macOS版など、
    Win32以外の環境で動作するバージョンの開発予定は。
  A:その他のプラットフォームに対してのポーティングの予定は全くありません。
  Q:追加して欲しい機能、動くようにして欲しいソフトがあるのですが。
  A:今回で最終バージョンとなりますので、対応できません。


□連絡先

  ホームページ
  http://retropc.net/ryu/xm7/ (もう誰も見向きもしないXM7のぺーじ)

  メールアドレス
  ryu.takegami@mbg.nifty.com (個別に返信を出すことはあるかもしれません)

  Twitter
  https://twitter.com/RyuTakegami (XM7関連のツイートは滅多にしません)
  https://twitter.com/xm6_original (XM7原作者のＰＩ．さんのアカウントはこちら)
