No changes between revisions
/kernel/trunk/unicode.inc |
0,0 → 1,117 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; ;; |
;; Copyright (C) KolibriOS team 2020-2020. All rights reserved. ;; |
;; Distributed under terms of the GNU General Public License. ;; |
;; Version 2, or (at your option) any later version. ;; |
;; ;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
$Revision$ |
|
unicode.utf8.decode: |
test ecx, ecx |
jz .error |
movzx eax, byte[esi] |
test al, al |
jns .read1 |
shl al, 2 |
jnc .error |
shl al, 1 |
jnc .read2 |
shl al, 1 |
jnc .read3 |
shl al, 1 |
jnc .read4 |
jmp .error |
.read1: |
sub ecx, 1 |
add esi, 1 |
jmp .done |
.read2: |
cmp ecx, 2 |
jb .error |
shl eax, 5 |
mov al, [esi+1] |
shl al, 1 |
jnc .error |
shl al, 1 |
jc .error |
shr eax, 2 |
sub ecx, 2 |
add esi, 2 |
jmp .done |
.read3: |
cmp ecx, 3 |
jb .error |
shl eax, 4 |
mov al, [esi+1] |
shl al, 1 |
jnc .error |
shl al, 1 |
jc .error |
shl eax, 6 |
mov al, [esi+2] |
shl al, 1 |
jnc .error |
shl al, 1 |
jc .error |
shr eax, 2 |
sub ecx, 3 |
add esi, 3 |
jmp .done |
.read4: |
cmp ecx, 4 |
jb .error |
shl eax, 3 |
mov al, [esi+1] |
shl al, 1 |
jnc .error |
shl al, 1 |
jc .error |
shl eax, 6 |
mov al, [esi+2] |
shl al, 1 |
jnc .error |
shl al, 1 |
jc .error |
shl eax, 6 |
mov al, [esi+3] |
shl al, 1 |
jnc .error |
shl al, 1 |
jc .error |
shr eax, 2 |
sub ecx, 4 |
add esi, 4 |
jmp .done |
.error: |
.done: |
ret |
|
|
unicode.cp866.encode: |
call uni2ansi_char |
ret |
|
|
unicode.utf16.encode: |
cmp eax, 0x110000 |
jae .error |
cmp eax, 0x10000 |
jae .write2 |
cmp eax, 0xe000 |
jae .write1 |
cmp eax, 0xd800 |
jb .write1 |
jmp .error |
.write1: |
jmp .done |
.write2: |
sub eax, 0x10000 |
shl eax, 6 |
shr ax, 6 |
or eax, 0xdc00d800 |
jmp .done |
.done: |
.error: |
ret |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |