sdccで自動的にリンクされるライブラリはデフォルトでビルドされているz80.lib。
このライブラリは書き換えたり修正する事が難しいので新しくライブラリを作る。
putchar()はアセンブリで書かれている。デフォルトではRST 08hが実行される。
putchar()はC言語でextern定義されている。
putchar()を適切に書き換える。putchar()のソース修正箇は、
[drive:\sdccdir]\lib\src\z80\putchar.sの以下の行をコメントアウトし
新しくアセンブラを追加する。
putchar.s
_putchar::
_putchar_rr_s::
; ld l,(hl)
; ld a,#1
; rst 0x08
ld c,#2
ld e,(hl)
call 0x05
修正後アセンブリコードをアセンブルする。
> sdasz80 -o putchar.rel putchar.s
新しくライブラリを作成する。
> sdcclib stdio.lib putchar.rel
作成されたライブラリはputchar()のみ。C関数を実行するとMSXDOSシステムコールを利用し
文字をコンソールへ出力する。
このライブラリ使用例を示す。ソースコードコンパイル後にコマンド実行し手動でリンクする。
#include <stdio.h>
void main(void){
putchar('a');
}
上記ソースをコンパイル
> sdcc -mz80 -c source.c
コンパイル後、Cソースのオブジェクトファイルと作成したライブラリをリンクし、
IntelHEX形式のファイルを出力する。
> sdld -b _CODE=0x100 -b _DATA=0x100 -i source.ihx source.rel stdio.lib
最終更新:2012年01月26日 19:54