dtkライブラリについての簡単な説明。

構成：
    dtk1s0c : tek1サブセット（stk1）対応展開ルーチン C版
    dtk1s0s : tek1サブセット（stk1）対応展開ルーチン ASKA版
    dtk2s0f : tek2サブセット（stk2）対応展開ルーチン C版
    dtk2s0r : tek2サブセット（stk2）対応展開ルーチン ASKA版
    dtk5f0d : tek5フルセット対応展開ルーチン C版
    dtk5f0r : tek5フルセット対応展開ルーチン ASKA版
    dtk5s0d : tek5サブセット（stk5）対応展開ルーチン C版
    dtk5s0r : tek5サブセット（stk5）対応展開ルーチン ASKA版

  いずれもOSACMP形式で圧縮されたメモリ上のデータをメモリ上に展開するためのもの
です。

  フルセット用のルーチンではもちろんサブセットのデータも展開できます。

  ライブラリはどれもdtk**.cかdtk**.askのみで、他はサンプルのためのものでしかあ
りません。関数はいずれもこの2つが用意されています。

/* ライブラリがサポートできるフォーマットであるかの簡易チェック */
int tek_checkformat(int siz, UCHAR *p); /* 展開後のサイズを返す */
	/* -1:非osacmp */
	/* -2:osacmpだが対応できない */

/* 実際の展開作業 */
int tek_decode(int siz, UCHAR *p, UCHAR *q); /* 成功したら0 */
	/* 正の値はフォーマットの異常・未対応、負の値はメモリ不足 */

  なお、UCHARはunsigned char、pは圧縮データが格納されているポインタ。
    sizは圧縮されたデータのサイズ、qは展開先です。

  展開後のサイズがわからないと困る場合があると思いますが、それはtek_checkformat
で取得できます。

  推奨される実装方法としては、ファイルを読み込んだ後にtek_checkformatでテストし
て、もし-1が返ってくれば圧縮は掛かっていないのでそのまま利用し、0以上の値が返っ
てきたらtek_decodeで展開した結果を利用するようにすることです。これにより、圧縮
の有無を意識させない利用ができるようになります。

---

  傾向としてはC版はアルゴリズムを素直に書く感じで、ASKA版は展開速度が速くなるよ
うに工夫をしています。移植性が問題になる局面以外では、ASKA版の利用をおすすめし
ます。

  ASKA版の利用にはASKAが必要と思われがちですが、そんなことはありません。コンパ
イル済みのオブジェクトファイルがありますので、リンク時に使えばいいだけです。オ
ブジェクトファイルは、IA-32用のCOFF（win32互換のもので、本来の厳密な意味のCOFF
とは少し異なる）です。おそらくx86用のLinuxなどでもそのまま使えるのではないかと
思われます。

  なお、ASKA版はいずれもmallocをせず、必要なワークエリアはスタックから取ってい
ます。

  最後にASKA版とC版とで、どのくらいの性能差があるのかを示しておきます。
      （テストマシン：EPIA-VE5000）

    テスト対象：make46.sar  （OSASK ver.4.6のソースアーカイブ、tek5）

      dtk5f0d （フルセット C版）   : 0.88[sec]
      dtk5f0r （フルセット ASKA版）: 0.56[sec] (1.57倍)
      （参考） bim2bin -restore    : 0.91[sec]

    テスト対象：make46s.sar  （OSASK ver.4.6のソースアーカイブ、stk5）

      dtk5f0d （フルセット C版）   : 0.77[sec]
      dtk5f0r （フルセット ASKA版）: 0.29[sec] (2.66倍)
      dtk5s0d （サブセット C版）   : 0.47[sec]
      dtk5s0r （サブセット ASKA版）: 0.29[sec] (1.62倍)
      （参考） bim2bin -restore    : 0.81[sec]

  （bim2binの-restoreは無駄な処理をやっているので遅いです。）

  tek5の展開がstk5に比べるとかなり遅いですが、改良すればもう少し速くなると思い
ます。
