Abstract:
Disclosed is a technique for error checking in one channel or a pair of channels of a binary system in which communications is serial-by-character and parallel-by-bit, such as in digital computer-controlled magnetic tape peripherals. The system is shown as applied to the group coded recording (GCR) format and standard for half-inch, nine-track magnetic tape used for interchange among information processing systems (the USA Standard Code for Information Interchange). The technique employs equipment which generates and records on the tape, together with a set of information characters, a check (i.e., redundant) character and parity bits, the former resulting from the employment of a cyclic code and the latter being based on odd modulo 2 addition.

Description:
BACKGROUND OF THE INVENTION 
     There are presently available a number of well-documented techniques devoted to detection, location and correction of errors in binary coded information which is transmitted serially a bit at a time between remote stations. Such transmission is often over an imperfect communications network: ratio telegraphy is subject to atmospheric disturbances, telephony is subject to cross-talk and line noise, gating networks within a data processing computer are subject to spurious oscillations, a computer system involving cooperation between peripheral equipments is subject to intermittent loss of synchronization, etc. Such error handling techniques may be as limited as an odd-even parity check, capable only of detecting an odd or even number of errors, or as potent as burst checking systems capable of correcting a plurality of combinational types of error. In order to provide a background which will serve to distinguish the contribution of the present invention, some of these sytems will be reviewed briefly. 
     The parity check adds, usually, a check bit to the information bits and all bits are transmitted as a train of signals, each signal representing one bit. For example, for an even parity check, the value of the check bit is chosen so that each transmitted data group comprises an even number of binary 1 bits (i.e., the modulo 2 sum of the data group is computed). On reception of the data group, the presence of an odd sum indicates that an odd number of errors has occurred. This system cannot detect an even number of errors, it cannot indicate the location of errors within the data group and it cannot correct them without calling for the retransmission of the data group. 
     An advantage of prime significance beyond the above is a system which locates and corrects a single transmission error in a data group by generating (&#34;encoding&#34;) and transmitting a plurality of &#34;locator&#34; parity bits which are a function of the bits in selected bit positions of the data group. The selection sequence, for data groups in which locator parity bits follow information bits in transmission, resembles a binary counting sequence and the function is, as with the parity check, the modulo 2 sum. In operation, if a parity check (&#34;decoding&#34;) produces a count of 0 for each selection of bits, no error was made, but if the result is otherwise, a combined count comprising all selection counts will indicate the bit position of the data group occupied by the bit in error. This system has been extended to detection of a double error by adding another &#34;error-type&#34; parity bit which checks all bit positions of the data group. 
     Both single error correction and double error detection are also achieved by selection of bit positions in accordance with a shift sequence; a considerable practical advantage thereof is that mechanization of the parity checks may be by a shift register having an &#34;exclusive OR&#34; feedback connection from one or more of the stages such that the register count recycle. Since more than one cyclic sequence may be generated by registers having at least three stages and this type of feedback connection, it is immaterial which sequence is employed provided that both the encoder at the transmitting station and the decoder at the receiving station use the same one. Further, this approach has been extended to checking errors in other combinations of bits by adding an additional locator parity bit and an additional error-type parity bit. Both the locator and error-type bits are chosen by cyclic sequence selections of bit positions of the data group and thus two sequence generators are required. 
     It is, of course, known that many other codes may be derived to accomplish the objects of error detection, location and correction. The basis for the high regard attached to cyclic coding and decoding is the simplicity of the circuitry with which they may be mechanized, namely, with shift registers incorporating one or more module 2 or complemented modulo 2 feedback connections, i.e., exclusive &#34;OR&#34; connections. 
     A typical application of this technique is to the problem of transmission fidelity for a system involving parallel-by-bit, serial-by-character transmission of digital information such as widely found in magnetic tape, punched cards and buffer equipment used for communication with high speed computers, in parallel computers themselves, etc., for which one of the intents of the design is to speed operation by providing a plurality of communications paths operating on a plurality of information simultaneously. Thus, a magnetic tape unit capable of, for instance, 9-channel storage, may have a sensing multiple head which generates 9 bits simultaneously (which together may represent a character), one on each of 9 lines communicating with a computer arithmetic unit; a plurality of characters are generated sequentially and may further be divided into sequences of words, each, usually, comprising the same number of characters. 
     For this type of system, several techniques have been employed to permit correction of errors in a single channel (such as sensed by the head of a track of a multi-track tape); these generally involved various coding techniques to identify the track having erroneous bits and then a parity track to determine parity over the corresponding bits in all the channels (i.e., the character) and so determine the errors. The coding techniques include cyclic and longitudinal redundancy, residue, diagonal, orthogonal, etc., capable of detecting and correcting many error patterns. 
     In order to accomplish error checking in a plurality of tracks, these techniques have been extended to generate additional information: pointers (i.e., indicators) identify tracks having a high error probability. These pointers may be based on one or several of tape system parameters: amplitude less than a preset threshold, excessive phase shift, skew and tape speed variation and, where there is code conversion in recording and sensing, the recognition of invalid code combinations. However the advantage must be weighed against the economics of the additional structure to provide the inclusion of such facilities. 
     SUMMARY OF THE INVENTION 
     The system of the present invention is embodied in an interface unit which is capable of detecting that, in a word transferred between, for instance, a computer and a magnetic tape unit, one or two bits of the characters (i.e., one or two channels) are affected by error, of locating the characters in error and of correcting them by generating their correct counterparts and substituting the latter for the former. The invention contemplates the transmission from and to a host computer, of complete words of information, comprising, in the embodiment selected for particular description, for instances, seven eight-bit characters, to each of which one bit of parity (carried by another channel) is added while one character devoted to error checking is added to the word. However, it is to be understood that the present system is easily adaptable to characters of any plurality of bit content and words of any character length, provided that the word length does not exceed the number of distinct character combinations which may be used in the word. The error checking character is preferably transmitted as the last character of the word. Thus, an 8-character word of 9-bit characters will comprise 7 sequential information-representing characters followed by a check character, and each of the characters may consist of 8 information bits and a parity bit. The check characters are generated through application of modified cyclic coding which, in cooperation with a vertical (i.e., transverse or character) parity computation, can detect error bursts of any length in any of the nine tracks; furthermore, the polynomials for the check character have been chosen to overlap in their error detection capabilities to insure optimum effectiveness. In addition, the check characters, when supported by parity and the track pointers, and mechanized as taught by the invention, can correct errors in a pair of tracks. 
    
    
     DESCRIPTION OF THE DRAWINGS 
     FIG. 1 comprises a block diagram of the interface of the present invention as interposed between a computer and a magnetic tape unit; 
     FIG. 2 indicates how the interface information is converted in form for recording on tape; 
     FIG. 3 tabulates the conversion values for FIG. 2; 
     FIG. 4 correlates the data word with tape tracks and their corresponding error check syndromes; 
     FIG. 5 is a block diagram of one embodiment (multiplication of vector-by-matrix row) of the error check unit of FIG. 1; 
     FIG. 6 is a block diagram of another embodiment (multiplication of vector-by-matrix column) of the error check unit of FIG. 1; and 
     FIG. 7 is a more detailed block diagram of the FIG. 6 error check unit. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Before embarking on a detailed description of the preferred embodiment of the invention, it may be appropriate to provide some comments on the generic handling of binary information by a magnetic tape system. 
     FIG. 1 abstracts such a system cooperating with digital computer 100, providing storage therefor on magnetic tape 102, signals being intercommunicated via interface 104. It is the function of interface 104 not only to provide signal paths but also to enhance and modify the signals for error checking (and other purposes not relevant here) and to provide other signals (the aforementioned pointers) for use by its error checking circuits. 
     Typically, interface 104 would receive the eight bits of sequential characters from computer 100 at word assembler 106 which forms a word of seven characters, designated as D1 through D7, each of eight bits, designated B1 through B8, and retransmits the word, again parallel-by-bit, serial-by-character, to parity (P) and error check character (C) generator 108; the latter computes an (odd) parity bit P for each character, thereby expanding it to 9 bits, and an error check character E for the word thereby expanding it to 8 characters. The 8-character by 9-bit matrix is then transferred to encoder 110 in which it is converted to a 10 by 9 matrix, and it is this matrix which received by 9 write heads 112 and recorded on tape 102. 
     Encoder 110 recognizes bytes of the matrix and translates them in value; the bytes are subsets of four bits of the same significance from a sequence of characters, no bit appearing in more than one subset. Thus, D1B1, D2B1, D3B1, D4B1 comprise a subset, D5B1, D6B1, D7B1, EB1 comprise another . . . and D5P, D6P, D7P, EP comprise still another. This configuration, as well as the tape layout of the data word-to-storage word conversion is represented in FIG. 2; the conversion values associated with FIG. 2 are shown in FIG. 3. 
     In this code translation, it will be noted that, in the taped byte values, there are no more than two adjacent zeros and that there is never more than one zero leading or ending a code; these characteristics enable self-clocking and provide one basis for detecting errors in a track since any loss of readback signal strength creates zeros, thereby producing an invalid code. This will trigger track-in-error pointers (to be discussed). 
     It may also be noted from FIG. 2 that the recording process actually permutates the data-track relationship, i.e., the 2 0  order of the data is actually carried by track 67, the 2 1  order is in track 1, etc., and the character parity bit is recorded in track 4. Such permutation is common in tape systems and it and the restoration are generally handled in the recorder connections to its heads; accordingly, the permutation need not concern this specification. 
     Again referring to FIG. 1, as tape 102 travels in the direction of the arrow shown, the record takes the form of 9 longitudinal tracks 114, the information in which is sensed by 9 read heads 116 structured identically to and positioned symmetrically with write heads 112. The sensed matrix, after amplification in preamplifier 118, is set up in deskew unit 120 which aligns the characters; then, in decoder 122, it is retranslated to the 8 by 9 matrix form. The matrix is subsequently examined for error in error check unit 124, corrected if necessary and possible (i.e., within the constraints of the invention), and finally, returned to computer 100. 
     As the data is conveyed through the system, certain signals are generated, based not only on its content and form, but also on various characteristics of the system components. These signals comprise inputs to pointer accumulator 126 which compares them with pre-established presets to emit a track-in-error signal TIE (the aforementioned track pointer) for error check unit 124, if the data of a track is to be considered unreliable. The inputs may comprise any combination of the following: tape velocity error signal VE derived from tape speed sensor 128 associated with the drive means (not shown) of tape 102, below-threshold signal BT derived from threshold detector 130 at the output of preamplifier 118, phase error signal PE derived from phase comparator 132 also at the output of preamplifier 118, excess skew signal ES generated by deskew unit 120 and coding error signal CE generated by decoder 122. The generation of track-in-error pointer signals (here, signal TIE) from signals such as the aforementioned as well as signals (not shown) which enable synchronization (e.g., to correlate a particular signal TIE with the track under scrutiny by error check unit 124) and other control signals are believed sufficiently known in the art to require no discussion in this specification. Accordingly, attention will now be directed to considerations involving the error checking capabilities of the invention. 
     As is common in the literature, number representation herein will be in polynomial form and arithmetic will be modulo 2; also, in general, concern is with encoding information characters D comprising sequences of bits B by appending thereto sequences of check bits C with respect to the orders of the characters. 
     Thus, in FIG. 1, character E is formed by combining characters D1 through D7 with the operator polynomial F as follows: 
     
         F = D1 X.sup.7 + D2 X.sup.6 + D3 X.sup.5 + D4 X.sup.4 + D5 X.sup.3 + D6 X.sup.2 + D7 X.sup.1 
    
     this operation results in appending a number of zeros to each data character; the number corresponds to the value of the exponent of the sham variable X associated with the character. 
     Polynomial F is determined by the modulo 2 summation of coefficients of like powers of the polynomial representations of characters D1 through D7, and: 
     
         E = F (mod G) 
    
     where G, generator polynomial, has been selected as: 
     
         G = X.sup.0 + X.sup.3 + X.sup.4 X.sup.5 + X.sup.8 
    
     briefly, character E is the remainder after dividing polynomial F by polynomial G; it comprises 8 bits and is the last (here, eighth) character of the data group. 
     As example of the encoding-decoding operations in accordance with the above, using data characters consisting of all 1 bits and the generator polynomial 
     
         G = 1 + X.sup.3 + X.sup.4 + X.sup.5 + X.sup.8 32  100111001 
    
     is tabulated as follows: 
     
         __________________________________________________________________________     encode          decodemod 2     11111111 D1                     11111111    11111111  D2                    11111111addition    11111111  D3                    11111111   11111111   D4                   11111111   11111111   D5                   11111111  11111111    D6                  11111111  11111111    D7                  11111111              E  11010001 010101011010101              F  100001001010101Division-   100111001 G -   100111001by G    011111011       011011011-  100111001  G -   100111001   111100001       011110001-  100111001  G -  100111001 010011011       100111001-100111001    G -100111001 11010001  E (remainder)                 000000000  EP (error pattern)__________________________________________________________________________ If errors occur in manipulating the data group, the error pattern, designated EP, will be other than zero. Further, it can be seen that the 64 possible single bit errors in the (8 × 8) data matrix will result in 64 individual patterns EP and that all single bit errors in a column (of the modulo 2 addition) produce the same pattern EP (i.e. the same syndrome) which is different from the syndromes of all other columns, i.e., there are 15 unique syndromes. 
    
     The foregoing is pictorially represented in FIG. 4; it is apparent that the syndromes, designated X n , are associated in sets of eight with the eight tracks, the sets, or matrices, being labelled S1 through S8. Thus, for example, track 8, transversed by a diagonal line in the figure, for single bit errors, is characterized by the eight syndromes X 0  through X 7 , and this set is unique to track 8. It follows, then that pattern EP(X) for a track X corresponds to the syndromes of the syndrome set for the bits in error added modulo 2; for single-track errors, of course, a parity computation (bits P of the data group) will indicate the track. Mathematically, this may be state as 
     
         EP(X) = P  S(X) 
    
     where 
     EP(X) = EP for track X, 
     p = the parity indication, 
     S(X) = the syndrome for track X, 
      = matrix multiplication. 
     Also, since errors in the parity track (track 9) are the sum of the errors of all tracks, for a single track-in-error, the parity track errors equal the errors in that track; thus: 
     
         EP(X) = E(X)  S(X) 
    
     where 
     E(X) = the error vector which locates the bits in error. 
     Now it will be noted that each of the matrices S may be generated from another matrix S by shifting modulo (generator) polynomial G; consequently a track-in-error may be identified by shifting pattern EP in a linear feedback shift register. 
     It will be noted further tha the simple parity computation for the columns of the diagonalized data group (word with P and E bits appended by generator 108, FIG. 1) fails to provide for multiple errors; similarly, multiple syndromes S &#34;mask&#34; each other in pattern EP. Masking may occur in the parity P track and/or pattern EP. To discriminate and, for instance as contemplated by this specification, to locate and correct two tracks-in-error, information, additional to pattern EP and parity P, comprising a pair of signals TIE, are employed (by unit 124, FIG. 1). 
     For plural track error correction, pattern EP is the summation of patterns EP of the individual tracks; for two tracks X, Y: 
     
         ep = ep(x) ⊕ep(y). 
    
     parity error check vector P detects character parity errors in the same manner as vector E(X) detects track errors; it is the summation of error vectors E(1) through E(8). If it is assumed that two tracks X, Y are in error: 
     
         P = E(X) ⊕E(Y) 
    
     or 
     
         E(X) = P ⊕E(Y) = P ⊕EP(Y)  S(Y) = P ⊕[EP⊕EP(X)] S(Y). 
    
     distributing S(Y): 
     
         e(x) = p ⊕ep  s(y) ⊕ep(x)  s(y) = p ⊕ep  s(y) ⊕[e(x)  s(x)] s(y). 
    
     subtracting E(X)  S(X)  S(Y) from each side: 
     
         E(X) ⊕E(X)  S(X)  S(Y) = P ⊕EP  S(Y). 
    
     factoring: 
     
         E(X)  [I ⊕S(X)  S(Y)]= P ⊕EP  S(Y) 
    
     where 
     I = the identity matrix. 
     Multiplying by [I ⊕ S(X)  S(Y)] -1  : 
     e(x) = [p ⊕ ep  s(y)] [i  s(x)  s(y)] -1 . 
     once the errors in track X are known, those in track Y can be determined from: E(Y) = P ⊕ E(X). 
     The last two equations contemplate two-track correction of errors in this specification. These equations may be written in simpler form: 
     
         E(X) = [P(X) ⊕ EP  K1]  K2 
    
     
         e(y) = p(x) ⊕ e(x) 
    
     where 
     K1 = S(Y), the syndrome matrix for track Y 
     k2 = [i ⊕ s(x)  s(y)]- 1 , the inverse matrix related to track separation between tracks X, Y. 
     The relationship of the expression K2 to the separation between the tracks follows from the observation that any pair of tracks-in-error characterized by the same separation (for instance, tracks 1, 4, tracks 3, 6, tracks 5, 8, each having a separation of 3 tracks) will be characterized by the same result of the matrix multiplication of their respective syndromes. For 8 tracks, there are 7 such products: one corresponds to the 7 track adjacencies, one corresponds to the 6 track pairs separated by a single track, one corresponds to the 5 track pairs separated by two tracks... and one corresponds to the track pair separated by all the other (7) tracks. These products need not be shown here except for those which the following examples involve. 
     The operation of the equations for two-track error correction will be exemplified with regard to an all 1&#39;s data word, in the handling of which errors are introduced in bit positions B4 and B6 (tracks 4 and 6, FIG. 1), the bits in error being indicated by dots over them: 
     
         ______________________________________record group           read groupP                          P(odd)  B8 - B1             (odd)  B8 - B11      1 1 1 1 1 1 1 1     1      1 1 1 1 0.   1 1 11      1 1 1 1 1 1 1 1     1      1 1 1 1 1 1 1 11      1 1 1 1 1 1 1 1     1      1 1 0.   1 0.   1 1 11      1 1 1 1 1 1 1 1     1      1 1 0.   1 0.   1 1 11      1 1 1 1 1 1 1 1     1      1 1 0.   1 1 1 1 11      1 1 1 1 1 1 1 1     1      1 1 0.   1 0.   1 1 11      1 1 1 1 1 1 1 1     1      1 1 1 1 0.   1 1 11      1 1 0 1 0 0 0 1     1      1 1 0 1 0 0 0 1______________________________________ 
    
     Vector P shows the locations of bad parity, a bit 1 in rows with bad parity and a bit 0 in rows with good parity: 
     
         P = 10001010 
    
     corresponding to bad parity in rows 1, 5, and 7 of the data group. Pattern EP is the error pattern computed from character E with the bad data: 
     
         EP = 01010100 
    
     since tracks 4 and 6 have the errors in them K1 is syndrome matrix S6: 
     
         ______________________________________S6             =     01001110                10011100                00000001                00000010                00000100                00001000                00010000                00100000______________________________________ 
    
     Computing: 
     
         P ⊕ EP  K1 = 00011100. 
    
     k2 corresponds to the matrix product for a track separation of two (tracks 4 and 6): 
     
         ______________________________________K2             =     10011010                01001101                10111010                01011101                10110010                01011001                10110000                01011000______________________________________ 
    
     The positions of the errors in track 4(X) are: 
     
         E(X) = 10110110 
    
     and the errors in track 6(Y) are: 
     
         E(Y) = P ⊕ EX = 00111100 
    
     for error correction, vectors E(X) and E(Y) are added to the data in tracks 4 and 6. The resulting corrected matrix is the all 1&#39;s data group. 
     If, however, one of the suspected tracks is the parity track, the situation may be regarded as a single-track problem involving one pointer TIE; another pointer TIE is employed to flag correction of the parity track. This is shown in the following example, which involves an arbitrary data group, in the handling of which errors are introduced in bit positions B2 and P (track 2 and parity track 9, FIG. 1): 
     
         ______________________________________record group           read group(odd)  B8 - B1             P      B8 - B11      0 0 0 0 0 1 0 0     ?      0 0 0 0 0 1 0 01      0 1 0 0 0 0 1 0     ?      0 1 0 0 0 0 0.   01      1 1 1 0 1 1 0 1     ?      1 1 1 0 1 1 0 11      1 0 0 0 1 0 1 1     ?      1 0 0 0 1 0 0.  11      1 0 1 0 1 0 1 1     ?      1 0 1 0 0 0 0  11      1 1 0 0 0 0 1 0     ?      1 1 0 0 0 0 1 01      0 1 0 0 0 0 1 1     ?      0 1 0 0 0 0 0 .   11      1 1 1 0 0 1 0 0     ?      1 1 1 0 0 1 0.  0______________________________________ 
    
     Vector E(X) shows the locations of bits in error: a bit 1 in rows with errors and a bit 0 in rows with correct data. Vector EP, computed for the read group, is: 
     
         EP = 10110001 
    
     since parity is unknown, the bits in error cannot be checked from the equation. 
     The syndrome matrix is S(2) since the errors are in track 2: 
     
         ______________________________________S(2)           =     11110001                11011011                10001111                00100111                01001110                10011100                00000001                00000010______________________________________ 
    
     Computing: 
     
         E(X) = EP  S(2) = 01011011. 
    
     for error correction, vector E(X) is added to the data in track 2. The resulting corrected matrix is identical to the record group. Parity can now be corrected by computing vector P. 
     The error check equations (the above-derived expressions for E(X)), E(Y) require techniques for matrix multiplication; two of these are shown in FIGS. 5 and 6, the former of which contemplates multiplication of vector by matrix row and the latter of which contemplates multiplication of vector by matrix column. 
     In FIG. 5, as synchronized by clock signal C, each vector element, stored in shift register 200, is &#34;AND&#34;ed with the corresponding matrix row, stored in memory 202, and the rows are then added modulo 2 by exclusive OR gates 204 to produce the product transferred to accumulator 206. Addressing of memory 202 is accomplished by outputs of counter 208, which of course, may comprise three memory elements for the eight rows. Since, when not enabled, outputs of memory 202 are all zeros, and AND function is provided. 
     In operation, the vector is stored in register 200, counter 208 is at zero (addressing row 0 of memory 202) and accumulator 206 is cleared. After eight clock signals C, the product is contained in accumulator 206. It is noted that, with this technique, no part of the matrix product is available until after 8 clock periods have elapsed. 
     In FIG. 6, the entire vector, stored in register 220, is &#34;AND&#34;ed bit by bit in AND gates 222 with a column of memory 224 as addressed by counter 226. The modulo 2 sum of the 8 bit result is one bit of the matrix product. It is noted that, with this technique, the matrix product is generated serially with the first bit available for use after one clock period. 
     The multiplication techniques of FIGS. 5 and 6 apply generally to any vector-matrix multiplication. In implementing the error correction equations, however, a fixed, ordered set of known matrices S(Y) are factors in the multiplication and therefore a special property of the set is involved, i.e., the product, resulting from multiplication of a vector by one of these matrices, is equal to the product of the same vector and the next higher order matrix shifted left. This means that the product of, for instance, matrix S7 and vector pattern EP may be formed by first multiplying vector EP and matrix S8 and then shifting left in a linear feedback shift register once; likewise, the product for matrix S6 and vector EP equals the product of vector EP and matrix S8 after two left shifts. 
     This characteristic is due to the structure of matrix S8 (FIG. 4), namely a reverse identity matrix: 
     
         ______________________________________S8             =     00000001                00000010                00000100                00001000                00010000                00100000                01000000                10000000______________________________________ 
    
     The product of a vector times this matrix will simply be the mirror image of the vector itself. Thus, for the first matrix multiplication, it is possible to reverse the vector (which requires no additional clock periods) and then shift the appropriate number of times to form the desired product. This reduces the amount of memory necessary and, more significantly, reduces the total number of operations required for finding and correcting a single track in error which has not been flagged by a signal TIE. 
     Correction of a single track with no TIE signal involves a search for the track-in-error. As already shown, when vector EP is multiplied by the matrix for the track-in-error, the product is equal to parity vector P. Thus, by using the technique of FIG. 6, the search can be completed by shifting the reversed error pattern until the track is identified; if no track is found after seven shifts, the errors are uncorrectable by the system. 
     FIG. 7, comprising a simplified block diagram of error check unit 124 of FIG. 4, embodies the aforementioned principles. 
     The data group (the encircled numerals represent parallel transfer of bits) enters unit 124 from decoder 122 and is stored in buffer 300 from which it is read out, a data character plus parity bit at a time, to error pattern (EP) generator 302, parity checker 304 and correction unit 306. Generator 302, which provides pattern EP, and parity checker 304, which provides parity vectors P, feed into multiplier 308, which, as comparison with FIG. 6 shows, uses the reverse-and-shift technique, to perform the matrix multiplication of its inputs; the shift, synchronized by signal C emitted by control 310, occurs in linear feedback shift register 312 and the modulo 2 addition occurs in exclusive OR gates 314 fed by both register 312 and, as controlled by synchronization (shift) signals from control 310, by parity register 316. Accordingly, the input to multiplier 318, received from multiplier 308, represents the term P ⊕ EP  S(Y) of the equation for pattern E(X). This signal, the vector input to the matrix multiplication, is added in AND gates 320 to the matrix columns stored in memory 322, the latter as sequentially addressed by control 310. Parity generator 324 then operates on the 8-bit signals to produce, serially, the bits of pattern E(X). Signals E(X) and P, as shown, are combined in NOR gate 326 to thereby form signal E(Y). Signal TIE, if generated, is fed from accumulator 126 to control 310 and, as the data group passes through correction unit 306 which may be a buffer register, it is corrected, if appropriate, in accordance with signals E(X), E(Y) at locations identified by signal TIE as converted (if desired, by control 310) into track select signal TS. 
     As is seen from FIG. 7, then, in its preferred form, the error check system of this invention may be divided into two functional sections. The first of these forms the error pattern and partial solution, which is then transferred to the second section which completes the solution and corrects the data group. 
     It may be appropriate to tabulate all combinations of error conditions and the operations they require in the system presently being considered: 
     
         __________________________________________________________________________correc-      correction operationstion  error                   complete solutiontype conditions        form partial solution                         &amp; correct__________________________________________________________________________single tie*        form &amp; 8 right shifts1    (not parity        reverse               of EP     correct withtrack)  EP*    check EP = Pv                         Pvtwo ties        form &amp; 8 right shifts                         correct Y with2    (X,Y) (not        reverse               of EP     SOL   S(d) correctparity track)        EP     SOL* = EP ⊕ Pv                         X with [SOL   S(d)]                         ⊕ Pvno flagged        form &amp; right shift                         correct X with Pv3    tracks  reverse EP               until EP = Pvparity tie               correct parity tie4    only      --      --     with Pvparity tie        form &amp; 8 right shifts                         correct X with SOL;5    &amp; one other        reverse               of EP     correct parity tietie (X) EP     SOL = EP  with SOL ⊕ Pvmore than6    two ties          --      --     no correction;                         flag error7    no errors        form &amp; check for no correction        reverse               EP = Pv = 0        EP__________________________________________________________________________ *tie denotes track-in-error EP denotes both the original error pattern and the result after the shift operation. SOL denotes &#34;solution&#34; 
    
     It is recognized that the drawings and this description provide a rather broad teaching of the present invention. It is submitted that this is justified in view of the supplementary information easily available to those skilled in the computer arts. It is submitted that the logic and detailed circuitry may be structured by such practitioners along the guidelines established in such works as the book &#34;Logical Design of Digital Computers&#34; by Montgomery Phister, Jr., Wiley, N. Y. 1958. Also, it will readily be appreciated that this specification implies no structural limitation to those acquainted with computers or logic design; in brief, the present description should be considered exemplary for teaching those skilled in the computer arts and not constrained to the showing herein or in the aforementioned reference.