Der MOS Technology 6502 [ 3 ] ist ein 8-Bit -Mikroprozessor , der von einem kleinen Team unter der Leitung von Chuck Peddle für MOS Technology entwickelt und im September 1975 auf den Markt gebracht wurde. Das Entwicklungsteam hatte zuvor bei Motorola am Projekt Motorola 6800 gearbeitet ; der 6502 ist im Wesentlichen eine vereinfachte, kostengünstigere und schnellere Version dieses Designs, die auf der Depletion-Load-NMOS- Technologie basiert, welche den Einsatz des Mikrochips in Computern deutlich verbilligte.

Bei seiner Markteinführung war der 6502 mit Abstand der günstigste Mikroprozessor auf dem Markt. Er kostete anfangs weniger als ein Sechstel vergleichbarer Modelle größerer Hersteller wie dem 6800 oder dem Intel 8080. Seine Einführung führte zu einem rapiden Preisverfall auf dem gesamten Prozessormarkt. Zusammen mit dem Zilog Z80 gab er den Anstoß für eine Reihe von Projekten, die die Heimcomputer- Revolution der frühen 1980er-Jahre auslösten .

Heimvideospielkonsolen und Heimcomputer der 1970er- bis frühen 1990er-Jahre, wie beispielsweise der Atari 2600 , die Atari 8-Bit-Computer , der Apple II , das Nintendo Entertainment System , der Commodore 64 , der Atari Lynx , der BBC Micro und andere, nutzten den 6502 oder Varianten seines Grunddesigns. Kurz nach der Markteinführung des 6502 wurde MOS Technology vollständig von Commodore International übernommen , die den Mikroprozessor weiterhin verkaufte und Lizenzen an andere Hersteller vergab. In der Anfangszeit des 6502 wurde er von Rockwell und Synertek als Zweitlieferant bezogen und später an weitere Unternehmen lizenziert.

1981 begann das Western Design Center mit der Entwicklung einer CMOS- Version, des 65C02 . Dieser wird weiterhin in eingebetteten Systemen weit verbreitet eingesetzt , mit geschätzten Produktionsmengen im dreistelligen Millionenbereich. [ 4 ]

Geschichte und Verwendung

Genesis bei Motorola

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

Motorola startete 1971 das 6800-Mikroprozessorprojekt mit Tom Bennett als Hauptarchitekten. 1973 stellte Bennett Chuck Peddle ein, um die bereits in Entwicklung befindlichen Produkte der 6800-Familie architektonisch zu unterstützen. [ 5 ] Bennett arbeitete bereits an dem, was später der 6800 werden sollte. „Er hat mich eingestellt“, sagt Peddle über Bennett, „um die architektonische Unterstützung für das Produkt zu leisten, an dem er bereits gearbeitet hatte.“ … Peddle sagt: „Motorola hat mehrmals versucht, das Projekt zu stoppen. Ohne Bennett wäre der 6800 nicht entstanden, und auch ein Großteil der Branche wäre nicht entstanden.“ Peddle leistete in vielen Bereichen Beiträge, unter anderem zum Design der seriellen Schnittstelle (ACIA) des 6850.

Peddle begleitete Motorola-Vertriebsmitarbeiter bei Kundenbesuchen und stellte fest, dass die Kunden von den hohen Kosten der Mikroprozessorchips abgeschreckt wurden. [ 6 ] Gleichzeitig führten diese Besuche stets dazu, dass die von ihm vorgestellten Ingenieure Listen mit benötigten Befehlen erstellten, die deutlich kürzer waren als die „all diese komplizierten Befehle“, die im 6800 enthalten waren. [ 7 ] Peddle und andere Teammitglieder begannen, den Entwurf eines verbesserten, kleineren Mikroprozessors zu entwerfen. Zu dieser Zeit hatte Motorolas neue Halbleiterfertigungsanlage in Austin, Texas , Schwierigkeiten bei der Herstellung von MOS-Chips, und Mitte 1974 begann eine einjährige Rezession in der Halbleiterindustrie. Außerdem waren viele der Mitarbeiter in Mesa, Arizona, mit dem bevorstehenden Umzug nach Austin unzufrieden. [ 8 ]

Die Geschäftsleitung der Halbleitersparte von Motorola zeigte kein Interesse an Peddles Vorschlag für einen kostengünstigen Mikroprozessor. Schließlich erhielt Peddle ein offizielles Schreiben, in dem er aufgefordert wurde, die Arbeit an dem System einzustellen. [ 9 ] Peddle erwiderte, dass das Schreiben einer offiziellen Erklärung der „Projektaufgabe“ gleichkomme und ihm somit das bis dahin von ihm entwickelte geistige Eigentum gehöre. [ 10 ] Der 6502 wurde von vielen der Ingenieure entwickelt, die auch die Motorola-6800- Mikroprozessorfamilie entworfen hatten. [ 11 ]

In einem Interview im November 1975 räumte Motorolas Vorstandsvorsitzender Bob Galvin schließlich ein, dass Peddles Konzept gut gewesen sei und die Sparte eine Chance verpasst habe: „Wir haben in der Halbleitersparte nicht die richtigen Führungskräfte ausgewählt.“ Die Sparte wurde umstrukturiert und das Management ausgetauscht. Der neue Vizepräsident der Gruppe, John Welty, sagte: „Die Vertriebsorganisation für Halbleiterprodukte verlor das Gespür für Kundenbedürfnisse und konnte keine schnellen Entscheidungen mehr treffen.“ [ 12 ]

MOS-Technologie

Eine Anzeige von MOS Technology aus dem Jahr 1973, die deren Fähigkeiten im Bereich kundenspezifischer integrierter Schaltungen hervorhebt.
MOS Technology MCS6501, im weißen Keramikgehäuse, hergestellt Ende August 1975

Peddle begann, sich außerhalb von Motorola nach einer Finanzierungsquelle für dieses neue Projekt umzusehen. Zunächst wandte er sich an LJ Sevin , den CEO von Mostek , erhielt jedoch eine Absage. Sevin gab später zu, dies sei aus Angst vor einer Klage von Motorola geschehen. [ 13 ]

Während eines seiner Vertriebsbesuche bei Ford Motor Company erwähnte Bob Johnson, der spätere Leiter der Motorenautomatisierungsabteilung von Ford, dass ihr ehemaliger Kollege John Paivinen zu General Instrument gewechselt war und sich selbst Halbleiterdesign beigebracht hatte. [ 14 ] Paivinen gründete daraufhin 1969 zusammen mit zwei weiteren Führungskräften von General Instrument, Mort Jaffe und Don McLaughlin, die Firma MOS Technology in Valley Forge, Pennsylvania . Allen-Bradley , ein Zulieferer von elektronischen Bauteilen und Industriesteuerungen, erwarb 1970 die Mehrheitsbeteiligung. [ 15 ] Das Unternehmen entwickelte und fertigte kundenspezifische integrierte Schaltungen (ICs) und hatte eine Reihe von Taschenrechnerchips entwickelt. [ 16 ]

Nachdem Mosteks Bemühungen gescheitert waren, wandte sich Peddle an Paivinen, der die Idee sofort verstand. [ 17 ] Am 19. August 1974 verließen Chuck Peddle, Bill Mensch, Rod Orgill, Harry Bawcom, Ray Hirt, Terry Holdt und Wil Mathys Motorola, um sich MOS anzuschließen. Mike Janes stieß später hinzu. Von den siebzehn Chipdesignern und Layoutern des 6800-Teams verließen acht das Unternehmen. Ziel des Teams war die Entwicklung und Produktion eines kostengünstigen Mikroprozessors für eingebettete Systeme mit einer möglichst breiten Kundenbasis. Dies war nur mit einem niedrigen Mikroprozessorpreis möglich, und das Team setzte den Zielpreis für größere Abnahmemengen auf 5 US-Dollar fest . [ 18 ] Mensch erklärte später, das Ziel sei nicht der Prozessorpreis selbst gewesen, sondern die Entwicklung eines Chipsatzes, der für 20 US-Dollar verkauft werden konnte , um mit dem kurz zuvor eingeführten Intel 4040 zu konkurrieren , der in einem vergleichbaren Komplett-Chipsatz für 29 US-Dollar angeboten wurde . [ 19 ]

Chips werden hergestellt, indem mehrere Kopien des Chipdesigns auf die Oberfläche eines Wafers , einer dünnen Scheibe aus hochreinem Silizium, gedruckt werden. Kleinere Chips können in größerer Anzahl auf demselben Wafer gedruckt werden, was ihren relativen Preis senkt. Zudem weisen Wafer stets eine gewisse Anzahl winziger physikalischer Defekte auf, die über die Oberfläche verteilt sind. Jeder an einer solchen Stelle gedruckte Chip ist defekt und muss verworfen werden. Kleinere Chips verringern die Wahrscheinlichkeit, dass eine einzelne Kopie auf einen Defekt gedruckt wird. Aus diesen beiden Gründen hängen die Kosten des Endprodukts stark von der Größe des Chipdesigns ab. [ 20 ]

Die ursprünglichen 6800 Chips sollten 180 x 180 Mil (4,6 mm × 4,6 mm) groß sein, das Layout wurde jedoch mit 212 x 212 Mil (5,4 mm × 5,4 mm) bzw. einer Fläche von29,0 mm² . [ 21 ] Für die neue Konstruktion erforderte das Kostenziel eine Zielgröße von 153 × 168 mils (3,9 mm × 4,3 mm) bzw. eine Fläche von16,6 mm² , etwa die Hälfte davon beim 6800. [ 22 ] Um dieses Ziel zu erreichen, wären mehrere neue Techniken erforderlich.

Umstellung auf NMOS

Zwei bedeutende Fortschritte erreichten den Markt zeitgleich mit der Entwicklung des 6502 und ermöglichten erhebliche Kostensenkungen. Der erste war der Wechsel zu Depletion-Load-NMOS . Der 6800 nutzte einen frühen NMOS- Prozess im Anreicherungsmodus, der drei Versorgungsspannungen erforderte. Eine der wichtigsten Funktionen des 6800 war ein integrierter Spannungsverdoppler , der es ermöglichte, intern mit einer einzigen +5-V-Versorgung +5 V, −5 V und +12 V zu erzeugen. Im Gegensatz dazu benötigten andere Chips dieser Zeit, wie beispielsweise der Intel 8080, drei separate Versorgungsanschlüsse. [ 23 ] Obwohl diese Funktion die Komplexität der Stromversorgung und des Pin-Layouts reduzierte, waren dennoch separate Stromleitungen zu den verschiedenen Gates des Chips erforderlich, was die Komplexität und Größe erhöhte. Durch den Wechsel zum neuen Depletion-Load-Design reichte eine einzige +5-V-Versorgung aus, wodurch diese Komplexität entfiel. [ 24 ]

Ein weiterer Vorteil bestand darin, dass Depletion-Load-Designs beim Schalten weniger Strom verbrauchten, wodurch sie kühler liefen und höhere Betriebsgeschwindigkeiten ermöglichten. Ein weiterer praktischer Effekt war, dass das Taktsignal früherer CPUs stark genug sein musste, um die gesamte Verlustleistung auf seinem Weg durch die Schaltkreise zu überstehen. Dies erforderte fast immer einen separaten externen Chip, der ein starkes Signal liefern konnte. Dank des geringeren Leistungsbedarfs von Depletion-Load-Designs konnte der Takt auf den Chip verlagert werden, was das gesamte Computerdesign vereinfachte. Diese Änderungen reduzierten die Komplexität und die Kosten für die Implementierung eines kompletten Systems erheblich. [ 24 ]

Eine weitreichendere Veränderung in der Branche war die Einführung der Projektionsmaskierung . Zuvor wurden Chips auf die Waferoberfläche strukturiert, indem eine Maske aufgelegt und anschließend mit hellem Licht bestrahlt wurde. Beim Ablösen der Masken vom Chip nahmen diese oft winzige Schmutz- oder Fotolackpartikel auf , was bei nachfolgenden Maskierungsschritten zu Fehlern an diesen Stellen führte. Bei komplexen Designs wie CPUs waren fünf oder sechs solcher Maskierungsschritte erforderlich, und die Wahrscheinlichkeit, dass mindestens einer dieser Schritte einen Fehler verursachte, war sehr hoch. In den meisten Fällen wiesen 90 % dieser Designs Fehler auf, was zu einer Ausbeute von nur 10 % führte. Der Preis der funktionsfähigen Chips musste die Produktionskosten der 90 % Ausschusschips decken. [ 25 ]

1973 führte Perkin-Elmer das Micralign- System ein, das ein Maskenbild auf den Wafer projizierte, anstatt einen direkten Kontakt zu erfordern. Die Masken nahmen nun keinen Schmutz mehr von den Wafern auf und hielten etwa 100.000 Mal statt nur 10 Mal. Dadurch wurden die zuvor bei komplexen Designs beobachteten Fehlerraten und die damit verbundenen Folgefehler beseitigt. Die Ausbeute bei CPUs stieg daraufhin sprunghaft von 10 % auf 60 bis 70 %. Infolgedessen sank der Preis der CPUs in etwa im gleichen Maße, und der Mikroprozessor wurde plötzlich zu einem Massenprodukt. [ 25 ]

Die bestehenden Fertigungslinien von MOS Technology basierten auf der älteren PMOS- Technologie; bei Ankunft des Teams wurde noch nicht mit NMOS gearbeitet . Paivinen versprach, rechtzeitig zum Produktionsbeginn der neuen CPU eine NMOS-Linie in Betrieb zu nehmen. Er hielt sein Versprechen; die neue Linie war im Juni 1975 betriebsbereit. [ 26 ]

Designnotizen

Chuck Peddle, Rod Orgill und Wil Mathys entwarfen die ursprüngliche Architektur der neuen Prozessoren. Ein Artikel in der Zeitschrift EDN vom September 1975 gibt folgende Zusammenfassung des Designs: [ 27 ]

Die MOS Technology 650X-Familie ist das Ergebnis des bewussten Versuchs von acht ehemaligen Motorola-Mitarbeitern, die an der Entwicklung des 6800-Systems mitgewirkt hatten, ein Bauteil zu entwickeln, das den 6800 ersetzen und übertreffen, aber dennoch günstiger sein sollte. Mit den Erfahrungen aus dem 6800-Projekt nahm das MOS Technology-Team unter der Leitung von Chuck Peddle die folgenden architektonischen Änderungen an der Motorola-CPU vor…

Die wichtigste Änderung hinsichtlich der Chipgröße bestand im Wegfall der Tri-State-Treiber an den Adressbusausgängen. Ein Tri-State-Bus kennt die Zustände 1 , 0 und hochohmig . Der hochohmige Zustand ermöglicht anderen Geräten den Zugriff auf den Bus und wird typischerweise für Multiprocessing oder, in diesen Fällen häufiger, für den direkten Speicherzugriff (DMA) verwendet. Obwohl diese Funktion nützlich ist, ist sie aufgrund des hohen Schaltungsaufwands auf dem Chip teuer. Der 6502 verzichtete daher auf diese Funktion, um seinem Design als kostengünstiger Controller für spezifische Aufgaben und die Kommunikation mit einfachen Geräten gerecht zu werden. Peddle schlug vor, dass jeder, der diese Zugriffsart benötigte, sie mit einem 74158 implementieren könne . [ 28 ] [ a ]

Der nächste wesentliche Unterschied bestand in der Vereinfachung der Register. Zunächst wurde einer der beiden Akkumulatoren entfernt. Allzweckregister wie Akkumulatoren müssen von vielen Teilen des Befehlsdecoders angesprochen werden und erfordern daher einen erheblichen Verdrahtungsaufwand für den Datentransfer. Zwei Akkumulatoren erleichtern zwar viele Codierungsaufgaben, erhöhen aber die Komplexität des Chipdesigns erheblich. [ 27 ] Weitere Einsparungen wurden durch die Reduzierung des Stack-Registers von 16 auf 8 Bit erzielt , wodurch der Stack nur noch 256 Byte lang sein musste, was für seine vorgesehene Rolle als Mikrocontroller ausreichend war. [ 27 ]

Das 16-Bit- Indexregister IX wurde in zwei Register aufgeteilt, X und Y. Noch wichtiger war jedoch die Änderung der Zugriffsmethode. Beim 6800 enthielt IX eine 16-Bit-Adresse, die um eine 8-Bit-Zahl, welche mit dem Befehl gespeichert und zur Adresse addiert wurde, versetzt war. Beim 6502 (und den meisten anderen zeitgenössischen Designs) wurde die 16-Bit-Basisadresse im Befehl gespeichert und die 8-Bit-Zahl für X oder Y addiert. [ 28 ]

Schließlich wurde der Befehlssatz vereinfacht, wodurch auch der Decoder und die Steuerlogik vereinfacht wurden. Von den ursprünglich 72 Befehlen des 6800 wurden 56 implementiert. Zu den entfernten Befehlen gehörten solche, die zwischen den beiden Akkumulatoren des 6800 operierten, sowie mehrere vom PDP-11 inspirierte Sprungbefehle . [ 28 ]

Das High-Level-Design des Chips musste in Zeichnungen von Transistoren und Verbindungen umgesetzt werden. Bei MOS Technology erfolgte das Layout in einem sehr manuellen Prozess mit Buntstiften und Transparentpapier . Es bestand aus Tausenden von Polygonen auf sechs verschiedenen Zeichnungen; eine für jede Schicht des Fertigungsprozesses. Aufgrund der Größenbeschränkungen musste das gesamte Chipdesign ständig überarbeitet werden. Mensch und Paivinen arbeiteten am Befehlsdecoder [ 30 ] , während Mensch, Peddle und Orgill an der ALU und den Registern arbeiteten. Ein weiterer Fortschritt, der auf einer Party entwickelt wurde, war eine Möglichkeit, Teile der internen Verdrahtung gemeinsam zu nutzen, um die Größe der ALU zu reduzieren. [ 31 ]

Trotz aller Bemühungen fiel das endgültige Design größer aus als ursprünglich geplant. Die ersten 6502 Chips hatten eine Größe von 168 × 183 Mil (4,3 mm × 4,6 mm), was einer Fläche von … entspricht.19,8 mm² . Die ursprüngliche Version des Prozessors besaß keine Rotation-nach-rechts-Funktion (ROR), daher wurde der entsprechende Befehl in der ursprünglichen Dokumentation weggelassen. In der nächsten Designiteration wurde der Chip verkleinert und die Rotation-nach-rechts-Funktion hinzugefügt; ROR wurde in die überarbeitete Dokumentation aufgenommen. [ 32 ] [ b ]

Vorstellung der Modelle 6501 und 6502

Einführungsanzeige für die MOS Technology Mikroprozessoren MCS6501 und MCS6502

MOS brachte zwei Mikroprozessoren auf den Markt, die auf demselben Grunddesign basierten: Der 6501 passte in denselben Sockel wie der Motorola 6800, während der 6502 eine veränderte Pinbelegung für einen integrierten Taktoszillator aufwies. Beide waren mit anderen, für den 6800 entwickelten Chips kompatibel. Sie konnten jedoch keine 6800-Software ausführen, da sie einen anderen Befehlssatz, andere Register und größtenteils andere Adressierungsmodi verwendeten. [ 3 ] Rod Orgill war für das Design des 6501 verantwortlich; er hatte John Buchanan bei Motorola beim 6800 unterstützt. Bill Mensch entwickelte den 6502; er war der Designer des 6820 PIA bei Motorola. Harry Bawcom, Mike Janes und Sydney-Anne Holt wirkten am Layout mit.

Die Markteinführung der Mikroprozessoren von MOS Technology unterschied sich von den üblichen, monatelangen Produkteinführungen. Die erste Charge eines neuen integrierten Schaltkreises wird normalerweise intern getestet und ausgewählten Kunden als Engineering-Samples zur Verfügung gestellt . Diese Chips weisen oft kleinere Designfehler auf, die vor Produktionsbeginn behoben werden. Chuck Peddles Ziel war es, die erste Charge der 6501- und 6502-Chips ab dem 16. September 1975 auf der Western Electronics Show and Convention (WESCON) in San Francisco zu verkaufen. Peddle war ein sehr erfolgreicher Sprecher, und die Mikroprozessoren von MOS Technology wurden in der Fachpresse ausführlich behandelt. Einer der ersten Artikel war eine ganze Seite über die Mikroprozessoren MCS6501 und MCS6502 in der Ausgabe des Magazins Electronics vom 24. Juli 1975 . [ 36 ] Berichte erschienen auch in EE Times (24. August 1975), [ 37 ] EDN (20. September 1975), Electronic News (3. November 1975), Byte (November 1975) [ 38 ] und Microcomputer Digest (November 1975). [ 39 ] In der ersten Augustwoche 1975 erschienen in mehreren Publikationen Anzeigen für den 6501. Der 6501 sollte auf der WESCON für 20 US-Dollar pro Stück erhältlich sein. [ 40 ] Im September 1975 enthielten die Anzeigen sowohl den 6501 als auch den 6502 Mikroprozessor. Der 6502 sollte nur 25 US-Dollar kosten (entspricht 150 US-Dollar im Jahr 2025). [ 41 ]

Als MOS Technology auf der WESCON eintraf, stellte das Unternehmen fest, dass Ausstellern der Verkauf von Produkten auf der Ausstellungsfläche untersagt war. Sie mieteten die MacArthur Suite im St. Francis Hotel und leiteten die Kunden dorthin, um die Prozessoren zu erwerben. In der Suite wurden die Prozessoren in großen Gläsern aufbewahrt, um den Eindruck zu erwecken, die Chips seien in Produktion und sofort verfügbar. Die Kunden wussten nicht, dass sich in der unteren Hälfte jedes Glases nicht funktionsfähige Chips befanden. [ 42 ] Die Chips kosteten 20 bzw. 25 US-Dollar , die Dokumentation zusätzlich 10 US-Dollar . Die Nutzer wurden ermutigt, Fotokopien der Dokumente anzufertigen – eine kostengünstige Methode für MOS Technology, Produktinformationen zu verbreiten. Die vorläufigen Datenblätter enthielten lediglich 55 Befehle und ließen den Befehl „Rotate Right“ (ROR) aus, da dieser von diesen frühen Chips nicht unterstützt wurde. Die Rezensionen in Byte und EDN bemängelten das Fehlen des ROR-Befehls. Die nächste Überarbeitung des Layouts behob dieses Problem, und das Datenblatt vom Mai 1976 enthielt 56 Befehle. Peddle wollte, dass jeder interessierte Ingenieur und Hobbybastler Zugang zu den Chips und der Dokumentation hatte, während andere Halbleiterunternehmen nur mit „seriösen“ Kunden zusammenarbeiten wollten. Signetics beispielsweise brachte den Mikroprozessor 2650 auf den Markt und forderte in seinen Anzeigen die Leser auf, Informationen auf dem Firmenbriefpapier anzufordern. [ 43 ]

Motorola-Klage

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

Die Vorstellung der Mikroprozessoren 6501/6502 in Printmedien und auf der WESCON war ein Erfolg. Die Berichterstattung in der Presse erregte die Aufmerksamkeit von Motorola und führte zu Preisanpassungen und Klagen. Im Oktober 1975 senkte Motorola den Preis eines einzelnen 6800-Mikroprozessors von 175 auf 69 US-Dollar . Das Systemdesign-Kit (SDK) kostete nun 150 US-Dollar statt 300 US-Dollar und enthielt nun eine Leiterplatte. [ 44 ] Am 3. November 1975 beantragte Motorola vor einem Bundesgericht eine einstweilige Verfügung, um MOS Technology die Herstellung und den Vertrieb von Mikroprozessorprodukten zu untersagen. Gleichzeitig reichte Motorola Klage wegen Patentverletzung und widerrechtlicher Aneignung von Geschäftsgeheimnissen ein. Motorola behauptete, sieben ehemalige Mitarbeiter seien zu MOS Technology gewechselt, um dort Mikroprozessorprodukte zu entwickeln. [ 45 ]

Motorola was a billion-dollar company with a plausible case and expensive lawyers. On October 30, 1974, Motorola had filed numerous patent applications on the microprocessor family and was granted twenty-five patents. The first was in June 1976 and the second was to Bill Mensch on July 6, 1976, for the 6820 PIA chip layout. These patents covered the 6800 bus and how the peripheral chips interfaced with the microprocessor.[46] Motorola began making transistors in 1950 and had a portfolio of semiconductor patents. Allen-Bradley decided not to fight this case and sold their interest in MOS Technology back to the founders. Four of the former Motorola engineers were named in the suit: Chuck Peddle, Will Mathys, Bill Mensch and Rod Orgill. All were named inventors in the 6800 patent applications. During the discovery process, Motorola found that one engineer, Mike Janes, had ignored Peddle's instructions and brought his 6800 design documents to MOS Technology.[47] In March 1976, the now independent MOS Technology was running out of money and had to settle the case. They agreed to drop the 6501 processor, pay Motorola $200,000 and return the documents that Motorola contended were confidential. Both companies agreed to cross-license microprocessor patents.[48] That May, Motorola dropped the price of a single 6800 microprocessor to $35. By November, Commodore had acquired MOS Technology.[49][50]

Computers and games

With legal troubles behind them, MOS was still left with the problem of getting developers to try their processor, prompting Chuck Peddle to design the MDT650 development system.[51] Another group inside the company designed the KIM-1, which was sold semi-complete and could be turned into a usable system with the addition of a 3rd party computer terminal and compact cassette drive. While it sold well to its intended market, the company found the KIM-1 also sold well to hobbyists and tinkerers. The related Rockwell AIM-65 control, training, and development system also did well. The software in the AIM 65 was based on that in the MDT. Another roughly similar product was the Synertek SYM-1.

Eine der ersten externen Anwendungen des Designs war der 1976 eingeführte Apple I- Mikrocomputer. Der 6502 wurde anschließend im Commodore PET und Apple II verwendet [ 52 ] , die beide 1977 erschienen. Später kam er in den Atari 8-Bit-Computern , dem Acorn Atom , dem BBC Micro [ 52 ] , dem VIC-20 und weiteren Designs für Heim- und Geschäftscomputer wie Ohio Scientific und Oric zum Einsatz . Der 6510 , ein direkter Nachfolger des 6502 mit digitalem I/O-Port und Tri-State -Adressbus, war die CPU des meistverkauften Heimcomputers Commodore 64 [ 53 ] [ 54 ] .

Eine weitere wichtige Anwendung der 6500er-Familie fand sich in Videospielen. Die erste Konsole, die dieses Prozessordesign nutzte, war der Atari VCS von 1977, später Atari 2600. Der VCS verwendete eine 6502-Variante namens 6507 , die weniger Pins besaß und daher nur 8 KB Speicher adressieren konnte  . Millionen von Atari-Konsolen wurden verkauft, jede mit einem MOS-Prozessor. Eine weitere bedeutende Anwendung fand sich im Nintendo Entertainment System (NES) und Famicom . Der im NES verwendete 6502 war eine Second-Source- Version von Ricoh , ein partielles System-on-a-Chip (SoC) , dem der BCD- Modus fehlte, der aber 22 speicheradressierte Register und On-Die-Hardware für die Soundgenerierung, das Auslesen des Gamepads und das Sprite- Listen -DMA bot . Dieser Prozessor , in NTSC- Konsolen als 2A03 und in PAL- Konsolen als 2A07 bezeichnet , wurde exklusiv für Nintendo produziert .

Der 6502 oder Varianten davon wurden in allen Diskettenlaufwerken der Commodore- 8-Bit-Computer verwendet, von der PET-Reihe bis zum Commodore 128D, einschließlich des Commodore 64. Die 8-Zoll-PET-Laufwerke besaßen zwei 6502-Prozessoren. Atari verwendete denselben 6507 wie im Atari 2600 für seine 810- und 1050 -Diskettenlaufwerke, die in allen 8-Bit-Computern der Reihe vom 400/800 bis zum XEGS zum Einsatz kamen.

In den 1980er Jahren verwendete das populäre Elektronikmagazin Elektor den Prozessor in seinem Mikroprozessor-Entwicklungsboard Junior Computer .

Der CMOS-Nachfolger des 6502, der WDC 65C02 , fand ebenfalls Verwendung in Heimcomputern und Videospielkonsolen. Apple setzte ihn in der Apple-II-Reihe ein, beginnend mit dem Apple IIc und späteren Varianten des Apple IIe , und bot zudem ein Upgrade-Kit für ältere IIe-Systeme mit dem neuen Prozessor an. [ 55 ] Der im TurboGrafx-16 verwendete Hudson Soft HuC6280 -Chip basierte auf einem 65C02-Kern. Der Atari Lynx nutzte einen von Epyx entwickelten Chip namens „Mikey“ [ 56 ] , der eine lizenzierte VLSI-Zelle vom Typ VL65NC02 enthielt. Die Variante G65SC12 von GTE Microcircuits (später California Micro Devices) kam im BBC Master zum Einsatz . Einige Modelle des BBC Master enthielten zusätzlich einen G65SC102-Coprozessor.

Programmierermodell

6502-Prozessorchip. Der reguläre Bereich oben ist das Befehlsdekodierungs-ROM, der unregelmäßige Bereich in der Mitte die Steuerlogik und unten die Register (rechts) und die ALU (links). Die Datenbusanschlüsse befinden sich unten rechts, der Adressbus unten und unten links. [ 22 ]
6502-Pin-Konfiguration (40-poliges DIP-Gehäuse )
MOS 6502 Register
1 51 41 31 21 11 09876543210(Bitposition)
Hauptregister
  A Ein Akkumulator
Indexregister
  X X- Index
  Y Y- Index
0 0 0 0 0 0 0 1 S S -Stachelzeiger
Programmzähler
PC Programmzähler​​​
Statusregister
NV- BDICHZCProzessorflaggen​

Der 6502 ist ein Little-Endian- 8-Bit -Prozessor mit einem 16-Bit -Adressbus . Die ersten Versionen wurden in 8-µm -Technologie [ 57 ] mit einer Chipgröße von 3,9 mm × 4,3 mm (153 × 168 mils) gefertigt, was einer Gesamtfläche von … entspricht.16,6 mm² . [ 22 ]

Die interne Logik arbeitet mit der gleichen Geschwindigkeit wie der externe Takt. Sie verfügt über eine einfache zweistufige Pipeline: In jedem Taktzyklus lädt der Prozessor ein Byte aus dem Speicher und verarbeitet ein weiteres. Dadurch kann die Ausführung einer einzelnen Anweisung, abhängig von der Anzahl der verwendeten Operanden, in nur zwei Taktzyklen erfolgen. Zum Vergleich: Der Zilog Z80 benötigte zwei Taktzyklen zum Laden des Speichers, und die minimale Befehlszeit betrug vier Taktzyklen. Trotz der im Vergleich zu Konkurrenzmodellen niedrigeren Taktfrequenzen, die typischerweise im Bereich von 1 bis 10 GHz liegen, bietet der Prozessor somit eine deutlich höhere Leistung.Mit 2  MHz war die Leistung des 6502 mit der von CPUs mit deutlich höheren Taktraten vergleichbar. Dies lag unter anderem an einem einfachen Zustandsautomaten, der in größerem Umfang als in vielen anderen Designs durch kombinatorische (taktlose) Logik implementiert wurde ; der Zweiphasentakt (der zwei Synchronisationen pro Zyklus lieferte) konnte so den Maschinenzyklus direkt steuern.

Dieses Design führte auch zu einer nützlichen Designbemerkung des 6502 und seines Vorgängers, des 6800. Da der Chip nur während eines bestimmten Teils des Taktzyklus auf den Speicher zugriff, konnten andere Chips im System in den Zeiten, in denen der 6502 nicht am Bus war, auf den Speicher zugreifen. Dies wurde mitunter als versteckter Zugriff bezeichnet . Diese Technik wurde in Computersystemen häufig eingesetzt; sie nutzten Speicher mit einer Zugriffsgeschwindigkeit von 2 MHz und betrieben die CPU mit 1 MHz. Dadurch wurde sichergestellt, dass CPU und Grafikhardware ihre Zugriffe verschachteln konnten, wobei die Gesamtleistung der des Speichers entsprach. Da dieser Zugriff in jedem zweiten Zyklus erfolgte, war es nicht nötig, der CPU zu signalisieren, den Bus nicht zu verwenden, wodurch diese Art des Zugriffs ohne Buslogik einfach zu implementieren war. [ 58 ] Als in den 1980er Jahren schnellere Speicher verfügbar wurden, konnten neuere Rechner dieselbe Technik bei höheren Taktraten nutzen; der BBC Micro verwendete neueren RAM, der es seiner CPU ermöglichte, mit 2 MHz zu laufen und gleichzeitig dieselben Bus-Sharing-Techniken zu verwenden.

Wie die meisten einfachen CPUs jener Zeit wurde der dynamische NMOS- 6502-Chip nicht per Mikrocode sequenziert , sondern direkt mit einem dedizierten PLA dekodiert . Der Decoder belegte etwa 15 % der Chipfläche. Im Vergleich dazu beanspruchten spätere, mikrocodebasierte Designs wie der Motorola 68000 , dass der Mikrocode-ROM und die Decoder-Engine etwa ein Drittel der Systemgatter ausmachten.

Register

Wie ihr Vorgänger, die 6800, verfügt auch die 6502 über sehr wenige Register . Dazu gehören [ 59 ]

Dies steht im Vergleich zu einem zeitgenössischen Konkurrenten, dem Intel 8080 , der ebenfalls über einen 8-Bit-Akkumulator und einen 16-Bit-Programmzähler verfügt, aber sechs weitere universelle 8-Bit-Register (die zu drei 16-Bit-Zeigern kombiniert werden können) und einen größeren 16-Bit-Stackpointer besitzt. [ 62 ]

Um den Mangel an Registern teilweise auszugleichen, verfügt der 6502 über einen Nullseitenadressierungsmodus , der in der Anweisung nur ein Adressbyte anstelle der zwei benötigten Bytes verwendet, um die gesamte Seite zu adressieren.64 KB Speicher. Dies ermöglicht einen schnellen Zugriff auf die ersteDurch die Verwendung kürzerer Befehle werden 256 Byte RAM eingespart. Beispielsweise würde ein Befehl zum Addieren eines Speicherwerts zum Wert im Akkumulator normalerweise drei Byte belegen: eines für den Befehl selbst und zwei für die 16-Bit-Adresse. Durch die Verwendung der Nullseite wird dies auf eine 8-Bit-Adresse reduziert, wodurch die Gesamtlänge des Befehls auf zwei Byte sinkt und somit die Befehlsleistung verbessert wird.

Der Stack-Adressraum ist fest mit der Speicherseite verknüpft, d . $01h. mit dem Adressbereich $0100( – ). Der Softwarezugriff auf den Stack erfolgt über vier Befehle im impliziten Adressierungsmodus, die den Akkumulator oder das Prozessorstatusregister laden (pushen oder poppen). Derselbe Stack wird auch für Unterprogrammaufrufe mittels der Befehle JSR (Sprung zu Unterprogramm) und RTS (Rückkehr aus Unterprogramm) sowie für die Interruptbehandlung verwendet . $01FF256511

Adressierung

Der Chip nutzt die Index- und Stackregister effizient mit verschiedenen Adressierungsmodi , darunter ein schneller Nullseitenmodus , ähnlich dem des PDP-8 . Dieser greift mit einer einzigen 8-Bit-Adresse auf Speicheradressen von 0 bis 255 zu (wodurch der normalerweise zum Abrufen des höherwertigen Bytes der Adresse benötigte Zyklus eingespart wird). Der Code für den 6502 verwendet die Nullseite ähnlich wie der Code anderer Prozessoren Register. Auf einigen 6502-basierten Mikrocomputern mit Betriebssystem belegt das Betriebssystem den größten Teil der Nullseite, sodass dem Benutzer nur wenige Speicheradressen zur Verfügung stehen.

Zu den Adressierungsmodi gehören implizite (1-Byte-Anweisungen), absolute (3 Bytes), indizierte absolute (3 Bytes), indizierte Nullseiten-Adressierung (2 Bytes), relative (2 Bytes), Akkumulator- (1), indirekte x- und indirekte y-Adressierung (2) sowie direkte (2). Sprungbefehle verwenden einen vorzeichenbehafteten 8-Bit-Offset relativ zum Befehl nach dem Sprung. Der numerische Bereich −128 bis 127 entspricht daher 128 Bytes rückwärts und 127 Bytes vorwärts vom Befehl nach dem Sprung (der wiederum 126 Bytes rückwärts und 129 Bytes vorwärts vom Beginn des Sprungbefehls liegt). Der Akkumulatormodus arbeitet mit dem Akkumulatorregister und benötigt keine Operandendaten . Der direkte Modus verwendet einen 8-Bit -Literaloperanden .

Die indirekten Modi eignen sich für die Array -Verarbeitung und zeigerbasierte Datenstrukturen. Im 5- oder 6-Zyklen- Modus „indirect,y“ wird das 8-Bit-Y-Register zu einer 16-Bit-Basisadresse addiert, die von der Nullseite gelesen wird. Diese Basisadresse wird durch ein Byte nach dem Opcode ermittelt. Das Y-Register ist somit ein Indexregister , da es einen tatsächlichen Index speichert . [ e ] Das Inkrementieren des Indexregisters, um das Array byteweise zu durchlaufen, benötigt nur zwei zusätzliche Zyklen. Im seltener verwendeten Modus „indirect,x“ befindet sich die effektive Adresse für die Operation an der Adresse der Nullseite, die durch Addition des zweiten Bytes des Befehls zum Inhalt des X-Registers gebildet wird. Bei Verwendung der indizierten Modi fungiert die Nullseite effektiv als Satz von bis zu 128 zusätzlichen (leistungsschwächeren) Adressregistern.

BCD

Der 6502 kann Addition und Subtraktion im Binär- oder BCD-Modus durchführen . Im BCD-Modus SED(durch Setzen des D-Flags) wird Dezimalarithmetik ausgeführt, was $99 + $01zu dem Ergebnis $00 und dem Setzen des Übertragsflags (C) führt. Im Binärmodus CLD(durch Löschen des D-Flags) ergibt dieselbe Operation $9A , wobei das Übertragsflag gelöscht wird. Abgesehen von Atari BASIC wurde der BCD-Modus in Heimcomputeranwendungen selten verwendet.

Anweisungen und Opcodes

Die Befehlsoperationscodes ( Opcodes ) des 6502 sind 8 Bit lang und haben die allgemeine Form AAABBBCC, wobei AAA und CC den Opcode und BBB den Adressierungsmodus definieren. [ 63 ] Beispielsweise ORAführt der Befehl eine bitweise ODER-Verknüpfung der Bits im Akkumulator mit einem anderen Wert durch. Der zugehörige Opcode hat die Form 000BBB01, wobei BBB beispielsweise 010 für einen Wert im Immediate-Modus (Konstante), 001 für eine feste Adresse auf der Nullseite, 011 für eine absolute Adresse usw. sein kann. [ 63 ] Dieses Muster ist nicht universell, da es Ausnahmen gibt. Es ermöglicht jedoch die einfache Umwandlung von Opcode-Werten in Assembler-Mnemonics für die meisten Befehle, wobei Sonderfälle durch speziellen Code behandelt werden. [ 63 ]

Von den 256 möglichen Opcodes, die mit einem 8-Bit-Muster dargestellt werden können, nutzt der ursprüngliche 6502 151 davon, organisiert in 56 Befehlen mit (möglicherweise) mehreren Adressierungsmodi . Je nach Befehl und Adressierungsmodus benötigt der Opcode null, ein oder zwei zusätzliche Bytes für Operanden. Daher variiert die Länge der 6502-Maschinenbefehle zwischen einem und drei Bytes. [ 64 ] [ 65 ] Der Operand wird im für den 6502 üblichen Little-Endian-Format gespeichert .

Jeder CPU-Befehl benötigt eine bestimmte Anzahl von Taktzyklen, üblicherweise entsprechend der Anzahl der Speicherzugriffe. Beispielsweise benötigt der absolute Indexierungsmodus des ORA-Befehls vier Taktzyklen: drei Zyklen zum Lesen des Befehls und einen Zyklus zum Lesen des Werts der absoluten Adresse. Wird kein Speicherzugriff durchgeführt, beträgt die Anzahl der Taktzyklen zwei. Die minimale Anzahl an Taktzyklen für jeden Befehl beträgt zwei. Bei Verwendung der indizierten Adressierung wird ein zusätzlicher Taktzyklus hinzugefügt, wenn das Ergebnis eine Seitengrenze überschreitet. Ebenso wird ein zusätzlicher Taktzyklus hinzugefügt, wenn im Indexierungsmodus eine Null-Seitenadresse verwendet wird (z. B. zp,X).

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

Die verbleibenden 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, um Raum für zukünftige Erweiterungen zu schaffen. Ebenso enthielt die Spalte $x2 nur einen einzigen Eintrag . Die verbleibenden 25 leeren Slots wurden verteilt. Einige dieser Slots wurden im 65C02 verwendet, um sowohl neue Befehle als auch Variationen bestehender Befehle mit neuen Adressierungsmodi bereitzustellen. Die $xF-Befehle waren zunächst frei gelassen, damit Drittanbieter eigene Befehle hinzufügen konnten. Spätere Versionen des 65C02 standardisierten jedoch einen von Rockwell Semiconductor entwickelten Satz von Bitmanipulationsbefehlen . LDX #constant

Assemblersprache

Eine 6502- Assembleranweisung besteht aus einem dreistelligen Befehlsmnemonik , gefolgt von den Operanden . Anweisungen, die keinen separaten Operanden benötigen, sondern je nach Adressierungsmodus ein einzelnes Register ansprechen, kombinieren das Zielregister im Befehlsmnemonik, sodass der Assembler INXanstelle von verwendet, um INC Xdas X-Register zu inkrementieren.

Anweisungstabelle

Opcode-Matrix für den 6502-Befehlssatz
Adressierungsarten: A – Akkumulator, # – unmittelbar, zpg – Nullseite, abs – absolut, ind – indirekt, X – indiziert über das X-Register, Y – indiziert über das Y-Register, rel – relativ
Hohes KnabbernGeringfügiges Knabbern
01245689ACDE
0 BRK ORA ( ind ,X) ORA zpgASL zpgPHP ORA # ASL A ORA absASL abs
1 BPL relORA ( ind ),Y ORA zpg ,X ASL zpg ,X CLC ORA abs ,Y ORA abs ,X ASL abs ,X
2 JSR absUND ( ind ,X) BIT zpgUND zpgROL zpgPLP UND # ROL A BIT absUND BauchmuskelnROL abs
3 BMI- rel.UND ( ind ),Y UND zpg ,X ROL zpg ,X SEC UND abs ,Y UND abs ,X ROL abs ,X
4 RTI EOR ( ind ,X) EOR zpgLSR zpgPHA EOR # LSR A JMP absEOR absLSR abs
5 BVC relEOR ( ind ),Y EOR zpg ,X LSR zpg ,X CLI EOR abs ,Y EOR abs ,X LSR abs ,X
6 RTS ADC ( ind ,X) ADC zpgROR zpgPLA ADC # ROR A JMP ( ind ) ADC absROR abs
7 BVS relADC ( ind ),Y ADC zpg ,X ROR zpg ,X SEI ADC abs ,Y ADC abs ,X ROR abs ,X
8 STA ( ind ,X) STY zpgSTA zpgSTX zpgDEY TXA STY absSTA absSTX abs
9 BCC relSTA ( ind ),Y STY zpg ,X STA zpg ,X STX zpg ,Y TYA STA abs ,Y TXS STA abs ,X
A LDY # LDA ( ind ,X) LDX # LDY zpgLDA zpgLDX zpgTAY LDA # STEUER LDY absLDA absLDX abs
B BCS relLDA ( ind ),Y LDY zpg ,X LDA zpg ,X LDX zpg ,Y CLV LDA abs ,Y TSX LDY abs ,X LDA abs ,X LDX abs ,Y
C CPY # CMP ( ind ,X) CPY zpgCMP zpgDEC zpgINY CMP # DEX CPY absCMP absDEC abs
D BNE relCMP ( ind ),Y CMP zpg ,X DEC zpg ,X CLD CMP abs ,Y CMP abs ,X DEC abs ,X
E CPX # SBC ( ind ,X) CPX zpgSBC zpgINC zpgINX SBC # NOP CPX absSBC absINC abs
F BEQ relSBC ( ind ),Y SBC zpg ,X INC zpg ,X SED SBC abs ,Y SBC abs ,X INC abs ,X
Leere Opcodes (z. B. F2 ) und alle Opcodes, deren niedrigste Nibbles 3 , 7 , B und F sind , sind im 6502-Befehlssatz nicht definiert.

Beispielcode

Der folgende 6502 -Assembler- Quellcode gehört zu einer Subroutine namens `copy` TOLOWER, die eine mit einem Nullbyte abgeschlossene Zeichenkette von einem Ort zum anderen kopiert und dabei Großbuchstaben in Kleinbuchstaben umwandelt. Die zu kopierende Zeichenkette ist die „Quelle“, und die Zeichenkette, in der die konvertierte Quelle gespeichert wird, ist das „Ziel“.

 0080 0080 00 04 0082 00 05 06:00 Uhr 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: ; ; Konvertiert eine mit Null terminierte Zeichenkette in Kleinbuchstaben. ; Die maximale Zeichenkettenlänge beträgt 255 Zeichen plus das Null -Terminierungszeichen. ; ; Parameter: ; ; SRC – Quelladresse der Zeichenkette ; DST – Zieladresse der Zeichenkette ; ORG $0080 ; SRC .WORD $0400 ; Quellzeiger der Zeichenkette DST .WORD $0500 ; Zielzeiger der Zeichenkette ; ORG $0600 ; Startadresse der Ausführung ; TOLOWER LDY # $00 ; Startindex ; LOOP LDA ( SRC ), Y ; aus der Quellzeichenkette lesen BEQ DONE ; Ende der Zeichenkette ; CMP # 'A' ; falls kleiner als das UC-Alphabet... BCC SKIP ; unverändert kopieren ; CMP # 'Z' + 1 ; falls größer als das UC-Alphabet... BCS SKIP ; unverändert kopieren ; ORA # %00100000 ; in Kleinbuchstaben umwandeln ; SKIP STA ( DST ), Y ; in Zielzeichenkette speichern INY ; Index erhöhen BNE LOOP ; nächstes Zeichen ; ; HINWEIS: Wenn Y einen Zeilenumbruch verursacht, bleibt die Zielzeichenkette in einem undefinierten Zustand. ; Wir setzen Carry, um dies der aufrufenden Funktion mitzuteilen. ; SEC ; Fehler melden: Zeichenkette zu lang &... RTS ; zum Aufrufer zurückkehren ; DONE STA ( DST ), Y ; Zielzeichenkette beenden CLC ; Konvertierung abgeschlossen melden &... RTS ; zum Aufrufer zurückkehren ; .END

IC-Hardware-Design

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

Der nicht maskierbare Interrupt- Eingang (NMI) des Prozessors ist flankenempfindlich . Das bedeutet, dass der Interrupt durch die fallende Flanke des Signals und nicht durch dessen Pegel ausgelöst wird. Daher ist eine verdrahtete ODER- Interrupt-Schaltung nicht ohne Weiteres möglich. Dies verhindert jedoch auch das Auftreten verschachtelter NMI-Interrupts, bis die Interrupt-Quellhardware den NMI-Eingang wieder deaktiviert, was häufig vom NMI- Interrupt-Handler gesteuert wird .

Die gleichzeitige Aktivierung der Hardware-Interruptleitungen NMI und IRQ (maskierbar) führt dazu, dass IRQ ignoriert wird. Bleibt die IRQ-Leitung jedoch nach der Bearbeitung des NMI aktiv, reagiert der Prozessor nahezu sofort auf IRQ, da IRQ pegelabhängig ist . Dadurch wurde im 6502-Design eine Art integrierte Interruptpriorität etabliert. (Der erste Opcode des NMI-Handlers wird ausgeführt, bevor IRQ erneut erkannt wird.)

Das B-Flag wird durch periodisches Abtasten des Ausgangssignals des NMI-Flankendetektors und des IRQ-Eingangs des 6502 gesetzt. Das auf Low gesetzte IRQ-Signal wird jedoch nur erkannt, wenn IRQs nicht durch das I-Flag maskiert sind. Wird auf diese Weise eine NMI-Anforderung oder ein (maskierbarer) IRQ erkannt, wird das B-Flag auf Null gesetzt und der Prozessor führt als Nächstes den BRK-Befehl aus, anstatt den nächsten Befehl gemäß dem Programmzähler auszuführen. [ 66 ] [ 67 ]

Der BRK-Befehl legt den Prozessorstatus auf den Stack, wobei das B-Flag-Bit auf Null gesetzt ist. Nach seiner Ausführung setzt der BRK-Befehl den Wert des B-Flags wieder auf Eins. Dies ist die einzige Möglichkeit, das B-Flag zu verändern. Wird das B-Flag von einem anderen Befehl als dem BRK-Befehl im Rahmen des Prozessorstatus auf den Stack gelegt [ 68 ], hat es immer den Wert Eins.

Ein High-Low-Übergang am SO-Eingangspin setzt das Überlauf-Statusbit des Prozessors. Dies ermöglicht eine schnelle Reaktion auf externe Hardware. Beispielsweise kann ein Hochgeschwindigkeits- Abfragetreiber die Hardware alle drei Taktzyklen einmal abfragen, indem er den Befehl `Branch-on-overflow-clear( BVC)` verwendet, der so lange zu sich selbst verzweigt, bis ein Überlauf durch einen fallenden SO-Übergang ausgelöst wird. Der Commodore 1541 und andere Commodore -Diskettenlaufwerke nutzen diese Technik, um zu erkennen, wann der Serialisierer bereit ist, ein weiteres Byte von Daten zu übertragen. Die Hardware- und Softwarearchitektur des Systems muss sicherstellen, dass während arithmetischer Berechnungen kein SO auftritt und diese unterbricht.

Variationen und Ableitungen

Die 6502 war die am weitesten verbreitete Variante der 65xx-Serie von MOS Technology .

Die Modelle 6501 und 6502 sind im 40-poligen DIP- Gehäuse erhältlich; die Modelle 6503, 6504, 6505 und 6507 hingegen in 28-poligen DIP-Versionen, um die Kosten für Chip und Leiterplatte zu reduzieren. Bei allen 28-poligen Versionen wurde die Pinanzahl durch Weglassen einiger höherwertiger Adresspins und verschiedener Kombinationen von Funktionspins reduziert, wodurch diese Funktionen nicht verfügbar sind.

Pinbelegungsunterschiede
Stift680065016502
2HaltBereitBereit
3∅1 (in)∅1 (in)∅1 (aus)
5Gültige SpeicheradresseGültige SpeicheradresseNC
7Bus verfügbarBus verfügbarSYNCHRONISATION
36Datenbus aktivierenDatenbus aktivierenNC
37∅2 (in)∅2 (in)∅0 (in)
38NCNCÜberlaufflag setzen
39Drei-Zustands-SteuerungNC∅2 (aus)

Typischerweise werden zur Reduzierung der Pinanzahl von 40 auf 28 zwölf Pins weggelassen: die drei nicht verbundenen (NC) Pins, einer der beiden Vss-Pins, einer der Takt-Pins, der SYNC-Pin, der Set-Overflow-Pin (SO), entweder der maskierbare oder der nicht maskierbare Interrupt (NMI) sowie die vier höchstwertigen Adressleitungen (A12–A15). Durch das Weglassen von vier Adress-Pins reduziert sich die externe Adressierbarkeit auf 4 KB (von 64 KB beim 6502), obwohl das interne PC-Register und alle effektiven Adressberechnungen weiterhin 16 Bit breit sind .

Der 6507 verzichtet auf beide Interrupt-Pins, um die Adressleitung A12 zu nutzen. Dadurch stehen 8 KB externer Adressraum zur Verfügung, jedoch keine Interrupt-Funktionalität. Der 6507 wurde in der beliebten Videospielkonsole Atari 2600 verwendet . Deren Design teilt den 8 KB großen Speicherbereich in zwei Hälften: Die untere Hälfte ist für den internen RAM und die Peripheriegeräte der Konsole reserviert, die obere Hälfte für das Spielmodul. Daher haben Atari-2600-Module eine Adressbeschränkung von 4 KB (und dieselbe Kapazitätsbeschränkung, sofern das Modul keine Bankumschaltschaltung enthält ).

Der Commodore 64 , ein beliebter Computer auf Basis des 6502- Prozessors, nutzte eine modifizierte Version, den 6510. Im Gegensatz zu den Modellen 6503–6505 und 6507 verfügt der 6510 über 40 Pins und zusätzliche interne Hardware: einen 6-Bit-Parallel-I/O-Port, der den Adressen 0000 und 0001 zugeordnet ist. Auch der 6508 besitzt, wie der 6510, zusätzliche interne Hardware: 256 Byte SRAM und einen 8-Bit-I/O-Port, ähnlich dem des 6510. Obwohl diese Chips im Vergleich zum 6502 nicht weniger Pins benötigen, fallen für den zusätzlichen Parallel-I/O-Port keine zusätzlichen Pins an. In diesem Fall werden keine Adressleitungen entfernt.

Variationen
Unternehmen Modell Beschreibung
6502 Ein 1-MHz-Chip, der Mitte der 1970er Jahre im KIM-1 und anderen Einplatinencomputern verwendet wurde.
6502A Ein 1,5-MHz-Chip, der in Asteroids Deluxe verwendet wurde , und ein 2-MHz-Chip im BBC Micro.
6502B Eine Version des 6502, die mit einer maximalen Geschwindigkeit von 3 MHz anstatt 2 MHz arbeiten konnte. Die B-Version wurde sowohl im Apple III als auch in frühen Atari 8-Bit-Computern verwendet , die jeweils mit ca. 1,8 MHz liefen. [ f ]
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, einer speziell für Atari entwickelten 6502 (die von Atari manchmal als "6502C" [ 69 ] bezeichnet wird ), noch mit der ähnlich benannten 65C02 .

SALLY, C014806, "6502C" Spezielle 6502-Variante, die für Atari entwickelt wurde und in späteren Atari 8-Bit-Computern sowie den Atari 5200- und Atari 7800 -Konsolen zum Einsatz kam.

Pin 35 verfügt über ein HALT-Signal und Pin 36 über das R/W-Signal (diese Pins sind bei einem Standard-6502 nicht verbunden (N/C)). Durch das Setzen des HALT-Signals auf Low wird der Takt gespeichert und der Prozessor angehalten. Dies ermöglichte den direkten Speicherzugriff (DMA) der Videoschaltung. [ 70 ]

Obwohl er in der Atari-Dokumentation manchmal als „6502C“ bezeichnet wird, handelt es sich hierbei nicht um den offiziellen 6502C, und der Chip selbst ist nie als solcher gekennzeichnet. [ 69 ]

MOS 6503Reduzierte Speicheradressierungsfähigkeit (4 KB) und kein RDY-Eingang, in einem 28-poligen DIP-Gehäuse (wobei die Phase-1-(OUT)-, SYNC-, redundante Vss- und SO-Pins des 6502 ebenfalls weggelassen wurden). [ 71 ]
MOS 6504Reduzierte Speicheradressierungsfähigkeit (8 KB), kein NMI und kein RDY-Eingang, in einem 28-poligen DIP-Gehäuse (wobei die Phase-1-(OUT)-, SYNC-, redundante Vss- und SO-Pins des 6502 ebenfalls weggelassen wurden). [ 71 ]
MOS 6505Reduzierte Speicheradressierungsfähigkeit (4 KB) und kein NMI, in einem 28-poligen DIP-Gehäuse (wobei die Phase-1-(OUT)-, SYNC-, redundante Vss- und SO-Pins des 6502 ebenfalls weggelassen wurden). [ 71 ]
MOS 6506Reduzierte Speicheradressierungsfähigkeit (4 KB), kein NMI und kein RDY-Eingang, aber alle 3 Taktanschlüsse des 6502 (d. h. ein 2-Phasen-Ausgangstakt), in einem 28-poligen DIP-Gehäuse (wobei die SYNC-, redundanten Vss- und SO-Anschlüsse des 6502 ebenfalls weggelassen wurden). [ 71 ]
MOS 6507Reduzierte Speicheradressierung (8 KB) und keine Interrupts, in einem 28-poligen DIP-Gehäuse (wobei die Phase-1-(OUT), SYNC-, redundante Vss- und SO-Pins des 6502 ebenfalls weggelassen wurden). [ 71 ] Dieser Chip wurde im Atari-2600- Videospielsystem und in vielen Peripheriegeräten für Atari-8-Bit-Computer verwendet.
MOS 6508Verfügt über einen integrierten 8-Bit-Ein-/Ausgangsport und 256 Byte internen statischen RAM.
MOS 6509Kann bis zu 1 MB RAM als 16 Bänke à 64 KB adressieren und wurde in der Commodore CBM-II- Serie verwendet.
MOS 6510Er verfügt über einen integrierten programmierbaren 6-Bit-Ein-/Ausgang und wurde im Commodore 64 verwendet . Der 8500 ist im Prinzip eine HMOS-Version des 6510 und ersetzte diesen in späteren Versionen des C64.
MOS 6512 6513 6514 6515Die MOS Technology-Prozessoren 6512, 6513, 6514 und 6515 verwenden jeweils einen externen Taktgeber anstelle eines internen Taktgenerators wie der 650x (z. B. 6502). Dies wurde in einigen Designs vorteilhaft genutzt, da die Takte asymmetrisch betrieben werden konnten, was die Gesamtleistung der CPU steigerte.

Der 6512 ist ein 6502 mit einem zweiphasigen Takteingang für einen externen Taktoszillator anstelle eines internen Taktoszillators. [ 71 ] Die Modelle 6513, 6514 und 6515 sind analog dazu äquivalent zu (jeweils) einem 6503, 6504 bzw. 6505 mit demselben zweiphasigen Takteingang. [ 71 ]

The 6512 was used in the BBC Micro B+64.

Ricoh RP2A03RP2A07 Unlicensed 6502 variants running at ~1.8 MHz[f] including an audio processing unit but lacking the BCD mode, used in the Nintendo Entertainment System.
MOS 65916592 System on a chip designs that utilize a complete Atari 2600 in a 48-pin DIP package.[72][73]
WDC 65C02CMOS version of the NMOS 6502 that was designed by Bill Mensch of the Western Design Center (WDC), featuring reduced power consumption, support for much higher clock speeds, new instructions, new addressing modes for some existing instructions, and correction of NMOS errata, such as the JMP ($xxFF) bug.
CSG, MOS 65CE02CMOS variant developed by the Commodore Semiconductor Group (CSG), formerly MOS Technology. The 65CE02 provides a further enhanced instruction set from the 65C02, featuring a third indexing register (Z), base page register, 16-bit stack and faster program execution with the minimal instruction timing reduced from 2 to 1 clock cycles.
Rockwell R6511QR6500/11, R6500/12, R6500/15 "One-Chip Microcomputers" Enhanced versions of the 6502-based processor, also including individual bit manipulation operations (RMB, SMB, BBR and BBS), on-chip 192-byte zero-page RAM, UART, etc.[74][75]
Rockwell R65F11R65F12 The Rockwell R65F11 (introduced in 1983) and the later R65F12 are enhanced versions of the 6502-based processor, also including individual bit manipulation operations (RMB, SMB, BBR and BBS), on-chip zero-page RAM, on-chip Forth kernel ROM, a UART, etc.[76][77][78][79][80]
GTE G65SC12 Drop in 6502 CMOS variant without individual bit manipulation operations (RMB, SMB, BBR and BBS).[81] This was used in the BBC Master.
GTE G65SC102 Software compatible with the 6502, but has a slightly different pinout and oscillator circuit. The BBC Master Turbo included the 4 MHz version of this CPU on a coprocessor card, which could also be bought separately and added to the Master 128.
Rockwell R65C00R65C21R65C29 Die Modelle R65C00, R65C21 und R65C29 verfügen über zwei verbesserte CMOS-6502-Mikrocontroller in einem einzigen Chip, wobei die Modelle R65C00 und R65C21 zusätzlich 2 KB maskenprogrammierbaren ROM enthielten. [ 82 ] [ 83 ]
CM630 Ein 1-MHz -Klon des 6502 aus dem Ostblock , der in den bulgarischen Klonen des Apple II , Pravetz 8A und 8C, verwendet wurde . [ 84 ]
MOS 7501 8501Die 1984 eingeführten Varianten des 6510 (eine verbesserte Version des 6502) [ 85 ] erweiterten die Anzahl der I/O-Port-Pins von 6 auf 7, verzichteten jedoch auf Pins für nicht maskierbare Interrupts und den Taktausgang [ 86 ] . Sie wurden in den Commodore- Computern C-16 , C-116 und Plus/4 verwendet . Der Hauptunterschied zwischen den CPUs 7501 und 8501 besteht darin, dass der 7501 im HMOS -1-Verfahren und der 8501 im HMOS-2-Verfahren gefertigt wurde [ 85 ] .
MOS 8500Der Commodore 8500 wurde 1985 als HMOS- Version des 6510 (der wiederum auf dem 6502 basiert) eingeführt. Abgesehen von der Prozessmodifikation ist der 8500 nahezu identisch mit der NMOS- Version des 6510. Er ersetzte den 6510 in späteren Versionen des Commodore 64 .
MOS 8502Der 8502 wurde von MOS Technology entwickelt und im Commodore 128 eingesetzt . Er basierte auf dem im Commodore 64 verwendeten MOS 6510 und konnte mit der doppelten Taktfrequenz des 6510 arbeiten. [ 87 ] Zur 8502-Familie gehören auch die MOS-Prozessoren 7501, 8500 und 8501.
Hudson Soft HuC6280Die verbesserte Version des WDC 65C02 stammt vom japanischen Videospielunternehmen Hudson Soft . Er wurde von Seiko Epson und NEC für die SuperGrafx-Konsole hergestellt . Das bekannteste Produkt mit dem HuC6280 ist die Videospielkonsole TurboGrafx-16 von NEC.
VLSIVL65NC02 [ 88 ]Eine VLSI-lizenzierte Variante des 65C02 wurde in den Hauptsystem-IC des Atari Lynx mit dem Namen Mikey integriert.

16-Bit-Derivate

Das Western Design Center (WDC) entwickelte und produzierte 2025 noch immer den WDC 65C816S -Prozessor, einen 16-Bit-Prozessor mit statischem Kern, der den 65C02 ablöste . Der W65C816S ist eine neuere Variante des 65C816, dem Kern des Apple IIGS- Computers und Basis des Ricoh 5A22- Prozessors im Super Nintendo Entertainment System . Der W65C816S bietet kleinere Verbesserungen gegenüber dem 65C816, wodurch er nicht vollständig hardwarekompatibel ist. Zu diesen Verbesserungen zählt die Umstellung auf einen statischen Kern, der es ermöglicht, den Takt in jeder Phase anzuhalten, ohne dass Daten in den Registern verloren gehen. Der W65C816S ist seit März 2020 über Elektronikdistributoren erhältlich und offiziell für einen 14-MHz-Betrieb spezifiziert.

Das Western Design Center entwickelte und produzierte auch den 65C802 , einen 65C816-Kern mit 64-Kilobyte-Adressraum in einem pinkompatiblen 65(C)02-Gehäuse. Der 65C802 konnte auf einer 6502-Platine nachgerüstet werden und funktionierte beim Einschalten als 65C02 im Emulationsmodus. Wie beim 65C816 schaltete eine Zwei-Befehls-Sequenz den 65C802 in den nativen Modus, wodurch sein 16-Bit- Akkumulator , die Indexregister und weitere Funktionen des 65C816 zugänglich wurden. Der 65C802 fand keine weite Verbreitung und die Produktion wurde eingestellt.

Fehler und Macken

Der 6502 wies mehrere Fehler und Eigenheiten auf, die bei der Programmierung berücksichtigt werden mussten:

  • Die ersten Revisionen des 6502, wie sie beispielsweise in einigen KIM-1- Computern verbaut wurden, besaßen keine ROR- Anweisung (Rotation des Speichers oder Akkumulators nach rechts). Bei diesen Chips entspricht die Operation des später für ROR entwickelten Opcodes effektiv einer ASL-Anweisung (arithmetische Linksverschiebung), die das Übertragsbit im Statusregister nicht beeinflusst. MOS verzichtete zunächst bewusst auf die ROR-Anweisung im Befehlssatz, da sie diese als nicht kosteneffizient erachtete. Aufgrund zahlreicher Kundenanfragen versprach MOS in der zweiten Auflage des MCS6500-Programmierhandbuchs (Dokument Nr. 6500-50A), dass ROR ab 1976 in 6502-Chips verfügbar sein würde. [ 32 ] [ g ] Die überwiegende Mehrheit der heute existierenden 6502-Chips verfügt über die ROR-Anweisung. Dazu gehören alle CPUs, die ursprünglich in beliebten, vollständig montierten Mikrocomputern wie den Apple II- und Commodore 64-Serien verbaut wurden, die alle nach 1976 hergestellt wurden.
  • Die NMOS- 6502-Familie verfügt über eine Vielzahl undokumentierter Befehle , die je nach Chiphersteller variieren. Die Befehlsdekodierung des 6502 ist 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 ungewöhnliche und mitunter schwer vorhersehbare Aktionen aus, wie z. B. einen Prozessorabsturz, die Ausführung zweier gültiger Befehle nacheinander, die Ausführung ungewöhnlicher Kombinationen zweier Befehle oder einfach keine Aktion. Einige Hardwareentwickler nutzten die undefinierten Opcodes, um den Befehlssatz des 6502 zu erweitern. Sie erkannten, wann ein bestimmter undefinierter Opcode abgerufen wurde, und führten eine externe Erweiterungsoperation durch. Gleichzeitig ersetzten sie den Opcode des 6502 durch einen neutralen (NOP-ähnlichen) Opcode, um den Prozessor während der externen Hardwareverarbeitung in den Leerlauf zu versetzen. Einige Programmierer nutzten diese Funktion auch, um den Befehlssatz des 6502 zu erweitern, indem sie die Funktionalität der nicht implementierten Opcodes durch speziell geschriebene Software bereitstellten, die am Vektor 0xFFFE des BRK-Befehls abgefangen wurde. [ 89 ] [ 90 ] Alle undefinierten Opcodes wurden im 65C02 , einer erweiterten CMOS- Version des 6502, durch NOP -Befehle ersetzt , allerdings mit unterschiedlichen Byte-Größen und Ausführungszeiten. (Einige von ihnen führen tatsächlich Speicherleseoperationen durch, ignorieren die Daten aber anschließend.) Im 65C802/65C816 führen alle 256 Opcodes definierte Operationen aus.
  • Der indirekte Speichersprungbefehl des 6502 , ` JMP (<address>)x`, weist eine nicht intuitive Einschränkung auf, die viele Anwender als Fehler betrachten. <address>Ist `x` hexadezimalxxFF (d. h. ein beliebiges Wort, das auf `x` endet FF), springt der Prozessor nicht wie erwartet zur in `x` xxFFund `y` gespeicherten Adresse xxFF+1, sondern zur durch `x` xxFFund `y` definierten Adresse xx00(beispielsweise würde `x` zur in `x` und `y` gespeicherten Adresse springen , anstatt zur in `x` und `y` gespeicherten Adresse). Dies lässt sich einfach vermeiden, indem man keine indirekten Sprungzieladressen über eine Seitengrenze hinweg platziert. Das Programmierhandbuch des MOS Technology MCS6500 legt nahe, dass dies die Absicht der Entwickler des 6502 war, um Speicherplatz auf dem Chip zu sparen, der für die komplexere Implementierung des bedingten Hinzufügens eines Taktzyklus zur Übertragsweiterleitung benötigt worden wäre. Dieser vermeintliche Fehler zog sich durch die gesamte NMOS-Produktlinie, wurde aber in den CMOS-Derivaten behoben.JMP($10FF)10FF100010FF1100
  • Die indizierte Adressierung des NMOS 6502 über Seitengrenzen hinweg führt zu einem zusätzlichen Lesevorgang einer ungültigen Adresse auf der Seite der Basisadresse (zu der der Index addiert wird). Diese Eigenschaft kann zu zufälligen Problemen führen, wenn auf Hardware zugegriffen wird, die auf einen Lesevorgang reagiert, z. B. das Löschen von Timer- oder IRQ-Flags oder das Senden eines I/O-Handshakes. Der zusätzliche Lesevorgang lässt sich zwar vorhersagen und beheben, um solche Probleme zu vermeiden, jedoch nur mit besonderer Sorgfalt im Hardware- und Software-Design. Dieser Fehler bestand in der gesamten NMOS-Produktfamilie, wurde aber in den CMOS-Derivaten behoben, in denen der Prozessor zusätzlich das letzte Befehlsbyte liest.
  • Die 6502- Befehle zum Lesen, Ändern und Schreiben führen einen Lese- und zwei Schreibzyklen aus. Zuerst werden die gelesenen, unveränderten Daten zurückgeschrieben, anschließend die geänderten Daten. Diese Eigenschaft kann zu Problemen führen, da Hardware, die einen Schreibvorgang ausführt, zweimal aufgerufen wird. Diese Anomalie bestand in der gesamten NMOS-Produktlinie, wurde aber in den CMOS-Varianten behoben, in denen der Prozessor zwei Lese- und einen Schreibzyklus durchführt. Durch defensive Programmierung lässt sich dieses Problem in der Regel vermeiden, indem keine Lese-/Änderungs-/Schreibbefehle auf Hardware-Registern ausgeführt werden.
  • Die Statusflags N (Ergebnis negativ), V (Vorzeichenbitüberlauf) und Z (Ergebnis Null) sind bei arithmetischen Operationen im BCD- Modus des Prozessors im Allgemeinen bedeutungslos, da sie im Dezimalmodus undefiniert sind und empirisch nachgewiesen das Binärergebnis und nicht das BCD-Ergebnis widerspiegeln. Diese Einschränkung wurde bei den CMOS-Derivaten aufgehoben, allerdings auf Kosten eines zusätzlichen Taktzyklus für einen ADC- oder SBC-Befehl im Dezimalmodus (außer beim 65C816). Daher kann dieses Merkmal genutzt werden, um einen CMOS-Prozessor von einer NMOS-Version zu unterscheiden (indem man sich auf das undokumentierte Verhalten der NMOS-Version stützt). [ 91 ]
  • Befindet sich der 6502 im BCD-Modus, wenn ein Hardware-Interrupt auftritt, wechselt er nicht in den Binärmodus. Dies kann zu schwer erkennbaren Fehlern in der Interrupt-Service-Routine (ISR) führen, wenn diese den BCD-Modus vor arithmetischen Operationen nicht zurücksetzt. Das Programmierhandbuch des 6502 schreibt daher vor, dass jede ISR das D-Flag zurücksetzen oder setzen muss, wenn sie die Befehle ADC oder SBC verwendet. Gelegentlich kann es jedoch vorkommen, dass ein Programmierer dies versehentlich vergisst und so einen Fehler verursacht. Beispielsweise behandelte der KERNAL des Commodore 64 diese Prozessoreigenschaft nicht korrekt, sodass IRQs während BCD-Rechenoperationen deaktiviert oder umgeleitet werden mussten. Dieses Problem wurde auch in den CMOS-Derivaten behoben, indem das D-Flag durch Reset und alle Interrupts automatisch zurückgesetzt wird. (Diese Änderung hat den Nachteil, dass Programme, die kontinuierlich im Dezimalmodus arbeiten, dadurch etwas länger und langsamer werden, da nun jede ISR das D-Flag setzen muss , bevor sie ADC oder SBC ausführt.)
  • Der Befehlssatz des 6502 enthält BRK (Opcode $00), einen Software-Interrupt (ähnlich dem SWI-Mnemonik der Motorola 6800- und ARM- Prozessoren). BRK wird meist verwendet, um die Programmausführung zu unterbrechen und einen Maschinensprachemonitor für Tests und Debugging während der Softwareentwicklung zu starten. BRK kann auch verwendet werden, um die Programmausführung mithilfe einer einfachen Sprungtabelle zu steuern (analog zur Behandlung von Software-Interrupts über Nummern beim Intel 8086 und seinen Derivaten). Tritt jedoch ein maskierbarer Hardware-Interrupt auf, während der Prozessor einen BRK-Befehl abruft, führt die NMOS-Version des Prozessors BRK nicht aus und fährt fort, als wäre nur der Hardware-Interrupt aufgetreten. Dieser Fehler – ein eindeutiger Hardware-Bug – wurde in der CMOS-Implementierung des Prozessors behoben. Diese ruft zuerst die Interrupt-Service-Routine (ISR) für den Hardware-Interrupt auf und führt anschließend den BRK-Befehl aus.
  • Bei der Ausführung von JSR- (Sprung zu Unterprogramm) und RTS-Befehlen (Rücksprung aus Unterprogramm) wird die Rücksprungadresse, die von JSR auf den Stack gelegt wird, auf das letzte Byte des JSR-Operanden (also das höchstwertige Byte der Unterprogrammadresse) und nicht auf die Adresse des folgenden Befehls gelegt. Dies liegt daran, dass das eigentliche Kopieren (vom Programmzähler auf den Stack und zurück) vor der automatischen Inkrementierung des Programmzählers am Ende jedes Befehls erfolgt. [ 92 ] Diese Eigenschaft bliebe unbemerkt, wenn der Code die Rücksprungadresse nicht zur Ermittlung von Parametern im Programmablauf untersuchen würde. [ 93 ] Sie ist bis heute ein Merkmal von 6502-Derivaten. Das ursprüngliche Programmierhandbuch des MCS6500 weist darauf hin und erklärt den Grund: Beim JSR-Befehl wird ein Taktzyklus eingespart, da der Programmzähler (PC) vor dem Speichern nicht inkrementiert wird. Beim RET-Befehl hingegen wird die verzögerte Inkrementierung des abgerufenen Programmzählers mit anderen Schritten überlappt und benötigt keinen zusätzlichen Taktzyklus. Wie vorgesehen, benötigen JSR und RET insgesamt 12 Taktzyklen; würde JSR den inkrementierten Programmzähler (PC) auf den Stack legen, würden Aufruf und Rückkehr 13 Taktzyklen benötigen. Für eine indirekte Verzweigung wird die Adresse -1 aus einer Tabelle geladen, auf den Stack gelegt und anschließend RTS aufgerufen.
  • Der SBC-Befehl (Subtraktion des Speichers vom Akkumulator mit Übertrag) verwendet einen invertierten Übertrag als Übertrag. Ein Null-Übertragsflag signalisiert einen Übertrag aus der vorherigen Subtraktion. Ist kein Übertrag erwünscht, muss das Übertragsbit vor dem SBC-Befehl gesetzt werden. Dadurch kann die Subtraktionslogik der ALU die Additionslogik mit lediglich invertiertem zweiten Eingang wiederverwenden, was viele Gatter einspart.
  • Der Lesezugriff der CPU kann durch vorübergehendes Setzen des RDY-Pins auf LOW verzögert werden. Beim Schreibzugriff, der für einen BRK-Befehl bis zu drei aufeinanderfolgende Taktzyklen dauern kann, stoppt die CPU jedoch erst im nächsten Lesezyklus. [ 94 ] Diese Besonderheit wurde in den CMOS-Derivaten sowie im 6510 und seinen Varianten behoben.

Siehe auch

Anmerkungen

  1. Ein Beispiel für ein solches Design waren die Atari 8-Bit-Computer , die DMA zur gemeinsamen Speichernutzung zwischen dem 6502- Prozessor und dem ANTIC-Grafikchip verwendeten. Dies wurde mit einem einzelnen Flipflop realisiert, das später in kundenspezifische Sally- Versionen des 6502-Prozessors, die in diesen Geräten zum Einsatz kamen, integriert wurde. Das Flipflop ermöglichte den Einsatz zweier 74LS244-Bustreiber, die den Adressbus des 6502-Prozessors bei Bedarf für DMA isolieren konnten. [ 29 ]
  2. Da der ursprüngliche Code des Prozessors zwar noch funktionierte, aber keine korrekte ROR-Anweisung ausführte, hielt sich hartnäckig der Mythos, der ursprüngliche 6502 habe einen Fehler in seiner ROR-Anweisung gehabt. [ 33 ] [ 34 ] [ 35 ]
  3. ^ Der Unterschied zwischen den Teilen besteht im Taktfrequenzteilerverhältnis und einer Nachschlagetabelle für Audio-Abtastraten.
  4. ^ Dieser Zeitraum wurde durch den φ2-low-Taktausgangspin angezeigt.
  5. ^ Im Gegensatz zum X-Register im 6800, in dem eine Basisadresse direkt gespeichert wurde und zu der ein unmittelbarer Offset addiert werden konnte.
  6. Genauer gesagt teilen diese Systeme intern einen NTSC- Farbburst-Quarz und erhalten so 315 / 176  MHz = 1,78977 27  MHz .
  7. Eric Schlaepfer, der auf monster6502.com eine transistorisierte Nachbildung des 6502 gebaut hat, argumentiert in seinem YouTube-Video „The 6502 Rotate Right Myth“ (von TubeTimeUS), dass es laut Chuck Peddle und Bill Mensch keinen ROR-Fehler gab. Die entsprechende Anweisung sei gar nicht erst implementiert worden, da sie als unnötig erachtet wurde. Schlaepfer vergleicht anschließend Screenshots früherer und späterer Revisionen des 6502 und beweist damit, dass die ROR-Anweisung weder in der Befehlsdekodierung, der Verdrahtung noch in der Ausführungskomponente des Chips vorhanden war.

Referenzen

Zitate

  1. ^ „Der MOS 6502 und der beste Layout-Typ der Welt“ . swtch.com. 03.01.2011. Archiviert vom Original am 08.09.2014 . Abgerufen am 09.08.2014 .
  2. ^ „Monster6502 – Eine vollständige, funktionsfähige Nachbildung des klassischen MOS 6502-Mikroprozessors mit diskreten Transistoren (d. h. nicht alle auf einem einzigen Chip integriert)“ . monster6502.com. 2017. Archiviert vom Original am 12.05.2017 . Abgerufen am 01.05.2017 .
  3. ^ a b William Mensch (9. Oktober 1995). „Interview mit William Mensch“ (Webvideo). Interview geführt von Rob Walker. Atherton, Kalifornien: Silicon Genesis Project , Stanford University Libraries. Archiviert vom Original am 4. März 2016. Abgerufen am 22. Dezember 2023 .William Mensch und der Moderator sprechen den 6502-Mikroprozessor beide als „sixty-five-oh-two“ aus .
  4. ^ „Western Design Center (WDC) – Heimat der 65xx-Mikroprozessortechnologie“ . www.westerndesigncenter.com . Archiviert vom Original am 8. April 2019. Abgerufen am 8. April 2019 .
  5. ^ Donohue, James F. (27. Oktober 1988). „Die ersten zwei Jahrzehnte des Mikroprozessors: Wie es war“. EDN . 33 (22A). Cahners Publishing: 18–32 . ISSN 0012-7515 . 
  6. ^ Interview 2014 , 52:30.
  7. ^ Interview 2014 , 54:45 .
  8. ^ Bagnall (2010), S. 11. Peddles neues Angebot kam den 6800 Bauträgern gerade recht. „Sie wollten nicht nach Austin, Texas“, erklärt Mensch.
  9. ^ Interview 2014 , 54:40 .
  10. ^ Interview 2014 , 55:50 .
  11. ^ „Motorola verklagt MOS Technology“ (PDF) . Microcomputer Digest . 2 (6). Cupertino, CA: Microcomputer Associates: 11. Dezember 1975. Archiviert vom Original (PDF) am 4. Juli 2009.
  12. ^ Waller, Larry (13. November 1975). „Motorola versucht, den Abwärtstrend zu stoppen“. Electronics . 48 (23). New York: McGraw-Hill: 96–98 .Zusammenfassung: Der Geschäftsbereich Halbleiterprodukte wurde in integrierte Schaltungen und diskrete Bauelemente aufgeteilt. Die Verluste im Halbleiterbereich beliefen sich in den letzten vier Quartalen auf über 30 Millionen US-Dollar. Der Vertrieb verlor an Kundenorientierung; „Verzögerungen bei der Reaktion auf Preissenkungen führten dazu, dass Kunden woanders kauften.“ Technische Probleme beeinträchtigten die IC-Produktion. Die Schwierigkeiten lagen „nicht im Design, sondern in der Chip- und Die-Ausbeute“. Die Probleme wurden gelöst. Der Mikroprozessor MC6800 kam im November 1974 auf den Markt.
  13. ^ Interview 2014 , 56:30 .
  14. ^ Interview 2014 , 55:00.
  15. ^ Bagnall (2010), S. 13.
  16. ^ MOS Technology (14. November 1974). „Die ersten wissenschaftlichen Taschenrechner-Arrays auf einem einzigen Chip“ . Electronics . 47 (23). McGraw-Hill: 90–91 . Archiviert vom Original am 10. Januar 2014. Abgerufen am 4. Juni 2012 .
  17. ^ Interview 2014 , 57:00.
  18. ^ Interview 2014 , 58:30 .
  19. ^ Cass, Stephen (16. September 2021). „Fragen und Antworten mit dem Mitentwickler des 6502-Prozessors“ . IEEE Spectrum . Archiviert vom Original am 20. September 2021. Abgerufen am 20. September 2021 .
  20. ^ Ho, Joshua (9. Oktober 2014). „Einführung in die Halbleiterphysik, -technologie und -industrie“ . Anandtech . Archiviert vom Original am 24. Februar 2020. Abgerufen am 24. Februar 2020 .
  21. ^ Motorola 6800 Oral History (2008), S. 10.
  22. ^ a b c Cushman 1975 , S. 40.
  23. ^ „8080A Mikroprozessor – DIP 40 Gehäuse“ . CPU World . Archiviert vom Original am 15.09.2020 . Abgerufen am 24.02.2020 .
  24. ^ a b Cushman 1975 , S. 38.
  25. ^ a b „Moore's Law Milestones“ . IEEE . 30. April 2015. Archiviert vom Original am 24. Februar 2020. Abgerufen am 24. Februar 2020 .
  26. ^ Bagnall (2010), S. 19: „Paivinen versprach Peddle, dass er den n-Kanal-Prozess fertigstellen würde. Er hat Wort gehalten.“
  27. ^ a b c Cushman 1975 , S. 36.
  28. ^ a b c Cushman 1975 , S. 41.
  29. ^ Purcaru, John (2014). Spiele vs. Hardware. Die Geschichte der PC-Videospiele: Die 80er Jahre . S. 317.
  30. ^ Interview 2014 , 1:01:00.
  31. ^ Interview 2014 , 1:02:00.
  32. ^ a b Datei:MCS650x Instruction Set.jpg
  33. ^ „Messung des ROR-Bugs in der frühen MOS 6502“ . pagetable.com . Archiviert vom Original am 21.03.2023 . Abgerufen am 25.02.2023 .
  34. ^ „Wie testet man eine Keramik-6502 auf den ROR-Bug? | Applefritter“ . Archiviert vom Original am 25.02.2023 . Abgerufen am 25.02.2023 .
  35. ^ „Der Mythos der Rechtsdrehung beim 6502“ . YouTube . 21. Februar 2023. Archiviert vom Original am 25. Februar 2023. Abgerufen am 25. Februar 2023 .
  36. ^ „Mikroprozessoren mit 4, 8 und 16 Bit erhältlich“. Electronics . 48 (15). New York: McGraw-Hill: 118. 24. Juli 1975.Der Artikel behandelt die Modelle 6501 und 6502 sowie die 28-poligen Versionen, die nur 4 KB Speicher adressieren konnten. Er behandelte auch zukünftige Geräte wie beispielsweise „ein Design, das Peddle als Pseudo-16 bezeichnet“.
  37. ^ Sugarman, Robert (25. August 1975). „Braucht das Land einen guten 20-Dollar -Mikroprozessor?“ (PDF) . EE Times . Manhasset, New York: CMP Publications: 25. Archiviert vom Original (PDF) am 3. Februar 2007. Abgerufen am 5. Februar 2008 .
  38. ^ Fylstra, Daniel (November 1975). „Sohn von Motorola (oder der 20-Dollar -CPU-Chip)“. Byte . 1 (3). Peterborough, NH: Green Publishing: 56–62 .Vergleich der Mikroprozessoren 6502 und 6800. Der Autor besuchte MOS Technology im August 1975.
  39. ^ „Mikroprozessor der 3. Generation“ (PDF) . Microcomputer Digest . 2 (2). Cupertino, CA: Microcomputer Associates : 1–3 . August 1975. Archiviert vom Original (PDF) am 4. Juli 2009. Abgerufen am 27. November 2009 .
  40. ^ „Der MOS 6501 Mikroprozessor schlägt sie alle“. Electronics . 48 (16). New York: McGraw-Hill: 60–61 . 7. August 1975.
  41. ^ „MOS 6502, der zweite einer kostengünstigen und leistungsstarken Mikroprozessorfamilie“ . Computer . 8 (9). IEEE Computer Society: 38–39 . September 1975. Bibcode : 1975Compr...8i..38 . doi : 10.1109/CM.1975.219074 . Archiviert vom Original am 24.02.2021 . Abgerufen am 04.06.2012 .
  42. ^ Bagnall (2010), S. 33–35.
  43. ^ Signetics (30. Oktober 1975). „Der benutzerfreundlichste Mikroprozessor“ . Electronics . 48 (22). McGraw-Hill: 114–115 . Archiviert vom Original am 20. November 2015. Abgerufen am 20. November 2015 .
  44. ^ Motorola (30. Oktober 1975). „All dies und ein separater Mikroprozessor für 69 Dollar “ . Electronics . 48 (22). McGraw-Hill: 11. Archiviert vom Original am 15. Dezember 2011. Abgerufen am 8. August 2010 .Der Stückpreis für den MC6800 wurde von 175 $ auf 69 $ gesenkt . Der vorherige Preis für 50 bis 99 Stück betrug 125 $ .
  45. ^ Waller, Larry (13. November 1975). „Kurzmeldungen: Motorola versucht, den Mikroprozessor-Konkurrenten zu stoppen“. Electronics . 48 (23). New York: McGraw-Hill: 38.„Motorola kündigte letzte Woche an, eine einstweilige Verfügung zu beantragen, um MOS Technology Inc. aus Norristown, Pennsylvania, die Herstellung und den Verkauf von Mikroprozessorprodukten, einschließlich des Modells MCS6500, zu untersagen.“ (Diese Ausgabe erschien am 7. November.)
  46. Motorola wurden die folgenden US-Patente für die 6800-Mikroprozessorfamilie erteilt: US-Patent 3,962,682 , US-Patent 3,968,478 , US - Patent 3,975,712 , US-Patent 3,979,730, US-Patent 3,979,732 ,US - Patent 3,987,418 , US- Patent 4,003,028 , US-Patent 4,004,281 , US -Patent 4,004,283 , US- Patent 4,006,457 ,,, US-Patent 4,020,472, US - Patent 4,030,079 , US-Patent 4,032,896 , US-Patent 4,037,204 . US-Patent 4,040,035 , US-Patent 4,069,510 , US-Patent 4,071,887 , US-Patent 4,086,627 , US-Patent 4,087,855 , US-Patent 4,090,236 , US-Patent 4,145,751 , US-Patent 4,218,740 , US-Patent 4,263,650 .
  47. ^ Bagnall (2010), S. 53–54. „Er [Mike Janes] hatte all seine Originalarbeiten vom 6800 und verbarg sie vor Motorola…“
  48. ^ „Motorola und MOS Technology einigen sich im Patentstreit“. Electronics . 49 (7). New York: McGraw-Hill: 39. 1. April 1975.MOS Technology Inc. aus Norristown, Pennsylvania, hat zugestimmt, ihren Mikroprozessor MCS6501 vom Markt zu nehmen und Motorola Inc. 200.000 US-Dollar zu zahlen . MOS Technology und acht ehemalige Motorola-Mitarbeiter haben gemäß Gerichtsbeschluss Dokumente zurückgegeben, die Motorola als vertraulich einstuft. Beide Unternehmen haben eine gegenseitige Lizenzvereinbarung bezüglich Patenten im Mikroprozessorbereich getroffen.
  49. ^ Bagnall (2010), S. 55-56
  50. ^ „Fusionen und Übernahmen“. Mini-Micro Systems . 9 (11). Cahners: 19. November 1976.„Commodore International kauft MOS Technology (Norristown, PA). Damit wird das sechs Jahre alte Halbleiterunternehmen vor dem drohenden Untergang bewahrt.“
  51. ^ MOS Microcomputers. „MDT Microcomputer Development Terminal“ . The Internet Archive . Abgerufen am 9. Januar 2026 .
  52. ^ a b Goodwins, Rupert (4. Dezember 2010). „Intels Opfer: Acht Möchtegern-Gigantenkiller“ . ZDNet . Abgerufen am 7. März 2012 .{{cite news}}CS1-Wartung: Veralteter Archivierungsdienst ( Link )
  53. ^ Reimer, Jeremy. „Marktanteile von Personalcomputern: 1975–2004“ . Archiviert vom Original am 6. Juni 2012. Abgerufen am 17. Juli 2009 .
  54. ^ „Wie viele Commodore 64-Computer wurden verkauft?“ . Archiviert vom Original am 06.03.2016 . Abgerufen am 01.02.2011 .
  55. ^ „Apple IIe Enhancement Kit – Peripheral – Computing History“ . www.computinghistory.org.uk . Archiviert vom Original am 8. August 2020. Abgerufen am 23. Oktober 2023 .
  56. ^ „4. CPU/ROM“ . www.monlynx.de . Archiviert vom Original am 20.09.2023 . Abgerufen am 23.10.2023 .
  57. ^ Corder, Mike (Frühjahr 1999). „Große Dinge in kleinen Paketen“ . Pioniere der picoJava-Technologie . Sun Microelectronics. Archiviert vom Original am 12.03.2006 . Abgerufen am 23.04.2012 . Der erste 6502 wurde in 8-µm-Technologie gefertigt, taktete mit einem Megahertz und hatte einen maximalen Speicher von 64 KB.
  58. ^ „Implementierung von Bus-Sharing/DMA auf einem 6502-System“ . Archiviert vom Original am 15.08.2020 . Abgerufen am 30.09.2020 .
  59. ^ "PROGRAMMIERMODELL MCS650X". PROGRAMMIERHANDBUCH VON MOS MICROCOMPUTERS . MOS TECHNOLOGY, INC. Januar 1976.
  60. ^ Anderson, JS (21.08.2012). Mikroprozessortechnologie . Routledge . S. 153. ISBN 9781136078057Die
  61. ^ „Status-Flags“ . NESdev Wiki . Archiviert vom Original am 11.06.2024 . Abgerufen am 11.06.2024 .
  62. ^ „8080A/8080A-1/8080A-2 8-Bit N-Kanal-Mikroprozessor“ (PDF) . Intel. Archiviert (PDF) vom Original am 15. November 2021. Abgerufen am 16. November 2021 .
  63. ^ a b c Parker, Neil. „Der 6502/65C02/65C816-Befehlssatz entschlüsselt“ . Neil Parkers Apple II-Seite . Archiviert vom Original am 16.07.2019 . Abgerufen am 16.07.2019 .
  64. ^ 6502 Befehlssatz archiviert am 08.05.2018 in der Wayback Machine .
  65. ^ NMOS 6502 Opcodes . Archiviert am 14.01.2016 in der Wayback Machine .
  66. ^ Breaking NES Book – 6502 Core (PDF) (B5 ed.). 24.06.2022. S.  61–62 . Archiviert (PDF) vom Original am 12.04.2024 . Abgerufen am 24.12.2023 . Das Eintreffen einer Interruptanforderung wird durch das Flag B signalisiert, dessen Ausgabe (B_OUT) den Prozessor zur Ausführung des BRK-Befehls veranlasst.
  67. ^ „6502 BRK und B Bit“ . VisualChips . Archiviert vom Original am 05.04.2021 . Abgerufen am 15.05.2021 .
  68. ^ "FLAGS" . ogamespec . Abgerufen am 15.05.2021 . B_OUT; INTERNER DATENBUS (DB)
  69. ^ a b "FAQ 400 800 XL XE: Was sind SALLY, ANTIC, CTIA/GTIA/FGTIA, POKEY und FREDDIE?" . Archiviert vom Original am 19. Juli 2020. Von Atari-Ingenieuren als SALLY bezeichnet, wird er in [Supportdokumenten] als "6502 (Modified)", "6502 Modified", "Custom 6502" oder "6502C" bezeichnet. […] SALLY 6502-Chips sind nie mit "6502C" gekennzeichnet, sondern – mit Ausnahme des UMC UM6502I – immer mit C014806. […] Andere mit "6502C" gekennzeichnete Chips […] sind NICHT die Atari "6502C", sondern [Standard 6502], die für 4 MHz zertifiziert sind.
  70. ^ „6502 (modifizierter) CPU-Mikroprozessor“. ATARI 1200 XL HEIMCOMPUTER-SERVICEHANDBUCH . ATARI. Februar 1983.
  71. ^ a b c d e f g 1982 MOS Technology Data Catalog (PDF erhalten von bitsavers.org)
  72. ^ „AtariAge: A2600-Klon, Pinbelegung des 6591-Chips“ . 3. August 2015. Archiviert vom Original am 5. August 2020. Abgerufen am 22. Juli 2019 .
  73. ^ „Hackaday: Der kleinste Atari 2600 aller Zeiten“ . 7. April 2012. Archiviert vom Original am 22. Juli 2019. Abgerufen am 22. Juli 2019 .
  74. ^ „Rockwell R6511Q“ . Archiviert vom Original am 15. September 2020. Abgerufen am 30. April 2020 .
  75. ^ „Rockwell R6500/11, R6500/12 und R6500/15 Ein-Chip-Mikrocomputer“ . 7. Juni 1987. Archiviert vom Original am 3. September 2023. Abgerufen am 30. April 2020 .
  76. ^ Randy M. Dumse. „Die R65F11 und F68K Single-Chip Forth Computer“. [1] [2] Archiviert am 2. Dezember 2014 in der Wayback Machine (1984).
  77. ^ Ed Schmauch. „Ein computergestütztes Korrosionsüberwachungssystem“ . 1986.
  78. ^ Lawrence P. Forsley. „Embedded systems: 1990 Rochester Forth Conference: June 12 – 16th, 1990 University of Rochester“ Archiviert 2015-03-25 bei der Wayback Machine . S. 51.
  79. ^ Rockwell. „RSC-Forth Benutzerhandbuch“. Archiviert am 07.12.2013 in der Wayback Machine . 1983.
  80. ^ „Rockwell R65F11 R65F12 Forth Based Microcomputers“ (PDF) . Juni 1987. Archiviert (PDF) vom Original am 4. August 2020. Abgerufen am 28. April 2020 .
  81. ^ Zaks, Rodnay. Programmierung des 6502 . P. 348.
  82. ^ "Arquivo.pt" (PDF) . Archiviert vom Original (PDF) am 15.05.2016 . Abgerufen am 26.10.2014 .
  83. ^ "rockwell :: dataBooks :: 1985 Rockwell Data Book" – via Internet Archive.
  84. ^ „Osteuropäischer Heimcomputer: Bulgarien“ . Ho-Chi-Minh-Stadt: Heimcomputermuseum . Archiviert vom Original am 1. Juli 2006. Abgerufen am 3. Oktober 2020 .
  85. ^ a b http://plus4world.powweb.com/hardware/MOS_75018501 Archiviert am 20.02.2020 im Internetarchiv Wayback Machine Hardware – MOS 7501/8501
  86. ^ https://ist.uwaterloo.ca/~schepers/MJK/7501.html Archiviert am 19.07.2021 im Internet Archive (Wayback Machine) CPU 7501 / 8501
  87. ^ Servicehandbuch C-128/C128D Computer , Commodore Business Machines, PN-314001-08, November 1987
  88. ^ "VL65NC02". IC-Datenblatt: 1988 VTI ASIC . S.  225– 238.
  89. ^ Moser, Carl W. (Januar 1979). „Add a Trap Vector for Unimplemented 6502 Opcodes“ (PDF) . Dr. Dobb's Journal of Computer Calisthenics and Orthodontia . Nr. 31. Menlo Park, Kalifornien. S. 32. Archiviert (PDF) vom Original am 11.06.2016 . Abgerufen am 07.01.2017 .
  90. ^ Harrod, Dennette A. (Oktober 1980). „Der 6502 erhält mikroprogrammierbare Befehle“ . BYTE . Band 5, Nr. 10. Peterborough, New Hampshire. S. 282. Abgerufen am 7. Januar 2017 .
  91. ^ Draco (19. Juni 1997). „65c02, 6502, 65816 ??? CPU verkauft sich, aber wer kauft sie...“ Archiviert vom Original am 2. Januar 2008.
  92. ^ Andrews, Mark (1984). „6“ . Atari Roots – Ein Leitfaden zur Atari-Assemblersprache . Datamost, Incorporated. ISBN 0-88190-171-7Archiviert vom Original am 24.04.2008 . Abgerufen am 14.06.2008 .
  93. ^ Ein 6502-Programmieridiom, das im ProDOS 8 Technical Reference Manual dokumentiert ist .
  94. ^ „1.4.1.2.8 RDY – Bereit (S. 37)“. Hardwarehandbuch der Serie 6500; 2. Auflage . MOS Technology, INC. Januar 1976.

Bibliographie

Weiterführende Literatur

Datenblätter und Handbücher
Bücher
Referenzkarten
Simulatoren, Emulatoren
Boards
FPGA