;
; Ullrich von Bassewitz, 02.06.1998
;
; char* strlower (char* s);
; char* strlwr (char* s);
;
; Non-ANSI
;

 	.export		_strlower, _strlwr
	.import		popax
	.import		__ctype
	.importzp	ptr1, ptr2

        .include        "ctype.inc"

_strlower:
_strlwr:
	sta	ptr1	       	; Save s (working copy)
	stx	ptr1+1
	sta	ptr2
	sta	ptr2+2	       	; save function result
	ldy	#0

loop:	lda    	(ptr1),y       	; get character
	beq	L9	       	; jump if done
	tax
	lda	__ctype,x      	; get character classification
       	and    	#CT_UPPER       ; upper case char?
	beq	L1	       	; jump if no
	txa		       	; get character back into accu
	sec
	sbc	#<('A'-'a')     ; make lower case char
	sta	(ptr1),y       	; store back
L1:	iny	    		; next char
	bne	loop
	inc	ptr1+1		; handle offset overflow
	bne	loop		; branch always

; Done, return the argument string

L9:	lda	ptr2
	ldx	ptr2+1
	rts



