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