スパイス  組み込み制御装置の受注製作

Hitech-Cコンパイラを組み込み用に移植する
平成26年4月15日

動作環境の準備
 まず、Cコンパイラの動作環境を準備します。このCコンパイラはCP/M用ですのでCP/Mの動作環境が必要です。DOS環境でCP/Mを動作させるプログラムは幾つかあるようですが、村上 敬司氏が作成したCP/M program EXEcutor CPM.EXEを使用します。今回のようにCP/M用のコンパイラを使用する用途では非常に便利で使い勝手の良いプログラムです。また、CPM.EXE for Win32 で HI-TECH C を使うに、このコンパイラを使う上での細かな注意点が説明されています。非常に参考になります。CPM.EXEの使い方は上記のHPを参考にしてください。ここでは細かな説明は省略します。
 コンパイラおよびCPM.EXEのインストール
 上記のリンクCPM.EXE for Win32 で HI-TECH C を使うからHitech Cをダウンロードします。必要なファイルはZ80V309.EXEとZ80DOC.EXEの二つです。これらは自己解凍型のプログラムですが、16ビットコードでコンパイルされているらしく64ビットWindowsでは実行できません。32ビットWondowsで実行します。

 動作環境を説明するためにディレクトリを下記のように作成します。
C:\bin\DOS_CMD   DOS用のコマンドを集めます
C:\bin\Hitech     Z80V309.EXEをここで解凍します。コンパイラおよびヘッダファイルが入ります。C:\bin\doc       Z80DOC.EXEここで解凍します。全て英語の説明書です。
 次にCPM.EXEをインストールします。CP/M program EXEcutor CPM.EXEからcpm32_04.zipをダウンロードして解凍します。必要なファイルはcpm.exeのみですが(他のファイルを含めてもかまいませんので)、これをC:\bin\DOS_CMDにコピーします。

 環境変数の設定
  DOS窓でコマンド入力を省略するために環境変数を設定します。C:\binディレクトリにsetenv.batという名前で下記を記述します。
setenv.batのリスト

set path=c:\bin\DOS_CMD
set CPMPATH=C:\bin\cpm\Hitech
set CPME=C:\cpm-test\inc (平成26年4月17日変更)

 ここで最後のCPMEという環境変数はCPMのドライブ(この場合はEドライブ)にC:\cpm-test\incディレクトリを割り当てるための宣言です。ユーザー定義のインクルードファイルの置き場所を宣言しておきます。(平成26年4月17日変更)

 MAKEのインストール
  MAKEは基本的には何でもいいのですが、入手し易いGNU MAKEを使います。ここからダウンロードできます。日本語の説明書もあります。デフォルトでインストールするとC:\Program Files\GnuWin32\binに3個のファイルが出来ていますので、これらをC:\bin\DOS_CMDにコピーします。コピーが終わると元のGNU MAKEはアンインストールしてもかまいません。

 $EXEC.COMにパッチを当てる
  MAKEを使用するのにHitech C標準の仕様ではコンパイルエラーを検出できないようで、この変更が必要です。CPM.EXE for Win32 で HI-TECH C を使うにも説明がありますが、私のところではZSIDというプログラムが無いのでHPの説明どおりに作業ができず、バイナリーエディタを使って修正しました。バイナリーエディタは狐's バイナリエディタ for Win95/NTを使わせてもらいました。このバイナリーエディタはインストール作業が要らないので非常に便利です。


上の図はバイナリーエディタで$EXEC.COMを開いたところです。初期設定では画面最下部中央付近に表示があるように変更禁止・上書きモードになっています。変更可能にするためには編集メニューから編集禁止を選択します。変更するアドレスは1BBhバイト目からではなく、0BBhから3バイトを00hに変更します。CPMには詳しくないので細かなことは分からないのですが、ファイル上でのアドレスとメモリ上でのアドレスはズレているようです。

 CPM環境での動作確認
  CPM環境でコンパイルしてみます。最初のプログラムは当然、”Hello world”です。
 hello.cのリスト

#include <stdio.h>
void main(void)
{
printf("hello world\n");
}

コンパイルの指定は下記になります。
cpm -h c hello.c
 実行結果は下記になります。まず、DOSコマンドにパスを通すためにsetenv.batを実行します(上記の説明とはディレクトリ名が少し違っていますので良心的に読み替えてください)。
次にhello.cをコンパイルし、次の”cpm hello”ではコンパイルされたhello.comを実行しています。期待通りに”hello world”と表示されました。


 以上でCPM環境で正しくコンパイルできることが確認できました.

タイトル先頭へ 前へ 次へ タイトル末尾へ