短期集中講座 クロス開発のすすめ 改訂版

はじめに

 皆さんは、MSX用のソフトを何で、製作しているでしょうか?
 「そんなもん、MSXでに決まってるじゃないか?」
一昔前でしたら、それが当然かもしれません。しかし、現在では、ダイエーのような、昔ならパソコンとは縁が無かったであろう所でも、一昔前とは比べ物にならない処理能力を持つパソコンが昔と比べると安価に売られているこの御時勢、そのパワーをMSXの開発に向けると、MSXのみで製作するより、効率良いソフト製作ができるのです。MSX用のソフトをMSX以外のマシンでソフトを製作する事に限らず、プログラムの動作マシンと別のマシンでソフトを開発する事をクロス開発と言います。
 更にいうなら、アセンブラや、C言語を持っていても、自分のマシンは、Z80CPUのみなので、時間が掛かる、とは言え、Turbo-Rなんて簡単にゃ、手に入らないという事に対しても、有効な回答になりうるのではないかと思います。
 折角のパワーをMSXのソフト開発に使わないのはもったいない!という訳で、どのようにしたら、クロス開発ができるかについて、アセンブラやC言語でのプログラム開発を主な対象として、マシンにあった程度毎に見て行きましょう。

Level 0 どんなマシンが良いか?

 MSX以外のマシンで組むからには、MSXより、能力の優れたマシンを使わない事には意味が有りません。そこで、クロス開発用に使われるマシンに必要な能力について挙げていきましょう。

1.CPUは速い方が良い

MSXを離れる事による利点として、CPUの速いマシンを使えるので、アセンブルや、コンパイルに使う時間が少なくて済むので、その分、試行錯誤を繰り返す事ができます。そのため、CPUは速い方が良いです。特に、これは、レベルが進むにつれて顕著になります。

2.MSXのディスクくらい制限なく読み書きできなきゃ

MSXではなんだかんだと言って、フロッピーディスクが主流、だから、3.5インチ2DD,9セクタフォーマットというMSX-DOSで使われるフロッピーのフォーマットを制限なく読める機種が必要になります。(読み書きした時に変なファイルができたりすると面倒でしょ。)更に言うなら、フロッピーディスクの読み書き速度が速い方が良く、ドライブが複数あると、ディスクのデュプリにも使えて便利です。

3.クロス開発用のソフトが多い方が良い

折角、マシンがあっても、その上で動くZ80用のアセンブラや、各種言語が動かないと余り意味が有りません。だから、選んだマシンで動くZ80用のアセンブラや、各種言語など、開発の道具が多く、しかも、簡単に手に入るマシンを選びましょう。

これらの要件を満たしたマシンなら、MSX用のソフトの開発に役立ってくれるでしょう。今回は、こうした要件を満たすマシンとして、MS-DOSマシンをターゲットに、その上で、どのようにして、クロス開発を行なうかについて説明します。

Level 1 ソースファイルを書こう

まずは、ソースファイルを書く事から始まります。MS-DOSマシンでは、VzエディタやMIFESといった市販エディタの他に、フリーソフトで、MSX用のエディタなど比べ物にならないくらい強力なソフトが色々あります。Windows環境では、さすがに、フリーソフトはMS-DOS上ほど多くはありませんが、シェアウェアや、市販ソフトには、秀丸エディタやWZエディタ、MIFES For Windows等、色々なエディタがあります。こういった中から、予算や、自分の好みで選ぶと良いでしょう。
最低限のポイントとしては、オートインデントなど、アセンブラや、各種言語のソースファイルの作成向きの機能を持っているかと言う事と、テキストファイルの終わりに、EOF(キャラクタコード1AH)をつける機能を持っているかと言う事です。
この程度だと、CPUはMS-DOS上のエディタを使う限りでは、286程度でも大丈夫でしょう。

Level 2 クロスアセンブラ・コンパイラを使おう

ソースファイルを書いたら、次はアセンブル・コンパイルをする事が使い道として挙げられます。ここで、気を付けるのは、アセンブラ・コンパイラの機能、使い勝手、動作速度といったものが挙げられます。
まずは、何の細工もなく、MS-DOS上で動くアセンブラについて私の知っている物を幾つかあげます。

ZASM 以前はPACKシリーズにも収録されたこともある、MS-DOS版の他に、MSX-DOSでも動くCP/M版もあるアブソリュートアセンブラです。出力ファイルが、Intel HEX ファイルとMSX-DOSのCOMファイルのみなので、MSX-BASIC環境で動くソフトを組む際はIntel HEX ファイルをMSX-BASICのBSAVEファイルに変換するソフト(MSX-DOS TOOLSのBSAVE.COMに相当)が必要となります。

XA80 こちらは、MS-DOS用のCコンパイラとして有名なLSI-C試食版を使って組まれた物で、MSX-DOSのCOMファイルの他、MSX-BASICのBSAVEファイルも出力できるという、まさに、MSXのクロス開発の為に組まれたといっても過言はないアブソリュートアセンブラです。

わざわざ、MSX以外で組むからには、処理速度が早くなくてはならないので、CPUはクロック周波数の高い286や386クラス以上のCPUがいるでしょう。

Level 3 自分の好きな環境で組みたい!

今度は、使用するソフトの選択肢を広げる方法について、話しましょう。MSX-DOSは元々は、Z80用マシンのOS、CP/Mをベースに組まれた物なので、CP/M用の開発ツールが使えたりします。それだけなら、MSXで開発すれば良いのでは?と思う方も居りますでしょうが、ある事をすると、MS-DOS上で、CP/M用の開発ツールが使えてしまうのです。そう、CP/Mエミュレータを使って、CP/M用の開発ツールを無理矢理動かしてしまうのです。こうすると、使用できるソフトが増えるだけでなく、CPU、HDD等の環境によっては、MSXで開発するよりも快適にCP/M用の開発ツールが使えてしまうのです。
これは、高速なCPUあっての技、エミュレーションにCPUパワーを割いて、それでも速いとなると486以上のCPUが必要となるでしょう。

まず、CP/Mエミュレータには何が有るか?という話ですが、私が知っている物を2つ挙げておきます。
CP/M program EXEcuter CPM.EXE PACKシリーズにも収録されているCP/Mエミュレータです。

CP/M−Z80 エミュレータ "Z_EM" こちらも、CP/Mエミュレータで、私の感触では、CPM.EXEより互換性・速度共に上だと思います。また、HI-TECH Cがエミュレーションで動きます。

さて、この上で、何が動くかということも大切です。そこで、CP/Mエミュレータで動作するアセンブラとCコンパイラを1つずつ挙げます。

MSX-DOS TOOLS(DOS2 TOOLSでは無い!)のM80とL80

M80,L80は元々、CP/M上で定評のあったアセンブラをMSX上に持っていったもので、CP/M用からMSX-DOS1用にした時は、著作権を示す文字列が変更になった位で、プログラムが大きく変わった訳ではないので、CP/Mエミュレータで動作します。更に言うなら、何を使うにしても言えるのですが、MSX-DOS環境よりTPAが大きく取れるので、大きなソフトの開発にも有利です。(L80はすべての作業をオンメモリで行なう為)
拙作のソフトでは、「ザ・MSX祭」のハイスコアアタック大会で使用されたシューティングゲーム「The ATTACKERS '96」をこの方法で製作しました。

HI-TECH C

ANSI規格互換の強力で、本格的なCコンパイラです。MSX用への改良パッチはPierre Gielen氏によって製作され、現在では、Internetやパソコン通信で出まわっています。CP/Mエミュレータで動かす際は、パッチがいらないと言う利点があります。
拙作のソフトでは、NVマガジン1996年11月号で発表した「Numbers Paint」やNVマガジン1997年10月号で発表した「EIGHT OFF」をこの方法で、開発しました。

他にも、パソコン通信上で出まわっているSmall-CやZASMのセルフ版等、色々なCP/M用の開発ツールが動くので、パソコン通信やInternetを漁って見るのも良いでしょう。その場合、MSX関連のライブラリだけではなく、CP/M汎用のライブラリや、場合によっては、同じZ80 CPUを使うPC-88等のライブラリまで探して見ると良いでしょう。

更に、MSX-DOS Emulatorを利用するとMSX-DOS1で動作するソフトを利用する事もできます。速度としては、CP/M program EXEcuter CPM.EXEよりは落ちますが、それでも、MSXエミュレータと比べるとかなり高速に動作します。
MSX-DOS Emulatorは基本的にMSX-DOS1をエミュレートする物なので、MSX-DOS1で動作する開発ツールを使う事ができます。これにより、MSX-C V1.1等の開発ツールを利用する事ができます。

Level 4 MSXを立ちあげるのさえも面倒くさい!

プログラムができたら、動作テストを行いますが、そのために、一々MSXを立ちあげるのも面倒なあなたには、MSXエミュレータをお勧めしましょう。これを使う事で、製作から、デバッグまで、1つのマシンで行なう事ができます。
有名所としては、数多くの作者によって、製作・各機種への移植・機能拡張が行われてきたfMSXシリーズが挙げられます。
こうなると、CPUのみならず、MSXのハード全てをエミュレーションする事になるので、実用的に使うには、CPUは486DX4以上のマシンが必要となってくるでしょう。

最後に

さて、ここまで、クロス開発に必要な物を挙げてきましたが皆様はどうお考えでしょうか?もし、他機種を持っていて、その上で動くZ80クロスアセンブラなどがあったら、クロス開発に挑戦してみましょう。使い勝手や、速度など、言っちゃ悪いかもしれませんが、MSXとは違う快適さを味わえると思います。但し、魂は捨てちゃいけません。それに、クロス開発と言うと、昔はプロがやる物だったので、何かかっこいいと言う満足が得られると思います。

これらのソフトは、パソコン通信や、Internetを漁れば、色々と見つかるようです。特に、InternetのFTPサイトの中には著作権的にヤバそうな物まで、置いてある所があったりします。また、技術資料に関しても、英文でしたら、fMSXの作者、Marat氏のホームページにI/Oポートの情報やら、BIOS、ワークエリアの情報、BASICの中間言語のコード表など、色々な物があります。また、URLは忘れましたが、オランダのFTPサイトにも技術情報の資料が色々とあるようです。日本語では、各人のホームページや、MSXメーリングリストの過去の書込みなどに技術情報が色々とあるので、探してみると良いでしょう。

それでは、クロス開発で、開発時間を短くして、余った時間を作品の質の向上に回し、素晴らしい作品を作りましょう。

それでは、よきMSXライフを。(終)


御意見、御感想、御希望等ありましたら何でもE-Mailでどうぞ

This page is presented by Tatsuhiko Syoji(rxk16664@nifty.ne.jp)

Tatsu's MSX Researchesにもどる