49 lines
1017 B
PHP
49 lines
1017 B
PHP
|
;---------------------------------------------------------------------
|
|||
|
char_toupper:
|
|||
|
; convert character to uppercase, using cp866 encoding
|
|||
|
; in: al=symbol
|
|||
|
; out: al=converted symbol
|
|||
|
cmp al, 'a'
|
|||
|
jb .ret
|
|||
|
cmp al, 'z'
|
|||
|
jbe .az
|
|||
|
cmp al, '<27>'
|
|||
|
jb .ret
|
|||
|
cmp al, '<27>'
|
|||
|
jb .rus1
|
|||
|
cmp al, '<27>'
|
|||
|
ja .ret
|
|||
|
; 0xE0-0xEF -> 0x90-0x9F
|
|||
|
sub al, '<27>'-'<27>'
|
|||
|
.ret:
|
|||
|
ret
|
|||
|
.rus1:
|
|||
|
; 0xA0-0xAF -> 0x80-0x8F
|
|||
|
.az:
|
|||
|
and al, not 0x20
|
|||
|
ret
|
|||
|
;---------------------------------------------------------------------
|
|||
|
char_todown:
|
|||
|
; convert character to uppercase, using cp866 encoding
|
|||
|
; in: al=symbol
|
|||
|
; out: al=converted symbol
|
|||
|
cmp al, 'A'
|
|||
|
jb .ret
|
|||
|
cmp al, 'Z'
|
|||
|
jbe .az
|
|||
|
cmp al, '<27>'
|
|||
|
jb .ret
|
|||
|
cmp al, '<27>'
|
|||
|
jb .rus1
|
|||
|
cmp al, '<27>'
|
|||
|
ja .ret
|
|||
|
; 0x90-0x9F -> 0xE0-0xEF
|
|||
|
add al, '<27>'-'<27>'
|
|||
|
.ret:
|
|||
|
ret
|
|||
|
.rus1:
|
|||
|
; 0x80-0x8F -> 0xA0-0xAF
|
|||
|
.az:
|
|||
|
add al, 0x20
|
|||
|
ret
|
|||
|
;---------------------------------------------------------------------
|