MOS-Technologie 6502 - MOS Technology 6502

MOS-Technologie 6502
MOS 6502AD 4585 top.jpg
Ein MOS Technology 6502-Prozessor in einem DIP-40- Kunststoffgehäuse. Der vierstellige Datumscode zeigt an, dass es in der 45. Woche (November) von 1985 hergestellt wurde.
Allgemeine Information
Gestartet 1975 ; Vor 46 Jahren ( 1975 )
Gängige Hersteller
Leistung
max. CPU- Taktrate 1 MHz bis 3 MHz
Datenbreite 8
Adressbreite 16
Architektur und Klassifizierung
Befehlssatz MOS 6502
Anweisungen 56
Physikalische Spezifikationen
Transistoren
Pakete)
Geschichte
Vorgänger
Nachfolger

Der MOS Technology 6502 (typischerweise "sechzig-fünf-oh-zwei" oder "sechs-fünf-oh-zwei" ausgesprochen) ist ein 8-Bit- Mikroprozessor , der von einem kleinen Team unter der Leitung von Chuck Peddle für MOS Technology entwickelt wurde . Das Designteam hatte zuvor bei Motorola am Projekt Motorola 6800 gearbeitet ; Der 6502 ist im Wesentlichen eine vereinfachte, kostengünstigere und schnellere Version dieses Designs.

Bei seiner Einführung 1975 war der 6502 der mit Abstand günstigste Mikroprozessor auf dem Markt. Es wurde anfangs für weniger als ein Sechstel der Kosten konkurrierender Designs größerer Unternehmen wie 6800 oder Intel 8080 verkauft . Seine Einführung führte zu schnellen Preissenkungen im gesamten Prozessormarkt. Zusammen mit dem Zilog Z80 löste es eine Reihe von Projekten aus, die in den frühen 1980er Jahren zur Revolution der Heimcomputer führten .

Beliebte Videospielkonsolen und Computer wie Atari 2600 , Atari 8-Bit-Familie , Apple II , Nintendo Entertainment System , Commodore 64 , Atari Lynx , BBC Micro und andere verwenden den 6502 oder Variationen des Grunddesigns. Kurz nach der Einführung des 6502 wurde die MOS-Technologie direkt von Commodore International gekauft , der den Mikroprozessor und die Lizenzen weiterhin an andere Hersteller verkaufte. In den frühen Tagen des 6502 wurde es von Rockwell und Synertek als Second-Source verkauft und später an andere Unternehmen lizenziert.

In ihrer CMOS- Form ( 65C02 , die vom Western Design Center entwickelt wurde ) wird die 6502-Familie weiterhin weit verbreitet in eingebetteten Systemen verwendet , mit geschätzten Produktionsvolumen in Hunderten von Millionen.

Geschichte und Verwendung

Ursprünge bei Motorola

Motorola 6800 Demoboard gebaut von Chuck Peddle und John Buchanan im Jahr 1974

Der 6502 wurde von vielen der gleichen Ingenieure entwickelt, die auch die Motorola 6800- Mikroprozessorfamilie entwickelt hatten. Motorola startete 1971 das 6800-Mikroprozessorprojekt mit Tom Bennett als Hauptarchitekt. Das Chip-Layout begann Ende 1972, die ersten 6800-Chips wurden im Februar 1974 hergestellt und die gesamte Familie wurde im November 1974 offiziell veröffentlicht. John Buchanan war der Designer des 6800-Chips und Rod Orgill, der später den 6501 entwickelte, unterstützte Buchanan dabei Schaltungsanalysen und Chip-Layout. Bill Mensch kam im Juni 1971 nach seinem Abschluss an der University of Arizona (im Alter von 26 Jahren) zu Motorola. Seine erste Aufgabe bestand darin, die Peripherie-ICs für die 6800-Familie zu definieren und später war er der Hauptentwickler des 6820 Peripheral Interface Adapters (PIA). Die Ingenieure von Motorola konnten analoge und digitale Simulationen auf einem IBM 370-165 Großrechner ausführen . Bennett beauftragte Chuck Peddle 1973 mit der architektonischen Unterstützung der bereits in Arbeit befindlichen Produkte der 6800-Familie. Er hat in vielen Bereichen mitgewirkt, unter anderem beim Design des 6850 ACIA (serielle Schnittstelle).

Zielkunden von Motorola waren etablierte Elektronikunternehmen wie Hewlett-Packard , Tektronix , TRW und Chrysler . Im Mai 1972 begannen die Ingenieure von Motorola, ausgewählte Kunden zu besuchen und die Details ihres vorgeschlagenen 8-Bit-Mikroprozessorsystems mit ROM, RAM, parallelen und seriellen Schnittstellen zu teilen. Anfang 1974 stellten sie technische Muster der Chips zur Verfügung, damit Kunden ihre Designs prototypisieren konnten. Die Strategie der "Total Product Family" von Motorola konzentrierte sich nicht auf den Preis des Mikroprozessors, sondern auf die Reduzierung der Gesamtdesignkosten des Kunden. Sie boten Entwicklungssoftware auf einem Timesharing-Computer, das Debugging-System "EXORciser", Schulungen vor Ort und Unterstützung durch Anwendungstechniker vor Ort. Sowohl Intel als auch Motorola hatten ursprünglich einen Preis von 360 US-Dollar für einen einzelnen Mikroprozessor angekündigt. Der tatsächliche Preis für Produktionsmengen war viel niedriger. Motorola bot ein Design-Kit mit dem 6800 mit sechs Support-Chips für 300 US-Dollar an.

Peddle, der die Verkäufer bei Kundenbesuchen begleitete, stellte fest, dass die Kunden durch die hohen Kosten der Mikroprozessorchips abgeschreckt wurden. Gleichzeitig führten diese Besuche unweigerlich dazu, dass die von ihm vorgestellten Ingenieure Listen mit erforderlichen Anweisungen erstellten, die viel kleiner waren als "all diese ausgefallenen Anweisungen", die in der 6800 enthalten waren. Peddle und andere Teammitglieder begannen, das Design einer verbesserte Funktion, kleiner Mikroprozessor. Zu dieser Zeit hatte die neue Halbleiterfabrik von Motorola in Austin, Texas, Schwierigkeiten bei der Herstellung von MOS-Chips, und Mitte 1974 begann eine einjährige Rezession in der Halbleiterindustrie. Auch viele der Mitarbeiter von Mesa, Arizona, waren mit dem bevorstehenden Umzug nach Austin, Texas, unzufrieden .

Das Management der Semiconductor Products Division von Motorola war mit Problemen überhäuft und zeigte kein Interesse an dem kostengünstigen Mikroprozessor-Angebot von Peddle. Schließlich erhielt Peddle einen offiziellen Brief, in dem er aufgefordert wurde, die Arbeit am System einzustellen. Peddle reagierte auf die Anweisung, indem er Motorola mitteilte, dass der Brief eine offizielle Erklärung zur "Aufgabe des Projekts" darstelle und als solches das geistige Eigentum, das er bis zu diesem Zeitpunkt entwickelt hatte, nun ihm gehörte. In einem Interview im November 1975 stimmte Motorolas Chairman Robert Galvin letztendlich zu, dass das Konzept von Peddle gut war und dass die Division eine Chance verpasste: "Wir haben nicht die richtigen Führungskräfte in der Division Semiconductor Products ausgewählt." Der Geschäftsbereich wurde neu organisiert und die Geschäftsführung ersetzt. Der neue Vizepräsident der Gruppe, John Welty, sagte: "Die Halbleiter-Vertriebsorganisation hat ihre Sensibilität für die Kundenbedürfnisse verloren und konnte keine schnellen Entscheidungen treffen."

Wechsel zur MOS-Technologie

Eine Werbung von MOS Technology aus dem Jahr 1973, in der die Fähigkeiten der benutzerdefinierten integrierten Schaltungen hervorgehoben werden
MOS Technology MCS6501, in weißem Keramikgehäuse, hergestellt Ende August 1975

Peddle begann außerhalb von Motorola nach einer Finanzierungsquelle für dieses neue Projekt zu suchen. Er wandte sich zunächst an den CEO von Mostek, LJ Sevin , aber er lehnte ab. Sevin gab später zu, dass dies geschah, weil er befürchtete, Motorola würde sie verklagen.

Während Peddle auf einer seiner Verkaufsreisen die Ford Motor Company besuchte , erwähnte Bob Johnson, der spätere Leiter der Motorautomatisierungsabteilung von Ford, dass ihr ehemaliger Kollege John Paivinen zu General Instrument gewechselt sei und sich Halbleiterdesign selbst beigebracht habe . Seitdem war er weitergezogen und arbeitete in einer neuen Firma, die er in Valley Forge, Pennsylvania, gründete , an einigen sehr interessanten Arbeiten an Rechner-Chipsätzen .

Paivinen hatte MOS Technology 1969 mit zwei anderen Führungskräften von General Instrument, Mort Jaffe und Don McLaughlin, gegründet. 1970 erwarb Allen-Bradley , ein Anbieter von elektronischen Komponenten und Industriesteuerungen, eine Mehrheitsbeteiligung. Das Unternehmen entwarf und fertigte kundenspezifische ICs für Kunden und hatte eine Reihe von Rechnerchips entwickelt.

Nachdem die Bemühungen von Mostek gescheitert waren, wandte sich Peddle an Paivinen, der es "sofort verstanden" hatte. Am 19. August 1974 verließen Chuck Peddle, Bill Mensch, Rod Orgill, Harry Bawcom, Ray Hirt, Terry Holdt und Wil Mathys Motorola, um zu MOS zu wechseln. Mike Janes kam später dazu. Von den siebzehn Chipdesignern und Layoutern des 6800-Teams blieben acht übrig. Das Ziel des Teams war es, einen kostengünstigen Mikroprozessor für eingebettete Anwendungen zu entwickeln und zu produzieren und einen möglichst breiten Kundenstamm anzusprechen. Dies wäre nur möglich, wenn der Mikroprozessor kostengünstig wäre und das Team das Preisziel auf ein Volumen von 5 US-Dollar festlegte. Mensch erklärte später, das Ziel sei nicht der Prozessorpreis selbst, sondern die Entwicklung eines Chipsatzes, der für 20 US-Dollar verkauft werden könnte, um mit dem kürzlich eingeführten Intel 4040 zu konkurrieren, der in einem ähnlichen kompletten Chipsatz für 29 US-Dollar verkauft wurde.

Chips werden hergestellt, indem mehrere Kopien des Chipdesigns auf die Oberfläche eines "Wafers" gedruckt werden , einer dünnen Scheibe aus hochreinem Silizium. Kleinere Chips können in größerer Anzahl auf demselben Wafer gedruckt werden, wodurch ihr relativer Preis sinkt. Außerdem enthalten Wafer immer eine Anzahl winziger physikalischer Defekte, die über die Oberfläche verstreut sind. Jeder an dieser Stelle gedruckte Chip schlägt fehl und muss entsorgt werden. Kleinere Chips bedeuten, dass eine einzelne Kopie weniger wahrscheinlich auf einen Defekt gedruckt wird. Aus diesen beiden Gründen hängen die Kosten des Endprodukts stark von der Größe des Chipdesigns ab.

Die ursprünglichen 6800 Chips sollten 180 × 180 mil (4,6 × 4,6 mm) groß sein , aber das Layout wurde bei 212 × 212 mil (5,4 × 5,4 mm) oder einer Fläche von 29,0 mm 2 fertiggestellt . Für das neue Design verlangte das Kostenziel ein Größenziel von 153 × 168 mil (3,9 × 4,3 mm) oder eine Fläche von 16,6 mm 2 . Um dieses Ziel zu erreichen, wären mehrere neue Techniken erforderlich.

Wechsel zu NMOS

Es gab zwei bedeutende Fortschritte, die auf den Markt kamen, gerade als der 6502 entworfen wurde, der zu erheblichen Kosteneinsparungen führte. Die erste war die Umstellung auf Depletion-Load-NMOS . Der 6800 verwendete einen frühen NMOS-Prozess, der drei Versorgungsspannungen erforderte, aber eines der Merkmale des Chips war ein Onboard- Spannungsverdoppler , der es ermöglichte, eine einzelne +5-V-Versorgung für +5, -5 und +12 intern zu verwenden, im Gegensatz zu anderen Chips von die Ära wie der Intel 8080 , die drei separate Versorgungspins erforderte. Dieses Merkmal reduzierte zwar die Komplexität der Stromversorgung und des Pin-Layouts, erforderte jedoch immer noch separate Stromschienen zu den verschiedenen Gates auf dem Chip, was die Komplexität und Größe in die Höhe trieb. Durch die Umstellung auf das neue Depletion-Load-Design war eine einzige +5-Versorgung alles, was benötigt wurde, wodurch all diese Komplexität beseitigt wurde.

Ein weiterer praktischer Vorteil war, dass das Taktsignal für frühere CPUs stark genug sein musste, um die gesamte Verlustleistung auf dem Weg durch die Schaltkreise zu überstehen, was fast immer einen separaten externen Chip erforderte, der ein ausreichend starkes Signal liefern konnte. Mit dem reduzierten Leistungsbedarf von NMOS könnte der Takt auf den Chip verlagert werden, was das gesamte Computerdesign vereinfacht. Diese Änderungen reduzierten die Komplexität und die Kosten für die Implementierung eines vollständigen Systems erheblich.

Eine weitere Änderung war die Einführung der Projektionsmaskierung. Früher wurden Chips auf der Oberfläche des Wafers gemustert, indem eine Maske auf die Oberfläche des Wafers gelegt und dann mit hellem Licht darauf bestrahlt wurde. Die Masken nahmen beim Abheben vom Chip oft winzige Schmutz- oder Fotolackpartikel auf , was bei jeder nachfolgenden Maskierung an diesen Stellen zu Fehlern führte. Bei komplexen Designs wie CPUs würden 5 oder 6 solcher Maskierungsschritte verwendet, und die Wahrscheinlichkeit, dass mindestens einer dieser Schritte einen Fehler einführte, war sehr hoch. In den meisten Fällen waren 90 % solcher Designs fehlerhaft, was zu einer Ausbeute von 10 % führte. Der Preis der Arbeitsbeispiele musste die Produktionskosten der weggeworfenen 90% decken.

1973 führte Perkin-Elmer das Micraign- System ein, das ein Bild der Maske auf den Wafer projizierte, anstatt einen direkten Kontakt zu erfordern. Masken nahmen keinen Schmutz mehr von den Wafern auf und hielten in der Größenordnung von 100.000 statt 10 Anwendungen. Dies eliminierte Schritt-zu-Schritt-Fehler und die hohen Fehlerraten, die früher bei komplexen Designs beobachtet wurden. Die Renditen der CPUs sprangen sofort von 10 % auf 60 oder 70 %. Dies bedeutete, dass der Preis der CPU in etwa um den gleichen Betrag sank und der Mikroprozessor plötzlich zu einem Standardgerät wurde.

Die bestehenden Fertigungslinien von MOS Technology basierten auf der älteren PMOS-Technologie, sie hatten jedoch noch nicht begonnen, mit NMOS zu arbeiten, als das Team eintraf. Paivinen versprach, rechtzeitig eine NMOS-Reihe in Betrieb zu nehmen, um mit der Produktion der neuen CPU zu beginnen. Er hielt das Versprechen, die neue Linie war im Juni 1975 fertig.

Designhinweise

Chuck Peddle, Rod Orgill und Wil Mathys entwarfen die ursprüngliche Architektur der neuen Prozessoren. Ein Artikel vom September 1975 im EDN-Magazin gibt diese Zusammenfassung des Designs:

Die MOS Technology 650X-Familie stellt einen bewussten Versuch von acht ehemaligen Motorola-Mitarbeitern dar, die an der Entwicklung des 6800-Systems mitgewirkt haben, ein Teil herauszubringen, das den 6800 ersetzen und übertreffen würde, ihn jedoch unterbietet. Mit Rückblick auf das 6800-Projekt nahm das MOS Technology-Team unter der Leitung von Chuck Peddle die folgenden Architekturänderungen an der Motorola-CPU vor…

Die wichtigste Änderung in Bezug auf die Chipgröße war die Eliminierung der Tri-State-Treiber von den Adressbusausgängen. Dies war im 6800 enthalten, damit es mit anderen Chips in Direct Memory Access (DMA)- und Co-Processing-Rollen auf Kosten von beträchtlichem Chip-Platz arbeiten kann. In der Praxis erforderte die Verwendung eines solchen Systems, dass die anderen Vorrichtungen ähnlich komplex sind, und Designer neigten stattdessen dazu, Systeme außerhalb des Chips zu verwenden, um einen solchen Zugriff zu koordinieren. Der 6502 hat dieses Feature einfach weggelassen, passend zu seinem Design als kostengünstiger Controller, der für bestimmte Aufgaben verwendet wird und mit einfachen Geräten kommuniziert. Peddle schlug vor, dass jeder, der diese Art des Zugriffs tatsächlich benötigt, sie mit einem einzigen 74158 implementieren kann .

Der nächste große Unterschied bestand darin, die Register zu vereinfachen. Zunächst wurde einer der beiden Akkus entfernt. Auf Allzweckregister wie Akkumulatoren muss von vielen Teilen des Befehlsdecodierers zugegriffen werden und erfordern daher einen erheblichen Verdrahtungsaufwand, um Daten zu und von ihrem Speicher zu verschieben. Zwei Akkumulatoren erleichtern viele Codieraufgaben, kosten aber das Chipdesign selbst erheblichen Aufwand. Weitere Einsparungen wurden durch die Reduzierung des Stack-Registers von 16 auf 8 Bit erzielt, sodass der Stack nur 256 Byte lang sein durfte, was für seine vorgesehene Rolle als Mikrocontroller ausreichte.

Das 16-Bit-IX- Indexregister wurde zweigeteilt und wurde zu X und Y. Noch wichtiger war, dass sich die Zugriffsart änderte; im 6800 hatte IX eine 16-Bit-Adresse, die durch eine mit dem Befehl gelieferte Zahl versetzt wurde, die beiden wurden addiert, um die endgültige Adresse zu erzeugen. Beim 6502 (und den meisten anderen Designs) wurde die Basisadresse in der Anweisung gespeichert und das X oder Y wurde hinzugefügt.

Schließlich wurde der Befehlssatz vereinfacht, wodurch Platz im Decoder und in der Steuerlogik geschaffen wurde. Von den ursprünglichen 72 Anweisungen im 6800 waren 56 übrig. Unter denen, die entfernt wurden, waren alle Befehle, die Daten zwischen den beiden Akkumulatoren des 6800 bewegten, sowie eine Reihe von Verzweigungsbefehlen, die von der PDP-11 inspiriert wurden, wie die Möglichkeit, zwei numerische Werte direkt zu vergleichen. Der 6502 verwendet ein einfacheres System, das Vergleiche handhabt, indem es den Akkumulator mathematisch durchführt und dann die Ergebnis-Flags untersucht.

Das High-Level-Design des Chips musste in Zeichnungen von Transistoren und Verbindungen umgewandelt werden. Bei MOS Technology war das "Layout" ein sehr manueller Prozess, der mit Farbstiften und Pergamentpapier durchgeführt wurde. Das Layout bestand aus Tausenden von Polygonformen auf sechs verschiedenen Zeichnungen; eine für jede Schicht des Herstellungsprozesses. Angesichts der Größenbeschränkungen musste das gesamte Chipdesign ständig berücksichtigt werden. Mensch und Paivinen arbeitete auf dem Befehlsdekodierer während Mensch, Peddle und Orgill auf der ALU und Register gearbeitet. Ein weiterer Fortschritt, der auf einer Party entwickelt wurde, war eine Möglichkeit, einen Teil der internen Verkabelung gemeinsam zu nutzen, um die Größe der ALU zu reduzieren.

Trotz aller Bemühungen war das endgültige Design 5 mil zu breit. Die ersten 6502 Chips waren 168 × 183 mil (4,3 × 4,7 mm) oder eine Fläche von 19,8 mm 2 groß . Die Anweisung zum Drehen nach rechts (ROR) funktionierte im ersten Silizium nicht, daher wurde die Anweisung vorübergehend aus den veröffentlichten Dokumenten weggelassen, aber die nächste Iteration des Designs schrumpfte den Chip und korrigierte die Anweisung zum Drehen nach rechts, die dann in die überarbeitete Dokumentation aufgenommen wurde .

Einführung der 6501 und 6502

Einführungswerbung für die Mikroprozessoren MCS6501 und MCS6502 von MOS Technology

MOS würde zwei Mikroprozessoren einführen, die auf dem gleichen zugrunde liegenden Design basieren: Der 6501 würde in den gleichen Sockel wie der Motorola 6800 gesteckt, während der 6502 die Pinbelegung neu arrangierte, um einen Taktoszillator auf dem Chip zu unterstützen. Beide würden mit anderen Unterstützungschips funktionieren, die für den 6800 entwickelt wurden. Sie würden keine 6800-Software ausführen, da sie einen anderen Befehlssatz, andere Register und hauptsächlich andere Adressierungsmodi hatten. Rod Orgill war für das Design des 6501 verantwortlich; er hatte John Buchanan bei Motorola auf der 6800 assistiert. Bill Mensch machte die 6502; er war der Designer des 6820 Peripheral Interface Adapter (PIA) bei Motorola. Harry Bawcom, Mike Janes und Sydney-Anne Holt halfen beim Layout.

Die Mikroprozessor-Einführung von MOS Technology unterschied sich von der traditionellen monatelangen Produkteinführung. Der erste Lauf einer neuen integrierten Schaltung wird normalerweise für interne Tests verwendet und als "Engineering Samples" an ausgewählte Kunden weitergegeben. Diese Chips weisen oft einen oder zwei kleinere Konstruktionsfehler auf, die vor Produktionsbeginn behoben werden. Chuck Peddles Ziel war es, den Teilnehmern der Wescon-Messe in San Francisco ab dem 16. September 1975 die ersten Chips der Serien 6501 und 6502 zu verkaufen. Peddle war ein sehr effektiver Sprecher und die Mikroprozessoren von MOS Technology wurden in der Fachpresse ausführlich behandelt. Eine der frühesten war eine ganzseitige Geschichte über die Mikroprozessoren MCS6501 und MCS6502 in der Ausgabe vom 24. Juli 1975 des Electronics Magazine. Geschichten erschienen auch in EE Times (24. August 1975), EDN (20. September 1975), Electronic News (3. November 1975), Byte (November 1975) und Microcomputer Digest (November 1975). Anzeigen für den 6501 erschienen in der ersten Augustwoche 1975 in mehreren Veröffentlichungen. Der 6501 sollte bei Wescon für jeweils 20 US-Dollar verkauft werden. Im September 1975 enthielt die Werbung sowohl den 6501- als auch den 6502-Mikroprozessor. Der 6502 würde nur 25 US-Dollar kosten (entspricht 120 US-Dollar im Jahr 2020).

Als MOS Technology auf der Wescon ankam, stellte man fest, dass es den Ausstellern nicht gestattet war, auf der Ausstellungsfläche etwas zu verkaufen. Sie mieteten die MacArthur Suite im St. Francis Hotel und wiesen dort Kunden an, die Prozessoren zu kaufen. In der Suite wurden die Prozessoren in großen Gläsern aufbewahrt, um darauf hinzuweisen, dass die Chips in Produktion und leicht verfügbar waren. Die Kunden wussten nicht, dass die untere Hälfte jedes Glases nicht funktionierende Chips enthielt. Die Chips kosteten 20 und 25 US-Dollar, während das Dokumentationspaket zusätzliche 10 US-Dollar kostete. Benutzer wurden ermutigt, Fotokopien der Dokumente anzufertigen , eine kostengünstige Möglichkeit für MOS Technology, Produktinformationen zu verteilen. In den vorläufigen Datenblättern waren nur 55 Anweisungen aufgeführt, mit Ausnahme der Anweisung Rotate Right (ROR), die bei diesen frühen Chips nicht richtig funktionierte. Die Rezensionen in Byte und EDN stellten das Fehlen der ROR-Anweisung fest. Die nächste Überarbeitung des Layouts behob dieses Problem und das Datenblatt vom Mai 1976 enthielt 56 Anweisungen. Peddle wollte, dass jeder interessierte Ingenieur und Bastler Zugang zu den Chips und der Dokumentation hat; andere Halbleiterfirmen wollten nur mit "ernsthaften" Kunden zu tun haben. Zum Beispiel Signetics wurde die Einführung des 2650 - Mikroprozessors und seine Anzeigen gefragt Leser Informationen über ihren Firmenbriefkopf zu schreiben.

MOS Technology MCS6502, in weißem Keramikgehäuse, hergestellt Ende 1975
Pinbelegungsunterschiede
Stift 6800 6501 6502
2 Halt Bereit Bereit
3 ∅1 (Zoll) ∅1 (Zoll) ∅1 (aus)
5 Gültige Speicheradresse Gültige Speicheradresse NC
7 Bus verfügbar Bus verfügbar SYNCHRONISIEREN
36 Datenbusfreigabe Datenbusfreigabe NC
37 ∅2 (Zoll) ∅2 (Zoll) ∅0 (Zoll)
38 NC NC Überlauf-Flag setzen
39 Drei-Zustands-Steuerung NC ∅2 (aus)

Motorola-Klage

Im Datenblatt vom Mai 1976 wurde der Mikroprozessor 6501 weggelassen, der in der Version vom August 1975 enthalten war .

Die Einführung von 6501/6502 in Print und bei Wescon war ein enormer Erfolg. Der Nachteil war, dass die umfangreiche Presseberichterstattung die Aufmerksamkeit von Motorola erregte. Im Oktober 1975 senkte Motorola den Preis für einen einzelnen 6800-Mikroprozessor von 175 US-Dollar auf 69 US-Dollar. Das System-Design-Kit für 300 US-Dollar wurde auf 150 US-Dollar reduziert und wurde jetzt mit einer Leiterplatte geliefert. Am 3. November 1975 beantragte Motorola beim Bundesgericht eine einstweilige Verfügung, um MOS Technology daran zu hindern, Mikroprozessorprodukte herzustellen und zu verkaufen. Sie reichten auch eine Klage wegen Patentverletzung und Veruntreuung von Geschäftsgeheimnissen ein. Motorola behauptete, dass sieben ehemalige Mitarbeiter zu MOS Technology kamen, um die Mikroprozessorprodukte dieses Unternehmens zu entwickeln.

Motorola war ein Milliarden-Dollar-Unternehmen mit einem plausiblen Fall und Anwälten. Am 30. Oktober 1974 hatte Motorola zahlreiche Patentanmeldungen für die Mikroprozessorfamilie eingereicht und erhielt 25 Patente. Der erste war im Juni 1976 und der zweite ging am 6. Juli 1976 an Bill Mensch für das 6820 PIA-Chip-Layout. Diese Patente betrafen den 6800-Bus und die Schnittstellen der Peripheriechips mit dem Mikroprozessor. Motorola begann 1950 mit der Herstellung von Transistoren und verfügte über ein Portfolio von Halbleiterpatenten. Allen-Bradley entschied sich, diesen Fall nicht zu bekämpfen und verkaufte seine Beteiligung an MOS Technology an die Gründer zurück. Vier der ehemaligen Motorola-Ingenieure wurden in der Klage genannt: Chuck Peddle, Will Mathys, Bill Mensch und Rod Orgill. Alle wurden in den 6800 Patentanmeldungen als Erfinder genannt. Während des Entdeckungsprozesses stellte Motorola fest, dass ein Ingenieur, Mike Janes, Peddles Anweisungen ignoriert und seine 6800 Konstruktionsdokumente zu MOS Technology gebracht hatte. Im März 1976 ging der nun unabhängigen MOS Technology das Geld aus und sie musste den Fall regeln. Sie vereinbarten, den Prozessor 6501 fallen zu lassen, Motorola 200.000 US-Dollar zu zahlen und die Dokumente zurückzugeben, die Motorola als vertraulich bezeichnete. Beide Unternehmen vereinbarten eine gegenseitige Lizenzierung von Mikroprozessorpatenten. Im Mai dieses Jahres senkte Motorola den Preis für einen einzelnen 6800-Mikroprozessor auf 35 US-Dollar. Im November hatte Commodore MOS Technology übernommen.

Computer und Spiele

Mit rechtlichen Problemen hinter sich hatte MOS immer noch das Problem, Entwickler dazu zu bringen, ihren Prozessor auszuprobieren, was Chuck Peddle dazu veranlasste, den Einplatinencomputer MDT-650 ("Microcomputer Development Terminal") zu entwickeln . Eine andere Gruppe innerhalb des Unternehmens entwarf das KIM-1 , das halbfertig verkauft wurde und mit einem Computerterminal von Drittanbietern und einem Kompaktkassettenlaufwerk in ein brauchbares System umgewandelt werden konnte . Zu ihrem Erstaunen verkaufte sich der KIM-1 sowohl bei Bastlern und Bastlern als auch bei den Ingenieuren, an die er gerichtet war, gut. Auch das zugehörige Kontroll-/Trainings-/Entwicklungssystem Rockwell AIM 65 schnitt gut ab. Die Software des AIM 65 basierte auf der des MDT. Ein weiteres ungefähr ähnliches Produkt war das Synertek SYM-1 .

Eine der ersten "öffentlichen" Anwendungen für das Design war der 1976 eingeführte Apple I- Mikrocomputer . Der 6502 wurde als nächstes im Commodore PET und im Apple II verwendet , die beide 1977 veröffentlicht wurden. Später wurde er im Atari 8-Bit verwendet Familie und Acorn Atom Heimcomputer, BBC Micro , Commodore VIC-20 und andere Designs sowohl für Heimcomputer als auch für Unternehmen, wie Ohio Scientific und Oric . Der 6510 , ein direkter Nachfolger des 6502 mit einem digitalen I/O-Port und einem Tri-State- Adressbus, war die CPU, die im meistverkauften Commodore 64 -Heimcomputer verwendet wurde. 6520 und / oder 6502-Variante CPUs wurden in allen Commodore verwendet Diskettenlaufantriebe für alle ihre 8-Bit - Computern, von der PET - Linie (von denen einige hatten zwei 6502-basierte CPUs) durch den Commodore 128, einschließlich der Commodore 64 , und in allen Plattenlaufwerken von Atari für alle ihre 8-Bit-Computerlinie, vom 400/800 bis zum XEGS.

Eine weitere wichtige Verwendung der 6500-Familie waren Videospiele. Der erste, der das Prozessordesign nutzte, war der Atari VCS, der später in Atari 2600 umbenannt wurde . Das VCS verwendete eine Variante des 6502 namens 6507 , die weniger Pins hatte und daher nur 8  KB Speicher adressieren konnte. Millionen der Atari-Konsolen würden verkauft, jede mit einem MOS-Prozessor. Eine weitere bedeutende Nutzung war das Nintendo Entertainment System und Famicom . Der im NES verwendete 6502 war eine zweite Quellversion von Ricoh , ein partielles System-on-a-Chip , dem der binär codierte Dezimalmodus fehlte, aber 22 speicherabgebildete Register und On-Die-Hardware für die Tonerzeugung und das Joypad-Lesen hinzugefügt wurden und Sprite- Liste DMA . Genannt 2A03 in NTSC - Konsolen und 2A07 in PAL Konsolen (wobei der Unterschied darin das Speicherteilerverhältnis und eine Nachschlagtabelle für die Audio Abtastraten), wurde dieser Prozessor ausschließlich hergestellt Nintendo . Der Atari Lynx verwendet eine 4-MHz-Version des Chips, den 65SC02 .

In den 1980er Jahren verwendete das bekannte Elektronikmagazin Elektor/Elektruur den Prozessor in seinem Mikroprozessor-Entwicklungsboard Junior Computer .

Technische Beschreibung

6502 Prozessor sterben. Der reguläre Abschnitt oben ist das Instruktionsdecodierungs-ROM, der scheinbar zufällige Abschnitt in der Mitte ist die Steuerlogik und unten sind die Register (rechts) und die ALU (links). Die Datenbusanschlüsse befinden sich unten rechts und der Adressbus unten und unten links.
6502 Pinbelegung (40-Pin DIP )
MOS 6502-Register
1 5 1 4 1 3 1 2 1 1 1 0 9 8 7 6 5 4 3 2 1 0 (Bitposition)
Hauptregister
  EIN Ein Akkumulator
Indexregister
  x X- Index
  Ja Y- Index
0 0 0 0 0 0 0 1 S S tack Pointer
Programm zähler
PC P rogram C ounter
Statusregister
  n V - B D ich Z C P ROZESSOR F lags

Der 6502 ist ein Little-Endian- 8-Bit- Prozessor mit einem 16-Bit- Adressbus . Die ursprünglichen Versionen hergestellt wurden unter Verwendung eines 8 um - Prozesstechnologie - Chip mit einer Chipgröße von 3,9 mm × 4,3 mm (beworben als 153 mils × 168 mil ) für eine Gesamtfläche von 16,6 mm 2 .

Die interne Logik läuft mit der gleichen Geschwindigkeit wie die externe Taktrate, aber trotz der niedrigen Taktraten (typischerweise in der Nähe von 1 bis 2  MHz ) war die Leistung des 6502 mit anderen zeitgenössischen CPUs mit deutlich schnelleren Takten konkurrenzfähig. Dies ist teilweise auf eine einfache Zustandsmaschine zurückzuführen, die durch kombinatorische (taktlose) Logik in größerem Maße als in vielen anderen Designs implementiert ist ; der zweiphasige Takt (der zwei Synchronisationen pro Zyklus liefert) könnte dadurch den Maschinenzyklus direkt steuern. Typische Anweisungen können beim 6502 nur halb so viele Zyklen in Anspruch nehmen wie bei modernen Designs. Wie die meisten einfachen CPUs dieser Ära wird der dynamische NMOS 6502-Chip nicht von einem Mikrocode- ROM sequenziert, sondern verwendet ein PLA (das etwa 15% der Chipfläche einnahm) für die Befehlsdecodierung und -sequenzierung. Wie bei den meisten 8-Bit-Mikroprozessoren führt der Chip eine begrenzte Überlappung von Abruf und Ausführung durch.

Die niedrige Taktfrequenz mäßigte den Geschwindigkeitsbedarf des an die CPU angeschlossenen Speichers und der Peripherie, da nur etwa 50% des Taktzyklus für den Speicherzugriff zur Verfügung standen (dieser Anteil variierte aufgrund des asynchronen Designs stark zwischen den Chipversionen). Dies war zu einer Zeit kritisch, als erschwinglicher Speicher Zugriffszeiten im Bereich von 250 bis 450 ns hatte .

Da der Chip nur während bestimmter Teile des Taktzyklus auf den Speicher zugegriffen hat und diese Zyklen durch den PHI2-Low-Clock-Out-Pin angezeigt wurden, konnten andere Chips in einem System in den Zeiten, in denen der 6502 vom Bus getrennt war, auf den Speicher zugreifen. Dies wurde manchmal als "versteckter Zugriff" bezeichnet. Diese Technik wurde von Computersystemen häufig verwendet; Sie würden Speicher verwenden, der mit 2 MHz zugegriffen werden kann, und dann die CPU mit 1 MHz betreiben. Dies garantierte, dass die CPU und die Videohardware ihre Zugriffe verschachteln konnten, mit einer Gesamtleistung, die der des Speichergeräts entsprach. Als in den 1980er Jahren schnellere Speicher verfügbar wurden, konnten neuere Maschinen mit höheren Taktraten laufen, wie die 2-MHz-CPU im BBC Micro , und immer noch die Bus-Sharing-Techniken verwenden.

Register

Wie sein Vorgänger, der 6800, hat der 6502 nur sehr wenige Register . Die Register des 6502 umfassen ein 8-Bit- Akkumulatorregister (A), zwei 8-Bit- Indexregister (X und Y), 7 1-Bit- Prozessorstatus-Flag-Bits (P) – speziell von Bit 7 bis Bit 0 in P sind dies die negativ (N), Überlauf (V), reserviert , Break (B), Dezimal (D), Interrupt-Disable (I), Zero (Z) und Carry (C) Flag –, ein 8-Bit- Stack-Pointer (S), und einen 16-Bit- Programmzähler (PC). Dies ist vergleichbar mit einem typischen Design der gleichen Ära, dem Z80 , das über acht Allzweck-8-Bit-Register verfügt, die zu vier 16-Bit-Registern kombiniert werden können. Der Z80 verfügte auch über einen vollständigen Satz alternativer Register, die insgesamt sechzehn Allzweckregister ergaben.

Um das Fehlen von Registern etwas auszugleichen, enthielt der 6502 einen Zero-Page- Adressierungsmodus, der ein Adressbyte im Befehl verwendet anstelle der beiden, die zur Adressierung der vollen 64 KB des Speichers benötigt werden. Dies ermöglicht einen schnellen Zugriff auf die ersten 256 Bytes RAM durch Verwendung kürzerer Befehle. Chuck Peddle hat in Interviews gesagt, dass die Absicht bestand, diese ersten 256 Bytes RAM wie Register zu verwenden.

Der Stack-Adressraum ist fest mit der Speicherseite $01 verbunden , dh dem Adressbereich $0100$01FF ( 256511 ). Der Softwarezugriff auf den Stack erfolgt über vier implizite Adressierungsmodusbefehle, deren Funktionen darin bestehen, den Akkumulator oder das Prozessorstatusregister zu drücken oder zu öffnen (ziehen). Der gleiche Stack wird auch für Unterprogrammaufrufe über die Befehle JSR (Sprung zum Unterprogramm) und RTS (Rückkehr vom Unterprogramm) und für die Interrupt- Behandlung verwendet.

Adressierung

Der Chip nutzt die Index- und Stack-Register effektiv mit mehreren Adressierungsmodi , einschließlich eines schnellen "Direct-Page"- oder "Zero-Page"-Modus, ähnlich dem des PDP-8 , der auf Speicherplätze von den Adressen 0 bis 255 mit einem einzigen zugreift 8-Bit-Adresse (spart den Zyklus, der normalerweise zum Abrufen des höherwertigen Bytes der Adresse erforderlich ist) – Code für den 6502 verwendet die Nullseite ähnlich wie Code für andere Prozessoren Register verwenden würde. Auf einigen 6502-basierten Mikrocomputern mit einem Betriebssystem verwendet das Betriebssystem die meisten Nullseiten, so dass nur eine Handvoll Speicherorte für den Benutzer übrig bleiben.

Adressierungsmodi umfassen auch implizierte (1-Byte-Befehle); absolut (3 Byte); indiziert absolut (3 Byte); indizierte Nullseite (2 Byte); relativ (2 Byte); Akkumulator (1); indirekt,x und indirekt,y (2); und unmittelbar (2). Der Absolutmodus ist ein Allzweckmodus. Verzweigungsbefehle verwenden einen vorzeichenbehafteten 8-Bit-Offset relativ zum Befehl nach der Verzweigung; der Zahlenbereich -128..127 entspricht daher 128 Bytes rückwärts und 127 Bytes vorwärts von der Anweisung, die der Verzweigung folgt (das sind 126 Bytes rückwärts und 129 Bytes vorwärts vom Beginn der Verzweigungsinstruktion). Der Akkumulatormodus verwendet den Akkumulator als effektive Adresse und benötigt keine Operandendaten . Immediate - Modus verwendet einen 8-Bit - wörtliche Operanden.

Indirekte Adressierung

Die indirekten Modi sind nützlich für die Array- Verarbeitung und andere Schleifen. Beim 5/6-Zyklus-"(indirekt),y"-Modus wird das 8-Bit-Y-Register zu einer 16-Bit-Basisadresse hinzugefügt, die von der Nullseite gelesen wird, die durch ein einzelnes Byte nach dem Opcode lokalisiert wird. Das Y-Register ist daher ein Indexregister in dem Sinne, dass es verwendet wird, um einen tatsächlichen Index zu halten (im Gegensatz zum X-Register im 6800, wo eine Basisadresse direkt gespeichert wurde und zu dem ein sofortiger Offset hinzugefügt werden könnte). Das Inkrementieren des Indexregisters, um das Array byteweise zu durchlaufen, dauert nur zwei zusätzliche Zyklen. Beim weniger häufig verwendeten "(indirekt,x)"-Modus wird die effektive Adresse für die Operation an der Nullseitenadresse gefunden, die durch Hinzufügen des zweiten Bytes des Befehls zum Inhalt des X-Registers gebildet wird. Bei Verwendung der indizierten Modi fungiert die Nullseite effektiv als ein Satz von bis zu 128 zusätzlichen (wenn auch sehr langsamen) Adressregistern.

Der 6502 ist in der Lage, binär oder binär codiert dezimal zu addieren und zu subtrahieren . Platzieren der CPU in den BCD - Modus mit dem SED(D - Set - Flag) von Instruktionsergebnissen in Dezimalarithmetik, bei dem $99 + $01in Folge hätte $ 00 und den Übertrag (C) - Flag eingestellt wird . Im Binärmodus ( CLD, D-Flag löschen) würde dieselbe Operation dazu führen, dass $9A und das Übertrags-Flag gelöscht werden. Abgesehen von Atari BASIC wurde der BCD-Modus selten in Heimcomputeranwendungen verwendet.

Sehen Sie die Hallo-Welt! Artikel für ein einfaches, aber charakteristisches Beispiel für die Assemblersprache 6502 .

Anweisungen und Opcodes

6502 Anweisungsoperationscodes ( Opcodes ) sind acht Bits lang und haben die allgemeine Form AAABBBCC, wo AAA CC und den Opcode definieren und BBB definiert den Adressierungsmodus.

Betrachten Sie zum Beispiel den ORABefehl, der ein bitweises ODER an den Bits im Akkumulator mit einem anderen Wert durchführt. Der Befehls-Opcode hat die Form 000bbb01, wobei bbb 010 für einen unmittelbaren Moduswert (konstant), 001 für eine feste Nullseitenadresse, 011 für eine absolute Adresse usw. sein kann.

Dieses Muster ist nicht absolut und es gibt eine Reihe von Ausnahmen. Wo es jedoch zutrifft, ermöglicht es einem, Opcode-Werte für die meisten Befehle leicht zurück in Assembler-Mnemonik zu dekonstruieren, wobei die Randfälle mit Spezialcode behandelt werden.

Von den 256 möglichen Opcodes, die unter Verwendung eines 8-Bit-Musters verfügbar sind, verwendet der ursprüngliche 6502 151 davon, organisiert in 56 Anweisungen mit (möglicherweise) mehreren Adressierungsmodi . Abhängig vom Befehls- und Adressierungsmodus kann der Opcode null, ein oder zwei zusätzliche Bytes für Operanden erfordern. Daher variieren 6502 Maschinenbefehle in der Länge von einem bis drei Bytes. Der Operand wird im üblichen Little-Endian-Format des 6502 gespeichert .

Der 65C816 , der 16-Bit- CMOS- Nachkomme des 6502, unterstützt auch die 24-Bit-Adressierung, was dazu führt, dass Befehle mit Drei-Byte-Operanden zusammengesetzt werden, die ebenfalls im Little-Endian-Format angeordnet sind.

Die restlichen 105 Opcodes sind undefiniert. Im ursprünglichen Design wurden Befehle, bei denen die niederwertigen 4-Bits ( Nibble ) 3, 7, B oder F waren, nicht verwendet, was Raum für zukünftige Erweiterungen bot. Ebenso hatte die Spalte $2x nur einen einzigen Eintrag, . Die restlichen 25 leeren Slots wurden verteilt. Einige der leeren Steckplätze wurden im 65C02 verwendet, um sowohl neue Befehle als auch Variationen bestehender mit neuen Adressierungsmodi bereitzustellen. Die $Fx-Befehle wurden zunächst freigelassen, damit Drittanbieter ihre eigenen Befehle hinzufügen konnten, aber spätere Versionen des 65C02 standardisierten einen Satz von Bit-Fiddle- Befehlen, die von Rockwell Semiconductor entwickelt wurden . LDX #constant

Assemblersprache

Eine Anweisung in Assemblersprache 6502 besteht aus einer dreistelligen Befehlsmnemonik , gefolgt von irgendwelchen Operanden . Befehle, die keinen separaten Operanden verwenden, sondern basierend auf dem Adressierungsmodus auf ein einzelnes Register abzielen, kombinieren das Zielregister in der Befehlsmnemonik, sodass der Assembler das X-Register INXim Gegensatz INC Xzum Inkrementieren verwendet.

Anleitungstabelle

Detailliertes Verhalten

6502-Prozessor-Die mit eingezeichneten NMOS-Transistoren und Beschriftungen, die auf die Funktionalität der 6502-Komponenten hinweisen.

Der Prozessor des nicht maskierbaren Interrupt (NMI) eingegeben wird Kante empfindlich , was bedeutet , dass die Unterbrechung durch die abfallende Flanke des Signals ausgelöst wird , und nicht das Niveau. Dieses Merkmal hat zur Folge, dass eine verdrahtete ODER- Unterbrechungsschaltung nicht ohne weiteres unterstützt wird. Dies verhindert jedoch auch, dass verschachtelte NMI-Interrupts auftreten, bis die Hardware den NMI-Eingang wieder inaktiv macht, oft unter der Kontrolle des NMI- Interrupt-Handlers .

Die gleichzeitige Bestätigung der NMI- und IRQ- (maskierbaren) Hardware-Interrupt-Leitungen bewirkt, dass IRQ ignoriert wird. Wenn die IRQ - Leitung bleibt jedoch geltend gemacht , nachdem die Wartung des NMI, wird der Prozessor sofort auf IRQ reagieren, wie IRQ ist empfindlich Ebene . Somit wurde im 6502-Design eine Art eingebaute Interrupt-Priorität eingerichtet.

Das B-Flag wird gesetzt, indem der 6502 periodisch den Ausgang seines NMI-Flankendetektors und seinen IRQ-Eingang abtastet. Das niedrig getriebene IRQ-Signal wird jedoch nur erkannt, wenn IRQs durch das I-Flag erlaubt sind. Wenn auf diese Weise eine NMI-Anforderung oder ein (maskierbarer) IRQ erkannt wird, wird das B-Flag auf Null gesetzt und veranlasst den Prozessor, den BRK-Befehl als nächstes auszuführen, anstatt den nächsten Befehl basierend auf dem Programmzähler auszuführen.

Der BRK-Befehl schiebt dann den Prozessorstatus auf den Stapel, wobei das B-Flag-Bit auf Null gesetzt wird. Am Ende seiner Ausführung setzt der BRK-Befehl den Wert des B-Flags auf Eins zurück. Nur so kann das B-Flag geändert werden. Wenn ein anderer Befehl als der BRK-Befehl das B-Flag als Teil des Prozessorstatus auf den Stack schiebt, hat das B-Flag immer den Wert Eins.

Eine Low-to-High-Flanke am SO-Eingangspin setzt das Überlaufstatusbit des Prozessors. Dies kann für eine schnelle Reaktion auf externe Hardware verwendet werden. Zum Beispiel kann ein Hochgeschwindigkeits - Polling - Gerätetreiber abfragen kann die Hardware in nur drei Zyklen einmal mit einem Zweig-on-OVERFLOW-Clear ( BVC) Befehl, der verzweigt mich , bis Überlauf durch eine SO steigende Flanke eingestellt. Das Commodore 1541 und andere Commodore- Diskettenlaufwerke verwenden diese Technik, um zu erkennen, wann der Serializer bereit ist, ein weiteres Byte der Datenträgerdaten zu übertragen. Das Hardware- und Softwaredesign des Systems muss sicherstellen, dass während der arithmetischen Verarbeitung kein SO auftritt und Berechnungen stört.

Variationen und Derivate

Es gab zahlreiche Varianten des ursprünglichen NMOS 6502.

Untertitel
Gesellschaft Modell Beschreibung
6502A Ein 1,5-MHz-Chip, der in Asteroids Deluxe enthalten ist .
6502B Version des 6502, die mit einer maximalen Geschwindigkeit von 2 MHz anstelle von 1 betrieben werden kann. Der B wurde in Apple III , BBC Micro und, mit 1,79 MHz getaktet, frühen Atari 8-Bit-Computern verwendet .
6502C Der „offizielle“ 6502C war eine Version des ursprünglichen 6502, die mit bis zu 4 MHz betrieben werden konnte.

Nicht zu verwechseln mit SALLY, einem speziell für Atari entwickelten 6502 (und manchmal von ihnen als "6502C" bezeichnet) oder mit dem ähnlich benannten 65C02 .

SALLY / C014806 / "6502C" Benutzerdefinierte 6502-Variante für Atari, die in späteren Atari 8-Bit-Computern sowie in den Konsolen Atari 5200 und Atari 7800 verwendet wird .

Verfügt über ein HALT-Signal an Pin 35 und das R/W-Signal an Pin 36 (diese Pins sind bei einem Standard-6502) nicht verbunden (N/C). Das Ziehen von HALT auf Low verriegelt den Takt und pausiert den Prozessor. Dies wurde verwendet, um der Videoschaltung einen direkten Speicherzugriff (DMA) zu ermöglichen.

Obwohl in der Atari-Dokumentation manchmal als "6502C" bezeichnet, ist dies nicht dasselbe wie das "offizielle" 6502C und der Chip selbst wird nie als solcher gekennzeichnet.

MOS-Technologie 6503 Reduzierte Speicheradressierungskapazität (4 KB) und kein RDY-Eingang, in einem 28-Pin-DIP-Gehäuse (mit Phase 1 (OUT), SYNC, redundanten Vss und SO-Pins des 6502 ebenfalls weggelassen).
MOS-Technologie 6504 Reduzierte Speicheradressierungskapazität (8 KB), kein NMI und kein RDY-Eingang in einem 28-Pin-DIP-Gehäuse (mit Phase 1 (OUT), SYNC, redundantem Vss und SO-Pins des 6502 ebenfalls weggelassen).
MOS-Technologie 6505 Reduzierte Speicheradressierungskapazität (4 KB) und kein NMI in einem 28-Pin-DIP-Gehäuse (mit Phase 1 (OUT), SYNC, redundanten Vss und SO-Pins des 6502 ebenfalls weggelassen).
MOS-Technologie 6506 Reduzierte Speicheradressierfähigkeit (4 KB), kein NMI und kein RDY-Eingang, aber alle 3 Taktpins des 6502 (dh ein 2-Phasen-Ausgangstakt), in einem 28-Pin-DIP-Gehäuse (mit dem SYNC, redundanter Vss, und SO-Pins des 6502 ebenfalls weggelassen).
MOS-Technologie 6507 Reduzierte Speicheradressierungskapazität (8 KB) und keine Unterbrechungen in einem 28-Pin-DIP-Gehäuse (mit Phase 1 (OUT), SYNC, redundanten Vss und SO-Pins des 6502 ebenfalls weggelassen). Dieser Chip wurde im Videospielsystem Atari 2600 verwendet.
MOS-Technologie 6508 Verfügt über einen eingebauten 8-Bit-Eingangs-/Ausgangsport und 256 Byte internen statischen RAM.
MOS-Technologie 6509 Kann bis zu 1 MB RAM als 16 Bänke von 64 KB adressieren und wurde in der Commodore CBM-II- Serie verwendet.
MOS-Technologie 6510 Hat einen eingebauten programmierbaren 6-Bit-Eingangs-/Ausgangsport und wurde im Commodore 64 verwendet . Der 8500 ist praktisch eine HMOS-Version des 6510 und ersetzte ihn in späteren Versionen des C64.
MOS-Technologie 6512
6513
6514
6515
Die MOS Technology 6512, 6513, 6514 und 6515 verwenden jeweils einen externen Taktgeber, anstatt einen internen Taktgenerator wie das 650x (zB 6502) zu verwenden. Dies wurde in einigen Designs vorteilhaft verwendet, bei denen die Takte asymmetrisch ausgeführt werden konnten, wodurch die Gesamtleistung der CPU erhöht wurde.

Der 6512 ist ein 6502 mit einem 2-Phasen-Takteingang für einen externen Taktoszillator anstelle eines integrierten Taktoszillators. Die 6513, 6514 und 6515 sind in ähnlicher Weise äquivalent zu (jeweils) 6503, 6504 und 6505 mit dem gleichen 2-Phasen-Takteingang.

Der 6512 wurde im BBC Micro B+64 verwendet .

Ricoh 2A03 6502-Variante mit Audioprozessor und fehlendem BCD-Modus, die im Nintendo Entertainment System verwendet wird .
MOS-Technologie 6591
6592
System-on-a-Chip- Designs, die einen kompletten Atari 2600 in einem 48-Pin-DIP-Gehäuse verwenden.
WDC 65C02 CMOS- Version des NMOS 6502, die von Bill Mensch vom Western Design Center (WDC) entwickelt wurde, mit reduziertem Stromverbrauch, Unterstützung für viel höhere Taktraten, neuen Befehlen, neuen Adressierungsmodi für einige vorhandene Befehle und Korrektur von NMOS-Errata, wie der JMP ($xxFF)Fehler.
WDC 65SC02 Variante des WDC 65C02 ohne einzelne Bitmanipulationsoperationen (RMB, SMB, BBR und BBS). Dieser Kern mit 4 MHz wurde im Hauptsystem -IC des Atari Lynx verwendet.
CSG (MOS-Technologie) 65CE02 CMOS-Derivat, entwickelt von der Commodore Semiconductor Group (CSG), ehemals MOS Technology.
Rockwell R6511Q

R6500/11, R6500/12, R6500/15 " Ein-Chip-Mikrocomputer "
Verbesserte Versionen des 6502-basierten Prozessors, einschließlich einzelner Bit-Manipulationsoperationen (RMB, SMB, BBR und BBS), On-Chip-192-Byte-Zero-Page-RAM, UART usw.
Rockwell R65F11
R65F12
Der Rockwell R65F11 (eingeführt 1983) und der spätere R65F12 sind verbesserte Versionen des 6502-basierten Prozessors, die auch einzelne Bit-Manipulationsoperationen (RMB, SMB, BBR und BBS), On-Chip-Zero-Page-RAM, On-Chip- Forth beinhalten Kernel-ROM, ein UART usw.
GTE G65SC102 Software kompatibel mit 65C02, hat aber eine etwas andere Pinbelegung und Oszillatorschaltung. Der BBC Master Turbo enthielt die 4-MHz-Version dieser CPU auf einer Coprozessorkarte, die auch separat gekauft und dem Master 128 hinzugefügt werden konnte.
Rockwell R65C00
R65C21
R65C29
Der R65C00, R65C21 und R65C29 enthielten zwei verbesserte CMOS 6502 in einem einzigen Chip, und der R65C00 und R65C21 enthielten zusätzlich 2 kB maskenprogrammierbares ROM.
CM630 Ein 1 MHz Ostblock- Klon des 6502 und wurde in den Pravetz 8A und 8C, bulgarischen Klonen der Apple // Serie verwendet.
MOS-Technologie 7501
8501
Varianten des 6510 (selbst ein verbessertes 6502), die 1984 eingeführt wurden. Sie erweiterten die Anzahl der I/O-Port-Pins von 6 auf 7, aber ließen Pins für nicht maskierbare Interrupt- und Taktausgaben weg. Wird in den Computern C-16 , C-116 und Plus/4 von Commodore verwendet. Der Hauptunterschied zwischen 7501- und 8501-CPUs besteht darin, dass die 7501 mit dem HMOS-1- Prozess und die 8501 mit HMOS-2 hergestellt wurden.
MOS-Technologie 8500 Eingeführt 1985 als HMOS- Version des 6510 (der wiederum auf dem 6502 basiert). Abgesehen von der Prozessmodifikation ist der 8500 praktisch identisch mit der NMOS- Version des 6510. Er ersetzte den 6510 in späteren Versionen des Commodore 64 .
MOS-Technologie 8502 Entworfen von MOS Technology und verwendet im Commodore 128 . Basierend auf dem im Commodore 64 verwendeten MOS 6510 konnte der 8502 mit der doppelten Taktrate des 6510 betrieben werden. Die 8502-Familie umfasst auch die MOS 7501, 8500 und 8501.
Hudson Soft HuC6280 Die verbesserte Version des WDC 65C02 der japanischen Videospielfirma Hudson Soft . Hergestellt für sie von Seiko Epson und NEC für den SuperGrafx . Das bemerkenswerteste Produkt, das den HuC6280 verwendet, ist die Videospielkonsole TurboGrafx-16 von NEC.

16-Bit-Derivate

Das Western Design Center entwickelte und produziert derzeit den W65C816S- Prozessor, einen 16-Bit-Statik-Core-Nachfolger des 65C02 mit stark verbesserten Funktionen. Der W65C816S ist eine neuere Variante des 65C816, der den Kern des Apple II GS Computers bildet und die Basis des Ricoh 5A22 Prozessors ist, der das Super Nintendo Entertainment System antreibt . Der W65C816S enthält geringfügige Verbesserungen gegenüber dem 65C816, die den neueren Chip nicht zu einem exakten hardwarekompatiblen Ersatz für den früheren machen. Zu diesen Verbesserungen gehörte die Umwandlung in einen statischen Kern, der es ermöglicht, den Takt in jeder Phase zu stoppen, ohne dass die Register Daten verlieren. Der W65C816S ist ab März 2020 über Elektronikhändler erhältlich und ist offiziell für den 14-MHz-Betrieb ausgelegt.

Das Western Design Center entwarf und produzierte auch den 65C802 , einen 65C816-Kern mit einem 64-Kilobyte-Adressraum in einem 65(C)02-Pin-kompatiblen Gehäuse. Der 65C802 könnte auf einer 6502-Platine nachgerüstet werden und würde beim Einschalten als 65C02 funktionieren und im "Emulationsmodus" arbeiten. Wie beim 65C816 würde eine Zwei-Befehls-Sequenz den 65C802 in den "native Mode"-Betrieb schalten, wodurch sein 16-Bit- Akkumulator und seine Indexregister sowie andere verbesserte Funktionen des 65C816 freigelegt werden. Der 65C802 war nicht weit verbreitet; neue Designs wurden fast immer um den 65C816 herum gebaut, was dazu führte, dass die Produktion des 65C802 eingestellt wurde.

Beispielcode

Der folgende 6502- Assembler- Quellcode ist für eine Subroutine namens TOLOWER, die eine nullterminierte Zeichenkette von einer Stelle an eine andere kopiert und Großbuchstaben in Kleinbuchstaben umwandelt. Der kopierte String ist die "Quelle", und der String, in dem die konvertierte Quelle gespeichert wird, ist das "Ziel".

 
 
 
 
 
 
 
 
 
 
 
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

Fehler und Macken

Der 6502 hatte mehrere Fehler und Macken, die bei der Programmierung berücksichtigt werden mussten:

  • Die frühesten Revisionen des 6502, wie sie mit einigen KIM-1- Computern geliefert wurden , hatten einen schwerwiegenden Fehler im ROR- Befehl (Rechtsspeicher oder Akkumulator rotieren). Die Operation von ROR in diesen Chips ist effektiv ein ASL-Befehl (arithmetische Verschiebung nach links), der das Übertragsbit im Statusregister nicht beeinflusst. MOS ließ die Anweisung aufgrund des Defekts vollständig aus der Chipdokumentation weg und versprach, dass ROR ab 1976 auf 6502-Chips erscheinen würde. Die überwiegende Mehrheit der heute existierenden 6502-Chips weist diesen Fehler nicht auf.
  • Die NMOS 6502-Familie verfügt über eine Vielzahl undokumentierter Anweisungen , die von Chiphersteller zu Chiphersteller variieren. Die 6502-Befehlsdecodierung wird in einem festverdrahteten Logikarray (ähnlich einem programmierbaren Logikarray ) implementiert , das nur für 151 der 256 verfügbaren Opcodes definiert ist . Die verbleibenden 105 lösen seltsame und manchmal schwer vorhersehbare Aktionen aus, wie zum Beispiel den Prozessor zum Absturz bringen, zwei gültige Befehle nacheinander ausführen, seltsame Mischungen von zwei Befehlen ausführen oder einfach gar nichts tun. Eastern House Software entwickelte das "Trap65", ein Gerät, das zwischen dem Prozessor und seinem Sockel steckt, um nicht implementierte Opcodes in BRK- Anweisungen (Software-Interrupt) umzuwandeln (zu fangen) . Einige Programmierer nutzten dieses Merkmal, um den 6502-Befehlssatz zu erweitern, indem sie Funktionalität für die nicht implementierten Opcodes mit speziell geschriebener Software bereitstellen, die am 0xFFFE-Vektor des BRK-Befehls abgefangen wird. Alle undefinierten Opcodes wurden im 65C02 , einer verbesserten CMOS- Version des 6502, durch NOP- Befehle ersetzt , allerdings mit unterschiedlichen Bytegrößen und Ausführungszeiten. Im 65C802/65C816 führen alle 256 Opcodes definierte Operationen durch.
  • Der indirekte Speichersprungbefehl des 6502 , JMP (<address>), ist teilweise unterbrochen. Wenn <Adresse> ist hex xxFF (dh jedes Wort in endend FF ), wird der Prozessor nicht an der Adresse springt in gespeichert xxFF und xxFF+1wie erwartet, sondern derjenige , der durch xxFF und xx00 (zum Beispiel JMP ($10FF)würde auf die Adresse springen in 10FF und 1000 gespeichert, statt in 10FF und 1100). Dieser Fehler setzte sich durch die gesamte NMOS-Leitung fort, wurde jedoch in den CMOS-Derivaten korrigiert.
  • Die indizierte NMOS 6502-Adressierung über Seitengrenzen hinweg führt ein zusätzliches Lesen einer ungültigen Adresse durch. Diese Eigenschaft kann beim Zugriff auf Hardware, die auf einen Lesevorgang reagiert, zu zufälligen Problemen führen, z die der Prozessor ein zusätzliches Lesen des letzten Befehlsbytes durchführt.
  • Die 6502 Read-Modify-Write- Befehle führen einen Lese- und zwei Schreibzyklen durch. Zuerst werden die gelesenen unmodifizierten Daten zurückgeschrieben und dann werden die modifizierten Daten geschrieben. Dieses Merkmal kann Probleme verursachen, indem zweimal auf Hardware zugegriffen wird, die auf einen Schreibvorgang reagiert. Diese Anomalie setzte sich durch die gesamte NMOS-Leitung fort, wurde jedoch in den CMOS-Derivaten behoben, bei denen der Prozessor zwei Lese- und einen Schreibzyklus durchführt. Defensive Programmierpraktiken vermeiden dieses Problem im Allgemeinen, indem sie keine Lese-/Modifizier-/Schreibbefehle auf Hardwareregistern ausführen.
  • Die N (Ergebnis negativ), V (Vorzeichenbit Überlauf) und Z (Ergebnis Null) Statusflags sind im allgemeinen bedeutungslos , wenn arithmetische Operationen durchführt , während der Prozessor in ist BCD - Modus, wie diese Flags die binäre, nicht BCD, Ergebnis widerzuspiegeln. Diese Einschränkung wurde in den CMOS-Derivaten aufgehoben. Daher kann dieses Merkmal verwendet werden, um einen CMOS-Prozessor von einer NMOS-Version zu unterscheiden.
  • Wenn sich der 6502 beim Auftreten eines Hardware-Interrupts im BCD-Modus befindet, kehrt er nicht in den Binärmodus zurück. Diese Eigenschaft könnte zu unklaren Fehlern in der Interrupt-Service-Routine führen, wenn es nicht gelingt, den BCD-Modus zu löschen, bevor irgendwelche arithmetischen Operationen ausgeführt werden. Zum Beispiel der 64 Commodore ‚s KERNAL hat diesen Prozessor Merkmal nicht richtig handhaben , zu verlangen , dass IRQs bei BCD mathematischen Operationen vektorisiert wieder deaktiviert oder sein. Dieses Problem wurde auch in den CMOS-Derivaten angesprochen.
  • Der 6502-Befehlssatz enthält BRK (Opcode $00), das technisch ein Software-Interrupt ist (ähnlich der SWI-Mnemonik der Motorola 6800- und ARM- Prozessoren). BRK wird am häufigsten verwendet, um die Programmausführung zu unterbrechen und einen Maschinensprachenmonitor zum Testen und Debuggen während der Softwareentwicklung zu starten . BRK könnte auch verwendet werden, um die Programmausführung unter Verwendung einer einfachen Sprungtabelle zu leiten (analog zu der Art und Weise, in der der Intel 8086 und Derivate Software-Interrupts nach Nummer behandeln). Wenn jedoch ein Hardware-Interrupt auftritt, wenn der Prozessor einen BRK-Befehl abruft, wird die NMOS-Version des Prozessors BRK nicht ausführen und stattdessen fortfahren, als ob nur ein Hardware-Interrupt aufgetreten wäre. Dieser Fehler wurde in der CMOS-Implementierung des Prozessors behoben.
  • Bei der Ausführung von JSR- (Sprung zu Subroutine) und RTS (Return from Subroutine)-Befehlen ist die von JSR auf den Stack geschobene Rückkehradresse die des letzten Bytes des JSR-Operanden (d. h. das höchstwertige Byte der Subroutinenadresse). statt der Adresse der folgenden Anweisung. Dies liegt daran, dass das eigentliche Kopieren (vom Programmzähler zum Stack und dann umgekehrt) vor dem automatischen Inkrementieren des Programmzählers erfolgt, das am Ende jeder Anweisung erfolgt. Dieses Merkmal würde unbemerkt bleiben, es sei denn, der Code untersucht die Rückkehradresse, um Parameter im Codestrom abzurufen (ein 6502-Programmieridiom, das im technischen Referenzhandbuch von ProDOS 8 dokumentiert ist ). Es ist bis heute ein Merkmal von 6502 Derivaten.

Siehe auch

Anmerkungen

Verweise

Zitate

Literaturverzeichnis

Weiterlesen

Datenblätter und Handbücher
Bücher
Referenzkarten
  • 6502 Mikroprozessor-Sofort-Referenzkarte ; James Lewis; Mikrologik; 2 Seiten; 1980. (Archiv)

Externe Links

Simulatoren / Emulatoren
Bretter
FPGA