Waarom zijn de letters niet opeenvolgend in EBCDIC?

De ASCII-standaard werd in 1963 aangenomen en nu gebruikt bijna niemand een codering waarvan de eerste 128 tekens verschillen van ASCII. Tot het einde van de vorige eeuw werd EBCDIC echter actief gebruikt - de standaardcodering voor IBM-mainframes en hun Sovjet-klonen EC-computers. EBCDIC blijft de primaire codering in z/OS, het standaardbesturingssysteem voor moderne IBM Z-mainframes.

Wat meteen opvalt als je naar EBCDIC kijkt, is dat de letters niet op een rij staan: tussen I и J en tussen R и S er waren ongebruikte posities (op de ES-computer voor deze intervallen gedistribueerd Cyrillische tekens). Wie had gedacht letters te coderen met ongelijke spaties tussen aangrenzende letters?

Waarom zijn de letters niet opeenvolgend in EBCDIC?

De naam EBCDIC (“Extended BCDIC”) geeft aan dat deze codering – in tegenstelling tot ASCII – niet helemaal opnieuw is gemaakt, maar gebaseerd is op de zes-bits BCDIC-codering, die sindsdien wordt gebruikt. IBM704 (1954):

Waarom zijn de letters niet opeenvolgend in EBCDIC?

Er is geen onmiddellijke achterwaartse compatibiliteit: een handig kenmerk van BCDIC dat verloren ging bij de overgang naar EBCDIC was dat de cijfers 0-9 komen overeen met de codes 0-9. Er zitten echter gaten van zeven codes tussen I и J en in acht codes ertussen R и S ben al bij BCDIC geweest. Waar komen ze vandaan?

De geschiedenis van (E)BCDIC begint gelijktijdig met de geschiedenis van IBM – lang vóór elektronische computers. IBM ontstond als resultaat van de fusie van vier bedrijven, waarvan de technologisch meest geavanceerde de Tabminating Machine Company was, opgericht in 1896 door Herman Hollerith, de uitvinder tabulator. De eerste tabulators telden eenvoudigweg het aantal ponskaarten dat op een specifieke locatie was geslagen; maar in 1905 begon Hollerith met de productie decimale tabulators. Elke kaart voor de decimale tabulator bestond uit velden van willekeurige lengte, en de getallen die in deze velden in de gebruikelijke decimale vorm waren geschreven, werden over het hele kaartspel opgeteld. De verdeling van de kaart in velden werd bepaald door de draden op het patchpaneel van de tabulator aan te sluiten. Op deze Hollerith-ponskaart staat bijvoorbeeld opgeslagen in de Library of Congress is het nummer 23456789012345678 duidelijk gestempeld, onbekend zoals verdeeld in velden:

Waarom zijn de letters niet opeenvolgend in EBCDIC?

De meest oplettende persoon heeft misschien gemerkt dat er op de Hollerith-kaart twaalf rijen voor gaten zijn, hoewel tien voldoende zijn voor cijfers; en in BCDIC worden voor elke waarde van de twee meest significante bits slechts 12 van de 12 mogelijke codes gebruikt.

Natuurlijk is dit geen toeval. Aanvankelijk bedoelde Hollerith extra rijen voor "speciale cijfers" die niet werden opgeteld, maar eenvoudigweg werden geteld - zoals in de allereerste tabulators. (Tegenwoordig zouden we ze “bitvelden” noemen.) Bovendien was het onder de “speciale markeringen” mogelijk om groepsindicatoren in te stellen: als de tabellering niet alleen de eindsommen vereiste, maar ook tussenliggende bedragen, dan zou de tabeller stoppen wanneer het detecteerde een verandering in een van de groepsindicatoren, en de operator moest de subtotalen van de digitale borden op papier herschrijven, het bord opnieuw instellen en de tabellering hervatten. Bij het berekenen van boekhoudkundige saldi kan een groep kaarten bijvoorbeeld overeenkomen met één datum of één tegenpartij.

In 1920, toen Hollerith al met pensioen was, kwamen ‘typetabellen’ in gebruik, die verbonden waren met een teletype en zelf subtotalen konden afdrukken zonder tussenkomst van de operator. De moeilijkheid was nu om te bepalen waar elk van de gedrukte nummers naar verwees. In 1931 besloot IBM ‘speciale tekens’ te gebruiken om letters aan te duiden: een teken in de 12e rij duidde de letter aan van A naar I, in de 11e - van J naar R, op nul - vanaf S naar Z. De nieuwe "alfabettabelulator" zou de naam van elke groep kaarten kunnen afdrukken, samen met subtotalen; in dit geval veranderde de ononderbroken kolom in een spatie tussen de tekens. Houd er rekening mee dat S wordt aangeduid met de gatencombinatie 0+2, en de 0+1 combinatie werd oorspronkelijk niet gebruikt uit angst dat twee gaten naast elkaar in dezelfde kolom mechanische problemen in de lezer zouden veroorzaken.

Waarom zijn de letters niet opeenvolgend in EBCDIC?

Nu kun je de BCDIC-tabel vanuit een iets andere hoek bekijken:

Waarom zijn de letters niet opeenvolgend in EBCDIC?

Behalve dat de 0 en de spatie zijn omgedraaid, definiëren de twee meest significante bits de "speciale markering" die sinds 1931 in de ponskaart is geslagen voor het overeenkomstige teken; en de minst significante vier bits bepalen het cijfer dat in het hoofdgedeelte van de kaart is geslagen. Ondersteuning van symbolen & - / werd in de jaren dertig aan IBM-tabulators toegevoegd, en de BCDIC-codering van deze karakters komt overeen met de gatencombinaties die ervoor zijn gemaakt. Wanneer ondersteuning voor een nog groter aantal tekens nodig was, werd rij 1930 als een extra “speciaal merkteken” geponst - er konden dus maximaal drie gaten in één kolom zitten. Dit formaat ponskaarten bleef tot het einde van de eeuw vrijwel onveranderd. In de USSR verlieten ze IBM's Latijnse en interpunctiecoderingen, en voor Cyrillische letters sloegen ze meerdere "speciale tekens" tegelijk in de rijen 8, 12, 11 - niet beperkt tot drie gaten in één kolom.

Toen de IBM 704-computer werd gemaakt, dachten ze niet lang na over de tekencodering ervoor: ze namen de codering die toen al in ponskaarten werd gebruikt, en plaatsten deze alleen maar op zijn plaats. In 0, tijdens de overgang van BCDIC naar EBCDIC, bleven de vier bits van lage orde van elk symbool ongewijzigd, hoewel de bits van hoge orde een beetje werden geschud. Zo heeft het ponskaartformaat dat Hollerith aan het begin van de vorige eeuw koos, invloed gehad op de architectuur van alle IBM-computers, tot en met de IBM Z.

Bron: www.habr.com

Voeg een reactie