Klávesnice 2018

Avizoval jsem trošku retropočítačování. A k tomu patří i postavení pár retrokousků…

Nechtěl jsem použít PS/2 a nechtěl jsem se ani matlat s velkou deskou a membránovou klávesnicí. Nakonec jsem vzal sadu padesáti tlačítek s hmatníkem a univerzální desku

50sets/lot Tactile Push Button Switch with hat Momentary Tact 12x12x7mm DIP Through-Hole 4pin Free shipping

Je to jednoduché – udělal jsem si matici 5×8, jako mělo ZX81 nebo ZX Spectrum, a pak jsem si uvědomil, že vlastně můžu přidat poměrně jednoduše dalších osm tlačítek do matice 6×8. A tak jsem je tam nacvakal, připravil jsem si popisky (hmatníky jsou 10×10 mm), nařezal, připojil, a bylo. Teď už jen nadrátovat matici zespodu…

Škoda že už nezbylo místo, jinak bych na desku integroval obvod 74138, převodník 3-na-8, a připojoval bych to celé via 3+6 = 9 vodičů + napájení. Teď holt použiju 12žilový kablík.

Možná by šlo ještě udělat nějaký kryt, vytisknout na 3D tiskárně, ať se tlačítka neviklají. Mají poměrně malý zdvih, a čtvercové hmatníky ani nejsou kdovíjak hezké, přiznám se, že obdélníčky by mi seděly lépe. Ale co už.

Jo a dvě tlačítka, SHIFT a SPACE, jsem zdvojil – čímž jsem vyplácal plných 50 tlačítek.

Rubriky: Hardware | Štítky: | Komentáře nejsou povolené u textu s názvem Klávesnice 2018

ICS: Vítejte v roce 1984…

Bylo mi jedenáct a hltal jsem všechny články o počítačích, ke kterým jsem se dostal.

To nebyl takový problém: vycházely tehdy hlavně v Amáru a VTM, a obojí jsem odebíral a četl. To něco málo z ABC jsem taky přečetl. Jediné, co se ke mně nedostalo pravidelně, byla Sdělovací technika.

Hlavně články o domácích počítačích jsem měl rád. To se tak vždycky někdo utrhl a napsal článek o nějaké obskurní značce, jejíž leták sem kdosi přivezl ze zahraniční cesty do nespřáteleného zahraničí. Ofotila se reklamní fotka z toho letáku, v černobílém vydání na zeleném papíře přílohy AR Mikro to bylo obzvlášť krásné, a kolem toho byl text, který popisoval technické parametry. A na konec přišel ideový závěr, kam odvážnější autoři napsali, že „na takové stroje československé provenience budeme asi čekat ještě dlouho“, ti méně odvážní zmínili, že i v socialistických zemích vznikají kvalitní počítače, a ti, co měli nějaký škraloup, napsali, že „TESLA Horní Dolní chystá již v příští pětiletce výrobu domácího počítače, jehož parametry budou plně srovnatelné s těmi západními“.

Tyhle články mě naplňovaly nadějí, že počítače jsou vlastně za rohem a že jednou si i já takový výdobytek na vlastní kůži vyzkouším. Že třeba uvidím „velmi jemnou grafiku v rastru 256 x 192 bodů a s osmi barvami“. No, to jsem po pravdě neviděl, protože jsem sice měl Spectrum od roku 1986, ale u černobílé televize. Nebo že třeba uvidím ten počítač s disketovým drivem společnosti Commodore, jehož zvukový obvod pracuje v rozsahu téměř osmi oktáv.

Těšil jsem se opravdu moc, a těšení mi nijak neusnadňovaly ani katalogy Quelle, kde byly všechny ty počítače vyfocené. A nejen ty, ale i herní konzole a tři stránky obrázků z her s magickými a poutavými názvy, jako třeba Zaxxon.

A jak jsem se těšil, tak jsem si maloval i to, že bych jednou mohl pro takové počítače psát programy! Tak jsem si založil sešit a krasopisně, podle šablony, jsem ho nadepsal: „Industry Computer Software“, tedy zkráceně ICS. Jako že počítače a programy coby průmyslové odvětví, rozumíme si? Nekladl jsem si malé cíle, jak vidno, ale zase: bylo mi jedenáct!

V sešitu jsem pak popustil uzdu fantazii! Co list, to reklamní leták, případně článek. Vždycky jsem si nakreslil velmi futuristický tvar počítače a k tomu dopsal text ve stejném duchu a podobným stylem jako měly ty články v Amáru a VTM.

Začal jsem skromně, počítačem s jedním KB paměti a procesorem 8080, s alfanumerickým displejem a programovacím jazykem FORTH. Na dalším letáku (stránce) jsem nabídl zákazníkům modul pro rozšíření paměti na 16 kB. Další leták přinesl Univerzální Sběrnici US-1, do níž se dalo zapojit několik rozšiřujících modulů, a zároveň i moduly s jazyky BASIC a PROLOG. Samozřejmě vyvinuté přímo společností ICS.

Ta neusnula na vavřínech, a postupně představila několik dalších modelů svých počítačů, s grafikou, s joysticky, se zvukovým výstupem, s vlastní technologií pro ukládání programů (něco mezi disketou a Microdrivem)… Ty poslední modely už měly procesor Z80 a 128 kB operační paměti. No prostě děla! Kdyby mě nezastavili, asi bych postupně došel k dvoumegovým obludám!

Samozřejmě jsem navrhnul i univerzální sběrnici US-2, která „umožňovala připojení modulů pro procesory 8080 i Z80“ – a to proto, že měla jak signály Z80 (RD, WR, MREQ), tak i 8080 (MEMR, MEMW)! Moje další periferie, včetně čtečky děrných pásek a různých herních ovladačů, tak mohly být připojené ke všem typům počítačů ICS…

Jak vidíte, hojně jsem využíval floskule, vyčtené z dobových recenzí. Vše se dělo „za podpory“ – počítač generoval zvuk za podpory speciálního obvodu pro generování zvuku třeba. Nebo jsem se nevyhýbal ani hodnotícím adjektivům: velikost paměti byla „nevídaná“, programovací jazyk FORTH byl, samozřejmě, „bleskurychlý“, a vývoj software byl „s jeho pomocí velmi efektivní“. Počítače pak jejich uživatelé hodnotili jako „velmi povedené“ a „kladně přijali zejména možnost propojit až 8 počítačů do tzv. sítě, což přináší další výhody, především v profesionálním nasazení“.

Samozřejmě jsem nezapomínal ani na to „software“, takže jsem připravil pro zákazníky několik sad programů – kancelářských, databázových, ale i her.

No a pak jsem sešit asi na dva roky odložil. Vrátil jsem se k němu až někdy v létě 1986, když jsem měl k dispozici manuály k PMD-85 – hlavně ten systémový. Zase mě napadlo, že by se dala spousta periferií připojit k těm vývodům vzadu, už jsem navíc i věděl, jak fungují 8255 a 8251, takže jsem oprášil ideu například joysticku nebo úložiště dat, ale tentokrát jsem to už rozpracoval podrobněji – blokové schéma, popis příkazů, programátorský manuál…

Pak už jsem se k sešitu ICS nikdy nevrátil a na nákresy počítačů, co mohly v 80. letech změnit svět počítačové techniky, minimálně v Československu, kdyby byly bývaly vznikly, padal prach.

Proč o tom píšu? No, má to souvislost, jak jinak, s chystanou druhou knihou. Po Hradlech voltech jsem si řekl, že dokončím původní plán, popíšu, jak vypadá ten osmibitový počítač a zároveň ukážu, jak si ho postavit doma. A ne jeden, ale rovnou několik různých.

Když jsem tak v duchu přemítal, jak je koncipovat a jaké by měly mít jednotlivé typy parametry, aby se na nich dalo ukázat co nejvíc, tak jsem zažil silné deja vu. Zase mi v hlavě naskakovaly zaprášené vzpomínky… „Nejnovější přírustek do řady počítačů představí jemnou grafiku 256 x 192 bodů a programovací jazyk FORTH. Jeho průmyslovému nasazení napomůže možnost snadného připojení periferií přes standartní (sic! V 80. letech nebylo výjimkou narazit na stránkách technického časopisu na tento tvar…) rozhraní RS-232C s rychlostí až 9600 Bd.“

Připravovaný typ pak přinese možnost spouštět programy pro oblíbený operační systém MIKROS (obdoba západního CP/M).

A samozřejmě „doufáme, že se takovéto stroje dostanou k československým zájemcům o výpočetní techniku už v tomto či následujícím roce!“

Rubriky: Hardware, Jen tak | Štítky: , , , , | Komentáře nejsou povolené u textu s názvem ICS: Vítejte v roce 1984…

Monitor ke starým počítačům za pár korun

Já vím. Taky mám doma starou barevnou televizi, opečovávanou jak oko v hlavě, protože na ní fungují všechny ty staré počítače bez problémů. Tam, kde nová obří LED televize řekne jen NO SIGNAL, protože staré počítače se s přesností časování moc nemažou, tam tenhle starej CRT bazmeg drží a zobrazuje…

Jenže je to těžký a velký a neskladný, a až to odejde, tak co?

Nejdřív jsem si říkal, že koupím scandoubler, nebo jak se ty převodníky „video -> VGA“ jmenují. Tak jsem ho koupil a jako upřímně: ne že by to nefungovalo vůbec, ale z toho obrazu jsem byl intenzivně nenadšený. Hledáme dál.

Svého času byl populární monitor PSOne – Sony to prodávalo k nějakýmu PlayStationu, a byla to v podstatě LCD televize s úhlopříčkou nějakých 7 palců či tak něco… Objevil jsem kdysi návod na připojení téhle televize k ZX Spectru, postnul jsem to do nějakého diskusního fóra o Spectru, a než mě vypičovali a odešel jsem, tak jsem zahlédl, že si to někdo opravdu postavil a fungovalo mu to.

Ale PSOne už není moc k sehnání, a když je, tak je drahá, ergo zase nic. Tak jsem zase hledal, hledal, až jsem zahlídnul tohle:

Ano, vidíte dobře: ZX81, k tomu nějaký miniaturní monitor… Chvilku jsem hledal, a nakonec jsem našel. Skrývá se to pod kódovým označením LCD TFT displej k palubní kameře do auta

Objednal jsem, samozřejmě. Ale taky jsem hledal dál a našel menší variantu, navíc levnější:

4.3-inch color TFT LCD display Car parking camera PAL/NTSC

A tak přišla první.

Nelenil jsem a vyzkoušel. Napájí se to z adaptéru 12 voltů a má to dva vstupy s CINCHem. Nejdřív jsem zkusil ZX Spectrum Plus – mám u něj vypnutý TV modulátor a vyvedený přímo kompozitní video signál. Chvilka hraní – a voila, funguje!

Displej se zapne až ve chvíli, kdy přijde signál. Do té doby je černý. Trochu mě to zmátlo. Ale nakonec dobré. Pomocí tří tlačítek na zadní straně můžete nastavit klasické parametry: jas, kontrast, sytost atd. Můžete taky přepnout poměr stran – buď 4:3, nebo 16:9. Zkusil jsem si naťukat jeden jednoduchý prográmek, a docela to ujde, ne?

Pak jsem zkusil i Atari 130 XE – to má kompozitní video přímo na konektoru, takže bez problémů:

Narazil jsem zatím jen u C64, tam se signál nějak nechytil…

Rubriky: Hardware | Štítky: , , , , , | Komentáře nejsou povolené u textu s názvem Monitor ke starým počítačům za pár korun

Jednodesková výzva: druhé kolo

Tak co, zkusili jste si jednoduchý obslužný program pro ovládání jednodeskového počítače přes sériovou linku?

Já ano. Zkusil jsem napsat obslužný program pro model s procesorem Z80. Ovládání je jednoduché – máte pouze dva příkazy M a G. Příkaz M slouží ke změně obsahu paměti. Po jeho zadání zadáte adresu (2 bajty, tedy 4 hexadecimální znaky), a pak vám systém vypíše adresu, stávající obsah a čeká na zadání. Pokud nezadáte nový obsah a stisknete enter, pokračuje se na další adresu beze změny. Pokud zadáte nový obsah, uloží se. Zadávání ukončíte stiskem mezery.

Příkaz G si jen vezme adresu a skočí na ni (JP). Nic víc.

Při zadávání hexadecimálních hodnot bere systém poslední dvě (popř. čtyři) hodnoty, takže když chcete zadat třeba 1234 a překlepnete se, tak neřešte žádné mazání, nic takového, prostě zadejte znovu: 12331234 – a systém vezme jen poslední zadané.

V programu jsem použil pár triků. Například pro velmi často používanou rutinu “pošli na terminál znak” jsem umístil příkaz skoku na adresu 8. Proč? No protože Z80 má osm instrukcí RST, které zabírají jen jediný bajt, a skáčou (podobně jako call) na některou z adres 0, 8, 10, 18, 20, 28, 30, 38 (hexadecimálně). Úspora svou bajtů pro každé volání.

Některé úspory jsou na první pohled méně patrné. Třeba rutina pro výpis dvoubajtové hodnoty, uložené ve dvojici registrů HL (PRINTADDR), obsahuje pouhé tři instrukce: přesune obsah registru H do registru A, zavolá rutinu “vypiš jednobajtovou hodnotu z registru A” (PRINTHEX), pak přesune do registru A hodnotu z registru L – a dál? No, dál pokračuje rutina PRINTHEX, protože je umístěná šikovně hned za PRINTADDR… Hezký trik, který ušetří jeden skok, ale je potřeba na to myslet, protože jakmile mezi PRINTADDR a PRINTHEX vložíte ještě něco, tak se PRINTADDR rozbije.

Taky je dobrý zvyk nedělat konstrukce typu CALL něco, RET, a místo toho použít rovnou JP něco – ušetříte tím nejen jednu instrukci, ale i dva bajty na zásobníku.

Ošidil jsem kontrolu hexadecimálních znaků, takže mi jako hexadecimální projde i to, co je v ASCII mezi 9 a A, třeba dvojtečka. To je ještě potřeba pořešit. Ještě bych udělal pár optimalizací, ale dostal jsem se do 256 bajtů, a to je snesitelné.

PS: Komentáře jsem psal třikrát, a třikrát mi spadnul prohlížeč. Tak tam nakonec nejsou. Pardon, to je velká chyba, já je tam dopíšu. 🙁

Tak. Pojďme na samotné druhé kolo. Přidáme si starou dobrou tlačítkovou klávesnici a sedmisegmentový displej.

Způsobů řešení displeje je mnoho, nejčastěji se používá multiplexované řízení, kdy se pravidelně posílá informace o tom, jaká pozice se adresuje a jaký obsah má mít. Já zvolil jednodušší řešení: každá pozice má vlastní registr a zapisuje se do ní přímo. Konkrétní adresy jsou 0x40, 0x41 atd… Zvolil jsem displej s osmi pozicemi, takže u Z80 to je 0x40 až 0x47 (zleva doprava). U 6502 je zase mapování do prostoru paměti, 0xA040 až 0xA047.

Klávesnice je řešená jako matice tlačítek. Minimálně jich je potřeba 16, pro každou hexadecimální hodnotu jedno tlačítko, ale pohodlnější práce je s maticemi 5×4 nebo 6×4. PMI-80 mělo matici 5×5 (ovšem mapovanou z obvodových důvodů na 3×9). Pro jednoduchost jsem zvolil matici 5×4, kam můžete namapovat 16 kláves s hodnotami a 4 řídicí, resp. funkční tlačítka.

Adresaci jsem zvolil (u Z80) trochu zvláštní: řádky se čtou z různých adres tak, že adresa je vždy 0x80 + 16*číslo řádku. Tedy 0x80 pro první řádek, 0x90 pro druhý řádek, … Pokud není žádné tlačítko stisknuté, je přečtená hodnota 0xFF, pokud je, jsou na pozici bitů 0 až 3 nuly tam, kde jsou stisknutá tlačítka. (Nepřekvapí, že u klávesnice je to 0xA800, 0xA900, 0xAA00, 0xAB00, 0xAC00…)

Já si navrhl čtyři funkční tlačítka M, G, EX a =, ale vy si klidně navrhněte jiné podle funkcí, které chcete nabídnout. Ale než se k tomu dostaneme…

Jestli můžeme – pojďme si nejprve procvičit práci s klávesnicí a displejem úplně jednoduchým příkladem: Udělejme hexadecimální kalkulačku – přesněji sčítačku, která bude sčítat zadaná čísla. Budete potřebovat jen dvě funkční klávesy: CLR a + Čísla si můžeme omezit, ať se to líp počítá, na dvoubajtové hodnoty. Funkce bude jednoduchá: CLR vynuluje součet, zadáním čísla a + se tato hodnota přičte k mezisoučtu, a ten se zobrazí. 1234 + 21 + 52 + 75 + 3A + 2BFF + …

Ještě moje EMU soubory pro ASM80 jako gist.

Ať se daří

Rubriky: ASM80.com, Emulace, Hardware, Stroják | Štítky: , | Napsat komentář

A je to tady!

Přiznání je polehčující okolnost, a já už před časem říkal, že nemám retro ducha. Teď se mi to potvrzuje.

Teda, možná to je tím, že prodejci na Aukrech zvlčili a nevědí, co by za to chtěli, a tak se i banalita, které jsou plné eBaye, draží za tři tisíce. Nakašlat vám na to!

Navíc já už nevím, jaký další počítač bych si pořídil. Byl by fajn nějaký československý, z těch tu mám jen PMD-85, ale dát za „IQ151, nálezový stav, netestováno, nevím jak“ víc než tři stovky se mi fakt nechce, nota bene když je na fotce vidět, že to někdo skladoval v kurníku a používal jako líheň pro kuřata.

A tak jsem dal průchod svým starým novým a investoval do ZX Spectra Next. No jasně, je to moderní klon, zrobený ve FPGA. Jak jinak. Duchaři jistě frflají, já jásám.

Ale než bude Spectrum Next, tak si pohraju s těmi svými experimenty. Já totiž zjišťuju, že to, co mě na starých počítačích láká a baví nejvíc, je vlastně stejná věc, jaká mě baví na modelech parních strojů: je to úplně jednoduché, pochopitelné a tak, tak nepraktické! Takže to je opravdu koníček.

Mně se to teď spojuje s tou knihou o elektronice. Ne, neodložil jsem ji, naopak, už ji píšu a už je připravený i vydavatel. Někdy se člověku zdravotní obtíže k něčemu hodí. A ačkoli můžu psát tak tři hodiny denně, tak práce pokračují.

A při tom psaní si tak říkám, že se vlastně mentálně vracím do doby, kdy mi bylo těch 12 a já s katalogem elektronických součástek Tesla Eltos ležel o prázdninách někde ve stínu a snil o tom, že si jednou fakt postavím ten počítač – klidně i s jedním kilem RAMky a bez displeje a jednodeskáč, nějaký 8080MC od pana Sojky.

Dneska už stejný počítač nejen dokážu navrhnout, ale co víc: já ho dokážu i postavit, a bude mě to stát pár stokorun. A celý koncept si klidně ověřím v Arduinu. Nevěříte? Chcete se vsadit, že postavím (lépe řečeno naprogramuju) celý 8080MC v Arduinu Uno? 😉

Možná bych to měl dát do té knížky. Nebo napsat druhou: Stavíme staré počítače z nových čipů. Jenže na tu by se našlo ještě míň čtenářů, než na tu první. Ne, ne, to má čas, teď pojďme řešit ty základy číslicové techniky. Právě teď píšu kapitolu o tom, jaký je rozdíl mezi paralelním a sériovým zapojením…

Rubriky: Hardware | Štítky: , , , | Komentáře nejsou povolené u textu s názvem A je to tady!

Jednodeskový počítač s procesorem 65816

To, že se 6502 stále ještě neodebrala do věčných lovišť asi víte. A asi víte, že existuje něco jako procesor 65816, což byl procesor, který ve WDC vyvinuli jako 16bitovou variantu 6502. Dokonce se používal v nějakých turbo kartách pro Commodora nebo v Applech. A jestli tohleto všechno víte, tak vězte i to, že se oba kousky stále vyrábějí, a dokonce jsou i ve variantě „mikrokontrolér“.

WDC vyrábí a dodává i devkity – asi nejrozumnější jsou ty řady SXB (Xxcelr8r). Buď si vyberete verzi s holým procesorem, okolo kterého je několik obvodů (VIA, PIA, ACIA), k tomu paměť a USB konvertor, a zaplatíte 200 USD, nebo si vyberete verzi s mikrokontrolérem, kde jsou porty a časovače integrované s jádrem, takže na desce je už jen paměť a USB převodník, a ušetříte docela slušný raneček peněz.

Já zvolil variantu W65C265SXB: tenhle mikrokontrolér má jádro 65C816, které samozřejmě funguje i v režimu 65C02, a k němu jsou připojené 4xUART, 8x časovač a RTC. Přivítal bych nějaké SPI/I2C, ale není. Nevadí. Na desce je 32kb SRAM, mapovaná v rozsahu 00:0000 až 00:7FFF, a je tam i patice na 128k FLASH. 65C816 má 24bitovou adresu, dokáže tedy přímo adresovat až 16MB paměti. Hezké je, že všechny vývody jsou vyvedené na pinové lišty.

Programování je jednoduché – přes USB. Uvnitř mikrokontroléru je „Mensch Monitor“, tedy klasický monitor, jak si jej pamatujeme. Využívá jednu ze sériových linek, připojenou k FTDI převodníku, takže vy potřebujete jen sériový terminál, a nastavit ho na 9600 Bd. Můžete si pak prohlížet paměť, měnit ji, spouštět programy, nahrávat soubory ve formátu S28 a tak…

WDC k tomu dodává softwarové nástroje. Je trochu trága se k nim dostat, protože web zůstal duchem v dobách největší slávy procesoru 6502. Přímé odkazy na stažení nástrojů vedou na 404, popřípadě se neobjeví, co by se objevit mělo, ale nakonec jsem po nějakých děsných experimentech dosáhl svého a stáhnul jsem dev tools. Ty jsou duchem v téže době. Nejmodernější je asi EasySXB, což by měl být takový jako že sériový terminál, který ale umožňuje snazší ovládání – třeba výpis registrů máte přehledně v panelu. Bohužel už při připojení to po vás chce zadat port, kde je SXB připojené, a nenabídne ani seznam COM portů, které jsou aktivní. Takže si to musíte někde najít a opsat.

Nakonec jsem použil TeraTerm, a ten šlapal bez problémů. Zkusil jsem si udělat jednoduchý program na blikání LEDkou, přeložil jsem ho svým ASM80, a ejhle- fungoval! Ta radost…

Jinak je to moc hezká destička a udělala mi radost. Až bude čas, udělám k ní nějaké příjemnější programovadlo, třeba jako Chrome plugin.

Rubriky: Hardware | Štítky: , | Komentáře nejsou povolené u textu s názvem Jednodeskový počítač s procesorem 65816