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

  FM-7 EMULATOR XM7/XM7g (V1.1/V2.9/V3.4 L77TXβ3 ～ with Z80 card support)

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

  FDX support code
   Copyright (C) 2021 GIMONS

   External DLL support code by Toma
   ROMEO support code by usalin
   line printer support code by Ben.JP
   Icon designed by TENMARU

   Z80 emulation engine by Mamiya
   Z80 disassember core by Marat Fayzullin

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

□はじめに

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

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

  このバージョンでは、最大構成でFM-77L4(厳密には400ラインセット搭載のFM-77)の
  エミュレーションを行ないます。従って、FM-8、FM-7、FM-77(200ライン)等への下位
  互換性を持ちます。


□著作権

  XM7はＰＩ．、たけがみりうが著作権を所有し、XM7gはXM7の2名に加えGIMONSが著作権
  を所有する、クリエイティブ・コモンズ・ライセンス「表示 - 非営利 - 継承 4.0 国
  際 (CC BY-NC-SA 4.0)」によってライセンスされているソフトウェアです。
  ライセンス条項に関することについて、詳しくは以下のWebサイトを参照してください
  (以下のリンク先は日本語で記述されています)。

    https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ja

  使用・配布・翻案・改変についてはライセンスに従う限り自由です。

  クリエイティブ・コモンズのFAQと重複しますが、この作品は現状有姿、あるがままの
  かたちで提供され、ユーザーは自己責任で使用することになります。この作品を使用
  した結果、ユーザーやユーザーの所有物であるPCに不利益・損害等が発生した場合で
  も、著作権者にその責任を追及することはできません。

  翻案・改変された作品のバイナリの公開は、意図的にウイルス等のマルウェアを混入
  させないことを条件に、ライセンスに従うかたちで自由に行なっていただいて構いま
  せん。

  ROMファイルの使用については必ず著作権者(主に富士通クライアントコンピューティ
  ング社・マイクロソフト社)の意向に従ってください。なお、XM7同梱のSAVEROMユーテ
  ィリティシリーズは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開発者のトマさんのお二
  人に協力していただきました。

  Z80コアにはMamiya氏の「KMZ80」、Z80逆アセンブラには、ベースとしてMarat Fayzul
  lin氏のfMSX用Z80逆アセンブラを採用させていただきましたので、XM7/XM7gの商用利
  用はできません。

  初期のXM7 V3の実装においてはNIFTY SERVE FTOWNS(FM TOWNSフォーラム)/FRAV(リア
  ルタイム通信フォーラム)のリアルタイム会議(チャット)での雑談が非常に参考になり
  ました。


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

  XM7 V1.1/V2.9/V3.4L77SX+z10 R4→L77TXβ3の変更点一覧です。

  <新規>
    ・デフォルトキーマップ読み込み機能をリスト化。
      それに伴い以下のキーボードマップを追加 (2025/02/03)
      ・瑞起 X68000 Z キーボード(Windowsモード専用)
      ・Lenovo ThinkPad 6段キーボード(日本語用、ThinkPad X395にて確認)
      ・Panasonic Let'snote Escの隣に半角/全角があるキーボード用(一応日本語用)
    ・ユーザーキーマップのセーブ/ロード機能を追加 (2025/02/10)
    ・XM7dash/XM7 TypeRに搭載されている外部画像フィルタDLL機能を追加
    ・全力駆動モード時(CPUのみ、VM全体とも)に日本語サブ除くCPUの速度比率がタイ
      トルバーに表示されるようになった
    ・GIMONSさん純正XM7gに準拠したFDXサポート機能を追加(XM7gのみ)

  <修正>
    ・DOSモードでのホットリセットが正常に働かなかった問題を修正
      (いつからなのかは調べてませんが結構昔からあったかも、これ…)
    ・2D/2DD/VFDファイルをマウントしているときにファイル履歴が使えない問題を修
      正(…というか某ほげ氏の手抜きではｗ)
    ・L77SX+z10.5β4で追加した外部画像フィルタ機能使用時、4096色モード時に落ちる
      問題を修正

  <変更>
    ・「時刻アジャスト」機能を「時刻をホスト側に同期」に名称変更
      それに伴い、常に時刻をホスト側に同期する機能を追加
    ・ファイル履歴の数を15個に増加
      (10個目以降のファイルは16進数のキーで選択可能です)
    ・ホットリセット機能/TAB+リセット機能を削除
      (Esc(STOP)やTABを押しながらF12(vf・2)でリセットするとホットリセット・TAB+
       リセットが可能です。これは結構前からこうなってました)
    ・FM77AVシリーズエミュレータであるV2/V3もZ80カードに仮対応
      (はせりんさんによると、とりあえずOh!FM掲載の63K CP/Mは動作するそうです)
    ・Intel HD Graphics 3000で不具合が生じてしまったため、GPD WIN系などの内部が
      縦画面処理されているハードへの対策処理を設定ダイアログの画面タブで設定す
      る方式に変更
    ・その他、表に見えない部分での修正多数
      (今度某機能のソースを削除しよう…)


□動作環境

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

  ・Windows 95/98/NT 4.0/2000に関しては、IBM PC ATおよびその互換機(日本で「DOS/
    V機」などと呼ばれていたもの、「DOS/V機」に含まれないNEC PC98-NXシリーズもこ    れに含みます。また、オリジナルのIBM PC ATでは32ビットWindowsは動きませんが
    …)、NEC PC-9821シリーズのみサポート対象とします。EPSON PC-x86シリーズ用Wi
    ndows 95に関しては動作保証外(たぶんPC-9800シリーズ程度には動きます)、富士
    通 FMR/FM TOWNS II用Windows 95に関してはDirectXに正式対応していないため、
    正常に動作しません(具体的には起動はしますが、キー入力ができません)。

  ・Windows 95/98/Me/NT4.0/2000/XP/Vista/7/8/10(22H2以外)はマイクロソフト社のサ
    ポートが既に終了しています。Windows 10のサポートは2025年10月14日(だったっけ
    ?)に終了します。
    OSのセキュリティ上のリスクを理解したうえでご利用ください。

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

  ・メーカー製PCにおいて、Windows Meは激しく推奨しません。
    理由はお察しください。(注:ネタではありません)

  ・WindowsNT 4.0ではService Pack 3以降が必須です。

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

  ・WindowsNT系(NT4.0/2000/XP/Vista/7/8/8.1/10/11)では一部キー入力に制限があり
    ます。問題がある場合はXM7のキーマップ設定機能を使い、キーボードの再割り当て
    を行なって下さい。

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

  ・SCCI対応機能は実装してありますが、開発者の「がし3」さんの意向によりSCCI2へ
    の移行が予定されていますので(もうしたのかも)、封印してあります。

  ・GPD WIN系などの内部処理が縦向き画面になっているハードで使用する場合、INIフ
    ァイルの[Screen]セクションに「RotateFix=1」と記述してください。さもないと、
    フルスクリーン時に画面の右側の表示が異常となります。

  ・Windowsでの動作検証は、公開時点での最新OS(Windows 11)においてはInsider Pre
    viewのRelease Previewチャネル、Windows 10/7については最新バージョン(10なら
    22H2)で行なっています。
    最近はWindows 8系、Vistaでの動作検証はしていません。めんどくさいのでｗ


□ディスプレイ描画(外部DLLの使い方)

  XM7は外部画像フィルタDLLに対応しています。
  外部DLL使用時には非整数倍拡大および表示アスペクト比の変更が可能です。

  XM7.exeと同じフォルダに該当するDLLがあった場合、ウィンドウモード時の描画処理
  に外部DLLを使用することができます。iniファイルで特に指定しない場合、stretch.
  dllが使用されます(ない場合は何も起きません)。

  動作設定プロパティで選択も可能です。
  一度実行するとXM7.iniの[Screen]セクションにDllList0から8までのキーが追加さ
  れるので、そちらを変更することで別のDLLへ変更も可能です。
  他にもいくつかいじれる設定はありますが、変更は自己責任でお願いします。

  外部画像フィルタDLLは各位で導入してください。
  ダウンロードは以下のねねっち氏(895氏)のサイトからお願いします。
  なお、現状で動作保証している外部画像フィルタDLLはstretch.dllのみです。

    (仮)でゲソ
    http://nenecchi.kirara.st/


□Win32メニュー(旧バージョンからの変更箇所のみ)

  表示(V)
    表示サイズ(Z)               ウインドウモード時の表示サイズを設定します。
      アスペクト比調整(E)       画像フィルタDLL使用時にアスペクト比を調整します。
      アスペクト比設定(A)       上記機能使用時のアスペクト比を設定します。

  ツール(T)
    時刻をホスト側に同期(A)     VMのRTCの時刻をWindows側に合わせて再設定します。
    常に時刻をホスト側に同期(Y) VMのRTC時刻を常にWindows側に合わせます。
    画像フィルタ(I)             使用する外部画像フィルタDLLを指定します。


□作者のたわごと

  最近ネタ切れ疑惑がささやかれているXM7 L77TXの3発目のβ版です。
  今回もGIMONSさんあたりからの積極的な動作検証をお願いします(違)。

  今回はリセット周りとファイル履歴機能に手を入れてます。
  変更点のところにも書きましたが、dashからファイル履歴周りを移植した際に某りゅ
  氏(しらじらしい…)がポカやらかしまして2D/2DD/VFDファイルをマウントしている場
  合にファイル履歴が表示されませんでした。ごめんなさい m(__)m
  ついでに履歴の数が約1.5倍(当社比)に増えました。

  Webサイトの再公開も激しく延期中ですが、果たして工事は完了するんだろうか…と不
  安になりつつありまつ(って主な原因はぐれぇと金欠…)。それでは次回…はあるのか?

  <XM7 TypeR・XM7 V3・XM7改 開発スペック>
  設計開始日時   2001年2月28日 (XM7改 V3.0L0.0)
  開発開始日時   2001年3月10日 (XM7改 V3.0L0.0)
  開発終了日時   2025年3月24日 (XM7/XM7g V3.4L77TXβ3)

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

  主要ハード     開発マシン1:Lindwurm5 (powered by Sycom。今回はこっちメイン)
                   ASRock B550M Steel Legend (AMD B550 Chipset)
                   AMD Ryzen 7 5700X(Vermeer) 3.40GHz 8C/16T
                   64GB RAM, 1TB NVMe SSD(ゐンテル改めSolidigm) + 4TB HDD(WD)×2
                   ASUS PHOENIX RTX 3060 V2 (GeForce RTX 3060, 12GB)
                   Creative SoundBlaster X-Fi Titanium Professional Audio
                   Windows 11 Version 24H2 Build 26100(x64)
                   Windows 7 Ultimate Service Pack 1(x64,on VMware Workstation)
                 開発マシン2:Xiuhcoatl2 (Wyvern3よりこっちを使うようにｗ)
                   Lenovo ThinkPad X395  Type-20NMS1VR00
                   AMD Ryzen 5 PRO 3500U(Picasso) 2.10GHz 4C/8T
                   8GB RAM, 512GB NVMe SSD
                   AMD Radeon Vega Mobile Gfx
                   Realtek High Definition Audio
                   Fibocom L850-GL (M.2 LTE Card)
                   Windows 11 Version 24H2 Build 26100 (x64)
                 開発マシン3:Wyvern3 (早くFnのキートップを何とかしないとｗ)
                   Panasonic Let'snote SV7 CF-SV78SJQP
                   Intel Core i7-8650U(Kaby Lake-R) 1.90GHz 4C/8T
                   16GB RAM, 256GB SATA SSD
                   Intel UHD Graphics 620
                   Realtek High Definition Audio
                   Windows 10 Version 22H2 Build 19045(x64)
                 検証マシン1:Lindwurm4 (元powered by Sycom。グラボとSSDがそれ)
                   ASUS PRIME B550M-K (AMD B550 Chipset)
                   AMD Ryzen 7 3700X(Matisse) 3.60GHz 8C/16T
                   16GB RAM, 512GB NVMe SSD
                   GIGABYTE GV-N1060IXOC-6GD (GeForce GTX 1060, 6GB)
                   Creative SoundBlaster X-Fi Professional Audio
                   Windows 11 Insider Preview (x64)
                 検証マシン3:新Tamagorou (4K環境用。HDMI端子はSwitchと兼用)
                   DELL Optiplex 3060
                   Intel Core i5-8500(Kaby Lake-R) 2.10GHz 4C/8T
                   16GB RAM, 256GB M.2 NVMe SSD + 1TB HDD(海門)
                   Intel UHD Graphics 630, AMD Radeon RX550X(ファンがあぼん)
                   Realtek High Definition Audio
                   Windows 11 Version 24H2 Build 26100 (x64)
                 検証マシン3:Suzaku (Saitamaの後なのに名前が比較的マトモｗ)
                   VAIO Corporation VAIO Pro PG  VJPG11C11N
                   Intel Core i5-8250U(Kaby Lake-R) 1.60GHz 4C/8T
                   8GB RAM, 256GB M.2 SATA SSD
                   Intel UHD Graphics 620, Realtek High Definition Audio
                   Windows 10 Version 22H2 Build 19045 (x64)
                   KLUE(Kona Linux Ubuntu Edition) 6.0 KDE (x64)
                 検証マシン4:Saitama (もう名前を考えるのが面倒だったｗ)
                   NEC VALUESTAR W PC-VW770FS6C
                   Intel Core i7-2670QM(Sandy Bridge) 2.20GHz 4C/8T
                   8GB RAM, 500GB SATA SSD
                   Intel UHD Graphics 3000
                   Realtek High Definition Audio, YAMAHA Speaker System
                   Windows 11 Version 24H2 Build 26100 (x64,無理矢理入れたｗ)
                 ターゲットマシン
                   FM77AV40EX, FMT-DP531
                   FM77AV40SX, FMDPC232D, SONY KDL-20J1 / SHARP 4T-C43DN2
                   FM77AV-2, FMTV-152, ビデオディジタイズカード(FM77-411)
                   FM-77L4, CZ-600DB
                   FM-NEW7, PC-KD252, マイクロフロッピィディスクドライブ
                   (MB27631H)
                   FUJITSU MICRO 8, CZ-600DB/PC-KD252

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


□連絡先

  ホームページ
  http://retropc.net/ryu/xm7/ (さらにしにかけてますｗｗｗｗｗ)

  Twitter(現X)
  https://x.com/RyuTakegami (現在自粛中。DMの返事はします)
