Hi, > xor 0xffff is exactly the same things a mod 2**16. You must be talking > about something else.
I understand it like this: xor 0xffff inverts the lowest 16 bits. mod 2**16 zeroes the bits above the lowest 16 bits. Like: and 0xffff. The CD-TEXT CRC algorithm is ITU-T V.41 with the additional prescription of inverting the 16 result bits. MMC-3 Annex J states: "CRC Field consists of 2 bytes. Initiator system may use these bytes to check errors in the Pack. The polynomial is X16 + X12 + X5 + 1. All bits shall be inverted." My understanding of this prescription is backed by Leon's example data, and by the fact that my burner refused to accept the CD-TEXT data when i altered the 0x8f packs after computing their CRCs. (Educational mistake.) The drive took the data as soon as i corrected those 3 CRCs. > I'm just suggesting that rather than describe things bottom > up, one might keep a human focus. I am watching with high interest how you shape the libcdio documentation and will probably make use of it when it does not move any more. Have a nice day :) Thomas