Adjusted tolower() and toupper() to https://github.com/cc65/cc65/pull/997

For some reason or another both the author of the PR in question and its reviewers didn't notice that the two functions in question were totally overlooked.
This commit is contained in:
Oliver Schmidt
2020-04-02 11:15:53 +02:00
parent 65dd931d22
commit df015f4766
2 changed files with 38 additions and 26 deletions

View File

@@ -1,21 +1,27 @@
; toupper.s
;
; Ullrich von Bassewitz, 02.06.1998
; This file is part of
; cc65 - a freeware C compiler for 6502 based systems
;
; https://cc65.github.io
;
; See "LICENSE" file for legal information.
;
; int toupper (int c);
;
.export _toupper
.import __ctype
.include "ctype.inc"
.import ctype_preprocessor
_toupper:
cpx #$00 ; Outside valid range?
bne L9 ; If so, return the argument unchanged
tay ; Get c into Y
lda __ctype,y ; Get character classification
lsr a ; Get bit 0 (lower char) into carry
tya ; Get C back into A
bcc L9 ; Jump if not lower char
clc
adc #<('A'-'a') ; make upper case char
L9: rts ; CC are set
tay ; save char
jsr ctype_preprocessor ; (always clears X)
bcc @L2 ; out of range?
@L1: tya ; if so, return the argument unchanged
rts
@L2: and #CT_LOWER ; lower case char?
beq @L1 ; jump if no
tya ; restore char
adc #<('A'-'a') ; make upper case char (ctype_preprocessor ensures carry clear)
rts