forked from KolibriOS/kolibrios
kernel: Bring back XFS: v4 and v5 disk formats are supported now.
Read-only. Writing is not planned. git-svn-id: svn://kolibrios.org@7736 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
117
kernel/trunk/unicode.inc
Normal file
117
kernel/trunk/unicode.inc
Normal file
@@ -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
|
Reference in New Issue
Block a user