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

  FM-7 EMULATOR XM7dash (V3.4L77R26)

  for Win32
  Copyright (C) 1999-2015 ＰＩ．
  Copyright (C) 2001-2015 Ryu Takegami
  Copyright (C) 2010-2016 Toma
  All rights reserved.

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

□はじめに

  XM7dashは、FM-7エミュレータXM7のソースを再利用した改造版です。
  XM7はＰＩ．氏および、たけがみりう氏の著作物であるため、XM7dashはその使用規定
  に基づき公開しています。
  大変有用なソフトウェアを公開してくださった両氏には敬意を表します。

  本改造版は、XM7SRC.TXTに記述されていた
  > 実機・資料の入手が難しい過去の機種の、詳細なドキュメント・仕様書となり得ま
    すので、電子保存の意味でも公開すべきだと考えます。
  に感銘し、ならばなおいっそう実機に近いものにしていくべきで、それに協力したい
  という思いから、公開することに致しました。

  本改造版はあくまでも派生版の一種にすぎません。
  本改造版に対する問い合わせは私宛にXM7dash公開サイトの掲示板などへお願いしま
  す。

  オリジナルXM7に同等機能の追加や修正が加わり本改造版の存在意義が無くなった際は
  公開終了します。
  本改造版のソースからオリジナルXM7への引用があった場合に、その後Copyrightを主
  張するつもりも特にありません。
  元々私の作品ではありませんし、実機再現率の向上、仕様の正確性の向上が目的です
  ので。

  私個人の考えですが、ソフトウェアは複数の開発者でソースを共有し、よりよいもの
  を構築していく形が理想と思っています。
  そういう意味で、これに賛同して第四・第五の開発者・協力者が現れるのに、ほんの
  少し期待しています。


□本アーカイブについて

  FM-7 EMULATOR XM7 (V3.4L30)を元にした改造版「XM7dash V3.4L77R26」の
  アーカイブです。
  本ファイルはXM7dashにおける変更点のみ記述します。
  よって詳細は同梱のXM7.txtをご参照願います。
  XM7.txtはオリジナルXM7(V3.4L77)に付属のものを添付しています。


□前改造版からの変更点

  XM7dash V3.4L77R25→V3.4L77R26の変更点一覧です。

  <追加>
  ・サウンド出力モードに「ステレオ(反転THG)」を追加。

  <変更>
  ・ステートセーブ・ロード時のエラーメッセージを存在エラー/未対応エラー/保存
    エラーで分割。

  <修正>
  ・初回起動時にステートファイルが存在しないエラーが表示されるため、起動時の
    ステート復旧時に保存ステートがなかった場合は通常起動する仕様に変更。


□オリジナルとの相違点

  XM7 V3.4L77→XM7dash V3.4L77R26の相違点一覧です。

  <新規>
  ・FM77AV20モード、FM77AV20EXモード、FM77AV40モードを追加。
  ・MMRサブウィンドウに学習RAMのEnable情報、高速MMRモードの表示を追加。
  ・クリップボードの文字列を擬似的にキー入力する機能を追加。
  ・外部画像フィルタDLLに対応。現状ウィンドウモード時のみ。表示サイズを0.5倍の
    320×200ピクセル、1.2倍の768×480ピクセル、1.5倍の960×600ピクセル、1.8倍の
    1152×720ピクセルで表示させるモードを追加。
  ・外部画像フィルタDLL使用時に限りアスペクト比調整機能を追加。デフォルトはON時
    0.899(0.4495)。比率はアスペクト比設定サブウィンドウで変更可能。
  ・フロッピーディスクドライブで「#0,1両ドライブを交換する」「#2,3両ドライブを
    交換する」機能を実装。
  ・フルスクリーンの画面モード選択肢に「現在の画面モード (整数倍拡大)」を追加。
  ・外部音源DLLに対応。詳細はサウンド出力の項を参照。
  ・ステート、ディスク、テープのファイル履歴の保存に対応。
  ・マウント状態の保存に対応。ベタイメージファイルに対する書き込み禁止設定の
    保存にも対応。
  ・GUIメニューに漢字ROM、カセットテープ、ラインプリンタ、割り込みサブウィンド
    ウ（メインCPU/サブCPU）を追加。(XM7 V1.0で実装されていた仕様に準拠)。
  ・サウンド出力モードをステレオにしている際、FM音源ディスプレイでどちらから出
    力されているか確認できるようにした。
  ・サブウィンドウのポップアップスタイルに対応。デフォルトはOFF。
  ・サブウィンドウ表示状態の保存に対応。デフォルトはOFF。再起動後「全て復元」を
    行うことで、前回終了時のサブウィンドウを再現可能。起動時に自動で復元させる
    ことも可能。サブウィンドウポップアップモード変更時に保存はクリアする。
  ・ブートモード、メインウィンドウ位置、フルスクリーンモード、ステータスバー、
    カレントディレクトリの保存スイッチを追加。デフォルトはON。
  ・固定のステートファイル名(デフォルトでは"STATE.XM7")でステートセーブおよび
    ロードするクイックセーブ・クイックロードをGUIメニューに追加。
  ・終了時および起動時にそれぞれ自動でクイックセーブ・クイックロードする機能を
    追加。デフォルトはOFF。
  ・ステートの上書き保存時に、既存ファイルを"ファイル名_##.XM7"とファイル名を
    変更して保存しておく機能に対応。##は00からの通し番号であり、99まで。00〜99
    まで存在すると99に上書きする仕様。デフォルトはOFF。
  ・ファイル履歴にコンテキストメニューを追加し、履歴から削除できる機能を追加。
  ・D77ファイルメディアリストにコンテキストメニューを追加し、ディスクタイトル
    (ラベル)の変更を行える機能を追加。
  ・天丸さん作成のアイコンを元にしたFM77AV20、FM77AV40、FM77AV20EXのアイコンを
    追加。

  <変更>
  ・GUIメニューのドライブ0、ドライブ1を統合しディスク(I)を追加。
    詳細はWin32メニューの項を参照。
  ・ファイル履歴によってほぼ同等の操作が可能なため「一時取り出し」を廃止。
    一時取り出し状態で保存されたステートをロードすると、ファイル履歴に追加して
    アンマウントする。
  ・ドライブ2および3のアクセスインジケータは、どちらかのドライブにマウントした
    際に追加表示する。
  ・メディアタイトルの文字数がアクセスインジケータの表示可能文字数を超えた際、
    種別(拡張子)のみを表示する。
  ・マウント中はGUIメニューのドライブ(I)にファイル名付きで子メニュー表示するよ
    うに変更。このため、2D/VFDファイルに関しての孫メニューに表示されるマウント
    ディスクファイル種類表示は廃止。
  ・キャプションへの表示情報に最後にロード／セーブしたステートを追加。
    これはリセットによってクリアする。(XM6の動作仕様に合わせた)
  ・マウントしたフロッピーディスク、テープ、バブルカセットイメージファイル名の
    キャプションへの表示をXM7の動作設定で表示・非表示設定できる仕様に変更。
    ただし、表示設定にしても#2〜3のマウントファイル名は表示出来ない。
  ・標準FM音源/WHG音源/THG音源にアクセスした後に動作設定プロパティで各スイッチ
    をOFFにした場合リセットする仕様に変更。
  ・ステートファイルのヘッダ文字列をXM7と区別できるよう変更。
  ・XM7がステートファイルの拡張を行った際、本改造版で無条件にロード出来てしまい
    不具合が起きるのを防ぐため、改造版公開時に入手可能なXM7のソースコードで保存
    可能なステートの内部バージョン番号より大きな番号のステートファイルはロード
    出来ないように変更。
  ・逆アセンブルサブウィンドウ上で「実行中はPCに同期」がOFFの時「トレース」で
    同期しないように変更。
  ・メインシステムのメモリダンプ・逆アセンブルサブウィンドウで物理アドレスや
    セグメント指定で表示できるように変更(64KB単位)。ただしデバッガ、ジャンプ
    CPUレジスタ、システムスタック、ブレークポイント指定は論理アドレスモード時
    以外使用不可。割り込みベクタ、I/Oエリア指定は物理アドレスモード時では使用
    不可。
  ・V3の隠し機能であったドライブ変更抑制制限を、4ドライブ実装したことによる必要
    性の低下、および実機通りの動作を再現させるため解除。
  ・メモリダンプ・逆アセンブルサブウィンドウについては、dashで先行実装していた
    物理アドレスモードと衝突するため、オリジナルXM7と統合していません。

  <修正>
  ・THG割り込みステータス読み込み時にTHG有効フラグをチェックしていなかった問題
    を修正。
  ・Visual C++でビルドした際のワーニングを軽減。


□仮想マシン

  同梱のXM7.txtからの変更点を記述します。

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

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

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

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

  以下の仕様はFM-7, FM77AVモード時に追加されます。

    プロセッサ     日本語サブ  6809(MC68B09相当  クロック1.2MHz)
    RAM            日本語サブワークRAM 8KB
    ROM            辞書アクセスルーチンROM 16KB


□ROMファイル

  同梱のXM7.txtからの変更点を記述します。

    ファイル名   サイズ
    KANJI   .ROM 131072 JIS78 第1水準漢字・非漢字 (FM-7用)
    KANJIA  .ROM 131072 JIS78 第1水準漢字・非漢字 (FM77AV用)
    KANJI1  .ROM 131072 JIS83 第1水準漢字・非漢字 (FM77AV20/40/20EX/40EX/SX用)
    KANJIN  .ROM 131072 JIS78 第1水準漢字・非漢字 (日本語通信カード用)

    KANJI1.ROMは必須です。
    KANJI.ROM、KANJIA.ROM、KANJIN.ROMはなくても起動します。

  第1水準漢字ROMを複数用意した際に使用する優先順位は以下の通りです。

  FM-7(日本語通信カード無効)モード
    KANJI.ROM→KANJI1.ROM
  FM77AVモード
    KANJIA.ROM→KANJI.ROM→KANJI1.ROM
  FM77AV20/20EX/40/40EX(SX)モード
    KANJI1.ROM(必須なので他のROMは使用しません)
  日本語通信カード側漢字ROM
    KANJIN.ROM→KANJI.ROM→KANJI1.ROM

  日本語通信カード側漢字ROMのI/Oアドレスを、実機のディップスイッチ9番の感覚で
  変更可能です。(ON:$FD20, OFF:$FD28)
  FM-7モードで本体側漢字ROMをOFF、日本語通信カードをON、漢字ROMスイッチをON
  ($FD20)に設定することで、日本語通信カード側漢字ROMで実行可能です。

  漢字ROMカード有効時やFM77AVモード時も漢字ROMスイッチをON($FD20)にすることが
  可能ですが、この場合漢字ROMカードや本体側漢字ROMが優先されます。

  漢字ROMのチェックを強化したため、JIS78準拠エミュレーションは廃止しました。


□キーボード

  クリップボードの文字列を擬似的にキー入力する機能に対応しています。
  一度実行するとXM7.iniの[Keyboard]セクションにPasteWait, PasteWaitCntlキーが
  追加されるので、各位で適正値を設定してください。
  デフォルト値(0)では本機能無効となっています。
    PasteWait       通常キー入力時のウェイトタイム
    PasteWaitCntl   コントロールキー入力時のウェイトタイム
  環境によりますが、
    PasteWait=20
    PasteWaitCntl=200
  程度が適正値のようです。


□サウンド出力

  外部音源DLL(V1)に対応しています。
  一度実行するとXM7.iniの[Sound]セクションにDllList0から8までのキーが追加され
  るので、そこへDLLのファイル名を記述してください。
  フルパスの必要はありません。
  XM7.exeと同じフォルダまたはパスの通ったフォルダに該当するDLLがあった場合、
  FM音源エミュレーション時に内蔵音源エンジンの代わりにそちらを使用します。
  Win32メニューで音源エンジンの選択も可能です。

  外部音源DLLは各位で導入してください。

  ※外部音源DLL(V1)使用時の制限事項
  ・FM音源合成時の線形補間(波形補間)が動作設定に関係なく無効になる。
  ・外部音源DLLで鳴らしているパートのみ、FM音源ディスプレイのレベルメータが
    表示出来なくなる。(DLL側がGetBufferに対応していれば表示可能)


□ディスプレイ描画

  外部画像フィルタDLLに対応しています。デフォルトはstrech.dllです。
  XM7.exeと同じフォルダまたはパスの通ったフォルダに該当するDLLがあった場合、
  ウィンドウモード時の描画処理にそちらを使用します。
  Win32メニューで選択も可能です。
  一度実行するとXM7.iniの[Screen]セクションにDllList0から8までのキーが追加さ
  れるので、そちらを変更することで別のDLLへ変更も可能です。

  外部画像フィルタDLLは各位で導入してください。

  ※外部画像フィルタDLL使用時の注意事項
    一部外部画像フィルタDLLにおいて、Win32メニューを開いた箇所の再描画が
    されない場合があるため、この対策としてWin32メニューを閉じた際に強制的に
    画像を再描画しています。
    XM7.iniの[Screen]セクションにFilterRedrawScreenキーを0に変更することで、
    Win32メニューを閉じた際の強制再描画をOFFにすることが出来ます。


□Win32メニュー

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

  ファイル(F)
    クイックロード(K)     VMの状態をファイルからクイックロードします。
    クイックセーブ(Q)     VMの状態をファイルにクイックセーブします。
    (ファイル名)          VMの状態をファイルからロードします。

  ドライブ1,ドライブ0
    ドライブ(I)に統合し、削除しました。

  ドライブ(I)
    #0(#1、#2、#3も同様)
      開く(O)             ディスクイメージファイルを設定します。
      取り外す(E)         ディスクイメージファイルを取り外します。
      書き込み禁止(W)     現在選択しているディスクを書き込み禁止に設定します。
      (ディスク名)        D77ファイル内のメディアを切り替えます。
      (ファイル名)        ディスクイメージファイルを設定します。
    #0,1両ﾄﾞﾗｲﾌﾞで開く(B) ディスクイメージファイルをドライブ0,1に設定します。
    #2,3両ﾄﾞﾗｲﾌﾞで開く(H) ディスクイメージファイルをドライブ2,3に設定します。
    #0,1両ﾄﾞﾗｲﾌﾞを交換する(R)
                          ドライブ0,1に設定したディスクイメージファイルを交換
                          します。
    #2,3両ﾄﾞﾗｲﾌﾞを交換する(P)
                          ドライブ2,3に設定したディスクイメージファイルを交換
                          します。
    全イジェクト(E)       全てのディスクイメージファイルを取り外します。

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

  表示(V)
    漢字ROM(N)            漢字ROMウインドウを表示します。
    カセットテープ(T)     オーディオカセットウインドウを表示します。
    ラインプリンタ(P)     プリンタウインドウを表示します。
    ディスプレイサイズ(Z) ウィンドウモード時の表示サイズを設定します。外部描画
                          フィルタ未使用時はx1.0およびx2.0のみ有効です。
    アスペクト比調整(E)   画像フィルタDLL使用時に限り、ONにすると以下で設定した
                          アスペクト比で表示します。

  デバッグ(D)
    割り込み(I)           割り込みウィンドウを表示します。

  ツール(T)
    FM音源/PSGエンジン(F) 使用する音源エンジンを設定します。
    画像フィルタ(I)       使用する画像フィルタを設定します。
    張り付け(E)           クリップボードの文字列を入力します。

  ウインドウ(W)
    全て復元(R)           アイコン化や非表示の前の状態に戻します。
                          動作設定の「起動時に復元」がOFFのとき、再起動後に前回
                          終了時開いていた全てのサブウインドウを復元します。

  右クリックサブメニュー
    タイトル変更(T)       タイトルを変更します。
    ヒストリから削除(D)   ヒストリから削除します。
    アスペクト比設定(A)   アスペクト比を設定します。


□著作権

  XM7dashはＰＩ．氏および、たけがみりう氏が著作権を所有するXM7のソースコードを
  元にトマが開発した、ＰＩ．氏、たけがみりう氏、およびトマが著作権を所有するフ
  リーソフトウェアです。配布条件はXM7に準じます。

  XM7dashで追加したアイコンは天丸氏によるものをベースにしたものを使用させて
  いただいています。
  天ぷら工房 (TENMARU PLANNING FACTORY)
  http://homepage2.nifty.com/tenpurako/index.html

  外部音源DLL機能はXM7ヨルダのソースをベースとしています。
  この部分の著作権は原作者である891氏に帰属します。
  Copyright (C) 2011-2014 891＠【昔のPC】エミュレーター統合スレッド4

  外部画像フィルタDLL機能はXM7Dash勝平のソースをベースとしています。
  この部分の著作権は原作者である895氏に帰属します。
  Copyright (C) 2013-2014 895＠【昔のPC】PCエミュレーター統合スレッド Part5

  他の著作権に関する詳細は同梱のXM7.txtを参照願います。

  ※同梱のXM7.txtにも記述されていますが、ROMファイルについては著作権者の意向に
    従ってください。


□XM7dash 開発スペック

  開発開始日時   2010年1月23日

  主要ハード     開発マシン
                   Intel Core i7-920 (Bloomfield) 2.66GHz, 9GB RAM, 4TB HDD
                   ASUS Rampage II Extreme, nVIDIA GeForce GTX 560 Ti
                 評価マシン
                   NEC LaVie G Type Z PC-GL19614GU
                   Intel Core i7-3517U 1.9GHz, 4GB RAM, 200GB HDD
                 ターゲットマシン
                   FM77AV40, ビデオデジタイズカード (FM77-412)
                   FM77AV-2, ビデオデジタイズカード (FM77-411)
                   FMデータレコーダ(MB27502)

  主要開発言語   Borland C++ Compiler 5.5.1
                 Netwide Assembler (NASM) v0.98.08.towns5


□XM7dash V3.4L77R26に関するFAQ

  <デバッガ>

  Q:割り込みウィンドウで、OPN/WHG/THGがMaskになりません。
  A:仕様です。OPN/WHG/THGの表示に関してはON/OFFにしか対応していません。
  Q:日本語サブCPUの割り込みウィンドウは？
  A:現状、日本語サブCPUの割り込み信号が発生する仕組みが無いため
    実装していません。


□連絡先

  公開サイト(夢幻郷)
  http://tomatoma.s54.xrea.com/

  掲示板
  http://tomatoma.s54.xrea.com/cgi-bin/bbs.cgi

  メールアドレス
  tomatoma@s54.xrea.com

  Twitter
  https://twitter.com/tomatoma911
