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čí.

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
Tisk článku

Související články:

Tak už je to tady: Čína staví terminátora     Autor: Jan Turoň (19.01.2017)
Alpha Zero: soumrak slabých umělých inteligencí     Autor: Jan Turoň (23.12.2017)
Exascale současnost - Zettascale budoucnost     Autor: Jan Turoň (12.05.2019)



Diskuze:

KOI8ČS2

Vrozkrokkop Kopalsson,2020-01-14 08:11:12

Kdysi jsem do monitoru CM7202 přidělal malá písmenka a písmenka s diakritickými znaky. Použil jsem kód KOI8ČS2, prostě proto, že to byl první kód s diakritikou co jsem se o něm dozvěděl (na školení o systému TEXT01 z Aritmy). Když jsem tvořil generátor znaků, kolega (RNDr. a laureát Státní ceny Klementa Gottwalda) se ptal, jestli bych mohl vytvořit i znak pro kundu. Zbývaly mi tam ještě nějaké volné pozice, tak jsem mu udělal radost (tedy pokud se něco takového dá vytvořit v rastru 5x8 bodů).
:-D

Odpovědět

Dálnopisný kód a pár vzpomínek

František Kroupa,2020-01-02 13:58:11

Trochu bych upřesnil větu "Pásky se používaly též pro přenos textu pomocí dálnopisu (teletype, TTY) a měly 8 datových stop ...".
Dálnopis děrnou pásku v zásadě nepotřeboval, stiskem klávesy došlo k vyslání znaku (jeho kódu), který se u příjemce okamžitě vytiskl. Děrná páska ale přinesla novou kvalitu v tom, že zprávu bylo možné napsat (naděrovat) v místním režimu (řečeno moderně off-line), teprve pak sestavit spojení a poté zprávu odvysílat z pásky, tj. maximální rychlostí, čímž se doba spojení, která se platila, omezila na minimum. Navíc se naděrovaná zpráva dala vyslat opakovaně.
Dále - dálnopisný kód byl moderně řečeno pětibitový, viz Mezinárodní telegrafní abeceda číslo 2, měl tedy pouze 5 datových stop, nikoliv 8. No a z 5 bitů se dá udělat nejvýše 32 kombinací (nikoliv 64), což je pro praxi málo. Řešení spočívalo v tom, že (opět řečeno moderně) byly definovány dvě znakové sady po 32 znacích (zhruba řečeno v jedné byla písmena, ve druhé číslice a další znaky; některé znaky, typicky řídicí, byly v obou sadách stejné). Jinými slovy každé kombinaci bitů (dobově "impulsů") odpovídaly dva různé znaky, z každé sady jeden. Sady se přepínaly pomocí dvou řídicích znaků "Písmenová změna" a "Číslicová změna" (Shift nahoru, Shift dolů). Přijetím znaku "Písmenová změna" se všechny následující znaky interpretovaly jako písmena, přijetím "Číslicové změny" jako číslice. Tak třeba kombinace 01010 znamená buď R nebo 4, 10101 pak Y nebo 6. Pokud se díky chybě "Změna" ztratila (nebo byla nesprávně přijata), byl přijatý text nečitelný "šifrovaný".
K chybám docházelo při špatném nastavení vysílací nebo přijímací strany (třeba rychlosti otáčení motoru dálnopisu - mechanik ji seřizoval pomocí ladičky a stroboskopického kotouče, nestejných vzdáleností kontaktů polarizovaných relé atd.). No a při komunikaci na krátkých vlnách (vojáci, radioamatéři, ale třeba i tiskové agentury - vzpomínám si na jugoslávský Tanjug) byly špatně přijaté znaky běžné. Pro testování a ladění spojení se používala právě sekvence RYRYRYRY...

Odpovědět


Re: Dálnopisný kód a pár vzpomínek

Vrozkrokkop Kopalsson,2020-01-14 08:15:54

S pětistopou děrnou páskou jsem se setkal na FEL ČVUT. Tam se používala, když studenti měli co do činění se zadáváním úloh na fakultní počítač MINSK 22 - na fakultě byly studentské děrovny s dálnopisy kde bylo možné si děrnou pásku vyděrovat..
Doba her a malin nezralých.

Odpovědět

Eště je mám skovaný.

Pavel Šrubař,2019-12-31 00:30:05

Já děrné štítky používám dodnes, a to zcela vědomky. Jejich zadní nepotištěná strana se skvěle hodí pro psaní poznámek a díky vysoké tuhosti se s nimi manipuluje lépe než s lepkavými blokovými lístky.
Ještě bych upřesnil, že v éře tabelátorů a třídičů se používaly děrné štítky nikoli osmdesátisloupcové, ale devadesátisloupcové (se dvěma řadami po 45 sloupcích). Rozměrově byly stejné, ale lišily se potiskem a razily se do nich kulaté, asi čtyřmilimetrové otvory.

Odpovědět


Re: Eště je mám skovaný.

František Kroupa,2020-01-02 01:38:07

Jojo, pár krabic děrných štítků také schraňuji za stejným účelem, jsou perfektní. Jinak mě napadlo, že služebně mladší kolegové by se nemuseli ve štících dostatečně orientovat.
Takže ohledně počtu sloupců - šlo o to, že na štítku byly předtištěny pozice znaků (vodorovně, 1 - 80) a jejich bitů (svisle, 1 - 8), takže štítek se dal zkoumat i neozbrojeným okem (některé děrovače jako bonus na štítek dokonce příslušné znaky tiskly). Na druhou stranu existovaly i štítky zcela bez potisku, to jsou ty vhodné na poznámky. Perlička ohledně osmdesáti/devadesátisloupcových děrných štítků: v naší státní instituci (a možná i jinde) pořídili do zásoby velké množství devadesátisloupcové děrné štítky. Ty byly později přetištěné na osmdesátisloupcové (jinou barvou).

Odpovědět


Re: Eště je mám skovaný.

Theodor Vopajslik,2020-01-16 00:42:20

Ono je to vse trochu nejak jinak.
Puvodne byly skutecne hlavne derne stitky s dvema radami po 45 sloupcich, vymyslela to tusim firma Honeywel nekdy ve 20-tych letech. Cislice byly kodovany Powersovym kodem. V te dobe se stitky cetli tak, ze derama prochazely tycky; kde byla dira, tam spojila tycka kontakt. Bylo to velmi spolehlive. Pocitacova technika byla tenkrat jeste releova a programovala se kabely (napr. Univac nebo Aritma, na jine si uz nevzpominam.). Byla to zajimava prace kterou ale kazdy zrovna nezvladnul. System byl patentovan a tehdy pomerne neznama firma IBM na ten Powers-system nemohla. Ale vymyslela si ctyrhrane diry. Ty se nedaly cit tyckama, ale IBM je zacala cist elektricky, kartackama, stitky se pohybovaly nejdrive celni sirsi stranou. Kde byla dira, kartacky se spojily a zaznamenaly vyderovanou cislici. Tak moc spolehlive to nebylo, ale rychlejsi. Problemy byly zejmena u dele skladovanych karet, kolikrat bylo nutne velike mnozsstvi karet nejdrive mechanicky duplikovat aby je bylo mozo potom spolehlive cist. Potom se zacaly derne karty cist (koncem 60-tych let) fotobunkama a derne stitka se cetly podelne. Derne karty s kruhovymi dirkami nebyly uz konkurencne schopne a prestaly se pouzivat. Paraelne se zacaly tez pouzivat derne pasky, ktere byly spolehlivejsi, nebot mely pro precteny znak dalsi dirku, takze bylo mozne u kazdeho znaku kontrolovat paritu a pri chybnem derovani bylo mozne cislo opravit. Derne stitky nebyly tez z hlediska derovani zrovna spolehlive, podle nasi statistiky byla tenkrat pri 1600 znacich urcite jedna chyba. Ty chyby se musely potom pracne na sestavach hledat.

Odpovědět

Par korekci

Jiri Naxera,2019-12-30 15:12:11

Jak psal pan Rys, 0x10000 je hexa, ne binarne, pokud to ma delat co ma tak 0x20

Pak bych zaprotestoval ze pokus.txt) - jestli se nepletu u win je treba ctrl-z enter (copy con pokus.txt)
ctrl-s / ctrl-q = zastavit/znovupovolit vypis
ESC = 27 = no tak bez nej by se nevykreslila jedina barvicka na terminalu, ani nic krome hloupeho textu
...

... a jak napsal pan Petr, nejen v SMTP, ono MIME (a quoted printable) je soucasti mnohem vice protokolu

Odpovědět


Re: Par korekci

Jiri Naxera,2019-12-30 15:13:03

pokus.txt) me to nejak sezralo, melo to byt cat >pokus.txt

Odpovědět


Re: Par korekci

Jiri Naxera,2019-12-30 15:16:12

Me to smazalo skoro vsechno, tak znovu, ach jooo:
ctrl-c = killnuti programu
ctrl-z = pozastaveni (a pak fg/bg/jobs...)
ctrl-d = konec fajlu (u win ctrl-z)
ctrl-g = hezky to zapipa

Odpovědět

email

Petr Petr,2019-12-30 13:21:00

Je třeba podotknout, že 7 bitů ("americké ASCII") ještě dnes doznívá v emailové komunikaci (SMTP).
(velikost přílohy emailu se zvětší v poměru 8/7)

Odpovědět


Re: email

Jiri Naxera,2019-12-30 15:17:54

neni to spis 4:3 kvuli https://en.wikipedia.org/wiki/Base64 ?

Odpovědět


Re: email

Jan Turoň,2019-12-31 15:07:49

Obsah se kóduje base64 (příloha naroste o třetinu), moderní zprávy lze posílat s HTTP hlavičkou Content-Type: text/plain;charset=UTF-8 a klient pak správně zobrazí kódování (i tak jsou přílohy base64 kódované). Nicméně SMTP hlavička Subject (předmět zprávy) není součástí obsahu (Content), a tak se hlavička Content-Type na předmět formálně nevztahuje a ten je tedy vynuceně v 7bitovém kódování. Dnes se to řeší v podstatě hackem (PHP syntax) $subject "=?utf-8?b?".base64_encode($subject)."?=", kde $subject je UTF-8 kódovaný předmět zprávy.

Odpovědět

IBM

Marek Zelenka,2019-12-30 13:13:39

Také Adolf Hitler si děrné štítky při datově obtížné organizaci koncentračních táborů prý náramně pochvaloval a tleskal IBM :-)

https://www.root.cz/clanky/derne-stitky-a-holocaust-konecne-reseni-jako-byznys/

Odpovědět


Re: IBM

Jiří Kocurek,2020-01-02 00:50:45

IBM dodalo v roce 1932. Njn, už tehdy měli v IBM vědět, že Hitler od roku 1938 bude tajně budovat vyhlazovací tábory.

A že Prý si pocvaloval i vlaky. Budem vyčítat plzeňské Škodovce, že vyrobila lokomotivy, které pak vozily lidi do vyhlazovacích táborů?

Odpovědět

K nepřátelům pokroku patřily myši,

Zdeněk Kratochvíl,2019-12-30 12:09:50

hlavně při térénních aplikacích děrné pásky. Na to se často zapomíá. Koncem 70. let jsem měl na starosti zpracování dat z "automatické stanice Naiada" na Slapské přehradě. Každých 5 minut to vyděrovalo meteorologické a hydrologické údaje, ty se pak v Praze zpracovávaly pro potřebu hydrobiologů. Bydlelo to v budce kousek nad hladinou a myši to lákalo víc, než kdejaká jejich vyhlášená lahůdka. Pásku hryzaly a jednou si z ní i postavily hnízdo. Bylo potřeba přinejmenším vystříhat a nějak zakončit a uvodit ty poškozené úseky, ve šťastných případech drobnější hryzy opravit lepičkou, někdy se to doplňovalo podle výpisu z el. psačky (výstupní půlka dálnopisu). K tomu jsem byl opatřen krom nůžek, lepičky a čisté děrné pásky taky kleštičkami na dírkování, takže jsem si připadal trochu jako průvodčí a trochu jako při vystřihovánkách v mateřské školce. (Pardon, ale nedalo mi to, vzpomínky jsou tuze silné.)

Odpovědět


Re: K nepřátelům pokroku patřily myši,

Jan Turoň,2019-12-31 14:48:41

Článek jsem sepsal v inspiraci vašich článků o historii. Možná by stálo za to sesbírat podobné anekdoty: Před časem se pár let souběžně používaly mobily a diskety. Seminárku jsem nahrál na disketu, dal si ji do kapsy a zamířil do školy. Když mi po cestě mi v kapse zavrněl mobil s SMSkou, věděl jsem, že se mohu rovnou otočit a jít zpátky na kolej nahrát tu seminárku znovu (EM signál z SMSky obvykle způsobil 10-20 kB chybných sektorů na disketě).

Odpovědět


Re: Re: K nepřátelům pokroku patřily myši,

Vladimír Bzdušek,2019-12-31 16:36:02

Prispejem ...moja historka s diernym štítkom.
Základy výpočtovej techniky na VŠ som zažil v tej dobe.
Učil sa Fortran a z didaktických dôvodov aj trochu Algol.
Na cvikách som dostal za úlohu riešenie kvadratickej rovnice vo Fortrane.
Triviálny problém, ale po zbehnutí sa mi vrátila sada diernych štítkov
s nedefinovanou chybou. Skontroloval som štítky, znova zbehlo a to isté.
Slečna asistentka s povýšeneckým výrazom skontrolovala štítky ...
a znova to isté. Vtedy som jej podotkol, či chyba nebude v názve
programu (JOB), pretože som ho z prče pomenoval ALGOL.
Už-už sa toho chytala ako topiaci stebla trávy, keď z útrob počítačovej sály
vyliezol technik, zachytil zúfalý pohľad asistentky, vytiahol z vrecka
kovovú mustru na kontrolu presnosti umiestnenia dierok na štítku a záhada bola vyriešená.

Odpovědět

Konstanta

Karel Rys,2019-12-30 08:53:11

Pro zápis binární konstanty se myslím nepoužívá 0x100000, ale 0b100000.

Odpovědět


Re: Konstanta

Jan Turoň,2019-12-31 14:37:05

Děkuji za upozornění, opraveno.

Odpovědět


Diskuze je otevřená pouze 7dní od zvěřejnění příspěvku nebo na povolení redakce








Zásady ochrany osobních údajů webu osel.cz