MOS 6502
Der Computerchip MOS Technology MCS6502 ist ein 8-Bit-Mikroprozessor von MOS Technology, Inc.,[1] der 1975 auf den Markt kam. Wegen seines einfachen Aufbaus und vor allem seines im Vergleich zu den damals etablierten Intel- und Motorola-Prozessoren sehr niedrigen Preises bei vergleichbarer Leistungsfähigkeit wurde er in vielen Heimcomputern (zum Beispiel dem Commodore PET 2001 und dessen Nachfolger VC 20, dem Atari 800, Apple I, Apple II und BBC Micro), zahlreichen Schachcomputern (zum Beispiel dem Mephisto Polgar mit 5 oder 10 MHz), im weltweit ersten Skatcomputer Skat Champion, vielen Peripheriegeräten und zahlreichen Einplatinencomputern für Steuerungs- und Entwicklungszwecke eingesetzt. Der Prozessor wurde unter der Leitung von Chuck Peddle entwickelt.[2]
Auch andere Mitglieder dieser Prozessorfamilie waren sehr erfolgreich, so der 6510, der Prozessor des Commodore 64, und der 6507 in den Atari-Spielkonsolen. Der Hauptkonkurrent von MOS Technology war damals Zilog, dessen Z80 zum Beispiel in vielen CP/M-Rechnern sowie in den Heimcomputern von Sinclair und Amstrad/Schneider zu finden war.
Tech-Facts:
- Technologie: NMOS, HMOS, CMOS
- Anzahl der Transistoren (NMOS-Version): ca. 3510
- Taktfrequenz: traditionell 20 kHz bis 4 MHz; CMOS-Version 0 bis 14 MHz
- Taktzyklen je Befehl: 2 bis 7
- Adressraum: 64 KByte, dabei kein separater I/O-Adressraum (wie zum Beispiel beim Intel 8080), d. h. der gesamte I/O wird per Memory Mapped I/O realisiert.
- Adressbusbreite: 16 Bit
- Datenbusbreite: 8 Bit
- Interrupts: ein NMI, der durch eine fallende Flanke an seinem Pin ausgelöst wird; ein IRQ, der durch einen niedrigen Pegel an seinem Pin ausgelöst wird. Ein Softwareinterrupt über den BRK-Befehl. Der Reset des 6502 ist schaltungstechnisch ebenfalls als Interrupt realisiert. Die Interrupt-Vektoren stehen an festen Adressen am Ende des Adressraums (FFFA16 bis FFFF16).
- Befehle: traditionell 56, CMOS-Version: 70
- Adressierungsarten: traditionell 13, CMOS-Version: 16
- Byte-Reihenfolge: Little Endian
- Register:
Akkumulator, 8 Bit
2 Index-Register (X und Y), 8 Bit; der Wert je eines der Register wird als Offset zu einer 16-Bit-Adresse addiert (Ausnahme: Addition zu einer 8-Bit-Zeropage-Adresse), die je nach Adressierungsart im Maschinenbefehl selbst oder in der Zeropage steht.
Stapelzeiger, 8 Bit; der Stapelzeiger wird als Low-Byte zusammen mit einem konstanten High-Byte (0116) verwendet, um eine 16-Bit-Adresse zu erzeugen, wenn ein Befehl auf den Stapel zugreift. Somit umfasst der Stapel 256 Bytes im Adressbereich von 010016 bis 01FF16 (die Page eins).
Prozessorstatus-Register, 8 Bit (davon 1 Bit reserviert); Flag-Bit 7 bis Flag-Bit 0: Negative (N), Overflow (V), reserviert, Break (B), Decimal (D), Interrupt Disable (I), Zero (Z), Carry (C).
Programmzähler, 16 Bit - Die Zeropage (Adressbereich 00xy16) kann durch spezielle, schnellere Adressierungsarten angesprochen werden. Durch ihre Verwendung bei indizierter Adressierung kann sie auch als Registerbank oder Register-File angesehen werden.
Der Zustand des Break-Flags kann nur auf dem Stapel nach einem BRK-Befehl ausgelesen werden. Es hat keine eigenen Setz- und Testbefehle und wird auch von den Befehlen PLP, RTI und PHP nicht berücksichtigt, wobei PHP das Break-Flag auf dem Stapel als Teil des Prozessorstatus immer mit dem Wert eins angibt. Die CPU setzt bei einem erkannten NMI oder IRQ (sofern der IRQ über das Interrupt-Flag zugelassen ist) das Break-Flag auf null. Hierdurch wird als nächster Befehl ein BRK-Befehl ausgeführt (wenn nicht gerade schon ein BRK-Befehl ausgeführt wird) und somit nicht der gemäß dem Programmzähler nächste Befehl. Ein BRK-Befehl, der aufgrund eines IRQ oder Opcodes ausgeführt wird, verwendet denselben Interruptvektor. Anhand des Break-Flags lassen sich in diesem Fall dennoch die beiden Ursachen im Interrupt-Handler unterscheiden. Am Ende des BRK-Befehls hat das Break-Flag stets den Wert eins.
Fun-Facts:
- Der fiktive Roboter Bender aus der Zeichentrickserie Futurama hat einen 6502-Prozessor als CPU (Staffel 2, Episode 4 – Die Party mit Slurm McKenzie).
- In dem Spielfilm Terminator (1984) wird aus Sicht des Terminators ein 6502-Assembler-Programm für den Apple II angezeigt. Zudem ist eine Ausgabe des Prüfsummen-Programms Key Perfect (in der Version 4.0), das im Nibble Magazine veröffentlicht wurde, zu sehen.
- WDC lässt den W65C02S weiterhin produzieren und er kann käuflich erworben werden (Stand 2021).
- Für den MCS6502-Mikroprozessor wurde eine Simulation seiner Transistor-Ebene in Software bzw. in Hardware auf einer etwa 30,5 cm × 38 cm großen Platine (The MOnSter 6502)erstellt.