S-Code Kernel Level Functions

unsigned char s_gety(scode s)        /* 取出 S-code 中 y-byte 的值 */
unsigned char s_getx(scode s)        /* 取出 S-code 中 x-byte 的值 */
unsigned char s_gets(scode s)        /* 取出 S-code 中 s-byte 的值 */
unsigned char s_gett(scode s)        /* 取出 S-code 中 t-byte 的值 */
以上其實都是 macros,取出一個 S-Code s 的 t, s, x, y 部分的值。 而且這些值應該介於 0 到 255 之間。
scode shift_x(unsigned char n)       /* 將 n 移到 x 的位置 */
scode shift_s(unsigned char n)       /* 將 n 移到 s 的位置 */
scode shift_t(unsigned char n)       /* 將 n 移到 t 的位置 */
以上其實都是 macros,注意 n 應該介於 0 到 255 之間。
scode big5_s(int x, int y);              /* 標準 Big-5 碼轉入 S-code */
big5_s() 將一個 Big-5 碼 (x,y) 轉成 S-code,返回原程式。 big5_s() 不檢查 (x,y) 是否在 Big-5 的正確範圍之內, 原程式需作必要的檢查,才不至於出錯或浪費時間。 此程式只轉換標準 Big-5 碼,不包括倚天或其他公司私下加入的字碼。 如果轉換失敗,比如說進來的碼是一個私人定義的碼,就轉成 S_FAIL。
int s_big5(int *x, int *y, scode s);     /* S-code 轉入標準 Big-5 碼 */
給一個 S-code s 和兩個整數 (x,y) 的地址, s_big5() 假設 s 對應到一個標準 Big-5 字,而 (x,y) 就是其 Big-5 碼。 若轉換成功,返回 1;否則返回 0 而且 (x,y) 值沒有改變。
int s1seq(char n, char m)      /* seq num of CNS L1 Chinese */
int s2seq(char n, char m)      /* seq num of CNS L2 Chinese */
以上其實都是 macros,s1seq() 將一個 CNS 第一字面的字碼 (n,m) 換算成序號 (從 0 開始)。但是第一字面的符號部分不算,故 n >= 0x44。 s2seq() 將一個 CNS 第二字面的字碼 (n,m) 換算成序號。

Created: Jan 14, 1996
Last Revised: Mar 11, 2001
© Copyright 2001 Wei-Chang Shann

shann@math.ncu.edu.tw