Hvorfor står bogstaverne ikke på række i EBCDIC?

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 fordelt kyrilliske tegn). Hvem ville have troet at kode bogstaver med ulige mellemrum mellem tilstødende bogstaver?

Hvorfor står bogstaverne ikke på række i EBCDIC?

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 IBM 704 (1954):

Hvorfor står bogstaverne ikke på række i EBCDIC?

Der er ingen umiddelbar bagudkompatibilitet: en praktisk funktion ved BCDIC, der gik tabt i overgangen til EBCDIC, var, at tallene 09 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 tabulator. De første tabulatorer talte simpelthen antallet af hullede kort, der blev hullet på et bestemt sted; men i 1905 begyndte Hollerith produktionen decimal tabulatorer. Hvert kort til decimaltabulatoren bestod af felter af vilkårlig længde, og tallene skrevet i disse felter i den sædvanlige decimalform blev summeret over hele bunken. Opdelingen af ​​kortet i felter blev bestemt ved at forbinde ledningerne på tabulatorens patchpanel. For eksempel på dette Hollerith hulkort, gemt i Library of Congress er nummeret 23456789012345678 tydeligt stemplet, ukendt som opdelt i felter:

Hvorfor står bogstaverne ikke på række i EBCDIC?

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.

Hvorfor står bogstaverne ikke på række i EBCDIC?

Nu kan du se på BCDIC-tabellen fra en lidt anden vinkel:

Hvorfor står bogstaverne ikke på række i EBCDIC?

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

Tilføj en kommentar