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

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

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2012年01月26日 19:54
ツールボックス

下から選んでください:

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