1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-31 03:33:04 +00:00
cc65/libsrc/common/tolower.s

30 lines
875 B
ArmAsm
Raw Normal View History

; tolower.s
;
; 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 tolower (int c);
;
.export _tolower, tolowerdirect
.include "ctype.inc"
2020-04-02 22:58:16 +02:00
.import ctypemaskdirect
_tolower:
cpx #$00 ; out of range?
2024-03-19 18:07:17 +01:00
bne out ; if so, return the argument unchanged
tolowerdirect:
2024-03-18 19:52:04 +01:00
pha ; save char
2020-04-02 22:58:16 +02:00
jsr ctypemaskdirect ; get character classification
and #CT_UPPER ; upper case char?
beq @L1 ; jump if no
2024-03-18 19:52:04 +01:00
pla ; restore char
2020-04-02 22:58:16 +02:00
adc #<('a'-'A') ; make lower case char (ctypemaskdirect ensures carry clear)
rts
2024-03-18 19:52:04 +01:00
@L1: pla ; restore char
2024-03-19 18:07:17 +01:00
out: rts