Patent ID: 7788504

Claim:
A computer implemented method of selecting data symbols for incorporation within user data to be encoded by an encoder using a multimodal code employing one or more multimodal conversion tables stored in a memory of a computer so as to force the encoder to produce at least one subversive sequence of code words, the method comprising: (a) selecting a first code word from the one or more multimodal conversion tables by accessing the one or more multimodal conversion tables in the memory, which has a digital sum value (DSV) whose absolute value is large enough to cause data reading errors; (b) determining a first data symbol and first state which when encoded may result in the first code word according to the one or more multimodal conversion tables as determined by accessing the one or more multimodal conversion tables in the memory; (c) determining a second data symbol and second state compatible with the first state according to the one or more multimodal conversion tables as determined by accessing the one or more multimodal conversion tables in the memory, determining a second code word which may result by encoding the second data symbol and second state according to the one or more multimodal conversion tables as determined by accessing the one or more multimodal conversion tables in the memory, and pre-pending the second code word to the first code word to form a sequence of code words; (d) pre-pending the second data symbol to the first data symbol to form a sequence of data symbols when an absolute DSV of the sequence of code words is large enough to cause reading errors and also when one of the following conditions applies according to the one or more multimodal conversion tables as determined by accessing the one or more multimodal conversion tables in the memory: there is no alternative first code word which may result by encoding the first data symbol and first state, there is an alternative first code word which may result by encoding the first data symbol and first state but the first code word and a first prior state associated with the first code word are equivalent to the alternative first code word and a first alternative prior state associated with the alternative first code word, or the second code word pre-pended to the alternative first code word is ruled out by run length limiting (RLL) rules; otherwise, removing the second code word from the sequence of code words, determining an alternative first data symbol and first state which when encoded may result in the first code word, and repeating (c) and (d) for the alternative first data symbol.