XM7(V1/V2/V3共通) / EM-7 両用 ROM SET

XM7を利用するためには実機を所有している必要がありました。これは、XM7は仮想的なハードウエア環境を提供するのみのものであり、その上で動くソフトウエア(BIOS/Boot Loader/BASICインタプリタ)を実機から取り出す必要があるためです。さらに、これらのソフトウエアは富士通とマイクロソフト(F-BASICはMicrosoft M-BASICをベースにしたものらしいです)の著作物であるため、これらのソフトを利用するには使用権を持っている必要があります。使用権はFM-7シリーズ実機についてくるため、実機を持っている必要があるのです(いや、正直この辺の話は良く分かってないけど、一般的にこんな解釈でよいのだと思います)。

この辺が、昔FM-7持ってたけど捨ててしまった…けど、久しぶりにあの頃のゲームで遊んで見たいなぁ…というかたが簡単にエミュレータを利用できないカベになっていたと思います。

そこで、ゲームをするだけなら、Boot Loader、BIOSとSub Monitorの一部機能を実装すれば動きそうだな…というわけで一部機能のみを実装したROMセットをつくってみました。

もちろん、著作権がらみの係争はさけたいので、フルスクラッチから起こした完全オリジナルROMです。一部、サブルーチンのエントリーアドレスなどをオリジナルROMとあわせるために資料を参考にしていますが、基本的に富士通から公開されているソースをパクったところはゼロです。

ちなみに、キャラクタフォントはLaverさんが作成されたfont1a(アタリ風フォント)を利用させて頂いております。事後報告ですが、いいですよね?Laverさん(^^;了承いただきました。 結局フォントはオリジナルで作成しました。とはいっても、FM-7の実機で表示させた文字をにらみつつ作成したので、FM-7実機に近いフォントになっています。カタカナの形が悪いのはご愛嬌。

 

EM-7でROMセットを使う方法はこちら(なべちゃんさん執筆 (^^; )  EM-7用のROMもmakeでつくれるようになりました(V1.20から)

 

== 説明 ==

XM7で必要となるROMのセットです。

ソースセット rom_v***_src.zip ソースファイルのみを含む。makefile, font.txt, その他ソースファイルの詰め合わせ
バイナリセット rom_v***.zip バイナリ(*.ROMファイルのみを含む)KANJI.ROMのみ含みません。同梱の、KROM.EXEを実行して自分で生成してください。
ツールセット rom_tool.zip ソースからバイナリを生成するのに必要なツールの詰め合わせ。これ以外に、X6809(クロスアセンブラ)と、makeが必要です。

の3部構成です。KANJI.ROMファイルは以下の理由で同梱しておりません。

KANJI.ROMはWindowsマシン上で作成できるのですが、作成されたデータはWindowsのフォントから起こされているので、そのまま配布するのはマイクロソフト社の著作権を侵害する恐れがあるため含まれていません。
rom_tool(またはrom_v***.zip)に含まれるkrom.exeを実行するとKANJI.ROMファイルは自動生成されますし、ROMセットのソースと、rom_toolを使ってmakeを実行すればKANJI.ROMも自動的に作られます。

V1.10から、makefileもソースセットに含めました。それと同時に、ビルドに必要となるツール類も配布しています。配布しているツール以外に必要となるものは、

make (Borland make推奨 V1.20からnmakeでもビルドできます)
6809クロスアセンブラ (X6809.EXE推奨 アークピットさんのホームページから無償でダウンロードできます)

です。

Borland makeはv5.2を使用してビルドしています。他のバージョンについては試していません。Borland makeは、無償配布されているBorland C++ Builder Compiler 5.5に含まれています。"Borlandトップページ" → "Downloads" → "C++ Builder" → "C++ Builder Compiler 5.5"の順にたぐっていけば入手可能です(Borland comunittieに登録しないとダメかも。これも無料で出来ます)。

当然ながら,BASICインタプリタは含まれませんので,F-BASICは起動しません。もちろんDISK BASICも起動できません。

 

== ダウンロード ==

rom_v120.zip 11KB ROMセット(バイナリ)  注1
rom_v120_src.zip 13KB ROMセットのソースファイル+makefile
rom_tool.zip 84KB ROMセットをビルドするのに必要となるツールのセット(make, x6809以外)

注1 前述のとおりkanji.romは含みません。krom.exe(tom_tool.zipに含まれます)を使って自分で生成してください。makefileを使用して生成する場合、自動的に生成されます。

 


== 使い方 ==

特に無いです。圧縮ファイルを解凍して出てきた*.ROMファイルと、krom.exeによってつくられたKANJI.ROMファイルをXM7の実行ファイルと同じフォルダに放り込んでください。これで準備完了です。

準備が出来たらXM7を起動してください。DISKを入れるようにメッセージが出てきますのでDISKイメージファイルをマウントします。ドライブ0にディスクが挿入されると自動的にIPLを読み込み、ゲームを起動します。

各ROMの内容と機能は以下のとおりです。かなり大雑把ですが…

ROM名 基本機能 互換性を維持するための工夫 省かれている機能(一部)
BOOT_BAS.ROM ディスクからIPLを$100からに読み込み、実行する。 ディスクアクセス用ルーチンのエントリアドレスは実機とあわせてある。 BREAKキーによるワームスタート機能(BASIC ROMが無いので必要ない)
BASIC.ROM BIOSはディスク関連のみ実装。 BASIC ROMのイニシャライズルーチンを利用しているソフトように$DEからのBIOSコール用フックの設定を行う。 BASICインタプリタ(^^;
SUBSYS_C.ROM YAMAUCHIコマンドと文字表示機能の一部 ・サブシステムを乗っ取って使用するゲームのことだけを考えて実装。必須となるYAMAUCHIコマンドはフル実装してある。
一応キー入力(INKEY)はサポートしている。
・同じ機能を持つワークエリアのアドレスは合わせた
・タイマ割り込みもサポート
・アテンション割り込応答もサポート
・コマンド$7FもV1.20からサポート
・一部ソフトの為にコマンドテーブルを実装
・一部ソフトの為にスタブ実装
文字入力、グラフィック描画など、その他全て。
SUBSYS_A.ROM YAMAUCHIコマンドと文字表示機能の一部 ・基本的にSUBSYS_Cと同じ
・割り込みベクタをワークRAMに飛ばすように向ける(フックできるようにするため)
文字入力、グラフィック描画など、その他全て。
SUBSYS_B.ROM YAMAUCHIコマンドと文字表示機能の一部 ・基本的にSUBSYS_Cと同じ
・スキャンキーコードをFM-77AVモードに変更
・割り込みベクタをワークRAMに飛ばすように向ける(フックできるようにするため)
文字入力、グラフィック描画など、その他全て。
INITIATE.ROM BOOT ROMをBOOT ROM領域にコピーし、$FE00に制御を移す ・音源用の音色テーブル内蔵
・ブートモードを判定し、適切なブートROMを$FE00からに転送
・FDDモードを2Dに変更
その他,いろいろ。


== 実行例(?) == 

ソースファイルから、makefileを使って生成する場合は、rom_v***_src.zipと、rom_tool.zipを展開して出来るファイルを全て同じディレクトリに放り込み、さらにBorland make(make.exe)と、アークピットさんのX6809(x6809.exe)をも放り込んだ状態で、make(またはnmake)と入力するだけです。もちろんコマンドラインからです。

かなり延々とメッセージを表示しながらROMファイルを生成していきます。しばらくお待ちください。

V3用のダミーファイルも自動生成します。

V1.20からは、EM-7用のROMファイルを作成するときにはmakeターゲットを指定する必要があります。

make XM7用のROMファイルを生成します
make clean makeが作る中間ファイルを削除します
make clean-all makeが作るすべてのファイル(ROMファイルを含む)を削除します
make em7 EM-7用のROMファイルを生成します

 

== その他ノウハウなど ==

・すでにお分かりだと思いますが、いきなりサブシステムを乗っ取る本気のゲーム以外は動きません。ゲームローダがBASICで出来ているものや、グラフィック描画、文字入力をサブシステムに頼るゲームはNGです。つまり多くのアドベンチャーゲームは実行できません(デゼニワールドは動いてるみたい)。

・V1.10では動かなかったハイドライド2もV1.20では動きます

・V1.10で動かなくなったXanadu scenario IIもV1.20では問題なく動きます。これは、RST(Reset)という6809の未定義命令を使用しているのが原因でした。

・その他にも、V1.20からファイアボールや、少年マイクの〜など、AV専用ゲームで動くようになったものが多数あるはずです。

・以外にOS-9 LevelIIなんかがそこそこ動いていたりします。ただし、サブシステムはかなり手を抜いてつくられているので、あまり期待しないで下さい(というか、本気で使うことはムリでしょう)。

・一緒にソースを入れておきました。分かる方は勝手にいじって遊んでください。なんかいいことが分かったら(くだらないことでも歓迎!)掲示板にでも書き込んでください。今後のバージョンアップに反映させていきます。なお、アセンブラはアークピットさんのX6809を使用しています。フリーで公開されている、便利なアブソリュートアセンブラです。

 

== 参考文献 ==

書籍名 出版社 記事名 著者
Oh!FM 1985年1月号 ソフトバンク サブシステムの使い方 MICRO ARTS/笠作 貴弥
MICRO ARTS/奥久 美恵子
Oh!FM 1985年1月号 ソフトバンク 中級者向けサブシステム講座 Advances Software Designes
F-BASIC解析マニュアルフェーズI 基礎編 秀和システムトレーディング(株)   中村 秀都
F-BASIC解析マニュアルフェーズII 探求編 秀和システムトレーディング(株)   箕原辰夫
菊池 寿
南 泰浩
7 FAN BOOKS 5(初めての内部解析) 技術評論社   鹿野 哲郎
松山 雅明
熊井 光文
市田 三知男
FM-Techknow BNN   阪井 末幸

== 改版履歴 ==

v1.0 2001/10/06 初回公開バージョン
v1.10 2001/10/23 makefileも含めて公開。多少バグFIX版。特に、TST命令とBIT命令を間違えるという大ポカを中心に修正。BootROMは多数バグ修正。修正多すぎて掲載できず。分かる人はdiffとってね。
v1.20 2001/11/23 相変わらず変更箇所が多すぎてさっぱりわけがわかりません。
とにかくいっぱい修正。ROMセットとしては大分安定してきたと思う。
今後は特定ゲーム対応の為にスタブを当てたり、ダミールーチンを埋めたりするくらいかな(←全然改版履歴になってないな…)