ctype size optimization

This commit is contained in:
IrgendwerA8
2020-01-02 18:57:03 +01:00
committed by Oliver Schmidt
parent dc5114b071
commit ce80624f62
43 changed files with 1491 additions and 3563 deletions

View File

@@ -1,5 +1,11 @@
; stricmp.s
;
; Ullrich von Bassewitz, 03.06.1998
; This file is part of
; cc65 - a freeware C compiler for 6502 based systems
;
; https://github.com/cc65/cc65
;
; See "LICENSE" file for legal information.
;
; int stricmp (const char* s1, const char* s2); /* DOS way */
; int strcasecmp (const char* s1, const char* s2); /* UNIX way */
@@ -7,9 +13,8 @@
.export _stricmp, _strcasecmp
.import popptr1
.import __ctype
.importzp ptr1, ptr2, tmp1
.importzp ptr1, ptr2, tmp1, tmp2
.import ctype_preprocessor_no_check
.include "ctype.inc"
_stricmp:
@@ -20,27 +25,27 @@ _strcasecmp:
; ldy #0 ; Y=0 guaranteed by popptr1
loop: lda (ptr2),y ; get char from second string
tax
lda __ctype,x ; get character classification
sta tmp2 ; and save it
; get character classification
jsr ctype_preprocessor_no_check
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 #<('A'-'a') ; make upper case char
adc tmp2 ; ctype_preprocessor_no_check ensures carry clear!
sta tmp2 ; remember upper case equivalent
lda (ptr1),y ; get character from first string
tax
lda __ctype,x ; get character classification
L1: lda (ptr1),y ; get character from first string
sta tmp1
; get character classification
jsr ctype_preprocessor_no_check
and #CT_LOWER ; lower case char?
beq L2 ; jump if no
txa ; get character back
clc
adc #<('A'-'a') ; make upper case char
tax
lda #<('A'-'a') ; make upper case char
adc tmp1 ; ctype_preprocessor_no_check ensures carry clear!
sta tmp1 ; remember upper case equivalent
L2: cpx tmp1 ; compare characters
L2: ldx tmp1
cpx tmp2 ; compare characters
bne L3
txa ; end of strings?
beq L5 ; a/x both zero