6502/vbcc/targets/6502-nes/include/string.h
2022-05-12 21:36:39 +09:30

88 lines
2.1 KiB
C

#ifndef __STRING_H
#define __STRING_H 1
#ifndef __SIZE_T
#define __SIZE_T 1
typedef unsigned int size_t;
#endif
#undef NULL
#define NULL ((void *)0)
void _fmemcpy(__far void *,const __far void *,size_t);
void *memcpy(void *,const void *,size_t);
void *memmove(void *,const void *,size_t);
char *strcpy(char *,const char *);
char *strncpy(char *,const char *,size_t);
char *strcat(char *,const char *);
char *strncat(char *,const char *,size_t);
int memcmp(const void *,const void *,size_t);
int strcmp(const char *,const char *);
int strncmp(const char *,const char *,size_t);
void *memchr(const void *,int,size_t);
char *strchr(const char *,int);
size_t strcspn(const char *,const char *);
char *strpbrk(const char *,const char *);
char *strrchr(const char *,int);
size_t strspn(const char *,const char *);
char *strstr(const char *,const char *);
void *memset(void *,int,size_t);
size_t strlen(const char *);
char *strtok(char *,const char *);
char *strerror(int);
int strcoll(const char *,const char *);
size_t strxfrm(char *,const char *,size_t);
#if !defined(__NOINLINE__) && defined(__OPTSPEED__)
void *__memset16(void *,int,size_t);
#define memset(d,c,n) ((n)<256 ? __memset8(d,c,n) : __memset16(d,c,n))
void *__memset8(__reg("r0/r1") void *, __reg("r2/r3") int,
__reg("r4/r5") size_t) =
"\tinline\n"
"\tlda\tr2\n"
"\tldy\tr4\n"
"\tbne\t.2\n"
"\tbeq\t.3\n"
".1:\tsta\t(r0),y\n"
".2:\tdey\n"
"\tbne\t.1\n"
"\tsta\t(r0),y\n"
".3:\tlda\tr0\n"
"\tldx\tr1\n"
"\teinline";
size_t strlen(__reg("r0/r1") const char *) =
"\tinline\n"
"\tldx\t#0\n"
"\tldy\t#0\n"
".1:\tlda\t(r0),y\n"
"\tbeq\t.2\n"
"\tiny\n"
"\tbne\t.1\n"
"\tinc\tr1\n"
"\tinx\n"
"\tbne\t.1\n"
".2:\ttya\n"
"\teinline";
char *strcpy(__reg("r0/r1") char *, __reg("r2/r3") const char *) =
"\tinline\n"
"\tlda\tr1\n"
"\tpha\n"
"\tldy\t#0\n"
".1:\tlda\t(r2),y\n"
"\tsta\t(r0),y\n"
"\tbeq\t.2\n"
"\tiny\n"
"\tbne\t.1\n"
"\tinc\tr1\n"
"\tinc\tr3\n"
"\tbne\t.1\n"
".2:\tpla\n"
"\ttax\n"
"\tlda\tr0\n"
"\teinline";
#endif /* !__NOINLINE__ && __OPTSPEED__ */
#endif /* __STRING_H */