MOS 6502

Aus C64-Wiki
(Weitergeleitet von 6502)
Wechseln zu: Navigation, Suche

Der MOS 6502 ist ein Mikroprozessor, der 1975 auf den Markt kam. Aufgrund seiner hohen Leistungsfähigkeit und seines deutlich niedrigeren Preises zu Konkurrenzprozessoren von Intel und Motorola war der 6502 ein beliebter Prozessor für Heimcomputer. Der 6502 ist in der 1541 verbaut, außerdem findet die Variante MOS 6510 im C64 Verwendung. Der Hauptkonkurrent des MOS 6502 war der Zilog Z80, welcher in bestimmten Modellen ebenfalls von Commodore verwendet wurde (hauptsächlich, um CP/M-Kompatibilität zu gewährleisten). Entwickelt wurde der 6502 unter der Leitung von Chuck Peddle.

Der 6502 lebt heute als Prozessorkern der Microcontroller Mitsubishi/Renesas (38000/740 Series) und VMC Scal von Micronas Intermetall (eingesetzt in Automotive- und Fernseh-Technik) weiter und wird zudem in vielen PC-Tastaturen als Controller verwendet.

Design[Bearbeiten]

Das Design des 6502 ist stark an das Design des Motorola 6800 angelegt. Der Befehlssatz ist ähnlich, aber statt eines 16-Bit-Index-Registers werden zwei 8-Bit-Index-Register verwendet, deren Wert auf eine im Speicher (auch im Programmcode) vorgegebene 16-Bit-Adresse addiert wird. Besonders die 256 Byte umfassende Zeropage, deren Zugriff besonders rasch abläuft, macht die freie 16-Bit-Adressierung erst möglich, was somit quasi einem Satz von 128 16-Bit-Registern entspricht (auch wenn nicht so effizient wie tatsächlich interne Register). Deswegen haben 6502-Programme einen anderen Stil: Für Datenmanipulationen, die sich über mehr als 256 Byte erstrecken, muss ein zusätzlicher Programmieraufwand für die Handhabung der Zeropage-Register betrieben werden, wo 16-Bit-Operationen aus mehrere 8-Bit-Manipulationen zusammengesetzt werden. Hingegen geht die Manipulation von 8-Bit-Werten auf einem 8-Bit-Mikroprozessor erheblich schneller vonstatten.
Anders als die 16-Bit-Register des 6800, später des 6809 oder etwa Z80, welche eine absolute Adresse darstellen, stellen die 8-Bit-Register des 6502 lediglich einen Array-Index (bzw. Register-Index in der Zeropage) dar. Das Fehlen von 16-Bit-Registern wurde mit komplexeren Adressierungsarten, basierend auf Index-Register zusammen mit der Zeropage kompensiert. In manchen Fällen kann ein einziger 8-Bit-Increment- oder Decrement-Befehl sowohl das Zählen der Adressen als auch das Setzen der Bedingung für den Schleifenabbruch bei index=0 leisten, was zu kompakten und schnellen Schleifen führt.

Technisch war der 6502 durchaus innovativ: Er war der erste Mikroprozessor mit rudimentärer (zweistufiger) Pipeline-Architektur, d.h. wenn nur noch interne Schaltschritte für einen Befehl notwendig waren, konnte der nächste Befehl bereits gleichzeitig aus dem Speicher geholt werden. Eine echte Pipeline mit Überlappung der Lese- und Schreibzugriffe mehrerer Befehle gab es aber noch nicht. Außerdem kann der Befehlssatz des 6502 – zumindest im Vergleich zur direkten Konkurrenz Intel 8080 – als „fast orthogonal“ angesehen werden.

Der 6502 in der 1541[Bearbeiten]

Über den SO-Pin des 6502, der es erlaubt, direkt das Overflow-Flag des Prozessors zu beeinflussen, kann die 1541 mit besonders geringer Latenzzeit auf Daten vom Schreib-/Lesekopf reagieren (siehe $F4D4 im 1541-ROM). Der im C64 verbaute 6510 bietet diesen Pin nicht.

Varianten des 6502[Bearbeiten]

  • 2002
  • von Yamaha
  • 3800
  • Microcontrollerfamilie von Renesas Technology mit 740er Kern. Siehe 740
  • 6501
  • Gehäuse- und signalkompatibel (nicht softwarekompatibel) zum Motorola 6800 (nicht Motorola 68000)
  • musste nach einer Patentverletzungsklage seitens Motorola eingestellt werden
  • 6502
  • NMOS-Technologie
  • eingesetzt
    • in den Commodore-PET- und -CBM-Modellen PET 2001 bis CBM 8296 sowie im VC20
    • in Floppy-Laufwerken wie 1540 und 1541
    • im Apple II, im Apple II+, und im nicht erweiterten Apple IIe
    • im Ohio Scientific Superboard II
    • in diversen Single-Board-Systemen und Kits (KIM-1, AIM-65)
    • in einer Reihe anderer Heimcomputer (u.a. Oric-1/Atmos, VTech Laser 3000)
  • 6502A
  • 2-MHz-Taktung
  • eingesetzt
    • im Apple III
    • in BBC Micro Model A und B
    • in 8-Bit-Atari-Heimcomputern wie Atari 400, Atari 800 mit 1,79 MHz
  • 6502B
  • 3-MHz-Taktung
  • 6502C
Gleiche Bezeichnung für zwei Varianten:
  1. Standard-NMOS-Version für 4 MHz[1], z.B. gefertigt von MOS, Rockwell, Synertek
  2. Eine Custom-Version[2] nur für Atari ("Sally" genannt), eingesetzt in deren 8-Bit-Heimcomputern Atari 800XL, Atari 130 XE usw. mit 1,79-MHz-Taktung
    • extra Pin namens HALT
    • Taktung: 2 MHz
  • 65C02
  • CMOS-Technologie
  • zusätzliche Befehle und Adressierungsmodi
  • eingesetzt im
    • erweiterten Apple IIe und im Apple IIc bzw. VTech Laser 128
    • Atari Lynx mit 4-MHz-Taktung
  • R65C02, WDC65C02
  • erweiterte Variante eines 65C02 mit zusätzlichen Bit-Befehlen (RMB, SMB, BBR und BBS), z.B. von WDC, Rockwell
  • 65SC02
  • eingeschränkter Befehlssatz (keine Bit-Befehle) gegenüber der 65C02-Variante von GTE
  • eingesetzt im Watara Supervision[3]
  • entwickelt von der CSG (Commodore Semiconductor Group vormals MOS Technology)
  • extra Z-Index-Register (initial auf 0 gesetzt) mit entsprechenden Adressierungsarten
  • Base-Page-Register für eine verschiebliche Zeropage
  • optional verwendbarer 16-Bit Stapelzeiger
  • Adressierungsart relativ zum Stapelzeiger
  • zusätzliche 16-Bit-RMW-Befehle (Read-Modify-Write) wie Increment, Decrement, Shift, Rotate
  • 16-Bit Stapelbefehle
  • relative Sprünge und Unterprogrammaufrufe mit 16-Bit-Offset
  • NEG-Befehl (2er-Komplementberechnung)
  • Taktraten bis zu 10 MHz
  • eingesetzt im Commodore C65 (4510)
  • 6503, 6505, 6506
  • 12-Bit-Adressbus (4 KByte)
  • 6504, 6507
  • 13-Bit-Adressbus (8 KByte), eingesetzt z. B. in Commodore-Tastaturen (Amiga 1000) und in Floppy-Laufwerken (Atari 1050) und Druckern (z.B. MPS 802)
  • 6507
  • eingesetzt in der Atari 2600 Gaming Console mit 1,19-MHz-Taktung
  • 28-poliges DIL-Gehäuse: Im Vergleich zum Standard-6502 fehlen die Anschlüsse Vss (der 2.), φ1, A13 bis A15, SYNC, SO, IRQ, NMI, drei NC-Pins.[7]
  • 13-Bit-Adressbus (8 KByte)
  • 6508
  • eingesetzt im NES
  • 6509(A)
  • 6502 mit zusätzlichem 6-Bit-I/O-Port
  • Adressbus kann hochohmig geschaltet werden
  • kein SO-Pin
  • eingesetzt im C64 mit 985 kHz (PAL-Version) respektive 1022 kHz (NTSC-Version) Takt
  • 6511
  • Microcontroller mit I/O-Ports, serieller Schnittstelle und RAM, von Rockwell
  • 65F11 & 65F12 [8]
  • Variante des 6511 mit integriertem Forth-Interpreter (RSC-Forth, ein FIG-Forth-Abkömmling).
  • 65F12 hat ein 64-Pin-Gehäuse und damit 40 statt sonst 16 I/O-Pins.
  • 6512 bis 6517
  • Variante des entsprechenden 650x, aber ohne eingebauten Oszillator (d.h. externe Regulierung der Taktfrequenz möglich)
  • eingesetzt bei BBC Micro Model B+64/128
  • 6570, 6571
  • eingesetzt in Amiga-Tastaturen
  • 6280
  • entwickelt von NEC auf Basis der 65SC02
  • inklusive MMU (2 MiB adressierbar)
  • eingesetzt in der NEC PC Engine
  • 6702
  • eingesetzt nur im Plug-in-Board des Commodore SuperPET
  • 740
  • Microcontrollerfamilie von Renesas Technology (vormals Mitsubishi Electric)
  • basierend auf der 65C02
  • mehr als 100 Varianten
  • bis 60 KiB ROM/PROM/Flash on-chip
  • bis 2 KiB RAM on-chip
  • erweiterter Befehlssatz
  • Multiplikation
  • Division
  • Erweiterte Bitbefehle
  • Stop/Wait
  • neue Adressierungsarten
  • Transfer (Speicher-Speicher-Befehle)
  • Special Page
  • Bit-Relativ
  • bis 17 MHz
  • 7501
  • 6502 in HMOS-Technologie
  • eingesetzt im C16 und Plus/4
  • 8500
  • 6510 in CMOS-Technologie
  • 8502
  • 6510 umschaltbar auf 2 MHz
  • 7-Bit-I/O-Port
  • eingesetzt im C128
  • 65802 (65C802)
  • Variante des 65816, die pin-kompatibel zum 6502 ist, Adressraum daher wie dieser nur 64 KiB
  • zum direkten Austausch des 6502 in bereits bestehenden Schaltungen gedacht
  • bis zu 16 MHz
  • 65816 (65C816)
  • entwickelt von Western Design Center
  • eingesetzt u. a. im Apple IIgs, Nintendo SNES, den meisten Beschleunigungskarten für 6502-Rechner
  • 16-Bit-Register und ALU
  • 24-Bit-Adressbus (16 MiB)
  • bis zu 24 MHz
  • G65SC150 Microcontroller Familie[9][10]
  • 6502-Core
  • CMOS
  • I/O-Interfaces für Telekommunikationsanwendungen (Timer, Counter, Peripheral lines)
  • 2 KiB ROM
  • 64 Byte RAM

Weblinks[Bearbeiten]

WP-W11.png Wikipedia: MOS Technology 6502
WP-W11.png Wikipedia: MOS Technology 6502 Sprache:english
WP-W11.png Wikipedia: WDC 65C02 Sprache:english
WP-W11.png Wikipedia: CSG 65CE02 Sprache:english
WP-W11.png Wikipedia: CMOS
WP-W11.png Wikipedia: HMOS


Fußnoten

  1. Diskussion im Forum auf atariage.com: What is the real core of Atari's 6502C CPU (Datasheet references) Sprache:englisch
  2. Diskussion im Forum auf atariage.com: What is the real core of Atari's 6502C CPU Sprache:englisch
  3. dt. Wikipedia: Watara Supervision
  4. 65CE02 Specification auf commodore.ca Sprache:englisch
  5. 65CE02 Opcodes Sprache:englisch
  6. 65CE02 Die Sprache:englisch
  7. Diskussion im Forum auf atariage.com: How do I read a Pinout with Memory info? (6502 - 6507 pinouts) Sprache:englisch
  8. Rockwell Forth Kernel Microntroller (65F11, 65F12) Sprache:englisch
  9. CMD G65SC150 CMOS Communication Terminal Unit (Datenblatt, PDF) Sprache:englisch
  10. CMD G65SC151 CMOS Communication Terminal Unit (Datenblatt, PDF) Sprache:englisch