From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/fmemops.c | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/fmemops.c (limited to 'reference/C/CONTRIB/SNIP/fmemops.c') diff --git a/reference/C/CONTRIB/SNIP/fmemops.c b/reference/C/CONTRIB/SNIP/fmemops.c new file mode 100755 index 0000000..081af90 --- /dev/null +++ b/reference/C/CONTRIB/SNIP/fmemops.c @@ -0,0 +1,52 @@ +/* +** FMEMOPS.C - Emulate MSC's far memory functions in BC++ & ZTC++ +** +** Original Copyright 1988-1992 by Bob Stout as part of +** the MicroFirm Function Library (MFL) +** +** This subset version is hereby donated to the public domain. +*/ + +#include +#include +#include + +#if defined(__TURBOC__) || defined(__ZTC__) + +#ifdef __TURBOC__ + #define FAR far +#else + #define FAR _far +#endif + +typedef unsigned char FAR *FarBytePtr; + +void FAR * _fmemcpy(void FAR *dest, void FAR *src, size_t count) +{ + movedata(FP_SEG(src), FP_OFF(src), FP_SEG(dest), FP_OFF(dest), count); + return dest; +} + +void FAR * _fmemmove(void FAR *dest, void FAR *src, size_t count) +{ + void FAR *target = dest; + FarBytePtr to = (FarBytePtr)dest, from = (FarBytePtr)src; + + if (src >= dest) + _fmemcpy(dest, src, count); + else for (to += count, from += count; count; --count) + *--to = *--from; + return target; +} + +void FAR * _fmemset(void FAR *dest, int ch, size_t count) +{ + void FAR *target = dest; + FarBytePtr to = (FarBytePtr)dest; + + for ( ; count; --count) + *to++ = (unsigned char) ch; + return target; +} + +#endif -- cgit v1.2.3-54-g00ecf