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

Jak dál s workshopem Arduino 101?

Arduino 101 je workshop, který jsme se Štěpánem Bechynským připravili a úspěšně s ním jezdili po republice. Prošlo jím asi 400 lidí, kteří si minimálně zkusili, že elektronika není nic tajemného a magického a že „blikat ledkou“ zvládnou taky. Přišli o bezdůvodný strach a udělali nejtěžší krok k elektronice – totiž ten první.

Se Štěpánem jsme celou koncepci přes rok ladili a vylepšovali. Výsledkem našich debat bylo, mimo jiné, i to, že jsme se rozhodli navrhnout vlastní výukový shield. Jeho výroby se ujal CZ.NIC, a už máme v ruce první předprodukční kousky.

20160817_134818_HDR
EDUSHIELD (díky CZ.NIC)

Logicky jsme si kladli otázku: Co dál? Představa, že budeme dál objíždět republiku o víkendech a ukazovat lidem, jak si hrát s Arduinem, naráží na mnoho problémů, jmenovitě čas a síly. Ale zase by byla škoda potenciál nevyužít – zájem je stále obrovský. Nakonec jsme dospěli k následujícímu: Vyškolíme školitele!

14037726_10154355278422954_25623615_o
Zájem o Arduino workshop je pořád obrovský

Zcela vážně. Napadlo nás, že najdeme třeba deset, patnáct, dvacet lidí, kteří mají zájem a chuť Arduino učit. Těm dáme k dispozici výukové materiály a veškeré know-how, co jsme díky Arduino 101 získali. Měli byste zájem?

Obchodní model je velmi jednoduchý: Budete mít k dispozici výukové shieldy od CZ.NIC. Můžete je nakoupit, a třeba prodávat frekventantům vašich workshopů. Nebo uděláte workshopy placené a Arduino + shield budou v ceně. Od nás získáte metodické materiály a určitou podporu. To, jestli budete vy provozovat workshopy neziskově, nebo ziskově, jestli s nimi budete objíždět republiku, nebo zakotvíte u vás ve městě, jestli je budete dělat pravidelně, nebo „podle zájmu“, to už je na vás.

Pokud máte chuť něco takového dělat, ozvěte se nám. Dle zájmu bychom připravili nějakou akci „train the trainer“, zhruba v září / říjnu. Lektor by měl umět pracovat s elektronikou a musí umět programovat.

Rubriky: Hardware | 4 komentáře