]> git.sur5r.net Git - cc65/blob - libsrc/common/strrchr.s
This commit was generated by cvs2svn to compensate for changes in r2,
[cc65] / libsrc / common / strrchr.s
1 ;
2 ; Ullrich von Bassewitz, 31.05.1998
3 ;
4 ; char* strrchr (const char* s, int c);
5 ;
6
7         .export         _strrchr
8         .import         popax
9         .importzp       ptr1, ptr2, tmp1
10
11 _strrchr:
12         sta     tmp1            ; Save c
13         jsr     popax           ; get s
14         sta     ptr1
15         stx     ptr1+1
16         lda     #0              ; function result = NULL
17         sta     ptr2
18         sta     ptr2+1
19         tay
20
21 L1:     lda     (ptr1),y        ; get next char
22         beq     L3              ; jump if end of string
23         cmp     tmp1            ; found?
24         bne     L2              ; jump if no
25
26 ; Remember a pointer to the character
27
28         tya
29         clc
30         adc     ptr1
31         sta     ptr2
32         lda     ptr1+1
33         adc     #$00
34         sta     ptr2+1
35
36 ; Next char
37
38 L2:     iny
39         bne     L1
40         inc     ptr1+1
41         bne     L1              ; jump always
42
43 ; Return the pointer to the last occurrence
44
45 L3:     lda     ptr2
46         ldx     ptr2+1
47         rts