Tento projekt mně zaujal svojí jednoduchostí. Počítač tvořený pouze diskrétními TTL (HCMOS) obvody má minimum součástek a vejde se bez problémů na nejlevnější desku plošných spojů o rozměru 10×10 cm. CPU tvoří jen asi 5 logických obvodů, pár registrů a paměť EPROM. Podobných jednoduchých počítačů bez CPU se v posledních letech objevilo více, ale obvykle se točí okolo svého diskrétního CPU a programují se buď v nějakém pseudo assembleru nebo přímo v mikrokódu. My4TH zaujme tím, že na něm, i přes jeho jednoduchost, běží již relativně vyšší programovací jazyk FORTH.
Autor Dennis Kuschel celý projekt My4TH nejen zdokumentoval, ale dal k dispozici i všechny podklady a zdrojové kódy. DPS nechal dělat microlan a po domluvě na OldComp fóru na mě jedna deska zbyla a microlan mi ji i dokonce osobně doručil až pod nos 🙂
DPS jsou moc hezky popsané z obou stran. Objednat součástky díky předpřipravenému Mouser košíku zvládne i malé dítě a autorův návod je přehledný, takže v podstatě taková dětská stavebnice. Nahradil jsem jen 9-pinový sériový port terminálu za jeho miniUSB obdobu od FTDI. Škoda, že z něj není i výstup 5V napájení, nemusel bych do desky vést 2 USB kabely. Nedostatek EPROM jsem vyřešil šuplíkovým kouskem, který má sice deklarovanou přístupovou dobu 150 ns, ale bude to v reálu o něco méně, protože chodí v pohodě. Osazení byla brnkačka a počítač šlapal na první dobrou. Díky té zmíněné 150 ns EPROM jsem měl trochu obavy a použil jsem nejpomalejší frekvenci oscilátoru 8 MHz. Mám v šuplíku i nějaké 45 a 70 ns EPROM, ale ty jsou OTP a nejsou dnes běžně dostupné a mám jich jen pár, tak chvíli počkám, až se ustálí firmware, než jednu obětuji a vyzkouším na ní 12 nebo 14 MHz oscilátor. Zrovna dnes vyšel nový firmware 1.2 s modulem pro floating point aritmetiku.
Počítač je téměř klasický 8-bit, má 8-bitovou datovou sběrnici, 16-bitovou adresovou sběrnici a nějaké ty řídící signály. ROM i RAM mají shodnou velikost 32 kB. ROM obsahuje jak mikrokód diskrétního procesoru, tak interpreter jazyka FORTH. ALU je tvořená jedním hradlem NOR, všechny další operace se tak musí skládat z operace NOR a pro více bitů opakovat vícekrát. Mikrokód umožňuje, aby jedna instrukce měla až 128 mikroinstrukcí, mezi kterými jsou i instrukce podmíněného skoku. Takto se dá jedním bitem NOR spočítat třeba 8-bitový součet, mrkněte třeba na instrukci ADD.
Pro ukládaní dat se používá systém obrazovek „screen“. Pro dřívější systémy FORTH se nejedná o nic neobvyklého, ale z dnešního pohledu je to celkem zajímavé. Screen je blok dat o velikosti 1 kB a v podstatě reprezentuje obsah jedné obrazovky terminálu 64×16 znaků. My4TH ukládá screeny do sériových I2C pamětí EEPROM. Přímo na desku lze osadit až 256 kB a dalších můžete připojit na externí I2C sběrnici. My4TH obsahuje příkazy pro práci s obrazovkami i jejich editor. Celkově tak můžete mít až 512 kB stránkové paměti. Já jsem osadil 256 kB, takže mám k dispozici 256 stránek, což je více než dost. Stránky nemusí obsahovat jen textovou podobu programů, ale můžou obsahovat i předkompilované moduly, slovníky a proměnné. Aby nebylo nutné přenášet data v textové podobě přes terminál, autor vytvořil my4th Transfer Tool, který umožňuje přenášet obrazovky/bloky v textové i binární podobě.
My4TH umožňuje připojení dalších periférií na IO bránu nebo externí I2C sběrnici, což ho dělá zajímavým pro další bastlení, protože I2C periferií je dnes nespočetně. Na druhou stranu pro domácí automatizaci je asi vhodnější ESP32 a další podobné hračičky, už jen kvůli připojení k síti, které tady chybí. Nicméně autor neváhal a přes IO rozšíření sám připojil klávesnici a 4-řádkový displej, baterii a krabičku. Výsledek nazval Forth Deck „mini“ a vytvořil tak samostatný přenosný FORTH počítač, který vypadá moc pěkně. Mám pocit, že ještě „vyměknu“ a klávesnici, displej a krabičku doplním 🙂
OTP si šetři, mám 10 ks Winbond 27C512-45. Přeprogramovat šly, ale ještě jsem je netestoval v My4th
Taky jsem zkusil nejaky objednat na Ali, uvidime co prijde, oni preznaci cokoli na cokoli 😉
To je pěkný, ale po přečtení popisu na webu konstrukce stejně nechápu jak to funguje (myslím obecně procesory bez procesoru)… V EEPROM je program, jsou tam hodiny, které cyklicky projíždí paměť a dál?
Tam predsa procesor je. Na stranke projektu je pekne ukazane ktore svabi su ktora cast procesoru. Len tato konstrukcia ma jednu zvlastnost. Pamat mikro-kodu je zaroven aj pamat programu.
Procesor přece není dále nedělitelná součástka. Procesor můžeme rozdělit na několik jednodušších funkčních bloků a ty už lze relativně snadno sestavit z obvodů nižší integrace (bavíme se zde o jednodušších procesorech). Pokud půjdeme dále, tak ty obvody nižší integrace lze sestavit pouze ze spínacích tranzistorů. A protože spínací tranzistor je elektronický spínač, stejně jako relé, lze celý procesor a počítač sestavit jen a pouze z relé. Jen je to „trochu“ větší, těžší, pomalejší a žravější.
Asi nejlepší popis práce klasického procesoru a jeho rozdělení na bloky vyšel v modrém amáru ARB 3/1980. Je to monotematické číslo a doporučuji nastudovat celé. Včetně toho návrhu TTL programátoru topení, protože to je defacto návrh řídícího počítače s procesorem z diskrétních obvodů. Krásně popsaná „kancelář pana procesora“ z tohoto ARB vyšla i v ABC 20 roč. 24 (1980), z tohoto popisu to musí pochopit každý. Velmi srozumitelný popis funkce tzv. mikroprogramových řadičů, které tvoří absolutní základ každého procesoru, vyšel v seriálu článků „Polovodičové paměti“ ve VTM během roku 1984.
Přimlouvám se za to, abyste dal zase na svůj web TTL počítač Claudia Lite. Díky
Pingback: My4TH jako notebook – ForthDeck | Martinův 8-bitový blog