### 1-3　MAKEを使わないアセンブル

ここでは、ソースコードをアセンブル・リンクし、実際にビジュアルメモリで実行できる形式のファイルにビルドします。

アセンブラやリンカは、EMSを利用します。あらかじめMS-DOSプロンプトのプロパティーを表示させ、［メモリ］タブの［EMSメモリ］グループで、EMSメモリを使えるようにしてください。 CONFIG.SYSのEMM386.EXEの組み込みで、NOEMSオプションを指定している場合、EMSメモリが利用できないので、NOEMSオプションを削除する必要があります。

#### 1-3-1　アセンブル

MS-DOSのコマンドプロンプトから、M86Kコマンドを実行しソースコードをアセンブルします。

たとえば、ソースコードのファイル名が“TEST.ASM”の場合は、カレントドライブ、カレントディレクトリを“TEST.ASM”のあるディレクトリにし、次のようにしてアセンブルします。

>     C>M86K TEST.ASM

>     SANYO (R) LC86K series Macro Assembler Version 4.0K
>     Copyright (c) SANYO Electric Co., Ltd. 1989-1995. All rights reserved.

>     Pass 1 .....
>     Source file:     TEST
>     Chip name:       LC868700
>     ROM  size:       60K bytes
>     RAM  size:       512 bytes
>     XRAM size:       196 bytes
>     Pass 2 .....

アセンブルが終わると、拡張子が“.OBJ”というオブジェクトファイルが作成されます。

また“GHEAD.ASM”も同様にしてアセンブルし、“GHEAD.OBJ”を作ります。

アセンブルの途中で次のようなエラーメッセージが表示されたら、メッセージに表示される番号の行に何らかの問題があることを示しています。

>     Pass 1 .....
>     TEST.ASM(93):                   move            #080h,b
>     ** Error, syntax error near #
>     0 warning(s) and 1 error(s) were detected. Further execution aborted.

ソースコードを修正して、警告やエラーが発生しないように修正してください。

アセンブラM86Kの警告メッセージやエラーメッセージについては『ビジュアルメモリプログラマーズマニュアル』を参照してください。

“GHEAD.ASM”相当のソースを自分のソースに埋め込む場合を除き、“GHEAD.OBJ”とユーザープログラムのオブジェクトファイルが必要です。なお“GHEAD.ASM”には、割り込みベクタや割り込みサービスルーチン、BIOS呼び出しプログラムなどが記述されており、次に実行するリンカによってユーザープログラムの下位アドレスに配置されます。

#### 1-3-2　リンク

アセンブラによって作成したオブジェクトファイルと、BIOSが書き込まれている内部ROMのアドレスを示すための“GDUMMY.OBJ”ファイルを用意し、リンカを使ってEVA形式のファイルを作成します。

EVA形式のファイルは、専用のデバッグ用ハードウェアを利用するためのファイルです。ビジュアルメモリ用アプリケーションの開発においては、ビジュアルメモリシミュレータを利用しますので、一時的なテンポラリファイルと考えてください。

リンカを実行する前に“GDUMMY.OBJ”のパスをメモに控えておきます。コマンドラインから次のように入力し、それぞれのオブジェクトファイルをリンクします。

>     D>L86K GHEAD.OBJ IFORK.OBJ TEST.OBJ -C=200 C:\VM_SDK\LC86K\OBJ\GDUMMY.OBJ,
>     TEST.EVA,,,

>     SANYO (R) LC86K series Linkage Loader Version 6.00c
>     Copyright (c) SANYO Electric Co., Ltd. 1989-1997. All right reserved.

>      Pass 1 ...
>      Pass 2 ...
>      Pass 3 ...

>      Link process complete !!
>      TEST.EVA created

-C=200というオプションは、その直後に指定するユーザープログラムをフラッシュメモリの何番地に配置するかを指定するオプションです。

エラーメッセージが表示された場合は、“GHEAD.ASM”やユーザープログラムのソースを見直します。BIOSを呼び出す際のラベルを中心にチェックしてみてください。

#### 1-3-3　EVAファイルをHEXファイルに変換

リンカによって、拡張子“.EVA”という1つのファイルにまとめられました。このファイルをビジュアルメモリやビジュアルメモリシミュレータで読み込めるファイルに変換します。コマンドラインから、次のように入力します。

>     D>E2H86K TEST.EVA
>     SANYO LC86000 Series EVA-file to HEX-file generator  V1.21A
>     Copyright (C) SANYO Electric Co.,Ltd. 1992-1997

>     EVA file name:   TEST.EVA
>     ROM data packed: FF(hex)
>     Chip name:       LC868716

>     All ROM(64KB)  block  records: 03875
>     All ROM(64KB)  block  records: 04096
>     Module name: GHEAD    External CSEG(In)    0000 - 0002  records: 00001
>     Module name:          External CSEG(In)    0003 - 0004  records: 00001
>     Module name:          External CSEG(In)    000B - 000C  records: 00001
>     Module name:          External CSEG(In)    0013 - 0014  records: 00001
>     Module name:          External CSEG(In)    001B - 001C  records: 00001
>     Module name:          External CSEG(In)    0023 - 0024  records: 00001
>     Module name:          External CSEG(In)    002B - 002C  records: 00001
>     Module name:          External CSEG(In)    0033 - 0034  records: 00001
>     Module name:          External CSEG(In)    003B - 003C  records: 00001
>     Module name:          External CSEG(In)    0043 - 0044  records: 00001
>     Module name:          External CSEG(In)    004B - 0057  records: 00002
>     Module name:          External CSEG(In)    0100 - 0105  records: 00001
>     Module name:          External CSEG(In)    0110 - 0115  records: 00001
>     Module name:          External CSEG(In)    0120 - 0125  records: 00001
>     Module name:          External CSEG(In)    0130 - 013B  records: 00001
>     Module name:          External CSEG(In)    01F0 - 01F4  records: 00001
>     Module name: IFORK    External CSEG(In)    01F5 - 0474  records: 00041
>     Module name: TEST     External CSEG(In)    0475 - 051C  records: 00011

オプションスイッチなどはありません。

このコマンドを実行すると、拡張子が“.H00”と“.HEX”というファイルが作成されます。

通常は、H00ファイルのみを使います。

H00ファイルができあがったところで、ビジュアルメモリシミュレータにて動作チェックを行います。ただし、ビジュアルメモリシミュレータは、実機と同じクロックを持ち合わせていないため、タイミングのチェックには不向きです。

プログラムのロジカルチェックはシミュレータ、タイミングや速度をチェックする場合は実機というように、デバッグのフェーズごとに分けて利用してください。

ビジュアルメモリシミュレータについては『ビジュアルメモリシミュレータガイド』を参照してください。

#### 1-3-4　HEXファイルをバイナリファイルに変換

E2H86Kで変換したH00ファイルを、H2BIN.EXEでバイナリファイル（拡張子“.BIN”）に変換します。

コマンドラインから、次のように入力します。

>     H2BIN TEST.H00 TEST.BIN

オプションスイッチなどはありません。第2パラメータの“TEST.BIN”は省略してもかまいません。省略した場合は、拡張子が自動的に“.BIN”になります。

これでビジュアルメモリの実機に読み込ませるファイルができました。

#### 1-3-5　MAKEファイルを作る

MAKEコマンド用に、MAKEファイルを作成すると、アセンブル・リンク・ファイル形式の変換という一連の手順を、バッチ処理化することができます。

どのコマンドにどんなファイルを入れると、どんなファイルが出力されるかという、依存情報をMAKEファイルとして記述し、MAKEコマンドを実行すると、入れるファイルと出力されるファイルのタイムスタンプを比較し、更新のあったファイルのみをアセンブル・リンクします。

MAKEコマンドの詳細は『ビジュアルメモリ　プログラマーズマニュアル』を参照してください。

MAKEコマンドは、さまざまな開発環境に添付されているので、お使いのコンピュータに複数の開発環境がインストールされている場合は、コマンド検索パス（環境変数PATH）の順序を変更するか、MAKEコマンドのファイル名を変更するなどしてください。

たとえば、先の一連の手順をMAKEするには、次のようなメイクファイルを作成します。ここでは、ファイル名を“TEST.MAK”とすることにします。

>     TARGET = test
>     OBJECTS = ifork.obj test.obj
>     HEADOBJ = ghead.obj
>     SYSOBJ = $(TOOL86)\obj\gdummy.obj

>     .asm.obj:
>     	m86k $*

>     $(TARGET).eva: $(HEADOBJ) $(OBJECTS)
>     	l86k $(HEADOBJ) $(SYSOBJ) $(OBJECTS),$(TARGET).eva,,,

>     $(TARGET).h00: $(TARGET).eva
>     	e2h86k $(TARGET)

>     $(TARGET).hex: $(TARGET).h00
>     	h2bin $(TARGET).h00

このメイクファイルを次のようにMAKEに指定してビルドを行います。こうすることで、更新のあったソースファイルがアセンブルされビルドが行われます。

作成したMAKEファイルは、/Fオプションを付けてMAKEを実行してください。コマンドラインからMAKE /F ＜MAKEファイル名＞というように入力します。

>     D>MAKE /F TEST.MAK

>     SANYO LC86000 Series MAKE Utility Version 1.00A
>     Copyright (C) SANYO Electric Co.,Ltd. 1993-1994  All rights reserved.

>     m86k GHEAD

>     SANYO (R) LC86K series Macro Assembler Version 4.0K
>     Copyright (c) SANYO Electric Co., Ltd. 1989-1995. All rights reserved.

>     Pass 1 .....
>     Source file:     GHEAD
>     Chip name:       LC868700
>     ROM  size:       60K bytes
>     RAM  size:       512 bytes
>     XRAM size:       196 bytes
>     Pass 2 .....

>     m86k IFORK

>     SANYO (R) LC86K series Macro Assembler Version 4.0K
>     Copyright (c) SANYO Electric Co., Ltd. 1989-1995. All rights reserved.

>     《以降、リンカ→E2H86K→H2BINが実行され、バイナリファイルが生成されます》

[←] | [INDEX] | [→]