]> git.sur5r.net Git - cc65/blob - libsrc/common/stricmp.s
Added lots of functions from time.h
[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, __cdiff
11         .importzp       ptr1, ptr2, tmp1
12
13
14 _stricmp:
15 _strcasecmp:
16         sta     ptr2            ; Save s2
17         stx     ptr2+1
18         jsr     popax           ; get s1
19         sta     ptr1
20         stx     ptr1+1
21         ldy     #0
22
23 loop:   lda     (ptr2),y        ; get char from second string
24         tax
25         lda     __ctype,x       ; get character classification
26         and     #$01            ; lower case char?
27         beq     L1              ; jump if no
28         txa                     ; get character back
29         clc
30         adc     __cdiff         ; make upper case char
31         tax                     ;
32 L1:     stx     tmp1            ; remember upper case equivalent
33
34         lda     (ptr1),y        ; get character from first string
35         tax
36         lda     __ctype,x       ; get character classification
37         and     #$01            ; lower case char?
38         beq     L2              ; jump if no
39         txa                     ; get character back
40         clc
41         adc     __cdiff         ; make upper case char
42         tax
43
44 L2:     cpx     tmp1            ; compare characters
45         bne     L3
46         txa                     ; end of strings?
47         beq     L5              ; a/x both zero
48         iny
49         bne     loop
50         inc     ptr1+1
51         inc     ptr2+1
52         bne     loop
53
54 L3:     bcs     L4
55         ldx     #$FF
56         rts
57
58 L4:     ldx     #$01
59 L5:     rts