memcpy.s (1627B)
1;-------------------------------------------------------------------------- 2; memcpy.s 3; 4; Copyright (C) 2020, Sergey Belyashov 5; Copyright (c) 2021, Philipp Klaus Krause 6; 7; This library is free software; you can redistribute it and/or modify it 8; under the terms of the GNU General Public License as published by the 9; Free Software Foundation; either version 2, or (at your option) any 10; later version. 11; 12; This library is distributed in the hope that it will be useful, 13; but WITHOUT ANY WARRANTY; without even the implied warranty of 14; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15; GNU General Public License for more details. 16; 17; You should have received a copy of the GNU General Public License 18; along with this library; see the file COPYING. If not, write to the 19; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, 20; MA 02110-1301, USA. 21; 22; As a special exception, if you link this library with other files, 23; some of which are compiled with SDCC, to produce an executable, 24; this library does not by itself cause the resulting executable to 25; be covered by the GNU General Public License. This exception does 26; not however invalidate any other reasons why the executable file 27; might be covered by the GNU General Public License. 28;-------------------------------------------------------------------------- 29 30 .area _CODE 31 32 .globl _memcpy 33 .globl ___memcpy 34 35; The Z80 has the ldir instruction, which is perfect for implementing memcpy(). 36_memcpy: 37___memcpy: 38 ex de, hl 39 pop iy 40 pop bc 41 ld a, c 42 or a, b 43 jr Z, end 44 push de 45 ldir 46 pop de 47end: 48 jp (iy) 49