Abstract:
Error-correcting apparatus and method for detecting and correcting a burst error affecting a plurality of reproduced signals representing adjacent data words groups the signals, calculates syndromes, determines the positions of errors in the reproduced signals and detects burst errors.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to a digital coding method and apparatus for correcting digitally encoded data which have been corrupted by burst errors. This invention is particularly suited for the reproduction of encoded data from data storage media but is also advantageously implemented in other channel coding systems. 
     The reproduction of recorded digital data from a storage medium is commonly an imperfect process. A variety of different physical and environmental conditions can influence the recording and reproduction processes and change the characteristics of a storage medium itself to cause errors in the reproduced data. For example, in magnetic, magneto-optical, and optical disk systems, the surface of the disk may suffer from irregularities such as bubbles in the coating of the disk, scratches marring the disk surface, or the like, resulting from an imperfect manufacturing process or from mishandling of the disk. Additionally, dust and condensation frequently interfere with the operation of recording and reproducing heads utilized in such systems, causing the system to lose synchronization (tracking) with the storage medium or otherwise malfunction, resulting in the misrecording or misreproduction of data. 
     To prevent the reproduction of incorrect data, allocation strategies have been developed to enable a data storage system to physically avoid reading corrupted portions of a storage medium. For example, during the manufacturing of magneto-optical disks, those data sectors of a particular disk determined to be faulty are simply removed from the data map for the disk. Data intended for the faulty sectors are rerouted to alternate adjacent sectors of the disk so that data is not recorded on or reproduced from the faulty sectors and instead, the alternate sectors are utilized. If a sector becomes corrupted after ordinary use of the disk has commenced, the data storage system avoids the corrupt sector by rerouting data intended for or requested from that sector to an alternate sector established in a dedicated region of the disk. A significant drawback of such error avoidance techniques is the allocation of considerable portions of the storage medium as &#34;alternate&#34; areas of data storage, necessarily reducing the overall storage capacity of the medium and, in some instances, increasing the time required to access data. Further, such a technique is incompatible with read-only storage media, such as a compact disc read-only memory (CD-ROM). 
     As an alternative to physical error avoidance techniques, error correction coding methodologies utilizing the reproduced data have been developed to correct error-filled data streams. According to a common error correction technique for writable disk media, portions of data to be recorded are augmented with code data such that the augmented (coded) portions of data satisfy specific mathematical relationships. Upon reproduction of the coded data, some errors introduced by the recording and reproducing processes can be detected by recognizing that the reproduced data does not satisfy the original mathematical relationships. Upon detection of an error, the data reproduction process may be restarted in an attempt to correctly reproduce the data. Alternatively, in certain circumstances, the original recorded data can be reconstructed from the inaccurately reproduced data by altering the reproduced data so that it satisfies the original mathematical relationships. Cyclic redundancy check (CRC) codes and parity bits are often employed for these purposes. Besides reducing the storage capacity of the disk by recording code data along with the information data, such techniques are often overwhelmed by consecutive errors, resulting in the misdetection of errors and necessitating the repeated reproduction of inaccurately reproduced data. 
     Errors in a stream of reproduced data can be roughly categorized as either random errors, which affect relatively short sequences of data and appear at &#34;random&#34; intervals, or burst errors, which affect much longer contiguous sequences of data. Due to the often considerable amount of contiguous data typically corrupted by a burst error, correction of such an error presents a difficult coding challenge. 
     Reed-Solomon (RS) codes (Reed and Solomon, 1960) have proven to be a useful coding technique for detecting and correcting burst errors in satellite communications systems and magnetic and optical recording/reproducing systems. RS codes are symbol-oriented non-binary BCH (Bose, Chaudhuri and Hocquenghem) codes wherein the symbols may represent binary m-bit words. According to a simple application of this technique, given a data stream wherein each word contains k symbols, a codeword consisting of n symbols is produced by augmenting each word of information with n-k &#34;check&#34; symbols. The &#34;distance&#34; between two codewords is defined as the number of corresponding positions in the codewords in which the two codewords contain different symbols. For example, the distance between codewords &#34;vghb&#34; and &#34;cghc&#34; is two because the first and fourth positions in the codewords differ. It follows that the &#34;minimum distance&#34; d for the code can be defined as the least &#34;distance&#34; between any two possible codewords. The three parameters n, k, and d are thus employed to distinguish among codes, e.g. (n, k, d) RS code. 
     Both the error detecting ability and the error correcting ability of a RS error correcting code depend upon the minimum distance of the code. Error correcting ability of a code is governed by the equation 
     
         d≧2t+1                                              (1) 
    
     where d is the minimum distance and t is the number of erroneous symbols in each codeword that can be corrected. For example, if the minimum distance of a code equals 17, then no more than 8 symbols in each codeword can be corrected. Error detecting ability of a code is governed by the equation 
     
         u=d-(2t+1) (u≧0)                                    (2) 
    
     where u is the number of erroneous symbols in each codeword that can be detected. Therefore, if a code having a distance of 17 is chosen such that 8 symbols in each codeword can be corrected, then zero (0) symbols in each codeword can be detected. 
     Extension of the error detection and error correction capabilities of an already efficient RS code thus typically involves increasing the code&#39;s minimum distance d. The minimum distance d is increased by increasing the number of n-k check symbols added to each word of data and, consequently, reducing the amount of information that can be stored on the disk. Such an increase in d also increases the redundancy of the code. 
     OBJECTS AND SUMMARY OF THE INVENTION 
     An object of the present invention is to provide a coding apparatus and method for detecting and correcting relatively long burst errors. 
     Another object of the present invention is to provide a coding apparatus and method for detecting and correcting burst errors in reproduced data originally encoded with a code that cannot detect or correct the burst error itself under ordinary circumstances. 
     Yet another object of the present invention is to extend the error-detecting and error-correcting effectiveness of a code without increasing its minimum distance. 
     Still another object of the present invention is to provide a coding apparatus and method for determining the location and size of a burst error in a quantity of data. 
     In accordance with an aspect of the present invention, an error-correcting apparatus for detecting and correcting a burst error affecting a plurality of reproduced signals representing adjacent data words is provided. The apparatus includes a grouping device for dividing the reproduced signals into groups of signals, each group containing a predetermined number of adjacent data words and sharing at least one data word with another group. The apparatus further includes a calculating device, responsive to the groups of signals, for producing a plurality of syndrome signals representing a plurality of syndromes calculated for each group of signals and a determining device for determining the position of an error, if any, in each group of signals as a function of the syndrome signals. A burst error detecting device detects a burst error in the reproduced signals as a function of the determined positions of a plurality of errors. 
     Other objects, features, and advantages according to the present invention will become apparent from the following detailed description of illustrated embodiments when read in conjunction with the accompanying drawings in which the same components are identified by the same reference numerals. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of an optical disk drive system according to the present invention; 
     FIG. 2 is a block diagram of a drive controller for the system of FIG. 1; 
     FIG. 3 is a table of the data allocation of a sector of a storage medium; 
     FIG. 4 is a diagram illustrating one search operation according to an embodiment of the present invention; 
     FIG. 5 is a data diagram representing a portion of the table of FIG. 3 to which reference will be made in describing another search operation according to the present invention; 
     FIG. 6 is a portion of the table of FIG. 3 to which reference will be made in describing the search operation of the present invention; 
     FIG. 7 is a flow diagram of the operation of a decoder according to one embodiment of the present invention; 
     FIG. 8 is a table depicting a portion of the table of FIG. 3 to which reference will be made in describing the storage of additional data according to another embodiment of the present invention; and 
     FIG. 9 is a flow diagram of the operation of a decoder according to another embodiment of the present invention; 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     FIG. 1 illustrates an optical disk drive system incorporating a coding apparatus and a decoding apparatus according to the present invention. The system includes an optical disk drive 20 and a disk drive controller 30. Also illustrated are an optical disk 22 and a host computer 32. Preferably, disk drive 20, optical disk 22, and host computer 32 are conventional devices. In particular, computer 32 is preferably a microprocessor-based system which requests that data be read from, and, where feasible, written to, and erased from disk 22. 
     In a typical implementation, disk drive 20 is configured to service at least one type of disk media and preferably accommodates several different types, such as CD-ROMs, partial CD-ROMs, magneto-optical disks, write-once disks, optical disks incorporating phase-change media, and partial disks having a writable area (RAM) and a read-only area (ROM). Disk 22 may be permanently fixed within drive 20 or, preferably, removably engaged with the drive by means of a disk loading/unloading mechanism (not shown). Drive 20 is operable to read data from, write data to, and erase data from the disk, where the nature of the disk media permits. 
     Disk drive 20 includes a magnetic head 24, a spindle motor 26, and an optical block 28, each of which are coupled to controller 30. Under the control of controller 30, magnetic head 24 is operable to apply a magnetic field of selected intensity and polarity to disk 22 to write and erase data on disk 22. Spindle motor 26 is mechanically coupled to disk 22 (as by a turntable) and, in response to control signals therefrom, rotates disk 22. 
     Optical block 28 is optically coupled to disk 22 and, in response to control signals from controller 30, is operable to read, write, and erase data on disk 22, where the nature of the disk allows. Disk 22 is positioned such that the data encoded thereon or therein is accessible to optical block 28. Preferably, optical block 28 incorporates a laser device for applying a beam of light to selected portions of the disk; a photodetector for detecting light reflected from the disk; and a tracking device for determining and adjusting the location of the beam as it scans the disk. 
     During a read operation, the optical block illuminates a portion of disk 22, generates a data signal corresponding to the light reflected from the disk, and supplies the data signal to the controller. For magneto-optical and other like disks, optical block 28 and magnetic head 24 are operated together by controller 30 to write and to erase selected portions of the disk. In a typical write operation, optical block 28 heats a portion of disk 22 to a specific temperature and magnetic head 24 applies a magnetic field thereto. The magnetic field is varied according to a data signal supplied by controller 30. Similarly, in a typical erasure operation, magnetic head 24 applies a magnetic field to one side of disk 22 while optical block 28 applies a relatively intense laser beam of light to the other side of disk 22. The above descriptions are provided merely as examples of read, write, and erase operations, as the specifics of each operation depends upon the particular configuration and composition of the disk. 
     Disk drive controller 30 controls the flow of data between drive 20 and computer 32, processes such data, and controls the operation of disk drive 20. In response to a data write command from computer 32, controller 30 receives data from the computer, encodes the data, supplies the encoded data to optical block 28, and controls optical block 28 to write the encoded data to the disk. In response to a data read command from computer 32, controller 30 controls the optical block to read recorded data from the disk and supply the reproduced data to the controller. Controller 30 decodes and error-corrects the data and supplies the corrected data to computer 32. In response to a data erase command from computer 32, controller 30 controls optical block 28 and magnetic head 24 to erase a portion of disk 22. 
     An error correcting section 58 of disk drive controller 30 is illustrated in FIG. 2. Error correcting section 58 includes central processing unit (CPU) 60, read-only memory (ROM) 62, random access memory (RAM) 63, i/o port 64, nodes 65 and 72, switches 66 and 69, decoder 67, encoder 68, and interface 71. At node 65, section 58 is coupled to a remaining portion (not shown) of disk drive controller 30. The remaining portion of disk drive controller 30 will not be described herein in detail as the structure and function of this remaining portion is conventional in nature. The remaining portion of controller 30 generates signals for controlling and coordinating the various elements of disk drive 20 to perform reading, writing, erasing, and like functions. Also, controller 30 converts data between the encoded data format used by error correcting section 58 and a data format appropriate to the specific type of disk 22. During a read operation, encoded data reproduced from disk 22 is supplied to section 58 at node 65. During a write operation, section 58 supplies encoded data to node 65 for further processing by the remaining portion of controller 30 and eventual recording on disk 22. 
     Node 65 is selectably coupled to either an input of decoder 67 or an output of encoder 68 via switch 66 which is controlled by CPU 60. Node 72, through interface 71, is selectably coupled to either an output of decoder 67 or an input of decoder 68 via switch 69 which is controlled by CPU 60. Node 72 is also coupled to computer 32. Interface 71 is controlled by CPU 60 to route data between computer 32, CPU 60, and switch 69. 
     Each of encoder 68 and decoder 67 are controlled by CPU 60 through i/o port 64. Encoder 68 is comprised of RAM 68a and RAM controller 68b while decoder 67 is comprised of RAM 67a and RAM controller 67b. RAM 68a and RAM 67a are conventional memory elements, preferably having at least the capacity to store the equivalent of two sectors of data stored on disk 22, for example 2352 bytes. 
     Decoder 67 detects and corrects errors in reproduced data according to one or more error detection and error correction methods. Such methods include RS coding, CRC coding, and the like. For example, RAM controller 67b may correct errors which are less than 9 bytes in length by utilizing RS code parity data. The RAM controller may then search a sector for bursts of errors which are greater than 8 bytes in length and note the location and length of such burst errors. Additional details regarding such error correction techniques will be provided below. RAM controller 67b controls RAM 67a to store data supplied from switch 66 and to supply corrected data to switch 69 and, optionally, to CPU 60. RAM controller 67b may correct the data itself under the control of CPU 60 or supply data to CPU 60 for correction. 
     Encoder 68 encodes data for storage on disk 22 according to one or more error correction coding techniques. Such methods include RS coding, CRC coding, and the like. One or more types of parity data or error checking data may be generated and incorporated into or otherwise associated with the informational data and other data to be recorded. Additional details regarding such error correction coding techniques will be provided below. RAM controller 68b controls RAM 68a to store data supplied from switch 69 and to supply encoded data to switch 65 and, optionally, to CPU 60. RAM controller 68b may encode the data itself under the control of CPU 60 or supply data to CPU 60 for encoding. 
     CPU 60 is a central processing unit and may comprise a microprocessor, such as the 80486 produced by the Intel Corporation. CPU 60 is coupled to each of ROM 62, RAM 63 and i/o port 64. ROM 62 is a conventional memory element for non-volatile storage of various program data for CPU 60, parameter data for the encoding/decoding processes, and like data. RAM 63 is also a conventional memory element and is used by CPU 60 for the temporary storage of data. 
     In response to a data request from computer 32, CPU 60 configures switch 66 to route data reproduced from disk 22 to decoder 67. Decoder 67 is controlled to perform error detection and/or error correction processes upon the reproduced data and to supply the corrected or otherwise processed data to switch 69 and/or CPU 60. Data supplied to switch 69 is routed to computer 32. 
     When data is supplied by computer 32 for recording on disk 22, CPU 60 configures interface 71 and switch 69 to route the data to encoder 68. Encoder 68 is controlled to perform error correction coding and error detection coding of the data and to supply the encoded or otherwise processed data to switch 65 and/or CPU 60. Data supplied to switch 66 is routed through node 65 to the remainder of controller 30 for subsequent storage on disk 22. 
     In an alternate embodiment, the decoding and encoding processes are performed entirely or in significant part by CPU 60. 
     FIG. 3 presents a table illustrating an exemplary sector format of a disk storage medium incorporating error correction data. The vertical axis indicates codewords 0-146, represented by the variable i, while the horizontal axis indicates the individual bytes 0-15 in each codeword i, represented by the variable j, thereby mapping a 2352 byte storage area. Entries in the table incorporating the prefix &#34;D&#34; are information data-while those entries incorporating the prefix &#34;CRC&#34; are error-checking parity data for data areas D0-D2047 and for the undefined (U.D.) areas which optionally, may contain user-defined data. Entries incorporating the prefix &#34;E&#34; are RS code parity data for the data &#34;directly above&#34; them, e.g. data (E1,1)-(E1, 16) are parity data for D0, D16, D32 . . . D2032 and U.D. areas (128,0), (129,0), and (130,0) and data (E2,1)-(E2, 16) are parity data for D1, D17, D33 . . . D2033 and U.D. areas (128,1), (129,1), and (130,1). As indicated by the arrows, the storage area is traversed left-to-right and up and down. 
     In the preferred embodiment, encoder 68 and decoder 67 code and decode, respectively, parity data (E1,1)-(E16,16) with a (147, 131, 17) RS code wherein each data symbol consists of an 8 bit binary byte. Over a Galois field of GF(2 8 ) the code is generated based on the primitive polynomial 
     
         P(x)=x.sup.8 +x.sup.5 +x.sup.3 +x.sup.2 +1 
    
     and the generator polynomial ##EQU1## The elements of the field are α i  =(β i ) 88 , where β is a primitive root of P(x). The value of the n-th bit in a byte is the coefficient of the n-th power of β, n ranging from 0 to 7, when β is expressed on a polynomial basis. The 256 check bytes of the RS code are computed over the user data, the 40 U.D. bytes and the 8 CRC bytes. The corresponding five information polynomials utilized are ##EQU2## where 0≦j≦15, and B i ,j refers to the data at location (i,j) in the sector. The contents of the 16 check bytes for each polynomial I cj  (x) are defined by the sixteen residual polynomials 
     R cj  (x)=I cj  (x) X 16  mod G c  (x). The storage locations for the coefficients of the polynomials are specified by ##EQU3## 
     As a simple example, the coding and decoding processes of the present invention will be described in the following in connection with a (134, 131, 4) RS code based on the primitive polynomial 
     
         P(x)=x.sup.8 +x.sup.4 +x.sup.3 +x.sup.2 +1 
    
     and the generator polynomial 
     
         G(x)=(x+1)(x+α)(x+α.sup.2) 
    
     where the root of the primitive polynomial is αε GF(2 8 ). To determine the presence of errors in a segment of data, check syndromes are produced and solved to determine the position of the errors and error values to correct the errors. In the case where two symbol errors have occurred at the i-th and j-th symbols, syndromes S0, S1, and S2 are produced as follows: 
     
         S0=e.sub.i +e.sub.j                                        (6) 
    
     
         S1=α.sup.i e.sub.i +α.sup.j e.sub.j            (7) 
    
     
         S2=α.sup.2i e.sub.i +α.sup.2j e.sub.j          (8) 
    
     wherein α k , k=0, 1, 2, is an error locator (position) within the segment, and e i  and e j  are error values. Since equations S0, S1, and S2 together contain a total of four unknowns α i , α j , e i , and e j , the equations (6) through (8) cannot be solved directly. Since burst errors are sought, it can be assumed that two successive symbol errors are principally responsible for the errors, and hence the positions of the errors are assumed to be adjacent such that j=i+1. Simplifying syndromes S0, S1 and S2 yields: 
     
         S0=e.sub.i +e.sub.i+1                                      (9) 
    
     
         S1=α.sup.i e.sub.i +α.sup.i+1                  (10) 
    
     
         S2=α.sup.2i e.sub.i +α.sup.2i+1 e.sub.i+1      (11) 
    
     When equation (9) is multiplied by α i  and equation (10) is added to the product, the following equation (12) is obtained: 
     
         α.sup.i S0+S1=α.sup.i (1+α)e.sub.i+1     (12) 
    
     When equation (10) is multiplied by α i  and equation (11) is added to the product, the following equation (13) is obtained: 
     
         α.sup.i S1+S2=α.sup.2i+1 (1+α)e.sub.i+1  (13) 
    
     When equation (12) is multiplied by α i+1  and equation (13) is added to the product the following equation (14) is obtained: 
     
         α.sup.i+1 (α.sup.i S0+S1)+α.sup.i S1+S2=0(14) 
    
     Expanding equation (14) we obtain: 
     
         αS0·α.sup.2i +(1+α)S1·α.sup.i +S2=0                                                     (15) 
    
     Equation (15) is a quadratic equation of α i , having one root when S0=0 and two roots when S0≠0. An actual error is located at the position indicated by one of these roots. Without further information, the exact location of the error cannot be specified, but at least the presence of an error is verified and the location of the error is limited to either of the two roots. 
     To resolve this problem, a solution can be assumed and then verified. Assuming i=1, e i  =1, and e j  =α, it follows that j=2 and that syndromes S0, S1, and S2 can be expressed as follows: 
     
         S0=α+1                                               (16) 
    
     
         S1=α+α.sup.3                                   (17) 
    
     
         S1=α.sup.2 +α.sup.5                            (18) 
    
     Substituting equations (16), (17), and (18) into equation (15) we obtain: 
     
         α(α+1)α.sup.2i +(1+α) (α+α.sup.3)α.sup.i +(α.sup.2 +α.sup.5)=0(19) 
    
     Rearranging and simplifying produces: 
     
         α.sup.2i +(1+α.sup.2)α.sup.i +α(1+α+α.sup.2)=0                       (20) 
    
     Further rearranging yields: 
     
         (α.sup.i +α) (α.sup.i +1+α+α.sup.2)=0(21) 
    
     Therefore, α i  =α or α i  =α 2  +α+1=α 198  and consequently i=1 or i=198. Since we are utilizing in this example a (134, 131, 4) RS code, i is limited to values ranging between 0 and 133. Thus, we conclude that i=1. Of course, other available error or parameter information can be used to limit the possible values of i. 
     Substituting i=1 into equation (12) and considering equations (16) and (17), we obtain: 
     
         α(α+1)+(α+α.sup.3)=α(1+α)e.sub.i+1.(22) 
    
     Therefore, e i+1  =α and, according to equation (16), α+1=e i  +α, and hence e i  =1. Thus, the assumed solution is verified. 
     Applying the above-described methodology to the preferred (147, 131, 17) RS code, detection of 12 successive errors, i.e. a burst error having a length of 12, can be achieved upon processing the corresponding data and parity data by generating 12 check syndromes S0-S12 as follows: ##EQU4## 
     In order to detect 12 successive errors, 13 unknowns i (α i ) and e i , e i+1 , . . . e i+11  have to be determined. A polynomial of degree 12 with respect to α i  is constructed from the syndromes S0-S12, and 12 possible values or &#34;candidates&#34; for i are determined (for 11, 10, and 9 successive errors, candidates before and after the 12 candidates are available as solutions). In a similar manner, 12 candidates for i can be determined from each of the sets of syndromes S1-S13, S2-14, and S3-S15. If a common i is found, then it can be recognized as an error position. Once i is known, e i  to e i+11  can be determined. As an alternative method, i can also be determined by substituting assumed values of i into the polynomial of degree 12 and confirming whether the result is 0 or not. 
     By implementing the above algebraic process, decoder 67 can determine the location and the magnitude of the burst error and subsequently employ an appropriate correction process to recover the original data. In a preferred embodiment, decoder 67 substitutes possible values of i into the polynomial of degree 12 to determine if the particular value is a root thereof and thus determines the existence of an error at that position. 
     FIG. 4 illustrates a &#34;search&#34; process according to the present invention from which the position and the length of a burst of errors can be determined. Referring to the sector map of FIG. 3, searching is conducted &#34;down&#34; each of the j columns in 12 byte segments, each segment offset from the next by one byte. For ease of explanation, FIG. 4 depicts horizontally successive searches of a single column consisting of corresponding bytes of 147 codewords, e.g. 12 byte segments of data comprising byte 1 of codewords 0-11, 1-12, 2-13, . . . 135-146 are searched successively. Although it is preferred that the search be conducted with 12 byte segments, a larger or smaller number of bytes per segment can be used. It has been found that a 12 byte segment is sufficiently large for burst error detection and results in a risk of erroneous error correction which is acceptably low. The risk of erroneous error correction increases as search segment size increases. 
     Decoder 67 searches each column of each sector in 12 byte segments, each segment offset from the next by one byte, to detect the presence of burst errors. According to the process described above, decoder 67 appropriately processes the 12 byte segment along with the corresponding parity data and substitutes each positional value into the corresponding polynomial of degree 12 to find those positions at which an error has occurred, e.g. where the polynomial =0. Where an error is detected, the results obtained from polynomials produced by syndromes S0-S12, S1-S13, S2-S14, and S3-15 are compared to confirm the error. Alternatively, the absence of an error may similarly be verified. In the illustrated embodiment, 136 searching processes are carried out on each column and, optionally, the results of the searches are compared to each other to verify the positions of detected errors. 
     FIG. 5 illustrates horizontally a specific column of the sector of FIG. 3 in which a burst of errors 10 bytes long has occurred. The burst error appears at bytes 20-29. Blank areas represent bytes in which no error was detected. Hatched areas represent bytes in which an error was detected. Stippled areas represent bytes in which an error occurred but was not detected by that particular search. 
     Search area 17 covers 3 bytes, 17-19, free of errors and 9 bytes, 20-28, in which errors are detected. Search area 18 covers 2 bytes, 18-19, free of errors and 10 bytes, 20-29, in which errors are detected. Search area 19 covers 2 bytes, 19 and 30, free of errors and 10 bytes, 20-29, in which errors are detected. Search area 20 covers 2 bytes, 30-31, free of errors and 10 bytes, 20-29, in which errors are detected. Search area 21 covers 3 bytes, 30-32, free of errors and 9 bytes, 21-29, in which errors are detected. The position and magnitude of the burst error is determined in a straightforward manner by considering the results of Searches 18, 19, and 20. 
     FIG. 6 illustrates horizontally a specific column of the sector of FIG. 3 in which a burst of errors 12 bytes long has occurred and utilizes the same drawing conventions as in FIG. 5. The burst error appears at bytes 18-29. 
     Search area 17 covers 1 byte, 17, free of errors, and 11 bytes, 18-28, in which errors are detected. Search area 18 covers zero bytes free of errors and 12 bytes, 18-29, in which errors are detected. Search area 19 covers 1 byte, 30, free of errors and 11 bytes, 19-29, in which errors are detected. 
     A flow diagram of the operation of decoder 67, as controlled by CPU 60, is provided in FIG. 7. In step S1 operation begins and proceeds to step S2 whereat, data from a sector of the disk is read from the disk, processed, and supplied to decoder 67 for error correction processing. In step S3, decoder 67 detects and attempts to correct errors found in the data with the CRC and RS parity information. Typically, only errors less than nine bytes in length are fully corrected. 
     In inquiry S4, the data corrected in step S3 is tested to determine whether it is fully corrected. If the data is correct, this inquiry is answered in the affirmative and processing of the sector is complete as indicated by end step S8. If the data is incorrect, inquiry S4 is answered in the negative and operation of the decoder proceeds to step S5 in which the decoder searches the sector for burst errors and corrects the burst errors where possible. In inquiry S6, the data corrected in step S5 is tested to determine whether it is fully corrected. If the data now is correct, inquiry S6 is answered in the affirmative and processing of the sector is complete, as indicated by end step S8. If the data still is incorrect, the errors in the data are deemed uncorrectable in step S7 and processing is terminated in step S8. Optionally, in step S7, CPU 60 may retrieve an error message stored in ROM 62 and supply the error message to computer 32. Such an error message may include text which is displayed to a user. 
     FIG. 8 illustrates a portion of the sector map of FIG. 3 comprising the U.D. and CRC areas (0, 128)-(15, 130), in which the U.D. bytes have been labeled P1-P40. According to another embodiment of the present invention, these areas are utilized for storing additional error-detecting parity data such as that created by (114, 112, 3) RS coding and (130, 128, 3) RS coding. Preferably, pairs of error-detecting parity bytes are generated for groups of seven or eight codewords of data. 
     Such additional parity data is especially useful in connection with read-only disks or read-only portions of disks. According to the searching process described above, an entire sector or at least an entire &#34;column&#34; of a sector is searched for burst errors during the search operation. Such processing is time-consuming. By recording bytes P1-P40 with additional parity data corresponding to specified portions of the sector, those portions in which burst errors may have occurred can be more precisely identified. By identifying specific portions of the sector as potentially affected by a burst error, the searching process can be limited to those identified portions. Considerable processing time can be saved by limiting the searching process in this manner. 
     Alternatively, bytes P1-P40 are recorded with additional parity data pertaining to a sector other than the sector in which bytes P1-P40 are located, preferably an adjacent sector. By separating the parity data from the informational data to be checked, the probability that a burst error will corrupt both the informational data in a sector and the parity data corresponding to that informational data is substantially reduced. In a similar manner, the RS code parity data can be recorded in a sector other than that in which the informational data to which the parity data pertains is located. 
     A flow diagram of the operation of decoder 67, as controlled by CPU 60, is provided in FIG. 9. Steps S1-S8 of FIG. 9 are substantially identical to those of FIG. 7 and thus will not be described further hereinbelow. Following a negative response to inquiry S4, processing proceeds to step S9 where decoder 67 processes the sector with error-detecting parity data P1-P40 to determine the general location of a burst error. For each portion in which an error is detected, decoder 67 generates an error flag. 
     In inquiry S10, decoder 67 determines whether error flags were generated in a predetermined number of successive portions of the sector. Preferably, the predetermined number is three. If errors occurred in the predetermined number of successive portions, then processing proceeds with step S5; otherwise, processing proceeds with step S7. In step S5, the search process previously described is limited to those portions of the sector for which an error flag was generated. 
     Although illustrative embodiments of the present invention and modifications thereof have been described in detail herein, it is to be understood that this invention is not limited to these precise embodiments and modifications, and that other modifications and variations may be affected therein by one skilled in the art without departing from the scope and spirit of the invention as defined by the appended claims.