X-Git-Url: http://git.subgeniuskitty.com/pforth/.git/blobdiff_plain/bb6b2dcdd9acffabfd373c4c3f6b64a9cc43f335..1f99f95d6a7eecc05cae8fb357f9b7bf564c2725:/csrc/pf_clib.c diff --git a/csrc/pf_clib.c b/csrc/pf_clib.c index ac0beee..d03fdbb 100644 --- a/csrc/pf_clib.c +++ b/csrc/pf_clib.c @@ -1,64 +1,67 @@ -/* @(#) pf_clib.c 96/12/18 1.12 */ -/*************************************************************** -** Duplicate functions from stdlib for PForth based on 'C' -** -** This code duplicates some of the code in the 'C' lib -** because it reduces the dependency on foreign libraries -** for monitor mode where no OS is available. -** -** Author: Phil Burk -** Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom -** -** The pForth software code is dedicated to the public domain, -** and any third party may reproduce, distribute and modify -** the pForth software code or any derivative works thereof -** without any compensation or license. The pForth software -** code is provided on an "as is" basis without any warranty -** of any kind, including, without limitation, the implied -** warranties of merchantability and fitness for a particular -** purpose and their equivalents under the laws of any jurisdiction. -** -**************************************************************** -** 961124 PLB Advance pointers in pfCopyMemory() and pfSetMemory() -***************************************************************/ - -#include "pf_all.h" - -#ifdef PF_NO_CLIB -/* Count chars until NUL. Replace strlen() */ -#define NUL ((char) 0) -cell pfCStringLength( const char *s ) -{ - cell len = 0; - while( *s++ != NUL ) len++; - return len; -} - -/* void *memset (void *s, int32 c, size_t n); */ -void *pfSetMemory( void *s, cell c, cell n ) -{ - uint8 *p = s, byt = (uint8) c; - while( (n--) > 0) *p++ = byt; - return s; -} - -/* void *memccpy (void *s1, const void *s2, int32 c, size_t n); */ -void *pfCopyMemory( void *s1, const void *s2, cell n) -{ - uint8 *p1 = s1; - const uint8 *p2 = s2; - while( (n--) > 0) *p1++ = *p2++; - return s1; -} - -#endif /* PF_NO_CLIB */ - -char pfCharToUpper( char c ) -{ - return (char) ( ((c>='a') && (c<='z')) ? (c - ('a' - 'A')) : c ); -} - -char pfCharToLower( char c ) -{ - return (char) ( ((c>='A') && (c<='Z')) ? (c + ('a' - 'A')) : c ); -} +/* @(#) pf_clib.c 96/12/18 1.12 */ +/*************************************************************** +** Duplicate functions from stdlib for PForth based on 'C' +** +** This code duplicates some of the code in the 'C' lib +** because it reduces the dependency on foreign libraries +** for monitor mode where no OS is available. +** +** Author: Phil Burk +** Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom +** +** Permission to use, copy, modify, and/or distribute this +** software for any purpose with or without fee is hereby granted. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL +** THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +** CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING +** FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +** CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +** OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +** +**************************************************************** +** 961124 PLB Advance pointers in pfCopyMemory() and pfSetMemory() +***************************************************************/ + +#include "pf_all.h" + +#ifdef PF_NO_CLIB +/* Count chars until NUL. Replace strlen() */ +#define NUL ((char) 0) +cell_t pfCStringLength( const char *s ) +{ + cell_t len = 0; + while( *s++ != NUL ) len++; + return len; +} + +/* void *memset (void *s, cell_t c, size_t n); */ +void *pfSetMemory( void *s, cell_t c, cell_t n ) +{ + uint8_t *p = s, byt = (uint8_t) c; + while( (n--) > 0) *p++ = byt; + return s; +} + +/* void *memccpy (void *s1, const void *s2, cell_t c, size_t n); */ +void *pfCopyMemory( void *s1, const void *s2, cell_t n) +{ + uint8_t *p1 = s1; + const uint8_t *p2 = s2; + while( (n--) > 0) *p1++ = *p2++; + return s1; +} + +#endif /* PF_NO_CLIB */ + +char pfCharToUpper( char c ) +{ + return (char) ( ((c>='a') && (c<='z')) ? (c - ('a' - 'A')) : c ); +} + +char pfCharToLower( char c ) +{ + return (char) ( ((c>='A') && (c<='Z')) ? (c + ('a' - 'A')) : c ); +}