トップページ H8 開発環境

開発環境
 はっきり言ってしまうと、昔のMS-DOSで開発していた時代に逆戻りです。Visual C++などの統合環境からスタートした方はあまりの不便さに当惑するかもしれません。(^_^;)
 コマンドプロンプト(まるで昔のMSーDOSの世界ですね)でキャラクユーザータインターフェースによりキーボードを叩いて作業をします。

 まずはフォルダーの作成します。
フォルダーは任意の名前でかまいません。
C:\akic
とします。
このフォルダーにCコンパイラ、アセンブラ、リンカーなどファイルをコピーします。

次にパスをセットして、Cコンパイラなどがどこのフォルダーからも使えるようにPATHを設定します。PATHの設定はつぎのようになります。
set path=%PATH%;c:\h8\akic;
これをコマンドプロンプトを起動した後に、キーボードから打ち込めばいいのですが面倒です。そこでこの内容をバッチファイルに記述して少ないキー入力ですませます。
当ホームページに公開しているサンプルプログラムにpt.batがあります。
pt
とキー入力すればパスの設定がされます。

次はプログラムの作成についてです。
いちいちCコンパイラやアセンブラのキーインをするには面倒です。本当はmakeのようなものかあれば便利なのですが、前年ながらないようです。そこでバッチファイルを作成します。当ホームページに公開しているサンプルプログラムに収録してあるバッチファイルはcc.batです。内容は、

cc38h -cpu=300ha -include=c:\h8\akic MyOS.c
a38h start.asm
l38h -subcommand=MyH8.sub
c38h MyH8

cc38h -cpu=300ha -include=c:\h8\akic MyOS.c
CコンパイラでMyOS.cをコンパイルします。 -include=c:\h8\akicはインクルードファイル(拡張子が*.h)がどこにあるかをコンパイラに教えます。

a38h start.asm
アセンブラでアセンブルします。

l38h -subcommand=MyH8.sub
リンカーでコンパイラ、アセンブラで作成されたOBJファイルを結合して実行できる機械語にします。-subcommand=MyH8.subはリンクするファイルやどこのアドレスから始めるのかを指定します。MyH8.suの内容は、

OUTPUT MyH8
PRINT MyH8
INPUT start,MyOS
LIB c:\h8\akic\c38hab
START R(0FFDF10),P(200)
ROM (D,R)
EXIT

OUTPUT MyH8
PRINT MyH8
は完成したプログラムの名称を書きます。何でもかまいません。
NPUT start,MyOS
は必要なOBJファイルです。

LIB c:\h8\akic\c38hab
はライブラリーの指定です。

秋月のキット付属のサンプルプログラムでは
START R(0FFEF10),P(200),D(8000),C(9000)
となっています。どういうことなのか調べてみました。

C(9000)
Cで
static const int g_nVal = 0;
と定義したデータが指定ROMアドレスから配置される。
C(9000)を定義すると、
static const int ????がないエラーになる。
Cでプログラムを書くのに、データを特定アドレスに
指定する必要はないので不要である。

D(8000)はアセンブラで配置するアドレスの指定。
アセンブラで
.SECTION D,DATA
と指定する。Linkは問題ないが,
ROM (D,R)
でDを指定しないとROMデータができない。
とりあえず不要と思われるがつけておく。

R(0FFEF10)はRAMの先頭アドレスを指定。
.SECTION D,DATA
などの記述とは関係ない。

P(200)はコードの先頭アドレス指定。
.SECTION P,CODE,ALIGN=2
と記述する。これをしないとRAM領域に配置されてしまう。

最終的に
START R(0FFDF10),P(200)
としました。

ROM (D,R)
はリンカーが作成した機械語を、3052のフラッシュROMへRS-232Cで転送するためのテキストファイルを作成します。拡張子MOTファイルが作成されます。