summaryrefslogtreecommitdiffstats
path: root/sw/z80/libc
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2017-07-04 09:16:59 +0200
committerNao Pross <naopross@thearcway.org>2017-07-04 09:16:59 +0200
commita86838ead76c76e62369d461d5f4ff6ea6b07433 (patch)
treea2a5131ce8a4fb06c6cefceaa5fb9857a42ce553 /sw/z80/libc
parentnew components list and cpld test unit (diff)
parentOrder and update of the struct (diff)
downloadz80uPC-a86838ead76c76e62369d461d5f4ff6ea6b07433.tar.gz
z80uPC-a86838ead76c76e62369d461d5f4ff6ea6b07433.zip
merge branch 'atlas' into naopross
Diffstat (limited to 'sw/z80/libc')
-rw-r--r--sw/z80/libc/include/string.h4
-rw-r--r--sw/z80/libc/string.c26
2 files changed, 30 insertions, 0 deletions
diff --git a/sw/z80/libc/include/string.h b/sw/z80/libc/include/string.h
index f224c87..9c002e3 100644
--- a/sw/z80/libc/include/string.h
+++ b/sw/z80/libc/include/string.h
@@ -3,6 +3,10 @@
#include "types.h"
+void * memset(void *dest, const int8_t src, size_t n);
+
void *memcpy(void *dest, const void *src, size_t n);
+int8_t memcmp(const void *s1, const void *s2, size_t n);
+
#endif
diff --git a/sw/z80/libc/string.c b/sw/z80/libc/string.c
index fd6a7ff..9dd56cc 100644
--- a/sw/z80/libc/string.c
+++ b/sw/z80/libc/string.c
@@ -1,5 +1,15 @@
#include "string.h"
+void * memset(void *dest, const int8_t src, size_t n) {
+
+ void *dp = dest;
+
+ while (n--)
+ *dp++ = src;
+
+ return dest;
+}
+
void *memcpy(void *dest, void *src, size_t n)
{
char *dp = dest;
@@ -11,3 +21,19 @@ void *memcpy(void *dest, void *src, size_t n)
return dest;
}
+
+int8_t memcmp(const void *s1, const void *s2, size_t n) {
+
+ uint8_t u1, u2;
+
+ for ( ; n--; s1++, s2++) {
+
+ u1 = *s1;
+ u2 = *s2;
+
+ if (u1 != u2)
+ return u1 - u2;
+ }
+
+ return 0;
+} \ No newline at end of file