さて、何事にも準備は必要です。
WindowsでMSX用のROMファイルを作成する ということを目的として、必要な環境をそろえましょう。
(以降、すべて Windows7/Windows10 で動作確認しているので、それ以外のOSでは違う動作をするかもしれません。ご了承ください)
まず、作業用のフォルダを、Windowsからアクセスできるどこかに作成してください。
ここでは MSXPRG という名前の作業フォルダを作って、これからの作業はすべてそのフォルダの中で行うことにします。
次に「アセンブラ」という、プログラムをマシン語に変換してくれるツールを用意します。
アセンブラには色々な種類があり、それぞれ機能や特色が違いますが、なるべく一般的な書式で説明するつもりなので、Windows上で動く「Z80アセンブラ」であれば何でも良いです。
初めて使うのであれば、紅茶羊羹さん 作成の z80as などはオススメです。
We Love MZ-700(z80asはこちらにあります)
http://www.maroon.dti.ne.jp/youkan/mz700/index.html
その他のツール のところにある Z80ASをダウンロード・展開して、その中にある z80as.exe というファイルを、先ほど作成した作業フォルダに保存してください。
最後に、プログラムの書かれたテキストファイル を作成しましょう。
…といっても、プログラムはこれから書くので、空のファイルで構いません。
とりあえず、作業フォルダの中に、エクスプローラー右クリック→新規作成→テキストドキュメントで msxtest.txt というファイルを作成してください。
開発のための環境整備はこれで終わりです。
環境も整ったことですし、すぐにでもROMを作成して遊んでみたいところですが、もう少しだけ我慢してください。
ここで、コマンドプロンプト の説明をします。知っている人は読み飛ばして構いません。
皆さんが普段使っている Windows のアプリケーションは、「エクスプローラーから実行ファイルをダブルクリック」で起動するものが多いと思います。
しかし、先ほどダウンロードしてきたアセンブラ z80as.exe は、エクスプローラー上でダブルクリックしても、一瞬黒いウィンドウのようなものが出るだけで、特に何が起こるわけでもありません。
z80as.exe は、「コマンドプロンプト」 と呼ばれる 黒い背景に文字だけが表示されるウィンドウの中で動作します。
コマンドプロンプトを簡単に開くには、エクスプローラーで先ほどの作業フォルダを開き、フォルダ名が入っているところに cmd と入力して Enter を押してください。
ここに cmd と入力してEnterを押すと…
画面のどこかにこのようなウィンドウが開きます。これが コマンドプロンプト です。
アセンブル作業は、このウィンドウの中で、キーボードからコマンドを直接入力することで行います。
…といっても、決して難しいことはないので、安心してください。
コマンドプロンプトの中でアプリケーションを実行させるのは簡単です。例えば、z80as.exe を実行するには、
z80as
と入力して Enter を押してみてください。
ずらずらっと謎のメッセージが表示されたでしょうか。
本来であれば、z80as の後に「アセンブルするファイル名」などの記述が必要なのですが、今回は何も指定せずに実行したので、ヘルプが表示されました。
このように、アセンブラの実行はコマンドプロンプトの中で行い、メッセージもコマンドプロンプトに表示される と覚えておいてください。
(もちろん、すべてがそういうわけではなく、普通のWindowsアプリのようにウィンドウが開くアセンブラも存在します)
では、いよいよMSXで実際に動かすことができるROMの作成です。
空のファイルだった msxtest.txt を以下のように編集し、保存してください。
ORG 04000H ; 先頭アドレス(メモリの位置)の指定。ROM版のソフトは(基本的に)4000H から置くことになっているので、必ずこの行を書くこと。 DB 041H,042H ; 最初の2バイトに 41H,42H (文字列に直すと"AB") が書かれているとMSXはROMカートリッジと判断する。これも必須。 DW START ; 次の2バイトにプログラムのスタートアドレスを書く。起動時にこのアドレスに自動的にジャンプする。 DB 0,0,0,0 ; DB 0,0,0,0 ; DB 0,0,0,0 ; 12バイト(400FHまで)を0で埋めるというのがお約束。 START: ; 実際のプログラムはここからスタートする。 JP $ ; アセンブラで $マークは「この行自身のアドレス」を表す。JP はジャンプ命令。つまり無限ループ。 DS 08000H-$ ; ファイルサイズがちょうど16KBになるように、最後に (8000H - この行のアドレス)バイト のスペースを追加。これがないとエミュによっては動かないものも。 END ; 多くのアセンブラは最後にENDと記述する必要がある。この行以降は何を書いても無視される。
ここで使われている謎の言葉が ニーモニック と呼ばれるものです。
ここまで入力し、保存できたら、いよいよ初めてのアセンブルを行ってみましょう。
z80as msxtest.txt -o msxtest.rom
エラーがなければ、msxtest.rom という 16KBのファイルが作成されているはずです。
これがMSX用のROMファイルとなります。
エミュレーターに読み込ませれば動作しますし、このファイルを実際にROMに焼けばMSX実機で動作させることもできます。
どうでしょうか。ROM用のプログラム、意外と簡単に作れると思いませんか?私は思います!
せっかくROMファイルができたので、実際に動作させてみましょう。
動作確認には、WebMSX という、ブラウザ上で動くエミュレータを使います。
これならインストールもいらないですし、誰でも今すぐに実行することができるので、とても便利です。
起動するには下のリンクをクリックしてみてください。
WebMSX
http://webmsx.org/
WebMSXが起動したら、できたばかりの msxtest.rom をブラウザにドラッグ&ドロップして、Cartridge 1 にセットしてください。
さて、どうでしょうか…
青い画面で停止してしまいましたか?
それなら成功です!おめでとうございます!
先ほどのプログラムは、「ROMが起動したらその状態で停止する」というプログラムなので、それが正しい動作となります。
さて、ここまでで MSX用のROMファイルの作り方のチュートリアルは終わりです。
MSXのことを何も知らなかったり、プログラムを全くやったことがない人でもわかるように、なるべく丁寧に書いたつもりですが、いかがだったでしょうか?
もし、わからないことがあれば、ぜひ twitter でコメントいただければと思います。
次の章からは、MSXを制御する方法について、少しずつ書いていきたいと思います。
のように指定します。ORG 04000H
DB 041H,042H DW 04010H ; スタートアドレス。4010Hからプログラムをスタートさせる DB 0,0,0,0 DB 0,0,0,0 DB 0,0,0,0
と書けばOKです。DS 08000H-$