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

  FM-7 EMULATOR XM7dash (V1.2L16)

  for Win32
  Copyright (C) 1999-2013 ＰＩ．
  Copyright (C) 2001-2013 Ryu Takegami
  Copyright (C) 2010-2013 Toma

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

□はじめに

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

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

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

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

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


□本アーカイブについて

  FM-7 EMULATOR XM7 (V1.1L20)を元にした改造版「XM7dash V1.2L16」の
  アーカイブです。
  本ファイルはXM7dashにおける変更点のみ記述します。
  よって詳細は同梱のXM7.txtをご参照願います。
  XM7.txtは正式版(V1.1L60)に付属のものを添付しています。


□前改造版からの変更点

  XM7dash V1.2L15→V1.2L16の変更点一覧です。

  <新規>
  ・外部音源DLL、画像フィルタDLLを複数設定し、Windowsメニューから変更できる
    ようにした。 

  <変更>
  ・動作設定プロパティの128KBバブルホルダユニット内部モジュールに対する表現を
    「マウント」「イジェクト」から「取り付け」「取り外し」に変更。 

  <修正>
  ・前回終了時に開いていたメモリダンプおよび逆アセンブルのサブウィンドウを
    次回起動時または全て復元で再帰した際、スクロールバーの位置が正しくない
    ことがある問題を修正。 
  ・逆アセンブルウィンドウの「実行中はPCに同期」の設定が外れていてもVM停止中に
    PC同期状態になる問題を修正。


□最新正式版との相違点

  XM7 V1.1L60→XM7dash V1.2L16の相違点一覧です。

  <1MB FD関連>
  ・FM-77モードに1MBフロッピーコントロールカード(MB22454)相当の機能を追加。
  ・FM-8モードにシステム拡張ユニット(MB26001)内標準FDインタフェース相当の機能を
    追加。ただしIFDCおよびDMACに関して以下の制限事項有り。
      IFDC：MAKE SOFT SECTOR FORMAT、FLOPPY DISK SEEK TRACK OPERATION、
            およびIFDCバッファを中継するREAD/WRITE系コマンドが未実装
      DMAC：CH3の1MB FDCに対するアクセスのみ実装
  ・ドアロックに対応。
  ・サポートディスクファイルに2HDフロッピーディスクイメージを追加。
    詳細はディスクファイルの項を参照。
  ・GUIメニューに1MB DOSモード(M)および1MB FDDの項目を追加。詳細はWin32メニュー
    の項を参照。
  ・フロッピーディスク(F)のサブウィンドウを拡張して1MB FDCに対応。
  ・新規ディスク作成(T)、2D→D77変換(2)、を拡張して2HDに対応。
  ・1MBフロッピーディスクイメージのドラッグ＆ドロップに対応。ブートモードの自動
    切り換えにも対応。
  ・1MBフロッピーディスクドライブのアクセスインジケータに対応。
    320KBドライブと区別する為、2HDアイコンを左上に表示。
    FM-7モードおよび1MB FDD無効設定時には非表示。

  <バブルカセット関連>
  ・FM-8モードに128KBバブルインタフェースモジュール(MB22212)+128KBバブルホルダ
    ユニット(MB22605)相当の機能を追加。デフォルトはON。
    FM-7モードおよびFM-77モードでも、128KBバブルホルダユニットは使用可能。
    32KBバブルホルダはI/Oアドレスが重なるため標準FM音源無効時のみ使用可能。
  ・サポートバブルカセットファイルに128KBバブルカセットイメージおよびB77ファイ
    ルイメージを追加。詳細はバブルカセットファイルの項を参照。
  ・GUIメニューにバブルモード(U)、128KBバブルモード(L)および128KBバブルカセット
    の項目を追加。詳細はWin32メニューの項を参照。
  ・バブルメモリ(B)のサブウィンドウで128KBバブルホルダユニットに対応。
  ・新規バブルカセット作成(B)に32KB/128KB選択肢、B77/BBLフォーマット選択肢を
    追加。32KBバブルカセットは初期化しなくてもF-BASICで使用可能。
    128KBバブルカセットはV2.2上でのボリュームラベルの仕様が不明なため未確認。
  ・動作設定プロパティに128KBバブルメモリ内部モジュール（ユニット2/3）マウント
    枠を追加。128KBバブルホルダユニット無効設定時には各マウント不可。
  ・バブルカセットイメージのドラッグ＆ドロップに対応。ブートモードの自動切り換
    えにも対応。
  ・バブルホルダユニットのアクセスインジケータは未対応。

  <新規>
  ・外部描画フィルタDLLに対応。現状ウィンドウモード時のみ。表示サイズを0.5倍の
    320×200ピクセル、1.5倍の960×600ピクセル、1.8倍の1152×720ピクセルで表示さ
    せるモードを追加。
  ・フロッピーディスクドライブおよびバブルホルダユニットで「#0,1両ドライブを
    交換する」「#2,3両ドライブを交換する」「両ユニットを交換する」機能を実装。
  ・フルスクリーンの画面モード選択肢に「現在の画面モード (整数倍拡大)」を追加。
  ・外部音源DLLに対応。詳細はサウンド出力の項を参照。
  ・KANJI.ROMを使用した際の漢字ROM未定義領域パッチを無効にするスイッチを動作設
    定プロパティに追加。
  ・FM-77モード時に拡張RAMを、なし・64KB・192KB(デフォルト)・960KBから選択でき
    るスイッチを動作設定プロパティに追加。
    ※960KB拡張RAMモードは拡張RAMアドレス$40000-$FFFFF、MMRの設定値$40-$FF、
      MSRの設定値$04-$3F、WBRの設定値$00-$0Fが有効
    （参考記事：Oh!FM'85年12月号 FM-7 DATおよび拡張RAMボードの制作）
  ・ステート、ディスク、テープ、バブルカセットのファイル履歴の保存に対応。
  ・マウント状態の保存に対応。ベタイメージファイルに対する書き込み禁止設定の
    保存にも対応。
  ・[表示]メニューに割り込みウィンドウを追加。
  ・サウンド出力モードをステレオにしている際、FM音源ディスプレイでどちらから出
    力されているか確認できるようにした。
  ・サブウィンドウのポップアップスタイルに対応。デフォルトはOFF。
  ・サブウィンドウの保存に対応。再起動後「全て復元」を行うことで、前回終了時の
    サブウィンドウを再現可能。起動時に自動で復元させることも可能。ただし、サブ
    ウィンドウポップアップモード変更時に保存はクリアする。デフォルトはOFF。
  ・ブートモード、メインウィンドウ位置、フルスクリーンモード、ステータスバー、
    カレントディレクトリの保存スイッチを追加。デフォルトはON。
  ・固定のステートファイル名(デフォルトでは"STATE.XM7")でステートセーブおよび
    ロードするクイックセーブ・クイックロードをGUIメニューに追加。
  ・終了時および起動時にそれぞれ自動でクイックセーブ・クイックロードする機能を
    追加。デフォルトはOFF。
  ・ステートの上書き保存時に、既存ファイルを"ファイル名_##.XM7"とファイル名を
    変更して保存しておく機能に対応。##は00からの通し番号であり、99まで。00〜99
    まで存在すると99に上書きする仕様。デフォルトはOFF。
  ・ファイル履歴にコンテキストメニューを追加し、履歴から削除できる機能を追加。
  ・D77ファイルメディアリストにコンテキストメニューを追加し、ディスクタイトル
    （ラベル）の変更を行える機能を追加。
  ・GUIメニューにBASIC(裏RAM)モード、BASIC(DEBUG)モードの項目を追加。
    詳細はWin32メニューの項を参照。
    ※BASIC(裏RAM)モードとは、FM-77実機にて[BOOT1][BOOT2][BASIC]の3ボタンが全て
      押下されていないブートモード。このとき選択されるブートROMはBASICモードと
      同様だが、リセット時にBASIC ROM領域はRAMモードで起動する。
  ・FM-8モード時にMFD/SFDから発生するIRQ割り込みのON/OFFを設定可能にした。
  ・天丸さん作成のアイコンを元にした5インチ2HDアイコンを1種と3.5インチ2HD
    アイコンを3種追加。

  <変更>
  ・GUIメニューのドライブ0、ドライブ1を統合し320KB FDDを追加。
    詳細はWin32メニューの項を参照。
  ・ファイル履歴によってほぼ同等の操作が可能なため「一時取り出し」を廃止。
    一時取り出し状態で保存されたステートをロードすると、ファイル履歴に追加して
    アンマウントする。
  ・ドライブ2および3のアクセスインジケータは、どちらかのドライブにマウントした
    際に追加表示する。このとき表示幅が狭くなるため、メディアタイトルはファイル
    種別(拡張子)のみに変更。ただし2倍拡大表示モード時は2ドライブ時同様、ファイ
    ル名(もしくはディスク名)を表示する。
  ・マウント中はGUIメニューの1MB FDD／320KB FDD／カセット(C)にファイル名付きで
    子メニュー表示するように変更。このため、2D/VFDファイルに関しての孫メニュー
    に表示されるマウントディスクファイル種類表示は廃止。
  ・1MB FDD、バブルカセットを動作設定プロパティで無効にした際、GUI子メニュー
    が灰色になる仕様に変更。（本家V1.1は孫メニューが灰色になる）
  ・FM-7モード時の1MB FDD、FM-7/77モードで標準FM音源有効時の32KBバブルホルダは
    操作対象外だが、GUIメニュー操作は可能な仕様に変更。（本家V1.1は子メニューが
    灰色になる）
  ・キャプションへの表示情報にロード／セーブしたステートファイル名を追加。
    これはリセットによってクリアする。(XM6の動作仕様に合わせた)
  ・マウントしたフロッピーディスク、テープ、バブルカセットイメージファイル名の
    キャプションへの表示をXM7の動作設定で表示・非表示設定できる仕様に変更。
    ただし、表示設定にしても#2〜3のマウントファイル名は表示出来ない。
  ・スケジューラウィンドウのFDC, FDD表記をMFDC, MFDDに変更。
  ・機種依存するブートモードの追加に伴い、動作機種変更後に選択不可能なブート
    モードだった場合の再設定仕様を、1MB DOSモード、バブルモード、128KBバブル
    モードだった場合はDOSモード、BASIC(裏RAM)モードだった場合はBASICモード、
    の仕様に変更。
  ・標準FM音源/WHG音源/THG音源にアクセスした後に動作設定プロパティで各フラグを
    OFFにした場合リセットする仕様に変更。
  ・FM-77モード時に日本語通信カード側漢字ROM($FD28〜$FD2B)のアクセス可不可を
    動作設定プロパティで設定可能に変更。
  ・KANJI.ROM及びKANJI1.ROMに対するJIS78エミュレーション仕様をXM7V3同等に変更。
  ・ステートファイルのヘッダ文字列を正式版と区別できるよう変更。
  ・正式版が今後ステートファイルの拡張を行った際に本改造版で無条件にロード出来
    てしまい不具合が起きる可能性を防ぐため、改造版公開時の最新正式版のステート
    ファイル内部バージョンより大きなバージョン番号のステートファイルはロード出
    来ないように変更。

  <修正>
  ・THG割り込みステータス読み込み時にTHG有効フラグをチェックしていなかった問題
    を修正。
  ・ラスタ単位でのレンダリングONの時VMを停止していると画面が更新されない問題
    に対応。
  ・バブルカセットのページアドレスオーバーエラーなどのエラーチェックを厳密に
    行うようにした。
  ・NT系Windows上で既に起動しているエミュレータにコマンドライン渡しができない
    問題を修正。


□仮想マシン

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

    フロッピー     320KBフロッピーディスクドライブ×4
                   1MBフロッピーディスクドライブ×4
    バブルカセット 32KBバブルホルダユニット×2
                   128KBバブルホルダユニット×2
                   128KBバブルメモリモジュール×2


□ROMファイル

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

  (FM-77 1MB DOSモード起動サポート)
    ファイル名    サイズ  CPU    物理アドレス
    BOOT_1MB.ROM    512  メイン $FE00-$FFFF   (1MB DOSモード)

  (FM-77 32KBバブルモード/128KBバブルモード起動サポート)
    ファイル名    サイズ  CPU    物理アドレス
    BOOT_BBL.ROM    512  メイン $FE00-$FFFF   (32KB/128KBバブルモード)

  (FM-8 1MB DOSモード起動サポート)
    ファイル名    サイズ  CPU    物理アドレス
    BOOTSFD8.ROM    512  メイン $FE00-$FFFF   (1MB DOSモード)

  (FM-8 32KBバブルモード/128KBバブルモード起動サポート)
    ファイル名    サイズ  CPU    物理アドレス
    BOOTBBL8.ROM    512  メイン $FE00-$FFFF   (32KB/128KBバブルモード)

  (FM-8 BASICデバッグ用モード起動サポート)
    ファイル名    サイズ  CPU    物理アドレス
    BOOTDBG8.ROM    512  メイン $FE00-$FFFF   (BASICデバッグ用モード)

  BOOT_1MB.ROM, BOOTSFD8.ROMが無くても1MB DOSモードが選択出来なくなるだけで、
  1MBフロッピーディスクドライブは使用できます。
  同様にBOOT_BBL.ROM, BOOTBBL8.ROMが無くても32KBバブルモードおよび128KBバブル
  モードが選択出来なくなるだけで、バブルホルダユニットは使用できます。

  128KBバブルモードは、32KBバブルモードブートROMにパッチを当てて実現しているた
  め、専用ROMファイルは不要です。128KBバブルモードブートROMは用意出来るが32KB
  バブルモードブートROMが用意出来ない場合、128KBバブルモードブートROMでも動作
  可能と思われますが未確認です。

  KANJI.ROMを使用した場合はFM77AVの漢字ROM未定義領域($6000〜$7FFF)のパッチのみ
  有効となりますが、このパッチは動作設定プロパティの「未定義領域パッチ無効」で
  ON/OFFの設定が出来ます。
  KANJI1.ROMを使用した場合は本家XM7と同じエミュレーション仕様となります。KANJI2
  .ROMがあると、よりいっそう再現度が上がる点も同様です。この場合「未定義領域パッ
  チ無効」は設定できなくなります。
  KANJI.ROMとKANJI1.ROMの両方を用意した場合、KANJI.ROMが適用されます。


□コマンドライン

  以下に同梱のXM7.txtから追加・変更された拡張子別の動作を記します。

  .D77(2HD)/2HD     ディスクファイルをマウントし、ブートモードを1MB DOSモードに
                    変更し、VMをリセットします。FM-7モードの場合はブートモード
                    の変更およびVMのリセットは行われません。
  .D77(2D)/.2D/.VFD ディスクファイルをマウントし、ブートモードが1MB DOSモード
                    もしくはバブルモード、128KBバブルモードだった場合はBASIC
                    モードに変更し、VMをリセットします。
  .BBL/.B77         バブルカセットファイルをマウントし、ブートモードをバブルモ
                    ードもしくは128KBバブルモードに変更し、VMをリセットします。
                    FM-7モードの場合はブートモードの変更およびVMのリセットは行
                    われません。

  ※各モードのブートROMが存在せずブートモードの選択が出来ない場合はマウントのみ
    行い、ブートモードの変更およびVMのリセットは行われません。


□ドラッグ＆ドロップ

  以下に同梱のXM7.txtから追加・変更された操作を記します。

  ・2HD系ディスクファイル(.D77/.2HD)をドラッグ＆ドロップすることで、ディスクを
    マウントし、ブートモードを1MB DOSモードに変更し、VMをリセットします。
    ステータスバーのアクセスランプ部分を除くウインドウ領域に対して有効です。
    FM-7モードの場合はブートモードの変更およびVMのリセットは行われません。

  ・2HD系ディスクファイル(.D77/.2HD)をステータスバーのアクセスランプ部へドラッグ
    ＆ドロップすることで、指定されたドライブにディスクをマウントします。
    この場合はVMのリセットは行われません。

  ・2D系ディスクファイル(.D77/.2D/.VFD)をドラッグ＆ドロップすることで、ディスク
    をマウントし、ブートモードが1MB DOSモードもしくはバブルモード、128KBバブル
    モードだった場合はBASICモードに変更し、VMをリセットします。ステータスバーの
    アクセスランプ部分を除くウインドウ領域に対して有効です。

  ・2D系ディスクファイル(.D77/.2D/.VFD)をステータスバーのアクセスランプ部へドラ
    ッグ＆ドロップすることで、指定されたドライブにディスクをマウントします。
    この場合はVMのリセットは行われません。

  ・バブルカセットファイル(.BBL/.B77)をドラッグ＆ドロップすることで、バブルカセ
    ットをマウントし、ブートモードをバブルモードもしくは128KBバブルモードに変更
    し、VMをリセットします。マウント可能なホルダはユニット0固定です。
    ウィンドウの全領域に対して有効です。
    FM-7モードの場合はブートモードの変更およびVMのリセットは行われません。

  ※VMのリセットを伴う際のドロップファイルに応じたブートモードの自動切り換えに
    対応しました。ただし、該当するブートモードが選択可能の場合に限ります。
    ex. 1MBフロッピーファイルのドロップ→1MB DOSモード
        32KBバブルカセットファイルのドロップ→32KBバブルモード
        128KBバブルカセットファイルのドロップ→128KBバブルモード
        320KBフロッピーファイルのドロップ→1MB DOS/バブルモードだった場合、
        BASICモード(その他の場合はモード変更しない)


□ディスクファイル

  ディスクファイルとして2HDフォーマット・D77フォーマット(記録密度2HD)の2種類を
  追加サポートしています。

  2HDフォーマットはFM11シミュレータでサポートされている1MBディスクファイルの
  形式で、1021696バイトのサイズを持ちます。2HDであることを明確にするため拡張
  子を変更しています。

  D77フォーマットはサポートする記録密度に2HDを追加しています。


□バブルカセットファイル

  バブルカセットファイルとして独自のBBLフォーマット・B77フォーマットの2種類を
  サポートしています。

  BBLフォーマットは32768バイトもしくは131072バイトのサイズを持つベタファイル
  です。

  B77フォーマットは32バイトのヘッダを付加したベタファイルです。
  D77(D88)フォーマットに似た32バイトのヘッダを持ち、16ファイルまで連結可能
  です。
  ・B77ファイルヘッダフォーマット
      offset size 内容 
      0x0000  17  バブルカセットの名前(ASCIIZ)
      0x0011   9  リザーブ( 0x00 )
      0x001A   1  ライトプロテクトフラグ( 0x00:なし, 0x10:あり )
      0x001B   1  バブルカセットの種類( 0x80: 32KB, 0x90: 128KB )
      0x001C   4  バブルカセットのサイズ(DWORD)
                                      ( 0x00008020: 32KB, 0x000020020: 128KB )


□サウンド出力

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

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

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


□ディスプレイ描画

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

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

  ※外部描画フィルタDLL使用時の注意事項
    一部外部描画フィルタDLLにおいて、Win32メニューを開いた箇所の再描画が
    されない場合があります。(現状strech.dllのみ確認)
    この場合、XM7.iniの[Screen]セクションにFilterRedrawScreenキーを1に変更する
    ことで、Win32メニューを閉じた際に強制的に再描画させることが出来ます。


□Win32メニュー

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

  ファイル(F)
    1MB DOSモード(M)      起動モードを1MB DOSモードにセットします。
                          FM-8モード、FM-77モード時に選択できます。
    BASIC(裏RAM)モード(C) 起動モードをBASIC(裏RAM)モードにセットします。
                          FM-77モード時に選択できます。
    BASIC(DEBUG)モード(C) 起動モードをBASIC(DEBUG)モードにセットします。
                          FM-8モード時に選択できます。
    バブルモード(U)       起動モードをバブルモードにセットします。
                          FM-8モード、FM-77モード時に選択できます。
    128KBバブルモード(L)  起動モードを128KBバブルモードにセットします。
                          FM-8モード、FM-77モード時に選択できます。
    クイックロード(K)     VMの状態をファイルからクイックロードします。
    クイックセーブ(Q)     VMの状態をファイルにクイックセーブします。
    (ファイル名)          VMの状態をファイルからロードします。

  ドライブ1,ドライブ0
    320KB FDDに統合し、削除しました。

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

  カセット(C)
    テープ(T)
      開く(O)               テープイメージファイルを設定します。
      取り外す(E)           テープイメージファイルを取り外します。
      巻き戻し(W)           １つ手前まで巻き戻します。
      早送り(F)             １つ先まで早送りします。
      録音(R)               録音可能状態、再生状態を切り替えます。
      (ファイル名)          テープイメージファイルを設定します。
    32KBバブルホルダユニット(128KBバブルホルダユニットも同様)
    #0(#1も同様)
      開く(O)               バブルカセットイメージファイルを設定します。
      取り外す(E)           バブルカセットイメージファイルを取り外します。
      書き込み禁止(W)       現在選択しているバブルカセットを書き込み禁止に設定
                            します。
      (カセット名)          B77ファイル内のメディアを切り替えます。
      (ファイル名)          バブルカセットイメージファイルを設定します。
    #0,1両ﾕﾆｯﾄで開く(B)     バブルカセットイメージファイルを32KBバブルホルダ
                            ユニット0,1に設定します。
    #0,1両ﾕﾆｯﾄで開く(H)     バブルカセットイメージファイルを128KBバブルホルダ
                            ユニット0,1に設定します。
    #0,1両ﾕﾆｯﾄを交換する(R) バブルカセットイメージファイルを32KBバブルホルダ
                            ユニット0,1に設定します。
    #0,1両ﾕﾆｯﾄを交換する(P) バブルカセットイメージファイルを128KBバブルホルダ
                            ユニット0,1に設定します。
    全イジェクト(E)         テープおよびバブルカセットイメージファイルを全て
                            取り外します。

  表示(V)
    フロッピーディスク(F) 1MB FDC側の情報表示に対応。
    ﾊﾞﾌﾞﾙﾒﾓﾘｺﾝﾄﾛｰﾗ(B)     128KBバブルカセット側の情報表示に対応。
    DMAコントローラ(A)    FM-8モード時のDMAコントローラウインドウを表示します。
    割り込み(I)           メインCPU割り込みウィンドウを表示します。
                          ※IRQ/FIRQの各割り込み状態(On/Off/Mask)を表示します。
                            OPN/WHG/THGに関してはOn/Offしか表示できません。
    ディスプレイサイズ(I) ウィンドウモード時の表示サイズを設定します。外部描画
                          フィルタ未使用時はx1.0およびx2.0のみ有効です。

  ツール(T)
    新規ディスク作成(D)   2HD形式にも対応し、メディアタイプが追加されました。
    新規ﾊﾞﾌﾞﾙｶｾｯﾄ作成(B)  新しいバブルカセットイメージファイルを作成します。
    2D→D77変換(2)        2HD形式にも対応し、2D/2HD→D77変換に変更されました。
    2D/2HD→D77変換(2)    2D/2HD形式のイメージファイルをD77形式へ変換します。
    BBL→B77変換(L)       BBL形式のイメージファイルをB77形式へ変換します。
    FM音源/PSGエンジン(F) 使用する音源エンジンを設定します。
    描画フィルタ(I)       使用する描画フィルタを設定します。

  ウインドウ(W)
    全て隠す(H)           サブウインドウを全て非表示にします。
    全て復元(R)           アイコン化や非表示の前の状態に戻します。
                          再起動後に前回終了時開いていた全てのサブウインドウを
                          復元します。
    全て閉じる(O)         サブウインドウを全て閉じます。このコマンドで閉じた
                          サブウインドウは全て復元で復元されます。


□互換性

  1MBフロッピーディスクドライブ、32KB/128KBバブルカセットに対応しています。

  1MBフロッピーディスクドライブに関しては、
  FM-77モードおよびFM-8モードに対応しています。
  両面単密度(FM)および両面倍密度(MFM)は対応していますが、
  片面メディアは該当するディスクイメージフォーマットが存在しないため非対応です。
  F-BASIC V3.5, OS-9 Level 2上で動作することが確認済みです。
  ※F-BASIC V3.1,F-BASIC V2.0に関しては動作すると思われますが未確認です。
    (確認報告求む！)

  32KB/128KBバブルカセットに関しては、全モードで対応しています。
  これはFM-77実機の隠しブートROMに32KBバブルモードおよび128KBバブルモードが
  搭載されていたためです。
  ただし、32KBバブルホルダに関しては標準FM音源カードとI/Oアドレスが重なるため、
  FM-7/77モードで標準FM音源カード有効時は32KBバブルカセットは無視されます。
  32KBバブルカセットに関してはF-BASIC上で動作することが確認済みです。
  ※128KBバブルカセットに関してはF-BASIC V2.2にて動作すると思われますが未確認
    です。(確認報告求む！)


□その他

  はせりん氏には1MBフロッピーやバブルカセット、64KB RAMカードのバンク切り替え
  機能などにおいて、OS-9 Level 2上やFM-8モードでの挙動確認・不具合調査などで、
  有用な情報を多数頂きました。この場を借りてお礼申し上げます。


□著作権

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

  XM7dashで追加したアイコンは天丸氏によるものをベースにしたものを使用させて
  いただいています。

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

  外部描画フィルタDLL機能はXM7Dash勝平のソースをベースとしています。
  この部分の著作権は原作者である895氏に帰属します。
  Copyright (C) 2013 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
                 評価マシン
                   SONY VAIONOTE-GR PCG-GRT55E/B
                   Intel Pentium 4 Celeron 2.20GHz, 768MB RAM, 80MB HDD
                 ターゲットマシン
                   FM-77D2(MB25250), 400ラインセット(MB28121)
                   FM音源カード(MB22459), 日本語通信カード(FM77-101)
                   FM-8(MB25020), FM-7(MB25010), 漢字ROMカード(MB22405)
                   ミニフロッピィインタフェースカード(MB22407)
                   ミニフロッピィディスクユニット(MB27611)
                   FMデータレコーダ(MB27502)

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


□XM7dash V1.2L16に関するFAQ

  <ディスク>

  Q:2HDファイルの構造がわかりません。
  A:F-BASIC V3.5/V5.0でのフォーマット仕様に基づき、トラック0のみ単密度128
    バイト/26セクタ、トラック1〜153は倍密度256バイト/26セクタを頭から順に
    連結したもので、1021696バイトのサイズを持ちます。
    拡張子は異なりますが、FM11 Simulatorでサポートされている1MB版の
    イメージファイルと互換性をもちます。

  <バブルカセット>

  Q:BBLファイルの構造がわかりません。
  A:F-BASIC V1.0/V2.0/V2.2でのフォーマット仕様に基づき、
    32KBバブルカセットについては32バイト/1024ページを頭から順に連結したもので、
    32768バイトのサイズを持ちます。
    128KBバブルカセットについては64バイト/2048ページを頭から順に連結したもので、
    131072バイトのサイズを持ちます。
  Q:バブルモードは32KB/128KBの2種ありますが、ROMファイルは1種類しかありません。
  A:32KBバブルホルダと128KBバブルホルダはアクセスI/Oアドレスが異なるだけなので
    モード変更時にパッチを当てているためROMファイルは1つしか必要としません。

  <デバッガ>

  Q:フロッピーディスクウィンドウで、1MB FDC情報が表示されていません。
  A:仕様です。リセット直後(厳密には1MB FDC側が"NO COMMAND"時)は320KB FDC情報
    しか表示していません。1MB FDCに対して何らかの有効なコマンドを送信した際に
    ウィンドウサイズを拡張し、1MB FDCに関する情報も表示します。
  Q:バブルメモリウィンドウで、128KBバブルホルダユニットが表示されていません。
  A:仕様です。128KBバブルホルダユニットに対して何らかのコマンドが発行されるまで
    32KBバブルホルダユニットしか表示しません。
  Q:割り込みウィンドウで、OPN/WHG/THGがMaskになりません。
  A:仕様です。OPN/WHG/THGの表示に関してはON/OFFにしか対応していません。
  Q:割り込みウィンドウで、SFD(DRQ)とはなんですか？
  A:FM-77 1MB FDCのDRQPULSE信号です。
  Q:割り込みウィンドウで、FIRQがMask表示になることがあるようですが、
    FIRQの個別Mask機能はないのでは？
  A:FM-77 SFD割り込みモード時にFIRQによる誤動作を禁止するため、
    SFD(DRQ)以外のFIRQはMaskされます。
  Q:割り込みウィンドウで、NMIは表示しないのですか？
  A:NMIはIRQ/FIRQの様に個別フラグも禁止フラグもないため、
    表示していません。


□連絡先

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

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

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