Чаму ў EBCDIC літары ідуць не запар?

Стандарт ASCII быў прыняты ў 1963, і зараз ці наўрад хто-небудзь выкарыстоўвае кадоўку, першыя 128 знакаў якой адрозніваліся б ад ASCII. Тым не менш, да канца мінулага стагоддзі актыўна выкарыстоўвалася EBCDIC - стандартная кадоўка для мэйнфрэймаў IBM і іх савецкіх клонаў ЕС ЭВМ. EBCDIC застаецца асноўнай кадоўкай у z/OS – стандартнай АС для сучасных мэйнфрэймаў IBM Z.

Тое, што адразу кідаецца ў вочы пры поглядзе на EBCDIC - тое, што літары ідуць не запар: паміж I и J і паміж R и S засталіся нявыкарыстаныя пазіцыі (на ЕС ЭВМ па гэтых прамежках размеркавалі сімвалы кірыліцы). Каму магло прыйсці ў галаву кадзіраваць літары з няроўнымі прапускамі паміж суседнімі літарамі?

Чаму ў EBCDIC літары ідуць не запар?

Сама назва EBCDIC ("Extended BCDIC") намякае на тое, што гэтая кадоўка - у адрозненне ад ASCII - стваралася не на пустым месцы, а на аснове шасцібітнай кадоўкі BCDIC, якая выкарыстоўвалася пачынальна з IBM 704 (1954):

Чаму ў EBCDIC літары ідуць не запар?

Непасрэднай зваротнай сумяшчальнасці няма: зручнай рысай BCDIC, страчанай пры пераходзе да EBCDIC, было тое, што лічбам 0-9 адпавядаюць коды 0-9. Тым не менш, разрывы ў сем кодаў паміж I и J і ў восем кодаў паміж R и S у BCDIC ужо былі. Адкуль жа яны ўзяліся?

Гісторыя (E) BCDIC пачынаецца адначасова з гісторыяй IBM – задаўга да электронных кампутараў. IBM утварылася ў выніку зліцця чатырох кампаній, з якіх самай тэхналагічна прасунутай была "Tabulating Machine Company", заснаваная ў 1896 Германам Халерытам - вынаходнікам табулятара. Першыя табулятары проста падлічвалі лік перфакарт, прабітых у пэўным месцы; але ў 1905 Холерыт пачаў вытворчасць дзесятковых табулятараў. Кожная карта для дзесятковага табулятара складалася з палёў адвольнай даўжыні, і лікі, запісаныя ў гэтых палях у звыклай дзесятковай форме, сумаваліся па ўсёй калодзе. Разбіўка карты на палі задавалася злучэннем правадоў на камутацыйнай панэлі табулятара. Напрыклад, на гэтай перфакарце Халерыта, захоўваецца у Бібліятэцы Кангрэса, відавочным чынам выбіты лік 23456789012345678, невядома як падзеленае на палі:

Чаму ў EBCDIC літары ідуць не запар?

Самыя ўважлівыя маглі заўважыць, што на карце Холерыта 12 шэрагаў для адтулін, хоць для лічбаў дастаткова дзесяці; а ў BCDIC для кожнага значэння старэйшых двух бітаў выкарыстоўваюцца толькі 12 кодаў з 16 магчымых.

Канешне ж, гэта не выпадковае супадзенне. Першапачаткова Холерыт прызначаў дадатковыя шэрагі для «адмысловых адзнак», якія не сумаваліся, а проста падлічваліся - як у самых першых табулятарах. (Сёння мы б назвалі іх "бітавымі палямі".) Акрамя таго, сярод "спецыяльных адзнак" можна было задаць group indicators: калі пры табуляцыі патрабаваліся не толькі канчатковыя сумы, але і прамежкавыя, то табулятар спыняўся, калі выяўляў змяненне любога з group indicators , І аператар павінен быў перапісаць прамежкавыя сумы з лічбавых табло на паперу, абнуліць табло, і аднавіць табуляцыю. Напрыклад, пры падліку бухгалтарскіх балансаў група карт магла адпавядаць адной даце або аднаму контрагенту.

Да 1920, калі Холерыт ужо сышоў на пенсію, увайшлі ва ўжыванне «друкавалыя табулятары», якія падлучаліся да тэлетайпа і маглі самі друкаваць прамежкавыя сумы, не патрабуючы ўмяшанні аператара. Складанасць цяпер заключалася ў тым, каб вызначыць, да чаго адносіцца кожны з надрукаваных лікаў. У 1931 IBM вырашыла пры дапамозе "адмысловых адзнак" пазначаць літары: адзнака ў 12-м шэрагу пазначала літару ад A да I, у 11-м - ад J да R, У нулявым - ад S да Z. Новы "алфавітны табулятар" мог друкаваць назву кожнай групы карт разам з прамежкавымі сумамі; пры гэтым непрабіты слупок ператвараўся ў прабел паміж знакамі. Заўважце, што S пазначаецца камбінацыяй адтулін 0+2, а камбінацыя 0+1 першапачаткова не выкарыстоўвалася з асцярогі, што дзве адтуліны побач у адным слупку могуць выклікаць механічныя праблемы ў счытвальніку.

Чаму ў EBCDIC літары ідуць не запар?

Цяпер на табліцу BCDIC можна паглядзець крыху пад іншым вуглом:

Чаму ў EBCDIC літары ідуць не запар?

За выключэннем таго, што 0 і прабел перастаўленыя месцамі, старэйшыя два біты вызначаюць «адмысловую адзнаку», якую з 1931 прабівалі ў перфакарце для які адпавядае знака; а малодшыя чатыры біта вызначаюць лічбу, якая прабіваецца ў асноўнай частцы карты. Падтрымка сімвалаў & - / дадалася ў табулятары IBM у 1930-х, і кадоўка гэтых знакаў у BCDIC адпавядае прабіваным для іх камбінацыям адтулін. Калі спатрэбілася падтрымка яшчэ большай колькасці знакаў, то ў якасці дадатковай "адмысловай адзнакі" сталі прабіваць шэраг 8 такім чынам, у адным слупку магло быць да трох адтулін. Такі фармат перфакарт захаваўся практычна нязменным да канца стагоддзя. У СССР пакінулі IBM-аўскія кадоўкі лацінкі і пунктуацыі, а для літар кірыліцы прабівалі адразу па некалькі «адмысловых адзнак» у шэрагах 12, 11, 0 – не абмяжоўваючыся трыма адтулінамі ў адным слупку.

Калі ствараўся кампутар IBM 704, то над кадоўкай знакаў для яго доўга не думалі: узялі кадоўку, ужо выкарыстоўваную тады ў перфакартах, і толькі 0 "паставілі на месца". У 1964, пры пераходзе ад BCDIC да EBCDIC, малодшыя чатыры біты кожнага знака пакінулі без змен, хоць трохі ператасавалі старэйшыя біты. Такім чынам фармат перфакарт, абраны Халерытам у пачатку мінулага стагоддзі, аказаў уплыў на архітэктуру ўсіх кампутараў IBM, да IBM Z улучна.

Крыніца: habr.com

Дадаць каментар