O padrão ASCII foi adotado em 1963 e hoje em dia é difícil que alguém utilize uma codificação cujos primeiros 128 caracteres fossem diferentes do ASCII. No entanto, até o final do século passado, o EBCDIC era amplamente utilizado — uma codificação padrão para mainframes da IBM e seus clones soviéticos na série ЕС ЭВМ. O EBCDIC continua a ser a codificação principal no z/OS — o sistema operacional padrão para os modernos mainframes IBM Z.
O que salta aos olhos ao olhar para o EBCDIC é que as letras não estão dispostas de forma sequencial: entre I e J e entre R e S existem posições não utilizadas (nos ЕС ЭВМ, entre esses intervalos símbolos cirílicos). Quem poderia pensar em codificar letras com intervalos desiguais entre letras vizinhas?

O próprio nome EBCDIC (“Extended BCDIC”) sugere que essa codificação — ao contrário do ASCII — não foi criada do zero, mas sim com base na codificação de seis bits BCDIC, que foi utilizada a partir de (1954):

Não há compatibilidade retroativa direta: uma característica conveniente do BCDIC, que foi perdida na transição para o EBCDIC, era que os números 0—9 correspondem aos códigos de 0 a 9. No entanto, já havia lacunas de sete códigos entre I e J e oito códigos entre R e S no BCDIC. De onde eles surgiram?
A história do (E)BCDIC começa simultaneamente com a história da IBM — muito antes dos computadores eletrônicos. A IBM foi formada pela fusão de quatro empresas, das quais a mais tecnologicamente avançada era a "Tabulating Machine Company", fundada em 1896 por Hermann Hollerith — o inventor do . Os primeiros tabuladores apenas contavam o número de cartões perfurados em um determinado local; mas em 1905, Hollerith começou a produzir tabuladores decimais. Cada cartão para o tabulador decimal consistia em campos de comprimento variável, e os números registrados nesses campos na forma decimal comum eram somados em toda a pilha. A divisão do cartão em campos era determinada pela conexão de fios no painel de comutação do tabulador. Por exemplo, neste cartão perfurado de Hollerith, na Biblioteca do Congresso, o número 23456789012345678 está claramente impresso, desconhecendo como foi dividido em campos:

Os mais atentos poderiam notar que no cartão de Hollerith há 12 linhas para os buracos, embora para os dígitos sejam suficientes dez; e no BCDIC para cada valor dos dois bits mais significativos, são usados apenas 12 códigos dos 16 possíveis.
Certamente, isso não é uma coincidência. Originalmente, Hollerith destinou linhas adicionais para "marcas especiais" que não eram somadas, mas apenas contadas — como nos primeiros tabuladores. (Hoje, chamaríamos isso de "campos bitwise"). Além disso, entre as "marcas especiais", era possível definir indicadores de grupo: se, ao tabular, eram necessárias não apenas somas finais, mas também intermediárias, o tabulador parava ao detectar a alteração de qualquer um dos indicadores de grupo, e o operador deveria reescrever as somas intermediárias do display digital em papel, zerar o display e retomar a tabulação. Por exemplo, ao contabilizar balanços, um grupo de cartões poderia corresponder a uma data ou a um contraparte específica.
Até 1920, quando Hollerith já havia se aposentado, começaram a ser usados os "tabuladores impressos", que se conectavam ao telégrafo e podiam imprimir somas intermediárias por conta própria, sem intervenção do operador. A complexidade agora estava em determinar a que se referia cada um dos números impressos. Em 1931, a IBM decidiu utilizar "marcas especiais" para indicar letras: a marca na linha 12 indicava a letra de A até I, a da linha 11 indicava a letra de J até R, e a da linha 0 indicava a letra de S até Z. O novo "tabulador alfabético" podia imprimir o nome de cada grupo de cartões junto com as somas intermediárias; ao mesmo tempo, uma coluna não perfurada se tornava um espaço entre os símbolos. Note que S é indicado pela combinação de furos 0+2, enquanto a combinação 0+1 não era utilizada inicialmente por receio de que dois furos próximos em uma coluna pudessem causar problemas mecânicos no leitor.

Agora, a tabela BCDIC pode ser vista sob uma nova perspectiva:

Exceto que 0 e espaço estão trocados de lugar, os dois bits mais significativos determinam a "marca especial" que desde 1931 era perfurada no cartão perfurado para o símbolo correspondente; e os quatro bits menos significativos definem o dígito que é perfurado na parte principal do cartão. O suporte a símbolos & - / foi incorporada nos tabuladores da IBM na década de 1930, e a codificação desses símbolos em BCDIC corresponde às combinações de furos que lhes são atribuídas. Quando foi necessária a suporte para um número ainda maior de caracteres, uma "marca especial" adicional começou a ser perfurada na linha 8 — assim, em uma coluna, podia haver até três furos. Esse formato de cartões perfurados permaneceu praticamente inalterado até o final do século. Na URSS, foram mantidas as codificações latinas e de pontuação da IBM, enquanto para as letras cirílicas eram perfuradas várias "marcas especiais" nas linhas 12, 11, 0 — não se limitando a três furos em uma única coluna.
Quando o computador IBM 704 foi criado, a codificação de caracteres para ele não foi um assunto que gerou muitas preocupações: foi utilizada a codificação já empregada então em cartões perfurados, e apenas o 0 foi "reposicionado". Em 1964, ao transitar de BCDIC para EBCDIC, os quatro bits menos significativos de cada caractere foram mantidos inalterados, embora alguns bits mais significativos tenham sido reorganizados. Assim, o formato de cartão perfurado escolhido por Hollerith no início do século passado influenciou a arquitetura de todos os computadores IBM, até o IBM Z.
Fonte: habr.com
