Roku 1967 vyšla kniha “How To Build a Working Digital Computer” (Jak postavit funkční číslicový počítač), podle které jste si z kancelářských sponek, cívek od nití, drátu, žárovek a plechovky od džusu mohli postavit vlastní podivné monstrum. Co ale toto monstrum opravdu umělo? Byl to počítač?
Kniha samotná byla opravdu zajímavá a obsahovala i popisy obvodů, které ke stavbě samotného “počítače” nebyly ani potřeba. Čtenář se seznámil se základními principy, přečetl si o číselných soustavách, Booleanovské logice, de Morganově teorému, poučil se o ferritové paměti i o funkci dekodéru instrukcí.
Nedílnou součástí knihy byl návod, jak si vyrobit několik součástí, ze kterých se pak poskládalo něco jako počítač.
Základem byly především kancelářské sponky, ze kterých se stavělo skoro všechno – od spínačů a přepínačů počínaje, objímkami na žárovky konče.
Řekněme si rovnou, že ten počítač byl asi tak na úrovni papírového počítače z ABC mladých techniků a přírodovědců nebo podobné papírové hračky Cardiac z roku 1969 od Bell Laboratories, která zřejmě vznik československého papírového počítače inspirovala.
Dnes už nepůjde zjistit, kolik čtenářů se nadchlo natolik, že si “počítač z kancelářských sponek” opravdu postavili.
Je to určitě skupina nenulová, jsou známa minimálně dvě historická provedení, postavená ve škole, na poněkud větší panel (zřejmě z důvodu názornosti) a s normálními přepínači a objímkami žárovek místo kancelářských sponek (zřejmě z důvodu praktičnosti).
- Jednu tuto věc postavil matematický kroužek na Wickenburg High School snad někdy roku 1975.
- Druhou, nazvanou EMMERACK, postavili dva osmáci na Memorial Junior High School už roku 1973, psalo se o nich dokonce v tisku.
I v nedávné době se našel šílenec, který se do stavby pustil, a natočil čtyřdílné ukázkové video, které najdete na YouTube.
Prakticky bez změny zapojení stavěla pak tyto “počítače” firma Arkay (později Comspace) jako “computer trainer” CT-650.
“Počítač” se skládá z několika částí, které jsou spolu jen minimálně propojeny a moc spolu nespolupracují.
Mozkem počítače je sám operátor, který provádí to, co po něm počítač chce, jako je tomu i u papírového počítače z ABC.
Narozdíl od papírového počítače, kde se hodí mít po ruce kalkulačku jako “matematický koprocesor”, počítač ze sponek uživateli svým hardwarem napomáhá, například opravdu sčítá či odčítá dvě čísla, a uživatel pak vlastně jen přepisuje hodnoty z jedné sekce do druhé (a provádí instrukce bitového posunu, to si počítač sám nespočítá).
První část je “vstup od uživatele” (na fotografii CT-650 zcela vlevo).
Dvě kroutítka, na kterých lze nastavit dvoucifernou dekadickou hodnotu od 00 do 99, obsahují dekodér do binárního tvaru, který se zobrazí na žárovkách. pro každé kroutítko jsou 4, kroutítka jsou nazvaná “vstup A” a “vstup B”.
Pravda ovšem je, že žárovky svítí odpovídajícím způsobem jen tehdy, když si “centrální jednotka” vstup z jednoho nebo druhého kroutítka vyžádá.
“Přepočet” z dekadického na dvojkové zobrazení je poměrně jednoduchý.
Kroutítka jsou vyrobena ze špulek od nití, omotaných neizolovaným drátkem, přelepeným binární maskou s otvory, které snímají 4 kartáčky (každý pro jeden bit).
Pravý opak provádí “dekadický výstup” (na fotografii CT-650 zcela vpravo), který binární číslo zadané na přepínačích převede na dekadickou hodnotu 00 až 99 (na 20 žárovkách, 10 jich je pro řád desítek a 10 pro řád jednotek).
Rozsvěcí se ale jen pokud “řídící jednotka” vyšle povel zobrazit výstup.
Nejzajímavější (a nejpočítačovější) je “aritmetická jednotka” (na fotografii CT-650 velké pole vlevo, se 14 přepínači).
Obsahuje dva binární vstupy (nazvané “akumulátor” a “registr X”), které jsou čtyřbitové (akumulátor má navíc ještě znaménkový bit, takže má 5 přepínačů).
K nim je přidán čtyřbitový “extension register”, sestávající ze čtyř přepínačů pro jednotlivé bity a čtyř žárovek pro výstup. Ten nic nedělá, jen na svých žárovkách zobrazuje stav svých přepínačů.
Rozšiřuje ale akumulátor na osmibitový, obsluha “extension” registr používá při operacích bitových rotací.
Kromě žárovek “extension” registru obsahuje aritmetická jednotka ještě jeden pětižárovkový výstup (4 bity a znaménko), který slouží k zobrazení obsahu akumulátoru nebo výsledku sčítací či odčítací operace.
Sčítání a odčítání pracuje s akumulátorem a registrem X, provádí operace A+X a A-X.
Přepínáním funkcí se aritmetické jednotky původního “paperclip computer” a CT-650 nepatrně liší.
“Paperclip computer” má přepínač “DISP / ADD/SUB” pro přepínání mezi zobrazením a aritmetickými funkcemi, a přepínač “ADD / SUB”, kterým se volí sčítání nebo odčítání.
CT-650 sdružuje oba přepínače do jednoho vícepolohového “DISP / ADD / SUB” přepínače.
Nyní se podíváme na “core memory” (to je část, kterou u CT-650 najdeme vzadu vlevo. s mnoha jednopólovými spínači).
Funguje vlastně stejně, jako “extension register” – prostě na čtyřech žárovkách zobrazuje stav “zvolené buňky”, tedy příslušné čtveřice spínačů.
“Adresová buňka” se volí vícepólovým přepínačem.
Adresových buněk je 5, tomu odpovídá 20 spínačů (po 4 v 5 řadách).
Displej na “core memory” se rozsvěcí, pokud chce řídící jednotka, aby uživatel s tímto úložištěm pracoval.
Na CT-650 vypadá “core memory” trošku složitěji, protože v její oblasti je ještě jedno světélko a spínač – předpokládám, že je to kontrolka napájení a hlavní vypínač celého “počítače”.
A nyní poslední část.
Ne, nedivte se, opravdu jedna část, i když na CT-650 vypadá jako dvě.
Jde o “bubnovou paměť” a “řídící jednotku“, které jediné dvě jsou spolu propojeny do jedné a tvoří funkční celek.
V této části se “paperclip computer” a CT-650 opět trochu liší.
Řídící jednotka počítače ze sponek obsahuje jen 25 žárovek, zatímco CT-650 kromě 25 žárovek obsahuje i přepínač a tlačítko.
Protože nevím, k čemu to, můžu se jen dohadovat (z fotografií to jasné není).
“Bubnová paměť” je tedy plechovka, kterou uživatel oblepí papírem s otvory, se zakódovaným programem.
Na buben vede 29 kartáčků, které se propojují s povrchem bubnu přes otvory v papíru.
Dva slouží pro “timing”, jsou, řekl bych, potvrzovací.
10 bitů kóduje jednu z deseti instrukcí (každá má svůj bit) a následuje 16 bitů pro parametry (každý bit kóduje jeden z 16 možných parametrů).
Obsluha otáčí bubnem, a když se otočí tak, že potvrzovací bit potvrzuje, že je nastaven na platnou instrukci, rozsvítí se na “řídící jednotce” žárovka příslušné instrukce a žárovka parametru.
Tím “řídící jednotka” ukazuje uživateli, jakou instrukci jí má pomoci vykonat.
(Sama jednotka toho moc nevykonává, opravdu vlastně jen ukazuje.)
Instrukce jsou:
ADD – sečtení akumulátoru a X registru. Obsluha nastaví DISPLAY / ADD/SUB a ADD / SUB přepínače na sčítání, odečte výsledek na displeji a výsledek přepínači nastaví do akumulátoru, přepne přepínač DISPLAY / ADD/SUB na zobrazování. Vynuluje X registr.
SUB – odečtení X registru akumulátoru a X registru. Obsluha nastaví DISPLAY / ADD/SUB a ADD / SUB přepínače na odečítání, odečte výsledek na displeji a výsledek přepínači nastaví do akumulátoru, přepne přepínač DISPLAY / ADD/SUB na zobrazování. vynuluje X registr.
STO – store. Rozsvítí se ukazatel na “core memory” a obsluha uloží obsah akumulátoru na jednu z pěti “core” adres.
SHR – shift right, obsluha rotuje obsah akumulátoru (plus “extension” registr, tedy osmibitovou hodnotu, ne čtyřbitovou) doprava.
SHL – shift left, obsluha rotuje obsah akumulátoru (plus “extension” registr, tedy osmibitovou hodnotu, ne čtyřbitovou) doleva.
TRA – transfer – obsluha podle obsahu akumulátoru nastaví přepínače X registru.
JUP – jump – na bubnu se nečíslují povely adresou, ale používají se jakási návěští. Pokud obsluha narazí na instrukci JUP 1, má otáčet bubnem tak dlouho, dokud nenarazí na stejnou instrukci se stejným návěštím, a pak pokračovat další instrukcí. To platí pro návěští 1, 2, 3. Pokud je parametr 4, má obsluha otáčet bubnem pozpátku (a hledat instrukci JUP 4).
COJ – conditional jump. Podmíněný skok, používá se jako instrukce JUP, ale jen tehdy, pokud nejvýznamnější bit akumulátoru (příručka uvádí “řád šestnáctek nebo znaménko”, což jsou dva různé bity) je jedničkový.
RIN – read in. Obsluha nastaví obsah akumulátoru podle parametru (vstup A, vstup B, některá z “core” adres). Existuje ještě “vstup C”, který souvisí s “core” pamětí.
RUT – read out. Obsluha na požadovaném výstupu (desítky, jednotky) nastaví obsah akumulátoru, nebo (při parametru ANS) zadá “výstup z počítače” (zřejmě obsah akumulátoru spolu s “extension” registrem).
Parametry jsou:
- Core 1 – adresa 1 “core” paměti
- Core 2 – adresa 2 “core” paměti
- Core 3 – adresa 3 “core” paměti
- Core 4 – adresa 4 “core” paměti
- Core 5 – adresa 5 “core” paměti
- 1 – parametr pro rotaci o 1 místo, nebo label při skoku
- 2 – parametr pro rotaci o 2 místa, nebo label při skoku
- 3 – parametr pro rotaci o 3 místa, nebo label při skoku
- 4 – parametr pro rotaci o 4 místa, nebo label při skoku
- adresa A – výstup z prvního “kroutítka” na dekadickém vstupu
- adresa B – výstup z druhého “kroutítka” na dekadickém vstupu
- adresa C – označuje práci s “core” pamětí, způsobí rozsvícení indikátoru jejího obsahu
- desítky
- jednotky
- ANS – výstupní modul bude zobrazovat
Parametr, který nemá vlastní výstupní žárovku na konzoli “řídící jednotky” a nezobrazuje se tak uživateli, ale je kódován na bubnu, je:
- ACC – aritmetická jednotka bude zobrazovat stav akumulátoru
Z uvedeného vyplývá, že některé instrukce mohou použít více parametrů současně (například při práci s “core” pamětí samotnou adresu a pak ukazatel “C vstupu”, který zřejmě způsobí rozsvícení displeje na “core” paměti).
Počítač by šel samozřejmě modifikovat:
Hned na začátek mne místo 20 žárovek pro zobrazování dvouciferného čísla napadlo použít dva digitrony (doutnavka s anodou a deseti katodami, každá zobrazuje jednu cifru – nevýhodou je potřeba vysokého napětí 135 V) nebo displej TIL311 známý z počítače Cosmac Elf.
Převodník “binární na dekadický” (jeden ze čtyř) je již v počítači jednou obsažen (v zobrazovači výstupu), přidáním stejného převodníku by deset instrukcí by bylo možné kódovat 4 bity.
Stejně nikdo nebude chtít kódovat na jedné pozici dvě či více instrukcí naráz.
A ještě tak zbyde rezerva na případné přidání instrukcí.
Stejně tak 15 parametrů jde kódovat 4 bity, zřejmě by bylo možné je trochu zjednodušit (například pokud máme ukazatele 1, 2, 3, 4, 5 pro adresy “core” paměti, proč je nevyužít i pro skoky a rotace?) a tím ušetřit bity (a moci tak například zvětšit rozsah adres a “návěští” při skocích).
Samozřejmě by nebylo možné použít více parametrů naráz. Instrukce by musely být jednoznačnější.
Výsledkem by ale bylo použití čtyř bitů pro instrukci a čtyř bitů pro parametr – to je významná redukce. Pokud bychom nechali na každé pozici ještě potvrzovací bit, který je vždy perforovaný, máme 9 bitů místo původních 29, to je mnohem užší páska a jednodušší práce s děrováním.
Vůbec by buben šel nahradit nějakou páskou, aby programátor nebyl v rozletu omezen obvodem bubnu.
Aritmetická jednotka by šla vylepšit tak, aby rotace nemusel počítat uživatel, ale jednotka sama.
Pro jednoduchost by samozřejmě bylo jednodušší rotovat jen o jedno místo doleva nebo doprava, rotace o více míst je možné nahradit opakováním.
Uživateli by se tím ušetřila další činnost (původní programy určené pro “paperclip computer” by se ale musely upravit, aby odpovídaly novým schopnostem počítače, to dá rozum).
Když už se řídící jednotka namáhá s aktivací jednotlivých částí počítače (například rozsvěcí displej výstupu při výstupních operacích, rozsvěcí displej požadovaného vstupu při vstupních operacích), mohla by některé činnosti automatizovat.
Například by mohla sama umět přenášet hodnotu ze vstupu do akumulátoru a sama hodnotu z akumulátoru převést na dekadický výstup.
“Core memory” by mohla být konstruována jako reléová (i když pohled na matici přepínačů je úžasný – je mi to jasné).
Pak už jen zbývá komparátor (“hledač stejného návěští”) na skoky – dekodér instrukcí by jen musel vědět, zda zrovna NOPuje (buben se přetáčí při hledání návěští) nebo se instrukce opravdu vykonávají.
Podmíněný skok by ale musel testovat poněkud jednoznačněji, než uvádí příručka – nejspíše by se měl řídit znaménkem akumulátoru (to dává smysl, při porovnání čísel instrukcí SUB bude znaménko nahozeno tehdy, když bylo v akumulátoru menší z obou čísel).
Pak už zbývá jen pohon bubnu (nebo cívky na pásku) motorkem (nejlépe s možností jak plynulého běhu, tak krokování po jednotlivých instrukcích) a je z toho samočinný počítač jak vyšitý.
Ještě připojit na čtyřbitový textový výstup (dálnopis nebo psací stroj) a od kancelářských sponek jsme se dostali k opravdovému počítači z 50. let.
Akorát že by to už nebyl TEN “počítač” z plechovky a kancelářských sponek.
Nebyl by to sice TEN počítač, ale stejně bych rád viděl takto vylepšený plechovkový počítač v akci.
Autor prekvapuje nájdením takýchto pikošiek, zaujímavé ako vždy.