2012.2.14
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第34回]

●CP/Mソースプログラムのアセンブル

やっとCP/Mソースプログラムの修正作業が完了しましたから、いよいよアセンブル作業に進みます。
アセンブル作業は[第18回]で紹介いたしましたフリーのZ80アセンブラZASM1.64を使って行ないます。
使い方についても[第18回]でざっと説明をいたしました。
特に初期設定などは必要ありません。
[第18回]で説明しましたように、コマンドプロンプトを準備して、デスクトップ上にzasm164mアイコンができていれば、それをクリックしてコマンドプロンプトを開けば、あとはZASMコマンドを入力するだけです。

[第18回]では、zasm cpm22.z80 とだけ入力しましたが、そのように何もパラメータをつけないでソースファイル名だけを指定すると、アセンブルの結果作成されるマシン語のファイルは拡張子HEXのファイルになります。
これはインテルヘキサ方式のファイルでシリアル通信などでは送信するのに便利な形式のファイルです。
CP/Mでもテープリーダーなどからファイルを入力することなどが多かったために、この形式のファイルから読み込むことがスタンダードだったようです。

しかし、ND80ZVのためのCP/MシステムはベースにZB3BASICがあって、パソコンとUSBで接続して、コマンドプロンプト画面からコマンドを入力することで、バイナリファイルを直接ND80ZVに送ることができます。
ですからZASMコマントの実行によって作られるファイルはヘキサファイルではなくて、バイナリファイルになるように指定したいと思います。

バイナリファイルを出力するには、−Cパラメータ(Cは半角大文字)をつけて実行します。

zasm −C cpm22d.txt[Enter]

のようにします。
ファイル名は最終的に修正を完了して作成したcpm22d.txtを指定します。
全て半角で入力します。
ところがこれではちょっと都合がわるいところが出てきます。
上のように−Cパラメータをつけて実行すると、アセンブル後にできたマシン語のファイル名はcpm22.comのように、拡張子comがつけられます。

それを確かめるためにZASMの実行後に、DIRコマンドでファイル名を表示させてみました。



dir cpm22d.*[Enter]と入力すると、cpm22dという名前のファイルが全て表示されます。
CPM22D.HEXとCPM22D.COMが作成されたことがわかります。

COMファイルはもともとCP/Mでのマシン語実行ファイルにつけられた拡張子なので、CP/M用のプログラムとしては、それでよいわけなのですが…。

実はコマンドプロンプトで実行するMSDOSアプリケーションも拡張子comがついたCOMファイルなのです。
こちら(MSDOSアプリケーション)はZ80のマシン語ではなくて8086のマシン語です。
コマンドプロンプトでZASMを実行した結果、8086用ではなくてZ80用のCOMファイルがそこにできてしまう、というのは考え物です。
よほどきっちり整理して管理しないと、Z80アプリケーションなのかMSDOSアプリケーションなのか、ファイル名からだけでは区別できなくなってしまいます。

ちなみに、上のようにZASMを実行したあとのzasm164mフォルダをエクスプローラで開いてみるとこのように表示されます。



一番上に表示されているCPM22DがCPM22D.COMです(Windows7ではCOMファイルやTXTファイルの拡張子は表示されません)。
種類のところを見ると、「MS−DOSアプリケーション」と表示されています。
実際はZ80のマシン語ファイルですから、MS−DOSアプリケーションではありませんが、拡張子COMのファイルはWindowsではこのようにMS−DOSアプリケーションとして認識されてしまいます。
これではいかにも都合が悪いでしょう。

ND80ZVのZB3BASICではBASICのプログラムファイルはTXTファイルで、マシン語のファイルはバイナリファイル(拡張子bin)として扱います。
ですから、ZASMの実行の結果作成されるマシン語のファイルもCOMではなくてBINファイルにしておくことをおすすめします。
そのようにするには、−Cに続けて出力ファイル名を記述します。

ZASM −Ccpm22d.bin cpm22d.txt[Enter]

このとき−Cと出力ファイル名は空白を空けないで、続けて入力することに注意してください。



Windows7でzasmコマンドを実行すると、上の画面のように、それ以前に表示されていた日本語表示がすべて?に置きかえられてしまって、ぎょっとします。
この現象については、パソコンをつくろう![第15回]同[第17回]で書いております。
まあ、これはどーしようもないMicrosoftさまの手抜きのようでありまして、文字化けする以外の実害はありませんから、気にしないことにしましょう。

ここでも dir cpm22d.*[Enter]を実行してみますと、下の画面のように表示されます。



CPM22D.BINが作成されています。
このCPM22D.BINをND80ZVにロードして実行すればCP/Mが起動することになります。

ところで、ZASMコマンドに、もうひとつパラメータを加えて実行することをお勧めします。
それは−Lパラメータです。

今まで説明したZASMコマンドの使い方で、必要なバイナリファイルまで作成できますが、アセンブルリストは作成されません。
マシン語プログラムの場合、ソースプログラムリストだけ眺めてみても、なかなかわかりにくいものです。
アドレスとマシン語コードが表示されているとプログラムの流れを見たり、デバッグをするのに役立ちます。

−Lパラメータをつけると、アドレス、マシン語コードのついたアセンブルリストファイルが作成されます。
下のように使います。

zasm −L −Ccpm22d.bin cpm22d.txt[Enter]

そのように実行したあとで、dir cpm22d.*[Enter]を入力してみました。



CPM22D.PRNが−Lパラメータを追加したことで作成された、アセンブルリストです。
CPM22D.PRNをメモ帳で開いてみました。




ワンボードマイコンでCP/Mを![第34回]
2012.2.14upload

前へ
次へ
ホームページトップへ戻る