De ASCII-standaard werd in 1963 aangenomen, en tegenwoordig zal bijna niemand een codering gebruiken waarvan de eerste 128 symbolen verschillen van ASCII. Desondanks werd EBCDIC tot het einde van de vorige eeuw actief gebruikt — de standaardcodering voor IBM mainframes en hun Sovjet-klonen van de ES EVM. EBCDIC blijft de primaire codering in z/OS — het standaard besturingssysteem voor moderne IBM Z mainframes.
Wat direct opvalt bij het bekijken van EBCDIC, is dat de letters niet aaneengeschakeld zijn: tussen I en J en tussen R en S zijn er ongebruikte posities (in de ES EVM werden in deze tussenruimtes De naam EBCDIC ("Extended BCDIC") suggereert dat deze codering, in tegenstelling tot ASCII, niet uit het niets is ontstaan, maar is gebaseerd op de zes-bits codering BCDIC, die werd gebruikt sinds

de IBM 704. (1954):

codes 0-9 kregen. Toch waren er al zeven codebreuken tussen 0—9 en acht codes tussen I en J in BCDIC. Waar kwamen ze vandaan? R en S De geschiedenis van (E)BCDIC begint gelijktijdig met de geschiedenis van IBM — lang voordat elektronische computers bestonden. IBM ontstond uit de fusie van vier bedrijven, waarvan de meest technologisch geavanceerde de "Tabulating Machine Company" was, opgericht in 1896 door Herman Hollerith — de uitvinder van de
tabulator. decimale tabulators. Elke kaart voor de decimale tabulator bestond uit velden van willekeurige lengte, en de cijfers, die in deze velden in gebruikelijke decimale vorm waren geschreven, werden over de hele stapel opgeteld. De indeling van de kaart in velden werd bepaald door het verbinden van draden op het schakelpaneel van de tabulator. Bijvoorbeeld, op deze perforatiekaart van Hollerith, die wordt bewaard De meest oplettenden kunnen merken dat er op Hollerith's kaart 12 rijen voor gaten zijn, terwijl er voor cijfers voldoende aan tien volstaat; en in BCDIC worden voor elke waarde van de bovenste twee bits slechts 12 van de 16 mogelijke codes gebruikt.

De meest oplettenden hebben misschien opgemerkt dat de Hollerith-kaart 12 rijen voor gaten heeft, terwijl tien rijen voldoende zijn voor cijfers; en in BCDIC worden er voor elke waarde van de twee hoogste bits slechts 12 codes van de 16 mogelijke gebruikt.
Natuurlijk is dit geen toevallige samenloop van omstandigheden. Oorspronkelijk was Hollerith van plan om extra rijen te reserveren voor "speciale markeringen" die niet werden opgeteld, maar gewoon geteld — zoals bij de allereerste tabulators. (Tegenwoordig zouden we ze "bitvelden" noemen.) Daarnaast konden onder de "speciale markeringen" group indicators worden ingesteld: als bij tabuleren niet alleen definitieve totalen, maar ook tussentotalen nodig waren, stopte de tabulator wanneer hij een wijziging in een van de group indicators ontdekte, en de operator moest de tussentotalen van het digitale tableau op papier overtypen, het tableau resetten en het tabuleren hervatten. Bijvoorbeeld, bij het tellen van boekhoudkundige saldi kon een groep kaarten overeenkomen met een bepaalde datum of een bepaalde tegenpartij.
In 1920, toen Hollerith al met pensioen was gegaan, kwamen de "druk-tabulators" in gebruik die waren aangesloten op telex en zelf tussentotalen konden afdrukken zonder tussenkomst van de operator. De uitdaging bestond er nu in om te bepalen bij welk nummer elk van de afgedrukte cijfers hoorde. In 1931 besloot IBM om met behulp van "speciale markeringen" letters aan te duiden: een markering in rij 12 gaf de letter aan van A tot I, rij 11 van J tot R, rij 0 van S tot Z. De nieuwe "alfabetische tabulator" kon de naam van elke groep kaarten afdrukken, samen met de tussentotalen; hierbij werd een ongeschoten kolom omgezet in een spatie tussen de symbolen. Let op dat S wordt aangeduid met de combinatie van gaten 0+2, terwijl de combinatie 0+1 oorspronkelijk niet werd gebruikt uit vrees dat twee gaten naast elkaar in dezelfde kolom mechanische problemen zouden veroorzaken in de lezer.

Nu kunnen we de BCDIC-tabel vanuit een iets andere hoek bekijken:

Behalve dat 0 en spatie omgedraaid zijn, bepalen de bovenste twee bits de "speciale markering" die sinds 1931 in de perforatiekaart werd geperforeerd voor het bijbehorende symbool; en de onderste vier bits bepalen het cijfer dat in het hoofddeel van de kaart wordt geperforeerd. Ondersteuning voor symbolen & - / debutteerde in de tabulators van IBM in de jaren 30, en de codering van deze symbolen in BCDIC komt overeen met de doorboorde combinaties voor hen. Toen er behoefte was aan ondersteuning voor nog meer symbolen, werden er extra 'speciale markeringen' gemaakt door rij 8 door te boren - op deze manier konden er in één kolom tot drie gaten zijn. Dit formaat van perforatiekaarten is tot het einde van de eeuw vrijwel onveranderd gebleven. In de USSR werden de IBM-coderingen voor het Latijns alfabet en leestekens behouden, en voor de letters van het Cyrillisch alfabet werden meteen meerdere 'speciale markeringen' in de rijen 12, 11, 0 geboord - zonder zich te beperken tot drie gaten in één kolom.
Bij de creatie van de IBM 704-computer werd er lang niet nagedacht over de codering van symbolen: men nam de codering die destijds al in perforatiekaarten werd gebruikt en 'stelde alleen 0 op zijn plaats'. In 1964, bij de overgang van BCDIC naar EBCDIC, bleven de onderste vier bits van elk symbool ongewijzigd, hoewel de bovenste bits een beetje werden herschikt. Op deze manier beïnvloedde het formaat van de perforatiekaarten, gekozen door Hollerith aan het begin van de vorige eeuw, de architectuur van alle IBM-computers, tot en met de IBM Z.
Bron: habr.com
