Varför står inte bokstäverna på rad i EBCDIC?

ASCII-standarden antogs 1963, och nu använder knappt någon en kodning vars första 128 tecken skiljer sig från ASCII. Men fram till slutet av förra seklet användes EBCDIC aktivt - standardkodningen för IBM stordatorer och deras sovjetiska kloner EC-datorer. EBCDIC förblir den primära kodningen i z/OS, standardoperativsystemet för moderna IBM Z stordatorer.

Det som direkt fångar ens uppmärksamhet när man tittar på EBCDIC är att bokstäverna inte står på rad: mellan I и J och mellan R и S det fanns oanvända positioner (på ES-datorn under dessa intervaller distribuerad kyrilliska tecken). Vem skulle ha tänkt att koda bokstäver med ojämna mellanrum mellan intilliggande bokstäver?

Varför står inte bokstäverna på rad i EBCDIC?

Själva namnet EBCDIC ("Extended BCDIC") antyder att denna kodning - till skillnad från ASCII - inte skapades från början, utan baserad på sexbitars BCDIC-kodningen, som har använts sedan IBM 704 (1954):

Varför står inte bokstäverna på rad i EBCDIC?

Det finns ingen omedelbar bakåtkompatibilitet: en praktisk funktion hos BCDIC som gick förlorad vid övergången till EBCDIC var att siffrorna 0-9 motsvarar koderna 0-9. Det finns dock luckor på sju koder mellan I и J och i åtta koder mellan R и S har redan varit på BCDIC. Var kom de ifrån?

Historien om (E)BCDIC börjar samtidigt med historien om IBM - långt före elektroniska datorer. IBM bildades som ett resultat av sammanslagningen av fyra företag, av vilka det mest tekniskt avancerade var Tabulating Machine Company, grundat 1896 av Herman Hollerith, uppfinnaren tabulator. De första tabulatorerna räknade helt enkelt antalet hålkort som stansades på en specifik plats; men 1905 började Hollerith produktionen decimal tabulatorer. Varje kort för decimaltabellen bestod av fält med godtycklig längd, och siffrorna som skrevs i dessa fält i vanlig decimalform summerades över hela kortleken. Uppdelningen av kartan i fält bestämdes genom att koppla ihop ledningarna på tabulatorns patchpanel. Till exempel, på detta Hollerith-hålkort, lagrad i Library of Congress är numret 23456789012345678 tydligt stämplat, okänt som uppdelat i fält:

Varför står inte bokstäverna på rad i EBCDIC?

Den mest uppmärksamma kan ha noterat att det på Hollerith-kartan finns 12 rader för hål, även om tio räcker för siffror; och i BCDIC, för varje värde av de mest signifikanta två bitarna, används endast 12 koder av 16 möjliga.

Detta är naturligtvis ingen slump. Från början avsåg Hollerith ytterligare rader för "specialmärken" som inte lades ihop, utan bara räknades - som i de allra första tabulatorerna. (Idag skulle vi kalla dem "bitfält".) Dessutom, bland "specialmärkena" var det möjligt att ställa in gruppindikatorer: om tabuleringen krävde inte bara de slutliga summorna utan även mellanliggande, skulle tabulatorn sluta när den upptäckte en förändring i någon av gruppindikatorerna och operatören var tvungen att skriva om delsummorna från de digitala tavlor till papper, återställa tavlan och återuppta tabulering. Till exempel, vid beräkning av bokföringssaldon kan en grupp kort motsvara ett datum eller en motpart.

År 1920, när Hollerith redan hade gått i pension, kom "skrivtabulatorer" i bruk, som var kopplade till en teletyp och själva kunde skriva ut delsummor utan att behöva ingripa från operatören. Svårigheten var nu att avgöra vad vart och ett av de tryckta numren avsåg. 1931 beslutade IBM att använda "specialmärken" för att ange bokstäver: ett märke på 12:e raden angav bokstaven från A до I, i den 11:e - från J до R, vid noll - från S до Z. Den nya "alfabetstabulatorn" kunde skriva ut namnet på varje grupp av kort tillsammans med delsummor; i detta fall förvandlades den obrutna kolumnen till ett mellanslag mellan tecken. Vänligen notera att S betecknas med hålkombinationen 0+2, och 0+1-kombinationen användes ursprungligen inte av rädsla för att två hål bredvid varandra i samma kolumn skulle orsaka mekaniska problem hos läsaren.

Varför står inte bokstäverna på rad i EBCDIC?

Nu kan du titta på BCDIC-tabellen från en lite annan vinkel:

Varför står inte bokstäverna på rad i EBCDIC?

Förutom att nollan och mellanslag är omvända, definierar de mest signifikanta två bitarna det "speciella märket" som har stansats in i hålkortet för motsvarande tecken sedan 0; och de minst signifikanta fyra bitarna bestämmer siffran som stansas in i huvuddelen av kortet. Symbolstöd & - / lades till IBM-tabulatorer på 1930-talet, och BCDIC-kodningen av dessa tecken motsvarar hålkombinationerna för dem. När stöd för ett ännu större antal tecken behövdes, stansades rad 8 som ett extra "speciellt märke" - det kunde alltså finnas upp till tre hål i en kolumn. Detta format av hålkort förblev praktiskt taget oförändrat fram till slutet av århundradet. I Sovjetunionen lämnade de IBMs latinska kodning och skiljeteckenkodning, och för kyrilliska bokstäver stansade de flera "specialmärken" på en gång i raderna 12, 11, 0 - inte begränsat till tre hål i en kolumn.

När IBM 704-datorn skapades tänkte de inte länge på teckenkodningen för den: de tog den kodning som redan användes i hålkort vid den tiden och bara "satte den på sin plats." 0, under övergången från BCDIC till EBCDIC, lämnades de låga fyra bitarna av varje symbol oförändrade, även om högordningens bitar blandades lite. Det hålkortsformat som Hollerith valde i början av förra seklet påverkade således arkitekturen hos alla IBM-datorer, till och med IBM Z.

Källa: will.com

Lägg en kommentar