11/26 日に行った B-Free プロジェクトミーティング・カーネルグループの議
事録です。
今回は、ファイルマネージャ、プロセスマネージャの API 内容を相談するは
ずでしたが、B-Free で TAD と 準 TAD のどちらを採用すべきかの議論になっ
てしまいました。
---------------------------------------------------------------------
参加者:Joy さん
電脳丸さん、
藤永さん
隆一
---------------------------------------------------------------------
1. ファイルシステムマネージャ API 内容レビュー
1) ファイルマネージャ API の変更点
(1) 型の置き換え
WORD -> W
LONG -> W
BPTR -> B*
TCODE -> B
LINKPTR -> LINKP
UWORD -> UH
-> UW
(2) 拡張したもの
UH -> W
(3) 符号のあつかいについて
・ビットパターンが意味をもつものについては符号無しに
(4) システムコール名の変更
fil_sts -> ref_fil
ofl_sts -> ref_ofl
lnk_sts -> ref_lnk
fls_sts -> ref_fls
2. B-Free に採用するのは TAD か準TAD かの議論
(カーネルグループの打ち合わせのうちほとんどの時間はこの議論に費しました)
議論の主旨:
ファイルマネージャが見る文字コードは準 TAD に準拠したものか、それと
も TAD に準拠したものか。
ファイルマネージャではパス名やファイルシステム名などで文字列を使用す
る。パス名の中で特別の意味をもつ文字 (パス名の切れ目を表わす 0xff21
等) がある。それらの特別の意味をもつ文字を判定する時、準 TAD (つまり、
今の 1B/V1) に準拠した方式だとそのまま 2 バイト文字を 2 バイト整数と
して判定できる (0xff21 という整数をそのまま認識する)。
逆に TAD を使用した場合文字列中では 0xff, 0x21 となり、リトルエンディ
アンのマシンではそのまま 2 バイト整数として見ると 0x21ff となり TAD
-> リトルエンディアンの整数への変換が必要となる。また、TAD の中で複
雑なデータを規定しているものがある。それらのデータをファイルに対して
読み取り or 書きする場合には、TAD データ中の要素毎にリトルエンディア
ンへの変換が必要になる。
準 TAD を使用した場合、言語切換えコード等のあらかじめ長さが分からな
いエスケープシーケンスがきた場合に問題がある。TAD では、言語切換えコー
ドのシーケンスとして 0xFE、言語コード という 2 バイトによって言語を
切換える。このとき言語コードとして 0xFE がきた場合には、さらに次のバ
イトが言語切換えコードを表すことになっている。つまり言語切換えコード
は、長さが可変長となっている。準 TAD では、言語切換えコードは、バイ
ト列では、<言語コード>、0xFE となっている。0xFE が 2 バイト以上続い
た場合(言語切換えのエスケープコードが 2 バイト続いた場合) の判定は難
しい。
準 TAD の場合、1B 等の既存の BTRON のデータがそのまま使用できるとい
う利点がある。
o 準 TAD と TAD の比較
-------------------------------------------------------------------------
準TAD TAD
-------------------------------------------------------------------------
AP への影響 エスケープシーケンスの エンディアン変換
判定ができない。 (TAD -> リトルエンディアン)
あるいは制限が必要
準 TAD -> TAD の変換 不要
プログラムが必要
-------------------------------------------------------------------------
マネージャへの エスケープシーケンスの エンディアン変換
影響 判定ができない。 (TAD -> リトルエンディアン)
あるいは制限が必要
-------------------------------------------------------------------------
--- B-Free プロジェクト実行中! 詳細はこの WWW へ -> (http://www.st.rim.or.jp/~isoyama/b-free)内藤隆一 (ggc00661@niftyserve.or.jp/night@bfree.rim.or.jp)