Hlavní navigace

Mikropočítač KIM-1: jeden ze zvěstovatelů osmibitové revoluce

29. 9. 2020
Doba čtení: 31 minut

Sdílet

 Autor: Wikipedie
Dnes se seznámíme s mikropočítačem KIM-1, jenž vznikl v roce 1975, tj. téměř současně se vznikem osmibitového mikroprocesoru MOS 6502. Jednalo se o důležitý mikropočítač, protože si jej mohli „osahat“ i inženýři.

Obsah

1. Mikropočítač KIM-1: jeden ze zvěstovatelů „osmibitové revoluce“

2. Přichází legendární čip – MOS 6502

3. Čip MOS 6502 versus konkurenční dobové mikroprocesory

4. Využití mikroprocesoru MOS 6502

5. Mikropočítač KIM-1 se představuje

6. Blokové schéma mikropočítače KIM-1 a schéma zapojení

7. Mapování registrů a paměťových oblastí do adresního prostoru mikroprocesoru

8. Řízení mikropočítače KIM-1 interní klávesnicí

9. Ukázka programování

10. Funkce čipu MOS 6530

11. Vstupně-výstupní obvody a periferní zařízení

12. Programátorský model mikroprocesoru MOS 6502

13. Registry a příznakové bity

14. Adresovací režimy, využití registrů X a Y

15. Aritmetické a logické instrukce

16. Skoky a rozvětvení

17. Další instrukce

18. Jiné použití MOS 6502 v minimalistickém zařízení – herní konzole Atari 2600

19. Od MOS 6502 k čipu 65C816

20. Odkazy na Internetu

1. Mikropočítač KIM-1: jeden ze zvěstovatelů „osmibitové revoluce“

Společně se vznikem osmibitových mikroprocesorů začaly být vyvíjeny mikropočítače, v nichž byly tyto nové čipy použity a které tak ukazovaly možnosti, které programovatelné mikroprocesory nabízely oproti dřívějším řešením založeným na logické síti, pamětech a klopných obvodech. První mikropočítače byly realizovány formou zařízení určených především pro otestování možností mikroprocesorové techniky i pro návrh nových zařízení. Schémata těchto mikropočítačů byla mnohdy chápána jako standard v dané oblasti (proto například mnoho vzájemně velmi odlišných strojů mělo namapovány registry obvodu 8255 na stejné adresy atd.). V průběhu sedmdesátých let minulého století vznikly takové mikropočítače pro prakticky všechny významné mikroprocesory:

# Název Rok vzniku Založeno na CPU/MCU
1 Intel SIM8–01 1972 Intel 8008
2 MOS Technology KIM-1 1975 MOS 6502
3 Motorola MEK6800D2 1976 Motorola 6800
4 Rockwell AIM-65 1976 MOS 6502
5 Synertek SYM-1 1978 MOS 6502
6 Intel SDK-85 1978 Intel 8085
8051

Obrázek 1: Amatérský mikropočítač postavený na základě osmibitového mikrořadiče 8051. Funkce nabízené tímto mikropočítačem jsou v mnoha ohledech podobné funkcím kitu PMI-80 (i když se jedná o zařízení postavená na odlišných čipech a s využitím jiných technologií).

Dnes se budeme zabývat mikropočítačem KIM-1, který vznikl již v roce 1975, tj. téměř současně se vznikem slavného osmibitového mikroprocesoru MOS 6502, jenž tvořil jeho nedílnou součást. Jednalo se o důležitý mikropočítač, protože právě na něm si mohli čip MOS 6502 „osahat“ i inženýři, kteří poté pracovali na vývoji domácích osmibitových mikropočítačů (Atari, Commodore), popř. i osobních mikropočítačů (Apple ][).

Obrázek 2: „1977 Trinity“ aneb mikropočítače Commodore PET 2001–8, Apple II a TRS-80 Model I. První dva počítače jsou založeny na čipu MOS-6502.
Zdroj a licence: https://upload.wikimedia.or­g/wikipedia/commons/f/ff/Tri­nity77.jpg

2. Přichází legendární čip – MOS 6502

Srdcem počítače KIM-1, který bude popsán v navazujících kapitolách, je slavný osmibitový mikroprocesor MOS 6502 navržený a vyráběný společností MOS Technologies, který začal být komerčně nabízen v září roku 1975, tj. zhruba rok po uvedení konkurenčních osmibitových mikroprocesorů Intel 8080 a Motorola MC6800 (ovšem rok před uvedením mikroprocesoru RCA-1802 o němž jsme se zmiňovali minule a předminule). Čip MOS 6502 navrhl Chuck Peddle a sedm jeho spolupracovníků (Harry Bawcum, Ray Hirt, Terry Holdt, Mike James, Will Mathis, Bill Mensch – důležitá postava a Rod Orgill), kteří spolu s ním opustili firmu Motorola. Důvodem k tomu, že někteří klíčoví zaměstnanci Motorolu opustili, byla jak tehdejší hospodářská recese v USA (a s tím související nepopulární reorganizace ve firmě), tak i to, že se zaměstnancům nelíbilo stěhování z Phoenixu do nově otevřené pobočky v Austinu (ovšem hlavním důvodem může být i to, že management Motoroly ignoroval Peddleho návrhy levného osmibitového procesoru, který by bylo možné masivně a s malou chybovostí vyrábět).

Poznámka: název společnosti odkazuje na technologii MOSFET neboli Metal–Oxide–Semiconductor Field-Effect Transistor.

Nicméně se vraťme k Chucku Peddlemu a firmě MOS Technologies, která byla založena již v roce 1969 a zabývala se mimo jiné i výrobou čipů pro slavný herní automat Pong společnosti Atari. Prvním mikroprocesorem navrženým ve společnosti MOS Technologies byl čip nazvaný jednoduše MOS 6501, který byl pinově kompatibilní s konkurenční Motorolou MC6800 (samotná sada instrukcí i vnitřní stavba mikroprocesoru však byla v mnoha ohledech odlišná). Možnost náhrady mikroprocesoru MC6800 za MOS 6501 v zařízeních připravených původně pro čipy řady 6800 se právníkům Motoroly samozřejmě nelíbila a po žalobě (a následném mezisoudním vyrovnání) Chuck Peddle spolu s Billem Menschem vytvořili čip pojmenovaný MOS 6502, který již nebylo možné nainstalovat do stejné patice jako Motorolu MC6800. Mimochodem: dalším důsledkem mezisoudního vyrovnání bylo to, že firma MOS licencovala ostatní čipy řady 6800, mj. i původní Peddleho čip PIA neboli MC6820 (Chuck Peddle je ostatně podepsán pod šestnácti patenty Motoroly). I přes binární nekompatibilitu s mikroprocesorem MC6800 je však MOS 6502 dodnes legendární čip, který se při svém uvedení na trh proslavil zejména svou velmi nízkou cenou (tehdy pouhých 25 dolarů) umožňující stavbu levných domácích a osobních mikropočítačů a podílel se tak nemalou měrou na „osmibitové revoluci“.

pong

Obrázek 3: Hra Pong ve variantě z roku 1972.

3. Čip MOS 6502 versus konkurenční dobové mikroprocesory

V tomto kontextu se ještě jednou (protože prakticky tutéž tabulku jsme si již uvedli předminule) podívejme i na mikroprocesory a mikrořadiče, které vznikly v první polovině sedmdesátých let minulého století (pro úplnost jsem přidal i čipy ze druhé generace, tj. především Zilog Z80 a Intel 8085, oba tyto čipy stavěly na mikroprocesoru Intel 8080, který vylepšovaly, popř. „jen“ zmenšovaly počet nutných pomocných obvodů a počet napájecích napětí):

# Čip Vznik Typ čipu
1 Intel 4004 1971 čtyřbitový mikroprocesor
2 Intel 8008 1972 osmibitový mikroprocesor
3 Intel 8080 1974 osmibitový mikroprocesor
4 Motorola 6800 1974 osmibitový mikroprocesor
5 MOS 6502 1975 osmibitový mikroprocesor
     
6 RCA 1802 1976 osmibitový mikroprocesor
     
7 Zilog Z80 1976 osmibitový mikroprocesor
8 Intel 8085 1976 osmibitový mikroprocesor
9 Intel 8048 1976 osmibitový mikrořadič
xy

Obrázek 4: Základní technické parametry první generace osmibitových mikroprocesorů firem Intel, Motorola a Zilog. V tomto grafu není uveden poslední „velký hráč“ na poli osmibitových CPU – MOS 6502, jehož parametry se podobají právě čipu MC6800.

V předchozí kapitole jsme si řekli, že původní mikroprocesor MOS 6501 byl navržen takovým způsobem, aby ho bylo možné použít ve stejné patici (a tedy i ve stejných výrobcích), které byly určeny pro mikroprocesor Motorola 6800. Až na základě soudního procesu bylo zapojení pinů pozměněno, takže nový čip 6502 již nebyl v tomto ohledu s Motorolou 6800 kompatibilní. Tyto rozdíly jsou shrnuty v následující tabulce, v níž jsou uvedené ty piny, které mají odlišnou funkci:

Pin Motorola 6800 MOS 6501 MOS 6502 Poznámka
2 Halt Ready Ready psáno i RDY
3 ∅1 (in) ∅1 (in) ∅1 (out) pro složení hodinového signálu
5 Valid memory address Valid memory address nezapojeno
7 Bus available Bus available SYNC  
36 Data bus enable Data bus enable nezapojeno  
37 ∅2 (in) ∅2 (in) ∅0 (in) pro složení hodinového signálu
38 nezapojeno nezapojeno Set overflow flag psáno i SO, přímo ovládá příznak O
39 režim vysoké impedance nezapojeno ∅2 (out)
Poznámka: připomeňme si, že všechny tři typy mikroprocesorů byly primárně dodávány v pouzdru DIL se čtyřiceti piny – doba, kdy počet adresních a datových pinů vzroste tak, aby se muselo použít odlišné pouzdro, ještě nenastala. Dokonce i Intel 8088, jenž (i když si to nezasloužil) způsobil revoluci osobních mikropočítačů, také používal stejné pouzdro (popř. PLCC se 44 piny); až Motorola 68000, což je 16/32bitový čip, používala větší 64pinové pouzdro DIL.
Poznámka2: u těchto čipů se používaly dvoufázové hodiny, které umožňovaly provést více kroků instrukce v jediném strojovém cyklu a navíc bylo interní zapojení (počet hradel) nižší. Ovšem MOS 6502 měl logiku pro dvoufázové hodiny integrovánu přímo na čipu, takže (externí) zapojení bylo jednodušší a současně i nekompatibilní s původními čipy 6800 a 6501. Ukázku jedné z možných realizací generátoru hodinového signálu pro tento osmibitový čip naleznete na stránce http://wilsonminesco.com/6502pri­mer/ClkGen.html.

4. Využití mikroprocesoru MOS 6502

Osmibitové mikroprocesory MOS 6502 či jeho upravené verze MOS 65C02, popř. později MOS 6510 byly použity v mnoha osobních i domácích počítačích, především v Apple II (jeden z nejprodávanějších počítačů v USA), osmibitových domácích mikropočítačů Atari (viz články na Rootu), Commodore C64 (pravděpodobně není zapotřebí představovat), Acorn Atom apod. Tento čip nalezneme i v herních konzolích. Není divu, že se stále jedná o jeden z nejpopulárnějších mikroprocesorů, které jsou dokonce dodnes vyráběny v šestnáctibitové variantě WD 65816 (pomocí nastavení příznakového bitu se tento mikroprocesor přepne do režimu 6502). Podle posledních výzkumů bude 6502 dokonce použita i v roce 3000 pro řízení ohýbacích robotů :-)

x1

Obrázek 5: Osmibitový domácí počítač Atari 800 XL vybavený mikroprocesorem MOS 6502 a pomocnými koprocesory ANTIC, GTIA a POKEY.

x2

Obrázek 6: Herní konzole NES je založena na variantě MOS 6502 známé pod jménem Ricoh 2A03.

x3

Obrázek 7: Slavný Commodore C64.

x4

Obrázek 8: Apple IIe je nejúspěšnějším osmibitovým osobním mikropočítačem vůbec.

5. Mikropočítač KIM-1 se představuje

Mikropočítač KIM-1 se v mnoha ohledech podobá ostatním dobovým mikropočítačům – obsahuje klávesnici pro zadávání hexadecimálních hodnot, několik funkčních kláves a sedmisegmentový LCD se šesti ciframi. Celý mikropočítač byl osazen na jediném plošném spoji, na jehož okraji se nacházely dva konektory určené pro připojení periferních zařízení. Šest cifer zobrazovaných na LCD bylo rozděleno na část určenou pro zobrazení adresy (0000 až FFFF) a na část určenou pro zobrazení obsahu bajtu (00 až FF), což je více informací, než nabízel například minule popsaný počítač COSMAC ELF. Jednalo se současně o rozšiřitelný stroj, protože ke KIM-1 bylo možné připojit audio magnetofon pro záznam dat (i programů) či dálnopis, popř. tiskárnu používající sériový přenos dat. Kromě toho bylo k dispozici dostatek dalších vstupně-výstupních pinů využitelných prakticky libovolným způsobem.

Obrázek 9: Mikropočítač KIM-1.
Zdroj: Wikipedia, CC

6. Blokové schéma mikropočítače KIM-1 a schéma zapojení

Podívejme se nyní na blokové schéma mikropočítače KIM-1, které jsem překreslil z originálního manuálu:

Obrázek 10: Blokové schéma mikropočítače KIM-1.

Barevné odlišení skupin vodičů:

# Barva Význam
1 červená adresová sběrnice
2 modrá datová sběrnice
3 zelená řídicí signály
4 žlutá vstupní a výstupní signály

V blokovém schématu jsou zobrazeny všechny čtyři hlavní čipy s vysokou integrací, které tvoří základ mikropočítače KIM-1. Jedná se pochopitelně především o vlastní mikroprocesor MOS 6502, který je doplněn o dvojici čipů MOS 6530 a taktéž o paměť RAM o kapacitě jednoho kilobajtu. Na desce mikropočítače jsou rozvedeny tři sběrnice – adresová (lze rozšířit až do plných 16 bitů), datová (8 bitů) a několik řídicích signálů. Dále zde nalezneme různé vstupní, popř. výstupní signály. Adresová sběrnice, resp. přesněji řečeno generování adres, je v tomto mikropočítači řízeno pouze mikroprocesorem (například u osmibitových Atari však dokáže adresy generovat i čip ANTIC), datová sběrnice je podle očekávání obousměrná. Vstupní a výstupní signály umožňují připojení externí klávesnice, akustického magnetofonu s dosti primitivním záznamem dat a dokonce i dálnopisu (a nepřímo tedy i minipočítačového terminálu).

Podrobnější schéma zapojení zobrazené až na úroveň jednotlivých vodičů a pomocných součástek naleznete na adrese http://www.6502.org/trainer­s/buildkim/kim.gif.

Poznámka: z podrobného schématu je patrné, že čipy 6530 jsou připojeny přímo na adresovou sběrnici bez výběrových signálů typu chip select. Ve skutečnosti se oba čipy od sebe odlišují (mají čísla 6530–002 a 6530–003, jinou interní masku) a reagují na odlišný rozsah adres.

7. Mapování registrů a paměťových oblastí do adresního prostoru mikroprocesoru

Z pohledu programátora byl adresní rozsah mikroprocesoru (64kB) rozdělen do několika regionů, do nichž byl namapován jak hlavní blok operační paměti (i s nultou stránkou a první stránkou se zásobníkem), tak i dva doplňkové bloky o kapacitě 64 bajtů. Kromě toho je do adresního rozsahu namapována i ROM obou čipů 6530 a taktéž jejich řídicí registy. Adresní prostor tedy vypadal takto:

Od Do Obsah
$0000 $03FF 1024 bajtů RAM
$0400 $07FF volno (lze využít při použití větší RAM)
$0800 $0BFF volno -//-
$0C00 $0FFF volno -//-
$1000 $13FF volno -//-
$1400 $16FF volno -//-
$1700 $173F řídicí registry čipu 6530–003
$1740 $177F řídicí registry čipu 6530–002
$1780 $17BF 64 bajtů RAM čipu 6530–003
$17C0 $17FF 64 bajtů RAM čipu 6530–002
$1800 $1BFF 1024 bajtů ROM čipu 6530–003
$1C00 $1FFF 1024 bajtů ROM čipu 6530–002

Kvůli tomu, jak jsou adresní vodiče zapojeny na RAM i oba čipy 6530 (horní bity adresy se ignorují) se ve skutečnosti každý region (z pohledu mikroprocesoru) opakoval osmkrát. To je velmi důležité zejména pro poslední region v rozsahu $1C00 až $1FFF. Ten se opakuje osmkrát a je tedy viditelný v rozsazích:

Od Do
$1C00 $1FFF
$3C00 $3FFF
$5C00 $5FFF
$7C00 $7FFF
$9C00 $9FFF
$BC00 $BFFF
$CC00 $CFFF
$FC00 $FFFF

Proč je to tak důležité? Posledních šest bajtů adresního prostoru totiž mikroprocesor 6502 používá pro přečtení adres (vektorů), které použije pro skok při třech operacích:

Adresa Význam
$FFFA/$FFFB skok po NMI (nemaskovatelné přerušení)
$FFFC/$FFFD skok po RESET
$FFFE/$FFFF skok po IRQ nebo instrukci BRQ

Obsah těchto šesti bajtů je tedy uložen v ROM a je využit monitorem.

Poznámka: to je taktéž důvod, proč je ROM u všech mikropočítačů s mikroprocesorem MOS 6502 mapována na nejvyšší adresy.

Některé adresy jsou obsazeny monitorem a jejich jmenovka (label) se používá v assembleru:

Adresa Blok Jmenovka Funkce
$00EF oblast monitoru PCL dolní bajt PC
$00F0 oblast monitoru PGH horní bajt PC
$00F1 oblast monitoru P stavový registr
$00F2 oblast monitoru SF ukazatel na vrchol zásobníku
$00F3 oblast monitoru A obsah akumulátoru
$00F4 oblast monitoru Y obsah registru X
00F5 oblast monitoru X obsah registru Y
       
$1700 I/O čipu 003 PAD 6530–003 A Data Register
$1701 I/O čipu 003 PADD 6530–003 A Data Direction Register
$1702 I/O čipu 003 PBD 6530–003 B Data Register
$1703 I/O čipu 003 PBDD 6530–003 B Data Direction Register
       
$1704 časovač časovač na čipu 6530–003
$170F časovač časovač na čipu 6530–003
       
$17F5 rozhraní pro magnetofon SAL Starting Address – Low Order Byte
$17F6 rozhraní pro magnetofon SAH Starting Address – High Order Byte
$17F7 rozhraní pro magnetofon EAL Ending Address – Low Order Byte
$17F8 rozhraní pro magnetofon EAH Ending Address – High Order Byte
$17F9 rozhraní pro magnetofon ID File Identification Number
       
$17FA přerušovací subsystém NMIL NMI Vector – Low Order Byte
$17FB přerušovací subsystém NMIH NMI Vector – High Order Byte
$17FC přerušovací subsystém RSTL RST Vector – Low Order Byte
$17FD přerušovací subsystém RSTH RST Vector – High Order Byte
$17FE přerušovací subsystém IRQL IRQ Vector – Low Order Byte
$17FF přerušovací subsystém IRQH IRQ Vector – High Order Byte
       
$1800 rozhraní pro magnetofon DUMPT Start Address – Audio Tape Dump
$1873 rozhraní pro magnetofon LOADT Start Address – Audio Tape Load
       
$17F7 rozhraní pro dálnopis EAL Ending Address – Low Order Byte
$17F8 rozhraní pro dálnopis EAH Ending Address – High Order Byte

8. Řízení mikropočítače KIM-1 interní klávesnicí

Počítač KIM-1 byl primárně řízen primární klávesnicí, která vypadá následovně:

Obrázek 11: Klávesnice počítače KIM-1.

Kromě klasických kláves pro zadávání hexadecimálních číslic obsahovala klávesnice dalších sedm funkčních kláves. Jejich význam je vypsán v následující tabulce:

# Klávesa Stručný popis
1 0-F zápis hodnoty v režimu zadávání adres nebo zápisu dat
2 AD režim zadávání adresy
3 DA režim zápisu dat
4 + zvýšení adresy beze změny režimu
5 PC zobrazení obsahu programového čítače na displeji
6 GO spuštění programu od adresy zobrazené na displeji (režim AD)
7 ST zastavení programu a návrat do monitoru
8 RS provedení resetu systému
Poznámka: povšimněte si, že tento mikropočítač byl navržen (zapojen a naprogramován) takovým způsobem, aby dokázal provádět krokování po jednotlivých instrukcích. Krokování se povoluje přepínačem umístěným v pravého horním rohu.

9. Ukázka programování

Podívejme se nyní na způsob programování počítače KIM-1. Následující příklad byl převzat z originálního manuálu. Jedná se o jednoduchý program, který sečte dvě osmibitové hodnoty uložené v paměťových buňkách VAL1 a VAL2 a výsledek (šestnáct bitů) uloží do buněk umístěných na adresách $FA a $FB. Obsah těchto adres se zobrazí na displeji po skoku na adresu START:

POINTL               = $FA
POINTH               = $FB
START                = $1C4F
 
0000                 VAL1
0001                 VAL2
0002       18        PROG    CLC
0003       A5 00             LDA VALl
0005       65 01             ADC VAL2
0007       85 FA             STA POINTL
0009       A9 00             LDA #00
000B       85 FB             STA POINTH
000D       4C 4F 1C          JMP START
Poznámka: povšimněte si toho, jak se pracuje s příznakem C (přenos). Nejprve je C vynulován instrukcí CLC a posléze již může být použita instrukce ADC pro provedení součtu.

Uložení celého programu může vypadat následovně:

Stisknuté klávesy      Obsah LCD    Číslo kroku   Poznámka
 [AD]                   xxxx xx          1        režim zápisu adres
 [0]  [0] [0] [2]       0002 xx          2        počáteční adresa (instrukce CLC)
 [DA]                   0002 xx          3        režim zápisu dat
          [1] [8]       0002 18          4        instrukce CLC
 [+]      [A] [5]       0003 A5          5        instrukce LDA VAL1
 [+]      [0] [0]       0004 00          6
 [+]      [6] [5]       0005 65          7        ...
 [+]      [0] [1]       0006 01          8
 [+]      [8] [5]       0007 85          9
 [+]      [F] [A]       0008 FA         10
 [+]      [A] [9]       0009 A9         11
 [+]      [0] [0]       000A 00         12
 [+]      [8] [5]       000B 85         13
 [+]      [F] [B]       000C FB         14
 [+]      [4] [C]       000D 4C         15        instrukce JMP START
 [+]      [4] [F]       000E 4F         16
 [+]      [1] [C]       000F 1C         17

Ještě před spuštěním programu změníme hodnoty uložené do proměnných VAL1 a VAL2:

Stisknuté klávesy      Obsah LCD    Číslo kroku   Poznámka
 [AD]                   000F 1C         17A       režim zápisu adres
 [0]  [0] [F] [1]       00F1 xx         17B       režim dekadické aritmetiky (BCD)
 [DA]     [0] [0]       00F1 00         18
 [AD]                   00F1 00         19        znovu režim zápisu adres
 [0]  [0] [0] [0]       0000 xx         20        adresa VAL1
 [DA]                   0000 02         21        uložení hodnoty VAL1
 [+]      [0] [3]       0001 03         22        uložení hodnoty VAL2
 [+]          [GO]      0002 18         23        spuštění (jsme přesně na adrese 0002)

10. Funkce čipu MOS 6530

Čip MOS 6530 má v mikropočítači KIM-1 několik specifických funkcí. Tyto čipy jsou v systému dva a každý z nich je nepatrně odlišný (například se liší jejich adresový dekodér). Mezi společné vlastnosti obou čipů 6530 patří paměť ROM s kapacitou jednoho kilobajtu, přídavná paměť RAM s kapacitou 64 bajtů, dvojice osmibitových vstupně-výstupních bran PA a PB a časovač. Samotná existence paměti RAM nemá v případě mikropočítače KIM-1 až tak zásadní význam, protože tento počítač je navíc obsazen plnohodnotným paměťovým čipem s 1 kB RAM, ovšem například dále zmíněná herní konzole Atari 2600 je osazena podobným čipem MOS 6532, který obsahuje paměť 128 bajtů (ovšem žádnou ROM) a současně se jedná o jedinou operační paměť, kterou je tato konzole vybavena – ano, naprostá většina her pro Atari 2600 si vystačí se 128 bajty RAM, do které je mapován i zásobník.

Původně byl tento čip navržen pro počítače obsazené sedmi integrovanými obvody 6530, což by umožnilo konstrukci počítače se 7 kB ROM, 448 bajty RAM a 112 vstupně-výstupními piny. Takto maximalisticky navržený systém by tedy byl vhodný pro řídicí účely, kde 7 kB ROM plně dostačuje pro uložení celého programu a 448 bajtů RAM taktéž může být pro mnoho účelů dostačující. Nicméně s příchodem plnohodnotných mikrořadičů došlo k opuštění podobných koncepcí (i když žádný dobový mikrořadič nenabízel 112 IO pinů).

Kromě nabídky vstupně-výstupních pinů je důležitá a existence časovače vybaveného programovatelnou děličkou frekvence a osmibitovým čítačem. Po dočítání k nule se vygeneroval přerušovací signál IRQ, který mohl být přiveden například na vstup NMI mikroprocesoru. Později se i časovače a čítače staly nedílnou součástí mikrořadičů, počínaje již prvním jednoduchým mikrořadičem Intel 8048.

11. Vstupně-výstupní obvody a periferní zařízení

Přes dvojici čipů MOS 6530 zmíněných v předchozí kapitole bylo možné ovládat jak klávesnici a displej, tak i periferní zařízení. Pro čtení klávesnice a současně i pro ovládání displeje se používaly piny PA0 až PA6 i PB1 až PB4 společně s pomocnými integrovanými obvody 74145. Kromě toho bylo podporováno ukládání dat (a pochopitelně i strojového kódu) na běžnou audio kazetu, popř. na páskový magnetofon. Záznamový signál byl generován programově (nula jako šest pulsů s frekvencí 2415 Hz a jednička jako devět pulsů s frekvencí 3650 Hz – délka záznamu bitu je tedy vždy stejná: 2,46ms) a s využitím RC členů byl výsledný signál vyhlazen a poslán na audio výstup. Pro čtení se používal fázový závěs, který ze vstupního (zkresleného) signálu zrekonstruoval frekvence a tím pádem i sekvenci jedniček a nul. Zajímavá je i podpora pro připojení dálnopisu, který bylo možné využít jako tiskárnu i pro vstup dat (plně duplexní režim).

12. Programátorský model mikroprocesoru MOS 6502

Z programátorského hlediska se MOS 6502 dosti podstatným způsobem odlišuje jak od Intelu 8080, tak i od čipu RCA-1802. Zatímco procesor Intel 8080 obsahoval poměrně rozsáhlou sadu obecně použitelných osmibitových registrů (A, B, C, D, E, H a L), měl 6502 pouze jeden akumulátor (registr A) a dva index-registry X a Y. Oba typy procesorů samozřejmě obsahovaly další speciální registry, jako ukazatel na vrchol zásobníku (SP), programový čítač (PC) a příznakový registr (F).

Na první pohled by se mohlo zdát, že počet registrů mikroprocesoru MOS 6502 je nedostatečný pro provádění většiny aritmetických či logických operací. Ve skutečnosti tomu tak není, protože tento procesor podporuje načtení druhého operandu z operační paměti (rychlost RAM nebyla tak limitujícím faktorem, jako je tomu dnes). U mnoha instrukcí je podporován větší počet adresovacích režimů, celkově je možné operandy strojových instrukcí adresovat třinácti navzájem odlišnými způsoby. Při adresování se často používají oba index-registry, které je možné inkrementovat a dekrementovat – tím je umožněno provádění blokových přenosů dat, mazání souvislé oblasti paměti atd.

Mikroprocesor MOS 6502 také zavádí pojem takzvané nulté stránky paměti. Jedná se o prvních 256 bytů operační paměti, kterou je možné adresovat zjednodušeným způsobem. Adresa libovolné buňky z nulté stránky paměti je totiž uložena na jednom byte v operačním kódu instrukce, takže celá instrukce může být kratší (typicky pouze dva byte). Současně je i provádění instrukcí adresujících nultou stránku paměti rychlejší než při šestnáctibitovém adresování. Z tohoto důvodu se můžeme na nultou stránku paměti dívat jako na pole 256 registrů, resp. alternativně na 128 plnohodnotně využitelných 16bitových ukazatelů (musíme si uvědomit, že operační paměti byly v té době stejně rychlé jako procesor, takže čtení či zápis dat do paměti byla záležitost jednoho či dvou cyklů). Myšlenka nulté stránky paměti byla dále rozšířena v procesoru Motorola 6809, kde se však tato stránka dala v adresovatelné paměti posouvat na libovolné místo.

13. Registry a příznakové bity

V předchozí kapitole jsme si řekli, že MOS 6502 obsahoval pouze minimální, ovšem ještě prakticky použitelný počet registrů. Tyto registry jsou vypsány v následující tabulce:

# Registr Šířka Význam
1 A 8 bitů akumulátor
2 X 8 bitů index registr
3 Y 8 bitů index registr
4 SP 8 bitů část ukazatele na vrchol zásobníku (+ $0100)
5 PC 16 bitů čítač instrukcí
6 P 7/8 bitů příznakový a stavový registr

Většina aritmetických a logických operací používala jako jeden z operandů akumulátor; druhý operand byl typicky načítán z operační paměti. Přitom se pro adresování často používaly index registry X a Y. Ukazatel na vrchol zásobníku dokázal adresovat zásobník v rozsahu $0100 až $01FF, tedy 256 bajtů. A příznakový registr měl obsazen jen sedm bitů:

Bit Označení Význam
7 N záporný výsledek
6 V přetečení do sedmého bitu
5 neobsazeno
4 B rozlišení přerušení od instrukce BRK či PHP
3 D režim výpočtů: binární versus BCD
2 I zákaz přerušení
1 Z nulový výsledek
0 C přenos

14. Adresovací režimy, využití registrů X a Y

Adresovací režimy odlišují MOS 6502 od naprosté většiny ostatních mikroprocesorů a umožňují použít odlišný styl programování založený na efektivním použití nulté stránky paměti a obou index registrů. Existuje třináct adresovacích režimů, ovšem žádná instrukce nevyužívá všechny. Některé adresovací režimy jsou určeny pouze pro skoky, další pro implicitní operandy atd.:

# Zápis Název Assembler Stručný popis
1 A accumulator INS A operandem je přímo akumulátor
2 abs absolute INS $LLHH za instrukcí následuje šestnáctibitová adresa, na níž je operand uložen
3 abs,X absolute, X-indexed INS $LLHH,X za instrukcí následuje šestnáctibitová adresa, která je přičtena k X
4 abs,Y absolute, Y-indexed INS $LLHH,Y za instrukcí následuje šestnáctibitová adresa, která je přičtena k Y
5 # immediate INS #$BB za instrukcí následuje bajt s konstantou
6 impl implied INS operand je odvozen přímo z instrukce, například INX
7 ind indirect INS ($LLHH) nepřímá adresace přes adresu uloženou za instrukcí (ta je ukazatelem), nepřímý skok
8 X,ind X-indexed, indirect INS ($LL,X) efektivní adresa je spočtena z hodnoty uložené na (LL+X)
9 ind,Y indirect, Y-indexed INS ($LL),Y efektivní adresa je spočtena z hodnoty uložené na LL, k výsledku se přičte Y
10 rel relative INS $BB použito u relativních skoků; za instrukcí je jeden bajt reprezentující offset se znaménkem
11 zpg zeropage INS $LL operand je uložen na nulté stránce na adrese LL
12 zpg,X zeropage, X-indexed INS $LL,X operand je uložen na nulté stránce na adrese LL+X
13 zpg,Y zeropage, Y-indexed INS $LL,Y operand je uložen na nulté stránce na adrese LL+Y
Poznámka: použití registrů X a Y není zcela symetrické, protože se od sebe liší podporou, resp. nepodporou adresovacího režimu X,ind a ind,Y. Zejména poslední zmíněný režim lze použít pro operace s poli, přesuny bloků, mazání bloků atd.

15. Aritmetické a logické instrukce

Mikroprocesor MOS 6502 obsahuje pouze 56 instrukcí, přičemž mnoho instrukcí podporuje více adresovacích režimů a tudíž i více variant (i tak však zdaleka není obsazeno všech 256 možných kombinací – ty byly postupně obsazovány v dalších procesorech, popř. na původním MOS 6502 měly sice oficiálně nedokumentovanou, ovšem logickou/očekávanou funkci). Nejprve si popíšeme aritmetické a logické instrukce mikroprocesoru MOS 6502. Většina dále popsaných instrukcí jako svůj první operand akceptuje akumulátor a druhým operandem může být konstanta, popř. hodnota načtená z operační paměti s využitím výše popsaných adresovacích režimů. Výjimkou jsou instrukce s jediným operandem, v nichž nemusí vystupovat akumulátor popř. instrukce, v nichž je přímo operand vyjádřen názvem instrukce (INX atd.):

# Instrukce Plné jméno Popis
1 ADC add with carry součet hodnoty s akumulátorem (včetně přetečení)
2 SBC subtract with carry odečtení hodnoty od akumulátoru (včetně výpůjčky)
3 AND and with accumulator logické AND s akumulátorem
4 ORA or with accumulator logické OR s akumulátorem
5 EOR exclusive or with accumulator logické XOR s akumulátorem
       
6 INC increment zvýšení hodnoty o 1 (kupodivu nelze s akumulátorem, ovšem s pamětí ano)
7 INX increment X zvýšení hodnoty index registru X o 1
8 INY increment Y zvýšení hodnoty index registru Y o 1
9 DEC decrement snížení hodnoty o 1 (opět nelze s akumulátorem)
10 DEX decrement X snížení hodnoty index registru X o 1
11 DEY decrement Y snížení hodnoty index registru Y o 1
       
12 CMP compare with accumulator odečtení hodnoty od akumulátoru bez zápisu výsledku
13 CPX compare with X odečtení hodnoty od index registru X bez zápisu výsledku
14 CPY compare with Y odečtení hodnoty od index registru Y bez zápisu výsledku
15 BIT bit test logické AND bez uložení výsledků (změní se jen příznakové bity)
       
16 ASL arithmetic shift left aritmetický posun doleva o jeden bit
17 LSR logical shift right logický posun doprava o jeden bit
18 ROL rotate left rotace doleva o jeden bit
19 ROR rotate right rotace doprava o jeden bit

16. Skoky a rozvětvení

Následují instrukce skoku, popř. skoku a výskoku ze subrutiny (podprogramu). Skákat je možné v rámci celé adresovatelné RAM, tedy v rozsahu 64kB:

# Instrukce Plné jméno Popis
20 JMP jump skok (existuje několik adresovacích režimů)
21 JSR jump to subroutine skok do podprogramu s uložením návratové adresy na zásobník
22 RTS return from subroutine návrat z podprogramu
23 RTI return from interrupt návrat z prerušovací rutiny

Relativní skoky v rámci rozsahu –128 až 127 jsou provedeny na základě vyhodnocení nějaké podmínky, konkrétně testování zvoleného příznakového bitu. Oproti Motorole 6800 byl počet podmíněných skoků snížen na polovinu, takže některé kombinace podmínek neexistují (včetně BRA a BRN):

# Instrukce Plné jméno Popis
24 BCC branch on carry clear rozvětvení za podmínky C==0
25 BCS branch on carry set rozvětvení za podmínky C==1
26 BEQ branch on equal (zero set) rozvětvení za podmínky Z==1
27 BMI branch on minus (negative set) rozvětvení za podmínky N==1
28 BNE branch on not equal (zero clear) rozvětvení za podmínky Z==0
29 BPL branch on plus (negative clear) rozvětvení za podmínky N==0
30 BVC branch on overflow clear rozvětvení za podmínky O==0
31 BVS branch on overflow set rozvětvení za podmínky O==1

17. Další instrukce

Další skupinou instrukcí jsou instrukce určené pro přesuny dat mezi operační pamětí a registry, popř. mezi registry navzájem:

# Instrukce Plné jméno Popis
32 LDA load accumulator načtení bajtu do akumulátoru
33 LDX load X načtení bajtu do registru X
34 LDY load Y načtení bajtu do registru Y
       
35 STA store accumulator uložení hodnoty akumulátoru
36 STX store X uložení hodnoty registru X
37 STY store Y uložení hodnoty registru Y
       
38 TAX transfer accumulator to X přesun X=A
39 TAY transfer accumulator to Y přesun Y=A
40 TSX transfer stack pointer to X přesun X=SP
41 TXA transfer X to accumulator přesun A=X
42 TXS transfer X to stack pointer přesun SP=X
43 TYA transfer Y to accumulator přesun A=Y
       
44 PHA push accumulator uložení akumulátoru na zásobník
45 PHP push processor status (SR) uložení příznaků na zásobník
46 PLA pull accumulator obnovení akumulátoru ze zásobníku
47 PLP pull processor status (SR) obnovení příznaků ze zásobníku

Několik instrukcí pracuje s příznakovými bity:

# Instrukce Plné jméno Popis
48 CLC clear carry C=0
49 CLD clear decimal D=0
50 CLI clear interrupt disable I=0
51 CLV clear overflow V=0
       
52 SEC set carry C=1
53 SED set decimal D=1
54 SEI set interrupt disable I=1
Poznámka: povšimněte si, že zdaleka ne všechny příznaky je možné přímo nastavit nebo vynulovat. Ovšem mnoho příznaků je nastavováno či nulováno jinými instrukcemi, například BIT či CMP, čehož je možné využít (při výpočtech vlastně musíme přímo manipulovat jen s příznakem C kvůli rotacím).

Zbývají už jen dvě instrukce nezařazené do žádné výše uvedené skupiny:

# Instrukce Plné jméno Popis
55 NOP no operation přechod na další instrukci
56 BRK break / interrupt uložení PC a SR na zásobník, zastavení (návrat do monitoru)
Poznámka: instrukční sadu mikroprocesoru MOS 6502 si lze dokonce odzkoušet na prakticky jakémkoli současném počítači či tabletu, a to bez nutnosti instalace assembleru a/nebo simulátoru (popř. emulátoru některého osmibitového domácího mikropočítače). Na stránce http://6502asm.com/ se totiž nachází vydařený simulátor virtuálního počítače vybaveného jednoduchým displejem, klávesnicí a v neposlední řadě právě mikroprocesorem MOS 6502. Tento simulátor, jenž byl naprogramovaný Stianem Sorengem, obsahuje editor (ve skutečnosti se v současné verzi jedná o pouhé textové pole umístěné na HTML stránce), do něhož je možné zapsat program v jazyku symbolických instrukcí a následně tento program přeložit vestavěným assemblerem a poté i spustit.

18. Jiné použití MOS 6502 v minimalistickém zařízení – herní konzole Atari 2600

Zatímco mikropočítač KIM-1 byl určen primárně pro výuku programování (ve strojovém kódu či assembleru) popř. pro jednoduché řídicí účely, byl o přibližně dva roky později vydán zcela odlišný typ stroje založeného na stejném mikroprocesoru MOS 6502 (resp. na jeho zjednodušené variantě). Jednalo se o slavnou herní konzoli Atari 2600 neboli Atari VCS, která byla dokonce realizována ještě s menším počtem čipů s velkou integrací (jeden z čipů byl ovšem zákaznický – TIA). Opět se tedy jednalo o minimalisticky pojatý hardware, ovšem určený pro zcela odlišnou skupinou uživatelů – hráče videoher.

pc6613

Obrázek 12: Schéma zapojení herní konzole Atari 2600 s osmibitovým mikroprocesorem MOS 6507.

Při návrhu herní konzole Atari 2600 se její konstruktéři snažili o vytvoření co nejjednoduššího hardware, protože (v kontextu doby zcela správně) předpokládali, že většinu funkcionality by mělo zařídit programové vybavení a nikoli složitý a především drahý hardware. Navíc jednodušší hardware samozřejmě znamenal snížení výsledné ceny herní konzole na úroveň dostupnou i pro průměrné americké rodiny, což se ukázalo být velmi důležité. Původní prototypy sice byly zkonstruovány s využitím většího množství čipů o poměrně nízké integraci, ovšem výsledná verze konzole se – kromě přibližně třiceti diskrétních součástek – skládala pouze z trojice čipů s vyšší mírou integrace. Jednalo se především o samotný osmibitový mikroprocesor MOS 6507 s taktovací frekvencí 1,2 MHz, jenž byl umístěný v 28pinovém pouzdru (i díky tomu byla jeho cena nižší, než cena za plnohodnotný čtyřicetipinový MOS 6502, ovšem standardní kapacita EPROM byla kvůli tomu omezena na pouhé čtyři kilobajty). K mikroprocesoru byl připojen čip MOS 6532, jenž v sobě kombinoval operační paměť o kapacitě pouhých 128 bajtů (nikoli kilobajtů a už vůbec ne megabajtů) a taktéž dvojici osmibitových paralelních portů, k nimž byly mj. připojeny i oba digitální joysticky.

Poznámka: čip MOS 6532 je obdobou čipu MOS 6530 zmíněného výše a použitého v počítači KIM-1. Existují zde rozdíly (kapacita RAM atd.), ovšem základní ovládání je podobné.
pc6612

Obrázek 13: Herní konzole Atari 2600 vybavená mikroprocesorem MOS 6507, což je varianta původního čipu MOS 6502, ovšem se zmenšeným počtem pinů adresové sběrnice a několika dalšími omezeními.

Třetím čipem, který se velkou mírou podílel na úspěchu herní konzole Atari 2800, byl čip nazvaný TIA, neboli Television Interface Adaptor. Jednalo se o čip navržený Jayem Minerem, který se kromě práce na TIA později proslavil svým podílem na vývoji čipů ANTIC a GTIA určených pro osmibitové domácí počítače Atari a dále pak na vývoji čipové sady pro slavné počítače Amiga. Jay Miner ve svém čipu TIA, který byl postaven na bázi dvou prototypů navržených Joem Decuirem a Ronem Milnerem (jeden z prototypů se nazýval Stella, později se tak začal označovat i čip TIA a dokonce i celá konzole), implementoval jak jednoduchý ale překvapivě výkonný grafický řadič, tak i generátor zvuků. Jedním z typických znaků čipu TIA i některých dalších integrovaných obvodů navržených Jayem Minerem bylo použití polynomických čítačů (založených na posuvném registru se zpětnou vazbou) namísto běžných čítačů binárních. Předností polynomických čítačů je to, že na čipu zaberou přibližně čtvrtinu plochy v porovnání s binárními čítači, nevýhodou pak fakt, že se jejich hodnota nemění o jedničku, ale generuje se pseudonáhodná sekvence čísel. Nicméně pro potřeby generování obrazu i zvuků byly polynomické čítače díky své jednoduchosti výhodnější.

V následující tabulce jsou vypsány základní technické parametry herní konzole Atari 2600:

Mikroprocesor MOS 6507
Grafický řadič TIA
Počet barev 128 NTSC, 104 PAL, pouze 8 SECAM
Zvuková syntéza TIA
Hodinová frekvence 1,19 MHz
Adresový rozsah 8192 bajtů
Kapacita RAM 128 bajtů
Kapacita ROM 0 bajtů
Kapacita ROM/EPROM na cartridge standardně 4 kB, s bankou i 64 kB
Vstupy 2× digitální joystick, 2× paddle
Výstup televizní signál (úpravou lze získat i kompozitní video)

19. Od MOS 6502 k čipu 65C816

Další vývoj řady MOS 6502 se ubíral několika směry. Jednou z větví je šestnáctibitový čip s označením 65C816GS. Zajímavé je, že vývoj tohoto mikroprocesoru byl zahájen na základě dohody mezi společností Apple a firmou WDC, v níž byl tento čip následně navržen a vyroben. CEO a současně i zakladatelem firmy WDC byl totiž známý inženýr Bill Mensch, který se v minulosti podílel na návrhu dvou osmibitových mikroprocesorů, které dost významným způsobem ovlivnily vývoj výpočetní techniky na přelomu sedmdesátých a osmdesátých let minulého století. Bill Mensch spolunavrhoval čip Motorola 6800 (proto jsme se o něm již zmiňovali v úvodní části článku) i podpůrné obvody pro tento mikroprocesor a posléze se podílel i na návrhu MOS 6502, takže není divu, že po přechodu do společnosti WDC prosadil, aby byly nové mikroprocesory navrhované, vyráběné a licencované touto firmou postaveny na základech čipu MOS 6502. Prvním z těchto čipů byl WDC 65C02, což byla varianta původního NMOS čipu 6502, která navíc obsahovala opravy některých chyb v původním návrhu tohoto mikroprocesoru (nepřímé skoky na adresy ležící na konci stránek atd.) a rozšíření jeho instrukční sady.

appleII

Obrázek 14: Mikropočítač Apple II postavený na čipu MOS 6502.

Root Docker

Odtud už byl vlastně jen docela malý krůček k tomu, aby se osmibitový čip WDC 65C02 rozšířil na šestnáctibitový čip WDC 65c816. Rozklíčovat jméno tohoto mikroprocesoru je při znalosti jeho historie snadné: 65 se odkazuje na řadu 6502, c značí výrobní technologii CMOS (mimochodem: plně statickou – díky malému počtu registrů je bylo možné implementovat formou klopných obvodů, což mj. umožňovalo plynule zmenšovat frekvenci hodinového signálu až na nulu) a dvojice čísel 816 znamená, že tento mikroprocesor mohl pracovat v téměř 100% kompatibilním osmibitovém režimu 6502, nebo mohl být naopak přepnutý do režimu 16bitového. Právě tato vlastnost byla vyžadována zástupci společnosti Apple, kteří potřebovali, aby jejich nový počítač Apple II GS mohl být zpětně kompatibilní s úspěšnou řadou osmibitových mikropočítačů Apple ][ (prostá emulace byla vzhledem k relativně nízkému výkonu tehdejších čipů prakticky nemyslitelná).

appleIIGS

Obrázek 15: Mikropočítač Apple II GS postavený na čipu WDC 65c816.

20. Odkazy na Internetu

  1. 6502 PRIMER: Building your own 6502 computer
    http://wilsonminesco.com/6502primer/
  2. KIM-1
    https://en.wikipedia.org/wiki/KIM-1
  3. KIM-1 User Manual
    https://kim-1.com/docs/usrman.htm
  4. What is the KIM-1?
    http://www.6502.org/trainer­s/buildkim/kim.htm
  5. Build Your Own KIM-1 with Ruud Baltissen
    http://www.6502.org/trainer­s/buildkim/buildkim.htm
  6. 6502 Instruction Set
    https://www.masswerk.at/6502/6502_in­struction_set.html
  7. Chip Hall of Fame: MOS Technology 6502 Microprocessor
    https://spectrum.ieee.org/tech-history/silicon-revolution/chip-hall-of-fame-mos-technology-6502-microprocessor
  8. Single-board computer
    https://en.wikipedia.org/wiki/Single-board_computer
  9. Apple II History Home
    http://apple2history.org/
  10. www.6502.org
    http://www.6502.org/
  11. 6502 PRIMER: Building your own 6502 computer – clock generator
    http://wilsonminesco.com/6502pri­mer/ClkGen.html
  12. RCA 1802 (Wikipedia)
    https://en.wikipedia.org/wi­ki/RCA_1802
  13. Great Microprocessors of the Past and Present (V 13.4.0)
    http://www.cpushack.com/CPU/cpu.html
  14. Chip Hall of Fame: RCA CDP 1802
    https://spectrum.ieee.org/se­miconductors/processors/chip-hall-of-fame-rca-cdp-1802
  15. The CPUs of Spacecraft: Computers in Space
    http://cpushack.com/space-craft-cpu.html
  16. Part I: RCA 1802, weirdness at its best (1974)
    http://www.cpushack.com/CPU/cpu2­.html#Sec2Part1
  17. Embedded Processor and Microcontroller primer and FAQ
    http://www.faqs.org/faqs/mi­crocontroller-faq/primer/
  18. COSMAC ELF: The CDP1802’s Place in Microcomputing History
    http://www.cosmacelf.com/
  19. Cosmac 1802
    http://www.nyx.net/~lturner/pu­blic_html/Cosmac.html
  20. CDP1802AC/3: High-Reliability CMOS 8-Bit Microprocessor
    https://www.renesas.com/e­u/en/www/doc/datasheet/cdp1802ac-3.pdf
  21. A Short Course In Programming
    http://www.ittybittycompu­ters.com/IttyBitty/ShortCor­.htm
  22. The 1802 Instruction Set
    https://www.atarimagazines­.com/computeii/issue3/page52­.php
  23. Jak se zrodil procesor?
    https://www.root.cz/clanky/jak-se-zrodil-procesor/
  24. Osmibitové mikroprocesory a mikrořadiče firmy Motorola (1)
    https://www.root.cz/clanky/osmibitove-mikroprocesory-a-mikroradice-firmy-motorola-1/
  25. Mikrořadiče a jejich použití v jednoduchých mikropočítačích
    https://www.root.cz/clanky/mikroradice-a-jejich-pouziti-v-jednoduchych-mikropocitacich/
  26. Mikrořadiče a jejich aplikace v jednoduchých mikropočítačích (2)
    https://www.root.cz/clanky/mikroradice-a-jejich-aplikace-v-jednoduchych-mikropocitacich-2/
  27. Československé osmibitové počítače
    https://www.root.cz/clanky/ces­koslovenske-osmibitove-pocitace/
  28. 25 Microchips That Shook the World
    https://spectrum.ieee.org/tech-history/silicon-revolution/25-microchips-that-shook-the-world
  29. COSMAC 1802: history of microprocessors in space
    https://www.retrotechnolo­gy.com/memship/1802_space­craft.html
  30. COSMAC 1802 on AMSATs running IPS
    https://www.retrotechnolo­gy.com/memship/amsat.html
  31. Technické informace o sondě Galileo
    https://www.retrotechnolo­gy.com/memship/galileo.txt
  32. COSMAC “ELF” Microcomputer Trainer User’s Manual:
    http://www.cosmacelf.com/pu­blications/books/cosmac-elf-manual.pdf
  33. RCA COSMAC MICROPROCESSOR
    http://www.decodesystems.com/cosmac/
  34. Netronics ELF II
    https://oldcomputers.net/netronics-elf.html
  35. Netronics Elf II
    http://www.qwkslva.com/Mu­seum/Netronics_Elf/netronic­s_elf.html
  36. Assorted COSMAC Computers
    http://www.cosmacelf.com/ga­llery/assorted-cosmac-computers.html
  37. RCA 1802 COSMAC (plocha čipu)
    http://visual6502.org/ima­ges/pages/RCA_1802_die_shot­s.html
  38. Joseph Weisbecker
    https://en.wikipedia.org/wi­ki/Joseph_Weisbecker
  39. Joe Weisbecker Video Game Collection
    https://digital.hagley.org/weisbecker
  40. CDP1802A
    https://www.renesas.com/us/en/pro­ducts/space-harsh-environment/harsh-environment/microprocessors-peripherals/device/CDP1802A­.html#overviewInfo
  41. Grafické karty a grafické akcelerátory (7)
    https://www.root.cz/clanky/graficke-karty-a-graficke-akceleratory-7/
  42. Osmibitové mikrořadiče Rabbit: praví dědicové mikroprocesoru Zilog Z80
    https://www.root.cz/clanky/osmibitove-mikroradice-rabbit-pravi-dedicove-mikroprocesoru-zilog-z80
  43. Čtyřicet let existence slavných mikroprocesorů řady Motorola 68000
    https://www.root.cz/clanky/ctyricet-let-existence-slavnych-mikroprocesoru-rady-motorola-68000/
  44. Intel 8008 Instruction Set
    https://www.bytecollector­.com/archive/mark8/My_Mark-8_Info/Software/8008_ReferenceCard.PDF
  45. Intel 8008 instruction set
    https://www.pastraiser.com/cpu/i8008/i8008_op­codes.html
  46. Silicon on sapphire
    https://en.wikipedia.org/wi­ki/Silicon_on_sapphire
  47. COSMAC ELF Lives Again, In FPGA
    https://hackaday.com/2020/01/23/cosmac-elf-lives-again-in-fpga/
  48. verilog1802
    https://github.com/jamesbow­man/verilog1802
  49. 1802 FIG FORTH
    https://www.retrotechnolo­gy.com/memship/figforth_1802­.html
  50. SuperElf
    http://oldcomputermuseum.com/su­per_elf.html
  51. COSMAC na Hackaday
    https://hackaday.com/tag/cosmac/
  52. Vintage COSMAC Elf Is Pretty Close To Original
    https://hackaday.com/2017/03/06/vin­tage-cosmac-elf-is-pretty-close-to-original/
  53. KIM Uno: a DIY clone of the KIM-1
    https://obsolescence.wixsi­te.com/obsolescence/kim-uno-summary-c1uuh
  54. Colorburst
    https://en.wikipedia.org/wi­ki/Colorburst
  55. List of common resolutions
    https://en.wikipedia.org/wi­ki/List_of_common_resoluti­ons
  56. Intel MCS-8 (SIM8–01)
    http://oldcomputermuseum.com/mcs-8.html
  57. ATOMIC THEORY AND PRACTICE
    http://members.casema.nl/hha­ydn/howel/Acorn/Atom/atap/a­tap.htm
  58. The Acorn Atom review
    http://members.casema.nl/hhaydn/index-uk.html
  59. The Acorn Atom
    https://fjkraan.home.xs4a­ll.nl/comp/atom/index.html