New combinatorial and algebraic techniques are presented for systematically constructing different (d,k) block codes capable of detecting and correcting single bit-errors, single-peak shift-errors, double adjacent-errors and multiple adjacent erasures. Constructions utilizing channel side information, such as the magnetic recording ternary channel output string, or erasures, do not impose any restriction on the k-constraint, while some of the other constructions require k = 2d. Due to the small and fixed number of redundant bits, the rates of both classes of constructions can be made to approach the capacity of the d constrained channel for long codeword lengths. All the codes can be encoded and decoded with simple, structured logic circuits.