Obsah
1. Velký, ale poněkud utajený svět čtyřbitových mikrořadičů
2. Čtyřbitové mikrořadiče Epson S1C60
3. Vstupní a výstupní porty čipu S1C60N05
4. Piny použité pro řízení LCD
5. Programátorský model mikrořadiče: sada registrů
7. Struktura programové paměti ROM
8. Struktura datové paměti RAM
9. Speciální paměť používaná při řízení displeje
10. Instrukční soubor mikrořadičů soubor S1C60
11. Aritmetické a logické instrukce
14. Instrukce typu Load & Store
1. Velký, ale poněkud utajený svět čtyřbitových mikrořadičů
Prozatím jsme se v seriálu o architekturách počítačů zabývali některými již nevyráběnými čtyřbitovými mikrořadiči. Ovšem svět 4bitových MCU je ve skutečnosti poměrně rozsáhlý a živý, neboť tyto čipy mají mnohdy minimální spotřebu a proto je lze používat i v takových aplikacích, kde se vyžaduje dlouhodobý běh na baterie (teploměry, cyklopočítače, termostaty, klíčky k automobilům…). Jedním z důvodů, proč se s těmito čipy nesetkáme například v dnes tak populárním segmentu IoT je ten, že s ohledem na co nejnižší cenu a spotřebu je (bylo) mnoho těchto MCU nabízeno jen v konfiguraci s pamětí ROM, tj. tato paměť se inicializovala již při výrobě čipu poslední maskou. Tím pádem jsou tyto mikrořadiče použity skutečně tam, kde se počítá s velkými výrobními sériemi, aby se aplikace masky ROM vůbec vyplatila (navíc se poněkud komplikuje vývoj). Jen pro ilustraci jsou v následující tabulce vypsány známé čtyřbitové MCU (zdroj: https://en.wikichip.org/wiki/4-bit_architecture):
Výrobce | Čip |
---|---|
Atmel | MARC4 |
AMI | S2000 |
Epson | S1C60 |
Epson | S1C63 |
Fujitsu | MB88200 |
Fujitsu | MB8840/400 |
Fujitsu | MB8850/500 |
Hitachi | HD404720 |
Hitachi | HMCS40 |
Hitachi | HMCS400 |
ITT | 7150 |
National | MAPS |
National | COPS I |
National | COPS II |
NEC | 17K |
NEC | μCOM-4 |
NEC | μPD751 |
NEC | μPD707 |
NEC | μPD7500 |
NEC | μPD75000 |
Matsushita | MN1400 |
Matsushita | MN1500 |
Matsushita | MN1700 |
Mitsubishi | MELPS 4 |
Mitsubishi | M50430/440 |
Mitsubishi | M50460/560 |
Mitsubishi | M5072/M5076 |
Mitsubishi | M5090 |
MMI | 5700 |
OKI | OLMS-40/50/60/64/65 |
OKI | OLMS-63K |
OKI | OLMS-64K |
Rockwell | PPS-4/1 |
Sanyo | LC65 |
Sanyo | 66×x |
Sanyo | LM64×x |
Sharp | SM |
Sony | SPC500 |
TI | TMS1000 |
Toshiba | T3400 |
Toshiba | TLCS-42 |
Toshiba | TLCS-43 |
Toshiba | TLCS-46A |
Toshiba | TLCS-47 |
Toshiba | TLCS-470 |
WD | CR1872 |
WD | WD4200 |
2. Čtyřbitové mikrořadiče Epson S1C60
Mezi často používané čtyřbitové mikrořadiče patří především řada Epson S1C60. Ta je zvláštní tím, že zatímco paměť RAM má slova široká čtyři bity, paměť ROM s programovým kódem používá slova o šířce dvanácti bitů (všechny instrukce mají tuto šířku). Jedná se o čipy, u nichž se přímo počítá s tím, že k nim budou připojeny „hloupé“ LCD, tedy displeje bez vlastního řadiče (ostatně samotný řadič „chytrých“ LCD by byl pravděpodobně stejně složitý, jako celý mikrořadič S1C60). Proto také tyto mikrořadiče obsahují poměrně velké množství vstupních a výstupních pinů. Kapacita operační paměti RAM dosahuje hodnot od 80×4 bity až po relativně vysoké číslo 832×4 bity. Kapacita ROM (pravděpodobně jsou dostupné jen čipy s ROM tvořenou maskou) je 1536×12 bitů až 4096×12 bitů v základní sadě. Podívejme se nyní na základní parametry těchto čipů:
Čip | RAM | ROM | Hodiny (hi-speed) | Hodiny (low-speed) | Displej | Vstupní port | Výstupní port | I/O port |
---|---|---|---|---|---|---|---|---|
S1C60N05 | 80×4 | 1536×12 | × | 32768 Hz | 20×4/3/2/1 | 4 piny | 4 piny | 4 piny |
S1C60L05 | 80×4 | 1536×12 | × | 32768 Hz | 20×4/3/2/1 | 4 piny | 4 piny | 4 piny |
S1C60N08 | 832×4 | 4096×12 | × | 32768 Hz | 48×4/3/2/1 | 9 pinů | 8 pinů | 8 pinů |
S1C60L08 | 832×4 | 4096×12 | × | 32768 Hz | 48×4/3/2/1 | 9 pinů | 8 pinů | 8 pinů |
S1C60A08 | 832×4 | 4096×12 | 500 kHz | 32768 Hz | 48×4/3/2/1 | 9 pinů | 8 pinů | 8 pinů |
S1C60N16 | 256×4 | 4096×12 | × | 32768 Hz | 38×4/3/2/1 | 5 pinů | 8 pinů | 8 pinů |
S1C60L16 | 256×4 | 4096×12 | × | 32768 Hz | 38×4/3/2/1 | 5 pinů | 8 pinů | 8 pinů |
S1C60A16 | 256×4 | 4096×12 | 1 MHz | 32768 Hz | 38×4/3/2/1 | 5 pinů | 8 pinů | 8 pinů |
Typická konfigurace, kde tento čip najdete: digitální teploměr s jedním interním a jedním externím čidlem, LCD dokáže zobrazit dvě teploty (vnější, vnitřní) + několik dalších symbolů na sedmisegmentovém displeji, k dispozici je i piezoelektrický reproduktor, který například oznamuje bod mrazu a teploměr se ovládá několika tlačítky s programově řízenou detekcí zákmitů. Taktéž je možné zobrazit minimální či maximální dosažené teploty a čas.
Poznámka: nejnižší napájecí napětí vyžaduje čip S1C60L08, a to konkrétně pouze 0,9V při maximálním odběru proudu 2,2 µA (do toho se ale nepočítá řízení LCD).
3. Vstupní a výstupní porty čipu S1C60N05
Z tabulky uvedené v předchozí kapitole vyplývá, že nejmenším čipem z celé série S1C60 je mikrořadič s označením S1C60N05. Pojďme si nyní tento mikrořadič popsat podrobněji. Celý čip se dodává v pouzdru se šedesáti vývody. Kromě pinů určených pro napájení samotného mikrořadiče popř. připojeného LCD (ten může mít až tři odlišná napájecí napětí) nalezneme na pouzdru tyto piny, které je možné programově ovládat:
- Čtyři vstupní piny označované K00 až K03. Změna stavu libovolného vstupního pinu může podle nastavení vygenerovat přerušení (přerušovací rutinu).
- Čtyři výstupní piny označované R00 až R03. Na vývody R00 nebo R01 je možné v případě potřeby připojit piezoelektrický reproduktor a poslat na tyto piny zvolenou frekvenci 2kHz nebo 4kHz.
- Čtyři vstupně/výstupní piny P00 až P03. Jejich funkce se přepíná bitovým příznakem IOC v konfiguračním registru (jinými slovy jsou buď všechny tyto piny vstupní nebo všechny výstupní).
- Jeden vstupní pin TEST. Tento pin není součástí žádného portu a je používán při testování čipu výrobcem (tím pádem není přesný popis chování k dispozici).
- Ovládání LCD přes piny COM0 až COM3.
- Přímé ovládání segmentů LCD přes piny SEG0 až SEG19 (další mikrořadiče z řady S1C60 mohou ovládat i displeje s větším množstvím segmentů).
- Analogové rozhraní představované piny ADOUT, RS, TH1, TH2 a CS.
Poznámka: vzhledem k tomu, že piezzo reproduktor je připojen na generátor signálu o frekvenci 2kHz nebo 4kHz, je možné tento čip relativně snadno identifikovat, například v digitálních teploměrech, radiobudících atd. (samozřejmě se nejedná o stoprocentní test…)
4. Piny použité pro řízení LCD
Pro řízení displeje (LCD) se používají dvě skupiny výstupních pinů. Opět se přidržme nejmenšího čipu S1C60N05, který konstruktérům dává k dispozici tyto piny:
- COM0 až COM3
- SEG0 až SEG19
S použitím těchto pinů je možné automaticky řídit až 80 segmentů, popř. v závislosti na typu displeje menší počet segmentů podle toho, jak je zkonstruována maska displeje (jak se vybírají „řádky“ a „sloupce“, což ovšem u displejů se segmenty nutně neznamená, že se používá matice pixelů):
Označení | Výběr segmentů signály | Maximální počet ovládaných segmentů |
---|---|---|
1/4 | COM0–3 | 80 (20 × 4) |
1/3 | COM0–2 | 60 (20 × 3) |
1/2 | COM0–1 | 40 (20 × 2) |
Poznámka: nejedná se o čistě digitální výstupy, neboť se – opět v závislosti na konfiguraci a použitém LCD – generuje signál s úrovněmi napětí získanými ze vstupních pinů Vdd, VL1, VL2, VL3.
5. Programátorský model mikrořadiče: sada registrů
Základní programátorský model mikrořadičů S1C60, tedy sada přímo či nepřímo dostupných registrů, je vypsán v následující tabulce:
Registr | Šířka | Rozdělen na | Celé jméno |
---|---|---|---|
PCS | 8 | × | Program counter step |
PCP | 4 | × | Program counter page |
NPP | 4 | × | New page pointer |
SP | 8 | SPH+SPL | Stack pointer |
IX | 12 | XP+XH+XL | Index register X |
IY | 12 | YP+YH+YL | Index register Y |
RP | 4 | × | Register pointer |
A | 4 | × | General register A |
B | 4 | × | General register B |
Z pohledu programátora jsou nejdůležitější registry A, B, IX a IY. Registry A a B můžeme považovat za běžné pracovní registry či akumulátory, které se používají ve všech ALU operacích. Registry IX a IY slouží pro adresování operandů v paměti, takže je můžeme považovat za index registry. Ve skutečnosti se vždy jedná o trojici, například IX=XP+XH+XL, přičemž každý z těchto registrů XP (page), XH (high) XL (low) má šířku čtyři bity. U malých čipů se většinou XP/YP nepoužívá, protože je k dispozici jen jedna stránka paměti.
6. Bitové příznaky
Skupina bitových příznaků je pojata poměrně minimalisticky. V průběhu výpočtů mohou být nastavovány pouze dva příznaky Carry a Zero, které zde mají běžný význam. Navíc je možné pracovat s příznaky (či spíše přesněji řečeno s konfiguračními přepínači) Decimal (řídí aritmetické operace) a Interrupt (povoluje a zakazuje přerušení):
Označení | Příznak | Význam |
---|---|---|
I | Interrupt flag | příznak přerušení (zákaz/povolení) |
D | Decimal flag | režim výpočtů (desítkový/šestnáctkový) |
Z | Zero flag | příznak nulového výsledku |
C | Carry flag | příznak přenosu |
7. Struktura programové paměti ROM
U nejmenších mikrořadičů řady S1C60 má programová paměť ROM kapacitu 1536×12 bitů, u větších čipů pak 4096×12 bitů. Šířka slova nebyla zvolena náhodně, protože každá instrukce má šířku přesně oněch dvanáct bitů. Paměť je rozdělena na stránky o velikosti 256 slov, takže například u čipu S1C60N05 bude mít šest stránek (6×256×12).
Při adresování instrukcí tvořících program se používá dvojice registrů PCP+PCS. Registr PCP obsahuje aktuální stránku a má šířku 4 bitů, registr PCS pak obsahuje index instrukce v rámci jedné stránky. Teoreticky je tak možné použít 4 bity + 8 bitů = 12 bitů adresy, tedy 4096 dvanáctibitových slov. U větších čipů se pak počítá s dalším rozšířením o jednobitový registr PCB (Program Counter Bank), který adresovatelnou paměť dále rozšiřuje na 8192 dvanáctibitových slov (to však neplatí pro mini-mikrořadiče popisované dnes).
8. Struktura datové paměti RAM
Datová paměť RAM je rozdělena na stránky, přičemž každá stránka má maximální velikost 256 nibblů. U nižších řad čipů s kapacitou RAM 80×4 bity či 256×4 bity je ovšem použita jen nultá stránka paměti, pouze u čipů s RAM o kapacitě 832×4 bity je stránek více (konkrétně jsou čtyři, tři mají kapacitu 256 nibblů, poslední jen 64 nibblů). Část paměti je přitom obsazena zásobníkem.
Pro adresování se používají osmibitové registry X a Y, které jsou u větší RAM s více stránkami doplněné o čtyřbitové stránkové registry XP a YP (P=page). Pokud se používá nepřímá adresace přes SP, musí se dbát na to, že tento registr je osmibitový, což omezuje velikost zásobníku na 256 čtyřbitových slov. U mnoha operací se ovšem obsadí hned 3 slova (12 bitů) – návratové adresy atd.
9. Speciální paměť používaná při řízení displeje
Pro řízení displeje (LCD) je použita speciální oblast paměti, která má typickou velikost 32×4 bity a je zcela oddělena od RAM (nezapočítává se tedy do uvedené kapacity RAM). Tato oblast je dostupná pouze pro zápis. Čtení je prováděno zcela automaticky řadičem displeje, který samozřejmě musí být správně nakonfigurován takovým způsobem, aby bylo čtení synchronizováno s nastavením výstupních pinů COM0 až COM3 a SEG0 až SEG19.
Poznámka: zmíněných 32 nibblů je u čipů S1C60N05 namapováno na adresy 0×90 až 0×af.
10. Instrukční soubor mikrořadičů soubor S1C60
V následujících pěti kapitolách si popíšeme většinu instrukcí tvořících instrukční soubor (ISA) mikrořadičů řady S1C60. Některé dále popisované instrukce jsou pouze aliasy na instrukce jiné. Všechna instrukční slova mají konstantní šířku dvanácti bitů a každé slovo se rozděluje na operační kód o proměnlivé šířce a na operand (pochopitelně taktéž o proměnlivé šířce). Existuje celkem šest formátů instrukcí zmíněných v tabulce umístěné pod tímto odstavcem:
Operační kód | Operand | Celkově | Příklad instrukce |
---|---|---|---|
4 bity | 8 bitů | 12 bitů | CALL s |
6 bitů | 6 bitů | 12 bitů | ADD r, i |
7 bitů | 5 bitů | 12 bitů | PSET p |
8 bitů | 4 bity | 12 bitů | SET F,i |
10 bitů | 2 bity | 12 bitů | PUSH r |
12 bitů | 0 bitů | 12 bitů | INC X |
Příkladem prvního formátu je instrukce CALL s pro skok do podprogramu. Ta vypadá následovně:
+------------+-------------+-------------+ | 0 1 0 0 | s7 s6 s5 s4 | s3 s2 s1 s0 | +------------+-------------+-------------+
Instrukce ADD r, i dokáže přičíst čtyřbitovou konstantu k vybranému registru (r1 a r2 je selektor registr):
+------------+-------------+-------------+ | 1 1 0 0 | 0 0 r1 r0 | i3 i2 i1 i0 | +------------+-------------+-------------+
11. Aritmetické a logické instrukce
Sada aritmetických a logických instrukcí obsahuje prakticky všechny očekávatelné instrukce (asi nikdo nebude očekávat, že na takto malých čipech bude násobička nebo dělička…). Zajímavé je, že prakticky všechny instrukce jako svůj první operand akceptují registry A, B či paměťové buňky adresované přes IX a IY. Druhým operandem je buď čtyřbitová konstanta nebo jiný registr/paměťová buňka. Výjimkou jsou poslední dvě instrukce, které přímo v instrukčním slovu obsahují adresu svého operandu:
Instrukce | Stručný popis |
---|---|
ADD r,i | součet registr+konstanta |
ADD r,q | součet dvou registrů |
ADC r,i | součet registr+konstanta+Carry |
ADC r,q | součet dvou registrů+Carry |
SUB r,i | rozdíl registr-konstanta |
SUB r,q | rozdíl dvou registrů |
SBC r,i | rozdíl registr-konstanta-Carry |
SBC r,q | rozdíl dvou registrů-Carry |
AND r,i | operace registr AND konstanta |
AND r,q | operace registr AND registr |
OR r,i | operace registr OR konstanta |
OR r,q | operace registr OR registr |
XOR r,i | operace registr XOR konstanta |
XOR r,q | operace registr XOR registr |
NOT r | negace registru |
INC X | zvýšení hodnoty index registru IX |
INC Y | zvýšení hodnoty index registry IY |
INC SP | zvýšení hodnoty registru SP |
DEC SP | snížení hodnoty registru SP |
INC Mn | zvýšení hodnoty nepřímo adresované paměťové buňky |
DEC Mn | snížení hodnoty nepřímo adresované paměťové buňky |
12. Bitové rotace a porovnání operandů
Existují dvě instrukce pro bitové rotace. Obě instrukce vždy pracují i s příznakem Carry a vzhledem k tomu, že vstupním operandem je „registr“ (ve smyslu, jak ho chápeme u S1C60), může se rotovat pracovní registr A, B, popř. paměť adresovaná přes IX či IY. Totéž platí i pro dvě operace pro porovnání následované operace pro AND bez uložení výsledků (u jiných procesorů se tato instrukce jmenuje TEST). Navíc poslední instrukce dokáže porovnat libovolný „registr“ s jiným „registrem“, tedy i dvě paměťové buňky, z nichž jedna je adresována přes IX a druhá přes IY:
Instrukce | Stručný popis |
---|---|
RCL r | rotace vybraného registru doleva přes příznak Carry (rotuje se tedy pět bitů) |
RRC r | rotace vybraného registru doprava přes příznak Carry (rotuje se tedy pět bitů) |
CP r, immed | porovnání vybraného registru se čtyřbitovou konstantou a nastavení příznaků |
CP r, q | porovnání dvou vybraných registrů a nastavení příznaků |
FAN r, immed | logické AND vybraného registru se čtyřbitovou konstantou a nastavení příznaků |
FAN r, q | logické AND dvou vybraných registrů a nastavení příznaků |
13. Skoky
Instrukce provádějící skoky můžeme rozdělit do několika kategorií. Nalezneme zde nepodmíněný skok, dále čtveřici podmíněných skoků provedených či neprovedených na základě testu příznakových bitů Carry a Zero, dále nepřímý skok na adresu uloženou ve dvojici registrů A+B, skoky do podprogramu a návraty z podprogramů. Poslední instrukce provede návrat z podprogramu a současně ještě uloží konstantu na adresu umístěnou v registru X:
Instrukce | Stručný popis |
---|---|
JP s | nepodmíněný skok |
JP C,s | podmíněný skok pokud Carry=1 |
JP NC,s | podmíněný skok pokud Carry=0 |
JP Z,s | podmíněný skok pokud Zero=1 |
JP NZ,s | podmíněný skok pokud Zero=0 |
JPBA | nepřímý skok na adresu umístěnou v registrech A+B |
CALL s | skok do podprogramu |
CALZ s | skok do podprogramu na nulté stránce |
RET | návrat z podprogramu |
RETS | dtto, ale navíc zvýšení PC a 1 (přeskočí se další instrukce ve volajícím kódu) |
RETD e | návrat z podprogramu s výsledkem uloženým do paměti adresované X |
14. Instrukce typu Load & Store
Největší skupina instrukcí slouží pro načtení či naopak uložení operandů do operační paměti. Při adresování operandů se používají index registry IX a IY. Pro naplnění adres do těchto registrů (každý je rozložen do trojice XP+XH+XL) se používá prvních 14 instrukcí z následující tabulky. Nejuniverzálnější instrukcí je dále zmíněná instrukce LD, která dokáže pracovat s registry A, B, paměťovou buňkou (IX), (IY) i čtyřbitovou konstantou. Proto také tato instrukce nahrazuje neexistující instrukci ST (store):
Instrukce | Stručný popis |
---|---|
LD X, e | načtení osmibitové konstanty do registru X |
LD XP, r | přesun čtyřbitového operandu do registru XP |
LD XH, r | přesun čtyřbitového operandu do registru XH |
LD XL, r | přesun čtyřbitového operandu do registru XL |
LD r, XP | přesun čtyřbitového operandu z registru XP |
LD r, XH | přesun čtyřbitového operandu z registru XH |
LD r, XL | přesun čtyřbitového operandu z registru XL |
LD Y, e | načtení osmibitové konstanty do registru Y |
LD YP, r | přesun čtyřbitového operandu do registru YP |
LD YH, r | přesun čtyřbitového operandu do registru YH |
LD YL, r | přesun čtyřbitového operandu do registru YL |
LD r, YP | přesun čtyřbitového operandu z registru YP |
LD r, YH | přesun čtyřbitového operandu z registru YH |
LD r, YL | přesun čtyřbitového operandu z registru YL |
LD r, i | instrukce pro načtení operandu do registru, s případným nepřímým adresováním (více variant) |
LD r, q | instrukce pro načtení operandu do registru, s případným nepřímým adresováním (více variant) |
LDPX | uložení konstanty na adresu z registru IX, zvýšení IX o 1 |
LDPY | uložení konstanty na adresu z registru IY, zvýšení IY o 1 |
PUSH | uložení konstanty, příznakových bitů či registru na zásobník |
POP | obnovení konstanty, příznakových bitů či registru ze zásobníku |
15. Práce s příznakovými bity
Poslední skupina instrukcí, se kterou se v dnešním článku seznámíme, je tvořena deseti instrukcemi určenými pro nastavení či naopak vynulování příznakových bitů. Prvních osm instrukcí nastaví nebo vynuluje vybraný bit Carry, Zero, Decimal či Interrupt, další dvě instrukce pracují s bitovou maskou (čtyř bitů) a mohou tak současně nastavit či vynulovat vybranou skupinu příznakových bitů:
Instrukce | Stručný popis |
---|---|
SCF | nastavení Carry=1 |
RCF | vynulování Carry=0 |
SZF | nastavení Zero=1 |
RZF | vynulování Zero=0 |
SDF | nastavení Decimal=1 |
RDF | vynulování Decimal=0 |
EI | nastavení Interrupt=1 (a současně povolení přerušení) |
DI | vynulování Interrupt=0 (a současně zakázání přerušení) |
SET F,i | nastavení vybraných příznaků (bitová maska) |
RST F,i | vynulování vybraných příznaků (bitová maska |
Poznámka: ve skutečnosti je například instrukce SET zakódována takto:
+------------+------------+------------+ | 1 1 1 1 | 0 1 0 0 |i3 i2 i1 i0 | +------------+------------+------------+
Asi vás tedy nepřekvapí, že instrukce SCF má následující operační kód – jinými slovy, že se jedná o instrukční alias k univerzální instrukci SET:
+------------+------------+------------+ | 1 1 1 1 | 0 1 0 0 | 0 0 0 1 | +------------+------------+------------+
Totéž samozřejmě platí i pro další instrukce z výše uvedené tabulky.
16. Odkazy na Internetu
- 4-bit architecture
https://en.wikichip.org/wiki/4-bit_architecture - S1C60 – Epson
https://en.wikichip.org/wiki/epson/s1c60 - S1C63 – Epson
https://en.wikichip.org/wiki/epson/s1c63 - 4-bit to 32-bit low power microcontrollers (Epson)
http://global.epson.com/products_and_drivers/semicon/products/micro_controller/ - 4-bit microcontrollers (Epson)
http://global.epson.com/products_and_drivers/semicon/products/micro_controller/4bit/ - High Performance 4bit (Epson)
http://global.epson.com/products_and_drivers/semicon/products/micro_controller/high4bit/ - S1C60 Family Products overview (PDF)
http://global.epson.com/products_and_drivers/semicon/products/micro_controller/pdf/spec_mcu_4bit.pdf - Zero-power Microcontrollers for Low-power and High-temperature Applications
http://en.wikichip.org/w/images/1/17/Atmel_MARC4_brochure.pdf - MARC4 Micro-Controller (Wikipedia)
https://en.wikipedia.org/wiki/MARC4_Micro-Controller - MARC4 – Atmel
https://en.wikichip.org/wiki/atmel/marc4 - MARC 4bit Microcontrollers Programmer's Guide
https://en.wikichip.org/w/images/4/44/MARC4_4-bit_Microcontrollers_Programmer%27s_Guide.pdf - MARC4 User's Guide qFORTH Compiler
https://en.wikichip.org/w/images/2/25/MARC4_User%27s_Guide_qFORTH_Compiler.pdf - Programovací jazyk Forth a zásobníkové procesory
http://www.root.cz/clanky/programovaci-jazyk-forth-a-zasobnikove-procesory/ - Seriál Programovací jazyk Forth
http://www.root.cz/serialy/programovaci-jazyk-forth/ - Programovací jazyk Factor
http://www.root.cz/clanky/programovaci-jazyk-factor/ - Grafický metaformát PostScript
http://www.root.cz/clanky/graficky-metaformat-postscript/ - PMOS
https://en.wikipedia.org/wiki/PMOS_logic - NMOS
https://en.wikipedia.org/wiki/NMOS_logic - CMOS
https://en.wikipedia.org/wiki/CMOS - Vacuum Fluorescent Display
https://en.wikipedia.org/wiki/Vacuum_fluorescent_display - Computer History Museum: TMS 1000 4-Bit microcontroller
http://www.computerhistory.org/collections/catalog/102711697 - Texas Instruments TMS1000 microcontroller family
http://www.cpu-world.com/CPUs/TMS1000/ - Invention History of Microcontroller
http://www.circuitstoday.com/microcontroller-invention-history - TMS1000 Series – TI
https://en.wikichip.org/wiki/ti/tms1000 - TMX1795 – TI
https://en.wikichip.org/wiki/ti/tmx1795 - Milton Bradley Microvision (U.S.) (1979, LCD, 9 Volt (1 or 2), Model# 4952)
http://www.handheldmuseum.com/MB/uVUS.htm - 8051 Microcontroller
http://www.circuitstoday.com/8051-microcontroller - 4-bit (computer architectures)
https://en.wikipedia.org/wiki/4-bit - TMS 1000 Data Manual
http://blog.kevtris.org/blogfiles/TMS_1000_Data_Manual.pdf - Considerations for 4-bit processing
http://www.embeddedinsights.com/channels/2010/12/10/considerations-for-4-bit-processing/ - Are you, or would you consider, using a 4-bit microcontroller?
http://www.embeddedinsights.com/channels/2010/11/24/are-you-or-would-you-consider-using-a-4-bit-microcontroller/ - MARC4 Micro-Controller
https://en.wikipedia.org/wiki/MARC4_Micro-Controller - The Texas Instruments TMX 1795: the (almost) first, forgotten microprocessor
http://www.righto.com/2015/05/the-texas-instruments-tmx-1795-first.html - O2 Homepage
http://www.the-nextlevel.com/odyssey2/ - Magnavox Odyssey2 (1978), Philips Videopac G7000 / C52 (1979)
http://www.mess.org/sysinfo:odyssey2 - The Video Game Critic's Odyssey 2 Reviews
http://videogamecritic.net/odd.htm - Computer Closet Collection: Magnavox Odyssey2
http://www.computercloset.org/MagnavoxOdyssey2.htm - PHILIPS Videopac C52
http://old-computers.com/museum/computer.asp?c=1060 - O2 Tech. Manual V.1.1 (PDF dokument)
http://www.atarihq.com/danb/files/o2doc.pdf - Magnavox Odyssey2
http://www.game-machines.com/consoles/odyssey2.php - Magnavox Odyssey2 (Wikipedia EN)
http://en.wikipedia.org/wiki/Odyssey2 - Magnavox Odyssey2 Games (Wikipedia EN)
http://en.wikipedia.org/wiki/List_of_Videopac_games