— Please refer to the main article for details on and demonstrations of the mechanism in general and the standard character patterns E‘L’ of the IBM 029 specificly. —
An example and use case of the astounding flexibility of the character encoding as implemented on the IBM Card Punches ist the code plate for the Character Patterns E‘A’ for the IBM 029.
As an alternative to the standard code plate of the IBM 029, also known as the Character Patterns E‘L’, this one implemented the character encoding of the IBM 026, including the venerable square lozenge, for its younger sibling. Apart from the square lozenge, the updated typeface of the E‘L’ patterns was used and any characters not found on the IBM 026 printed as a centered square of 3 × 3 dots.
— Most amazingly, since any other characters of the IBM 026 are also available on the IBM 029, it's all about a single character, the square lozenge (⌑)! — However, there's still more to this article, as we will try to decipher the somewhat obscure relations of character encodings and punch codes (see the bottom of the page).
As a refresher, here is what the code plate, a roughly stamp-sized piece of metal of
The code plate is moved relatively to a set of 35 printing wires (arranged in a 5 × 7 matrix) and the projections relay pressure to those printing wires only which are to print a dot. Here's a drawing of the general mechanism from the IBM Field Engineering Theory of Operation [1]:
Hence we find the character patterns (glyphs) encoded as a set of code-matrices arranged in yet another matrix, which makes the dot-matrix of the printing mechanism. Due to the mechanics of printing and the code plate's projections facing the card, rows are represented upside down on the code plate. Thus, we're ready to address the particulars of the E‘A’ patterns:
The E‘A’ code plate has the same features as the standard one, but encodes, like the IBM 026, only 47 valid character codes arranged in an 8 × 8 code grid. Coordinates (-3 … +4 / -3 … +4) of the code grid are repeated over the 35 cells of the plate in the positions of the 5 × 7 character matrix, rows arranged upside down. Pins belonging to a character are identified by their relative code position inside a given cell.
Red squares represent active pins, orange outlines active positions without a pin, black squares inactive pins, and a lightgray circle marks the neutral position of a given cell of the character matrix (code grid 0/0).
What makes this code plate particularly interesting is, maybe, the chance, provided by the clustered center-square encodings at the lower left and right of the code grid, to visually grasp the layout of the printing masters of the individual characters interleaved all-over the cells of the greater grid, which is the dot-matrix of the printing wires. Hence, we see blank areas at the lower left and lower right of the outer, surounding cells, and clusters of black squares, representing printing dots, in the central ones.
And here are the encoding grids as presented in the IBM manuals in overview.
(Tables are arranged as by code coordinates. Mind that the rows are laid out upside-down as compared to the physical arrangement found on the code plate. Also shown in these tables are characters associated with their respective punch codes, provided as rows 0 – 9, and the top-most rows 12 and 11, the latter also being known as rows Y and X, respectively.)
IBM 029 — Character Patterns E‘L’ (standard):
IBM 029 — Character Patterns E‘A’:
IBM 026:
As can be seen, the E‘A’ set implements the same characters as the IBM 026 in the 8 × 8 code grid of the IBM 029. However, the updated character forms of the IBM 029 E‘L’ set are used (namely for the letters “I”, “O”, and the figures “0” and “4”), while reintroducing the square lozenge (⌑), which had been discarded from the standard set of the IBM 029. Unlike with the IBM 026, unused codes aren't merely left blank in the E‘A’ set, but print as a centered square of 3 × 3 dots.
Finally, here's an attempt to put the code grids into relation to the punch codes et vice versa:
We may observe that primary punches of 0 and 8 (and single punches of 11 and 12, as well) are treated as zone punches for the purpose of character generation. A primary punch of 9 is encoded in the (-1 / +y) section of the code table, where we would expect any x–8–1 code combinations.
While the general scheme is similar to the one of IBM 029, there are some variations in the attribution of primary and zone punches (columns and rows, respectively) to the code table. Again, primary punches of 0 and 8 (and single punches of 11 and 12) are regarded as zone punches for the purpose of character generation. A primary punch of 9 occupies the code segment (0, +y), where we would expect to find any x–8–1 combinations. Similarly, a primary punch code of 6 is routed to the code segement (-1, +y), where we would expect to find any x–8–2 combinations.