Dokončení popisu čtyřbitových mikrořadičů: hi-end řada Epson S1C63

25. 4. 2017
Doba čtení: 16 minut

Sdílet

Popis 4bitových mikrořadičů zakončíme čipy Epson S1C63. Jedná se poměrně výkonné mikrořadiče, které jsou určeny do těch zařízení, v nichž se používají LCD s větším množstvím segmentů, popř. maticové LCD.

Obsah

1. Dokončení popisu čtyřbitových mikrořadičů: hi-end řada Epson S1C63

2. Interní architektura jader S1C63

3. Konfigurace čtyřbitových mikrořadičů s jádry S1C63

4. Vstupní a výstupní piny, specializované vývody pro ovládání LCD

5. Programová paměť (ROM)

6. Datová paměť (RAM)

7. Programátorský model jader S1C63

8. Instrukční sada jader S1C63

9. Podporované adresní režimy

10. Aritmetické instrukce

11. Logické instrukce

12. Bitové rotace a logické posuny

13. Operace nad jednotlivými bity

14. Instrukce pro práci se zásobníkem

15. Instrukce typu Load & Store

16. Podmíněné a nepodmíněné skoky

17. Ostatní instrukce

18. Odkazy na Internetu

1. Dokončení popisu čtyřbitových mikrořadičů: hi-end řada Epson S1C63

Čtyřbitové mikrořadiče řady Epson S1C60, s nimiž jsme se seznámili minule, jsou určeny pouze do těch nejjednodušších zařízení vybavených LCD s několika jednotkami maximálně desítkami segmentů. Příkladem použití těchto čipů mohou být hodiny, teploměry a termostaty. Ovšem ve chvíli, kdy je nutné ovládat displeje s více segmenty popř. dokonce maticové displeje, je nutné sáhnout po přece jen výkonnějších mikrořadičích. A právě v této oblasti můžeme nalézt čipy S1C63, které sice částečně vychází z řady S1C60, ovšem v mnoha ohledech došlo k jejich vylepšení, která se týkají již zmíněných komplexnějších LCD, vyšších taktovacích frekvencí, rozšířené instrukční sady a v neposlední řadě také toho, že se unifikoval a zjednodušil systém adresování s použitím dvojice šestnáctibitových index registrů.

2. Interní architektura jader S1C63

Interní architektura mikrořadičů s jádry S1C63 je poměrně jednoduchá. Ústředním prvkem je čtyřbitová aritmeticko-logická jednotka, která na vstupu vybírá operandy z dvojice akumulátorů nazvaných A a B, popř. z konstanty načtené z paměti ROM nebo lze operand získat z datové paměti RAM. Výsledek provedené aritmetické operace, logické operace či bitové rotace se ukládá zpět do vybraného akumulátoru a navíc se ještě většinou nastavují příznakové bity Carry a Zero uložené v registru F. Kromě plnohodnotné aritmeticko-logické jednotky je v mikrořadičovém jádru implementována i šestnáctibitová sčítačka použitá při generování adres, zvyšování hodnoty programového čítače PC, relativních skocích, autoinkrementaci/dekrementaci indexových registrů X a Y apod. Čip je řízen mikroinstrukcemi čtenými z instrukčního dekodéru, přičemž se každá instrukce podle své složitosti provede v jednom, dvou či třech strojových cyklech (jeden strojový cyklus přitom odpovídá dvěma taktům hodinového signálu).

3. Konfigurace čtyřbitových mikrořadičů s jádry S1C63

Čtyřbitová mikrořadičová jádra S1C63 jsou v současnosti použita v několika typech mikrořadičů, které se od sebe odlišují zejména maximální povolenou taktovací frekvencí (minimální frekvence je vždy 32,768 kHz, takže lze použít běžné krystaly používané například v digitálkách), kapacitou paměti programu (ROM), kapacitou datové paměti a taktéž typem paměti ROM. K dispozici jsou totiž jak čipy určené pro aplikace (výrobky) citlivé na cenu, kde je použita paměť ROM programovaná maskou při výrobě, tak i několik čipů vybavených pamětí Flash. Základní parametry všech mikrořadičů založených na jádrech S1C63 jsou vypsány v následující tabulce:

Typ Frekvence (max) Frekvence (min) ROM Typ ROM RAM
S1C63003 550 kHz 32768 Hz 4096×13 bitů ROM 256×4 bity
S1C63004 1 MHz 32768 Hz 4096×13 bitů ROM 512×4 bity
S1C63008 1–4 MHz 32768 Hz 8192×13 bitů ROM 1024×4 bity
S1C63016 1–4 MHz 32768 Hz 16384×13 bitů ROM 2048×4 bity
S1C6F016 4,2 MHz 32768 Hz 16384×13 bitů Flash 2048×4 bity
           
S1C63158 4 MHz 32768 Hz 8192×13 bitů ROM 512×4 bity
           
S1C63408 4 MHz 32768 Hz 8192×13 bitů ROM 1024×4 bity
           
S1C63567 3,58 MHz 32768 Hz 16384×13 bitů ROM 512×4 bity
           
S1C63654 4 MHz 32768 Hz 4096×13 bitů ROM 512×4 bity
S1C63656 4 MHz 32768 Hz 6144×13 bitů ROM 1024×4 bity
S1C63658 4 MHz 32768 Hz 8192×13 bitů ROM 1024×4 bity
S1C63666 4 MHz 32768 Hz 16384×13 bitů ROM 5120×4 bity
S1C63616 4 MHz 32768 Hz 16384×13 bitů ROM 2048×4 bity
S1C63632 4 MHz 32768 Hz 31744×13 bitů ROM 8192×4 bity
S1C6F632 4 MHz 32768 Hz 31744×13 bitů Flash 8192×4 bity
           
S1C63709 4 MHz 32768 Hz 12288×13 bitů ROM 2048×4 bity

4. Vstupní a výstupní piny, specializované vývody pro ovládání LCD

Podobně, jako tomu bylo i u minule popsaných jader S1C60, jsou i mikrořadiče s jádry S1C63 vybaveny relativně velkým množstvím vstupních, výstupních či vstupně-výstupních pinů a navíc většina čipů obsahuje i piny, přes které je možné ovládat LCD. Typické konfigurace jsou opět přehledně vypsány v tabulce pod tímto odstavcem, kde se ve sloupci „Vstupy“ nachází počet čistě vstupních pinů, ve sloupci „Výstupy“ počet výstupních pinů, sloupec „I/O“ obsahuje konfigurovatelné piny a v posledním sloupci jsou informace o maximální možné složitosti LCD, který se k čipům může připojit. Povšimněte si, že některé mikrořadiče dokážou ovládat displeje se segmenty (ty mají velké množství vstupů pro zapnutí či vypnutí segmentů a jen několik vstupů pro výběr skupin segmentů), zatímco další mikrořadiče lze připojit k maticovým (rastrovým) LCD:

Typ Vstupy Výstupy I/O Displej
S1C63003 0 0 16 22×5 segmentů
S1C63004 0 0 20 36×8 segmentů
S1C63008 0 0 24 50×8 segmentů
S1C63016 0 0 24 56×8 segmentů
S1C6F016 0 0 24 56×8 segmentů
         
S1C63158 9 12 20 ×
         
S1C63408 4 4 4 60×17 segmentů
         
S1C63567 8 12 16 60×17 segmentů
         
S1C63654 8 4 8 32×6 segmentů
S1C63656 8 4 8 38×4 segmenty
S1C63658 8 8 8 56×8 segmentů
S1C63666 8 8 8 64×8 segmentů
S1C63616 0 0 16 56×16 pixelů
S1C63632 0 0 24 64×16 pixelů
S1C6F632 0 0 24 64×16 pixelů
         
S1C63709 13 0 18 64×8 segmentů

5. Programová paměť (ROM)

Programová paměť typu ROM či Flash má poměrně neobvyklou strukturu, protože šířka adresovatelných slov je třináct bitů a maximální teoretická adresovatelná kapacita tohoto typu paměti je 64k×13 bitů. Ve skutečnosti jsme si však již ve třetí kapitole ukázali, že žádný čip nemá větší kapacitu ROM/Flash než 31744×13 bitů, přičemž poněkud zvláštní hodnota 31744 odpovídá 215-210. Činnost ROM/Flash je zřejmá – jsou v ní uloženy instrukce a popř. taktéž konstantní data (převodní tabulky, překódování numerických hodnot na indexy segmentů, bitové masky znaků pro maticové LCD apod.). Všechna instrukční slova mají konstantní šířku 13 bitů, adresa zpracovávané instrukce je přitom uložena v jediném registru PC. Kromě ROM/Flash, které jsou přímo součástí čipu s mikrořadičem, lze k S1C63 připojit další EPROM (či EEROM) se sériovým rozhraním. Tím lze částečně obejít nutnost programování masky ROM pro každý typ zařízení zvlášť.

6. Datová paměť (RAM)

Datové paměti (tedy klasické RAM) mají u všech dnes popisovaných čipů šířku slov pouhé čtyři bity (tj. jedná se o nibbly). Ovšem počet slov je již u některých variant mikrořadičů poměrně vysoký. Základní kapacita je 256×4 bity, maximální pak 8192×4 bity (čistě teoreticky se může jednat o 65536×4 bity, ovšem část adresního rozsahu je obsazena „video“ pamětí určenou pro práci s LCD). Na rozdíl od řady S1C60 není nutné u čipů S1C63 používat stránkování, protože oba index registry byly rozšířeny na šestnáct bitů. Samozřejmě opět platí, že část RAM je obsazena zásobníkem, na který je možné ukládat čtyřbitové, osmibitové i šestnáctibitové hodnoty (viz též druhou část článku s popisem instrukčního souboru).

7. Programátorský model jader S1C63

Programátorský model mikrořadičů S1C63 je sice odvozen on programátorského modelu již minule popsaných mikrořadičů S1C60, ovšem nalezneme zde určitá zjednodušení způsobená tím, že se šířky některých registrů rozšířily (tím odpadla nutnost používat stránkové registry). Nejdříve si tedy zopakujme, jak vypadal programátorský model S1C60:

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

U čtyřbitových jader S1C63 naproti tomu nalezneme tyto registry:

Registr Šířka Rozdělen na Celé jméno
PC 16 × Program counter
SP1 8   Stack pointer, posunutý o dva bity doleva
SP2 8   Stack pointer
X 16 XH+XL Index register X
Y 16 YH+YL Index register Y
A 4 × General register A
B 4 × General register B
EXT 8 × Extension register

Důležité je především rozšíření registru PC na celých šestnáct bitů, čímž odpadla nutnost používat dvojici PCS+NPP. Kvůli rozšíření možností adresování byl přidán registr EXT, jehož činnost si popíšeme níže. Rozšířeny byly taktéž index registry X a Y, takže vlastně jedinými skutečně čtyřbitovými registry zůstaly oba akumulátory A a B.

8. Instrukční sada jader S1C63

V instrukční sadě dnes popisovaných čtyřbitových mikrořadičů najdeme pouze 39 základních instrukcí, ovšem mnohé z těchto instrukcí existuje v několika variantách, které se od sebe odlišují především použitým adresovacím režimem. Připomeňme si, že každé instrukční slovo má šířku třinácti bitů, což mj. znamená, že se kromě operačního kódu instrukce do tohoto slova mohou uložit i konstanty, relativní adresy skoků atd. Ostatně podívejme se na následující tabulku, v níž jsou některé možnosti konstant uložených v instrukčních slovech shrnuty:

Šířka konstanty Rozsah Význam
2 bity 0–3 index bitu v bitových operacích
4 bity 0–15 konstanta vystupující v ALU operacích atd.
6 bitů 0–63 index vektoru přerušení
8 bitů –128..127 konstanta pro osmibitové registry, relativní adresa
4 bity 1–16 radix použitý u některých základních ALU instrukcí

Seznam instrukcí:

9. Podporované adresní režimy

Na instrukční sadě čipů S1C63 jsou nejzajímavější především adresní režimy, které do značné míry používají „plnohodnotné“ šestnáctibitové registry PC, X a Y doplněné o registr EXT. Registry X a Y jsou použity pro uložení adresy, takže je například možné provést instrukci:

LD [X], [Y]

pro přesun čtyřbitového operandu z adresy uložené v registru Y na adresu uloženou v registru X. Taktéž je možné provést autoinkrementaci registru po provedení operace, což nám umožňuje relativně snadno implementovat blokové přenosy dat:

LD [X]+, [Y]+

U mnoha instrukcí se taktéž v instrukčním slovu používá šestibitová adresa (konstanta) specifikující adresu operandu v rozsahu 0×0000 až 0×003F a 0×FFC0 až 0×FFFF, tedy na začátku či naopak na konci paměti:

INC [adresa]

Pokud je zapotřebí pracovat se šestnáctibitovými konstantami, používá se pro tento účel registr EXT do něhož se načte horních osm bitů konstanty. Ihned po nastavení tohoto registru se změní význam další instrukce, protože příznak o modifikaci EXT je uložen v příznakovém registru F. Například:

LDB EXT, 0x12
LDB XL,  0x34

odpovídá pseudoinstrukci:

LD X, 0x01234

Nebo (mnohem zajímavější varianta):

LDB EXT, 0xAB
ADD XL,   0xCD

odpovídá pseudoinstrukci:

ADD X, 0xABCD

10. Aritmetické instrukce

Sada aritmetických a logických instrukcí obsahuje prakticky všechny očekávatelné instrukce. U součtů a rozdílů mohou být zdrojovými operandy registr/akumulátor A, B, buňka adresovaná index registrem X, Y či čtyřbitová konstanta. Cílové operandy jsou prakticky totožné, samozřejmě až na zmíněnou konstantu. Instrukce CMP je shodná s instrukcí SUB, ovšem cílový operand se nezmění, pouze se nastaví bitové příznaky. Instrukce INC a DEC mohou pracovat s buňkou paměti. U prvních šesti instrukcí je dokonce možné zvolit radix 1–16, což je nejenom v oblasti čtyřbitových mikrořadičů nepochybně zajímavá možnost:

# Instrukce Stručný popis
1 ADD součet + nastavení příznaků
2 ADC součet s připočtením Carry + nastavení příznaků
3 SUB rozdíl + nastavení příznaků
4 SBC rozdíl s připočtením Carry + nastavení příznaků
     
5 INC zvýšení buňky paměti o jedničku
6 DEC snížení buňky paměti o jedničku
     
7 CMP obdoba instrukce SUB, ovšem bez uložení výsledku rozdílu

11. Logické instrukce

Logické instrukce mohou mít shodné typy operandů jako výše popsané aritmetické instrukce ADD/ADC/SUB/SBB. Ovšem navíc všechny tři zmíněné instrukce podporují provedení zvolené logické operace mezi obsahem příznakového registru F a čtyřbitovou konstantou. To mj. znamená, že je možné nastavit libovolnou kombinaci příznaků na jedničku instrukcí OR, vynulovat libovolnou kombinaci příznaků instrukcí AND či příznaky znegovat instrukcí XOR, což je podle mého názoru elegantní řešení:

# Instrukce Stručný popis
1 AND logický součin prováděný bit po bitu
2 OR logický součet prováděný bit po bitu
3 XOR logická nonekvivalence prováděná bit po bitu
     
4 BIT logické AND vybraného registru se čtyřbitovou konstantou a nastavení příznaků

Poznámka: poslední instrukce nazvaná BIT je prakticky totožná s instrukcí AND, ovšem výsledek se nikam neukládá. Pouze se změní stav příznaku Zero na základě výsledku operace. U jiných procesorů se tato instrukce většinou jmenuje TEST a u minule popsaného procesoru se jmenovala FAN.

12. Bitové rotace a logické posuny

V instrukčním souboru existují dvě instrukce pro bitové rotace a dvě instrukce pro logické posuny. Všechny čtyři instrukce vždy pracují i s příznakem Carry. Rotovat je možné pracovní registr A, B, popř. paměť adresovanou přes index registry X či Y (s případnou autoinkrementací adresy):

# Instrukce Stručný popis
1 RR bitová rotace doprava přes Carry
2 RL bitová rotace doleva přes Carry
     
4 SRL logický posun doprava; nejnižší bit se přesune do Carry
3 SLL logický posun doleva; nejvyšší bit se přesune do Carry

Poznámka: aritmetickou rotaci doprava je nutné implementovat programově nastavením příznaku Carry před provedením SRL.

13. Operace nad jednotlivými bity

Tři nové instrukce slouží pro operace prováděné nad jednotlivými bity získanými z paměťové buňky ležící na adresách 0×0000 až 0×003F popř. na adresách 0×FFC0 až 0×FFFF, tedy na úplném začátku či naopak na úplném konci adresovatelného rozsahu. Součástí instrukčního slova je jak šestibitová adresa, tak i bitové pole obsahující index bitu, který se má nastavit, vynulovat či otestovat:

# Instrukce Stručný popis
2 CLR vynulování bitu 0..3 na zvolené adrese + nastavení příznaku Zero
3 SET nastavení bitu 0..3 na zvolené adrese + nastavení příznaku Zero
4 TST otestování bitu 0..3 na zvolené adrese: nastavení příznaku Zero na hodnotu přečteného bitu

14. Instrukce pro práci se zásobníkem

Dvojice instrukcí PUSH a POP slouží pro uložení vybraného registru na zásobník popř. naopak pro obnovení obsahu registru ze zásobníku. Pokud se na zásobník ukládají registry A a B či příznakový registr F, používá se jeden prvek zásobníku, u registrů X a Y pak čtyři prvky (tyto registry jsou šestnáctibitové):

# Instrukce Stručný popis
1 PUSH uložení vybraného registru na zásobník
2 POP obnovení vybraného registru ze zásobníku

15. Instrukce typu Load & Store

Další 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 X a Y s případnou autoinkrementací adresy. Samozřejmě je též možné načíst konstantu do vybraného registru A či B, popř. provést převod dat mezi pracovním registrem a registrem příznaků. Instrukce LDB pracuje s operandy dvojnásobné šířky, tedy s jednotlivými bajty:

# Instrukce Stručný popis
1 LD načtení či uložení čtyřbitového operandu z/do registru
2 LDB načtení celého bajtu (nikoli nibblu)
3 EX prohození obsahu registru a buňky paměti

Některé varianty „čtyřbitové“ instrukce LD:

LD A, B
LD A, F
LD A, #konstanta
LD A, [X]
LD A, [X]+

Některé varianty „osmibitové“ instrukce LD:

LDB XH,BA
LDB XL,BA
 
LDB BA, YH
LDB BA, YL
LDB BA, #konstanta
LDB BA, [X]+
LDB BA, [Y]+
 
LDB EXT, BA
LDB EXT, #konstanta
LDB SP1, BA

Všechny varianty „čtyřbitové“ instrukce EX:

bitcoin_skoleni

EX A, B
EX A, [X]
EX A, [X]+
EX A, [Y]
EX A, [Y]+
EX B, [X]
EX B, [X]+
EX B, [Y]
EX B, [Y]+

16. Podmíněné a nepodmíněné skoky

Instrukce provádějící skoky můžeme rozdělit do několika kategorií. Nalezneme zde především nepodmíněný skok JR, nepodmíněný skok na adresu uloženou v index registru Y, 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, 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 Y:

# Instrukce Stručný popis
1 JR nepodmíněný skok
2 JP nepodmíněný skok na adresu uloženou v registru Y
     
3 JRC podmíněný skok pokud Carry=1
4 JRNC podmíněný skok pokud Carry=0
5 JRZ podmíněný skok pokud Zero=1
6 JRNZ podmíněný skok pokud Zero=0
     
7 CALZ skok do podprogramu na nulté stránce
8 CALR relativní skok do podprogramu
     
9 RET návrat z podprogramu
10 RETS dtto, ale navíc zvýšení PC a 1 (přeskočí se další instrukce ve volajícím kódu)
11 RETI návrat z přerušovací subrutiny
12 RETD návrat z podprogramu s výsledkem uloženým do paměti adresované X

17. Ostatní instrukce

Zbývá nám popsat si čtyři instrukce, které nelze zařadit do žádné jiné skupiny. Jedná se o instrukci INT určenou pro vyvolání SW přerušení, klasickou instrukci NOP a dále o dvojici instrukcí HALT a SLP, které dokážou přepnout režim mikrořadiče do módu uspání či zastavení (potom mikrořadič reaguje pouze na přerušení):

# Instrukce Stručný popis
1 INT uložení příznakového registru a návratové adresy na zásobník + vyvolání přerušení
2 NOP pouze zvýšení hodnoty čítače instrukcí o 1
     
3 HALT přechod celého čipu do režimu HALT
4 SLP přechod celého čipu do režimu SLEEP

18. Odkazy na Internetu

  1. 4-bit architecture
    https://en.wikichip.org/wiki/4-bit_architecture
  2. S1C60 – Epson
    https://en.wikichip.org/wi­ki/epson/s1c60
  3. S1C63 – Epson
    https://en.wikichip.org/wi­ki/epson/s1c63
  4. 4-bit to 32-bit low power microcontrollers (Epson)
    http://global.epson.com/pro­ducts_and_drivers/semicon/pro­ducts/micro_controller/
  5. 4-bit microcontrollers (Epson)
    http://global.epson.com/pro­ducts_and_drivers/semicon/pro­ducts/micro_controller/4bit/
  6. High Performance 4bit (Epson)
    http://global.epson.com/pro­ducts_and_drivers/semicon/pro­ducts/micro_controller/hig­h4bit/
  7. S1C60 Family Products overview (PDF)
    http://global.epson.com/pro­ducts_and_drivers/semicon/pro­ducts/micro_controller/pdf/spec_mcu_4bit­.pdf
  8. Zero-power Microcontrollers for Low-power and High-temperature Applications
    http://en.wikichip.org/w/i­mages/1/17/Atmel_MARC4_brochu­re.pdf
  9. MARC4 Micro-Controller (Wikipedia)
    https://en.wikipedia.org/wi­ki/MARC4_Micro-Controller
  10. MARC4 – Atmel
    https://en.wikichip.org/wi­ki/atmel/marc4
  11. MARC 4bit Microcontrollers Programmer's Guide
    https://en.wikichip.org/w/i­mages/4/44/MARC4_4-bit_Microcontrollers_Program­mer%27s_Guide.pdf
  12. MARC4 User's Guide qFORTH Compiler
    https://en.wikichip.org/w/i­mages/2/25/MARC4_User%27s_Gu­ide_qFORTH_Compiler.pdf
  13. Accumulator
    https://en.wikipedia.org/wi­ki/Accumulator_%28computin­g%29
  14. Index register
    https://en.wikipedia.org/wi­ki/Index_register
  15. Control/Status register
    https://en.wikipedia.org/wi­ki/Control/Status_Register
  16. Programovací jazyk Forth a zásobníkové procesory
    http://www.root.cz/clanky/programovaci-jazyk-forth-a-zasobnikove-procesory/
  17. Seriál Programovací jazyk Forth
    http://www.root.cz/serialy/pro­gramovaci-jazyk-forth/
  18. Programovací jazyk Factor
    http://www.root.cz/clanky/programovaci-jazyk-factor/
  19. Grafický metaformát PostScript
    http://www.root.cz/clanky/graficky-metaformat-postscript/
  20. PMOS
    https://en.wikipedia.org/wi­ki/PMOS_logic
  21. NMOS
    https://en.wikipedia.org/wi­ki/NMOS_logic
  22. CMOS
    https://en.wikipedia.org/wiki/CMOS
  23. Vacuum Fluorescent Display
    https://en.wikipedia.org/wi­ki/Vacuum_fluorescent_dis­play
  24. Computer History Museum: TMS 1000 4-Bit microcontroller
    http://www.computerhistory­.org/collections/catalog/102711697
  25. Texas Instruments TMS1000 microcontroller family
    http://www.cpu-world.com/CPUs/TMS1000/
  26. Invention History of Microcontroller
    http://www.circuitstoday.com/mi­crocontroller-invention-history
  27. TMS1000 Series – TI
    https://en.wikichip.org/wi­ki/ti/tms1000
  28. TMX1795 – TI
    https://en.wikichip.org/wi­ki/ti/tmx1795
  29. Milton Bradley Microvision (U.S.) (1979, LCD, 9 Volt (1 or 2), Model# 4952)
    http://www.handheldmuseum­.com/MB/uVUS.htm
  30. 8051 Microcontroller
    http://www.circuitstoday.com/8051-microcontroller
  31. 4-bit (computer architectures)
    https://en.wikipedia.org/wiki/4-bit
  32. TMS 1000 Data Manual
    http://blog.kevtris.org/blog­files/TMS_1000_Data_Manual­.pdf
  33. Considerations for 4-bit processing
    http://www.embeddedinsights­.com/channels/2010/12/10/con­siderations-for-4-bit-processing/
  34. Are you, or would you consider, using a 4-bit microcontroller?
    http://www.embeddedinsights­.com/channels/2010/11/24/a­re-you-or-would-you-consider-using-a-4-bit-microcontroller/
  35. MARC4 Micro-Controller
    https://en.wikipedia.org/wi­ki/MARC4_Micro-Controller
  36. The Texas Instruments TMX 1795: the (almost) first, forgotten microprocessor
    http://www.righto.com/2015/05/the-texas-instruments-tmx-1795-first.html
  37. O2 Homepage
    http://www.the-nextlevel.com/odyssey2/
  38. Magnavox Odyssey2 (1978), Philips Videopac G7000 / C52 (1979)
    http://www.mess.org/sysinfo:odyssey2
  39. The Video Game Critic's Odyssey 2 Reviews
    http://videogamecritic.net/odd.htm
  40. Computer Closet Collection: Magnavox Odyssey2
    http://www.computercloset­.org/MagnavoxOdyssey2.htm
  41. PHILIPS Videopac C52
    http://old-computers.com/museum/compu­ter.asp?c=1060
  42. O2 Tech. Manual V.1.1 (PDF dokument)
    http://www.atarihq.com/dan­b/files/o2doc.pdf
  43. Magnavox Odyssey2
    http://www.game-machines.com/consoles/odyssey2.php
  44. Magnavox Odyssey2 (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/Odyssey2
  45. Magnavox Odyssey2 Games (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/List_of_Videopac_games

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.