SDCC(Small Device C Compiler)はフリーのCコンパイラである。
使用例
以下のテストプログラム(TEST001.C)を入力して
#include <stdio.h>
char strBuf[32]; //文字列
void main(){
int i;
int foo=1;
for (i=0;i<10;i++) {
foo *= 2;
}
sprintf(strBuf,"ans=%d",foo);
}
以下のバッチファイル(MKTEST001.BAT)でコンパイルする
sdcc -mz80 --no-std-crt0 --code-loc 0x0100 --data-loc 0x1000 test001.c
pause
内容:Z80コード 標準入出力用コードをつけない 0x0100からコード領域 0x1000から外部変数領域
実行
マシン語領域を確保して、SCDDが出力したインテルHEX形式のファイル(.ihx)をポケコンにアップロードして実行する
MON[enter]
USER1200[enter]
R[enter]
G100[enter]
実行結果
D1000[enter]とすると
"ans=1024\0"
とメモリに書き込まれている。(メモリダンプ横のキャラクタ表示を参照)
組み込み関数を使用した場合コードサイズが大きくなってしまうため、入出力関数は独自にIOCSをコールする形で組みなおしたほうがよさそうだ。
転送時の注意
SDCCが出力するインテルHEXフォーマット(.ihx)ファイルは一行が最長32バイトになっている。そのためポケコンにアップロードするときに文字解析とメモリへの格納が追いつかないことがあった(PC-G801実機の場合)。
TeraTermでは、zasmが出力するファイルにあわせて一行ごとに60msのウェイトを入れていたが
とりあえず一行ごとのウェイトを2倍の120msに設定してやるとうまく転送できる。
最終更新:2013年04月15日 20:15