;
; Ullrich von Bassewitz, 03.06.1998
;
; int stricmp (const char* s1, const char* s2);		/* DOS way */
; int strcasecmp (const char* s1, const char* s2);	/* UNIX way */
;

 	.export		_stricmp, _strcasecmp
	.import		popax
	.import		__ctype
	.importzp	ptr1, ptr2, tmp1

        .include        "ctype.inc"

_stricmp:
_strcasecmp:
     	sta	ptr2	       	; Save s2
     	stx	ptr2+1
     	jsr	popax 	       	; get s1
     	sta	ptr1
     	stx	ptr1+1
     	ldy	#0

loop:  	lda	(ptr2),y       	; get char from second string
	tax
	lda	__ctype,x      	; get character classification
       	and    	#CT_LOWER       ; lower case char?
	beq	L1	       	; jump if no
	txa		       	; get character back
	clc
	adc	#<('A'-'a')     ; make upper case char
	tax			;
L1:	stx    	tmp1   	       	; remember upper case equivalent

	lda	(ptr1),y	; get character from first string
	tax
	lda	__ctype,x	; get character classification
	and	#CT_LOWER       ; lower case char?
       	beq    	L2		; jump if no
	txa	  		; get character back
	clc
       	adc    	#<('A'-'a')     ; make upper case char
	tax
                                
L2:	cpx	tmp1		; compare characters
	bne    	L3
	txa	  		; end of strings?
  	beq	L5		; a/x both zero
  	iny
  	bne	loop
  	inc	ptr1+1
  	inc	ptr2+1
  	bne	loop

L3:	bcs	L4
	ldx	#$FF
	rts

L4:	ldx	#$01
L5:	rts
