6: 2004-06-07 (月) 23:04:45 [6] | 7: 2004-06-08 (火) 07:38:43 [7] | ||
---|---|---|---|
Line 10: | Line 10: | ||
-tek1は、次の1バイトから始まります。 | -tek1は、次の1バイトから始まります。 | ||
--註:OSACMP形式はこの1バイトに先立って16バイトのシグネチャとnバイトの展開後のサイズに関する情報が付属する。これについては後述。 | --註:OSACMP形式はこの1バイトに先立って16バイトのシグネチャとnバイトの展開後のサイズに関する情報が付属する。これについては後述。 | ||
- | --bit0:1です。もしここが0なら以降のバイトに何らかの拡張情報が存在します。 | + | --bit0:1です。もしここが0ならそれは拡張情報をもつ先行バイトで、以下の意味を持つのはbit0が1になっているバイトです。 |
- | ---実はこの先頭バイトがs7符号になっている。 | + | ---実はこの先頭バイト自身がs7s符号になっている。 |
--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です。 | ||
--bit6:通常は0です。1だとブロックごとに圧縮形式が変えられるモードです。 | --bit6:通常は0です。1だとブロックごとに圧縮形式が変えられるモードです。 | ||
- | --bit7:将来の拡張のためのビットで常にゼロです。 | + | --bit7:通常は0です。1だと以下の「tek1s x ブロック数」が始まる直前に、これをスキップするためのs7s符号が先行します(ECCなどがある場合はtek1sのかたまりのあとにまとめておかれるので、そこへアクセスするために存在する)。 |
-tek1では展開後のサイズに関する情報はフォーマットの中には含まれません。これは展開時に既知であるとします。OSACMP形式の場合はOSACMPヘッダの中に展開後のサイズが記録されているので問題ありません。 | -tek1では展開後のサイズに関する情報はフォーマットの中には含まれません。これは展開時に既知であるとします。OSACMP形式の場合はOSACMPヘッダの中に展開後のサイズが記録されているので問題ありません。 | ||
-その展開後のサイズを上記のブロックサイズで割って、いくつのブロックがアーカイブに含まれるか計算します。このブロック数によって、これ以降のフォーマットが決まります。 | -その展開後のサイズを上記のブロックサイズで割って、いくつのブロックがアーカイブに含まれるか計算します。このブロック数によって、これ以降のフォーマットが決まります。 | ||
--レベル0フォーマット:1ブロック | --レベル0フォーマット:1ブロック | ||
- | --レベル1フォーマット:2~256ブロック(bit6が1なら、1ブロックでもこれになる) | + | --レベル1フォーマット:2~256ブロック |
--レベル2フォーマット:257~65536ブロック | --レベル2フォーマット:257~65536ブロック | ||
--レベル3フォーマット:63357~16777216ブロック | --レベル3フォーマット:63357~16777216ブロック | ||
Line 30: | Line 30: | ||
-レベル0の場合、次のバイトからtek1sフォーマットになります。 | -レベル0の場合、次のバイトからtek1sフォーマットになります。 | ||
-レベル1の場合、次のバイトからは以下のようになります。 | -レベル1の場合、次のバイトからは以下のようになります。 | ||
- | --(1)s7符号で書いた(2)の長さ | + | --(1)s7s符号で書いた(2)の長さ |
--(2)tek1h | --(2)tek1h | ||
--(3)tek1s x ブロック数 | --(3)tek1s x ブロック数 | ||
-レベル2の場合、次のバイトからは以下のようになります。 | -レベル2の場合、次のバイトからは以下のようになります。 | ||
- | --(1)s7符号で書いた(2)の長さ | + | --(1)s7s符号で書いた(2)の長さ |
--(2)tek1h | --(2)tek1h | ||
- | --(3)s7符号で書いた(4)の長さ | + | --(3)s7s符号で書いた(4)の長さ |
--(4)tek1h x (2~256個) | --(4)tek1h x (2~256個) | ||
--(5)tek1s x ブロック数 | --(5)tek1s x ブロック数 | ||
-レベル3の場合、次のバイトからは以下のようになります。 | -レベル3の場合、次のバイトからは以下のようになります。 | ||
- | --(1)s7符号で書いた(2)の長さ | + | --(1)s7s符号で書いた(2)の長さ |
--(2)tek1h | --(2)tek1h | ||
- | --(3)s7符号で書いた(4)の長さ | + | --(3)s7s符号で書いた(4)の長さ |
--(4)tek1h x (2~256個) | --(4)tek1h x (2~256個) | ||
- | --(5)s7符号で書いた(6)の長さ | + | --(5)s7s符号で書いた(6)の長さ |
--(6)tek1h x (257~65536個) | --(6)tek1h x (257~65536個) | ||
--(7)tek1s x ブロック数 | --(7)tek1s x ブロック数 | ||
-tek1hの役割は、ランダムアクセスの際にブロックがどこから始まっているかを手早く見つけるためのもので、256個以上の場合は階層を成します。 | -tek1hの役割は、ランダムアクセスの際にブロックがどこから始まっているかを手早く見つけるためのもので、256個以上の場合は階層を成します。 | ||
+ | -最初のバイトでbit7が1だった場合、tek1sが始まる直前にs7s符号がおかれますが、その値は、「tek1s群の総サイズ(バイト単位)-1」です。 | ||
+ | -また上記で示されるtek1h群の長さは実際のバイト数から2を減じて記載されています。 | ||
* tek1s | * tek1s |
(This host) = http://osask.net