MOS 6502
Der MOS 6502 ist ein Mikroprozessor, der 1975 auf den Markt kam und aus etwa 3510 Transistoren[1] besteht. Aufgrund seiner hohen Leistungsfähigkeit und seines deutlich niedrigeren Preises im Vergleich zu Konkurrenzprozessoren von Intel und Motorola war der 6502 ein beliebter Prozessor für Heimcomputer. Der 6502 ist im Diskettenlaufwerk 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 lebte als Prozessorkern der Microcontroller Mitsubishi/Renesas (38000/740 Series) und VMC Scal von Micronas Intermetall (eingesetzt in Automotive- und Fernseh-Technik) weiter und wurde zudem lange Zeit in PC-Tastaturen als Controller verwendet.
Design[Bearbeiten | Quelltext bearbeiten]
Das Design des 6502 ist stark an das Design des Motorola 6800 angelehnt. 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 diese nicht so effizient arbeiten wie tatsächliche interne Register). Deswegen haben 6502-Programme einen anderen Stil: Für Datenmanipulationen, die sich über mehr als 256 Byte erstrecken, muss zusätzlicher Programmieraufwand für die Handhabung der Zeropage-Register betrieben werden, wenn 16-Bit-Operationen aus mehreren 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 des Z80, welche eine absolute Adresse darstellen, können die 8-Bit-Register des 6502 lediglich einen Array-Index (bzw. Register-Index in der Zeropage) darstellen. Das Fehlen von 16-Bit-Registern wurde mit komplexeren Adressierungsarten, basierend auf dem Zusammenspiel der Index-Register 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.
Der Befehlssatz des 6502 kann – zumindest im Vergleich zur direkten Konkurrenz Intel 8080 – als „fast orthogonal“ angesehen werden.
Zwei-Phasen-Taktung[Bearbeiten | Quelltext bearbeiten]
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. Zum genaueren Timing siehe auch [2][3].
Phi1 (Phi2 low) - Der Adressbus wird gesetzt, SYNC wird gesetzt, RW wird gesetzt.
Phi1 → Phi2 (steigende Taktflanke) - Adressbus/SYNC/RW sind gültig. Intern: ALU-Ergebnisse werden in Zwischenregistern (Pipeline-Latches) gespeichert.
Phi2 (high) - Der Datenbus wird gesetzt (bei Schreibzyklus).
Phi2 → Phi1 (fallende Taktflanke) - Der Datenbus wird gelesen (bei Lesezugriff). Intern: Das Instruktionsregister (IR) wird geladen, Inhalte von Zwischenregistern werden in Architekturregister (A, X, Y, S, PC) übertragen, Instruktionsdekodierung läuft ab, der Timing-Zustand (t2-t5) schreitet voran, und RDY/IRQ/NMI greifen.
Der 6502 in der 1541[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]
- 2002
- von Yamaha
- Ricoh 2A03 (NTSC) bzw. 2A07 (PAL)[2]
- eingesetzt im NES
- Standard-6502-Core, aber ohne BCD-Arithmetik
- 40-polig mit anderer Pin-Belegung
- 4 Channels: interne Channels lassen sich über memory-mapped Register als semi-analoge Sound-Ausgänge verwenden.
- DMC - Delta Modulation Channel um DMA-basiert Sound-Samples direkt aus dem Speicher abzuspielen.
- interner Counter/Timer
- 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, 8 µm
- wurde noch komplett auf Papier entwickelt und die Masken zur Chip-Herstellung weitgehend von Hand erstellt[3]
- 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)
- CPUs hergestellt vor Mai 1976 haben keinen ROR-Befehl [4]
- 6502A
- 6502B
- 3-MHz-Taktung
- 6502C
- Gleiche Bezeichnung für zwei Varianten:
- 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
- eingesetzt u.a. in der Turbo Master CPU-Turbokarte für den C64
- 65SC02
- eingeschränkter Befehlssatz (keine Bit-Befehle) gegenüber der 65C02-Variante von GTE
- eingesetzt im Watara Supervision[7] und The Final Chesscard
- 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
- 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.[11]
- 13-Bit-Adressbus (8 KByte)
- 6509(A)
- 20-Bit-Adressbus (1 MiB) durch internes Bankswitching (4-Bit Port-Register an Adressen $00 und $01)
- in A-Variante mit 2-MHz-Taktung
- eingesetzt in den Commodore-PET-II-Modellen (CBM 500, 600 und 700).
- 6511
- Microcontroller mit I/O-Ports, serieller Schnittstelle und RAM, von Rockwell
- 65F11 & 65F12 [12]
- 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
- 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
- 6502-Core
- CMOS
- I/O-Interfaces für Telekommunikationsanwendungen (Timer, Counter, Peripheral lines)
- 2 KiB ROM
- 64 Byte RAM
Weblinks[Bearbeiten | Quelltext bearbeiten]
| Wikipedia: MOS Technology 6502 |
| Wikipedia: MOS Technology 6502 |
| Wikipedia: WDC 65C02 |
| Wikipedia: CSG 65CE02 |
| Wikipedia: Ricoh 2A03 |
- MOS Technology MCS6500 Microprocessors Preliminary Datasheet (May 1976) auf archive.org

- MCS6500 Microcomputer Family Hardware Manual von MOS, 1976, auf archive.org

- Visual6502.org
mit Browser-basiertem Simulator des 6502 und Visualisierung der Schaltvorgänge
- Variante von Visual6502 mit Bedienelementen für IRQ/NMI/Reset etc.
- 6502.org
Hintergrundinformationen und Aktuelles zur 6502-Prozessorfamilie - easy6502
Ein interaktiver Kurs - py65
Ein in Python geschriebener 6502-Emulator mit Monitorprogramm. - Forum 6502.org: Overview of 6502-like cores, hard, soft, partial, overblown
Sammlung und Diskussion zu ICs mit 6502-ähnlichem Kern.
Fußnoten[Bearbeiten | Quelltext bearbeiten]
- ↑ Transistorzahl genaugenommen 3510 enhancement transistors and 1018 depletion pullup transistors, siehe [1]
- ↑ Ricoh 2A03 Technical Reference
- ↑ Thema: Damalige Fertigungsanlagen 6510? auf Forum64.de
- ↑ Datenblätter von MOS Technology für den 6502 Mikroprozessor mit und ohne ROR-Befehl
- ↑ Diskussion im Forum auf atariage.com: What is the real core of Atari's 6502C CPU (Datasheet references)
- ↑ Diskussion im Forum auf atariage.com: What is the real core of Atari's 6502C CPU
- ↑ dt. Wikipedia: Watara Supervision
- ↑ 65CE02 Specification auf commodore.ca
- ↑ 65CE02 Opcodes
- ↑ 65CE02 Die
- ↑ Diskussion im Forum auf atariage.com: How do I read a Pinout with Memory info? (6502 - 6507 pinouts)
- ↑ Rockwell Forth Kernel Microntroller (65F11, 65F12)
- ↑ CMD G65SC150 CMOS Communication Terminal Unit (Datenblatt, PDF)
- ↑ CMD G65SC151 CMOS Communication Terminal Unit (Datenblatt, PDF)