Kāpēc EBCDIC burti nav secīgi?

ASCII standarts tika pieņemts 1963. gadā, un šobrīd ir maz cilvēku, kuri izmantotu kodējumu, kuru pirmaji 128 simboli atšķirtos no ASCII. Tomēr līdz pagājušā gadsimta beigām aktīvi tika izmantota EBCDIC — standarta kodējums IBM galvenajiem datoriem un to padomju kloniem ES EVM. EBCDIC joprojām ir galvenais kodējums z/OS — standarta OS mūsdienu IBM Z galvenajiem datoriem.

Tas, kas uzreiz iesit acīs, skatoties uz EBCDIC, ir tas, ka burti nav secīgi: starp I un J un starp R un S palikušas neizmantotas pozīcijas (ES EVM šajās vietās bija sadalīti kirilicas simboli). Kam varēja ienākt prātā kodēt burtus ar nevienādām atstarpēm starp blakus esošajiem burtiem?

Kāpēc EBCDIC burti nav secīgi?

Paša nosaukums EBCDIC ("Extended BCDIC") norāda uz to, ka šis kodējums — atšķirībā no ASCII — netika radīts no nulles, bet gan uz sešu bitu BCDIC kodējuma pamata, kurš tika izmantots sākot no IBM 704 (1954):

Kāpēc EBCDIC burti nav secīgi?

Apmēram tiešas atpakaļsaderības nav: ērta BCDIC iezīme, kas tika zaudēta pārejot uz EBCDIC, bija tā, ka cipariem 0—9 atbilst kodi 0-9. Tomēr jau pastāvēja starpības septiņu kodu starp I un J un astoņu kodu starp R un S BCDIC. No kurienes tie radušies?

Vēsture (E)BCDIC sākas vienlaikus ar IBM vēsturi — ilgi pirms elektroniskajiem datoriem. IBM veidojās četru uzņēmumu apvienošanās rezultātā, no kuriem visizglītotākais bija "Tabulating Machine Company", ko 1896. gadā dibināja Hermans Holerits — izgudrotājs tabulators. Pirmie tabulatori vienkārši saskaitīja perforēto kartīšu skaitu, kas tika izsistās noteiktā vietā; bet 1905. gadā Holerits sāka ražot desmitnieka tabulatorus. Katru karti desmitnieka tabulatoram veidoja lauki ar mainīgu garumu, un skaitļi, kas ierakstīti šajos laukos ierastajā desmitnieka formā, tika summēti visā kārtā. Kartes sadalījumu laukos noteica vadi, kas tika savienoti tabulatora komutācijas panelī. Piemēram, šajā Holerita perforētajā kartē, kas ir glabāta Amerikas Kongresā, acīmredzami ir iegravēts skaitlis 23456789012345678, nezināms, kā dalīts laukos:

Kāpēc EBCDIC burti nav secīgi?

Visvairāk uzmanīgie varēja pamanīt, ka Holerita kartē ir 12 rindas caurumiem, lai gan cipariem pietiek ar desmit; bet BCDIC attiecībā uz katru vērtību augšējiem diviem biti tiek izmantoti tikai 12 kodi no 16 iespējamiem.

Protams, tas nav nejaušs sakritība. Sākotnēji Holerit plānoja papildu rindas "īpašiem atzīmēm", kuras netika summētas, bet vienkārši tika saskaitītas — kā pirmajos tabulatoros. (Šodien mēs tos sauktu par "bitu laukiem".) Turklāt starp "īpašajiem atzīmēm" varēja norādīt grupu indikatorus: ja, tabulējot, bija nepieciešamas ne tikai galējās summas, bet arī starpsumma, tabulators apstājās, kad tika konstatēta izmaiņa jebkurā no grupas indikatoriem, un operators bija jāpārskaita starpsumma no digitālās informācijas uz papīru, jānulē tabula un jāturpina tabulācija. Piemēram, grāmatvedības bilances skaitīšanai grupas kartes varēja atbilst vienai datumam vai vienam kontrahentam.

1920. gadā, kad Holerit jau bija devies pensijā, parādījās "drukājošie tabulatori", kas tika pieslēgti telegrāfam un varēja paši drukāt starpsumma, neprasot operatora iejaukšanos. Tagad grūtība bija noteikt, uz ko attiecas katrs no drukātajiem skaitļiem. 1931. gadā IBM nolēma ar "īpašām atzīmēm" apzīmēt burtus: atzīme 12. rindiņā apzīmēja burtiem no A līdz I, 11. rindiņā — no J līdz R, 0. rindiņā — no S līdz Z. Jaunais "alfabēta tabulators" varēja drukāt katras grupas kartes nosaukumu kopā ar starpsumma; šajā brīdī nepārdurtais kolonna pārvērtās par atstarpi starp simboliem. Ievērojiet, ka S tiek apzīmēts ar kombināciju caurumiem 0+2, bet kombinācija 0+1 sākotnēji netika izmantota, jo pastāvēja bažas, ka divi caurumi blakus vienā kolonnā varētu izraisīt mehāniskas problēmas lasītājā.

Kāpēc EBCDIC burti nav secīgi?

Tagad uz BCDIC tabulu var skatīties nedaudz no cita leņķa:

Kāpēc EBCDIC burti nav secīgi?

Izņemot to, ka 0 un atstarpe ir apmainīti vietām, divi augstākie biti nosaka "īpašo atzīmi", ko kopš 1931. gada caur perforācijas karti iesita attiecīgajam simbolam; bet četri zemākie biti nosaka skaitli, ko perforē galvenajā kartes daļā. Simbolu atbalsts & - / IBM tabulatoros tika ieviests 1930. gados, un šo simbolu kodēšana BCDIC atbilst caurumu kombinācijām, kas tiek izsistās. Kad bija nepieciešama papildu simbolu atbalsts, kā papildu "īpašo atzīmi" sāka izsist rindu 8 — tādējādi vienā kolonnā varēja būt līdz trijiem caurumiem. Šāds perforētu kartonu formāts saglabājās praktiski nemainīgs līdz gadsimta beigām. PSRS palika IBM kodējumi latīņu alfabētam un puntuāciju, bet krievu burtu izsistot uzreiz vairākas "īpašās atzīmes" rindās 12, 11, 0 — neaprobežojoties ar trim caurumiem vienā kolonnā.

Veidojot datoru IBM 704, par simbolu kodēšanu ilgi netika domāts: tika ņemta kodēšana, kas jau toreiz tika lietota perforētajās kartēs, un tikai 0 "nostādīja vietā". 1964. gadā, pārejot no BCDIC uz EBCDIC, katra simbolu apakšējā četru biti tika atstātas nemainīgas, kaut arī nedaudz tika pārkārtoti augšējie biti. Tādējādi perforētu kartonu formāts, ko Holerīts izvēlējās pagājušā gadsimta sākumā, ietekmēja visu IBM datoru arhitektūru, līdz pat IBM Z.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster