]> git.sur5r.net Git - cc65/blob - libsrc/common/strcat.s
Fixed a bug
[cc65] / libsrc / common / strcat.s
1 ;
2 ; Ullrich von Bassewitz, 31.05.1998
3 ;
4 ; char* strcat (char* dest, const char* src);
5 ;
6
7         .export         _strcat
8         .import         popax
9         .importzp       ptr1, ptr2, ptr3
10
11 _strcat:
12         sta     ptr1            ; Save src
13         stx     ptr1+1
14         jsr     popax           ; Get dest
15         sta     ptr2
16         stx     ptr2+1
17         sta     ptr3            ; Remember for function return
18         stx     ptr3+1
19         ldy     #0
20
21 ; find end of dest
22
23 sc1:    lda     (ptr2),y
24         beq     sc2
25         iny
26         bne     sc1
27         inc     ptr2+1
28         bne     sc1
29
30 ; end found, get offset in y into pointer
31
32 sc2:    tya
33         clc
34         adc     ptr2
35         sta     ptr2
36         bcc     sc3
37         inc     ptr2+1
38
39 ; copy src
40
41 sc3:    ldy     #0
42 sc4:    lda     (ptr1),y
43         sta     (ptr2),y
44         beq     sc5
45         iny
46         bne     sc4
47         inc     ptr1+1
48         inc     ptr2+1
49         bne     sc4
50
51 ; done, return pointer to dest
52
53 sc5:    lda     ptr3
54         ldx     ptr3+1
55         rts
56
57