From acee9e74f6bd183b284af028b1f08aab666df9be Mon Sep 17 00:00:00 2001 From: "leleraffa97@hotmail.it" Date: Mon, 19 Jun 2017 15:06:25 +0200 Subject: libc memset, memcmp boot improved program allocation --- sw/z80/libc/include/string.h | 4 ++++ sw/z80/libc/string.c | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) (limited to 'sw/z80/libc') 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 -- cgit v1.2.1