.. vim: ft=rst showbreak=--»\ noexpandtab fileencoding=utf-8 nomodified wrap textwidth=0 foldmethod=marker foldmarker={{{,}}} foldcolumn=4 ruler showcmd lcs=tab\:|- list tabstop=8 noexpandtab nosmarttab softtabstop=0 shiftwidth=0 linebreak :date: 2026.05.06 08:19:18 :_modified: 1970.01.01 00:00:00 :tags: doc,HW,MHF,MHF-002 :authors: Gilhad :summary: MakerFaire 2026 shrnutí :title: MakerFaire 2026 shrnutí :nice_title: |logo| %title% |logo| %HEADER% .. |FORTH-logo-0002.png| image:: .root/FORTH-logo-0002.png :width: 250 :align: top :target: .root/FORTH-logo-0002.png |FORTH-logo-0002.png| .. |MF2026_1.png| image:: MF2026_1.png :width: 250 :align: top :target: MF2026_1.png .. |MF2026_2.png| image:: MF2026_2.png :width: 250 :align: top :target: MF2026_2.png .. |MF2026_3.png| image:: MF2026_3.png :width: 250 :align: top :target: MF2026_3.png .. |MF2026_4_WORDS.png| image:: MF2026_4_WORDS.png :width: 250 :align: top :target: MF2026_4_WORDS.png .. |MF2026_5.png| image:: MF2026_5.png :width: 250 :align: top :target: MF2026_5.png .. |QR_MHF-002_110x110.png| image:: QR_MHF-002_110x110.png :width: 110 :align: top :target: QR_MHF-002_110x110.png .. |QRmemxFORTH-asm_100x100.png| image:: QRmemxFORTH-asm_100x100.png :width: 100 :align: top :target: QRmemxFORTH-asm_100x100.png .. |QRshrnuti_100x100.png| image:: QRshrnuti_100x100.png :width: 100 :align: top :target: QRshrnuti_100x100.png Rozcestník -------------------------------------------------------------------------------- +-------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------------------------------------------+ | `Comp24 shrnutí `__ | `HW `__ | `SW `__ | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------------------------------------------+ | ``__ | ``__ | ``__ | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------------------------------------------+ | |QRshrnuti_100x100.png| | |QR_MHF-002_110x110.png| | |QRmemxFORTH-asm_100x100.png| | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------+--------------------------------------------------------+ |MF2026_1.png| |MF2026_2.png| |MF2026_3.png| |MF2026_4_WORDS.png| |MF2026_5.png| Retro 8bitový počítač s moderní architekturou -------------------------------------------------------------------------------- Co to je? ================================================================================ Projekt je návrh vlastního 8bitového počítače postaveného na procesoru HD6309. Cílem je propojit klasickou architekturu 80. let s moderními principy návrhu a modularitou. Hlavní vlastnosti ================================================================================ * CPU: HD6309 přetaktovaný na 4 MHz * RAM: 128 kB (s EMS bankováním) * Modulární architektura (samostatné karty) * Programovatelná logika (CPLD) * Externí grafická a I/O karta Architektura systému ================================================================================ Systém je rozdělen do několika desek: * Procesorová deska * HD6309 CPU * 128 kB RAM (64 kB přímo adresovatelných) * EMS bankování paměti * CPLD (ATF1504AS) pro mapování zařízení * I/O karty * VIA, PIA, ACIA * Přímý přístup k periferiím * Grafická a systémová karta (MHF-002) * Samostatný mikrokontroler * Vlastní RAM * VGA výstup, SD karta, klávesnice Paměťový model ================================================================================ Procesor přímo vidí pouze 64 kB paměti. Zbytek paměti je dostupný pomocí EMS: * Vyhrazené paměťové okno * Dynamické přemapování bloků * Sdílená RAM pro komunikaci s grafikou Tento přístup umožňuje: * Rozšířit paměť nad limit 8bitové architektury * Efektivně komunikovat mezi moduly Komunikace mezi kartami ================================================================================ Komunikace probíhá přes sdílenou RAM: * CPU zapíše požadavek do sdílené paměti * Grafická karta si paměť převezme * Zpracuje data * Zapíše výsledek zpět Výhody: * Vysoká propustnost dat * Oddělení odpovědností mezi moduly * Překlene rozdíly v architektuře * Oddělené čtení a zápis * Funguje jako buffer * Lze neomezeně rozšiřovat o nové příkazy Proč to celé? ================================================================================ * Hluboké pochopení počítačů * Experimentování s architekturou * Kombinace starého a nového přístupu * Plně kontrolovatelný systém Stav projektu ================================================================================ * Architektura navržena * Jednotlivé moduly ve vývoji * MHF-002 funkční a prezentovaná Budoucí směr ================================================================================ * Dokončení CPU desky * Integrace všech modulů * Vlastní operační systém * Vývoj nástrojů a her Stránky projektu ================================================================================ `Comp24 shrnutí `__ MHF-002 (Mega Home Forth v2) -------------------------------------------------------------------------------- Co to je? ================================================================================ MHF-002 je univerzální I/O a grafická karta pro 8bitový počítač, která může fungovat i samostatně jako SBC (Single Board Computer). Oproti předchozí verzi přináší výrazně vyšší výkon a rozšíření. Hardware ================================================================================ * MCU: ATmega2560 * RAM: * 8kB interní RAM ATmega2560 * 128 kB lokální RAM CY7C109D * (rozšíření RAM na 64 kB a zbytek pro externí přístup) * 128 kB sdílená RAM (komunikace s CPU) * Video výstup (VGA) * PS/2 klávesnice * SD karta * USB-Serial (s HW řízením toku) Architektura ================================================================================ Karta funguje jako samostatný počítač: * Vlastní procesor (16 MHz) * Přímý přístup ke sdílené paměti (bit banging) * Řízení periferií Díky tomu: * Zvládá přesné časování videa * Obsluhuje vstupy a výstupy * Hlavní počítač se nemusí starat o detaily a časování Sdílená paměť ================================================================================ Komunikace s hlavním CPU probíhá přes 128 kB RAM: * Mapování do EMS okna * Střídavý přístup CPU a MHF-002 * Přenos dat a příkazů Použití ================================================================================ * Grafická karta * I/O řadič * Bootloader systému * Samostatný počítač (SBC režim) Software ================================================================================ Karta obsahuje: * Nízkoúrovňové ovladače pro HW * Interaktivní prostředí FORTH * Možnost načítání programů a knihoven za běhu FORTH umožňuje: * Přímé ovládání hardware * Rychlé testování * Interaktivní vývoj Ukázky na stánku ================================================================================ * Had (snake) * Matrix screensaver * Načítání ze SD karty Výkon ================================================================================ Výkonově odpovídá přibližně: * ZX81 s rozšířenou pamětí * S modernějšími periferiemi (SD, video, serial) Speciální vlastnost ================================================================================ Ve finálním systému bude karta: * Inicializovat hlavní počítač * Nahrávat operační systém do RAM * Řídit start CPU Budoucnost ================================================================================ * Plná integrace do systému * Více specializovaných karet (video vs I/O) * Využití FORTH pro dynamické řízení hardware Shrnutí ================================================================================ MHF-002 není jen periferie. Je to: * Samostatný počítač * Vývojová platforma * Most mezi moderním a retro světem Proč tam nedáš ESP32, STM32, Raspberry, Teensy, M5Stack, superpočítač ... ? -------------------------------------------------------------------------------- Protože je to **periferie** k 8bitovému počítači. Takže by měla být * **8bitová** * plně pochopitelná do posledních detailů * posouvat limity toho, co jde s HW realizovat * být výzvou a něčím, čím se můžu pochlubit Kdyby mi šlo jen o hrubý výkon, mám doma Ryzen s 12 jádry, 32 GB RAM a pořádnou grafickou kartou a gamesku typu Had si stáhnu někde z netu. Jenže to umí každý a nic se tím nenaučí. Inspirací mi byl projekt nazvaný **"Squeezing Water from Stone 3: Arduino Nano"**, tedy ždímání vody z kamene, který dokázal z atmegy vyždímat plných **40x25** znaků na obrazovku. Já z kamene ždímám syrovátku a dokážu na stejně rychlém stroji udělat **50x60** znaků, tedy plný **trojnásobek**. A pořád tomu rozumím do poslední strojové instrukce, posledního logického hradla a posledního signálu. MakerFaire2026_kecy -------------------------------------------------------------------------------- potrebuju udelat prezentaci projektu na Maker Faire. Projekt je 8bitový "retro" počítač založený na HD6309 přetaktovaném ze 3MHz na 4MHz. Bude mít 128kB RAM CY7C109D (ze které přímo vidí jen 64 kB a ke zbytku přistupuje ve stylu EMS, tedy mapováním do vyhrazeného okna). Jako "GLUE" používá ATF1504AS pro mapování devices do paměti (VIA, PIA, ACIA), mapování EMS paměti a mapování "sdílené - shared" paměti do okna EMS. To je hlavní deska počítače. Dále bude mít desku pro grafiku (MHF-002), která bude obsahovat shared RAM 128kB prez kterou se budou předávat data mezi procesorem HD6309 a grafickou kartou MHF-002. Procesor si namapuje tuto RAM do EMS okna, zapíše tam požadavky, pak ji uvolní. MHF-002 si ji namapuje, přečte a splní požadavky, zapíše výsledky a zase si ji odmapuje. Procesor si ji namapuje a přečte výsledky a tak se to pořád opakuje. Tímto způsobem se získá velký datový tok za cenu lagu při přepínání a řeší se tím zcela odlišný způsob práce s pamětí u procesoru (nativní přístup, 4MHz) a MHF-002 (přímá manipulace s piny a "bit banging", 16MHz). MHF-002 je druhá iterace následníka "počítače za cenu oběda" postaveného okolo Arduino Nano (s atmega328p), který jsem prezentoval loni. MHF-001 a MHF-002 jsou postavené okolo atmega2560, kvůli větší paměti a více IO pinů. MHF-002 obsahuje mikrokontroler atmega2560 (z Arduino Mega Pro), "shared RAM" 128kB CY7C109D pro komunikaci s HD6309, druhou 128kB RAM CY7C109D pro rozšíření RAM z 8kB na 64 kB a několik jednoduchých obvodů řady 74HC pro ovládání VGA/RSA video výstupů, PS/2 klávesnice, čtečky SD kartet a USB-Serial modulu s HW řízením toku. Ve výsledné sestavě budou tyto karty dvě, jedna pro viodeovýstup a druhá pro všechno ostatní, protože samotné video zabírá 12/13 času ve velkých blocích a vyžaduje přesné časování, zatímco PS/2, Serial a SD vyžadují nerušené bloky času v krátkých intervalech. Dále ve výsledné sestavě budou karty s VIA, ACIA, PIA a podobnými obvody pro přímý vstup a výstup dat. Při startu jedna MHF-002 naplní část RAM na procesorové desce daty ("ROM část" s operačním systémem) a teprve pak nechá spustit HD6309. --- Presentace by měla být rozdělená na dvě části, ideálně ve formě dvou RST (restructured text) souborů pro prezentaci na webu a pro vytištění na papír na stánek. Jedna část věnovaná celému projektu (který je zatím ve stavu návrhu) a druhá věnovaná MHF-002 (Mega Home Forth, verze 2) desce, kterou tam budu předvádět MHF-002 nyní obsahuje "ovladače" pro veškerý svůj HW a pro potřeby ladění obsahuje FORTH, který umožňuje tyto ovladače používat (a testovat) a slouží jako interaktivní a programovatelný shell pro její systém. Prezentace obsahuje hru Had ("snake") a screensaver "matrix", které se načtou z SD karty. Přítomnost FORTHu v budoucnu umožní retropočítači programovat tuto kartu za běhu přesně pro potřeby aktuálních programů. Předváděné karty jsou nakonfigurovány do režimu SBC (Single Board Computer), který umožňuje jejich nezávislý běh. Výkonově je jedna karta řádově srovnatelná s počítačem ZX 81 doplněným větší pamětí a přídavnými zařízeními, zejména SD.