AVR 6502 Emulator

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

6502-Emulation auf Atmel AVR-Controllern

Diese Seite faßt Diskussionen aus dem Thread "KIM-1 in AVR?" ([1]) zusammen und soll als Sammelstelle für weitere Informationen und zur Koordination der Entwicklung einer 6502-Emulationsbibliothek für AVR-Controller dienen.

Warum?

In "alten" Homecomputer-Zeiten war der MOS 6502 und seine Derivate - neben dem Z80 von Zilog - die CPU der Wahl für (damals) schnelle, kostengünstige Systeme. Beispiele sind die Commodore-Systeme (C64, VC20, C128, PET, CBM), ATARI XL/XE und Apple II. Aber auch Spielekonsolen der 80er-Jahre verwenden vielmals einen 6502 - Atari 2600 und Nintendo NES sind wohl die bekanntesten Beispiele

Mit einer Taktfrequenz von 1 MHz ist die verfügbare Rechenleistung eher gering. Daraus entstand der Gedanke, ein 8-Bit-System der 80er auf einem modernen, kostengünstigen 8-Bit-Controller in Software zu emulieren. Ein Projekt, das den intel 8080 (Vorgänger des Z80) emuliert und das damalige Standardbetriebssystem CP/M ausführen kann, ist in Ursprüngen hier zu finden und wird in diesem Thread weiterentwickelt (siehe auch die Projektseite).

Was mit einem 8080 möglich ist, sollte für den 6502 auch möglich sein! Das dürfte genug Herausforderung sein - die "Grabenkämpfe" der 80er-Jahre fanden meist zwischen 8080/Z80-Anhängern und 6502-Begeisterten statt...

Eine neue Idee?

Einen 6502 auf AVR zu emulieren ist keine neue Idee. Es existieren bereits einige Projekte, die mehr oder weniger erfolgreich einen 6502 emulieren:

NES-Emulator - Projekt von Studenten der Cornell University.

Apple II-Emulator, ebenfalls von Cornell.

Commodore VC20-Emulator (6502, VIC, Display, Tastatur) als AVR-Studio Assembler-Projekt.

ATMega based home computer - ATMega162 emuliert 6502 mit SCART Video Ausgang, PS2 Tastatur und SD Kartenslot.

AVR 65C02 Emulator - ATMega1284 emuliert 65C02 mit on Chip RAM und ROM, erlaubt direkten Zugriff der emulierten CPU auf die AVR IO-Register.

Modular 6502 SBC with emulated CPU - ATMega16 emuliert wahlweise 6502 oder 65C02 mit variabler IO-Konfiguration.

Projekt: 6502-Emulations-Bibliothek

Ein Ziel des Projektes soll es sein, eine universelle 6502-Emulations-Bibliothek für AVR-Mikrocontroller zu erstellen, die dann Basis für weitere Entwicklungen (Systememulatoren für KIM-1, Commodore 1541 usw.) sein soll.

Eine optionale Anforderung an die Emulation ist Zyklenexaktheit der Software. Dies wird z.B. für die Verwendung von Floppy-Speedern für die Emulation des Commodore 1541-Diskettenlaufwerks benötigt.

Wenn Zyklenexaktheit erreicht werden kann, ist die nächste Frage, ob die Software-6502-Emulation auch (mit Hilfe einer Adapterplatine) als pinkompatibler Ersatz für einen "echten" 6502/6510 dienen kann. Dies ist aktuell unter Diskussion.

KIM 1-Emulation

Der KIM-1 war eine Entwicklungsplattform für den 6502. Die Idee, den KIM-1 als Software-Emulation im AVR zu realisieren, war der Startpunkt für dieses Projekt. Der Fortschritt des Projekts wird hier beschrieben.

Link nicht mehr vorhanden.

Commodore 1541-Emulation

Bisherige Emulationsprojekte basierten auf einer Reimplementierung des IEC-Bus-Protokolls sowie der Funktionalität der 1541-Firmware (DOS), bekanntestes Projekt hier ist sd2iec.

Eine komplette Hardware-Reimplementierung der 1541-Elektronik auf FPGA findet sich bei 1541 "Ultimate"und das Labor.

Ideen zur 1541-Realisierung auf AVR mit 6502-Emulator finden sich hier.

Alternativen?

Es gibt jede Menge 6502-Implementierungen für FPGAs (in VHDL und Verilog):

Peter Wendrichs C64 für FPGAs

VC20 im FPGA bei fpgaarcade

Apple II-Emulator auf Altera DE1 Evaluationsboard


Projekte bei Opencores:

6502 in VHDL

T65 CPU (VHDL)

Zyklengenauer 6502 (VHDL)

6502 in VHDL für Lattice FPGAs

Software-Emulation des 6502:

lib6502 (C) von Ian Piumarta

6502-Emulation in 68k-Assembler

6502-Emulation in Javascript

VC-20 Emulation in Javascript

Software-Simulation des 6502:

Simulation des 6502 auf Transistorebene