- Im Vergleich zu den ursprünglich 128 KB Speicher des Macintosh sind die 264 KB RAM des Raspberry Pi mehr als ausreichend. 1984 kostete der Macintosh ein Drittel eines Volkswagen Golf.
- Mit dem RP2040 werden monochromes VGA und USB/Tastatur angebunden, um den Mac zu emulieren und frühe Mac-Anwendungen auszuführen.
- Über die auf GitHub veröffentlichten Informationen kann jeder das System selbst nachbauen.
Was ist Pico-Mac?
- Der Raspberry Pi RP2040-Mikrocontroller (mit einem Pico-Board) treibt monochromes VGA-Video an, nimmt USB-Tastatur-/Mauseingaben entgegen und emuliert einen Macintosh-128K-Computer samt Massenspeicher.
- Die 2 MB Flash des RP2040 reichen als Disk-Image für OS und Software aus.
- Frühe Macintosh-Anwendungen wie MacDraw, MacWrite und MacPaint lassen sich ausführen.
Die Reise
Drei Regeln
- Es muss Spaß machen.
- Ich will kein 68K-Assembly lernen.
- Ich will nicht tief in die Interna der frühen Mac-Systemsoftware eintauchen.
Mac 128K
- Motorola-68000-CPU, 8 MHz.
- Grundlegende Hardware-Struktur wie Memory Map, Tastatur/Maus und Video-Scan.
- Mac 128K und Mac 512K unterscheiden sich nur im RAM.
- Der Mac Plus fügte SCSI und ein 800K-Diskettenlaufwerk hinzu.
Mac-Emulator: umac
- Mit dem Musashi-68K-Interpreter wurde ein Mac-128K-Emulator aufgebaut.
- Laden des ROM-Images, Zuweisung von RAM sowie Einrichtung von Debug-Meldungen und Logging.
- Adressdekodierung hinzugefügt, damit CPU-Lese-/Schreibzugriffe in RAM oder ROM geleitet werden.
- Nach Zugriff auf den IWM-Chip erschien das Symbol „Unknown Disc“.
- Mit einem SDL2-Frontend umhüllt, um Bildschirmaktualisierungen in Echtzeit zu überprüfen.
Hardware und RP2040
- 512x342x1-Video wird über VGA ausgegeben, außerdem wurde das TinyUSB-HID-Beispiel integriert.
- Über VGA-PIO-Aufgaben werden Videodaten gescannt und per DMA die Framebuffer-Daten ausgegeben.
- Durch mehrfache Neukonfiguration von DMA-Kanälen wurde eine stabile Videoausgabe erreicht.
Zurück zur Emulation
- Musashis große Jump-Table zur Opcode-Dekodierung wurde so geändert, dass sie im Flash gespeichert wird.
- Disassembler und Zählung der Ausführungszyklen wurden entfernt.
- Der RAM-Verbrauch wurde minimiert, sodass Build und Ausführung auf dem Pico möglich sind.
Leistung
- Der Pico wurde für mehr Leistung auf 250 MHz übertaktet.
- 200 häufig verwendete Opcode-Funktionen wurden im RAM gespeichert, wodurch 1,4 MIPS erreicht wurden.
Abschied
- Das MicroMac-Projekt war eine unterhaltsame und lehrreiche Erfahrung.
- Über den GitHub-Link kann man es selbst nachbauen.
Meinung von GN⁺
- Interessantes Projekt: MicroMac ist ein spannendes Projekt, das einen klassischen Macintosh auf günstiger Hardware emuliert. Die Kombination aus Software und Hardware vermittelt den Reiz von Engineering.
- Lernchance: Das Projekt bietet Einsteiger-Softwareentwicklern eine gute Gelegenheit, das Zusammenspiel von Hardware und Software zu verstehen. Besonders Konzepte wie Emulation, PIO und DMA lassen sich dabei lernen.
- Performance-Optimierung: Im Prozess der Leistungsoptimierung lassen sich verschiedene technische Herausforderungen und Lösungsansätze kennenlernen. Insbesondere wird die Bedeutung von Speicherverwaltung und Overclocking deutlich.
- Teilen mit der Community: Über GitHub bietet sich die Möglichkeit, das Projekt zu teilen und mit anderen zusammenzuarbeiten. Das zeigt die Vorteile der Open-Source-Community sehr gut.
- Zukünftiges Potenzial: Das Projekt könnte mit MCUs mit größerem RAM weiter ausgebaut werden. Dadurch eröffnet sich die Möglichkeit, komplexere Anwendungen auszuführen.
1 Kommentare
Hacker-News-Kommentare
Schwierige Suche nach einem VGA-Kabel: Kürzlich wurde für eine Kunstinstallation ein VGA-Kabel benötigt, aber niemand in der Umgebung hatte eines, sodass am Ende ein neues gekauft werden musste. Schade in einer Situation, in der so viele Kabel weggeworfen werden.
Amiga-Projekt: Es bestand der Wunsch, einen Amiga zu bauen, auf dem AmigaOS 3.2 läuft. Die Idee, per 3D-Druck ein kleines Gehäuse in der Originalform zu erstellen, ist niedlich. Auch wenn das Erlebnis ohne altes Diskettenlaufwerk etwas unvollständig ist, gefällt die Idee, eine dedizierte Maschine zu verwenden, statt einfach einen Emulator auf einem vorhandenen Desktop-PC laufen zu lassen. Der Low-Level-Ansatz, bei dem ein RP2040 die Rolle des 68k übernimmt, ist interessant.
Erster Eindruck vom Mac: Als der Mac erstmals erschien, wurde in einem Computergeschäft gearbeitet. Beim Anblick der abgerundeten Ecken des Bildschirms wurde seine Genialität bewundert.
Lob für das Projekt: Dieses Projekt ist sehr beeindruckend. Es hat Spaß gemacht, es zu lesen, und auch der Schreibstil gefällt. Bei Embedded-Projekten wird versucht, für schnelles Prototyping/Debugging Dual-Target-Builds einzusetzen, wobei der PC-Build häufiger genutzt wird. Mehr Menschen sollten so arbeiten.
VGA-Schnittstelle: Die VGA-Schnittstelle ist am beeindruckendsten.
Herausforderung beim ESP32-Hacking: Es wurde versucht, vMac auf einem ESP32 auszuführen, aber ohne Erfolg. Dieses Projekt ist auf einem deutlich höheren Niveau. Großer Respekt.
Erkundung kleiner SBCs: Es wird darüber nachgedacht, welches kleinste SBC den letzten 68k-Mac oder einen PPC-Mac der späten 1990er Jahre mit voller Leistung emulieren kann. In ein modernes Notebook-Gehäuse eingebaut, könnte das ein nützliches „Zen-Mode“-Notebook sein, das System 7.6.1 bis Mac OS 9.x ausführen kann.
Blog-Mirror: Da der Blog offenbar überlastet ist, wird ein Mirror-Link geteilt.
Erwähnung von MacPaint: Es wird erklärt, warum MacPaint nicht erwähnt wurde. Vermutlich kannte Bill Atkinson alle Tricks und hätte MacPaint so innerhalb der ursprünglichen Einschränkungen lauffähig gemacht. Für den Autor ist das kein fairer Vergleich.
Suche nach einem VGA-Stecker: Ein VGA-Stecker wurde benötigt, war aber nicht aufzutreiben. Bei einem Spaziergang in der Mittagspause wurde auf der Straße ein VGA-Kabel gefunden. So etwas passiert manchmal.