3: 2004-05-31 (月) 21:21:42 [6] | 4: 2004-06-02 (水) 13:09:27 [7] | ||
---|---|---|---|
Line 9: | Line 9: | ||
--註:OSACMP形式はこの1バイトに先立って16バイトのシグネチャとnバイトの展開後のサイズに関する情報が付属する。これについては後述。 | --註:OSACMP形式はこの1バイトに先立って16バイトのシグネチャとnバイトの展開後のサイズに関する情報が付属する。これについては後述。 | ||
--bit0:0です。もしここが1なら以降のバイトに何らかの拡張情報が存在します。 | --bit0:0です。もしここが1なら以降のバイトに何らかの拡張情報が存在します。 | ||
+ | ---実はこの先頭バイトがs7符号になっている。 | ||
--bit1:0です。tek2ではここが1になる場合もありますが、tek1では常に0です。 | --bit1:0です。tek2ではここが1になる場合もありますが、tek1では常に0です。 | ||
--bit2-5:ブロックサイズです。0001ならブロックサイズ512バイト、0010なら1KB、・・・0111ならブロックサイズ32KB、・・・1111ならブロックサイズ8MBです。 | --bit2-5:ブロックサイズです。0001ならブロックサイズ512バイト、0010なら1KB、・・・0111ならブロックサイズ32KB、・・・1111ならブロックサイズ8MBです。 | ||
Line 16: | Line 17: | ||
-その展開後のサイズを上記のブロックサイズで割って、いくつのブロックがアーカイブに含まれるか計算します。このブロック数によって、これ以降のフォーマットが決まります。 | -その展開後のサイズを上記のブロックサイズで割って、いくつのブロックがアーカイブに含まれるか計算します。このブロック数によって、これ以降のフォーマットが決まります。 | ||
--レベル0フォーマット:1ブロック | --レベル0フォーマット:1ブロック | ||
- | --レベル1フォーマット:2~256ブロック(bit6が1なら、1ブロックの場合もある) | + | --レベル1フォーマット:2~256ブロック(bit6が1なら、1ブロックでもこれになる) |
--レベル2フォーマット:257~65536ブロック | --レベル2フォーマット:257~65536ブロック | ||
--レベル3フォーマット:63357~16777216ブロック | --レベル3フォーマット:63357~16777216ブロック | ||
Line 57: | Line 58: | ||
--(1)まず符号寿命Aと符号寿命Bを寿命切れにセット(これらはただの整数カウンタです)。 | --(1)まず符号寿命Aと符号寿命Bを寿命切れにセット(これらはただの整数カウンタです)。 | ||
--(2)もし符号寿命Aが寿命切れだったら、byとlzのUC0符号パラメータとこれらの寿命を読み込む。 | --(2)もし符号寿命Aが寿命切れだったら、byとlzのUC0符号パラメータとこれらの寿命を読み込む。 | ||
+ | ---フォーマット的には、寿命、by、lzの順番 | ||
--(3)符号寿命Aを1カウント進めて年をとらせる。 | --(3)符号寿命Aを1カウント進めて年をとらせる。 | ||
--(4)byの値を整数で取得。その値に1を足す。 | --(4)byの値を整数で取得。その値に1を足す。 | ||
Line 63: | Line 65: | ||
--(7)lzの値を整数で取得。その値に1を足す。この回数だけ(8)~(12)を繰り返す。 | --(7)lzの値を整数で取得。その値に1を足す。この回数だけ(8)~(12)を繰り返す。 | ||
--(8)もし符号寿命Bが寿命切れだったら、dsとcpのUC0符号パラメータとこれらの寿命を読み込む。 | --(8)もし符号寿命Bが寿命切れだったら、dsとcpのUC0符号パラメータとこれらの寿命を読み込む。 | ||
+ | ---フォーマット的には、寿命、ds、cp、cpの最低値(2bit)の順番 | ||
--(9)符号寿命Bを1カウント進めて年をとらせる。 | --(9)符号寿命Bを1カウント進めて年をとらせる。 | ||
--(10)dsの値を整数で取得。これに-1をXOR。そうすると、-1以下の整数になる。これをdとしよう。 | --(10)dsの値を整数で取得。これに-1をXOR。そうすると、-1以下の整数になる。これをdとしよう。 | ||
Line 87: | Line 90: | ||
--s7sで読み取った際に3バイトで終わったのなら0x4080を加える。 | --s7sで読み取った際に3バイトで終わったのなら0x4080を加える。 | ||
--s7sで読み取った際に4バイトで終わったのなら0x204080を加える。 | --s7sで読み取った際に4バイトで終わったのなら0x204080を加える。 | ||
+ | --s7sで読み取った際に5バイトで終わったのなら0x10204080を加える。 | ||
--以下略。 | --以下略。 | ||
(This host) = http://osask.net