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

  X68000 EMULATOR XM6 (version 2.06)

  for Win32
  Copyright (C) 2001-2006 ＰＩ．

------------------------------------------------------------------------------
□はじめに

  XM6はパーソナルワークステーションX68000を仮想化・再現する、エミュレータと
  呼ばれるソフトです。X68000は1987年発売の初代機から1992年発売のCompactまで
  多くの機種が存在しますが、XM6はこの中でも比較的標準に近いスペックを持つ
  X68000EXPERTをエミュレーションします。


□動作環境

  以下の動作環境で動作します。

  (1)プロセッサ
     IA-32プロセッサで、MMX拡張セット、CMOV命令を備えたものが必要です。
     具体的には、次の通りです。

     Intel ...... PentiumII,Celeron以降     (P5, P54C, P55Cなどは不可)
     AMD ........ Athlon,Duron以降          (K6シリーズは不可)
     VIA ........ C3-Nehemiah or C7         (C3-Ezra以前は不可)
     Transmeta .. Crusoe,Efficeon           (全てOK)

  (2)OS
     Windows98以降のWin32系OSで動作します。

     具体的にはWin9x系のWindows98,98SE,Meと、WinNT系のWindows2000,XP,
     WindowsServer2003が該当します。Vista(RC)での動作は確認していません。

  (3)DirectX
     DirectX5を使用しています。具体的には、その内部に含まれるコンポーネント
     であるDirectSound(サウンド)、DirectInput(入力デバイス)を使っています。

     このDirectX5は、上記(2)の動作OSには、すべて同等品がプレインストール
     されています。


□DLLファイル

  外部DLLとして、MFC 7.1およびVisual C++ランタイムライブラリ7.1を使います。
  別途配布しているランタイムファイルをダウンロードして、XM6.exeと同じフォル
  ダに配置してください。該当ファイルは以下の２つです。

      MFC71.dll    (ファイルバージョン 7.10.3077.0以降)
      MSVCR71.dll  (ファイルバージョン 7.10.3052.4以降)


□ROMファイル

  起動するためにはX68000EXPERTのROMをファイル化したものが必要です。次にあ
  げるファイルを準備して、XM6.exeと同じフォルダに配置してください。

      ファイル名       アドレス        ファイルサイズ
      IPLROM.DAT   $FE0000-$FFFFFF      131072 bytes
      CGROM.DAT    $F00000-$FBFFFF      786432 bytes

  ・IPLROM.DATはIPL,IOCS,ROM OSなどが格納されています。X68000EXPERTのIOCS
    バージョンはversion 1.00 (87/05/07)です。X68000初代(初期ロット87/03/18
    を除く),ACE,PRO,SUPERは同様のバージョンですのでそのまま使えます。

  ・CGROM.DATはフォントデータが格納されています。Windows内蔵のフォントから
    CGROM.DATファイルを合成できるツールがあるようですが、XM6ではX680x0から
    取り出したフォントデータを推奨します。XM6は起動時にフォントデータの簡易
    チェックを行い、X680x0から取得したフォントでないと判定した場合は警告メ
    ッセージを表示します。

  ・CGROM.DATが見つからない場合、代替ファイルとしてCGROM.TMPを検索します。
    この場合もCGROM.DATと同様のフォントデータ検査を行います。

  また、SCSIのエミュレーションを行うには、SCSI IOCSをファイル化したものが
  必要です。以下のファイルを同様に準備してください。なお、これらのファイル
  がなくても、SASI(SxSI)経由の大容量ディスクアクセスは可能です。

      ファイル名           アドレス        ファイルサイズ
      SCSIINROM.DAT    $FC0000-$FC1FFF      8192 bytes
      SCSIEXROM.DAT    $EA0000-$EA1FFF      8192 bytes
     (SCSIEXROM.DAT    $EA0020-$EA1FFF      8160 bytes ... WinX68k高速版互換)

  ・SCSIINROM.DATとSCSIEXROM.DATは、SCSIインタフェースタイプにあわせて
    どちらかを準備してください。内蔵タイプがSCSIINROM.DAT、外付タイプが
    SCSIEXROM.DATにそれぞれ対応します。

  ・動作確認済みSCSI IOCSは次のとおりです。

      ファイル名         メーカ及び製品名        SCSI IOCSバージョン
      SCSIINROM.DAT    SHARP X68000XVI内蔵             0003
      SCSIEXROM.DAT    システムサコム SX-68SC          0001
      SCSIEXROM.DAT    ツクモ TS-6BS1mkIII             000A


□SRAMファイル

  SRAMファイルは"SRAM.DAT"のファイル名で読み書きされます。存在しない場合
  は自動的に生成されます。

  ・SRAMファイルを削除した状態で起動すると、データが初期化されます。ここで
    本来メインRAMサイズは1MBに設定されますが、XM6の仕様及びパッチの働きにより
    修正され、「オプション」の「システム」タブで設定した値になります。
    デフォルトは2MBです。これはX68000EXPERTの仕様にあわせた変更です。

  ・上の修正は「オプション」の「システム」タブで「メモリスイッチを自動更新す
    る」にチェックを入れた場合のみ有効です。チェックなしの場合、物理メモリが
    2MB、メモリスイッチが1MBという状態になります。

  ・電源オン状態でXM6を終了すると、SRAM内メモリスイッチの起動回数カウンタが
    自動的に+1されます。これは「オプション」の「高度な設定」タブで禁止する
    こともできます。


□コマンドライン

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

      XM6 <Filename 1> <Filename 2>

  コマンドラインオプションとして、ファイルネームを2組まで指定できます。
  XM6はこれらのファイルを調べ、以下のように扱います。ただしFilename 2には
  フロッピーディスクイメージファイルのみ指定可能です。

      フロッピーディスクイメージファイル  ドライブ0またはドライブ1へセット
      MOディスクイメージファイル          MOドライブへセット
      ステートデータファイル              ステートデータをロード

  ・フロッピーディスクイメージファイルはFilename 1またはFilename 2に応じて、
    それぞれドライブ0、ドライブ1に対してフロッピーディスクをマウントします。

  ・実行中に、フロッピーディスクイメージファイルをドラッグ＆ドロップするこ
    とでフロッピーディスクをマウントします。ウィンドウの左半分がドライブ0、
    右半分がドライブ1に対応します。

  ・実行中に、MOディスクイメージファイルをドラッグ＆ドロップすることでMOを
    マウントします。ウィンドウの全領域に対して有効です。

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


□キーボード

  キーボードの割り当ては以下の表のようになります。X68000にはこの表も含めて
  特殊キーが多数存在しますが、それらはメニューのツール(T)→ソフトキー(K)で
  擬似的に入力するか、オプションのキーボードマップ編集機能で対応するキーを
  割り当てて入力できます。

      X68000 [HOME]      → JP106 [Home]
      X68000 [INS]       → JP106 [Insert]
      X68000 [DEL]       → JP106 [Delete]
      X68000 [ROLL DOWN] → JP106 [Page Up]
      X68000 [ROLL UP]   → JP106 [Page Down]
      X68000 [UNDO]      → JP106 [End]
      X68000 [CLR]       → JP106 [Num Lock]
      X68000 [CAPS]      → JP106 [Caps Lock]
      X68000 [CTRL]      → JP106 [Ctrl(左)]
      X68000 [BREAK]     → JP106 [Pause]

  ・[ESC],[BS],[TAB],[SHIFT],[SPACE],[RETURN],カーソル等は同じです。
 
  ・テンキーは同じシンボル([/],[+]など)のものは同じキーに割り付けてあります。

  ・ファンクションキーは[F1]〜[F9]は同じで、[F10]は[F11]に移動しています。

  ・Windows2000,WindowsXPなどWindowsNT系のOSでは、日本語106キーボードに含ま
    れるキーのうち、[半角/全角],[ひらがな/カタカナ]の2つが正常に読み取れま
    せん。これはDirectInputの仕様です。このため、この2つのキーを割り付ける
    ことはできません。また、[英数/CapsLock]は、SHIFTキーとあわせて押さないと
    リリースが読み取れません。これも同じ理由によります。

  ・オプション設定でキーボードマップを編集し、通常Windowsで使われるキーであ
    る[Alt]や[F10]などのキーをX68000側に割り当てた場合、XM6がアクティブなア
    プリケーションであるときに、これらキー本来の機能を無効化します。たとえば
    [Alt]を割り当てると、[Alt]+[F]でファイルメニューを開いたり、[Alt]+[F4]で
    XM6を終了したりといった操作ができなくなります。割り当てを解除すると、通
    常の動作になります。Alt・F10以外では、Windowsキーとコンテキストメニュー
    キーが本事項に該当します。Alt・Windowsの各キーでは、左・右を区別します。


□マウス

  マウスはWindowsに接続されているデバイスをX68000へ割り当てることで操作しま
  す。この割り当て(マウスモード切り替え)はキーボードの[F12]またはマウスの中
  ボタンで行います。

  ・マウス中ボタンでのマウスモード切り替えは、マウスドライバ及びDirectXの仕様
    上うまく動作しない場合があります。この場合はキーボード操作により切り替え
    て下さい。

  ・ホイール付きマウスの場合、ホイールを上下させることで、オプションの「アス
    ペクト比にあわせて拡大」状態を変更することができます。ホイールを奥に向か
    う方向に動かすと拡大表示、手前方向に動かすと通常表示になります。


□ジョイスティック

  ジョイスティックポート1及びポート2のI/Oエミュレーションを行います。
  X680x0では標準的な2軸2ボタンタイプのほかに、軸数やボタン数を増やした特殊な
  ジョイスティックを接続することができます。XM6では以下の12種類をサポートし
  ています。

      ATARI標準               (2軸2ボタン:デジタル)
      ATARI標準+START/SELECT  (2軸4ボタン:デジタル)
      サイバースティック      (3軸8ボタン:アナログ)
      サイバースティック      (3軸6ボタン:デジタル)
      メガドライブ3ボタン     (2軸4ボタン:デジタル)
      メガドライブ6ボタン     (2軸8ボタン:デジタル)
      CPSファイター(SFC)      (2軸8ボタン:デジタル)
      CPSファイター(MD)       (2軸8ボタン:デジタル)
      マジカルパッド          (2軸6ボタン:デジタル)
      XPD-1LR                 (4軸2ボタン:デジタル)
      パックランド専用パッド  (0軸3ボタン:デジタル)
      BM68専用コントローラ    (0軸6ボタン:デジタル)

  ・オプションのジョイスティック設定機能により、ボタン配置の変更やシンクロ
    連射の速度設定ができます。


□サウンド出力

  FM音源・ADPCMについてサウンド合成、サウンド出力を行っています。サンプリン
  グレートは44.1kHz〜62.5kHzまで5段階可変です。量子化ビットは16bit固定です。

  ・48kHz,88.2kHz,96kHzでの合成は、サウンドデバイスが指定したサンプリング
    レートに対応していることが必要です。

  ・62.5kHzでの合成では、DirectXによりサンプリングレート変換が行われます。
    最終的なサンプリングレートはサウンドデバイスのドライバに依存します。

  ・再生できるサウンドデバイスがなければサウンド合成・出力とも行いません。


□フロッピーディスク

  フロッピーディスクイメージファイルによるエミュレーションを行います。
  以下のファイル形式をサポートしています。

      1.25MBファイル形式 (拡張子XDF,HDM,2HD,DUPなど、2HD専用)
      DIMファイル形式    (拡張子DIM、2HD/2HDA/2HS/2HC/2HDE/2HQ/N88BASIC)
      D68ファイル形式    (拡張子D68またはD88、フリーフォーマット)
      異常ファイル形式   (1.25MBファイル形式で、サイズが1261568バイト以外)
      720KBファイル形式  (拡張子2DD、2DD専用)
      1.44MBファイル形式 (拡張子2HQ、2HQ専用)

  ・読み込み専用属性のついたイメージファイルをマウントすると、そのディスクを
    書き込み禁止(Write Protected)として扱います。

  ・1.25MBファイル形式はファイルサイズが1261568バイトであれば拡張子は問いませ
    んので、これ以外の拡張子のものも使用可能です。720KBファイル形式、1.44MB
    ファイル形式も同様に、それぞれ737280バイト、1474560バイトのファイルであれ
    ば使用可能です。

  ・2HS,2HDEは2HD.SYS(Missy.M氏)や9SCDRV.X(6no8rou氏)でサポートされている拡張
    フォーマットです。2HQはPC/AT互換機の3.5インチドライブと互換性のあるフォー
    マットで、1.44MBの容量を持ちます。

  ・D68ファイル形式は他のPCエミュレータでよく使われているD88ファイル形式と互
    換性があります。X68000向けであることを明確にするため拡張子を変更していま
    す。１つのファイルに複数枚のイメージを収める、マルチディスクフォーマット
    に対応しています。また密度は2D/2DD/2HDすべてに対応していますが、X68000の
    ドライブは2HD専用であるため、2D/2DDにアクセスする場合は改造オプションの
    「2DD/2HDタイプに換装する」にチェックを入れておく必要があります。

  ・異常ファイル形式は1.25MB・DIM・D68のどれにも該当せず、かつ特定の条件に合
    致した場合に限り使われます。このファイル形式では一般的な2HDディスクに対
    して、イメージファイル側に不足または余剰が生じます。これにより本来期待さ
    れる動作が行われない可能性があるため、この形式をマウントする際は警告メッ
    セージを表示します。

  ・メニューの「フロッピーディスクイメージの作成」で作成可能なフォーマットは
    次の通りです。OS-9/68000以外のフォーマットではHuman68k準拠の論理フォーマ
    ットを同時に行うこともできます。

    2HD(Human68k),2HDA,2HS,2HC(IBM5"),2HDE,2HQ(IBM3.5"),2DD,OS-9/68000


□SASIハードディスク

  SASIハードディスクイメージファイルによるエミュレーションを行います。
  以下のファイル形式をサポートしています。

  HDFファイル形式    (拡張子HDF)
  ファイルサイズは10441728バイト、20748288バイト、41496576バイトのいずれか
  (それぞれ10MBドライブ、20MBドライブ、40MBドライブに対応)

  ・動作オプションのSASIタブで、接続ドライブ数とファイル名を設定します。
    接続可能ドライブ数は16ドライブまでです。設定内容はその後のリセットから有
    効となります。


□SCSIハードディスク/光磁気ディスク(SxSI経由)

  X68000EXPERTはSUPER/XVI以降と異なりSCSIインタフェースを持たないため、SxSI
  (Hero氏)を用いたSASIインタフェース経由での接続をエミュレーションします。
  この場合、外部ROMファイルは不要です。

  SCSIハードディスクは以下のファイル形式をサポートしています。

  HDSファイル形式    (拡張子HDS)
  ファイルサイズは10MB以上1016MB以下の範囲で、任意のサイズ(但し512バイト単位)

  光磁気(MO)ディスクは以下のファイル形式をサポートしています。

  MOSファイル形式    (拡張子MOS)
  ファイルサイズは次の4種類のいずれか：
      128MBタイプ (127398912バイト)
      230MBタイプ (228518400バイト)
      540MBタイプ (533248000バイト)
      640MBタイプ (635600896バイト)
   128MB,230MB,540MBは512バイト/セクタ、640MBは2048バイト/セクタになります。
   640MBはセクタサイズが異なるため、SUSIEなどの対応ドライバを必要とします。

  ・接続可能ドライブ数はハードディスクが6ドライブまで、MOが1ドライブ固定で
    計7ドライブまでですが、前述の通りインタフェースとしてSASIインタフェース
    を共用しているため、SASIハードディスクのドライブ数から制限を受けます。

  ・MOディスクとして読み込み専用属性のついたイメージファイルをマウントすると
    そのディスクを書き込み禁止(Write Protected)として扱います。

  ・SxSIによるSCSIドライブの接続では、ターゲットとなるSCSI機器がSCSIバスの
    パリティビットを無視するか、本体側にパリティビット生成回路を付加する必要
    があります。XM6では全ターゲットともパリティビットをチェックするものとして
    扱っていますので、SxSIを使うためには「オプション」の「改造」タブで「パリ
    ティ生成回路を付加する」にチェックが入っている必要があります。

  ・対応ドライバはHero氏純正のSxSI4のみです。SxSI5,SASIDRV.X,その他の改造版
    は動作しない可能性がありますので、使用しないで下さい。特にSCSIコマンドは
    SxSI4が発行するコマンドのみサポートしています。ただし640MBタイプMOは例外
    であり、SCSIディスクドライバとしてSUSIEを使う必要があります。

  ・SxSI4の制限上、「オプション」の「システム」タブで、「MPUのみノーウェイト
    動作」にチェックを入れると、ディスクの読み書きに失敗する場合があります。
    これは実機と同様の動作です。

  ・SxSIはその性格上、実機でもXM6でも使いこなしにスキルを要するソフトウェア
    です。またSxSIの公式ドキュメントはそれなりの知識がないと理解が難しいため
    簡単な設定方法、使い方を後で説明しています。参考にしてください。

  ・version2.01までのSxSI機能にはSASIIOCS.SYSとの整合性に問題があり、10MB以上
    のファイルを扱った場合に、不定期にデータ化けが起こることがありました。
    version2.02以降ではこの問題に対処しています。ご迷惑をおかけしました。


□SCSIハードディスク/光磁気ディスク/CD-ROM(SCSI経由)

  SCSI IOCSのROMファイルがあれば、標準SCSIインタフェース経由でのSCSIディスク
  エミュレーションが行えます。X68000EXPERT+SHARP純正SCSIボード(CZ-6BS1)、
  またはX68000SUPER以降と同等の、内蔵SCSIインタフェースを利用した接続になり
  ます。

  SCSIハードディスクは以下のファイル形式をサポートしています。

  HDSファイル形式    (拡張子HDS)
  ファイルサイズは10MB以上4095MB以下の範囲で、任意のサイズ(但し512バイト単位)

  光磁気(MO)ディスクは以下のファイル形式をサポートしています。

  MOSファイル形式    (拡張子MOS)
  ファイルサイズは次の4種類のいずれか：
      128MBタイプ (127398912バイト)
      230MBタイプ (228518400バイト)
      540MBタイプ (533248000バイト)
      640MBタイプ (635600896バイト)
   128MB,230MB,540MBは512バイト/セクタ、640MBは2048バイト/セクタになります。
   640MBはセクタサイズが異なるため、SUSIEなどの対応ドライバを必要とします。

   CD-ROMディスクは以下のファイル形式をサポートしています。

   ISOファイル形式   (拡張子ISO、ISO9660ベタイメージ)
   モード1(2048バイト/セクタ)で、データのみ格納されたファイルとRAW形式で記録
   されたファイルの両方に対応しています。

  ・Human68kで1024MBを超えるハードディスクにアクセスする場合、パーティション
    の切り方に注意してください。開始位置が1024MBめ以降になるパーティションへ
    アクセスするためには、GOVERHD.xなどの補助ドライバが必要です。

  ・MOディスクとして読み込み専用属性のついたイメージファイルをマウントすると
    そのディスクを書き込み禁止(Write Protected)として扱います。

  ・外付インタフェースはSxSIと排他です。つまり、外付インタフェースを有効にす
    ると、SxSI経由のSCSIハードディスク・SCSI光磁気ディスクを接続することはで
    きません。

  ・内蔵インタフェースはSASI・SxSIと排他です。つまり、内蔵インターフェース
    を有効にすると、SASIハードディスク・SxSI経由のSCSIハードディスク・SxSI
    経由のSCSI光磁気ディスクを接続することはできません。


□RS-232C

  RS-232CはCOMポート(シリアルポート)を使ったエミュレーションが行えます。

  ただしエミュレーションによるオーバーヘッドのため、実効速度は実機の65%〜
  85%程度となります。

  ・エミュレーションに使用するCOMポートを指定すると、COMポートを割り当てな
    い場合より多少重くなります。RS-232Cを使う場合だけ割り当てることをお勧め
    します。


□プリンタ

  プリンタはLPTポート(パラレルポート)を使ったエミュレーションが行えます。

  ただしエスケープシーケンスなど、プリンタにより異なる部分の吸収は行ってい
  ません。CZ-8PCxなどシャープ製のプリンタを接続している場合には、対応する
  プリンタドライバ(PRNDRVx.SYS)を組み込んだ上でプリンタ出力を行うことによ
  り、実機通りの出力が得られます。逆に、現在一般的に使われるプリンタでは正
  しい出力は期待できません。

  ・エミュレーションに使用するLPTポートを指定すると、LPTポートを割り当てな
    い場合より多少重くなります。プリンタを使う場合だけ割り当てることをお勧め
    します。


□MIDI

  MIDIはSHARP純正MIDIボード(CZ-6BM1)の動作をエミュレーションします。この機能
  はデフォルトでOFFになっています。

  ・仮想マシンをリセットした時と、MIDIコントローラのレジスタリセットを行った
    時に、出力音源に対して音源リセットを示すエクスクルーシブを送信します。
    このリセットコマンドとして、GM・GS・XG・LAの4タイプを選ぶことができます。
    GS・XGの場合は、それに先立ってGMのリセットコマンドを自動送信します。

  ・WindowsはGM音源以降をMIDI楽器としてサポートしているため、MT-32などGM規格
    に準拠していない音源を使った場合、正確な演奏ができない場合があります。


□TrueKey

  TrueKeyとはX680x0のキーボードを変換基板を介してWindows側PCのシリアルポート
  に接続し、X680x0キーボードからXM6の仮想マシンを操作できる、というものです。

  X680x0標準のキーボードには「XFキー」「OPTキー」などを含め112個のキーがあり、
  一般的な日本語キーボードである106/109キーボードでは、物理的にキーの数が足り
  ません。このためXM6で操作する場合も、特にかな漢字変換時などに制約が出ていま
  したが、X680x0のキーボードを接続することでこれらの制約なしに、スムーズに操
  作できます。

  接続にはMAX232Aなどを用いたレベル変換回路が必要です。またX680x0のキーボード
  に電源を供給するため、PS/2コネクタ又はUSBコネクタを用いて給電します。詳しく
  は同梱のファイル"TrueKey.bmp"を見てください。


□ステートセーブ

  ステートセーブはMPU・メモリをはじめとする仮想マシンの情報と、オプションによ
  り設定できるカスタマイズ情報とを一括してファイルに保存するものです。ただし
  フロッピーディスク、ハードディスク、MOディスクなどの二次記憶データはそれぞ
  れのイメージファイルに記録されるため、ステートセーブデータに含まれません。

  ステートセーブは便利な機能ですが、特に二次記憶データとの同期について注意が
  必要です。X680x0の標準OSであるHuman68kは、ディスクデータの一部をバッファリ
  ングする機能をもっています。たとえばステートデータを保存した後に何らかの
  ディスク内容変更操作を行い、その後にステートデータを読み込むと、バッファリ
  ングしている内容(簡単に言えば、ファイルの総数などです)と、実際のディスク
  の内容が食い違ってしまいます。その後にディスクの書き込みを行うと、あった
  はずのファイルが無くなったり、論理的に破壊されてしまったりすることが起こり
  得ます。十分気をつけてください。

  ・ステートロードを行うと、仮想マシンの時計はセーブ時の状態に戻ります。

  ・ステートロードを行うと、FM音源、ADPCM音源の音声出力はセーブ時の状態に復
    元されますが、MIDI音源は復元されません。(ロード直前の設定がそのまま残り
    ます)

  ・ステートロードを行うと、システムクロック・メインRAM容量・ハードディスク
    イメージファイルなど大半のオプション設定データはセーブ時の設定に復元さ
    れます。ただし、一部のものはロード直前の状態がそのまま残ります。

  ・ステートセーブ・ロードでは、XM6の動作ログはセーブ・ロードされません。

  ・ステートロード後にリセットまたは電源スイッチ操作による電源OFFを行うと、
    ステートファイル名がリセットされます。


□Windowsメニュー

  以下にメニューの概略を示します。なお動作中はマウスモードがWindows側にある
  時に限り、右クリックでメインメニューと同じメニューが開きます。

  ファイル(F)
    開く(O)               ステートデータをロードします。
    上書き保存(S)         ステートデータを上書きで保存します。
    名前をつけて保存(A)   ステートデータを別名で保存します。
    リセット(R)           仮想マシンをリセットします。
    インタラプト(I)       仮想マシンにNMI割り込みをかけます。
    電源スイッチ(P)       仮想マシンの電源スイッチをON/OFFします。
    終了(X)               XM6を終了します。

  フロッピーディスク0,フロッピーディスク1
    開く(O)               フロッピーディスクイメージを設定します。
    イジェクト(E)         フロッピーディスクイメージを取り外します。
    書き込み保護(W)       ライトプロテクトシールを操作します。
    強制イジェクト(F)     イジェクト禁止の場合に強制イジェクトします。
    誤挿入(I)             誤挿入をシミュレーションします。

  MOディスク
    開く(O)               MOディスクイメージを設定します。
    イジェクト(E)         MOディスクイメージを取り外します。
    書き込み保護(W)       ライトプロテクトタブを操作します。
    強制イジェクト(F)     イジェクト禁止の場合に強制イジェクトします。

  表示(V)
    システム(S)           システム情報を表示します。
    プロセッサ(P)         MPUまわりの情報を表示します。
    デバイス(D)           各種デバイスの情報を表示します。
    ビデオ(V)             ビデオRAMの情報を表示します。
    レンダラ(R)           表示合成用ワークメモリの情報を表示します。
    Win32(W)              Windows固有の情報を表示します。
    ステータスバー(S)     ウインドウ下部のステータスバーをon/offします。
    最新の情報に更新(R)   すべてのウインドウを再描画します。
    アスペクト比拡大(A)   アスペクト比がX68000と同一になるよう拡大表示します。
    フルスクリーン(U)     スクリーン表示を全画面モードに切り替えます。

  デバッグ(D)
    実行(X)               仮想マシンの実行を開始します。
    停止(B)               仮想マシンの実行を止めます。
    トレース(T)           1命令だけ実行します。
    リセット(R)           仮想マシンをリセットします。

  ツール(T)
    マウスモード(M)       マウスエミュレーションの有効・無効を切り替えます。
    ソフトキーボード(K)   ソフトウェアキーボードウィンドウを表示します。
    時刻アジャスト(A)     エミュレータ内の時計をWindows側を見て合わせます。
    trap#0命令(I)         d0.bに任意値をセットして、trap#0を実行します。
    WAVキャプチャ(W)      再生サウンドをWAVファイルに記録します
    フロッピーの作成(F)   新しいフロッピーイメージを作成します。
    SASIディスクの作成(A) 新しいSASIハードディスクイメージを作成します。
    SCSIディスクの作成(S) 新しいSCSIハードディスクイメージを作成します。
    MOディスクの作成(D)   新しいSCSI光磁気ディスクイメージを作成します。
    オプション(O)         XM6の動作オプションを設定します。

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

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


□使いこなすためのヒント

  オプション設定、その他について補足します。

  (1)システムクロック
  システムクロック設定はノーマル10MHzの状態からクロックアップ改造により
  性能を向上させるものです。これはSCCを除くすべてのデバイスが影響を受けま
  す。このため、実機でのクロックアップ改造のメリット・デメリットについて
  知識のない方には10MHz以外を設定することはすすめられません。大半のアプリ
  ケーションソフトウェアは10MHzを基準として設計されていますので、それらを
  使うのであれば10MHzにしておくのが無難です。

  (2)メインメモリ
  X680x0では機種により標準装備されているメモリ量が異なり、1MB・2MB・4MBの3
  パターンあります。このうちもっとも標準的なのが2MBで、大半のアプリケーショ
  ンソフトは2MB装備されていることを前提に作られています。必要以上にメモリを
  確保するとWindowsに負荷をかけますので、アプリケーションソフトを使うだけで
  あれば標準2MBで十分です。どうしても不安な方は4MBにしてください。

  (3)合成サンプリングレート
  FM音源・ADPCM音源の合成レートを44.1kHz・48kHz・88.2kHz・96kHz・62.5KHzの
  5種類から選ぶことができます。ただしFM音源エンジンの特性上、44.1kHzではあ
  まり良い音質が得られません。このため96kHz再生が可能な再生環境では88.2kHz
  または96kHz、そうでなければ62.5kHzの使用をお勧めします。作者は88.2kHz・
  62.5kHzの2つを使い分けています。

  (4)サウンドバッファ
  標準設定は100msとなっています。通常はこのままで問題ないと思いますが、処理
  が重くなったときに音が途切れる場合は150ms、200msなどに増やして試してみて
  ください。

  (5)デバッガ
  MPUレジスタ・メモリダンプ・逆アセンブル・ブレークポイントの各ウィンドウを
  活用して効率よくデバッグを進めることができます。これらのウィンドウではマウ
  ス左ダブルクリック(逆アセンブルは＋左クリック)と、右ボタンによるコンテキス
  トメニューをサポートしています。「アドレス入力」ダイアログでは現在の値が既
  定値として入りますので、これを利用してアドレスのコピー＆ペーストが行えます

  (6)RS-232C
  RS-232C経由でMIDI出力を行うソフトウェアでは、一般にボーレートを31250bpsに設
  定してMIDI機器への送信を行っています。この速度はX68000内蔵のSCCで生成可能で
  すが、一般的なPC互換機では使えません。(例えば、PC-98のシステムクロック5MHz
  系の機種であれば生成可能です) このため、Windows側の通信速度を38400bpsに固定
  するオプションを用意しました。MIDI機器が38400bpsでの通信に対応していれば、
  X68000側は31250bpsのつもりでも、実際は38400bpsでCOMポートから出力することが
  できます。

  (7)プリンタ
  プリンタのデバイスを「割り当てない」に設定し、ログファイルのみ指定した場合
  はログファイルへの出力のみ行います。この設定でログファイルのみ一旦出力させ
  その後エスケープシーケンスの除去など何らかの加工を行うことで、テキストファ
  イルの形に変換することができます。現状ではこういった使い方が現実的と思われ
  ます。

  (8)MIDI
  MIDIはオプションボードCZ-6BM1を実装しているため、オプション設定のMIDIタブ
  でボードID1またはボードID2を指定しないと有効になりません。実際のI/Oは設定
  でWindowsデバイスに割り付けることで行いますが、"Microsoft GS Wave Synth"な
  どソフトウェアエミュレーションデバイスを出力デバイスとして使うとテンポが乱
  れやすくなります。

  (9)SxSI
  以下、例としてSCSIハードディスクを1台、SCSI MOドライブを1台の計2台を使い、
  かつSASIハードディスクは使わないものとして説明を行ないます。またXM6.INIと
  SRAM.DATの2つのファイルは初期状態とします。わからなければこの2つのファイル
  をバックアップを取った上で削除してください。

  [ 1]SxSI4.lzh(55364バイト)を入手してください。これがなくては始まりません。
  [ 2]無償公開されているHuman68k version3.02のディスクイメージを用意します。
  [ 3]DiskExplorer(junnno氏)を用いて、[1]を展開したファイル群を[2]で用意した
     ディスクイメージへ転送します。(以下の説明上、ルートディレクトリに)
  [ 4]XM6を起動します。
  [ 5][2]で作成したディスクイメージをドライブ0にセットし、リセットします。
  [ 6]Human68kが起動した後、ファイルネームを補正します。これはDiskExplorer
      での転送時に、ファイル名が8+3文字に切り捨てられてしまうためです。

      REN SCSIFORM.X SCSIFORMAT.X
      REN IBMFORMA.X IBMFORMAT.X

  [ 7]「ツール」→「SCSI ハードディスクイメージの作成」で、ハードディスクの
      イメージファイルを作成します。容量は1016MB以下にします。
  [ 8]「ツール」→「SCSI MOディスクイメージの作成」で、MOディスクのイメージ
      ファイルを作成します。容量は128MB、論理フォーマットはIBMフォーマット
      を選びます。
  [ 9]「ツール」→「オプション」→「SASI」で、ドライブ数を0にします。
  [10]「ツール」→「オプション」→「SxSI」で、ドライブ数を2にします。
      またID0の欄をクリックして、[7]で作ったハードディスクイメージファイル
      を指定します。
  [11]以下のコマンドラインで、CONFIG.SYSを編集します。

      ED A:\CONFIG.SYS

      CONFIG.SYSの先頭に以下の3行を追加します。

          DEVICE=SASIIOCS.SYS
          DEVICE=SCSIHD.SYS ID=0 X68SCSI.BRP
          DEVICE=SCSIHD.SYS ID=1 X68SCSI.BRP IBMSTD.BRP

      [ESC]->[E]でセーブします。
  [12]XM6をリセットします。以下のメッセージが表示され、デバイスとしては認識
      しているものの、論理フォーマットがなされていないためアクセスできない
      ことがわかります。

        X680x0 Super SCSI unit driver ver 1.00  by Hero Soft.
        利用できる BPB read process がないのでSCSIHD.SYSが登録できませんでした

  [13]SCSIFORMAT.Xを使い、ハードディスクを初期化します。起動して聞かれるID
      は0を入力します。その後、物理フォーマット「する」を選び、領域確保を
      行います。以下の説明上、領域確保は'A'で全領域1パーティションとします。
      システムは[16]で転送しますので、「転送しない」を選びます。
  [14]「MOディスク」→「開く」で、[8]で作ったMOディスクイメージファイルを
      指定します。これはMOディスクをドライブに挿入することを意味します。
  [15]XM6をリセットします。以下のメッセージが表示され、ハードディスクと
      MOディスクが使えることが確認できます。

        X680x0 Super SCSI unit driver ver 1.00  by Hero Soft.
        ターゲット ID 0 のデバイスでドライブ C: が利用可能です

        X680x0 Super SCSI unit driver ver 1.00  by Hero Soft.
        ターゲット ID 1 のデバイスでドライブ D: が利用可能です
  
  [16]次のSRAM転送に備えて、システムを転送しておきます。

      SYS C:
      COPY A:\COMMAND.X C:\

      SxSIのファイルをハードディスク上に転送します。

      COPY A:\SCSIHD.SYS C:\
      COPY A:\X68SCSI.BRP C:\
      COPY A:\IBMSTD.BRP C:\

      ハードディスクのCONFIG.SYSを組みます。

      ED C:\CONFIG.SYS

          DEVICE=SCSIHD.SYS ID=1 X68SCSI.BRP IBMSTD.BRP

      (A:\CONFIG.SYSと異なり、この1行のみ追加します)
      [ESC]->[E]でセーブします。
  [17]フロッピーディスクなしでハードディスクから起動できるよう、BOOTSET.X
      を使いSRAMに起動プログラムを設定します。アドレスはED0100とします。
      ユニット起動待ち時間は最短時間である1秒を指定します。
  [18]ここまでで作業終了です。フロッピーディスクをイジェクトし、XM6をリセッ
      トします。ハードディスクからHuman68kが起動します。
      A:がハードディスク、B:とC:がフロッピーディスクドライブ、D:がMOドラ
      イブに割り当てられます。

  ※フロッピーディスクから起動したい場合は[OPT.1]を押しながらリセットします。
    この操作を回避する方法として、BOOTSET.R(TAMA.氏)を使うか、システムドライ
    ブのみSASIハードディスクとする手法が考えられます。


□特徴と互換性

  内部実装とそこから生じる互換性問題について触れます。

  MPU
    高速・正確なエミュレーションで定評のあるStarscreamを採用しています。
    バージョンはv0.26dをベースとし、バスエラー・アドレスエラー・割り込み
    応答などの機能を追加しています。バスエラーまたはアドレスエラーが起こる
    と、ログに記録されます。ただしエラー時のFC(Function Code)は正確では
    ありません。

  キーボード
    DirectInputによりキー押下状態を取得し、内部テーブルでX68000側のコード
    へ変換しています。キーリピートはWindows側の設定と関係なく、X68000側の
    設定(通常メモリスイッチに書き込まれています)でリピートします。テレビコ
    ントロールは純正ディスプレイが接続されている場合と同様、機能しません。

  MFP
    MC68901の機能をフルサポートします。ただしタイマーBは通常キーボード通信
    専用に使われ、かつ周期が速いため簡易実装で済ませています。タイマーA,C,D
    はパルス幅測定モードを除き全モードをサポートしますが、1usディレイモード
    などではスケジューラに大きな負担がかかります。

  DMAC
    HD63450の機能をフルサポートします。ただし複数チャネルをオートリクエスト
    で使った場合のプライオリティ動作は実機通りにはなりません。DMA転送速度は
    8bitポート・バイト転送の場合で約470KB/sec、16bitポート・ワード転送の場合
    で約950KB/secです。

  FDC
    uPD72065の機能をフルサポートします。ただし一部のコピーツールなどで使われ
    れている、FDCリセット機能を用いた書き込み(CRCエラーの作成、単倍混在、２
    周フォーマット、トップシフトなど)は対応していません。

  FDD
    FD55GFR(X68000バージョン)の機能をフルサポートします。デフォルトは実機同様
    2HD・360rpm専用ですが、2DD・300rpmとの兼用ドライブに変更することも可能で
    す。ステップレートは最高速設定で3.072ms/シリンダ、転送速度は2HD動作時で
    500Kビット/sec、2Dまたは2DD動作時250Kビット/secです。ディスク入れ替えは
    イジェクト状態を300ms確保した後、インサート動作を行うようにしています。

  OPM
    YM2151の機能をフルサポートします。波形合成はM88・hoot・XM7等で実績のある
    cisc氏のライブラリfmgenを使っています。レジスタ書き込み時は書き込み後
    1回だけBUSYが上がるようにしていますが、BUSYを無視して書き込んでも問題あ
    りません。(実機と違い、システムクロックが高い場合でも音がおかしくなるこ
    とはありません)

  SASI
    IOSC-2に内蔵されているSASIインタフェースをエミュレーションします。
    転送速度はシステムクロック10MHz時で約450KB/secです。システムクロックに
    比例して速度向上します。

  SCSI
    MB89352の機能をフルサポートします。ただし、XM6のエミュレーションするSCSI
    バスにはコントローラを1台しか接続できないため、ターゲット機能(他の機器
    から制御を受ける機能)は実装していません。データ転送はMPU転送・DMA転送の両
    方式を使用できます。XM6ではDMA転送時のタイムアウト監視を行っていませんの
    で、遅いSCSIデバイスとのアクセスでも、データの取りこぼしは起きません。
    (FiloP.xや、SCSIデバイスドライバv1.04による修正は不要です)

  SCC
    Z8530の機能を非同期通信・NRZデータに限りサポートします。ただし一部の信号
    線変化による割り込みは実装していません。ボーレートは5MHz時38400bpsまで、
    7.5MHz時57600bpsまで使用できます。

  MIDI
    YM3802の機能をフルサポートします。MIDI THRU、クロックフィルタ、アドレス
    ハンタも使用可能です。

  WINDRV
    coさん作成のWindrvXMを暫定組み込みしています。コードおよび動作の評価が
    終了していないため、正式対応ではありません。自己責任で使用して下さい。

    詳しくはco Homepage(http://coexec.hp.infoseek.co.jp/)の説明を参照して
    ください。XM6.iniファイル内の[WINDRV]セクションを手動編集した後にXM6を
    起動することで、EX68/WinX68k互換のWINDRVまたは、WindrvXMが使用可能です。

    デフォルトではI/Oポート($E9F000)の読み込みのみサポートし、WINDRV.SYSが
    組み込まれないようにしています。

  システムポート
    Ver0.90よりXM6の識別機能と、バージョン取得機能を組み込みました。システム
    ポート7($E8E00D)に$58('X')を書き込むと、同じポートから$36,$02,$06が順に
    読み出せます。先頭の$36('6')がXM6識別コードで、以下メジャーバージョン、
    マイナーバージョンと続きます。このポートは、実機では$FFが返ります。

  画面表示(Windows)
    テキスト・グラフィック・スプライト・BGの各画面を合成表示しています。ただし
    以下に示す特殊モードには対応していません。これらは今後対応の予定です。
    ・半透明モード
    ・特殊プライオリティモード
    ・グラフィックのプレーン別スクロール(32色4面モードなど)
    ・スプライトコントローラのタイミングレジスタ特殊設定（メーカ推奨値以外）
    ・その他、データブック記載以外の使い方


□速度

  XM6はFM-7エミュレータXM7と同様、自動フレームスキップを前提としたアーキテ
  クチャになっています。CPUパワーが足りなければフレームを足りない分だけ間引
  きし、システムクロック10MHzを可能な限り維持するようになっています。

  フレーム間引きした上で10MHz確保が可能な環境としては、最低限PentiumII 400
  MHz、Celeron 300A@450MHz、Athlon 500MHz程度が必要です。Pentium III/4や
  AthlonXPといったプロセッサであれば、毎秒27フレーム程度の描画が期待できま
  すが、スクロールやパレット変更を頻繁に行うアプリケーションでは負担が大き
  いため、毎秒数フレームまで下がることがあります。
  

□開発環境

  開発ホスト:PC/AT互換機
      Athlon64X2 4400+ (Toledo) + nForce4 Ultra (PC3200 1024MB)
      NVIDIA GeForce 6600
      AUDIOTRAK Prodigy 7.1XT, M-AUDIO Delta Dio2496
      Roland MT-32,SC-55

  評価マシン:PC/AT互換機
      Celeron 1.3GHz + Apollo133T (PC100 512MB)
      ATI RADEON 9550
      ONKYO SE-90PCI

  ターゲット:X68000XVI
      68000 24MHz + 68882 (Internal+XSimmVI+Neptune-Ev, Total 12MB)
      まーきゅりーゆにっとV4
      Neptune-Evolution
      CZ-6BM1A
      SX-68SC

  長らくPentiumIII-Sを愛用していましたが、2005年5月にSocket939へ移行し、
  2006年9月からはAthlon64X2を使用しています。これにより、診断機能を多用し
  ているデバッグバージョンにおいても、リアルタイム動作が可能になりました。


□著作権、および謝辞

  XM6はＰＩ．が著作権を所有するフリーソフトウェアです。無償かつ書庫を改変
  しない場合に限り、配布を認めます。

  XM6は68000エミュレータとしてStarscream 0.26dを採用しています。この部分の
  著作権はStarscreamの作者であるNeill Corlett氏に帰属します。
  (Starscream 680x0 emulation library by Neill Corlett)
  (neill@neillcorlett.com)

  FM音源の合成エンジンはcisc氏作成のものを使っています。この部分の著作権は
  作者であるcisc氏に帰属します。
  (FM Sound Generator with OPM interface)
  (Copyright (C) by cisc 1998, 2003.)

  WINDRV(WindrvXM)モジュールはco氏によるものです。またアイコンも氏が作成さ
  れたものを変更して使用しています。この部分の著作権はco氏に帰属します。

  バージョン情報ダイアログで使っているX68000EXPERTの画像は、"Penguin's Bar"
  の卓さん作成のものを了解を得て使わせて頂いています。

  MIDI機能の実装にあたってはD!氏よりCZ-6BM1を提供いただきました。付属マニュ
  アルにあるYM3802の技術解説なしでは、MIDI機能は実装できなかったと思います。

  TAKE氏にはTrueKeyの事前テストを行っていただき、また回路図を描いていただき
  ました。同梱の"TrueKey.bmp"はTAKE氏作成のものです。

  さくらこ氏よりMT-32を提供いただきました。


□ライセンスについて

  ライセンスについて補足説明します。

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

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

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

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

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

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

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

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


□連絡先

  ホームページ(ＰＩ． Home page)
  http://www.ipc-tokai.or.jp/~ytanaka/

  公式掲示板
  http://cgi.ipc-tokai.or.jp/~ytanaka/cgi-bin/xm6/hyperbbs.cgi

  メールアドレス
  ytanaka@ipc-tokai.or.jp
