Určité výrobky či přístroje, s nimiž se člověk za svou profesionální dráhu setkává, už zkrátka mají vyšší váhu a význam než jiné. Některé se objeví a zmizí, aniž by vyvolaly větší pozornost svých uživatelů; o jiných mnozí přemýšlejí, zajímají se o jejich princip a detaily řešení –také proto, aby možností jimi nabízených uměli využít co nejlépe. Asi ne pouhou náhodou se k takovým pak lidé leckdy vracejí i po desítkách let; i když je již neužívají, občas studují jejich architekturu nebo technologie. To mohou dělat ze sentimentálních důvodů, aby si tak přiblížili pionýrskou dobu, kdy úspěch nebyl podmíněn hrubou (výpočetní) silou, nýbrž důvtipem skrytým v řadě rozmanitých technických triků; někteří se však dávnými triky dokáží inspirovat ještě dnes.
Zde se postupně (byť nepravidelně) pokusíme vrátit k několika elektronickým produktům, voleným čistě subjektivně –ovšem tak, abychom nezůstávali u pouhé nostalgie a vnějškového dojmu, ale aby šlo něco netriviálního napsat především o oněch principech a tricích. Ostatně jak voní kalafuna, si může vyzkoušet každý, a (jí poněkud příbuzná) vůně syntetického laku na starých vrstvových odporech, když nedopatřením začínaly být přetížené, se popsat stejně nedá.
Obr. 1 HP-25 v roce 2013
Kapesní kalkulačku Hewlett-Packard HP-25 jsem prvně viděl v reklamní brožuře, kterou o prázdninách přinesl spolužák za základní školy; a ihned bylo zřejmé, že je to cosi úplně jiného než moje zbrusu nová kalkulačka Qualitron nebo než bulharské Elky, které se zde tehdy začínaly objevovat. Tvar byl docela jiný, složitější a jemnější, s mírně konvexními boky, navíc v polovině své výšky zalomenými dovnitř, čímž kalkulačka vypadala plošší, než byla. Tlačítek na ten počet funkcí bylo vlastně nějak málo, zato však byla nestejně široká a mnohá měla tři funkce, vedle základní ještě „modrou“a „zlatou“–která ovšem byla docela obyčejně nadepsána žlutě nad tlačítky a přepínána žlutým přesmykačem. Modré funkce byly zajímavější, byly totiž vyznačeny na skosené přední straně poměrně vysokých tlačítek. Kalkulačka byla programovatelná, ač jsem si pod tím pojmem tehdy dovedl jen málo představit prakticky. Také měla osm pamětí, zatímco ostatní kalkulačky kolem mě nanejvýš jednu. A pracovala v systému RPN, reversní polské notaci, čili s postfixovým zápisem i pro aritmetické operátory. (Tedy, postfixový zápis byl pro kalkulačky již dávno tak běžný, že si jej málokdo uvědomoval: když potřebujete spočítat třeba log sin 45°, vkládáte 4 5 sin log; ale pro obyčejné aritmetické operace to vždy bylo něco hodně neobvyklého.) Jestliže jste kupříkladu chtěli spočíst (2 + 3) ×(4 + 5), museli jste zadat 2↑3+4↑5+×, kde ↑ značí speciální tlačítko ENTER↑, kterým se čísla vkládala na zásobník –však také na kalkulačkách HP vždy bývalo to největší. Byla to obskurní magie, jakkoliv vlídná a lehce ovládnutelná; jenže na obyčejné kalkulačce se čtyřmi aritmetickými operacemi nešel takovýhle výraz spočíst vůbec, pakliže neměla paměť. Kalkulačky jiných firem přišly se závorkami až později.
Toto vše jsem ale vyčetl jen z prospektu; potom prázdniny uplynuly, a když jsem k písemce z matematiky vytáhl kalkulačku, třídní mi ji sice zabavila, avšak o přestávce přišel fyzikář a předvedl mi svoji: Byla to HP-25, koupil si ji toho léta ve Švýcarsku. Teprve teď jsem uviděl, jak je ve skutečnosti malá; díky tomu také dokonale seděla v ruce, jejímž palcem se dala pohodlně dosáhnout všechna tlačítka. Ta měla dost vysoký zdvih a při stisku se otáčela podél své přední hrany, spíše než by se do klávesnice nořila přímo jako na jiných kalkulačkách. Hmatníky (což jsem tehdy nevěděl) byly vyrobeny technologií vstřikování dvou plastických hmot (double mould), takže ani sebesoustavnější užívání nemohlo setřít nápisy s jejich čela. (Modré nápisy jsou na přední straně tlačítek sice jen natištěné, ale bez potíží drží dodnes; setřené už někdy bývají ty „zlaté“nad tlačítky.) Display byl z LED, samozřejmě červených, jiné dosud neexistovaly. Nejpodivnější bylo, že po zapnutí se rozsvítily jen tři číslice: nula a dvě další za desetinnou tečkou. Což umí počítat jen na setiny? Nic podobného jsem dosud neviděl, říkal jsem si. Ale ne, to pouze kalkulačka měla formátování displaye, takže počet míst bylo možno zvolit; samozřejmě šlo přepínat mezi pevnou desetinnou tečkou a exponenciálním zápisem, a dokonce užít „inženýrský formát“, kdy kladný i záporný exponent byl vždy v násobcích tří, aby tak odpovídal předponám v řadě kilo, mega, giga... a mili, mikro, nano... Fyzikář mi také ukázal, jak se programuje a kterými tlačítky lze program krokovat, ale z toho jsem příliš nepochytil.
Když jsem o pár let později nastoupil do svého prvního zaměstnání (no, vlastně to zpočátku byla spíše brigáda), prvního dne ráno můj první šéf přešel od svého psacího stolu naproti k mému, vytáhl takový ten dřevěný jazyk nad pravými zásuvkami, a položil na něj svoji služební kalkulačku, abych se s ní obeznámil a pobavil. (Sám ji totiž využíval jen zřídkakdy, práce byl v tom oddělení nedostatek i pro jednoho, natož pro dva lidi.) Byla to HP-25.
Kalkulačku doprovázely dva manuály plus šestistránková referenční kartička. Nejkrásnější byla Ownerʼs Handbook, příručka vytištěná hned pěti barvami (ano, vedle černého textu, červených údajů na displayi, modrých a zlatých funkcí byla záhlaví tištěna i skutečnou šedí –nebyl to žádný typografický rastr). Stodvacetistránková knížka ve spirálové vazbě a na hlazeném polokartonovém papíře, z něhož ani po desítkách let ještě zcela nevyvanula sytá a tehdy exotická vůně západních tiskařských barev, ve vlastníkovi nezanechávala sebemenších pochyb, že před sebou má výjimečnou věc. Kapitoly byly uvozeny fotografiemi kalkulačky v různých lákavých prostředích, počínaje Zeměkoulí na obálce; pozornější zkoumání ukázalo, že nejen tato byla fotomontáž.
Příručky byly psány pěknou jasnou angličtinou a atraktivním stylem; tak třeba, z příkladu na sférickou trigonometrii a převod z a do šedesátkové soustavy si už 35 let pamatuji, že ostrov Tristan da Cunha je (údajně) tím nejizolovanějším obydleným místem na Zemi.
Na detailech chování jednotlivých funkcí byla patrná snaha o maximální využití prostředků. Začínalo to registrovou aritmetikou, která zkracovala jak programy, tak i ruční práci: STOn uložilo číslo na displayi do paměťového registru n, jak je obvyklé, ale třeba STO÷n obsah této paměti číslem z displaye vydělilo. Obdobně ovšem fungovaly i zbývající tři aritmetické operace. Podstatnou konkurenční výhodu oproti programování kalkulaček Texas Instruments (a starších HP) představoval keycode merging, jímž byly právě tyto operace s registry, skoky v programu, jednotlivé „zlaté“i „modré“funkce a třeba i formátování displaye zakódovány vždy do jediného kroku programu. Ve skutečnosti (ale to předbíhám) se podařilo každý krok programu zakódovat do jednoho bajtu. Při prohlížení programu se pak na displayi objevovaly všelijaké kabalistické posloupnosti dvojčíslí; kupříkladu 12 23 51 06 říkalo: „V kroku 12 přičti x k paměti 6" (23 a 51 jsou totiž souřadnice tlačítek STO a + na klávesnici, počítané od levého horního, přičemž však číslice –zde 06 –pro lepší přehlednost zůstaly číslicemi).
Ale v implementaci jednotlivých funkcí tam byly i jemnosti takového rázu, jako že funkce % ponechávala na zásobníku dva operandy, tj. základ a výsledné procento. Proto např. 123↑45% vypočetlo 45 % ze 123, avšak 123↑45%−stejný základ prostě snížilo o 45 %. Ještě subtilnější (a zde sotva vysvětlitelné) bylo, že vyvolání hodnoty z paměti neprodloužilo zásobník, nýbrž nahradilo hodnotu na jeho vrcholu, pokud RCLn bezprostředně předcházelo (mj.) její smazání tlačítkem CLx.
Statistiku kalkulačka počítala ve dvou proměnných, s využitím pamětí číslo 3 až 7 pro součty, součty čtverců a součinů. Pěkné bylo, že vedle tlačítka Σ+ existovala i funkce Σ–, která se dala užít nejen pro případnou opravu chybně vložené položky, ale také k odčítání vektorů; jakožto vedlejší efekt se totiž statistické funkce krásně hodily i k práci s 2D vektory. Velmi praktickou se též osvědčila dvojice funkcí pro převod mezi kartézskými a polárními souřadnicemi; přirozeně se nabízelo je užívat i k počítání s komplexními čísly (jež v této kalkulačce dosud jako samostatný typ dat neexistovala).
Obr. 2 Výhody RPN, jak je vyzdvihuje Ownerʼs Handbook
Ovšemže každá kalkulačka pracuje za svého uživatele, jemuž tak ušetří sčítání či dělení čísel s tužkou na papíře nebo hledání v logaritmických tabulkách –ale programovatelnost tomu dává novou kvalitu; uživateli (teoreticky) ušetří i samu práci s kalkulačkou. K volné programovatelnosti mikroprocesoru nebo Turingova stroje měla HP-25 dosti daleko; pro řízení výpočtu a větvení programu nabízela jen skok na pevnou adresu (GTO), pauzu, zastavení/čekání na vstup (R/S) a osm navzájem hodně podobných testů (x < 0, x ≥0, x ≠0, x = 0 a stejná porovnání s hodnotou registru y), které provedly následující krok programu, jen pokud byla podmínka splněna, jinak jej přeskočily. Nebyly podprogramy ani příkazy pro řízení cyklů (DSZ, ISZ), tím méně pak indexové registry a nepřímé adresování; ono také při 49 krocích programu a osmi pamětech pro ně příliš uplatnění neexistovalo, ač by se občas možná hodily. Při editaci programu též nešlo vsunout či vynechat příkaz(y), nanejvýš je přepsat jinými (popřípadě též příkazem NOP).
Ale i zde výrobce ukazoval, jak možností poskytnutých hardwarem využít maximálně. Více než 160stránková příručka HP-25 Applications Programs měla na obálce opět Zeměkouli vyfotografovanou snad z některého Apolla (tentokrát již bez kalkulačky vmontované v popředí) a byla sice tištěna už jen dvěma barvami, černě a červeně (pro formuláře programů a zvýraznění v obrázcích), v 56 detailně popsaných programech však poskytovala nejen software v podobě hotových řešení z řady výpočetních oborů, ale v podtextu i zásady a tipy, jak takovéto programy psát. Člověk, který nevěděl nic ani o programování, ani o numerické matematice (což tehdy byl přesně můj případ), se však odtud mohl –spíše ovšem nepřímo –dozvědět podstatně více o tom druhém.
Osm kapitol příručky podávalo programy z oblastí algebry, financí, her (odebírání zápalek a přistání na Měsíci), navigace, numerických metod, statistiky, zeměměřičství a geometrie. Kapitola o statistice zabírala 42 stran, tedy přes čtvrtinu celé knížky –nejspíš zcela oprávněně, kalkulačka zde mohla uživatelům ušetřit spoustu úmorného ručního počítání, aniž by při postupném vkládání libovolně velkých souborů čísel trpěli její malou rychlostí, která se daleko více projevovala při iterativních výpočtech.
Z numerických metod byl zajímavý program pro hledání kořenů rovnice (tj. nulových bodů funkce) Newtonovou metodou, pokud se totiž uživateli povedlo funkci zapsat do 14 kroků (přičemž mu zůstávaly k disposici jen tři paměťové registry z osmi). Protože program derivaci funkce samozřejmě počítal numericky, tedy pro dvě vstupní hodnoty v každé iteraci, musel chybějící volání podprogramu obcházet pomocnou proměnnou, jež jako booleovská hodnota určovala, na které místo v programu se po výpočtu funkční hodnoty má řízení vrátit.
Program pro numerický výpočet integrálu Simpsonovou metodou byl o hodně průhlednější, ovšem předpokládal ruční vkládání hodnot funkce. Ale ponechával volných celých dvacet kroků, do nichž by se lecjaká funkce naprogramovat dala –byť většinou asi pouze tak jednoduchá, že její integrál je beztak znám i v uzavřeném tvaru. Jiný ukázkový program integroval obyčejné diferenciální rovnice prvního řádu Eulerovou metodou prediktor- korektor; na zápis funkce yʼ= f (x, y) však zbývalo jen 13 kroků a (opět) tři registry.
Když jsem při psaní článku listoval manuálem, překvapily mne dva programy pro převod číselných soustav (z desítkové do soustavy o zadaném základu a obráceně), velmi krátké –přestože nebyly k dispozici efektivní prostředky pro řízení cyklu. Ale to se vysvětlilo rychle: Předpokládají ruční vkládání číslic jednu po druhé.
Obr. 3 Výpočet Machova čísla v Ownerʼs Handbook – na hrozivě vypadající vzorec stačí (kromě vkládaných konstant) 26 stisků kláves
Programování této kalkulačky mělo málo společného s programováním jak v assembleru, tak i ve vyšším programovacím jazyce; ještě tak nejvíce se snad podobalo programování numerických koprocesorů Intel, což však asi nesouvisí s tou skutečností, že na numerických algoritmech obou spolupracoval stejný matematik, profesor William Kahan. Programovalo se na papíře, kupříkladu na předtištěných formulářích pro zápis jednotlivých kroků, užití zásobníku a registrů. Vypnutím kalkulačky se totiž program v její paměti vymazal (a možnost jej zaznamenat trvale, třeba na magnetický štítek, u tohoto typu neexistovala, ač ji měla již o tři roky starší a čtyřikrát dražší HP-65). „Opsat“z formuláře 49krokový program ručně do kalkulačky však bylo věcí nanejvýš tří minut.
Šéf tehdy pod dávno již zapomenutou záminkou kalkulačku dychtivě rozmontoval a ukázal mi vnitřek: Na oboustranném plošném spoji bylo pět integrovaných obvodů v obyčejných pouzdrech DIL s 16 až 22 vývody a nějaký měnič s toroidním jádrem; zlacené konektory jej propojovaly s displayem a klávesnicí. Krystal nikde vidět nebylo. V plošném spoji byl nesymetricky vyfrézován otvor pro nikl-kadmiové akumulátory; kdyby totiž byly v ose, na žádné straně by nezbývalo dost místa pro měnič. Tohle mne tenkrát zaujalo jakožto důkaz promyšlenosti stěsnaného návrhu –protože jsem koncem 70. let ještě o mikroprocesorech nic nevěděl, nezamyslel jsem se nad daleko zajímavější otázkou, totiž nad tím, jak vůbec mohou IO s tak malým počtem vývodů navzájem komunikovat.
Teprve po letech přišel Internet, a až z něj jsem se dozvěděl, jak vlastně je kalkulačka uvnitř udělaná [1], [2]. Dvaadvacetipinový IO obsahoval mikroprocesor (pod krycím jménem ACT, Arithmetic and Control Timing), který pracoval s 10 bitů širokou instrukcí a 12bitovou adresou. Program pro tento mikroprocesor, tj. mikrokód, byl uložen ve dvou ROMech s architekturou 1024×10 bitů; jeden z nich byl kombinován s budičem anod displaye. Všechny IO (s výjimkou bipolárního budiče katod) jsou vyrobeny technologií P-MOS. Pátým IO byla RAM o kapacitě 112 bajtů; pozdější verze kalkulátoru (HP-25 C) ji ostatně měla v technologii CMOS, takže paměť programu byla nonvolatilní. Kapacita ROM, a zejména RAM tehdy bývala pro kalkulačky naprosto kritická, jak z hlediska ceny, tak i proudové spotřeby.
Vysvětlení, jak spolu při uvedených počtech vývodů komunikují čtyři IO tvořící jádro procesorového systému, se ukázalo prosté: Všechny sběrnice, datová i adresová, jsou sériové, sériová jistě je i ALU v mikroprocesoru, která díky tomu vychází podstatně jednodušší. Některé registry procesoru mají přímo formát čísel, s nimiž kalkulačka pracuje z pohledu uživatele: 56 bitů, tj. 14 BCD číslic, z nichž 10 tvoří mantisu, dvě exponent, a zbývající dvě jsou jejich znaménka zakódovaná v devítkovém doplňku. To také znamená, že kalkulačka (na rozdíl od např. tehdejších Texas Instruments) nepočítala se skrytými číslicemi, ale jen s 10 platnými ciframi, jež uživatel viděl na displayi.
Trigonometrické (a všechny transcendentní) funkce počítal –stejně jako v legendární, o tři roky starší HP-35 –pozoruhodný algoritmus CORDIC [3], [4], jehož nejpřekvapivější vlastností je, že tak činí po jednotlivých číslicích. (Vedle toho ke svým iteracím nijak nepotřebuje násobení, jen bitové posuvy.)
HP-25 žije i dnes. Jednak ty dochované většinou ještě fungují, vyžadovaly jen výměnu NiCd akumulátorků (nejčastěji za současné NiMH). Ale vedle toho existuje též několik simulátorů pro osobní počítače [5], a také emulátory [6] jejího mikroprocesoru, které chování kalkulačky napodobují zcela věrně, včetně všech numerických nepřesností. Vzájemný vztah tehdejší a současné technologie zřejmě nejkrásněji ilustroval Peter Monta, který, aby pro emulátor získal mikrokód jednoho staršího modelu kalkulačky Hewlett-Packard, otevřel pouzdro jejích ROMů, pořídil digitální mikrofotografie čipů uvnitř a z nich si pomocí ad hoc napsaného programu přečetl hodnoty všech jednotlivých bitů [7].
Je dobře možné, že jsem téhle kalkulačce nejvíce času vlastně věnoval až nyní, kdy jsem se snažil sestavit tenhle článek; je jisté, že v dobách, kdy bývala nejsilnějším výpočetním prostředkem, jaký jsem měl po ruce, jsem jejím možnostem a jemnostem nerozuměl ani zdaleka, a o principech v jejích útrobách neměl tušení. I přesto na mne od počátku dělala dojem precizní, jedinečné věci, pečlivě promyšlené až do nesčetných detailů, dovolujících z možností poskytovaných technologií –možností, které se dnes, vyjádřeny v pojmech paměťové kapacity a rychlosti, jeví skrovnější než spartánské –vytěžit maximum, k prospěchu uživatelů a bezpochyby též k oprávněné hrdosti jejích tvůrců.
[1] Cook, M., Fichter, G., Whicker, R.: Inside the New Pocket Calculators, Hewlett-Packard Journal, 26:8–11, November 1975, http://www.hpl. hp.com/hpjournal/pdfs/Issue- PDFs/1975-11.pdf
[2] Laporte, J.: Meet the Woodstocks: HP-21, HP-25…, http://www.jacques- laporte.org/Woodstock/ws_intro. htm
[3] Cochran, D.: Algorithms and accuracy in the HP 35, Hewlett-Packard Journal, 23:10–11, June 1972, http://www.hpl.hp.com/hpjournal/ pdfs/IssuePDFs/1972-06.pdf
[4] http://en.wikipedia.org/wiki/CORDIC
[5] HP Calculator Simulations, http:// www.hpmuseum.org/simulate/simulate. htm
[6] Smith, E.: Nonpareil. High-Fidelity Calculator Simulator, http://nonpareil. brouhaha.com/
[7] Monta, P.: Reverse-engineering the HP-35, http://www.pmonta.com/calculators/ hp-35/