Dlaczego litery nie są ułożone w rzędzie w EBCDIC?

Standard ASCII został przyjęty w 1963 roku i obecnie prawie nikt nie używa kodowania, którego pierwsze 128 znaków różni się od ASCII. Jednak do końca ubiegłego wieku aktywnie wykorzystywano EBCDIC - standardowe kodowanie dla komputerów mainframe IBM i ich radzieckich klonów komputerów EC. EBCDIC pozostaje podstawowym kodowaniem w systemie z/OS, standardowym systemie operacyjnym dla nowoczesnych komputerów mainframe IBM Z.

To, co od razu rzuca się w oczy, gdy patrzysz na EBCDIC, to to, że litery nie są ułożone w rzędzie: pomiędzy I и J i pomiędzy R и S były niewykorzystane pozycje (na komputerze ES dla tych interwałów Rozpowszechniane znaki cyrylicy). Kto by pomyślał o zakodowaniu liter z nierównymi odstępami między sąsiednimi literami?

Dlaczego litery nie są ułożone w rzędzie w EBCDIC?

Już sama nazwa EBCDIC („Rozszerzony BCDIC”) wskazuje, że kodowanie to – w przeciwieństwie do ASCII – nie zostało stworzone od podstaw, lecz w oparciu o stosowane od początku sześciobitowe kodowanie BCDIC. IBM 704 (1954):

Dlaczego litery nie są ułożone w rzędzie w EBCDIC?

Nie ma natychmiastowej kompatybilności wstecznej: wygodną cechą BCDIC, która została utracona podczas przejścia na EBCDIC, było to, że liczby 0-9 odpowiadają kodom 0-9. Istnieją jednak luki w siedmiu kodach I и J oraz w ośmiu kodach pomiędzy R и S byłem już w BCDIC. Skąd oni przyszli?

Historia (E)BCDIC zaczyna się jednocześnie z historią IBM – na długo przed komputerami elektronicznymi. IBM powstał w wyniku połączenia czterech firm, z których najbardziej zaawansowaną technologicznie była firma Tabulated Machine Company, założona w 1896 roku przez Hermana Holleritha, wynalazcę tabulator. Pierwsi tabulatorzy po prostu liczyli liczbę kart perforowanych uderzonych w określonym miejscu; ale w 1905 roku Hollerith rozpoczął produkcję dziesiętny tabulatory. Każda karta tabulatora dziesiętnego składała się z pól o dowolnej długości, a liczby zapisane w tych polach w zwykłej formie dziesiętnej były sumowane po całej talii. Podział mapy na pola określono poprzez podłączenie przewodów na patch panelu tabulatora. Na przykład na tej karcie perforowanej Hollerith: przechowywane w Bibliotece Kongresu wyraźnie wybity jest numer 23456789012345678, nieznany z podziałem na pola:

Dlaczego litery nie są ułożone w rzędzie w EBCDIC?

Najbardziej uważny mógł zauważyć, że na mapie Hollerith znajduje się 12 rzędów na dołki, chociaż dziesięć wystarczy na liczby; a w BCDIC dla każdej wartości dwóch najbardziej znaczących bitów używanych jest tylko 12 kodów z 16 możliwych.

Oczywiście nie jest to przypadek. Początkowo Hollerith przeznaczył dodatkowe wiersze na „znaki specjalne”, które nie były sumowane, ale po prostu liczone - jak w pierwszych tabulatorach. (Dziś nazwalibyśmy je „polami bitowymi”). Ponadto wśród „znaków specjalnych” można było ustawić wskaźniki grupowe: jeśli zestawienie wymagało nie tylko sum końcowych, ale także pośrednich, to tabulator zatrzymywał się, gdy wykrył zmianę któregokolwiek ze wskaźników grupowych i operator musiał przepisać sumy częściowe z tablic cyfrowych na papier, zresetować tablicę i wznowić tabelowanie. Na przykład przy obliczaniu sald księgowych grupa kart może odpowiadać jednej dacie lub jednemu kontrahentowi.

W 1920 r., kiedy Hollerith był już na emeryturze, zaczęto używać „tabulatorów piszących”, które podłączano do teletypu i które mogły samodzielnie drukować sumy częściowe bez konieczności interwencji operatora. Trudność polegała teraz na ustaleniu, do czego odnosiła się każda z wydrukowanych liczb. W 1931 roku IBM zdecydował się na użycie „znaków specjalnych” do oznaczania liter: znak w 12. rzędzie wskazywał literę z A do I, w 11 - od J do R, od zera - od S do Z. Nowy „tabulator alfabetu” mógł drukować nazwę każdej grupy kart wraz z sumami częściowymi; w tym przypadku nieprzerwana kolumna zamieniła się w spację między znakami. Proszę to zanotować S jest oznaczony kombinacją otworów 0+2, a kombinacja 0+1 nie była pierwotnie stosowana ze względu na obawę, że dwa otwory obok siebie w tej samej kolumnie spowodują problemy mechaniczne w czytniku.

Dlaczego litery nie są ułożone w rzędzie w EBCDIC?

Teraz możesz spojrzeć na tabelę BCDIC z nieco innej perspektywy:

Dlaczego litery nie są ułożone w rzędzie w EBCDIC?

Z wyjątkiem tego, że 0 i spacja są odwrócone, dwa najbardziej znaczące bity definiują „znak specjalny”, który jest wybijany na karcie perforowanej dla odpowiedniego znaku od 1931 roku; a najmniej znaczące cztery bity określają cyfrę wybitą w głównej części karty. Wsparcie symboli & - / został dodany do tabulatorów IBM w latach trzydziestych XX wieku, a kodowanie BCDIC tych znaków odpowiada wyciętym dla nich kombinacjom otworów. Gdy konieczna była obsługa jeszcze większej liczby znaków, wiersz 1930 został wybity jako dodatkowy „znak specjalny” – dzięki temu w jednej kolumnie mogły znajdować się maksymalnie trzy dziurki. Ten format kart perforowanych pozostał praktycznie niezmieniony do końca stulecia. W ZSRR opuścili kodowanie łacińskie i interpunkcyjne IBM, a dla liter cyrylicy wybili jednocześnie kilka „znaków specjalnych” w rzędach 8, 12, 11 - nie ograniczając się do trzech otworów w jednej kolumnie.

Kiedy stworzono komputer IBM 704, nie zastanawiano się długo nad kodowaniem znaków: wzięli kodowanie używane już wówczas w kartach dziurkowanych i jedynie „umieścili je na swoim miejscu”. W 0 roku, podczas przejścia z BCDIC do EBCDIC, cztery bity niższego rzędu każdego symbolu pozostawiono niezmienione, chociaż bity wyższego rzędu zostały nieco przetasowane. Tak więc format karty dziurkowanej wybrany przez Holleritha na początku ubiegłego wieku wpłynął na architekturę wszystkich komputerów IBM, aż do IBM Z.

Źródło: www.habr.com

Dodaj komentarz