Obsah
1. Herní konzole Uzebox s osmibitovým mikrořadičem ATmega644
2. Základní moduly herní konzole Uzebox: video systém
3. Připojení herních ovladačů, rozhraní MIDI a rozhraní pro paměťové karty (Micro)SD
4. Generování video signálu na herní konzoli Uzebox
5. Rastrové obrázky bez použití framebufferu?
6. Základní grafický režim herní konzole Uzebox
7. Další podporované grafické režimy herní konzole Uzebox
8. Podpora pro zobrazení spritů
1. Herní konzole Uzebox s osmibitovým mikrořadičem ATmega644
V předchozí části seriálu o architekturách počítačů jsme si řekli základní informace o osmibitových mikrořadičích ATtiny 4, ATtiny 5, ATtiny 9 a ATtiny 10 firmy Atmel a taktéž o v mnoha ohledech výkonnějším osmibitovém mikrořadiči ATmega644. Tento mikrořadič jsem si jako (do značné míry typického) zástupce celé řady ATmega nevybral náhodou, protože právě tento čip tvoří ústřední část zajímavé herní konzole nazvané Uzebox, jejímuž popisu budou věnovány následující odstavce. V této herní konzoli jsou uplatněny některé principy a postupy známé z doby největší slávy osmibitových mikropočítačů a taktéž herních konzolí první a druhé generace. Jedná se například o podporu několika grafických režimů s různým rozlišením a počtem současně zobrazitelných barev, podporu zobrazení spritů (pohybujících se objektů na obrazovce vykreslovaných nezávisle na pozadí), idea počítače/konzole zkonstruované s minimálním počtem elektronických součástek atd.
Obrázek 1: Herní konzole Uzebox obsahující osmibitový mikrořadič AVR řady ATmega, konkrétně typ ATmega644. Na základní desce můžeme vidět dvojici konektorů určených pro připojení ovladačů SNES, konektor pro výstup kompozitního videa i patici pro připojení menšího plošného spoje s vlastním mikrořadičem.
Autoři herní konzole Uzebox se v úplných počátcích své práce inspirovali projektem Rickarda Guneeyho, který navrhl a zkonstruoval hardwarový emulátor známé a z historického hlediska velmi důležité hry Pong (právě tato hra totiž pomohla odstartovat éru komerčních hracích automatů následovanou érou herních konzolí). Hardwarový emulátor hry Pong byl zkonstruován pomocí osmibitového mikrořadiče PIC a několika rezistorů, tedy s minimem elektronických součástek. Mikrořadič PIC se staral jak o vytváření zvuků, tak i o generování monochromatického video signálu se všemi důležitými synchronizačními pulsy, takže hru bylo možné zobrazit pomocí běžného televizoru nebo monitoru. Myšlenka hardwarového emulátoru herních konzolí postavených na moderních osmibitových mikrořadičích nakonec vedla ke vzniku herní konzole Uzebox založené na již o odstavec výše zmíněném mikrořadiči ATmega644, jehož základní charakteristiky jsme si popsali v předchozí části tohoto seriálu.
Obrázek 2: Automatová hra Pong ve variantě z roku 1972.
2. Základní moduly herní konzole Uzebox: video systém
Herní konzole Uzebox je navržena takovým způsobem, aby ji bylo možné jednoduše postavit i v domácích podmínkách, v extrémním případě dokonce i bez nutnosti použití plošného spoje – konzoli lze sestavit i na nepájivém kontaktním poli. Z tohoto důvodu obsahuje Uzebox pouze malé množství součástek, což je možné i z toho důvodu, že prakticky veškerá činnost je programově řízena osmibitovým mikrořadičem. Kromě mikrořadiče ATmega644 tvořícího ústřední část konzole můžeme na schématu najít digitálně-analogový převodník realizovaný pomocí sady rezistorů, který slouží k vytvoření trojice analogových signálů reprezentujících úrovně červené, zelené a modré barvové složky (za D/A převodníkem jsou zařazeny kondenzátory sloužící pro filtraci stejnosměrné složky). Výsledná trojice barvonosných signálů RGB je doplněna dvojicí signálů – horizontálním synchronizačním signálem a hodinovým signálem, který má v případě výstupu na televizory pracující v normě NTSC frekvenci 14.31818 MHz.
Obrázek 3: Moduly osmibitového mikrořadiče AVR ATmega 644.
Barvonosné signály RGB jsou spolu se synchronizačním signálem a hodinovým signálem přiváděny do druhého čipu – jedná se o obvod AD725 firmy Analog Devices, který slouží pro generování kompozitního videa a S-videa. Tento čip dokáže vytvářet výstup jak pro normu NTSC, tak i pro naši normu PAL, i když v tomto případě je nutné nepatrně upravit jak hodinovou frekvenci, tak i některé rutiny pro generování grafiky (to však není nic nového, protože se stejnou problematikou se museli vypořádat i konstruktéři osmibitových mikropočítačů). Pokud je herní konzole Uzebox připojena k monitoru, nemusí se čip AD725 použít, pouze se musí z mikrořadiče vyvést i vertikální synchronizační signál a v případě některých monitorů i upravit zapojení digitálně-analogových převodníků takovým způsobem, aby se amplituda barvonosných signálů zvýšila na jeden volt namísto 0,7 V (zde je ovšem situace závislá na typu monitoru, navíc některé moderní monitory nedokáží korektně pracovat s relativně nízkou frekvencí obrazu, kterou nelze zvýšit kvůli nedostatečnému výkonu mikrořadiče – viz též další text). Navíc je možné pro televizory s konektorem SCART (ovšem podporujících RGB režim!) zcela vynechat čip AD725 a použít přímo výstup z D/A převodníků.
Obrázek 4: Zapojení pinů čipu AD725.
(Zdroj: dokumentace výrobce čipu AD725)
3. Připojení herních ovladačů, rozhraní MIDI a rozhraní pro paměťové karty (Micro)SD
Kromě sady rezistorů a čipu AD725 zmíněného v předchozí kapitole je herní konzole Uzebox vybavena i rozhraním pro připojení dvojice ovladačů určených původně pro herní konzoli SNES (Super NES). V prvních návrzích Uzeboxu se sice uvažovalo (a stále pro to existuje podpora) o použití ovladačů určených původně pro NES, ovšem dnes je snazší zakoupit spíše ovladače pro SNES, nehledě na to, že tyto ovladače mají větší množství tlačítek využitelných ve složitějších hrách. Způsob čtení informací z ovladačů pro NES a SNES je poměrně jednoduchý, protože stav jednotlivých tlačítek (včetně malého „joysticku“ či křížového tlačítka na levé straně ovladače) je na základě signálu přijatého z herní konzole ukládán do posuvného registru o šířce 8 bitů (NES) popř. 16 bitů (SNES). Obsah tohoto registru lze přečíst takovým způsobem, že mikrořadič vygeneruje 8 nebo 16 hodinových pulsů a na druhém pinu ovladače se při každém pulsu objeví další bit vysunutý z posuvného registru.
Obrázek 5: Funkční diagram čipu AD725.
(Zdroj: dokumentace výrobce čipu AD725)
Vzhledem k tomu, že pro dva ovladače typu NES/SNES stačí pouze čtyři I/O piny mikrořadiče osmibitového portu, je možné zbývající čtyři piny využít pro připojení jiných typů ovladačů, například starodávného Paddle firmy Atari, kde postačuje vytvořit jednoduchý RC článek provádějící převod odporu potenciometru na čas nabití kondenzátoru atd. (navíc je volný celý port A umožňující připojení dalších typů ovladačů). Další součásti herní konzole jsou sice z uživatelského hlediska velmi zajímavé a užitečné, ale z konstrukčního hlediska jednoduché, protože veškerou práci obstarává samotný mikrořadič – jedná se o rozhraní MIDI, které jsme si již v tomto seriálu popsali (v podstatě je implementováno jako sériový port s hodinovou frekvencí vysílače 31250 Hz) a taktéž o rozhraní pro paměťové karty SD a MicroSD, které lze připojit k mikrořadiči pouze s pomocí několika rezistorů. To je ze základních součástí herní konzole Uzebox všechno, ovšem díky podpoře komunity vznikly i další pomocné moduly, například modul pro Ethernet atd. (naproti tomu existuje i jednodušší verze Uzeboxu bez čipu AD725, která však podporuje pouze zobrazení ve stupních šedi).
Obrázek 6: Vnitřní uspořádání herního ovladače SNES.
4. Generování video signálu na herní konzoli Uzebox
Z předchozího popisu herní konzole Uzebox je zřejmé, že naprostá většina funkčnosti konzole je soustředěna v osmibitovém mikrořadiči ATmega644. Ten musí nejenom umět načítat data z paměťových karet typu Micro SD či SD (což je funkcionalita vyřešená především programově, tj. nikoli na úrovni hardware), zjišťovat aktuální stavy tlačítek jednoho či dvou ovladačů typu NES/SNES či komunikovat s MIDI zařízením, ale především generovat obrazový signál, který je buď přímo přivedený na monitor s analogovým rozhraním DVI či na konektor typu SCART, nebo je nejprve zpracován čipem AD725, jenž zajišťuje generování color-burstu a popř. smíchání barvonosného signálu se synchronizačními signály, což je práce, kterou by nebylo možné přímo mikrořadičem provést, a to zejména z důvodu jeho nedostatečného výpočetního výkonu (ostatně i v osmibitových mikropočítačích se o generování video signálu staraly specializované čipy, například ULA v případě ZX Spectra či dvojice čipů ANTIC+GTIA(CTIA) u osmibitových počítačů Atari).
Obrázek 7: Průběh televizního signálu při zobrazení jednoho barevného obrazového řádku na televizoru pracujícího v normě NTSC (pro PAL a SECAM se mírně odlišují časové údaje zobrazené pod signálem). Oblast signálu pojmenovanou „color burst“ generuje čip AD725 zcela automaticky.
Pojďme si nyní popsat, jak je vlastně obrazový signál mikrořadičem ATmega644 vytvářen. Cílem autorů této herní konzole byla podpora grafických režimů s 256 barvami, což bylo skutečně splněno – při pohledu na schéma zapojení Uzeboxu vidíme, že zelená a červená barvová složka je přiváděna do digitálně-analogového převodníku na třech vodičích a modrá barvová složka je do převodníku přiváděna na vodičích dvou (pro výstup barev je tedy použit pouze jeden osmibitový I/O port). Díky této konstrukci je celkem rozeznáváno osm úrovní zelené i červené barvové složky a čtyři úrovně složky modré, což dohromady představuje 8×8×4=256 fixních barev. Mohlo by se tedy zdát, že je celá situace vlastně velmi jednoduchá: v datové paměti se vytvoří oblast pro framebuffer (obrazovou paměť) o vhodné velikosti, například 256×192 pixelů s osmi bity na pixel, a při generování obrazu se budou posílat hodnoty jednotlivých pixelů přečtené z framebufferu na I/O port C, z něhož budou digitálně zakódované barvové složky putovat do D/A převodníku a dále pak do čipu AD725, který se postará o vytvoření korektního kompozitního videa či S-videa (oba dva typy výstupu jsou čipem AD725 podporovány).
Obrázek 8: Průběh televizního signálu při zobrazení jednoho monochromatického obrazového řádku na televizoru pracujícího v normě PAL či SECAM.
5. Rastrové obrázky bez použití framebufferu?
Ve skutečnosti však situace s generováním video signálu není jednoduše řešitelná takovým způsobem, jaký byl popsán v předchozí kapitole, a to z jednoho prostého důvodu – osmibitový mikrořadič ATmega644 má totiž pouze čtyři kilobajty RAM, což pro alokaci framebufferu s nějakým užitečným rozlišením nedostačuje. Ostatně i u většiny domácích osmibitových mikropočítačů se velikost framebufferu pohybovala v hodnotách zhruba od šesti do šestnácti kilobajtů, a to se navíc většinou jednalo o grafické režimy s poměrně malým rozlišením a/nebo menším počtem barev než 256 (většinou bylo současně zobrazitelných osm nebo šestnáct barev, i když se počet barev dal díky různým trikům zvyšovat).
Obrázek 9: Grafický režim multicolor osmibitových domácích mikropočítačů Commodore C64 je téměř ideální pro tvorbu statických obrázků.
Pro připomenutí jsou v následující tabulce vypsány grafické režimy vybraných osmibitových počítačů, s nimiž jsme se již seznámili v některém z předchozích dílů tohoto seriálu. Kvůli stručnosti nejsou v tabulce uvedeny všechny vlastnosti jednotlivých grafických režimů, například způsob použití barvových atributů (ZX Spectrum), zvýšení počtu barev s využitím FLI (C64), použití horizontálního přerušení (Atari XL/XE), spritů atd.:
Typ počítače | Šířka | Výška | Počet barev | Framebuffer | Poznámka |
---|---|---|---|---|---|
ZX Spectrum | 256 | 192 | 8(16) | 6912 B | 6144 B bitmapa+768 B atributy |
Atari XL/XE | 320 | 192 | 2 | 7680 B | GR.8+16 („hi-res“) |
Atari XL/XE | 160 | 192 | 4 | 7680 B | GR.15+16 |
Atari XL/XE | 80 | 192 | 16 | 7680 B | režim čipu GTIA |
Commodore C64 | 320 | 200 | 16 | 9000 B | 8000 B bitmapa+1000 B atributy |
Commodore C64 | 160 | 200 | 16 | 9500 B | 8000 B bitmapa+1000 B atributy+500 B Color RAM |
PMD-85 (ČSSR) | 288 | 256 | 3(5) | 12288 B | barva specifikována pro šestice pixelů |
IQ-151 (ČSSR) | 64 | 64 | 2 BW | 2048 B | modul VIDEO 64 – pseudografika |
IQ-151 (ČSSR) | 512 | 256 | 2 BW | 16384 B | modul GRAFIK |
Obrázek 10: Kombinace několika grafických režimů ve hře International Karate na domácím osmibitovém mikropočítači Atari XL či Atari XE.
6. Základní grafický režim herní konzole Uzebox
Vzhledem k tomu, že kapacita operační (datové) paměti osmibitového mikrořadiče ATmega644 skutečně nedostačovala pro alokaci dostatečně velké paměťové oblasti pro framebuffer, museli konstruktéři herní konzole Uzebox přijít s jiným řešením. Nakonec zvolili řešení, které je sice z dnešního pohledu poměrně neobvyklé, ale v žádném případě ne nové – pravděpodobně poprvé se s podobnou technologií mohli běžní uživatelé seznámit u slavné herní konzole Atari 2600, kterou jsme si již v tomto seriálu taktéž popsali. V čem toto řešení spočívá? Namísto toho, aby mikrořadič při generování video signálu, tj. při posílání osmibitových vzorků na port C, jednoduše četl barvy jednotlivých pixelů z framebufferu, jsou tyto barvy průběžně dopočítávány. Mikrořadič však ve většině situací nemá dostatečný výpočetní výkon na to, aby dokázal pro každý pixel provést nějaký složitý výpočet, ovšem v těch několika taktech, které jsou pro zobrazení každého pixelu k dispozici, stihne přečíst několik bajtů z paměti dat (SRAM) a/nebo paměti Flash.
Obrázek 11: Hra Frogger ve verzi pro herní konzoli Atari 2600 vypadá – s ohledem na schopnosti této konzole – velmi pěkně.
A právě na kombinaci čtení informací z datové paměti (o kapacitě 4 kB) a paměti Flash (o kapacitě plných 64 kB) spočívá princip činnosti prakticky všech grafických režimů, které herní konzole Uzebox podporuje. Nejlépe si činnost mikrořadiče při generování videa vysvětlíme na původním grafickém režimu, který se dnes nazývá Mode 1. V tomto grafickém režimu je možné zobrazit rastrový obrázek o rozlišení 240×224 pixelů v 256 barvách, což teoreticky představuje velikost framebufferu 240×224=52 kB. Ve skutečnosti je však pro tento grafický režim v paměti dat vyhrazena oblast o kapacitě pouze 40×28×2=2240 bajtů. V této oblasti však nejsou uloženy přímo barvové informace o jednotlivých pixelech, ale ukazatele do oblasti paměti Flash (popř. i do oblasti datové paměti), v nichž jsou uloženy bitmapy „dlaždic“ (tile(s)), přičemž každá dlaždice má rozlišení 6×8 pixelů (což odpovídá 48 bajtům). Vzhledem k tomu, že v paměti dat jsou uloženy ukazatele na 40×28 dlaždic o rozlišení 6×8 pixelů, je výsledné rozlišení celého obrázku skutečně rovno 40×6=240 pixelům na šířku a 28×8=224 pixelům na výšku obrazu. Předností tohoto grafického režimu je snadná manipulace s obrázkem – postačuje měnit hodnoty oněch zmíněných 2240 bajtů, což je snadné a rychlé, nevýhodou pak relativně vysoké zatížení mikrořadiče při generování obrazu (další nevýhoda je zřejmá – je poměrně složité měnit hodnoty jednotlivých pixelů, což však paradoxně u většiny retro her není na škodu).
Obrázek 12: Pro porovnání s předchozím screenshotem – implementace hry Frogger na herní konzoli Uzebox.
7. Další podporované grafické režimy herní konzole Uzebox
Kromě původního grafického režimu Mode 1 byly postupem času navrženy a implementovány i další grafické režimy, které se od sebe odlišují jak rozlišením výsledného rastrového obrázku, tak i velikostí jednotlivých dlaždic, kapacitou alokované datové paměti, podporou scrollingu (žádný, vertikální, horizontální, oběma směry) a v neposlední řadě i podporou spritů. Většina grafických režimů je založena na principu dlaždic, podobně jako tomu bylo u původního grafického režimu (Mode 1), protože právě tento způsob zobrazení grafiky efektivně využívá jak možností SRAM (malá kapacita, ovšem s možností dynamické změny obsahu), tak i pamětí Flash (relativně velká kapacita, zatímco obsah je předprogramovaný při vzniku hry). Jednou z výjimek je Mode 8, což je klasický bitmapový grafický režim s rozlišením 120×96 pixelů. Ovšem vzhledem k omezené velikosti paměti SRAM bylo v tomto režimu nutné snížit počet barev na 4, což znamená, že jeden pixel je uložen ve dvou bitech. Celková kapacita alokované datové paměti v tomto režimu se vypočte snadno: 120×96×2/8=2880 bajtů.
Obrázek 13: Hra Tetris ve verzi pro herní konzoli Uzebox využívá vlastností režimu 1 (Mode 1).
Velmi často se při implementaci her na konzoli Uzebox používá grafický režim Mode 3, který nabízí stejné rozlišení jako Mode 1 (240×224 pixelů), ovšem jeho interní struktura je poněkud odlišná. První odlišnost spočívá v tom, že v paměti dat (SRAM) je umístěna oblast o velikosti pouze 32×32=1024 bajtů. Na rozdíl od režimu 1 však v této oblasti nejsou uloženy přímé ukazatele na bitmapy dlaždic, ale „pouze“ osmibitové indexy dlaždic, kterých tak může být až 256, což je při dané kapacitě paměti Flash více než dostatečné. Každá dlaždice má v tomto režimu rozlišení 8×8 pixelů, takže teoretické rozlišení výsledného obrázku je 256×256 pixelů. Ve skutečnosti se však z matice 32×32 dlaždic využívá pouze submatice o rozměrech 30×28, takže výsledné rozlišení je 240×224 pixelů (proč jsou dlaždice uloženy ve větší matici je pravděpodobně zřejmé – pro co největší urychlení výpočtů při generování videa). Ovšem režim Mode 3 navíc nabízí i tři další vlastnosti: scrolling celé obrazovky, scrolling části obrazovky (ve zbylé části může být například zobrazeno skóre a/nebo počet zbývajících životů) a především podporu spritů.
Obrázek 14: Úvodní obrazovka hry Space Invaders používá grafický režim 3 (Mode 3).
8. Podpora pro zobrazení spritů
O významu termínu sprite jsme se již zmínili při popisu grafického subsystému osmibitových domácích mikropočítačů Atari XL/XE a Commodore C64. Jednalo se o bitmapy s poměrně malým rozlišením (24×21 pixelů na C64, 8×256 pixelů na osmibitových Atari) a většinou omezeným počtem barev, které mohly být zobrazeny na libovolném místě obrazovky nezávisle na zobrazeném pozadí, které se pro odlišení nazývalo playfield. Pokud bylo zapotřebí spritem po obrazovce pohybovat, postačovalo změnit obsah některého řídicího registru, nebylo tedy nutné zdlouhavě přesouvat data ve framebufferu. Mezi další přednosti spritů patřila možnost definice jejich priority (tj. efektu, který nastane v případě, že jsou sprity zobrazeny na stejném místě obrazovky) a taktéž možnost detekce kolize spritů mezi sebou navzájem nebo kolize spritu s některou barvou pozadí (playfieldu). Informace o kolizi se většinou zapisovala do takzvaných kolizních registrů.
Obrázek 15: Původní verze hry Moon Patrol pro herní konzoli Atari 2600.
Zatímco na osmibitových domácích mikropočítačích byly sprity implementovány v některém specializovaném čipu (GTIA u osmibitových počítačů Atari a VIC-II u Commodore C64), musí být sprity na herní konzoli Uzebox realizovány programově. V případě grafického režimu Mode 3 mají sprity rozlišení 8×8 pixelů a mohou být umístěny kdekoli na obrazovce, tj. neplatí pro ně omezení stejná jako pro dlaždice tvořící pevnou matici. Sprity jsou zobrazovány takovým způsobem, že kernel herní konzole Uzebox nejdříve na základě aktuální souřadnice spritů zjistí, kolik dlaždic sprite ve skutečnosti překrývá (může se jednat o jednu, dvě či čtyři dlaždice podle toho, jestli je některá souřadnice spritu dělitelná osmi). Posléze kernel v paměti SRAM vytvoří datovou strukturu, do níž je sprite vykreslen oproti správnému pozadí (původnímu obsahu dlaždic). Kernel taktéž dokáže správně rozpoznat situaci, kdy se více spritů překresluje přes sebe, ovšem spotřeba paměti SRAM v tomto případě roste. Pro většinu her, které samy nespotřebují větší množství SRAM (kam se ukládá dosažené skóre, počet zbývajících životů, pozice hráče ale i zásobník), je možné tímto způsobem na jednu obrazovku vykreslit cca 20 spritů.
Obrázek 16: Hra Moon Patrol ve verzi pro herní konzoli Uzebox.
9. Odkazy na Internetu
- Uzebox pages: introduction
http://belogic.com/uzebox/howitsmade.htm - Uzebox pages: hardware description
http://belogic.com/uzebox/hardware.htm - Uzebox pages: Video primer
http://belogic.com/uzebox/video_primer.htm - Uzebox pages: schemas
http://belogic.com/uzebox/downloads.htm - AVRFreaks Wiki
http://www.avrfreaks.net/wiki/index.php/Main_Page - Atmel AVR 8– and 32-bit
http://www.atmel.com/products/avr/ - tinyAVR
http://www.atmel.com/dyn/products/devices.asp?category_id=163&family_id=607&subfamily_id=791 - AT-Mini
http://www.mikroe.com/eng/products/view/649/at-mini-board/ - Arduino
http://www.arduino.cc/ - AVR Microcontroller
http://www.engineersgarage.com/articles/avr-microcontroller - Atmel AVR – Wikipedia
http://en.wikipedia.org/wiki/Atmel_AVR - AVR instruction set
http://avr.hw.cz/architektura/instukce.html - Porovnání jednotlivých procesorů AVR
http://avr.hw.cz/architektura/porovnani.html - 68HC11 Instruction Set
http://www.cs.uaf.edu/2007/fall/cs441/proj1notes/sawyer/inst.html - 68HC11 OpCode Map
http://home.earthlink.net/~tdickens/68hc11/68hc11_opcode_map.html - A Simple Robot Using the 68HC11 Processor
http://home.earthlink.net/~tdickens/68hc11/trp2/trp2.html - 68HC11 C-Compiler (Imagecraft)
http://microcontrollershop.com/product_info.php?products_id=188 - GNU Development Chain for 68HC11&68HC12
http://www.gnu.org/software/m68hc11/ - GNU C for 68HC11 – documentation
http://www.gnu.org/software/m68hc11/m68hc11_doc.html - The P-Brain tm Microcontroller Kit
http://www.futurebots.com/brain.htm - Wikipedia: Motorola 68HC05
http://en.wikipedia.org/wiki/Motorola_68HC05 - Wikipedia: Freescale 68HC08
http://en.wikipedia.org/wiki/68HC08 - Wikipedia: Freescale 68HC11
http://en.wikipedia.org/wiki/68HC11 - Wikipedia: Freescale 68HC12
http://en.wikipedia.org/wiki/Freescale_68HC12 - HC05 Processor Families
http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=01624684498633 - HC08 Processor Families
http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=01624684497663 - Digital Core Design 68HC08 – HDL IP Core
http://www.dcd.pl/acore.php?idcore=82 - Freescale 68HC11
http://www.freescale.com/webapp/sps/site/taxonomy.jsp?nodeId=01624684498635 - Lifecycle of a CPU:
http://www.cpushack.net/life-cycle-of-cpu.html - Most wanted CPU of the world:
http://www.cpu-galaxy.at/CPU/Intel%20CPU/3002–8008/4004%20Grey.jpg - Wikipedia: 6502:
http://en.wikipedia.org/wiki/6502 - The Western Design Center, Inc.:
http://www.westerndesigncenter.com/ - Apple II History Home:
http://apple2history.org/ - www.6502.org:
http://www.6502.org/ - Stránky firmy Microchip Technology
http://www.microchip.com/ - Výběr z různých modelů (osmibitových) mikrořadičů PIC
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2661 - Řada (rodina) osmibitových mikrořadičů PIC 10
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1009&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 12
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1001&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 14
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1008&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 16
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1002&mid=10&lang=en&pageId=74 - Další výběr z různých modelů mikrořadičů PIC
http://www.microchip.com/maps/microcontroller.aspx - PIC microcontroller (Wikipedia EN)
http://en.wikipedia.org/wiki/PIC_microcontroller - Mikrokontrolér PIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Mikrokontrolér_PIC - FLASHFORTH for the PIC18F and the dsPIC30F
http://flashforth.sourceforge.net/ - FlashForth
http://www.sourceforge.net/projects/flashforth - Free Pic software tools
http://softwarepic.50webs.com/freesoft.html - What is Amicus?
http://www.picbasic.org/proton_lite.php - Amicus FAQ
http://www.myamicus.co.uk/faq.php?s=2e8d12e7f4c23e775776f4916876354b& - Microcontrollers development tools
http://www.gnupic.dds.nl/ - gpsim (Wikipedia EN)
http://en.wikipedia.org/wiki/Gpsim - gpsim home page
http://gpsim.sourceforge.net/gpsim.html - The FreeRTOS Project
http://www.freertos.org/ - FreeRTOS (Wikipedia)
http://en.wikipedia.org/wiki/FreeRTOS - Serial EEPROM (93C46 / 93CS46) Routines
http://www.pjrc.com/tech/8051/serial-eeprom.html - Great Microprocessors of the Past and Present (V 13.4.0)
http://jbayko.sasktelwebsite.net/cpu.html - SPI interface tutorial
http://www.best-microcontroller-projects.com/spi-interface.html - Serial Peripheral Interface Bus
http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus - EUSB to SPI bus Kit
http://www.eidusa.com/Electronics_Kits_EUSB_To_SPI_BUS.htm - SPI Block Guide V03.06, Freescale Semiconductor
http://www.freescale.com/files/microcontrollers/doc/ref_manual/S12SPIV3.pdf - What is SPI?
http://www.fpga4fun.com/SPI1.html - SPI – A simple implementation
http://www.fpga4fun.com/SPI2.html - Bit-banging
http://en.wikipedia.org/wiki/Bit-banging - Joint Test Action Group
http://en.wikipedia.org/wiki/JTAG - I2C
http://en.wikipedia.org/wiki/I2C - Seriál o programovacím jazyce Forth:
seriál o programovacím jazyce Forth - Display Data Channel
http://en.wikipedia.org/wiki/Display_Data_Channel - I2 Background
http://www.microport.tw/blognew.php?blog_no=7#theory - PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
Microchip Technology Inc.
http://www.microchip.com