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

Rockwell 18R jako jednodeskáč

Ani nevím, co mě to popadlo a jak mě to napadlo, ale jednoho dne jsem si řekl: Když je PMI-80 postavené na klávesnici a displeji ze staré kalkulačky, tak proč by nešlo vzít starou kalkulačku s LEDkovým displejem a klávesnicí, a zabudovat dovnitř PMI-80? No dobře, tak ne přímo PMI, ale třeba něco menšího, jiného, KIM-1 třeba… A začal jsem se porozhlížet po starých vrakových kalkulačkách.

Osud mi jako první přihrál Rockwell 18R. Zas taková vzácnost to není, takže mě moc netrápí, že ji předělám. Ale má krásný „bublinkový“ displej, 8 pozic, a klávesnici 5×4. Teď jen aby to nebylo uvnitř nějaké divoké…

Stačilo odšroubovat čtyři šroubky, a ukázaly se vnitřnosti v plné kráse. Nádhera! Klávesnice zapojená jako ta nejprostší matice, dokonce i fyzicky odpovídalo umístění vývodů, a k tomu jeden plošňák, který je seskládal hezky dohromady. A nad tím vším malá destička s displejem a něčím, co vypadalo jako konektor.

Hledal jsem, kde je procesor, a při bližším zkoumání se ukázalo, že to, co vypadalo jako konektor, je plastová krytka. A pod ní byl čtvercový čip, a k němu byly tenkými drátky připájené vývody.

Takže – devět vývodů od klávesnice (5 řad, 4 sloupce), 16 vývodů od displeje, navíc s krásnými pájecími ploškami – těch 8 nalevo jsou jednotlivé segmenty, a po desce jsou pak porůznu rozmístěné katody pro jednotlivé pozice.

Takže stačí odpojit ten čip (bohužel, nebyla to 6502, jak jsem trošku doufal, ale nějaký specializovaný obvod, jak jinak), a připojit displej a klávesnici k vlastní konstrukci.

Asi nejjednodušší způsob bude použít nějaký malý jednočip na desce. Pokud slyšíte „Arduino Nano“, slyšíte správně – mám jich tu haldy, tak proč je nepoužít, že? Jen mám trošku problém. Počítejte se mnou:

Displej má 16 vývodů. 8 segmentů + 8 pozic. Klávesnice 9. To máme dohromady 25 vývodů. Arduino Nano 328 má… počkejte…

Jestli dobře vidím, tak 14 digitálních a 8 analogových, tedy 22 celkem, a z toho A6 a A7 víceméně docela pofidérní – jako vstupy maximálně. Hm, hm, hm. Co s tím? Když si řeknu, že třeba KIM-1 používal jen šest pozic, ušetřím 2 vodiče, takže mi jich stačí zapojit 23. Což je pořád o jeden víc, než jich mám k dispozici.

Proto použiju stejný trik, jako byl v tom PMI-80 (a nejen tam). Využiju toho, že displej pravidelně občerstvuju, pozici po pozici, a připojím řádky klávesnice na pět pozic displeje. A protože to jsou katody, budou vlastně „spínané k nule“. Což se mi hodí, protože připojím sloupce klávesnice přímo na digitální vstupy a nastavím jim interní pullupy. Takže ve výsledku to máme: 8 segmentů + 8 pozic (z toho 5 řádkových vodičů) + 4 sloupcové = 20 vývodů. A jsme na svých. Trošku harakiri může nastat na TX/RX, když do toho bude zvenčí pindat USB/UART převodník, ale uvidím, jak se to v praxi vyvrbí. Přinejhorším obětuju dvě pozice.

Klávesnice má 20 tlačítek. 16 jich nechám pro hexadecimální znaky, zbývají 4. Což je pro KIM-1 málo, tak to budu muset vymyslet nějak chytřeji. Možná se inspiruju u Heathkitu ET3400 – ten si vystačil s 16 klávesami a RESETem a klávesy měly vždy dvě funkce.

A kdyby mě snad jednodeskáč znudil, tak vždycky můžu nasadit firmware z Calcuina.

Rubriky: Hardware | Štítky: , | Komentáře nejsou povolené u textu s názvem Rockwell 18R jako jednodeskáč

ASM80 z příkazového řádku

Čtenáři jistě znají ASM80 – online assembler / IDE pro osmibitové procesory. Udělal jsem i několik odvozených verzí, třeba single page překladače, embedded verzi překladače (použil jsem ji v tutoriálu Stroják.cz), nebo třeba stand alone IDE. Logickým pokračováním je tedy stará dobrá utilita pro překlad z příkazového řádku.

Předpokladem je mít funkční prostředí Node. Není to nic složitého, existuje pro všechny hlavní platformy, a stáhnout si ho můžete zde: nodejs.org. Při instalaci se nainstaluje i správce balíčků, zvaný npm.

NPM slouží k instalaci balíčků a knihoven. Pro instalaci ASM80 stačí spustit příkazový řádek a napsat:

npm i -g asm80

Parametr -g způsobí, že se asm80 nenainstaluje jako knihovna (to ani nedává smysl), ale jako systémový nástroj. Pak půjde spouštět jako klasická utilita pro příkazový řádek:

asm80 test.a80

spustí překlad souboru test.a80, a výsledkem budou dva soubory: test.hex s výstupem a test.lst s protokolem o překladu. Přípona .a80 napovídá, že překladač má použít instrukční sadu procesoru 8080.

Chování lze ovlivnit pomocí parametrů. Lze nastavit jméno výstupního souboru, potlačit generování .lst, nebo explicitně určit typ procesoru a formát výstupního souboru (kromě HEX a SREC lze generovat například i .COM soubory pro CP/M, .PRG pro emulátory C64, nebo SNA a TAP pro ZX Spectrum). Parametry jsou popsány na stránce NPM balíčku ASM80.

Přehled syntaxe a direktiv naleznete na GitHub Pages.

Ještě mám pár námětů na vylepšení, chtěl bych znát váš názor…

  • Vytvořit systém knihoven, tak, jak ho mají klasické assemblery, co oddělují překlad a linkování. Tedy možnost udělat knihovnu subrutin, z níž by se includovaly pouze ty části kódu, které jsou potřebné pro správnou funkci. Mohli byste si pak udělat třeba něco jako „clib“ pro svůj systém…
  • Mít možnost přilinkovat rovnou veřejně publikované knihovny, například na GitHubu.
  • … další procesory? Systémy?

Díky za tipy a návrhy. Můžete je rovnou posílat do Issues (a klidně i česky)

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

Nový starý… funkční!

Přišly prototypové desky na Nový Starý (krycí název Jess). Mám velkou radost, protože návrh obsahoval jen tři chybné spoje. Jasně, jsem blbec, namapoval jsem výstup na pin, který může být jen vstup. Ale co, můžu si za to sám. Ale jinak na první zapojení fungoval.

Vzal jsem Multicomp od Granta Searla, generátorem jsem si vytvořil Microcomputer.vhd v sestavě 6809 / Full external SRAM / 10MHz / Serial, upravil jsem mapování pinů FPGA, nahrál výsledek do EPCS4, spustil, a na terminálu se objevilo to, co se objevit mělo. Půl hodinky od nažhavení pájky, dobrý výsledek! A tak jsem si i zaprogramoval:

jess1

Krok 2: Zapájet DAC pro VGA (no, šest rezistorů) a ověřit klávesnici. Mezitím už se mi dělají opravené PCB. Na nich bude i místo pro konektory JTAG/AS (teď je deska přes ně a je to nepohodlné).

No a pak už je jen krok 3, totiž profit. Tedy pardon – krok 3 je samozřejmě úprava podle těch mých plánů, co jsem nastínil minule.

20161022_144721

Rubriky: Hardware | Štítky: , | Komentáře nejsou povolené u textu s názvem Nový starý… funkční!

Iotta.cz

Technické hlášení: začalo se mi motat tady na Retročipu hraní s IoT a jinými moderními technologiemi se starými počítači a osmibity. Takže jsem se rozhodl, že IoT pošlu na vlastní doménu, kam přesunu i obsah. Dejte si do bookmarků Iotta.cz.

Nominace do Křišťálové Lupy 2016 to trochu urychlila… 🙂

Rubriky: IoT | Komentáře nejsou povolené u textu s názvem Iotta.cz

Jess

Zpátky ke kořenům! Včera v noci jsem se konečně dokopal k tomu, abych dodělal desku plošných spojů pro svůj nový starý počítač. Kódové označení Jess.

Hlavně teda přišly paměti SRAM, co pracují na 3.3V. Těch pětivoltových mám, že bych jimi mohl vydláždit podlahu v koupelně, ale centrem toho všeho je FPGA, a ta jede na 3.3V, nazdar bazar éljen!

Já bych to klidně implementoval celé ve FPGA, ale ten můj kousek (EP2C5) nemá dost RAMky na nějaké větší prostocviky, tak jsem zvolil externí. Nakonec to bude AS6C1008 nebo AS6C4008 – plošňák je připravený na obojí. Jako vstup mám klávesnici na PS/2, výstup je VGA s šesti bitama (tedy 64 barevných odstínů). K tomu tam je jedna sériová FLASH na SPI (SMD nebo DIL) a jeden slot na další FLASH (SD karta ne, ta přijde později). No a sestavu periferií uzavírají dva sériové porty.

Displej bude nejprve textový se semigrafikou, to nacpu do interních paměťových bloků. Ve verzi 2 budu chtít vyzkoušet použití té externí paměti. Budu řešit to, co řešili všichni v 80. letech, totiž jak to zařídit, aby do paměti lezl procesor i videoobvod a nepomlátili se. Někteří to řešili tak, že procesor zastavovali nebo zpomalovali, jiní na to měli speciální hardware a vyhraženou paměť, no a pár šílenců použilo metodu „sudá – lichá“, tedy že se procesor a video v přístupech střídali. Procesor lezl v lichých půltaktech, video v sudých atd. Zkusmo jsem to počítal, a mám hraniční frekvenci někde okolo 10 MHz. To už by mohlo jít – minimálně těch 256×192 dám určitě 😉 Ale uvidíme, a jak říkám: fáze 2!

K té klávesnici: herdek, fakt není možné sehnat dobrou maticovou klávesnici s tlačítkama! Buď si udělat membránovou, nebo si ji poskládat z mechanických tlačítek, a upřímně – tak či onak to znamená leptat poměrně velký kus PCB a spoustu piplavé práce. Možná to někdy v budoucnu udělám, možná sáhnu k tomu, že vezmu třeba náhradní klávesnici z C64, kterých je všude dost. Uvidíme. Verze 1 je zatím PS/2.

Uvnitř toho všeho bude… chvíle napětí… ano, bude tam nejspíš 6809 jako soft core. Ve FPGA dostane k ruce zhruba půlkilo bootloaderu v paměti. Ten bude mít jedinou starost – totiž vzít obsah ze sériové flash (AT25Lněco) a natáhnout ji do RAMky. Pak odpojí interní paměť, a jede se!

Protože je RAMky víc než dost, udělám ji nejprve tak, že bude možnost mapovat stránky do adresního prostoru. Ve verzi 2, možná 3, bych rád udělal takový hack, totiž plnou MMU s překládáním adres, s možností ochrany paměti a s takovým jednoduchým přepínáním privilegovaného a uživatelského módu – to sice procesor neumí, ale externě to půjde „dobastlit“.

A jako software asi přijde nejdřív jednoduchý monitor, a pak se uvidí. Nechci začínat s ambiciózním plánem na portaci OS9 nebo něčeho podobného…

Rubriky: Hardware | Štítky: , , | 2 komentáře