※注意事項 XM7.txtがL63→L70の際に横80文字以内の書式から外れてしまった様なので、 旧来の横80文字に書式整形したものです。 「□ドラッグ&ドロップ」などのタイトルなども補正しています。 ただし「□開発終了によせて・その2」については原文ママです。 ------------------------------------------------------------------------------ FM-7 EMULATOR XM7 (V3.4L77 - Final Release) (三度目の正直?二度あることは三度ある?) for Win32 Copyright (C) 1999-2015 PI. Copyright (C) 2001-2015 Ryu Takegami ------------------------------------------------------------------------------ □はじめに XM7は、1982年に富士通より発売された8bitパーソナルコンピュータFM-7シリーズを 仮想化・再現する、エミュレータと呼ばれるソフトです。 FM-7は「究極の8bitMPU」6809を2つ搭載したホビーパソコンで、FM-8の後継機種とし て登場しました。FM-7がベストセラーとなった後、FM-77→FM77AV→FM77AV40と拡張 を続け、1988年発売のFM77AV40SXをもってシリーズ終了となっています。 このバージョンでは、FM-7シリーズの最上位機種にあたるFM77AV40EX/SXのエミュレ ーションを行います。従ってFM-7,FM77AV,FM77AV40等への下位互換性を持ちます。 □前バージョンからの変更点 XM7 V3.4L70→V3.4L77の変更点一覧です。 <新規> ・設定ダイアログに「その他」ページを追加(以下の変更点はほとんどここに集約し ています) <変更> ・サブウインドウのポップアップ化機能の切り換えがGUIで行えるように変更(デフ ォルトではONになっています) ・ファイル選択ダイアログの種類を標準的なものとWindows 95以来のものの2種類か らユーザーがGUIで選択できるように変更(デフォルトではOFF(Windows95以来のも の)になっています) ・"MAGUS"に対する対策処理で"リザード"が動かなくなっていたので対策処理をユー ザーがGUIで選択できるように変更 ("MAGUS"についてはEM-7(FM TOWNS版)のドキ ュメントに解決法があるのでデフォルトではOFFになっています)  ・「実行に同期」がオフの場合にFM音源レジスタ/ディスプレイウインドウが更新さ れないように仕様を変更 <修正> ・マルチページレジスタ(メイン $FD37)の書き込み内容がパレットレジスタの内容 を書き換えない限りパレットレジスタウインドウに反映されない問題を修正 ・物理アドレスモード時に$30000〜$3FBFFにMMRが適用される問題を修正  ・物理アドレスモード時に下位16ビットが同じアドレスが複数アドレスヒストリに 登録されていると、論理アドレスモード時に同じアドレスが複数表示される問題 を修正 ・メモリダンプウインドウのアドレスモードが逆アセンブルウインドウのアドレス 入力ダイアログに影響する問題を修正  ・FM-7モード時に逆アセンブルウインドウの物理アドレスモードが選択できてしま う問題を修正 □動作環境 Win32系OS(Win95/Win98/WinMe/WinNT4/Win2000/WinXP/WinVista/Win7/Win8/Win8.1/ Win10)+DirectX3以降で動作します。ただし、以下の制限事項があります。 ・Windows95/98/Me/NT4.0/2000/XPはマイクロソフト社のサポートが既に終了していま す。セキュリティ上のリスクを理解したうえでご利用ください。 ・Windows95の初期リテールバージョン(Build 950)は推奨しません。 Service Pack 1の適用もしくはOSR2以降をお勧めします。 ・WindowsMeは激しく推奨しません。 理由はお察しください。 ・WindowsNT4.0ではService Pack 3以降が必須です。 ・Windows Vistaの初期リテールバージョン/Service Pack 1は推奨しません。 Service Pack 2以降の適用をお勧めします。 ・WindowsNT系(NT4.0、Win2000、WinXP、Vista、Win7、Win8、Win8.1、Win10)では一 部キー入力に制限があります。問題がある場合はXM7のキーマップ設定機能を使い、 キーボードの再割り当てを行って下さい。 ・ROMEO対応機能を使用するには、柏野 政弘さん作のpcidebug.dllが必要です。 pcidebug.dllはXM7のアーカイブに含まれていないので、柏野さんのサイト「ガジマ ルの森」(http://www.otto.to/~kasiwano/)からダウンロードして、pcidebug.dll (NT系OSではpcidebug.sysも)をXM7.exeと同じフォルダに置いてください。 ※WindowsVista以降のOS上でのROMEO対応はサポート対象外とさせていただきます。 ※64ビット版OSではROMEO対応機能は使用できません。 ・Windows10上での動作はBuild 10240,VMware上でのBuild 10565にて行っています。 □仮想マシン XM7 V3が提供する仮想マシン(Virtual Machine:以下VM)の仕様は以下の通りです。 FM-7, FM77AV, FM77AV40EX (3種類から選択) + オプション機器 最大構成での仕様をあげると次のようになります。 プロセッサ 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 JIS83準拠第1水準漢字・第2水準漢字・非漢字 256KB 辞書ROM OASYS-Liteベース、256KB 辞書学習RAM スタティックRAM 8KB (バッテリーバックアップ) 表示能力 640x200ドット 8色 4面 640x400ドット 8色 2面 320x200ドット 4096色 2面 320x200ドット262144色 1面 から選択 フロッピー 640KBフロッピーディスクドライブ×2 (320KBとしても使用可) テープ FSK方式にて記録、約1600bps サウンド BEEP音 標準FM音源(YM2203) WHG増設FM音源(YM2203) THG増設FM音源(YM2203) その他 論理演算・直線補間LSI、DMAコントローラLSI、時計LSI、RS- 232Cインタフェース(ソフトウェアボーレート設定対応)など オプション機器 インテリジェントマウス(MSXマウス)、マウスセット(FMマウス)、 MIDIアダプタ、シリアルドットプリンタ □ROMファイル XM7.exeを起動するためにはFM77AV40EX/SXのROMをファイル化したものが必要です。 次にあげるファイルを添付のSAVEROM2ユーティリティ・別途配布しているMKEXTSUB ユーティリティを使用して各自準備してください。 SAVEROM2はFM77AV40EX/SXの実機、SAVEROM2+MKEXTSUBはFM77AV40の実機+AV40専用版 F-BASIC V3.4L20をお持ちでない方は使用できませんのでご注意ください。  (一応、F-BASIC V3.4L10の拡張サブモニタでも動かなくはないですが、AV40EX/SX専用 版F-BASIC V3.4L2xの400ラインモードで文字が入力できません) なお、動作モードによる漢字フォントの切り替え対応のため、JIS83準拠第1水準漢字 ROMフォントのファイル名がこのバージョンから「KANJI.ROM」から「KANJI1.ROM」に 変更されたので、V3.4L40以前を使用されていた方はリネームを行ってください。 (再度SAVEROM2ユーティリティを使用してROMデータを取得する必要はありません) ファイル名 サイズ CPU 物理アドレス FBASIC30.ROM 31744 メイン $38000-$3FBFF INITIATE.ROM 8192 メイン $36000-$37FFF KANJI .ROM 131072 JIS78準拠第1水準漢字・非漢字 (なくても起動します) KANJI1 .ROM 131072 JIS83準拠第1水準漢字・非漢字 KANJI2 .ROM 131072 JIS83準拠第2水準漢字 DICROM .ROM 262144 メイン $2E000-$2EFFF (64バンク) SUBSYS_A.ROM 8192 サブ $1E000-$1FFFF SUBSYS_B.ROM 8192 サブ $1E000-$1FFFF SUBSYS_C.ROM 10240 サブ $1D800-$1FFFF SUBSYSCG.ROM 8192 サブ $1D800-$1DFFF (4バンク) EXTSUB .ROM 49152 メイン $2E000-$2EFFF (12バンク) BOOT_MMR.ROM 512 メイン $2EE00-$2EFFF (なくても起動します) ROMファイルはXM7.exeと同じディレクトリに配置してください。 これらのROMファイルが不足していると「仮想マシンを初期化できません(以下略)」と 表示され、XM7は起動しません。このメッセージが表示される場合、サイズが不足して いないか、また不足しているファイルがないかを確認してください。 ※INITIATE.ROMについてはXM7起動後に、メモリ上でパッチを当てています。これ は次の2点を改良するためのものです。 1.フロッピーディスクドライブのモータ回転待ちを省略する。(初期化時) 2.機種判別用ID・ブート処理をFM77AVまたはFM77AV40EX相当に設定。(リセット毎) 3.起動モード別にブート処理の変更を行う。(リセット時) ※KANJI.ROMがなく、KANJI1.ROMのみ存在する場合、FM-7モード/FM77AVモード時に KANJI1.ROM/KANJI2.ROMをベースにしたJIS78準拠エミュレーションを行います。 なお、KANJI.ROMは添付のSAVEKNJユーティリティで作成することが可能です。 (SAVEKNJユーティリティは拡張サブモニタROMのないFM77AV40では使用できません) □SRAMファイル FM77AV40/EX/SXでは辞書学習用のSRAMファイルを備えており、変換を行うたびに学習 結果が書き込まれます。これはバッテリーバックアップされているため電源を切って も内容が保持されます。 XM7では"USERDIC.DAT"というファイルを用いてこの動作をエミュレーションしていま す。起動時にこのファイルがなければ新規作成し、終了時に書き戻しています。 □コマンドライン コマンドラインオプションは以下のとおりです。 XM7 <ファイル名> [<ファイル名>...] ディスクファイルは有効なものを2組まで、テープ/ステートファイルは1つだけ指定 できます。 コマンドラインオプションは、ファイルの拡張子によって動作が変わります。以下に 拡張子別の動作を記します。 .D77/.2D/.2DD/.VFD ディスクファイルをマウントし、VMをリセットします。 .T77 テープファイルをマウントします。リセット動作は行いません。 .XM7 ステートファイルをロードし、セーブした時点から再開します。 その他 何も行いません。 ステートファイルを指定した場合、他のファイルは全て無視されます。 ディスクファイルとして.D77ファイルを1つだけ指定した場合、ドライブ1には2番目の メディアが(存在すれば)マウントされます。 コマンドラインを持ってXM7を二重起動すると、先に存在するインスタンスにファイル 名を渡します。 □ドラッグ&ドロップ XM7のウインドウに対して有効な拡張子のファイルをドラッグ&ドロップすることによ り、以下の操作が可能です。 ・ディスクファイルをドラッグ&ドロップすることで、ディスクをマウントし、VMを リセットします。ステータスバーのアクセスランプ部分を除くウインドウ領域に対 して有効です。 ・ディスクファイルをステータスバーのアクセスランプ部へドラッグ&ドロップする ことで、指定されたドライブにディスクをマウントします。 ・テープファイルをドラッグ&ドロップすることで、テープをマウントします。ウィ ンドウの全領域に対して有効です。 ・ステートファイルをドラッグ&ドロップすることで、ステートデータをロードし、 セーブした時点から再開します。ウインドウの全領域に対して有効です。 □キーボード キーボードは基本的にFM77AV準拠ですが、一部特殊キーの扱いが異なります。 ここにあげる設定はデフォルトのものです。全てのキー割り付けはキーボード変換設 定機能により変更できます。 ☆日本語106キーボードの場合 FM-7 [BREAK] → JP106 [ESC] FM-7 [ESC] → JP106 [半角/全角] FM-7 [CTRL] → JP106 [Ctrl(左)] FM-7 [CAP] → JP106 [CapsLock] FM-7 [GRAPH] → JP106 [無変換] FM-7 [かな] → JP106 [Ctrl(右)] FM-7 [SPACE(左)] → JP106 [変換] FM-7 [SPACE(中)] → JP106 [ひらがな] FM-7 [SPACE(右)] → JP106 [SPACE] FM-7 [INS] → JP106 [Insert] FM-7 [DEL] → JP106 [Delete] FM-7 [EL] → JP106 [Home] FM-7 [CLS] → JP106 [Page Up] FM-7 [DUP] → JP106 [End] FM-7 [HOME] → JP106 [Page Down] テンキー部は0〜9の数字キーに加え、JP106に存在する[/][*][-][+][.]の各キーを FM-7のキーに対応させています。 その他[Alt]([F10])でWin32メニューを呼び出し、[F12]でリセットがかかります。 ☆NEC PC-9801キーボードの場合 FM-7 [BREAK] → PC-98 [COPY] FM-7 [CAP] → PC-98 [CAPS] FM-7 [かな] → PC-98 [カナ] FM-7 [GRAPH] → PC-98 [NFER] FM-7 [SPACE(中)] → PC-98 [XFER] FM-7 [SPACE(右)] → PC-98 [SPACE] FM-7 [EL] → PC-98 [HOME CLR] FM-7 [CLS] → PC-98 [ROLL DOWN] FM-7 [DUP] → PC-98 [HELP] FM-7 [HOME] → PC-98 [ROLL UP] テンキー部は0〜9の数字キーに加え、PC-98に存在する[-][/][*][+][=][,][.]の各 キーをFM-7のキーに対応させています。 その他[Alt]([GRPH]・[f・10])でWin32メニューを呼び出し、[vf・2]でリセットがかか ります。 ☆英語101キーボードの場合 FM-7 [BREAK] → US101 [ESC] FM-7 [ESC] → US101 [~] FM-7 [^] → US101 [=] FM-7 [\] → US101 [\] FM-7 [@] → US101 [[] FM-7 [[] → US101 []] FM-7 [:] → US101 ['] FM-7 [CTRL] → US101 [Ctrl(左)] FM-7 [CAP] → US101 [Caps Lock] FM-7 [GRAPH] → US101 [Num Lock] FM-7 [かな] → US101 [Ctrl(右)] FM-7 [SPACE(右)] → US101 [SPACE] FM-7 [INS] → US101 [Insert] FM-7 [DEL] → US101 [Delete] FM-7 [EL] → US101 [Home] FM-7 [CLS] → US101 [Page Up] FM-7 [DUP] → US101 [End] FM-7 [HOME] → US101 [Page Down] テンキー部は0〜9の数字キーに加え、US101に存在する[/][*][-][+][.]の各キーを FM-7のキーに対応させています。 その他[Alt]([F10])でWin32メニューを呼び出し、[F12]でリセットがかかります。 □ディスクファイル ディスクファイルとして2Dフォーマット・2DDフォーマット・VFDフォーマット・D77 フォーマットの4種類をサポートしています。 2Dフォーマットは森田 浩次さん・GORRY先生が開発されたX1エミュレータ for X68kで サポートされているファイル形式で、327680バイトのサイズを持ちます。 2DDフォーマットは2Dフォーマットの80トラック版ともいえるもので、655360バイト のサイズを持ちます。 VFDフォーマットはFM-7エミュレータ"EM-7"でサポートされているフォーマットです。 EM-7とのファイル互換を取りたい場合に使います。 D77フォーマットはPC-88エミュレータで一般的に使われているD88フォーマットと互 換性があるフォーマットです。FM-7/77向けであることを明確にするため拡張子を変 更しています。記録密度は2D及び2DDをサポートします。 □テープファイル テープファイルは独自のT77フォーマットを採用しています。メニューよりファイル 設定・録音・早送り・巻き戻しなどの操作を行います。 □サウンド出力 現在のバージョンではサウンドエミュレーションをサポートしています。BEEP音源、 PSG音源、FM音源、WHG音源、THG音源、モータ制御用のリレー動作を含めたテープ音、 FDDシーク音のエミュレーションが行えます。 FM-7モード時のみ、THG音源により標準OPNと独立した本体側PSGのエミュレーション が行われます。 モータ制御リレー動作音・FDDシーク音のサンプルは、XM7.exeと同じディレクトリに モノラル・16ビットPCMのWAVファイルとして以下のファイル名で置いてください。 モータ制御リレー オン : relay_on.wav モータ制御リレー オフ : relayoff.wav FDD 1トラックシーク : fddseek .wav 実際に出力を行うためには、DirectSoundに対応したサウンドデバイスが必要です。 □ジョイスティック 現在のバージョンではジョイスティックのエミュレーションをサポートしています。 実際に入力するためには、Windowsの「ゲームコントローラ」コントロールパネルで セットアップされたジョイスティックデバイスが必要です。 □マウス 現在のバージョンではインテリジェントマウス(MSXマウス)および純正マウスセット (MB22436)のエミュレーションをサポートしています。 マウスエミュレーションの有効・無効や、マウス使用時に占有するジョイスティック ポート・マウスセットの設定は、「ツール」→「設定」の「オプション」タブで設定 できます。 また、マウスの中央ボタンおよびマウスホイール、[F11](NEC PC-9801キーボードでは [vf・1])を押すことで、一時的にマウスエミュレーションモードをトグルで切り替える ことも可能です (キーマップ変更機能によって[F11]・[vf・1]に何らかのキーを割り当てている場合は キーボードによるマウスエミュレーション切り替えは使用できません)。 マウスエミュレーション中は、Win32メニュー呼び出しなどのマウス操作が必要とな る場面を除いて、Windows側のマウスポインタが表示されなくなります。 □プリンタ 現在のバージョンでは純正ドットインパクトプリンタ(MB27403)のサブセット版をエ ミュレーションしています。 XM7LPのドキュメントから抜粋した仕様は以下の通りです。 □使用方法 ・印刷機能を使用するには、LPRINT、LLIST、HARDC(ビットイメージ出力にも対応 しています)等の印刷用BASICコマンドや、プリンタポートを制御するプログラム 等を実行して、印刷データを出力した後、「ファイル(F)」-「印刷(P)...」をク リックすると、印刷ダイアログボックスが現れます。 あとは通常のWindowsアプリの印刷の場合と同様です。 ・一度印刷されたデータは消去されます。 次の「ファイル(F)」-「印刷(P)...」では、直近の印刷の後に出力されたデータ のみが印刷されます。 □仕様、注意点 富士通純正ドットインパクトプリンタ「シリアルドットプリンタ MB27403」の機能 を一通り実装することを目標にしていました…が諸般の事情でXM7LPは開発中止とな ってしまいました。 ・MB27403は、EPSON製「MP-80 TYPE III」のOEM、すなわち実質的な同一機種である と仮定しています。(下記参考文献の記述内容より推測しました。) ・MB27403及び MP-80 TYPE III の詳細技術情報が未入手のため、仕様の一部は「MX -80 TYPE II」(「MP-80 TYPE II」の海外版)および「FX-80」(「FP-80」の海 外版)のマニュアル(参考文献(iii)および(v))よりの推測です。 ・FX-80 のマニュアルには MX-80 TYPE III の情報が載っていました。 ・対応しているプリンタ制御コードは、9-Pin ESC/P のサブセットです。 具体的には、以下の制御コードに対応しています。 - CR (0x0d) --- 復帰(改行なし) - LF (0x0a) --- 復帰改行 - HT (0x09) --- 水平タブ - VT (0x0b) --- 垂直タブ ※1 - FF (0x0c) --- 改ページ - BS (0x08) --- バックスペース ※2 - DEL (0x7f) --- 1文字削除 - [ESC]@ (0x1b21) --- 初期化 ※3 - [ESC]0 (0x1b30) --- 改行量を1/8インチに設定 - [ESC]1 (0x1b31) --- 改行量を7/72インチに設定 - [ESC]2 (0x1b32) --- 改行量を1/6インチに設定 - [ESC]3 (0x1b33) --- 改行量を1/216インチ単位で指定 - [ESC]A (0x1b41) --- 1/72インチ単位の改行量の指定 - [ESC]K (0x1b4b) --- 8ドット単密度ビットイメージモードの指定 - [ESC]L (0x1b4c) --- 8ドット倍密度ビットイメージモードの指定 (HARDCコマンドのビットイメージ出力に用いられる) - [FS]& (0x1c26) --- 漢字モードの指定(漢字ON) - [FS]. (0x1c2e) --- 漢字モードの解除(漢字OFF) ※1 MB27403/MX-80IIIでは「LF」と同じ動作。(参考文献(i)および(v)より) ※2 MB27403/MX-80IIIでは「DEL」と同じ動作。(参考文献(i)より) ※3 暫定実装:MB27403の仕様(参考文献(i))に記述なし ・文字(英、数、半角カナ、グラフィックス記号)及びグラフィックデータは、プ リンタのドットを模したビットイメージで表示されます。 (英数半角カナ文字は表示の選択が可能:後述。) ・グラフィックス記号(文字コード 0x80-0xa0, 0xe0-0xff)は、常にビットイメー ジとして印刷されます。 ・プリンタ側で漢字を出力できます。 ESC/P制御コードのFSシーケンス(上述)で漢字ON/OFFを行います。 漢字コードはJIS(JIS X 0208-1983)です。 (出力の有無の選択が可能:後述。) ・プリンタ機能を有効化するか否かの選択ができます。 「ツール」-「設定」-「ポート」ページでプリンタ「有効」にチェックすると、 プリンタ機能が使用可能になります。 上記で「有効」のチェックをはずしたした場合、プリンタポートにはプリンタが 接続されていない状態となり、プリンタ機能は使用できず、代わりに「電波新聞 社ジョイスティック」が使用できるようになります(従来のXM7と同じ動作)。 ・英数半角カナ文字の表示にOS側のフォントを使用するかを選択可能です。 「ツール」-「設定」-「ポート」ページで設定します。 ・OS側のフォントを使用しない場合は、文字はプリンタのドットを模した ビットイメージとして印字されます。 ・プリンタ側で漢字を出力するかを選択可能です。 「ツール」-「設定」-「ポート」ページで設定します。 ・選択しない場合は、漢字データは1バイトデータとして 「そのまま」表示されます。(文字化けが起こります。) ・余白は、左右が3.4mm、上が11.7mm、下が5.9mmです。 (参考文献(iii)の記述よりの推測です。) ・BASICコマンドの完了途中で「印刷(P)...」を行うと、出力途中の結果が印刷され ます。(完了に比較的長い時間がかかるHARDCコマンドの場合に、特に顕在化しま す。) これを防止する(コマンド終了まで印刷メニューをdisableする、等)うまい方法 が現時点では見つけられないため、これは現時点での「仕様」とさせてくださ い。 ・XM7 をリセットしても、出力された未印刷のデータは消去されません。 (とりあえずこうしてみました。ちょっとおかしな気もしますが、 「コマンド終了」=「印刷完了」と考えれば、これでよいような気もします。 もし動作を変更するとしても、次のバージョン以降とします。) ・未印刷のデータは、ステートファイルのセーブ・ロードには対応していません。 未印刷のデータが存在する状態でステートファイルにセーブしても、その未印刷 のデータはセーブされません。ロードの場合も同様です。 ・未印刷のデータが存在する状態で XM7 を終了すると、その未印刷のデータは印刷 されずに破棄されます。 □制限事項: ・MB27403のプリンタ制御コード/シーケンスのうち、未実装のものがあります。 具体的には以下のものです。 - BEL (0x07) --- ブザー - SO (0x0e) --- 横2倍拡大文字の指定 - SI (0x0f) --- 縮小文字の指定 - DC2 (0x12) --- SI機能の解除 - DC4 (0x14) --- SO機能の解除 - [ESC]C (0x1b43) --- 1ページ当りの行数の指定 - [ESC]C NUL (0x1b4300) --- 1ページ当りのインチ数の指定 - [ESC]J (0x1b4a) --- 改行量を1/216インチ単位で単発で指定 - [ESC]D (0x1b44) --- 水平タブの設定 - [ESC]Q (0x1b51) --- 印字桁数の設定 - [ESC]N (0x1b4e) --- スキップパーフォレーションの設定 - [ESC]O (0x1b4f) --- スキップパーフォレーションの解除 - [ESC]G (0x1b47) --- 二重印字の設定 - [ESC]H (0x1b48) --- 二重印字の解除 - [ESC]S (0x1b53) --- スーパースクリプト/サブスクリプトの設定 - [ESC]T (0x1b54) --- スーパースクリプト/サブスクリプトの解除 - [ESC]E (0x1b45) --- 強調文字の設定 - [ESC]F (0x1b46) --- 強調文字の解除 - [ESC]- (0x1b2d) --- アンダーラインの設定/解除 - [ESC]W (0x1b57) --- 横2倍拡大文字の設定/解除 - [ESC]8 (0x1b38) --- 紙検出信号の無効化 - [ESC]9 (0x1b39) --- 紙検出信号の有効化 ※ 「[ESC]B - 垂直タブの設定」は、MB27403には実装されていなかった可能性が高 いです。(参考文献(i)及び(v)より。) ・水平タブは8文字で固定です。 ・印刷用フォントのビットイメージは、プリンタ内蔵フォント(9x6ドット)ではな く、画面表示用のビットイメージフォント(8x8ドット)で代用しています。 ・今のところ、F-BASIC V3.4の400ラインモードにおいて以下の制限が存在します。 HARDC 1コマンドはSETUPユーティリティにてプリンタ設定を行っておけば問題な く出力されます。HARDC 2コマンドには対応していません(正常な出力結果が得ら れません)。 □参考文献 XM7LPにおける参考文献を挙げておきます。 (i) 「富士通 FM-7 ユーザーズマニュアル システム解説 1982年」 (ii) 「EPSON ESC/P Reference Manual June 2004」 及び「(同) December 1997」 (iii)「EPSON MX-80 TYPE II Operation Manual 81.10-10」 (iv) 「ブラザー工業株式会社 TD-4000 ESC/Pコマンドリファレンス Version 1.20」及び「(同) Version 1.03」 (v) 「EPSON FX SERIES PRINTER User's Manual Vol.2 REFERENCES 1984」 □MIDI 現在のバージョンでは純正MIDIアダプタ相当のMIDI出力のエミュレーションを仮サ ポートしています。 ただし、USARTのエミュレーションを厳密に行っているわけではないので、動作しな いソフトがないとはいえません。また、MIDI入力や純正MIDIアダプタに搭載されて いるPIT(i8253相当)には対応していません。PITのエミュレーションに対応していない という点では、厳密にはOh!FM 1990年1月号掲載の自作MIDIカードの仕様に近いと言え ます。 実際に出力するためには、MIDI出力デバイスが必要です。 □RS-232C 現在のバージョンではFM77AV40EX内蔵RS-232Cインタフェース相当(FM77AV40EXモー ド時)およびRS-232Cインタフェースカード(MB22406)相当(FM-7/FM77AVモード時)の エミュレーションをサポートしています。 ただし、非同期通信モードのみのサポートで同期通信には対応していません。 実際に通信するためには、シリアルポートデバイスが必要です。 □Win32メニュー 以下にメニューの概略を示します。 ファイル(F) 開く(O) VMの状態をファイルからロードします。 保存(S) VMの状態をファイルに上書き保存します 名前をつけて保存(A) VMの状態をファイルに名前をつけて保存します。 リセット(R) VMをリセットします。 ホットリセット(H) VMをホットリセット(BREAK+RESET)します。 BASICモード(B) 起動モードをBASICモードにセットします。 DOSモード(D) 起動モードをDOSモードにセットします。 印刷(P) 印刷ダイアログを表示します。 終了(X) XM7を終了します。 ドライブ1(ドライブ0も同様) 開く(O) ディスクイメージファイルを設定します。 両ドライブで開く(B) ディスクイメージファイルを両ドライブに設定します。 取り外す(E) ディスクイメージファイルを取り外します。 一時取り出し(T) VMに対し強制的にディスク未挿入状態を返します。 書き込み禁止(W) 現在選択しているディスクを書き込み禁止に設定します。 (ディスク名) D77ファイル内のメディアを切り替えます。 テープ(A) 開く(O) テープイメージファイルを設定します。 取り外す(E) テープイメージファイルを取り外します。 巻き戻し(W) 1つ手前まで巻き戻します。 早送り(F) 1つ先まで早送りします。 録音(R) 録音可能状態、再生状態を切り替えます。 表示(V) フロッピーディスク(F) FDCウインドウを表示します。 FM音源/PSGレジスタ(O) FM音源/PSGレジスタウインドウを表示します。 FM音源/PSGディスプレイ(D) FM音源/PSGディスプレイウインドウを表示します。 パレットレジスタ(P) パレットレジスタウインドウを表示します。 サブCPUコントロール(C)サブCPUコントロールウインドウを表示します。 論理演算/直線補間(L) 論理演算/直線補間ウインドウを表示します。 キーボード(K) キーボードウインドウを表示します。 メモリ管理(M) MMRウインドウを表示します。 DMAコントローラ(A) DMAコントローラウインドウを表示します。(V3のみ) ステータスバー(S) ウインドウ下部のステータスバーをon/offします。 実行に同期(Y) サブウインドウの表示を自動更新します。 最新の情報に更新(R) すべてのウインドウを再描画します。 フルスクリーン(U) ウインドウモード・全画面モードを切り替えます。 デバッグ(D) 実行(X) VMの実行を開始します。 停止(B) VMの実行を止めます。 トレース(T) 1命令だけ実行します。 リセット(R) VMをリセットします。 ブレークポイント(P) ブレークポイントウインドウを表示します。 スケジューラ(S) スケジューラウインドウを表示します。 CPUレジスタ(C) CPUレジスタウインドウを表示します。 逆アセンブル(D) 逆アセンブルウインドウを表示します。 メモリダンプ(M) メモリダンプウインドウを表示します。 ツール(T) 設定(C) XM7の動作設定を行います。 マウスモード(M) マウスエミュレーション状態を一時的に切り替えます。 時刻アジャスト(A) VMのRTCの時刻をWindows側に合わせて再設定します。 画面キャプチャ(S) 現在の画面をビットマップファイルにセーブします。 縮小画像キャプチャ(R) 現在の画面を320×200ドットに縮小してセーブします。 WAVキャプチャ(W) サウンド出力をWAVファイルにロギングします。 新規ディスク作成(D) 新しいディスクイメージファイルを作成します。 新規テープ作成(T) 新しいテープイメージファイルを作成します。 VFD→D77変換(V) VFD形式のイメージファイルをD77形式へ変換します。 2D/2DD→D77変換(2) 2D/2DD形式のイメージファイルをD77形式へ変換します。 VTP→T77変換(P) VTP形式のイメージファイルをT77形式へ変換します。 ウインドウ(W) 重ねて表示(C) サブウインドウを再配置します(カスケード) 並べて表示(T) サブウインドウを再配置します(タイル) 全てアイコン化(I) サブウインドウを全て最小化します。 アイコンの整列(A) アイコン化されたサブウインドウを並べます。 全て隠す(H) サブウインドウを全て隠します 全て復元(R) サブウインドウを全て復元します 全て閉じる(O) サブウインドウを全て閉じます ヘルプ(H) バージョン情報(A) XM7のバージョン情報を表示します。 □互換性 ビデオディジタイズ機能はVMレベルではサポートしていますが、I/Oエミュレーション を行わず仮想的に動作します。 それ以外の部分では高い互換性があります。FM-7,FM77AV,FM77AV40EX向けのほと んどのソフトが動作します。 □速度 画面モードが2種類しかないV2に対し、V3では多種多様な画面モードへの判別・対応 のため、全体としてはV3のほうが若干遅くなっています。 ただし、V2.5L10での速度低下の大きな原因となっていた直線補間が大幅に高速化さ れていますので、V3でもK6-3 450MHz程度のCPUパワーがあれば実機とそう遜色ない 速度で動作すると思われます。 ただし、V3.4L60で新設されたラスタ単位でのレンダリングを行う場合は、それより かなり高いCPUパワーを要求します。大体CoreDuo 1.66GHz程度が目安です。 リアルタイムでエミュレーションを行うための目安としては、最低限MMX Pentium 300MHz程度が必要です。WHG音源、THG音源を考慮して余裕を見ると、K6-2 500MHz, K6-3 450MHzといったプロセッサであればラスタ単位でのレンダリングを行わない 場合で大抵のソフトで問題なく動作します。 □その他 XM7 for Win32(V2.2〜V2.5,V3.0)はBorland C++ Builder 5 (Professional Edition) を、XM7 for Win32(V3.1〜,V2.6〜)は Borland C++ Compiler 5.5.1を用いて開発さ れています。付属のVCLライブラリを使用せず、Win32API+DirectXの範囲で記述して おり、Windows98以降で新設されたAPIに関しては内部でロード/解放を行っています。 このため、DirectX以外のコンポーネントDLLは原則として不要です。 また、DirectDrawの振る舞い、Windowsのスケジュール制御についてciscさんに有用な 示唆を多数頂きました。この場を借りてお礼申し上げます。 アイコンファイルの一部は天丸さんによるもの、およびそれをベースにしたものを使 用させていただいています。 □著作権 XM7はPI.および、たけがみりうが著作権を所有するフリーソフトウェア(※)です。 無償かつ書庫を改変しない場合に限り、原則として再配布を認めます。 ただし、実行ファイルを改変して他の言語に対応されたもの等についてもSNS等での画 像公開や再配布は一切認めません。 ROMファイルについては著作権者の意向に従ってください。なお、同梱のSAVEROM2は 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対応処理のソースはうささんに提供していただきました。 プリンタ対応処理のソースはBen.JPさんに提供していただきました。 CPUコアの再現性向上にはkeisukeさん、トマさんのお二人に協力していただきまし た。 ※ここでいう「フリーソフトウェア」というのは、Free Software Foundationのリチ ャード・ストールマン氏が提唱するものと違い(もちろん、これは氏の意見を否定す るものではありません)、パソコン通信時代から日本で言われていた「フリーソフト」 「フリーウェア」の類いになります。これはこれでどうも単に「使用者は何をして も構わない無料のソフト」と勘違いされて誤解を生むようですが(10年以上前に某 CRICがこの件でやらかしてましたが)、それも違いますので念のため。 □V3開発終了によせて 早い物で、V2系がV2.5L10で終了してから4ヶ月が経ってしまいました。 今回のバージョンでV3系は終了です。もっと言うとXM7自体の開発も終わりです。 ソフトウェアの開発というものは、始めるよりも終わる方が難しい。これは私の 持論です。うやむやに終えるなら簡単に出来るのですが、きちっとした区切りをつ けて綺麗に終わる、これはなかなか難しいことだと思います。XM7の開発がかなり 進んで終わりが見えた2000年の秋頃から、どういった形で決着をつけるか私なりに 考えてきました。その結論として2001年2月に、V2.5L10としてソースを含めて公開 したわけです。私自身はその時点でXM7は終わり、拡張するにしても日本語カード や2DDまで、と考えていました。 ところがV2.5L10を公開して1ヶ月もたたないうちに、たけがみ りう氏が"XM7改"と してV2.5L10から大幅に拡張されました。そのソースを見て動きを見て、それなら もう少しやってみるか、と思ったのがV3系の始まりです。それから3ヶ月ほど作業 を続けてきましたが、確かにV2系から様々な面で互換性向上、完成度の向上が図れ たと感じます。私としても当初ないしは作業中にやりたかった事、実現したかった 事はほぼ全て実現できたこともあり、このあたりで止めることにします。 もちろん開発を終了したからといって、XM7というソフトウェアが無くなるわけで はありません。ニーズが無くなれば当然、使われることも無くなるでしょうが、 それは私にとっては本質的な問題ではありません。XM7は元々、私が過去の資産を 保存する必要を感じて作成したソフトであり、私がその必要を感じ続ける限りは残 るからです。必要を感じなくなったとしても、私の人生の中のある時期、2年という 期間を捧げたソフトウェアとして、ずっと記憶にとどめておくことでしょう。 設計開始日時 1999年5月7日 開発開始日時 1999年5月28日 開発終了日時 2001年6月22日 動作機種/OS Win32 開発言語 C,C++,アセンブラ ソース規模 VM部59ファイル、Win32部29ファイル、合計サイズ1034KB 主要ハード PC/AT互換機 MSI MS-5169 Rev2.1, AMD K6/K6-III/K6-III+ 300-550MHz Matrox Millennium G400, Creative SoundBlasterAWE64 Gold X680x0 X68kXVI(CZ-634C), 68000 24MHz まーきゅりゆにっとV4, Neptune-Evolution PC-98 PC-9801BX4, Am5x86 160MHz Canopus PowerWindow T64S, PC-9801-86 FM-7 FM77AV40EX ビデオカード, 256KB RAMカード, WHG音源カード 主要開発言語 Microsoft Visual C++ 4.0 (Standard Edition) Borland C++ Builder 5 (Professional Edition) Borland C++ 4.0 Netwide Assembler 0.98 その他TC,TASM,HAS,HLK等 □開発終了によせて・その2 L10(滅) 今回は無理矢理作らされた感はないんですが(ぉぃ)。前回書いたとおり今度こそ最後 だからComrade-HGにならってL77にしてみました。そんなわけで、今回は前回のいろい ろぶちまけ大会にも若干の修正を入れてみました。 何回かドキュメントにも書いたことがあるとは思いますが、XM7 V3(XM7改)の開発の発 端は非アクティブプレーンに対してアクセスがあった場合に論理演算が動作しないと いうバグを見つけたためで、それだけをPI.さんに伝えればよかったのに、いつも の通り面白がってAV40EX相当の機能を実装していたところをPI.さんに見つかって しまい、本家への統合を提案されたのでそれを受けた、というところから始まってい ます。当時24歳(年齢詐称はしていません(汁))。 その後V3.0L30/V2.5L20の時にPI.さんはXM6の開発に専念されるということでこち らで微修正版(V3.0L31/V2.5L21)を公開したら、数日後にある事件がやってきました。 とある市販ソフト(今は亡き蜂のマークの会社の音声合成…といえばわかるでしょうか) に対応して欲しいという要望メールが来たんですが、メール本文だけならいいんです が、よりによってそのソフトのディスクイメージを添付してきました。こちらから 「著作権侵害になるのでそのようなことはやめてほしい」と返事を返したところ、相 手は「作者自身からいただいたので問題はない」 (市販ソフトとして発売された以上 それはまずいのでは?)とか「XM7の開発に逆行する」(当たり前ですが、XM7の開発方 針を決めるのはその人ではありません) とか言い出して「それでも開発を続けられる なくなるのでやめてほしい」と返事を出すと、「私は著作権関連の仕事をしている。 謝罪しろ」と訳のわからない逆ギレ。こういうヤツに限ってエミュレータの開発資料 ともなるソフトは大量に持っているようで非常に迷惑です。ちなみに「ある市販ソフ ト」はPI.さんからV3.1用のサウンド周りのソースをいただいたので無事動くよう になったはずです。その騒動の言い出しっぺがどうなったかは知らないし知りたくも ないですが。 #当時NIFTYのRTC(チャット)で散々ネタにしていたこっちもこっちですが。ちなみに 統合画像ビュアー"ViX"の作者のK_OKADAさんもお気に入りのネタだったようです。 次もまた市販ソフト(今度は今ではすっかり大手になった会社のゲーム)が動かない云 々なんですが、 念のためZIPファイルの中身だけ確認したら、どう見てもあからさま に違法サイトから落としてきたファイルだったという…あまりにもアレなので即刻処 分しました。もちろん前回のようなこともあったので変な逆ギレをされても困るし、 相手には「返事を出していません」。 それから数年は、目立つようなイタい人も少なく(一番イタいのは俺か(爆笑))、静か になっていたのですが(そうでもない?)、 割と最近(とはいっても3年前)になって出 てきたMESSの直線補間/論理演算のソース盗用問題。 実はこの件に初めて触れたのは1 年前でTwitterでGIMONSさんのツイートにボソッと返答したところ、空気の読めない AW(一応、仮名)というのが「私たちのコミュニティに来ませんか?」とか言い出しま した。こっちは盗用された側なのになんであいつらのコミュニティに行かなければな らないのかわからなかったので断ったところ、AWは問題のツイートを削除してからネ チネチと粘着するようになりました。また、その頃にドライバの担当者である方から も、「ソースを盗む意図はなかった」とのメールが来ました。直線補間に関しては連 絡さえ入れていただければ参考にされるのは自由ですが(そもそも現在のXM7の直線補 間は◎h!FM 1986年5月号の「6809機械語によるグラフィック処理の技法 第6回」をベ ースに実機に合わせたアルゴリズムに変更しただけですから)、後出し的にそういうこ とを言われても…と。 ましてや論理演算部はPI.さんに許可を取らないといけない わけですが(もっとも、 PI.さん的には10年以上前にMESSへの統合を行うならアル ゴリズムについては使っていい、的なニュアンスの発言はありましたが)…もうお国柄 とか文化とかの違いがあるから 「仕方なく」黙認することにしました。もうあのKYな AWの相手なんかしたくないし。…で、AWがらみの件ですっかり精神的にぶっ壊れてい ろいろな方面にご迷惑をおかけしてしまったわけですが、これはまた別の話。AWのほ うからブロックしてくれたのでだいぶスッキリしました。本当になんなんだろうあの 物体は…。 すごく(無駄に)長文になってしまいましたが、最後に。 パソコン通信からインターネット時代に移り変わり、フリーソフトウェア (繰り返し ますがFSFの提唱する物とは意味が異なります)を取り巻く環境もすっかり変化してし まったと考えさせられる14年でした。 XM7はたぶんこれで(今度こそ)最終バージョン になると思いますが、自分に感謝しながら使っていただいた方もいらっしゃると思っ ているので、そのような方々に支えられてきたからこそ14年も続けられたんだと思い ます。こちらこそ感謝したい気持ちでいっぱいです。本当にありがとうございました。 それでは皆さん、お元気で。 でもさよならは言いません。いつかまたどこかで。ぼにょんび(FTOWNS謎)。 #PI.さんの「開発終了によせて」より長文になるとは(滅) −−−−−−−−−−−−−− きりとりせん −−−−−−−−−−−−−−−−− …ここまでが前回のL70。まさか修正版をこんなに早く出すハメになるとはorz 今度こそ最後のつもりなので、最初に書いたとおり、せっかくなのでレベルナンバー をL77にしてみました。 上の文章にも細かいかもしれないしそうでもないかもしれな い修正は入れてます。 で、MESS問題ですが、あっちの(GPLの)世界では非GPLのソースを引用(盗用!?)して も「書き直せばいいじゃないか」で済まされるようですね。実際、今回やられました が。まぁ、あっちの方面の人にはいろいろ言いたいことがあるけどスペースがなくな るから、今度こそ、ぼにょんび(FTOWNS謎)。 設計開始日時 2001年2月28日 (XM7改 V3.0L0.0) 開発開始日時 2001年3月10日 (XM7改 V3.0L0.0) 開発終了日時 2015年10月22日 動作機種/OS Win32 開発言語 C,C++,アセンブラ(x86) ソース規模 VM部 68ファイル、Win32部 41ファイル 主要ハード 開発マシン1 (V3.4L51〜V3.4L77) ASRock Fatal1ty Z77 Professional (Intel Z77 Express Chipset) Intel Core i7-3770(Ivy Bridge) 3.40GHz, 32GB RAM, 5.5TB HDD GIGABYTE GV-N670OC-2GD (nVIDIA GeForce GTX 670, 2GB) Creative SoundBlaster X-Fi Titanium Professional Audio Windows 7 Ultimate Service Pack 1 (x64) Windows Vista Ultimate Service Pack 2 (x64) on VMware Player Windows 8.1 Pro RTM (x64) on VMware Player Windows 10 Insider Preview Build 10565(x64) on VMware Player 開発マシン2 (V3.4L50a〜V3.4L77) Sony VAIO Sシリーズ13P SVS13A1AJ (Intel HM77 ExpressChipset) Intel Core i7-3520M(Ivy Bridge) 2.90GHz, 8GB RAM, 512GB SSD Intel HD Graphics 4000 / NVIDIA GeForce GT 640M LE (2GB) Realtek High Definition Audio Windows 7 Professional Service Pack 1 (x64) 開発マシン3 (V3.4L50〜V3.4L77) IBM(Lenovo?) ThinkPad X60s Type 1703-AL7 (Intel 945GM) Intel Core Duo(Yonah-DC,LV) 1.66GHz, 2GB RAM, 500GB HDD Intel 945GM Express Graphics Controller SoundMax Integrated Digital HD Audio Windows 7 Professional Service Pack 1(x86) ←戻した(汗 評価マシン1 (開発マシン:V3.4L22〜V3.4L50) Panasonic Let'snote CF-W5KWUAXP (Intel 945GMS) Intel Core Solo(Yonah,ULV) 1.06GHz, 1GB RAM, 120GB HDD Intel 945GMS Express Graphics Controller Sigmatel C-Major AC'97 Audio Windows XP Professional Service Pack 3 Windows 7 Professional Service Pack 1 (x86) 評価マシン2 (V3.4L21a〜V3.4L77) Sony VAIO PCG-U101 (PCG-1E1N) Mobile Intel Celeron(Banias-512K,ULV) 600A MHz 512MB RAM, 30GB HDD ATI MOBILITY RADEON (16MB), YAMAHA AC-XG AC'97 Audio Windows XP Home Edition Service Pack 3 評価マシン3 (V3.4L62〜V3.4L77) Acer Iconia W4-820/FP Intel Atom Z3740(Bay Trail-T) 1.33 GHz, 2GB RAM, 64GB eMMC Intel HD Graphics, Realtek High Definition Audio Windows 10 RTM Build 10240 (x86) 評価マシン4 (XM7LE V2.9L63) FUJITSU/NTT docomo F-07C Intel Atom Z650(Oak Trail) 1.2 GHz, 1GB RAM, 32GB eMMC Intel Graphics Media Accelerator 600, Realtek I2S Audio Codec Windows 7 Service Pack 1 (x86) 過去の開発マシン1 (V3.4L50〜V3.4L50a) MSI P43 NEO-F (Intel P43 Express Chipset) Intel Core 2 Duo(Wolfdale-3M) E7200@1.6GHz,4GB RAM,1.5TB HDD LEADTEK WinFast PX8500GT TDH (256MB) Creative SoundBlaster X-Fi Xtreme Audio Windows 7 Ultimate Service Pack 1 (x64) 過去の開発マシン2 (V3.4L21〜V3.4L40) NEC VALUESTAR G type TZ PC-VG30NYZMJ (SiS 760) AMD Athlon64(NewCastle) 3000+@2GHz, 1GB RAM, 610GB HDD SAPPHIRE ATLANTIS RADEON 9600 FANLESS BULK (128MB) Creative SoundBlaster Audigy 2 Windows XP Professional Service Pack 3 過去の開発マシン3 (V3.4〜V3.4L21a) Panasonic Let'snote LIGHT CF-W2BW1AXR (Intel 855GM) Intel Pentium M(Banias,ULV) 1GHz, 512MB RAM, 40GB HDD Intel 82855GM Graphics Controller Sigmatel C-Major AC'97 Audio Windows XP Professional Service Pack 2 過去の開発マシン4 (V3.3L31〜V3.4L20a) ABIT NF7-SL (NVIDIA nForce2 Ultra 400) AMD Athlon XP(Thoroughbred B-step) 1700+ (1.47GHz…?) SAPPHIRE ATLANTIS RADEON 9000 FANLESS BULK (64MB) NVIDIA nForce2 MCP-T Audio (Onboard) Windows XP Professional Service Pack 2 過去の開発マシン5 (V3.1〜V3.3L30) GIGABYTE GA-7IXE4 (AMD-750), AMD Athlon(Thunderbird) 1GHz ATI XPERT98 PCI(ATI RAGE PRO TURBO PCI) Labway Xwave6000(YAMAHA YMF754), FUJITSU TownsCard PCI Windows 2000 Professional Service Pack 4,TownsOS V2.1L51(謎) 過去の開発マシン6 (XM7改 V3.0〜V3.0L31) MSI MS-5163 (ALi AladdinIV+), AMD K6-III 333-366MHz ATI XPERT98 PCI(ATI RAGE PRO TURBO PCI) Labway Xwave6000(YAMAHA YMF754), FUJITSU TownsCard PCI Windows 95 OEM Service Release 2 過去の評価マシン1 (FMV-BIBLO LOOX T60D, V3.4〜V3.4L23) Mobile Intel Celeron (Banias-512K,ULV) 600A MHz 512MB RAM, 40GB HDD Intel 82855GM Graphics Controller, Realtek AC'97 Audio Windows XP Home Edition Service Pack 3 過去の評価マシン2 (FMV-BIBLO LOOX U/C30, V3.4L30) Intel Atom Z530(Silverthorne) 1.33GHz, 1GB RAM, 60GB HDD Intel Graphics Media Accelerator 500 Realtek High Definition Audio CODEC Windows XP Home Edition Service Pack 3 ターゲットマシン FM77AV40EX, FMT-DP531 FM77AV40SX, FMDPC232D, KDL-20J1, モニタケーブルがない(滅 FM77AV-2, FMTV-152, ビデオディジタイズカード(FM77-411) FM-77L4, CZ-600DB FM-NEW7, PC-KD252, マイクロフロッピィディスクドライブ (MB27631H) FM-8, CZ-600DB 主要開発言語 Borland C++ Compiler 5.5.1 Netwide Assembler 0.98+towns05 HD6309 cross assembler version 01.20T □地球に優しい(?)リサイクル企画 - XM7 V3.4L77に関するFAQ <概要> Q:XM7はFM-7・FM77AV・FM77AV40EXを100%エミュレートしていますか。 A:していません。大半のソフトを動かすのに支障がない程度です。イメージ的には 98%程度と考えて下さい。 Q:残り2%は具体的にはどこですか。 A:最大の欠点はディスクアクセスが速すぎることです。これが原因で動作異常を 起こすソフトがあります。それ以外にも問題点は幾つかあります。 ただし、現在のXM7にはディスクアクセスにウェイトを挿入する機能がありますので それを有効にすれば動くソフトもあるかと思います。 Q:エミュレートをFM-7・FM77AV・FM77AV40EXに切り替えできるようですが。 A:FM77AVモードでは、XM7 V2とほぼ同等の動作となります。 FM-7モードであってもディスク・漢字ROM・FM音源は使えます。このため、厳密には FM-7モードといっても、MMRのないFM-77L2に近い動作をします。 Q:FM77AV40EXモード時、FM77AV20,FM77AV40,FM77AV20EXなどの互換性は。 A:オリジナルハードウェアがこれらの機種の上位互換に作られていますので、原則 として互換性があります。ただし、イニシエータROM内の機種IDはFM77AV40EX相当 となりますので、機種を細かく判別するようなものは正常に動作しません。 Q:ではFM77AVモード時のFM77AVとの互換性は。 A:前述した通り、XM7 V2とほぼ同等の動作となります。イニシエータROM内の機種IDも FM77AV相当となり、ブート処理も旧ブートを使うようになるので、機種を細かく判 別していてもほとんど問題ないものと思われます(100%とは言えませんが…)。 Q:各バージョンのXM7の間でのステートファイルの互換性は。 A:XM7 V3のステートファイルはV2の上位互換仕様となっているので、XM7 V2で作成 したステートファイルをXM7 V3でロードすることが可能です。逆にXM7 V3で作成 したファイルをXM7 V2でロードすることはできません。 また、XM7 V1系とV2/V3系の間でのステートファイルの互換性はありません。 <起動> Q:起動時に「仮想マシンを初期化できません(以下略)」と出ます。 A:まず、このファイル(XM7.txt)の「ROMファイル」にしっかり目を通してください。 必要なROMファイルがないか、ファイルサイズが不足しています。ROMファイルはカ レントディレクトリではなく、XM7.exeと同じディレクトリに置いて下さい。 また、V3.4L50から漢字ROMのファイルについての扱いが変更になっており(「ROMフ ァイル」を参照してください)、JIS83準拠第1水準漢字・非漢字ROMのファイル名の 変更が必要となっていますので、変更を忘れるとこのエラーメッセージが表示され ます。 Q:XM7を終了させた直後に再度起動しようとしても起動できません。 A:おそらくアンチウイルスソフトが.INIファイルのチェックを行っているために前の XM7.exeが終了していないものと思われます。しばらく経ってから再度お試しくだ さい。 Q:動作中のOSにDirectXが入っているか、バージョンが正しいかわかりません。 A:Win98以降ならOSデフォルトでDirectX3以降をサポートしていますので、気にする 必要はありません。Win95/WinNT4は要チェックです。 Q:メモリは何MBくらい実装している必要がありますか。 A:OS本体や他のアプリケーションにもよるため一概には言えませんが、最低32MBくら いから動作すると思います。XM7自体の消費メモリは5〜10MB前後です。 Q:同じFM-7エミュレータであるEM-7やFEMU7、VM7、eFM77AV40、eFM77AV40EXのROMイメ ージは使えないのですか。 A:EM-7やFEMU7、VM7 V0.1/V0.2のROMイメージは使えません。XM7 V3はFM77AV40EX/SX のROMイメージを要求するためです。ただし、この逆は簡単な変換を施してやること で可能です。 VM7 V0.3、eFM77AV40についてはFM77AV40相当という仕様のために拡張サブモニタ ROMファイル(EXTSUB.ROM)を要求しないというだけで、そのほかのROMイメージの ファイル名は全て共通なので、XM7用のEXTSUB.ROMさえあれば変換も不要です。 eFM77AV40EXについてはROMイメージの仕様は全く同一なので問題なく使用できます。 <ディスク> Q:2D/2DDディスクをD77ファイルに変換するにはどうすればいいのですか。 A:PC-88エミュレータP88SR向けのツールMAKE_HDか、M88向けのツールDITTが使えま す。ただしプロテクトのかかったディスクや、N=5のディスクは変換できません。 Q:では、それらのディスクはどうすれば変換できるのですか。 A:汎用的なツールは今のところありません。FM-7実機、FM TOWNSなどで専用ツール を作成したり、D77ファイルを直接バイナリエディットするなどして下さい。 Q:D77ファイル内の全てのディスクに対して、ライトプロテクトしたいのですが。 A:D77ファイルの属性を読み取り専用(Read Only)にしてください。ファイル内の全て のディスクがライトプロテクト状態として扱われます。 Q:1つのD77ファイルに入るディスクの枚数に制限はありますか。 A:あります。XM7ではD77ファイルについて、1ファイルあたりの最大ディスク数を 16枚に制限しています。 Q:2Dファイルの構造・目的がわかりません。 A:F-BASIC標準の40(track)×2(side)×16(sector)×256(byte)を、頭から順に連結 したものです。FM77AV40向けのツールCOPY2D(非公開)で作成可能です。 Q:2DDファイルの構造・目的がわかりません。 A:簡単に言うと2Dファイルの2DD版です。F-BASIC標準の80(track)×2(side)×16(sec- tor)×256(byte)を、頭から順に連結したものです。 Q:VFDファイルの構造がわかりません。 A:FM TOWNS版EM-7のドキュメントにファイルフォーマットの説明があります。こちら を参照して下さい(とは書いてあるが見当たらない(汗))。 Q:D77ファイルの構造がわかりません。 A:PC-88エミュレータP88SRの公式サイトに技術文書の形で公開されています。D88の 説明をD77に読み替えて下さい。 Q:D77ファイルではセクタステータスをどのようにサポートしていますか。 A:仕様書では"DISK BIOSが返す値"となっていますがこれはPC-9800のDISK BIOSが返す 値のことで、XM7では$B0のみサポートしています。この値のセクタを読み込むとCRC ERRORとして振る舞います。 <テープ> Q:テープ音声を録音したWAVファイルからT77ファイルを作成することはできますか。 A:Apolloさん作のWAV2T77で可能です。この場合サンプリングレートを可能な限り高 くし(44.1kHz)、極力ノイズが混入しないように注意して下さい。 Q:T77ファイルをマウントし、F-BASICからロードを試みても必ず失敗します。 A:F-BASICではテープのモータをONにした後、回転が安定するまで1、2秒待っていま す。この間を考慮して、RUN"CAS0:"[CR]などの後数秒待ってマウントして下さい。 Q:テープの書き込み保護はできますか。 A:T77ファイルの属性をRead Onlyにすることで、録音禁止(テープのツメを折った状 態)として扱います。 Q:テープの巻き戻し・早送りを行うと、長時間XM7が応答しません。 A:仕様です。これはT77ファイルの最小単位(2バイト単位)でマーカ位置の検索を行っ ているためです。 Q:T77ファイルのサイズが数MB〜数10MBになるのですが、異常ではないですか。 A:正常です。これはFM-7のテープインタフェースから読みとれる最低レベルのデータ をそのままファイル化しているためで、効率そのものは非常に悪いです。 <画面・速度> Q:全画面モードの設定を"640x400"にしていても、設定されていないようです。 A:設定できるかどうかはビデオドライバに依存します。全画面モードの解像度設定 は優先度の設定であり、失敗すればもう一方を使って試みます。 Q:他のエミュレータでよくあるようなフレームレートの設定はないのですか。 A:ありません。XM7ではフレームレートは常に"自動"として扱われます。最小2フレー ム、最大55フレーム or 60フレームの範囲内で負荷に応じて変化します。 Q:フレームレートを確認するにはどうすればよいですか。 A:スケジューラウインドウを開いてみて下さい。"Frame Rate"の項目2つで確認でき ます。Totalはウインドウオープン後の平均、Latestは最近2秒間の値です。 Q:ソフトによってフレームレートが急激に落ちたり、テンポ落ちが起こります。 A:直線補間・論理演算LSIの使われ方によって負荷が大きく変化するためです。例えば "AMNORK"や"Dragon Buster"は負荷が非常に大きいため、落ちやすくなります。 Q:スケジューラウインドウで、メインタイマーの速度が交互変化しています。 A:メインタイマーは4.9152MHzのXtalから作られています。つまり周期が2.0345msで あり、XM7では2.034msと2.035msとを交互に発生させて近似しています。 Q:ラスタ単位でレンダリングを行った場合のメリット・デメリットは。 A:ラスタ単位でのレンダリングを行うことにより、いわゆるラスタスクロールの再現 が可能となり、◎h!FM掲載の「ゆらぎの世界」シリーズが動作するようになります。 また、「METAL-X-」シリーズの敵キャラが表示されない不具合が解消されます。 逆にデメリットとしては、毎フレームの毎ラスタごとにレンダリングを行うように なるため、マシンへの負荷が増え、フレームスキップ等が発生しやすくなります。 Q:ラスタ単位でのレンダリング対応で「画面描画タイミングを表示終了期間直後にす る」機能はなくなりましたか。 A:GUIから設定する機能はなくなりましたが、INIファイルを直接書き換えることで対 応できます。XM7.iniの[Screen]セクションに「DrawAfterVSYNC=0」と書いてくださ い(旧バージョンの「DrawTiming」と値が逆な点に注意してください)。 <サウンド> Q:FM音源・PSG音源・BEEP音源の各ボリュームを調節したいのですが。 A:今までは未対応でしたが、V3.4L30からボリューム比の変更に対応しました。 Q:ステレオ設定で音量バランス(パンポット)がきちんと分かれていないようです。 A:V3.4L30から「チャンネルセパレーション」の設定が可能になりました。デフォルト では従来バージョンと同じ左右70%:30%近辺の割合になるようにしています。このた め音が中央に寄ります。 Q:オプション設定で標準OPN音源(FM-7モード時),WHG音源,THG音源をカットすると処理 が軽くなりますか。 A:内部処理ではリセットの度に使用フラグをクリアし、本当に使われた場合だけソフ トウェア合成を行っています。このため未対応ソフトの場合はOFFにしている状態 と変わりません。 Q:FM音源・PSGのチャンネルマスク機能の操作方法は。 A:[表示]→[FM音源/PSGディスプレイ]で開くFM音源ディスプレイウインドウ上の鍵盤 に対して以下の操作を行えます。 左クリック :指定されたパートのミュート状態を切り換えます。 左ダブルクリック:指定されたパート以外を全てミュート状態にします。 右クリック :全てのパートのミュート状態を解除します。 なお、この機能はROMEOで出力しているパートに対しては無効です。 <キーボード> Q:Windows2000を使っていますが、[半角/全角]を押した時にリアルタイムキースキャ ンが正常に動作せず、オートリピートOFFの状態でもリピートがかかります。 A:WinNT系でのDirectInputの仕様による制限事項で、従来バージョンのようにキーロ ックがかかってしまうのを回避する処理を行っているためです。この動作が問題と なる場合は、キーマップ設定機能を使って別のキーを割り当てて下さい。 対策処理を行っているのは[半角/全角]、[Caps Lock]、[ひらがな]の3つのキーで すが、[左Ctrl]、[右Ctrl]でも不具合が出るケースがあるようです。 また、PC-9801キーボードの場合にもキーロックがかかる[CAPS]、[かな]キーにつ いて同様の対策処理を行っています。 <ジョイスティック> Q:FM特有の[5]キーストップを、ジョイスティックを使って回避できるそうですが。 A:ジョイスティック設定でタイプを"キーボード"にし、センターを[5]に割り当てて 下さい。センターに戻ったときに1回だけ[5]キーのMake/Break動作を行います。 Q:ISA互換ゲームポートを使っていますが、重いポーリングを抑制するには。 A:ジョイスティック設定で、ポート1・ポート2ともにタイプを"使用しない"に変更 してください。ゲームポートの定期ポーリングを行わなくなります。 Q:ジョイスティックのタイプで選択可能な"電波新聞社JOY I/F"とは何ですか。 A:FM-7時代に電波新聞社から発売されたジョイスティック"XE-7"のインタフェース です。プリンタポートに接続して使います。"ゼビウス"などが対応しています。 なお、電波新聞社JOY I/Fとプリンタ出力機能の併用はできません。どちらか一方の みの使用となります。 <マウス> Q:タッチパネルでのマウスエミュレーションはできますか。 A:できません。マウスは移動距離を相対座標で返すのに対して、タッチパネルは絶対 座標を返してくるためです。(名称がややこしいですが)ノートPCのいわゆる「タッ チパッド」でのマウスエミュレーションはできます。 Q:マウスセットのPTMのEクロック使用時の割り込み間隔精度が甘いようですが。 A:仕様です。現状ではとりあえず純正マウスドライバが動くように,最低限Cクロック で駆動した場合の精度はある程度確保できるようになっていますので、Eクロックの 精度は重視していません。 <デバッガ> Q:デバッガの使い方がわかりません。 A:逆アセンブルウインドウで左クリックするとブレークポイントを設定します。また ブレークポイントウインドウで左クリックすると該当アドレスへジャンプします。 Q:左クリック・右クリック・左ダブルクリックの機能があるウインドウは。 A:左クリックについては逆アセンブル・ブレークポイントの各ウインドウ、右クリッ クはCPUレジスタ・逆アセンブル・メモリダンプ・ブレークポイントの各ウインドウ、 左ダブルクリックはCPUレジスタ・メモリダンプの各ウインドウです。 Q:CPUレジスタやメモリの書き換え機能はありますか。 A:あります。各ウインドウで変更したいCPUレジスタ/メモリアドレスを左ダブルクリ ックしてください。書き換えた内容はCPUレジスタ/メモリ/I/Oポート全てに関して、 即時反映されます。 Q:ブレークポイントを設定すると重くなりますか。 A:メインCPU・サブCPUともに1命令実行ごとにチェックを行うため、数%ですが重くな ります。 Q:物理アドレスでの逆アセンブル・ブレークポイント設定はできませんか。 A:できません。前者はインデックスモードでのアクセスをどうするかの問題があり、 後者はXM7の構造上非常に難しいためです。 Q:CPUレジスタ表示内の"IR"とは何ですか。 A:CPUエミュレーション上設けた疑似レジスタです。NMI等の割り込み要求フラグや、 SYNC/CWAIといった同期命令の管理を行うためのもので、"InterRupt"の略です。 <設定> Q:CPU速度の設定を変更するとどうなりますか。 A:大きくすると仮想マシンのCPU速度は速くなりますが、処理は重くなります。小さ くするとその逆に遅くなります。デフォルトの値は適当なベンチマークプログラム をでっちあげてそれを参考に決定したものなので、変更するメリットはあまりない と思います。 Q:テープモータオン時のフルスピード動作とは何ですか。 A:テープモータが回っている間だけ、仮想マシンの実行速度を上げてロード時間の 短縮を図る機能です。 Q:テープモータオン時のフルスピード動作がデフォルトではメインCPUのみ全力駆動 になりますが、旧版のように速度調整省略にすることはできますか。 A:できます。全般ページの「テープモータオン時の動作を速度調整省略にする(C)」を チェックしてください。 Q:全力駆動モードとは何ですか。 A:CPUパワーに余裕がある場合に、その余裕分だけ仮想マシンのCPU速度を上げます。 「テープモータオン時のフルスピード動作」と異なり、タイマー間隔や時計などの CPU以外の部分の速度は変わりません。なお、ソフトウェアタイマーでタイミングを 取っている場合(テープの読み書き、FLEXなど)は正常に動作しなくなりますので、 この場合は設定をオフにしてください。 Q:自動速度調整機能とは何ですか。 A:全力駆動モードとは逆に、CPUパワーが足りない場合に、自動的に仮想マシンのCPU 速度を5%〜100%の間で調節して描画やイベントの実行時間を確保します。処理が間 に合っていればCPU以外の部分の速度は変わりません。CPUのエミュレーションに時 間を取られて常時2fps程度しか出ないような状況で有効です。ただし、厳密な実行 タイミングを要求するソフトは動作しなくなる可能性があります。 Q:オプション設定でビデオディジタイズカードを無効にした場合、どうなりますか。 A:ビデオディジタイズカードはI/Oエミュレーションを行っていないため、特にどう ということはありません。VMレベルでカード無しとして処理されるのみです。 <ツール> Q:画面キャプチャ機能は、どのタイミングで画面をセーブしますか。 A:ファイル入力ダイアログボックスでファイルを入力して、[OK]が選択された直後 の画面です。このため予めVMを止めておくと良いと思います。 Q:画面キャプチャ機能で、1ライン単位にセーブされる(ラインが抜ける)のは。 A:画面表示にあわせた仕様です。設定で"ウインドウモード時に24kHz表示をエミュ レート"にチェックを入れた状態でキャプチャすると、フルスキャンでセーブされ ます。 Q:WAVキャプチャ機能の使い方は。 A:WAVキャプチャを開始するとチェックマークがつき、音出力監視状態に入ります。 その後何らかの音が出力され始めた瞬間から逐次セーブを始めます。 Q:WAVキャプチャ機能を使おうとすると、エラーが出て開始できません。 A:指定されたファイルが書き込みオープンできないか、サウンドバッファの設定値が 700ms以上になっているかのどちらかの場合にエラーを出します。 <個別の互換性> Q:"MAGUS"が動作しません。 A:パッチを当てないと動作しません。 これはCLR命令がメモリをRead→Writeする一瞬のReadタイミングで同期をとるため です。また、XM7の設定で対策処理を有効にすれば無改造で動作するようになります (ゲームのロードが完了した時点で切り換えれば問題ないようです)。 Q:"リザード"が動作しません。 A:"MAGUS"の問題の対策処理が影響しています。XM7の設定で"MAGUS"への対策処理を無 効にしてください("MAGUS"と異なり、起動前に切り換えないと起動しません)。 Q:"デスフォース"のオープニングでハングします。 A:CPU速度を変更して下さい。たとえばメインCPU、サブCPUともに1752に設定すると 動作します。これはCPU間の通信制御が甘く、お互いの進行が少しズレただけで デッドロックするからです。 (V3.3/V2.8以降ではデフォルト設定でほぼ動作するように改善されています) Q:FM77AV用OS-9 Level2を起動すると画面が崩れます。 A:動作機種をFM77AVに変更するかディスクドライバにパッチを適用してください。 FM77AV用OS-9のディスクドライバ(disk)がFM77AV40で追加された画面モード関係の I/Oを誤って操作してしまうため、画面モードが26万色モードになります。 詳しい情報は◎h!FM 1987年1月号「FMテクニカルノート」に載っています。 (はせりんさんの「Retro PC Gallery」にも同様の情報があります) また、実機とは異なる動作となりますが、XM7.iniの[Misc]セクションに「SubMode Fix=1」と書くと回避できます。 <その他> Q:今後のバージョンアップ予定は。 A:バグフィックスを除き、原則行いません。また更新は不定期となります。 Q:今まで行っていたソースの公開は行わないのですか。 A:MESS問題などがありましたので、こちらとしては原則として公開は行いません。ま た、ソース一式は原作者であるPI.さんにお返しすることにしていますので、今 後はPI.さんのほうで公開・非公開を決めていただく形となります。 Q:Windows 8/8.1のModern UI版やWindows 10のユニバーサルアプリ版、Windows RT版   Mac OS X版など、Win32以外の環境で動作するバージョンの開発予定は。 A:Mac OS X版は以前GIMONSさんが公開されていましたが、現在は公開終了となってい ます。また、Android版についてはBen.JPさんのソースをベースにしたものをこちら で開発していなくもないですが、公開するかどうかはわかりません。 その他のプラットフォームに対してのポーティングの予定は全くありません。 Q:追加して欲しい機能、動くようにして欲しいソフトがあるのですが。 A:要望はいつでも受け付けます。但し実現させるかどうかは私が決めます。 ただし、今回で(今回こそ)当面の最終バージョンとなるので基本的にすぐ反映され るものではないと思ってください。 また、「このソフトに対応して欲しい」からと言ってディスクイメージを送りつけ るような事は絶対にやめてください。本当に開発が進められなくなります。 □連絡先 ホームページ http://retropc.net/ryu/xm7/ (もう誰も見向きもしないXM7のぺーじ) メールアドレス ryu.takegami@mbg.nifty.com Twitter http://twitter.com/RyuTakegami