]> git.sur5r.net Git - cc65/blob - libsrc/common/strlower.s
This commit was generated by cvs2svn to compensate for changes in r2,
[cc65] / libsrc / common / strlower.s
1 ;
2 ; Ullrich von Bassewitz, 02.06.1998
3 ;
4 ; char* strlower (char* s);
5 ; char* strlwr (char* s);
6 ;
7 ; Non-ANSI
8 ;
9
10         .export         _strlower, _strlwr
11         .import         popax
12         .import         __ctype, __cdiff
13         .importzp       ptr1, ptr2
14
15 _strlower:
16 _strlwr:
17         sta     ptr1            ; Save s (working copy)
18         stx     ptr1+1          
19         sta     ptr2
20         sta     ptr2+2          ; save function result
21         ldy     #0
22
23 loop:   lda     (ptr1),y        ; get character
24         beq     L9              ; jump if done
25         tax
26         lda     __ctype,x       ; get character classification
27         and     #$02            ; upper case char?
28         beq     L1              ; jump if no
29         txa                     ; get character back into accu
30         sec
31         sbc     __cdiff         ; make lower case char
32         sta     (ptr1),y        ; store back
33 L1:     iny                     ; next char
34         bne     loop
35         inc     ptr1+1          ; handle offset overflow
36         bne     loop            ; branch always
37
38 ; Done, return the argument string
39
40 L9:     lda     ptr2
41         ldx     ptr2+1
42         rts
43
44
45