﻿(UTF-8: Japanese)

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

  FM-7 EMULATOR XM7dash (V1.2R50)
  based on XM7 L77SX+z09 R3c

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

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

□はじめに

  XM7dashは、FM-7 EMULATOR XM7のソースコードをもとにトマが開発した改造版です。

  XM7はＰＩ．、たけがみりう両氏の著作物であるため、XM7dashはその使用規定に基づ
  き公開しています。
  大変有用なソフトウェアを公開された両氏に対し深く敬意を表します。

  本ファイルはXM7dashにおける変更点のみ記述します。
  よって詳細は同梱のXM7.txtをご参照願います。
  XM7.txtはXM7(V1.1L77SX+z09 R3c)に付属のものを添付しています。

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

  本改造版はあくまでも派生版の一種にすぎません。
  本改造版に対する問い合わせは私宛に下記連絡先へお願いします。

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

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


□使用規定(ライセンス)

  本アーカイブに含まれるファイル群は、一部の例外(後述)を除き、
  ＰＩ．、たけがみりう、GIMONS、トマの諸氏が著作権を保有しており、
  クリエイティブ・コモンズ・ライセンス
  「表示 - 非営利 - 継承 4.0 国際 (CC BY-NC-SA 4.0) 」
  によってライセンスされています。

  ライセンス条項に関することについて、詳しくは以下のWebサイトを参照してください
  (以下のリンクは日本語で記述されています)。
    https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ja

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

  翻案・改変された作品のソースでの公開は、ライセンスに従う限り自由です。
  また、翻案・改変された作品のバイナリの公開は、ビルドに使用したコンパイラを明
  示すること、意図的にウイルス等のマルウェアを混入させないことの2点を条件に、
  ライセンスに従うかたちで自由に行なっていただいて構いません。

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

  外部音源DLL機能はXM7ヨルダのソースコードをベースとしています。
  この部分の著作権は原作者であるねねっち氏に帰属します。
  Copyright (C) 2011-2025 ねねっち@kirara.st (Twitter:@nenecchi_0505)
  https://twitter.com/nenecchi_0505

  外部画像フィルタDLL機能はXM7Dash勝平のソースコードをベースとしています。
  この部分の著作権は原作者であるねねっち氏に帰属します。
  Copyright (C) 2013-2025 ねねっち@kirara.st (Twitter:@nenecchi_0505)
  https://twitter.com/nenecchi_0505

  英語版リソースはBen.JP氏による「XM7/XM7dash/XM7LP 国際化 DLL （英語版）」を
  ベースとしています。
  English Translation 2012-2025 by Ben.JP
  https://ameblo.jp/a160-1930/entry-12494773323.html

  他の使用規定(ライセンス)に関する詳細は同梱のXM7.txtを参照願います。

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


□前改造版からの変更点

  R49→R50の変更点一覧です。

  <変更>
  ・リリースビルドに使用するコンパイラをBorland C++からMicrosoft C++へ変更した
    Borland C++によるリリースビルドではDirectX9がインストールされていない環境で
    DirectInputが正常な値を返さずマウスが正常に動かない場合があったため
  ・マウスの有効/無効設定について、VMとUIで分離した。
    動作設定～オプション～マウスを接続する、をVMに仮想マウスを接続するイメージ
    GUIメニュー～ツール～マウスモードの設定、を仮想マウスと実マウスをリンクする
    イメージとし、F11/マウスホイール/マウスの中央ボタンでの操作は仮想マウスと
    実マウスの接続制御、GUIメニューの設定などのためにマウス無効にした際、VM側の
    マウスまで切り離さない仕様に変更(仮想マウスが接続されているイメージ)
  ・垂直同期/水平同期イベント関数をリファクタリング。期間定義を構造体管理に変更

  <修正>
  ・水平同期をV2/V3と同様に水平ブランキング期間→水平表示期間の順に実施するよう
    修正


  R48→R49の変更点一覧です。

  <追加>
  ・XM7/XM7dash/XM7LP 国際化 DLL （英語版）より英語版リソースを移植
  ・動作設定でZ80カードの切り離しを可能にした

  <修正>
  ・バージョン情報のGIMONS氏による技術をTypeG Technologyと修正


  R47→R48の変更点一覧です。

  <変更>
  ・音源ディスプレイ/レジスタサブウインドウの表示チップ数をコンテキストメニュー
    から指定できるように変更。ディスプレイのミュート解除機能も同メニュー内の1項
    目に変更。デフォルトはこれまで通り自動。動作機種変更などにより表示できない
    モードになった際はデフォルトに戻る仕様とした
  ・MS用makefileをDirectX9 SDKのインストールを不要とするように対応
  ・XM7 L77SX+z10 R4より、ホットリセットした際にF-BASIC ROMの制御をブートROMが
    無効になるまで制限する仕様（NEW7ブートROM対策）をFM-77モード限定で移植。
    （Thanks for Ryu Takegami）また、隠しフラグで無効に出来る仕様を追加
  ・XM7 L77SX+z10 R4より、Windows 11対応技術を移植（Thanks for Ryu Takegami）
  ・バージョン情報にGIMONS氏によるXM7g技術の件を明記
  ・バージョン情報にnenecchi氏によるExternal DLLの件を明記

  <修正>
  ・opn_scaleのリセット初期値を6に修正(FM-7/77実機でホットリセット直後にFM音源
    を鳴らした際の挙動に準拠)
  ・SXGA(1280x1024)、VGA(640x480)のフルスクリーンモード時、画面周囲にゴミが表示
    される可能性があった問題を修正
  ・サブウインドウからのクリップボード登録時に改行コードを付加する際、バッファ
    オーバーフロー対策用に増やした2バイトを考慮していなかったため、改行コードが
    付加されない場合がある不具合を修正（Thanks for Ryu Takegami）


  R46→R47の変更点一覧です。

  <変更>
  ・アスペクト比設定ダイアログにMB273xx系(0.899)とFMTV-xxx系(0.833)の設定ボタン
    を追加
  ・ステータス非表示におけるフルスクリーンモードの現在の画面モード(整数倍拡大)
    設定時、画面比率がX:640に対してY:400以上480未満の際に一回り大きな画面表示
    出来る様に調整
  ・ディスプレイサイズに3倍(1920x1200)と4倍(2560x1600)を追加。外部画像フィルタ
    OFF時も対応。動作設定画面は余白の関係上外部画像フィルタON/OFF設定のみとし、
    解像度設定はGUIメニューで選択するのみに変更

  <修正>
  ・フルスクリーンモードの現在の画面モード(整数倍拡大)設定時、画面四隅にゴミが
    表示される場合がある問題を修正
  ・320KB FDDをOFFに設定するとFM-77モードでドライブ2～3のマウントが正常に表示
    されない問題を修正
  ・ダイアログ項目末尾の「。」を削除してフォーマットを統一


  R45→R46の変更点一覧です。

  <変更>
  ・新規ディスクイメージ作成でF-BASICユーザディスクの作成時、インターリーブ
    フォーマットでの作成フラグを追加
  ・天丸氏の作成されたFM-77のアイコンを1種追加

  <修正>
  ・ステートレジュームをONにして再起動すると起動できない問題を対策

  <移植>
  ・xm7_3477sxz09r3cs_vs2017.zipより、DirectX9 SDKのインストールを不要とする
    ソースコード上の変更点を移植。現状makefileは未対応


  R44→R45の変更点一覧です。

  <変更>
  ・クリップボード貼り付け機能のデフォルトキー間隔を20ms/200msにして有効化
  ・低速モード時のサブCPUウェイト処理設定を低速モード時にしか設定できないように
    変更
  ・サブウインドウ処理の一部をリファクタリング
  ・F-BASIC V3.3 L1xのIPL対策に実装していた拡張メモリ1MBモードで初回起動時にMMR
    を設定する機能をiniファイルで制御する様に変更しデフォルトをOFFに変更
    ※実機準拠をデフォルトとし、iniファイルに記述することで救済可能とした

  <修正>
  ・400ラインモードでラスタ単位レンダリング有効時、now_rasterが400以上になり
    bDirtyLineでバッファオーバーフローが発生する問題を対策

  <移植>
  ◎XM7 L77SX+z09 R3cより以下を移植
  ・FM-7モード時に、$FD0C～$FD0Fのミラーが$FD08～$FD0Bに現れるように修正
  ・キー操作で各種ダイアログを閉じた際のキー情報がVMに伝わってしまい誤動作する
    問題を対策
  ◎XM7gより以下を移植
  ・FDCサブウインドウのバッファオーバーフロー対策ミスを修正
  ・FDDのモーターON時の回転位置を正確に再現するように改善
  ・回転位置を利用した各種イベント発生タイミングを改善
  ・データ転送割り込み間隔を改善
  ・FDCのシーク系コマンド(TYPE0)実行後、HEAD ENGAGEDフラグが立ったままになる問
    題を修正
  ・FDCリセット時のセクタレジスタ初期値を0から1へ修正
  ・ディスクイメージファイルのアンマウント時、FDCのWRITE PROTECTEDフラグが1に
    なってしまう問題を修正

  <移植時に改良・変更した点>
  ・キー操作で各種ダイアログを閉じた際にキーが離されるまで待機するように対策
  ・FDD/FDCの改善点をSFDにも対応


  R43→R44の変更点一覧です。

  <変更>
  ・サブウインドウの最小化・非表示状態から単体での復帰後、フォーカスをメイン
    ウインドウへ戻すように変更
  ・動作設定画面のカーソルキーによる操作時にフォーカスがあらぬ箇所へ遷移する
    場合がある問題をいくつか対策
  ・ディスアセンブルコード部のセグメント管理変数をBYTE型からint型に変更
    ※呼び元がn変数なので…
  ・FM-77モード時に、サイクルスチール設定の優先順位をFM-77実機の挙動に合わせ、
    サブI/Oによる高速モード設定 > モードスイッチ設定 > サブI/Oによる低速モード
    設定、の順になるように修正(cycle_steal_modeとcycle_steal_lockを統合)
  ・印刷ダイアログ表示時にVMロックしない設定時もフルスクリーン時からの表示時は
    VMロックして印刷ウインドウを表示する仕様に変更
  ・24kHz表示エミュレートのウインドウ時とフルスクリーン時の設定を統合
    ※ラスタ単位レンダリングとか疑似400ラインモードとかグリーンモニタモードとか
      TTLカラーモニタモードとかは両スクリーンで統合されてるので…
  ・FM音源ディスプレイ/FM音源レジスタで管理している0個からの搭載OPN個数表現を
    {16,0,1,2,…}から{0,1,2,3,…}に変更し、ソースコードの可読性を向上。
    PSG搭載時の表現仕様はbit3フラグ(8)から変更無し。
  ・「スティッキーフォーカスを使用」表記をXM6typeGに倣い「バックグラウンド時も
    再生」に変更
  ・メモリダンプ・逆アセンブルサブウインドウの論理アドレスモード時、タイトルの
    [Logical]追記表示を廃止(物理アドレスモード・セグメントモード時は変更無し)
  ・FM-NEW7から取得したBASICモードのブートROMだった場合にROMモードに変更する
    箇所へパッチをあてて無効にする機能を廃止
    (ROMファイルの部分パッチは基本的にエミュレータ側で実施しない方針)
  ・FM-7、FM-77モード時に、標準FM音源を無効にするとマウスセットの割り込み制御も
    無効になる問題を拡張IRQ要因識別部をmainetc.cへ移動することで対策
  ・FDCトラック読み込み時の2D/2DDファイル時の判定条件を修正

  <移植>
  ◎XM7 V1.1 L77SX+z09 R2/R3/R3aから以下を移植
  ・MAGUSパッチ有効時のLizardの起動改善、およびデフォルトをONとする仕様変更
  ・2DDのDSイネーブル記録処理を2HDへ移植
  ・2DDメディアを2Dとして読んだ場合の処理
  ・アクセス可能な最終トラック算出処理
    ※ただしCRC演算は元々のテーブル実装のままとした
  ・D77イメージファイルのマウント時、これまでメディア#0固定マウントだったのを
    エラーの出る限り次のメディアを順次マウントしてみる仕様変更
  ・READ ADDRESSでセクタレジスタにトラックを二重に設定している処理を修正
  ・pcidebug.dll読み込み時のフォルダをXM7.exeと同じフォルダに限定する修正
  ・リセット時にキーボード入力状態を初期化する修正
  ・BREAKキーを離した際にアムノーク隠し機能対策フラグをリセットする修正
  ・Z80カード機能
  ・1.2MHzモード時のテープカウンタ単位数の仕様変更
  ・FM-8モード時のBASIC-ROM切り換え選択機能
  ・FM-8モード時のFM-7互換キーI/O、IRQ有効化機能
  ・拡張割り込み(IRQ)ステータス(0xfd17)から、OPNフラグが読み込める仕様はFM77AV
    以降のシリーズのみとした修正
    ※CaptainYS(山川機長)氏の公開されているFM音源カード回路図からの情報により、
      FM音源カード内で$FD17への接続は破棄されており、OPN割り込みフラグはFM77AV
      以降で実装されたものとみられる点を別途確認したためこの修正は正しいと判断
  ・RTC設定時に時間が狂う問題対策
  ・バブルメモリコントローラのイベント割り当てをXM7に合わせた
    ※ステート読み込み時の調整が面倒くさかった…
  ・FM-8モード時のパリティエラーフラグ制御を設定可能化(変数名は変更)
  ・FM-7/8モード時のVRAMアクセス制限
  ・ASCII/Oh!FM JoyStick対応
  ・LP安定化処理
  ・SCCI対応

  <移植時に改良・変更した点>
  ・Z80逆アセンブルサブウインドウを移植＆対応
    ※内部的にはRZ192を想定し論理アドレスモードと物理アドレスモードに対応したが
      エミュレータ側がバンク未対応のためアプリとしては未対応とした
  ・モニタ種別設定をコンボボックス化しアンバーイエローモニタもGUIで選択出来る
    ように変更
  ・ROMEO対応版とSCCI対応版を統合し、音源合成エンジン選択をコンボボックス化
    デフォルトは内蔵fmgen、ROMEO,SCCI機器が接続されていなくてもそれぞれ設定可能
    機器が接続されていない場合内蔵fmgenになる仕様とした
    ※このあたりの挙動はXM6typeGを参考にさせていただきました
    ※SCCI移植時にコードの可読性を最優先して書き直し、ROMEO、SCCI無効でビルドし
      た場合フラグ変数が(FALSE)に置き換わるだけとした
  ・XM7側SCCIチップ定義名を変更
    ※YM2610Bを'OPNBB'と定義しているのがどうにもしっくりこなかったので、
      他のチップ定義も同様に型番による定義名に変更
  ・メディアがVFDだった場合READ ADDRESSデータ作成時にID FIELDをID ADDRESS MARK
    の上に上書きしている問題を対策


□XM7との相違点

  XM7 V1との相違点一覧です。
  記録として不具合修正以外のフィードバックされた点も含みます。

  <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に対するアクセスのみ実装
  ・動作設定プロパティに1MB FDDの設定スイッチを追加
  ・フロッピーディスク(F)のサブウインドウを拡張して1MB FDCに対応
  ・新規ディスク作成(T)、2D→D77変換(2)、を拡張して2HDに対応
  ・1MB FDDのアクセスインジケータに対応。320KBドライブと区別する為、左上に'2HD'
    表示。FM-7モードおよび1MB FDD設定無効時には非表示

  <バブルカセット関連>
  ・FM-8モードに32KBバブルホルダユニット(MB22601)、128KBバブルインタフェース
    モジュール(MB22212)、128KBバブルホルダユニット(MB22605)相当の機能を追加
    128KBバブルホルダユニットはFM-7/FM-77モードでも使用可能とした
    32KBバブルホルダはFM音源、マウスセットの割り込み制御とI/Oポートが重なる点、
    そもそも物理的に搭載不可能な点からFM-7/FM-77モードでは使用不可能とした
  ・バブルメモリ(B)のサブウインドウを追加。32KBバブルホルダユニット、
    128KBバブルホルダユニットの情報表示に対応
  ・新規バブルカセット作成(B)を追加し、32KB/128KBバブルカセットイメージファイル
    に対応。32KBバブルカセットは初期化しなくてもF-BASICで使用可能
  ・動作設定プロパティに32KBバブルホルダおよび128KBバブルホルダの各設定スイッチ
    128KBバブルメモリ内部モジュール(ユニット2/3)のマウント枠を追加
  ・バブルホルダユニットのアクセスインジケータに対応

  <新規>
  ・FM-8モード時のキー入力処理にFM-8準拠モードを追加。FM-7互換と選択可能
  ・FM-8モード時のディスプレイサブシステムにFM-7のROMを使用する設定を追加
  ・クリップボードの文字列を擬似的にキー入力する貼り付け機能を追加。ALT+Pに貼り
    付けのショートカットを追加
  ・キー入力支援機能を実装。貼り付け機能を利用しているため、事前にINIファイル
    設定が必要。ALT+Kにキー入力支援のショートカットを追加
  ・外部画像フィルタDLLに対応。現状ウインドウモード時のみ。表示サイズを0.5倍の
    320×200ピクセル、1.2倍の768×480ピクセル、1.5倍の960×600ピクセル、1.8倍の
    1152×720ピクセルで表示させるモードを追加
  ・外部画像フィルタDLL使用時に限りアスペクト比調整機能を追加。デフォルト比率は
    0.899(0.4495)。比率はアスペクト比設定サブウインドウで変更可能
  ・フロッピーディスクドライブおよびバブルホルダユニットで「#0,1両ドライブを
    交換する」「#2,3両ドライブを交換する」「両ユニットを交換する」機能を実装
  ・フルスクリーンの画面モード選択肢に「現在の画面モード (整数倍拡大)」を追加
  ・外部音源DLLに対応。詳細はサウンド出力の項を参照
  ・FM-77モード時に拡張RAMを、なし・64KB・192KB(デフォルト)・960KBから選択でき
    るスイッチを動作設定プロパティに追加
    ※960KB拡張RAMモード時は拡張RAMアドレス$40000-$FFFFF、MMRの設定値$40-$FF、
      MSRの設定値$04-$3F、WBRの設定値$00-$0Fが有効、MMR使用時もクロックが低下し
      ない(参考記事：Oh!FM'85年12月号 FM-7 DATおよび拡張RAMボードの制作)
  ・ステート、ディスク、テープ、バブルカセットのファイル履歴の保存に対応
  ・マウント状態の保存に対応。ベタイメージファイルに対する書き込み禁止設定の
    保存にも対応
  ・漢字ROM、テープ/プリンタ、割り込み(メインCPU、サブCPU)のサブウインドウを追
    加。(XM7 V1.0で実装されていた仕様を継承)
  ・サウンド出力モードをステレオにしている際、FM音源ディスプレイでどちらから出
    力されているか確認できるようにした
  ・サブウインドウのポップアップスタイルに対応
  ・サブウインドウ表示状態の保存に対応。再起動後「全て復元」を実施することで、
    前回終了時のサブウインドウを再現可能。起動時に自動で復元させることも可能。
    サブウインドウポップアップモード変更時に保存情報はクリアする
  ・サブウインドウの「全て閉じる」を追加
  ・ブートモード、メインウインドウ位置、フルスクリーンモード、ステータスバー、
    カレントディレクトリの保存スイッチを追加
  ・固定のステートファイル名(デフォルトでは"STATE.XM7")でステートセーブおよび
    ロードするクイックセーブ・クイックロード機能を追加
  ・終了時および起動時にそれぞれ自動でクイックセーブ・クイックロードする機能を
    追加
  ・ステートの上書き保存時に、既存ファイルを"ファイル名_##.XM7"とファイル名を
    変更して保存しておく機能に対応。##は00からの通し番号であり、99まで。00～99
    まで存在すると99に上書きする仕様
  ・ファイル履歴にコンテキストメニューを追加し、履歴から削除できる機能を追加
  ・D77ファイルメディアリストにコンテキストメニューを追加し、ディスクタイトル
    (ラベル)の変更を行える機能を追加
  ・FM-8モード時にMFD/SFDから発生するIRQ割り込みのON/OFFを設定可能にした
  ・天丸さんのアイコンを元に作成した、5インチ2HDアイコン1種、3.5インチ2HDアイコ
    ン3種を追加

  <変更>
  ・ファイル履歴によってほぼ同等の操作が可能なため「一時取り出し(T)」を廃止
    一時取り出し状態で保存されたステートをロードすると、ファイル履歴に追加して
    アンマウントする
  ・その後実装された「最初まで巻き戻し(T)」も同様の理由で移植しない方針とする
  ・ドライブ2および3のアクセスインジケータは、どちらかのドライブにマウントした
    際に追加表示する
  ・メディアタイトルの文字数がアクセスインジケータの表示可能文字数を超えた際、
    種別(拡張子)のみを表示する
  ・マウント中はGUIメニューの1MB FDD／320KB FDD／カセット(C)にファイル名付きで
    子メニュー表示するように変更。このため、2D/VFDファイルに関しての孫メニュー
    に表示されるマウントディスクファイル種類表示は廃止
  ・1MB FDD、バブルカセットを動作設定プロパティで無効にした際、GUI子メニューが
    灰色になる仕様に変更。(XM7 V1.1は孫メニューが灰色になる)
  ・FM-7モード時の1MB FDDおよび、FM-7/77モード時の32KBバブルホルダは無効となる
    が、GUIメニュー操作は可能な仕様に変更。(XM7 V1.1は子メニューが灰色になる)
  ・キャプションへの表示情報に最後にロード／セーブしたステートを追加
    これはリセットによってクリアする。(XM6の動作仕様に準拠)
  ・マウントしたフロッピーディスク、テープ、バブルカセットイメージファイル名の
    キャプションへの表示・非表示を動作設定プロパティで設定できる仕様に変更
    ただし、表示にしても#2～3のマウントファイル名は表示出来ない
  ・スケジューラウインドウのFDC, FDD表記をMFDC, MFDDに変更
  ・機種依存するブートモードの追加に伴い、動作機種変更後に選択不可能なブート
    モードだった場合の再設定仕様を、1MB DOSモード、バブルモード、128KBバブル
    モードだった場合はDOSモード、BASIC(DEBUG)モードだった場合はBASICモード、
    がそれぞれ選択される仕様に変更
  ・標準FM音源/WHG音源/THG音源にアクセスした後に動作設定プロパティで各スイッチ
    をOFFにした場合リセットする仕様に変更
  ・ステートファイルのヘッダ文字列をXM7と区別できるよう変更
  ・XM7がステートファイルの拡張を行った際、本改造版で無条件にロード出来てしまい
    不具合が起きるのを防ぐため、改造版公開時に入手可能なXM7のソースコードで保存
    可能なステートの内部バージョン番号より大きな番号のステートファイルはロード
    出来ないように変更
  ・逆アセンブルサブウインドウ上で「実行中はPCに同期」がOFFの時「トレース」で
    同期しないように変更
  ・メインシステムのメモリダンプ・逆アセンブルサブウインドウで物理アドレスや
    セグメント指定で表示できるように変更(64KB単位)。ただしデバッガ、ジャンプ
    CPUレジスタ、システムスタック、ブレークポイント指定は論理アドレスモード時
    以外使用不可。割り込みベクタ、I/Oエリア指定は物理アドレスモード時では使用
    不可
  ・モニタ種別設定をコンボボックス化しアンバーイエローモニタもGUIで選択出来る
    ように変更
  ・ROMEO対応版とSCCI対応版を統合し、音源合成エンジン選択をコンボボックス化
    デフォルトは内蔵fmgen、ROMEO,SCCI機器が接続されていなくてもそれぞれ設定可能
    機器が接続されていない場合内蔵fmgenになる仕様とした
    ※このあたりの挙動はXM6typeGを参考にさせていただきました
    ※SCCI移植時にコードの可読性を最優先して書き直し、ROMEO、SCCI無効でビルドし
      た場合フラグ変数が(FALSE)に置き換わるだけとした
  ・XM7にその後実装されたメモリダンプ・逆アセンブルサブウインドウの物理アドレス
    モードについては、dashで先行実装していた仕様と衝突するため統合せず

  <削除>
  ※ROMファイルの部分パッチは基本的にエミュレータ側で実施しない方針とした
  ・FM-77のBASICモード時にFM-NEW7の初期ロットに搭載されたブートROMを使用した際
    強制的にROMモードに変更する箇所へパッチをあてて無効にする機能を削除

  <修正>
  ・Visual C++でビルドした際のワーニングを軽減


□仮想マシン

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

    FM-8, FM-7, FM-77 (いずれかを選択) + オプション機器

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

    プロセッサ     メイン     6809(MC68B09相当  クロック2.0MHz/1.2MHz)
                   サブ       6809(MC68B09E相当 クロック2.0MHz/1.0MHz)
                   日本語サブ 6809(MC68B09相当  クロック1.2MHz)
    RAM            メインRAM 1MB(拡張RAM 960KB含む)、サブRAM 7KB、
                   ビデオRAM 48KB、日本語サブワークRAM 8KB
    ROM            F-BASIC ROM 32KB、200ラインキャラクタジェネレータROM 2KB、
                   400ラインキャラクタジェネレータROM 4KB
                   サブモニタROM 8KB(200ライン)/18KB(400ライン)
                   辞書アクセスルーチンROM 16KB
    漢字ROM        JIS78準拠第1水準漢字・非漢字 128KB
    辞書ROM        OASYS-Liteベース、256KB
    表示能力       640x200ドット  8色中8色 1面
                   640x400ドット 16色中2色 1面    から選択
    フロッピー     320KBフロッピーディスクドライブ×4
                   1MBフロッピーディスクドライブ×4
    バブルカセット 32KBバブルホルダユニット×2
                   128KBバブルホルダユニット×2
                   128KBバブルメモリモジュール×2
    テープ         FSK方式にて記録、約1600bps
    サウンド       BEEP音
                   標準PSG音源(AY-3-8910相当)
                   標準FM音源(YM2203)
                   WHG増設FM音源(YM2203)
                   THG増設FM音源(YM2203)
    オプション機器 インテリジェントマウス(MSXマウス)、マウスセット(FMマウス)、
                   MIDIアダプタ、RS-232Cインタフェース、シリアルドットプリンタ,
                   ジャストサウンド


□ROMファイル

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

  (起動サポート)
    ファイル名   サイズ  CPU    物理アドレス
    BOOT_1MB.ROM    512  メイン $FE00-$FFFF   FM-77 1MB DOSモード
    BOOT_BBL.ROM    512  メイン $FE00-$FFFF   FM-7  バブルモード
    BOOTSFD8.ROM    512  メイン $FE00-$FFFF   FM-8  8" DOSモード
    BOOTBBL8.ROM    512  メイン $FE00-$FFFF   FM-8  バブルモード
    BOOTDBG8.ROM    512  メイン $FE00-$FFFF   FM-8  BASICデバッグ用モード

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

    32KB/128KBバブルモードは同一ブートROMにパッチを当てて再現するため、両方の
    ROMファイルは不要ですが、現状128KBバブルモードブートROMは未確認です。

  (漢字・日本語関連サポート)
    ファイル名   サイズ
    KANJI   .ROM 131072 JIS第1水準漢字・非漢字 (FM-8/7/77)
    KANJI1  .ROM 131072 JIS第1水準漢字・非漢字 (FM77AV20/40/20EX/40EX/40SX)
    KANJIA  .ROM 131072 JIS第1水準漢字・非漢字 (FM77AV)
    KANJI   .TMP 131072 JIS第1水準漢字・非漢字

    KANJI.ROM→KANJI1.ROM→KANJIA.ROM→KANJI.TMPの順に検索し、最初に見つかった
    ファイルをFM-77の本体内漢字ROM、またはFM-7の漢字ROMカード、FM-8の漢字/非漢
    字キャラクタセットROMとして使用します。FM-77モード使用時はどれか一つが必須
    です。

    KANJIN  .ROM 131072 日本語通信カード JIS第1水準漢字・非漢字
    KANJIN  .TMP 131072 JIS第1水準漢字・非漢字

    KANJIN.ROM→KANJIN.TMPの順に検索し、最初に見つかったファイルを日本語通信
    カード内漢字ROMとして使用します。日本語通信カード使用時はどちらか一つが必須
    です。

    日本語通信カード側漢字ROMのI/Oアドレスを実機同様に変更可能です。
    (設定1:$FD20, 設定2:$FD28)
    FM-7モード時のみ、漢字ROMカードをOFF、日本語通信カードをON、漢字ROM設定を2
    ($FD20)に設定することで、日本語通信カード側漢字ROMで実行可能です。

    漢字ROM設定1($FD20)はFM-77モード時や漢字ROMカード有効時も設定可能ですが、
    この場合本体側漢字ROMや漢字ROMカードが優先されます。

    漢字ROMの種別を漢字ROMサブウインドウで確認出来る様にしたため、
    JIS78準拠エミュレーションは廃止しました。


□コマンドライン

  同梱の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モード(その他の場合はモード変更しない)


□キーボード

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

  FM-8モード時、キー配列をFM-8準拠とFM-7互換から選択可能としています。
  FM-8準拠の場合、テンキーのグラフィック文字配列がFM-7とは異なります。
  また、実機同様フルキーの「＼」による「”」が入力できなくなります。

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

□ディスクファイル

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

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

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

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


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

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

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

  B77フォーマットはヘッダ部とデータ部で構成します。
  ヘッダ部は32バイトで構成され、D77(D88)のヘッダ部からトラックデータテーブルを
  除いたものとほぼ同様です。
  データ部は32KBもしくは128KBのベタデータです。
  よって、BBLファイルにヘッダ部を加えることでそのままB77ファイル化出来ます。
  また、D77(D88)フォーマット同様、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 )


□サウンド出力

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

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

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

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


□ディスプレイ描画

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

  外部画像フィルタ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メニュー

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

  ファイル(F)
    1MB DOSモード(M)      起動モードを1MB DOSモードにセットします。
                          FM-8モード、FM-77モード時に選択できます。
    BASIC(DEBUG)モード(C) 起動モードをBASIC(DEBUG)モードにセットします。
                          FM-8モード、FM-77モード時に選択できます。
    バブルモード(U)       起動モードをバブルモードにセットします。
    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コントローラウインドウを表示します。
    漢字ROM(N)            漢字ROMウインドウを表示します。
    テープ＆プリンタ(T)   オーディオカセット＆プリンタウインドウを表示します。
    ディスプレイサイズ(Z) ウインドウモード時の表示サイズを設定します。外部描画
                          フィルタ未使用時はx1.0およびx2.0のみ有効です。
    アスペクト比調整(E)   画像フィルタDLL使用時に限り、ONにすると以下で設定した
                          アスペクト比で表示します。

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

  ツール(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)       使用する画像フィルタを設定します。
    貼り付け(E)           クリップボードの文字列を入力します。
    キー入力支援(K)       キー入力支援ダイアログを開きます。

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

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


□互換性

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

  1MBフロッピーディスクに関しては、FM-77/FM-8モードで対応しています。
  両面単密度(FM)および両面倍密度(MFM)に対応しています。
  片面メディアについてはD88(D77)のヘッダ1(奇数トラック)側データの無い2HD
  メディアを片面メディアと認識します。
  F-BASIC V3.5, OS-9 Level 2にて動作することが確認済みです。
  F-BASIC V3.1,F-BASIC V2.0(8"版)においても動作すると思われますが未確認です。
  (確認報告求む！)

  32KBバブルカセットに関しては、FM-8モードのみで対応しています。
  FM-7/77モードではバブルホルダユニットが物理的に接続不可能のため未対応です。
  F-BASIC V1.0/V2.0上で動作することが確認済みです。

  128KBバブルカセットに関しては、全モードで対応しています。
  F-BASIC V2.2にて動作すると思われますが未確認です。(確認報告求む！)

  ブートROMさえ用意されてあれば、32KBバブルモードにおいてはFM-7/77モード時にも
  128KBバブルモードにおいてはFM-77モード時にも選択可能です。
  これは実機でも同様です。


□その他

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

  キー入力支援機能につきましてgasajz氏のCopyPe for XM7dashの挙動を参考にさせて
  いただきました。この場を借りてお礼申し上げます。
  gasajz Room
  https://sites.google.com/site/gasaroom/home


□開発環境

  開発開始日時  2010年1月23日
  初公開日時    2010年6月10日

  主要開発環境  ASUS ROG STRIX Z690-F GAMING WIFI
                  12th Gen Intel Core i7-12700 2.10GHz
                  32GB RAM, 1TB NVMe M.2 SSD, 2TB NVMe M.2 SSD
                  nVIDIA GeForce GTX 1660 SUPER VENTUS XS OC
                  Microsoft Windows 10 Pro Ver.22H2 (x64)
                ASUS Rampage II Extreme
                  Intel Core i7-920 (Bloomfield) 2.66GHz
                  18GB RAM, 4TB HDD
                  nVIDIA GeForce GTX 950
                  Microsoft Windows 10 Pro Ver.22H2 (x64)
                NEC LaVie G Type Z PC-GL19614GU
                  Intel Core i7-3517U 1.9GHz, 4GB RAM, 200GB SSD
                  Microsoft Windows 10 Pro Ver.22H2 (x64)
                FM-77D2 (MB25250)
                  400ラインセット (MB28121)
                  FM音源カード (MB22459), 日本語通信カード (FM77-101)
                  F-BASIC V3.0L2.0, F-BASIC V3.5, F-BASIC V3.3L10
                FUJITSU MICRO 8 (MB25020)
                  32KBバブルホルダユニット (MB22601)
                  キャラクタセット(非漢字) (MB22002)
                  キャラクタセット(漢字) (MB22003)
                  ミニフロッピィアダプタ (MB22603)
                  F-BASIC V1.0, F-BASIC V2.0
                FUJITSU MICRO 7 (MB25010)
                  漢字ROMカード (MB22405)
                  ミニフロッピィインタフェースカード (MB22407)
                  ミニフロッピィディスクユニット (MB27611)
                  FMデータレコーダ (MB27502)
                  F-BASIC V3.0

  主要開発言語  Microsoft Visual Studio 2017 Community 15.9.54 (リリースビルド)
                Netwide Assembler (NASM) v0.98.08.towns5
                HD6309 cross assembler version 01.20T
                Borland C++ Compiler 5.5.1


□XM7dash V1に関する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:B77ファイルの構造がわかりません。
  A:「バブルカセットファイル」の項目を参照願います。
  Q:B77ファイル内の全てのディスクに対して、ライトプロテクトしたいのですが。
  A:B77ファイルの属性をRead Onlyにしてください。ファイル内の全てのディスクが
    ライトプロテクト状態として扱われます。
  Q:1つのB77ファイルに入るカセット数に制限はありますか。
  A:あります。XM7dashではB77ファイルについて、1ファイルあたりの最大カセット数
    を16個に制限しています。
  Q:バブルモードは32KB/128KBの2種ありますが、ROMファイルは1種類しか必要として
    いないようですが。
  A:32KBバブルモードと128KBバブルモードはアクセスI/Oアドレスが異なるだけのため
    モード変更時のパッチあてで対応しており、ROMファイルは1種類しか必要としてい
    ません。どちらのROMファイルでも使用可能です。

  <デバッガ>

  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:割り込み(メイン)ウインドウで、NMI  (SFDC IRQ)とはなんですか？
  A:FM-77 1MB FDCのIRQ信号です。
  Q:割り込み(メイン)ウインドウで、FIRQ (SFDC DRQ)とはなんですか？
  A:FM-77 1MB FDCのDRQPULSE信号です。
  Q:割り込み(メイン)ウインドウで、IRQ  (SFDC)とはなんですか？
  A:FM-8 1MB FDCのIRQ信号です。
  Q:割り込み(日本語サブ)ウインドウは？
  A:日本語サブCPUの割り込み信号が発生する仕組みが無いため実装していません。
  Q:バブルメモリウインドウが常時"NO COMMAND"のようですが
  A:バブルメモリコントローラの仕様で、コマンド完了時にレジスタをクリアして
    しまうためです。サブメニューに「Debug mode」というスイッチを追加しており、
    このフラグが立っている時はコマンド完了時のクリア直前の各レジスタを表示する
    ことが出来ます。

  <ツール>

  Q:F-BASIC V3.5以降などの漢字入力可能モード時に全角文字を含む文字列を貼り付け
    すると、文字化けしたり文字欠けしたりします。
  A:仕様です。
    貼り付け機能はキーボードからの該当文字コードの入力として実現しており、
    全角文字は前後1バイトずつ処理されます。この時1バイト目はグラフィック文字
    となり、これが漢字モード時はディスプレイサブシステムの入力処理で、該当する
    全角文字に変換されてしまったり、無視されてしまったりするためです。
    非漢字モードで貼り付けを行ってください。

  <その他>

  Q:FM-77モードのF-BASIC V3.5/V3.3L1x/V2.0でホットリセットが出来ません。
  A:BASIC(DEBUG)モードにして行ってください。このブートモードはFM-77実機で3つの
    ブートスイッチ全てがオフになった状態を再現しています。
    ただしFM-NEW7の初期ロットに搭載された新BASICモードブートROMを使用していた
    場合、ブートROM内処理でBASIC ROMを有効にしてしまうため、ホットリセットは
    出来ません。これはROM取得元の実機のブートROMの仕様通りです。
    FM-7またはFM-77から取得したブートROMを使用してください。


□連絡先

  Twitter
  https://twitter.com/tomatoma911
