Commit | Line | Data |
---|---|---|
8e9db35f PB |
1 | /* @(#) pf_clib.c 96/12/18 1.12 */ |
2 | /*************************************************************** | |
3 | ** Duplicate functions from stdlib for PForth based on 'C' | |
4 | ** | |
5 | ** This code duplicates some of the code in the 'C' lib | |
6 | ** because it reduces the dependency on foreign libraries | |
7 | ** for monitor mode where no OS is available. | |
8 | ** | |
9 | ** Author: Phil Burk | |
10 | ** Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom | |
11 | ** | |
1f99f95d S |
12 | ** Permission to use, copy, modify, and/or distribute this |
13 | ** software for any purpose with or without fee is hereby granted. | |
14 | ** | |
15 | ** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL | |
16 | ** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED | |
17 | ** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL | |
18 | ** THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR | |
19 | ** CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING | |
20 | ** FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF | |
21 | ** CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
22 | ** OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
8e9db35f PB |
23 | ** |
24 | **************************************************************** | |
25 | ** 961124 PLB Advance pointers in pfCopyMemory() and pfSetMemory() | |
26 | ***************************************************************/ | |
27 | ||
28 | #include "pf_all.h" | |
29 | ||
30 | #ifdef PF_NO_CLIB | |
31 | /* Count chars until NUL. Replace strlen() */ | |
32 | #define NUL ((char) 0) | |
33 | cell_t pfCStringLength( const char *s ) | |
34 | { | |
35 | cell_t len = 0; | |
36 | while( *s++ != NUL ) len++; | |
37 | return len; | |
38 | } | |
39 | ||
40 | /* void *memset (void *s, cell_t c, size_t n); */ | |
41 | void *pfSetMemory( void *s, cell_t c, cell_t n ) | |
42 | { | |
43 | uint8_t *p = s, byt = (uint8_t) c; | |
44 | while( (n--) > 0) *p++ = byt; | |
45 | return s; | |
46 | } | |
47 | ||
48 | /* void *memccpy (void *s1, const void *s2, cell_t c, size_t n); */ | |
49 | void *pfCopyMemory( void *s1, const void *s2, cell_t n) | |
50 | { | |
51 | uint8_t *p1 = s1; | |
52 | const uint8_t *p2 = s2; | |
53 | while( (n--) > 0) *p1++ = *p2++; | |
54 | return s1; | |
55 | } | |
56 | ||
57 | #endif /* PF_NO_CLIB */ | |
58 | ||
59 | char pfCharToUpper( char c ) | |
60 | { | |
61 | return (char) ( ((c>='a') && (c<='z')) ? (c - ('a' - 'A')) : c ); | |
62 | } | |
63 | ||
64 | char pfCharToLower( char c ) | |
65 | { | |
66 | return (char) ( ((c>='A') && (c<='Z')) ? (c + ('a' - 'A')) : c ); | |
67 | } |