Varför följer inte bokstÀverna varandra i EBCDIC?

ASCII-standarden antogs 1963, och idag Ă€r det knappast nĂ„gon som anvĂ€nder en kodning vars första 128 tecken skiljer sig frĂ„n ASCII. Trots detta anvĂ€ndes EBCDIC aktivt fram till slutet av förra seklet — den standardkodning som anvĂ€ndes för IBM-mainframes och deras sovjetiska kloner, ES EVM. EBCDIC Ă€r fortfarande huvudkodning i z/OS — standardoperativsystemet för moderna IBM Z-mainframes.

Det som omedelbart slÄr en nÀr man tittar pÄ EBCDIC Àr att bokstÀverna inte följer varandra: mellan I och J och mellan R och S finns det oanvÀnda positioner (pÄ ES EVM fördelades kyrilliska tecken). Vem kunde tro att man skulle koda bokstÀver med ojÀmna mellanrum mellan angrÀnsande bokstÀver?

Varför följer inte bokstÀverna varandra i EBCDIC?

SjĂ€lva namnet EBCDIC ("Extended BCDIC") antyder att denna kodning — till skillnad frĂ„n ASCII — inte skapades pĂ„ en tom plats, utan baserades pĂ„ den sexbitarskodning som kallades BCDIC, vilken anvĂ€ndes frĂ„n IBM 704 (1954):

Varför följer inte bokstÀverna varandra i EBCDIC?

Det finns ingen direkt bakĂ„tkompatibilitet: en bekvĂ€m egenskap hos BCDIC, som förlorades vid övergĂ„ngen till EBCDIC, var att siffrorna 0—9 motsvarar koderna 0-9. ÄndĂ„ fanns det redan sju koder mellan I och J och Ă„tta koder mellan R och S i BCDIC. Var kom de ifrĂ„n?

Historien om (E)BCDIC börjar samtidigt som historien om IBM — lĂ„ngt innan elektroniska datorer. IBM bildades genom sammanslagning av fyra företag, dĂ€r det mest teknologiskt avancerade var "Tabulating Machine Company", grundat 1896 av Herman Hollerith — uppfinnaren av tabulatorn.De första tabulatorerna rĂ€knade helt enkelt antalet perforerade kort som hade stansats pĂ„ en viss plats; men 1905 började Hollerith tillverka decimala tabulatorer. Varje kort för den decimala tabulatorn bestod av fĂ€lt av godtycklig lĂ€ngd, och siffror, skrivna i dessa fĂ€lt i den vanliga decimalformen, summerades över hela kortleken. Delningen av kortet i fĂ€lt bestĂ€mdes genom att trĂ„dar kopplades samman pĂ„ tabulatorns kopplingspanel. Till exempel, pĂ„ detta perforerade kort av Hollerith, förvaras i Kongressbiblioteket, finns tydligt stansat numret 23456789012345678, som oklart Ă€r delat i fĂ€lt:

Varför följer inte bokstÀverna varandra i EBCDIC?

De mest observanta kunde mÀrka att kortet av Hollerith har 12 rader för hÄlen, Àven om tio rÀcker för siffrorna; och i BCDIC anvÀnds endast 12 koder av 16 möjliga för varje vÀrde av de tvÄ högsta bitarna.

SjĂ€lvklart Ă€r detta inte en tillfĂ€llighet. Ursprungligen avsĂ„g Hollerith att anvĂ€nda extra rader för "specialmarkeringar" som inte summerades utan bara rĂ€knades — liksom i de allra första tabulatorerna. (Idag skulle vi kalla dem "bitfĂ€lt".) Dessutom kunde man bland "specialmarkeringar" ange grupplika indikatorer: om tabuleringen krĂ€vde inte bara slutliga summor utan ocksĂ„ mellanliggande, sĂ„ stoppade tabulatorn nĂ€r den upptĂ€ckte en förĂ€ndring i nĂ„gon av grupplika indikatorerna, och operatören var tvungen att skriva ner mellanliggande summor frĂ„n de digitala tavlorna pĂ„ papper, nollstĂ€lla tavlorna och Ă„teruppta tabuleringen. Till exempel, nĂ€r man rĂ€knade bokslut kunde en grupp kort motsvara ett datum eller en motpart.

Vid 1920, nĂ€r Hollerith redan hade gĂ„tt i pension, hade "tryckande tabulatorer" kommit i bruk, som kunde anslutas till teletype och sjĂ€lva skriva ut mellanliggande summor utan att krĂ€va operatörens ingripande. Nu lĂ„g komplexiteten i att faststĂ€lla vad varje tryckt nummer hörde till. År 1931 bestĂ€mde IBM sig för att anvĂ€nda "specialmarkeringar" för att indikera bokstĂ€ver: en markering i rad 12 angav bokstaven frĂ„n A till I, i rad 11 frĂ„n J till R, i rad 0 frĂ„n S till Z. Den nya "alfabetiska tabulatorn" kunde skriva ut namnet pĂ„ varje grupp kort tillsammans med mellanliggande summor; under tiden blev en icke-tryckt kolumn ett mellanslag mellan tecknen. Observera att S angivits av kombinationen av hĂ„l 0+2, medan kombinationen 0+1 ursprungligen inte anvĂ€ndes av rĂ€dsla för att tvĂ„ hĂ„l bredvid varandra i samma kolumn skulle orsaka mekaniska problem i lĂ€saren.

Varför följer inte bokstÀverna varandra i EBCDIC?

Nu kan vi se pÄ BCDIC-tabellen frÄn en nÄgot annan vinkel:

Varför följer inte bokstÀverna varandra i EBCDIC?

Förutom att 0 och mellanslag har bytt plats, definierar de tvĂ„ högsta bitarna "specialmarkeringen" som frĂ„n 1931 stansades i perforeringskortet för motsvarande tecken; de fyra lĂ€gre bitarna definierar siffran som stansas i kortets huvuddel. Stödet för tecken & - / lades in IBM:s tabeller pĂ„ 1930-talet, och kodningen av dessa tecken i BCDIC motsvarar de fickkombinationer som slogs ut för dem. NĂ€r det blev nödvĂ€ndigt att stödja ett Ă€nnu större antal tecken började man slĂ„ en extra "specialmarkering" i rad 8 – pĂ„ sĂ„ sĂ€tt kunde det finnas upp till tre hĂ„l i en kolumn. Detta format för hĂ„lkort har förblivit i stort sett oförĂ€ndrat fram till slutet av seklet. I Sovjetunionen behöll man IBM:s kodningar för latinska bokstĂ€ver och interpunktion, och för kyrilliska bokstĂ€ver slog man flera "specialmarkeringar" i raderna 12, 11, 0 – utan att begrĂ€nsa sig till tre hĂ„l i en kolumn.

NĂ€r IBM 704:s dator skapades tĂ€nkte man inte lĂ€nge pĂ„ teckenkodningen för den: man tog koden som redan anvĂ€ndes dĂ„ i hĂ„lkorten och satte bara 0 "pĂ„ plats". År 1964, vid övergĂ„ngen frĂ„n BCDIC till EBCDIC, lĂ€mnade man de fyra lĂ€gsta bitarna av varje tecken oförĂ€ndrade, Ă€ven om man omorganiserade de högre bitarna lite. PĂ„ sĂ„ sĂ€tt pĂ„verkade formatet för hĂ„lkorten, som Hollerith valde i början av förra seklet, arkitekturen för alla IBM-datorer, inklusive IBM Z.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster