]> git.sur5r.net Git - cc65/blob - libsrc/common/memcmp.s
This commit was generated by cvs2svn to compensate for changes in r2,
[cc65] / libsrc / common / memcmp.s
1 ;
2 ; Ullrich von Bassewitz, 09.06.1998
3 ;
4 ; int memcmp (const void* p1, const void* p2, size_t count);
5 ;
6
7         .export         _memcmp
8         .import         popax, return0
9         .importzp       ptr1, ptr2, ptr3
10
11 _memcmp:
12         sta     ptr3            ; Save count
13         sta     ptr3+1
14         jsr     popax           ; get p2
15         sta     ptr2
16         stx     ptr2+1
17         jsr     popax           ; get p1
18         sta     ptr1
19         stx     ptr1+1
20
21         ldy     #0
22         ldx     ptr3            ; use X as low counter byte
23         beq     L3
24
25 L1:     lda     (ptr1),y
26         cmp     (ptr2),y
27         bne     L5
28         iny
29         bne     L2
30         inc     ptr1+1
31         inc     ptr2+1
32 L2:     txa
33         beq     L3
34         dex
35         jmp     L1
36 L3:     lda     ptr3+1          ; check high byte
37         beq     L4
38         dec     ptr3+1
39         dex                     ; X = $FF
40         bne     L1              ; branch always
41
42 ; Memory areas are equal
43
44 L4:     jmp     return0
45
46 ; Not equal, check which one is greater
47
48 L5:     bcs     L6
49         ldx     #$FF
50         rts
51
52 L6:     ldx     #$01
53         rts
54