Bastelrechner: Apple II mit einem Arduino nachgebaut

Der Apple-II-Nachbau überrascht nicht nur durch seinen einfachen Hardwareaufbau, sondern auch seine clevere Implementierung, um die Limitierungen des Arduinos zu umgehen.

Artikel veröffentlicht am ,
Offener Apple II (CC SA 3.0)
Offener Apple II (CC SA 3.0) (Bild: Hellisp)

Damian Peckett hat einen Apple II mit Hilfe eines Arduino Uno nachgebaut - inklusive Videoausgabe, der Datenspeicherung per Kassettenrekorder, Tastaturanschluss und der Audioausgabe. Bemerkenswert ist dabei nicht nur, dass zum Anschluss der Periphere kaum zusätzliche Bauteile notwendig waren, sondern auch, dass es überhaupt umsetzbar war: Der Apple II hatte 4 KByte RAM, der Atmega328 des Arduino Uno hat lediglich 2 KByte, und den muss sich ein Apple-Programm auch noch mit dem Emulator teilen.

Stellenmarkt
  1. (Junior) Project Engineer (m/w/d)
    HxGN Safety & Infrastructure GmbH, Ismaning bei München
  2. Lehrkraft für besondere Aufgaben für Informatik (w/m/d)
    Universität Passau, Passau
Detailsuche

Der Ausgangspunkt für das Projekt war eine Emulation des im Apple II verbauten 6502-Mikroprozessors. Peckett vereinfachte die Emulation. So mussten die Unterschiede in den Ausführungszeiten der Opcodes nicht identisch zum Original sein ("cycle accurate"). Außerdem wird keine BCD-Arithmetik emuliert. Das ist möglich, da sie vom Apple-Basic nicht benutzt wird.

Die Videoausgabe erledigt nicht der große Mikrocontroller des Arduinos, sondern der kleinere Atmel16u2. Er dient normalerweise als Verbindungsglied zwischen der USB-Schnittstelle und dem Atmega328. Er lässt sich aber auch selbst programmieren. Dessen Rechenleistung reicht aus, um eine Grafikausgabe per VGA zu implementieren.

Der Kassettenrekorder, eine PS/2-Tastatur sowie der Lautsprecher konnten direkt an den Arduino angeschlossen werden. Lediglich vom Audioausgang des Kassettenrekorders zum Arduino waren ein zusätzlicher Widerstand und Kondensator notwendig.

Clevere Tricks gegen den RAM-Mangel

Golem Akademie
  1. OpenShift Installation & Administration
    9.-11. August 2021, online
  2. Terraform mit AWS
    14./15. September 2021, online
  3. Docker & Containers - From Zero to Hero
    5.-7. Oktober 2021, online
Weitere IT-Trainings

Peckett nutzte mehrere Tricks, um Apple-Programmen möglichst viel RAM zur Verfügung zu stellen. Dabei konnten Programmierer auch beim Original schon nicht auf die vollen 4 KByte zugreifen. Ein KByte wurde als Videospeicher benutzt. Ein weiterer Teil des Speichers wurde für systeminterne Daten verwendet.

Da die Videoausgabe über den zweiten, kleineren Mikrocontroller läuft, muss von den 2 KByte des großen Mikrocontrollers kein Videospeicher abgezweigt werden. Vorteilhaft für den Nachbau ist auch die Größe des Flash-Speichers des Atmel-Mikrocontrollers. In dessen 32 KByte passt nicht nur das 16 KByte große Original-ROM des Apple II, sondern auch der komplette Emulator. Durch den vergleichsweise großen Flash-Speicher konnte der Emulator RAM-sparend implementiert werden. Dadurch verbleiben effektiv 1,5 KByte RAM für Anwendungen beziehungsweise 1 KByte für Apple-Basic-Programme.

Dass sein Nachbau funktioniert, zeigt Damian Peckett mit Hilfe eines Apple-Basic-Programms, das ein Mandelbrot-Fraktal generiert. Dabei zeigt sich aber auch, dass die Emulation relativ langsam ist, das Programm benötigte mehrere Minuten. Peckett selbst schätzt, dass sein Nachbau circa fünf- bis achtmal langsamer ist als das Original. Er geht jedoch davon aus, dass es noch Optimierungsmöglichkeiten gibt.

Der vollständige Quellcode steht auf Github zur Verfügung.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Aktuell auf der Startseite von Golem.de
Unwetter
Wie viel Hochwasser verträgt ein Elektroauto?

Deutsche Hersteller machen sehr unterschiedliche Angaben über die Wassertauglichkeit von Elektroautos. Und können Teslas wirklich schwimmen?
Ein Bericht von Friedhelm Greis

Unwetter: Wie viel Hochwasser verträgt ein Elektroauto?
Artikel
  1. Open Source Messenger: Skype-Mitbegründer finanziert Matrix-Chatsystem
    Open Source Messenger
    Skype-Mitbegründer finanziert Matrix-Chatsystem

    Ähnlich wie einst Skype soll auch Matrix Peer-to-Peer-Technik nutzen. Dafür gibt es nun insgesamt 30 Millionen US-Dollar für das Matrix-Team.

  2. Sexismus: Mitarbeiter von Blizzard wenden sich gegen Management
    Sexismus
    Mitarbeiter von Blizzard wenden sich gegen Management

    Der Konflikt bei Activision Blizzard eskaliert, die Arbeit an World of Warcraft soll weitgehend eingestellt sein.

  3. Full Self-Driving: Tesla verwechselt Mond mit Ampel
    Full Self-Driving
    Tesla verwechselt Mond mit Ampel

    Teslas mit Full Self-Driving haben bei der Ampelerkennung Schwierigkeiten. Ein tief stehender Mond sorgte für einen kuriosen Fehler.

Anonymer Nutzer 12. Apr 2015

Das war ja auch nicht Ziel des Projekts; die technische Umsetzung mit eigentlich...

k.Mitnick 09. Apr 2015

Dass das Interesse in »heutigen Generation« verschwunden sei, kann ich nicht bestätigen...



Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Schnäppchen • Crucial Ballistix 16GB Kit 3200MHz 66,66€ • PCGH-Gaming-PCs stark reduziert (u. a. PC mit RTX 3060 & Ryzen 5 5600X 1.400€) • Samsung 27" Curved FHD 240Hz 239,90€ • OnePlus Nord CE 5G 128GB 299,49€ • Microsoft Flight Simulator Xbox Series X 69,99€ • 3 für 2 Spiele bei MM [Werbung]
    •  /