stdlib.h 標準ライブラリ

include <stdlib.h>

C 標準で定義されているユーティリティ関数の一部です。
一部関数は z80 系プラットフォームに適するよう変更され、いくつかの機能が追加されています。
float・double から文字列への変換は対応されていません。

https://github.com/z88dk/z88dk/wiki/stdlib


標準

  • int atoi(char *s)
    s を整数 int 型へ変換します。
  • int itoa(int n, char *s, unsigned char radix)
    整数値 n を NULL で終わる文字列に変換し配列 s へ収納します。
    n が 0 より小さい場合は文字列の頭に - が付きます。
    NULL を含まない s へ書き込まれた文字数を返します。
  • int utoa(unsigned int n, char *s, unsigned char radix)
    itoa に同じですが、符号なしで返されます。
  • long atol(char *s)
    s を long 型へ返します。
  • int ltoa(long n, char *s, unsigned char radix)
    long 型 n である事以外は itoa に同じです。\
  • int ultoa(unsigned long n, char *s, unsigned char radix)
    ltoa に同じですが、符号なしで返されます。
  • *long strtol(char s, char **endp, int base)
  • *unsigned long strtoul(char s, char **endp, int base)
  • int rand(void)
    0~RAND_MAX の疑似乱数を返します。RAND_MAX は最低 32767 です。
  • void srand(unsigned int seed)
    疑似乱数の元値 seed を設定します。
  • void *calloc(int nobj, int size)
    size で配列 nobj を領域に割り当て、そのポインターを返します。
    エラーの場合は 0 を返します。\
  • void *malloc(int size)
    size 分の領域割り当て、ポインターを返します。
  • void *realloc(void *p, int size)
    割り当てられた領域 p を size へ変更します。
  • void free(void *p)
    領域 p を解放します。
  • void abort(void)
    exit(15) に同じです。
  • void exit(int status)
    プログラムを正常に終了させます。
  • int atexit(void (*fcn)(void))
    正常終了時に呼び出される関数 fcn を登録します。
  • void sleep(int)
    ウェイトを入れます。単位は秒です。
  • void csleep(int) ウェイトを入れます。単位はセンチ秒です。
  • void delay(int)
    ウェイトを入れます。単位はミリ秒です。
  • void t_delay(int)
    CPU T_STATE 分待ちます。(最低 141 T)
  • *int getopt(int nargc, char **nargv, const char ostr)
  • **void l_bsearch(void *key, void *base, unsigned int n, char (*cmp)(void keyval, void datum)) base[0]~base[n-1] から key をバイナリ検索します。
  • **void l_qsort(void *base, size_t n, char (*cmp)(void keyval, void datum)) base[0]~base[n-1] から key を昇順に並べ替えます。
  • int abs(int n)
    n の絶対値を返します。
  • long labs(long n)
    lang 型 n の絶対値を返します。

標準に含まれていない関数

  • unsigned char inp(unsigned int port)
    16 ビット I/O ポートから読み取り、返します。
  • void outp(unsigned int port, unsigned char byte)
    16 ビット I/O ポートに byte を書き込みます。
  • int sleep(int seconds)
    int csleep(int centiseconds)
    int delay(int milliseconds)
    ウェイト。他のコンパイラ同等の実装になっています。
  • *unsigned long extract_bits(unsigned char data, unsigned int start, unsigned int size) data から start より size 分のビット数を long 型に変換します。
  • void t_delay(unsigned int tstates)
    Z80 のサイクル数 tstates 分待ちます。
  • void *swapendian(void *addr)
    addr の上位バイトと下位バイトを交換し、返します。
  • void bpoke(void *addr, unsigned char byte)
    addr に byte を書き込みます。
  • void wpoke(void *addr, unsigned int word)
    addr に word を書き込みます。
  • unsigned char bpeek(void *addr)
    addr の値を読み込み、返します。
  • unsigned int wpeek(void *addr)
    addr から 2 バイトの値を読み込み、返します。値はリトルエンティアンになります。
  • unsigned int isqrt(unsigned int n)
    n の平方根を返します。n は 16384 未満です。

Z88 専用

  • int system(char *s)
    CLI コマンドを実行します。