sdccにはgetchar(),gets(),scanf()などの関数は無いがgetchar()関数プロトタイプはstdio.hに有る。
そこでアセンブラで関数を追加し、getchar()を実装する。
新規にgetchar.asmを作成する。
;
;getchar.asm
;
.area _CODE
;
_getchar::
ld c,#1
call 0x05
;
ret
getchar()はシステムコールの0x01番を利用する。
このファイルをアセンブルしオブジェクトを作成する。
アセンブルは↓
> sdasz80 -o getchar.rel getchar.asm
getchar()はstdio.hにヘッダが記載されているのでそのまま利用可能。
#include <stdio.h>
void main(void){
char rtn;
rtn=getchar();
}
> sdcc -mz80 -c source.c
> sdld -b _CODE=0x100 -b _DATA=0x100 -i out.ihx source.rel getchar.rel
最終更新:2012年01月29日 12:49