<< Zpět

   

ATX-81

Klon počítače ZX-81, nedokončený polotovar pro inspiraci

Původním záměrem ATX-81 bylo vytvořit obdobu počítače ZX-81 s procesorem ATmega8, který má obdobné vybavení jako původní ZX-81 - tedy 1 KB paměti RAM a 8 KB paměti ROM. Nepočítal jsem s emulací procesoru (to by ATmega kvůli generátoru videosignálu nestíhal), ale počítač měl být zhruba kompatibilní na úrovni BASICu. A přestože projekt zůstal v rozpracovaném stavu a zřejmě nebude už nikdy dokončen, může posloužit jako zajímavá inspirace k dalším projektům. K inspiraci lze doporučit jednak způsob zobrazení VGA videosignálu a jednak interní makro interpeter floating point kalkulátoru.

Co je v projektu funkční - generátor obrazu VGA, PAL a NTSC, větší část kalkulátoru s makro interpreterem, část zpracování příkazů a ukládání programu (program jsem plánoval ukládat do EEPROM, tím by se uvolnila RAM pro data), vstup PS/2 klávesnice, správa displeje a správa paměti. A hlavně - je to hezká krabička co na displeji maluje hezká retro písmenka, proto je mi docela líto nedokončení. :-) Časem se totiž ukázalo, že na takovém počítači by ani nebylo co spouštět, protože čistých BASIC programů pro původní ZX-81 (s 1 KB RAM) je docela málo, většinou vyžadují rozšířenou RAM a strojový kód.

Nejzajímavější částí projektu je generátor obrazu. Ke generování video signálu se používá SPI interface. Odesláním bajtu na SPI port se začnou vysílat sériové bity obrazu, což představuje střídání černé a bílé barvy. U procesorů ATmega je ovšem nutné počítat s tím, že 1 bajt se na SPI odesílá jako 9 bitů - 8 datových bitů a 1 stop bit. V obraze se to projeví tím, že mezi 8 pixely písmenka je ještě 1 pixel jako oddělovací mezera. U běžného textu (černé písmo na bílém podkladu) se to neprojeví. Projeví se mezerou mezi inverzními písmeny a mezerou mezi pseodografickými znaky. 1 bit na SPI trvá buď 2 nebo 4 takty procesoru - podle módu VGA nebo TV. 1 písmeno se tak ve VGA módu vyšle za 18 taktů procesoru. Jeden řádek může mít 30 znaků, to je 540 taktů. Při frekvenci krystalu 24 MHz to je doba zobrazení 22,5 us.

Za zmínku stojí ještě provedení synchronizace obrazu. Často se zřejmě neví, že i VGA monitory mohou používat synchronizační směs, namísto oddělených signálů VSYNC a HSYNC. Zjednoduší se tím zapojení i obsluha. Horizontální synchronizace je vedena z PWM výstupu OC1A čítače Timer1. Není tak nutné softwarově obsluhovat synchronizační výstup, to řeší hardware. Jednoduše je řešena i vertikální synchronizace - během videolinek generujících VSYNC puls se jednoduše změní polarita výstupu OC1A, což monitor interpretuje jako vertikální synchronizační puls.

ZX-81 používal neobvyklý způsob organizace paměti (který jsem se také snažil převzít). Protože má paměť RAM jen 1 KB, sdílí se tato paměť mezi programem, datovými proměnnými a videopamětí. A to tak, že každý řádek v obraze může mít proměnlivý počet znaků na řádek (max. 32). Při zobrazení znaků se délky řádků prodlužují a současně s nimi se odsouvá nebo přisouvá následující oblast paměti. Docela ďábelský způsob. :-).

Jak můžete vidět ve schématu, obsahem je hlavně procesor, krystal a halda konektorů. To je výhoda novodobých mikročipů, že v sobě zahrnují vše potřebné. A také nevýhoda, protože sběrnici nelze rozšiřovat. K procesoru jsou připojeny signály pro video výstup (obraz + data, VGA konektor i CINCH), vstup z klávesnice PS/2, výstup audio, výstup na LED, programovací konektor, konektor I2C a vstup z přepínače volby videomódu (VGA/PAL/NTSC).

Plošný spoj byl realizován jako jednostranný.

Potisk spoje jsem vytiskl na tiskárně, přilepil na desku a přelepil izolepou.

Rozložení součástek.

Koncová sestava.

A zakrytování. :-)

Stažení kompletních podkladů (schéma v Eagle, zdrojový kód pro WinAvr): ATX81.zip

Miroslav Němeček

<< Zpět