MSXDOS用putchar()標準ライブラリの修正

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

sdccで自動的にリンクされるライブラリはデフォルトでビルドされているz80.lib。
このライブラリは書き換えたり修正する事が難しいので新しくライブラリを作る。

putchar()はアセンブリで書かれている。デフォルトではRST 08hが実行される。
putchar()はC言語でextern定義されている。

  • putchar() 関数の修正

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システムコールを利用し
文字をコンソールへ出力する。


  • C言語とのリンク

このライブラリ使用例を示す。ソースコードコンパイル後にコマンド実行し手動でリンクする。

#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
ツールボックス

下から選んでください:

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