Hlavní navigace

Instrukční soubor čipů PIC24 a dsPIC

Pavel Tišnovský

Na předchozí článek s popisem základních vlastností čipů řady PIC24 a dsPIC dnes navážeme, protože se budeme zabývat instrukční sadou těchto v některých ohledech poněkud neobvyklých mikrořadičů.

Obsah

1. Instrukční soubor čipů PIC24 a dsPIC

2. Adresovací režimy

3. Formát instrukčních slov

4. Přesuny dat

5. Aritmetické operace

6. Násobení a dělení

7. Logické operace

8. Bitové posuny a rotace

9. Bitové operace

10. Podmíněné i nepodmíněné skoky

11. Podmíněný přeskok následující instrukce

12. Porovnání operandů s případným podmíněným skokem

13. Obsah následující části seriálu

14. Odkazy na Internetu

1. Instrukční soubor čipů PIC24 a dsPIC

Na stručný popis šestnáctibitových mikrořadičů PIC24 a dsPIC dnes navážeme, protože se seznámíme s některými instrukcemi z poměrně rozsáhlého instrukčního souboru těchto čipů. Prozatím se zaměříme na „běžné“ instrukce, které se do značné míry podobají instrukcím známým z dalších již popsaných mikrořadičů (až na jednu výjimku – podmíněné instrukce typu skip). Později se seznámíme i s dalšími instrukcemi, které jsou pro řadu PIC24 a především pak dsPIC unikátní. V následující tabulce jsou dnes popsané instrukce rozděleny do běžných kategorií:

2. Adresovací režimy

Možnosti adresování byly u čipů PIC24/dsPIC oproti osmibitovým PICům značně rozšířeny. Připomeňme si, že tyto čipy mají Harvardskou architekturu, tj. programová paměť je oddělena od datové paměti. Liší se i struktura těchto pamětí, protože programová paměť používá slova o šířce 24 bitů, kdežto z datové paměti je možné číst operandy o šířce osmi bitů či šestnácti bitů. Programová paměť může mít kapacitu až 4M × 24 bitů a pro adresování instrukcí se používá registr PC o šířce 23 bitů. Nejnižší bit PC je vždy nulový, což vlastně znamená, že se PC vždy zvyšuje o krok 2 (u skoků o sudou hodnotu). Jedná se jen o umělé omezení kvůli částečné zpětné kompatibilitě.

Základní kapacita datové paměti je 64kB neboli 32k slov. Některé čipy umožňují horní polovinu adresního prostoru mapovat na jiné fyzické adresy, což je jedna z forem stránkování (paging). Při adresování operandů je možné použít následující adresní režimy:

  1. Přímý index registru (ty jsou mapovány na adresy 0×0000 až 0×001Ff
  2. Nepřímé použití registru (adresy 0×0000 až 0×ffff)
  3. „File register“, přímá adresa (adresy 0×0000 až 0×1fff). Termín „file register“ je převzat z osmibitových PICů a značí operand uložený přímo v paměti.

První dva adresní režimy používají indexy 0×0 až 0×f na určení libovolného pracovního registru. Při nepřímém adresování je obsah registru použit jako adresa operandu:

Index Registr Alternativní funkce/jméno
0×0 W0 WREG
0×1 W1  
0×2 W2  
0×3 W3  
0×4 W4  
0×5 W5  
0×6 W6  
0×7 W7  
0×8 W8  
0×9 W9  
0×a W10  
0×b W11  
0×c W12  
0×d W13  
0×e W14 Frame pointer
0×f W15 Stack pointer

Pro instrukce určené pro čtení či zápis do tabulek (table read, table write) se při adresování používá speciální registr TBLPAG obsahující nejvyšších osm bitů adresy začátku tabulky. Čipy PIC24E, některé varianty PIC24F a dsPIC33E navíc obsahují i registry nazvané DSRPAG a DSWPAG rozšiřující možnosti adresování až na 16 megabajtů (resp. přesněji 8 Mslov). Tento adresový prostor se označuje zkratkou EDS neboli Extended Data Space. Registr DSRPAG má šířku deset bitů, registr DSWPAG jen devět bitů.

3. Formát instrukčních slov

24bitová instrukční slova jsou rozdělena do několika bitových polí. Některé instrukce mají v instrukční slovu uloženou i konstantu, ať již se jedná o konstantu se znaménkem (podmíněné skoky) či bez znaménka (adresa „file registru“). Podívejme se na několik možností rozdělení 24bitových slov na jednotlivá pole:

Operační kód Konstanta Instrukce
8 bitů 16 bitů relativní skoky BRA
11 bitů 13 bitů aritmetické instrukce WREG ⊕ file register
11 bitů 13 bitů bitové rotace a posuny s file registrem
4 bity 16 bitů načtení 16bitové konstanty do registru (zbylé čtyři bity tvoří index registru)
5 bitů 15 bitů přesun hodnoty mezi file registrem a pracovním registrem

Několik instrukcí používá dvě instrukční slova. První slovo vždy udává typ instrukce a část adresy, další slovo je pak zakódováno jako instrukce NOP s až šestnáctibitovou konstantou. Příkladem je instrukce CALL pro absolutní skok na libovolnou (sudou) adresu v programové paměti. V prvním slovu je uložen operační kód instrukce a 16 bitů adresy, ve slovu druhém pak instrukce NOP a zbylých sedm bitů adresy.

4. Přesuny dat

Poměrně rozsáhlá je skupina instrukcí určených pro přenosy dat mezi registry, popř. mezi operační pamětí a vybraným pracovním registrem. Patří sem i instrukce určené pro načtení hodnot do speciálních registrů DSRPAG, DSWPAG a TBLPAG. Poslední dvě instrukce prohazují nibbly (4 bity) nebo bajty ve vybraném pracovním registru:

Instrukce Stručný popis
MOV WREG, f přesun z registru WREG do paměti (podporuje i přesun jednoho bajtu)
MOV Wn, f přesun z registru Wn do paměti
MOV f, Wn opak předchozí instrukce
   
MOV Wn, #konstanta8 načtení osmibitové konstanty
MOV Wn, #konstanta16 načtení 16bitové konstanty
MOV Wn, Wm přesun dat mezi registry
EXCH Wn, Wm prohození dat mezi registry
MOV.D Ws, Wnd přesun dvou slov (více adresních režimů)
   
MOVPAG #konstanta10, DSRPAG načtení desetibitové konstanty do registru DSRPAG
MOVPAG #konstanta9, DSWPAG načtení devítibitové konstanty do registru DSWPAG
MOVPAG #konstanta8, TBLPAG načtení osmibitové konstanty do registru TBLPAG
MOVPAG Wn, DSRPAG přenos z registru Wn do registru DSRPAG
MOVPAG Wn, DSWPAG přenos z registru Wn do registru DSWPAG
MOVPAG Wn, TBLPAG přenos z registru Wn do registru TBLPAG
   
SWAP.B Wn prohození nibblů spodních osmi bitů registru
SWAP.W Wn prohození bajtů vybraného registru

5. Aritmetické operace

Všechny aritmetické instrukce se dvěma zdrojovými operandy podporují několik způsobů určení zdrojových operandů i operandu cílového. V následující tabulce jsou tyto způsoby vypsány pro libovolnou binární operaci ⊕ (dosaďte si za ni například ADD). Povšimněte si, že je možné použít i tříadresový kód, což může být výhodné zejména pro překladače vyšších programovacích jazyků. Dva způsoby adresování navíc umožňují přičíst ke zdrojovému operandu desetibitovou či pětibitovou konstantu:

Instrukce/Operandy Význam
instrukce f,WREG WREG = f ⊕ WREG (lze použít i modifikátor .B pro operaci s bajty)
instrukce WREG,f f = f ⊕ WREG (lze použít i modifikátor .B pro operaci s bajty)
instrukce #konst10,Wn Wn = desetibitová konstanta ⊕ Wn
instrukce Wb,#konst5,Wd Wd = Wb ⊕ pětibitová konstanta
instrukce Wb,Ws,Wd Wd = Wb ⊕ Ws

V tabulce pod tímto odstavcem jsou vypsány všechny základní aritmetické instrukce i některé pomocné instrukce typu INC2, DEC2, DAW.B atd.. Poslední dvě instrukce SE a ZE dokážou rozšířit vstupní osmibitový operand, a to buď znaménkově (nejvyšší bit operandu se rozkopíruje do vyšších bitů výsledku) nebo bezznaménkově (vyšší bity výsledku jsou nulové):

Instrukce Stručný popis
ADD součet
ADDC součet s carry
SUB rozdíl
SUBB rozdíl a navíc odečtení carry
SUBR rozdíl s prohozením operandů
SUBBR kombinace SUBB a SUBR
   
INC zvýšení operandu o 1
INC2 zvýšení operandu o 2
DEC snížení operandu o 1
DEC2 snížení operandu o 2
   
DAW.B úprava po součtu při práci v BCD
NEG změna znaménka
   
SE znaménkové rozšíření operandu
ZE bezznaménkové rozšíření operandu (zleva se doplní nuly)

6. Násobení a dělení

Samostatnou skupinu tvoří instrukce pro násobení a dělení. Ty lze rozdělit jak podle šířky operandů, tak i podle toho, zda jsou operandy reprezentovány formou hodnot bez znaménka či se znaménkem:

Instrukce Stručný popis
MUL vynásobení W3:W2 = f*WREG
   
MUL.SS vynásobení dvou operandů se znaménkem (výsledek je uložen do dvou registrů)
MUL.SU vynásobení operandu se znaménkem s operandem bez znaménka
MUL.US vynásobení operandu bez znaménka s operandem se znaménkem
MUL.UU vynásobení dvou operandů bez znaménka
   
MULW.SS odpovídá instrukci MUL.SS, ale vstupní operandy mají šířku jeden bajt a výsledkem je 16bitová hodnota
MULW.SU odpovídá instrukci MUL.SU, ale vstupní operandy mají šířku jeden bajt a výsledkem je 16bitová hodnota
MULW.US odpovídá instrukci MUL.US, ale vstupní operandy mají šířku jeden bajt a výsledkem je 16bitová hodnota
MULW.UU odpovídá instrukci MUL.UU, ale vstupní operandy mají šířku jeden bajt a výsledkem je 16bitová hodnota
   
DIV.S dělení se znaménkem: 16 bitů/16 bitů
DIV.SD dělení se znaménkem: 32 bitů/32 bitů
DIV.U dělení bez znaménka: 16 bitů/16 bitů
DIV.UD dělení bez znaménka: 32 bitů/32 bitů
   
DIVF dělení se znaménkem 16 bitů/16 bitů (typ fractional)

Poznámka: instrukce DIVF, DIV.S, DIV.SD, DIV.U a DIV.UD je nutné volat osmnáctkrát, protože výpočet je iterativní. K tomu lze využít instrukci REPEAT popsanou dále. Naproti tomu je násobení provedeno v jediném taktu, podobně jako na mnoha dalších digitálních signálových procesorech.

7. Logické operace

Sada instrukcí provádějících logické operace obsahuje všechny tři základní operace Booleovské logiky (negace, logický součin/konjunkce a logický součet/disjunkce), které jsou doplněny o logickou nonekvivalenci. Kromě toho v této skupině instrukcí najdeme i doplňkovou instrukci určenou pro nastavení všech bitů zvoleného registru či buňky paměti na nulu a taktéž instrukci s opačným významem – nastavením všech bitů na jedničku:

Instrukce Stručný popis
COM negace bit po bitu
   
AND logický součin bit po bitu
IOR logický součet bit po bitu
XOR logická nonekvivalence bit po bitu
   
CLR vynulování registru či buňky paměti
SETM registru či buňky paměti na hodnotu 0×ffff

8. Bitové posuny a rotace

V instrukčním souboru nalezneme všechny používané varianty pro posuny a rotace. Rotace mohou být prováděny přes příznak carry © nebo s jeho vyloučením. Pokud se rotace provádí přes carry, rotuje se pochopitelně sedmnáct bitů a nikoli pouze bitů šestnáct. Mezi posuny počítáme logický posun doprava (do MSb se dosazuje nula), aritmetický posun doprava (MSb se duplikuje) a logický/aritmetický posun doleva (do LSb se dosazuje nula):

Instrukce Stručný popis
RLC rotace doleva přes carry
RLNC rotace doleva
RRC rotace doprava přes carry
RRNC rotace doprava
   
ASR aritmetický posun doprava, carry se naplní původním LSb
LSR logický posun doprava, carry se naplní původním LSb
SL posun doleva (aritmetický i logický), carry se naplní původním MSb

Poznámka: MSb značí nejvyšší bit ve slově, LSb bit nejnižší.

9. Bitové operace

Do další skupiny instrukcí patří různé bitové operace. Většina těchto instrukcí obsahuje ve svém instrukčním slovu i index bitu, který se má nastavit, vynulovat, znegovat či otestovat. Povšimněte si, že u těch instrukcí, které přenáší hodnoty mezi vybraným bitem a příznakem zero (Z), se ve skutečnosti pracuje s negací tohoto příznaku. Poslední tři instrukce jsou nejkomplikovanější, neboť ve slovu musí hledat zvolený vzorek (buď první změnu nebo první nenulový bit):

Instrukce Stručný popis
BCLR vynulování vybraného bitu 0..15
BSET nastavení vybraného bitu 0..15 na jedničku
BTG negace (toggle) vybraného bitu 0..15
   
BSW.C uložení příznaku C (carry) do vybraného bitu
BSW.Z uložení negovaného příznaku Z (zero) do vybraného bitu
   
BTST.C otestování hodnoty bitu 0..15 a uložení výsledku do příznaku C (carry)
BTST.Z otestování hodnoty bitu 0..15 a uložení negovaného výsledku do příznaku Z (zero)
BTSTS.C jako BTST.C + nastavení bitu na jedničku
BTSTS.Z jako BTST.Z + nastavení bitu na jedničku
   
FBCL najde první změnu (negaci) v bitovém vzorku (začíná od MSb)
FF1L najde první jedničkový bit (začíná od MSb)
FF1R najde první jedničkový bit (začíná od LSb)

10. Podmíněné i nepodmíněné skoky

Skupina skokových instrukcí je poměrně rozsáhlá (na rozdíl od osmibitových PICů), protože v instrukční sadě nalezneme jak klasické nepodmíněné skoky, tak i skoky podmíněné:

Instrukce Stručný popis
BRA nepodmíněný skok
   
BRA C skok při Carry=1
BRA NC skok při Carry=0
BRA Z skok při Zero=1
BRA NZ skok při Zero=0
BRA N skok při Negative=1
BRA NN skok při Negative=0
BRA OV skok při Overflow=1
BRA NOV skok při Overflow=0
   
BRA GE skok při podmínce ≥ (signed)
BRA GEU skok při podmínce ≥ (unsigned)
BRA GT skok při podmínce > (signed)
BRA GTU skok při podmínce > (unsigned)
BRA LE skok při podmínce ≤ (signed)
BRA LEU skok při podmínce ≤ (unsigned)
BRA LT skok při podmínce < (signed)
BRA LTU skok při podmínce < (unsigned)

Poznámka: všechny varianty instrukcí BRA provádí relativní skok, což zde konkrétně znamená, že pokud je podmínka splněna, je k obsahu registru PC přičtena šestnáctibitová konstanta se znaménkem, která je součástí instrukčního slova a která je navíc vynásobena dvěma. Pokud podmínka splněna není, je k registru PC přičtena dvojka. Pro skok na absolutní adresu se používá instrukce GOTO.

Poznámka2: instrukce BRA GEU je aliasem instrukce BRA C. Podobně je instrukce BRA LTU aliasem instrukce BRA NC.

11. Podmíněný přeskok následující instrukce

V prvních verzích osmibitových mikrořadičů PIC se objevila zajímavá vlastnost – zatímco u naprosté většiny ostatních mikroprocesorů i mikrořadičů se v jejich instrukční sadě nachází instrukce umožňující provádění podmíněných skoků, tj. skoků provedených po splnění nějaké podmínky (nulový, kladný či záporný výsledek předchozí aritmetické či logické operace, přetečení předchozí aritmetické operace, atd.), obsahují osmibitové mikrořadiče PIC (kromě nejvyšší řady) pouze instrukci pro provedení nepodmíněného skoku GOTO a několik instrukcí, které po splnění nějaké podmínky změní programový čítač takovým způsobem, že je následující instrukce přeskočena (skip). Podmíněný skok se tedy implementuje pomocí dvojice instrukcí – některé instrukce typu SKIP s opačnou podmínkou následovanou nepodmíněným skokem. Ovšem v některých případech se skok vůbec nemusí provádět, protože ona jediná instrukce nacházející se za SKIP může nahradit celý podmíněný blok (vyslání bitu na externí port, pokud je splněna nějaká podmínka, reset watchdogu atd.). Tato možnost zůstala zachována i u šestnáctibitových PICů:

Instrukce Stručný popis
BTSC test vybraného bitu, vynechání následující instrukce pokud je testovaný bit nulový
BTSS test vybraného bitu, vynechání následující instrukce pokud je testovaný bit jedničkový
   
CPSEQ porovnání dvou registrů, vynechání následující instrukce při rovnosti obsahu registrů
CPSGT porovnání dvou registrů, vynechání následující instrukce pokud je první registr větší
CPSLT porovnání dvou registrů, vynechání následující instrukce pokud je první registr menší
CPSNE porovnání dvou registrů, vynechání následující instrukce pokud se registry nerovnají

Jen pro porovnání se podívejme, jaké instrukce typu „skip“ jsou dostupné na osmibitových PICech (navíc je doplněna i binární podoba operačního kódu instrukce pro 12bitová instrukční slova):

Operační kód (bin) Jméno instrukce Stručný popis instrukce
0010 11d fffff DECFSZ f,d d = f – 1, vynechání následující instrukce pokud je výsledek nula
0011 11d fffff INCFSZ f,d d = f + 1, vynechání následující instrukce pokud je výsledek nula
0110 bbb fffff BTFSC f,b Bit test f, vynechání následující instrukce pokud je bit nulový
0111 bbb fffff BTFSS f,b Bit test f, vynechání následující instrukce pokud je bit jedničkový

12. Porovnání operandů s případným podmíněným skokem

Další skupina instrukcí slouží k porovnání dvou operandů a nastavení příznakových bitů na základě výsledku porovnání. Porovnání si můžeme představit jako instrukci SUB, jejíž výsledek je zahozen. Kromě toho zde nalezneme i instrukci nazvanou CPB, která odpovídá SUBB, tj. od mezivýsledku se navíc odečte příznak carry (ten zde tedy vystupuje ve funkci výpůjčky – borrow). Poslední čtyři instrukce jsou vlastně podmíněnými skoky, které se provedou přímo na základě porovnání obsahu dvou pracovních registrů:

Instrukce Stručný popis
CP f porovnání buňky paměti s registrem WREG
CP W, #lit porovnání s konstantou
CP Wb, Ws porovnání dvou pracovních registrů
   
CP0 porovnání buňky paměti či registru s nulou
   
CPB f porovnání buňky paměti s registrem WREG, navíc se odečte Carry
CPB W, #lit porovnání s konstantou, navíc se odečte Carry
CPB Wb, Ws porovnání dvou pracovních registrů, navíc se odečte Carry
   
CPBEQ porovnání dvou pracovních registrů a skok při podmínce =
CPBGT porovnání dvou pracovních registrů a skok při podmínce >
CPBLT porovnání dvou pracovních registrů a skok při podmínce <
CPBNE porovnání dvou pracovních registrů a skok při podmínce ≠

13. Obsah následující části seriálu

V následující části seriálu o architekturách počítačů a procesorů popis čipů PIC24 a dsPIC dokončíme. Budeme se zabývat především těmi instrukcemi, které slouží pro DSP výpočty. Tyto instrukce většinou své výsledky ukládají do akumulátorů, s nimiž je samozřejmě možné provádět i mnoho dalších operací, včetně porovnání, podmíněných skoků atd. Nezapomeneme ovšem ani na další specifické vlastnosti popisovaných čipů, zejména na možnost opakování instrukcí s využitím REPEAT (tuto možnost jsme již zmínili u instrukcí dělení, které je nutné 18× opakovat).

14. Odkazy na Internetu

  1. Stránky společnosti Microchip
    http://www.microchip.com/
  2. Mikrořadiče řady PIC10
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1009
  3. Mikrořadiče řady PIC12
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1001
  4. Mikrořadiče řady PIC16
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1002
  5. Mikrořadiče řady PIC18
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=1004
  6. Šestnáctibitové mikrořadiče PIC
    http://www.microchip.com/Pa­ramChartSearch/chart.aspx?bran­chID=20
  7. Microchip's 32-bit MCUs
    http://www.microchip.com/design-centers/32-bit
  8. Development Tools (oficiálně dostupné nástroje pro PIC)
    http://www.microchip.com/development-tools/
  9. Vývojové nástroje pro osmibitové mikrořadiče PIC
    https://www.root.cz/clanky/vyvojove-nastroje-pro-osmibitove-mikroradice-pic/
  10. Mikroprocesory s architekturou MIPS
    https://www.root.cz/clanky/procesory-s-architekturou-risc-v-pracovnich-stanicich-a-serverech/
  11. gpsim Home Page
    http://gpsim.sourceforge.net/gpsim­.html
  12. Gpsim (Wikipedia)
    https://en.wikipedia.org/wiki/Gpsim
  13. Digital Signal Processors (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/overview.page
  14. C674× Low Power DSP (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/c6000_dsp/c674×/o­verview.page
  15. TMS320C30 (stránky TI)
    http://www.ti.com/product/tms320c30
  16. TMS320C6722B
    http://www.ti.com/product/tms320c6722b/des­cription
  17. Introduction to DSP
    http://www.ti.com/lit/wp/spry281/spry­281.pdf
  18. The Evolution of TMS (Family of DSPs)
    http://www.slideshare.net/mo­to_modx/theevo1
  19. ST10 16-bit MCUs
    http://www.st.com/en/micro­controllers/st10–16-bit-mcus.html?querycriteria=pro­ductId=LN1111
  20. XC800 family
    https://en.wikipedia.org/wi­ki/XC800_family
  21. C166 (stránky společnosti Infineon)
    https://www.infineon.com/cms/en/pro­duct/microcontroller/16-bit-c166-microcontroller/channel.html?chan­nel=ff80808112ab681d0112ab6b2e­af0759#ispnTab3
  22. C166 Family
    https://en.wikipedia.org/wi­ki/C166_family
  23. Zero-power Microcontrollers for Low-power and High-temperature Applications
    http://en.wikichip.org/w/i­mages/1/17/Atmel_MARC4_brochu­re.pdf
  24. MARC4 Micro-Controller (Wikipedia)
    https://en.wikipedia.org/wi­ki/MARC4_Micro-Controller
  25. MARC4 – Atmel
    https://en.wikichip.org/wi­ki/atmel/marc4
  26. MARC 4bit Microcontrollers Programmer's Guide
    https://en.wikichip.org/w/i­mages/4/44/MARC4_4-bit_Microcontrollers_Program­mer%27s_Guide.pdf
  27. MARC4 User's Guide qFORTH Compiler
    https://en.wikichip.org/w/i­mages/2/25/MARC4_User%27s_Gu­ide_qFORTH_Compiler.pdf
  28. Programovací jazyk Forth a zásobníkové procesory
    http://www.root.cz/clanky/programovaci-jazyk-forth-a-zasobnikove-procesory/
  29. Seriál Programovací jazyk Forth
    http://www.root.cz/serialy/pro­gramovaci-jazyk-forth/
  30. Programovací jazyk Factor
    http://www.root.cz/clanky/programovaci-jazyk-factor/
  31. PMOS
    https://en.wikipedia.org/wi­ki/PMOS_logic
  32. NMOS
    https://en.wikipedia.org/wi­ki/NMOS_logic
  33. CMOS
    https://en.wikipedia.org/wiki/CMOS
  34. Computer History Museum: TMS 1000 4-Bit microcontroller
    http://www.computerhistory­.org/collections/catalog/102711697
  35. Texas Instruments TMS1000 microcontroller family
    http://www.cpu-world.com/CPUs/TMS1000/
  36. Invention History of Microcontroller
    http://www.circuitstoday.com/mi­crocontroller-invention-history
  37. TMS1000 Series – TI
    https://en.wikichip.org/wi­ki/ti/tms1000
  38. TMX1795 – TI
    https://en.wikichip.org/wi­ki/ti/tmx1795
  39. Milton Bradley Microvision (U.S.) (1979, LCD, 9 Volt (1 or 2), Model# 4952)
    http://www.handheldmuseum­.com/MB/uVUS.htm
  40. 8051 Microcontroller
    http://www.circuitstoday.com/8051-microcontroller
  41. 4-bit (computer architectures)
    https://en.wikipedia.org/wiki/4-bit
  42. TMS 1000 Data Manual
    http://blog.kevtris.org/blog­files/TMS_1000_Data_Manual­.pdf
  43. Considerations for 4-bit processing
    http://www.embeddedinsights­.com/channels/2010/12/10/con­siderations-for-4-bit-processing/
  44. 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/
  45. MARC4 Micro-Controller
    https://en.wikipedia.org/wi­ki/MARC4_Micro-Controller
  46. The Texas Instruments TMX 1795: the (almost) first, forgotten microprocessor
    http://www.righto.com/2015/05/the-texas-instruments-tmx-1795-first.html
  47. O2 Homepage
    http://www.the-nextlevel.com/odyssey2/
  48. Magnavox Odyssey2 (1978), Philips Videopac G7000 / C52 (1979)
    http://www.mess.org/sysinfo:odyssey2
  49. The Video Game Critic's Odyssey 2 Reviews
    http://videogamecritic.net/odd.htm
  50. Computer Closet Collection: Magnavox Odyssey2
    http://www.computercloset­.org/MagnavoxOdyssey2.htm
  51. PHILIPS Videopac C52
    http://old-computers.com/museum/compu­ter.asp?c=1060
  52. O2 Tech. Manual V.1.1 (PDF dokument)
    http://www.atarihq.com/dan­b/files/o2doc.pdf
  53. Magnavox Odyssey2
    http://www.game-machines.com/consoles/odyssey2.php
  54. Magnavox Odyssey2 (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/Odyssey2
  55. Magnavox Odyssey2 Games (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/List_of_Videopac_games
  56. TI 16-bit and 32-bit microcontrollers
    http://www.ti.com/lsds/ti/mi­crocontrollers16-bit32-bit/overview.page
  57. TMS 32010 Assembly Language Programmer's Guide (kniha na Amazonu)
    https://www.amazon.com/32010-Assembly-Language-Programmers-Guide/dp/0904047423
Našli jste v článku chybu?