|
#include "stack.inc"RSEG CODE
;
; Standard run-time CLIB function
;
; char *strpy(char *dst, char *src)
;
; It's expected that parameters are evaluated FROM RIGHT TO LEFT and placed on stack
;
; Parameter offset definitions:
;
SRC$ = -2 ; Source string pointer
DST$ = 0 ; Destination string pointerPUBLIC strcpy
strcpy:
STK$ALC 0 ; Initiate stack space
STK$PUSH; Save X-register
STK$GET SRC$,; set src pointer
STK$GET DST$,; char *cp = dst; ?1: ld R16, X+ ; while (*cp++ == *src++);
st Z+, R16 ;
tst R16 ;
brne ?1 ;STK$POP
; Restore X-register
STK$GET DST$,; return dst;
STK$RLS ; Release stack space
ret
end
E-mail: info@telesys.ru