Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;*****************************************************************************
  2. ;*
  3. ;*                            Open Watcom Project
  4. ;*
  5. ;*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
  6. ;*
  7. ;*  ========================================================================
  8. ;*
  9. ;*    This file contains Original Code and/or Modifications of Original
  10. ;*    Code as defined in and that are subject to the Sybase Open Watcom
  11. ;*    Public License version 1.0 (the 'License'). You may not use this file
  12. ;*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
  13. ;*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
  14. ;*    provided with the Original Code and Modifications, and is also
  15. ;*    available at www.sybase.com/developer/opensource.
  16. ;*
  17. ;*    The Original Code and all software distributed under the License are
  18. ;*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  19. ;*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
  20. ;*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
  21. ;*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
  22. ;*    NON-INFRINGEMENT. Please see the License for the specific language
  23. ;*    governing rights and limitations under the License.
  24. ;*
  25. ;*  ========================================================================
  26. ;*
  27. ;* Description:  WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
  28. ;*               DESCRIBE IT HERE!
  29. ;*
  30. ;*****************************************************************************
  31.  
  32.  
  33. ;
  34. ;  char *__COPY( char *dst, char *src, unsigned len );
  35. ;
  36. ;
  37. include mdef.inc
  38.  
  39.         name    __copy
  40. _TEXT   segment use32 para public 'CODE'
  41.         assume  cs:_TEXT
  42.  
  43.         public  __COPY
  44.         public  __COPY_
  45.  
  46. __COPY  proc    near
  47. __COPY_ proc    near
  48.         push    edi                     ; save regs
  49.         push    esi                     ; ...
  50.         push    ecx                     ; ...
  51.         mov     edi,16+0[esp]           ; get dst
  52.         mov     esi,16+4[esp]           ; get src
  53.         mov     ecx,16+8[esp]           ; get len
  54.         mov     eax,edi                 ; return with dst ptr in eax
  55.         shr     ecx,2                   ; calc. # of dwords
  56.         rep     movsd                   ; do the copy
  57.         mov     ecx,16+8[esp]           ; get len
  58.         and     ecx,3                   ; plus extra bytes
  59.         rep     movsb                   ; do the copy
  60.         pop     ecx                     ; restore regs
  61.         pop     esi                     ; ...
  62.         pop     edi                     ; ...
  63.         ret     12                      ; return and remove parms
  64. __COPY_ endp
  65. __COPY  endp
  66.  
  67. _TEXT   ends
  68.         end
  69.