Sync は同期信号です。 Sync は全てのデータに共通で、 その12バイトは次の通りです。
| 00h | FFh | FFh | FFh | FFh | FFh | FFh | FFh | FFh | FFh | FFh | 00h |
ヘッダは4バイトで、各表の Sector MSF Address と Data mode を合わせた部分になります。
| 12 | 13 | 14 | 15 |
| Minute (BCD) |
Second (BCD) |
Frame (BCD) |
Mode |
時間は、リードインを除き、CD全体のデータの基点からの経過時間で、BCD形式で表されます。
Mode は、正確には、0〜1 ビットでデータモードを表します。 2〜7 ビットにも意味はあるのですが、割愛します。0を入れておけば多分問題ありません。
Mode2 の Form1と2 にあるサブヘッダは、16〜19バイトと20〜23バイトとで同じ内容が2回続きます。 (繰り返されていることを確認することで、Mode2と認識します。)
| 16 (20) |
17 (21) |
18 (22) |
19 (23) |
| File number | Channel number | Sub-mode | Config information |
Sub-mode のビット5が0のときForm1、1のときForm2になります。
CRC (Cyclic Redundancy Check、巡回冗長検査) は誤りの検出に用いられます。
EDC (Error Detection Code、誤り検出符合) と紹介されている場合もありますが、 一般的なCRC?とは検査多項式が違なるためでしょう。 その検査多項式は、次のようになります。
P(x) = (x16 + x15 + x2 + 1)×(x16 + x2 + x + 1)
P parity と Q parity は、ECC (Error Correction Code、誤り訂正符合) です。 リードソロモン積符号 (RSPC) というらしいです。
これらの検査訂正符号の詳しい内容は他の方に譲ります。 (勉強不足で申し訳ない。)

