ASCII-standarden blev vedtaget i 1963, og nu er der næppe nogen, der bruger en kodning, hvis første 128 tegn adskiller sig fra ASCII. Men indtil slutningen af forrige århundrede blev EBCDIC aktivt brugt - standardkodningen for IBM mainframes og deres sovjetiske kloner EC computere. EBCDIC er fortsat den primære kodning i z/OS, standardoperativsystemet til moderne IBM Z mainframes.
Det, der umiddelbart falder dig i øjnene, når du ser på EBCDIC er, at bogstaverne ikke står på række: mellem I
и J
og imellem R
и S
der var ubrugte positioner (på ES-computeren i disse intervaller
Selve navnet EBCDIC ("Extended BCDIC") antyder, at denne kodning - i modsætning til ASCII - ikke blev skabt fra bunden, men baseret på seks-bit BCDIC-kodningen, som har været brugt siden
Der er ingen umiddelbar bagudkompatibilitet: en praktisk funktion ved BCDIC, der gik tabt i overgangen til EBCDIC, var, at tallene 0
—9
svarer til koderne 0-9. Der er dog mellemrum på syv koder I
и J
og i otte koder imellem R
и S
allerede været på BCDIC. Hvor kom de fra?
Historien om (E)BCDIC begynder samtidig med historien om IBM - længe før elektroniske computere. IBM blev dannet som et resultat af fusionen af fire virksomheder, hvoraf den mest teknologisk avancerede var Tabulating Machine Company, grundlagt i 1896 af Herman Hollerith, opfinderen
De mest opmærksomme har måske bemærket, at der på Hollerith-kortet er 12 rækker til huller, selvom ti er nok til tal; og i BCDIC, for hver værdi af de mest signifikante to bit, bruges kun 12 koder ud af 16 mulige.
Dette er selvfølgelig ikke en tilfældighed. I første omgang havde Hollerith tiltænkt yderligere rækker til "særmærker", der ikke blev lagt sammen, men blot talt - som i de allerførste tabulatorer. (I dag ville vi kalde dem "bitfelter".) Derudover var det blandt "særmærkerne" muligt at indstille gruppeindikatorer: Hvis tabuleringen krævede ikke kun de endelige summer, men også mellemliggende, ville tabulatoren stoppe, når den registrerede en ændring i en af gruppeindikatorerne, og operatøren måtte omskrive subtotalerne fra de digitale tavler til papir, nulstille tavlen og genoptage tabulering. Ved beregning af regnskabssaldi kan en gruppe af kort f.eks. svare til én dato eller én modpart.
I 1920, da Hollerith allerede var gået på pension, kom "typetabulatorer" i brug, som var forbundet til en teletype og selv kunne udskrive subtotaler uden at kræve operatørintervention. Vanskeligheden var nu at bestemme, hvad hvert af de trykte numre refererede til. I 1931 besluttede IBM at bruge "særlige mærker" til at angive bogstaver: et mærke i 12. række angivede bogstavet fra A
til I
, i den 11. - fra J
til R
, ved nul - fra S
til Z
. Den nye "alfabettabulator" kunne udskrive navnet på hver gruppe kort sammen med subtotaler; i dette tilfælde blev den ubrudte kolonne til et mellemrum mellem tegn. Bemærk, at S
er betegnet med hulkombinationen 0+2, og 0+1-kombinationen blev ikke oprindeligt brugt af frygt for, at to huller ved siden af hinanden i samme spalte ville give mekaniske problemer hos læseren.
Nu kan du se på BCDIC-tabellen fra en lidt anden vinkel:
Bortset fra at 0 og mellemrum er omvendt, definerer de mest signifikante to bit det "særlige mærke", der er blevet hullet ind i hulkortet for det tilsvarende tegn siden 1931; og de mindst signifikante fire bits bestemmer det ciffer, der er slået ind i hoveddelen af kortet. Symbolstøtte & - /
blev tilføjet til IBM-tabulatorer i 1930'erne, og BCDIC-kodningen af disse tegn svarer til de hulkombinationer, der blev slået til dem. Når der var behov for understøttelse af et endnu større antal tegn, blev række 8 udstanset som et ekstra "specialmærke" - således kunne der være op til tre huller i en kolonne. Dette format af hulkort forblev stort set uændret indtil slutningen af århundredet. I USSR forlod de IBMs latinske og tegnsætningskoder, og for kyrilliske bogstaver slog de flere "specielle mærker" på én gang i række 12, 11, 0 - ikke begrænset til tre huller i en kolonne.
Da IBM 704-computeren blev skabt, tænkte de ikke længe over tegnkodningen til den: de tog den kodning, der allerede blev brugt i hulkort på det tidspunkt, og "satte den på sin plads." I 0, under overgangen fra BCDIC til EBCDIC, blev de laveste fire bits af hvert symbol efterladt uændrede, selvom de højordens bits blev blandet lidt. Det hulkortformat, som Hollerith valgte i begyndelsen af forrige århundrede, påvirkede således arkitekturen af alle IBM-computere, til og med IBM Z.
Kilde: www.habr.com