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

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

[第18回]

●Z80アセンブラ

Z80アセンブラはND80ZVの附属ソフトウェアにも含まれています。
私が作ったオリジナルのアセンブラです。
ダウンロードしたCP/M2.2のソースプログラムをこれでアセンブルできればよいのですが、ソースプログラムをながめてみましたところ、ちょっと難しいことがわかりました。
私が作ったアセンブラは、もともと自分で使うために作ったものなので、一般的なアセンブラよりも機能をしぼっているところがあって、CP/M2.2ソースプログラムをかなり手直ししなければなりません。

そうするより仕方がないということになりましたら、覚悟を決めて、アセンブラを直すか、ソースプログラムを直すか、いずれか2つに1つということになります。
しかし、念の為に、ということでネットを検索してみましたら、有り難いことにフリーのZ80アセンブラをみつけてしまいました。
Z80アセンブラ ZASM1.64 です。
試しにダウンロードして使って見ましたら、これがなかなかの優れもので、ちょうどCP/M2.2ソースをアセンブルするのにぴったりの機能でありました。

そんなわけで、有り難くCP/M2.2ソースプログラムをアセンブルするのに使わせていただくことにいたしました。
フリーのZ80アセンブラ ZASM1.64 は、下のサイトからダウンロードしてくださいませ。
Vectorのサイト(http://www.vector.co.jp/soft/dl/dos/prog/se010314.html)です。

「今すぐダウンロード」をクリックして、適当なフォルダ(またはデスクトップ)にダウンロードしてください。
ダウンロードした圧縮ファイル(zasm164m.lzh)を解凍すると、zasm164mフォルダが作られます。

zasm164mフォルダにはzasm本体(zasm.exe)のほかに、パラメータの使い方などのドキュメントがあります。
zasm.docに使い方の説明があります。
オプションパラメータについても説明がありますが、CP/M2.2ソースファイルのアセンブルには、ほんの少しのパラメータを使うだけで十分ですから、2〜3回やってみれば、すぐに要領がわかると思います。

zasm.exeの特筆すべき点は、実に高速だという点です。
「ソースファイルが64KB以下なら1パスで高速にアセンブルできます」と書いてありますが、CP/M2.2のソースファイルは64KB以上(98KB)ですけれど、一瞬でアセンブルしてしまいました。
実に速いです。

それでは、さっさくCP/M2.2ソースファイルをアセンブルして見ましょう。
その前に少し準備をしておきましょう。

●zasm164mフォルダをCドライブ直下に置く

ダウンロードし、解凍してできたzasm164mフォルダがデスクトップまたはダウンロードフォルダなどにある場合には、Cドライブの直下に移動してください。
zasm.exeはMS−DOSプログラムです。
MSDOSプロンプト(コマンドプロンプト)で使いますから、Cドライブのすぐ下に置いたほうが使いやすくなります。
以下はzasm164mフォルダがCドライブ直下にある(C:¥zasm164m)ものとして説明をします。

●コマンドプロンプトの準備

コマンドプロンプトがすぐに使えるように準備をします。
以下はWindowsXP、Windows7の場合です。

「スタート」→「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」の順にマウスで選択し、「コマンドプロンプト」を右クリックします。
メニューが開くのでその中の「コピー」をクリックします。
次にデスクトップ(起動後のショートカットアイコンが並んでいる画面)のアイコンが無い地の部分にマウスを持っていって、そこで右クリックします。ここでもメニューが開くので「貼り付け」をクリックします。
デスクトップに「コマンドプロンプト」のアイコンができたことを確認してください。

デスクトップにできたコマンドプロンプトのアイコンを右クリックします。
メニューの中の「プロパティ」をクリックします。
「コマンドプロンプトのプロパティ」の「ショートカット」タブをクリックします。
「作業フォルダ」を書き換えます。
初期状態では「%HOMEDRIVE%%HOMEPATH%」になっているはずです。ここを「%HOMEDRIVE%\zasm164m」に書き換えてください(かならず半角で入れてください。半角なら大文字でも小文字でもよいのですが、全角では正しく実行されません)。

最後に「OK」をクリックします。

コマンドプロンプトアイコンの下に表示されている名前も変更しておきます。さきほどと同じようにコマンドプロンプトアイコンを右クリックしてメニューを開き、「名前の変更」をクリックします。名前(コマンドプロンプト)が白抜き文字で表示されるので、てきとうな名前に変更します。「zasm164m」でよいでしょう(ここは全角でも漢字でも構いません)。

●CP/M2.2ソースファイルをzasm164mフォルダにコピーする

CP/M2.2ソースファイル(cpm22.z80)をzasm164mフォルダにコピーしてください。

これで準備は完了です。
いよいよ、アセンブル開始です。

●zasm.exeを実行する

デスクトップ上のコマンドプロンプトアイコン(zasm164m)をダブルクリックして、コマンドプロンプトを開き、zasm cpm22.z80と入力してください。



最後に[Enter]を入力すると…。
こんな表示になってしまいます。



どうやらエラーになってしまったようです。
この画面ではちょっと見にくいので、ファイルに出力したものを下に示します。

/// ZASM /// Z-80 Assembler, MS-DOS version 1.64
Copyright (C) 1988-1994 by K.KAWABATA (Bunbun)

** Pass 1 **  Symbol table size  2000 Symbols
cpm22.z80 1267: Fatal :-Undefined Symbol     :  CP      NFUNCTS         ;valid function number?
** Pass 2 **
cpm22.z80  367: Fatal :-Undefined Symbol     :  JP      NZ,HALT         ;jump to halt routine.
cpm22.z80  674:Warning:-Too many operand     :HALT:     LD      HL,76F3H        ;'DI HLT' instructions.
cpm22.z80 3739:Warning:-No END statement     

  2 warning(s),   2 error(s) in assembly.


むむ。
Fatal Errorが出ています。

さて。
あなたなら、どうします?

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

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