328eForth
KTTY通訊協定規則
1. 尾端 $06
2. 開頭 $01 表不顯示
3. 文字 UTF-8 編碼
.0x01 可以用 ECHO [ON | OFF] OFF 代替
0x06 可以用 CRLF 代替
這樣每套forth都能交談...
FLOAD 'D:\Win32Forth 615xx\src\lib\Unicode.F'
\ s" 好" >Unicode dump
\ 816B20 | 7D 59 |}Y
\ 000800 - 00D7FF & 00E000 - 00FFFF 61440個代碼
\ xxxxyyyy yyzzzzzz -> 1110xxxx(E0-EF) 10yyyyyy 10zzzzzz
: utf16_3>UTF-8 ( 2byte -- 3byte )
>R
R@ 0xF000 AND 12 RSHIFT 0xE0 OR 16 LSHIFT
R@ 0x0FC0 AND 6 RSHIFT 0x80 or 8 LSHIFT
R> 0x3F AND 0x80 OR
OR OR
;
s" 好" >Unicode drop w@ utf16_3>UTF-8 hex .s DECIMAL
\ E5A5BDh
: UTF-8_3>utf16 ( 3byte -- 2byte )
>r
r@ 0x0F0000 AND 4 RSHIFT
r@ 0x003F00 AND 2 RSHIFT
r> 0x00003F AND
OR OR
;
UTF-8_3>utf16 hex .s DECIMAL
\ 597Dh
3 temp$ c! temp$ 1 + w! \ 多放一個廢碼空間
temp$ count Uni>Asc dump
\ A6 6E |好| ok