Miksi kirjaimet eivät ole peräkkäin EBCDIC:ssä?

ASCII-standardi otettiin käyttöön vuonna 1963, ja nykyään tuskin kukaan käyttää koodausta, jonka ensimmäiset 128 merkkiä eroavat ASCII:sta. Viime vuosisadan loppuun asti käytettiin kuitenkin aktiivisesti EBCDIC:tä - standardikoodausta IBM-keskikoneille ja niiden Neuvostoliiton kloonien EC-tietokoneille. EBCDIC on edelleen ensisijainen koodaus z/OS:ssä, joka on nykyaikaisten IBM Z -mainframe-tietokoneiden vakiokäyttöjärjestelmä.

EBCDIC:tä katsoessa pistää heti silmään, että kirjaimet eivät ole peräkkäin: välillä I и J ja välillä R и S oli käyttämättömiä paikkoja (ES-tietokoneessa näille aikaväleille hajautettu kyrilliset kirjaimet). Kuka olisi ajatellut koodata kirjaimia, joissa vierekkäisten kirjainten välissä on epätasainen väli?

Miksi kirjaimet eivät ole peräkkäin EBCDIC:ssä?

Jo nimi EBCDIC ("Extended BCDIC") vihjaa, että tämä koodaus - toisin kuin ASCII - ei luotu tyhjästä, vaan perustui kuusibittiseen BCDIC-koodaukseen, jota on käytetty vuodesta lähtien. IBM 704 (1954):

Miksi kirjaimet eivät ole peräkkäin EBCDIC:ssä?

Välitöntä taaksepäin yhteensopivuutta ei ole: BCDIC:n kätevä ominaisuus, joka katosi siirtyessä EBCDIC:hen, oli se, että numerot 0-9 vastaavat koodeja 0-9. Välissä on kuitenkin seitsemän koodin aukko I и J ja kahdeksalla koodilla välillä R и S ovat jo käyneet BCDIC:ssä. Mistä he tulivat?

(E)BCDIC:n historia alkaa samanaikaisesti IBM:n historian kanssa – kauan ennen elektronisia tietokoneita. IBM syntyi neljän yrityksen fuusiossa, joista teknologisesti edistynein oli keksijä Herman Hollerithin vuonna 1896 perustama Tabulating Machine Company. tabulaattori. Ensimmäiset tabulaattorit yksinkertaisesti laskivat tietyssä paikassa rei'itettävien korttien määrän; mutta vuonna 1905 Hollerith aloitti tuotannon desimaali tabulaattorit. Jokainen desimaalitabulaattorin kortti koostui mielivaltaisen pituisista kentistä ja näihin kenttiin tavalliseen desimaalimuotoon kirjoitetut numerot summattiin koko pakan yli. Kartan jaottelu kenttiin määritettiin yhdistämällä tabulaattorin paikkapaneelin johdot. Esimerkiksi tällä Hollerith-reikäkortilla tallennettu Kongressin kirjastossa numero 23456789012345678 on selvästi leimattu, tuntematon, koska se on jaettu kenttiin:

Miksi kirjaimet eivät ole peräkkäin EBCDIC:ssä?

Tarkkaimmat ovat saattaneet huomata, että Hollerith-kartalla on 12 riviä reikiä varten, vaikka kymmenen riittää numeroille; ja BCDIC:ssä kutakin merkittävimmän kahden bitin arvoa kohden käytetään vain 12 koodia 16 mahdollisesta.

Tämä ei tietenkään ole sattumaa. Aluksi Hollerith aikoi lisärivejä "erikoismerkeille", joita ei laskettu yhteen, vaan yksinkertaisesti laskettiin - kuten aivan ensimmäisissä tabulaattorissa. (Nykyään kutsuisimme niitä "bittikentiksi".) Lisäksi "erikoismerkkien" joukkoon oli mahdollista asettaa ryhmäindikaattoreita: jos taulukointi vaati loppusummien lisäksi myös välisummat, tabulaattori pysähtyi, kun se havaitsi muutoksen missä tahansa ryhmän indikaattoreissa, ja operaattorin piti kirjoittaa digitaalisten taulujen välisummat uudelleen paperille, nollata taulu ja jatkaa taulukointia. Esimerkiksi kirjanpitosaldoa laskettaessa korttiryhmä voi vastata yhtä päivämäärää tai yhtä vastapuolta.

Vuoteen 1920 mennessä, kun Hollerith oli jo jäänyt eläkkeelle, käyttöön tulivat "kirjoitustaulukkolaitteet", jotka yhdistettiin teletyyppiin ja pystyivät tulostamaan välisummat itse ilman käyttäjän väliintuloa. Nyt vaikeutena oli määrittää, mihin jokainen painettu numero viittaa. Vuonna 1931 IBM päätti käyttää "erikoismerkkejä" osoittamaan kirjaimia: merkki 12. rivillä osoitti kirjainta A до I, 11. - alkaen J до R, nollasta - alkaen S до Z. Uusi "aakkosten tabulaattori" voisi tulostaa kunkin korttiryhmän nimen sekä välisummat; tässä tapauksessa katkeamaton sarake muuttui merkkien väliseksi tilaksi. Huomatkaa että S on merkitty reikäyhdistelmällä 0+2, eikä 0+1 yhdistelmää alunperin käytetty, koska pelättiin, että kaksi vierekkäistä reikää samassa sarakkeessa aiheuttaisivat mekaanisia ongelmia lukijassa.

Miksi kirjaimet eivät ole peräkkäin EBCDIC:ssä?

Nyt voit katsoa BCDIC-taulukkoa hieman eri näkökulmasta:

Miksi kirjaimet eivät ole peräkkäin EBCDIC:ssä?

Lukuun ottamatta sitä, että 0 ja välilyönti ovat käänteisiä, kaksi merkittävintä bittiä määrittelevät "erikoismerkin", joka on rei'itetty vastaavan merkin reikäkorttiin vuodesta 1931 lähtien; ja vähiten merkitsevät neljä bittiä määrittävät kortin pääosaan rei'itetyn numeron. Symbolien tuki & - / lisättiin IBM:n tabulaattoriin 1930-luvulla, ja näiden merkkien BCDIC-koodaus vastaa niille tehtyjä reikäyhdistelmiä. Kun tarvittiin tukea vielä suuremmalle määrälle merkkejä, rivi 8 leimattiin ylimääräiseksi "erikoismerkiksi" - jolloin yhdessä sarakkeessa voi olla jopa kolme reikää. Tämä reikäkorttimuoto säilyi lähes muuttumattomana vuosisadan loppuun asti. Neuvostoliitossa he jättivät IBM:n latinan ja välimerkkien koodaukset, ja kyrillisille kirjaimille he leimasivat useita "erikoismerkkejä" kerralla riveille 12, 11, 0 - ei rajoitettu kolmeen reikään yhdessä sarakkeessa.

Kun IBM 704 -tietokone luotiin, sen merkkikoodausta ei mietitty pitkään: he ottivat reikäkorteissa jo tuolloin käytetyn koodauksen ja vain "laittoivat sen paikoilleen". Vuonna 0 siirryttäessä BCDIC:stä EBCDIC:hen kunkin symbolin matalan kertaluvun neljä bittiä jätettiin ennalleen, vaikka korkean kertaluvun bittejä sekoitettiin hieman. Näin ollen Hollerithin viime vuosisadan alussa valitsema reikäkorttimuoto vaikutti kaikkien IBM-tietokoneiden arkkitehtuuriin IBM Z:aan asti.

Lähde: will.com

Lisää kommentti