Standardul ASCII a fost adoptat în 1963, iar în prezent, este puțin probabil ca cineva să folosească o codificare ale cărei prime 128 de caractere să difere de ASCII. Cu toate acestea, până la sfârșitul secolului trecut, EBCDIC a fost utilizat activ - o codificare standard pentru mainframe-urile IBM și clonele lor sovietice ES EVM. EBCDIC rămâne codificarea principală în z/OS - sistemul de operare standard pentru mainframe-urile moderne IBM Z.
Ceea ce sare imediat în ochi atunci când ne uităm la EBCDIC este că literele nu sunt consecutive: între I și J și între R și S au rămas poziții neutilizate (pe ES EVM în aceste intervale simboluri chirilice). Cui i-ar fi trecut prin minte să codifice literele cu intervale inegale între literele vecine?

Numele EBCDIC („Extended BCDIC”) sugerează că această codificare, spre deosebire de ASCII, a fost creată nu de la zero, ci pe baza codificării pe șase biți BCDIC, care a fost utilizată începând cu (1954):

Nu există o compatibilitate directă: un avantaj al BCDIC, pierdut în tranziția la EBCDIC, era că cifrelor 0—9 le corespund codurile 0-9. Cu toate acestea, deja existau lacune de șapte coduri între I și J și lacune de opt coduri între R și S în BCDIC. De unde au apărut acestea?
Istoria (E)BCDIC începe simultan cu istoria IBM - cu mult înainte de computerele electronice. IBM s-a format prin fuzionarea a patru companii, dintre care cea mai avansată din punct de vedere tehnologic era "Tabulating Machine Company", fondată în 1896 de Hermann Hollerith - inventatorul . Primele tabulatoare numărau pur și simplu numărul de carduri perforate, bătute într-un anumit loc; dar în 1905, Hollerith a început producția de tabulatoare zecimale. Fiecare card pentru tabulatorul zecimal consta din câmpuri de lungime arbitrară, iar numerele, scrise în aceste câmpuri în forma decimală obișnuită, erau sumarizate pe întreaga paletă. Împărțirea cardului în câmpuri era definită prin conectarea firelor pe panoul de comutare al tabulatorului. De exemplu, pe acest card perforat al lui Hollerith, în Biblioteca Congresului, este evident că numărul 23456789012345678 este bătut, nefiind clar cum a fost împărțit pe câmpuri:

Cei mai atenți ar fi putut observa că pe cardul lui Hollerith există 12 rânduri pentru găuri, deși pentru cifre sunt suficiente zece; iar în BCDIC pentru fiecare valoare a celor două biți cei mai semnificativi sunt folosiți doar 12 coduri din cele 16 posibile.
Desigur, aceasta nu este o coincidență întâmplătoare. Inițial, Hollerith a prevăzut rânduri suplimentare pentru „semne speciale”, care nu erau sumate, ci pur și simplu numărate — așa cum se întâmpla în cele mai vechi tabulatori. (Astăzi le-am numi „câmpuri de biți”.) În plus, printre „semnele speciale” puteau fi specificate indicatoarele de grup: dacă la tabulare erau necesare nu doar sumele finale, ci și intermediare, tabulatorul se oprea atunci când detecta o modificare a oricărui indicator de grup, iar operatorul trebuia să transcrie sumele intermediare de pe tablourile digitale pe hârtie, să reseteze tablourile și să reia tabularea. De exemplu, la calcularea bilanțurilor contabile, un grup de cartonașe putea corespunde unei date sau unui partener.
Până în 1920, când Hollerith era deja retras, au intrat în uz „tabulatori imprimați”, care se conectau la teletip și puteau imprima singuri sumele intermediare, fără a necesita intervenția operatorului. Complexitatea consta acum în a determina la ce se referă fiecare dintre numerele imprimate. În 1931, IBM a decis să utilizeze „semne speciale” pentru a marca litere: semnul din rândul 12 marca litera de A la I, din rândul 11 — de J la R, din rândul zero — de S la Z. Noua „tabulatură alfabetică” putea imprima numele fiecărui grup de cartonașe împreună cu sumele intermediare; în acest timp, coloana neperforată se transforma într-un spațiu între simboluri. Observați că S este marcată de combinația găurilor 0+2, iar combinația 0+1 nu a fost utilizată inițial din teama că două găuri alăturate într-o singură coloană ar putea provoca probleme mecanice cititorului.

Acum, putem privi tabelul BCDIC dintr-o altă perspectivă:

Cu excepția faptului că 0 și spațiul sunt inversate, cele două biți cei mai semnificativi definesc „semnul special”, care, din 1931, se perfora în perforația corespunzătoare simbolului; iar cei patru biți cei mai puțin semnificativi definesc cifra care este perforată în partea principală a cartonașului. Suportul simbolurilor & - / a fost adăugată în tabulatorii IBM în anii 1930, iar codificarea acestor simboluri în BCDIC corespunde combinațiilor de găuri perforate. Când a fost nevoie de suport pentru un număr și mai mare de simboluri, s-au perforat câteva „semne speciale” în linia 8 — astfel, într-o coloană putea fi până la trei găuri. Acest format de fise perforate a rămas practic neschimbat până la sfârșitul secolului. În URSS au păstrat codificările IBM pentru literele latine și semnele de punctuație, iar pentru literele chirilice s-au perforat mai multe „semne speciale” în rândurile 12, 11, 0 — fără a se limita la trei găuri într-o coloană.
Când a fost creat computerul IBM 704, nu s-a gândit mult la codificarea simbolurilor pentru acesta: au folosit codificarea deja utilizată în fisele perforate, și doar 0 „a fost pus la loc”. În 1964, la trecerea de la BCDIC la EBCDIC, cele patru biți inferiori ai fiecărui simbol au rămas neschimbați, deși s-au amestecat puțin biții superiori. Astfel, formatul fiselor perforate ales de Hollerith la începutul secolului trecut a influențat arhitectura tuturor calculatoarelor IBM, inclusiv IBM Z.
Sursa: habr.com
