AKI-H8/3048のCクロスコンパイラ環境でのプログラミング
簡単コマンド利用版

Copyright(C)22Jan2004
Copyright(C) 5June2002
coskx TNCT


1.はじめに
この文書は,Windows2000パソコンにAKI-H8/3048のC言語クロスコンパイル環境での,コンパイル作業のための方法を記述しています。あらかじめ指導者あるいはパソコン管理者が構築したC言語クロスコンパイラ環境で,C言語によるH8プログラミングを学ぼうとする方がプログラミングを行ない,AKI-H8/3048でプログラムが動作するまでを解説します。C言語のプログラミングについては別の文書で学んでください。

テンプレートフォルダのダウンロード

DownLoad

本文書で記述してある作業の特徴
Cプログラムソースファイルが出来上がったら,ドラッグアンドドロップを1回行なうだけです。他に何もすることはありません。簡単コマンドを用いるので,作業が効率的です。

前提
(1)秋月から購入したCコンパイラ関係ファイルおよびインクルードファイル,ライブラリファイルはすべて「C:\Program Files\h8\C」に入っているものとします。
(2)転送ソフト「n-h8w.exe」を利用します。これも「C:\Program Files\h8\C」に入っているものとします。

h8w.exeはシェアウェアですが10kバイトまではライセンスキー不要で書き込める転送ソフトです。
h8w.exeは,ライセンス登録作業を行なうと,標準でn-h8w.exeに名前が変わり,10kバイトの制限が外れます。この文書では名前が変わった場合の記述をしておりますが,ライセンス取得前の「h8w.exe」でも作業することが出来ます。その場合はh8ccBasic.cmd中の次の個所を変更してください。
変更前 rem フラッシュメモリ書き込みに使用するプログラムを指定します。
 set downloader=n-h8w.exe
変更後 rem フラッシュメモリ書き込みに使用するプログラムを指定します。
 set downloader=h8w.exe
なお,この書き込みソフトは(本校)情報工学科の前任助教授の前田先生が作成したものです。前田先生には大変お世話になっております。前田先生は別の名前をつけて使うように勧めていますが,作者に敬意をはらいまして,あえて標準のままにしておきした。
「h8w.exe」の取得はhttp://www.vector.co.jp/soft/win95/prog/se232247.htmlになります。

注意
この文書で扱っているh8cc.cmdはWindows2000,WindowsXP,WindowsVista,Windows7で使用可能です。
残念ながらWindows95/98では動作しません。

2.プログラムの作成から実行まで
シングルボードマイコンAKI-H8/3048内で動作するプログラムはパソコン上で開発され、シングルボードマイコンAKI-H8/3048にフラッシュメモリ書き込みされます。パソコンで開発されるソースプログラムはC言語で記述され、クロスコンパイラにより、オブジェクトプログラムに変換され、最後はフラッシュメモリ書き込み形式(XXXX.MOT)になります。
シングルボードマイコンAKI-H8/3048を動作させるまでの大きな流れは以下のようになります。
(1)パソコン上で作業用のフォルダの用意
(2)パソコン上でCソースプログラムの作成
(3) パソコン上でダウンロード形式ファイル(実行プログラム)の作成(クロスコンパイル、コード変換)
(4)パソコン上の転送ソフトによる,ダウンロード形式ファイル(実行プログラム)のAKI-H8/3048への書き込み操作
これら四つの作業によりシングルボードマイコン内で動作させることが出来ます。

3.テンプレートフォルダの実行
(1)図3.1に示すテンプレートフォルダでの実行の様子を確かめてみよう。テンプレートフォルダのダウンロードは ここ です。


図3.1 小坂のテンプレートフォルダ

(2)テンプレートフォルダがダウンロードできたら,解凍し,「xxxxxx.c」の内容をエディタで確かめてみてください。
プログラムは,AKI-H8/3048マザーボード上のLEDを点滅させるものです。プログラムの内容には深入りしないことにしましょう。

リスト プログラムソースファイル"xxxxxx.c"

/*  マザーボード上のLEDの1秒ごとのON-OFFを行う  */

#include <3048f.h>
void msecwait(int msec)
/*msec間なにもしない時間稼ぎ関数*/
{
    int i,j;
    for (i=0;i<msec;i++) {
        for (j=0;j<1588;j++);    /*1588は実測によって求めた値*/
    }
}
main()
{
    /*P5の下位2ビットを出力に設定*/
    /* P5のDDRの下位2ビットに1を与えるとこの設定になる*/
    /*DDRとはDataDirectionRegister(データ方向設定レジスタ)*/
    P5.DDR =  0x3;     /*0x3 = 00000011(二進数)*/
    while(1) {/*これは無限ループ*/
        /*LED0をONにする  P5のDRの第0ビットを1にする*/
        /*DRとはDataRegister(データレジスタ)*/
        P5.DR.BIT.B0=1;
        /*LED1をOFFにする  P5のDRの第1ビットを0にする*/
        P5.DR.BIT.B1=0;
        msecwait(1000);/*1000msecの間なにもしない*/
        /*LED0をOFFにする  P5のDRの第0ビットを0にする*/
        P5.DR.BIT.B0=0;
        /*LED1をONにする  P5のDRの第1ビットを1にする*/
        P5.DR.BIT.B1=1;
        msecwait(1000);
    }
}


(3)この後の作業は次のようになります。
ただし,図3.1のテンプレートフォルダは「デスクトップ」あるいは「マイドキュメント」の中にあるとします。

表3.1 フラッシュメモリ書き込み形式ファイルの作成とROMライター書き込み操作から実行までの手順

 

パソコン側

マイコンH8側
注意:H8は,電源スイッチONの瞬間に,状態選択スイッチの状態を検査しますので,必ず<1><2><3>の手順が必要です

(1)   <1>AKI-H8/3048のマザーボード上の電源スイッチをOFFにします。
<2>AKI-H8/3048のマザーボード上の状態選択スイッチをライト(Write)モードにします。ライトモードとはマイコンH8/3048がパソコンからプログラムコードを受け取り,フラッシュメモリに書き込むモードのことです。
<3>AKI-H8/3048のマザーボード上の電源スイッチをONにします。
(2)

ソースファイル(xxxxxx.c)のアイコンを「h8ccBasic.cmd」のアイコン上にドラッグアンドドロップします。
「コンパイル」—「リンク」—「コンバート」が行なわれた後に,H8のフラッシュメモリへ,実行プログラムの書き込みが行なわれます。

コンパイルの時の画面例(Windows2000)

****  h8ccBasic.cmd  ****
Assemble, Compile, link and convert command for H8 C-programing ver1.01
Copyright(c) 30Aug2002 coskx
xxxxxx.c :

H8/300H C COMPILER(Evaluation software) Ver.1.0
H8/300H ASSEMBLER (Evaluation software) Ver.1.0
  *****TOTAL ERRORS       0
  *****TOTAL WARNINGS     0
H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0

: ROM (D,X)
: START P,C,D(100),X,B(0FEF10)
: EXIT

LINKAGE EDITOR COMPLETED
H8/300H OBJECT CONVERTER (Evaluation software) Ver.1.0

OBJECT CONVERTER COMPLETED
sending write-program..... erasing...
writing 'xxxxxx.mot'
I##################################################
1.0 KB written
Pushing any key leads the exit.

 
(3)  

<1>転送が終了したら、AKI-H8/3048のマザーボード上の電源スイッチをOFFにします。
<2>AKI-H8/3048のマザーボード上の状態選択スイッチをラン(Run)モードにします。
<3>AKI-H8/3048のマザーボード上の電源スイッチをONにします。

(4)ここまでの作業が順調に出来ていたら,AKI-H8/3048マザーボード上の2つのLEDが点滅して動作が確認できるはずです。

4.新規プログラムの開発手順

4.1 パソコン上で作業用のフォルダの用意
作業準備は作業用フォルダを適当な場所に作る作業です。
作業用のフォルダを用意します。ここではled00という名前のフォルダを使用することにします。
その中には以下のファイルを用意しておきます。
h8-01.h           サービス関数類
h8ccBasic.cmd     コンパイル&ゴーコマンド
StartupBasic.src  スタートアップルーチン(割り込み関係はサポートしていない)
h8_3048.sub       リンカスクリプト(リンカサブコマンド)
to_H8.ht          ハイパーターミナルの設定データ(ダブルクリックすると立ち上が
                  る)このサンプルプログラムでは使用しない

これ以降の作業はすべてこのフォルダ内で行われます。

(テンプレートフォルダの複製を作ってフォルダ名をled00としてもよいでしょう)

4.2 プログラムの作成
Windowsマシン上のエディタ上で、C言語で記述されているソースプログラムを作成します。
例えばled00.cを作るという仮定で以下の説明にはいります。リストにあるファイルを作成してください。
このリストをコピー&ペーストするとよいでしょう。

リスト プログラムソースファイル"led00.c"

/*  マザーボード上のLEDの1秒ごとのON-OFFを行う  */

#include <3048f.h>
void msecwait(int msec)
/*msec間なにもしない時間稼ぎ関数*/
{
    int i,j;
    for (i=0;i<msec;i++) {
        for (j=0;j<1588;j++);    /*1588は実測によって求めた値*/
    }
}
main()
{
    /*P5の下位2ビットを出力に設定*/
    /* P5のDDRの下位2ビットに1を与えるとこの設定になる*/
    /*DDRとはDataDirectionRegister(データ方向設定レジスタ)*/
    P5.DDR =  0x3;     /*0x3 = 00000011(二進数)*/
    while(1) {/*これは無限ループ*/
        /*LED0をONにする  P5のDRの第0ビットを1にする*/
        /*DRとはDataRegister(データレジスタ)*/
        P5.DR.BIT.B0=1;
        /*LED1をOFFにする  P5のDRの第1ビットを0にする*/
        P5.DR.BIT.B1=0;
        msecwait(1000);/*1000msecの間なにもしない*/
        /*LED0をOFFにする  P5のDRの第0ビットを0にする*/
        P5.DR.BIT.B0=0;
        /*LED1をONにする  P5のDRの第1ビットを1にする*/
        P5.DR.BIT.B1=1;
        msecwait(1000);
    }
}

ここまでの作業でフォルダled00の中には

h8-01.h           サービス関数類
h8ccBasic.cmd     コンパイル&ゴーコマンド
StartupBasic.src  スタートアップルーチン(割り込み関係はサポートしていない)
h8_3048.sub       リンカスクリプト(リンカサブコマンド)
to_H8.ht          ハイパーターミナルの設定データ(ダブルクリックすると立ち上が
                  る)このサンプルプログラムでは使用しない
led00.c           ここで作成したCソースファイル

ができているはずです。

4.3 フラッシュメモリ書き込み形式ファイルの作成とROMライター書き込み操作
Cプログラムソースファイル「led00.c」が出来ましたら,次の手順で実行してください。

表4.1 フラッシュメモリ書き込み形式ファイルの作成とROMライター書き込み操作から実行までの手順

 

パソコン側

マイコンH8側

(1) もしハイパーターミナルなどCOMポートを使用しているソフトがパソコン上で動作している時はそれらのソフトを中止します。  
(2)   <1>AKI-H8/3048のマザーボード上の電源スイッチをOFFにします。
<2>AKI-H8/3048のマザーボード上の状態選択スイッチをライト(Write)モードにします。ライトモードとはマイコンH8/3048がパソコンからプログラムコードを受け取り,フラッシュメモリに書き込むモードのことです。
<3>AKI-H8/3048のマザーボード上の電源スイッチをONにします。
(注意:H8/3048は,電源スイッチONの瞬間に,状態選択スイッチの状態を検査しますので,必ず<1><2><3>の手順が必要です)
(3)

出来上がったソースファイル(led00.c)のアイコンを「h8ccBasic.cmd」のアイコン上にドラッグアンドドロップします。
「コンパイル」—「リンク」—「コンバート」が行なわれた後に,H8/3048のフラッシュメモリへ,実行プログラムの書き込みが行なわれます。

コンパイルの時の画面例(Windows2000)

****  h8ccBasic.cmd  ****
Assemble, Compile, link and convert command for H8 C-programing ver1.01
Copyright(c) 30Aug2002 coskx
led00.c :

H8/300H C COMPILER(Evaluation software) Ver.1.0
H8/300H ASSEMBLER (Evaluation software) Ver.1.0
  *****TOTAL ERRORS       0
  *****TOTAL WARNINGS     0
H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0

: ROM (D,X)
: START P,C,D(100),X,B(0FEF10)
: EXIT

LINKAGE EDITOR COMPLETED
H8/300H OBJECT CONVERTER (Evaluation software) Ver.1.0

OBJECT CONVERTER COMPLETED
sending write-program..... erasing...
writing 'led00.mot'
I##################################################
1.0 KB written
Pushing any key leads the exit.

 
(4)   <1>転送が終了したら、AKI-H8/3048のマザーボード上の電源スイッチをOFFにします。
<2>AKI-H8/3048のマザーボード上の状態選択スイッチをラン(Run)モードにします。
(5) 必要ならパソコン側で「to_H8.ht」をダブルクリックしてターミナルアプリケーション「ハイパーターミナル」を立ち上げます。  
(6)   AKI-H8/3048のマザーボード上の電源スイッチをONにすると転送したプログラムが作動します。

注意(1) ネットワーク上のフォルダを利用する場合はネットワークドライブを割り当ててから実行する。ただし,動作が遅いので勧めません。自分のHD上で作業しましょう。
注意(2) もしマルチソースファイルでのプログラミングの時は必要なソースファイルすべてを同時にドラッグアンドドロップしてください。5個まで対応しています。

このWebページの最後の参考リスト1にh8ccBasic.cmdのソースを示します。自分の環境に合うように設定を変えても結構です。

ここまでの作業でフォルダled00の中には

h8-01.h           サービス関数類
h8ccBasic.cmd     コンパイル&ゴーコマンド
StartupBasic.src  スタートアップルーチン(割り込み関係はサポートしていない)
h8_3048.sub       リンカスクリプト(リンカサブコマンド)
to_H8.ht          ハイパーターミナルの設定データ(ダブルクリックすると立ち上が
                  る)このサンプルプログラムでは使用しない
led00.c           ここで作成したCソースファイル
led00.MOT         フラッシュメモリ書き込み形式ファイル(実行プログラム)

ができているはずです。

なお「コンパイル−リンク−コンバート−転送」作業における失敗時の画面例を以下に示します。

失敗例1 Cソースプログラムで文法エラーがあった時
(led01.cの7行目に宣言されていない変数iとjがある)
(エラーメッセージでファイル名の次はエラー行番号!)

****  h8ccBasic.cmd  ****
Assemble, Compile, link and convert command for H8 C-programing ver1.01
Copyright(c) 30Aug2002 coskx
led00.c :

H8/300H C COMPILER(Evaluation software) Ver.1.0
   led01.C     7 2225 (E)  UNDECLARED NAME: "i"
   led01.C     7 2220 (E)  MODIFIABLE LVALUE REQUIRED
   led01.C     7 2225 (E)  UNDECLARED NAME: "j"
   led01.C     7 2220 (E)  MODIFIABLE LVALUE REQUIRED
*** error *** コンパイルエラーがありました。

Pushing any key leads the exit.

失敗例2 リンクエラーがあった時
関数名が見つからない(関数名のミスタイプのことが多い)

****  h8ccBasic.cmd  ****
Assemble, Compile, link and convert command for H8 C-programing ver1.01
Copyright(c) 30Aug2002 coskx
led00.c :

H8/300H C COMPILER(Evaluation software) Ver.1.0
H8/300H ASSEMBLER (Evaluation software) Ver.1.0
  *****TOTAL ERRORS       0
  *****TOTAL WARNINGS     0
H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0

: ROM (D,X)
: START P,C,D(100),X,B(0FEF10)
: EXIT
** 105 UNDEFINED EXTERNAL SYMBOL(led02._wait)

LINKAGE EDITOR COMPLETED
*** error *** リンクエラーです。
Pushing any key leads the exit.

失敗例3 AKI-H8/3048のフラッシュメモリ書き込み受け入れ態勢が完全でない時
(AKI-H8/3048の電源が入っていない時)
(ライタモードになっていない時)

****  h8ccBasic.cmd  ****
Assemble, Compile, link and convert command for H8 C-programing ver1.01
Copyright(c) 30Aug2002 coskx
led00.c :

H8/300H C COMPILER(Evaluation software) Ver.1.0
H8/300H ASSEMBLER (Evaluation software) Ver.1.0
  *****TOTAL ERRORS       0
  *****TOTAL WARNINGS     0
H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0

: ROM (D,X)
: START P,C,D(100),X,B(0FEF10)
: EXIT

LINKAGE EDITOR COMPLETED
H8/300H OBJECT CONVERTER (Evaluation software) Ver.1.0

OBJECT CONVERTER COMPLETED
h8w: synchronizing.....
  no response from cpu board

Pushing any key leads the exit.

失敗例4 「ハイパーターミナル」などのシリアルポートを
利用しているソフトが動いていてフラッシュメモリ書き込みソフトが
シリアルポート(COMポート)を取得できない時

****  h8ccBasic.cmd  ****
Assemble, Compile, link and convert command for H8 C-programing ver1.01
Copyright(c) 30Aug2002 coskx
led00.c :

H8/300H C COMPILER(Evaluation software) Ver.1.0
H8/300H ASSEMBLER (Evaluation software) Ver.1.0
  *****TOTAL ERRORS       0
  *****TOTAL WARNINGS     0
H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0

: ROM (D,X)
: START P,C,D(100),X,B(0FEF10)
: EXIT

LINKAGE EDITOR COMPLETED
H8/300H OBJECT CONVERTER (Evaluation software) Ver.1.0

OBJECT CONVERTER COMPLETED
comm open failed
Pushing any key leads the exit.

4.4 プログラムの実行
「led00.MOT」がマイコンにフラッシュメモリ書き込みされて,実行します。正常に作業が終えていれば,マザーボード上の2つのLEDが点滅します。


参考1 h8ccBasic.cmdの内容

h8ccBasic.cmdの内容を参考リスト1に示します。

参考リスト1 motファイル作成用のコマンドファイル「h8ccBasic.cmd」

@echo off
echo ****  h8ccBasic.cmd  ****
echo Assemble, Compile, link and convert command for H8 C-programing ver1.01
echo Copyright(c) 30Aug2002 coskx
rem Copyright(c) 29Aug2002 coskx TNCT

rem このCMDは割り込みベクタテーブルも自分で作る上級者向けのコンパイルコマンド
rem です。
rem Cソースファイル(〜.c)とともに,割り込みベクタテーブル(〜.src)をドラッ
rem グ&ドロップして使います
rem C,ASMのソースファイルおよびobjファイルは最大で5個までドラッグ&ドロップに
rem 対応しています。
rem 複数ファイルのドロップの場合は次のことに気をつけること
rem 選択されているファイルのうちフォルダ表示で最も上の列(その列に複数のファイ
rem ルがある場合は左端)にあるファイル名でフラッシュメモリ書き込み形式ファイルの名前が決ま
rem る。そのためmain()を持つファイルをその位置(最上列左端)に置くと良い。
rem MOTファイルを直接ドラッグ&ドロップするとすぐフラッシュメモリ書き込みが始まる。

rem *************** カスタマイズ領域 begin *******************
rem コンパイル作業に必要なパスの追加を行います。
 set mypath=%HOMEDRIVE%\Program Files\h8\c
rem H8のライブラリを指定します。
 set h8library=%HOMEDRIVE%\Progra~1\h8\c\c38hab.lib
rem フラッシュメモリ書き込みに使用するプログラムを指定します。
 set downloader=n-h8w.exe
rem フラッシュメモリ書き込み直前にポーズしてそのままフラッシュメモリ書き込みするかどうか問い合わせします
rem YES:問い合わせる NO:問い合わせない
 set downloadready=NO
rem 正常にアセンブルが終了した場合でもLSTファイルを残す
rem YES:LSTファイルを残する NO:LSTファイルを残さない
 set leaveLST=NO
rem 正常にリンクが終了した場合でもobjファイルを残す
rem YES:OBJファイルを残する NO:OBJファイルを残さない
 set leaveOBJ=NO
rem 正常にリンクが終了した場合でもMAPファイルを残す
rem YES:MAPファイルを残する NO:MAPファイルを残さない
 set leaveMAP=NO
rem 正常にフラッシュメモリ書き込みが終了した場合でもMOTファイルを残す
rem YES:MOTファイルを残する NO:MOTファイルを残さない
 set leaveMOT=YES
rem 正常にフラッシュメモリ書き込みが終了した場合はそのまま終了する
rem YES:そのまま終了する NO:そのまま終了せず停止
 set downloadquit=NO
rem *************** カスタマイズ領域  end  *******************

rem ----------------------------------------------------------------------------
rem カレントドライブ・カレントディレクトリへ移動
%~d1
cd %~p1

rem コンパイラのパスの設定
path=%path%;%mypath%

rem もしMOTファイルがドラッグ&ドロップされたら,フラッシュメモリ書き込みだけ行なう
if %~x1==.mot goto DOWNLOAD
if %~x1==.MOT goto DOWNLOAD

rem 誤ったファイルがドロップされたか,単なるダブルクリックで起動した場合は何もしない
set nosource=YES
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.c set nosource=NO
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src set nosource=NO
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.obj set nosource=NO
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.OBJ set nosource=NO
if nosource==YES goto NO_SOURCE_ERROR

:COMPILE
rem ----------------------------------------------------------------------------
rem コンパイル 〜.objの作成 5個のファイル入力に対応
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.c if exist %%p.obj del %%p.obj
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.c echo %%p.c : &&cc38h -include=%HOMEDRIVE%\Progra~1\h8\c %%p
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.c if not exist %%p.obj goto COMPILE_ERROR

:ASSEMBLE
rem ----------------------------------------------------------------------------
rem アセンブル 〜.objの作成 5個のファイル入力に対応
rem a38h.exeの入力ファイルのパスに全角文字が入っていると動かないことに対応したからくりが作ってある
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src if exist %%p.obj del %%p.obj
subst x: .
x:
a38h StartupBasic.src
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src echo %%p.src : &&a38h %%p
%~d1
subst x: /d
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src if not exist %%p.OBJ goto ASSEMBLE_ERROR
del StartupBasic.LIS
if %leaveLST%==NO for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src if exist %%p.LIS del %%p.LIS

:LINK
rem ----------------------------------------------------------------------------
rem リンク
l38h %~n1 %~n2 %~n3 %~n4 %~n5 StartupBasic -subcommand=h8_3048.sub -LIB=%h8library% -O=%~n1 -P=%~n1 >q9j2h5c4k6b1.txt
if %leaveOBJ%==NO for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.c if exist %%p.obj del %%p.obj
if %leaveOBJ%==NO for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src if exist %%p.OBJ del %%p.OBJ
type q9j2h5c4k6b1.txt
del StartupBasic.OBJ
find "**" q9j2h5c4k6b1.txt >nul
if errorlevel 1 goto CONVERT
del q9j2h5c4k6b1.txt
del %~n1.abs
goto LINK_ERROR

:CONVERT
del q9j2h5c4k6b1.txt
rem ----------------------------------------------------------------------------
rem Sフォーマットに変換 〜.motの作成
c38h %~n1.abs
del %~n1.abs
if %leaveMAP%==NO del %~n1.map

rem motファイルの転送
if %downloadready%==NO goto DOWNLOAD
echo Please set AKI-H8 ready and hit any key / push 'Ctrl+C' if you want
pause >nul
:DOWNLOAD
%downloader% %~n1.mot
if %leaveMOT%==NO del %~n1.mot
if %downloadquit%==YES exit
goto TERMINAL

:NO_SOURCE_ERROR
echo *** error *** Cのソースファイルが指定されていません。
goto TERMINAL

:COMPILE_ERROR
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.c if exist %%p.obj del %%p.obj
echo *** error *** コンパイルエラーがありました。
goto TERMINAL

:ASSEMBLE_ERROR
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.c if exist %%p.obj del %%p.obj
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src if exist %%p.OBJ if exist %%p.LIS del %%p.LIS
for %%p in (%~n1 %~n2 %~n3 %~n4 %~n5 ) do if exist %%p.src if exist %%p.OBJ del %%p.OBJ
echo *** error *** アッセンブルエラーがありました。
goto TERMINAL

:LINK_ERROR
echo *** error *** リンクエラーです。
goto TERMINAL

:TERMINAL
echo Pushing any key leads the exit.
pause >nul
exit


補足1 フラッシュメモリ書き込み形式ファイル(.MOTファイル)をドラッグ&ドロップすると直ちに転送が始まります
補足2 「〜.c」のみでなく「〜.obj」も同時にドラッグ&ドロップが可能です
補足3 ダウンロードソフトにライセンス取得前の「h8w.exe」を用いる場合はカスタマイズ領域のダウンローダの設定で変更してください
補足4 「q9j2h5c4k6b1.txt」を一時的に自動生成し,使用後消去します

参考2 「c:\Program Files\h8\c」の内容

秋月で購入したCコンパイラのあるフォルダは「c:\Program Files\h8\c」であり,内容は次のとおりです。フォルダ名,ファイルの配置が異なる場合は「h8ccBasic.cmd」中の必要なところを直してください。

秋月から購入時に導入されたファイル
A38H.EXE      :アセンブラ本体
CC38H.EXE     :Cコンパイラ本体
C38H.EXE      :コンバータ本体
L38H.EXE      :リンカ本体
C38CGNB.EXE   :CC38H.EXEが使用するコプログラム
C38ASMB.EXE   :CC38H.EXEが使用するコプログラム
C38FRNTB.EXE  :CC38H.EXEが使用するコプログラム
C38PEPB.EXE   :CC38H.EXEが使用するコプログラム
C38MIDB.EXE   :CC38H.EXEが使用するコプログラム
3048F.H       :ヘッダーファイル
ASSERT.H      :ヘッダーファイル
CTYPE.H       :ヘッダーファイル
ERRNO.H       :ヘッダーファイル
FLOAT.H       :ヘッダーファイル
SETJMP.H      :ヘッダーファイル
LIMITS.H      :ヘッダーファイル
MATH.H        :ヘッダーファイル
STDLIB.H      :ヘッダーファイル
STRING.H      :ヘッダーファイル
STDDEF.H      :ヘッダーファイル
STDARG.H      :ヘッダーファイル
STDIO.H       :ヘッダーファイル
C38HAB.LIB    :ライブラリ3048Hアドバンスモード用
C38HNB.LIB    :ライブラリ3048Hノーマルモード用

さらに小坂が追加したファイルも加えられています。
n-h8w.exe     :ファイル転送ソフト 前田

参考3 「StartupBasic.src」の利用の利点

(1)初期化されたグローバル変数,および関数内の初期化されたstatic変数はRAM領域で使えるようにします。const修飾子を持つ初期化されたグローバル変数,およびconst修飾子を持つ関数内の初期化されたstatic変数はROM領域に割り当てられるようにします。(「5.変数について補足」参照)
秋月電子通商で販売しているCコンパイラに付属している環境が与えるスタートアップルーチン(resetv.obj)では,このような変数の割り当てができていません。初心者が勉強するには不都合な環境です。初心者が通常のC言語の変数感覚でなにげなく使える環境を与えます。

(2)CPUの割り込みマスクの制御を行なう機械語ルーチンを与えます。

参考4 「h8-01.h」の利用の利点

(1)マザーボード上のスイッチ・LEDの制御関数をインクルードファイルで提供します。

(2)プログラムをフラッシュメモリ書き込みに用いた通信回線とWindowsマシンのハイパーターミナルを用いた表示環境を提供し,printf()に似た整数変数出力ルーチン,整数入力ルーチンをインクルードファイルで提供します。

(3)タイマ割り込みのための設定ルーチンをサポートします。