Technologie MOS 6502 - MOS Technology 6502
Obecná informace | |
---|---|
Spuštěno | 1975 |
Běžní výrobci | |
Výkon | |
Max. Taktovací frekvence CPU | 1 MHz až 3 MHz |
Šířka dat | 8 |
Šířka adresy | 16 |
Architektura a klasifikace | |
Instrukční sada | MOS 6502 |
Instrukce | 56 |
Fyzické specifikace | |
Tranzistory | |
Balíčky | |
Dějiny | |
Předchůdce | |
Nástupce |
MOS Technology 6502 (typicky výslovný „šedesát pět-nula-dva“ nebo „šest až pět-nula-dva“) je 8-bitový mikroprocesor , který byl navržen tak malým týmem vedeným Chuck rozšiřuje pro MOS Technology . Konstrukční tým dříve pracoval ve společnosti Motorola na projektu Motorola 6800 ; 6502 je v podstatě zjednodušená, levnější a rychlejší verze tohoto designu.
Když byl 6502 představen v roce 1975, byl se značným náskokem nejméně nákladným mikroprocesorem na trhu. Zpočátku se prodávalo za méně než šestinu nákladů na konkurenční designy větších společností, jako jsou 6800 nebo Intel 8080 . Jeho zavedení způsobilo rychlý pokles cen na celém trhu procesorů. Spolu se Zilogem Z80 to vyvolalo sérii projektů, které vyústily v domácí počítačovou revoluci na začátku 80. let minulého století.
Populární herní konzole a počítače, například Atari 2600 , 8bitová rodina Atari , Apple II , Nintendo Entertainment System , Commodore 64 , Atari Lynx , BBC Micro a další, používají 6502 nebo varianty základního designu. Brzy po představení 6502 koupila společnost MOS Technology společnost Commodore International , která pokračovala v prodeji mikroprocesoru a licencí jiným výrobcům. V prvních dnech 6502, to byla druhá ze zdrojů by Rockwell a Synertek a později povolil jiným společnostem.
Ve své podobě CMOS ( 65C02 , který byl vyvinut společností Western Design Center ) je rodina 6502 i nadále široce používána ve vestavěných systémech s odhadovanými objemy výroby v řádu stovek milionů.
Historie a použití
Původ v Motorole
6502 byl navržen mnoha stejnými inženýry, kteří navrhli rodinu mikroprocesorů Motorola 6800 . Motorola zahájila projekt 6800 mikroprocesorů v roce 1971 s Tomem Bennettem jako hlavním architektem. Rozložení čipů začalo koncem roku 1972, prvních 6800 čipů bylo vyrobeno v únoru 1974 a celá rodina byla oficiálně vydána v listopadu 1974. John Buchanan byl konstruktérem čipu 6800 a Rod Orgill, který později vyrobil 6501, pomáhal Buchananovi s analýzy obvodů a rozložení čipů. Bill Mensch nastoupil do společnosti Motorola v červnu 1971 po absolvování University of Arizona (ve věku 26 let). Jeho prvním úkolem bylo pomoci definovat periferní integrované obvody pro rodinu 6800 a později byl hlavním konstruktérem adaptéru 6820 Peripheral Interface Adapter (PIA). Inženýři společnosti Motorola mohli spouštět analogové a digitální simulace na sálovém počítači IBM 370-165 . Bennett v roce 1973 najal Chucka Peddleho, aby provedl architektonickou podporu prací na 6800 rodinných produktech, které již probíhají. Přispěl v mnoha oblastech, včetně návrhu 6850 ACIA (sériové rozhraní).
Cílovými zákazníky společnosti Motorola byly zavedené elektronické společnosti jako Hewlett-Packard , Tektronix , TRW a Chrysler . V květnu 1972 začali inženýři společnosti Motorola navštěvovat vybrané zákazníky a sdílet podrobnosti o jejich navrhovaném 8bitovém mikroprocesorovém systému s ROM, RAM, paralelním a sériovým rozhraním. Na začátku roku 1974 poskytli technické vzorky čipů, aby zákazníci mohli prototypovat jejich návrhy. Strategie „celkové rodiny produktů“ společnosti Motorola se nezaměřovala na cenu mikroprocesoru, ale na snížení celkových nákladů na design zákazníka. Nabízeli vývojový software na počítači timeshare, ladicí systém „EXORciser“, školení na místě a podporu inženýra v terénu. Intel i Motorola původně oznámily cenu 360 USD za jeden mikroprocesor. Skutečná cena za výrobní množství byla mnohem nižší. Motorola nabídla designovou sadu obsahující 6800 se šesti podpůrnými čipy za 300 dolarů.
Peddle, který by doprovázel prodejce na návštěvách zákazníků, zjistil, že zákazníky odrazovaly vysoké náklady na mikroprocesorové čipy. Současně tyto návštěvy vždy vedly k tomu, že inženýři, které představil, vytvořili seznamy požadovaných pokynů, které byly mnohem menší než „všechny tyto fantastické pokyny“, které byly zahrnuty v 6800. Peddle a další členové týmu začali navrhovat návrh vylepšená funkce, zmenšený mikroprocesor. V té době měl nový závod na výrobu polovodičů Motorola v Austinu v Texasu potíže s výrobou čipů MOS a polovina roku 1974 byla počátkem celoroční recese v polovodičovém průmyslu. Také mnoho zaměstnanců Mesa, Arizona nebylo spokojeno s nadcházejícím přemístěním do Austinu v Texasu .
Vedení divize Motorola Semiconductor Products Division bylo zaplaveno problémy a nejevilo zájem o levný návrh mikroprocesoru Peddle. Nakonec Peddle dostal oficiální dopis, který mu řekl, aby na systému přestal pracovat. Peddle reagoval na objednávku tím, že informoval Motorolu, že dopis představoval oficiální prohlášení o „opuštění projektu“, a duševní vlastnictví, které do té doby vyvinul, je nyní jeho. V rozhovoru z listopadu 1975 předseda Motoroly Robert Galvin nakonec souhlasil, že koncept Peddle byl dobrý a že divize propásla příležitost: „Nevybrali jsme správné vůdce v divizi Semiconductor Products.“ Divize byla reorganizována a vedení vyměněno. Nový viceprezident skupiny John Welty řekl: „Prodejní organizace polovodičů ztratila citlivost na potřeby zákazníků a nemohla se rychle rozhodovat.“
Přechod na technologii MOS
Peddle začal hledat mimo Motorola zdroj financování tohoto nového projektu. On zpočátku se přiblížil Mostek CEO LJ Sevin , ale on odmítl. Sevin později připustil, že to bylo proto, že se bál, že by je Motorola žalovala.
Zatímco Peddle navštěvoval Ford Motor Company na jedné ze svých prodejních cest, Bob Johnson, pozdější vedoucí divize Fordovy automatizace motorů, zmínil, že jejich bývalý kolega John Paivinen se přestěhoval do General Instrument a vyučil se návrhem polovodičů. Od té doby se přesunul a dělal velmi zajímavou práci na čipsetech kalkulačky v nové společnosti, kterou založil v Valley Forge v Pensylvánii .
Paivinen založil společnost MOS Technology v roce 1969 s dalšími dvěma vedoucími pracovníky společnosti General Instrument, Mort Jaffe a Don McLaughlin. Allen-Bradley , dodavatel elektronických součástek a průmyslových kontrol, získal většinový podíl v roce 1970. Společnost navrhla a vyrobila vlastní integrované obvody pro zákazníky a vyvinula řadu čipů kalkulačky.
Poté, co mostecké úsilí padlo, se Peddle přiblížil k Paivinenovi, který „to okamžitě dostal“. Dne 19. srpna 1974 odešli Chuck Peddle, Bill Mensch, Rod Orgill, Harry Bawcom, Ray Hirt, Terry Holdt a Wil Mathys z Motoroly, aby se připojili k MOS. Mike Janes se připojil později. Ze sedmnácti návrhářů čipů a lidí s uspořádáním v týmu 6800 jich osm odešlo. Cílem týmu bylo navrhnout a vyrobit levný mikroprocesor pro vestavěné aplikace a zacílit na co nejširší zákaznickou základnu. To by bylo možné pouze v případě, že by mikroprocesor měl nízké náklady a tým stanovil cenový cíl na 5 $ v objemu. Mensch později uvedl, že cílem není samotná cena procesoru, ale vytvořit sadu čipů, které by se mohly prodávat za 20 dolarů, aby mohly konkurovat nedávno představenému procesoru Intel 4040, který se v podobné kompletní čipové sadě prodával za 29 dolarů.
Čipy se vyrábějí tiskem více kopií designu čipu na povrch „oplatky“ , tenkého disku z vysoce čistého křemíku. Menší čipy lze vytisknout ve větším počtu na stejnou oplatku, čímž se sníží jejich relativní cena. Oplatky navíc vždy obsahují určitý počet drobných fyzických vad, které jsou roztroušeny po povrchu. Jakýkoli čip vytištěný na tomto místě selže a musí být zlikvidován. Menší čipy znamenají, že jakákoli jednotlivá kopie bude méně pravděpodobně vytištěna na vadě. Z obou těchto důvodů jsou náklady na konečný produkt silně závislé na velikosti provedení čipu.
Původní 6800 čipů mělo být 180 × 180 mil (4,6 × 4,6 mm) , ale rozvržení bylo dokončeno na 212 × 212 mil (5,4 × 5,4 mm) , neboli ploše 29,0 mm 2 . U nového designu požadoval nákladový cíl velikost cíle 153 × 168 mils (3,9 × 4,3 mm) , neboli plochu 16,6 mm 2 . K dosažení tohoto cíle bude zapotřebí několika nových technik.
Přechod na NMOS
Na trh dorazily dva významné pokroky právě v době, kdy byl 6502 konstruován, což přineslo výrazné snížení nákladů. Prvním byl přechod na vyčerpání zatížení NMOS . 6800 používal raný proces NMOS, který vyžadoval tři napájecí napětí, ale jednou z vlastností čipu byl vestavěný zdvojovač napětí, který umožňoval použít interní napájení +5 V pro +5, -5 a +12 interně, na rozdíl od ostatních čipů éra jako Intel 8080, která vyžadovala tři oddělené napájecí kolíky. I když tato funkce snížila složitost napájecího zdroje a rozložení kolíků, stále vyžadovala samostatné napájecí lišty k různým branám na čipu, což zvýšilo složitost a velikost. Přechodem na nový design vyčerpávajícího zatížení stačilo jediné zásobování +5, čímž byla odstraněna veškerá tato složitost.
Další praktickou výhodou bylo, že hodinový signál pro dřívější CPU musel být dostatečně silný, aby přežil veškerý rozptyl, když cestoval po obvodech, což téměř vždy vyžadovalo samostatný externí čip, který by mohl dodávat dostatečně silný signál. Se sníženými požadavky na výkon NMOS mohly být hodiny přesunuty na čip, což zjednodušilo celkový design počítače. Tyto změny výrazně snížily složitost a náklady na implementaci kompletního systému.
Další změnou, která probíhala, bylo zavedení maskování projekcí. Dříve byly čipy vzorovány na povrch oplatky umístěním masky na povrch oplatky a poté na ni svítilo jasné světlo. Masky často zvedaly drobné kousky špíny nebo fotorezistu , když byly vytaženy z čipu, což způsobilo v těchto místech chyby při jakémkoli následném maskování. U složitých návrhů, jako jsou procesory, by bylo použito 5 nebo 6 takových maskovacích kroků a šance, že alespoň jeden z těchto kroků způsobí chybu, byla velmi vysoká. Ve většině případů bylo 90% těchto návrhů vadných, což vedlo k 10% výtěžku. Cena pracovních příkladů musela pokrýt výrobní náklady 90%, které byly vyhozeny.
V roce 1973, Perkin-Elmer představil Micralign systém, který promítaný obraz masky na oplatce místo vyžaduje přímý kontakt. Masky již nezachytávaly nečistoty z oplatek a trvaly řádově 100 000 použití, nikoli 10. To eliminovalo selhání krok za krokem a vysoké míry vad dříve pozorované u složitých návrhů. Výnosy na CPU okamžitě vyskočily z 10% na 60 nebo 70%. To znamenalo, že cena CPU klesla zhruba o stejnou částku a z mikroprocesoru se rázem stalo komoditní zařízení.
Stávající výrobní linky MOS Technology byly založeny na starší technologii PMOS, s příchodem týmu ještě nezačaly pracovat s NMOS. Paivinen slíbil, že bude mít sestavu NMOS uvedenou do provozu včas, aby mohla být zahájena výroba nového CPU. Splnil slib, nová linka byla připravena do června 1975.
Poznámky k návrhu
Chuck Peddle, Rod Orgill a Wil Mathys navrhli počáteční architekturu nových procesorů. Článek ze září 1975 v časopise EDN poskytuje toto shrnutí návrhu:
Rodina MOS Technology 650X představuje vědomý pokus osmi bývalých zaměstnanců společnosti Motorola, kteří pracovali na vývoji systému 6800, aby vydali součást, která by nahradila a překonala výkon 6800, ale byla pod cenou. S využitím zpětného pohledu získaného na projektu 6800 provedl tým MOS Technology v čele s Chuckem Peddleem následující architektonické změny v CPU Motorola ...
Hlavní změnou z hlediska velikosti čipu bylo vyloučení třístavových ovladačů z výstupů adresové sběrnice. To bylo zahrnuto v 6800, aby mu to umožnilo pracovat s jinými čipy v rolích s přímým přístupem do paměti (DMA) a spoluspracováním, a to za cenu významného prostoru matrice. V praxi použití takového systému vyžadovalo, aby ostatní zařízení byla podobně složitá, a konstruktéři místo toho ke koordinaci takového přístupu využívali systémy mimo čip. 6502 jednoduše odstranil tuto funkci, v souladu se svým designem jako levný ovladač používaný pro konkrétní úkoly a komunikaci s jednoduchými zařízeními. Peddle navrhl, že každý, kdo skutečně vyžaduje tento styl přístupu, jej může implementovat pomocí jediného 74158 .
Dalším zásadním rozdílem bylo zjednodušení registrů. Nejprve byl odstraněn jeden ze dvou akumulátorů . K registrům obecného účelu, jako jsou akumulátory, musí přistupovat mnoho částí dekodéru instrukcí, a proto vyžadují značné množství kabeláže pro přesun dat do az jejich úložiště. Dva akumulátory usnadňují mnoho kódovacích úkolů, ale stojí samotný design čipu značnou složitost. Další úspory byly dosaženy snížením registru zásobníku ze 16 na 8 bitů, což znamená, že zásobník mohl být dlouhý pouze 256 bajtů, což stačilo na jeho zamýšlenou roli mikrokontroléru.
16bitový indexový index IX byl rozdělen na dvě části a stal se z nich X a Y. Ještě důležitější je, že se změnil styl přístupu; v 6800, IX držel 16bitovou adresu, která byla kompenzována číslem dodaným s instrukcí, dva byly přidány k vytvoření konečné adresy. V 6502 (a většině ostatních provedení) byla základní adresa uložena v instrukci a bylo k ní přidáno X nebo Y.
Nakonec byla instrukční sada zjednodušena a uvolnilo místo v dekodéru a řídicí logice. Z původních 72 pokynů v 6800 zbylo 56. Mezi odstraněnými byla jakákoli instrukce, která přesunula data mezi dvěma akumulátory 6800, a také řada větvových instrukcí inspirovaných PDP-11, jako je schopnost přímo porovnávat dvě číselné hodnoty. 6502 používal jednodušší systém, který zpracovával srovnání tím, že prováděl matematiku na akumulátoru a poté zkoumal příznaky výsledků.
Návrh na vysoké úrovni čipu musel být přeměněn na výkresy tranzistorů a propojení. V MOS Technology bylo „rozvržení“ velmi ruční proces prováděný pomocí barevných tužek a pergamenového papíru. Rozložení sestávalo z tisíců tvarů mnohoúhelníků na šesti různých kresbách; jeden pro každou vrstvu výrobního procesu. Vzhledem k limitům velikosti bylo nutné neustále zvažovat celý design čipu. Mensch a Paivinen pracovali na dekodéru instrukcí, zatímco Mensch, Peddle a Orgill pracovali na ALU a registrech. Další pokrok, vyvinutý na večírku, byl způsob, jak sdílet část vnitřního zapojení, aby bylo možné zmenšit velikost ALU.
Navzdory jejich nejlepšímu úsilí byl konečný návrh příliš široký 5 mil. Prvních 6502 čipů bylo 168 × 183 mil (4,3 × 4,7 mm) , neboli plocha 19,8 mm 2 . Instrukce rotace vpravo (ROR) nefungovala v prvním křemíku, takže instrukce byla dočasně vynechána z publikovaných dokumentů, ale další iterace návrhu zmenšila čip a opravila instrukci rotace vpravo, která byla poté zahrnuta v revidované dokumentaci .
Představujeme 6501 a 6502
MOS by zavedl dva mikroprocesory založené na stejném základním provedení: 6501 by se zapojil do stejné zásuvky jako Motorola 6800, zatímco 6502 znovu uspořádal vývod, aby podporoval oscilátor hodin na čipu. Oba by pracovaly s jinými podpůrnými čipy navrženými pro 6800. Nespouštěli by software 6800, protože měli jinou sadu instrukcí, různé registry a většinou různé režimy adresování. Rod Orgill byl zodpovědný za návrh 6501; pomáhal Johnu Buchananovi v Motorole na 6800. Bill Mensch dělal 6502; byl konstruktérem adaptéru 6820 Peripheral Interface Adapter (PIA) ve společnosti Motorola. S rozložením pomáhali Harry Bawcom, Mike Janes a Sydney-Anne Holt.
Představení mikroprocesoru MOS Technology se lišilo od tradičního měsíce trvajícího uvádění produktu na trh. První spuštění nového integrovaného obvodu se obvykle používá k internímu testování a je sdíleno s vybranými zákazníky jako „technické vzorky“. Tyto čipy mají často malou nebo dvě konstrukční vady, které budou opraveny před zahájením výroby. Cílem Chucka Peddle bylo prodat účastníkům první série 6501 a 6502 čipů na veletrhu Wescon v San Francisku, který začal 16. září 1975. Peddle byl velmi efektivní mluvčí a mikroprocesory MOS Technology byly široce pokryty odborným tiskem. Jedním z prvních byl celostránkový příběh o mikroprocesorech MCS6501 a MCS6502 v časopise Electronics z 24. července 1975 . Příběhy také běžely v EE Times (24. srpna 1975), EDN (20. září 1975), Electronic News (3. listopadu 1975), Byte (listopad 1975) a Microcomputer Digest (listopad 1975). Reklamy na 6501 se objevily v několika publikacích první týden v srpnu 1975. 6501 bude na prodej ve Wesconu za 20 $ za kus. V září 1975 obsahovaly reklamy jak mikroprocesory 6501, tak 6502. 6502 by stál pouze 25 $ (ekvivalent 120 $ v roce 2020).
Když společnost MOS Technology dorazila na Wescon, zjistili, že vystavovatelé nesmějí na výstavní ploše nic prodávat. Pronajali si MacArthur Suite v hotelu St. Francis a nasměrovali tam zákazníky ke koupi procesorů. V sadě byly procesory uloženy ve velkých nádobách, což znamenalo, že čipy byly ve výrobě a byly snadno dostupné. Zákazníci nevěděli, že spodní polovina každé nádoby obsahuje nefunkční čipy. Čipy byly $ 20 a $ 25, zatímco balíček dokumentace byl dalších $ 10. Uživatelé byli vyzváni, aby si vytvořili fotokopie dokumentů, což je pro MOS Technology levný způsob distribuce informací o produktech. Předběžné datové listy uváděly pouze 55 instrukcí kromě instrukce Rotate Right (ROR), která na těchto raných čipech nefungovala správně. Recenze v Byte a EDN upozornily na nedostatek instrukce ROR. Další revize rozložení tento problém vyřešila a datový list z května 1976 uváděl 56 pokynů. Peddle chtěl, aby každý zainteresovaný inženýr a fanda měl přístup k čipům a dokumentaci; jiné polovodičové společnosti chtěly jednat pouze s „vážnými“ zákazníky. Společnost Signetics například představila mikroprocesor 2650 a její reklamy žádaly čtenáře, aby napsali informace o hlavičkovém papíře své společnosti.
Kolík | 6800 | 6501 | 6502 |
---|---|---|---|
2 | Stůj | Připraven | Připraven |
3 | ∅1 (palce) | ∅1 (palce) | ∅1 (ven) |
5 | Platná adresa paměti | Platná adresa paměti | NC |
7 | K dispozici autobus | K dispozici autobus | SYNCHRONIZACE |
36 | Povolení datové sběrnice | Povolení datové sběrnice | NC |
37 | ∅2 (palce) | ∅2 (palce) | ∅0 (palce) |
38 | NC | NC | Nastavit vlajku přetečení |
39 | Třístavové řízení | NC | ∅2 (ven) |
Žaloba Motorola
Představení 6501/6502 v tisku a na Wesconu mělo obrovský úspěch. Temnější stránkou bylo, že rozsáhlé tiskové zpravodajství upoutalo pozornost Motoroly. V říjnu 1975 snížila Motorola cenu jediného mikroprocesoru 6800 ze 175 na 69 dolarů. Sada pro návrh systému za 300 $ byla snížena na 150 $ a nyní byla dodávána s deskou s plošnými spoji. Dne 3. listopadu 1975, Motorola hledal soudní příkaz u federálního soudu k zastavení MOS Technology ve výrobě a prodeji mikroprocesorových produktů. Podali také žalobu na porušení patentů a zneužití obchodního tajemství. Motorola tvrdila, že sedm bývalých zaměstnanců se připojilo k MOS Technology, aby vytvořili mikroprocesorové produkty této společnosti.
Motorola byla miliardová společnost s věrohodným případem a právníky. 30. října 1974 podala Motorola řadu patentových přihlášek na rodinu mikroprocesorů a bylo jí uděleno dvacet pět patentů. První z nich byl v červnu 1976 a druhým byl Bill Mensch 6. července 1976 za uspořádání čipu 6820 PIA. Tyto patenty se týkaly sběrnice 6800 a způsobu, jakým byly periferní čipy propojeny s mikroprocesorem. Motorola začala vyrábět tranzistory v roce 1950 a měla portfolio polovodičových patentů. Allen-Bradley se rozhodl s tímto případem nebojovat a prodal svůj zájem o MOS Technology zpět zakladatelům. V obleku byli jmenováni čtyři bývalí inženýři společnosti Motorola: Chuck Peddle, Will Mathys, Bill Mensch a Rod Orgill. Všichni byli jmenováni vynálezci v 6800 patentových přihláškách. Během procesu objevování Motorola zjistila, že jeden inženýr, Mike Janes, ignoroval pokyny Peddle a přinesl jeho 6800 návrhových dokumentů do MOS Technology. V březnu 1976 nyní nezávislé technologii MOS došly peníze a musel případ vyřešit. Dohodli se, že upustí procesor 6501, zaplatí společnosti Motorola 200 000 dolarů a vrátí dokumenty, o nichž Motorola tvrdila, že jsou důvěrné. Obě společnosti souhlasily s křížovou licencí patentů mikroprocesorů. Toho května Motorola snížila cenu jediného mikroprocesoru 6800 na 35 dolarů. V listopadu získala společnost Commodore technologii MOS.
Počítače a hry
S právními problémy za nimi zůstal MOS stále problém přimět vývojáře, aby vyzkoušeli svůj procesor, což přimělo Chucka Peddlea navrhnout jednodeskový počítač MDT-650 („terminál pro vývoj mikropočítačů“) . Další skupina uvnitř společnosti navrhla KIM-1 , který byl prodáván semi-kompletní a mohl být přeměněn na použitelný systém s přidáním počítačového terminálu třetí strany a kompaktní kazetové jednotky. K jejich velkému úžasu se KIM-1 dobře prodával fandům a drotářům a také technikům, na které byl zaměřen. Dařilo se také souvisejícímu systému řízení/školení/vývoje Rockwell AIM 65 . Software v AIM 65 byl založen na softwaru MDT. Dalším zhruba podobným produktem byl Synertek SYM-1 .
Jedním z prvních „veřejných“ použití pro návrh byl mikropočítač Apple I , představený v roce 1976. 6502 byl dále použit v Commodore PET a Apple II , oba vydané v roce 1977. Později byl použit v 8bitovém Atari rodinné a domácí počítače Acorn Atom , BBC Micro , Commodore VIC-20 a další provedení jak pro domácí počítače, tak pro firmy, jako jsou Ohio Scientific a Oric . 6510 , přímý nástupce 6502 s digitální I / O portů a tri-state adresovou sběrnici, byl procesor používaný při nejprodávanějšího Commodore 64 domácího počítače. Ve všech disketových jednotkách Commodore byly pro všechny jejich 8bitové počítače použity procesory 6520 a/nebo 6502 , od řady PET (z nichž některé měly dva CPU na bázi 6502) přes Commodore 128D, včetně Commodore 64. , a ve všech diskových jednotkách Atari pro všechny jejich 8bitové počítačové řady, od 400/800 přes XEGS.
Další důležité využití rodiny 6500 bylo ve videohrách. První, kdo využil konstrukci procesoru, byl Atari VCS, později přejmenovaný na Atari 2600 . VCS používal variantu 6502 s názvem 6507 , která měla méně pinů a v důsledku toho mohla adresovat pouze 8 KB paměti. Byly by prodány miliony konzolí Atari, každá s procesorem MOS. Další významné použití bylo Nintendo Entertainment System a Famicom . 6502 použitý v NES byl druhou zdrojovou verzí Ricohu , částečného systému na čipu , který postrádal binárně kódovaný desítkový režim, ale přidal 22 registrů mapovaných v paměti a hardware on-die pro generování zvuku, čtení z joypadu a seznam sprite DMA . Tento procesor, nazývaný 2A03 v NTSC konzolách a 2A07 v PAL konzolách (rozdílem je poměr děliče paměti a vyhledávací tabulka pro vzorkovací frekvence zvuku), byl vyroben výhradně pro Nintendo . Atari Lynx použít verzi 4 MHz na čipu, 65SC02 .
V 80. letech 20. století použil populární elektronický časopis Elektor/Elektuur procesor ve své vývojové desce mikroprocesorů Junior Computer .
Technický popis
1 5 | 1 4 | 1 3 | 1 2 | 1 1 | 1 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | (bitová pozice) |
Hlavní registry | ||||||||||||||||
A | ccumulator | |||||||||||||||
Rejstříkové registry | ||||||||||||||||
X | X index | |||||||||||||||
Y | Y index | |||||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | S | S tack Pointer | |||||||
Počitadlo programů | ||||||||||||||||
PC | P rogram C ounter | |||||||||||||||
Stavový registr | ||||||||||||||||
N. | PROTI | - | B | D | Já | Z | C | P rocessor F zpoždění |
6502 je malý endianový 8bitový procesor se 16bitovou adresovou sběrnicí . Původní verze byly vyrobeny za použití 8 um proces Čipová technologie s die velikosti části 3,9 mm x 4,3 mm (inzerován jako 153 tisícin palce × 168 tisícin palce ), o celkové ploše 16,6 mm 2 .
Interní logika běží stejnou rychlostí jako externí taktovací frekvence, ale navzdory nízkým hodinovým frekvencím (typicky v blízkosti 1 až 2 MHz ) byl výkon procesoru 6502 konkurenceschopný s jinými současnými procesory využívajícími výrazně rychlejší hodiny. Částečně je to dáno jednoduchým stavovým strojem implementovaným kombinační (hodinovou) logikou ve větší míře než v mnoha jiných provedeních; dvoufázové hodiny (zajišťující dvě synchronizace za cyklus) by tak mohly přímo řídit cyklus stroje. Dokončení typických pokynů může u modelu 6502 trvat polovinu cyklů než u současných návrhů. Jako většina jednoduchých CPU té doby, dynamický čip NMOS 6502 není sekvenován mikrokódovou ROM, ale používá k dekódování a sekvenování instrukcí PLA (která zabírala asi 15% plochy čipu). Stejně jako ve většině 8bitových mikroprocesorů čip provádí určité omezené překrývání načítání a provádění.
Nízká taktovací frekvence zmírnila požadavek na rychlost paměti a periferií připojených k CPU, protože pro přístup do paměti bylo k dispozici pouze asi 50% hodinového cyklu (vzhledem k asynchronnímu designu se tato frakce mezi verzemi čipů výrazně lišila). To bylo kritické v době, kdy cenově dostupná paměť měla přístupové časy v rozmezí 250–450 ns .
Protože čip přistupoval k paměti pouze během určitých částí hodinového cyklu a tyto cykly byly indikovány pinem s nízkým hodinovým výstupem PHI2, ostatní čipy v systému mohly přistupovat k paměti v době, kdy byl 6502 mimo sběrnici. Někdy se tomu říkalo „skrytý přístup“. Tato technika byla široce používána počítačovými systémy; používali paměť schopnou přístupu na 2 MHz a potom spustili CPU na 1 MHz. To zaručilo, že CPU a video hardware mohou prokládat jejich přístupy, s celkovým výkonem odpovídajícím paměťovému zařízení. Když byly v 80. letech k dispozici rychlejší paměti, mohly novější stroje běžet na vyšších taktech, jako 2 MHz CPU v BBC Micro , a stále používat techniky sdílení sběrnice.
Registry
Stejně jako jeho předchůdce, 6800, 6502 má velmi málo registrů . Registry 6502 obsahují jeden 8bitový akumulátorový registr (A), dva 8bitové indexové registry (X a Y), 7 bitových stavových příznakových bitů procesoru (P)-konkrétně od bitu 7 do bitu 0 v P to jsou negativní (N), přetečení (V), vyhrazeno , zlom (B), desítkové (D), přerušení deaktivováno (I), nula (Z) a příznak carry (C)-, 8bitový ukazatel zásobníku (S), a 16bitový čítač programů (PC). To je srovnatelné s typickým designem stejné doby, Z80 , který má osm univerzálních 8bitových registrů, které lze kombinovat do čtyř 16bitových. Z80 měl také kompletní sadu alternativních registrů, které vytvořily celkem šestnáct obecných registrů.
Aby bylo možné do určité míry nahradit nedostatek registrů, 6502 obsahoval režim adresování na nulové stránce, který v instrukci používá jeden adresní bajt namísto dvou potřebných pro adresování celých 64 kB paměti. To poskytuje rychlý přístup k prvních 256 bajtů paměti RAM pomocí kratších pokynů. Chuck Peddle v rozhovorech uvedl, že konkrétním záměrem bylo umožnit použití těchto prvních 256 bajtů paměti RAM jako registrů.
Adresní prostor zásobníku je pevně připojen k stránce paměti $ 01 , tj. Rozsah adres $ 0100 - $ 01FF ( 256 - 511 ). Softwarový přístup k zásobníku se provádí pomocí čtyř implicitních instrukcí režimu adresování, jejichž funkcí je tlačit nebo vytahovat (tahat) akumulátor nebo registr stavu procesoru. Stejný zásobník se používá také pro volání podprogramů pomocí instrukcí JSR (skok na podprogram) a RTS (návrat z podprogramu) a pro zpracování přerušení .
Adresování
Čip efektivně využívá rejstřík a rejstřík zásobníku s několika režimy adresování , včetně rychlého režimu „přímá stránka“ nebo „nulová stránka“, podobný tomu, který se nachází na PDP-8 , který přistupuje k paměťovým místům z adres 0 až 255 jediným 8bitová adresa (uložení cyklu normálně požadovaného pro načtení bajtu adresy vyššího řádu)-kód pro 6502 používá nulovou stránku podobně jako kód pro jiné procesory by používal registry. U některých mikropočítačů založených na 6502 s operačním systémem používá operační systém většinu nulové stránky, takže uživateli zůstává jen několik míst.
Režimy adresování také zahrnují implikované (1bajtové instrukce); absolutní (3 bajty); indexováno absolutně (3 bajty); indexovaná nulová stránka (2 bajty); relativní (2 bajty); akumulátor (1); nepřímý, x a nepřímý, y (2); a okamžitě (2). Absolutní režim je režim pro všeobecné použití. Instrukce větve používají podepsaný 8bitový offset vzhledem k instrukci za větví; numerický rozsah −128..127 se tedy převádí na 128 bytů zpět a 127 bytů dopředu z instrukce následující za větví (což je 126 bytů zpět a 129 bytů dopředu od začátku instrukce větve). Režim Accumulator používá akumulátor jako efektivní adresu a nepotřebuje žádná data operandu . Okamžitý režim používá 8bitový doslovný operand.
Nepřímé adresování
Nepřímé režimy jsou užitečné pro zpracování pole a další smyčky. V režimu 5/6 "(nepřímý), y" je 8bitový registr Y přidán k 16bitové základní adrese načtené z nulové stránky, která je umístěna o jeden bajt za operačním kódem. Registr Y je tedy indexový registr v tom smyslu, že se používá k uchovávání skutečného indexu (na rozdíl od registru X v 6800, kde byla přímo uložena základní adresa a ke kterému bylo možné přidat okamžitý offset). Inkrementace rejstříku rejstříku pro procházení po bajtech po poli vyžaduje pouze dva další cykly. V méně často používaném režimu "(nepřímý, x)" je efektivní adresa operace nalezena na adrese nulové stránky vytvořené přidáním druhého bajtu instrukce do obsahu registru X. Pomocí indexovaných režimů nulová stránka účinně funguje jako sada až 128 dalších (i když velmi pomalých) registrů adres.
6502 je schopen provádět sčítání a odčítání v binárních nebo binárně kódovaných desítkových soustavách . Umístění procesoru do režimu BCD s SED
instrukcí (set D flag) má za následek desítkovou aritmetiku, což $99 + $01
by mělo za následek $ 00 a nastavení příznaku carry (C). V binárním režimu ( CLD
vymazat příznak D) by stejná operace vedla k vymazání $ 9A a příznaku přenosu. Kromě Atari BASIC byl režim BCD v domácích počítačových aplikacích používán jen zřídka.
Podívejte se na Hello world! článek pro jednoduchý, ale charakteristický příklad sestavovacího jazyka 6502 .
Pokyny a operační kódy
6502 instrukční operační kódy ( opcodes ) jsou osmibitové a mají obecný tvar AAABBBCC, kde AAA a CC definují operační kód, a BBB definuje režim adresování.
Zvažte například ORA
instrukci, která provádí bitové NEBO na bitech v akumulátoru s jinou hodnotou. Instrukční operační kód má tvar 000bbb01, kde bbb může být 010 pro hodnotu okamžitého režimu (konstantní), 001 pro pevnou adresu nulové stránky, 011 pro absolutní adresu atd.
Tento vzorec není absolutní a existuje řada výjimek. Kde to však platí, umožňuje to u většiny instrukcí snadno dekonstruovat hodnoty opcode zpět do mnemotechniky sestavy, přičemž případy na hraně zpracovává speciální kód.
Z 256 možných operačních kódů dostupných pomocí 8bitového vzoru původní 6502 používá 151 z nich, uspořádaných do 56 instrukcí s (možná) více režimy adresování . V závislosti na režimu instrukcí a adresování může operační kód vyžadovat nula, jeden nebo dva další bajty pro operandy. Proto se pokyny ke stroji 6502 liší v délce od jednoho do tří bajtů. Operand je uložen v obvyklém malém endianovém formátu 6502 .
65C816 , 16-bit CMOS potomek 6502, také podporuje 24-bitové adresování, což vede k obsluze je sestaven s tříbytové operandy, také uspořádány v malém-endian formátu.
Zbývajících 105 operačních kódů není definováno. V původním návrhu nebyly použity instrukce, kde byly 4bity nízkého řádu ( nibble ) 3, 7, B nebo F, což poskytovalo prostor pro budoucí rozšíření. Podobně sloupec $ 2x měl jen jednu položku, . Bylo rozdáno zbývajících 25 prázdných slotů. Některé z prázdných slotů byly použity v 65C02 k poskytnutí jak nových instrukcí, tak i variací na ty stávající s novými režimy adresování. Pokyny $ Fx byly zpočátku ponechány volné, aby umožnily prodejcům třetích stran přidávat vlastní pokyny, ale novější verze 65C02 standardizovaly sadu bit fiddling instrukcí vyvinutou společností Rockwell Semiconductor .
LDX #constant
Jazyk montáže
Prohlášení jazyka 6502 sestavovacího jazyka se skládá ze tříznakové instrukční mnemotechnické pomůcky , za kterou následují všechny operandy . Instrukce, které neberou samostatný operand, ale cílí na jeden registr na základě režimu adresování, kombinují cílový registr v instrukční mnemotechnice, takže assembler používá INX
na rozdíl INC X
od zvýšení registru X.
Tabulka s pokyny
Matice operačního kódu pro instrukční sadu 6502 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Režimy adresování: A - akumulátor, # - okamžitý, zpg - nulová stránka, abs - absolutní, ind - nepřímý, X - indexováno registrem X, Y - indexováno registrem Y, rel - relativní | ||||||||||||
Vysoká okusovat | Nízké okusování | |||||||||||
0 | 1 | 2 | 4 | 5 | 6 | 8 | 9 | A | C | D | E | |
0 | BRK | ORA ( ind , X) | ORA zpg | ASL zpg | PHP | ORA # | ASL A. | ORA abs | ASL abs | |||
1 | BPL rel | ORA ( ind ), Y | ORA zpg , X | ASL zpg , X | CLC | ORA abs , Y | ORA abs , X | ASL abs , X | ||||
2 | JSR abs | AND ( ind , X) | BIT zpg | A zpg | ROL zpg | PLP | A # | ROL A. | BIT abs | A abs | ROL abs | |
3 | BMI rel | AND ( ind ), Y | A zpg , X | ROL zpg , X | SEK | A abs , Y | A abs , X | ROL abs , X | ||||
4 | RTI | EOR ( ind , X) | EOR zpg | LSR zpg | PHA | EOR # | LSR A | ŽMP abs | EOR abs | LSR abs | ||
5 | BVC rel | EOR ( ind ), Y | EOR zpg , X | LSR zpg , X | CLI | EOR abs , Y | EOR abs , X | LSR abs , X | ||||
6 | RTS | ADC ( ind , X) | ADC zpg | ROR zpg | PLA | ADC # | ROR A. | ŽMP ( ind ) | ADC abs | ROR abs | ||
7 | BVS rel | ADC ( ind ), Y | ADC zpg , X | ROR zpg , X | SEI | ADC abs , Y | ADC abs , X | ROR abs , X | ||||
8 | STA ( ind , X) | STY zpg | STA zpg | STX zpg | DEY | TXA | STY abs | STA abs | STX abs | |||
9 | BCC rel | STA ( ind ), Y | STY zpg , X | STA zpg , X | STX zpg , Y | TYA | STA abs , Y | TXS | STA abs , X | |||
A | LDY # | LDA ( ind , X) | LDX # | LDY zpg | LDA zpg | LDX zpg | ČAS | LDA # | DAŇ | LDY abs | LDA abs | LDX abs |
B | BCS rel | LDA ( ind ), Y | LDY zpg , X | LDA zpg , X | LDX zpg , Y | CLV | LDA abs , Y | TSX | LDY abs , X | LDA abs , X | LDX abs , Y | |
C | CPY # | CMP ( ind , X) | CPY zpg | CMP zpg | DEC zpg | INY | CMP # | DEX | CPY abs | CMP abs | DEC abs | |
D | BNE rel | CMP ( ind ), Y | CMP zpg , X | DEC zpg , X | CLD | CMP abs , Y | CMP abs , X | DEC abs , X | ||||
E | CPX # | SBC ( ind , X) | CPX zpg | SBC zpg | INC zpg | INX | SBC # | NOP | CPX abs | SBC abs | INC abs | |
F | BEQ rel | SBC ( ind ), Y | SBC zpg , X | INC zpg , X | SED | SBC abs , Y | SBC abs , X | INC abs , X | ||||
Prázdné operační kódy (např. F2 ) a všechny operační kódy, jejichž nízké kousky jsou 3 , 7 , B a F, nejsou v instrukční sadě 6502 definovány. |
Detailní chování
Vstup NMI ( non-maskable interrupt ) procesoru je citlivý na hrany , což znamená, že přerušení je spuštěno spíše sestupnou hranou signálu než jeho úrovní. Důsledkem této funkce je, že drátový nebo přerušovací obvod není snadno podporován. To však také zabrání výskytu vnořených přerušení NMI, dokud hardware znovu neaktivní vstup NMI, často pod kontrolou obsluhy přerušení NMI .
Simultánní uplatňování hardwarových přerušení linek NMI a IRQ (maskovatelných) způsobí, že IRQ bude ignorováno. Pokud však linka IRQ zůstane udržována i po servisu NMI, procesor okamžitě odpoví na IRQ, protože IRQ je citlivý na úroveň . V návrhu 6502 byla tedy stanovena jakási priorita vestavěného přerušení.
Příznak B je nastaven periodickým vzorkováním výstupu 6502 jeho výstupu detektoru hran NMI a vstupu IRQ. Nízký signál IRQ je rozpoznán pouze tehdy, jsou -li IRQ povoleny příznakem I. Pokud je tímto způsobem detekován požadavek NMI nebo (maskovatelné) IRQ, příznak B je nastaven na nulu a způsobí, že procesor místo provedení další instrukce na základě čítače programu provede další instrukci BRK.
Instrukce BRK poté tlačí stav procesoru na zásobník, přičemž bit příznaku B je nastaven na nulu. Na konci svého provádění instrukce BRK resetuje hodnotu příznaku B na jednu. Toto je jediný způsob, jak lze upravit příznak B. Pokud jiná instrukce než instrukce BRK tlačí příznak B do zásobníku jako součást stavu procesoru, příznak B má vždy hodnotu jedna.
Nízká až vysoká hrana na vstupním kolíku SO nastaví bitový stav přetečení procesoru. Toho lze využít k rychlé reakci na externí hardware. Například ovladač zařízení pro vysokorychlostní dotazování může dotazovat hardware jednou za pouhé tři cykly pomocí BVC
instrukce Branch-on-oVerflow-Clear ( ), která se sama větví, dokud není přetečení nastaveno stoupající hranou SO. Commodore 1541 a další Commodore floppy disk disky používají tuto techniku k detekci, když je serializer je připraven převést další byte dat na disku. Návrh hardwaru a softwaru systému musí zajistit, aby nedošlo k SO při aritmetickém zpracování a narušit výpočty.
Variace a derivace
Původních NMOS 6502 bylo mnoho.
Společnost | Modelka | Popis |
---|---|---|
6502A | Čip 1,5 MHz představovaný v Asteroids Deluxe . | |
6502B | Verze 6502 schopná běžet maximální rychlostí 2 MHz místo 1. B byl používán v Apple III , BBC Micro a s taktem 1,79 MHz, rané 8bitové počítače Atari . | |
6502C | „Oficiální“ 6502C byla verze původního 6502 schopného běžet až na 4 MHz.
Nesmí být zaměňována s SALLY, vlastním 6502 určeným pro Atari (a někdy jimi označovaným jako „6502C“) ani s podobně pojmenovaným 65C02 . |
|
SALLY / C014806 / "6502C" |
Custom 6502 varianta určená pro Atari, který se používá v pozdějších Atari 8-bitových počítačů, stejně jako Atari 5200 a Atari 7800 konzoly.
Obsahuje signál HALT na pinu 35 a signál R/W na pinu 36 (tyto piny nejsou připojeny (N/C) na standardním 6502). Zatažením za HALT low dojde k zablokování hodin a pozastavení procesoru. To bylo použito k povolení přímého přístupu do paměti video obvodů (DMA). Ačkoli se v dokumentaci Atari někdy označuje jako „6502C“, není to totéž jako „oficiální“ 6502C a samotný čip jako takový nikdy není označen. |
|
Technologie MOS | 6503 | Snížená schopnost adresování paměti (4 KB) a žádný vstup RDY, v 28pólovém DIP balíčku (s fází 1 (OUT), SYNC, redundantní Vss a SO piny 6502 také vynechány). |
Technologie MOS | 6504 | Snížená schopnost adresování paměti (8 KB), žádný NMI a žádný vstup RDY, v 28pólovém DIP balíčku (s fází 1 (OUT), SYNC, redundantní Vss a SO piny 6502 také vynechány). |
Technologie MOS | 6505 | Snížená schopnost adresování paměti (4 KB) a žádné NMI, v 28pólovém DIP balíčku (s fází 1 (OUT), SYNC, redundantní Vss a SO piny 6502 také vynechány). |
Technologie MOS | 6506 | Snížená schopnost adresování paměti (4 KB), žádný NMI a žádný vstup RDY, ale všechny 3 hodinové piny 6502 (tj. 2fázové výstupní hodiny), v 28pólovém DIP balíčku (s SYNC, redundantní Vss, a SO piny 6502 také vynechány). |
Technologie MOS | 6507 | Snížená schopnost adresování paměti (8 KB) a žádná přerušení, v 28pólovém DIP balíčku (s fází 1 (OUT), SYNC, redundantní Vss a SO piny 6502 také vynechány). Tento čip byl použit v systému videoher Atari 2600 . |
Technologie MOS | 6508 | Má vestavěný 8bitový vstupní/výstupní port a 256 bajtů vnitřní statické paměti RAM. |
Technologie MOS | 6509 | Může adresovat až 1 MB RAM jako 16 bank o velikosti 64 KB a byl použit v řadě Commodore CBM-II . |
Technologie MOS | 6510 | Má vestavěný 6bitový programovatelný vstupní/výstupní port a byl použit v Commodore 64 . 8500 je ve skutečnosti HMOS verze 6510, a nahradil jej v novějších verzích C64. |
Technologie MOS |
6512 6513 6514 6515 |
Technologie MOS 6512, 6513, 6514 a 6515 se spoléhají na externí hodiny, místo aby používaly interní generátor hodin, jako je 650x (např. 6502). To bylo s výhodou použito v některých provedeních, kde by hodiny mohly běžet asymetricky, čímž se zvýšil celkový výkon CPU.
6512 je 6502 s 2fázovým hodinovým vstupem pro externí hodinový oscilátor, namísto palubního oscilátoru hodin. 6513, 6514 a 6515 jsou podobně ekvivalentní (respektive) 6503, 6504 a 6505 se stejným 2fázovým hodinovým vstupem. 6512 byl použit v BBC Micro B+64 . |
Ricoh | 2A03 | Varianta 6502 včetně jednotky pro zpracování zvuku a bez režimu BCD, používaná v Nintendo Entertainment System . |
Technologie MOS |
6591 6592 |
Systém na čipu, který využívá kompletní Atari 2600 ve 48pólovém DIP balíčku. |
WDC | 65C02 |
CMOS verze NMOS 6502, kterou navrhl Bill Mensch z Western Design Center (WDC), se sníženou spotřebou energie, podporou mnohem vyšších hodin, novými instrukcemi, novými režimy adresování u některých stávajících instrukcí a opravou chyb NMOS, jako je JMP ($xxFF) chyba.
|
WDC | 65SC02 | Varianta WDC 65C02 bez jednotlivých bitových manipulačních operací (RMB, SMB, BBR a BBS). Toto jádro, běžící na 4 MHz, bylo použito v hlavním systému IC Atari Lynx . |
CSG (technologie MOS) | 65CE02 | CMOS derivát vyvinutý společností Commodore Semiconductor Group (CSG), dříve MOS Technology. |
Rockwell | R6511Q R6500/11, R6500/12, R6500/15 "mikročipy s jedním čipem " |
Vylepšené verze procesoru založeného na 6502, také zahrnující jednotlivé operace bitové manipulace (RMB, SMB, BBR a BBS), 192 bajtů RAM s nulovou stránkou na čipu, UART atd. |
Rockwell | R65F11 R65F12 |
Rockwell R65F11 (představený v roce 1983) a novější R65F12 jsou vylepšené verze procesoru založeného na 6502, zahrnující také operace jednotlivých bitových manipulací (RMB, SMB, BBR a BBS), RAM na nulové stránce RAM, on-chip Forth jádro ROM, UART atd. |
GTE | G65SC102 | Software kompatibilní s 65C02, ale má mírně odlišný obvod pinoutu a oscilátoru. BBC Mistr Turbo zahrnoval verzi 4 MHz tohoto procesoru na koprocesor kartu, která by mohla být také zakoupit samostatně a přidal se k Master 128. |
Rockwell | R65C00 R65C21 R65C29 |
R65C00, R65C21 a R65C29 představovaly dva vylepšené CMOS 6502 v jednom čipu a R65C00 a R65C21 navíc obsahovaly 2 kB ROM programovatelné v masce. |
CM630 | Klon východního bloku 1 MHz 6502 a byl použit v bulharských klonech Pravetz 8A a 8C řady Apple // . | |
Technologie MOS |
7501 8501 |
Varianty 6510 (sám vylepšený 6502), představený v roce 1984. Rozšířily počet pinů I/O portů ze 6 na 7, ale vynechaly piny pro nemaskovatelné přerušení a hodinový výstup. Používá se v počítačích Commodore C-16 , C-116 a Plus/4 . Hlavní rozdíl mezi CPU 7501 a 8501 je ten, že 7501 byl vyroben procesem HMOS-1 a 8501 s HMOS-2. |
Technologie MOS | 8500 | Představený v roce 1985 jako HMOS verze 6510 (která je zase založena na 6502). Kromě úpravy procesu je 8500 prakticky totožný s verzí NMOS 6510. V novějších verzích Commodore 64 nahradil 6510 . |
Technologie MOS | 8502 | Designed by MOS Technology and used in the Commodore 128 . Na základě MOS 6510 použitého v Commodore 64 mohl 8502 běžet s dvojnásobným taktem 6510. Rodina 8502 také zahrnuje MOS 7501, 8500 a 8501. |
Hudson Soft | HuC6280 | Vylepšená verze WDC 65C02 japonské videoherní společnosti Hudson Soft . Vyrobeno pro ně společnostmi Seiko Epson a NEC pro SuperGrafx . Nejpozoruhodnější produkt využívající HuC6280 je herní konzole NEC TurboGrafx-16. |
16bitové deriváty
Western Design Center navrhlo a v současné době vyrábí procesor W65C816S , 16bitový, statický jádrový nástupce 65C02 , s výrazně vylepšenými funkcemi. W65C816S je novější varianta 65C816, která je jádrem počítače Apple II GS a je základem procesoru Ricoh 5A22, který pohání Super Nintendo Entertainment System . W65C816S obsahuje menší vylepšení oproti 65C816, díky nimž novější čip není přesnou hardwarově kompatibilní náhradou za předchozí. Mezi tato vylepšení patřila konverze na statické jádro, které umožňuje zastavit hodiny v jakékoli fázi, aniž by registry ztratily data. Od března 2020, který je k dispozici u distributorů elektroniky, je W65C816S oficiálně dimenzován pro provoz na 14 MHz.
Western Design Center také navrhlo a vyrobilo 65C802 , což bylo jádro 65C816 s adresovým prostorem 64 kilobajtů v balíčku kompatibilním s pinem 65 (C) 02. 65C802 by bylo možné dodatečně namontovat na desku 6502 a při zapnutí by fungoval jako 65C02, fungující v „emulačním režimu“. Stejně jako u 65C816 by sekvence dvou instrukcí přepnula 65C802 na operaci „nativního režimu“, čímž by se odhalily její 16bitové akumulátorové a indexové registry a také další vylepšené funkce 65C816. 65C802 nebyl široce používán; kolem 65C816 byly téměř vždy postaveny nové designy, což mělo za následek ukončení výroby 65C802.
Příklad kódu
Následující zdrojový kód sestavovacího jazyka 6502 je určen pro podprogram pojmenovaný , který zkopíruje řetězec znaků s nulovým zakončením z jednoho umístění do druhého a převede znaky velkých písmen na malá písmena. Kopírovaný řetězec je „zdroj“ a řetězec, do kterého je převedený zdroj uložen, je „cíl“.
TOLOWER
0080
0080 00 04
0082 00 05
0600
0600 A0 00
0602 B1 80
0604 F0 11
0606 C9 41
0608 90 06
060A C9 5B
060C B0 02
060E 09 20
0610 91 82
0612 C8
0613 D0 ED
0615 38
0616 60
0617 91 82
0619 18
061A 60
061B
|
; TOLOWER:
;
; Convert a null-terminated character string to all lower case.
; Maximum string length is 255 characters, plus the null term-
; inator.
;
; Parameters:
;
; SRC - Source string address
; DST - Destination string address
;
ORG $0080
;
SRC .WORD $0400 ;source string pointer
DST .WORD $0500 ;destination string pointer
;
ORG $0600 ;execution start address
;
TOLOWER LDY #$00 ;starting index
;
LOOP LDA (SRC),Y ;get from source string
BEQ DONE ;end of string
;
CMP #'A' ;if lower than UC alphabet...
BCC SKIP ;copy unchanged
;
CMP #'Z'+1 ;if greater than UC alphabet...
BCS SKIP ;copy unchanged
;
ORA #%00100000 ;convert to lower case
;
SKIP STA (DST),Y ;store to destination string
INY ;bump index
BNE LOOP ;next character
;
; NOTE: If Y wraps the destination string will be left in an undefined
; state. We set carry to indicate this to the calling function.
;
SEC ;report string too long error &...
RTS ;return to caller
;
DONE STA (DST),Y ;terminate destination string
CLC ;report conversion completed &...
RTS ;return to caller
;
.END
|
Chyby a vtípky
6502 měl několik chyb a vtípků, které musely být zohledněny při jeho programování:
- Nejčasnější revize 6502, jako ty, které byly dodávány s některými počítači KIM-1 , měly vážnou chybu v instrukci ROR (otočit pravou paměť nebo akumulátor). Operace ROR v těchto čipech je ve skutečnosti instrukce ASL (aritmetický posun doleva), která neovlivňuje přenosový bit ve stavovém registru. MOS vynechal instrukci z čipové dokumentace úplně kvůli závadě a sliboval, že ROR se objeví na 6502 čipech od roku 1976. Drtivá většina 6502 čipů, které dnes existují, tuto chybu nevykazuje.
- Rodina NMOS 6502 má řadu nezdokumentovaných pokynů , které se liší od jednoho výrobce čipu k druhému. Dekódování instrukcí 6502 je implementováno v pevně zapojeném logickém poli (podobné programovatelnému logickému poli ), které je definováno pouze pro 151 z 256 dostupných operačních kódů . Zbývajících 105 spouští podivné a příležitostně těžko předvídatelné akce, jako je zhroucení procesoru, provedení dvou platných instrukcí za sebou, provedení podivných směsí dvou instrukcí nebo prostě nedělat vůbec nic. Společnost Eastern House Software vyvinula „Trap65“, zařízení, které se zapojuje mezi procesor a jeho zásuvku a převádí (zachycuje) neimplementované operační kódy na pokyny BRK (přerušení softwaru). Někteří programátoři využili této funkce k rozšíření sady instrukcí 6502 poskytnutím funkcí pro neimplementované operační kódy se speciálně napsaným softwarem zachyceným ve vektoru 0xFFFE instrukce BRK. Všechny nedefinované operační kódy byly nahrazeny instrukcemi NOP v 65C02 , vylepšené verzi CMOS 6502, i když s různou velikostí bajtů a dobou provádění. V 65C802/65C816 provádí všech 256 operačních kódů definované operace.
- Instrukce nepřímého skoku paměti 6502
JMP (<address>)
je částečně poškozená. Pokud <adresa> je hex xxFF (tj nějaké slovo končit FF ), procesor nebude skok na adresu uloženou v xxFF axxFF+1
, jak se očekávalo, ale ten je definován xxFF a XX00 (například,JMP ($10FF)
skočí na adresu uloženy v 10FF a 1000, místo v 10FF a 1100). Tato vada pokračovala celou linkou NMOS, ale byla opravena v derivátech CMOS. - Indexované adresování NMOS 6502 přes hranice stránky provede další čtení neplatné adresy. Tato charakteristika může způsobit náhodné problémy s přístupem k hardwaru, který působí na čtení, jako je vymazání časovače nebo příznaků IRQ, odeslání I/O handshake atd. Tato závada pokračovala celou linkou NMOS, ale byla opravena v derivátech CMOS, v což procesor extra přečte poslední instrukční bajt.
- Pokyny 6502 čtení-úprava-zápis provádějí jeden cyklus čtení a dva cykly zápisu. Nejprve se přečtou nezměněná data, která byla přečtena, a poté se zapíší upravená data. Tato charakteristika může způsobit problémy dvojitým přístupem k hardwaru, který působí při zápisu. Tato anomálie pokračovala celou řadou NMOS, ale byla opravena v derivátech CMOS, ve kterých procesor provede dvě čtení a jeden zapisovací cyklus. Obranná programovací praxe se tomuto problému obecně vyhne tím, že neprovede pokyny ke čtení/úpravám/zápisu v hardwarových registrech.
- Příznaky stavu N (výsledek negativní), V (přetečení znaménkového bitu) a Z (výsledek nula) obecně nemají smysl při provádění aritmetických operací, když je procesor v režimu BCD , protože tyto příznaky odrážejí výsledek binární, nikoli BCD. Toto omezení bylo v derivátech CMOS odstraněno. Tuto funkci lze tedy použít k rozlišení procesoru CMOS od verze NMOS.
- Pokud je 6502 náhodou v režimu BCD, když dojde k přerušení hardwaru, nevrátí se do binárního režimu. Tato vlastnost by mohla mít za následek nejasné chyby v rutině služby přerušení, pokud se jí nepodaří vymazat režim BCD před provedením jakékoli aritmetické operace. Například, Commodore 64 ‚s kernal nebyl správně zpracovat tuto vlastnost procesoru, což vyžaduje, aby IRQ být zakázán nebo re-vectored během BCD matematických operací. Tento problém byl řešen také v derivátech CMOS.
- Instrukční sada 6502 obsahuje BRK (opcode $ 00), což je technicky softwarové přerušení (v duchu podobné SWI mnemotechnickým procesorům Motorola 6800 a ARM ). BRK se nejčastěji používá k přerušení provádění programu a spuštění monitoru strojového jazyka pro testování a ladění během vývoje softwaru. BRK lze také použít ke směrování provádění programu pomocí jednoduché skokové tabulky (analogicky ke způsobu, jakým Intel 8086 a deriváty zpracovávají softwarová přerušení podle čísla). Pokud však dojde k přerušení hardwaru, když procesor načítá instrukci BRK, verze procesoru NMOS neprovede BRK a místo toho bude pokračovat, jako by došlo pouze k přerušení hardwaru. Tato chyba byla opravena v implementaci CMOS procesoru.
- Při provádění instrukcí JSR (skok na podprogram) a RTS (návrat z podprogramu) je zpáteční adresa odeslaná do zásobníku JSR adresa posledního bajtu operandu JSR (tj. Nejvýznamnější bajt adresy podprogramu), místo adresy následujícího pokynu. Důvodem je, že skutečná kopie (z čítače programu do zásobníku a poté naopak) probíhá před automatickým přírůstkem čítače programu, ke kterému dochází na konci každé instrukce. Tato charakteristika by zůstala bez povšimnutí, pokud by kód nezkoumal zpáteční adresu za účelem načtení parametrů v proudu kódu (idiom 6502 programování popsaný v technické referenční příručce ProDOS 8 ). Charakteristikou 6502 derivátů zůstává dodnes.
Viz také
- Seznam 6502 montérů
- Domácí počítače s technologií MOS 6502
- Přerušení v procesorech 65xx
- Počet tranzistorů
- Akcelerátory Apple II
- cc65 - 6502 makro assembler a kompilátor C.
Poznámky
Reference
Citace
Bibliografie
- Peddle, Chuck (12. června 2014). „Orální historie Chucka Peddle“ (rozhovor). Rozhovor s Dougem Fairbairnem a Stephenem Diamondem.
- Bagnall, Brian (2010). Commodore, společnost na okraji (2. vyd.). Winnipeg, Manitoba: Variant Press. ISBN 978-0-9738649-6-0.
- Bennett, Thomas; Ekiss, John; Lattin, William (Bill); Lavell, Jeff (28. března 2008). „Panel ústní historie Motorola 6800“ (PDF) (rozhovor). Rozhovor s Davidem Lawsem.
- Cushman, Robert H. (20. září 1975). „ΜP 2-1/2 generace-díly za 10 $, které fungují jako low-end mini“ (PDF) . EDN . Boston: Cahners Publishing. 20 (17): 36–42. Archivováno z originálu (PDF) dne 24. dubna 2016.
- Rozhovor s Williamem Menschem Stanfordem a projektem Silicon Valley, 9. října 1995. Přepis
Další čtení
- Katalogové listy a manuály
- Datový list řady 6500 ; Technologie MOS; 12 stran; 1976.
- Manuál hardwaru řady 6500 ; 2. vydání; Technologie MOS; 182 stran; 1976.
- Programovací manuál řady 6500 ; 2. vydání; Technologie MOS; 262 stran; 1976.
- Knihy
- Kniha aplikací 6502 ; 1. vydání; Rodnay Zaks ; Sybex; 281 stran; 1979; ISBN 978-0895880154 . (archiv)
- 6502 Programovací jazyk sestavení ; 2. vydání; Lance Leventhal; Osborne/McGraw-Hill; 650 stran; 1986; ISBN 978-0078812163 . (archiv)
- 6502 podprogramy jazyka sestavení ; 1. vydání; Lance Leventhal a Winthrop Saville; Osborne/McGraw-Hill; 550 stran; 1982; ISBN 978-0931988592 . (archiv)
- 6502 her ; 1. vydání; Rodnay Zaks; Sybex; 292 stran; 1980; ISBN 978-0895880222 . (archiv)
- 6502 Uživatelská příručka ; 1. vydání; Joseph Carr; Spočívat; 288 stran; 1984; ISBN 978-0835970020 . (archiv)
- Pokročilé programování 6502 ; 1. vydání; Rodnay Zaks; John Wiley & Sons; 292 stran; 1982; ISBN 978-0895880895 . (archiv)
- Strojový jazyk pro začátečníky - osobní počítač Programování strojového jazyka pro počítače Atari, VIC, Apple, C64 a PET ; 1. vydání; Richard Mansfield; Vypočítat! Publikace; 350 stran; 1983; ISBN 978-0942386110 . (archiv)
- Programování 6502 ; 4. vydání; Rodnay Zaks; Sybex; 408 stran; 1983; ISBN 978-0895881359 . (archiv)
- Programování 65816 - včetně 6502, 65C02 , 65802 ; 1. vydání; David Eyes a Ron Lichty; Sál Prentice; 636 stran; 1986; ISBN 978-0893037895 . (archiv)
- Referenční karty
- Okamžitá referenční karta 6502 mikroprocesoru ; James Lewis; Micro Logic; 2 stránky; 1980. (archiv)
externí odkazy
- 6502.org - zdroj mikroprocesoru 6502 - úložiště
- The Rise of MOS Technology & The 6502 - archiv Commodore
- 650x informace - Stručný popis, fotografie MOS a čipů druhého zdroje; na cpu-collection.de
- mdfs.net - instrukční sada 6502
- Chytrý, Eriku. „6502 - první RISC µP“ . Archivovány od originálu dne 24. května 2012.
- Harrod, Dennette A. (říjen 1980). „6502 dostává mikroprogramovatelné pokyny“ . BYTE . Sv. 5 č. 10. McGraw Hill . s. 282–285. ISSN 0360-5280 . Archivovány od originálu na 2006-05-25 . Citováno 2006-05-14 .
- Simulátory / emulátory
- Online 6502 kompatibilní assembler a emulátor, napsaný v JavaScriptu Archivováno 2011-02-08 na Wayback Machine
- Seznam emulátorů softwaru 6502 - Zopharova doména
- Simulátor 6502 pro Windows - Atari Gaming Headquarters
- Vizuální tranzistorová simulace 6502 CPU
- Jádro procesoru MCL65 6502 - kód C - MicroCore Labs GitHub
- Desky
- Grantova 7/8čipová deska 6502
- Tréninková deska mikroprocesoru 6502
- Sestavte si vlastní tréninkovou desku KIM-1- viz KIM-1
- Domácí počítač 6502
- Jednodeskový počítač PE6502
- Jednodeskový počítač BE6502 - podle videí Ben Eater
- FPGA
- cpu6502_tc 6502 jádro CPU - zdrojový kód VHDL - OpenCores
- ag_6502 6502 Jádro CPU - zdrojový kód Verilog - OpenCores
- Jádro procesoru M65C02 65C02 - zdrojový kód Verilog - OpenCores
- Jádro CPU MCL65 6502 - Verilog - MicroCore Labs GitHub