MSXDOS用標準ライブラリprintf関数の修正

「MSXDOS用標準ライブラリprintf関数の修正」の編集履歴(バックアップ)一覧はこちら

MSXDOS用標準ライブラリprintf関数の修正」(2012/01/26 (木) 20:03:29) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

sdccはputs(),printf(),putchar()関数が存在する。 組み込み用途を前提としているためかgets(),getc(),scanf()などは実装されていない。 printfにはsmallとfastがある。これらは8051用で他のCPU用ではない。標準ではprintf_large.cを使うが、そのままではprintf_large.cはBool型の部分に問題があるのでソースを修正する。 #ifndef BOOL #define BOOL _Bool #endif printf_large.c上記項目を下記へ変更する。 #ifndef BOOL /* #define BOOL _Bool */ #define BOOL char #endif 次に自作ライブラリに必要なファイルをビルドする。 既にMSXDOSシステムコール対応修正済みのputchar()関数を利用し、puts(),printf()関数の 修正を行う。puts(),printf()関数内部ではputchar()を呼び出しているのでライブラリを 再構成するだけ。 ファイルは[drive:\sdccdir]\lib\src\z80\以下のソースをアセンブルする。 > sdasz80 -o putchar.rel putchar.s > sdasz80 -o shift.rel shift.s > sdasz80 -o crtcall.rel crtcall.s [drive:\sdccdir]\lib\src\以下のCソースをコンパイルする。 > sdcc -mz80 -c vprintf.c > sdcc -mz80 -c puts.c > sdcc -mz80 -c printf_large.c > sdcc -mz80 -c _strlen.c 次にライブラリのリンクを行う。 > sdcclib stdlib.lib z80\putchar.rel vprintf.rel puts.rel printf_large.rel z80\shift.rel z80\crtcall.rel _strlen.rel ライブラリのリンク後作成されるstdlib.libが修正版printf()を含む自作ライブラリ。 -C言語とのリンク #include <stdio.h> void main(void){ printf("abcdefg 12345"); } > sdcc -mz80 -c source.c > sdld -b _CODE=0x100 -b _DATA=0x100 -i out.ihx source.rel -l stdlib.lib

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

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