Technologie MOS 6502 - MOS Technology 6502

Technologie MOS 6502
MOS 6502AD 4585 top.jpg
Procesor MOS Technology 6502 v plastovém obalu DIP-40 . Čtyřmístný kód data naznačuje, že byl vyroben ve 45. týdnu (listopad) 1985.
Obecná informace
Spuštěno 1975 ; Před 46 lety ( 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

Demonstrační deska Motorola 6800 postavená Chuckem Peddleem a Johnem Buchananem v roce 1974

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

Reklama na technologii MOS z roku 1973 zdůrazňující jejich vlastní schopnosti integrovaných obvodů
MOS Technology MCS6501, v bílém keramickém obalu, vyrobený koncem srpna 1975

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

Úvodní reklama na mikroprocesory MOS Technology MCS6501 a MCS6502

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.

MOS Technology MCS6502, v bílém keramickém obalu, vyrobený na konci roku 1975
Rozdíly vývodů
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

Datový list z května 1976 vynechal mikroprocesor 6501, který byl ve verzi ze srpna 1975 .

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

Zemřít procesor 6502. Pravidelná část nahoře je ROM s dekódováním instrukcí, zdánlivě náhodná část ve středu je řídicí logika a dole jsou registry (vpravo) a ALU (vlevo). Připojení datové sběrnice je vpravo dole a sběrnice adres dole a dole vlevo.
Konfigurace 6502 pinů (40kolíkový DIP )
Registry MOS 6502
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 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 SEDinstrukcí (set D flag) má za následek desítkovou aritmetiku, což $99 + $01by mělo za následek $ 00 a nastavení příznaku carry (C). V binárním režimu ( CLDvymazat 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 ORAinstrukci, 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á INXna rozdíl INC Xod zvýšení registru X.

Tabulka s pokyny

Detailní chování

Procesor 6502 s nataženými tranzistory NMOS a štítky naznačujícími funkčnost součástí 6502.

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í BVCinstrukce 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.

Titulek
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 a xxFF+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é

Poznámky

Reference

Citace

Bibliografie

Další čtení

Katalogové listy a manuály
Knihy
Referenční karty
  • Okamžitá referenční karta 6502 mikroprocesoru ; James Lewis; Micro Logic; 2 stránky; 1980. (archiv)

externí odkazy

Simulátory / emulátory
Desky
FPGA