OSDN Git Service

Renamed the first sample project.
[kozos-expbrd/kozos_expbrd.git] / firm / sample / simple_mp3_player / bootload / lib.c
1 #include "defines.h"
2 #include "serial.h"
3 #include "lib.h"
4
5 void *memset(void *b, int c, long len)
6 {
7   char *p;
8   for (p = b; len > 0; len--)
9     *(p++) = c;
10   return b;
11 }
12
13 void *memcpy(void *dst, const void *src, long len)
14 {
15   char *d = dst;
16   const char *s = src;
17   for (; len > 0; len--)
18     *(d++) = *(s++);
19   return dst;
20 }
21
22 int memcmp(const void *b1, const void *b2, long len)
23 {
24   const char *p1 = b1, *p2 = b2;
25   for (; len > 0; len--) {
26     if (*p1 != *p2)
27       return (*p1 > *p2) ? 1 : -1;
28     p1++;
29     p2++;
30   }
31   return 0;
32 }
33
34 int strlen(const char *s)
35 {
36   int len;
37   for (len = 0; *s; s++, len++)
38     ;
39   return len;
40 }
41
42 char *strcpy(char *dst, const char *src)
43 {
44   char *d = dst;
45   for (;; dst++, src++) {
46     *dst = *src;
47     if (!*src) break;
48   }
49   return d;
50 }
51
52 int strcmp(const char *s1, const char *s2)
53 {
54   while (*s1 || *s2) {
55     if (*s1 != *s2)
56       return (*s1 > *s2) ? 1 : -1;
57     s1++;
58     s2++;
59   }
60   return 0;
61 }
62
63 int strncmp(const char *s1, const char *s2, int len)
64 {
65   while ((*s1 || *s2) && (len > 0)) {
66     if (*s1 != *s2)
67       return (*s1 > *s2) ? 1 : -1;
68     s1++;
69     s2++;
70     len--;
71   }
72   return 0;
73 }
74
75 /* £±Ê¸»úÁ÷¿® */
76 int putc(unsigned char c)
77 {
78   if (c == '\n')
79     serial_send_byte(SERIAL_DEFAULT_DEVICE, '\r');
80   return serial_send_byte(SERIAL_DEFAULT_DEVICE, c);
81 }
82
83 /* £±Ê¸»ú¼õ¿® */
84 unsigned char getc(void)
85 {
86   unsigned char c = serial_recv_byte(SERIAL_DEFAULT_DEVICE);
87   c = (c == '\r') ? '\n' : c;
88   putc(c); /* ¥¨¥³¡¼¡¦¥Ð¥Ã¥¯ */
89   return c;
90 }
91
92 /* Ê¸»úÎóÁ÷¿® */
93 int puts(unsigned char *str)
94 {
95   while (*str)
96     putc(*(str++));
97   return 0;
98 }
99
100 /* Ê¸»úÎó¼õ¿® */
101 int gets(unsigned char *buf)
102 {
103   int i = 0;
104   unsigned char c;
105   do {
106     c = getc();
107     if (c == '\n')
108       c = '\0';
109     buf[i++] = c;
110   } while (c);
111   return i - 1;
112 }
113
114 /* ¿ôÃͤÎ16¿Êɽ¼¨ */
115 int putxval(unsigned long value, int column)
116 {
117   char buf[9];
118   char *p;
119
120   p = buf + sizeof(buf) - 1;
121   *(p--) = '\0';
122
123   if (!value && !column)
124     column++;
125
126   while (value || column) {
127     *(p--) = "0123456789abcdef"[value & 0xf];
128     value >>= 4;
129     if (column) column--;
130   }
131
132   puts(p + 1);
133
134   return 0;
135 }