]> git.sur5r.net Git - cc65/blob - libsrc/common/stricmp.s
Removed (pretty inconsistently used) tab chars from source code base.
[cc65] / libsrc / common / stricmp.s
1 ;
2 ; Ullrich von Bassewitz, 03.06.1998
3 ;
4 ; int stricmp (const char* s1, const char* s2);         /* DOS way */
5 ; int strcasecmp (const char* s1, const char* s2);      /* UNIX way */
6 ;
7
8         .export         _stricmp, _strcasecmp
9         .import         popax
10         .import         __ctype
11         .importzp       ptr1, ptr2, tmp1
12
13         .include        "ctype.inc"
14
15 _stricmp:
16 _strcasecmp:
17         sta     ptr2            ; Save s2
18         stx     ptr2+1
19         jsr     popax           ; get s1
20         sta     ptr1
21         stx     ptr1+1
22         ldy     #0
23
24 loop:   lda     (ptr2),y        ; get char from second string
25         tax
26         lda     __ctype,x       ; get character classification
27         and     #CT_LOWER       ; lower case char?
28         beq     L1              ; jump if no
29         txa                     ; get character back
30         clc
31         adc     #<('A'-'a')     ; make upper case char
32         tax                     ;
33 L1:     stx     tmp1            ; remember upper case equivalent
34
35         lda     (ptr1),y        ; get character from first string
36         tax
37         lda     __ctype,x       ; get character classification
38         and     #CT_LOWER       ; lower case char?
39         beq     L2              ; jump if no
40         txa                     ; get character back
41         clc
42         adc     #<('A'-'a')     ; make upper case char
43         tax
44                                 
45 L2:     cpx     tmp1            ; compare characters
46         bne     L3
47         txa                     ; end of strings?
48         beq     L5              ; a/x both zero
49         iny
50         bne     loop
51         inc     ptr1+1
52         inc     ptr2+1
53         bne     loop
54
55 L3:     bcs     L4
56         ldx     #$FF
57         rts
58
59 L4:     ldx     #$01
60 L5:     rts