z88dkを使ってみる

「z88dkを使ってみる」の編集履歴(バックアップ)一覧に戻る

z88dkを使ってみる - (2014/03/10 (月) 20:11:36) のソース

-z88dkを使う

sdccのほかにz80向けクロス開発Cコンパイラとしてz88dkがある。
今回はz88dkを使ってみる。


-MSXDOS向けソースのビルド

z88dkはコンパイルオプション指定で様々な環境の実行形式を作成する。
MSXDOSの例としてCP/M向けのソースのコンパイル例を示す。
(MSXDOSはCPM互換なのでCPMオプションで可)


c1.c
 main(void){
 	printf("hello");
 }


 >zcc +cpm c1.c -o c1.com


z88dkは浮動小数点ライブラリが使える。浮動小数点はfloat,doubleが可能。
幾つかの三角関数なども使える。それらを使う場合はコンパイルオプションに-lmを追加する。

c2.c
 main(void){
 	double a=123.45;
 
 	printf("%f",a);
 }

 >zcc +cpm c2.c -o c2.com -lm

整数のみのバイナリと違い、浮動小数点を使う場合は6kb程度にサイズは肥大化する。
このほかにCファイル関数なども標準的な機能が備わっている。


-MSX環境向けコンパイル

z88dkにはMSX環境に対応するコンパイルオプションが用意されている。
コンパイラが前提としているハードウエアはMSX1。MSX2以降は別途開発が必要。

MSX1環境は基本的にMSXDOSを前提としたバイナリを作成するらしい。このオプションでは
CPM互換と異なり幾つかのMSXBIOSを使う関数ができるが、ファイル操作関数はダミーライブラリが
リンクされ機能しない様子。

コマンドオプション-startup=2は必ず指定する。これは先頭の初期化コードを選択的に追加するもの。
ここで-startup=オプションは数値1または2を指定可能。
2がMSXDOSで動作する環境のビルド。1は不明だがBIOSが初期化されるようなので別途ZORGを指定
するなどすればDOS以外の環境のバイナリが作成できるのかもしれない。
startupはz88dkのMSX1用コンパイル設定ファイルに書かれているアセンブラ。

MSX環境向けの基本的なコンパイル操作は以下のとおり。

 >zcc +msx c3.c -o c3.com -startup=2

作成した実行形式はMSXDOS(MSX1)で実行することができる。

examples\msx以下には幾つかのサンプルがある。コンパイル手順は以下。

 >zcc +msx ex1.c -o ex1.com -startup=2 -llib3d
 >zcc +msx ex2.c -o ex2.com -startup=2
 >zcc +msx ex3.c -o ex3.com -startup=2
 
 (ex4.c/ex5.cは変数名M_PIを小文字に修正してコンパイル)
 >zcc +msx ex4.c -o ex4.com -startup=2 -lm
 >zcc +msx ex5.c -o ex5.com -startup=2 -lm
 
 >zcc +msx ex6.c -o ex6.com -startup=2
 >zcc +msx ex7.c -o ex7.com -startup=2
 >zcc +msx ex8.c -o ex8.com -startup=2
 >zcc +msx ex9.c -o ex9.com -startup=2 -llib3d
 >zcc +msx ex10.c -o ex10.com -startup=2
 
 (ex11.cは変数M_PIを小文字に変換)
 >zcc +msx ex11.c -o ex11.com -startup=2 -lm -llib3d -lmalloc
 
 >zcc +msx ex12.c -o ex12.com -startup=2 -lm
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。