O.S.E.L. - Historie PC: děrné štítky stále nevědomky používáme, už přes 100 let
 Historie PC: děrné štítky stále nevědomky používáme, už přes 100 let
Textové terminály moderních OS mají výchozí délku řádků 80 znaků, kterou lze sice změnit, ale nedělá se to, protože mnoho programů s textovým výstupem s touto šířkou počítá. V dobách mých začátků programování v 90. letech bylo nepsaným zvykem alokovat pro krátké textové řetězce 80 bytů. Historie této magické osmdesátky sahá až do 20. let minulého století, kde děrné štítky IBM (de facto standard) používaly 80sloupcový formát. Je to tedy asi první počítačový standard, jehož aktivní používání překonává zhruba 100leté výročí.

Zvětšit obrázek
Děrný štítek s 80 sloupci s děrovačkou. Kredit: dvornikova.cz
Děrný štítek s 80 sloupci s děrovačkou. Kredit: dvornikova.cz

 

Doba šla ale rychle kupředu a děrné štítky byly nahrazeny progresivní děrnou páskou vhodnější pro přenos delšího textu, jelikož odpadla starost s pořadím štítků. Pásky se používaly též pro přenos textu pomocí dálnopisu (teletype, TTY) a měly 8 datových stop. Dálnopis dnes už nepoužíváme, ale princip neformátovaného přenosu dat se zachoval např. v programech PuTTY a Telnet. Původně se používala 5stopá páska pro 5bitový Baudotův kód: umožňuje přenášet 64 různých symbolů: máme 10 číslic, 26 písmen, zbývá 28 pozic pro diakritiku a řídící symboly, spousta místa, tak co? Ale lidi chtěli psát také malá písmena. Pro přenos dat se časem (od 60. let) začal používat standard ASCII uzpůsobený děrným páskám a dálnopisu: od pořadového čísla 0x41 začínala velká abeceda, od 0x61 malá. Rozdíl je 0x20, což je číslo s binární podobou 100000. Pokud se tedy do děrné pásky na šestou pozici udělala díra, změnila se velikost písma na malé. Znalci jazyka C si dodnes mohou vyzkoušet, jak tato díra funguje:

 

#define lower(C) (C|0b100000)


je makro převádějící technikou "černé magie" (terminus technicus) velká ASCII písmena na malá. Podobně lze zapsat "zalepení díry", tedy převod malých ASCII písmen na velká:


#define upper(C) (C&~0b100000)


Je tu ještě jedna zajímavost: prvních 32 znaků mělo řídící funkci pro terminál a dnes se už nepoužívají krom 0 (konec řetězce) a 10 a 13 (konec řádku). Pak je tu ještě jeden osiřelý řídící znak DEL na podezřelé pozici 127 s funkcí smazání znaku. Toto číslo má totiž binární podobu 1111111, a tedy pokud jsme na pásce chtěli umazat znak textu, stačilo na příslušné pozici doplnit díry.

 

8 stopá děrná páska. Kredit: dvornikova.cz
8 stopá děrná páska. Kredit: dvornikova.cz

 

Zmatek kolem 8. bitu

ASCII si tedy vystačilo se 7 bity, jenže počítačům se dobře pracuje s mocninami dvojky a v bajtu máme bitů 8. Za dob pásek se zbývající bit využíval jako paritní pro kontrolu chyb (byl případně doplněn dírou tak, aby jejich počet na řádek byl sudý a v případě lichosti bylo možné "dodírovat" jej na znak DEL), ale později se pro tentýž účel používal úspornější CRC kód a v textu samotném už nebyla kontrola zapotřebí. Osmina bitů textu byla tedy redundantních, což za dob, kdy "640 kB bude stačit všem" nebylo zrovna málo. Shodou okolností to bylo na přelomu 70. a 80. let, kdy se začalo vážně uvažovat o tom, že by se na počítači psalo i jinak než americky, a osmý bit byl tedy použit na diakritiku. K dispozici je 128 volných pozic, tedy 64 diakritických znaků (malé a velké), z toho 33 potřebuje jen Francouzština, která měla prioritní podporu, jelikož se používá v Quebecu. Španělština na Jihu si vystačila jen se 4 znaky. V nově vznikajícím standardu aktivní podporu získala též Němčina, Islandština, Švédština, Norština, Finština, Dánština a Portugalština. Na ostatní jazyky se nemyslelo a byly-li podporovány, pak pouze náhodou (např. Albánština). Standard byl vytvářen Kocourkovsky: Francouzský delegát řekl, že Œ jsou ve Francouzštině dvě různá písmenka a ÿ prý není francouzské (přitom se vycházelo ze staršího DEC standardu, kde tyto znaky už byly). Kompromisně se tam tedy vložilo pouze malé ÿ. Více o tomto skandálu ve Francouzštině zde.

Dále se tam přidalo 16 prakticky nepoužívaných symbolů a 16 pozic pro řídící znaky, které také nikdo nepoužíval. Microsoft si tedy vytvořil vlastní dopředně kompatibilní Latin standard, kde odstranil chyby komise a nové řídící znaky nahradil smysluplnějšími národními apostrofy. Američané 8. bit využili pro vlastní Latin sadu známou jako CP 437 s podporou pouze Francouzštiny (bez Œ, Ÿ), Španělštiny a Řečtiny (z důvodu matematiky, spolu se symboly odmocniny, integrálu a pár dalších), též se přidaly grafické významy řídícím znakům a hlavně symboly pro vykreslování úžasných grafických oken v textovém režimu, díky čemuž se z toho stal de facto standard používaný v DOSu umožňující vytváření estetických aplikací, a tak ISO a Microsoft standardy do nástupu grafických OS téměř nikdo nepoužíval, jelikož současné zobrazení více než 256 různých znaků nebylo v textu možné. Pak se víceméně chaoticky začaly tvořit další Latin standardy pro východní Evropu a začal v tom být po zbytek století zmatek, který ukončil až Unicode s kódováním UTF-8, ale to už je jiný příběh.

Co se děrných štítků týče, velmi doporučuji stránky paní Dvorníkové, která vše pamatuje od počátku on-line historie, a je toho mnoho, co už se na Googlu nedá dohledat. Jsme poslední generace, která má ještě příležitost se osobně zeptat pamětníků, jak to tehdy bylo. Pro příští generace už to bude jen změť legend beznadějně zanášená báchorkami a zapomněním.

Literatura: EDK


Autor: Jan Turoň
Datum:30.12.2019