From c024ddbdb29fb3074264349207a2c310f250e3cf Mon Sep 17 00:00:00 2001 From: izydorst Date: Sat, 21 Dec 2002 00:05:51 +0000 Subject: [PATCH] added bzero implementation git-svn-id: svn://svn.cc65.org/cc65/trunk@1812 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/geos/common/memset.s | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/libsrc/geos/common/memset.s b/libsrc/geos/common/memset.s index e52437614..74005b0e9 100644 --- a/libsrc/geos/common/memset.s +++ b/libsrc/geos/common/memset.s @@ -1,21 +1,41 @@ ; ; void* memset (void* ptr, int c, size_t n); +; void* _bzero (void* ptr, size_t n); +; void bzero (void* ptr, size_t n); ; ; Maciej 'YTM/Elysium' Witkowiak, 15.07.2001 ; +; NOTE: bzero will return it's first argument as memset does. It is no problem +; to declare the return value as void, since it may be ignored. _bzero +; (note the leading underscore) is declared with the proper return type, +; because the compiler will replace memset by _bzero if the fill value +; is zero, and the optimizer looks at the return type to see if the value +; in a/x is of any use. - .export _memset + + .export _memset, _bzero, __bzero .import popa, popax .include "../inc/jumptab.inc" .include "../inc/geossym.inc" +_bzero: +__bzero: + sta r0L + stx r0H + lda #0 + sta r2L ; fill with zeros + beq common + _memset: sta r0L stx r0H jsr popax sta r2L - jsr popax +common: jsr popax sta r1L stx r1H - jmp FillRam + jsr FillRam + lda r1L ; restore ptr and pass as result + ldx r1H + rts