[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 3459] Daniel2の圧縮形式.



  こんにちは、川合です。

  Daniel2以降で採用されたファイル圧縮サポートについての詳細を紹
介しておきます。

  この圧縮サポートは、要するにディスクの消費量を抑えて、同時にア
クセススピードを上げるためのテクニックです。ディスクキャッシュの
ヒット率も向上するので、体感速度は大いに改善します。

  圧縮されたファイルは以下の形式になっています。

  最初の16バイト:
    82 FF FF FF 01 00 00 00 4F 53 41 53 4B 43 4D 50

  次の4バイト:
    復元時のファイルサイズ

  それ以降:
    tek0イメージ

  Daniel2以降では、どんなファイルも読み込み時にも最初の16バイト
をチェックし、上記のバイト列と一致したら内部キャッシュを展開され
たものに置き換えます。もちろん自動解凍モードがOFFの場合は、この
チェックをやりません。

  もし現時点でこの圧縮ファイルを作りたい場合は以下のようにします
。sample.txt(123456バイト)を圧縮する場合の例です。

1.osaskcmp.hedというファイルを作り、内容が以下の20バイトになる
    ようにバイナリーエディターで編集する。
      82 FF FF FF 01 00 00 00 4F 53 41 53 4B 43 4D 50
      00 00 00 00

2.sample.txtをsample.orgにリネーム

3.prompt>bim2bin1 input:sample.org output:sample.tek -data -tek0

4.prompt>copy /B osaskcmp.hed+sample.tek sample.txt

5.バイナリーエディターでsample.txtを開き、16〜19バイトを、
      40 e2 01 00
    に書き換える。

  これは明らかに面倒な手順です。そのうちbim2bin2を作ってもっと簡
単にできるようにさせたいです。

  OSASK ver.2.3では多くのファイルが圧縮形式で添付されます。しか
しテキストファイルや.BMPファイルはもしかしたら他の環境で読みたい
・観たいと思う人もいるかもしれないので、圧縮はかけません。このル
ールでいくと本当は.HELも圧縮の対象外にするべきなんですが、これを
やらないとなると一体何のためにこの機能を作ったのかわからなくなっ
てしまうので、圧縮します。もしTOWNSで再生したかったのに・・・と
いう方がおられましたら、OSASK上のmcopyc0で展開してから、持ってい
ってください(そのためにmcopyc0もバンドルされます)。

  また圧縮しても消費セクタ数に変化が無い場合も圧縮はかけません。

  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/